1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-11-13 13:10:51 +00:00
6502bench/SourceGen/SGTestData/Expected/20032-labels-and-symbols_64tass.S
Andy McFadden 8db554c1cd Fix 64tass output for non-loadable files
64tass wants to place its output into a 64KB region of memory,
starting at the address "*" is set to, and continuing without
wrapping around the end of the bank.  Some files aren't meant to be
handled that way, so we need to generate the output differently.

If the file's output fits nicely, it's considered "loadable", and
is generated in the usual way.  If it doesn't, it's treated as
"streamable", and the initial "* = addr" directive is omitted
(leaving "*" at zero), and we go straight to ".logical" directives.

65816 code with an initial address outside bank 0 is treated as
"streamable" whether or not the contents fit nicely in the designated
64K area.  This caused a minor change to a few of the 65816 tests.

A new test, 20240-large-overlay, exercises "streamable" by creating
a file with eight overlapping 8KB segments that load at $8000.
While the file as a whole fits in 64KB, it wouldn't if loaded at
the desired start address.

Also, updated the regression test harness to report assembler
failure independently of overall test failure.  This makes it easier
to confirm that (say) ACME v0.96.4 still works with the code we
generate, even though it doesn't match the expected output (which
was generated for v0.97).

(problem was raised in issue #98)
2021-08-01 17:21:20 -07:00

215 lines
5.3 KiB
ArmAsm

;Project was edited to add a label in the middle of a dense hex region, and add
;a duplicate label.
.cpu "65816"
.enc "sg_ascii"
.cdef $20,$7e,$20
BMI1 = $30 ;opcode mnemonic
zip = $cd
absl = $1029
absh = $feed
biggie = $123456
thirty2 = $12345678 ;32-bit constant test
plataddr = $3000 ;address only in platform file
projalsa = $3200 ;same val as projalso
.logical $012345
.as
.xs
start clc
xce
sep #$30
lda #zip
lda #zip+16
lda #zip-192
lda #<absh
lda #>absh
lda #<absh-192
lda #(>absh)+1
lda #<absl
lda #>absl
lda #<absl+192
lda #(>absl)-1
lda #<start
lda #>start
lda #`start
pea $feed
pea start & $ffff
pea $0001
pea $3456
pea $0012
pea absh
pea start & $ffff
pea start >> 16
pea biggie & $ffff
pea biggie >> 16
lda zip+1
lda @wzip+1
lda @lzip+1
lda absh-1
lda @labsh-1
lda absh+1
lda @labsh+1
lda 0+(start & $ffff)+1
lda start+1
lda 0+(start & $ffff)-1
lda start-1
lda 0+(biggie & $ffff)+1
lda biggie+1
lda 0+(biggie & $ffff)-1
lda biggie-1
rep #$30
.al
.xl
lda #zip
lda #zip+16
lda #zip+64
lda #absl
lda #absl >> 8
lda #absl-$1000
lda #(absl >> 8)-16
lda #absl >> 16
lda #absh
lda #absh >> 8
lda #absh-$f000
lda #(absh >> 8)+16
lda #(absh >> 16)+1
lda #start & $ffff
lda #start >> 8
lda #start >> 16
lda #biggie & $ffff
lda #biggie >> 8
lda #biggie >> 16
bra _skipdata
.byte zip
.byte <absh
.byte >absh
.byte <start
.byte >start
.byte `start
.word zip
.word absl
.word absl >> 8
.word absl-$1000
.word 0+(absl >> 8)-16
.word absh
.word absh >> 8
.word absh-$f000
.word 0+(absh >> 8)+16
.word start & $ffff
.word start >> 8
.word start >> 16
.word 0+(start & $ffff)+1
.word start >> 8
.word start >> 16
.byte $fe,$ed
.long zip
.long absh
.long absh >> 8
.long start
.long start >> 8
.long start >> 16
.dword zip
.dword absh
.dword absh >> 8
.dword start-1
.dword start >> 8
.dword start >> 16
_skipdata lda #(biggie >> 16)-1
mvn #`biggie,#(`biggie)-17
mvp #`start,#(`start)+17
mvn #18,#1
mvp #%00000001,#%00010010
per _skipdata
brl _nextchunk
_nextchunk jml _L1000_1
.here
.logical $1000
_L1000_1 nop
_L1000 nop
_L1000_0 nop
_l1000 sep #$30
.as
.xs
lda plataddr
lda $3100
lda projalsa
lda $3300
bra _calls
nop
_targ nop
nop
_L1016 per _targ-1
per _targ
per _targ+1
jsr _targ-1
jsr _targ
jsr _targ+1
_L1028 bra _targ-1
_L102A bra _targ
_L102C bra _targ+1
_L102E brl _targ-1
_L1031 brl _targ
_L1034 brl _targ+1
_L1037 jmp _targ-1
_L103A jmp _targ
_L103D jmp _targ+1
_L1040 jml _targ-1
jml _targ
jml _targ+1
_calls jsr _L1016
jsr _L1028
jsr _L102A
jsr _L102C
jsr _L102E
jsr _L1031
jsr _L1034
jsr _L1037
jsr _L103A
jsr _L103D
jsr _L1040
jsr $1044
jsr $1048
brl _L118E
_bulk .byte $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f ;bulky
.byte $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f
.byte $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f
.byte $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f
.byte $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f
.byte $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f
.byte $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f
_string .text "This is a long string. Put a label and comment on it to confir" ;stringy
.text "m that the label and comment only appear on the first line. T"
.text "he quick brown fox jumps over the lazy dogs."
_L118E lda #<thirty2+2
lda #(>thirty2)+3
lda #`thirty2
rep #BMI1
.al
.xl
lda #(thirty2 & $ffff)+3
lda #((thirty2 >> 8) & $ffff)+4
lda #thirty2 >> 16
rts
.here