************************************************************ * * * R - 8 0 R E A S S E M B L E R ver. RB * * * ************************************************************ >CRC=5982< Der R-80 Reassembler ist ein Programm , das selbstaendig Zeichenketten und Datenbytes erkennt und Z-80 oder SYPS K-1520 lesbare Quelltexte erstellt. Dabei werden Absolutadressen in Marken umgewandelt. Somit ist es fuer den Anwender leicht moeglich Maschinenprogramme zu reassemblieren, daraus eine Assemblerquelle zu erstellen, zu aendern und evt. auf einer anderen Adresse zu stationieren. Das Programm nutzt den HEADER ueber Standardrufe BLMK/BSMK sowie LORUF/SARUF (SV), Auerdem besitzt das Programm einen Druckertreiber, der ASCII-Zeichen im A-Register uebergibt. Ebenfalls wird vor dem Druck ein Druckerinit durchgefuehrt (Ankopplung ueber SV). Das zu reassemblierende Programm muss auf eine Adresse ab 6000H geladen werden, da der untere Bereich fuer Arbeitstabellen reserviert ist. Im Offset wird die Verschiebung zum Original- standort angegeben. Die Argumente in den Kommandos beziehen sich dann auf die Originaladressen (s.auch bei Offset-Erkl.). Programmstandort: z.Z 4000H-5999H Programmstart: NEU: 4000H (ALT: 4003H) Systembereich: 0300-0400H Arbeitszellen 0500-0FFFH CTL-Tabelle 1000-3FFFH Symboltabelle Zusaetzlich kann noch eine Kommentartabelle auf beliebiger Adresse vereinbart werden. Fuer das Kassetteninterface muss vor dem Laden und Saven die entsprechende Quelle bzw. Senke eingeschaltet werden (meisst ST bzw. RC). Danach erfolgt die Ausgabe durch Laadr,eadr (z.B.: LA100,A2FF). Zur Kassettenaus- gabe werden die Headersaveblockroutinen verwendet. Der entste- hende Quelltext kann durch Editoren mit 1EH (NL) als Zeilenab- schluss bearbeitet werden (z.B. MicroWORD). Alle ausserhalb von aadr-eadr liegende Marken werden als EQU-Anweisungen vor das Programm gesetzt. A-LAUF: Beeinflusst CTL-TABELLE, nutzt, wenn vorh., SYM,DOC B-LAUF: Beeinflusst SYM-TABELLE, nutzt CTL,DOC-TABELLE L-LAUF: Beeinflusst keine Tabellen,nutzt wenn vorh SYM,CTL,DOC wird auch zur Kassetten-Ausgabe benutzt C-LAUF: fuer Handkorrekturen bei Tabellen u.dgl. (Es ist auch der Eintrag von Kommentaren moeglich.) Zu empfehlen ist Reihenfolge A=>B=>(C=)>L-LAUF (nicht unbedingt) Mehrfache Wiederholung der Laeufe moeglich! Bewaehrt hat sich auch, vor dem B-Lauf mit C,adr,B dem R-80 anzuzeigen, wo sich Datenfelder befinden. Er erkennt sie so leichter. Nach dem Laden und Start des R-80 erscheint auf dem Bildschirm ein Kopfteil, mit dem sich der R-80 meldet, sowie eine Status- Anzeige. Diese sieht folgend aus: MEMORY OPEN TO EBFF SYSP K1520 SYMTBL = 1000 1000 PC = 0100 OFFSET = 0000 CTLTBL = 0200 0200 ERLEUTERUNG: MEMORY...; Speicherbereich offen bis EBFFH SYSP K1520 (oder: ZILOG Z80); der R-80 ist auf das angezeigte System eingestellt. SYMTBL = 1000 1000 ; Standort und Fuellstand des Speicherbereiches, in dem die Symbol-Tabel- le abgelegt wird. Die Symbol-Tabelle ist die Markentabelle. PC = 0100 ; Programmzaehler, ab dieser Adres- se wird der Quelltext geschrieben. OFFSET = 0000 ; Offsetbereich-Anzeige CTLTBL = 0200 0200 ; Bereich und Fuellstand der CTL-Tabelle. Diese zeigt an, ob in der Zeile ein Befehl steht, oder ein Datenbyte. Kann im C-Lauf geaendert werden. Durch die in der Kommando-Erklaerung stehenden zugehoerigen Kommandos koennen diese Angaben im Status beeinflusst werden. Nun folgt das Promtzeichen: * (Nach diesem Promtzeichen, erwartet der der R-80 die Eingabe eines Kommandos) Zur Probe des R-80 hier ein kleines Programm, welches Sie in verschiedenen Adressbereichen eingeben koennen um damit zu pro- bieren. Nehmen wir die Bereiche ab 6000H und 1000H. Die dann un- terschiedlichen Eingaben sind in Klammer () dahinter eingetra- gen. 6000 06 06 DD 21 08 EE 11 1C (1000) 60(10) 1A DD 77 00 13 1A DD 77 20 13 DD 23 DD 23 DD 23 10 EE FF 0E 11 0F 11 10 11 12 13 14 16 15 16 Es ist das "Schachfiguren"-Beispiel aus der Z-1013-Bedienungs- anleitung. Es ist auch in der ASSEMLER Scf 5.3 Beschreibung ver- wendet wurden (dort als Quelle). Bei dem Standort 1000H ist mit Offset zu arbeiten. ****KOMMANDOS**** ----------------- ACHTUNG !!: Nach dem Kommando-Buchstaben Adresse oder zweites Symbol (z.B.bei Laden oder Saven) ohne Leerzeichen direkt an den Buchstaben ansetzen! Wo ein Komma vorgesehen ist, muss es unbedingt ge- setzt werden. Verschiedene Kommandos haben die gleichen Optionen (A,B,L,H). A (CR) A-LAUF (Suche nach Strings, Vorwaertsref.) A adr.(CR) A-LAUF ab Adresse (Originalstandort!!) A adr.,adr.(CR) A-LAUF von Adr. bis Adr. A=nr. Zeilenzahl (LINES) BEISPIEL: Programm steht auf 6000H. Es ist auf dieser Adresse lauffaehig. Zuerst A-Lauf. Nach dem Promtzeichen dazu eingeben: * A6000 (>ENTER<) ;Der R-80 listet nun die ersten Zeilen auf. Mit der weiteren Eingabe des * A (>ENTER<) ;wird der Lauf fortgesetzt. Die A-Eingabe wird nun fortgesetzt, bis der gesamte MC-File als Text umgesetzt wurde. Dabei sollte man schon auf eventuel- le Fehler (z.B. unverstandene Relativ-Spruenge o.ae.) durchse- hen. Es kann auch aadr.,eadr. angegeben werden. B B-LAUF (Optionen wie A, legt MTB an) C (CR) Anzeige CTL-Tabelle C adr.(CR) Anzeige CTL ab Adr. C adr.,I ab ADR. als Bef. interpr. ,B " DB " ,W " DW/DA " ,S " DS " ,E END einf. ,K Vereinb. fuer Adr. loeschen Im C-Lauf sind Handkorrekturen moeglich. Man kann sich die CTL- Tabelle anzeigen lassen, als Befehl erkannte Bytes in Daten- Bytes wandeln u.umgekehrt, auch Datenworte (16-Bit-Worte), ein End kann eingefuegt werden (kuerzt die Tabelle dort ab), und Adress-Vereinbarungen loeschen. D HEXDUMP (Optionen wie A) DS (CR) Ausgabe MTB DS marke.(CR) Ausgabe ab Marke E adr. (CR) Adresse durch Marke ersetzen K.marke (CR) Marke loeschen, Absolutadresse einsetzen L Listlauf (Optionen wie A) M (CR) Z-80 Code M=1520 (CR) SYPS K-1520 Code O (CR) OFFSET anzeigen O abstand (CR) OFFSET setzen BERECHNUNG des Offsetabstandes: Obiges Beispiel, MC-File lauf- faehig auf der Adresse 1000H. Es wird jetzt auf die Adresse 6000H geladen. Nun muss der Abstand von der Adresse, auf der das MC-Programm zur Zeit steht, zur Original-Adresse als Off- set eingegeben werden. * O5000 (>ENTER<) ; Nun wird das auf 6000H abgelegte Progr. zurueckuebersetzt, wenn A mit der Programmanfangsadresse A1000 eingegeben wird. ! Man gibt nach Offset also nicht die Standort-Adresse des MC- Files ein! Steht das MC-File aber im Speicherbereich unter dem Original- Standort, so wird vorwaerts weitergezaehlt (ZWEIERKOMPL.). Beispiel: Der Original-Standort ist ab F800H. Das Programm wird aber zum reassemblieren auf 6800H geladen. So rechnet man 7FF bis FFFFH, + 6800H = 7000H als Offset. R(x) (CR) READ (x=C:COM;L:CTL;S:SYM;D:DOC) S(x) (CR) SAVE (x=T:TXT;L:CTL;S:SYM;D:DOC) Mit RC (RL,RS,RD) oder mit ST (SL,SS,SD) wird die Quelle oder das Ziel fuer das Laden oder Saven festgelegt. Fuer verschiedene Handlungen des R-80 sind Pausen beim Laden/ Saven erforderlich, weshalb die Blockroutinen des Headersave benutzt werden. Man ist gut beraten, nach dem Reassemblieren den Text entweder im EDITOR oder ueber Einladen in den Speicher fuer das TB-Ger. zu komprimieren. U adr. (CR) Eroeffnen DOC-Datei Will man mit dem weiter unten stehenden Kommando ";" einen Kom- mentar in den Text einfuegen, muss vorher mit "Uaadr." und >ENTER< eine DOC-Datei eroeffnet werden. X (CR) KILL Dateien Zum Loeschen vorhandener Dateien wird das Kommando "X" verwen- det. Z (CR) Anzeigen MTB-Puffer Z adr. adr.(CR) Setzen MTB-Puffer ZP (CR) Setzen Druckerprotokoll ZQ (CR) RESET Drucker Fuer den Ausdruck des Textes bzw. der Tabellen. ? (CR) STATUS Dient der Anzeige des STATUS zur Kontrolle ; (CR) Anzeige Kommentare ; adr (CR) Ab Adresse ; adr.,kommentar Einfuegen Komm. fuer Adresse ; adr.,(CR) Loeschen Komm. auf Adresse Mit diesen Kommando koennen bereits im R-80 Kommentare gesetzt und auch geloescht werden. CTRL-C (BREAK) EXIT (Rueckkehr in das Betriebssystem) Mit diesem Kommando kann man zu jeder Zeit in das Betriebs- system zurueckkehren. RUF-ADR. RUF-ADR. ANPASSUNG : SARUF 0FFF4H LORUF 0FFF1H DRINI 0FFCDH DRAKK 0FFE8H BSMK 0FFC4H BLMK 0FFC7H Es wird nur NL(1EH), nicht CRLF ausgegeben! 09H (TAB) wird in entsprechende Anzahl SPACE gewandelt. AG Z-1013 d. IG-HC a.IZ d. TU-DRESDEN ^^^^^