]> git.sur5r.net Git - cc65/commitdiff
The BASIC stub does encode the start address with only 4 digits. Add a check
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 8 Jul 2011 08:58:41 +0000 (08:58 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 8 Jul 2011 08:58:41 +0000 (08:58 +0000)
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

libsrc/cbm/exehdr.s

index 541d2e5839edb4dc84bd7d79f61cccb45d52a5d4..6d0051d9692a390ccd328fdf544e454d711e29fa 100644 (file)
@@ -14,6 +14,7 @@
         .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')
 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"