In diesem Kapitel werden ROM_Routinen angegeben, mit deren Hilfe es auf einfachste
Art moeglich ist, beliebige Dateien auf Band zu schreiben und vom Band zu lesen.
Diese Files muessen nicht dem vom Betriebssystem (O.S.) vorgesehenen Standard
entsprechen, sollten es nach Moeglichkeit, damit sie mit den Schreib-/Leseroutinen
des O.S. vertraeglich sind.
Das erste Byte jedes Datenblocks (normalerweise im Tape-Buffer #1 ab $027A oder #2
ab $033A) enthaelt eine Angabe ueber den File-Typ :
1: Program File-Header
2: Datenblock
3: Datenblock File-Header
Die folgenden vier Bytes enthalten die Start und Endadresse des Programms (bei Datenfiles
die Start- und Endadresse des Tape-buffers) im Format low Byte - high Byte.
Darauf folgt dann der Filename im ASCII-Code.
Die verwendeten ROM-Routinen und Speicherplaetze sind :
Name 2001 3001 8001 Beschreibung
-----------------------------------------------------
CLRTB $F5E3 ---- ---- Tape-buffer loeschen
LOAD $F3E4 $F3C9 $F408 Programmfile laden
RDBLK $F88A $F85E $F8A3 Block lesen
RDTBUF $F87F $F885 $F89A Tape-buffer lesen
SAVE $F6B1 $F6A4 $F6E3 Programmfile schreiben
SFIH $F5AE $F5A6 $F5E5 Suche nach File-Header
TWAIT $F913 $F8E6 $F92B I/O- Abschluss abwarten
WRTBLK $F8C4 $F890 $F8D5 Block schreiben
CHECKS $C3 $0279 $0279 Pruefsumme
DN $F1 $D4 $D4 Device-Nummer (Recorder 1,2)
ENDADR $E5-E6 $C9-CA $C9-CA Endadresse+1 schreiben/lesen
FNADR $F9-FA $DA-DB $DA-DB Adresse des Filenamens
FNLEN $EE $D1 $D1 Laenge es Filenamens
START $F7-F8 $FB-FC $FB-FC Startadresse lesen/schreiben
STATUS $020C $96 $96 I/O-Status-Byte
TBUF $F3-F4 $D6-D7 $D6-D7 Startadresse Tape-buffer
Diese Routine laedt ein Programm-File in den Speicher. Das Programm
wird in die im File-Header angegebenen Adressen gespeichert. Die LOAD-Routine
setzt die Zeiger : Programmanfang $7A-7B/$28-29/$28-29 und Programmende $7c-7D/
$2A-2B/$2A-2B. Nach dem LOAD kann das Programm mit RUN oder durch den Aufruf
entsprechender Routinen gestartet werden.
Die LOAD-Routine benoetigt die Angaben DN, FNADR und FNLEN.
LDA #0
STA STATUS
JSR LOAD
Diese Routine schreibt ein Programm aus dem Speicher auf Band. Nach der SAVE-Operation
sind keine Zeiger veraendert, d.h. das Programm kann normal weiterlaufen. Die SAVE-Routine
benoetigt die Angaben DN, FNADR, FNLEN, START und ENDADR.
JSR SAVE Diese Routine liest einen Block beliebiger Laenge vom Band in den Speicher.
Die Angabe DN, START und ENDADR werden benoetigt.
JSR RDBLK
JSR TWAIT
Diese Routine schreibt einen Speicherblock beliebiger Laenge aus dem Speicher auf Band.
Die Angaben DN, START und ENDADR werden benoetigt.
JSR TWAIT
LDA #$69
STA CHECKS
JSR WRTBLK
Der laeufende Tape-buffer kann mit dieser Routine (nur 2001) geloescht werden (er wird
mit Space-Zeichen beschrieben). Die Anfangsadresse des gueltigen Puffers steht in TBUF
(#1: $027A, #2:$033A).
JSR CLRTB
Die Befehlsfolge ist in den ROMs der 3001- und 8001-Computer ebenfalls vorhanden, aber
nicht als Subroutine abrufbar.
Jeder Datenblock (192 Zeichen) kann mit dieser Routine gelesen werden. Die Routine
benoetigt die Angaben DN und TBUF.
JSR RDTBUF
Die Routine durchsucht das Band nach dem naechsten File-header. Die Angaben DN
und TBUF werden benoetigt.
JSR SFIH
Letzte Änderung: 2019-01-04 10:06:36