Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
z9001:software:os:kassetteninterface [2024/12/05 12:58] volkerpz9001: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, wurde von Dr. Ulrich Kordon, Dresden, entwickelt, als ausreichend sicher gefunden und auf alle DDR-HC übernommen.
 +
 +Deshalb benutzt der Z9001 im Prinzip das gleiche Kassettenaufzeichnungsformat wie auch die Mühlhauser Rechner HC900 und Nachfolger KC85/2..KC85/4. Aber - leider nur im Prinzip. Die Frequenzen sind leicht anders (aber im Toleranzbereich), und der Kopfblock / FCB wird bzgl. Parametern anders genutzt. Basic-Programme können gegenseitig geladen und gestartet werden, sofern keine inkompatiblen BASIC-Befehle darin vorkommen.
 +
  
 ===== Physisches Aufzeichnungsformat ===== ===== Physisches Aufzeichnungsformat =====
Zeile 26: Zeile 32:
 a) Dateiaufbau: a) Dateiaufbau:
  
-Block 0 Dateikopf\\ +Block 0 DateikopfInhalt ist der komplette FCB (siehe FCB)\\
-Inhalt ist der komplette FCB (siehe 2.3.4.)\\+
 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 TrennzeichenBlock 0 6000 Trennzeichen, sonst 160 Trennzeichen\\
-Block 06000\\ +
-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, wurde von Dr. Ulrich Kordon entwickelt, als ausreichend sicher gefunden und auf alle DDR-HC übernommen.+====== Der FCB ======
  
-Deshalb benutzt der Z9001 im Prinzip das gleiche Kassettenaufzeichnungsformat wie auch die Mühlhauser Rechner HC900 und Nachfolger KC85/2..KC85/4Aber - leider nur im Prinzip:+Zum Laden und Speichern auf Kassette nutzt das Betriebssystem einen speziellen Speicherbereich, den **File Control Block (FCB)**.
  
-  * 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, um die Datei bei erneutem Einlesen eindeutig 
 +identifizieren zu können. Zum Einlesen ist der Systemruf 13 (OPENR) zu verwenden. Die 
 +Anfangsadresse des FCBs ist 5CH. 
 + 
 +Aufbau des FCBs: 
 + 
 +^ Adresse  ^ Inhalt                                                              ^ Bemerkung 
 +| 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    | 'N' - Laden ohne Kopfblock                                          | USB-OS     | 
 +| 0075H    | LEADR - letzte beschriebene Adresse                                 | USB-OS     | 
 + 
 +Hinweise: 
 +  * vor OEPNW sind durch den Anwender Dateiname, Dateityp, Anfangsadresse, Endadresse, Startadresse und Schutzbyte zu initialisieren 
 +  * 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, Endadresse, Startadresse und Schutzbyte durch die von Kassette gelesenen aktualisiert (nicht bei 'file not found'
 +  * 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. [[..:..:erweiterungen:massenspeicher|]] 
 + 
 +====== 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. 
 + 
 +  * Systemprogramme beginnen mit dem Block Nummer 0 und haben als Endekennung den Block Nummer 255 (0FFh). Beim HC900/KC85.2 ff.  beginnen Systemprogramme mit dem Block Nummer 1. Das übersehen leider viele Tools und Emulatoren
 +  * 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, dann folgt manchmal noch ein willkürlicher Block Nummer 255. Diese Außenblöcke stören nur und können gefahrlos entfernt werden.   * Ab dem KC 87.2x werden Basic-Programme mit einem willkürlichen Block Nummer 0 begonnen, dann folgt das BASIC-Programm, dann folgt manchmal noch ein willkürlicher Block Nummer 255. Diese Außenblöcke stören nur und können gefahrlos entfernt werden.
   * 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 [[:programme:tc_listtap|]] werden verschiedene Ausprägungen analysiert. Details entnimmt man bei Bedarf dem Quellcode.
  
 **Basic-Programme** **Basic-Programme**
  
-Basic-Programme haben am Anfang 3x dasselbe Zeichen: 0D3h für Basic-Programme, 0D4h für Basic-Data-Feld-Dateien, 0D5h für ASCII-Listings. Wurde ein SAVE-Schutz mittels POKE 861,<>0 eingeschaltet, erhalten die BASIC-Programme die Codenummern 0D7h, 0D8h bzw. 0D9h. Dann folgen 8 Zeichen für den Dateinamen (mit Leerzeichen aufgefüllt).+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, 0D4h für Basic-Data-Feld-Dateien, 0D5h für ASCII-Listings. Wurde ein SAVE-Schutz mittels POKE 861,<>0 eingeschaltet, erhalten die BASIC-Programme die Codenummern 0D7h, 0D8h bzw. 0D9h. Dann folgen 8 Zeichen für den Dateinamen (mit Leerzeichen aufgefüllt), 2 Zeichen Programmlänge, und dann das komprimierte BASIC-Programm (s. BASIC).
  
 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:software:turbo|verschiedene TURBO-Lader]]   * [[z9001:software:turbo|verschiedene TURBO-Lader]]
   * ...   * ...
 +
  
 ====== Implementierung ====== ====== Implementierung ======
  • z9001/software/os/kassetteninterface.txt
  • Zuletzt geändert: 2025/12/16 14:28
  • von volkerp