C 64
Grafik-Erweiterung

Die schnellste Grafikerweiterung für den C 64

Die Basic-Erweiterung für den C 64, die in Sachen Geschwindigkeit völlig neue Maßstäbe setzt.

Dunkle Computergrafik: dichtes Raster aus sich überlappenden konzentrischen Kreismustern

Für alle Fans von hochauflösenden Grafiken auf dem C 64 bietet diese extrem schnelle Grafikerweiterung eine neue Alternative. Sie enthält die schnellsten Grafik-Routinen, die uns bisher in einer Basic-Erweiterung unter die Augen gekommen sind und bietet dem Basic-Programmierer so eine Fülle von neuen Möglichkeiten. Die Grafik in Bild 1 wird beispielsweise in weniger als 2 Sekunden aufgebaut. Auch das Bild oben zeigt eine sehr schöne Grafik, die mit der High-Speed-Grafikerweiterung erstellt wurde.

Hardcopy: Liniengitter, das eine sternförmige, nach innen gewölbte Fläche bildet
Bild 1. Hardcopy eines Bildes des Demos von Listing 2.

Bei der High-Speed-Grafikerweiterung handelt es sich um eine Basic-Erweiterung, die auf einem extrem schnellen Algorithmus für das Zeichnen einer Linie aufbaut (ein Algorithmus ist ein programmtechnischer Lösungsweg für ein mathematisches Problem). Dieser Weg wurde unter anderem auch in der 64'er-Ausgabe 4/1984, Seite 65 (»schneller Drawline-Algorithmus«) aufgezeigt und stellt die schnellste, derzeit bekannte Methode für das Zeichnen einer Linie zwischen zwei Punkten dar.

Der in der High-Speed-Grafikerweiterung verwendete Algorithmus erlaubt das Ziehen von Linien mit einer Geschwindigkeit von fast 12000 Punkten pro Sekunde. Das entspricht einer Zeit von weniger als 90 Mikrosekunden für das Setzen eines Punktes und erlaubt somit das Zeichnen einer Linie ohne sichtbare Verzögerung.

Wichtig im Zusammenhang mit der Grafikerweiterung ist jedoch die Tatsache, daß nur im hochauflösenden Grafikmodus und nicht im Multicolor-Modus gearbeitet werden kann. Das Programm eignet sich also hervorragend für »ernsthafte« Anwendungen, in der zeitkritische Problemlösungen gefragt sind.

Nun aber zum Programm selbst. Es belegt im Computer den Speicherbereich von $9000 bis $9C60 (36864 bis 40032). Insgesamt wird mit zwei Grafikbildschirmen gearbeitet, zwischen denen beliebig hin- und hergeschaltet werden kann. Sie belegen den Bereich ab $A000 bis $BFFF und $E000 bis $FFFF. Die zugehörigen Farbspeicher liegen dazu ab $8C00 und ab $CC00. Da zwei Farbspeicher verwendet werden, entfällt das lästige und zeitraubende »Umschaufeln« von Farbwerten, was wiederum einen Geschwindigkeitsvorteil bringt. Durch das geschickte Umschalten zwischen beiden Grafikbildschirmen können nämlich absolut flimmerfreie, bewegte Grafiken auch in Basic erstellt werden.

Wenn Sie sich die Verteilung der Speicherbereiche ansehen, werden Sie feststellen, daß immerhin noch 33 KByte Speicher für eigene Basic-Programme freibleiben.

Nach dem Abtippen der High-Speed-Grafikerweiterung (Listing 1) mit dem MSE wird das Programm mit dem Namen »HSG-W« auf einer Diskette gespeichert. Sinngemäß kann es anschließend wieder mit »LOAD "HSG-W",8,1« in den Computer geladen werden. Anschließend erfolgt der Start mit »SYS 9*4096« oder »SYS 36864«, wobei vorher noch der Befehl <NEW> einzugeben ist, damit die Basic-Zeiger wieder hergestellt werden. Ansonsten ist früher oder später ein »?OUT OF MEMORY ERROR« die Folge.

Nach der Einschaltmeldung der Erweiterung steht Ihnen sofort ein sehr leistungsfähiger Befehlssatz zur Verfügung. Wird das Grafikpaket von einem Basic-Programm nachgeladen, so unterbleibt die Einschaltmeldung, und der Befehlssatz steht direkt zur Verfügung. Beim Starten der Erweiterung werden automatisch alle beiden Grafikbildschirme gelöscht und die Hintergrundfarbe auf Schwarz gesetzt. Die Vordergrundfarbe, also die Farbe der gezeichneten Figuren, steht dann auf Weiß.

Im folgenden sei nun der neue Befehlssatz der High-Speed-Grafikerweiterung beschrieben. Das Kennzeichen der erweiterten Befehle ist das Pfundzeichen ('£'), das jedem Befehlsbuchstaben vorangestellt ist. Eine Besonderheit der Befehlserweiterung sei an dieser Stelle auch gleich erwähnt: Wird ein Grafikbefehl in einer IF-THEN-Unterscheidung benötigt, so muß zwischen dem Befehl »THEN« und dem Grafikbefehl ein Doppelpunkt <:> gesetzt werden.

Für die Befehlserklärung vorab ein paar Hinweise auf Abkürzungen, die im weiteren Verlauf des Textes verwendet werden:

SCR: bedeutet die Nummer des gewünschten Grafikbildschirms. Eine Null (0) steht für den Bildschirm 0, eine Zahl zwischen 1 und 255 steht für den Grafikschirm 1.

ZM: bedeutet Zeichenmodus. Hier wird die Betriebsart der Zeichenroutinen bestimmt. Dabei bedeutet eine 0 ein Zeichnen in der Hintergrundfarbe, was einem Löschen der Punkte entspricht. Eine Zahl ungleich 0, nämlich von 1 bis 255, bedeutet ein Zeichnen in der aktuellen Vordergrundfarbe. Hier werden die Punkte sichtbar auf dem Bildschirm angezeigt.

X: steht für die X-Koordinate eines Befehls im aktuellen Grafikbildschirm. Der Wert kann zwischen 0 und 319 betragen.

Y: steht für die Y-Koordinate des betreffenden Befehls. Sie kann Werte zwischen 0 und 199 annehmen.

R: gibt den Kreisradius bei Kreisbefehlen an. Hier ist ein Wert zwischen 0 und 255 zulässig.

V: steht für eine beliebige Fließkommavariable, die an dieser Stelle im Programm eingesetzt werden muß.

V$: ersetzt in der Befehlstabelle eine beliebige Stringvariable, die in eigenen Programmen natürlich einen anderen Namen haben kann.

Befehl Parameter Ausführung
£H ,SCR Grafikbildschirm einschalten
£E ,SCR Grafikbildschirm löschen
£C ,SCR,F Farbe für Bildschirm setzen
£N Textbildschirm einschalten
£P ,X,Y,ZM Punkt im Grafikbildschirm setzen
£S ,X,Y Grafik-Cursor setzen
£D ,X,Y,ZM Linie ab Cursor-Position ziehen
£L ,XA,YA,XB,YB,ZM Linie von festgelegter Position bis zu fester Position ziehen
£R ,XA,YA,XB,YB,ZM Rechteck zeichnen
£B ,XA,YA,XB,YB,ZM ausgefülltes Rechteck zeichnen
£K ,XM,YM,RX,RY,ZM Kreis zeichnen
£M ,SCR Grafikseite für Befehle anwählen
£IS ,YG,YT Rasterzeilen setzen
£I1 Text in Grafik einblenden
£I0 Text aus Grafik ausblenden
£V ,V,V$ String auswerten
£QA Grafikseiten durch UND verknüpfen
£QO Grafikseiten durch ODER verknüpfen
Tabelle 1. Die Befehle von »High-Speed-Grafik«

Hier nun die Beschreibung sämtlicher Befehle der High-Speed-Grafikerweiterung für den C 64:

£H,SCR: Dieser Befehl schaltet den Grafikbildschirm ein, dessen Nummer anstelle von »SCR« angegeben wird.

£E,SCR: Mit diesem Befehl wird der Grafikbildschirm mit der angegebenen Nummer »SCR« gelöscht, das heißt, gleich der Hintergrundfarbe gesetzt.

£C,SCR,F: Hier wird die Farbe des angegebenen Grafikbildschirms gesetzt. Dabei geht man folgendermaßen vor:

F = Hintergrundfarbe + 16*Vordergrundfarbe.

Wollen Sie also beispielsweise die Standardfarbenkombination von Schwarz als Hintergrund- und Weiß als Vordergrundfarbe einstellen, so errechnet sich der Wert für F wie folgt: 0 + 16*1 ergibt 16, da 0 die Farbe Schwarz und 1 die Farbe Weiß einstellt.

£N: Dieser Befehl ist wohl einer der wichtigsten. Er schaltet wieder auf den normalen Textbildschirm zurück, wobei sämtliche Parameter der zwei Grafikbildschirme und des Textbildschirms erhalten bleiben.

£P,X,Y,ZM: Mit diesem Befehl wird ein Punkt im aktuellen Grafikbildschirm gesetzt, beziehungsweise gelöscht (abhängig von ZM). X und Y geben dabei die entsprechenden Bildschirmkoordinaten an.

£S,X,Y: Hier wird der aktuelle Grafik-Cursor (Zeichenposition im Grafikbildschirm) an die Koordinaten X und Y gesetzt.

£D,X,Y,ZM: Dieser Befehl zieht eine Linie von der Position des aktuellen Grafik-Cursors bis zu den Koordinatenpunkten X und Y. Abhängig von ZM wird diese Linie dabei gezeichnet oder gelöscht.

£L,XA,YA,XB,YB,ZM: Der Befehl entspricht D, nur mit dem Unterschied, daß hier sowohl die Anfangs- (XA,YA) als auch die Endkoordinaten (XB,YB) der Linie angegeben werden müssen.

£R,XA,YA,XB,YB,ZM: Mit diesem Befehl können Sie ein Rechteck auf den Bildschirm zeichnen, dessen linke obere Ecke durch die Koordinaten XA und YA und dessen rechte untere Ecke durch die Koordinaten XB und YB bestimmt wird.

£B,XA,YA,XB,YB,ZM: Dieser Befehl entspricht im wesentlichen dem Befehl R. Es handelt sich bei der gezeichneten Figur hier jedoch um ein ausgefülltes Rechteck, einen Block.

£K,XM,YM,RX,RY,ZM: Mit diesem Befehl wird ein Kreis gezeichnet, dessen Mittelpunkt bei den Koordinaten XM und YM liegt, und dessen Radius in X-Richtung durch den Parameter RX und in Y-Richtung durch RY angegeben wird. Auf diese Weise ist es auch ohne Probleme möglich, Ellipsen auf den Bildschirm zu bringen, indem ungleiche Werte für RX und RY angegeben werden. ZM bezeichnet wie üblich den Zeichenmodus, der bestimmt, ob die Figur in Vorder- oder Hintergrundfarbe auf den Bildschirm gebracht wird.

£M,SCR: Hier wird diejenige Grafikseite angewählt, auf die sich die künftigen Befehle beziehen sollen. Es ist somit möglich, eine Grafikseite vorzubereiten, während die andere Seite angezeigt wird.

£IS,YG,YT: Dieser Befehl setzt die Umschaltzeilen für Text- und Grafikanzeige. Es handelt sich dabei um einen Rasterinterrupt, der das gleichzeitige Anzeigen von Text und Grafik erlaubt. YG gibt dabei die Rasterzeile für das Einschalten der Grafik und YT die Rasterzeile für den Beginn des Textfensters an. Eine Angabe von £IS,10,120 schaltet also den Bildschirm zwischen den Punktzeilen 10 und 119 auf Grafik. Der Rest ist Textbildschirm.

£I1: Hier erfolgt ein Einblenden des Textbildschirms in den aktuellen eingeschalteten Grafikbildschirm, sofern vorher durch den Befehl £IS die entsprechenden Rasterzeilen festgelegt worden sind. Im oben aufgeführten Beispiel von £IS,10,120 wird also in der Mitte des Bildschirms die Grafik angezeigt, während am oberen und unteren Rand jeweils ein Teil vom Textbildschirm zu sehen ist. Voraussetzung ist natürlich, daß vor dem $I1-Befehl immer der aktuelle Grafikschirm mit dem H-Befehl eingeschaltet worden sein muß.

£I0: ist das genaue Gegenstück zum £I1-Befehl. Hier wird das Textfenster wieder aus dem Grafikbildschirm ausgeblendet, so daß das aktuelle Grafikfenster wieder in seiner vollen Größe erscheint.

£V,V,V$: Dieser Befehl erlaubt die Auswertung eines mathematischen Ausdrucks in einem String. Dazu ein Beispiel:

10 A$="100+200-75"
20 £V,A,A$
30 PRINT A

Dieses Programm wertet den String A$ aus und übergibt das Ergebnis in A. Auf dem Bildschirm erscheint als Ergebnis der Wert 225.

£QA: Hier werden die beiden Grafikseiten durch ein logisches UND miteinander verknüpft. Dadurch ist eine subtraktive Mischung von zwei Grafiken problemlos möglich.

£QO: Ähnlich dem £QA-Befehl, nur daß hier eine ODER-Verknüpfung stattfindet. Die beiden Grafikbildschirme werden also additiv gemischt, wobei ein »Zusammenschneiden« von zwei Grafiken möglich ist.

Soweit zum Befehlssatz der High-Speed-Grafikerweiterung. Wie Sie sehen, erhalten Sie mit diesem zusätzlichen Befehlssatz ein wirklich leistungsfähiges Grafik-Basic, das sich für viele Anwendungen hervorragend eignet. Wenn Sie sich einmal die Mühe machen und eines von den beiden Demo-Programmen in Listing 2 und 3 eintippen, bekommen Sie eine recht eindrucksvolle Vorstellung davon, wie schnell High-Speed-Grafik arbeitet.

(Wolfgang Lohwasser/ks)
PROGRAMM : HSG-W          9000 9C61
-----------------------------------
9000 : 20 60 96 20 A2 90 20 91   4C
9008 : 90 A9 10 A2 CC A0 00 86   A4
9010 : FC 84 FB 20 F5 90 A9 10   FC
9018 : A2 8C A0 00 86 FC 84 FB   83
9020 : 20 F5 90 A2 00 A0 8C 86   F7
9028 : 37 84 38 AD A2 9A 29 BF   88
9030 : 8D A2 9A A5 7B C9 02 F0   5A
9038 : 01 60 A0 00 B9 D7 96 C9   DA
9040 : 00 F0 06 20 D2 FF C8 D0   30
9048 : F3 60 20 7A 91 AD 11 D0   2F
9050 : 29 20 D0 06 AD 18 D0 8D   78
9058 : D7 94 20 06 91 F0 13 AD   8A
9060 : 00 DD 29 FC A0 3B A2 38   18
9068 : 8D 00 DD 8C 11 D0 8E 18   00
9070 : D0 60 AD 00 DD 29 FC 09   09
9078 : 01 4C 64 90 20 7A 91 AD   42
9080 : 00 DD 09 03 AE D7 94 A0   4F
9088 : 1B 4C 68 90 20 06 91 F0   50
9090 : 11 A2 E0 A0 E8 8E BD 90   5A
9098 : 8C C0 90 A2 F0 A0 F8 4C   8D
90A0 : B0 90 A2 A0 A0 A8 8E BD   5A
90A8 : 90 8C C0 90 A2 B0 A0 B8   64
90B0 : 8E C3 90 8C C6 90 A2 08   61
90B8 : A0 00 98 99 00 00 99 00   18
90C0 : 00 99 00 00 99 00 00 C8   B8
90C8 : D0 F1 EE BD 90 EE C0 90   A9
90D0 : EE C3 90 EE C6 90 CA D0   5F
90D8 : E2 4C 23 91 20 06 91 F0   36
90E0 : 05 A2 CC 4C E8 90 A2 8C   AA
90E8 : A0 00 84 FB 86 FC 20 FD   F6
90F0 : AE 20 9E B7 8A A2 04 A0   5C
90F8 : 00 91 FB C8 D0 FB E6 FC   5B
9100 : CA D0 F6 4C 23 91 20 FD   B5
9108 : AE 20 9E B7 8A 60 20 06   9D
9110 : 91 F0 08 AD A2 9A 09 40   75
9118 : 4C 20 91 AD A2 9A 29 BF   B1
9120 : 8D A2 9A 2C A2 9A 50 05   75
9128 : A2 E0 4C 2F 91 A2 A0 A0   25
9130 : 00 84 FB 86 FC 60 20 06   A1
9138 : 91 F0 08 AD A2 9A 09 80   1D
9140 : 4C 48 91 AD A2 9A 29 7F   6D
9148 : 8D A2 9A 60 20 60 91 86   31
9150 : 59 84 57 85 58 60 20 60   3C
9158 : 91 86 5C 84 5A 85 5B 60   D4
9160 : 20 FD AE 20 EB B7 E0 C8   C0
9168 : B0 0D A5 15 F0 06 A4 14   A5
9170 : C0 40 B0 03 A4 14 60 4C   E2
9178 : 48 B2 2C 5F 96 10 14 78   3C
9180 : A9 31 8D 14 03 A9 EA 8D   EC
9188 : 15 03 A9 00 8D 1A D0 8D   91
9190 : 5F 96 58 60 20 4C 91 20   47
9198 : 8F 94 20 36 91 A5 58 85   F3
91A0 : 5B A5 57 29 F8 85 5A A5   39
91A8 : 59 29 07 18 65 5A 85 5A   4F
91B0 : A5 59 29 F8 4A 4A 4A AA   E1
91B8 : BD 02 92 18 65 5A 85 5A   12
91C0 : BD 1B 92 65 5B 65 FC 85   3C
91C8 : 5B A5 57 29 07 AA BD FA   A4
91D0 : 91 85 5C 78 A5 01 48 A9   21
91D8 : 35 85 01 A0 00 2C A2 9A   45
91E0 : 10 0B A5 5C 11 5A 91 5A   4A
91E8 : 68 85 01 58 60 A5 5C 49   95
91F0 : FF 31 5A 91 5A 68 85 01   52
91F8 : 58 60 80 40 20 10 08 04   53
9200 : 02 01 00 40 80 C0 00 40   1A
9208 : 80 C0 00 40 80 C0 00 40   7F
9210 : 80 C0 00 40 80 C0 00 40   87
9218 : 80 C0 00 00 01 02 03 05   2F
9220 : 06 07 08 0A 0B 0C 0D 0F   51
9228 : 10 11 12 14 15 16 17 19   59
9230 : 1A 1B 1C 1E 20 4C 91 20   8E
9238 : 56 91 20 8F 94 20 36 91   97
9240 : A5 58 C5 5B F0 1C B0 20   E1
9248 : 38 A5 5A E5 57 85 5F A5   10
9250 : 5B E5 58 85 60 A2 BD A0   B8
9258 : 93 8E 91 93 8C 92 93 4C   4D
9260 : 7F 92 A5 57 C5 5A 90 E0   B0
9268 : 38 A5 57 E5 5A 85 5F A5   A0
9270 : 58 E5 5B 85 60 A2 F5 A0   77
9278 : 93 8E 91 93 8C 92 93 A5   20
9280 : 59 C5 5C B0 14 38 A5 5C   3B
9288 : E5 59 85 FE A2 2D A0 94   9A
9290 : 8E 78 93 8C 79 93 4C AA   8B
9298 : 92 38 A5 59 E5 5C 85 FE   30
92A0 : A2 5E A0 94 8E 78 93 8C   40
92A8 : 79 93 A5 60 D0 06 A5 5F   F3
92B0 : C5 FE 90 11 A5 60 85 A8   FF
92B8 : 4A 85 5E A5 5F 85 A7 6A   A7
92C0 : 85 5D 4C F0 92 A4 5F A5   3C
92C8 : FE 85 A7 85 5F 4A 85 5D   3C
92D0 : 84 FE A9 00 85 A8 85 5E   AE
92D8 : AE 91 93 AC 78 93 8E 78   19
92E0 : 93 8C 91 93 AE 92 93 AC   B7
92E8 : 79 93 8E 79 93 8C 92 93   0D
92F0 : 46 A8 66 A7 A5 5B 85 AA   B9
92F8 : A5 5A 29 F8 85 A9 A5 5C   29
9300 : 29 07 18 65 A9 85 A9 A5   18
9308 : 5C 29 F8 4A 4A 4A AA BD   9D
9310 : 02 92 18 65 A9 85 A9 BD   F7
9318 : 1B 92 65 AA 65 FC 85 AA   D5
9320 : A5 5A 29 07 AA BD FA 91   C5
9328 : 85 AB 78 A5 01 48 A9 35   B9
9330 : 85 01 A0 00 2C A2 9A 10   C0
9338 : 0D A5 AB 11 A9 91 A9 68   C3
9340 : 85 01 58 4C 52 93 A5 AB   95
9348 : 49 FF 31 A9 91 A9 68 85   25
9350 : 01 58 20 9D 91 78 A5 01   AF
9358 : 48 A9 35 85 01 A0 00 A6   D5
9360 : A7 4C B6 93 18 A5 5D 65   3C
9368 : FE 85 5D A5 5E 69 00 85   71
9370 : 5E C5 60 F0 15 90 19 20   61
9378 : 00 00 38 A5 5D E5 5F 85   C9
9380 : 5D A5 5E E5 60 85 5E 4C   48
9388 : 90 93 A5 5D C5 5F B0 E7   E1
9390 : 20 00 00 2C A2 9A 30 11   18
9398 : A5 5C 49 FF 31 5A 91 5A   9E
93A0 : A5 AB 49 FF 31 A9 4C B3   66
93A8 : 93 A5 5C 11 5A 91 5A A5   2E
93B0 : AB 11 A9 91 A9 CA D0 AC   0E
93B8 : 68 85 01 58 60 A5 5C C9   66
93C0 : 01 F0 05 4A 85 5C D0 11   65
93C8 : A9 80 85 5C 18 A5 5A 69   89
93D0 : 08 85 5A A5 5B 69 00 85   F2
93D8 : 5B A5 AB C9 80 F0 04 0A   DE
93E0 : 85 AB 60 A9 01 85 AB 38   E3
93E8 : A5 A9 E9 08 85 A9 A5 AA   6F
93F0 : E9 00 85 AA 60 A5 5C C9   C8
93F8 : 80 F0 05 0A 85 5C D0 11   14
9400 : A9 01 85 5C 38 A5 5A E9   05
9408 : 08 85 5A A5 5B E9 00 85   2E
9410 : 5B A5 AB C9 01 F0 04 4A   9E
9418 : 85 AB 60 A9 80 85 AB 18   D3
9420 : A5 A9 69 08 85 A9 A5 AA   87
9428 : 69 00 85 AA 60 A5 5A 29   37
9430 : 07 C9 07 F0 05 E6 5A 4C   85
9438 : 47 94 A5 5A 18 69 39 85   3B
9440 : 5A A5 5B 69 01 85 5B A5   66
9448 : A9 29 07 F0 03 C6 A9 60   34
9450 : A5 A9 38 E9 39 85 A9 A5   C7
9458 : AA E9 01 85 AA 60 A5 5A   E1
9460 : 29 07 F0 05 C6 5A 4C 76   47
9468 : 94 A5 5A 38 E9 39 85 5A   A0
9470 : A5 5B E9 01 85 5B A5 A9   7A
9478 : 29 07 C9 07 F0 03 E6 A9   8E
9480 : 60 A5 A9 18 69 39 85 A9   EA
9488 : A5 AA 69 01 85 AA 60 2C   84
9490 : A2 9A 70 0A 8D D1 94 8E   B4
9498 : D2 94 8C D3 94 60 8D D4   7E
94A0 : 94 8E D5 94 8C D6 94 60   16
94A8 : 2C A2 9A 70 0C AD D1 94   79
94B0 : AE D2 94 AC D3 94 4C 4F   34
94B8 : 91 AD D4 94 AE D5 94 AC   2D
94C0 : D6 94 4C 4F 91 20 A8 94   C3
94C8 : 4C 37 92 20 56 91 4C 8F   9B
94D0 : 94 2D 2D 2D 2D 2D 2D 00   DD
94D8 : BA 8E 90 95 AE 00 03 AC   00
94E0 : 01 03 8E 91 95 8C 92 95   6C
94E8 : A2 7C A0 95 8E 00 03 8C   B1
94F0 : 01 03 20 FD AE 20 8B B0   B6
94F8 : 8D 93 95 8C 94 95 20 8D   D7
9500 : AD 20 FD AE 20 9E AD 20   00
9508 : 8F AD AD 7A 00 AC 7B 00   7C
9510 : 8D 95 95 8C 96 95 A0 00   F7
9518 : B1 64 AA F0 50 C8 B1 64   9F
9520 : 8D 22 00 C8 B1 64 8D 23   92
9528 : 00 8A A8 A9 00 4C 32 95   23
9530 : B1 22 99 00 02 88 D0 F8   F2
9538 : B1 22 99 00 02 8C 7A 00   CF
9540 : A9 02 8D 7B 00 20 79 A5   EF
9548 : A9 00 A2 02 8D 7A 00 8E   A4
9550 : 7B 00 20 9E AD AD 95 95   71
9558 : AC 96 95 8D 7A 00 8C 7B   37
9560 : 00 AD 93 95 AC 94 95 8D   AF
9568 : 49 00 8C 4A 00 AD 91 95   FD
9570 : AC 92 95 8D 00 03 8C 01   C9
9578 : 03 4C D0 BB 8E F0 9F A9   8F
9580 : 00 A2 06 9D 60 00 CA D0   D9
9588 : FA AE 90 95 9A 4C 55 95   3D
9590 : 2D 2D 2D 2D 2D 2D 2D C9   C9
9598 : 53 F0 0B C9 30 F0 22 C9   06
95A0 : 31 F0 37 4C 08 AF 20 73   06
95A8 : 00 20 B6 95 8D 5C 96 20   6F
95B0 : B6 95 8D 5D 96 60 20 FD   29
95B8 : AE 20 9E B7 8A 18 69 31   86
95C0 : 60 20 73 00 20 7A 91 AD   85
95C8 : 57 96 8D 11 D0 AD 59 96   FD
95D0 : 8D 18 D0 AD 5B 96 8D 00   F4
95D8 : DD 60 20 73 00 AD 11 D0   AF
95E0 : 29 20 F0 38 78 AD 11 D0   37
95E8 : 29 7F 8D 57 96 8D 11 D0   DB
95F0 : AD 18 D0 8D 59 96 AD 00   90
95F8 : DD 8D 5B 96 A9 81 8D 1A   57
9600 : D0 AD 5C 96 8D 12 D0 A9   91
9608 : 1D 8D 14 03 A9 96 8D 15   01
9610 : 03 A9 80 8D 5F 96 A9 01   0D
9618 : 8D 5E 96 58 60 AD 19 D0   FE
9620 : 8D 19 D0 30 07 AD 0D DC   40
9628 : 58 4C 31 EA AE 5E 96 F0   6A
9630 : 04 A2 00 F0 02 A2 01 8E   FA
9638 : 5E 96 BD 56 96 8D 11 D0   D7
9640 : BD 58 96 8D 18 D0 BD 5A   34
9648 : 96 8D 00 DD BD 5C 96 8D   95
9650 : 12 D0 58 4C 81 EA 1B 00   46
9658 : 15 00 97 00 FA E9 00 00   52
9660 : AD 18 D0 8D D7 94 A9 71   AB
9668 : 8D 08 03 A9 96 8D 09 03   EF
9670 : 60 20 73 00 08 C9 5C F0   DF
9678 : 04 28 4C E7 A7 28 20 73   C3
9680 : 00 A2 0F DD A9 96 F0 06   70
9688 : CA D0 F8 4C 08 AF 8A 0A   BE
9690 : AA BD B7 96 8D A2 96 E8   F4
9698 : BD B7 96 8D A3 96 20 73   DE
96A0 : 00 20 00 00 20 79 00 4C   17
96A8 : AE A7 51 49 4E 4D 48 56   C4
96B0 : 43 45 4B 42 52 53 44 50   22
96B8 : 4C 11 9C 97 95 7C 90 0E   42
96C0 : 91 4A 90 D8 94 DC 90 8C   41
96C8 : 90 31 98 A0 97 48 97 CB   DD
96D0 : 94 C5 94 94 91 34 92 93   2B
96D8 : 0D 20 3C 3C 20 48 49 47   84
96E0 : 48 2D 53 50 45 45 44 2D   88
96E8 : 47 52 41 46 49 4B 20 20   21
96F0 : 28 57 29 20 4D 41 52 2E   97
96F8 : 20 31 39 38 36 20 3E 3E   E0
9700 : 0D 0D 20 3C 3C 20 20 20   A9
9708 : 20 20 20 42 59 20 20 57   4E
9710 : 4F 4C 46 47 41 4E 47 20   E4
9718 : 4C 4F 48 57 41 53 53 45   8F
9720 : 52 20 20 20 20 20 20 3E   8E
9728 : 3E 0D 0D 00 20 4C 91 8E   F8
9730 : 98 97 8C 99 97 8D 9A 97   6A
9738 : 20 56 91 8E 9B 97 8C 9C   9B
9740 : 97 8D 9D 97 20 8F 94 60   8A
9748 : 20 2C 97 AD 98 97 85 5C   2F
9750 : 20 36 91 20 40 92 AE 9B   7E
9758 : 97 AC 99 97 AD 9A 97 86   BA
9760 : 5C 84 5A 85 5B 20 40 92   22
9768 : AE 9B 97 AC 9C 97 AD 9D   D8
9770 : 97 86 59 84 57 85 58 AC   8E
9778 : 99 97 AD 9A 97 86 5C 84   C4
9780 : 5A 85 5B 20 40 92 AE 98   FC
9788 : 97 AC 9C 97 AD 9D 97 86   C3
9790 : 5C 84 5A 85 5B 4C 40 92   B4
9798 : 2D 2D 2D 2D 2D 2D 2D 2D   98
97A0 : 20 4C 91 20 56 91 20 8F   E0
97A8 : 94 20 36 91 A5 5C C5 59   13
97B0 : B0 07 A6 59 86 5C 85 59   CD
97B8 : 8A 38 E5 59 85 AC A5 58   08
97C0 : C5 5B 90 18 D0 06 A5 57   DC
97C8 : C5 5A 90 10 A6 57 A4 5A   4D
97D0 : 84 57 86 5A A6 58 A4 5B   63
97D8 : 84 58 86 5B 38 A5 5A 8D   CB
97E0 : 9E 97 E5 57 8D 98 97 A5   F5
97E8 : 5B 8D 9F 97 E5 58 8D 99   6F
97F0 : 97 A2 BD A0 93 8E 91 93   77
97F8 : 8C 92 93 E6 AC A5 59 85   F7
9800 : 5C A9 01 85 60 A9 00 85   80
9808 : 5D 85 FE 85 5F 85 5E AD   8F
9810 : 98 97 85 A7 AD 99 97 85   DB
9818 : A8 AD 9E 97 85 5A AD 9F   52
9820 : 97 85 5B 20 F0 92 E6 59   47
9828 : A5 59 85 5C C6 AC D0 D1   1F
9830 : 60 20 4C 91 8E 8E 9A 8C   C6
9838 : 8C 9A 8D 8D 9A 20 8F 94   38
9840 : 20 06 91 8D 90 9A 20 06   E4
9848 : 91 8D 91 9A 20 36 91 18   82
9850 : A5 57 6D 90 9A 8D 4C 9A   8B
9858 : 8D 4D 9A A5 58 69 00 8D   D3
9860 : 50 9A 8D 51 9A 38 A5 57   3C
9868 : ED 90 9A 8D 4E 9A 8D 4F   84
9870 : 9A A5 58 E9 00 8D 52 9A   1B
9878 : 8D 53 9A A5 59 8D 54 9A   93
9880 : 8D 55 9A 8D 56 9A 8D 57   2F
9888 : 9A A9 08 8D A0 9A A9 00   30
9890 : 8D 8F 9A 8D 58 9A 8D 59   80
9898 : 9A 8D 5A 9A 8D 5B 9A AD   5C
98A0 : 90 9A 8D 95 9A AE A0 9A   6A
98A8 : BD 6B 9A 8D 92 9A BD 73   4F
98B0 : 9A 8D 93 9A 20 0A 9A 18   36
98B8 : AD 8C 9A 6D 98 9A 8D 5C   4D
98C0 : 9A 8D 5D 9A AD 8D 9A 69   50
98C8 : 00 8D 60 9A 8D 61 9A 38   B9
98D0 : AD 8C 9A ED 98 9A 8D 5E   79
98D8 : 9A 8D 5F 9A AD 8D 9A E9   E9
98E0 : 00 8D 62 9A 8D 63 9A AD   4C
98E8 : 91 9A 8D 95 9A BD 7B 9A   97
98F0 : 8D 92 9A BD 83 9A 8D 93   8F
98F8 : 9A 20 0A 9A 18 AD 8E 9A   D7
9900 : 6D 98 9A 8D 64 9A 8D 67   32
9908 : 9A AD 8F 9A 69 00 8D 68   4E
9910 : 9A 8D 6B 9A 38 AD 8E 9A   FF
9918 : ED 98 9A 8D 65 9A 8D 66   D8
9920 : 9A AD 8F 9A E9 00 8D 69   70
9928 : 9A 8D 6A 9A A9 04 8D A1   AB
9930 : 9A AE A1 9A BD 4B 9A 85   89
9938 : 57 BD 4F 9A 85 58 BD 53   4E
9940 : 9A 85 59 BD 57 9A 8D 9D   67
9948 : 9A BD 5B 9A 85 5A BD 5F   CC
9950 : 9A 85 5B BD 63 9A 85 5C   15
9958 : BD 67 9A 8D 9E 9A 20 A3   A8
9960 : 9A CE A1 9A D0 CB A2 10   33
9968 : BD 5B 9A 9D 4B 9A CA D0   83
9970 : F7 CE A0 9A F0 03 4C 9F   E1
9978 : 98 20 D4 99 AD 58 9A 8D   AC
9980 : 9E 9A AD 54 9A AE 4C 9A   E7
9988 : AC 50 9A 20 CA 99 20 D4   AB
9990 : 99 AD 5B 9A 8D 9E 9A AD   BE
9998 : 57 9A AE 4F 9A AC 53 9A   63
99A0 : 20 CA 99 20 EF 99 AD 59   C5
99A8 : 9A 8D 9E 9A AD 55 9A AE   51
99B0 : 4D 9A AC 51 9A 20 CA 99   A9
99B8 : 20 EF 99 AD 5A 9A 8D 9E   DA
99C0 : 9A AD 56 9A AE 4E 9A AC   3B
99C8 : 52 9A 85 5C 86 5A 84 5B   58
99D0 : 20 A3 9A 60 AE 8C 9A AC   88
99D8 : 8D 9A 86 57 84 58 18 AD   06
99E0 : 8E 9A 6D 91 9A 85 59 A9   D7
99E8 : 00 69 00 8D 9D 9A 60 AE   DC
99F0 : 8C 9A AC 8D 9A 86 57 84   EA
99F8 : 58 38 AD 8E 9A ED 91 9A   3E
9A00 : 85 59 A9 00 E9 00 8D 9D   AC
9A08 : 9A 60 A9 00 8D 96 9A 8D   50
9A10 : 97 9A 8D 98 9A 8D 94 9A   08
9A18 : AD 95 9A F0 2D 4E 95 9A   25
9A20 : 90 1C 18 AD 96 9A 6D 92   93
9A28 : 9A 8D 96 9A AD 97 9A 6D   5F
9A30 : 93 9A 8D 97 9A AD 98 9A   15
9A38 : 6D 94 9A 8D 98 9A 0E 92   03
9A40 : 9A 2E 93 9A 2E 94 9A 4C   B4
9A48 : 18 9A 60 00 00 00 00 00   C6
9A50 : 00 00 00 00 00 00 00 00   51
9A58 : 00 00 00 00 00 00 00 00   59
9A60 : 00 00 00 00 00 00 00 00   61
9A68 : 00 00 00 00 74 8F 00 8D   47
9A70 : 1B B3 90 1C 2C 57 80 A4   D5
9A78 : C4 DD F0 FC 1C 90 B3 1B   52
9A80 : 8D 00 8F 74 FC F0 DD C4   D8
9A88 : A4 80 57 2C 00 00 00 00   C8
9A90 : 00 00 00 00 00 00 00 00   91
9A98 : 00 00 00 00 00 00 00 00   99
9AA0 : 00 00 00 A9 00 8D 9F 9A   F6
9AA8 : A6 57 A4 58 20 FB 9B 90   9F
9AB0 : 0A AD 9F 9A 09 80 8D 9F   D6
9AB8 : 9A D0 0A A6 59 AC 9D 9A   B8
9AC0 : 20 09 9C B0 EC A6 5A A4   59
9AC8 : 5B 20 FB 9B 90 0A AD 9F   F5
9AD0 : 9A 09 40 8D 9F 9A D0 0A   D7
9AD8 : A6 5C AC 9E 9A 20 09 9C   B3
9AE0 : B0 EC AD 9F 9A D0 03 4C   3A
9AE8 : 40 92 C9 C0 D0 01 60 AD   EE
9AF0 : 9F 9A C9 40 F0 24 A6 57   D0
9AF8 : A4 5A 86 5A 84 57 A6 59   07
9B00 : A4 5C 86 5C 84 59 A6 58   5E
9B08 : A4 5B 86 5B 84 58 AE 9D   68
9B10 : 9A AC 9E 9A 8E 9E 9A 8C   5D
9B18 : 9D 9A A5 57 48 A5 58 48   FA
9B20 : A5 59 48 18 A5 57 65 5A   E6
9B28 : 8D 99 9A A5 58 65 5B 18   2B
9B30 : 10 01 38 6A 8D 9A 9A 6E   11
9B38 : 99 9A 90 16 AD 9A 9A 10   3F
9B40 : 11 18 AD 99 9A 69 01 8D   10
9B48 : 99 9A AD 9A 9A 69 00 8D   FD
9B50 : 9A 9A 18 A5 59 65 5C 8D   3F
9B58 : 9B 9A AD 9D 9A 6D 9E 9A   24
9B60 : 18 10 01 38 6A 8D 9C 9A   82
9B68 : 6E 9B 9A 90 16 AD 9C 9A   D3
9B70 : 10 11 18 AD 9B 9A 69 01   FB
9B78 : 8D 9B 9A AD 9C 9A 69 00   73
9B80 : 8D 9C 9A AE 99 9A AC 9A   2E
9B88 : 9A 20 FB 9B B0 39 AE 9B   6B
9B90 : 9A AC 9C 9A 20 09 9C B0   19
9B98 : 2E AD 9B 9A F0 1A C9 C7   6E
9BA0 : F0 16 AD 9A 9A 0D 99 9A   08
9BA8 : F0 0E AD 9A 9A C9 01 D0   FC
9BB0 : 1C AD 99 9A C9 3F D0 15   60
9BB8 : 20 E5 9B 68 85 59 68 85   8F
9BC0 : 58 68 85 57 4C 40 92 20   EA
9BC8 : E5 9B 4C 23 9B AE 99 9A   BD
9BD0 : AC 9A 9A 86 57 84 58 AE   99
9BD8 : 9B 9A AC 9C 9A 86 59 8C   DB
9BE0 : 9D 9A 4C 23 9B AE 99 9A   0D
9BE8 : AC 9A 9A 86 5A 84 5B AE   ED
9BF0 : 9B 9A AC 9C 9A 86 5C 8C   FF
9BF8 : 9E 9A 60 18 98 F0 07 C9   BF
9C00 : 01 D0 04 8A C9 40 60 38   4C
9C08 : 60 18 98 D0 FA 8A C9 C8   71
9C10 : 60 C9 41 D0 04 A9 31 D0   B3
9C18 : 09 C9 4F F0 03 4C 08 AF   0A
9C20 : A9 11 8D 48 9C 20 73 00   57
9C28 : A9 00 8D 57 00 8D 5A 00   F5
9C30 : A9 A0 8D 58 00 A9 E0 8D   84
9C38 : 5B 00 78 A5 01 48 A9 35   C9
9C40 : 85 01 A0 00 A2 20 B1 57   0F
9C48 : 31 5A 91 FB C8 D0 F7 E6   4B
9C50 : 58 E6 5B EE FC 00 CA D0   6D
9C58 : ED 68 85 01 58 4C 23 91   92
9C60 : 00                        C1
Listing 1. Das MSE-Listing von »High-Speed-Grafik«. Für seine Leistung ist das Programm erstaunlich kurz.
|
10 \h,0:\e,0:i=10:j=10:poke 53280,0
20 \c,0,16*j:poke 53280,i
30 forx=5to165stepi:\k,159,99,x,165-x,1:nextx
40 forx=5to165stepi:\k,159,99,x,165-x,0:nextx
50 i=int(rnd(ti)*20)+1:j=int(rnd(ti)*14)+1
55 \c,0,16*j:poke 53280,i
60 forx=0to149 step10+i
70 fory=189 to 0 step-10-i
80 \l,x,y,310-x,190-y,1
90 nexty,x
92 fory=189 to 0 step-10-i
94 forx=0to149 step10+i
96 \l,x,y,310-x,190-y,0
98 nextx,y
99 i=int(rnd(ti)*20)+1:j=int(rnd(ti)*14)+1
100 \e,0:goto 20
 10 £H,0:£E,0:I=10:J=10:POKE 53280,0 
 20 £C,0,16*J:POKE 53280,I 
 30 FOR X=5 TO165STEP I:£K,159,99,X,165-X,1:NEXT X 
 40 FOR X=5 TO165STEP I:£K,159,99,X,165-X,0:NEXT X 
 50 I=INT (RND (TI)*20)+1:J=INT (RND (TI)*14)+1 
 55 £C,0,16*J:POKE 53280,I 
 60 FOR X=0 TO149 STEP 10+I 
 70 FOR Y=189  TO 0 STEP -10-I 
 80 £L,X,Y,310-X,190-Y,1 
 90 NEXT Y,X 
 92 FOR Y=189  TO 0 STEP -10-I 
 94 FOR X=0 TO149 STEP 10+I 
 96 £L,X,Y,310-X,190-Y,0 
 98 NEXT X,Y 
 99 I=INT (RND (TI)*20)+1:J=INT (RND (TI)*14)+1 
 100 £E,0:GOTO 20 
Listing 2. Demonstrationsprogramm für die schnellen Linien- und Kreisroutinen von »High-Speed-Grafik«.
|
4 :\e,0:\h,0:\m,0:y=100:x1=69:x2=249:z=1
5 print"{clr}"
6 print:print"mit den tasten 1-4 werden die demos"
7 print"eingeschaltet"
8 print:print"mit beliebigen tasten wieder             ausgeschaltet"
10 :\n
11 geta$:a=val(a$)
12 onagoto20,100,200,300
13 goto11
20 :\e,0:\h,0
25 for i=1 to 90 step1
30 :\k,x1+i,y,i,i,z
35 :\k,x2-i,y,i,i,z
40 next
60 geta$:ifa$<>""then10
70 z=1-z:goto25
100 :x=159:y=100:z=1:\e,0:\h,0
105 :x=159:y=100:z=1
110 fori=1to99 step2
120 :\k,x,y,i*1.61,i,z
130 next
140 geta$:ifa$<>""then10
160 z=1-z:goto110
200 :x=159:y=100:z=1:\e,0:\h,0
210 fori=1to90 step10
220 :\k,x,y,i,i,z
230 next
240 geta$:ifa$<>""then10
260 z=1-z:goto210
300 :\e,0:\h,0
305 foryy=34to160 step25
310 forxx=34to290 step25
320 for r=1to20 step2
330 :\k,xx,yy,r,r,1
340 next r,xx,yy
350 geta$:ifa$<>""then10
360 goto 350
  4 :£E,0:£H,0:£M,0:Y=100:X1=69:X2=249:Z=1 
  5 PRINT"{CLR}" 
  6 PRINT:PRINT"MIT DEN TASTEN 1-4 WERDEN DIE DEMOS" 
  7 PRINT"EINGESCHALTET" 
  8 PRINT:PRINT"MIT BELIEBIGEN TASTEN WIEDER{13SPACE}AUSGESCHALTET" 
 10 :£N 
 11 GET A$:A=VAL (A$) 
 12 ON AGOTO 20,100,200,300 
 13 GOTO 11 
 20 :£E,0:£H,0 
 25 FOR I=1  TO 90 STEP 1 
 30 :£K,X1+I,Y,I,I,Z 
 35 :£K,X2-I,Y,I,I,Z 
 40 NEXT 
 60 GET A$:IF A$<>"" THEN10 
 70 Z=1-Z:GOTO 25 
 100 :X=159:Y=100:Z=1:£E,0:£H,0 
 105 :X=159:Y=100:Z=1 
 110 FOR I=1 TO99 STEP 2 
 120 :£K,X,Y,I*1.61,I,Z 
 130 NEXT 
 140 GET A$:IF A$<>"" THEN10 
 160 Z=1-Z:GOTO 110 
 200 :X=159:Y=100:Z=1:£E,0:£H,0 
 210 FOR I=1 TO90 STEP 10 
 220 :£K,X,Y,I,I,Z 
 230 NEXT 
 240 GET A$:IF A$<>"" THEN10 
 260 Z=1-Z:GOTO 210 
 300 :£E,0:£H,0 
 305 FOR YY=34 TO160 STEP 25 
 310 FOR XX=34 TO290 STEP 25 
 320 FOR R=1 TO20 STEP 2 
 330 :£K,XX,YY,R,R,1 
 340 NEXT R,XX,YY 
 350 GET A$:IF A$<>"" THEN10 
 360 GOTO 350 
Listing 3. Programm mit vier verschiedenen Kreisdemonstrationen. Ein Beispiel zeigt das Bild neben der Überschrift.
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →