1
0
mirror of https://github.com/cc65/cc65.git synced 2024-11-02 18:06:48 +00:00
cc65/libsrc/cbm/exehdr.s
uz 49cdfcf5b0 The BASIC stub does encode the start address with only 4 digits. Add a check
so the linker will not generate an invalid header for program files with
larger start addresses.


git-svn-id: svn://svn.cc65.org/cc65/trunk@5074 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-07-08 08:58:41 +00:00

34 lines
1.2 KiB
ArmAsm

;
; Ullrich von Bassewitz, 2010-11-14
;
; This module supplies a small BASIC stub program that jumps to the machine
; language code that follows it using SYS.
;
; The following symbol is used by linker config to force the module
; to get included into the output file
.export __EXEHDR__: absolute = 1
.segment "EXEHDR"
.addr Next
.word .version ; Line number
.byte $9E ; SYS token
; .byte <(((Start / 10000) .mod 10) + '0')
.byte <(((Start / 1000) .mod 10) + '0')
.byte <(((Start / 100) .mod 10) + '0')
.byte <(((Start / 10) .mod 10) + '0')
.byte <(((Start / 1) .mod 10) + '0')
.byte $00 ; End of BASIC line
Next: .word 0 ; BASIC end marker
Start:
; If the start address is larger than 4 digits, the header generated above
; will not contain the highest digit. Instead of wasting one more digit that
; is almost never used, check it at link time and generate an error so the
; user knows something is wrong.
.assert (Start < 10000), error, "Start address too large for generated BASIC stub"