mirror of
https://github.com/fadden/6502bench.git
synced 2024-09-11 20:54:37 +00:00
We want to be able to declare a symbol for a struct or buffer that spans the entire width, and then declare more-specific items within it that take precedence. This worked for everything but the very first byte, because on an exact match we were resolving the conflict alphabetically. Now, if one is wider than the other, we use the narrower definition. Updated 2021-external-symbols with some additional test cases.
174 lines
4.2 KiB
ArmAsm
174 lines
4.2 KiB
ArmAsm
FatConst equ $4000
|
|
|
|
OverVar equ $40
|
|
CodeWrap equ $0f00 ;encases program
|
|
SameName1 equ $2000
|
|
SameName2 equ $2011
|
|
SameName3 equ $2022
|
|
SameValA_A equ $2100
|
|
SameValB_A equ $2110
|
|
SameValC_C equ $2120
|
|
ChkProj1 equ $2200
|
|
ProjSym1 equ $2202
|
|
ChkProj2 equ $2204
|
|
ProjSym2 equ $220a
|
|
Over1 equ $3000 ;$3000-300f, inclusive
|
|
Over2 equ $3002 ;$3002-3009
|
|
Over3 equ $3006 ;$3006-300c
|
|
Over2a equ $3006 ;$3006
|
|
SepOver1 equ $3100 ;$3100-3103, inclusive
|
|
SepOver2 equ $3102 ;$3102-3105, inclusive
|
|
ReadOnly equ $5000 ;R
|
|
WriteOnly equ $5001 ;W
|
|
WriteOnly2 equ $5002
|
|
OverA_0 equ $6000 ;should win, alphabetically
|
|
OverA_1 equ $6100 ;should win, alphabetically
|
|
OverB_2 equ $6200 ;should win because narrower
|
|
OverB_3 equ $6300 ;should win because narrower
|
|
OverA_4 equ $6401 ;(ref OverA_4+2)
|
|
OverB_4 equ $6402 ;should win because closer
|
|
OverC_4 equ $6403
|
|
MultiRead equ $c004 ;$c004/5/6, read-only
|
|
MultiWrite equ $c005 ;$c005/6/7, write-only
|
|
AlsoMultiZero equ $c010 ;wins (alphabetically)
|
|
NonMultiOver equ $c010 ;winner
|
|
MultiOne equ $c021
|
|
MoreMultiZero equ $c100
|
|
AlsoMoreMultiZero equ $c110 ;winner
|
|
BankWrap equ $fff0
|
|
|
|
org $1000
|
|
L1000 lda CodeWrap+255
|
|
ldx L1000
|
|
ldy L1000+1
|
|
lda :L1160
|
|
lda CodeWrap+$261
|
|
lda CodeWrap+$268
|
|
nop
|
|
lda $1ffe
|
|
lda SameName1-1
|
|
lda SameName1
|
|
lda $200f
|
|
lda SameName2-1
|
|
lda SameName2
|
|
lda $2012
|
|
lda $201f
|
|
lda $2020
|
|
lda SameName3-1
|
|
lda SameName3
|
|
nop
|
|
lda SameValA_A
|
|
lda SameValB_A
|
|
lda SameValC_C
|
|
nop
|
|
lda $21fe
|
|
lda ChkProj1-1
|
|
lda ChkProj1
|
|
lda ChkProj1+1
|
|
lda ProjSym1
|
|
lda ProjSym1+1
|
|
lda ProjSym1+2
|
|
lda ProjSym1+3
|
|
lda ChkProj2+2
|
|
lda ChkProj2+3
|
|
lda $2208
|
|
lda ProjSym2-1
|
|
lda ProjSym2
|
|
lda $220b
|
|
nop
|
|
lda $2ffe
|
|
lda Over1-1
|
|
lda Over1
|
|
lda Over1+1
|
|
lda Over2
|
|
lda Over2+1
|
|
lda Over2+2
|
|
lda Over2+3
|
|
lda Over2a
|
|
lda Over3+1
|
|
lda Over3+2
|
|
lda Over3+3
|
|
lda Over3+4
|
|
lda Over3+5
|
|
lda Over3+6
|
|
lda Over1+13
|
|
lda Over1+14
|
|
lda Over1+15
|
|
lda $3010
|
|
nop
|
|
lda $30fe
|
|
lda SepOver1-1
|
|
lda SepOver1
|
|
lda SepOver1+1
|
|
lda SepOver1+2
|
|
lda SepOver1+3
|
|
lda SepOver2+2
|
|
lda SepOver2+3
|
|
lda $3106
|
|
nop
|
|
]LocalVar equ $41
|
|
ldx $3e
|
|
ldx $3f
|
|
ldx OverVar
|
|
ldx ]LocalVar
|
|
ldx ]LocalVar+1
|
|
ldx OverVar+3
|
|
ldx $44
|
|
nop
|
|
lda FatConst-1
|
|
lda $4000
|
|
lda $4001
|
|
lda BankWrap+8
|
|
lda <BankWrap-$ffe8
|
|
nop
|
|
lda ReadOnly
|
|
lda ReadOnly+1
|
|
ldx $5002
|
|
ldy $5003
|
|
sta WriteOnly-1
|
|
sta WriteOnly
|
|
stx WriteOnly2
|
|
sty $5003
|
|
nop
|
|
bit AlsoMultiZero-16
|
|
bit NonMultiOver
|
|
bit AlsoMultiZero+16
|
|
bit AlsoMultiZero+224
|
|
nop
|
|
bit MultiOne-32
|
|
bit MultiOne-16
|
|
bit MultiOne
|
|
nop
|
|
bit $c002
|
|
bit $c012
|
|
bit $c022
|
|
nop
|
|
lda MultiRead-1
|
|
lda MultiRead
|
|
lda MultiRead+1
|
|
lda MultiRead+2
|
|
lda $c007
|
|
sta MultiWrite-1
|
|
sta MultiWrite
|
|
sta MultiWrite+1
|
|
sta MultiWrite+2
|
|
sta $c008
|
|
nop
|
|
jsr MultiRead+1
|
|
nop
|
|
bit MoreMultiZero
|
|
bit AlsoMoreMultiZero
|
|
bit MoreMultiZero+32
|
|
bit MoreMultiZero+240
|
|
nop
|
|
lda OverA_0
|
|
lda OverA_1
|
|
lda OverB_2
|
|
lda OverB_3+4
|
|
lda OverA_4-1
|
|
lda OverA_4
|
|
lda OverB_4
|
|
lda OverC_4
|
|
:L1160 rts
|
|
|