mirror of
https://github.com/cc65/cc65.git
synced 2024-08-17 03:29:15 +00:00
Requiring the HGR segment makes the configs a little less flexible, but for the intended use case the HGR segment actually is necessary. And as we learned now, making the HGR segment obligatory helps users to not shoot themselves in the foot.
50 lines
2.1 KiB
INI
50 lines
2.1 KiB
INI
# Configuration for programs including a hires screen (with 6KB LOWCODE)
|
|
|
|
FEATURES {
|
|
STARTADDRESS: default = $0803;
|
|
}
|
|
SYMBOLS {
|
|
__EXEHDR__: type = import;
|
|
__FILETYPE__: type = weak, value = $0006; # ProDOS file type
|
|
__STACKSIZE__: type = weak, value = $0800; # 2k stack
|
|
__HIMEM__: type = weak, value = $9600; # Presumed RAM end
|
|
__LCADDR__: type = weak, value = $D400; # Behind quit code
|
|
__LCSIZE__: type = weak, value = $0C00; # Rest of bank two
|
|
}
|
|
MEMORY {
|
|
ZP: file = "", define = yes, start = $0080, size = $001A;
|
|
HEADER: file = %O, start = %S - $003A, size = $003A;
|
|
MAIN: file = %O, define = yes, start = %S, size = __HIMEM__ - %S;
|
|
BSS: file = "", start = __ONCE_RUN__, size = __HIMEM__ - __STACKSIZE__ - __ONCE_RUN__;
|
|
LC: file = "", define = yes, start = __LCADDR__, size = __LCSIZE__;
|
|
}
|
|
SEGMENTS {
|
|
ZEROPAGE: load = ZP, type = zp;
|
|
EXEHDR: load = HEADER, type = ro, optional = yes;
|
|
STARTUP: load = MAIN, type = ro;
|
|
LOWCODE: load = MAIN, type = ro, optional = yes;
|
|
HGR: load = MAIN, type = rw, start = $2000;
|
|
CODE: load = MAIN, type = ro start = $4000;
|
|
RODATA: load = MAIN, type = ro;
|
|
DATA: load = MAIN, type = rw;
|
|
INIT: load = MAIN, type = rw;
|
|
ONCE: load = MAIN, type = ro, define = yes;
|
|
LC: load = MAIN, run = LC, type = ro, optional = yes;
|
|
BSS: load = BSS, 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__;
|
|
}
|