★ APPLICATIONS ★ DIVERS ★ Headerlose Kassettenoperationen ★ |
Headerlose Kassettenoperationen (CPC Amstrad International) | Applications Divers |
Um Programme mit dem Kassettenrekorder schneller laden und abspeichern zu können, hat man entweder die Möglichkeit des Erhöhens der Kassettenübertragungsrate, oder die des headerlosen Abspeicherns. Da die erste Möglichkeit schon hinlänglich bekannt sein dürfte, soll hier die zweite genauer erklärt werden. Durch das headerlose Abspeicherformat entfällt das Zerlegen in 2K-Blöcke ganz. Auf dem Band befindet sich nur ein langer Block, allerdings ohne Namen und nur mit einem Maschinenprogramm ladbar. Der Block kann eine Länge von 1 Byte bis 65536 Bytes haben, wobei eine Längenangabe von 0 vom Betriebssystem als 65536 interpretiert wird. Es ist nicht nötig, wie beim normalen Speicherformat die Adresse eines 2K-Pufferspeichers anzugeben, weil der File direkt ab der angegebenen Adresse in den Speicher geladen wird, ohne daß ein Zwischenspeicher benötigt wird. Diesen Vorteil bekommt der Basic-Programmierer nicht zu spüren, weil der 2K-Puffer vom Basic-Interpreter eingerichtet wird. Mit folgenden Firmware-Einsprüngen ist es möglich, einen headerlosen Kassettenfile zu erzeugen, zu laden und zu kontrollieren. Sie werden vom Basic-Interpreter bei Befehlen wie "LOAD", "SAVE", "CAT" und "PRINT#9,..." angesprungen.
Bevor man diese Firmware-Routinen anspringt, müssen folgende Register geladen werden:
Beim Laden muß beachtet werden, daß ein Satz nur dann wieder eingelesen werden kann, wenn im Register A das gleiche Satzkennzeichen angegeben wird wie beim Abspeichern. Es muß nicht ein ganzer Satz eingelesen werden. Man kann z.B. von 500 abgespeicherten Bytes auch nur 50 wieder einlesen, ohne daß ein Fehler auftritt. Es können aber nur die ersten Bytes eines Satzes geladen werden, d.h. es ist nicht möglich, z.B. die ersten 5 Bytes eines Satzes zu überspringen und dann die nachfolgenden einzulesen. Wird versucht, mehr Bytes einzulesen, als abgespeichert, so entsteht ein Fehler, das CARRY-Flag ist dann nicht gesetzt und das Register A enthält den Fehlerschlüssel. Diese Fehler können auftreten:
Kassettenoperationen erfordern genaue Zettberücksichtigung. Deshalb werden alle Unterbrechungen einschließlich der Tastaturabfrage gesperrt. Es ist also nicht möglich, während des Ladevorgangs Musik zu erzeugen, weil dafür meist Interrupts zur Steuerung der Töne benötigt werden. Der Abspeichervorgang kann nur durch Ausschalten des Computers unterbrochen werden. Im Vergleich zum normalen Abspeicherformat ist das headerlose etwa doppelt so schnell. Ein 16K-Bereich benötigt mit einer Übertragungsrate von 3000 Baud: normal 95 Sekunden, headerlos 45 Sekunden. Die nachfolgende MC-Routine stellt drei RSX-Befehle zur Verfügung:
Die Parameter sind jeweils:
Bei CHECK sind folgende Meldungen möglich:
File entspricht dem angegebenen Speicherabschnit
ESC wurde gedrückt
Geschwindigkeit ist zu hoch
Lesefehler
File entspricht nicht dem angegebenen Speicherabschnitt Als Test können Sie dieses kurze Basic-Programm eingeben. Legen Sie, bevor Sie das Programm starten, eine Kassette ins Kassetten fach ein und drücken Sie dann REC und PLAY. Wenn Sie das Programm starten, wird es auf dem Bildschirm 200 Linien ziehen und dann auf eine Taste warten. Wenn Sie eine Taste drücken, wird der Bildschirminhalt mit 3000 Baud headerlos abgespeichert. Spulen Sie danach die Kassette an den Ausgangspunkt zurück und drücken Sie dann PLAY. Nach Zurückspulen und einem Tastendruck wird der ursprüngliche Bildschirminhalt wieder geladen. 100 REM |
|
|