diff --git a/src/ld65/cfg/apple2-dos33.cfg b/src/ld65/cfg/apple2-dos33.cfg new file mode 100644 index 000000000..ca8458b8c --- /dev/null +++ b/src/ld65/cfg/apple2-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/apple2-loader.cfg b/src/ld65/cfg/apple2-loader.cfg new file mode 100644 index 000000000..c8898c5c0 --- /dev/null +++ b/src/ld65/cfg/apple2-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/apple2-reboot.cfg b/src/ld65/cfg/apple2-reboot.cfg new file mode 100644 index 000000000..302fb6dce --- /dev/null +++ b/src/ld65/cfg/apple2-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/apple2-system.cfg b/src/ld65/cfg/apple2-system.cfg new file mode 100644 index 000000000..297fd3422 --- /dev/null +++ b/src/ld65/cfg/apple2-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 +}