mirror of
https://github.com/cc65/cc65.git
synced 2024-12-22 12:30:41 +00:00
c768de156a
The main chunk load header references __BSS_LOAD__ so BSS must be the first bss type segment. Subsequent changes will move ONCE to share its address with the BSS. Then it'll be necessary to load INIT from disk. Therefore we do it right now.
82 lines
4.3 KiB
INI
82 lines
4.3 KiB
INI
FEATURES {
|
|
STARTADDRESS: default = $2000;
|
|
}
|
|
SYMBOLS {
|
|
__EXEHDR__: type = import;
|
|
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
|
|
__AUTOSTART__: type = import; # force inclusion of autostart "trailer"
|
|
__STACKSIZE__: type = weak, value = $0800; # 2k stack
|
|
__OVERLAYSIZE__: type = weak, value = $1000; # 4k overlay
|
|
__STARTADDRESS__: type = export, value = %S;
|
|
__RESERVED_MEMORY__: type = weak, value = $0000;
|
|
}
|
|
MEMORY {
|
|
ZP: file = "", define = yes, start = $0082, size = $007E;
|
|
|
|
# file header, just $FFFF
|
|
HEADER: file = %O, start = $0000, size = $0002;
|
|
|
|
# "system check" load chunk
|
|
SYSCHKHDR: file = %O, start = $0000, size = $0004;
|
|
SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
|
|
SYSCHKTRL: file = %O, start = $0000, size = $0006;
|
|
|
|
# "main program" load chunk
|
|
MAINHDR: file = %O, start = $0000, size = $0004;
|
|
MAIN: file = %O, define = yes, start = %S + __OVERLAYSIZE__, size = $BC20 - __OVERLAYSIZE__ - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
|
|
TRAILER: file = %O, start = $0000, size = $0006;
|
|
|
|
# overlays
|
|
OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
|
|
OVL2: file = "%O.2", start = %S, size = __OVERLAYSIZE__;
|
|
OVL3: file = "%O.3", start = %S, size = __OVERLAYSIZE__;
|
|
OVL4: file = "%O.4", start = %S, size = __OVERLAYSIZE__;
|
|
OVL5: file = "%O.5", start = %S, size = __OVERLAYSIZE__;
|
|
OVL6: file = "%O.6", start = %S, size = __OVERLAYSIZE__;
|
|
OVL7: file = "%O.7", start = %S, size = __OVERLAYSIZE__;
|
|
OVL8: file = "%O.8", start = %S, size = __OVERLAYSIZE__;
|
|
OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
|
|
}
|
|
SEGMENTS {
|
|
ZEROPAGE: load = ZP, type = zp;
|
|
EXTZP: load = ZP, type = zp, optional = yes;
|
|
EXEHDR: load = HEADER, type = ro;
|
|
SYSCHKHDR: load = SYSCHKHDR, type = ro, optional = yes;
|
|
SYSCHK: load = SYSCHKCHNK, type = rw, define = yes, optional = yes;
|
|
SYSCHKTRL: load = SYSCHKTRL, type = ro, optional = yes;
|
|
MAINHDR: load = MAINHDR, type = ro;
|
|
STARTUP: load = MAIN, type = ro, define = yes;
|
|
LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
|
|
ONCE: load = MAIN, type = ro, optional = yes;
|
|
CODE: load = MAIN, type = ro, define = yes;
|
|
RODATA: load = MAIN, type = ro;
|
|
DATA: load = MAIN, type = rw;
|
|
INIT: load = MAIN, type = rw, optional = yes;
|
|
BSS: load = MAIN, type = bss, define = yes;
|
|
AUTOSTRT: load = TRAILER, type = ro;
|
|
OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes;
|
|
OVERLAY2: load = OVL2, type = ro, define = yes, optional = yes;
|
|
OVERLAY3: load = OVL3, type = ro, define = yes, optional = yes;
|
|
OVERLAY4: load = OVL4, type = ro, define = yes, optional = yes;
|
|
OVERLAY5: load = OVL5, type = ro, define = yes, optional = yes;
|
|
OVERLAY6: load = OVL6, type = ro, define = yes, optional = yes;
|
|
OVERLAY7: load = OVL7, type = ro, define = yes, optional = yes;
|
|
OVERLAY8: load = OVL8, type = ro, define = yes, optional = yes;
|
|
OVERLAY9: load = OVL9, type = ro, define = yes, optional = yes;
|
|
}
|
|
FEATURES {
|
|
CONDES: type = constructor,
|
|
label = __CONSTRUCTOR_TABLE__,
|
|
count = __CONSTRUCTOR_COUNT__,
|
|
segment = ONCE;
|
|
CONDES: type = destructor,
|
|
label = __DESTRUCTOR_TABLE__,
|
|
count = __DESTRUCTOR_COUNT__,
|
|
segment = RODATA;
|
|
CONDES: type = interruptor,
|
|
label = __INTERRUPTOR_TABLE__,
|
|
count = __INTERRUPTOR_COUNT__,
|
|
segment = RODATA,
|
|
import = __CALLIRQ__;
|
|
}
|