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 dem Eintippen des Basic-Laders wird der Basic-Start mit den Befehlen POKE 9823,0:POKE 43,96:POKE 44,38:NEW heraufgesetzt. Dies ist notwendig, da sich der Basic-Lader sonst selber überschreiben würde.
Nach dem Start des Basic-Laders wird das Maschinenprogramm eingePOKEt und eine Prüfsumme erstellt. Bei fehlerhafter Eingabe der DATAs wird eine Fehlermeldung ausgegeben.
Der Basic-Lader wartet mit Ausgabe der Frage »Bereit zum Absaven?« auf Eingabe der Taste »j«. Danach wird das Maschinenprogramm abgeSAVEt.
Das nach der eben beschriebenen Vorgehensweise geSAVEte Maschinenprogramm kann nun einfach durch Eingabe von »LOAD« an die Stelle geladen werden, an der es vor dem AbSAVEn gestanden hat. Dies wird dadurch erreicht, daß es vorher mit dem Befehl »SAVE "MINI GBASIC", 1,1« ge-SAVEt wurde.
Nach dem Einladen des Maschinenprogrammes muß ein System-Reset durchgeführt werden (SYS64802), wonach die Befehlserweiterung mit SYS 9794 gestartet werden kann. Dieser SYS-Befehl muß auch nach eventuell durchgeführten System-Resets eingegeben werden, da dabei alle Basic-Vektoren zurückgesetzt werden. Nachdem sich die Befehlserweiterung mit »READY« gemeldet hat, können die Befehle benutzt werden.
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