From a16dcb549fc04768270a3ba0e803c010f9ffbc86 Mon Sep 17 00:00:00 2001 From: uz Date: Sat, 26 Sep 2009 16:12:02 +0000 Subject: [PATCH] Separate the linker config for the apple2enh target from the ones for the apple2. git-svn-id: svn://svn.cc65.org/cc65/trunk@4235 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/ld65/cfg/apple2enh-dos33.cfg | 42 ++++++++++++++++++++++++++++++ src/ld65/cfg/apple2enh-loader.cfg | 42 ++++++++++++++++++++++++++++++ src/ld65/cfg/apple2enh-reboot.cfg | 43 +++++++++++++++++++++++++++++++ src/ld65/cfg/apple2enh-system.cfg | 39 ++++++++++++++++++++++++++++ src/ld65/cfg/apple2enh.cfg | 42 ++++++++++++++++++++++++++++++ src/ld65/make/gcc.mak | 3 +-- 6 files changed, 209 insertions(+), 2 deletions(-) create mode 100644 src/ld65/cfg/apple2enh-dos33.cfg create mode 100644 src/ld65/cfg/apple2enh-loader.cfg create mode 100644 src/ld65/cfg/apple2enh-reboot.cfg create mode 100644 src/ld65/cfg/apple2enh-system.cfg create mode 100644 src/ld65/cfg/apple2enh.cfg diff --git a/src/ld65/cfg/apple2enh-dos33.cfg b/src/ld65/cfg/apple2enh-dos33.cfg new file mode 100644 index 000000000..ca8458b8c --- /dev/null +++ b/src/ld65/cfg/apple2enh-dos33.cfg @@ -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 index 000000000..c8898c5c0 --- /dev/null +++ b/src/ld65/cfg/apple2enh-loader.cfg @@ -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 index 000000000..302fb6dce --- /dev/null +++ b/src/ld65/cfg/apple2enh-reboot.cfg @@ -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 index 000000000..297fd3422 --- /dev/null +++ b/src/ld65/cfg/apple2enh-system.cfg @@ -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 index 000000000..e1ef86597 --- /dev/null +++ b/src/ld65/cfg/apple2enh.cfg @@ -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 +} diff --git a/src/ld65/make/gcc.mak b/src/ld65/make/gcc.mak index a4b78fc82..fa34ffdcf 100644 --- a/src/ld65/make/gcc.mak +++ b/src/ld65/make/gcc.mak @@ -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 -- 2.39.5