M80

Als ich mit der Assemblerprogrammierung unter CP/M PLUS (3.0) anfing, habe ich zuerst den 8080-Assembler RMAC benutzt. Später erwarb ich von Microsoft das MBASIC (Interpreter) und BASCOM (Compiler). Hierzu gehörte das Assemblerpaket

♦ M80:Der Assembler, der sowohl 8080 als auch Z80 Mnemonics versteht
♦ L80:Der Linker
♦ LIB80:Das Bibliotheksprogramm
♦ CREF80:Das Programm zum Erzeugen von Querverweisen

Der M80 erlaubte, ähnlich wie XREF für MAC oder RMAC von Digital Research, auch das Erzeugen von Querverweisen, die dann mit dem Programm CREF80 bestimmt wurden. Ich habe zwar meist den M80 benutzt, jedoch zum Linken das Programm LINK von Digital Research. Mit ihm ließen sich z.B. RSX-Module erstellen. Ebenso habe ich als Bibliotheksprogramm das Programm LIB, ebenfalls von Digital Research, benutzt, da dieses Bibliotheksprogramm das Arbeiten mit indizierten .REL-Dateien (.IRL-Dateien) erlaubt. Hinzu kam, dass der L80 nur Daten im Speicher verarbeitete, was bei großen Programmen zu Speicherproblemen führen konnte (LINK erlaubte das Auslagern von Daten auf eine Diskette). Dies hat auch Microsoft erkannt und den erweiterten Linker LD80 auf den Markt gebracht.
Immer wenn ich ein Assembler-Projekt fertig hatte, habe ich einen letzten Ausdruck gemacht und das Listing fein säberlich abgeheftet. Murpheys Law schlägt aber zu, so dass meist kurze Zeit später ein Fehler im Programm ausgemerzt wurde. Zwar wurde das aktuelle Listing ausgedruckt aber wegen des geringen Fehlers wurde keine neue Version angelegt. Wochen später lagen da zwei Listings mit gleicher Versionsnummer — welches war richtig?
Da kam mir ein Artikel gerade recht, in dem über eine RSX berichtet wurde, die im Zusammenspiel mit dem M80 immer das aktuelle Datum in das Listing schrieb — was bei CP/M PLUS ja geht. Leider funktionierte die RSX nicht, also ran an den Disassembler, M80 disassembliert und neue Funktionen eingebaut.

Folgende Funktionen habe ich eingebaut:
  • Es werden nur Symbole in die .PRN-Ausgabedatei geschrieben, Option /Y
  • Einfügen von Datum und Zeit in die .PRN-Ausgabedatei, Option /D
  • Ausgabe von Fehlern in eine Error-Logdatei, Option /E
  • Nur Warnungen ausgeben anstatt kompletter Fehlermeldungen, Option /W
  • Alle Symbole werden global gesetzt, Option /G
  • Alle unbekannten Symbole werden extern gesetzt, Option /U
  • Wenn ein Linker gefunden wird, automatisches Linken zur .COM-Datei, Option /B
  • Ausgabe der gerade abgearbeiteten Dateien, Option /V
  • Unterdückung der Ausgaben bei .PRINTX, Option /Q
  • Default ist nun Z80, damit sind die Optionen /Z und /I umgekehrt
Wird der Assembler aufgerufen mit M80 -M, so wird der M80 in den Speicher geladen und es können mehrere Dateien assembliert werden, ohne den M80 neu zu starten.

Nach jeder Moduländerung muss der Assembler neu gelinkt werden, hier als Beispiel mit dem Linker von Digital Research LINK M80NEW=M80KERN,M80VER,M80DATE,M80IO,M80CMD.

Hier die Quelldateien:
Modifizierte Quellen (I)
Modifizierte Quellen (II)
Originale Quelle

Das Originalpaket zum Runterladen gibt es hier: [Download]
Zurück zu den Disassembler-Aktivitäten