Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| z9001:software:os:kassetteninterface [2024/12/05 12:58] – volkerp | z9001:software:os:kassetteninterface [2025/12/16 14:28] (aktuell) – [Logisches Aufzeichnungsformat] volkerp | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Kassetteninterface ====== | ====== Kassetteninterface ====== | ||
| + | |||
| + | |||
| + | Das Kassetten-Magnetband-Interface des Z9001, ein Diphase-Verfahren, | ||
| + | |||
| + | Deshalb benutzt der Z9001 im Prinzip das gleiche Kassettenaufzeichnungsformat wie auch die Mühlhauser Rechner HC900 und Nachfolger KC85/ | ||
| + | |||
| ===== Physisches Aufzeichnungsformat ===== | ===== Physisches Aufzeichnungsformat ===== | ||
| Zeile 26: | Zeile 32: | ||
| a) Dateiaufbau: | a) Dateiaufbau: | ||
| - | Block 0 Dateikopf\\ | + | Block 0 Dateikopf, Inhalt ist der komplette FCB (siehe |
| - | Inhalt ist der komplette FCB (siehe | + | |
| Block 1, ..., n Daten der Datei\\ | Block 1, ..., n Daten der Datei\\ | ||
| Block FFH letzter Datenblock der Datei\\ | Block FFH letzter Datenblock der Datei\\ | ||
| Zeile 40: | Zeile 45: | ||
| b) Blockaufbau: | b) Blockaufbau: | ||
| - | Vorton Folge von 1 - Bit mit abschließendem Trennzeichen\\ | + | Vorton Folge von 1 - Bit mit abschließendem Trennzeichen: Block 0 - 6000 Trennzeichen, |
| - | Block 0: 6000\\ | + | |
| - | sonst 160\\ | + | |
| Blocknummer 1 Byte\\ | Blocknummer 1 Byte\\ | ||
| Daten 128 Bytes\\ | Daten 128 Bytes\\ | ||
| Zeile 93: | Zeile 96: | ||
| - | ====== Kassettenformate ====== | ||
| - | Das Kassetten-Magnetband-Interface des Z9001, ein Diphase-Verfahren, | + | ====== Der FCB ====== |
| - | Deshalb benutzt der Z9001 im Prinzip | + | Zum Laden und Speichern auf Kassette nutzt das Betriebssystem einen speziellen Speicherbereich, |
| - | * Systemprogramme beginnen mit dem Block Nummer 0 und haben als Endekennung den Block Nummer 255 (0FFh). Beim HC900 beginnen Systemprogramme mit dem Block Nummer 1. Das übersehen leider viele Tools und Emulatoren. | + | Der FCB wird zur Beschreibung von Dateien auf einem externen Speicher (Kassette) verwendet. Vor |
| - | * Der HC900 interpretiert den Kopfblock anders: Hier können bis zu 9 Parameter genutzt werden; beim Z9001 sind es 3 (AADR, EADR, SADR). | + | jedem Auslagern einer Datei muß der FCB initialisiert werden. Mit dem Systemruf 15 (OPENW) wird |
| + | dieser FCB als Block 0 auf Kassette geschrieben, | ||
| + | identifizieren zu können. Zum Einlesen ist der Systemruf 13 (OPENR) zu verwenden. Die | ||
| + | Anfangsadresse des FCBs ist 5CH. | ||
| + | |||
| + | Aufbau des FCBs: | ||
| + | |||
| + | ^ Adresse | ||
| + | | 005CH | Dateiname 8 Zeichen mit Buchstaben beginnend ggf. mit 00 auffüllen | ||
| + | | 0064H | Dateityp 3 Zeichen mit Buchstaben beginnend ggf. mit 00 auffüllen | ||
| + | | 0067H | - frei für Erweiterungen | ||
| + | | 0068H | - frei für Erweiterungen | ||
| + | | 0069H | PSUM Blockprüfsumme | ||
| + | | 006AH | ARB interne Arbeitszelle | ||
| + | | 006BH | BLNR Nummer zu schreibender Block oder Nummer gelesener Block | ||
| + | | 006CH | LBLNR Nummer zu lesender Block | | | ||
| + | | 006DH | AADR Anfangsadresse der Datei | ||
| + | | 006FH | EADR Endadresse der Datei | ||
| + | | 0071H | SADR Startadresse eines Programms | ||
| + | | 0073H | SBY Schutzbyte | ||
| + | | 0074H | ' | ||
| + | | 0075H | LEADR - letzte beschriebene Adresse | ||
| + | |||
| + | Hinweise: | ||
| + | * vor OEPNW sind durch den Anwender Dateiname, Dateityp, Anfangsadresse, | ||
| + | * die Startadresse einer Datendatei oder eines nicht selbst startenden Programmes auf FFFFH setzen (kein versehentliches Starten bei Einlesen im OS-Mode, da Sprung auf RET-Befehl) | ||
| + | * vor OPENR sind Dateiname und Dateityp zu initialisieren | ||
| + | * nach OPENR sind Anfangsadresse, | ||
| + | * wird eine Datei mit Schutzbyte = 1 eingelesen, ist kein Schreiben auf Kassette mehr möglich | ||
| + | * Die Speicherzellen 0074..0076 werden von der EOS-Software genutzt (SD-OS, USB-OS, Disk-OS), s. [[..: | ||
| + | |||
| + | ====== Kopfblock ====== | ||
| + | |||
| + | **Block 0:** Der FCB wird ab Adresse 005C auf Kassette als Block Nr. 0 (Kopfblock) gespeichert. In den Emulator-Dateien (*.KCC u.a.) wird ebenfalls der Kopfblock zuerst gespeichert. Damit ist dieser 1:1 zum FCB aufgebaut. | ||
| + | |||
| + | Der Aufbau des Kopfblocks ist leider nicht komplett mit den Mühlhäuser Rechnern abgestimmt. Und selbst am Z9001 nutzt das BASIC nicht den Kopfblock mit der Blocknummer 0, sondern nutzt sein eigenes logisches Aufzeichnungsformat. | ||
| + | |||
| + | | ||
| + | * Andere Programme nutzen den Kopfblock auf eigene Weise, z.B. nur für den Dateinamen (z.B. Textdateien). Die Verwendung der weiteren Felder im Kopfblock ist programmspezifisch. | ||
| + | * Der HC900/KC85.2 ff. interpretiert den Kopfblock anders: Hier können bis zu 9 Parameter genutzt werden; beim Z9001 sind es 3 (AADR, EADR, SADR). Außerdem wird EADR+1 in den Kopfblock geschrieben. Beim Z9001 ist es die tatsächliche letzte belegte Adresse. | ||
| * Basic-Programme beginnen mit dem Block Nummer 1. | * Basic-Programme beginnen mit dem Block Nummer 1. | ||
| * Ab dem KC 87.2x werden Basic-Programme mit einem willkürlichen Block Nummer 0 begonnen, dann folgt das BASIC-Programm, | * Ab dem KC 87.2x werden Basic-Programme mit einem willkürlichen Block Nummer 0 begonnen, dann folgt das BASIC-Programm, | ||
| * Es gibt Programme, die nicht die Systemroutinen zum Speichern nutzen und die aufeinanderfolgende Blocknummerierung durcheinanderwirbeln. Hierzu gehören z.B. relokatible Programme wie OS-SAVE. | * Es gibt Programme, die nicht die Systemroutinen zum Speichern nutzen und die aufeinanderfolgende Blocknummerierung durcheinanderwirbeln. Hierzu gehören z.B. relokatible Programme wie OS-SAVE. | ||
| + | |||
| + | In Tools wie [[: | ||
| **Basic-Programme** | **Basic-Programme** | ||
| - | Basic-Programme haben am Anfang 3x dasselbe Zeichen: 0D3h für Basic-Programme, | + | Basic-Programme beginnen mit Block Nummer 1. Ab dem KC 87.2x werden Basic-Programme mit einem willkürlichen Block Nummer 0 davor geschrieben! Dieser Block wird beim Einlesen komplett ignoriert. |
| + | |||
| + | Basic-Programme haben am Anfang 3x dasselbe Zeichen: 0D3h für Basic-Programme, | ||
| Neben dem Standardformat zum Speichern aus Kassette gibt es eine Reihe weiterer Formate: | Neben dem Standardformat zum Speichern aus Kassette gibt es eine Reihe weiterer Formate: | ||
| Zeile 114: | Zeile 159: | ||
| * [[z9001: | * [[z9001: | ||
| * ... | * ... | ||
| + | |||
| ====== Implementierung ====== | ====== Implementierung ====== | ||