VC 20 + 24 KByte
Tips & Tricks

Betriebssystem-Erweiterung für den VC 20

Hier sind einige Erweiterungen für das Betriebssystem des VC 20, die auf Tastendruck funktionieren, wie zum Beispiel Hardcopy, Find, Relocate, Append und Beep.

Diese nützlichen Routinen werden mit dem Basic-Lader (Listing) ab Adresse $6050 in den Speicher gebracht. Ein voll ausgebauter VC 20 (+24 KByte) ist daher Voraussetzung. Um das Programm in die Tastaturabfrage einzubinden, die alle 60stel Sekunde erfolgt, wird der Zeiger für die Tastaturdecodierung (655,656) abgeändert. Damit dort nicht nach jedem STOP/RESTORE wieder der alte Wert steht, wird auch noch der BRK-Vektor (790,791) abgeändert. Zu alledem dient der SYS-Befehl in Zeile 120. Im einzelnen stehen folgende Erweiterungen zur Verfügung (die Druckroutinen sind für den Epson RX-80 mit VC-Interface):

Dabei ist zu beachten, daß das letzte Zeichen rechts unten nicht gedruckt wird, da sonst der Bildschirm gescrollt würde. Ein Bildschirm-Dump kann jederzeit erfolgen, auch während des Programmablaufs.

FIND durchsucht ein Basic-Programm nach bestimmten Befehlen oder Zeichenfolgen und listet die Zeile, in der sich der gesuchte Begriff befindet. FIND weiter (CTRL L)bedeutet, daß das Programm weiter nach demselben Begriff durchsucht wird. Dabei ist eine Zeichenkette in Anführungszeichen einzugeben. Beispiel: Gesucht wird die Anweisung IF. Eingabe IF. Gesucht wird der String »REIF«. Eingabe »REIF«.

Im folgenden bedeutet »CTRL+Com«, daß die CTRL- und die Commodore-Taste gleichzeitig gedrückt werden.

CTRL+Com R:RELOCATE; rückgängig machen des NEW-Befehls. Diese Routine ist besonders nützlich, wenn ein Reset-Schalter existiert, da bei einem Reset ein Basic-Programm nicht zerstört wird, sondern wie bei NEW nur die ersten beiden Bytes auf Null gesetzt werden. Falls der Computer sich also mal beim Aufruf eines fehlerhaften Maschinenprogramms »aufhängt«, kann nach Reset, SYS 25600 und Drücken von CTRL+Com R ohne Verlust des Basic-Programms weitergemacht werden.

Auch nach einem »LOAD-ERROR« kann nach RELOCATE das falsch geladene Programm gelistet werden.

CTRL+Com S: Kopiert die Zeiger auf den Basic-Programmstart, die Variablen, Arrays und Strings und die ersten 65 Byte des Basic-Programms in den (hoffentlich) geschützten Bereich, in dem sich die Betriebssystemerweiterung befindet.

CTRL+Com+RETURN-Taste: Umkehrfunktion von CTRL+Com S

Falls ein Programm gelöscht und anschließend im Direktmodus mit Variablen gearbeitet wurde, dann ist der Anfang des gelöschten Programms zerstört. Das Programm kann nicht mit RELOCATE repariert werden. Wurde aber vorher zu irgendeinem Zeitpunkt, an dem das zerstörte Programm noch existierte, CTRL+Com S gedrückt, dann steht das Programm nach Betätigen von CTRL+COM+RETURN-Taste wieder mit allen Variablen, Arrays und Strings so zur Verfügung, wie zum Zeitpunkt des Kopierens.

BEEP dient als akustische Rückmeldung der Tastatur, daß eine Taste gedrückt wurde. Ein momentan laufender Sound wird nicht beeinflußt.

CTRL+Com ↑: APPEND. Der Zeiger auf den Basic-Anfang wird auf das Ende des momentanen Programms gesetzt. So können mehrere Basic-Programme aneinandergehängt werden. Dabei wird die Größe des zur Verfügung stehenden Speicherplatzesausgegeben. Durch CTRL+Com -: werden das angehängte und das vorherige Programm verknüpft.

CTRL+Com W: WARTE. »Friert« den Computer ein, bis die RETURN-Taste gedrückt wird. Diese Routine ist vor allem bei LIST nützlich: Das Bildschirm-Scrollen wird verhindert.

Die Funktion der Zusatztasten wird dabei nicht beeinflußt, so daß während dieses Zustands zum Beispiel auch eine Hardcopy angefertigt werden kann.

Soll das Progamm mit der VC1211A-Supererweiterung zusammmenlaufen, dann müssen folgende Änderungen vorgenommen werden:

Nachdem diese Änderungen durchgeführt sind, stimmen natürlich die Prüfsummenabfragen nicht mehr. Es empfiehlt sich daher, das Programm in jedem Falle zunächst einmal probeweise unverändert (und ohne VC 1211A) laufen zu lassen, um eventuelle Tippfehler in den DATA-Zeilen herauszufinden. Danach kann man die Prüfsummenabfragen in den Zeilen 10, 30, 40, 60, 70, 90, 100 und 110 einfach löschen.

(Manfred Weigt/ev)
0 rem betriebssystem-erweiterung
1 rem fuer vc 20 +24 kbyte ram
2 poke55,255:poke56,95:f$="data fehler
9 rem***tasten***
10 ps=0:fort=24656to24938:readd:poket,d:ps=ps+d:next:ifps<>34724thenprintf$:stop
11 data32,211, 96,165,203,197,3,240,54,133,3,173,141,2,201,4,208,48,165,197
12 data201,19,208,3,76,110, 98,201,18,208,7,169,1,133,191,76,212, 98,201,43
13 data208,7,169,0,133,191,76,212, 98,201,42,208,3,76,199, 97,201,21,208,3
14 data76, 79, 98,76,220,235,201,6,208,249,165,197,201,41,208,22,162,13,181
15 data43,157,000,096,202,16,248,160,65,177,43,153,14 ,96 ,136,16,248,48,221
16 data201,15,208,22,162,13,189,000,096,149,43,202,16,248,160,65,185,014,096
17 data145,43,136,16,248,48,195,201,10,208,46,76,107, 97,165,203,197,3,240
18 data36,173,12,144,72,173,14,144,72,169,247,141,12,144,169,10,141,14,144
19 data162,255,160,10,202,208,253,136,208,250,104,141,14,144,104,141,12
20 data144,96,201,61,208,7,169, 83,141,143,2,208,134,201,5,208,7,169,080,141
21 data143,2,208,243,201,54,208,38,172,224,2,165,43,153,225,2,200,165,44
22 data153,225,2,165,45,56,233,2,133,43,166,46,176,1,202,134,44,200,140
23 data224,2,32,18,228,76,116,196,201,8,208,23,172,224,2,240,15,136,185
24 data225,2,133,44,136,185,225,2,133,43,140,224,2,76,116,196,201,9,208
25 data10,32,159,255,32,228,255,201,13,208,246,76,220,235,0
29 rem***relocate***
30 ps=0:fort=24939to25030:readd:poket,d:ps=ps+d:next:ifps<>12881thenprintf$:stop
31 data165,43,133,146,133,148,165,44,133,147,133,149,160,5,177,146,240,7
32 data200,208,249,230,147,208,245,200,152,24,101,146,133,146,144,2,230
33 data147,160,0,165,146,145,148,200,165,147,145,148,165,146,133,148,165
34 data147,133,149,160,0,177,146,208,207,200,177,146,208,202,200,152,208
35 data2,230,147,24,101,146,144,2,230,147,133,45,165,147,133,46,32,89,198
36 data76,116,196,0
39 rem***find***
40 ps=0:fort=25031to25197:readd:poket,d:ps=ps+d:next:ifps<>22108thenprintf$:stop
41 data160,6,185,136,099,32,210,255,136,208,247,162,0,32,15,225,201,13,240
42 data13,157,0,2,232,224,89,144,241,162,23,76,55,196,32,202,202,162,0,160
43 data0,32,130,197,162,0,189,252,1,157,61,3,240,3,232,208,245,134,187,160
44 data1,177,43,153,176,0,136,16,248,165,43,133,182,165,44,133,183,160,1
45 data177,182,240,81,177,182,153,176,0,136,16,248,160,4,132,188,177,182
46 data240,38,162,0,169,64,221,61,3,240,14,169,34,221,61,3,240,7,177,182
47 data221,61,3,208,10,232,200,228,187,240,19,177,182,208,225,164,188,200
48 data208,212,165,176,133,182,165,177,133,183,208,186,160,3,177,182,133
49 data21,136,177,182,133,20,32,19,198,76,189,198,76,116,196,0
59 rem***grafik auf drucker***
60 ps=0:fort=25198to25299:readd:poket,d:ps=ps+d:next:ifps<>14244thenprintf$:stop
61 data169,0,32,189,255,169,4,162,4,160,1,32,186,255,32,192,255,162,4,32
62 data201,255,160,3,185,143,099,32,210,255,136,208,247,136,132,178,169,15
63 data133,179,162,0,160,160,169,27,32,210,255,169,75,32,210,255,169,160
64 data32,210,255,169,0,32,210,255,177,178,32,210,255,136,208,248,169,13
65 data32,210,255,165,178,24,105,160,133,178,165,179,105,0,133,179,232,224
66 data20,208,203,169,4,32,195,255,96,0
69 rem***bildschirm auf drucker***
70 ps=0:fort=25300to25452:readd:poket,d:ps=ps+d:next:ifps<>20321thenprintf$:stop
71 data8,72,138,72,152,72,186,134,166,56,32,240,255,134,167,132,168,169
72 data0,32,189,255,169,4,162,4,160,0,32,186,255,32,192,255,32,129,229,169
73 data0,32,189,255,169,3,162,3,160,0,32,186,255,32,192,255,162,4,32,201
74 data255,162,3,32,198,255,162,22,160,22,169,255,133,205,32,207,255,201
75 data13,240,3,32,210,255,136,208,239,165,191,208,5,169,8,32,210,255,169
76 data13,32,210,255,169,15,32,210,255,202,240,41,16,213,166,167,164,168
77 data24,32,240,255,169,13,32,210,255,169,3,133,154,32,195,255,169,4,32
78 data195,255,169,0,133,153,166,166,154,104,168,104,170,104,40,96,160,21
79 data208,172,0
89 rem***einbinden ins betriebssystem wenn vic1211a angeschlossen ist***
90 ps=0:fort=25453to25479:readd:poket,d:ps=ps+d:next:ifps<>2498thenprintf$:stop
91 data32,056,162,169,080,160,096,141,143,2,140,144,2,169,109,160,099,141,22
92 data3,140,23,3,108,2,192,0
99 rem***einbinden ins betriebssystem ohne rom-zusatz***
100 ps=0:fort=25600to25631:readd:poket,d:ps=ps+d:next:ifps<>3326thenprintf$:stop
101 data32,82,253,32,249,253,32,24,229,169,080,160,096,141,143,2,140,144,2
102 data169,000,160,100,141,22,3,140,23,3,108,2,192
109 rem***' ?dnif' und druckanweisungen***
110 ps=0:fort=25480to25490:readd:poket,d:ps=ps+d:next:ifps<>994thenprintf$:stop
111 data255,32,63,68,78,73,70,255,8,65,27
120 sys25600
Listing. Basic-Lader zur Betriebssystem-Erweiterung
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →