Fortsetzung Beschreibung Editor Binder Relativspruenge mit zu grosser Distanz werden durch Absolutspr. ersetzt. Nach jeder Fehlerausschrift wird ENTER betätigt, um weitere Fehler zu finden. Erst wenn beim Bindelauf keine Fehlerausschrift erfolgte, war dieser erfolgreich und ist das Progr. lauffaehig! Die Markentabelle wird beim Binden nicht verändert. RAM-Modus Der RAM-Modus meldet sich mit 64 Datenbytes in folgender Form: aaaa 00 01 02 03 04 05 06 07 bbbb> 08 09 0A 0B 0C 0D 0E 0F 10 11 12>13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F Die Anfangsadresse steht links oben (aaaa). Die vor dem Zeichen> stehende Adr bezeichnet die RAM-Zelle, auf die sich die naechste Eingabe bezieht. Der Kursor steht nach dem > . Hier können Datenbytes als Hexaziffern eingetragen werden. Falsche Eingaben werden mit S4-W geloescht. Die Eingabe eines Byte wird mit ENTER vollzogen. Die gleichen Daten koennen durch weiteres Betätigen von ENTER auf die nächsten Eingabeadressen gegeben werden. Das Zeichen > ist in der Datenbyteausschrift wiederzufinden und kennzeichnet nochmals das aktuell anstehende Byte. Es wirkt hier gleichzeitig als Cursor und lässt sich mit den Kursorsteuertasten bewegen (-> <- S4-S S4-R). Am oberen und unteren Bildrand wird gerollt. Das aktuelle Datenbyte bleibt so immer im Anzeigebereich. Die Adressen am linken oberen Bildrand werden ständig aktualisiert. Kommandos im RAM-Progr.: Kdo Zusatz Funktion ________________________________ S4-R Rollen S4-S Rollen -> Eingabeadr incr. <- Eingabeadr decr. 0...9 Eingabedaten A...F angeben S4-W ENTER Eingabedaten uebernehmen;Adr incr. I eeee Eingabedaten auf ENTER Bereich ab Eingabeadr bis ausschl. eeee eintragen M qqqq ENTER Daten ab Adr qqqq eeee ENTER bis ausschliessl. eeee auf Bereich ab Eingabeadr verschieben. G aaaa ENTER Anzeige der Zieladr aaaa OFF Verlassen des RAM-Mod. I } Ignorieren der Kdo's M }OFF G } Das Kommando "I" dient zum Eingeben von Daten im Block bis zu einer Endadresse. Nach dem Betätigen von I steht der Cursor in der 3. Zeile. Hier wird die 4-Stellige hexadezimale Endadresse verlangt. Die Eingabe wird mit ENTER abgeschlossen bzw. mit OFF ignoriert. Die Übernahme der nach > angegebenen Daten in erfolgt nur bei richtigen Angaben und wenn die Endadresse größer als die Anzeigeadresse ist. Das Kommando "M" dient dem Verschieben von Bytes. Verschoben wird auf den Bereich ab Anzeigeadresse. Nach "M" werden die Anfangs und die Endadresse des Quellbereiches angefordert. Sie werden jeweils mit ENTER bestätigt. Beim Umladen wird der Quellbereich gelöscht (zu FFH). Die Überlappung von Quelle und Ziel ist teilweise möglich. Die Kommandos "M" (move) bzw. "I" (initialise) entsprechen den Monitorkommandos "T" (Transfer) bzw. "K" (Kill). Ein besonderer Vorteil des RAM-Modus ist seine Echtzeitfähigkeit (im Gegensatz zu "D" oder "M" des Monitors). D.h. die Anzeige der Speicherzellen erfolgt dynamisch, sodass sich ändernde RAM-Inhalte beobachtet werden können. Durch die Möglichkeit der Vorbereitung der Dateneing. (Ausführung gezielt mit ENTER) kann auch in laufende Programme (Interruptebenen) eingegriffen werden. Ebenso ist die Einbindung nur des RAM-Programmes in ein Echtzeitbetriebssystem denkbar (ohne Editor). Damit werden auch Programme beobachtbar, die nicht über Interrupt laufen, sondern von dem genannten EZ-BS verwaltet werden. Wie der RAM- Modus ohne Editor zu handhaben ist, wird im folgenden Abschnitt erlaeutert. Nutzung des RAM-Programms ohne Editor Das RAM-Programm benutzt die Zellen 00D4 und 00D5 als Arbeitszellen. Es ist als Unterprogr. geschrieben, endet also mit RET. Die Startadresse ist 2EBE. Zuerst wird der Editor V8 geladen. Zum Start des Pr. werden2 MC-Befehle auf beliebigen Adr.(zB. 0200H) benötigt: 0200 CALL 2EBEH 0203 JMP 0F000H Wird nun mit dem Monitor-Kdo. # J 0200 gestartet, ist der RAM wie im Editor manipulierbar. Die Betätigung der OFF-Taste führt in das BS zurück. Diese Nutzungsmoegl. hat den Nachteil, dass der gesamte Editorbereich (2C00-3FFF)belegt ist. Das RAM-Pr. lässt sich durch folgende Schritte im Monitor einfach auf 1K (2C00-2FFF) abrüsten. Damit steht der Bereich 3000-3FFF wieder zur freien Verfügung. # M 3B77 ENTER E5 # 12 2C; ENTER # M 3B7B ENTER E5 # 12 2C ENTER # T 3B74 2C2F 0B ENTER # M 2C28 ENTER 74 # 2F 2C; ENTER # K 3000 3FFF FF ENTER Diese Reihenfolge ist einzuhalten. Nun kann wieder wie oben beschrieben gestartet werden. Es ist weiterhin möglich, vor dem Start die gewünschte Anzeigeadr in 00D4 und 00D5 (L-H) einzutragen. SPEICHERBELEGUNG EDITOR 002B Kursorpos. 002C Zwischensp. Kursor 00D0- Tabulatoren 00D3 00D4 Merkzellen f."RAM" 00D5 0100- Stack 01FF 2C00- Unterpr.f.Editor u."RAM" 2EBD 2EBE- "RAM"-Pr.d.Editors 2FFF 3000- Editor 3BFF 3C00- Listen f. Editor 3FFF ED00- Bildwiederholspeicher EDFF Außer den hier angegebenen Speichern werden mit Ausnahme der MTB(+20H Byte) keine weiteren benötigt, benutzt oder geändert. Bei Nutzung nur des RAM-Pr. wird der Anwenderstack des Z1013 genutzt. Bei Nichtausreichen des Stacks, insbesondere in Verbindung mit Interruptroutinen, ist dieser entspr. auf einen größeren Adressraum zu verlegen. Vom Betriebssystem des Z1013 werden die Routinen OUTCH u. INKEY genutzt. VIEL ERFOLG BEI DER ERSTELLUNG VON MA- SCHINENPROGRAMMEN!! Ende Änderungen und Hinweise nach Redaktionsschluss ——————————————————————— - als Cursorzellen werden statt 2BH und 2CH die Zellen D6H und D7H genutzt. - die Beschreibung bezieht sich auf die Version 9 (ohne Test) - Namen von gestrichenen Marken sollten notiert werden. Sie können mit gleichem Namen spaeter wiederverwendet werden. Nur so ist die Nutzung aller 127 moeglichen Marken realisierbar. - externe Marken sollten ausserhalb des Speicherbereiches liegen, auf dem das Progr. geschrieben wird. Andernfalls wer den diese bei Nutzung der Kdos E# und S# mit verschoben. Erforderlichenfalls muss hier die Zuweisung der Adressen unmittelbar vor dem Binden erfolgen bzw mit G#0 überprüfen - ein mit EXT vereinbarter Markenname bleibt extern, auch nach Streichung und Wiederverwendung. Eine einfache Marke kann in eine EXT-Marke geändert werden. - für eigene Erweiterungen des Editors stehen im Anzeigemodus die Kdo's "X" und "C" zur Verfügung. Diese werden auf 3127 bzw. 3122H abgefragt und können von dort mit JPZ verzweigt werden: 3122 CMP 043H ;"C"? 3122 CMP 043H JPZ CCC 3127 CMP 058H JPZ XXX Damit verändert sich die Prüfsumme. Diese wird ab 2C2FH berechnet (Summe über gesamten Programmspeicher = 0).Im Anschl. an die Prüfsummenberechnung folgt das erforderliche Ausgl.-byte( nach RET). Die eigenen Erweiterungen müssen mit RET enden und führen in den Anzeigemodus zurück. Folgende Unterprogramme können zum Dialog auf dem kleinen BS des Editors genutzt werden: BSS 2C06 BBZ 2C1E BSL 2C09 TXS 2C21 BKS 2C0C BSZ 2C24 BKL 2C0F HDS 2C27 HBS 2C12 BSN 2C2D HDA 2C15 ZLE 2C18 Erläuterungen BBS 2C1B folgen UP EING-REG AUSG-REG -------------------------------- BSN A A BSS A,DE - BSL DE A BKS DE - BKL - DE HBS A,DE - HDS HL,DE - HBA DE A HDA DE HL ZLE A,DE HL,AF BSZ A,DE,C - BBS - Cy BBZ DE,C Cy TXS HL HL;A=undef. Funktionen: BSN Zeichen auf Cursorposition bzw. Steuerzeichen ausführen BSS Zeichen schreiben BSL -"- lesen BKS Cursor setzen BKL -"- -pos. lesen HBS Byte schreiben HDS Doppelbyte schreiben HBA Byte lesen (mit Anforderg.) HDA Doppelbyte wie HBA ZLE Zahl lesen;bit7,A=1->HEX =0->DEZ BSZ Zeichen in Zeile schreiben BBS Taste auf BS bis ENTER/OFF BBZ Taste auf Zeile (wie BBS) TXS Text ausschreiben Reg.DE gibt eine Displayposition an nach: D=Zeile (0-7) E=Spalte (0-31);E>32-> next line Um alle möglichen Steuerzeichen zu nutzen, sollte die Tastaturroutine des Editors (2C2AH) verwendet werden. BSN: schreibt das Zeichen in A (ASCII) ab Cursor auf Bildschirm und rückt den Cursor.Steuerzeichen werden ausgeführt: 08 Cursor links 09 -"- rechts 0A -"- nach unten 0B -"- -"- oben 0C CLS 0D Cursor an Zeilenanfang 1A Zeichen streichen 18 Zeile löschen ; 02 home BBS: schreibt Zeichen in A auf Position DE BSL: liest Zeichen von Pos. DE nach A BKS: setzt Cursor auf Pos. DE BKL: liest Cursorposition nach DE HBS: schreibt Zahl aus A in 2 Hexaziffern auf Pos. DE HDS: schreibt Zahl aus HL ab Position DE HDA: fordert hex.Zahlenwert in Form von 4 Hexaziffern ab Position DE (aktiviert Tastatur) ZLE: liest beliebig lange Zahl hex oder dez ab Position DE. Maximal zu lesende Ziffernzahl wird in Bit 0...6,A übergeben. Bit7,A=0 als Dezimalzahl; Bit7,A=1 als Hexazahl. Gelesener Wert in HL Cy Z A HL Kommentar 0 0 *1 Zahl mit allen Ziff gel 0 1 *1 00 Zahl ist 0 1 0 *2 Zahl weniger Ziff geles 1 1 0 00 1.Pos.keine Ziffe *1 (A)=ASCII des letzten Zeichen *2 (A)=Anzahl der gelesenen Ziffern (binär) BSZ: ASCII-Zeichen in A auf Cursorposition, wenn Cursor auf einer Pos. der Zeile D und der Spalten E bis E+C befindet. BBS: Taste auf Bildschirm bis ENTER oder OFF betätigt wurde Cy=1:OFF betätigt; Cy=0:ENTER BBZ: wie BBS, aber in Grenzen wie BSZ TXS: Schreiben eines durch HL gezeigerten Textes (Folge von ASCII und Steuerzeichen). Das 1. und das letzte Byte des Textes wird durch Bit 7=1 markiert. TNS: nummerierten Text schreiben; wie TXS, nur dass mehrere mit Bit7 gekennzeichnete Texte hintereinander stehen. HL zeigert den Anfang der Texttabelle; A gibt die lfd. Nr. des Textes an. (verwendet TXS) Die Beschreibung der Unterprogramme ist als Hinweis zu verstehen und erhebt keinen Anspruch auf Vollständigkeit!!!! Sie ist sozusagen eine Hacker-Hilfe.