mirror of
https://github.com/fadden/6502bench.git
synced 2024-10-10 04:23:44 +00:00
fdd2bcf847
Two basic problems: (1) cc65, being a one-pass assembler, can't tell if a forward-referenced label is 16-bit or 24-bit. If the operand is potentially ambiguous, such as "LDA label", we need to add an operand width disambiguator. (The existing tests managed to only do backward references.) (2) 64tass wants the labels on JMP/JSR absolute operands to have 24-bit values that match the current program bank. This is the opposite of cc65, which requires 16-bit values. We need to distinguish PBR vs. DBR instructions (i.e. "LDA abs" vs. "JMP abs") and handle them differently when formatting for "Common". Merlin32 doesn't care, and ACME doesn't work at all, so neither of those needed updating. The 20052-branches-and-banks test was expanded to cover the problematic cases.
107 lines
1.8 KiB
ArmAsm
107 lines
1.8 KiB
ArmAsm
zero equ $00
|
|
longsym equ $123456
|
|
|
|
org $1000
|
|
clc
|
|
xce
|
|
sep #$30
|
|
jml L440000
|
|
|
|
lodat dfb $00
|
|
dfb $01
|
|
dfb $02
|
|
|
|
org $440000
|
|
L440000 cmpl L440000
|
|
L440004 ldal L440000
|
|
lda: L440000
|
|
lda zero
|
|
bmi L440004
|
|
dfb $62,$b2,$ff
|
|
dfb $d0,$b0
|
|
dfb $82,$a9,$ff
|
|
|
|
dat44 dw dat44
|
|
adr dat44
|
|
|
|
org $44ffc0
|
|
L44FFC0 cmpl L44FFC0
|
|
high44 beq :L44FFCB
|
|
dfb $30,$3c
|
|
dfb $82,$39,$00
|
|
|
|
:L44FFCB jml :L2000
|
|
|
|
org $2000
|
|
:L2000 bit :L2000
|
|
pea dat44
|
|
pea ^dat44
|
|
bne skip
|
|
jml [lodat]
|
|
|
|
skip nop
|
|
jsr j2
|
|
j2 jsr j2+3
|
|
jsr j2-3
|
|
jsl longsym
|
|
jml bank54
|
|
|
|
org $543210
|
|
bank54 cmpl bank54
|
|
bra L54321C
|
|
|
|
backchk nop
|
|
nop
|
|
L543218 rts
|
|
|
|
backval adr backchk
|
|
|
|
L54321C ldal backchk
|
|
ldal fwdchk
|
|
ldal $543216
|
|
ldal $54327d
|
|
lda backchk+1
|
|
lda backchk-1
|
|
lda fwdchk+1
|
|
lda fwdval+2
|
|
nop
|
|
jsr backchk
|
|
jsr backchk+1
|
|
jsr L543218
|
|
jsr fwdchk
|
|
jsr fwdchk+1
|
|
jsr L54327F
|
|
nop
|
|
ldx #$00
|
|
jsr (backval,x)
|
|
jsr (fwdval,x)
|
|
jsr :L54326E
|
|
jsr :L543271
|
|
jsr :L543268
|
|
jsr :L54326B
|
|
jsr :L543274
|
|
jsr :L543277
|
|
bra L543280
|
|
|
|
:L543268 jmp (backval,x)
|
|
|
|
:L54326B jmp (fwdval,x)
|
|
|
|
:L54326E jmp ($1008)
|
|
|
|
:L543271 jmp ($1008)
|
|
|
|
:L543274 jml [$1008]
|
|
|
|
:L543277 jml [$1008]
|
|
|
|
fwdval adr $54327d
|
|
|
|
fwdchk nop
|
|
nop
|
|
L54327F rts
|
|
|
|
L543280 jsr skip
|
|
rtl
|
|
|