VC 20
Grafik

Mini-Grafik VC 20

Diese kleine Grafik-Hilfe läuft auf der Grundversion des VC 20.

Die »Mini-Grafik« erzeugt ein kleines Grafik-Fenster

Wie der Name schon sagt, handelt es sich um eine Grafik-Erweiterung im kleinen Stil. Damit wird Grafik-Programmierung auch ohne große Speichererweiterung oder (teures) Grafik-Modul möglich. Da in Maschinensprache geschrieben, ist diese Basic-Erweiterung überdies sehr schnell. Minutenlange Wartezeiten auf die Fertigstellung einer Bildschirmgrafik entfallen damit.

Zur Anwendung der Grafikhilfe: Man nehme das Programm-Listing, tippe es in den VC 20 und erfreue sich folgender Befehle und Funktionen:

@ONschaltet den Bildschirm auf Grafikdarstellung um, wobei die momentane Zeichenfarbe zur Plotfarbe wird
@CLRlöscht den Grafik-Speicher
@f,x,ysetzt (f≠0) oder löscht (f=0) einen Punkt mit der Koordinate (x,y). Für f gilt: 0 < = f < 256, für x wie für y gilt: 0 < = x < 128. f, x und y können beliebige Variable oder Formeln sein
@(x,y)ist eine Funktion, welche testet, ob der Punkt mit der Koordinate (x,y) gesetzt (Ergebnis = —1) oder nicht gesetzt(Ergebnis = 0) ist. Beispiel: »PRINT @ (5,7)«
@RETURNschaltet den Bildschirm schließlich wieder auf normalen Print-Modus

Das Programm implementiert sich nach dem Start des einzugebenden Basic-Laders (Listing 1) von selbst und ist absolut absturzsicher. Es hat, man lese und staune, eine Länge von nur 256 Byte. Für eine Auflösungvon 128 mal 128 Punkten sind 2 KByte RAM unerläßlich. Somit verbleiben in der Grundversion 1279 Byte und mit 3 KByte Erweiterung sage und schreibe 4351 Byte Basic-RAM. Zugegeben, das ist nicht die Welt, aber für den Anfang durchaus ausreichend, und dafür wurde die Routine schließlich konzipiert. Überdies wird der Kassetten-Puffer nicht benutzt, und man kann von einem Programm aus mit »LOAD« ein weiteres nachladen. Listing 2 ist ein kleines Demo-Programm, um die Fähigkeiten der »Mini-Grafik« einmal vorzuführen (siehe Bild).

(Wolfgang Wirth/ev)
100 rem mg10 by w.wirth
105 poke55,0:poke56,21:clr:poke648,22
110 sys58651:poke36879,14:print"{wht}"
115 deffnb4(x)=x-48+(x>57)*7
120 fori=0to255:readby$:print"{home}"i,by$
125 by=16*fnb4(asc(by$))+fnb4(asc(right$(by$,1)))
130 cs=cs+by:poke5376+i,by:next
135 fori=0to3:readby:cs=cs+by
140 poke6140+i,by:next
145 ifcs=29186thensys5389:sys58238
150 print"{clr}{down} Checksummenfehler !"
155 print"{down} Datablock pruefen .":end
160 data19,15,83,c4,7c,c5,1a,c7,29,15,ef
165 data15,00,a2,0b,bd,00,15,9d,00,03,ca
170 data10,f7,60,8a,48,ad,05,90,c9,de,d0
175 data03,20,18,e5,68,4c,3b,c4,20,73,00
180 data08,c9,40,f0,04,28,4c,e7,c7,28,20
185 data3c,15,4c,ae,c7,20,73,00,c9,91,d0
190 data55,20,73,00,a2,04,bd,fb,17,9d,01
195 data90,ca,d0,f7,ad,86,02,9d,00,96,e8
200 datad0,fa,a9,7f,aa,9d,00,16,e9,08,e9
205 data00,29,7f,ca,10,f4,60,20,9e,d7,8a
210 data10,f9,4c,48,d2,a2,00,86,fd,20,6a
215 data15,48,4a,4a,4a,4a,66,fd,09,18,85
220 datafe,20,fd,ce,20,6a,15,a8,68,29,07
225 dataaa,a9,00,38,6a,ca,10,fc,60,c9,9c
230 datad0,19,20,73,00,a2,18,86,23,a0,00
235 data84,22,98,91,22,c8,d0,fb,e6,23,e8
240 datae0,20,90,f4,60,c9,8e,d0,06,20,73
245 data00,4c,18,e5,20,6a,15,08,20,fd,ce
250 data20,73,15,28,f0,04,11,fd,d0,04,49
255 dataff,31,fd,91,fd,60,20,73,00,20,fa
260 datace,20,73,15,31,fd,f0,02,a9,01,20
265 data94,d7,20,b4,df,4c,f7,ce,a9,00,85
270 data0d,20,73,00,c9,40,f0,dd,20,79,00
275 data4c,8d,ce,144,17,0,222
Listing 1. »Mini-Grafik VC 20« (Basic-Lader)
10 @on:@clr:dim p(127)
20 for i=0 to 127
30 @1,0,i
40 next
50 for i=1 to 127
60 @1,i,64
70 next
80 for x=0 to 127
90 @1,x,(1-sin(x*~/64))*63.5
95 @1,x,(1-cos(x*~/64))*63.5
100 next
180 for x=0 to 127
190 @1,x,(sin(x*~/16))*(127-x)/2+63.5
200 next
250 for i=1 to 127
260 @1,i,0
265 @0,0,i
270 next
280 rem
281 y=rnd(ti)^2*128
285 p(y)=p(y)+1 :if p(y)>127 then400
286 @1,y,p(y)
300 goto280
400 for i=6144 to 8191
420 pokei,255-peek(i):next
900 @return
Listing 2. Demo-Programm zur »Mini-Grafik«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →