C 64
Grafik

Turtle-Grafik: Die schnelle Schildkröte

Eine Basic-Erweiterung, die Logo überflüssig macht, das ist die Turtle-Grafik. Mit einfachen Basic-Befehlen lassen sich sehr schnell wunderschöne Grafiken erstellen.

Turtle-Grafik ist eine Spracherweiterung, die es in sich hat. Vollständig in Maschinensprache geschrieben stellt sie einige Befehle zur Verfügung, mit denen Sie komfortabel sehr schnell Bilder erzeugen können.

Wenn Sie dieses Programm abtippen, werden Sie keinen Ärger mit den vielen DATAs bekommen. Haben Sie einen falschen Wert eingegeben, weist Sie die eingebaute Prüfsummenroutine auf die fehlerhafte Zeile hin und listet sie am Bildschirm. Bitte halten Sie sich daher an die Zeilennumerierung. Nach der Eingabe sollten Sie das Programm speichern und erst dann starten. Wenn alles ok ist, empfehle ich Ihnen, das Demoprogramm (Listing 2) einzugeben. Es vermittelt Ihnen einen sehr guten Eindruck von den Fähigkeiten der Grafikerweiterung. Doch nun zur Turtle-Grafik selbst.

Das Programm ermöglicht die Programmierung von hochauflösender Grafik in Basic mit neuen leistungsfähigen Befehlen.

Wird das Programm gestartet, meldet es sich mit: TURTLE GRAPHICS BY PETER MENKE 38911 BASIC BYTES FREE

Nun sind alle Funktionen und Befehle des Programms fest in Basic eingebettet und bleiben bis zum Ausschalten erhalten.

Das Programm unterstützt die Programmierung zweier voneinander völlig unabhängiger Bildschirme:

  1. Den normalen Textbildschirm
  2. Den Grafikbildschirm auf dem die hochauflösende Grafik erscheint.

Zwischen den beiden Bildschirmen können Sie mit der Funktionstaste F1 hin- und herschalten. Der neue Befehl HIRES1 schaltet den Grafik-Bildschirm ein (HIRES 0 = ausschalten).

Im folgenden die Befehle im Einzelnen

HIRES1 hi, ra

Die Angaben für Hintergrund und/oder Randfarbe sind nicht unbedingt notwendig, die alten Farben werden dann beibehalten.

CLEAR

Dieser Befehl löscht den gesamten Grafikbildschirm.

REVERS

Dieser Befehl invertiert den gesamten Grafikbildschirm.

COLOR pu, hi, ra

Die Farben der hochauflösenden Grafik werden neu definiert (pu = Punktfarbe). Wie beim HIRES-Befehl können auch hier die Angaben für hi und/oder ra entfallen.

GSAVE »Name«, Gerätenummer

Speichert eine erzeugte Grafik ab.

GLOAD »Name«, Gerätenummer

Lädt eine vorher gespeicherte Grafik in den Computer.

Wenn Sie den Grafikbildschirm einschalten, sehen Sie in der Mitte des Bildschirms einen blinkenden Punkt: Den Grafikcursor (oder »Turtle«, zu deutsch »Schildkröte«),

Durch Bewegen dieses Grafikcursors können Sie Linien auf dem Bildschirm zeichnen.

DEG wi

Bestimmt die Bewegungsrichtung der Turtle. Acht Richtungen sind möglich (»wi« kann Werte zwischen 0 und 7 annehmen).

    2
  3   1
4   *   0
  5   7
    6

MOVEx

Move bewegt die Schildkröte um x Punkte.

Der HIRES-Befehl positioniert den Grafikcursor automatisch auf die Bildschirmmitte. Der eingestellte Winkel ist 0. Außerdem wird Modus 0 eingeschaltet (siehe MODE).

LTURN x (x max.=255)

Dreht den Grafikcursor um x Einheiten nach links.

RTURN x (x max.=255)

Dreht den Grafikcursor um x Einheiten nach rechts.

PLOT x-cor, y-cor

Setzt den Grafikcursor auf eine bestimmte Bildschirmposition. Die obere linke Ecke des Bildschirms hat die Koordinaten 0,0; die rechte untere 319,199.

MODE m (m max 4)

Bei den Befehlen MOVE und PLOT kennt das Programm 4 Modi.

  1. Punkt setzen
  2. Punkt löschen
  3. Punkt invertieren
  4. nichts verändern

Normalerweise ist Modus 0 eingeschaltet. Mit dem MODE-Befehl läßt sich dies ändern.

Gleichzeitige Darstellung von Text und Grafik

Das Programm teilt den Bildschirm in einen Text- und in einen Grafikteil.

Betätigt man bei eingeschaltetem Grafikbildschirm die F3-Taste, so wird im unteren Teil des Bildschirms der untere Teil des normalen Textbildschirms eingeblendet.

Bei nochmaligem Betätigen dieser Taste wird das »Textfenster« wieder ausgeblendet.

WINDOW 1

Schaltet Textfenster ein.

WINDOW 0

Schaltet Textfenster aus.

Mit der Taste F5 wird der Cursor (der normale) in die obere linke Ecke des Textfensters gebracht. Dies entspricht der HOME-Taste für den gesamten Bildschirm. Die F5-Taste läßt sich ebenso programmieren wie die HOME-Taste, das heißt mit PRINT ”(F5)” (auf dem Bildschirm erscheint ein reverses Grafikzeichen) läßt sich der Cursor in die obere linke Ecke des Textfensters bringen.

JOYSTICK ve

(ve=Verzögerung. Mit ve = 0 malt man am schnellsten, mit ve = 255 am langsamsten.)

Dieser Befehl erlaubt das Zeichnen von Bildern mit dem Joystick (Port 2). Mit dem Joystick kann der Grafikcursor bewegt werden. Druckt man gleichzeitig den Feuerknopf, wird entsprechend dem eingestellten Modus ein Punkt gesetzt, gelöscht etc. Nun können beliebige Bilder gezeichnet werden, solange, bis mit der F7-Taste mit der Programmabarbeitung fortgefahren wird.

LPEN

Dieser Befehl erlaubt das Zeichnen von Bildern mit dem Lightpen (Port 1). Ini Prinzip gilt das gleiche wie beim JOYSTICK-Befehl, nur daß hier statt des Feuerknopfes die CTRL-Taste beziehungsweise der Knopf am Lightpen benutzt wird. Man verläßt den Lightpenmodus mit F7.

Alle Befehle können unabhängig vom Einschaltzustand des Grafikbildschirms angewendet werden. Sie lassen sich auch wie normale Basic-Befehle abkürzen.

Die Funktionen und Anwendungen des Programms und seiner Befehle sind sehr gut in dem Programm »TURTLE DEMO« demonstriert (Listing 2).

Das Programm beginnt mit Titel und Autorenanschrift. Das GOSUB in Zeile 260 dient nur zur Suche von Syntax-Fehlern in den DATA-Zeilen. Im Programmteil »Variable« ab Zeilennummer 290 wird der Variablen AN die Startadresse des Maschinenprogramms zugewiesen, der Variable ZI die Endadresse. In NA$ steht der Programmname. Die eigentliche Einleseroutine (ab Zeile 350) funktioniert folgendermaßen: Es werden in einer Schleife die ersten 16 Zahlen aus einer jeden DATA-Zeile gelesen und in den Speicher gePOKEt. Gleichzeitig wird aus den gelesenen Daten eine Prüfsumme gebildet. Diese Summe wird mit der letzten Zahl in der DATA-Zeile verglichen, dies ist die richtige Prüfsumme. Unterscheiden sich die beiden Zahlen, so wurde ein Tippfehler gemacht und die fehlerhafte Zeile wird vom Programm automatisch geLISTet. Außerdem wird geprüft, ob eine Zeile vergessen wurde (Zeile 517-520) und ob die Anzahl der Daten richtig ist (Zeile 530-537). Zusätzlich wird noch getestet, ob die gelesene Zahl auch zwischen 0-255 liegt (Zeile 391). Ist dies nicht der Fall, wird eine Fehlermeldung ausgegeben (Zeile 503-505). Ursache ist wahrscheinlich ein Kommafehler. Wurde kein Fehler gefunden, so fragt das Programm, ob es sich selbst abspeichern soll (davon sollte bei der ersten Benutzung des Programms unbedingt Gebrauch gemacht werden, Zeile 546-580). Danach wird das Maschinenprogramm gestartet (Zeile 590-610). Trotz der Prüfsummen ist ein Fehler in den DATAs nicht völlig ausgeschlossen. Vertauschungen werden zum Beispiel nicht bemerkt. Solche Fehler sind jedoch sehr unwahrscheinlich.

Komfortabler DATA-Lader

Diese Art der Überprüfung von DATA-Werten sollten Sie sich genau ansehen. Sie erleichtert der Redaktion und vor allem den Lesern die Eingabe und Überprüfung großer Zahlenkolonnen. Falls Sie uns Programme einschicken wollen, dann nehmen Sie sich doch auch bitte etwas Zeit und fügen eine komfortable Prüfroutine in Ihre Programme ein.

Programmierung

  1. Speicheraufteilung:

    Das Video-RAM steht ab $0400. Der Hires-Speicher wurde hinter $CC00 gelegt, das Hires-Farb-RAM nach C800. Das Programm selbst beginnt bei $C000 und endet bei $C88B. Programmvariable liegen im Bereich vor $CC00.

  2. Die Belegung der Funktionstasten wird durch ein »Anzapfen« des Interrupt ermöglicht. Die Funktion PRINT ”(fs)” wird durch Verändern der BSOUT-Routine erreicht.
  3. Das Textfenster:

    Wie Sie wissen, wird das Bild auf dem Fernseher (Monitor) durch einen Elektronenstrahl erzeugt, der den Bildschirm zeilenweise von oben nach unten abfährt. Der VIC bietet nun die Möglichkeit bei einer bestimmten Zeilenposition einen Interrupt auszulösen. Diese Fähigkeit des VIC wird ausgenutzt. In der dann ausgeführten Interruptroutine wird zwischen Hires- und Textmodus hin und her geschaltet, so daß der Bildschirm in ein Text und ein Grafikfenster eingeteilt wird.

  4. Die neuen Befehle:

    Es gibt zahlreiche Möglichkeiten, neue Basic-Befehle zu implementieren. Anzapfen der

    1. CHRGET-Routme (DOS 5.1)
    2. Eingabe-Warteschleife (Toolkits)
    3. Interpreterschleife (beschrieben im 64 Intern)

Die drei Möglichkeiten haben jedoch alle große Nachteile: Sie sind alle entweder zu langsam (1. und 3.), die Befehle lassen sich nur im Direktmodus anwenden (2.) oder sie können nicht abgekürzt werden. Deshalb wurden die Befehle mit sehr komplexen Routinen voll als Tokens integriert. Aus diesem Grund wurde die Interpreterschleife, die Routine zur Umwandlung in Interpretercode und die Routine zur Rückumwandlung in Klartext verändert. Die Vorteile dieser Arbeitsweise sind, daß sich die neuen Befehle wie normale Basic-Befehle anwenden lassen und daß nur minimale Geschwindigkeitsverluste bei der Ausführung von Basic-Programmen in Kauf genommen werden müssen. Ähnliche Methoden verwenden übrigens auch professionelle Basic-Erweiterungen, wie zum Beispiel Simons Basic.

Einige Befehle definiert

Ein solches »Anzapfen« von Betriebssystem- und Basic-Routinen wird beim C 64 durch zahlreiche Sprungvektoren ermöglicht, die verändert werden können. Dies ist leider nicht bei allen Computern so gut möglich. Die hier benutzten Vektoren sind:

Name: Adresse in dezimal:
Interrupt-Vektor : 788/789
NMI-Vektor : 792/793
BRK-Vektor : 790/791
Bsout-Vektor : 806/807
Vektor für Umwandlung in Interpretercode : 772/773
Vektor für Umwandlung in Klartext : 774/775
Vektor für Basic-Befehl ausführen (Interpreterschleife) : 776/777

Das Wissen über die Programmierung des Programms ist für dessen Anwendung nicht nötig. Doch nun viel Spaß mit Turtle Grafik.

(Peter Menke/ah)
AN = Anfangsadresse des Maschinenprogramms
ZI = Endadresse des Maschinenprogramms
NA$ = Programmname beim Abspeichern
GE = Geräteadresse beim Abspeichern
X = eingelesener DATA-Wert
S = Speicherstelle, in die X gePOKEt wird
Z = aktuelle DATA-Zeilennummer
PR = errechnete Prüfsumme
I = Variable der FOR/NEXT-Einleseschleife
Benutzte Variable
PROGRAMM : TURTLE GRAFIK  0801 10DF
-----------------------------------
0801 : 1E 08 0A 00 9E 20 32 30   BA
0809 : 38 30 20 3A 20 54 55 52   47
0811 : 54 4C 45 AB 47 52 41 50   FF
0819 : 48 49 43 53 00 00 00 A9   94
0821 : 3E A0 08 85 5F 84 60 A9   51
0829 : DF A0 10 85 5A 84 5B A9   98
0831 : A1 A0 C8 85 58 84 59 20   54
0839 : BF A3 4C 00 C0 78 20 3F   AC
0841 : C1 58 20 A3 C1 20 DF C1   CB
0849 : A9 1C 85 FE A9 C0 85 FF   F8
0851 : 20 61 C0 20 44 A6 4C 74   EA
0859 : A4 93 11 11 11 1D 1D 54   44
0861 : 55 52 54 4C 45 20 47 52   95
0869 : 41 50 48 49 43 53 BE BE   55
0871 : 1D 1D 42 59 20 50 45 54   1B
0879 : 45 52 20 4D 45 4E 4B 45   18
0881 : BE BE 1D 1D 33 38 39 31   C6
0889 : 31 20 42 41 53 49 43 20   50
0891 : 42 59 54 45 53 20 46 52   32
0899 : 45 45 11 11 BE BF A0 00   54
08A1 : B1 FE C9 BF F0 0C C9 BE   50
08A9 : D0 02 A9 0D 20 D2 FF C8   B0
08B1 : D0 EE 60 AD 19 D0 8D 19   47
08B9 : D0 10 1D AD 12 D0 C9 FA   53
08C1 : B0 0B 20 CC C1 A9 FA 8D   09
08C9 : 12 D0 4C BC FE 20 B9 C1   49
08D1 : A9 D9 8D 12 D0 4C BC FE   6D
08D9 : AD 0D DC 58 A5 CC D0 21   95
08E1 : A9 20 2C 11 D0 F0 1A CE   62
08E9 : FC CB D0 15 A9 07 8D FC   A5
08F1 : CB AD F1 CB 48 A9 02 8D   7E
08F9 : F1 CB 20 76 C3 68 8D F1   40
0901 : CB A5 D4 D0 1E A5 D8 D0   02
0909 : 1A A5 CB CD FF CB F0 13   EB
0911 : 8D FF CB C9 40 F0 0C C9   19
0919 : 04 F0 0B C9 05 F0 1D C9   71
0921 : 06 F0 30 4C 31 EA AD 11   78
0929 : D0 29 20 F0 09 20 CC C1   FC
0931 : 20 11 C2 4C E6 C0 20 B9   7C
0939 : C1 4C E6 C0 AD 11 D0 29   EB
0941 : 20 F0 F6 AD 1A D0 29 01   1B
0949 : F0 06 20 11 C2 4C E6 C0   12
0951 : 20 FE C1 A2 15 A0 00 18   3C
0959 : 20 F0 FF 4C E6 C0 48 8A   25
0961 : 48 98 48 A9 7F 8D 0D DD   91
0969 : AC 0D DD 30 0C 20 A3 FD   66
0971 : 20 18 E5 20 3F C1 6C 02   D2
0979 : A0 4C 72 FE 20 CC C1 A9   7E
0981 : 04 8D 88 02 A9 76 8D 14   5B
0989 : 03 A9 C0 8D 15 03 A9 21   95
0991 : 8D 18 03 A9 C1 8D 19 03   13
0999 : A9 30 8D 16 03 A9 C1 8D   20
09A1 : 17 03 A9 0B 8D FE CB A9   59
09A9 : 01 8D FD CB 8D FC CB A9   AD
09B1 : 00 8D 1A D0 A9 86 8D 04   25
09B9 : 03 A9 C4 8D 05 03 A9 2B   D9
09C1 : 8D 08 03 A9 C5 8D 09 03   3B
09C9 : A9 54 8D 06 03 A9 C5 8D   70
09D1 : 07 03 A9 67 8D 26 03 A9   1A
09D9 : C7 8D 27 03 20 F9 C3 60   33
09E1 : A2 20 A0 00 A9 E0 85 FF   73
09E9 : 84 FE 98 91 FE 88 D0 FB   B4
09F1 : E6 FF CA D0 F6 60 A9 38   2D
09F9 : 8D 18 D0 A9 94 8D 00 DD   6D
0A01 : AD 11 D0 09 20 8D 11 D0   E0
0A09 : 60 A9 15 8D 18 D0 A9 97   13
0A11 : 8D 00 DD AD 11 D0 29 DF   C7
0A19 : 8D 11 D0 60 A9 CC 85 FF   86
0A21 : A0 00 84 FE A2 04 AD FD   BF
0A29 : CB 0A 0A 0A 0A 0D FE CB   5A
0A31 : 91 FE 88 D0 FB E6 FF CA   0A
0A39 : D0 F6 60 A9 D9 8D 12 D0   C6
0A41 : AD 11 D0 29 7F 8D 11 D0   1A
0A49 : A9 01 8D 1A D0 60 A9 00   D0
0A51 : 8D 1A D0 60 A6 7A CA E8   67
0A59 : 8E F2 CB A2 FF 8E FB CB   A3
0A61 : 8E FA CB EE FA CB AE FA   FC
0A69 : CB BD 7F C2 F0 21 10 F3   8B
0A71 : EE FB CB AC F2 CB 88 C8   26
0A79 : B9 00 02 8D F9 CB E8 BD   82
0A81 : 7F C2 38 ED F9 CB F0 EF   CF
0A89 : C9 80 F0 13 4C 26 C2 AE   8F
0A91 : F2 CB BD 00 02 F0 07 C9   30
0A99 : 3A F0 BC E8 D0 F4 60 AE   2B
0AA1 : F2 CB AD FB CB 18 69 D0   28
0AA9 : 9D 00 02 E8 C8 B9 00 02   42
0AB1 : 9D 00 02 F0 DA E8 C8 D0   A7
0AB9 : F4 4C 52 C2 C8 48 49 52   59
0AC1 : 45 D3 4D 4F 56 C5 43 4C   66
0AC9 : 45 41 D2 57 49 4E 44 4F   05
0AD1 : D7 50 4C 4F D4 4D 4F 44   4B
0AD9 : C5 44 45 C7 52 45 56 45   3E
0AE1 : 52 D3 4C 54 55 52 CE 52   82
0AE9 : 54 55 52 CE 43 4F 4C 4F   D5
0AF1 : D2 47 4C 4F 41 C4 47 53   62
0AF9 : 41 56 C5 4A 4F 59 53 54   D6
0B01 : 49 43 CB 4C 50 45 CE 48   63
0B09 : 45 4C D0 00 EF C2 CD C5   80
0B11 : 5F C3 54 C7 49 C4 76 C4   7E
0B19 : 93 C5 A3 C5 80 C6 90 C6   3E
0B21 : A5 C6 24 C7 DF C6 A1 C7   76
0B29 : 3B C8 35 C7 20 9E B7 E0   A6
0B31 : 00 F0 36 20 79 00 F0 28   E7
0B39 : 20 FD AE 20 9E B7 E0 10   53
0B41 : 90 03 4C 6A C3 8E FE CB   F7
0B49 : 20 DF C1 20 79 00 F0 10   49
0B51 : 20 FD AE 20 9E B7 E0 10   6B
0B59 : 90 03 4C 6A C3 8E 20 D0   9E
0B61 : 20 B9 C1 20 F9 C3 4C AE   1E
0B69 : A7 20 79 00 F0 25 20 FD   33
0B71 : AE 20 9E B7 E0 10 90 03   A5
0B79 : 4C 6A C3 8E 21 D0 20 79   C9
0B81 : 00 F0 10 20 FD AE 20 9E   14
0B89 : B7 E0 10 90 03 4C 6A C3   8A
0B91 : 8E 20 D0 20 11 C2 20 CC   A9
0B99 : C1 4C AE A7 D0 0C 20 A3   56
0BA1 : C1 20 DF C1 4C AE A7 A2   C0
0BA9 : 0E 2C A2 0B 20 CC C1 4C   DF
0BB1 : 37 A4 60 AD F1 CB C9 03   B3
0BB9 : F0 F8 AE F6 CB 8A 4A 4A   7E
0BC1 : 29 FE A8 B9 0F C4 8D F4   02
0BC9 : CB B9 10 C4 8D F5 CB 8A   DA
0BD1 : 29 07 18 6D F4 CB 8D F4   FF
0BD9 : CB AD F7 CB 29 F8 8D F3   6B
0BE1 : CB AD F4 CB 85 FC 18 A9   2D
0BE9 : E0 6D F5 CB 85 FD 18 A5   6B
0BF1 : FC 6D F3 CB 85 FC A5 FD   ED
0BF9 : 6D F8 CB 85 FD AD F7 CB   4B
0C01 : 29 07 49 07 AA BD 41 C4   08
0C09 : A0 00 78 A2 34 86 01 AE   F5
0C11 : F1 CB F0 08 E0 01 F0 0E   1B
0C19 : E0 02 F0 13 11 FC 91 FC   D2
0C21 : A9 37 85 01 58 60 49 FF   95
0C29 : 31 FC 91 FC 4C E3 C3 51   72
0C31 : FC 91 FC 4C E3 C3 A9 00   C1
0C39 : 8D F8 CB 8D F1 CB 8D F0   7C
0C41 : CB A9 A0 8D F7 CB A9 64   08
0C49 : 8D F6 CB 60 00 00 40 01   53
0C51 : 80 02 C0 03 00 05 40 06   98
0C59 : 80 07 C0 08 00 0A 40 0B   F5
0C61 : 80 0C C0 0D 00 0F 40 10   53
0C69 : 80 11 C0 12 00 14 40 15   B0
0C71 : 80 16 C0 17 00 19 40 1A   0D
0C79 : 80 1B C0 1C 00 1E 01 02   33
0C81 : 04 08 10 20 40 80 20 EB   F2
0C89 : B7 E0 C8 B0 23 A5 15 C9   40
0C91 : 01 90 08 D0 1B A5 14 C9   B9
0C99 : 40 B0 15 78 8E F6 CB A5   A1
0CA1 : 14 8D F7 CB A5 15 8D F8   1E
0CA9 : CB 58 20 76 C3 4C AE A7   20
0CB1 : 4C 6A C3 20 9E B7 E0 04   5A
0CB9 : 90 03 4C 6A C3 8E F1 CB   3B
0CC1 : 4C AE A7 20 17 C2 A6 7A   69
0CC9 : A0 04 84 0F BD 00 02 8D   6D
0CD1 : F9 CB 29 F0 C9 D0 D0 06   8B
0CD9 : AD F9 CB 4C E8 C4 AD F9   5F
0CE1 : CB 10 07 C9 FF F0 3E E8   02
0CE9 : D0 E2 C9 20 F0 37 85 08   90
0CF1 : C9 22 F0 56 24 0F 70 2D   A9
0CF9 : C9 3F D0 04 A9 99 D0 25   0B
0D01 : C9 30 90 04 C9 3C 90 1D   82
0D09 : 84 71 A0 00 84 0B 88 86   3E
0D11 : 7A CA C8 E8 BD 00 02 38   94
0D19 : F9 9E A0 F0 F5 C9 80 D0   F9
0D21 : 30 05 0B A4 71 E8 C8 99   E0
0D29 : FB 01 B9 FB 01 F0 36 38   73
0D31 : E9 3A F0 04 C9 49 D0 02   22
0D39 : 85 0F 38 E9 55 D0 8D 85   AE
0D41 : 08 BD 00 02 F0 DF C5 08   9D
0D49 : F0 DB C8 99 FB 01 E8 D0   99
0D51 : F0 A6 7A E6 0B C8 B9 9D   29
0D59 : A0 10 FA B9 9E A0 D0 B4   93
0D61 : BD 00 02 10 BE 4C 09 A6   61
0D69 : 20 73 00 29 F0 C9 D0 F0   EB
0D71 : 09 20 79 00 20 ED A7 4C   91
0D79 : AE A7 20 79 00 29 0F 0A   CC
0D81 : A8 B9 D0 C2 85 A7 B9 CF   AE
0D89 : C2 85 A6 20 73 00 6C A6   F2
0D91 : 00 10 34 C9 FF F0 30 24   70
0D99 : 0F 30 2C 8D F9 CB 29 F0   02
0DA1 : C9 D0 D0 26 AD F9 CB 29   F7
0DA9 : 0F AA E8 84 49 A0 FF C8   03
0DB1 : B9 7F C2 10 FA CA D0 F7   16
0DB9 : C8 B9 7F C2 30 06 20 47   D8
0DC1 : AB 4C 7B C5 4C EF A6 4C   A1
0DC9 : F3 A6 AD F9 CB 4C 24 A7   B9
0DD1 : 20 9E B7 E0 08 90 03 4C   F4
0DD9 : 6A C3 8E F0 CB 4C AE A7   10
0DE1 : D0 25 A2 20 A9 E0 85 FF   A8
0DE9 : A0 00 84 FE 78 A9 34 85   3B
0DF1 : 01 B1 FE 49 FF 91 FE 88   4D
0DF9 : D0 F7 E6 FF CA D0 F2 A9   D1
0E01 : 37 85 01 58 4C AE A7 4C   B8
0E09 : 6D C3 20 8A AD 20 F7 B7   DC
0E11 : A6 14 F0 08 20 EC C5 C6   0D
0E19 : 14 4C D3 C5 A6 15 F0 06   E4
0E21 : C6 15 C6 14 D0 EA 4C AE   99
0E29 : A7 AD F0 CB F0 1D C9 02   7F
0E31 : F0 22 C9 04 F0 27 C9 06   A1
0E39 : F0 2C C9 01 F0 0A C9 03   5E
0E41 : F0 0F C9 05 F0 14 D0 1B   F5
0E49 : 20 2F C6 20 5D C6 4C 76   E1
0E51 : C3 20 43 C6 20 2F C6 4C   FD
0E59 : 76 C3 20 38 C6 20 43 C6   C8
0E61 : 4C 76 C3 20 5D C6 20 38   DA
0E69 : C6 4C 76 C3 AD F6 CB F0   0F
0E71 : 43 CE F6 CB 60 AD F6 CB   39
0E79 : C9 C7 B0 38 EE F6 CB 60   EF
0E81 : AD F8 CB D0 09 AD F7 CB   2D
0E89 : F0 2A CE F7 CB 60 AD F7   A7
0E91 : CB D0 03 CE F8 CB CE F7   78
0E99 : CB 60 AD F8 CB D0 09 EE   64
0EA1 : F7 CB D0 03 EE F8 CB 60   B9
0EA9 : AE F7 CB E8 E0 40 B0 04   3E
0EB1 : 8E F7 CB 60 AD ED CB D0   55
0EB9 : 03 4C 6A C3 60 20 9E B7   E6
0EC1 : 8A 18 6D F0 CB 29 07 8D   0E
0EC9 : F0 CB 4C AE A7 20 9E B7   ED
0ED1 : 8E F9 CB AD F0 CB 38 ED   2E
0ED9 : F9 CB 29 07 8D F0 CB 4C   0B
0EE1 : AE A7 20 9E B7 E0 10 B0   63
0EE9 : 30 8E FD CB 20 DF C1 20   A1
0EF1 : 79 00 F0 22 20 FD AE 20   D8
0EF9 : 9E B7 E0 10 B0 1B 8E FE   C9
0F01 : CB 20 DF C1 20 79 00 F0   BC
0F09 : 0D 20 FD AE 20 9E B7 E0   13
0F11 : 10 B0 06 8E 20 D0 4C AE   E4
0F19 : A7 4C 6A C3 78 A9 34 85   AA
0F21 : 01 A2 20 A0 00 84 FE 84   B9
0F29 : A6 A9 E0 85 FF A9 A0 85   67
0F31 : A7 B1 FE 91 A6 88 D0 F9   88
0F39 : E6 FF E6 A7 CA D0 F2 A9   20
0F41 : 37 85 01 58 20 D4 E1 A2   FC
0F49 : 00 A0 C0 86 FE A9 A0 85   65
0F51 : FF A9 36 85 01 A9 FE 20   FD
0F59 : D8 FF A9 37 85 01 4C AE   71
0F61 : A7 20 D4 E1 A9 00 85 B9   AE
0F69 : A2 00 A0 E0 20 D5 FF 4C   99
0F71 : AE A7 D0 1A A0 00 B9 80   5C
0F79 : C2 F0 10 10 07 29 7F 20   B1
0F81 : D2 FF A9 0D 20 D2 FF C8   89
0F89 : 4C 39 C7 4C AE A7 4C 6D   21
0F91 : C3 20 9E B7 E0 00 F0 06   E1
0F99 : 20 FE C1 4C AE A7 20 11   FD
0FA1 : C2 4C AE A7 48 A5 9A C9   DA
0FA9 : 03 D0 08 68 C9 87 F0 06   CC
0FB1 : 4C 16 E7 4C D5 F1 8E F9   A7
0FB9 : CB A6 D4 D0 1B A6 D8 D0   12
0FC1 : 17 98 48 A9 15 85 D6 A9   98
0FC9 : 00 85 D3 20 6C E5 68 A8   6E
0FD1 : AE F9 CB A9 87 18 58 60   FF
0FD9 : AE F9 CB 4C 16 E7 20 9E   5F
0FE1 : B7 E8 8E EF CB A9 01 8D   D7
0FE9 : ED CB A5 CB C9 03 D0 08   A7
0FF1 : A9 00 8D ED CB 4C AE A7   E4
0FF9 : A9 00 8D EE CB AD 00 DC   C7
1001 : 29 01 D0 09 20 2F C6 20   D7
1009 : 22 C8 EE EE CB AD 00 DC   0D
1011 : 29 02 D0 09 20 38 C6 20   B0
1019 : 22 C8 EE EE CB AD 00 DC   1D
1021 : 29 04 D0 09 20 43 C6 20   19
1029 : 22 C8 EE EE CB AD 00 DC   2D
1031 : 29 08 D0 09 20 5D C6 20   FC
1039 : 22 C8 EE EE CB AD EE CB   D6
1041 : D0 A8 20 0B C8 4C AD C7   04
1049 : AD F1 CB 48 A9 02 8D F1   AF
1051 : CB 20 76 C3 20 2F C8 20   21
1059 : 76 C3 68 8D F1 CB 60 AD   D7
1061 : 00 DC 29 10 D0 E2 20 76   AD
1069 : C3 4C 2F C8 AC EF CB A2   F6
1071 : 64 CA D0 FD 88 D0 F8 60   E2
1079 : F0 03 4C 6D C3 A5 CB C9   D8
1081 : 03 D0 03 4C AE A7 AD 14   3E
1089 : D0 38 E9 32 90 EF C9 C8   77
1091 : B0 EB 8D F6 CB AD 13 D0   91
1099 : 38 E9 23 90 E0 0A 8D F7   25
10A1 : CB 90 07 C9 40 B0 D6 A9   E8
10A9 : 01 2C A9 00 8D F8 CB AD   56
10B1 : 8D 02 29 04 F0 0C 20 76   E7
10B9 : C3 20 5D C6 20 76 C3 4C   1A
10C1 : 40 C8 AD F1 CB 48 A9 02   B8
10C9 : 8D F1 CB 20 76 C3 20 76   39
10D1 : C3 68 8D F1 CB 4C 40 C8   1C
10D9 : FF FF FF FF F9 03         64
Listing 1. Turtle-Grafik. Beachten Sie bitte die Eingabehinweise auf Seite 16
0 rem t u r t l e   d e m o
1 rem by peter menke
2 :
3 hires 1,0,0:color15:clear
4 :
10 rem roboter-kopf
20 plot 120,160
30 deg 2:move 10
40 deg 0:move 30
50 deg 2:move 10
55 deg 4:move 40
60 deg 2:move 100
65 deg 0:move 100
70 deg 6:move 100
90 deg 4:move 40
100 deg 6:move 10
110 deg 0:move 30
120 deg 6:move 10
121 :
122 rem linkes ohr
130 plot 110,105
140 deg 4:move 15
150 deg 2:move 30
160 deg 0:move 15
161 :
162 rem rechtes ohr
170 plot 210,105
180 deg 0:move 15
190 deg 2:move 30
200 deg 4:move 15
201 :
202 rem mund
210 plot 130,120
220 deg 6:move 10
230 deg 0:move 60
240 deg 2:move 10
241 :
242 rem nase
250 plot 152,100
260 deg 0:move 16
270 deg 3:move 8
280 deg 4:move 1
290 deg 5:move 8
291 :
292 rem linkes auge
293 plot 130,60:deg 0
295 fort=1to4
300 move 15
310 rturn2
320 next
330 :
340 rem rechtes auge
350 plot 190,60:deg 6
360 fort=1to4
370 move 15
380 rturn 2
390 next
400 :
410 window 1:print"{clr}{f5}         t u r t l e    d e m o"
420 print"{down}             by peter menke"
430 fori=0to4000:next
440 window 0
450 :
460 :
461 rem spirale
470 hires 1,2,2:color 0:clear:plot 160,100
480 fori=1to66
490 lturn 1
500 move i
510 next
511 fori=1to1000:next
520 :
530 :
540 rem viereck-spiralen
541 clear:color1
550 hires 1,2,2:fori=1to200step2
560 rturn 2:move i:next
561 plot 160,100
570 fori=1to195step2
580 lturn 2:move i:next
590 plot 160,100
600 fori=1to195
610 rturn 2:move i:next
620 :
630 :
640 rem muster
641 hires1,5,5:clear:color0
650 fori=1to45
660 forx=0to7
670 rturnx
671 move i
680 nextx
700 next
710 :
720 hires1,5,5
730 fori=1to45
740 forx=0to7
750 lturnx
761 movei
780 nextx
790 next
800 fori=1to2000:next
810 :
820 :
830 rem pyramiden
840 hires1,6,6:clear:color15
850 fori=1to33
860 forx=0to7
870 deg x
871 move i
880 nextx
900 next
910 :
930 fori=1to33
940 forx=0to7
950 deg 7-x
961 move i
980 nextx
990 next
991 fori=1to8:trap
992 forx=1to500:next
993 next
1000 :
1010 :
1011 rem inverses muster
1020 hires7,7:color 0:clear
1030 fory=1to4:hires 1:else 2
1040 fori=1to100
1050 move i
1060 forx=1to7
1070 lturn x:movex:nextx,i,y
1080 :
1090 :
1111 rem strich-muster
1120 hires1,8,8:color 0:clear
1130 fory=1to4:hires 1:else2
1140 fori=1to45
1150 move i
1160 forx=1to10
1170 rturn x:move x:nextx,i,y
1181 :
1182 :
1183 rem joystick zeichnen
1184 hires 1,10,10:color0:clear
1185 window1
1186 print"{clr}{f5}    joystick-zeichnen (port 2)"
1187 print"    weiter mit f7"
1188 joystick5
1189 :
1190 :
1191 rem lightpen zeichnen
1192 hires 1,1,1:color0:clear
1193 window1
1194 print"{clr}{f5}    lightpen-zeichnen (port 1)"
1195 print"    weiter mit f7"
1196 graphic
1197 :
1198 :
1200 rem zufall
1210 hires 1:clear:color 1,9,9
1220 window 1
1230 print"{clr}{f5}zufallsmuster
1240 print"schluss mit run/stop-taste
1250 deg rnd(1)*8:move 1:goto1250
Demo-Programm zur Turtle-Grafik
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →