Beispiele
---------

Als erstes Beispiel soll ein kleines Programm zur Addition der
16-Bit-Werte $0250 und $01c0 dienen:

 !addr var1l = $5000
 !addr var1h = $5001
 !addr var2l = $5010
 !addr var2h = $5011
 !addr resl =  $5020
 !addr resh =  $5021

 *=$4000

 lda #$50
 sta var1l
 lda #$02
 sta var1h
 lda #$c0
 sta var2l
 lda #$01
 sta var2h

 clc
 lda var1l
 adc var2l
 sta resl
 lda var1h
 adc var2h
 sta resh

 brk


Der Quelltext wird mit

 acme -f cbm -l example.lst -o example.prg example.a

uebersetzt. Die Option -l erstellt die Symboltabelle.
Der Emulator kann das Maschinenprogramm wieder in Assembler
umwandeln und beruecksichtigt dabei die Symboltabelle.

 python cpu6502.py -d -s example.lst -f example.prg

Ausgabe:

 4000  LDA #50
 4002  STA 5000 ; var1l
 4005  LDA #02
 4007  STA 5001 ; var1h
 400A  LDA #C0
 400C  STA 5010 ; var2l
 400F  LDA #01
 4011  STA 5011 ; var2h
 4014  CLC
 4015  LDA 5000 ; var1l
 4018  ADC 5010 ; var2l
 401B  STA 5020 ; resl
 401E  LDA 5001 ; var1h
 4021  ADC 5011 ; var2h
 4024  STA 5021 ; resh
 4027  BRK
 ------------------

Der Emulator kann das Maschinenprogramm auch ausfuehren.
Die Option -r zeigt die Register nach dem Programmlauf
an und die Option -m die angegebene Speicherseite
(dezimal 80 fuer $50):

 python cpu6502.py -m 80 -r --run -f example.prg

Ausgabe:

  PC   AC  XR  YR  SP  NVZC
 --------------------------
 4028  03  00  00  FF  0000

 Page 50:
 --------
 00: 50 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 10: C0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 20: 10 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 ...

In der Adresse $0520/$0521 steht das Ergebnis: $0410.


Das zweite Beispiel gibt im Emulator fuer den C64 eine
Reihe von Zeichen direkt im Bildschirmspeicher aus:

 !addr screen = $0400

 *=$c000

 jsr init
 jsr out
 brk

init
 ldx #0
 lda #$20
-
 sta screen,x
 inx
 bne -
 rts

out
 ldx #0
-
 txa
 sta screen,x
 inx
 cpx #$5f
 bcc -
 rts


Der Quelltext wird wieder mit

 acme -f cbm -l example.lst -o example.prg example.a

uebersetzt und mit dem nachfolgenden Befehl kann das
Maschinenprogramm wieder angezeigt werden:

 python cpuC64.py -d -s example.lst -f example.prg

Ausgabe:

 C000  JSR C007 ; init
 C003  JSR C012 ; out
 C006  BRK
 ------------------
 init:
 C007  LDX #00
 C009  LDA #20
 C00B  STA 0400,X ; screen
 C00E  INX
 C00F  BNE C00B
 C011  RTS
 ------------------
 out:
 C012  LDX #00
 C014  TXA
 C015  STA 0400,X ; screen
 C018  INX
 C019  CPX #5F
 C01B  BCC C014
 C01D  RTS
 ------------------

Die Ausfuehrung des Maschinenprogramms erfolgt analog,
wobei die Option --screen den Inhalt des Bildschirm-
speichers anzeigt (standardmaessig ist der gesamte
Speicher im Emulator mit Nullen gefuellt).

 python cpuC64.py --screen -r --run -f example.prg

Ausgabe:

  PC   AC  XR  YR  SP  NVZC
 --------------------------
 C007  5E  5F  00  FF  0011

 +----------------------------------------+
 |@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ !"#$%&'|
 |()*+,-./0123456789:;<=>?`abcdefghijklmno|
 |pqrstuvwxyz{|}~                         |
 |                                        |
 |                                        |
 |                                        |
 |                @@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
 +----------------------------------------+