***************************************************************** HEADER-SAVE V 5.9 (C) by RB ***************************************************************** -Programmstandort: E000H-E3FFH Start: E3EEH eigentliche SAVE-LOAD-Routine E000H - E3EDH fuer Grundversion Standort 3C00-3FFF, St:3FEE -benutzte Zellen: DATA: 13H Blockadresse des gelesenen Blocks ZILAD: 25H zu lesende Blockadresse SOIL: 16H Start of Input-Line ARG1: 1BH Anfangsadresse File ARG2: 1DH End -"- ARG3: 23H Start -"- DATA+2:15H Zeichenzaehler bei Nameneingabe Pufferbereich Kopf: 0E0H-0FFH -Die orig. SAVE/LOAD-Routine aus dem Monitor wird nicht benutzt. -Beim Start wird die Kommandoschleife auf B0H geladen (B0H-B5H). -Alle weiteren Aufrufe erfolgen mit @ ... . SAVE: @S anfadr. endadr. startadr. ENTER danach Abfrage TYP und FILENAME TYP: C-COM-File selbststartend T-TEXT-File B-BASIC-Programm M-Maschinenprogramm, nicht selbststartend S-SOURCE-Assemblerquelle (Quelltext) P-PASCAL-Proramm D-DATA-Datenfelder I-Introduction, Informationen E-EPROM-Inhalte SPACE-ohne Typ FILENAME: max. 16 Zeichen (alles zugelassen, auch Space) -Beim Abspeichern wird in jeden Blockkopf die physische Anfangs- adresse eingetragen, welche beim Einlesen ausgewertet werden kann. -Das File bleibt trotzdem unter Weglassen des Kopfblocks mit dem originalen Monitor-Load lesbar! -Die Einfuehrung eines Memorypointers erleichtert die Kontrolle ueber den Abarbeitungsstand. -Nach dem SAVE-Vorgang kann eine Verify-Funktion genutzt werden, die nur die Blockchecksummen ueberprueft. Der Memorypointer zeigt dabei wieder den Abarbeitungsstand und im Fehlerfall die Adresse des fehlerhaften Blocks an. Die Kontrolle erfolgt erst nach dem Lesen eines Kopfblocks und endet nach dem Lesen der zu dem File gehoerenden letzten Kopfadresse. Alles, was gelesen wird, er- scheint als ASCII-Interpretation auf der obersten Bildschirmzeile. -externer Aufruf: CALL SARUF (E003H) moeglichst ueber Sprungver- teiler (FFF4H). Der 1.Registersatz und AF' werden zerstoert! Parameteruebergabe: Zellen 1BH - Anfangsadresse 1DH - Endadresse 23H - Startadresse Akku 3AH - Wiederholen der SAVE-Funktion mit gleichem Kopf (gilt auch fuer den Kopf eines vorangegangenen LOAD) -Typuebergabe in H(IY), sonst H(IY)=0 -Bei Eingabe von @S:: wird die SAVE-Funktion mit den alten Kopf-Parametern ausgefuehrt. Diese koennen auch von der LOAD-Fkt. stammen (Nutzung zum schnellen Kopieren von Files). LOAD : @L - Laden das naechstfolgenden Files ohne Namen- und Typkontrolle @LN - Laden eines Files mit Namen- und Typkontrolle Es gilt, dass alles signifikant ist, was eingege- ben wird, das heisst, wird nur mit Enter quit- 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: Es muss darauf geachtet werden, dass der ge- waehlte Name auf dem Bildschirm stehen bleibt, da kein Nameneingabepuffer existiert. -Erfolgt der Aufruf mit X, z.B. @LNX oder @LXX, wird nach dem Laden auf einen Autostart bei COM-FILE's verzichtet (X=alle Zeichen ausser SPACE). -Der Rechner befindet sich so lange in einer Warteschleife, bis ein gueltiger Kopf gelesen oder mit BREAK (S4-K, CTRL-C) abgebrochen wird. Der Abruch gelingt nur bei anliegendem Signal, ansonsten mit RESET. Ungueltige Koepfe werden angezeigt. Nach sieben Koepfen ist der gewaehlte Name aus dem Bildschirmbereich gelaufen und es ist kein Laden mehr moeglich. Man sollte also wenigstens in die Naehe des gesuchten Files spulen. -Soll ein File auf eine andere Adresse geladen werden, als die im Kopf angegebene geladen werden, ist es moeglich, eine neue Anfangsadresse anzugeben: @L XXXX. Es werden dabei automatisch der Autostart gesperrt und die neue Anfangs- und Endadresse errechnet sowie angezeigt. Diese Funktion ist nur ohne Namensignifikanz nutzbar! (bei exter- nem Aufruf auch mit) -Sollte bei einem File, welches mit Blockadressen aufgezeichnet wurde, ein Lesefehler auftreten oder ein Block ueberlesen 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 Memorypointer erscheint, wenn der Ladevorgang fortgesetzt wird. -Files ohne Kopfblocknummern (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" unterbrochen. -Wird ein Blockkopf mit Inhalt 0FFFFH gelesen, wird der Ladevor- gang mit "bad record" abgebrochen. -externer Aufruf: CALL LORUF (E000H) moeglichst ueber Sprungver- teiler (FFF1H). Der 1.Registersatz und AF' werden zerstoert. Parameteruebergabe: * H(IY)=0 - Typ wird abgefragt H(IY)=Typkennzeichen -> Typvorgabe -> keine Abfrage Typ * A=0 - ohne signifikante Kopfkontrolle A=4EH - mit signifik. Kopfkontrolle, Typ- &> Namenabfrage A=41H - ohne Kopfkontrolle * L(IY)=20H - Freigabe des Autostarts bei COM-FILE's -Beim Laden auf eine neue Anfangsadresse muss auf Zelle 1BH die neue Anfangsadresse uebergeben werden ( > 0FFH), ansonsten muss die Zelle mit 0 initialisiert werden. -Fuer den externen Aufruf wurden noch weitere Unterprogramme zu- gaenglich gemacht: CALL BLMK (E00CH; SPV: FFC7H) - Lesen eines Blocks Parameteruebergabe: Zellen 25H/26H * Kopfinhalt des zu lesenden Blocks HL * Ladeadresse des Blocks Return: Zellen 25H/26H * Kopfinhalt + 20H HL * HL:=HL+20H CALL BSMK (E00FH; SPV: FFC4H) - Schreiben eines Blocks Parameteruebergabe: HL * Quelladresse Block IX * Kopfinhalt DE * Anzahl der Sync.-Bits Return: HL * HL:=HL+20H CALL SUCHK (E012H; SPV: FFC1H) - Suchen eines Kopfblocks und Uebergabe des Inhalts im Kopfpuffer (E0-FFH), wo er vom aufrufenden Programm ausgewertet werden kann. CALL AKP (E015H; SPV: FFBEH) - Aufbereitung Kopfpuffer Parameteruebergabe wie bei SARUF Kopfaufbau: Byte 0 - 1 Anf.adr. 2 - 3 Endadr. 4 - 5 Startadr. 6 -0BH frei fuer Zusatzinformationen 0CH Typkennzeichen 0DH-0FH 3 x 0D3H = Kopfkennzeichen 10H-1FH 16 Byte Namensblock Hinweise, Fehler bitte an R. Brosig, W.Florin 2c, COSWIG, 8270.