Bedienungs buch für A T M A S - I I Ein Makroassembler, Editor und Maschinensprache-Monitor für ATARI-Computer 400/600XL/800/800XL und ATARI 130XE mit Diskettenstation und min. 48KByte RAM Die Programme, Disketten und Bedienungshandbücher des ATMAS-Systemes unterliegen dem Copyright der Ing. W. Hofacker GmbH und Dipl.-Ing. Peter Finzel Jegliche Rechte vorbehalten LADEANWEISUNG ============= 1.) Entfernen Sie eventuelle Steckmodule aus dem Cartridge-Schacht Ihres ATARl—Computers. 2.) Schalten Sie das Diskettenlaufwerk und den Fernseher (bzw. Monitor) ein. 3.) Sobald die rote LED des Diskettenlaufwerkes erloschen ist, legen Sie die Programmdiskette mit der Aufschrift oben und dem ovalen Ausschnitt nach hinten in das Laufwerk ein. Schließen Sie die Tür des Diskettenschachtes. 4.) Schalten Sie dann Ihren ATARI-Computer ein. Bei XL-Modellen muß während des Einschaltens die OPTlON—Taste gedrückt werden. 5.) ATMAS-II wird jetzt geladen, nach kurzer Zeit erscheint der Vorspann, dann meldet sich der Editor, der Ladevorgang ist damit beendet. Falls die Meldung 'ATMAS-II benötigt 48K—Speicher' erscheint, so gibt es mehrere Möglichkeiten: a) Es befinden sich noch Steckmodule im Schacht. b) OPTION wurde nicht gedrückt (nur bei XL). c) Ihr Computer hat zu wenig Speicherplatz. ATMAS-II benötigt mindestens 4BKByte. FURZBEISPIEL FUR DEMO-PROGRAMM ============================== Wenn Sie sich vor dem Durchlesen des Bedienungs- handbuches kurz ein Demoprogramm des ATMAS-II Systemes ansehen möchten, so können Sie das mit den folgenden Befehlen erreichen: RD:DEMO (Demoprogramm wird geladen) -Y (Programm assemblieren) (zurück in den Editor) U (Programm starten) (Programm beenden) Anmerkung: Escape-Taste drücken. —Y Control-Taste gedrückt halten und die 'Y'-Taste betätigen. EINLEITUNG ========== ATMAS-II ist ein leistungsfähiges Entwicklungssystem für Maschinenprogramme auf Ihrem Atari-Computer. ATMAS-II besteht aus drei integrierten Teilsystemen: Editor, Makro—Assembler und Maschinensprache—Monitor. Diese Komponenten zusammen erlauben eine komfortable und schnelle Programmentwicklung auf Maschinenebene. Alle drei Teile dieser integrierten Programmierumgebung sind aufeinander abgestimmt und jeweils nur einen Tastendruck voneinander entfernt. Ein komfortabler, bildschirmorientierter Editor, der über Funktionen wir Kopier-Register, wiederholbare Befehlssequenzen und platzsparende echte Tabulatoren verfügt, erleichtert die Eingabe auch umfangreicher Programme. Der Makro- Assembler arbeitet zur Erreichung einer kürzest- möglichen Assemblierzeit mit modernen Hashing— Algorithmen, so daß auch längere Programme in wenige Sekunden assembliert werden. Schließlich steht lhner als werkzeug zum Testen von Maschinenprogrammen ein Monitor zur Verfügung. Obgleich sich jemand, der noch nie in Assembler programmiert hat, mit ATMAS-II schnell vertraut fühle wird, bietet er dem fortgeschrittenen Benutzer viele Möglichkeiten: Beginnend bei den leistungsfähigen Editorfunktionen bis hin zu der Programmierung von Makrobefehlen. Es sollte noch angemerkt werden, daß dieses Bedienungshandbuch kein Lehrbuch der 6502- Maschinensprache ist und das auch nicht sein kann. Hier wird auf weiterführende Literatur verwiesen, insbesondere auf ein im Herbst '85 erscheinendes Buch vom Autor dieser Bedienungs- handbuches, das speziell auf den Atari-Computer zugeschnitten ist. Zusätzlich bieten auch die Beispiele im Teil 4 dieses Handbuches einen kleinen Einblick in die Assemblerprogrammierung des Atari-Computers. Teil 1: DER EDITOR ================== Beim ATMAS-II Editor handelt es sich um einen bild- schirmorientieren Editor, der ohne jegliche Zeilennummerierung auskommt, sich im wesentlichen ähnlich einem Textverarbeitungssystem verhält. Dadurch entfällt die umständliche Eingabe von LIST- Befehlen wie Sie diese von verschiedenen anderen Editoren kennen (z.B. in BASIC). Sie können sich einfach unter Zuhilfenahme der Cursortasten durch das Listing bewegen, das dann von oben nach unten bzw. von unten nach oben durch das Textfenster scrollt. 1.1 Benutzung des Editors ------------------------- Sobald ATMAS-II von der Diskette geladen worden ist, gelangen Sie direkt in den Editor, der gleichsam die Steuerzentrale des ATMAS-II Systemes darstellt. Von hier aus können Sie den Makroassembler sowie den Maschinensprache—Monitor aufrufen, außerdem bringt Sie die -Taste stets-in den Editor zurück. Nach dem Booten werden Sie die folgende Bildschirm- Maske des Editors sehen: +---------------------------+ I P:00000 T:17408 C:1O24 OK I <---Statuszeile +---------------------------+ Cursor ->I C I I I I Textfenster I I I I I +---------------------------+ I ..........................I <---Kommandozeile +---------------------------+ Die Statuszeile --------------- ln der Statuszeile werden Ihnen ständig Informationen über Cursorposition, freien Textspexcherplatz, Kopierreqister und Editorzustand mitgeteilt. Aus 'P:nnnnn' können Sie die Entfernung (in Zeichen) des Cursors vom Textanfang entnehmen, 'T:xxxxx' gibt lhnen Auskunft über den freien Textspeicherplatz, (d.h. Sie können noch maximal 'xxxxx' Anschläge eingeben). 'C:yyyy' informiert Sie über den freien Speicherplatz des Kopier—Registers (des sog. C-Registers) der im noch unbenutzten Zustand 1024 Zeichen umfaßt. Die letzten beiden Zeichen der Statuszeile geben lhnen eine Zustandsmeldung des Editors wieder, wenn alles in Ordnung ist, werden Sie dort '0K' finden. Eventuelle Fehler- bzw. Zustands- meldungen (z.B. wenn das Kopierregister geöffnet ist) werden dort ausgegeben, eine Liste der Meldungen finden Sie im Anhang B. Textfenster ----------- Die nächsten 21 Zeilen bilden das Textfenster, hier sehen Sie immer den aktuellen Text, den Sie mit den im folgenden besprochenen Editierfunktionen bearbeiten können. In wahrsten Sinne des Wortes ist dieser Bild- schirmteil als Fenster in den Text zu verstehen, das u.a. mit den Cursortasten nach oben und unten über den Text verschoben werden kann. Alle Editierfunktionen werden sofort im Textfenster sichtbar. Kommandozeile ------------- Die letze Zeile des Bildschirms ist für die Eingabe von Kommandos reserviert. Neben einer Reihe von Direkt—Befehlen, die unmittelbar im Textfenster gegeben werden, gibt es zusätzlich noch einen Kommando-Modus des Editors, der durch die -Taste aufgerufen wird. Hier werden in der Regel Befehle eingegeben, die zusätzliche Information benötigen, z.B. ein wort, nach dem zu suchen ist. Auch Befehle zur Ein-/Ausgabe von Texten werden hier eingegeben. 1.2 Texteingabe --------------- Sie können ohne Vergabe von Zeilennummern gleich mit der Eingabe des Textes beginnen. Jedes eingegebene Zeichen wird an der momentanen Cursorpostion abgelegt und der Cursor bewegt sich eine Position nach rechts. Sie können jederzeit eine neue Zeile mit (RETURN) beginnen. Nenn Sie mehr als 38 Zeichen in eine Zeile eingeben, so verschwindet der Cursor von der rechten Bildschirmseite, sobald Sie (RETURN) drücken taucht dieser am Anfang der nächsten Zeile wieder auf. Dieses Verhalten erscheint auf den ersten Blick ungewöhnlich, Sie werden jedoch bald feststellen, daß es bei Assemblerprogrammen durchaus von Vorteil ist. Der wesentliche Teil eines Assemblerprogrammes befindet sich immer in den ersten 30 Zeichen, da dort der. Assemblerbefehl zu finden ist. Nenn Sie längere Zeilen editieren wollen, (z.B. das Kommentarfeld), so haben Sie dazu eine Spezialfunktion zur Verfügung (-V, siehe 1.2 / Spezialfunktionen), die maximal 76 Zeichen in zwei Bildschirmzeilen darstellt. Sie werden allerdings feststellen, daß sich der normale 38—Zeichen Bildschirm wesentlich besser zum Editieren von Assemblerprogrammen eignet, da alle Assembler- befehle im Gegensatz zum Zwei—Zeilenmodus ununter- brochen untereinander stehen. Wie üblich haben alle Tasten automatische wieder- holfunktion, Kleinbuchstaben können mit der - Taste erreicht werden. 1.3 Editierbefehle im Textmodus ------------------------------- Wie bereits angesprochen, bietet ihnen der ATMAS-II Editor zwei verschiedene Ebenen der Befehlseingabe. Die einfachere der beiden Ebenen bilden die sog. Direkt—Befehle, oder auch Befehle im Textmodus genannt. Diese Kommandos werden entweder durch Spezialtasten, z.B. —Taste (Bei 600/8OOXL: ) gedrückt halten, während Sie eine andere Taste betätigen, ganz ähnlich dem, wie Sie in ATARI-BASIC den Cursor führen. Wenn Sie also im folgenden -X lesen, so bedeutet das, daß Sie niedergedrückt halten, und dabei die 'X'—Taste drücken. Cursor—Steuerung ---------------- Im Textmodus haben Sie die Cursor—Funktionen zur Verfügung: Um den Cursor nach rechts zu verschieben drücken Sie - Eine Cursorbewequng nach links erfolgt mit - Wenn Sie dabei über das rechte Ende einer Zeile gelangen, so wird der Cursor an den Anfang der nächsten Zeile gesetzt. Fahren Sie über das linke Ende hinaus, so befindet sich der Cursor am Ende der vorherigen Zeile. Um den Cursor nach oben zu bewegen tippen Sie - Der Cursor wird dabei, falls er sich nicht schon am linken Rand befindet, zuerst dorthin zurückgesetzt. In diesem Falle führt erst der zweite Tastendruck nach oben. Der Cursor kann mit - um eine Zeile nach unten an den Anfang der nächsten Zeile gesetzt werden. Bei allen Cursorbewegungen können Sie nicht über Anfang und Ende des Textes hinaus. Im Unterschied zu anderen Editoren werden Sie feststellen, daß der Cursor nicht über den Text läuft, sondern eingefügt wird. Das hat den Vorteil, daß Sie immer genau wissen, wo momentan eingefügt werden kann. Zeichen löschen --------------- Um ein Zeichen links vom Cursor zu löschen drücken Sie Wenn sich der Cursor dabei am Zeilenanfang befindet, dann wird das Return-Zeichen gelöscht, d.h. die Zeile, in der sich der Cursor befand, wird an die vorherige angehängt. Falls diese eine Leerzeile war und somit nur aus einem Return-Zeichen bestand, wird die Leerzeile gelöscht. Um ein Zeichen rechts vom Cursor zu löschen tippen Sie --X Die Zeile wird von der momentanen Cursorposition bis zum Zeilenanfang gelöscht. Befindet sich der Cursor schon am Anfang einer Zeile, so wird die ganze vorhergehende Zeile gelöscht. Cursor-Sprünge -------------- -E bringt Sie an den Anfang des Textes -D bringt Sie ans Ende des Textes Tabulator --------- Der ATMAS—Editor verfügt über einen echten Tabulator, der je nach Erfordernis 1 bis 9 Leerzeichen belegt, aber nur als ein Zeichen abgespeichert wird. Um an die nächste vortabulierte Stelle zu gelangen tippen Sie einfach Wenn Sie spater über einen solchen Tabulator mit dem Cursor fahren, werden Sie feststellen, daß der Cursor darüber 'springt', und auch Einfüqungen vor einen Tnbulator den nachfolgenden Text nicht verschieben. Der Tahulator wird nur als ein Zeichen abgespeichert, so daß Sie damit gut lesbare Listings mit geringen Speicherplatzhedarf anfertigen können. Kopier—Register (C-Register) ---------------------------- Das C—Register ist ein zweiter, 1024 Zeichen großer Textbuffer, den Sie zum Transferieren und Kopieren von Textteilen benutzen können. Positionieren Sie zuerst den Cursor auf das untere Ende des zu bewegenden Textteiles, dann öffnen Sie das C—Register mit -R Im linken Teil der Statuszeile wird dieser Zustand mit der Meldung ’CR' festgehalten . Nenn Sie jetzt den Cursor rückwärts bewegen, so werden die überlaufenen Textteile in das C-Register geschrieben. Sie können diesen Vorgang in der Statuszeile mit verfolgen, die Zahl der freien Zeichen im Kopier—Register ('C:1O24') nimmt mit der Zahl der Cursorbewegungen ab. Befindet Sich der gesamte gewünschte Text im C-Register, so schließen Sie dieses mit dem Befehl -F Jetzt können Sie den Inhalt des Kopier-Registers an jeder beliebigen Cursorposition einsetzen, indem Sie -J eingeben. Der Inhalt des C-Registers wir dabei nicht zerstört, d.h. es sind auch komfortable Mehrfachkopien möglich. Löschen des Kopier-Registers ist mit dem Befehl -K möglich. Das C-Register wird selbsttätig durch Aufruf des assemblers sowie nach einem Ein-/Ausgabebefehl geschlossen. Noch ein paar Anmerkungen zum C-Register: Sie können damit Textteile zum Kopieren vorbereiten, wenn Sie diese rückwärts mit - oder - durchlaufen. Genausogut können Sie Textblöcke transferieren, indem Sie den Cursor durch die Löschbefehle und -X rückwärts bewegen. Der gelöschte Text verbleibt im Kopier—Register und kann an beliebigen anderen Stellen wieder eingesetzt werden. Sie können auch einen Textblock aus verschiedenen Textteilen zusammensetzen, indem das C-Register an verschiedenen Textstellen mehrfach geöffnet und geschlossen wird, ohne dazwischen seinen Inhalt mit —K zu löschen. Ist das C—Reglster voll ('C:0000'), erscheint zu- sätzlich links oben die Fehlermeldung 'C?'. Spezialbefehle des Editors -------------------------- Den Zwei—Zeilenmodus können Sie mit -V einschalten. Dadurch werden Zeilen, die länger als 38 Zeichen sind, zweizeilig am Bildschim dargestellt. Die maximale Zeilenlänge diese Modus beträgt somit 76 Zeichen, wobei allerdings nur 11 Zeilen dargestellt werden können. Ein weiteres -V bringt Sie in den normalen Ein—Zeilenmodus zurück. Control—Zeichen, insbesondere Tabulatoren und Return- Zeichen können mit -T sichtbar gemacht werden. Alle Control—Zeichen werden 'revers' dargestellt. Ein weiteres -T schaltet in den Normalmodus zurück. -G dient zur Wiederholung der in der Kommandozeile stehenden Befehlskette. Lesen Sie dazu bitte Abschnitt 1.4. Aufruf des Assemblers und des Monitors -------------------------------------- Der ATMAS-II Makroassembler wird durch -Y aufgerufen. ATMAS-II beginnt nun sofort mit der Assemblierung des im Textbuffer befindlichen Quelltextes (siehe Abschnitt 2), nach Abschluß der Assemblierung bringt Sie ein beliebiger Tastendruck in den Editor zurück. Der Maschinensprache-Monitor kann duch Eingabe von -P aufgerufen werden. Er meldet sich mit 'MONITOR.' und erwartet Ihre Eingabe (s. Abschnitt 3). Zurück in den Editor gelangen Sie durch die Eingabe von 'E'. 1.4 Befehle der Kommandozeile ============================= Außer den Direktbefehlen im Textmodus verfügt der ATMAS-II Editor über einen weiteren leistungsfähigen Editiermodus! Die Kommandozeile. Sie werden hier in erster Linie Befehle finden, die außer dem eigentlichen Aufruf des Befehles noch weitere Angaben benötigen, etwa eine Zeichenkette nach der gesucht werden soll. Weiterhin werden Sie einige Befehle finden, die Sie schon vom Textmodus her kennen, diese können aber im Kommandomodus mit Wiederholungsfaktoren versehen und verkettet werden, eine Art von 'Befehls-Makros'. Benutzung der Kommandozeile --------------------------- Sie betreten den Kommandomodus durch die -Taste, die als Dollar-Zeichen ('$') dargestellt wird. Jetzt können Sie einzelne Kommandos (siehe unten) eingeben und dabei die -Taste als Trennzeichen benutzen. Die Kommandozeile wird ausgeführt, sobald Sie zweimal hintereinander betätigen. Die Ausführung wird mit einem Doppelkreuz hinter der-Kommandokette quittiert, Sie befinden sich anschließend wieder im Textmodus. Sollte sich die Kommandozeile als fehlerhaft erwiesen haben, so wird Ihnen das in der linken oberen Ecke durch ein Fehlerkürzel angezeigt. Alle Befehle (mit Ausnahme der I/O-Kommandos R und W) können mit vorangestellten Wiederholungsfaktoren 2 bis 255 mal ausgeführt werden. Zusätzlich kann eine vollständige Wiederholung einer eingegebenen Kommandozeile vom Textmodus aus mit -G erfolgen. Eingabefehler in der Kommandozeile selbst können mit -X führt zum Löschen der Kommandozeile und zur Rückkehr in den Textmodus. Editierfunktionen im Kommandomodus ---------------------------------- B : Cursor eine Position zurück F : Cursor eine Position vorwärts D : Ein Zeichen links vom Cursor löschen ‘ T : vom Cursor bis Anfang d. nächsten Zeile löschen Mit diesen Befehlen ist z.B. eine schnelle Cursor- Bewegung im Text möglich. öffenen Sie die Kommando- zeile mit und geben Sie '200F' gefolgt von zweimal . Jede Wiederholung der Kommandozeile mit -G bringt Sie nun 200 Zeichen im Textbuffer weiter. Weitere Editierbefehle: ----------------------- H : Einsetzen eines beliebigen ATASCII-Codes in den Text, z.B. zur Druckersteuerung. BEISPIEL: $H0F$ schaltet EPSON-Drucker auf Engschrift S : Sucht nach der Zeichenkette (String) ab der momentanen Cursorposition bis zum Ende des Textes. Falls nicht vorhanden, erscheint 'S?' in der Statuszeile. BEISPIEL: $SLABEL$ sucht nach Wort LABEL. ! : Setzt Zeichenkette an momentane Cursorposition ein. Kann im Zusammenhang mit dem S—Befehl zu einer Such- und Austausch-Funktion ausgebaut werden (s.u.). Spezialfunktionen ----------------- J : Wiederholt die gesamte Rommandozeile. Damit können Sie z.B. eine Such- und Austausch—Funktion bis Textende wieder- holen. K : Löscht den gesamten Textbuffer. VORSICHT: Der eingegebene Text wird gelöscht! U : USER-Befehl. Ruft ein Maschinenprogramm, das ab $A8OO im Speicher stehen muß, per JSR—Belehl auf. VORSICHT Nur verwenden wenn Sie dort auch ein Programm stehen haben. @ : Einstellung der Tabulatorweite auf Zeichen (n von 0 bis 9). Ohne Angabe wird eine Weite von 8 verwendet. BEISPIEL: $@6$ : Tabulatorweite 6 Zeichen. M : Rückkehr zum DOS. Mit 'B'-'* ATMAS-II *' kommen Sie wieder in ATMAS-II zurück. Noch zwei Befehle, die das C-Register betreffen: E : Löscht C—Register (wie —K) _ G : C-Register in Text einfügen (—J) Befehle zur Ein-/Ausgabe von Text --------------------------------- Wenn Sie einen im Textbuffer befindlichen Text auf Diskette abspeichern wollen, so können Sie das mit dem 'W'-Kommando erledigen. Sie brauchen lediglich den gewünschten Namen des Files mit einer Gerätebe— zeichnung angeben. BEISPIEL: Sie wollen den momentanen Text unter dem Namen TEST.SRC auf Laufwerk 1 speichern. Dazu geben Sie folgendes ein: WD1:TEST Die Extension .SRC wird von ATHAS selbst hinzugefügt, Sie können selbstverständlich auch eine andere Extension angeben, etwa $WD1:TEST.ATM$ . VORSICHT: Der Text wird immer BEGINNEND bei der ========= momentanen POSITION DES CURSORS aufge- zeichnet. Deshalb immer zum Abspeichern des gesamten Textes zuvor -E eingeben. Auf ähnlich Heise können Sie ein Textfile von der Diskette in den Speicher laden. Dazu wird der Befehl 'R' benutzt, der wie 'W' verwendet wird. BEISPIEL: Laden des Demo-Files DEHO.SRC von der ATMAS-II Diskette (in Laufwerk 1): RD1:DEMO Der Extender .SRC wird wiederum automatisch angehäng Das File wird nun beginnend an der momentanen Cursorposition eingelesen. Daraus ergeben sich zwei Möglichkeiten: 1.) Wenn ein neues File geladen werden soll, dann löschen Sie zuvor den Textbuffer vorher mit K . 2.) Sie können aber auch einzelne Files in den Text- buffer einfügen (ähnlich dem Kopier-Register), indem Sie den Cursor an die gewünschte Stelle bringen und dann den Lade—Befehl geben. Treten während eines Ein-/Ausgabe-Befehles Fehler auf, zu wird dies in der Statuszeile durch die Meldung 'RW' angezeigt. Listings -------- Ausdrucke des Quelltextes können mit dem 'L' Befehl hergestellt werden. Dazu gibt es mehrere Optionen: 'L' : Listing scrollt über den Bildschirm 'L0' : Ausgabe auf RS232 Schnittstelle Nr. 1 des 850 interfacemodules (R1:) 'L1' : Ausgabe erfolgt über den normalen Printer—Handler 'P:', also im Regelfall über das Atari 850 interface-Modul. 'L7' : Listinq wird über Centronics—Schnittstelle aus den Joystick-Ports 3 und 4 ausgegeben. Diese Möglichkeit besteht nur für 400/800-Computer. Hinweise zur fortgeschrittenen Editorbenutzung ---------------------------------------------- Die Möglichkeit der Befehlsverkettung in der Kommando- zeile ermöglicht sehr komfortable Editierhilfen: $SLDA$3D$ILDX$J$ Diese Befehlskette würde alle LDA-Befehle ab der Cursorposition in LDX-Befehle umtauschen. Wie funktioniert's? Zuerst wird ein LDA-Befehl gesucht ($SLDA), der Cursor kann man sich dann hinter dem gesuchten String postiert denken. '$3D' löscht nun drei Zeichen links vom Cursor (Sie erinnern sich: Der Wiederholungsfaktor!), während '$ILDX den String 'LDX' einsetzt. '$J’ wiederum bewirkt, daß die gesamte Kommandozeile solange ausgeführt wird, bis der Text zu Ende ist, also ein 'S?'-Fehler (String nicht gefunden) auftritt. Teil 2: Der Makro—Assembler =========================== 2.1 Benutzung des Makroassembleres ---------------------------------- Vom Editor aus wird der ATMAS-II Makroassembler mit -Y aufgerufen. Er beginnt dann sofort mit der Assemblie— rung des Quelltextes, der sich im Textbuffer des Editors befinden muß. Die Assemblierung wird in drei Durchgänge (sog. passes) unterteilt, wobei der zweite Durchgang seine Aktivität durch ein schnell veränderndes Zeichen in der linken oberen Bildschirmecke anzeigt. Der dritte Pass kann ein Listing des assemblierten Programmes auf dem Drucker oder dem Bildschirm ausgeben (s. OUT- Direktive). Der Vorgang des Assemblierens wird so lange fort- gesetzt, bis entweder der Quelltext zu Ende ist, ein -Z Zeichen entdeckt wird (Assembler-Stop Zeichen) oder ein Fehler erkannt worden ist. Im letzteren Fall wird eine Fehlermeldung (s. Anhang B) am Bildschirm ausgegeben. Ein beliebiger Tastendruck bringt Sie in den Editor zurück, und zwar genau an die Stelle, die den Fehler verursacht hat. Sie können sofort den Fehler verbessern und den Assembler mit -Y neu starten. Dieses komfortable 'Hand—in—Hand' Arbeiten zwischen Editor und Assembler ist ein wesentlicher Punkt, der ATMAS-II als Entwicklungssystem für Maschinenpro— gramme so leistungsfähig macht, und doch dabei die Bedienung einfach gestaltet. 2.2 Eingabeformat des Assemblers -------------------------------- Der ATMAS-II Makroassembler kennt alle Opcodes der 6502-CPU, soweit diese im 'MOS-Technology 6502-Pro- grammierhandbuch' beschrieben sind. Ebenso folgt die Schreibweise der Adressierungsarten der in jenem Buch vorgeschlagenen Notation (siehe unten). Eine Ouellteutzeile kann folgende Formate haben: A) Leerzeile: ------------- Besteht nur aus einem -Zeichen. B) Kommentarzeile: ------------------ Beginnt mit einem '*' in der ersten Spalte. Beispiel: * Copyright (c) M. Huber C) Befehlszeile mit Label: -------------------------- Beginnt mit einem Label, gefolgt von einem Trenn- zeichen (Leerzeichen oder Tabulator), dann einem 6502-Opcode oder einer Assemblerdirektive, schließlich kann noch nach einem weiteren Trennzeichen ein Kommentar folgen. Beispiele: LOOP LDA #$10 DOSVEC EQU $000C DOS-EINSPRUNG D) Befehlszeile: ---------------- Muß immer mit einem Trennzeichen beginnen: Um saubere Listings zu bekommen empfiehlt es sich, diese mit einem Tabulator beginnen zu lassen. Danach folgt ein 6502-Opcode oder eine Assemblerdirektive, wie im voranstehenden Fall kann auch hier nach einem weiteren Trennzeichen ein Kommentar stehen. Beispiele: STA COLOR0 FARBE AENDERN DFB 100,120,140 Adressierungsarten: ------------------- Im folgenden eine kurze Zusammeniassung der Schreib- weisen der einzelnen Adresslerungsarten, jeweils mit einem Beispiel versehen: Implied Akku ASL Immediate # LDA #$FF Absolut, Zeropage STA $600 Relativ BNE *+4 Absolut X-indiziert ,X CMP $3000,X Absolut Y-indiziert ,Y LDA TABLE,Y lndirekt-indiziert (),Y EOR ($F0),Y Indiziert-indirekt (,X) STA ($F0,X) : gültiger 6502—Assemblerbefehl (Op-Code) : arithmetlscher Ausdruck Wie schon erwähnt, ist vor jedem ein Label möglich, nach jedem Assemblerbefehl kann ein Kommentar stehen, der mit einem Trennzeichen abgesetzt ist. AUSNAHME: Nach implied—Akku Befehlen muß das Kommen- tarfeld durch einen Strichpunkt abgetrennt sein. LABELS ------ Labels oestehen aus Buchstaben und Zahlen, wobei das erste Zeichen immer ein Buchstabe sein muß. Die maximale Länge beträgt 8 Zeichen, wobei alle Zeichen signifikant sind. Gültige Labels: Ungültige Labels: --------------- ----------------- SCHLEIF 1LOOP SCHLEIF1 SCHLEIFEN (9 Buchstaben!) S12345 Konstante: ---------- ATMAS-II kennt vier Arten von Konstanten: Dezimal—, Hexadezimal—, Binär— und Zeichen—Konstante. A) Dezimale Konstante --------------------- Bestehen einfach aus der Zahl selbst (im Bereich 0 bis 65535). Beispiele: 10, 100, 3000, 65535 B) Hexadezimale Konstante ------------------------- Bestehen aus einem Dollar-Zeichen ('$') und gültigen Hexadezimalziffern (O-9,A-F). Beispiele: $10, $FF, $AB00, $FFFF C) Binare Konstante ------------------- Bestehen aus einem Prozent-Symbol mit nachfolgenden gültigen Binärziffern (0,1). Beispiele: %1, %1001, %11110000 D) Zeichen-Konstante -------------------- Werden aus einem Apostroph mit nachfolgenden ASCII (bzw. ATASCII)-Zeichen gebildet. Die Zeichen werden in 7-Bit—Nerte umgewandelt (Bit 7 immer Null). Beispiele: 'X, '#, 'e, '" Negative Konstante: ------------------- Alle Vonstanten können durch ein vorangestelltes Minus—Zeichen als negative Zahlen interpretiert werden. Die Darstellung erfolgt im Zweierkomplement (-1 := $FFFF). Beispiele: -1, -$100, -%101101, -'B' Interner Adresszähler: ---------------------- ATMAS-II führt während der Assemblierung einen internen Adresszähler mit, der jeweils auf den Upcode. der gerade übersetzten Anweisung zeigt (bzw. auf das nächste freie Byte nach dem zuletzt berechneten Ausdruck in DFB/DFW Direktiven). Dieser interne Adresszähler kann jederzeit durch das '*'-Symbol abgerufen werden. Dies kann in vielfältigen Weisen benutzt werden: A) Speicherplatz reservieren: ORG *+$100 reserviert 256 Bytes B) relative Sprünge ohne Label: BNE *+4 überspringt die nächsten 4 Bytes C) Adressversetzte Labels für Software—Stackinq RETADR EQU *-1 momentane Adresse minus 1 Ausdruck: --------- Ein Ausdruck kann eine Konstante, ein Label, ein Makroparameter (siehe 2.4), der momentane Adress- Zähler ('*') oder eine arithmetische Verknüpfung derselben sein. Zugelassene Verknüpfungen sind: +, -, *, /, der Rechenbereich beträgt O-65535. Einige Beispiele dazu: LDA #$FF Konstante LDA #LABEL1 Label STA LABEL+$A0 Verknüpfung LDA *+$10 momentaner Adr.-Zähler+0ffset Zusätzlich sind auch Klammern zur Klärung der Priori- tät möglich: LDA #($A0+5)/1O LDA #LAB1—(Lab1/256)*256 2.3 Assembler-Direktiven ======================== 2.3.1 ORG --------- Zweck : bestimmt den Inhalt des assemblerinternen Adress- Zählers. Syntax : [