The CBMx10 targets don't use the INIT segment in the startup code. So it may turn out to be not necessary at all for certain programs. The CBMx10 targets don't need symbols for the ONCE segment. Likely their definition was a C&P error in the first place.
44 lines
1.9 KiB
INI
44 lines
1.9 KiB
INI
SYMBOLS {
|
|
# The stack starts from $FEC3 and grows towards the video ram
|
|
__STACKSIZE__: type = weak, value = $06C3; # ~1.5k stack
|
|
}
|
|
MEMORY {
|
|
HEADER: file = %O, start = $0001, size = $0050, fill = yes;
|
|
ZP: file = %O, define = yes, start = $0051, size = $00AD, fill = yes;
|
|
STARTUP: file = %O, start = $00FE, size = $0102, fill = yes;
|
|
PAGE2: file = %O, start = $0200, size = $0100, fill = yes;
|
|
PAGE3: file = %O, start = $0300, size = $0100, fill = yes;
|
|
MAIN: file = %O, start = $0400, size = $DC00;
|
|
CHARRAM: file = "", define = yes, start = $E000, size = $1000;
|
|
VIDRAM: file = "", define = yes, start = $F000, size = $0400;
|
|
}
|
|
SEGMENTS {
|
|
ZEROPAGE: load = ZP, type = zp;
|
|
EXTZP: load = ZP, type = rw, define = yes;
|
|
EXEHDR: load = HEADER, type = rw;
|
|
STARTUP: load = STARTUP, type = rw;
|
|
PAGE2: load = PAGE2, type = rw;
|
|
PAGE3: load = PAGE3, type = rw;
|
|
LOWCODE: load = MAIN, type = ro, optional = yes;
|
|
ONCE: load = MAIN, type = ro, optional = yes;
|
|
CODE: load = MAIN, type = ro;
|
|
RODATA: load = MAIN, type = ro;
|
|
DATA: load = MAIN, type = rw;
|
|
INIT: load = MAIN, type = bss, optional = yes;
|
|
BSS: load = MAIN, type = bss, define = 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__;
|
|
}
|