1800 3c4b 0000 I ... R-80.DOC 1.2
************************************************************
*                                                          *
*    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
^^^^^