Reassembler

Im Handbuch Teil IIB (→ Handbücher) ist ein Reassembler zum Selbstabtippen abgedruckt. Anlage 11, REASSEMBLER FÜR U880-BEFEHLE, ROBOTRON Z 1013 REASS 1.02.

Im Downloadpaket ist eine 100% korrekt abgetippte Programmversion enthalten (reass 1.02.z13, Binärdatei ohne Header).

Ich habe den Reassembler 1.02 untersucht, reassembliert, kommentiert und die 3 Fehler ausgemerzt → REASS_103, und ein wenig weiter optimiert → REASS_104

korrigiert sind

  • neg. Offs. bei IX (outICpd)
  • (undoc) Bit-Befehle bei IX/IY (codeicb)
  • (undoc) IX-Ladebfehle codei407F

Der Reassembler steht ab Adresse 3600H bis Adresse 3FE4H. Der Start erfolgt auf der Adresse 3600H. Das Programm meldet sich mit der Ausschrift:

ROBOTRON Z 1013 REASS 1.02
AB BIS ORG-ADRESSE:

Unter dieser Ausschrift können nun z.B. folgende Adressen eingegeben werden:

F000 F020 F000

D.h., es wird der Anfang des Monitorprogramms rückübersetzt. Ist die letzte Adresse gleich der ersten, so kann diese entfallen. ORG-Adresse bedeutet die Adresse, auf der das lauffähige Programm stehen müsste. Man kann also auch Programme reassemblieren, die eigentlich außerhalb des RAM-Bereiches laufen würden oder auf z.Z. belegten Speicherbereichen lauffähig sind. Sie können z.B. den in Anlage 13 angeführten Zählermodul nicht auf den Originaladressen ab 3C00H reassemblieren, weil dort der Reassembler steht. Wenn Sie das tun wollen, so müssen Sie den Zählermodul einlesen, anschließend mit dem T-Kommando z.B. auf die 1000H umladen und danach den Reassembler einlesen und starten. Kommandos nach dem Einlesen des Zählermoduls:

# T 3C00 1000 400 ;Umladen des Zählermoduls
# L 3600 3FFF ;Einlesen des Reassemblers
# J 3600 ;Starten des Reassemblers
ROBOTRON Z 1013 REASS 1.02
AB BIS ORG-ADRESSE
1000 1020 3C00

Zu beachten ist, dass der Reassembler auch bei ASCII-Zeichen eine Übersetzung versucht! Daraus können mitunter Verschiebungen entstehen, die dann auch bei richtigen Maschinenbefehlen zu einer falschen Rückübersetzung führen. Nach einigen Bytes fängt sich der Reassembler und arbeitet wieder korrekt. Der Abbruch erfolgt mit S4/K (SHIFT 4/K).

Ich habe 1988 den Reassembler ein wenig erweitert (extended reassembler, EXREASS 2.02):

  • Die Angabe der End-Adresse entfällt.
  • Nach Anzeige des ersten Datenbytes kann entschieden werden, wie die Interpretation erfolgen soll: als Adresse, Byte, Ascii, Maschinencode (Drücken von 'A', 'B', 'T', bel. Taste)
  • Systemaufrufe via RST 20H werden mit symbolischem Namen angezeigt
  • bei Systemaufruf PRST7 wird der nachfolgende Text angezeigt
  • Man kann mit 'M' in den Speichereditiermodus wechseln und den Code patchen. Beim Beenden des Speichereditiermodus wird der Reassembler an der ursprünglichen Adresse fortgesetzt.

auch diese Version habe ich aktualisiert → exreass_204. Im Bild sieht man, wie undokumentierte Befehle jetzt korrekt angezeigt werden und auch die Systemrufe reassembliert werden:

  • z1013/software/reassembler.txt
  • Zuletzt geändert: 2020/09/28 06:23
  • von volkerp