Macro Assembler Development System

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Macro Assembler Development System / MADS
Handbuch-Cover
Entwickler Commodore
Firma Commodore
Verleger Commodore
Release 1982
Lizenz Vollversion
Plattform(en) C64, PET
Genre Assembler-Programmierung
Steuerung
Medien
Sprache(n) Sprache:englisch

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 mit RUN gestartet; oder mit LOAD "HILOADER64",8,1 geladen und mit SYS 51200 gestartet.
  • MONITOR$C000 und MONITOR$8000 - (hexadezimale Lade- und Startadressen der Maschinensprachemonitore, d.h. als Start mit SYS 49152 oder SYS 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]

Startbildschirm Monitor C000
Startbildschirm Monitor 8000
DOS MANAGER V5.1 Startmeldung

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.

Editorbefehle
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.

Weblinks[Bearbeiten | Quelltext bearbeiten]