Profi-Auflösung für MPS 801
Eine Auflösung von 640 x 400 Punkten eröffnet sich den Besitzern eines C 64 und MPS 801-Druckers.
Mit einer einfachen Basic-Erweiterung »MPS-Support« (Listing 1) lassen sich problemlos Grafiken mit einer Auflösung von 640 x 400 Punkten erzeugen. Zum Arbeiten mit diesem Programm wird keine weitere Hard- oder Software benötigt. MPS-Support ermöglicht die Darstellung einer hochauflösenden Grafik, die um den Faktor vier höher ist, als die normale Auflösung von 200 x 320. Diese Steigerung wird dadurch erreicht, daß der Bildschirm in alle vier Richtungen gescrollt werden kann. Außerdem besteht die Möglichkeit, die komplette Grafik, also 640 mal 400 Bildpunkte, auf einem Bildschirm darzustellen. Neben den normalen Grafik-Befehlen existieren auch Befehle, mit denen sich vom Basic aus Bilder in drei Dimensionen zeichnen lassen.
Ist MPS-Support mit dem MSE eingegeben und gespeichert, kann es mit LOAD »name«, 8 beziehungsweise LOAD »name« (von Datasette) geladen und durch den Befehl RUN gestartet werden. Zur Programmierhilfe wird nach dem Start eine kurze Liste der 21 neuen Befehle ausgegeben. Unter MPS-Support sind noch trotz des großen Speicherbedarfs von immerhin 45 KByte noch 14079 Byte frei für Ihre Basic-Programme. Dies sollte für die meisten Anwendungen mehr als ausreichend sein.
Alle neuen Basic-Befehle werden durch den Pfeil nach links (←) gekennzeichnet. Sie können wie die normalen Basic-Befehle angewendet, und sowohl im Programm- wie aber auch im Direktmodus eingesetzt werden. Es ist jedoch zu beachten, daß zwischen dem Basic-Befehl THEN und einem der neuen Grafik-Befehle ein Doppelpunkt einzugeben ist. Also nicht
IF A=0 THEN ←UPDATE
sondern
IF A=0 THEN: ←UPDATE
Der Bildschirm ist so organisiert, daß sich die Koordinaten (0,0) in der linken oberen Ecke befinden. Die X-Werte dürfen zwischen 0 und 639 und die Y-Werte zwischen 0 und 399 liegen (Bild 1). Auf dem Bildschirm sieht man einen Ausschnitt von 320 mal 200 Bildpunkten. Die Lage dieses »Fensters« kann mit entsprechenden Befehlen der Funktionstasten beliebig im Bild positioniert werden. Möchte man sich nur einen Überblick über das Gesamtbild verschaffen, so läßt sich dieses Gesamtbild auch verkleinert auf 320 mal 200 Punkten darstellen. Einige Befehle benötigen zur Eingabe nicht eine Punktkoordinate, sondern die entsprechende Zeichenposition. Dabei wird das Bild in 80 mal 50 Quadrate aufgeteilt. Jedes Quadrat besteht aus 8 mal 8 Bildpunkten, also einem Zeichen (Bild 2).


Bei allen Befehlen springt das Programm in eine Fehlerbehandlungs-Routine. Liegen die eingegebenen Werte nicht im angegebenen Bereich, wird ein »illegal quantity error« ausgegeben.
Die einzelnen Befehle in einer Übersicht:
- ←GRAPHIC: Einschalten der Grafik. Es ist ein Ausschnitt von 320 mal 200 Bildpunkten sichtbar.
- ←TEXT: Schaltet in den Textmodus zurück.
- ←WINDOW: Setzt ein Bildschirmfenster (320 mal 200 Bildpunkte) an die Position (A,B), bezogen auf die Gesamtgrafik. (A,B) ist die Zeichenposition der linken oberen Fensterecke. Beim Startvon »MPS-Support« istdie Position (0,0). (Wertebereich von A 0<=A<=40; Wertebereich von B 0<=B<025.)
- ←UPDATE: Hält das Fenster »up to date«. Wenn in einem Bild die Fensterposition geändert oder in das Bild noch etwas hineingezeichnetwurde, ist, um das Resultatzu sehen, der Befehl UPDATEanzuwenden. Erstnach diesem Befehl machtsich die Änderung auf dem Bildschirm bemerkbar.
- ←ZOOM: Mit diesem Befehl ist es möglich, die Grafik von 640 mal 400 Bildpunkten auf 320 mal 200 Bildpunkte zu verkleinern. Dabei entsprichtjeder Bildschirmpunktvier Punkten der Gesamtgrafik. Möchte man diesen Befehl rückgängig machen, also das Bild wieder vergrößern, ist der Befehl »UPDATE« einzugeben.
Funktionstastenbelegung
Die Position des Bildschirmfensters kann auch mit den Funktionstasten gesteuert werden.
Diese sind wie folgt belegt:
- F1: Fenster nach rechts bewegen und »←UPDATE« ausführen.
- F3: Fenster nach links bewegen und »←UPDATE« ausführen.
- F5: Fenster nach unten bewegen und »←UPDATE« ausführen.
- F7: Fenster nach oben bewegen und »←UPDATE« ausführen.
- F2: »←UPDATE« ausführen.
- F4: »←ZOOM« ausführen.
- F6: »←GRAPHIC« ausführen.
- F8: »←TEXT« ausführen.
Alle Funktionstasten sind im Programm- und im Direktmodus aktiv. Bei der Verschiebung wird das Fenster um 8 Zeichenpositionen in horizontale und 5 Zeichenpositionen in vertikale Richtung bewegt. Die Verschiebungsrate, also um wieviele Zeichenpositionen das Fenster in X- oder Y-Richtung verschoben werden soll, läßt sich mit dem Befehl »←INCREASE« ändern.
- ←INCREASE A,B: A bestimmt die Schrittweite in X-Richtung und B die Schrittweite in Y-Richtung (0<=A<=40; 0<=B<=25).
- ←RESTART: Durch diesen Befehl wird »MPS-Support« neu gestartet. Ein eventuell vorhandenes Basic-Programm und der Grafikspeicher werden dabei nicht zerstört. Der RESTART-Befehl hat zwei Aufgaben:
- Nach RUN/STOP und RESTORE wird die Funktionstastenbelegung wieder aktiviert.
- Die Liste der neuen Befehle wird auf dem Bildschirm ausgegeben.
- ←CLEAR: Der ganze Grafikspeicher wird gelöscht. Dabei wird der Befehl UPDATE automatisch ausgeführt.
- ←COLOUR A,B,C: Setzt die Farben. A steht für Punktfarbe, B für Hintergrundfarbe und C für Rahmenfarbe (0<=A<=15; 0<=B<=15; 0<=C<=15).
- ←DOT A,B: Setzt einen Punkt an die Koordinate (A=x; B=y). Der Wertebereich bezieht sich auf die Gesamtgrafik (0<=A<=639; 0<=B<=399)
- ←CDOT A,B: Löscht den Punkt an der Position A=x und B=y.
- ←LINE A,B,C,D: Zieht eine Linie von den Koordinaten A=x0, B=y0 nach C=x1, D=y1.
- ←CLINE A,B,C,D: Löscht eine Linie von den Koordinaten A=x0, B=y0 nach C=x1, D=y1.
- ←TEST A,B. Testet, ob der Punkt A=x, B=y gesetzt ist. Das Ergebnis wird in der Speicherzelle 2 abgelegt.
- PEEK(2)=1 —> Punkt gesetzt
- PEEK(2)=0 —> Punkt nicht gesetzt
- ←TEST 10,10:IF PEEK(2) = 1 THEN PRINT "SET"
- ←PATTERN A: Durch diesen Befehl können Linien gestrichelt dargestellt werden. Der Befehl beeinflußt alle folgenden Zeichenbefehle (LINE, DOT und so weiter). Bei A handelt es sich um eine 8-Bit-Zahl; sie muß folglich zwischen 0 und 255 liegen. Die einzelnen Bits von A repräsentieren ein Muster, das beim Zeichnen von Linien laufend wiederholt wird. Beispiel:
10101010 = 170: Ein Punkt wird gesetzt, der nächste nicht gesetzt und so weiter.
- 11110000 = 240: Vier Punkte werden gesetzt, die vier nächsten werden nicht gesetzt.
- 00000000 = 0: Kein Punkt wird gesetzt.
- 11111111 = 255: Alle Punkte werden gesetzt.
- ←CHAR A,B,C: Das Zeichen mit dem ASCII-Code C wird ab der Zeichenposition A=x und B=y ausgegeben (0<=A<=79;0<=B<=49; 0<=C<=255). Dabei sind folgende Kontrollcodes aktiv:
18: RVS ON; 146: RVS OFF; 14: Umschalten auf Kleinschrift; 142: Umschalten auf Großschrift und Grafikzeichen.
- ←DUMP: Dieser Befehl aktiviert die Drucker-Routine von MPS-Support. Es wird eine Hardcopy der Gesamtgrafik angefertigt und zwar auf den Druckern MPS 801, VC 1525 und GP-100VC. Der Druckvorgang kann nur mit der Tastenkombination RUN/STOP und RESTORE unterbrochen werden.
- ←POLY A,B,C,D,E,F,G,H. Zeichnet ein Polygon (Vieleck) mit vier Ecken: (A,B), (C,D), (E,F) und (G,H).
- ←CPOLY A,B,C,D,E,F,G,H. Löscht das Polygon.
- ←FPOLY A,B,C,D,E,F,G,H: Füllt die Fläche aus, die das Polygon abgrenzt.
- ←EPOLY A,B,C,D,E,F,G,H: Löscht das Polygon, das die Fläche abgrenzt.
Die Punktkoordinaten der POLY-Befehle sind im Rahmen des Wertebereiches beliebig. Es gibt allerdings eine Einschränkung. Bei den Befehlen FPOLY und EPOLY darf keiner der auftretenden Winkel größer als 180 Grad sein.
Mit dem POLY-Befehl können natürlich nicht nur Vierecke, sondern auch beliebige Dreiecke gezeichnet werden. Dazu ist nur eine der angegebenen Koordinaten zu wiederholen. Beispiel:
←CPOLY 10,15,150,100,150,100,25,35
Dadurch ist es natürlich auch möglich, beliebige Polygone zu zeichnen. Denn jedes Polygon setzt sich aus Drei- und Vierecken zusammen.
Mit dem POLY- und EPOLY-Befehl können dreidimensionale Körper und Netzfunktionen einfach erstellt werden. Normalerweise ist es sehr schwierig, Linien, die von einer oder mehreren Flächen verdeckt sind, zu löschen. Bei MPS-Support ist das anders. Hier wird der darzustellende Körper zuerst in Polygone aufgeteilt. Anschließend wird dann die Fläche des hintersten Polygons mit dem Befehl EPOLY gelöscht und mit POLY gezeichnet. Diese Prozedur ist bei allen folgenden Polygonen zu wiederholen. Somit wird der Körper von hinten nach vorn aufgebaut.
Die gleiche Methode kann beim Zeichnen von Netzgrafiken angewendet werden.
Demoprogramm
Das Demoprogramm, das mit LOAD »name«, 8 beziehungsweise LOAD »name« (von Datasette) geladen und mit RUN gestartet wird, enthält vier kleine Unterprogramme. Die ersten beiden Unterprogramme sind nur als grafische Impressionen gedacht (Bild 3 und 4). Das dritte Unterprogramm (Bild 5) zeichnet eine mathematische Funktion in ein Koordinatensystem. Das vierte Unterprogramm (Bild 6) erzeugt mit Hilfe der oben genannten Methode eine Netzgrafik.




Memory-Map von MPS-Support
- $0002: Zwischenspeicher
- $00FB bis $00FE: Zwischenspeicher
- $0801 bis $16F6: MPS-Support
- $1700 bis $1772: Zwischenspeicher
- $1801 bis $4EFF: Basic-Speicher
- $4F00 bis $CBFF: Bit-Map des Bildes
- $0000 bis $CFE7: Farbcode
- $E000 bis $FF3F: Bit-Map des Bildschirms
Die Bit-Map des Bildes ist genauso organisiert wie der normale Bildschirm. Der einzige Unterschied ist der, daß jede Zeile 640 statt 320 Byte enthält. Außerdem existieren nicht nur 25 sondern 50 Zeilen.
Zeichnen, wie bei den Großen
Mit diesem Programm lassen sich wesentlich »feinere« Grafiken auf Ihrem Drucker MPS 801 ausgeben. Was Sie damit malen, konstruieren oder zeichnen wollen, hängt nur vom jeweiligen Einsatzgebiet ab.
(Tommy Frandsen/ah)PROGRAMM : MPS-SUPPORT 0801 16F7 ----------------------------------- 0801 : 0D 08 00 00 9E 32 30 36 BB 0809 : 34 3A A2 00 00 00 49 A9 7B 0811 : 8E 20 D2 FF A2 FF E8 BD AD 0819 : 98 0A F0 06 20 D2 FF 4C E4 0821 : 17 08 E8 BD 98 0A F0 10 EC 0829 : C9 FF F0 4D A8 A9 1D 20 64 0831 : D2 FF 88 D0 FA 4C 17 08 BD 0839 : 8A 48 A0 05 A9 1D 20 D2 5A 0841 : FF 88 D0 FA AE 97 0A CA 7D 0849 : 8E 0F 17 A2 00 BC E4 09 05 0851 : 8C 10 17 E8 BD E4 09 20 30 0859 : D2 FF 88 D0 F6 A9 14 38 E4 0861 : ED 10 17 A8 A9 1D 20 D2 DB 0869 : FF 88 D0 FA E8 E8 E8 CE 57 0871 : 0F 17 D0 D9 68 AA 4C 17 B6 0879 : 08 A9 00 85 33 85 37 A9 96 0881 : 4F 85 34 85 38 A9 01 85 30 0889 : 2B A9 18 85 2C A9 00 8D 6B 0891 : 00 18 78 A9 00 8D 0D 17 BF 0899 : A9 D1 8D 14 03 A9 08 8D C9 08A1 : 15 03 58 A9 82 8D 08 03 3E 08A9 : A9 09 8D 09 03 A9 FF 8D F4 08B1 : 11 17 8D 48 17 A9 00 8D 94 08B9 : 12 17 8D 49 17 A9 00 8D BD 08C1 : 00 17 8D 01 17 A9 08 8D CA 08C9 : 0B 17 A9 05 8D 0C 17 60 C1 08D1 : A5 C5 AE 8D 02 CD 0D 17 A7 08D9 : D0 08 EC 0E 17 D0 03 4C 47 08E1 : 31 EA 8D 0D 17 8E 0E 17 D9 08E9 : C9 04 F0 16 E0 00 F0 03 8B 08F1 : 4C 61 09 C9 03 F0 55 C9 0A 08F9 : 05 F0 27 C9 06 F0 37 4C D7 0901 : 31 EA E0 00 F0 06 20 08 AF 0909 : 0B 4C 31 EA AD 00 17 18 4B 0911 : 6D 0B 17 C9 29 90 02 A9 75 0919 : 28 8D 00 17 20 08 0B 4C F2 0921 : 31 EA AD 00 17 38 ED 0B 34 0929 : 17 B0 02 A9 00 8D 00 17 E9 0931 : 20 08 0B 4C 31 EA AD 01 C5 0939 : 17 18 6D 0C 17 C9 1A 90 83 0941 : 02 A9 19 8D 01 17 20 08 69 0949 : 0B 4C 31 EA AD 01 17 38 D4 0951 : ED 0C 17 B0 02 A9 00 8D A9 0959 : 01 17 20 08 0B 4C 31 EA 9D 0961 : C9 03 F0 17 C9 05 F0 07 61 0969 : C9 06 F0 09 4C 31 EA 20 CD 0971 : 66 0C 4C 31 EA 20 47 0D FD 0979 : 4C 31 EA 20 65 0D 4C 31 6F 0981 : EA 20 73 00 C9 5F F0 06 C0 0989 : 20 79 00 4C E7 A7 A2 00 36 0991 : A5 7A 8D 02 17 A5 7B 8D BF 0999 : 03 17 AD 97 0A 8D 0F 17 FE 09A1 : BC E4 09 E8 20 73 00 DD 88 09A9 : E4 09 D0 06 88 D0 F4 4C 82 09B1 : CD 09 AD 02 17 85 7A AD 91 09B9 : 03 17 85 7B E8 88 D0 FC 29 09C1 : E8 E8 CE 0F 17 D0 D9 A2 57 09C9 : 0B 6C 00 03 E8 BD E4 09 8D 09D1 : 8D DF 09 E8 BD E4 09 8D EF 09D9 : E0 09 20 73 00 20 00 00 B5 09E1 : 4C AE A7 03 44 4F 54 EC B9 09E9 : 0E 04 4C 49 4E 45 42 0F 6C 09F1 : 06 55 50 44 41 54 45 08 1A 09F9 : 0B 04 43 48 41 52 CE 15 EC 0A01 : 04 54 45 53 54 E2 0E 07 8E 0A09 : 47 52 41 50 48 49 43 47 3E 0A11 : 0D 04 54 45 58 54 65 0D B6 0A19 : 05 43 4C 45 41 52 06 0C 52 0A21 : 06 43 4F 4C 4F 55 52 D7 BF 0A29 : 0B 06 57 49 4E 44 4F 57 29 0A31 : A8 0D 04 5A 4F 4F 4D 66 1E 0A39 : 0C 04 44 55 4D 50 D0 11 C0 0A41 : 08 49 4E 43 52 45 41 53 E5 0A49 : 45 C5 0D 04 43 44 4F 54 71 0A51 : E7 0E 05 43 4C 49 4E 45 BC 0A59 : 4A 0F 07 50 41 54 54 45 89 0A61 : 52 4E C9 11 04 50 4F 4C 07 0A69 : 59 DA 12 05 43 50 4F 4C E1 0A71 : 59 E2 12 05 46 50 4F 4C 1D 0A79 : 59 EA 12 05 45 50 4F 4C 19 0A81 : 59 F2 12 07 52 45 53 54 FE 0A89 : 41 52 54 10 08 06 44 45 57 0A91 : 53 49 47 4E 85 0D 16 93 65 0A99 : 0D 00 10 47 52 41 50 48 94 0AA1 : 2D 36 34 0D 00 10 A3 A3 EE 0AA9 : A3 A3 A3 A3 A3 A3 0D 1D 41 0AB1 : 1D 42 41 53 49 43 20 45 64 0AB9 : 58 54 45 4E 53 49 4F 4E B0 0AC1 : 20 57 49 54 48 20 32 31 1A 0AC9 : 20 4E 45 57 20 43 4F 4D 41 0AD1 : 4D 41 4E 44 53 3A 0D 0D 30 0AD9 : 00 00 0D 0D 1D 36 34 4B A9 0AE1 : 20 52 41 4D 20 53 59 53 CD 0AE9 : 54 45 4D 20 20 31 34 30 F4 0AF1 : 37 39 20 42 41 53 49 43 70 0AF9 : 20 42 59 54 45 53 20 46 17 0B01 : 52 45 45 0D 0D 00 FF 78 AB 0B09 : A9 26 85 01 A5 FB 48 A5 ED 0B11 : FC 48 A5 FD 48 A5 FE 48 99 0B19 : A9 02 8D 5B 17 A9 80 8D 6E 0B21 : 5C 17 AD 01 17 8D 5E 17 1A 0B29 : A9 00 8D 5D 17 20 A4 0B FC 0B31 : 18 A9 4F 6D 61 17 8D 61 67 0B39 : 17 AD 00 17 0A 0A 0A AA 78 0B41 : A9 00 6D 61 17 85 FC 8A 18 0B49 : 6D 62 17 85 FB A5 FC 69 11 0B51 : 00 85 FC A9 E0 85 FE A9 12 0B59 : 00 85 FD A2 19 A0 00 B1 E9 0B61 : FB 91 FD C8 D0 F9 A0 00 1D 0B69 : E6 FC E6 FE B1 FB 91 FD A4 0B71 : C8 C0 40 D0 F7 18 A5 FB 92 0B79 : 69 80 85 FB A5 FC 69 01 ED 0B81 : 85 FC A5 FD 69 40 85 FD 58 0B89 : A5 FE 69 00 85 FE CA D0 25 0B91 : CC 68 85 FE 68 85 FD 68 4E 0B99 : 85 FC 68 85 FB A9 27 85 1C 0BA1 : 01 58 60 A9 00 8D 60 17 38 0BA9 : 8D 5F 17 A2 10 4E 5B 17 0F 0BB1 : 6E 5C 17 90 10 AD 60 17 43 0BB9 : 18 6D 5E 17 8D 60 17 AD 96 0BC1 : 5F 17 6D 5D 17 6A 8D 5F 6D 0BC9 : 17 6E 60 17 6E 61 17 6E 3E 0BD1 : 62 17 CA D0 D8 60 20 9E DA 0BD9 : B7 20 FC 0B 8E 02 17 20 D6 0BE1 : FD AE 20 9E B7 20 FC 0B 98 0BE9 : 8E 03 17 20 FD AE 20 9E D6 0BF1 : B7 20 FC 0B 8E 20 D0 20 C6 0BF9 : 3C 0C 60 E0 10 B0 01 60 BB 0C01 : A2 0E 6C 00 03 A9 4F 85 8B 0C09 : FC A9 00 85 FB A2 7D A0 97 0C11 : 00 91 FB C8 D0 FB E6 FC 74 0C19 : CA D0 F6 A9 E0 85 FC A9 C0 0C21 : 00 85 FB A2 1F A0 00 91 51 0C29 : FB C8 D0 FB E6 FC CA D0 5F 0C31 : F6 A0 00 91 FB C8 C0 40 33 0C39 : D0 F9 60 A9 CC 85 FC A9 93 0C41 : 00 85 FB AD 02 17 0A 0A CD 0C49 : 0A 0A 0D 03 17 A2 03 A0 D0 0C51 : 00 91 FB C8 D0 FB E6 FC B4 0C59 : CA D0 F6 A0 00 91 FB C8 6B 0C61 : C0 E8 D0 F9 60 78 A9 26 C5 0C69 : 85 01 A5 FB 48 A5 FC 48 8E 0C71 : A5 FD 48 A5 FE 48 A9 00 B4 0C79 : 85 FB A9 4F 85 FC A9 00 37 0C81 : 85 FD A9 E0 85 FE A9 32 E7 0C89 : 8D 4E 17 A9 28 8D 52 17 9F 0C91 : 20 EE 0C 18 A5 FB 69 10 2E 0C99 : 85 FB A5 FC 69 00 85 FC CB 0CA1 : A5 FD 69 08 85 FD A5 FE 7D 0CA9 : 69 00 85 FE CE 52 17 D0 D1 0CB1 : DF CE 4E 17 F0 25 AD 4E F9 0CB9 : 17 6A 90 0F A5 FD E9 3C 76 0CC1 : 85 FD A5 FE E9 01 85 FE 49 0CC9 : 4C 8C 0C A5 FD 38 E9 04 64 0CD1 : 85 FD A5 FE E9 00 85 FE 51 0CD9 : 4C 8C 0C 68 85 FE 68 85 78 0CE1 : FD 68 85 FC 68 85 FB A9 09 0CE9 : 27 85 01 58 60 A9 FF 8D 8D 0CF1 : 4F 17 A9 00 8D 50 17 8D 09 0CF9 : 51 17 AC 50 17 B1 FB EE D8 0D01 : 50 17 C8 11 FB A2 04 0A 2A 0D09 : 90 02 09 80 0A 48 AC 51 25 0D11 : 17 B9 53 17 2A 99 53 17 A8 0D19 : 68 CA D0 EB EE 50 17 EE 43 0D21 : 51 17 A9 04 CD 51 17 D0 4E 0D29 : D1 AD 4F 17 F0 0B A9 00 96 0D31 : 8D 4F 17 8D 51 17 4C FB D4 0D39 : 0C A0 00 B9 53 17 91 FD FD 0D41 : C8 C0 04 D0 F6 60 AD 02 B2 0D49 : DD 09 03 8D 02 DD AD 00 E3 0D51 : DD 29 FC 8D 00 DD A9 38 BA 0D59 : 8D 18 D0 AD 11 D0 09 20 D8 0D61 : 8D 11 D0 60 AD 02 DD 09 2B 0D69 : 03 8D 02 DD AD 00 DD 29 14 0D71 : FC 09 03 8D 00 DD A9 14 22 0D79 : 8D 18 D0 AD 11 D0 29 DF F8 0D81 : 8D 11 D0 60 A2 FF E8 BD 20 0D89 : 94 0D F0 06 20 D2 FF 4C D2 0D91 : 87 0D 60 47 52 36 34 20 88 0D99 : 56 32 20 54 46 20 44 4B A8 0DA1 : 20 30 38 20 38 35 00 20 59 0DA9 : 9E B7 E0 29 B0 11 8E 00 4E 0DB1 : 17 20 FD AE 20 9E B7 E0 C5 0DB9 : 1A B0 04 8E 01 17 60 A2 8E 0DC1 : 0E 6C 00 03 20 9E B7 E0 FD 0DC9 : 29 B0 F4 8E 0B 17 20 FD 3F 0DD1 : AE 20 9E B7 E0 1A B0 E7 9F 0DD9 : 8E 0C 17 60 A9 4F 85 FC 64 0DE1 : A9 00 85 FB AD 04 17 6A 97 0DE9 : AD 05 17 6A 4A 4A 0A AA A0 0DF1 : E8 BD 7E 0E 18 65 FB 85 C1 0DF9 : FB CA BD 7E 0E 65 FC 85 A4 0E01 : FC AD 03 17 29 F8 18 65 FD 0E09 : FB 85 FB AD 02 17 65 FC E4 0E11 : 85 FC AD 05 17 29 07 A8 49 0E19 : 78 A9 26 85 01 AD 12 17 94 0E21 : F0 1F 30 42 AD 03 17 29 97 0E29 : 07 AA B1 FB E8 0A CA D0 1D 0E31 : FC 90 07 A9 01 85 02 4C 49 0E39 : 61 0E A9 00 85 02 4C 61 68 0E41 : 0E 4E 11 17 90 1A AD 11 50 0E49 : 17 09 80 8D 11 17 AD 03 3D 0E51 : 17 29 07 AA E8 38 A9 00 0B 0E59 : 6A CA D0 FC 11 FB 91 FB 2B 0E61 : A9 27 85 01 58 60 AD 03 65 0E69 : 17 29 07 AA E8 38 A9 00 23 0E71 : 6A CA D0 FC 49 FF 31 FB 65 0E79 : 91 FB 4C 61 0E 00 00 02 2C 0E81 : 80 05 00 07 80 0A 00 0C D5 0E89 : 80 0F 00 11 80 14 00 16 88 0E91 : 80 19 00 1B 80 1E 00 20 3B 0E99 : 80 23 00 25 80 28 00 2A ED 0EA1 : 80 2D 00 2F 80 32 00 34 A0 0EA9 : 80 37 00 39 80 3C 00 3E 52 0EB1 : 80 41 00 43 80 46 00 48 05 0EB9 : 80 4B 00 4D 80 50 00 52 B8 0EC1 : 80 55 00 57 80 5A 00 5C 6A 0EC9 : 80 5F 00 61 80 64 00 66 1D 0ED1 : 80 69 00 6B 80 6E 00 70 D0 0ED9 : 80 73 00 75 80 78 00 7A 82 0EE1 : 80 A9 0F 4C EE 0E A9 F0 6B 0EE9 : 4C EE 0E A9 00 8D 12 17 48 0EF1 : 20 F7 0E 4C DD 0D 20 8A F6 0EF9 : AD 20 F7 B7 A5 15 C9 02 D9 0F01 : F0 05 B0 38 4C 0E 0F A5 64 0F09 : 14 C9 80 B0 2F A5 15 8D C8 0F11 : 02 17 A5 14 8D 03 17 20 18 0F19 : FD AE 20 8A AD 20 F7 B7 F2 0F21 : A5 15 C9 01 F0 05 B0 14 05 0F29 : 4C 32 0F A5 14 C9 90 B0 3A 0F31 : 0B A5 15 8D 04 17 A5 14 BE 0F39 : 8D 05 17 60 A2 0E 6C 00 67 0F41 : 03 A9 00 8D 12 17 4C 52 7A 0F49 : 0F A9 F0 8D 12 17 4C 52 CA 0F51 : 0F 20 F7 0E A2 03 BD 02 6D 0F59 : 17 9D 06 17 CA 10 F7 20 F1 0F61 : FD AE 20 F7 0E A9 FF 8D 06 0F69 : 39 17 AD 03 17 38 ED 07 F3 0F71 : 17 AD 02 17 ED 06 17 90 4F 0F79 : 13 A2 03 BD 02 17 48 BD CB 0F81 : 06 17 9D 02 17 68 9D 06 F2 0F89 : 17 CA 10 EF AD 09 17 38 F7 0F91 : ED 05 17 8D 16 17 AD 08 59 0F99 : 17 ED 04 17 8D 15 17 A9 BC 0FA1 : 00 8D 63 17 B0 18 AD 05 B0 0FA9 : 17 38 ED 09 17 8D 16 17 DD 0FB1 : AD 04 17 ED 08 17 8D 15 7D 0FB9 : 17 A9 FF 8D 63 17 AD 07 0A 0FC1 : 17 38 ED 03 17 8D 14 17 2C 0FC9 : AD 06 17 ED 02 17 8D 13 32 0FD1 : 17 AD 14 17 D0 1D AD 13 7A 0FD9 : 17 D0 18 AD 16 17 D0 13 98 0FE1 : AD 15 17 D0 0E AD 39 17 5A 0FE9 : D0 06 A9 00 8D 3A 17 60 EE 0FF1 : 4C DD 0D AD 14 17 38 ED DC 0FF9 : 16 17 AD 13 17 ED 15 17 CC 1001 : 90 41 AD 15 17 8D 67 17 EA 1009 : AD 16 17 8D 66 17 AD 13 35 1011 : 17 8D 6A 17 AD 14 17 8D 5F 1019 : 69 17 20 BB 10 AD 66 17 C4 1021 : 8D 10 17 AD 64 17 8D 09 79 1029 : 17 AD 65 17 8D 08 17 A9 1C 1031 : 01 8D 0F 17 AD 14 17 8D 93 1039 : 72 17 AD 13 17 8D 71 17 D6 1041 : 4C 82 10 AD 14 17 8D 66 85 1049 : 17 AD 13 17 8D 67 17 AD AA 1051 : 16 17 8D 69 17 AD 15 17 E5 1059 : 8D 6A 17 20 BB 10 AD 66 A5 1061 : 17 8D 0F 17 AD 64 17 8D 5B 1069 : 07 17 AD 65 17 8D 06 17 38 1071 : A9 01 8D 10 17 AD 16 17 66 1079 : 8D 72 17 AD 15 17 8D 71 DE 1081 : 17 AD 39 17 F0 03 4C 30 59 1089 : 11 A9 FF 8D 3A 17 A2 00 07 1091 : BD 02 17 9D 2C 17 E8 E0 AA 1099 : 08 D0 F5 AD 0F 17 8D 34 85 10A1 : 17 AD 10 17 8D 35 17 AD B0 10A9 : 63 17 8D 36 17 AD 72 17 99 10B1 : 8D 37 17 AD 71 17 8D 38 CC 10B9 : 17 60 A9 00 8D 6D 17 8D 26 10C1 : 6E 17 8D 6F 17 8D 70 17 DA 10C9 : 8D 64 17 8D 65 17 8D 6B 1C 10D1 : 17 8D 6C 17 A2 20 0E 64 D9 10D9 : 17 2E 65 17 2E 66 17 2E 12 10E1 : 67 17 2E 6D 17 2E 6E 17 D8 10E9 : 2E 6F 17 2E 70 17 AD 6D AC 10F1 : 17 38 ED 69 17 AD 6E 17 94 10F9 : ED 6A 17 AD 6F 17 ED 6B D5 1101 : 17 AD 70 17 ED 6C 17 90 AE 1109 : 22 EE 64 17 8D 70 17 AD B2 1111 : 6D 17 38 ED 69 17 8D 6D 36 1119 : 17 AD 6E 17 ED 6A 17 8D 2F 1121 : 6E 17 AD 6F 17 ED 6B 17 31 1129 : 8D 6F 17 CA D0 A8 60 A9 B4 1131 : 00 8D 58 17 8D 5A 17 A9 4C 1139 : 80 8D 57 17 8D 59 17 20 79 1141 : DD 0D AD 0F 17 D0 15 AD 9A 1149 : 58 17 18 6D 07 17 8D 58 F1 1151 : 17 AD 57 17 6D 06 17 8D 76 1159 : 57 17 90 08 EE 03 17 D0 66 1161 : 03 EE 02 17 AD 63 17 D0 33 1169 : 25 AD 10 17 D0 15 AD 5A 6D 1171 : 17 18 6D 09 17 8D 5A 17 86 1179 : AD 59 17 6D 08 17 8D 59 68 1181 : 17 90 32 EE 05 17 D0 2D F1 1189 : EE 04 17 4C B6 11 AD 10 93 1191 : 17 D0 15 AD 5A 17 38 ED 26 1199 : 09 17 8D 5A 17 AD 59 17 4F 11A1 : ED 08 17 8D 59 17 B0 0D 35 11A9 : CE 05 17 AD 05 17 C9 FF A6 11B1 : D0 03 CE 04 17 CE 72 17 17 11B9 : AD 72 17 C9 FF D0 06 CE DB 11C1 : 71 17 10 01 60 4C 40 11 6E 11C9 : 20 9E B7 8E 11 17 60 A9 97 11D1 : 08 20 C3 FF A2 04 A9 08 DB 11D9 : A0 FF 20 BA FF A9 00 20 66 11E1 : BD FF 20 C0 FF A2 08 20 33 11E9 : C9 FF A9 08 20 D2 FF A9 09 11F1 : 0F 8D 12 17 A9 02 8D 02 13 11F9 : 17 A9 7F 8D 03 17 A9 5B BD 1201 : 8D 06 17 A9 00 8D 0A 17 4F 1209 : 20 C8 12 A9 00 8D 04 17 F2 1211 : 8D 05 17 A9 01 8D 0F 17 03 1219 : A9 90 8D 10 17 A9 07 8D 66 1221 : 07 17 AD 0A 17 F0 0A A9 D5 1229 : 03 8D 07 17 A9 00 8D 08 78 1231 : 17 20 DD 0D 46 02 6E 08 B0 1239 : 17 AD 03 17 38 E9 01 8D BD 1241 : 03 17 B0 03 CE 02 17 CE 53 1249 : 07 17 D0 E5 AD 0A 17 F0 36 1251 : 08 A2 04 4E 08 17 CA D0 7B 1259 : FA 38 6E 08 17 AD 08 17 39 1261 : 20 D2 FF AD 0A 17 F0 11 DF 1269 : AD 03 17 18 69 03 8D 03 4C 1271 : 17 90 14 EE 02 17 4C 88 CE 1279 : 12 AD 03 17 18 69 07 8D 0A 1281 : 03 17 90 03 EE 02 17 EE CE 1289 : 05 17 D0 03 EE 04 17 CE B7 1291 : 10 17 D0 89 CE 0F 17 10 74 1299 : 84 A9 0D 20 D2 FF AD 03 23 12A1 : 17 38 E9 07 8D 03 17 B0 DE 12A9 : 03 CE 02 17 AD 0A 17 D0 A0 12B1 : 0D CE 06 17 D0 05 A9 FF 66 12B9 : 8D 0A 17 4C 09 12 A9 0F 81 12C1 : 20 D2 FF 20 E7 FF 60 A2 93 12C9 : 00 BD D6 12 20 D2 FF E8 0A 12D1 : E0 04 D0 F5 60 1B 10 00 C5 12D9 : 28 A9 00 8D 12 17 4C 26 DF 12E1 : 13 A9 F0 8D 12 17 4C 26 0E 12E9 : 13 A9 00 8D 12 17 4C 6D 69 12F1 : 13 A9 F0 8D 12 17 4C 6D AD 12F9 : 13 A9 04 8D 2B 17 A0 00 82 1301 : 98 48 20 F7 0E 68 A8 A2 D0 1309 : 00 BD 02 17 99 17 17 C8 8C 1311 : E8 E0 04 D0 F4 CE 2B 17 25 1319 : F0 0A 98 48 20 FD AE 68 BB 1321 : A8 4C 01 13 60 20 FA 12 A9 1329 : A9 03 8D 2B 17 A0 00 A2 D8 1331 : 00 B9 17 17 9D 02 17 C8 8E 1339 : E8 E0 08 D0 F4 98 48 20 23 1341 : 66 0F 68 38 E9 04 A8 CE 4F 1349 : 2B 17 D0 E3 A2 00 B9 17 F0 1351 : 17 9D 02 17 C8 E8 E0 04 FA 1359 : D0 F4 A0 00 B9 17 17 9D B7 1361 : 02 17 C8 E8 E0 08 D0 F4 B9 1369 : 20 66 0F 60 20 26 13 A2 51 1371 : 03 BD 17 17 9D 27 17 CA 01 1379 : 10 F7 A2 02 BD 17 17 8D 7A 1381 : 40 17 8D 42 17 E8 BD 17 D6 1389 : 17 8D 41 17 8D 43 17 A2 2F 1391 : 07 A0 03 BD 17 17 38 ED 48 1399 : 41 17 CA BD 17 17 ED 40 32 13A1 : 17 B0 0E BD 17 17 8D 40 2C 13A9 : 17 E8 BD 17 17 8D 41 17 98 13B1 : CA E8 BD 17 17 38 ED 43 B3 13B9 : 17 CA BD 17 17 ED 42 17 A0 13C1 : 90 0E BD 17 17 8D 42 17 C0 13C9 : E8 BD 17 17 8D 43 17 CA 1D 13D1 : E8 E8 E8 E8 E8 88 D0 BB 12 13D9 : A9 00 8D 47 17 8D 4C 17 0C 13E1 : 8D 4D 17 A9 02 8D 4A 17 F4 13E9 : A9 7F 8D 4B 17 AD 47 17 49 13F1 : 0A 0A AA 20 87 14 D0 36 78 13F9 : AD 2D 17 38 ED 4B 17 AD FB 1401 : 2C 17 ED 4A 17 B0 0C AD 00 1409 : 2D 17 8D 4B 17 AD 2C 17 4C 1411 : 8D 4A 17 AD 2D 17 38 ED 87 1419 : 4D 17 AD 2C 17 ED 4C 17 23 1421 : 90 0C AD 2D 17 8D 4D 17 0A 1429 : AD 2C 17 8D 4C 17 EE 47 2C 1431 : 17 AD 47 17 C9 04 D0 B5 3F 1439 : AD 4A 17 8D 02 17 AD 4B A9 1441 : 17 8D 03 17 AD 40 17 8D 17 1449 : 04 17 AD 41 17 8D 05 17 8C 1451 : AD 4C 17 8D 06 17 AD 4D 06 1459 : 17 8D 07 17 AD 40 17 8D 30 1461 : 08 17 AD 41 17 8D 09 17 B9 1469 : 20 66 0F EE 41 17 D0 03 74 1471 : EE 40 17 AD 43 17 38 ED A5 1479 : 41 17 AD 42 17 ED 40 17 0A 1481 : B0 01 60 4C D9 13 8E 46 50 1489 : 17 E8 E8 E8 A9 FF 8D 44 C5 1491 : 17 8D 45 17 BD 17 17 38 04 1499 : ED 41 17 D0 05 A9 00 8D BF 14A1 : 44 17 CA BD 17 17 ED 40 3D 14A9 : 17 D0 05 AD 44 17 F0 42 65 14B1 : B0 05 A9 00 8D 45 17 A9 01 14B9 : FF 8D 44 17 E8 E8 E8 E8 BE 14C1 : E8 BD 17 17 38 ED 41 17 57 14C9 : D0 05 A9 00 8D 44 17 CA 73 14D1 : BD 17 17 ED 40 17 D0 05 A7 14D9 : AD 44 17 F0 15 B0 08 AD DF 14E1 : 45 17 F0 0B 4C F3 14 AD 5F 14E9 : 45 17 D0 03 4C F3 14 A9 56 14F1 : FF 60 AE 46 17 A0 00 BD 87 14F9 : 17 17 99 02 17 E8 C8 C0 A0 1501 : 08 D0 F4 A9 00 8D 39 17 63 1509 : 20 6B 0F AD 3A 17 D0 0F 16 1511 : AD 02 17 8D 2C 17 AD 03 6F 1519 : 17 8D 2D 17 A9 00 60 A9 95 1521 : 00 8D 3D 17 8D 3F 17 A9 9D 1529 : 80 8D 3C 17 8D 3E 17 AD E4 1531 : 2F 17 CD 41 17 D0 0B AD 07 1539 : 2E 17 CD 40 17 D0 03 A9 C6 1541 : 00 60 AD 34 17 D0 15 AD 0B 1549 : 3D 17 18 6D 31 17 8D 3D 42 1551 : 17 AD 3C 17 6D 30 17 8D 01 1559 : 3C 17 90 08 EE 2D 17 D0 9C 1561 : 03 EE 2C 17 AD 36 17 D0 54 1569 : 25 AD 35 17 D0 15 AD 3F 80 1571 : 17 18 6D 33 17 8D 3F 17 5F 1579 : AD 3E 17 6D 32 17 8D 3E 47 1581 : 17 90 32 EE 2F 17 D0 2D 94 1589 : EE 2E 17 4C B6 15 AD 35 13 1591 : 17 D0 15 AD 3F 17 38 ED 75 1599 : 33 17 8D 3F 17 AD 3E 17 A9 15A1 : ED 32 17 8D 3E 17 B0 0D 98 15A9 : CE 2F 17 AD 2F 17 C9 FF 5D 15B1 : D0 03 CE 2E 17 CE 37 17 6F 15B9 : AD 37 17 C9 FF D0 0B CE 51 15C1 : 38 17 AD 38 17 10 03 A9 49 15C9 : 00 60 4C 30 15 20 9E B7 4F 15D1 : 8E 02 17 E0 50 B0 0D 20 41 15D9 : FD AE 20 9E B7 8E 03 17 33 15E1 : E0 32 90 05 A2 0E 6C 00 EB 15E9 : 03 20 FD AE 20 9E B7 8E 44 15F1 : 04 17 E0 12 D0 05 A9 00 D7 15F9 : 8D 48 17 E0 92 D0 05 A9 A3 1601 : FF 8D 48 17 E0 0E D0 05 88 1609 : A9 FF 8D 49 17 E0 8E D0 93 1611 : 05 A9 00 8D 49 17 E0 20 AE 1619 : B0 01 60 E0 40 90 42 E0 D1 1621 : 60 B0 0A 8A 38 E9 40 8D 9C 1629 : 04 17 4C 62 16 E0 80 B0 E4 1631 : 0A 8A 38 E9 20 8D 04 17 78 1639 : 4C 62 16 E0 A0 B0 01 60 AC 1641 : E0 C0 B0 0A 8A 38 E9 40 81 1649 : 8D 04 17 4C 62 16 E0 FF 82 1651 : D0 08 A9 5E 8D 04 17 4C 49 1659 : 62 16 8A 38 E9 80 8D 04 51 1661 : 17 A9 D0 85 FC A9 00 85 5A 1669 : FB 8D 05 17 AD 48 17 D0 6A 1671 : 09 AD 04 17 18 69 80 8D 1F 1679 : 04 17 A2 03 0E 04 17 2E CC 1681 : 05 17 CA D0 F7 A5 FB 18 AB 1689 : 6D 04 17 85 FB A5 FC 6D 2B 1691 : 05 17 85 FC AD 49 17 F0 86 1699 : 06 A9 08 65 FC 85 FC A9 66 16A1 : 4F 85 FE A9 00 85 FD 2E 28 16A9 : 03 17 AE 03 17 E8 BD 7E F1 16B1 : 0E 18 65 FD 85 FD CA BD D3 16B9 : 7E 0E 65 FE 85 FE A2 03 58 16C1 : A9 00 8D 05 17 0E 02 17 86 16C9 : 2E 05 17 CA D0 F7 A5 FD F8 16D1 : 18 6D 02 17 85 FD A5 FE E0 16D9 : 6D 05 17 85 FE 78 A9 22 DE 16E1 : 85 01 A0 07 B1 FD 11 FB 37 16E9 : 91 FD 88 10 F7 A9 27 85 11 16F1 : 01 58 60 FF FF FF CE
1000 rem graph-64 demo
1010 input "demo 1,2,3 oder 4";de
1020 _clear:_colour 1,5,7
1030 on de gosub 2000,3000,4000,5000
1040 _zoom:_graphic
1050 end
1999 :
2000 rem demo 1
2010 for i=-~/4 to ~/4 step ~/15
2020 for j=0 to 2*~ step ~/15
2030 _line cos(i)*319+320,sin(i)*199+200,cos(j)*319+320,sin(j)*199+200
2040 next j,i
2050 return
2999 :
3000 rem demo 2
3010 for i=0 to 2*~ step ~/50
3020 _line cos(i)*50+320,sin(i)*50+200,sqr(i/(2*~))*639,i/(2*~)*399
3030 next
3040 return
3999 :
4000 rem demo 3
4010 _poly 2,2,637,2,637,397,2,397
4020 _line 10,200,630,200
4030 _line 320,10,320,390
4040 _line 320,10,316,15
4050 _line 320,10,324,15
4060 _line 630,200,626,205
4070 _line 630,200,626,195
4080 for i=10+620/32 to 630-620/32 step 620/32
4090 _line i,196,i,204:next
4100 for i=10+380/40 to 390-380/40 step 380/40
4110 _line 316,i,324,i:next
4120 _char 42,26,asc("~")
4130 _char 38,13,asc("1")
4140 _char 78,26,asc("x")
4150 xc=35:yc=1:a$="f(x)":gosub 6000
4160 xc=6:yc=5:a$="f(x)=sin(x)+sin(x*1.1)":gosub 6000
4170 _poly 44,36,228,36,228,50,44,50
4180 def fns(x)=sin(x)+sin(x*1.1)
4190 y1=fns((0-310)/310*16*~)*(-95)+200
4200 for i=1 to 620
4210 y2=fns((i-310)/310*16*~)*(-95)+200
4220 _line i+9,y1,i+10,y2
4230 y1=y2
4240 next
4250 return
4999 :
5000 rem demo 4
5010 dim x1%(68),x2%(68),z1%(68),z2%(68)
5020 co=cos(~/9):si=sin(~/9)
5030 y=-168
5040 for x=-272 to 272 step 8
5050 gosub 5240
5060 x1%(x/8+34)=xp:z1%(x/8+34)=zp
5070 next
5080 for y=-160 to 168 step 8
5090 for x=-272 to 272 step 8
5100 gosub 5240
5110 x2%(x/8+34)=xp:z2%(x/8+34)=zp
5120 next
5130 for i=0 to 67
5140 _epoly x1%(i),z1%(i),x1%(i+1),z1%(i+1),x2%(i+1),z2%(i+1),x2%(i),z2%(i)
5150 _poly x1%(i),z1%(i),x1%(i+1),z1%(i+1),x2%(i+1),z2%(i+1),x2%(i),z2%(i)
5160 next
5170 for i=0 to 68
5180 x1%(i)=x2%(i):z1%(i)=z2%(i)
5190 next
5200 next
5210 xc=22:yc=3:a$="f(x,y)=cos(x^2+y^2)/exp((x^2+y^2)/4)":gosub 6000
5220 _poly 172,20,468,20,468,34,172,34
5230 return
5240 tp=(x*x/73984*~+y*y/28224*~)
5250 z=cos(tp*2)/exp(tp/2)*200
5260 xq=x*co+y*si:yq=-x*si+y*co:zq=z
5270 xp=xq:yp=zq*si+yq*co:zp=zq*co-yq*si
5280 xp=320+xp:zp=250-zp
5290 return
5999 :
6000 rem
6010 for i=0 to len(a$)-1
6020 _char xc+i,yc,asc(mid$(a$,i+1,1))
6030 next
6040 return