Disketten-Meister
Um leichter mit der Diskette arbeiten zu können, benötigen Sie nur diese kleine Basic-Erweiterung.
Die hier vorgestellte Basic-Erweiterung umfaßt 24 neue Befehle, die es ermöglichen, den Umgang mit dem Diskettenlaufwerk sowohl im Direktmodus als auch im Programm erheblich zu vereinfachen. Autostart, menügesteuertes Laden von Programmen sowie das Speichern von Maschinenprogrammen sind nur 3 der vielen Möglichkeiten dieses Programms.
Die Befehle im Einzelnen:
@
Der Fehlerkanal des Laufwerks wird gelesen und auf dem Bildschirm angezeigt.
@S
Der Fehlerkanal wird gelesen und die Nummer des Fehlers in Speicherstelle 251 abgelegt. Die Abfrage erfolgt nun mit PRINT PEEK (251). Die Bedeutung der Fehlernummern ist aus dem Floppy-Bedienungshandbuch Seite 36 bis 39 zu entnehmen.
$
Das Inhaltsverzeichnis der Diskette wird auf dem Bildschirm seitenweise angezeigt, das heißt daß die Ausgabe nach 23 Zeilen stoppt und das Programm eine Menüzeile ausgibt. Nun hat man die Möglichkeit die folgenden Zeilen zu listen oder die Ausgabe zu beenden.
$$
Dieser Befehl erlaubt es auf einfachste Art ein Programm zu laden ohne den Namen des Programms einzugeben. Hier wird das Inhaltsverzeichnis der Diskette gelistet, wobei jeder Zeile eine Programmnummer vorangestellt ist. Sind 20 Zeilen ausgegeben, so erscheint eine Menüzeile. Man kann nun die nächste Seite listen, die Ausgabe beenden, oder ein Programm laden. Drückt man nun die Taste für »Laden«, so ist nur die Nummer des Programms einzugeben, »RETURN« zu drücken und das jeweilige Programm wird in den Basic-Speicher geladen. Es besteht die Möglichkeit durch ein der Programmnummer nachgestelltes &-Zeichen einen Autostart durchzuführen.
#
Die aktuelle Geräteadresse wird auf dem Bildschirm angezeigt. Sie wird beim Start des Programms automatisch auf 8 gesetzt.
#9
Ändern der Geräteadresse. Alle folgenden Befehle beziehen sich auf Geräteadresse 9.
#8
Alle Befehle beziehen sich wieder auf Geräteadresse 8.
#E
Die Befehlserweiterung wird ausgeschaltet. Dies ist notwendig, wenn man ein anderes Maschinenprogramm in den Speicher ab $C000 laden will, ohne daß das System aussteigt. Alle Zeiger werden wieder in ihre Ausgangsposition gesetzt.
£"Name"
Die Startadresse des jeweiligen Programms wird auf dem Bildschirm angezeigt. Dieser Befehl kann bei unbekannten Startadressen von Maschinenprogrammen eine nützliche Hilfe sein.
%"Name"
Das Programm mit dem angegebenen Namen wird geladen. Dieser Befehl lädt ein Programm immer an die Adresse, die im Programm abgespeichert ist. Es lassen sich so auch Maschinenprogramme laden.
&"Name"
Autostart-Befehl. Das Programm wird geladen und danach selbständig gestartet. Dies ist nur mit Programmen möglich, die im Basic-Speicher abgelegt sind.
!"Name"
Das im Speicher befindliche Basic-Programm wird unter dem angegeben Namen auf Diskette gespeichert.
!"Name",S,E
Dieser Befehl ermöglicht das Speichern von Maschinenprogrammen, wobei »S« die Startadresse und »E« die Endadresse ist. Es muß beachtet werden, daß »E« die Endadresse + 1 des abzuspeichernden Bereichs ist.
V
Der Validate-Befehl wird ausgeführt.
←I
Initialisiert eine Diskette.
←N"Name,ID"
Formatiert eine Diskette.
←N"Name"
Reformatiert eine Diskette ohne Änderung der ID. Dies funktioniert jedoch nur bei bereits formatierten Disketten.
←C"nf=af"
Das File »af« wird mit dem Namen »nf« kopiert.
←C"nf=file1,file2"
Es besteht die Möglichkeit maximal 4 sequentielle Datenfiles zu einem mit neuem Namen zusammenzufassen.
←R"nfn=afn"
Das File mit dem Namen »afn« wird zu »nfn« umbenannt.
←S"file"
Das File mit dem Namen »file« wird gelöscht.
←S"file1,file2,.."
Es können auch mehrere Files gleichzeitig gelöscht werden.
←S"fi*"
Es werden alle Files gelöscht, die mit dem Buchstaben »fi« beginnen.
←S"*"
Alle Files einer Diskette werden gelöscht.
Eingabe des Programms
Das Basic-Programm bildet jeweils von fünf DATA-Zeilen eine Prüfsumme. Ist diese fehlerhaft, so stoppt das Programm und zeigt die jeweilige Blocknummer auf dem Bildschirm an. Waren die Prüfsummen aller 20 Blocks fehlerfrei, stoppt das Programm mit dem Hinweis die richtige Diskette einzulegen. Nach Drücken einer Taste wird das Maschinenprogramm unter dem Namen »Disk-Master/M« auf Diskette gespeichert. Um das Laden und Starten zu erleichtern, muß der Basic-Lader eingetippt werden.
Laden des Programms mit Basic-Lader:
LOAD"Disk-Master",8. Ist die Ready-Meldung erfolgt, so ist einfach RUN einzugeben und das Maschinenprogramm wird geladen und gestartet.
direkt:
LOAD"Disk-Master/M",8,1. Ist die Ready-Meldung erfolgt, muß das Programm mit SYS 49152 gestartet werden.
Allgemeine Hinweise zur Programmbenutzung:
Will man im Rahmen eines Basic-Programmes einen Befehl hinter einer »IF…THEN« Abfrage benutzen, so ist vor dem Befehl ein Doppelpunkt zu setzen, da sonst eine Fehlermeldung ausgegeben wird.
Sollen die Befehle —N, —R, —S, —C im Programm verwendet werden, so sollten die nachfolgenden Parameter in einer String-Variablen gespeichert sein.
Will man im Anschluß an »Disk-Master« noch andere Programme abspeichern, so darf die Startadresse des folgenden Programms nicht kleiner als $C900 sein.
(Armin Haas/rg)@ | Fehlerkanal lesen und anzeigen |
@S | Fehlerkanal lesen und speichern |
$ | Inhaltsverzeichnis der Diskette anzeigen |
$$ | Menügesteuertes Laden von Programmen |
# | Aktuelle Geräteadresse abfragen |
#9 | Geräteadresse = 9 |
#8 | Geräteadresse = 8 |
#E | Programm ausschalten |
£"Name" | Startadresse ermitteln und anzeigen |
%"Name" | Programm absolut laden |
&"Name" | Programm laden und starten |
!"Name" | Programm speichern |
!"Name",A,B | Maschinenprogramm speichern |
←V | Validate-Befehl ausführen |
←I | Initialisiert Diskette |
←N"Name,ID" | Formatiert Diskette |
←N"Name" | Reformatiert Diskette |
←C"nf = af" | Kopiert File |
←C"nf=file1,file2" | Verkettet SEQ-Files (max. 4) |
←R"nfn=afn" | File umbenennen |
←S"file" | File löschen |
←S"file1,file2,..." | Mehrere Files gleichzeitig löschen |
←S"fi*" | Alle Files mit Anfangsbuchstaben »fi« werden gelöscht |
←S"*" | Alle Files der Diskette werden gelöscht |
100 rem ******** basic-lader ******** 110 iff=1thensys49152:new 120 print"{down}loading disk-master/m" 130 f=1:load"disk-master/m",8,1
0 rem ************************* 1 rem * * 2 rem * --disk-master-- * 4 rem * * 5 rem * 1984 armin haas * ** 6 rem * * 7 rem ************************* 8 rem 10 rem pruefsummentest 20 n=1 30 s=0 40 for i=1 to 80 50 read x:if x=-1 then 80 60 s=s+x 70 next 80 read f:if f<>s then 120 90 print"pruefsumme block"n" ok!" 100 if x=-1 then 140 110 n=n+1:goto30 120 print"fehler in block"n:end 130 rem maschinenprogramm wird auf diskette gespeichert 140 print"{down}diskette einlegen und taste drueken!" 150 wait 198,1 160 print"{down}programm wird auf diskette gespeichert":print"{down}bitte warten!" 170 open 1,8,1,"disk-master/m" 180 print#1,chr$(0);:rem adresse low 190 print#1,chr$(192);:rem adresse high 200 restore 210 for i=1 to 1585 220 read x:if x>255 then 240 230 print#1,chr$(x); 240 next i 250 close 1 260 print"{down}fertig !":end 495 rem datas 500 data 169,0,141,32,208,141,33,208,169,15,141,134,2,169,74,162 510 data 56,160,192,32,26,192,32,45,192,96,133,253,134,251,132,252 520 data 160,0,177,251,32,210,255,200,196,253,208,246,96,169,101,141 530 data 8,3,169,194,141,9,3,96,147,17,42,42,42,42,42,42 540 data 42,42,42,42,42,32,32,68,73,83,75,32,45,45,32,77 545 data 8514:rem pruefsumme block 1 550 data 65,83,84,69,82,32,32,42,42,42,42,42,42,42,42,42 560 data 42,42,17,29,29,29,29,29,29,29,29,29,29,40,67,41 570 data 32,49,57,56,52,32,32,65,82,77,73,78,32,72,65,65 580 data 83,17,17,18,32,32,60,70,49,62,32,87,69,73,84,69 590 data 82,32,32,32,60,70,51,62,32,69,78,68,69,32,32,146 595 data 4084:rem pruefsumme block 2 600 data 8,169,1,174,160,192,160,15,32,186,255,96,169,0,32,189 610 data 255,32,192,255,162,1,32,198,255,96,32,207,255,32,210,255 620 data 165,144,240,246,32,204,255,169,1,32,195,255,96,169,36,133 630 data 251,169,251,133,187,169,0,133,188,169,1,133,183,173,160,192 640 data 133,186,169,96,133,185,32,213,243,165,186,32,180,255,165,185 645 data 11729:rem pruefsumme block 3 650 data 32,150,255,169,0,133,144,96,160,3,132,251,32,165,255,133 660 data 252,164,144,208,56,32,165,255,164,144,208,49,164,251,136,208 670 data 233,166,252,32,205,189,169,32,32,210,255,32,165,255,166,144 680 data 208,27,170,240,6,32,210,255,76,27,193,169,13,32,210,255 690 data 164,254,192,22,240,11,200,132,254,160,2,208,189,32,66,246 695 data 11742:rem pruefsumme block 4 700 data 96,169,0,133,254,169,30,162,130,160,192,32,26,192,32,228 710 data 255,240,251,201,133,240,7,201,134,240,15,76,78,193,169,147 720 data 32,210,255,169,0,133,254,76,57,193,169,13,32,210,255,169 730 data 23,32,210,255,76,61,193,32,161,192,169,1,162,255,160,159 740 data 32,189,255,76,165,193,32,161,192,32,87,226,165,187,56,233 745 data 11234:rem pruefsumme block 5 750 data 2,133,187,160,0,165,253,145,187,200,169,58,145,187,165,183 760 data 24,105,2,133,183,32,192,255,169,1,32,195,255,96,165,251 770 data 56,233,48,133,251,169,0,160,10,24,101,251,136,208,250,133 780 data 251,165,252,56,233,48,24,101,251,133,251,96,32,161,192,32 790 data 172,192,76,186,192,169,147,32,210,255,169,0,133,254,32,205 795 data 11294:rem pruefsumme block 6 800 data 192,76,248,192,32,161,192,32,172,192,32,207,255,133,251,32 810 data 207,255,133,252,32,207,255,165,144,240,249,32,196,192,76,174 820 data 193,169,228,141,8,3,169,167,141,9,3,96,169,0,174,160 830 data 192,32,205,189,169,13,32,210,255,96,169,2,174,160,192,160 840 data 2,32,186,255,96,165,183,166,187,164,188,32,189,255,32,192 845 data 11612:rem pruefsumme block 7 850 data 255,162,2,32,198,255,32,207,255,133,251,32,207,255,133,252 860 data 32,204,255,169,2,32,195,255,96,32,26,194,32,87,226,169 870 data 0,133,251,133,252,32,46,194,165,252,166,251,32,205,189,169 880 data 13,32,210,255,96,32,115,0,201,36,240,73,201,64,240,94 890 data 201,95,240,53,201,35,240,105,201,38,240,36,201,37,240,23 895 data 11225:rem pruefsumme block 8 900 data 201,92,240,10,201,33,240,36,32,121,0,76,231,167,32,115 910 data 0,32,73,194,76,174,167,32,115,0,32,69,195,32,174,167 920 data 32,115,0,32,133,195,76,174,167,76,16,195,32,115,0,32 930 data 156,195,76,174,167,32,115,0,201,36,240,6,32,213,193,76 940 data 174,167,32,115,0,76,212,195,32,115,0,76,174,167,32,115 945 data 8343:rem pruefsumme block 9 950 data 0,201,83,240,6,32,204,193,76,174,167,32,228,193,76,200 960 data 194,32,115,0,240,24,201,69,240,32,32,158,183,224,8,240 970 data 19,224,9,240,15,224,1,240,11,162,11,32,55,164,32,12 980 data 194,76,174,167,142,160,192,76,174,167,32,1,194,76,200,194 990 data 32,115,0,201,86,240,26,201,73,240,22,201,82,240,27,201 995 data 9754:rem pruefsumme block 10 1000 data 83,240,23,201,67,240,19,201,78,240,15,32,121,0,76,231 1010 data 167,141,255,159,32,119,193,76,200,194,133,253,32,115,0,32 1020 data 134,193,76,174,167,32,76,195,32,114,195,96,174,160,192,160 1030 data 1,32,186,255,32,87,226,169,0,32,213,255,144,3,76,249 1040 data 224,134,45,132,46,32,183,255,41,191,240,5,162,29,76,55 1045 data 9948:rem pruefsumme block 11 1050 data 164,96,164,56,133,51,132,52,165,45,164,46,133,47,132,48 1060 data 133,49,132,50,96,174,160,192,160,0,32,186,255,32,87,226 1070 data 169,0,166,43,164,44,32,89,195,76,113,168,174,160,192,32 1080 data 186,255,32,87,226,32,121,0,240,39,32,253,174,32,138,173 1090 data 32,247,183,165,20,133,251,165,21,133,252,32,253,174,32,138 1095 data 9660:rem pruefsumme block 12 1100 data 173,32,247,183,169,251,166,20,164,21,134,253,132,254,76,95 1110 data 225,76,89,225,169,0,133,253,169,199,133,254,169,0,141,250 1120 data 198,141,251,198,141,252,198,141,253,198,169,147,32,210,255,32 1130 data 205,192,160,3,132,251,32,165,255,133,252,164,144,208,117,32 1140 data 165,255,164,144,208,110,164,251,136,208,233,166,252,32,205,189 1145 data 12998:rem pruefsumme block 13 1150 data 169,32,32,210,255,32,165,255,166,144,208,88,170,240,9,32 1160 data 210,255,32,123,196,76,21,196,169,13,32,210,255,152,160,0 1170 data 145,253,76,158,196,169,18,32,210,255,32,180,197,169,0,174 1180 data 250,198,232,142,250,198,32,205,189,169,146,32,210,255,169,32 1190 data 32,210,255,169,45,32,210,255,169,32,32,210,255,165,253,24 1195 data 11628:rem pruefsumme block 14 1200 data 105,17,144,5,164,254,200,132,254,133,253,169,0,141,252,198 1210 data 160,2,208,128,32,11,197,32,66,246,96,201,34,208,16,174 1220 data 253,198,240,5,162,0,76,139,196,162,1,142,253,198,96,174 1230 data 253,198,240,250,172,252,198,200,140,252,198,145,253,96,173,250 1240 data 198,201,20,240,3,76,53,196,169,37,162,203,160,197,32,197 1245 data 11941:rem pruefsumme block 15 1250 data 196,32,228,255,240,251,201,133,240,30,201,134,240,71,201,135 1260 data 240,85,76,177,196,133,60,134,61,132,62,160,0,177,61,32 1270 data 210,255,200,196,60,208,246,96,169,147,32,210,255,169,0,141 1280 data 250,198,141,251,198,141,252,198,133,253,169,199,133,254,160,0 1290 data 169,32,153,0,199,200,208,250,160,0,153,0,200,200,192,90 1295 data 12304:rem pruefsumme block 16 1300 data 208,248,76,53,196,32,119,196,76,174,167,169,23,162,240,160 1310 data 197,32,197,196,76,168,196,169,22,162,7,160,198,32,197,196 1320 data 32,119,196,169,0,133,251,133,252,133,253,32,207,255,56,233 1330 data 48,133,251,32,207,255,201,38,208,4,133,253,169,13,201,13 1340 data 208,7,169,0,133,252,76,98,197,56,233,48,133,252,32,207 1345 data 11218:rem pruefsumme block 17 1350 data 255,133,253,169,0,160,10,24,101,251,136,208,250,24,101,252 1360 data 133,251,169,0,133,252,164,251,24,105,17,144,5,166,252,232 1370 data 134,252,133,251,136,208,241,165,252,24,105,199,133,252,177,251 1380 data 166,251,232,208,5,164,252,200,132,252,164,252,32,189,255,165 1390 data 253,201,38,240,17,174,160,192,160,1,32,186,255,32,87,195 1395 data 12680:rem pruefsumme block 18 1400 data 32,114,195,76,174,167,174,160,192,160,0,32,186,255,32,144 1410 data 195,76,174,167,173,250,198,201,9,208,5,169,1,141,251,198 1420 data 173,251,198,208,5,169,48,32,210,255,96,17,18,60,70,49 1430 data 62,32,87,69,73,84,69,82,32,60,70,51,62,32,69,78 1440 data 68,69,32,60,70,53,62,32,76,65,68,69,78,146,17,13 1445 data 8358:rem pruefsumme block 19 1450 data 145,157,157,157,157,157,32,32,32,32,157,157,157,157,17,32 1460 data 32,32,32,157,157,157,157,78,85,77,77,69,82,32,68,69 1470 data 83,32,80,82,79,71,82,65,77,77,83,63,32,13,-1 1475 data 4015:rem pruefsumme block 20