1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-06-11 17:29:29 +00:00
6502bench/SourceGen/SGTestData/Expected/2021-external-symbols_Merlin32.S
Andy McFadden c535201884 Prefer narrower project/platform symbols
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.
2020-01-23 10:49:22 -08:00

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