mirror of
https://github.com/fadden/6502bench.git
synced 2024-09-10 13:54:52 +00:00
Previously, we used the default character encoding from the project properties to determine how strings and character constants in the entire source file should be encoded. Now we switch between encodings as needed. The default character encoding is no longer relevant. High ASCII is now an actual encoding, rather than acting like ASCII that sometimes doesn't work. Because we can do high ASCII character operands with "| $80", we don't output a .enc to switch from ASCII to high ASCII unless we need to generate a string. (If we're already in high ASCII mode, the "| $80" isn't required but won't hurt anything.) We now do a scan up front to see if ASCII or high ASCII is needed, and only output the .cdefs for the encodings that are actually used. The only gap in the matrix is high ASCII DCI strings -- the ".shift" pseudo-op rejects text if the string doesn't start with the high bit clear.
78 lines
1.4 KiB
ArmAsm
78 lines
1.4 KiB
ArmAsm
.cpu "65816"
|
|
longsym = $123456
|
|
|
|
* = $1000
|
|
.as
|
|
.xs
|
|
clc
|
|
xce
|
|
sep #$30
|
|
jmp L0000
|
|
|
|
.logical $0000
|
|
L0000 bit @wL0000
|
|
L0003 lda L0000
|
|
lda L0003
|
|
bne LFFC3
|
|
bmi $ffc3
|
|
per LFFC3
|
|
bcc L0016
|
|
brl L0080
|
|
|
|
lodat .byte $00
|
|
.byte $01
|
|
.byte $02
|
|
|
|
L0016 lda lodat+1
|
|
brl LFFC0
|
|
|
|
.here
|
|
.logical $0080
|
|
L0080 bit @wL0080
|
|
jml L440000
|
|
|
|
.here
|
|
.logical $ffc0
|
|
LFFC0 bit LFFC0
|
|
LFFC3 brl L0003
|
|
|
|
.here
|
|
.logical $440000
|
|
L440000 cmp L440000
|
|
L440004 lda L440000
|
|
lda @w0+(L440000 & $ffff)
|
|
lda L0000
|
|
bmi L440004
|
|
per high44
|
|
bne high44
|
|
brl L44FFC0
|
|
|
|
dat44 .word 0+(dat44 & $ffff)
|
|
.long dat44
|
|
|
|
.here
|
|
.logical $44ffc0
|
|
L44FFC0 cmp L44FFC0
|
|
high44 beq L44FFCB
|
|
bmi L440004
|
|
brl L440004
|
|
|
|
L44FFCB jml L2000
|
|
|
|
.here
|
|
.logical $2000
|
|
L2000 bit L2000
|
|
pea 0+(dat44 & $ffff)
|
|
pea 0+(dat44 >> 16)
|
|
bne L200E
|
|
jml [lodat]
|
|
|
|
L200E nop
|
|
jsr j2
|
|
j2 jsr j2+3
|
|
jsr j2-3
|
|
jsl longsym
|
|
rts
|
|
|
|
.here
|