Copy 5 für Ed./Ass. Modul

Dieses Programm fertigt eine 1:1 Kopie eines Programm-Files von Kassette auf Diskette an. Dieses Programmfile kann ein Basic-Programm oder ein Textadventure für das Adventure-Modul sein (was wohl die interessantere Anwendung sein wird).

Ein besonderes Problem stellt dabei die Länge des Kassettenfiles dar, da dieses nicht ohne weiteres gelesen werden kann. Daher wird vor dem Einiesen von Kassette eine Blocklänge .(Hex) eingegeben (immer 4 Bytes). Hat man sich vertippt, so gibt man einfach die vier richtigen Bytes ein. Es werden immer nur die letzten 4 Tastendrücke berücksichtigt, auch wenn nach 8 Bytes alles auf die letzte Stelle geschrieben wird.

Ist die Blocklänge zu kurz, so bricht die Kassetten-DSR sofort nach dem ersten Ton ab (ERROR DETECTED .IN DATA). Danach erscheint die Meldung zur Eingabe des File-namens. War. die Blocklänge zu kurz, wird nun einfach ENTER bedrückt und es kann eine andere 'Blocklänge eingegeben werden. War die Blocklänge OK, so wird nun der Geräteund Dateiname (z. B. DSK1.ADVENTURE) eingegeben. Eingabefehler können mit ackspace (FCTN 'S') korrigi ert werden; weitere Editiermöglichkeiten sind nicht vorgesehen.

Nach Abschluß der Eingabe mit ENTER wird das File auf Diskette geschrieben. Dieses File ist ein Programm-File mit genau der Länge, wie sie .durch die Blocklänge spezifiziert wurde. Anschließend wird wieder die Blocklänge abgefragt. Wer nun kein neues File umkopieren möchte, gibt hier nichts oder Null ein, woraufhin zum Titelbild verzweigt wird.

Das Programm besitzt keine Fehlerbehandlung! Wird bei zu geringer Blocklänge trotz Fehlermeldung der Kassettenroutine ein Filename eingegeben, wird ein Programmfile mit ungültigen Daten erzeugt. Dem Benutzer dieses Programms wird also eine Beachtung der Kassettenkommandos ans Herz gelegt.

Auch eine schreibgeschützte oder fast volle Diskette wird nicht erkannt. Das ist aber nur konsequent, denn das Denken sollte man beim Arbeiten mit dem Computer nicht abschalten.
Die Blocklänge kann auch größer als notwendig gewählt werden, für das Adventure-Modul ist das ohne Bedeutung. Allerdings wird dann die Diskette zu schnell voll. Pro 256 Byte (> 100) wird ein Sektor der Diskette belegt + 1 Directory-Sektor für das gesamte File. Hieraus kann der notwendige freie Platz auf der Diskette ermittelt werden.

Die maximale Blocklänge beträgt >30F0. Diese Grenze ist durch die Verwaltung des VDP-RAMs bedingt. Reicht der Dateibereich bis >3FFF, so hat sich bei mir immer der Rechner "aufgehängt". Sollten irgendwann einmal neue Adventure mit größeren Blocklängen auftauchen, muß der Anfang des Puffers nach unten verlegt werden. Ein Vorverlegen bis auf >C00 für den PAB und >C20 für den Puffer wäre vertretbar, da die Charakter-Definitionen von 0 bis 717 nur bis >BFF reichen. Die maximale Blocklänge wäre dann >33D0. Hierzu müssen nur die Equates am Programmanfang geändert werden.

Folgende Blocklängen wurden bisher von mir ermittelt:
Pirate Adventure >2890 Byte
Mission Impossible >2900 Byte
Strange Odyssey >2800 Byte
Pyramid of Doom >2800 Byte
Savage Island 1 >2800 Byte
Savage Island 2 >30F0 Byte
Ghost Town >2800 Byte
The Golden Voyage >2900 Byte
Mystery Fun House >2A00 Byte


Christopher Winter
Aus: Computer Kontakt 01 / 1986, Seite

Links

Copyright-Bestimmungen: siehe Über diese Seite