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