]> git.sur5r.net Git - cc65/commitdiff
Additional linker configs for the Apple by Oliver Schmidt.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 19 Sep 2009 16:14:46 +0000 (16:14 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 19 Sep 2009 16:14:46 +0000 (16:14 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4195 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ld65/cfg/apple2-dos33.cfg [new file with mode: 0644]
src/ld65/cfg/apple2-loader.cfg [new file with mode: 0644]
src/ld65/cfg/apple2-reboot.cfg [new file with mode: 0644]
src/ld65/cfg/apple2-system.cfg [new file with mode: 0644]

diff --git a/src/ld65/cfg/apple2-dos33.cfg b/src/ld65/cfg/apple2-dos33.cfg
new file mode 100644 (file)
index 0000000..ca8458b
--- /dev/null
@@ -0,0 +1,42 @@
+# Configuration optimized for DOS 3.3 by allowing for 12KB of HIGHCODE
+FEATURES {
+    STARTADDRESS: default = $0803;
+}
+MEMORY {
+    ZP:     start = $0080, size = $001A,                 define = yes;
+    HEADER: start = $0000, size = $0004,      file = %O;
+    RAM:    start = %S,    size = $9600 - %S, file = %O, define = yes;
+    MOVE:   start = $0000, size = $FFFF,      file = %O, define = yes;
+    LC:     start = $D000, size = $3000,                 define = yes;
+}
+SEGMENTS {
+    ZEROPAGE: load = ZP,              type = zp;
+    EXEHDR:   load = HEADER,          type = ro;
+    STARTUP:  load = RAM,             type = ro;
+    LOWCODE:  load = RAM,             type = ro;
+    CODE:     load = RAM,             type = ro;
+    RODATA:   load = RAM,             type = ro;
+    DATA:     load = RAM,             type = rw;
+    ZPSAVE:   load = RAM,             type = bss, define   = yes;
+    BSS:      load = RAM,             type = bss, define   = yes;
+    INIT:     load = MOVE, run = RAM, type = ro,  define   = yes;
+    HIGHCODE: load = MOVE, run = LC,  type = ro,  optional = yes;
+}
+FEATURES {
+    CONDES: segment = INIT,
+            type    = constructor,
+            label   = __CONSTRUCTOR_TABLE__,
+            count   = __CONSTRUCTOR_COUNT__;
+    CONDES: segment = RODATA,
+            type    = destructor,
+            label   = __DESTRUCTOR_TABLE__,
+            count   = __DESTRUCTOR_COUNT__;
+    CONDES: type    = interruptor,
+            segment = RODATA,
+            label   = __INTERRUPTOR_TABLE__,
+            count   = __INTERRUPTOR_COUNT__;
+}
+SYMBOLS {
+    __STACKSIZE__ = $0800; # 2k stack
+}
diff --git a/src/ld65/cfg/apple2-loader.cfg b/src/ld65/cfg/apple2-loader.cfg
new file mode 100644 (file)
index 0000000..c8898c5
--- /dev/null
@@ -0,0 +1,42 @@
+# Configuration optimized for programs loaded with LOADER.SYSTEM
+
+FEATURES {
+    STARTADDRESS: default = $0800;
+}
+MEMORY {
+    ZP:     start = $0080, size = $001A,                 define = yes;
+    HEADER: start = $0000, size = $0004,      file = %O;
+    RAM:    start = %S,    size = $BF00 - %S, file = %O, define = yes;
+    MOVE:   start = $0000, size = $FFFF,      file = %O, define = yes;
+    LC:     start = $D400, size = $0C00,                 define = yes;
+}
+SEGMENTS {
+    ZEROPAGE: load = ZP,              type = zp;
+    EXEHDR:   load = HEADER,          type = ro;
+    STARTUP:  load = RAM,             type = ro;
+    LOWCODE:  load = RAM,             type = ro;
+    CODE:     load = RAM,             type = ro;
+    RODATA:   load = RAM,             type = ro;
+    DATA:     load = RAM,             type = rw;
+    ZPSAVE:   load = RAM,             type = bss, define   = yes;
+    BSS:      load = RAM,             type = bss, define   = yes;
+    INIT:     load = MOVE, run = RAM, type = ro,  define   = yes;
+    HIGHCODE: load = MOVE, run = LC,  type = ro,  optional = yes;
+}
+FEATURES {
+    CONDES: segment = INIT,
+            type    = constructor,
+            label   = __CONSTRUCTOR_TABLE__,
+            count   = __CONSTRUCTOR_COUNT__;
+    CONDES: segment = RODATA,
+            type    = destructor,
+            label   = __DESTRUCTOR_TABLE__,
+            count   = __DESTRUCTOR_COUNT__;
+    CONDES: type    = interruptor,
+            segment = RODATA,
+            label   = __INTERRUPTOR_TABLE__,
+            count   = __INTERRUPTOR_COUNT__;
+}
+SYMBOLS {
+    __STACKSIZE__ = $0800; # 2k stack
+}
diff --git a/src/ld65/cfg/apple2-reboot.cfg b/src/ld65/cfg/apple2-reboot.cfg
new file mode 100644 (file)
index 0000000..302fb6d
--- /dev/null
@@ -0,0 +1,43 @@
+# Configuration allowing for 4KB of HIGHCODE optimized for programs
+# loaded with LOADER.SYSTEM and calling rebootafterexit()
+
+FEATURES {
+    STARTADDRESS: default = $0800;
+}
+MEMORY {
+    ZP:     start = $0080, size = $001A,                 define = yes;
+    HEADER: start = $0000, size = $0004,      file = %O;
+    RAM:    start = %S,    size = $BF00 - %S, file = %O, define = yes;
+    MOVE:   start = $0000, size = $FFFF,      file = %O, define = yes;
+    LC:     start = $D000, size = $1000,                 define = yes;
+}
+SEGMENTS {
+    ZEROPAGE: load = ZP,              type = zp;
+    EXEHDR:   load = HEADER,          type = ro;
+    STARTUP:  load = RAM,             type = ro;
+    LOWCODE:  load = RAM,             type = ro;
+    CODE:     load = RAM,             type = ro;
+    RODATA:   load = RAM,             type = ro;
+    DATA:     load = RAM,             type = rw;
+    ZPSAVE:   load = RAM,             type = bss, define   = yes;
+    BSS:      load = RAM,             type = bss, define   = yes;
+    INIT:     load = MOVE, run = RAM, type = ro,  define   = yes;
+    HIGHCODE: load = MOVE, run = LC,  type = ro,  optional = yes;
+}
+FEATURES {
+    CONDES: segment = INIT,
+            type    = constructor,
+            label   = __CONSTRUCTOR_TABLE__,
+            count   = __CONSTRUCTOR_COUNT__;
+    CONDES: segment = RODATA,
+            type    = destructor,
+            label   = __DESTRUCTOR_TABLE__,
+            count   = __DESTRUCTOR_COUNT__;
+    CONDES: type    = interruptor,
+            segment = RODATA,
+            label   = __INTERRUPTOR_TABLE__,
+            count   = __INTERRUPTOR_COUNT__;
+}
+SYMBOLS {
+    __STACKSIZE__ = $0800; # 2k stack
+}
diff --git a/src/ld65/cfg/apple2-system.cfg b/src/ld65/cfg/apple2-system.cfg
new file mode 100644 (file)
index 0000000..297fd34
--- /dev/null
@@ -0,0 +1,39 @@
+# Configuration for ProDOS 8 system programs (without the header)
+
+MEMORY {
+    ZP:     start = $0080, size = $001A,            define = yes;
+    HEADER: start = $0000, size = $0004, file = "";
+    RAM:    start = $2000, size = $9F00, file = %O, define = yes;
+    MOVE:   start = $0000, size = $FFFF, file = %O, define = yes;
+    LC:     start = $D400, size = $0C00,            define = yes;
+}
+SEGMENTS {
+    ZEROPAGE: load = ZP,              type = zp;
+    EXEHDR:   load = HEADER,          type = ro;
+    STARTUP:  load = RAM,             type = ro;
+    LOWCODE:  load = RAM,             type = ro;
+    CODE:     load = RAM,             type = ro;
+    RODATA:   load = RAM,             type = ro;
+    DATA:     load = RAM,             type = rw;
+    ZPSAVE:   load = RAM,             type = bss, define   = yes;
+    BSS:      load = RAM,             type = bss, define   = yes;
+    INIT:     load = MOVE, run = RAM, type = ro,  define   = yes;
+    HIGHCODE: load = MOVE, run = LC,  type = ro,  optional = yes;
+}
+FEATURES {
+    CONDES: segment = INIT,
+            type    = constructor,
+            label   = __CONSTRUCTOR_TABLE__,
+            count   = __CONSTRUCTOR_COUNT__;
+    CONDES: segment = RODATA,
+            type    = destructor,
+            label   = __DESTRUCTOR_TABLE__,
+            count   = __DESTRUCTOR_COUNT__;
+    CONDES: type    = interruptor,
+            segment = RODATA,
+            label   = __INTERRUPTOR_TABLE__,
+            count   = __INTERRUPTOR_COUNT__;
+}
+SYMBOLS {
+    __STACKSIZE__ = $0800; # 2k stack
+}