mirror of
https://github.com/cc65/cc65.git
synced 2025-02-28 20:29:46 +00:00
Add two load chunks:
- First chunk checks system (if it's XL and memory is ok). - Second chunk contains the contents for the shadow memory beneath the ROM and copies the contents to their destination address. It also moves the screen memory to low memory in front of the program.
This commit is contained in:
parent
7572834ebf
commit
34cf7657e8
@ -1,29 +1,67 @@
|
||||
FEATURES {
|
||||
STARTADDRESS: default = $2E00;
|
||||
}
|
||||
|
||||
SYMBOLS {
|
||||
__STACKSIZE__: type = weak, value = $0800; # 2k stack
|
||||
__RESERVED_MEMORY__: type = weak, value = $0000;
|
||||
syschk: type = import; # force inclusion of SYSCHK
|
||||
sramprep: type = import; # force inclusion of SRPREP
|
||||
}
|
||||
|
||||
MEMORY {
|
||||
ZP: file = "", define = yes, start = $0082, size = $007E;
|
||||
HEADER: file = %O, start = $0000, size = $0006;
|
||||
RAM: file = %O, start = %S, size = $BC20 - __STACKSIZE__ - %S;
|
||||
TRAILER: file = %O, start = $0000, size = $0006;
|
||||
ZP: file = "", define = yes, start = $0082, size = $007E;
|
||||
|
||||
# just $FFFF
|
||||
HEADER: file = %O, start = $0000, size = $0002;
|
||||
|
||||
# "system check" load chunk
|
||||
SYSCHKHDR: file = %O, start = $0000, size = $0004;
|
||||
SYSCHK: file = %O, start = $2E00, size = $0E00;
|
||||
|
||||
# "shadow RAM preparation" load chunk
|
||||
SRPREPHDR: file = %O, start = $0000, size = $0004;
|
||||
SRPREP: file = %O, start = %S, size = $7C20 - %S - $04FF; # $04FF: space for temp. chargen buffer, page aligned
|
||||
SRPREPTRL: file = %O, start = $0000, size = $0006;
|
||||
|
||||
# "main program" load chunk
|
||||
MAINHDR: file = %O, start = $0000, size = $0004;
|
||||
RAM: file = %O, start = %S + __SAVEAREA_SIZE__, size = $D000 - __STACKSIZE__ - %S - __SAVEAREA_SIZE__;
|
||||
|
||||
# address of relocated character generator
|
||||
CHARGEN: file = "", define = yes, start = $D800, size = $0400;
|
||||
|
||||
# memory beneath the ROM
|
||||
SHADOW_RAM: file = "", define = yes, start = $DC00, size = $FFF0 - $DC00;
|
||||
|
||||
# defines entry point into program
|
||||
TRAILER: file = %O, start = $0000, size = $0006;
|
||||
}
|
||||
|
||||
SEGMENTS {
|
||||
EXEHDR: load = HEADER, type = ro;
|
||||
STARTUP: load = RAM, type = ro, define = yes;
|
||||
LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
|
||||
INIT: load = RAM, type = ro, optional = yes;
|
||||
CODE: load = RAM, type = ro, define = yes;
|
||||
RODATA: load = RAM, type = ro;
|
||||
DATA: load = RAM, type = rw;
|
||||
ZPSAVE: load = RAM, type = bss, define = yes;
|
||||
BSS: load = RAM, type = bss, define = yes;
|
||||
ZEROPAGE: load = ZP, type = zp;
|
||||
EXTZP: load = ZP, type = zp, optional = yes;
|
||||
AUTOSTRT: load = TRAILER, type = ro;
|
||||
EXEHDR: load = HEADER, type = ro;
|
||||
|
||||
SYSCHKHDR: load = SYSCHKHDR, type = ro, optional = yes;
|
||||
SYSCHK: load = SYSCHK, type = rw, define = yes, optional = yes;
|
||||
|
||||
SRPREPHDR: load = SRPREPHDR, type = ro;
|
||||
SAVEAREA: load = SRPREP, type = bss, define = yes; # shared btw. SRPREP and RAM
|
||||
SRPREP: load = SRPREP, type = rw, define = yes;
|
||||
SHADOW_RAM: load = SRPREP, run = SHADOW_RAM, type = rw, define = yes, optional = yes;
|
||||
SRPREPTRL: load = SRPREPTRL, type = ro;
|
||||
|
||||
MAINHDR: load = MAINHDR, type = ro;
|
||||
STARTUP: load = RAM, type = ro, define = yes;
|
||||
LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
|
||||
INIT: load = RAM, type = ro, optional = yes;
|
||||
CODE: load = RAM, type = ro, define = yes;
|
||||
RODATA: load = RAM, type = ro;
|
||||
DATA: load = RAM, type = rw;
|
||||
ZPSAVE: load = RAM, type = bss, define = yes;
|
||||
BSS: load = RAM, type = bss, define = yes;
|
||||
ZEROPAGE: load = ZP, type = zp;
|
||||
EXTZP: load = ZP, type = zp, optional = yes;
|
||||
AUTOSTRT: load = TRAILER, type = ro;
|
||||
}
|
||||
FEATURES {
|
||||
CONDES: type = constructor,
|
||||
|
Loading…
x
Reference in New Issue
Block a user