1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-15 02:29:32 +00:00

The Apple2 linker configs basically cover two dimension of settings:

1. BIN vs. SYS vs. Loader
2. With Quit code vs. w/o Quit code vs. full LC

Up two now these two dimensions were sort of folded into a number of useful combinations. However with the new asm config and the upcominger overlay config we end up with just to many configs.

Therefore now the second dimension isn't expressed anymore as distinct config. Rather the user has to override __LCADDR__ and __LCSIZE__ in order use the Quite code area or the full LC.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5722 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
ol.sc 2012-06-16 20:36:34 +00:00
parent ec1f955a6e
commit c9555b328a
10 changed files with 42 additions and 216 deletions

View File

@ -1,46 +0,0 @@
# Configuration optimized for DOS 3.3 by allowing for 12KB of HIGHCODE
FEATURES {
STARTADDRESS: default = $0803;
}
SYMBOLS {
__EXEHDR__: type = import;
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__LOADADDR__: type = weak, value = __RAM_START__;
__LOADSIZE__: type = weak, value = __ZPSAVE_RUN__ - __RAM_START__ +
__MOVE_LAST__ - __MOVE_START__;
}
MEMORY {
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $9600 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = $D000, size = $3000;
}
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: segment = RODATA,
type = interruptor,
label = __INTERRUPTOR_TABLE__,
count = __INTERRUPTOR_COUNT__;
}

View File

@ -5,17 +5,19 @@ FEATURES {
}
SYMBOLS {
__EXEHDR__: type = import;
__LCADDR__: type = weak, value = $D400; # Behind quit code
__LCSIZE__: type = weak, value = $0C00; # Rest of bank two
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__LOADADDR__: type = weak, value = __RAM_START__;
__LOADSIZE__: type = weak, value = __ZPSAVE_RUN__ - __RAM_START__ +
__MOVE_LAST__ - __MOVE_START__;
}
MEMORY {
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $BF00 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = $D400, size = $0C00;
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $BF00 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = __LCADDR__, size = __LCSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;

View File

@ -1,47 +0,0 @@
# Configuration allowing for 4KB of HIGHCODE optimized for programs
# loaded with LOADER.SYSTEM and calling rebootafterexit()
FEATURES {
STARTADDRESS: default = $0800;
}
SYMBOLS {
__EXEHDR__: type = import;
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__LOADADDR__: type = weak, value = __RAM_START__;
__LOADSIZE__: type = weak, value = __ZPSAVE_RUN__ - __RAM_START__ +
__MOVE_LAST__ - __MOVE_START__;
}
MEMORY {
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $BF00 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = $D000, size = $1000;
}
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: segment = RODATA,
type = interruptor,
label = __INTERRUPTOR_TABLE__,
count = __INTERRUPTOR_COUNT__;
}

View File

@ -2,17 +2,19 @@
SYMBOLS {
__EXEHDR__: type = import;
__LCADDR__: type = weak, value = $D400; # Behind quit code
__LCSIZE__: type = weak, value = $0C00; # Rest of bank two
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__LOADADDR__: type = weak, value = __RAM_START__;
__LOADSIZE__: type = weak, value = __ZPSAVE_RUN__ - __RAM_START__ +
__MOVE_LAST__ - __MOVE_START__;
}
MEMORY {
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = "", start = $0000, size = $0004;
RAM: file = %O, define = yes, start = $2000, size = $9F00 - __STACKSIZE__;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = $D400, size = $0C00;
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = "", start = $0000, size = $0004;
RAM: file = %O, define = yes, start = $2000, size = $9F00 - __STACKSIZE__;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = __LCADDR__, size = __LCSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;

View File

@ -5,17 +5,19 @@ FEATURES {
}
SYMBOLS {
__EXEHDR__: type = import;
__LCADDR__: type = weak, value = $D400; # Behind quit code
__LCSIZE__: type = weak, value = $0C00; # Rest of bank two
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__LOADADDR__: type = weak, value = __RAM_START__;
__LOADSIZE__: type = weak, value = __ZPSAVE_RUN__ - __RAM_START__ +
__MOVE_LAST__ - __MOVE_START__;
}
MEMORY {
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $9600 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = $D400, size = $0C00;
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $9600 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = __LCADDR__, size = __LCSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;

View File

@ -1,46 +0,0 @@
# Configuration optimized for DOS 3.3 by allowing for 12KB of HIGHCODE
FEATURES {
STARTADDRESS: default = $0803;
}
SYMBOLS {
__EXEHDR__: type = import;
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__LOADADDR__: type = weak, value = __RAM_START__;
__LOADSIZE__: type = weak, value = __ZPSAVE_RUN__ - __RAM_START__ +
__MOVE_LAST__ - __MOVE_START__;
}
MEMORY {
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $9600 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = $D000, size = $3000;
}
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: segment = RODATA,
type = interruptor,
label = __INTERRUPTOR_TABLE__,
count = __INTERRUPTOR_COUNT__;
}

View File

@ -5,17 +5,19 @@ FEATURES {
}
SYMBOLS {
__EXEHDR__: type = import;
__LCADDR__: type = weak, value = $D400; # Behind quit code
__LCSIZE__: type = weak, value = $0C00; # Rest of bank two
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__LOADADDR__: type = weak, value = __RAM_START__;
__LOADSIZE__: type = weak, value = __ZPSAVE_RUN__ - __RAM_START__ +
__MOVE_LAST__ - __MOVE_START__;
}
MEMORY {
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $BF00 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = $D400, size = $0C00;
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $BF00 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = __LCADDR__, size = __LCSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;

View File

@ -1,47 +0,0 @@
# Configuration allowing for 4KB of HIGHCODE optimized for programs
# loaded with LOADER.SYSTEM and calling rebootafterexit()
FEATURES {
STARTADDRESS: default = $0800;
}
SYMBOLS {
__EXEHDR__: type = import;
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__LOADADDR__: type = weak, value = __RAM_START__;
__LOADSIZE__: type = weak, value = __ZPSAVE_RUN__ - __RAM_START__ +
__MOVE_LAST__ - __MOVE_START__;
}
MEMORY {
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $BF00 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = $D000, size = $1000;
}
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: segment = RODATA,
type = interruptor,
label = __INTERRUPTOR_TABLE__,
count = __INTERRUPTOR_COUNT__;
}

View File

@ -2,17 +2,19 @@
SYMBOLS {
__EXEHDR__: type = import;
__LCADDR__: type = weak, value = $D400; # Behind quit code
__LCSIZE__: type = weak, value = $0C00; # Rest of bank two
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__LOADADDR__: type = weak, value = __RAM_START__;
__LOADSIZE__: type = weak, value = __ZPSAVE_RUN__ - __RAM_START__ +
__MOVE_LAST__ - __MOVE_START__;
}
MEMORY {
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = "", start = $0000, size = $0004;
RAM: file = %O, define = yes, start = $2000, size = $9F00 - __STACKSIZE__;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = $D400, size = $0C00;
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = "", start = $0000, size = $0004;
RAM: file = %O, define = yes, start = $2000, size = $9F00 - __STACKSIZE__;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = __LCADDR__, size = __LCSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;

View File

@ -5,17 +5,19 @@ FEATURES {
}
SYMBOLS {
__EXEHDR__: type = import;
__LCADDR__: type = weak, value = $D400; # Behind quit code
__LCSIZE__: type = weak, value = $0C00; # Rest of bank two
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__LOADADDR__: type = weak, value = __RAM_START__;
__LOADSIZE__: type = weak, value = __ZPSAVE_RUN__ - __RAM_START__ +
__MOVE_LAST__ - __MOVE_START__;
}
MEMORY {
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $9600 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = $D400, size = $0C00;
ZP: file = "", define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
RAM: file = %O, define = yes, start = %S, size = $9600 - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = __LCADDR__, size = __LCSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;