ExAss
Inhaltsverzeichnis
ExAss (extended Assembler)
Das Modul ExAss ist ein Werkzeug für den C64. Das Tool unterstützt die Software Entwicklung am C64 in 6502 Assembler Code.
Zwei Pass Assembler
Befehlserweiterung
Zusätzliche Befehle fpür den Direktmodus
Floppy Kurzbefehle
Diese Befehle betreffen die Bedienung der angeschlossenen Floppy Laufwerke.
Die Befehle LOAD, BLOAD, SAVE und VERIFY funktionieren auch direkt aus dem Directory Listing am Bildschirm. Also einfach Directory mit $ anzeigen und dann <Cursor up> bis zum gewünschten Eintrag. Dann das erste Zeichen ersetzen mit /, % oder < und dann <RETURN> drücken.
$
Dieser Befehl dient dazu, das Directory einer Diskette anzeigen. Im Gegensatz zu LOAD"$",8 geht hierbei der Inhalt des BASIC Programmspeicher nicht verloren.
@
Dieser Befehl dient dazu, ein Kommando an das Floppy Laufwerk zu senden. Die möglichen Kommandos an die Floppy entnehmen Sie bitte dem Handbuch zum Floppy Laufwerk.
- Beispiele
- @I
- Initialisiert die Diskette im Laufwerk
- @N
- TEST
- Die Diskette wird gelöscht, der neue Name der Diskette ist 'TEST'
- @N
- TEST,UI
- Die Diskette wird formattiert, der neue Name der Diskette ist 'TEST' und die Disk ID ist 'UI'
- @S
- TEST*
- Löscht alle Dateien die mit 'TEST' beginnen
<Pfeil links>
Abkürzung für den Befehl SAVE.
/
Abkürzung für den Befehl LOAD.
%
Das ist der Befehl BLOAD, eine Abkürzung für den Befehl LOAD mit SA=1 (binary LOAD).
<
Abkürzung für den Befehl VERIFY.
#
Dies setzt die Gerätenummer (Floppy Laufwerk Adresse) für die Floppy Kurzbefehle. Der Standard hier ist 8, möglich sind die Werte 8 bis 11.
&
Das ist der Befehl APPEND, eine spezielle Art des Befehl LOAD. Damit kann man an den BASIC Code im Speicher ein weiteres BASIC Programm anhängen.
Zusatz Befehle
DEL
Dieser Befehl löscht eine oder mehrere Zeilen im BASIC Programmspeicher.
- Beispiele
- DEL 60
- löscht die Zeile 60 im BASIC Code
- DEL 600-
- löscht alle Zeilen im BASIC Code ab der Zeile 600 bis zum Ende
- DEL -500
- löscht alle Zeilen im BASIC Code vom Anfang bis zur Zeile 500
- DEL 200-500
- löscht alle Zeilen im BASIC Code ab der Zeile 200 bis zur Zeile 500
RENUM
Der Befehl RENUM nummeriert Zeilen aus dem BASIC Programm Code. Man muss einen Bereich von Zeilennummern angeben der neu nummeriert werden soll. Optional kann eine Schrittweite angegeben werden. Dabei kann man auch das Ende oder den Anfang des Zeilenbereich offen lassen. Der Befehl kann auch abgekürzt werden.
Das neu nummerieren ist hilfreich, wenn man mitten im Sourcecode Zeilen einfügen möchte und kein Platz mehr dafür vorhanden ist. Also wenn es zu eng geworden ist, weil man bereits zu viele Zeilen eingefügt hat.
Der Befehl ist für den Assembler gedacht. Bei Basic Code funktioniert das schon auch, aber es werden keine Sprungziele (GOTO, GOSUB) angepasst. Beim Assembler Code ist das egal, weil man da ausschließlich mit Sprungmarken adressiert.
- Beispiele
- RENUM 2000-
- nummeriert alle Zeilen von Zeile 2000 bis zum Ende neu (Schrittweite 5)
- RENUM 200-299
- nummeriert alle Zeilen von Zeile 200 bis 299 neu mit der Schrittweite 5
- RENUM -800,10
- nummeriert alle Zeilen bis zur Zeile 800 neu (Schrittweite 10)
FIND
Der Befehl "find" sucht nach dem angegebenen Suchstring in den BASIC Textzeilen und listet alle betroffenen Zeilen. Soll ein Text in Anführungszeichen (") gesucht werden, dann muss auch der Suchstring mit " beginnen. Der Befehl kann auch abgekürzt werden.
Bei großen Quelltexten ist diese Suchfunktion unumgänglich. Der Befehl funktioniert auch einwandfrei in BASIC Programmen. Dabei ist aber zu beachten, dass der C64 alle BASIC Befehle wie PRINT, GOTO etc. umwandelt in Token. Ein Token ist ein einzelnes Sonderzeichen und kann auch nur komplett gefunden werden.
Nach dem Befehl sollte kein Blank eingegeben werden, denn sonst wird es als Bestandteil des Suchstring angesehen.
- Beispiele
- FINDGOSUB
- findet alle GOSUB Befehle (Token) im Code
- FINDGOSU
- findet alle Textstellen wo 'GOSU' enthalten ist, jedoch nicht GOSUB (Token)
- FIND200
- findet alle Textstellen wo '200' vorkommt wie zb. "GOTO 200" oder "LDA #200"
- FIND 200
- findet alle Textstellen wo ' 200' vorkommt wie zb. "GOTO 200" aber nicht "GOTO200"
HELP
Der Befehl HELP listet alle neuen Befehle auf. Der Befehl kann auch mit abgekürzt werden.
MEM
UNNEW
Dieser Befehl stellt ein mit NEW gelöschtes Programm im BASIC Programmspeicher wieder her.
Besonders praktisch ist dieser Befehl nach einem RESET des Computer. Wenn das Programm im Speicher noch in Ordnung ist, kann man es mit UNNEW nach einem Reset wieder herstellen.
Vorsicht: Der Befehl UNNEW setzt den BASIC Ende Pointer (Variablen Beginn) ans Ende des BASIC Code. Wenn sich hinter dem BASIC Code noch Maschinen Code befindet, dann ist dieser nach Ausführung von UNNEW ungeschützt. Sobald Variable angelegt werden, zerstört sich der Speicherinhalt nach dem BASIC Programm Code.
KILL
Dieser Befehl schaltet ExAss ab und deaktiviert das Modul, sofern das die Modul Hardware unterstützt.
Es werden alle Vektoren auf Standard Belegung zurückgesetzt. Der BASIC Programmcode bleibt erhalten. Die Variablen werden alle gelöscht. Der 8K Speicher wo sich ExAss befindet wird freigegeben, wodurch man wieder 38K freien Speicher hat.
Neue Formel Auswertung
Das Basic des C64 rechnet normal nur mit dezimalen Zahlen und Variable. Wenn ExAss gestartet ist, dann kann der Rechner alle Rechenoperationen auch mit Zahlen zur Basis 16 (hexadezimal) und 2 (binär) ausführen. Dabei können alle Systeme nach belieben gemischt werden. Dh. man kann überall wo man bisher dezimal Zahlen verwendet hat alternativ auch Hex- oder Binärzahlen verwenden.
Will man hexadezimale Zahlen verwenden, dann muss man dazu nur der Zahl ein Dollarzeichen ($) voranstellen. Hexzahlen müssen jedoch die Länge 2 oder 4 haben. Zu den Ziffern können hexadzimale Zahlen auch die Buchstaben A bis F enthalten. Die Zahl $8F enspricht der dezimalen Zahl 143 (8 * 16 + 15).
Den binären Zahlen wird ein % Zeichen vorangestellt. Im binären Zahlensystem gibt es nur die Ziffern 0 und 1. Dieses Zahlensystem ist sinnvoll, wenn man Hardware nahe Dinge programmiert, weil man auf den ersten Blick gut sehen kann welche Bits auf 0 oder 1 sind.
Auch wenn man mit dem Exass ein Basic Programm erstellt kann man alle Zahlensystem mischen. Oder wenn man schnell was ausrechnen möchte mit der PRINT Funktion kann man alle drei Zahlensystem mischen.
zB.:
a = 6 * %0010 - $0f ? a
ergibt: -3 (6 * 2 - 15)
Mini Monitor
Sonstige Dinge
Tastatur Klick
Editierhilfe über Funktionstasten
Mit den Funktionstasten kann man zeilenweise durch den Basictext auf und ab scrollen (auch dumps und code listings), automatische Zeilennummerierung durchführen, Löschfunktionen (Zeilenende/Bildschirmende) auslösen, angezeigte Seite erneuern und mehrere Zeilen blättern. Dabei sucht Exass zB. bei F3 (Seite erneuern) von oben nach unten nach einer Startadresse (Zeilennummer oder Dump Adresse).
Beginnt eine Zeile mit einer Zahl handelt es sich um Basictext (Zeilennummer).
Beginnt eine Zeile mit ; gefolgt von einer Zahl handelt es sich um einen Speicherdump.
Bei einem Speicherdump kommt nach der Adresse entweder ein Buchstabe (Disassembler Listing/Memnonic) oder ein . (Datenbytes). Kommt nach dem . ein " so ist es ein ASCII dump. Je nach Modus (Hex/dec) werden die Daten dezimal oder hexadezimal gelistet. Ein <Return> ohne Daten listet die Adresse, sonst werden die Daten im Speicher verändert. Die F-Tasten funktionieren wie bei Basic Listings wenn statt einer Zeilennummer ein ; plus Adresse gefunden wird.