mirror of
https://github.com/fadden/6502bench.git
synced 2024-11-04 15:05:03 +00:00
8db554c1cd
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)
19 lines
495 B
ArmAsm
19 lines
495 B
ArmAsm
; Copyright 2021 faddenSoft. All Rights Reserved.
|
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
|
;
|
|
; Assembler: Merlin 32
|
|
|
|
org $0000
|
|
|
|
; EDIT: change each 8KB segment to start at $8000, so they overlap
|
|
|
|
nop ;work around Merlin 1.0 bug
|
|
ds $1fff,$00
|
|
ds $2000,$01
|
|
ds $2000,$02
|
|
ds $2000,$03
|
|
ds $2000,$04
|
|
ds $2000,$05
|
|
ds $2000,$06
|
|
ds $2000,$07
|