mirror of
https://github.com/fadden/6502bench.git
synced 2024-12-03 05:49:48 +00:00
e137db2b5c
Added an address-to-offset test in the GeneratePlatformSymbolRefs() method, which sets the operand symbols for anything that lands outside the scope of the file. Because the region isolation code prevented symbols from being associated with the operands in the initial code scan, those operands were being examined here. Without the additional test, the inappropriate label associations were getting a second chance. Added "[!in]" and "[!out]" to the comment field of .addrs lines. This is only for the on-screen display and text exports, not asm gen. Bumped the project file CONTENT_VERSION. Added a regression test (20290-region-isolation). The test turned up an existing problem: pre-labels are emitted by the asm generators on their own line, but the code that puts excessively long labels on a separate line wasn't taking that into account. This has been fixed. No changes to existing regression tests, which didn't happen to use long labels.
232 lines
4.0 KiB
ArmAsm
232 lines
4.0 KiB
ArmAsm
.setcpu "6502"
|
|
.org $0800
|
|
jsr region1
|
|
jsr region2
|
|
jsr $3000
|
|
jsr $4000
|
|
lda inner1
|
|
lda inner2
|
|
lda $b000
|
|
lda $c000
|
|
self: .byte $ad,$ea
|
|
L081A: nop
|
|
jsr altbnk1
|
|
jsr altbnk2
|
|
jmp done
|
|
|
|
altbnk1: bit $c080
|
|
lda self+1
|
|
bne L081A
|
|
rts
|
|
|
|
.org *+$0000
|
|
altbnk2: bit $c080
|
|
lda $0819
|
|
bne $081a
|
|
ldx $081b
|
|
rts
|
|
|
|
.org $0839
|
|
done: nop
|
|
rts
|
|
|
|
.res 197,$00
|
|
|
|
.org $1000
|
|
region1x: lda region1x
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
rts
|
|
|
|
.res 202,$00
|
|
|
|
.org $1000
|
|
region1: lda region1
|
|
pha
|
|
ldy #$11
|
|
nop
|
|
@copy: lda inner1_pre,y
|
|
sta inner1,y
|
|
dey
|
|
bpl @copy
|
|
bit $101d
|
|
jsr inner1
|
|
jmp finish1
|
|
|
|
inner1_pre:
|
|
.org $9000
|
|
inner1: ldx inner1
|
|
ldy #$aa
|
|
ldy finish1
|
|
ldy finish2
|
|
ldy $302b
|
|
ldy $402b
|
|
rts
|
|
|
|
.org $102b
|
|
finish1: ldy finish1
|
|
ldx region1
|
|
ldx region2
|
|
ldx $3000
|
|
ldx $4000
|
|
lda inner1
|
|
lda inner2
|
|
lda $b000
|
|
lda $c000
|
|
pla
|
|
rts
|
|
|
|
.res 184,$00
|
|
|
|
.org $2000
|
|
region2: lda region2
|
|
pha
|
|
ldy #$11
|
|
nop
|
|
@copy: lda inner2_pre,y
|
|
sta inner2,y
|
|
dey
|
|
bpl @copy
|
|
bit $201d
|
|
jsr inner2
|
|
jmp finish2
|
|
|
|
inner2_pre:
|
|
.org $a000
|
|
inner2: ldx inner2
|
|
ldy #$aa
|
|
ldy $102b
|
|
ldy finish2
|
|
ldy $302b
|
|
ldy $402b
|
|
rts
|
|
|
|
.org $202b
|
|
finish2: ldy finish2
|
|
ldx $1000
|
|
ldx region2
|
|
ldx $3000
|
|
ldx $4000
|
|
pla
|
|
rts
|
|
|
|
.res 196,$00
|
|
|
|
.org $3000
|
|
region3: lda region3
|
|
pha
|
|
ldy #$11
|
|
nop
|
|
@copy: lda inner3_pre,y
|
|
sta inner3,y
|
|
dey
|
|
bpl @copy
|
|
bit $301d
|
|
jsr inner3
|
|
jmp finish3
|
|
|
|
inner3_pre:
|
|
.org $b000
|
|
inner3: ldx inner3
|
|
ldy #$aa
|
|
ldy finish1
|
|
ldy finish2
|
|
ldy finish3
|
|
ldy $402b
|
|
rts
|
|
|
|
.org $302b
|
|
finish3: ldy finish3
|
|
ldx region1
|
|
ldx region2
|
|
ldx region3
|
|
ldx $4000
|
|
pla
|
|
rts
|
|
|
|
.res 196,$00
|
|
|
|
.org $4000
|
|
region4: lda region4
|
|
pha
|
|
ldy #$11
|
|
nop
|
|
@copy: lda inner4_pre,y
|
|
sta inner4,y
|
|
dey
|
|
bpl @copy
|
|
bit $401d
|
|
jsr inner4
|
|
jmp finish4
|
|
|
|
inner4_pre:
|
|
.org $c000
|
|
inner4: ldx inner4
|
|
ldy #$aa
|
|
ldy $102b
|
|
ldy $202b
|
|
ldy $302b
|
|
ldy finish4
|
|
rts
|
|
|
|
.org $402b
|
|
finish4: ldy finish4
|
|
ldx $1000
|
|
ldx $2000
|
|
ldx $3000
|
|
ldx region4
|
|
pla
|
|
rts
|
|
|
|
.res 196,$00
|
|
.org $0000
|
|
.byte $ff
|