3000 43f5 0000 I ... R-80 DISK 2.68
R************************************************************
*                                                          *
*    R - 8 0     R E A S S E M B L E R     ver. RB + FSc   *
*                                                          *
************************************************************
                                               (c) by N.H.

Der  R-80  Reassembler  ist  ein  Programm , das selbständig
Zeichenketten   und   Datenbytes   erkennt   und  Z-80  oder
SYPS K-1520  lesbare  Quelltexte   erstellt.  Dabei   werden
Absolutadressen in Marken  umgewandelt. Somit ist es für den
Anwender leicht möglich, Maschinenprogramme zu reassemblieren,
daraus eine Assemblerquelle zu erstellen, zu ändern und evtl.
auf einer anderen Adresse zu stationieren. Das Programm nutzt
den HEADER über Standardrufe BLMK/BSMK sowie LORUF/SARUF (SV),
Außerdem  besitzt  das  Programm  einen  Druckertreiber, der
ASCII-Zeichen im A-Register übergibt. Ebenfalls wird vor dem
Druck ein Druckerinit durchgefuehrt (Ankopplung ueber SV). 
Das zu reassemblierende Programm muß auf eine Adresse >5BD5H
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.
  
Programmstandort:   z.Zt 4000H-5BD5H

Programmstart:      NEUSTART: 4000H
                    RESTART : 4003H

Systembereich:      0100-01FFH Arbeitszellen
                    0200-0FFFH CTL-Tabelle
                    1000-3FFFH Symboltabelle

Zusätzlich  kann noch  eine  Kommentartabelle auf beliebiger
Adresse vereinbart  werden.  Für die Ein- bzw. Ausgabe muß
vor dem Laden und Saven die entsprechende Quelle bzw. Senke
eingeschaltet werden (meist ST bzw. RC). Danach erfolgt die
Ausgabe durch Laadr,eadr . Zur Ausgabe werden die Headersave-
bzw. Headerdiskblockroutinen verwendet. Der entstehende
Quelltext kann durch Editoren mit 1EH (NL) als Zeilenabschluß
bearbeitet werden. Alle außerhalb von aadr-eadr liegenden Marken
werden als EQU-Anweisungen vor das Programm gesetzt. 

A-LAUF: Beeinflußt CTL-TABELLE, nutzt wenn vorh. SYM,DOC
B-LAUF: Beeinflußt SYM-TABELLE, nutzt CTL,DOC-TABELLE
L-LAUF: Beeinflußt keine Tabellen,nutzt wenn vorh SYM,CTL,DOC
        wird auch zur Kassetten- bzw Disk-Ausgabe benutzt 
C-LAUF: für Handkorrekturen bei Tabellen u.dgl.
Zu empfehlen ist Reihenfolge A=>B=>(C=)>L-LAUF  (nicht unbedingt)
Mehrfache Wiederholung der Läufe möglich!

In dieser Version werden auch Befehle mit LX,HX,LY,HY erkannt!
Zur Anpassung an evtl. andere Disk-Adressen können diese auf den
Adressen 59E8H für Disk A (98H) und 599EH für Disk B eingetragen
werden. Das Programm testet anhand dieser Adressen das Vorhanden-
sein des HeaderDisk !
(Diese Adressen stehen im HeaderDisk auf den Adressen E024H u.
E025H.)


             ****KOMMANDOS****

A (CR)              A-LAUF (Suche nach Strings, Vorwärtsref)
A adr.(CR)          A-LAUF ab Adresse (Originalstandort!!)
A adr.,adr.(CR)     A-LAUF von Adr. bis Adr.
A=nr.               Zeilenzahl (LINES)
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/BER
      ,E            END einf.
      ,K            Vereinb. für Adr. löschen
D                   HEXDUMP (Optionen wie A)
DS (CR)             Ausgabe MTB
DS marke.(CR)       Ausgabe ab Marke
E adr. (CR)         Adresse durch Marke ersetzen
F (CR)              Zeigt Inhalt der RAM-Disk an
                    (nur wenn DISK X enabled !)
K.marke (CR)        Marke löschen, Absolutadresse einsetzen
L                   Listlauf (Optionen wie A)
M (CR)              Z-80 Code
M=1520 (CR)         SYPS K-1520 Code
O (CR)              OFSET anzeigen
O abstand (CR)      OFSET setzen
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)
T (CR)              Schaltet TAPE-E/A ein
U adr. (CR)         Eröffnen DOC-Datei
X (CR)              KILL Dateien
YA (CR)             Schaltet DISK-E/A auf DISK A ein
                    (nur wenn HEADERDISK geladen ist)
YB (CR)             Wie YA, aber Umschaltung auf DISK B
Z (CR)              Anzeigen MTB-Puffer
Z adr. adr.(CR)     Setzen MTB-Puffer
ZP (CR)             Setzen Druckerprotokoll
ZQ (CR)             RESET Drucker
? (CR)              STATUS
; (CR)              Anzeige Kommentare
; adr (CR)          Ab Adresse
; adr.,kommentar    Einfügen Komm. für Adresse
; adr.,(CR)         Löschen Komm. auf Adresse
CTRL-C              EXIT


                      RUF -     ADR.        RUF -     ADR.

ANPASSUNG :         :SARUF 0FFF4H (0E003H):LORUF 0FFF1H (0E000H)
                    :DRINI 0FFCDH         :DRAKK 0FFE8H         
                    :BSMK  0FFC4H (E00FH) :BLMK  0FFC7H (E00CH) 
                    :AKP   0FFBEH (0E015H):SUCHK 0FFC1H (0E012H)

 *)  Es wird nur NL, nicht CRLF ausgegeben!
**) 09H (TAB) wird in entsprechende Anzahl SPACE  gewandelt