]> git.sur5r.net Git - cc65/commitdiff
Separate the linker config for the apple2enh target from the ones for the
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 26 Sep 2009 16:12:02 +0000 (16:12 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 26 Sep 2009 16:12:02 +0000 (16:12 +0000)
apple2.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4235 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ld65/cfg/apple2enh-dos33.cfg [new file with mode: 0644]
src/ld65/cfg/apple2enh-loader.cfg [new file with mode: 0644]
src/ld65/cfg/apple2enh-reboot.cfg [new file with mode: 0644]
src/ld65/cfg/apple2enh-system.cfg [new file with mode: 0644]
src/ld65/cfg/apple2enh.cfg [new file with mode: 0644]
src/ld65/make/gcc.mak

diff --git a/src/ld65/cfg/apple2enh-dos33.cfg b/src/ld65/cfg/apple2enh-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/apple2enh-loader.cfg b/src/ld65/cfg/apple2enh-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/apple2enh-reboot.cfg b/src/ld65/cfg/apple2enh-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/apple2enh-system.cfg b/src/ld65/cfg/apple2enh-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
+}
diff --git a/src/ld65/cfg/apple2enh.cfg b/src/ld65/cfg/apple2enh.cfg
new file mode 100644 (file)
index 0000000..e1ef865
--- /dev/null
@@ -0,0 +1,42 @@
+# Default configuration built into ld65 (allowing for 3KB 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 = $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
+}
index a4b78fc8297999dd3169b41b5490d2858b9106f9..fa34ffdcf92b80b8f8c3f951119f7a93cf83eb64 100644 (file)
@@ -125,8 +125,7 @@ depend dep: $(OBJS:.o=.c)
 apple2.inc:    cfg/apple2.cfg
        @$(CVT) $< $@ CfgApple2
 
-# The apple2enh target uses the same config as the apple2
-apple2enh.inc: cfg/apple2.cfg
+apple2enh.inc: cfg/apple2enh.cfg
        @$(CVT) $< $@ CfgApple2Enh
 
 atari.inc:             cfg/atari.cfg