VC 20
Mini-GBasic

Mini-GBasic für den VC 20

Dieses Programm für VC 20 mit mindestens 16 KByte-Speichererweiterung implementiert zehn neue Befehle, die sich auf die Bildschirmdarstellung und die Grafik des VC 20 beziehen.

Mini-GBasic ist eine Befehlserweiterung, die schnelle Grafik-Routinen in Maschinensprache beinhaltet. Mini-GBasic bietet 10 neue Befehle zum Beispiel zum Setzen oder Löschen eines Punktes oder zum Verbinden zweier beliebiger Punkte. Außerdem wird ein Scrollen des Bildschirmes in alle vier Richtungen ermöglicht, was bei Spielen sehr nützlich sein kann. Mini-GBasic zeichnet sich dadurch aus, daß die neuen Befehle voll implementiert sind, so daß auch nach einem IF…THEN-Statement kein Doppelpunkt gesetzt werden muß, wenn einer der neuen Befehle folgt (dies ist bei, mir aus anderen Computerzeitschriften bekannten, ähnlichen Programmen leider nicht der Fall).

Zu erwähnen ist noch, daß man bei Mini-GBasic für die Befehle DRAW beziehungsweise CDRAW und SET beziehungsweise RESET benötigte Parameter, wie bei Basic-Funktionen, in Klammern eingeschlossen übergibt (dabei wird zur Übernahme beliebiger Ausdrücke das ROM-Unterprogramm GET-BYTE ab Adresse $ D79B verwendet).

Zur Fehlerbehandlung

Das Programm gibt die im »normalen« Basic vorhandenen Fehlermeldungen »illegal quantity error in…« bei für die Grafik-Befehle nicht definierten Parametern und »syntax error in…« bei fehlenden Klammern und falsch eingegebenen Befehlsworten, die immer ausgeschrieben werden müssen, aus.

Zu den allgemeinen Möglichkeiten des Programmes ist noch zu sagen, daß es mit 29568 (x-Achse:0-167; y-Achse:0-175) im 16x8-Byte-Modus arbeitet.

Wichtig: Falls Sie das mit dem »Basic-Lader« geSAVEte Maschinenprogramm testen wollen, müssen Sie nach dem Ladevorgang erst einen System-Reset mit SYS 64802 durchführen und danach das eigentliche Maschinenprogramm mit SYS 9794 starten (das Programm setzt automatisch den Basic-Start herauf und führt den Befehl »New« aus).

Zur Eingabe des Programms

Vor allen Befehlen muß ein Ausrufezeichen, das Erkennungsmerkmal für den Computer, daß jetzt einer der neuen Befehle folgt, stehen, da sonst eine »Syntax error«-Meldung ausgegeben wird. Nach dem Ausrufezeichen folgt der neue Befehl voll ausgeschrieben.

Die Befehle im einzelnen

!GMODE: Umschalten in den Grafikmodus und Löschen des Zeichensatzes.
!TMODE: Umschalten in den Textmodus und Löschen des Bildschirmes.
!DSCROLL: Scrollt den Bildschirm (im Textmodus) um eine Zeichenposition nach unten.
!USCROLL: Scrollt den Bildschirm (im Textmodus) um eine Zeichenposition nach oben.
!LSCROLL: Scrollt den Bildschirm (im Textmodus) um eine Zeichenpostition nach links.
!RSCROLL: Scrollt den Bildschirm (im Textmodus) um eine Zeichenposition nach rechts.
!SET(x,y): Setzt einen Punkt (im Grafikmodus) auf die Koordinate (x,y).
!RESET (x,y): Löscht einen Punkt (im Grafikmodus) auf der Koordinate (x,y,).
!DRAW (x,y): Zieht eine Linie (im Grafikmodus) von der letzten durch !SET,!RESET,!DRAW oder !CDRAW gesetzten Koordinate zur Koordinate (x,y).
!CDRAW (x,y): Löscht eine Linie (im Grafikmodus) von der letzten durch !SET,!RESET,!DRAW oder !CDRAW gesetzten Koordinate zur Koordinate (x,y)
(x,y): x = beliebiger numerischer- oder String-Ausdruck mit dem Wert 0-167
y = beliebiger numerischer- oder String-Ausdruck mit dem Wert 0-175
!CLEAR: Löscht den Grafik-Bildschirm

Anmerkung zu !GMODE:

Die Farbe, in der die Punkte auf den Bildschirm gebracht werden, läßt sich verändern, indem man den Inhalt der Speicherzelle 8224 (dezimal) mit dem gewünschten Farbcode belegt, bevor der Befehl !GMODE, der dann den Farbcode in den Farbspeicher bringt, ausgeführt wird.

Vorsicht ist bei der Benutzung der Grafik im Direktmodus des Computers geboten. Da der neue Zeichensatz teilweise im Bildschirm-RAM-Bereich liegt (das ist notwendig um mit der hohen Auflösung von 168 x 176 Punkten arbeiten zu können), ist es möglich, mit dem Cursor in den ersten 32 neu definierten 16 x 8 Bit Zeichen »herumzufahren«.

Für diejenigen, die selber in Maschinensprache programmieren, ist hier noch eine Liste mit den Einsprungadressen der wichtigsten Routinen und der Lage der Befehlswort-DATAs abgedruckt (Tabellen 1 und 2). Zur Benutzung der Routinen SET/RESET und DRAW/CDRAW sei noch angemerkt, daß ein Einsprung in die jeweilige Routine mit gesetztem Carry-Flag das Setzen eines Punktes beziehungsweise das Zeichnen einer Linie und der Einsprung mit gelöschtem Carry-Flag das Löschen eines Punktes oder einer Linie bewirkt.

(Jürgen Skerhut / ev)

SET+RESET: x1,y1
DRAW + CDRAW: x2,y2

Adresse
Variable
$033C
x1
$033D
y1
$0359
x2
$035A
y2
Tabelle 1. Übergabe der Parameter für SET+RESET und DRAW+CDRAW.
Adresse in HEX
$1100-2000 Zeichenspeicher
$2000 GMODE
$2028 CLEAR
$2050 TMODE
$20CA SET+RESET
$21C0 DSCROLL
$2250 LSCROLL
$22A0 RSCROLL
$22E5 INITIAL
$2300 sucht Ausrufezeichen im Basic-Text
$2312 DECODE
$2378 neue IF-THEN Routine
$23BA-23FF DATA: Befehlswort
$25BA-25BF DATA: Adressen der Routinen
Tabelle 2. Routinen und DATA-Felder beim Mini-GBasic
0 rem  mini gbasic
1 rem
2 rem juergen skerhut
3 rem donatusstr.5
4 rem 5210 troisdorf
5 rem
6 rem
7 rem
22 data 32,95,229,169
24 data 151,141,3,144
26 data 169,21,141
28 data 2,144,169,204
30 data 141,5,144,169
32 data 14,141,0,144
34 data 162,0,160,16
36 data 152,157,0,16
38 data 169,6,157,0
40 data 148,232,200
42 data 208,243,169
44 data 17,160,0,133
46 data 1,132,0,152
48 data 145,0,24,169
50 data 1,101,0,133
52 data 0,169,0,101
54 data 1,133,1,201
56 data 32,208,236
58 data 76,174,199
60 data 234,234,234
62 data 234,234,234
64 data 234,234,234
66 data 169,12,141
68 data 0,144,169,22
70 data 141,2,144,169
72 data 174,141,3,144
74 data 169,192,141
76 data 5,144,32,95
78 data 229,96,32,80
80 data 32,76,174,199
82 data 234,234,169
84 data 0,141,65,3
86 data 141,66,3,141
88 data 67,3,162,8
90 data 78,64,3,144
92 data 19,24,173,62
94 data 3,109,66,3
96 data 141,66,3,173
98 data 63,3,109,67
100 data 3,141,67,3
102 data 78,67,3,110
104 data 66,3,110,65
106 data 3,202,208
108 data 220,96,234
110 data 234,234,56
112 data 173,68,3,237
114 data 69,3,141,70
116 data 3,96,24,173
118 data 71,3,101,0
120 data 133,0,173
122 data 72,3,101,1
124 data 133,1,96,169
126 data 0,133,0,133
128 data 1,96,234,234
130 data 234,8,169
132 data 0,162,0,160
134 data 0,32,192,32
136 data 169,80,141
138 data 62,3,169,1
140 data 141,63,3,173
142 data 61,3,41,240
144 data 74,74,74,74
146 data 141,64,3,32
148 data 112,32,173
150 data 65,3,141,71
152 data 3,173,66,3
154 data 141,72,3,32
156 data 176,32,169
158 data 16,141,64
160 data 3,173,60,3
162 data 41,248,74
164 data 74,74,141
166 data 62,3,169,0
168 data 141,63,3,32
170 data 112,32,173
172 data 65,3,141,71
174 data 3,173,66,3
176 data 141,72,3,32
178 data 176,32,173
180 data 61,3,41,15
182 data 141,71,3,169
184 data 0,141,72,3
186 data 32,176,32
188 data 169,7,141
190 data 68,3,173,60
192 data 3,41,7,141
194 data 69,3,32,165
196 data 32,169,17
198 data 141,72,3,169
200 data 0,141,71,3
202 data 32,176,32
204 data 174,70,3,189
206 data 117,33,141
208 data 73,3,165,1
210 data 201,32,144
212 data 2,40,96,160
214 data 0,173,73,3
216 data 40,176,7,73
218 data 255,49,0,145
220 data 0,96,17,0
222 data 145,0,96,1
224 data 2,4,8,16,32
226 data 64,128,234
228 data 234,169,90
230 data 133,43,169
232 data 38,133,44
234 data 169,0,141
236 data 89,38,32,68
238 data 198,96,165
240 data 159,133,164
242 data 165,1,133
244 data 166,165,158
246 data 133,163,133
248 data 165,56,233
250 data 22,133,158
252 data 133,0,165
254 data 159,233,0
256 data 133,159,24
258 data 105,132,133
260 data 1,96,234,234
262 data 234,234,169
264 data 32,160,21
266 data 145,158,136
268 data 16,251,96
270 data 234,169,17
272 data 133,159,133
274 data 164,169,149
276 data 133,1,133
278 data 166,169,206
280 data 133,158,133
282 data 0,169,228
284 data 133,163,133
286 data 165,234,160
288 data 21,177,158
290 data 145,163,177
292 data 0,145,165
294 data 136,16,245
296 data 32,144,33
298 data 165,159,201
300 data 15,208,234
302 data 169,16,133
304 data 159,169,0
306 data 133,158,32
308 data 181,33,76
310 data 174,199,234
312 data 234,234,8
314 data 24,165,158
316 data 105,22,133
318 data 158,133,0
320 data 169,0,101
322 data 159,133,159
324 data 133,164,24
326 data 169,132,101
328 data 159,133,1
330 data 133,166,40
332 data 144,8,164
334 data 158,136,132
336 data 163,132,165
338 data 96,164,158
340 data 200,132,163
342 data 132,165,96
344 data 234,234,160
346 data 0,162,32,138
348 data 145,158,165
350 data 158,197,163
352 data 240,16,24
354 data 169,22,101
356 data 158,133,158
358 data 169,0,101
360 data 159,133,159
362 data 76,52,34,96
364 data 234,234,169
366 data 16,133,159
368 data 133,164,169
370 data 148,133,1
372 data 133,166,169
374 data 0,133,163
376 data 133,165,169
378 data 1,133,158
380 data 133,0,234
382 data 160,0,177
384 data 158,145,163
386 data 177,0,145
388 data 165,200,192
390 data 21,208,243
392 data 165,163,201
394 data 228,240,7
396 data 56,32,0,34
398 data 76,105,34
400 data 169,16,133
402 data 159,169,21
404 data 133,158,169
406 data 249,133,163
408 data 32,48,34,76
410 data 174,199,32
412 data 117,233,76
414 data 174,199,234
416 data 234,234,169
418 data 16,133,159
420 data 133,164,169
422 data 148,133,1
424 data 133,166,169
426 data 0,133,158
428 data 133,0,169
430 data 1,133,163
432 data 133,165,234
434 data 160,20,177
436 data 158,145,163
438 data 177,0,145
440 data 165,136,16
442 data 245,165,158
444 data 201,228,240
446 data 7,24,32,0
448 data 34,76,185
450 data 34,169,16
452 data 133,159,169
454 data 0,133,158
456 data 169,228,133
458 data 163,32,48
460 data 34,76,174
462 data 199,169,0
464 data 141,8,3,141
466 data 60,3,141,61
468 data 3,169,35,141
470 data 9,3,141,1
472 data 3,169,169
474 data 141,0,3,76
476 data 127,33,32
478 data 115,0,201
480 data 139,240,110
482 data 201,33,240
484 data 7,32,121,0
486 data 76,231,199
488 data 234,162,0
490 data 142,95,3,32
492 data 115,0,201
494 data 65,144,18
496 data 157,96,3,232
498 data 224,8,208
500 data 241,234,162
502 data 11,76,55,196
504 data 234,234,234
506 data 234,142,94
508 data 3,160,0,162
510 data 0,189,96,3
512 data 217,186,35
514 data 208,10,232
516 data 200,236,94
518 data 3,144,241
520 data 76,97,35,238
522 data 95,3,173,95
524 data 3,201,11,144
526 data 3,76,39,35
528 data 185,186,35
530 data 200,201,33
532 data 208,248,76
534 data 53,35,173
536 data 95,3,10,168
538 data 185,186,37
540 data 141,0,1,185
542 data 187,37,141
544 data 1,1,108,0
546 data 1,32,115,0
548 data 169,199,72
550 data 169,174,72
552 data 32,158,205
554 data 32,121,0,201
556 data 137,240,3
558 data 169,167,32
560 data 255,206,165
562 data 97,208,3,32
564 data 9,201,240
566 data 14,32,121
568 data 0,176,1,76
570 data 160,200,104
572 data 104,32,121
574 data 0,76,3,35
576 data 76,251,200
578 data 138,72,173
580 data 5,144,201
582 data 204,208,3
584 data 32,80,32,104
586 data 170,76,58
588 data 196,71,77
590 data 79,68,69,33
592 data 84,77,79,68
594 data 69,33,68,83
596 data 67,82,79,76
598 data 76,33,85,83
600 data 67,82,79,76
602 data 76,33,76,83
604 data 67,82,79,76
606 data 76,33,82,83
608 data 67,82,79,76
610 data 76,33,83,69
612 data 84,33,82,69
614 data 83,69,84,33
616 data 68,82,65,87
618 data 33,67,68,82
620 data 65,87,33,67
622 data 76,69,65,82
624 data 162,5,169
626 data 0,157,82,3
628 data 202,16,250
630 data 162,23,14
632 data 79,3,46,80
634 data 3,46,81,3
636 data 46,82,3,46
638 data 83,3,46,84
640 data 3,14,85,3
642 data 46,86,3,46
644 data 87,3,56,173
646 data 82,3,237,88
648 data 3,168,173
650 data 83,3,233,0
652 data 141,94,3,173
654 data 84,3,233,0
656 data 144,37,140
658 data 82,3,141,84
660 data 3,173,94,3
662 data 141,83,3,24
664 data 169,1,109
666 data 85,3,141,85
668 data 3,169,0,109
670 data 86,3,141,86
672 data 3,169,0,109
674 data 87,3,141,87
676 data 3,202,16,166
678 data 96,56,185
680 data 80,3,73,255
682 data 105,0,153
684 data 80,3,200,202
686 data 208,242,96
688 data 24,173,85
690 data 3,109,91,3
692 data 141,91,3,173
694 data 86,3,109,92
696 data 3,141,92,3
698 data 173,87,3,109
700 data 93,3,141,93
702 data 3,96,24,169
704 data 128,109,92
706 data 3,169,0,109
708 data 93,3,96,234
710 data 8,32,202,32
712 data 162,1,56,189
714 data 89,3,253,60
716 data 3,8,176,4
718 data 73,255,105
720 data 1,157,76,3
722 data 202,16,236
724 data 13,77,3,208
726 data 4,40,40,40
728 data 96,169,1,141
730 data 78,3,162,2
732 data 169,0,157
734 data 91,3,202,16
736 data 250,173,76
738 data 3,205,77,3
740 data 176,60,169
742 data 106,141,0
744 data 1,169,37,141
746 data 1,1,173,60
748 data 3,141,93,3
750 data 173,76,3,141
752 data 81,3,173,77
754 data 3,141,88,3
756 data 169,0,141
758 data 79,3,141,80
760 data 3,32,0,36
762 data 40,176,7,162
764 data 3,160,5,32
766 data 103,36,40
768 data 176,5,169
770 data 255,141,78
772 data 3,76,89,37
774 data 169,133,141
776 data 0,1,169,37
778 data 141,1,1,173
780 data 61,3,141,93
782 data 3,40,176,5
784 data 169,255,141
786 data 78,3,173,77
788 data 3,141,81,3
790 data 173,76,3,141
792 data 88,3,169,0
794 data 141,79,3,141
796 data 80,3,32,0
798 data 36,40,176
800 data 7,162,3,160
802 data 5,32,103,36
804 data 173,76,3,141
806 data 94,3,76,95
808 data 37,173,77
810 data 3,141,94,3
812 data 108,0,1,206
814 data 94,3,208,248
816 data 76,160,37
818 data 24,173,78
820 data 3,109,61,3
822 data 141,61,3,32
824 data 119,36,32
826 data 148,36,141
828 data 60,3,40,8
830 data 32,202,32
832 data 76,98,37,24
834 data 173,78,3,109
836 data 60,3,141,60
838 data 3,32,119,36
840 data 32,148,36
842 data 141,61,3,40
844 data 8,32,202,32
846 data 76,98,37,173
848 data 89,3,141,60
850 data 3,173,90,3
852 data 141,61,3,40
854 data 32,202,32
856 data 96,32,117
858 data 233,76,234
860 data 199,234,234
862 data 234,0,32,104
864 data 32,192,33
866 data 177,37,80
868 data 34,160,34
870 data 2,38,18,38
872 data 34,38,50,38
874 data 40,32,32,121
876 data 0,201,40,240
878 data 7,201,44,240
880 data 3,76,39,35
882 data 32,155,215
884 data 201,41,208
886 data 3,32,115,0
888 data 138,96,32
890 data 208,37,72
892 data 201,168,176
894 data 10,32,208
896 data 37,201,176
898 data 176,3,168
900 data 104,96,104
902 data 162,14,76
904 data 55,196,32
906 data 234,37,141
908 data 60,3,140,61
910 data 3,56,32,202
912 data 32,76,174
914 data 199,32,234
916 data 37,141,60
918 data 3,140,61,3
920 data 24,32,202
922 data 32,76,174
924 data 199,32,234
926 data 37,141,89
928 data 3,140,90,3
930 data 56,32,161
932 data 36,76,174
934 data 199,32,234
936 data 37,141,89
938 data 3,140,90,3
940 data 24,32,161
942 data 36,76,174
944 data 199,32,91
946 data 228,76,229
948 data 34,234,234
950 data 40,67,41,66
952 data 89,32,74,46
954 data 83,39,56,52
956 data 234,234,234
1000 fori=8192 to 9816:readdc:pokei,dc:s=s+dc:nexti
1010 ifs<>159413 then print"data fehler":end
1040 print"bereit zum absaven ?"
1045 get a$:if a$<>"j" then 1045
1050 poke43,255:poke44,31:poke45,90:poke46,38:save"mini gbasic",1,1
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →