Commodore Logo

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Commodore Logo
C=Logo Einschaltmeldung1.jpg
Entwickler Leigh Klotz, Jr., Andy Finkel, John Cox, Patrick Sobalvarro, Devon McCullough
Publisher Terrapin, Inc. und Commodore Business Machines, Inc.
Release 1982
Plattform(en) C64, Plus/4
Genre Entwicklungssystem für die Sprache Logo
Steuerung Icon tastatur.png
Medien Icon disk525 2.png Icon cartridge.png
Sprache Sprache:englisch Sprache:französisch Sprache:italienisch
Information Version A und 8


Allgemeines[Bearbeiten | Quelltext bearbeiten]

Herausgeber[Bearbeiten | Quelltext bearbeiten]

Herausgeber ist die Firma Terrapin, Inc. im Jahr 1982/83 in Zusammenarbeit mit der Firma Commodore. Es basiert auf der Programmiersprache Logo vom Massachusetts Institute of Technology.

Programmierer[Bearbeiten | Quelltext bearbeiten]

Die C64-Implementierung wurd von Leigh Klotz, Jr. entwickelt mit Unterstützung von Andy Finkel (der Firma Commodore), sowie John Cox, Patrick Sobalvarro und Devon McCullough (der Firma Terrapin).

Vorgängerprogramme[Bearbeiten | Quelltext bearbeiten]

Es existieren die Version A und die aktuelle Version 8.

Vertrieb[Bearbeiten | Quelltext bearbeiten]

Der Preis betrug 1985 stolze 159 DM.

Beschreibung[Bearbeiten | Quelltext bearbeiten]

In Bezugnahme auf Commodore C64 Logo Tutorial[1].

Lieferumfang[Bearbeiten | Quelltext bearbeiten]

Die Modul-Version für den Plus/4

Das Entwicklungssystem ist auf zwei Disketten im 1541-Format (einseitig bespielt) gespeichert. Die erste Diskette beinhaltet das Logo-System, während auf der zweiten die Logo Utilities (wie nützliche Routinen bzw. Prozeduren u.a. für Grafiken, Sprites und Musik, Programmbeispiele, Demos, Spiele, Anwendungen wie Assembler, Texteditor, Spriteeditor usw.) gespeichert sind.

Hardwareanforderung und -unterstützung[Bearbeiten | Quelltext bearbeiten]

Minimum:

unterstützt werden:

  • Diskettenlaufwerk 1571
  • Drucker Commodore 1525

Arbeitsweise[Bearbeiten | Quelltext bearbeiten]

Demonstration von Commodore Logo: Der geteilte Bildschirm mit Texteingabezeile (unten) und HiRes-Grafikansicht (oben). Die weiße Figur soll die Logo-Schildkröte (links) sein.
Listing einer Logo-Prozedur.

Der Eingabeprompt der Logo-Umgebung ist das Fragezeichen  ? . Alles was dahinter eingegeben wird, wird nach einem Druck auf die Taste RETURN  vom Logo-Interpreter ausgeführt oder mit einer entsprechenden (Fehler-)Meldung bei Falscheingabe zurückgemeldet. Es wird im Direkteingabemodus von Logo nur jeweils ein Eingabekommando ggf. mit zusätzlichen Parametern direkt ausgeführt. Eine Korrektur einer Eingabezeile ist jederzeit über die Cursortasten und der Taste INST/DEL  möglich. Logo nutzt standardmäßig den Einfügemodus. Eine logische Eingabezeile bei Commodore Logo ist 256 Zeichen lang.

Unter Logo kann ein Eingabekommando, ein Befehl, eine Prozedur bzw. ein Programm sein. Eine Prozedur besteht aus einem oder mehreren Befehlen, die eventuell eine bestimmte Anzahl wiederholt werden. Ein oder mehrere Prozeduren ergeben somit ein Logo-Programm. Jede Prozedur kann als Programm in Logo abgespeichert, geladen oder ausgeführt werden. Prozeduren werden mit Hilfe eines (Prozedur-)Editors erstellt. Die Befehle einer Prozedur werden der Reihe nach ohne Zeilennummernzuweisung abgearbeitet. Erfolgt kein Sprung auf eine andere Prozedur, so endet das Programm.

Da Logo eine erzieherische Programmiersprache ist, die auch für Kinder geeignet ist, gibt es viele Möglichkeiten HiRes-Grafiken darzustellen. Dies geschieht im separaten HiRes-Grafikbildschirm und nicht im Textbildschirm, der für die Programmierung und Operationen mit den Peripherie-Geräten zur Verfügung steht. Daher bietet Logo einen reinen Text- und Grafikbildschirm, sowie einen geteilten Bildschirm mit Grafikdarstellung und Texteingabe an. Erstellte Grafiken und Shapes (Sprites) können ebenfalls abgespeichert werden, ebenfalls wie Maschinenspracheprogramme.
Beide Bildschirm sind voneinander unabhängig umschaltbar. Auch im Prozedur- bzw. Programmmodus kann zwischen den Bildschirmen jederzeit umgeschaltet werden!
Logo schaltet den geteilten Text-/Grafikbildschirm automatisch an, wenn eine Prozedur bzw. Programm Grafikausgaben tätigt.

Da Logo eine Programmiersprache ist, die für Computereinsteiger und Programmierneulinge gedacht ist, kommen erfahrene Programmierer, die andere höhere Programmiersprachen wie BASIC, C, Pascal oder Assembler, usw. programmieren können, leicht durcheinander.


Wichtige Tasten[Bearbeiten | Quelltext bearbeiten]

Wichtige Tasten im Editier-, Direkteingabe- und Programmmodus sind:

  • F1  : Nur Textbildschirm.
  • F3  : Text- und Grafikbildschirm (HiRes), wobei 1/3 des unteren Bildschirms die Textzeilen anzeigt.
  • F5  : Nur Grafikbildschirm (HiRes).
  • Cursor oben  oder CTRL  + P  : Wiederholende Anzeige der zuletzt ausgeführten Zeilen bzw. Befehls im Direktmodus.
  • CTRL  + C  oder RUN/STOP  : Prozedurerstellung abschließen --> Prozedur wird im Speicher abgelegt.
  • CTRL  + G  : Programm / Prozedurerstellung abbrechen.
  • CTRL  + W  : Programm kurzzeitig anhalten (temporäre Unterbrechung), weiter mit beliebiger Taste.
  • CTRL  + Z  : Programm / Prozedurerstellung unterbrechen.

Logo-Schildkröte[Bearbeiten | Quelltext bearbeiten]

Um die Logo-Schildkröte anzuzeigen, entweder die F3  oder F5 , um in den entsprechenden Bildschirmmodus umzuschalten oder einer der Befehle eingeben: SHOWTURTLE, HOME, DRAW.

Die Farben der C64-Farbtabelle werden für die Befehle PENCOLOR (Grafikfarbe) und BACKGROUND (Hintergrundfarbe im Grafikbildschirm), sowie TEXTCOLOR (Textfarbe) und TEXTSCREEN (Hintergrundfarbe im Textbildschirm) genutzt, die direkt Auswirkung auf den HiRes-Bildschirm hat. Mit dem DOUBLECOLOR kann man die doppelte Farbe pro 8×8-Kachel aktivieren, der mit SINGLECOLOR (Einfarbenmodus) wieder deaktiviert wird.

Weitere interessante Befehle für das Zeichnen mit der Schildkröte sind:

  • FD x - Bewegt die Schildkröte x Pixel nach vorn.
  • BK x - Bewegt die Schildkröte x Pixel nach hinten.
  • LT x - Dreht die Schildkröte x° nach links.
  • RT x - Dreht die Schildkröte x° nach rechts.
  • PD - Die Schildkröte zeichnet eine Linie beim Bewegen; standardmäßig aktiviert, d.h. der Zeichenstift liegt auf dem Grafikbildschirm (Zeichenblatt; PEN DOWN).
  • PU - Die Schildkröte zeichnet keine Linie beim Bewegen, d.h. der Zeichenstift wird vom Grafikbildschirm (Zeichenblatt, PEN UP) genommen.
  • HT - Blendet Schildröte aus (hide)
  • ST - Zeigt Schildkröte (show)
  • HOME - Positioniert die Schildkröte mit dem Stift nach oben auf die Grafikbildschirmmitte, falls diese mal aus dem Bildschirm heraus wandert und so nicht sichtbar ist. Standardmäßig sind das die x,y-Koordinaten 0,0.

Prozeduren und Programme[Bearbeiten | Quelltext bearbeiten]

Eine Prozedur/Programm im Commodore Logo Editor.
Zeichnung der Prozedur DEMO 5 15.

Das Erstellen, Speichern, Laden und Löschen von Prozeduren bzw. Programme geschieht wie folgt:

  • Eine Prozedur wird mit dem Befehl TO NAME erstellt. Es erscheint dann ein Editor, in denen mehrere Befehle hintereinander eingegeben werden können und als Prozedur im Speicher abgelegt werden können. Dies geschieht mit dem Verlassen des Editors über die Tastenkombination CTRL  + C . Die Prozedur kann dann direkt mit NAME aufgerufen werden.
    Alternativ kann der Editor mit der zu bearbeitende Prozedur auch mit EDIT NAME bzw. ED NAME aufgerufen werden.
  • Um ein Logo-Programm (Prozedur) aus dem Speicher auf Diskette abzuspeichern, erfolgt dies mit: SAVE "Programmname
  • Ein gespeichertes Programm kann wieder in den Logo-Interpreter hinein geladen werden mit: READ "Programmname
  • Gestartet wird ein Programm mit der direkten Eingabe des Programm- bzw. Prozedurnamens!
  • Der Inhalt einer Diskette wird verlustfrei angezeigt mit: CATALOG
  • Ein Programm kann von der Diskette gelöscht werden mit: ERASEFILE "Programmname

Im Gegensatz zu anderen Programmiersprachen können so viele Logo-Programme bzw. Prozeduren geladen werden bis der Speicherplatz von Logo ausgeht.

Viele Befehle können abgekürzt werden. Die meisten Befehle oder Prozeduren benötigen für das Zeichen noch eine Zahlenangaben, meist die Anzahl der zu zeichnenden Pixel oder die Zahl für eine Farbveränderung oder die Anzahl der Wiederholung für die auszuführende Prozedur.

Wichtige Befehle im Umgang mit Prozeduren sind:

  • PO NAME - Zeigt alle Befehle bzw. Aufrufe in der benannten Prozedur an - vergleichbar mit dem BASIC-Befehl: LIST
  • PO ALL - Zeigt alle Befehle bzw. Aufrufe aller benannten Prozeduren im Speicher an.
  • POTS - Zeigt alle Namen des Prozeduren im Arbeitsspeicher an.
  • ER NAME - Löscht die benannte Prozedur aus dem Speicher
  • ER ALL - Löscht alle Prozeduren aus dem Speicher - vergleichbar mit dem BASIC-Befehl: NEW

Hier ein kleines Logo-Beispielprogramm, das mit TO DEMO im Prozedur-Editor geschrieben wird:

TO DEMO :A :B
 FORWARD :A 
 RIGHT 2 * :B
 DEMO :A + 1 :B
END

Nach der erfolgreichen Eingabe und Bestätigung mit der Tastenkombination CTRL +C  wird es mit beispielsweise mit DEMO 5 15 gestartet. Da es ein Endlosprogramm ist, muss es mit der Tastenkombination CTRL +G  abgebrochen werden.
Programmerklärung: Das Programm DEMO, das zwei Zahlenwerteingabe für die Variablen :A und :B benötigt, bewegt nur die Schildkröte A Schritte vorwärts und dreht sie im Winkel 2*B° nach rechts. Anschließend wird A um 1 erhöht und die Prozedur DEMO erneut aufgerufen.
Um eine gute grafische Figur dargestellt zu bekommen, sind einfach die Befehle HOME und CS vor dem Aufruf von DEMO einzugeben.

Befehlsübersicht[Bearbeiten | Quelltext bearbeiten]

Abkürzungen stehen hinter dem Schrägstrich! Benötigt ein Befehl ein oder zwei zusätzliche Parameterangaben, so sind diese dahinter angegeben. Wahlparameter sind mit Zeichen "|" gekennzeichnet. Da Logo für Listen bei Kommandos eckige Klammern [] nutzt, kann die allgemeine Programmier-Syntax nicht angewandt werden!

Grafikbefehle[Bearbeiten | Quelltext bearbeiten]

Diese Befehle dienen für die Steuerung der Logo-Schildkröte (Sprite 0)

  • BACK / BK x - Bewegt die Schildkröte zurück
  • BACKGROUND / BG x - Verändert die Hintergrundfarbe (0 bis 15)
  • CLEARSCREEN / CS - Löscht den Grafikbildschirm
  • DOUBLECOLOR - Zweifarbenmodus verwenden für 8×8-Kachel
  • DRAW - Löscht den Grafikbildschirm, setzt die aktuelle Standardfarben und die Schildkröte auf die Home-Position.
  • DRAWSTATE - Mitteilung über den Zustand des Grafikbildschirms mit folgenden Angaben:
  1. Zustand des Zeichenstifts PEN unten/oben (down/up) TRUE/FALSE
  2. Zustand der Schildkröte TURTLE sichtbar/versteckt (show/hide) TRUE/FALSE
  3. Hintergrundfarbe (background color) 0 bis 15
  4. Stiftfarbe (pen color) 0 bis 15 oder -1 für Löschstift (PENERASE)
  5. Grafikbildschirm (screen mode) NODRAW / DRAW
  6. Farbmodus (color mode) SINGLECOLOR / DOUBLECOLOR.
  7. Aktueller Bildschirm: TEXTSCREEN, FULLSCREEN or SPLITSCREEN
  8. Hintergrundfarbe Textbildschirm (text background color / TEXTBG) 0 bis 15
  9. Schriftfarbe Textbildschirm (color of text characters / TEXTCOLOR) 0 bis 15
  • FORWARD / FD x - Bewegt die Schildkröte vor.
  • FULLSCREEN F5  - Voller Grafikbildschirm.
  • HEADING - Funktion / Parameter zum Auslesen der aktuellen Ausrichtung der Schildkröte als Winkel in °.
  • HIDETURTLE / HT - Blendet die Schildkröte aus.
  • HOME - Setzt die Schildkröte auf die Home-Position, und zwar in die Bildschirm-Mitte.
  • LEFT / LT x - Dreht die Schildkröte nach links (Winkel von 0 bis 360 °).
  • NODRAW / ND - Aktiviert den Textbildschirm und löscht ihn.
  • NOWRAP - Schildkröte lässt sich nur im sichtbaren Grafikbildschirm bewegen. Falls sie den Bildschirm verlässt, wird die Zeichnung(-routine) abgebrochen.
  • PENCOLOR / PC x - Verändern der Zeichenfarbe der Grafik (0 bis 15).
  • PENERASE / PC-1 - Löschen von gezeichneten Linien
  • PENDOWN / PD - Die Schildkröte zeichnet eine Linie beim Bewegen; standardmäßig aktivert.
  • PENUP / PU - Die Schildkröte zeichnet keine Linie beim Bewegen.
  • RIGHT / RT x - Dreht die Schildkröte nach rechts (Winkel von 0 bis 360 °).
  • SETHEADING / SETH x - Dreht die Schildkröte absolut (Winkel von 0 bis 360 °).
  • SETSHAPE - Blendet entsprechendes Sprite ein (0 bis 7); Shape bzw. Sprite 0 ist die Schildkröte .
  • SETX x - Bewegt die Schildkröte absolut in X-Richtung.
  • SETXY x y - Bewegt die Schildkröte absolut in X- und Y-Richtung. Negative Zahlen sind in runden Klammern zu setzen!
  • SETY x - Bewegt die Schildkröte absolut in Y-Richtung.
  • SHAPE - Zeigt Nummer des aktuell verwendeten Sprites an.
  • SHOWTURTLE / ST - Zeigt die Schildkröte an.
  • SINGLECOLOR - aktiviert den Ein-Farben-Zeichenmodus, d.h. 1 Farbe pro Kachel.
  • SPLITSCREEN F3  - Geteilter Bildschirm: Text und Grafik (HiRes).
  • STAMPCHAR "Zeichen - Druckt je ein Zeichen auf dem Grafikbildschirm.
  • TELL x - Zuweisung des Sprites x (0 bis 7) als aktive Schildkröte.
  • TEXTBG x - Verändert die Hintergrundfarbe des Textbildschirms (0 bis 15)
  • TEXTCOLOR x - Verändert die Textfarbe des Textbildschirms (0 bis 15).
  • TEXTSCREEN F1  - Vollen Textbildschirm aktivieren.
  • TOWARDS x y - Winkelfunktion bzw. Abstand/Drehung in ° des Punktes x,y zum Kopf der Schildkröte.
    • SETHEADING TOWARDS x y - Setzt den Kopf der Schildkröte auf den Punkt x,y.
  • WHO - Teilt mit, welches das aktive Sprite ist.
  • WRAP - Deaktiviert NOWRAP, d.h. Schildkröte ist auf dem gesamten Grafikbildschirm bewegbar.
  • XCOR - Funktion/Parameter zum Auslesen der aktuellen x-Position ° und der x-Koordinate der Schildkröte
  • YCOR - Funktion/Parameter zum Auslesen der aktuellen y-Position ° und der y-Koordinate der Schildkröte.

In Gegensatz zur grafischen BASIC-Erweiterungen bieten sich direkt keine eigenen Befehle zur Erstellung von Kreisen, Dreiecken, Rechtecken oder andere geometrischen Figuren an. Diese können aber durch jeweils als Prozedur - so gesehen als eigenständigen Befehl - erstellt werden, damit beispielsweise ein CIRCLE 50 einen Kreis mit einem Radius von 50 Pixeln zeichnet.

Nummerische Funktionen[Bearbeiten | Quelltext bearbeiten]

  • + Addition
  • - Subtraktion
  • = Vergleichsoperator Gleichheit, Zuweisung
  • * Multiplikation
  • / Division
  • > Vergleichsoperator größer
  • < Vergleichsoperator kleiner
  • ATAN x y - Arcustangens; retourniert einen Winkel von 0 bis 360°.
  • BITAND x y - bit-weise Verknüpfung zweier Zahlen mit AND
  • BITOR x y - bit-weise Verknüpfung zweier Zahlen mit OR
  • BITXOR x y - bit-weise Verknüpfung zweier Zahlen mit XOR
  • COS x - COSinus-Funktion des Winkels x von 0 bis 360°.
  • INTEGER x - Ausdruck in eine Ganzzahl wandeln, die nächstkleinere ganze Zahl einer Fließkommazahl wird ermittelt.
  • NUMBER? Ausdruck - Funktion, ob der Ausdruck eine Zahl ist; Rückgabe TRUE/FALSE.
  • QUOTIENT x y - Gibt bei einer Division zweier Zahlen x/y, den ganzzahligen Wert zurück.
  • RANDOM x - Liefert eine Zufallszahl als positive Zahl im Bereich von 0 bis exklusive Eingabewert x
  • RANDOMIZE x - Legt den Ausgangspunkt einer Zufallszahlenreihe fest (seed), mit dem optionalen Parameter x, einer positiven Zahl größergleich 0, wobei der Aufruf dann komplett in runden Klammern stehen muss.
  • REMAINDER x y - Ermittelt bei der Division von x/y den Rest.
  • ROUND x - Rundungsfunktion .0 bis .49 abrunden .5 bis .9 aufrunden.
  • SIN x - SINus-Funktion des Winkels x von 0 bis 360°.
  • SQRT x - Wurzelfunktion; vergleichbar SQR.

Hinweis: Negative Werte sind in runde Klammern zu setzen!

Zeichenketten-Funktionen[Bearbeiten | Quelltext bearbeiten]

  • = - Entweder Zuweisung von Variableninhalten oder Vergleichsoperator (Gleichheit).
  • BUTFIRST / BF - Zeigt alle Elemente einer Zeichenkette/Liste an, bis auf das erste Element.
  • BUTLAST / BL - Zeigt alle Elemente einer Zeichenkette/Liste an, bis auf das letzte Element.
  • COUNT Ausdruck - Zählt die im Ausdruck (Wort/Liste) enthaltene Zeichen bei einem Wort oder enthaltende Elemente einer Liste.
  • EMPTY? Ausdruck - Vergleich auf ein leeres Element (Zeichenkette oder Liste); retourniert TRUE/FALSE.
  • FIRST - Zeigt nur das erste Elemente einer Zeichenkette/Liste an.
  • FPUT Element1 Element2 - Bildet eine Liste aus zwei Elementen, wobei Element2 eine Liste sein muss.
  • ITEM x Ausdruck - Zeigt das x-te (als Zahl) Element eines Ausdrucks (Wort/Liste).
  • LAST - Zeigt nur das letzte Elemente einer Zeichenkette/Liste an.
  • LIST Element1 Element2 - Bildet eine Liste aus zwei Elementen (Zeichenkette/Liste).
  • LIST? Ausdruck - Prüft auf eine Liste; retourniert TRUE/FALSE.
  • LPUT Element1 Element2 - Bildet eine Liste aus zwei Elementen, wobei Element1 eine Liste sein muss.
  • MEMBER? "Ausdruck1 "Ausdruck2
    MEMBER? "Wort1 [Wort1 Wort2 ...] - vergleicht den Ausdruck1 (Zeichen oder Wort) mit dem Ausdruck2 (Zeichen oder Liste, die sich in eckigen Klammern [] sich befindet; retourniert TRUE/FALSE
  • SENTENCE / SE Ausdruck1 Ausdruck2 - Verbindet 2 Ausdrücke (Zeichen, Zeichenkette, Wort, Liste, Prozedur) mit Abstand eines Leerzeichens zu einem Satz.
  • WORD "Ausdruck1 "Ausdruck2 - Setzt zwei Ausdrücke (Zeichen, Zeichenkette, Prozedur) ohne Leerzeichenabstand zu einem neuen Wort zusammen.
  • WORD? Ausdruck - Prüft auf ein Wort; retourniert TRUE/FALSE
  • "Zeichenkette - Mit einem Anführungszeichen beginnt eine Zeichenkette (String). Diese kann aus einem Zeichen oder mehreren Zeichenkombinationen (Wörter) bestehen.
  • [Wort1 Wort2 ...] - Eckige Klammern fassen Wörter zu Wortlisten zusammen.

Hinweise:

  • Da ein Leerzeichen in Logo auch als Befehlstrennung dient, können Leerzeichen in Zeichenketten nicht einfach verwendet werden!
  • Zeichenketten werden unter Logo im Gegensatz zu BASIC nicht mit einem zweiten Anführungszeichen geschlossen!
  • Bei Wortlisten werden die einzelnen Wörter ohne Komma nur mit Leerzeichen innerhalb von eckigen Klammern aufgeführt.

Anweisungen[Bearbeiten | Quelltext bearbeiten]

  • LOCAL "Variable - Lokale Variablendeklaration als temporären Variable mit beschränkter Sichtbarkeit in der aktuellen Prozedur.
  • MAKE Variable Ausdruck - Globale Variablenzuweisung: Weißt der Variable den Ausdruck (Zahl, Zeichen, Zeichenkette, Liste) zu.
  • THING "Variable|:Variable - Liefert den Inhalt der Variable.
  • THING? "Variable|:Variable - Überprüft, ob Variable ein Zahlenwert enthält; retourniert TRUE/FALSE
  • ALLOF Vergleich1 Vergleich2 - Ergibt TRUE, wenn beide Vergleiche wahr (TRUE) sind - entspricht der logischen Verküpfung AND.
  • ANYOF Vergleich1 Vergleich2 - Ergibt TRUE, wenn einer der beiden Vergleiche wahr (TRUE) ist - entspricht der logischen Verküpfung OR.
  • IF Vergleich ... - Bedingte Ausführung:
IF Vergleich THEN Befehl1 ELSE Befehl2 - Wenn der Vergleichsausdruck TRUE ergibt, wird Befehl1 ausgeführt, sonst Befehl2.
  • IFFALSE / IFF ... TEST - Wenn-falsch-Vergleich; alternativ mit TEST.
  • IFTRUE / IFT ... TEST - Wenn-wahr-Vergleich; alternativ mit TEST.
  • NOT - Operator negiert das Ergebnis des folgenden Ausdrucks, vergleiche dazu NOT.
  • :NAME - Variable bzw. Prozedurparameter (aber auch Label), der mindestens einen Buchstabe beinhalten muss. Im Gegensatz zu BASIC müssen Variablen innerhalb der Prozedur exakt verwendet werden, ansonsten gibt es einen Programmabbruch mit Fehlermeldung. Bestandteil von Variablennamen können auch Buchstaben-/Zahlenkombinationen sein. Bei der Nutzung vom Doppelpunkt : wird mit dem Variableninhalt gearbeitet!

Prozedur-Erstellung[Bearbeiten | Quelltext bearbeiten]

  • ; - Kommentar; zur Beschreibung von Vorgänge innerhalb von Prozeduren (Programme). Alles hinter dem ; wird vom Logo-Interpreter ignoriert.
  • DEFINE Name [Liste] - Definiert eine Prozedur anhand einer Liste von Befehlen. Insgesamt darf die gesamte Eingabe max. 255 Zeichen lang sein!
  • EDIT / ED Name - Aufruf des Editors; optional mit Name, um eine entsprechende Prozedur zu bearbeiten.
  • END - Beendet eine Prozedur, abschließender Befehl im Editor; wird automatisch hinzugefügt, falls man diesen Befehl vergisst.
  • ERASE / ER Name - Löscht benannte, aktive Prozeduren oder Variablen.
  • TEXT Name - Ausgabe eines Textes einer Prozedur, der als "Name" deklariert wurde.
  • TO Name - Definiert eine Prozedur und ruft den Editor auf, um die Befehle hinzuzufügen.

Fehlerbehebung[Bearbeiten | Quelltext bearbeiten]

  • CONTINUE / CO - Führt eine Prozedur oder ein Programm weiter aus, welches durch PAUSE oder CTRL  + Z  unterbrochen wurde.
  • PAUSE - Unterbricht eine Prozedur.
  • NOTRACE - Schaltet TRACE ab.
  • TRACE - Schaltet die Fehlerbehebung ein. Anhalten mit CTRL  + Z , fortsetzen mit SPACE .

Ein- und Ausgabe-Steuerung[Bearbeiten | Quelltext bearbeiten]

  • .CTYO x - Zeigt ein Zeichen anhand einer ASCII-Nummer x (0 bis 255) ohne Zeilenumbruch an.
  • ASCII "Zeichen - Zeigt die ASCII-Nummer eines Zeichens an.
  • CHAR x - Zeigt für x (0 bis 255) das entsprechende Zeichen an.
  • CLEARTEXT - Löscht den Textbildschirm und setzt den Cursor an Position HOME (0,0).
  • CLEARINPUT - Löscht den Eingabepuffer.
  • CURSOR x y - Setzt den Cursor auf die angegebene x (0 bis 39), y (0 bis 24) Position.
  • CURSORPOS - Gibt die aktuelle Cursor-Position aus.
  • FPRINT (Funktion (Parameter)) Argumente|"Zeichenkette|[Liste] - Genauso wie PRINT nur werden eckige Klammern [] von Listen mit angezeigt.
  • JOYSTICK x - Auswahl des Joysticks in Port 1/2 mit x (0 oder 1).
  • JOYBUTTON x - Prüft nach ob Feuerknopf von Joystick in Port 1/2 mit x (0 oder 1) gedrückt wurde; retourniert TRUE/FALSE.
  • NOPRINTER - Deaktiviert den PRINTER-Modus.
  • PADDLE x - Auswahl des Paddles x (0 bis 3), Funktion gibt Werte von 0 bis 255 zurück.
  • PADDLEBUTTON x - Prüft nach ob Paddlebutton von Paddle x (0 bis 3) gedrückt wurde; retourniert TRUE/FALSE.
  • PRINT / PR (Funktion (Parameter)) Argumente|"Zeichenkette|[Liste] - Ausgabe von Zeichenketten, Liste, Nutzung von mathematischen Berechnungen oder Logo-Parametern.
    PR HEADING - Aktuelle °-Drehung der Schildkröte (normal ist 0)
  • PRINT1 (Funktion (Parameter)) Argumente|"Zeichenkette|[Liste] - Genauso wie PRINT, nur ohne Zeilenumbruch (RETURN-Taste).
  • PRINTER - Aktiviert den Ausdruck auf einem Drucker statt auf dem Bildschirm.
  • RC? - ermittelt, ob ein Tastaturzeichen (aus Tastaturpuffer) eingegeben wurde; retourniert TRUE/FALSE
  • READCHARACTER / RC - Liest das älteste der eingegebenen Zeichen aus dem Tastaturpuffer; Eingabefunktion für eines Taste - ähnlich wie GET
  • REQUEST / RQ - Eingabefunktion - ähnlich wie INPUT; Rückgabe erfolgt als Liste.
  • SETDISK x - Gerätenummer (8-15) des Diskettenlaufwerks festlegen.

Datei- und Diskettenoperationen[Bearbeiten | Quelltext bearbeiten]

  • BLOAD "Name - Lädt die Daten an einen bestimmten Speicherbereich, z.B. für Sprite-Daten oder Maschinenspracheprogramme.
  • BSAVE - Speichert einen bestimmten Speicherbereich ab, siehe Beispiel:
    BSAVE "ASSEMBLER.BIN $ "C000 $ "C1FF
  • CATALOG - Anzeige des Directorys einer eingelegten Diskette.
    • DOS [Kommando:...] - Eingabe von Floppy-Befehlen (funktioniert genauso wie unter BASIC bzw. CBM-DOS!)
    • DOS [N0:NEUE DISK,01] - Formatiert eine Diskette.
    • DOS [C0:DATEI1.LOGO=0:DATEI2.LOGO] - Kopiert eine Datei.
    • DOS [R0:PROGRAMM.LOGO=PRGM.LOGO] - Benennt eine Datei um.
    • DOS [S0:TESTDATEI.LOGO] - Löscht eine Datei.
  • ERASEFILE "Name - Löscht benannte Datei von Diskette.
  • ERASEPICT "Name - Löscht benanntes Bild von Diskette.
  • ERASE / ER Name - Löscht benannte aktive Prozedur in Logo oder alle mit der Angabe ALL.
  • ERNAME "Name - Löscht die Prozedur namens Name.
  • PRINTOUT / PO Name - Listet alle Befehle der benannten Prozedur auf oder alle mit der Angabe ALL.
  • POTS - Listet alle aktiven Prozedurtitel mit Aufrufparametern auf.
  • READ "Name - Liest ein Programm bzw. Prozedur ein.
  • READPICT "Name - Liest ein Bild ein.
  • SAVE "Name - Speichert ein Programm bzw. alle Prozeduren in eine Datei namens Name.
  • SAVEPICT "Name - Speichert ein Bild in eine Datei namens Name.

Weitere Befehle[Bearbeiten | Quelltext bearbeiten]

  • GO Name - Springt zu einem benannten Label oder Prozedur.
  • GOODBYE - Reset der Logo-Umgebung (es wird hierbei nicht nach BASIC zurückgekehrt!)
  • OUTPUT / OP - Nur innerhalb von Prozeduren verwendbar, um Prozedurausgaben zu erzeugen. Bricht dabei aber die laufende Prozedur ab!
  • REPEAT x [Befehle ...] - Wiederholt in angegebener Anzahl die Prozeduren bzw. Kommandos innerhalb der eckigen Klammern [].
  • RUN Ausdruck - Wertet den angegebenen Ausdruck aus - startet keine Prozeduren und Programme!
  • STOP - Stoppt bzw. bricht eine Prozedur bzw. Programm ab.
  • TOPLEVEL - Stoppt alle Prozeduren.
  • [Befehl1 Befehl2 ...] - Eckige Klammern können auch zur Bildung einer Befehlsliste verwendet werden, wie sie auch bei einigen Befehlen verwendet werden.

Spezial-Befehle[Bearbeiten | Quelltext bearbeiten]

  • .ASPECT x - Zum Verändern der vertikalen Skalierung von Logo (optional: 0.768).
  • .CALL Name x - Aufruf eines Assembler- oder Maschinenspracheprogramms mit optionale Übergabe einer Integer-Zahl.
  • .CONTENTS - Listet auf, was Logo an Variablen, Prozeduren, Worte und Listen kennt bzw. im Speicher hat.
  • .DEPOSIT Name "Adresse - Verändern von Speicherbereichen (vergleichbar mit POKE) - Achtung: Der Logo-Interpreter kann bei unsachgemäßem Gebrauch von .DEPOSIT abstürzen!
  • .EXAMINE Name "Adresse - Untersuchen von Speicherbereichen mit optionale Angabe einer Speicheradresse (vergleichbar mit PEEK)
  • .GCOLL - Löst eine Logo-eigene Garbage Collection aus.
  • .NODES - Abfrage der freien Nodes (freier Speicher).
  • .SPRINT x - Listet die Grafik eines Sprite-Blocks x (0 bis 255) auf dem Textbildschirm auf.
  • .OPTION "Kommando x y - Befehl zum Festlegen von Einstellungen zu Logo-Kommandos oder allgemeiner Eigenschaften.
    .OPTION "DRAW 0 2 - Beispiel verändert die Standard-Hintergrundfarbe für den Grafikbildschirm auf Rot.
    Einstellbare Logo-Kommandos sind:
    DRAW mode farbe - mit mode (0: Hintergrundfarbe; 1: Zeichenfarbe) mit farbe (0 bis 255) für den Grafikbildschirm festlegen.
    .DEPOSIT 0 bereich - Einblenden eines Speicherbereichs.
    .EXAMINE 0 bereich - Untersuchen eines Speicherbereichs.
    EDIT mode farbe - mit mode (0: Hintergrundfarbe; 1: Textfarbe) mit farbe (0 bis 255) des Editors festlegen.
    JOYSTICK 0 x - mit x (0 oder 1); wird 1 gewählt, so wird das gedrückte Schaltelement des Joysticks als Zahlenwert ausgegeben.
    PRINTER mode zahl - mode (0: Geräteadresse; 1: Sekundäradresse; 2: Zweitdruck auf Bildschirm), auch für NOPRINTER.
    RC 0 taste - taste (0 bis 255); auch für READCHARACTER.
    READ 0 x - mit x (0 oder 1)
    SAVE 0 x - mit x (0 oder 1)
    STAMPCHAR mode x - mit mode (0 bis 3) ; 'x (0 bis 2)
    TEXTSCREEN 0 x - Sprite (0 bis 255) permanent auf dem Textscreen anzeigen.

Voreingestelle Farben (default) sind:

  • 11 (dunkelgrau): Hintergrundfarbe Grafikbildschirm
  • 1 (weiß): Sprite, Zeichenfarbe, Textfarbe im Editor
  • 14 (hellblau): Hintergrundfarbe Textbildschirm
  • 6 (blau): Textfarbe im Textbildschirm

Bibliotheken[Bearbeiten | Quelltext bearbeiten]

Startbild Commodore Logo Demo.
Grafik-Demo des Commodore Logo Demo.

Einige nützliche Programme, wie Prozeduren, Assembler, Demos, Anwendungen oder Spiele, sind auf der Ultiliy-Diskette von Commodore Logo enthalten:

UTILITIES DISK
6     BASE.LOGO        PRG  Zahlenumrechner, bspw.: Hexadezimal in Dual 
2     JOY.LOGO         PRG  Prozedur für das Zeichnen mit dem Joystick
10    GRAMMAR.LOGO     PRG  Generiert zufällige Sätze 
2     FOR.LOGO         PRG  FOR-NEXT-Schleife/-Prozedur
4     WHILE.LOGO       PRG  Beinhaltet WHILE und UNTIL-Prozedur
9     ANIMAL.LOGO      PRG  Spiel
5     LOG.LOGO         PRG  LOGarithmus und Exponnent-Prozedur
1     ASSORTED.LOGO    PRG  Sprite Demo (assorted shapes)
2     PIG.LOGO         PRG  Wandelt Zeichen in pig Latin A (Kauderwelsch!) um.
3     SNOW.LOGO        PRG  Zeichnet Schneeflocken
3     ARCS.LOGO        PRG  Prozeduren für das Zeichen mit Radien mit der Variable Radius ARC und Kreise (CIRCLE) 
2     COLORS.LOGO      PRG  Variablennamen für die Farbe, z.B. :RED für den Zahlenwert 2
2     AMODES.LOGO      PRG  Bestandteil des Logo-Assembler
6     OPCODES.LOGO     PRG  Bestandteil des Logo-Assembler
14    ASSEMBLER.LOGO   PRG  Assembler-Editor für Logo
4     CCHANGE.SRC.LOGO PRG  Beispiel für Assembler-Programmierung unter Logo
2     ADDRESSES.LOGO   PRG  Bestandteil des Logo-Assembler
1     CCHANGE.BIN      PRG  Beispiel für Assembler-Programmierung unter Logo
1     B&W.LOGO         PRG  Prozedur für s/w-Fernseher/-Monitore
1     CCHANGE.LOGO     PRG  Beispiele für Assembler-Programmierung unter Logo
2     STAMPFD.LOGO     PRG  Zeichenketten auf den Grafikbildschirm ausgeben
4     VELOCITY.LOGO    PRG  Prozedur für Sprites
3     TEXTEDIT.LOGO    PRG  Verwandelt den Logo-Editor in ein Texteditor für das Schreiben von Briefe
10    DYNATRACK.LOGO   PRG  Spiel
20    ADVENTURE.LOGO   PRG  Englisches Textadventure-Spiel
2     TEACH.LOGO       PRG  Prozedur zum Schreiben von Prozeduren ohnen den Logo-Editor
11    SPRED.LOGO       PRG  Sprite-Editor für Logo; Start mit EDSH
3     PRINTPICT        PRG  BASIC-Programm zum Ausdrucken von Logo-Grafiken(-bildschirmen) auf Drucker unter BASIC
33    INSPI.PIC1       PRG  Beispiel-Bild 1
4     SPRITES.LOGO     PRG  Prozeduren mit dem Umgang von Sprites, z.B. Größenveränderung
1     ANIMALS.LOGO     PRG  Spiel
2     ANIMALS.SHAPES   PRG  Grafiken zum Spiel ANIMAL
5     SUBMARINE.LOGO   PRG  Demoprogramm U-Boot
5     INSPI.PIC2       PRG  Beispiel-Bild 2
26    DEMO.LOGO        PRG  Commodore Logo Demo mit 4 Demonstrationsteilen
2     STAMPER.LOGO     PRG  Text auf den Grafikbildschirm ausgeben
2     TET.LOGO         PRG  Grafik-Prozedur für den Umgang mit Variablen
5     MUSIC.LOGO       PRG  Prozedur für die Erstellung von Musik unter Logo
5     DINOSAURS.LOGO   PRG  Demoprogramm Dinosaurier
1     VEHICLES.LOGO    PRG  Sprite Demo mit Autos
2     VEHICLES.SHAPES  PRG  Sprite-Daten
1     SHAPES.LOGO      PRG  Geometrische Spriteformen
2     SHAPES.SHAPES    PRG  Geometrische Spriteformen (Daten)
2     SOUND.LOGO       PRG  Prozedur für die Erstellung von SOUND (Töne) unter Logo
4     SPRITEDEMOS.LOGO PRG  Sprite Demo
4     RUNNER.LOGO      PRG  Sprite Demo "rennende Person"
2     RUNNER.SHAPES    PRG  Sprite-Daten für RUNNER
1     TWINKLE.LOGO     PRG  Musik Demo mit dem Lied "Twinkle, Twinkle, Little Star" 
10    PLOTTER.LOGO     PRG  Prozedur für den 4-Farben-Plotter von Commodore
2     ASSORTED.SHAPES  PRG  Beinhaltet zufällige Sprite-Formen (Shapes)
2     ANIMAL.INSP.LOGO PRG  Bearbeitet die Datenbank für das Spiel ANIMAL
2     C.SHAPES         PRG  Sprite-Daten
8     INSTANT.LOGO     PRG  Sehr vereinfachte Logo-Kommandos z.B. für Kinder, d.h. die Schildkröte wird
396   BLOCKS FREE.          zum einfach steuernden Zeichenstift für die Erstellung von Grafiken

Speicherbelegung[Bearbeiten | Quelltext bearbeiten]

Commodore Logo belegt folgende Speicherbereiche:

Bereich: 	Nutzung: 			Größe in KByte: 
0000-00FF 	Page 0 (Shared) 		0,25 
0100-01FF 	Stack 			        0,25 
0200-03FF 	Kernel internal storage 	0,5 
0400-07FF 	Textbildschirm (Matrix) 	1 
0800-0BFF 	Grafikmatrix 		        1 
0C00-0DFF	8 Sprites 			0,5 
0E00-0FFF	Logo internal storage 		0,5 
1000-1FFF	Recursion Stack 		4 
2000-4000	Grafikbildschirm 		8 
4000-AFFF	Logo Interpreter 		28 
B000-DFFF 	Nodespace	 		12 
E000-EBFF	Typecodes 			3
EC00-FDFF	Zeichenketten / Strings 	4,5 
FE00-FF00 	Input line 			0,25 
FF00-FF8F 	frei			        0,125 
FF90-FFFF	Kernel, 6510 vectors	        0,125

Beispiele[Bearbeiten | Quelltext bearbeiten]

Besprechungen und Literatur[Bearbeiten | Quelltext bearbeiten]


Quellen[Bearbeiten | Quelltext bearbeiten]

  1. "Logo - A Language for Learning - The Commodore 64 Logo Tutorial" Sprache:englisch

Weblinks[Bearbeiten | Quelltext bearbeiten]

Downloads


Artikel des Monats.gif Dieser Artikel wurde Artikel des Monats.