]> git.sur5r.net Git - cc65/blob - cfg/apple2-overlay.cfg
Replaced builtin linker configs with ordinary .cfg files.
[cc65] / cfg / apple2-overlay.cfg
1 # Configuration for overlay programs (overlays located below main program)
2
3 # The overlay files don't include the 4 byte DOS 3.3 header so use AppleCommander like this:
4 # java -jar ac.jar -cc65 mydisk.dsk myprog   bin < myprog
5 # java -jar ac.jar -p    mydisk.dsk myprog.1 bin < myprog.1
6 # java -jar ac.jar -p    mydisk.dsk myprog.2 bin < myprog.2
7 # java -jar ac.jar -p    mydisk.dsk myprog.3 bin < myprog.3
8 # ...
9
10 FEATURES {
11     STARTADDRESS: default = $0803;
12 }
13 SYMBOLS {
14     __EXEHDR__:      type = import;
15     __HIMEM__:       type = weak, value = $9600; # Presumed RAM end
16     __LCADDR__:      type = weak, value = $D400; # Behind quit code
17     __LCSIZE__:      type = weak, value = $0C00; # Rest of bank two
18     __STACKSIZE__:   type = weak, value = $0800; # 2k stack
19     __OVERLAYSIZE__: type = weak, value = $1000; # 4k overlay
20     __LOADADDR__:    type = weak, value = __STARTUP_RUN__;
21     __LOADSIZE__:    type = weak, value = __ZPSAVE_RUN__ - __STARTUP_RUN__ +
22                                           __MOVE_LAST__  - __MOVE_START__;
23 }
24 MEMORY {
25     ZP:                define = yes, start = $0080,                size = $001A;
26     HEADER: file = %O,               start = $0000,                size = $0004;
27     RAM:    file = %O,               start = %S + __OVERLAYSIZE__, size = __HIMEM__ - __STACKSIZE__ - __OVERLAYSIZE__ - %S;
28     MOVE:   file = %O, define = yes, start = $0000,                size = $FFFF;
29     LC:                define = yes, start = __LCADDR__,           size = __LCSIZE__;
30     OVL1:   file = "%O.1",           start = %S,                   size = __OVERLAYSIZE__;
31     OVL2:   file = "%O.2",           start = %S,                   size = __OVERLAYSIZE__;
32     OVL3:   file = "%O.3",           start = %S,                   size = __OVERLAYSIZE__;
33     OVL4:   file = "%O.4",           start = %S,                   size = __OVERLAYSIZE__;
34     OVL5:   file = "%O.5",           start = %S,                   size = __OVERLAYSIZE__;
35     OVL6:   file = "%O.6",           start = %S,                   size = __OVERLAYSIZE__;
36     OVL7:   file = "%O.7",           start = %S,                   size = __OVERLAYSIZE__;
37     OVL8:   file = "%O.8",           start = %S,                   size = __OVERLAYSIZE__;
38     OVL9:   file = "%O.9",           start = %S,                   size = __OVERLAYSIZE__;
39 }
40 SEGMENTS {
41     ZEROPAGE: load = ZP,              type = zp;
42     EXEHDR:   load = HEADER,          type = ro;
43     STARTUP:  load = RAM,             type = ro,  define = yes;
44     LOWCODE:  load = RAM,             type = ro;
45     CODE:     load = RAM,             type = ro;
46     RODATA:   load = RAM,             type = ro;
47     DATA:     load = RAM,             type = rw;
48     ZPSAVE:   load = RAM,             type = bss, define = yes;
49     BSS:      load = RAM,             type = bss, define = yes;
50     INIT:     load = MOVE, run = RAM, type = ro,  define = yes;
51     LC:       load = MOVE, run = LC,  type = ro,                optional = yes;
52     OVERLAY1: load = OVL1,            type = ro,  define = yes, optional = yes;
53     OVERLAY2: load = OVL2,            type = ro,  define = yes, optional = yes;
54     OVERLAY3: load = OVL3,            type = ro,  define = yes, optional = yes;
55     OVERLAY4: load = OVL4,            type = ro,  define = yes, optional = yes;
56     OVERLAY5: load = OVL5,            type = ro,  define = yes, optional = yes;
57     OVERLAY6: load = OVL6,            type = ro,  define = yes, optional = yes;
58     OVERLAY7: load = OVL7,            type = ro,  define = yes, optional = yes;
59     OVERLAY8: load = OVL8,            type = ro,  define = yes, optional = yes;
60     OVERLAY9: load = OVL9,            type = ro,  define = yes, optional = yes;
61 }
62 FEATURES {
63     CONDES: type    = constructor,
64             label   = __CONSTRUCTOR_TABLE__,
65             count   = __CONSTRUCTOR_COUNT__,
66             segment = INIT;
67     CONDES: type    = destructor,
68             label   = __DESTRUCTOR_TABLE__,
69             count   = __DESTRUCTOR_COUNT__,
70             segment = RODATA;
71     CONDES: type    = interruptor,
72             label   = __INTERRUPTOR_TABLE__,
73             count   = __INTERRUPTOR_COUNT__,
74             segment = RODATA,
75             import  = __CALLIRQ__;
76 }