Menü: Tools → Cross Assembler
Zitate aus dem C64 Artikel: Assemblersprache
Assembler ist eine Programmiersprache, welche eine (besser) für Menschen lesbare Repräsentation von Maschinensprache ist. Als Assembler wird nicht nur die Sprache selbst, sondern auch ihr Compiler benannt. Übersetzt der Compiler ein Assembler-Programm in die Maschinensprache, so nennt man den Vorgang „assemblieren“. […]
Quelle des Zitats: http://www.c64-wiki.de/index.php/Assembler
Zitate aus dem C64 Artikel: Crossassembler
Ein Cross-Assembler ist ein Assembler, der auf einer Hostplattform wie MS-DOS, Windows oder Linux läuft und Maschinencode für eine andere Zielplattform (z.B. für den C64) erzeugt. […]
Quelle des Zitats: http://www.c64-wiki.de/index.php/Crossassembler
Rufst du diesen Menüpunkt auf, so öffnet sich ein Cross Assembler Fenster. Darin erstellte Programme sind nicht nur auf dem Emu64, sondern auch auf einen realen C64 lauffähig.
Dieses Fenster ist in zwei Teilen aufgesplittet. Im oberen Teil steht dir ein Editor zum Erstellen von Quellcode zur Verfügung und du hast die Möglichkeit das Programm direkt zu assemblieren.
Über den Menüpunkt Datei kannst du deinen Quelltext Laden oder Speichern. Im Ladedialog werden nur Dateien mit Dateiindex .txt oder .asm angezeigt. Der Cross Assembler Editor speichert Quelltexte mit der Dateiendung .asm ab. Das Dateiformat .asm entspricht einer Textdatei und kann auch mit anderen Texteditoren bearbeitet werden.
Der Editor verfügt über die normalen Eigenschaften eines Texteditors.
Der Cross Assembler ist ein 2 Pass Assembler der an TurboAss angelehnt ist. Deinen Programmcode kannst du über den Menüpunkt Assemblieren compilieren, dieser wird dann in 6510 Maschinen Code übersetzt. Nach dem Compilierungsvorgang liegt das Programm im C64 Speicher. Du kannst das Programm im C64 Bildschirm direkt starten und z.B. mit Hilfe des Emu64 Debugger dein Programm auf Herz und Nieren überprüfen. Außerdem ist es möglich das C64 Programm gleich als PRG zu exportieren.
Im unteren Teil gibt der Assembler Informationen zum Assemblieren aus.
PseudoOpcodes sind Befehle, welche die Assemblierung beeinflussen. Nach jedem Pseudo Opcode muss mindestens ein Leerzeichen (space) oder ein Tab folgen. Ansonsten gibt der Assembler eine Fehlermeldung aus. Vor einem Pseudo Opcode in einer Zeile darf auch keine Labeldefinition stehen. Diese sollte dann in einer extra Zeile darüber sein. Die Pseudo Opcodes können groß oder klein geschrieben werden.
Liste der Emu64 Cross Assembler Pseudo Opcodes | |
---|---|
.BYTE | Werte werden 1:1 in den Speicher geladen. |
.TEXT | Ein Text wird als Bytewerte in den Speicher geschrieben. |
.MESSAGE | Textausgabe im 2ten Pass im unteren Fenster |
.VAR | Variablenausgabe im Ausgabefenster |
.SAVE | Speichert nach Assemblierung das Programm ab. |
.BASIC | Erstellt automatisch einen Basicstart. |
.BASICLOADER | Erzeugt einen BASIC-Loader der zum Abtippen gedacht ist. |
Werte werden 1:1 in den Speicher geladen.
Die Werte müssen im Wertebereich von 0 - 255 liegen. Die Werte werden alle durch ein Komma getrennt. Du kannst folgende Zahlenformate verwenden: Dezimal, Hexadezimal ($), Binär (%), oder ein Zeichen ('A').
Beispiel zu .BYTE
Rasterbas
.BYTE 0,1,3,5,2,3,7,14,5,7,0,2
sprite
.byte %00110011,%00011011
.BYTE 1,$23,$11,%00110011,'Z'
Ein Text, der zwischen den Anführungszeichen ““ steht, wird als Bytewerte in den Speicher geschrieben.
Beispiel zu .TEXT
formatstring
.text „n:NEUE DISK,AA“
Pseudo Opcode: .MESSAGE
Hier wird der Text, der zwischen den ““ steht, im 2ten Pass im unteren Fenster ausgegeben.
Beispiel zu .MESSAGE
.message „Starte das Programm mit SYS 49152“
Ausgabe im unteren Fenster:
User Message: Starte das Programm mit SYS 49152
Hier wird am Ende, im unteren Ausgabefenster, der Inhalt der Variable ausgegeben.
Speichert nach erfolgreicher Assemblierung das ausführbare Programm unter dem angegebenen Namen ab.
Erstellt automatisch einen Basicstart.
Somit befindet sich das Programm dann ab $0801 und kann mit RUN gestartet werden. Das Aussehen der BASIC-Zeile kann beeinflusst werden. Die Zuweisung *= ist dann nicht mehr notwendig.
Der erste Parameter gibt an, welche BASIC Zeilennummer die Startzeile haben soll.
Der zweite Parameter gibt den Einsprungspunkt an. In der Basic Zeile siehst du dann SYS (Einsprungspunkt). Im dritten Parameter kannst du einen kleinen Text angeben.
Erzeugt einen BASIC-Loader der zum Abtippen gedacht ist.
Das Assembler Programm sollte nicht ab $0801 sein, sonst würde der BASIC-Loader sich selbst überschreiben, der Assembler würde aber trotzdem den Loader erzeugen. Übliche Loader Assembler Adressen sind $C000 und $9000.
Beispiel zu .BASICLOADER
.basicloader c:\schwarz.txt
*=$c000
start
lda #$00
sta $d020
sta $d021
rts
Nach erfolgreicher Assemblierung befindet sich eine Datei namens „schwarz.txt“ im Rootverzeichnis C:\. Diese kann mit jedem Textprogramm geöffnet werden.
Diese Textdatei wird erzeugt:
10 C=0:D=0:Z=100
20 FOR A=0 TO 8
30 READ B:D=D+B:POKE 49152+A,B:C=C+1
40 IF A=8 THEN READ B:IF B<>D GOTO 70
50 IF C<10 GOTO 90
55 IF A=8 THEN PRINT „ALLES OK“:END
60 READ B:IF B=D GOTO 80
70 PRINT „CHECKSUMMEN FEHLER IN“;Z:END
80 C=0:D=0:Z=Z+1
90 NEXT:PRINT „ALLES OK“
100 DATA 169,0,141,32,208,141,33,208,96,1028
In den Data Zeilen befindet sich das eigentliche Programm. Der Assembler erzeugt auch Checksummen damit Fehler, die beim Abtippen entstanden sind, erkannt und angezeigt werden.
Emu64 Handbuch V4.xx Navigation
V4.xx: Inhaltsverzeichnis
Portal: old-archiv
Hilfetext für Emu64 bis Version 4.32.