Macro Assembler Development System
Macro Assembler Development System / MADS | |
---|---|
![]() | |
Entwickler | Commodore |
Firma | Commodore |
Verleger | Commodore |
Release | 1982 |
Lizenz | Vollversion |
Plattform(en) | C64, PET |
Genre | Assembler-Programmierung |
Steuerung | |
Medien | |
Sprache(n) | ![]() |
Das Macro Assembler Development System (MADS) oder das Commodore Assembly Development System Package wurde im Jahr 1982 von Commodore für den C64 herausgegeben und besteht aus verschiedenen Programmierwerkzeugen (Tools) zur Erstellung von Assembler- und Maschinenspracheprogrammen. Weiterhin gibt es eine umfangreiche mindestens 68-seitige, englischsprachige Bedienungsanleitung, in der der Umgang mit den Programmierwerkzeugen und die Grundlagen der Assemblerprogrammierung besprochen werden.
Inhalt[Bearbeiten | Quelltext bearbeiten]
Es besteht aus folgenden Programme, die auf Diskette oder Kassette enthalten sind:
0 "C64 ASSEMBLER " 00 2A 1 "DOS WEDGE64" PRG 4 "DOS 5.1" PRG 7 "EDITOR64" PRG 39 "ASSEMBLER64" PRG 6 "CROSSREF64" PRG 4 "LOLOADER64" PRG 4 "HILOADER64" PRG 17 "MONITOR$8000" PRG 17 "MONITOR$C000" PRG 1 "BOOT ALL" PRG 562 BLOCKS FREE.
- DOS WEDGE64 - (Version 5.1; Das Maschinenspracheprogramm ist als DOS 5.1 abgespeichert).
- EDITOR64 - Editor für Assembler-Programme oder auch PETSCII-Textdateien allgemein; Start mit
SYS 49152
. - ASSEMBLER64 - Übersetzt Textdateien mit Assembler-Quelltext in Textdateien im MOS Technology-Format; Start mit
RUN
. - HILOADER64 und LOLOADER64 - liest und konvertiert die Ausgabedateien vom Assembler und legt die Daten als Binärdaten an den entsprechenden Speicheradressen ab (wird mit
LOAD "LOLOADER64",8
(Version $0800) geladen und mitRUN
gestartet; oder mitLOAD "HILOADER64",8,1
geladen und mitSYS 51200
gestartet. - MONITOR$C000 und MONITOR$8000 - (hexadezimale Lade- und Startadressen der Maschinensprachemonitore, d.h. als Start mit
SYS 49152
oderSYS 32768
). Damit werden die Binärdaten dann letztendlich als Dateien im üblichen PRG-Format mit Ladeadresse gespeichert. - BOOT ALL - lädt und startet die Programme DOS 5.1, HILOADER64 und den EDITOR64.
- CROSSREF64 - druckt das Cross-Referenz-Listing des Assemblers aus.
Assembler[Bearbeiten | Quelltext bearbeiten]



Der Assembler selbst ist eine manuelle Portierung eines in Fortran geschriebenen Cross-Assembler, den MOS und Commodore für die Entwicklung von 6502-Programmen verwendet haben. Diese Herkunft merkt man dem Programm teilweise noch an, wo beispielsweise in Fehlermeldungen vom Asssembler von „cards“ statt von „lines“ gesprochen wird, und dass das Ergebnis der Übersetzung nicht wie bei den meisten Assemblern Binärdateien im Commodore-Format sind (Ladeadresse gefolgt von den Binärdaten), sondern in einem Textformat, das von MOS für den KIM-1 für das Laden von Daten von Lochstreifen entworfen wurde. Diese Textdateien müssen erst mit einem Ladeprogramm in den Speicher vom C64 gelesen werden, und von dort dann mit einem Monitorprogramm als Binärdatei(en) gespeichert werden.
Der Ablauf von der Idee zur Programmdatei, beziehungsweise ein Zyklus in der Entwicklung sieht also folgendermaßen aus:
EDITOR64 → Quelltextdatei → ASSEMBLER64 → Textdatei → ??LOADER64 → Binärdaten im Speicher → MONITOR$?000 → Binärdatei(en)
Editor[Bearbeiten | Quelltext bearbeiten]
Der Editor ist im Grunde eine "BASIC-Erweiterung”, das heißt, man verwendet zum Bearbeiten der Textdatei den BASIC-Zeileneditor, bei dem der Tokenizer-Schritt übergangen wird. Der eingegebene Text einer Zeile wird also 1:1 in den Speicher übernommen. Man kann weiterhin BASIC im Direktmodus ausführen, also beispielsweise den BASIC-Interpreter als Taschenrechner verwenden. Man kann das aktuelle ”Programm” auch mit SAVE und LOAD speichern und laden, allerdings entsteht dann eine Programmdatei die, sobald die Zeilen Text enthalten, aus BASIC-Sicht syntaktisch falsch sind.
Es werden dem BASIC weitere Befehle hinzugefügt, um den Quelltext zu bearbeiten, als sequentielle Textdatei zu speichern und solche Dateien zu laden.
Befehl | Beschreibung |
---|---|
AUTO AUTO schrittweite |
Automatische Zeilennummernvorgabe ausschalten oder einschalten mit der angegebenen Schrittweite |
CHANGE/alt/neu/ CHANGE/alt/neu/,n1-n2 |
Ersetzen von alt durch neu im ganzen Quelltext oder in den Zeilen von n1 bis n2. Das / kann ein beliebiges Zeichen sein, das weder in alt noch neu vorkommt. |
CPUT | Speichert Quelltext ohne unnötige Leerzeichen. Das C steht für „compressed”. Siehe PUT. |
DELETE n1-n2 | Löschen von Zeilen n1 bis n2. |
FIND/text/ FIND/text/,n1-n2 |
Sucht Text im ganzen Quelltext oder in den Zeilen n1 bis n2. Ausgabe kann mit Leertaste angehalten und fortgesetzt werden. STOP-Taste bricht den Vorgang ab. |
FORMAT FORMAT n1-n2 |
Listet den Quelltext wie der Assembler. Dazu muss alles was kein Label ist, mindestens ein Leerzeichen vom Zeilenanfang entfernt sein. Ausgabe kann mit Leertaste angehalten und fortgesetzt werden. STOP-Taste bricht den Vorgang ab. |
GET "dateiname",zeile,gerät,sekundäradresse | Die Datei wird ab der angegebenen Zeile vom angegebenen Gerät mit angegebener Sekundäradresse in den Speicher geladen. Die Zeilenschrittweite ist 10, und die Defaultwerte für die Startzeile ist 1000, und 8 für Gerät und Sekundäradresse. Im Speicher befindliche Zeilennummern werden überschrieben. Nicht überschriebene alte Zeilen bleiben im Speicher. |
KILL | Beendet den Editor. |
LIST | Funktioniert wie BASIC (es ist der LIST-Befehl von BASIC, also auch Tokens werden expandiert!). |
NUMBER NUMBER alt,neu,schrittweite |
Nummeriert die Zeilen ab der Zeilennnummer alt, beginnend mit Zeilennummer neu, mit gegebener Schrittweite. Defaultwerte sind 0, 1000, und 10. |
PUT "dateiname",n1-n2,gerät,sekundäradresse | Speichert den Quelltext unter dem angegebenen Dateinamen von Zeile n1 bis n2 auf das angegebene Gerät, mit der angegebenen Sekundäradresse. Defaultwerte sind alle Zeilen, und 8 für Gerät und Sekundäradresse. |