1SYMBOLS {
2    __STACKSIZE__:        type = weak, value = $0800; # 2k stack
3    __STARTOFDIRECTORY__: type = weak, value = $00CB; # start just after loader
4    __BANK0BLOCKSIZE__:   type = weak, value = $0400; # bank 0 cart block size
5    __BANK1BLOCKSIZE__:   type = weak, value = $0000; # bank 1 block size
6    __BLLHDR__:           type = import;
7}
8MEMORY {
9    ZP:     file = "", define = yes, start = $0000, size = $0100;
10    HEADER: file = %O,               start = $0000, size = $000a;
11    MAIN:   file = %O, define = yes, start = $0400, size = $BC38 - __STACKSIZE__;
12}
13SEGMENTS {
14    ZEROPAGE: load = ZP,     type = zp;
15    EXTZP:    load = ZP,     type = zp,                optional = yes;
16    APPZP:    load = ZP,     type = zp,                optional = yes;
17    BLLHDR:   load = HEADER, type = ro;
18    STARTUP:  load = MAIN,   type = ro,  define = yes;
19    LOWCODE:  load = MAIN,   type = ro,  define = yes, optional = yes;
20    ONCE:     load = MAIN,   type = ro,  define = yes, optional = yes;
21    CODE:     load = MAIN,   type = ro,  define = yes;
22    RODATA:   load = MAIN,   type = ro,  define = yes;
23    DATA:     load = MAIN,   type = rw,  define = yes;
24    BSS:      load = MAIN,   type = bss, define = yes;
25}
26FEATURES {
27    CONDES: type    = constructor,
28            label   = __CONSTRUCTOR_TABLE__,
29            count   = __CONSTRUCTOR_COUNT__,
30            segment = ONCE;
31    CONDES: type    = destructor,
32            label   = __DESTRUCTOR_TABLE__,
33            count   = __DESTRUCTOR_COUNT__,
34            segment = RODATA;
35    CONDES: type    = interruptor,
36            label   = __INTERRUPTOR_TABLE__,
37            count   = __INTERRUPTOR_COUNT__,
38            segment = RODATA,
39            import  = __CALLIRQ__;
40}
41