Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
z1013:software:headersave [2011/08/28 09:38] – angelegt volkerpz1013:software:headersave [2019/10/28 14:30] (aktuell) – [maintape] volkerp
Zeile 3: Zeile 3:
 Version 5.95, entwickelt Rainer Brosig. Version 5.95, entwickelt Rainer Brosig.
  
-Ausfuerliche Beschreibung des Programm HEADER-SAVE mit einigen +Ausführliche Beschreibung des Programm HEADER-SAVE mit einigen Anmerkungen für  
-Anmerkungen fuer Neueinsteiger:+Neueinsteiger:
  
-Programmstandort:\\+**Programmstandort**:\\
 E000H-E3FFH Start: E3EEH  >CRC=8008<\\ E000H-E3FFH Start: E3EEH  >CRC=8008<\\
 eigentliche SAVE-LOAD-Routine  E000H-E3EDH\\ eigentliche SAVE-LOAD-Routine  E000H-E3EDH\\
 Der Rest ist die Umladeroutine der Kommandoschleife Der Rest ist die Umladeroutine der Kommandoschleife
  
-fuer Grundversion des Z-1013:\\+für Grundversion des Z-1013:\\
 3C00-3FFFH Start: 3FEEH   >CRC=50DF< 3C00-3FFFH Start: 3FEEH   >CRC=50DF<
  
 Es gibt noch andere Generierungsvarianten des Headersaves z.B.  Es gibt noch andere Generierungsvarianten des Headersaves z.B. 
 die im RB-Monitor, womit gleich nach Einschalten des Rechners die im RB-Monitor, womit gleich nach Einschalten des Rechners
-das Headersave verfuegbar ist.+das Headersave verfügbar ist.
  
-Zuerst einige Erleuterungen fuer Neueinsteiger:\\+Zuerst einige Erläuterungen für Neueinsteiger:\\
 Das Headersave-Programm schreibt vor dem auszuladenden Programm einen Kopf auf die Kassette, welche die Angaben: Das Headersave-Programm schreibt vor dem auszuladenden Programm einen Kopf auf die Kassette, welche die Angaben:
  
-  * Anfangadresse - Endadresse - Startadresse+  * Anfangsadresse - Endadresse - Startadresse
   * Typ und Name des Programms   * Typ und Name des Programms
  
 enthalten. enthalten.
  
-Diese Angaben werden beim Einladen auf den Bildschirm geschrieben. Das Programm wird in den richtigen Speicherbereich geladen. +Diese Angaben werden beim Einladen auf den Bildschirm geschrieben. Das Programm  
-Der Typ C (COM-File) kann auch selbst gestartet werden. Es kann +wird in den richtigen Speicherbereich geladen. Der Typ C (COM-File) kann auch  
-auch +selbst gestartet werden. Es kann auch 
  
   * ein bestimmtes Programm gesucht werden,    * ein bestimmtes Programm gesucht werden, 
   * im direkten Modus, auch mehrfach, wieder ausgeladen werden,   * im direkten Modus, auch mehrfach, wieder ausgeladen werden,
   * ein File verschoben geladen werden,   * ein File verschoben geladen werden,
-  * das Notieren der Daten (Adressen, usw.) entfaellt.+  * das Notieren der Daten (Adressen, usw.) entfällt.
  
-Ausserdem kann die Original-LOAD-Routine des Riesaer Monitors des Z1013 weiter zum Laden von Headersave-Programmen genutzt +Außerdem kann die Original-LOAD-Routine des Riesaer Monitors des Z1013 weiter  
-werden (natuerlich ohne Nutzung der Vorteile des HEADERSAVE's). +zum Laden von Headersave-Programmen genutzt werden (natürlich ohne Nutzung der  
-Wenn im L-Modus des Monitors ein mit HEADERSAVE ausgeladenes +Vorteile des HEADERSAVE's). Wenn im L-Modus des Monitors ein mit HEADERSAVE  
-File geladen werden soll, ist >ENTER< erst bei dem Ertoenen +ausgeladenes File geladen werden soll, ist >ENTER< erst bei dem Ertönen des  
-des zweiten KENNTON-Signals zu druecken !!! +zweiten KENNTON-Signals zu drücken !!! 
  
-Letzteres ist wichtig, wenn HEADERSAVE nicht im Monitor-EPROM +Letzteres ist wichtig, wenn HEADERSAVE nicht im Monitor-EPROM steht und geladen  
-steht und geladen werden muss, denn das Headersave selbst +werden muss, denn das Headersave selbst ist ja zu diesem Zeitpunkt noch nicht  
-ist ja zu diesem Zeitpunkt noch nicht verfuegbar.+verfügbar.
  
 von Headersave benutzte Zellen: von Headersave benutzte Zellen:
Zeile 53: Zeile 53:
      ARG 2: 1DH Endadresse File      ARG 2: 1DH Endadresse File
      ARG 3: 23H Startadresse File      ARG 3: 23H Startadresse File
-     DATA+2:15H Zeichenzaehler bei Nameneingabe+     DATA+2:15H Zeichenzähler bei Nameneingabe
  
 Pufferbereich Kopf!!: Pufferbereich Kopf!!:
Zeile 60: Zeile 60:
  
   * Die Original-SAVE-LOAD-Routine aus dem Monitor wird nicht benutzt.   * Die Original-SAVE-LOAD-Routine aus dem Monitor wird nicht benutzt.
-  * Beim Start auf der Startadresse mit J ... wird die Kommando-schleife auf B0H geladen (B0H-B5H). Danach wird wieder in den Monitor mit ? # zurueckgekehrt. Der Start ist also nur eine Initialisierung des Headersaves und noch nicht der eigentliche Start.+  * Beim Start auf der Startadresse mit J ... wird die Kommandoschleife auf B0H geladen (B0H-B5H). Danach wird wieder in den Monitor mit ? # zurückgekehrt. Der Start ist also nur eine Initialisierung des Headersaves und noch nicht der eigentliche Start. 
   * Die Nutzung des Headersaves wird durch ein @... Kommando eingeleitet.   * Die Nutzung des Headersaves wird durch ein @... Kommando eingeleitet.
  
Zeile 70: Zeile 70:
 Das Programm meldet sich mit der Typ-Abfrage:\\ Das Programm meldet sich mit der Typ-Abfrage:\\
 typ: (Hier wird ein Typ nach nachstehender Vorgabe erwartet)\\ typ: (Hier wird ein Typ nach nachstehender Vorgabe erwartet)\\
-filename: (Max. 16-stelliger Name, bei CP/M-Files sollte das Atr. wie im Original angegeben werden z.B: POWER.COM)+filename: (Max. 16-stelliger Name, bei CP/M-Files sollte das Attr. wie im Original angegeben werden z.B: POWER.COM)
                                            
 TYP:  TYP: 
         C-COM-File (Maschinenprogramm), selbststartend         C-COM-File (Maschinenprogramm), selbststartend
         T-allgemeines Text-File         T-allgemeines Text-File
-        B-BASIC-Programm fuer 10K-Basic vom KC 85/1,87 und KC-BASIC+  +        B-BASIC-Programm für 10K-Basic vom KC 85/1,87 und KC-BASIC+  
-        K-BASIC-Programm fuer 10K-Basic vom KC 85/2,3 +        K-BASIC-Programm für 10K-Basic vom KC 85/2,3 
-        L-BASIC-Programm fuer TDL-Basic+        L-BASIC-Programm für TDL-Basic
         b-3-K-BASIC         b-3-K-BASIC
         M-Maschinenprogramm, nicht selbststartend         M-Maschinenprogramm, nicht selbststartend
Zeile 90: Zeile 90:
         Q-mit NSWEEP gequetschte Files         Q-mit NSWEEP gequetschte Files
     Space-ohne Typ     Space-ohne Typ
-        X,Y,Z vorgesehen fuer Urlader-Files(CC Halle)+        X,Y,Z vorgesehen für Urlader-Files(CC Halle)
  
-andere Typkennzeichen muessen beim Autor R. Brosig angemeldet+andere Typkennzeichen müssen beim Autor R. Brosig angemeldet
 werden, um Doppelvergaben zu verhindern. werden, um Doppelvergaben zu verhindern.
  
 FILENAME: max. 16 Zeichen (alle, auch Space, zugelassen) FILENAME: max. 16 Zeichen (alle, auch Space, zugelassen)
- 
  
   * Beim Abspeichern wird in jeden Blockkopf die physische Anfangsadresse eingetragen, welche beim Einlesen ausgewertet werden kann.   * Beim Abspeichern wird in jeden Blockkopf die physische Anfangsadresse eingetragen, welche beim Einlesen ausgewertet werden kann.
   * Das File bleibt trotzdem unter weglassen des Kopfblocks mit dem originalen Monitor-LOAD lesbar! (2.Kennton)   * Das File bleibt trotzdem unter weglassen des Kopfblocks mit dem originalen Monitor-LOAD lesbar! (2.Kennton)
-  * Die Einfuehrung des MEMORY-POINTERS (laeuft als Adress-Zaehler in HEX  mit) erleichtert die Kontrolle ueber den Abarbeitungsstand. +  * Die Einführung des MEMORY-POINTERS (läuft als Adress-Zähler in HEX  mit) erleichtert die Kontrolle über den Abarbeitungsstand. 
-  * Nach dem SAVE-Vorgang kann eine Verify-Funktion genutzt werden,die nur die Blockchecksummen ueberprueft. Bei Abfrage "Verify?" mit "Y" bejahen, jede andere Taste fuehrt in das Monitorprogramm (oder aufrufendes Programm) zurueck. Es erscheint bei "Y" der Auftrag "rewind": Kassette an den Programmanfang zurueckspulen und >ENTER< druecken. Der Memory-Pointer zeigt dabei wieder den Abarbeitungsstand und, im Fehlerfall, die Adresse des fehlerhaften Blocks an. Die Kontrolle erfolgt erst nach dem Lesen eines beliebigen Kopfblocks  und endet nach dem Lesen der zu dem File gehoerenden letzten Kopfadresse. Alles, was gelesen wird, erscheint als ASCII-Interpretation auf der obersten Bildschirmzeile. +  * Nach dem SAVE-Vorgang kann eine Verify-Funktion genutzt werden, die nur die Blockchecksummen überprüft. Bei Abfrage "Verify?" mit "Y" bejahen, jede andere Taste führt in das Monitorprogramm (oder aufrufendes Programm) zurück. Es erscheint bei "Y" der Auftrag "rewind": Kassette an den Programmanfang zurückspulen und >ENTER< drücken. Der Memory-Pointer zeigt dabei wieder den Abarbeitungsstand und, im Fehlerfall, die Adresse des fehlerhaften Blocks an. Die Kontrolle erfolgt erst nach dem Lesen eines beliebigen Kopfblocks  und endet nach dem Lesen der zu dem File gehörenden letzten Kopfadresse. Alles, was gelesen wird, erscheint als ASCII-Interpretation auf der obersten Bildschirmzeile. 
-  * externer Aufruf: CALL SARUF (E003H), moeglichst ueber Sprungverteiler (FFF4H). Der 1. Registersatz und AF' werden zerstoert!+  * externer Aufruf: CALL SARUF (E003H), möglichst über Sprungverteiler (FFF4H). Der 1. Registersatz und AF' werden zerstört!
  
-Parameteruebergabe:+Parameterübergabe:
  
-  Zellen 1BH - Anfangadresse+  Zellen 1BH - Anfangsadresse
        1DH - Endadresse        1DH - Endadresse
        23H - Startadresse        23H - Startadresse
   Akku   3AH - Wiederholen der SAVE-Funktion mit gleichen   Akku   3AH - Wiederholen der SAVE-Funktion mit gleichen
-             Kopf (gilt auch fuer den Kopf eines vorangegan- +             Kopf (gilt auch für den Kopf eines vorangegangenen LOAD) 
-             genen LOAD) +           Typübergabe in H(IY),
-           Typuebergabe in H(IY),+
              sonst H(IY)=0              sonst H(IY)=0
  
--Bei Eingabe von "@S:" wird die SAVE-Funktion mit den alten +-Bei Eingabe von "@S:" wird die SAVE-Funktion mit den alten Kopf-Parametern  
- Kopf-Parametern ausgefuehrt. Diese koennen auch von der LOAD- +ausgeführt. Diese können auch von der LOAD- Funktion stammen (Nutzung zum  
- Funktion stammen (Nutzung zum schnellen Kopieren von Files).+schnellen Kopieren von Files).
  
  
 ===== Laden von Programmen ===== ===== Laden von Programmen =====
  
-@L  -Laden das naechstfolgenden Files ohne Namen- und +**@L** - Laden das nächstfolgenden Files ohne Namen- und Typkontrolle. 
-     Typkontrolle. + 
-@LN -Laden eines Files mit Namen- und Typkontrolle. +**@LN** - Laden eines Files mit Namen- und Typkontrolle. 
-     Es gilt, dass alles signifikant ist, was einge- + 
-     geben wird. Das heisst, wird nur mit >ENTER< quit- +Es gilt, dass alles signifikant ist, was eingegeben wird. Das heißt, wird nur mit >ENTER< quittiert, erfolgt für den Typ oder den Namen keine Kontrolle. Es müssen nur so viele Zeichen eingegeben werden, wie für eindeutige Signifikanz notwendig sind.
-     tiert, erfolgt fuer den Typ oder den Namen keine +
-     Kontrolle. Es muessen nur so viele Zeichen einge- +
-     geben werden, wie fuer eindeutige Signifikanz +
-     notwendig sind.+
  
 ACHTUNG: ACHTUNG:
-Es muss darauf geachtet werden, dass der gewaehlte Name + 
-auf dem Bildschirm stehen bleibt, da kein Nameneinga- +Es muss darauf geachtet werden, dass der gewählte Name auf dem Bildschirm stehen  
-bepuffer existiert. Die LOAD-Routine nutzt dazu den +bleibt, da kein Nameneingabepuffer existiert. Die LOAD-Routine nutzt dazu den 
 Bildschirm als Puffer. Bildschirm als Puffer.
  
--Erfolgt der Aufruf mit X, z.B.: @LNX oder @LXX, wird nach dem +Erfolgt der Aufruf mit X, z.B.: @LNX oder @LXX, wird nach dem Laden auf einen  
- Laden auf einen Autostart bei COM-FILE's verzichtet.(X=alle Zei- +Autostart bei COM-FILE's verzichtet.(X=alle Zeichen außer Space; kann auch  "L"  
- chen ausser Space; kann auch  "L" oder "N" sein;  +oder "N" sein; z.B.: @LLL oder @LAB, bei Namenkontrolle - @LNN oder @LNZ o.ae.).  
- z.B.: @LLL oder @LAB, bei Namenkontrolle - @LNN oder @LNZ  +Dieses ist von Vorteil, wenn der File nach dem Laden sofort auf Kassette kopiert  
- o.ae.). Dieses ist von Vorteil, wenn der File nach dem Laden +werden soll, oder wenn z.B. im M(odify)-Modus Zellen des Files angesehen,  
- sofort auf Kassette kopiert werden soll, oder wenn z.B. im  +geändert oder anderweitig bearbeitet werden sollen.   
- M(odify)-Modus Zellen des Files angesehen, geaendert oder ander- + 
- weitig bearbeitet werden sollen.   +Der Rechner befindet sich so lange in einer Warteschleife, bis ein gültiger  
--Der Rechner befindet sich so lange in einer Warteschleife, bis +Kopf gelesen oder mit >CTRL-C< (S4-K/>BREAK<) abgebrochen wird. Der Abbruch  
- ein gueltiger Kopf gelesen oder mit >CTRL-C< (S4-K/>BREAK<) +gelingt nur bei anliegenden Signal, ansonsten mit >RESET<Ungültige Köpfe  
- abgebrochen wird. Der Abbruch gelingt nur bei anliegenden Sig- +werden angezeigt. Nach sieben Köpfen ist der gewählte  Name aus dem  
- nal, ansonsten mit >RESET<Ungueltige Koepfe werden ange- +Bildschirmbereich gelaufen und es ist kein Laden mehr möglich. Es muss erneut  
- zeigt. Nach sieben Koepfen ist der gewaehlte  Name aus dem +das Ladekommando eingegeben werden. Man sollte also wenigstens in die Nähe des  
- Bildschirmbereich gelaufen und es ist kein Laden mehr moeg- +gesuchten Files spulen. 
- lich. Es muss erneut das Ladekommando eingegeben werden. + 
- Man sollte also wenigstens in die Naehe des gesuchten Files +Soll ein File auf eine andere Adresse geladen werden, als die im Kopf  
- spulen. +angegeben, ist es möglich, eine neue Anfangsadresse anzugeben:  
--Soll ein File auf eine andere Adresse geladen werden, als die + 
- im Kopf angegeben, ist es moeglich, eine neue Anfangsadresse +   '@L XXXX'
- anzugeben:  +
-            '@L XXXX'+
    
- Es werden dabei automatisch der Selbststart gesperrt und die +Es werden dabei automatisch der Selbststart gesperrt und die neue Anfangs- und  
- neue Anfangs- und Endadresse errechnet und angezeigt. +Endadresse errechnet und angezeigt. Diese Funktion ist aber nur ohne  
- Diese Funktion ist aber nur ohne Namensignifikation nutzbar! +Namensignifikation nutzbar! (bei externen Aufruf auch mit).
- (bei externen Aufruf auch mit)+
--Sollte bei einem File, welches mit Blockadressen aufgezeich- +
- net wurde, ein Lesefehler auftreten, oder ein Block ueberle- +
- sen worden sein, so wird das Einlesen unterbrochen und eine +
- Fehlermeldung ausgegeben. Durch kurzes Zurueckspulen und  +
- Druecken von >ENTER< kann versucht werden, den fehlerhaften +
- Block noch einmal zu lesen (analog KC 85/1). Der Memorypoin- +
- ter erscheint, wenn der Lesevorgang fortgesetzt wird. +
--File ohne Kopfblocknummern (HEADERSAVE-Versionen unter 5.0) +
- koennen ab Version 5.8 nicht mehr gelesen werden. Es wird nur +
- der Kopf angezeigt und das Einlesen wird mit "bad record" un- +
- terbrochen. Man kann dieses File im Monitor-LOAD-Modus in den +
- Rechner holen, und dann mit dem neuen HEADERSAVE wieder aus- +
- laden. (in der RB-Monitorversion gibt es dazu das Kommando @LA) +
--Wird ein Blockkopf mit Inhalt 0FFFFH gelesen, wird der Ladevor- +
- gang mit "bad record" abgebrochen.+
  
--externer Aufruf : CALL LORUF (E000H)moeglichst ueber Sprung- +Sollte bei einem Filewelches mit Blockadressen aufgezeichnet wurde, ein  
- verteiler (FFF1H). Der 1. Registersatz und AF' werden zer- +Lesefehler auftreten, oder ein Block ueberlesen worden sein, so wird das  
- stoert.+Einlesen unterbrochen und eine Fehlermeldung ausgegeben. Durch kurzes  
 +Zurückspulen und Drücken von >ENTER< kann versucht werden, den fehlerhaften  
 +Block noch einmal zu lesen (analog KC 85/1). Der Memorypointer erscheint, wenn  
 +der Lesevorgang fortgesetzt wird.
  
-Parameteruebergabe:+Files ohne Kopfblocknummern (HEADERSAVE-Versionen unter 5.0) können ab Version  
 +5.8 nicht mehr gelesen werden. Es wird nur der Kopf angezeigt und das Einlesen  
 +wird mit "bad record" unterbrochen. Man kann dieses File im Monitor-LOAD-Modus  
 +in den Rechner holen, und dann mit dem neuen HEADERSAVE wieder aus- laden. (in  
 +der RB-Monitorversion gibt es dazu das Kommando @LA)
  
-* H(IY)=0   -Typ wird abgefragt +Wird ein Blockkopf mit Inhalt 0FFFFH gelesen, wird der Ladevorgang mit "bad  
-  H(IY)=Typkennzeichen  -Typvorgabe und keine Abfrage Typ +record" abgebrochen.
-* A=0       -ohne signifikante Kopfkontrolle +
-  A=4EH     -mit signifikKopfkontrolle, +
-             Typ und Namensabfrage +
-* L(IY)=20H -Freigabe des Selbststart bei COM-Files +
-* Zellen 1B/1CH=0 oder neue Ladeadresse +
  
--Beim Laden auf eine neue Anfangsadresse muss auf Zelle 1B/1CH +externer Aufruf : **CALL LORUF** (E000H), möglichst über Sprungverteiler (FFF1H).  
- die neue Adresse uebergeben werden (>0FFH), ansonsten m u s s  +Der 1. Registersatz und AF' werden zerstört.
- die Zelle mit 0 initialisiert werden.+
  
-===== Externer Aufruf von Untrprogrammen =====+Parameterübergabe: 
 +<code> 
 +  * H(IY)=0   -Typ wird abgefragt 
 +    H(IY)=Typkennzeichen  -Typvorgabe und keine Abfrage Typ 
 +  * A=0       -ohne signifikante Kopfkontrolle 
 +    A=4EH     -mit signifik. Kopfkontrolle, 
 +               Typ und Namensabfrage 
 +  * L(IY)=20H -Freigabe des Selbststart bei COM-Files 
 +  * Zellen 1B/1CH=0 oder neue Ladeadresse  
 +</code> 
 +Beim Laden auf eine neue Anfangsadresse muss auf Zelle 1B/1CH 
 +die neue Adresse übergeben werden (>0FFH), ansonsten m u s s  
 +die Zelle mit 0 initialisiert werden.
  
 +===== Externer Aufruf von Unterprogrammen =====
  
--Fuer den externen Aufruf wurden noch weitere Unterprogramme zu- + 
- gaenglich gemacht:+-Für den externen Aufruf wurden noch weitere Unterprogramme zugänglich gemacht:
  
 CALL BLMK  (E00CH; SPV: FFC7H) -Lesen eines Blocks CALL BLMK  (E00CH; SPV: FFC7H) -Lesen eines Blocks
  
-          Parameteruebergabe:+          Parameterübergabe:
            Zellen 25H/26H *Kopfinhalt des zu lesenden Blocks            Zellen 25H/26H *Kopfinhalt des zu lesenden Blocks
            HL             *Ladeadresse des Blocks            HL             *Ladeadresse des Blocks
Zeile 212: Zeile 202:
            Zellen 25H/26H *Kopfinhalt+20H            Zellen 25H/26H *Kopfinhalt+20H
            HL             *HL:=HL+20H            HL             *HL:=HL+20H
- +  Achtung!   Das Argument 2 (1D/1EH) muss eine Adresse enthalten, 
-Achtung!   Das Argument 2 (1D/1EH) muss eine Adresse enthalten, +           die größer als die Ladeadresse ist. Das Laden wird
-           die groesser als die Ladeadresse ist. Das Laden wird+
            bei Erreichen der Gleichheit von Arg.2 und Ladeadr.            bei Erreichen der Gleichheit von Arg.2 und Ladeadr.
            (HL) abgebrochen!            (HL) abgebrochen!
Zeile 220: Zeile 209:
 CALL BSMK  (E00FH; SPV: FFC4H) -Schreiben eines Blocks CALL BSMK  (E00FH; SPV: FFC4H) -Schreiben eines Blocks
  
-          Parameteruebergabe:+          Parameterübergabe:
            HL   *Quelladresse Block            HL   *Quelladresse Block
            IX   *Kopfinhalt            IX   *Kopfinhalt
Zeile 228: Zeile 217:
  
 CALL SUCHK (E012H; SPV: FFC1H) -Suchen eines Kopfblocks  CALL SUCHK (E012H; SPV: FFC1H) -Suchen eines Kopfblocks 
-           Uebergabe des Inhalts im Kopfpuffer (E0-FFH), wo er + 
 +           Übergabe des Inhalts im Kopfpuffer (E0-FFH), wo er 
            vom aufrufenden Programm ausgewertet werden kann.            vom aufrufenden Programm ausgewertet werden kann.
  
 CALL AKP   (E015H; SPV: FFBEH) -Aufbereitung des Kopfpuffer CALL AKP   (E015H; SPV: FFBEH) -Aufbereitung des Kopfpuffer
-           Parameteruebergabe wie bei SARUF+ 
 +           Parameterübergabe wie bei SARUF
  
  
Zeile 239: Zeile 230:
  
 -Durch die Interpretation einer Startadresse, die im Bereich -Durch die Interpretation einer Startadresse, die im Bereich
- von 3A00H-3AFFH liegt, als Doppelpunkt, koennen Files mit einer+ von 3A00H-3AFFH liegt, als Doppelpunkt, können Files mit einer
  solchen Startadresse nicht ausgegeben werden.  solchen Startadresse nicht ausgegeben werden.
  
Zeile 248: Zeile 239:
 -Wird der allerletzte Fileblock falsch bzw. nicht gelesen, so -Wird der allerletzte Fileblock falsch bzw. nicht gelesen, so
  erfolgt keine Fehlerausschrift -> entweder durch nochmaliges  erfolgt keine Fehlerausschrift -> entweder durch nochmaliges
- kurzes Zurueckspulen und >ENTER< versuchen den Block doch noch+ kurzes Zurückspulen und >ENTER< versuchen den Block doch noch
  zu lesen, oder mit RESET abbrechen.   zu lesen, oder mit RESET abbrechen. 
  
 -Kann ein Block trotz mehrmaligen Versuchen nicht gelesen wer- -Kann ein Block trotz mehrmaligen Versuchen nicht gelesen wer-
- den (z.B. Knick im Bandmaterial), so besteht die Moeglichkeit,+ den (z.B. Knick im Bandmaterial), so besteht die Möglichkeit,
  diesen Block aus einem Duplikat zu lesen, welches auch Fehler  diesen Block aus einem Duplikat zu lesen, welches auch Fehler
  aufweisen kann (allerdings an einer anderen Stelle). Man spult  aufweisen kann (allerdings an einer anderen Stelle). Man spult
- dazu das Band beim Auftreten eines solch hartnaeckigen Fehlers + dazu das Band beim Auftreten eines solch hartnäckigen Fehlers 
- an den Anfang des Duplikats, drueckt ENTER und wartet, bis + an den Anfang des Duplikats, drückt ENTER und wartet, bis 
- das Einlesen, erkennbar am Memorypointer, weiter laeuft.+ das Einlesen, erkennbar am Memorypointer, weiter läuft.
  
 -Der Kopfpuffer liegt auf den Adressen E0H-FFH. Manche Programme -Der Kopfpuffer liegt auf den Adressen E0H-FFH. Manche Programme
  beginnen entgegen den Software-Richtlinien zum Z1013 schon auf  beginnen entgegen den Software-Richtlinien zum Z1013 schon auf
- Adressen unterhalb 100H. Es kommt zu Ueberlagerungen mit dem + Adressen unterhalb 100H. Es kommt zu Überlagerungen mit dem 
- Kopfpuffer. In solchen Faellen ist es guenstig, das File auf + Kopfpuffer. In solchen Fällen ist es günstig, das File auf 
- 100H zu verschieben und so auszulagen. Durch das Anfuegen einer + 100H zu verschieben und so auszulagern. Durch das Anfügen einer 
- kleinen Umladeroutine am Ende des Programms kann durch das An- + kleinen Umladeroutine am Ende des Programms kann durch das Anspringen der Umladeroutine ein Herunterladen auf die Originaladressen vor dem Start des eigentlichen Programms erreicht
- springen der Umladeroutine ein Herunterladen auf die Original- +
- adressen vor dem Start des eigentlichen Programms erreicht+
  werden.  werden.
  
Zeile 272: Zeile 261:
 ===== Kopfaufbau eines Headersavefiles ===== ===== Kopfaufbau eines Headersavefiles =====
  
-KOPFAUFBAU:  +^ Byte ^ Bedeutung ^ 
- +| 0-1 Anfangsadresse | 
-Byte 0-1   Anfangsadresse +2-3 Endadresse | 
-                 2-3   Endadresse +4-5 Startadresse | 
-                 4-5   Startadresse +6-0BH frei für Zusatzinformationen | 
-                 6-0BH frei fuer Zusatzinformationen +0CH Typkennzeichen | 
-                   0CH Typkennzeichen +0DH-0FH 3 x 0D3H = Kopfkenzeichen\\ (An diesem D3 erkennt jedes Kopfsuchprogramm einen Kopf !!) | 
-               0DH-0FH 3 x 0D3H = Kopfkenzeichen +|10H-1FH 16 Byte Namensblock 
-                       (An diesem D3 erkennt jedes Kopfsuchpro- + 
-                        gramm einen Kopf !!) + 
-               10H-1FH 16 Byte Namensblock.+====== maintape ====== 
 + 
 +entwickelt Martin Duchrow. 
 + 
 +Der Autor schrieb mir 2014: 
 + 
 +maintape ist eine Verbesserung gegenüber Headersave.\\ 
 +Mich störte von Anfang an, dass ich zum Finden von Programmen stets zum Kassettenanfang zurückspulen musste, um den Zählerstand auf 0000 zu stellen, damit ich anschließend bis zur markierten Stelle vorspulen konnte. Deshalb habe ich das originäre Z1013-Kasettenformat um eine Filefolgenummer ergänzt, die beim Abspeichern abgefragt und beim Laden des Z1013-Programms immer auf die aktuelle Position verweist. Meine Listen für die Programme enthielten danach nicht mehr den Stand des Kassettenlaufwerks, sondern die Filefolgenummer 1, 2, 3, ..., A, B, C, ..., a, b, c usw. Diese Filefolgenummer (und der Memory-Pointer zur Anzeige der Position innerhalb des Programms) werden immer angezeigt, wenn der L-Befehl ausgeführt und das Kassettengerät gestartet ist, unabhängig davon ob das Programm schon geladen wird oder nicht. Dadurch hat man die Möglichkeit, das Kassettengerät nach vorn oder hinten zu spulen, bis man das gesuchte File gefunden hat und benötigt den Zählerstand nicht mehr. Ist es das nicht Wert, maintape zu nutzen? Ich wollte es jedenfalls nicht mehr missen. 
 + 
 +Maintape ergänzt demzufolge auch die Kassettenformate des Z1013. Um kompatibel zu bleiben, habe ich den eigentlichen Teil des originären Z1013-Formats beibehalten. Nur füge ich diesem noch 8 Bit hinzu, um meine File-Folgenummer einzubringen. Das originäre L-Kommando merkt davon nichts, da der Block an dieser Stelle schon zu Ende ist und es auf den nächsten Block wartet. Ich habe nur 8 Bit und kein ganzes Byte hinzugefügt - weil es reicht das Alphabet unterzubringen und damit kein unerwünschter Zeitverzug eintritt. Der Datenbereich enthält jetzt also 32,5 Bytes bzw 16,25 Datenwörter.\\ 
 +Um originäre Files mit nur 32 Datenbereichsbytes einlesen zu können, habe ich der Einfachheit halber ein zusätzliches LA-Kommando in meinen Monitor eingefügt. 
 + 
 +Ich habe auch weitere Programme mit meinem maintape ergänzt, z.B. das Programm zum Füllen der RAM-Disk, was vorher mit dem Headersave ausgestattet war.
  
-Bitte nur Original-Versionen des HEADERSAVE mit Beschreibung  
-weitergeben, keine geaenderten Versionen. 
  
  • z1013/software/headersave.1314524293.txt.gz
  • Zuletzt geändert: 2011/08/28 09:38
  • von volkerp