Matthias Noack Stand: 05.10.89 PF 44192/E oder: Seeadlerstr.12 Marxwalde Senftenberg-See 1214 7845 *eagle soft* _____________________________________________________________ TAPEMASTER-Ein Serviceprogramm f}r die Arbeit mit Kassetten auf dem KC 85/3 _____________________________________________________________ 1. Allgemeines Das Programm TAPEMASTER f}r den KC 85/3 liegt im Adre~be- reich von 0C000H bis 0DD05H. Das erm|glicht die Nutzung auf einem EPROM-Modul (M025) oder auf einem 16K-RAM (M022), wenn er auf die Basisadresse 0C000H geschalten wird. Au~erdem kommt so die RAM-Floppy zum Einsatz, wie sie z. B. vom Datenbanksystem "RELA" von Uwe Zierott bekannt ist (Arbeit mit 32K-RAM-B{nken, siehe auch /1/). Neu gegen}ber den Vorg{ngern ist die Verwendung von schnellen Bildschirmroutinen (Scrolling, L|schen) und eine anschauliche Men}gestaltung mittels eines farbigen "Lesezeichens". Erm|glicht wird ein problemloses Kopieren, Kontrollesen, ]berpr}fen und Editieren von Dateien aller auf dem KC 85/3 }blichen Formate. Durch die RAM-Floppy kann der Nutzer schon w{hrend des Ladens nach verschiedenen Gesichtspunkten sortieren (Spiel-, Dienstprogramme, Textdateien usw.). 2. Hardwarem{~ige Voraussetzungen F}r ein Grundger{t ohne Erweiterungsaufsatz ist im Schacht 8 ein M025 (EPROM) oder ein M022 (RAM) f}r das Programm TAPE vorzusehen. Es ist dann folgenderma~en zu verfahren: (a) M025: SWITCH 2 0 BASIC aus SWITCH 8 C1 TAPE ein (b) M022: SWITCH 2 0 BASIC aus SWITCH 8 C3 RAM ein LOAD TAPEMASTER laden SWITCH 8 C1 RAM als ROM schalten So kann man mit TAPE schon arbeiten, hat jedoch nur einen Arbeitsspeicher von knapp 16K zur Verf}gung. Die RAM-Floppy l{~t sich nur bei Vorhandensein eines oder mehrerer Module M011 (64K-RAM) oder der auf 256K Speicherkapazit{t umgebauten M011 anwenden. Im Grundger{t wird das Modul im Schacht C kontaktiert und braucht nicht mit SWITCH eingeschaltet zu werden. Nutzt man einen Modul M011, hat man f}r TAPE einen Arbeits- speicher von 80K zur Verf}gung. Mit Erweiterungsaufs{tzen D002 kann man den Speicher noch enorm erweitern. In der Modulpriorit{tskette ganz hinten kann dann noch ein auf die Adresse 4000H "geswitchtes" M022 kontaktiert werden, um die RAM-Ebene 1 auch auf 32K zu ver- gr|~ern. -1- Mit dem folgenden kleinen Programm kann man sich die doch recht aufwendige Schalterei bei Verwendung eines 16K- RAM-Modules im Schacht 8 f}r das Programm TAPE ersparen. Nach Eingabe von TAPE wird es dann erg{nzt und mit SAVE 3FD0 5D05 3FDE abgespeichert. Das M022 mu~ dann auf die Basisadresse 4000H geswitcht werden, was nach Einschalten des Rechners automatisch passiert. Das Zusatzprogramm startet TAPE in RAM-Ebene 2 (erster 32K-Block im gesteckten 64K- oder 256K-Modul im Schacht 0C oder h|her) , falls diese nicht vorhanden ist, in Ebene 1 (Grundger{te-RAM). 2400 ORG 03FDEH 3FDE UP EQU 0F003H ;PV 1 3FDE 3E 03 START LD A,3 3FE0 2E 02 LD L,2 ;Schacht 2 3FE2 16 00 LD D,0 ;BASIC-ROM aus 3FE4 CD 03 F0 CALL UP 3FE7 26 DEFB 26H 3FE8 3E 03 LD A,3 3FEA 2E 08 LD L,8 ;Schacht 8 3FEC 16 C1 LD D,0C1H ;TAPE auf 0C000H 3FEE CD 03 F0 CALL UP ;und als ROM 3FF1 26 DEFB 26H 3FF2 3E 01 LD A,1 3FF4 32 81 B7 LD (0B781H),A ;ARGN=1 3FF7 21 02 00 LD HL,2 ;Dateinummer f}r 3FFA 22 82 B7 LD (0B782H),HL ;Start in ARG1 3FFD C3 70 CB JP 0CD62H ;Ansprung TAPE 3. Programmbeschreibung Befindet sich TAPEMASTER ordnungsgem{~ im Speicher, stehen im CAOS-Men} folgende zus{tzlichen Kommandos zur Verf}gung: -QUICK.... Einschalten der schnellen Bildschirmroutinen zur Nutzung au~erhalb von TAPE. -TAPE..... Aufruf von TAPE, ggf. mit Parameter zur Festlegung der zu nutzenden RAM-Ebene (siehe RAM-DISK!), ohne Parameter wird TAPE in Ebene 1 (Grundger{te-RAM) gestartet. -RETAPE... Warmstart von TAPE, ggf. mit Parameter wie bei TAPE -RESET.... R}cksetzen der schnellen Routinen, bevor das TAPE- Modul abgeschaltet wird. Es ist darauf zu achten, da~ RAM-Ebene 1 eingestellt ist! Nach dem Start von TAPE kann dann mit dem oben erw{hnten Lesezeichen zwischen folgenden Funktionen gew{hlt werden: LOAD...... Dateien laden (bis Memory-end oder max. 30 pro Ebene) SAVE...... Abspeichern auf Kassette (Auswahl mit /) DAT.-EDIT. Editoraufruf zur Manipulation der geladenen Files RAM-DISK.. Umschalten der RAM-Ebenen in 32K gro~en Bl|cken VERIFY.... Kontrollesen bis Abbruch , Fehlerprotokollierung TAPELIST.. Auswerten der Kopfbl|cke von Dateien EXIT...... Zur}ck zum CAOS Der insg. verf}gbare Speicherplatz und die aktuelle RAM-Ebene werden ebenso wie die wichtigsten Hinweise st{ndig angezeigt. -2- LOAD Mit LOAD k|nnen beliebige Programme und Dateien in den Spei- cher geladen werden. TAPEMASTER bietet hier gegen}ber bisher g{ngigen Kopierprogrammen etwas mehr Service, da eingeladen werden kann, bis der Arbeitsspeicher der eingestellten RAM- Ebene voll ist. Handelt es sich um kleine Programme, k|nnen davon 30 geladen werden. Das d}rfte aber nur sehr selten vor- kommen. Au~erdem wird bei Aufruf der Load-Funktion "New? (Yes/No)" abgefragt. Dadurch wird es m|glich, zu den vorhandenen Dateien im Speicher nach anderen Aktionen wie z. B. Laden in einer anderen Ebene (zum Sortieren), Editieren, Abspeichern usw. weitere dazuzuladen. Das Laden eines jeden Files von der Kassette wird mit eingeleitet. Will man das Einladen beenden und zur}ck in das Hauptmen}, ist zu dr}cken. Nach dem Einlesen jeder einzelnen Datei wird der noch verf}g- bare Speicherplatz in Bytes/Hex hinter "free memory:" angezeigt. Treten w{hrend des Ladens Lesefehler auf, erfolgt die Ausgabe von Sternen hinter der Blocknummer und die Aufforderung "tape rewind!". Nun kann zur}ckgespult und erneut gelesen werden, wie es von der normalen Load-Routine des CAOS bekannt ist. Der Ladevorgang kann bei anliegendem Pegel mit jeder be- liebigen Taste abgebrochen werden. WordPro-Dateien werden ab 2. Vorton geladen. Bei Wiederver- wendung wird WordPro initialisiert und die Datei mit dem CAOS-LOAD geladen. Danach ist ein Warmstart mit WordPro durchzuf}hren! SAVE Mit SAVE werden die im Speicher der eingestellten RAM-Ebene befindlichen Dateien und/oder Programme wieder auf Kassette ausgegeben. Die Auswahl erfolgt auch hier mit oder , es m}ssen also nicht alle geladenen Dateien wieder abgespeichert werden. Das Saven kann mit jeder beliebigen Taste abgebrochen werden. DAT.EDIT Hiermit kann ein kleiner Editor f}r die unter Umst{nden zu ver{ndernden Programme und Dateien aufgerufen werden. Er meldet sich mit einem Men}, in dem die zur Verf}gung stehen- den Befehle aufgelistet sind. Ein mit dem Kursor in die gew}nschte Zeile gehen, wie es viele "langsame Tipper" im CAOS gerne machen, empfiehlt sich hier nicht. F}r die Aus- f}hrung des Befehles werden als Kommando nur die gro~ ge- schriebenen Buchstaben eingegeben. In der letzten Men}zeile steht nach "loaded files:" die Anzahl der in der RAM-Ebene befindlichen Dateien, die als Maximalparameter f}r die Kommandos DAT, RENAME, PROT, UNPROT zu verstehen ist. -3- ------------------------------------------------------------- Kommando Syntax, Erl{uterung ------------------------------------------------------------- HELP oder ? Ohne Parameter, zeigt Men}bild. ------------------------------------------------------------- daT T n n...Filenummer Zeigt Daten der unter dieser Nummer geladenen Datei an (Kopfblock, absolute Adressen im TAPE- Speicher). ------------------------------------------------------------- Prot P n n...Filenummer Setzt Byte 12 im Kopfblock auf 1, d.h. da~ so- fort nach Einlesen dieses Blockes kein wie sonst }blicher Abbruch des Ladevorganges mehr m|glich ist und bei RESET ein Systemkaltstart durchge- f}hrt wird. ------------------------------------------------------------- Unprot U n n...Filenummer Siehe Prot, Byte 12 wird auf 0 gesetzt. ------------------------------------------------------------- DIR DIR Zeigt alle in der RAM-Ebene geladenen Dateien an (Nr.-Name-Schutz-Adressen). ------------------------------------------------------------- Rename R n n...Filenummer Der Name der aufgerufenen Datei kann ge{ndert werden. Dateitypen: COM, ASM, TXT, (F), BAS Am ratsamsten ist es, bei der Namens{nderung den urspr}nglichen Dateityp beizubehalten. ------------------------------------------------------------- Dump D aa ee s aa...Anfangsadresse ee.......Endadresse s......Schrittweite Entspricht dem CAOS-Kommando DISPLAY. ------------------------------------------------------------- Modify M aa aa...Adresse entspricht dem CAOS-Kommando MODIFY. ------------------------------------------------------------- Find F aa (n1 (n2 ... n9)) aa...Anfangsadresse Suchen nach Bytefolgen n1 bis maximal n9 ab Adresse aa. Werden keine Bytes eingegeben und nur die Anfangsadresse, wird im Anschlu~ nach dem zu suchenden Text gefragt. Die Texteingabe wird mit abgeschlossen. Wird das Gesuchte gefunden, geht das Programm in den Display-Modus }ber (-->Modify-Modus, -->weiter anzeigen, -->Ende, zur}ck zum Find-Modus). Im Find-Modus kann mit beendet werden. Alle anderen Tasten bewirken ein FIND-NEXT. ------------------------------------------------------------- ComPare CP aa1 aa2 ll aa1...Beginn Bereich 1 aa2...Beginn Bereich 2 ll...............L{nge Es wird der bei aa1 beginnende Speicherbereich mit dem bei aa2 beginnenden auf einer L{nge von ll verglichen. Verschiedene Bytes werden ausgegeben. Abbruch mit , Halt mit ------------------------------------------------------------- -4- ------------------------------------------------------------- Copy C vv nn ll vv....Adresse von nn...Adresse nach ll..........L{nge Kopiert Speicherbereich von vv nach nn mit einer L{nge von ll. (mit ]berlappungskontrolle) ------------------------------------------------------------- FIll FI aa ee n aa...Adresse von ee...Adresse bis n.......F}llbyte F}llt den Bereich von aa bis ee mit n. ------------------------------------------------------------- RAM-DISK Nach dem Aufruf wird die Nummer des gew}nschten RAM-Files ab- gefragt. Eine Einstellung mit >1 wird nur bei Best}ckung des Ger{tes mit 64K- oder 256K-Modulen durchgef}hrt. Grundger{te-RAM: Ebene 1 16K (32K mit M022 am Ende der Modulkette) M011/Schacht C : Ebene 2 u. 3 32K VERIFY Der Befehl dient dem ]berpr}fen von Kassettenaufzeichnungen. Die Kassette wird eingelegt und gestartet. Dann werden fort- laufend alle Files }berpr}ft, bis bei anliegendem Pegel die Funktion abgebrochen wird. Auftretende Lesefehler werden protokolliert. TAPELIST TAPELIST dient der Auswertung von Kopfbl|cken aufgezeichneter Daten. Mit wird der n{chste Block in den Kassetten- puffer gelesen, mit die Funktion verlassen und mit wird das Lesen abgebrochen, wenn es sich nicht um erste Bl|cke handelt. Die Auswertung geschieht in eindeutiger Weise; ein "!" signalisiert, da~ die Datei gesch}tzt ist. EXIT Mit EXIT wird TAPE verlassen und in die CAOS-Systemschleife zur}ckgesprungen. ----------------------------------------------------------------- ! Geliefert wird eine Version mit Autostart wie unter Punkt 2 ! ! beschrieben. ! ! Mit Fragen und Problemen wenden Sie sich bitte an mich. Eben- ! ! so bin ich an Ihrer Meinung zum Programm und der Art und ! ! Weise der Verbreitung interessiert. ! ! Die Nachnahme ist f}r den Aufwand beim Erledigen der vielen ! ! Post (Kassetten bespielen, Beschreibungen Drucken+Papier, ! ! Verpacken usw.); ich denke, Sie haben daf}r Verst{ndnis. ! ! ! ! Matthias Noack ! ----------------------------------------------------------------- /1/ U. Zierott, "Dateiorganisation mit M011", MP 01/88, S. 32 FCB-]bersicht f}r KC85/2 bis /4¨ Erg{nzung zu TAPMASTER¨ --------------------------------------------------------------¨ I Adresse im I Byte I Datei erzeugt mit I¨ I Tape-Puffer I Nr. I SAVE (CAOS) I CSAVE(*)/LIST#1(BASIC)I¨ --------------------------------------------------------------¨ I 0B700H I 01 I I I¨ ---------------------- - Kennung -¨ I 0B701H I 02 I I (3 bytes) I¨ ---------------------- - -¨ I 0B702H I 03 I I I¨ ---------------------- Name -------------------------¨ I 0B703H I 04 I (8 bytes) I I¨ ---------------------- - -¨ I 0B704H I 05 I I I¨ ---------------------- - -¨ I 0B705H I 06 I I I¨ ---------------------- - -¨ I 0B706H I 07 I I Name I¨ ---------------------- - (8 bytes) -¨ I 0B707H I 08 I I I¨ -------------------------------------- -¨ I 0B708H I 09 I I I¨ ---------------------- Dateityp - -¨ I 0B709H I 10 I (3 bytes) I I¨ ---------------------- - -¨ I 0B70AH I 11 I I I¨ --------------------------------------------------------------¨ I 0B70BH I 12 I Reset-Schutz I L{nge des Files I¨ -------------------------------------- (2 bytes) -¨ I 0B70CH I 13 I I I¨ ---------------------- -------------------------¨ I 0B70DH I 14 I Hersteller- I I¨ ---------------------- zeichen - -¨ I 0B70EH I 15 I (4 bytes) I I¨ ---------------------- - -¨ I 0B70FH I 16 I I I¨ -------------------------------------- -¨ I 0B710H I 17 I ARGN I I¨ -------------------------------------- -¨ I 0B711H I 18 IAnfangsadresse I I¨ ---------------------- (2 bytes) - ab hier Programm -¨ I 0B712H I 19 I I I¨ -------------------------------------- -¨ I 0B713H I 20 I Endadresse I I¨ ---------------------- (2 bytes) - -¨ I 0B714H I 21 I I I¨ -------------------------------------- -¨ I 0B715H I 22 I Startadresse I I¨ ---------------------- (2 bytes) - -¨ I 0B716H I 23 I I I¨ -------------------------------------- -¨ I 0B717H I 24 I I I¨ ---------------------- im Normalfall - -¨ I . . . I unbenutzt I I¨ ---------------------- - -¨ I 0B7FFH I 128 I I I¨ --------------------------------------------------------------¨ Die Adressen beziehen sich auf die Normaleinstellung des¨ Kassettenpuffers mit 0B700H-0B7FFH.¨ Reset-Schutzbyte (0B70BH)=01 --> dann wird sofort nach dem¨ Laden des FCB das Bit 7 von IX+7 gesetzt. Danach f}hrt ein¨ Reset zum Systemkaltstart. Ein Abbruch des Ladevorganges mit¨ oder w}rde in diesem Fall auch Datenverluste¨ zur Folge haben.¨ Im Normalfall enth{lt die Speicherzelle 0.¨ ARGN = 02 ..... Laden ohne Autostart¨ = 03 ..... Laden mit Autostart und Umrechnung der¨ Startadresse bei LOAD mit Offset¨ = 04-07 .. wie bei 03, jedoch ohne Startadressen-¨ umrechnung¨ Kennung der BASIC-Dateien: erzeugt mit: gesch}tzt:¨ -------------------------------------------------------------¨ 0D3H CSAVE nein¨ 0D4H CSAVE* nein¨ 0D5H LIST#1 nein¨ 0D7H CSAVE ja¨ 0D8H CSAVE* ja¨ 0D9H LIST#1 ja¨ Der "Schutz" gilt f}r LIST, EDIT und CSAVE nach dem Laden und¨ bedeutet, da~ der Inhalt der Speicherzellen 861 und 862¨ ungleich Null ist. Vor dem Saven dieser Files erfolgte POKE¨ 861,X mit X<>0.¨ eitung des Assemblers¨