- No more HEAP segment
- RAM reduced by __STACKSIZE__ - Unified formatting git-svn-id: svn://svn.cc65.org/cc65/trunk@4633 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -3,12 +3,15 @@
|
|||||||
FEATURES {
|
FEATURES {
|
||||||
STARTADDRESS: default = $0803;
|
STARTADDRESS: default = $0803;
|
||||||
}
|
}
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $001A, define = yes;
|
ZP: define = yes, start = $0080, size = $001A;
|
||||||
HEADER: start = $0000, size = $0004, file = %O;
|
HEADER: file = %O, start = $0000, size = $0004;
|
||||||
RAM: start = %S, size = $9600 - %S, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = %S, size = $9600 - __STACKSIZE__ - %S;
|
||||||
MOVE: start = $0000, size = $FFFF, file = %O, define = yes;
|
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
|
||||||
LC: start = $D000, size = $3000, define = yes;
|
LC: define = yes, start = $D000, size = $3000;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
@@ -32,11 +35,8 @@ FEATURES {
|
|||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -3,12 +3,15 @@
|
|||||||
FEATURES {
|
FEATURES {
|
||||||
STARTADDRESS: default = $0800;
|
STARTADDRESS: default = $0800;
|
||||||
}
|
}
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $001A, define = yes;
|
ZP: define = yes, start = $0080, size = $001A;
|
||||||
HEADER: start = $0000, size = $0004, file = %O;
|
HEADER: file = %O, start = $0000, size = $0004;
|
||||||
RAM: start = %S, size = $BF00 - %S, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = %S, size = $BF00 - __STACKSIZE__ - %S;
|
||||||
MOVE: start = $0000, size = $FFFF, file = %O, define = yes;
|
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
|
||||||
LC: start = $D400, size = $0C00, define = yes;
|
LC: define = yes, start = $D400, size = $0C00;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
@@ -32,11 +35,8 @@ FEATURES {
|
|||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -4,12 +4,15 @@
|
|||||||
FEATURES {
|
FEATURES {
|
||||||
STARTADDRESS: default = $0800;
|
STARTADDRESS: default = $0800;
|
||||||
}
|
}
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $001A, define = yes;
|
ZP: define = yes, start = $0080, size = $001A;
|
||||||
HEADER: start = $0000, size = $0004, file = %O;
|
HEADER: file = %O, start = $0000, size = $0004;
|
||||||
RAM: start = %S, size = $BF00 - %S, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = %S, size = $BF00 - __STACKSIZE__ - %S;
|
||||||
MOVE: start = $0000, size = $FFFF, file = %O, define = yes;
|
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
|
||||||
LC: start = $D000, size = $1000, define = yes;
|
LC: define = yes, start = $D000, size = $1000;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
@@ -33,11 +36,8 @@ FEATURES {
|
|||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
# Configuration for ProDOS 8 system programs (without the header)
|
# Configuration for ProDOS 8 system programs (without the header)
|
||||||
|
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $001A, define = yes;
|
ZP: define = yes, start = $0080, size = $001A;
|
||||||
HEADER: start = $0000, size = $0004, file = "";
|
HEADER: file = "", start = $0000, size = $0004;
|
||||||
RAM: start = $2000, size = $9F00, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = $2000, size = $9F00 - __STACKSIZE__;
|
||||||
MOVE: start = $0000, size = $FFFF, file = %O, define = yes;
|
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
|
||||||
LC: start = $D400, size = $0C00, define = yes;
|
LC: define = yes, start = $D400, size = $0C00;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
@@ -29,11 +32,8 @@ FEATURES {
|
|||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -3,12 +3,15 @@
|
|||||||
FEATURES {
|
FEATURES {
|
||||||
STARTADDRESS: default = $0803;
|
STARTADDRESS: default = $0803;
|
||||||
}
|
}
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $001A, define = yes;
|
ZP: define = yes, start = $0080, size = $001A;
|
||||||
HEADER: start = $0000, size = $0004, file = %O;
|
HEADER: file = %O, start = $0000, size = $0004;
|
||||||
RAM: start = %S, size = $9600 - %S, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = %S, size = $9600 - __STACKSIZE__ - %S;
|
||||||
MOVE: start = $0000, size = $FFFF, file = %O, define = yes;
|
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
|
||||||
LC: start = $D400, size = $0C00, define = yes;
|
LC: define = yes, start = $D400, size = $0C00;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
@@ -32,11 +35,8 @@ FEATURES {
|
|||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -3,12 +3,15 @@
|
|||||||
FEATURES {
|
FEATURES {
|
||||||
STARTADDRESS: default = $0803;
|
STARTADDRESS: default = $0803;
|
||||||
}
|
}
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $001A, define = yes;
|
ZP: define = yes, start = $0080, size = $001A;
|
||||||
HEADER: start = $0000, size = $0004, file = %O;
|
HEADER: file = %O, start = $0000, size = $0004;
|
||||||
RAM: start = %S, size = $9600 - %S, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = %S, size = $9600 - __STACKSIZE__ - %S;
|
||||||
MOVE: start = $0000, size = $FFFF, file = %O, define = yes;
|
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
|
||||||
LC: start = $D000, size = $3000, define = yes;
|
LC: define = yes, start = $D000, size = $3000;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
@@ -32,11 +35,8 @@ FEATURES {
|
|||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -3,12 +3,15 @@
|
|||||||
FEATURES {
|
FEATURES {
|
||||||
STARTADDRESS: default = $0800;
|
STARTADDRESS: default = $0800;
|
||||||
}
|
}
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $001A, define = yes;
|
ZP: define = yes, start = $0080, size = $001A;
|
||||||
HEADER: start = $0000, size = $0004, file = %O;
|
HEADER: file = %O, start = $0000, size = $0004;
|
||||||
RAM: start = %S, size = $BF00 - %S, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = %S, size = $BF00 - __STACKSIZE__ - %S;
|
||||||
MOVE: start = $0000, size = $FFFF, file = %O, define = yes;
|
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
|
||||||
LC: start = $D400, size = $0C00, define = yes;
|
LC: define = yes, start = $D400, size = $0C00;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
@@ -32,11 +35,8 @@ FEATURES {
|
|||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -4,12 +4,15 @@
|
|||||||
FEATURES {
|
FEATURES {
|
||||||
STARTADDRESS: default = $0800;
|
STARTADDRESS: default = $0800;
|
||||||
}
|
}
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $001A, define = yes;
|
ZP: define = yes, start = $0080, size = $001A;
|
||||||
HEADER: start = $0000, size = $0004, file = %O;
|
HEADER: file = %O, start = $0000, size = $0004;
|
||||||
RAM: start = %S, size = $BF00 - %S, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = %S, size = $BF00 - __STACKSIZE__ - %S;
|
||||||
MOVE: start = $0000, size = $FFFF, file = %O, define = yes;
|
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
|
||||||
LC: start = $D000, size = $1000, define = yes;
|
LC: define = yes, start = $D000, size = $1000;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
@@ -33,11 +36,8 @@ FEATURES {
|
|||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
# Configuration for ProDOS 8 system programs (without the header)
|
# Configuration for ProDOS 8 system programs (without the header)
|
||||||
|
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $001A, define = yes;
|
ZP: define = yes, start = $0080, size = $001A;
|
||||||
HEADER: start = $0000, size = $0004, file = "";
|
HEADER: file = "", start = $0000, size = $0004;
|
||||||
RAM: start = $2000, size = $9F00, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = $2000, size = $9F00 - __STACKSIZE__;
|
||||||
MOVE: start = $0000, size = $FFFF, file = %O, define = yes;
|
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
|
||||||
LC: start = $D400, size = $0C00, define = yes;
|
LC: define = yes, start = $D400, size = $0C00;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
@@ -29,11 +32,8 @@ FEATURES {
|
|||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -3,12 +3,15 @@
|
|||||||
FEATURES {
|
FEATURES {
|
||||||
STARTADDRESS: default = $0803;
|
STARTADDRESS: default = $0803;
|
||||||
}
|
}
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $001A, define = yes;
|
ZP: define = yes, start = $0080, size = $001A;
|
||||||
HEADER: start = $0000, size = $0004, file = %O;
|
HEADER: file = %O, start = $0000, size = $0004;
|
||||||
RAM: start = %S, size = $9600 - %S, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = %S, size = $9600 - __STACKSIZE__ - %S;
|
||||||
MOVE: start = $0000, size = $FFFF, file = %O, define = yes;
|
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
|
||||||
LC: start = $D400, size = $0C00, define = yes;
|
LC: define = yes, start = $D400, size = $0C00;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
@@ -32,11 +35,8 @@ FEATURES {
|
|||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ SYMBOLS {
|
|||||||
__RESERVED_MEMORY__: value = $0000, weak = yes;
|
__RESERVED_MEMORY__: value = $0000, weak = yes;
|
||||||
}
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0082, size = $007E, type = rw, define = yes;
|
ZP: define = yes, start = $0082, size = $007E;
|
||||||
HEADER: start = $0000, size = $0006, file = %O;
|
HEADER: file = %O, start = $0000, size = $0006;
|
||||||
RAM: start = %S, size = $BC20 - __STACKSIZE__ - %S, file = %O;
|
RAM: file = %O, start = %S, size = $BC20 - __STACKSIZE__ - %S;
|
||||||
TRAILER: start = $0000, size = $0006, file = %O;
|
TRAILER: file = %O, start = $0000, size = $0006;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
EXEHDR: load = HEADER, type = ro;
|
EXEHDR: load = HEADER, type = ro;
|
||||||
@@ -21,22 +21,21 @@ SEGMENTS {
|
|||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
ZPSAVE: load = RAM, type = bss, define = yes;
|
ZPSAVE: load = RAM, type = bss, define = yes;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
EXTZP: load = ZP, type = zp, optional = yes;
|
EXTZP: load = ZP, type = zp, optional = yes;
|
||||||
AUTOSTRT: load = TRAILER, type = ro;
|
AUTOSTRT: load = TRAILER, type = ro;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,38 +1,34 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $00E2, size = $001A, type = rw, define = yes;
|
ZP: define = yes, start = $00E2, size = $001A;
|
||||||
TAPEHDR: start = $0000, size = $000E, type = ro, file = %O;
|
TAPEHDR: file = %O, type = ro, start = $0000, size = $000E;
|
||||||
RAM: start = $0500, size = $9300, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = $0500, size = $9300 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
TAPEHDR: load = TAPEHDR, type = ro;
|
TAPEHDR: load = TAPEHDR, type = ro;
|
||||||
STARTUP: load = RAM, type = ro;
|
STARTUP: load = RAM, type = ro;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
ZPSAVE: load = RAM, type = bss;
|
ZPSAVE: load = RAM, type = bss;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,34 +1,31 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0070, size = $0020, type = rw, define = yes;
|
ZP: define = yes, start = $0070, size = $0020;
|
||||||
RAM: start = $0E00, size = $7200, file = %O;
|
RAM: file = %O, start = $0E00, size = $7200 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
STARTUP: load = RAM, type = ro, define = yes;
|
STARTUP: load = RAM, type = ro, define = yes;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,35 +1,34 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0002, size = $001A, type = rw, define = yes;
|
ZP: define = yes, start = $0002, size = $001A;
|
||||||
HEADER: start = $1BFF, size = $000E, file = %O;
|
HEADER: file = %O, start = $1BFF, size = $000E;
|
||||||
RAM: start = $1C0D, size = $A3F3, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = $1C0D, size = $A3F3 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
EXEHDR: load = HEADER, type = ro;
|
EXEHDR: load = HEADER, type = ro;
|
||||||
STARTUP: load = RAM, type = ro;
|
STARTUP: load = RAM, type = ro;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
ZPSAVE: load = RAM, type = bss;
|
ZPSAVE: load = RAM, type = bss;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = interruptor,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,35 +1,34 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0002, size = $001A, type = rw, define = yes;
|
ZP: define = yes, start = $0002, size = $001A;
|
||||||
HEADER: start = $0FFF, size = $000E, file = %O;
|
HEADER: file = %O, start = $0FFF, size = $000E;
|
||||||
RAM: start = $100D, size = $6FF3, file = %O;
|
RAM: file = %O, start = $100D, size = $6FF3 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
EXEHDR: load = HEADER, type = ro;
|
EXEHDR: load = HEADER, type = ro;
|
||||||
STARTUP: load = RAM, type = ro;
|
STARTUP: load = RAM, type = ro;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
ZPSAVE: load = RAM, type = bss;
|
ZPSAVE: load = RAM, type = bss;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +1,34 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0002, size = $001A, type = rw, define = yes;
|
ZP: define = yes, start = $0002, size = $001A;
|
||||||
HEADER: start = $07FF, size = $000E, file = %O;
|
HEADER: file = %O, start = $07FF, size = $000E;
|
||||||
RAM: start = $080D, size = $C7F3, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = $080D, size = $C7F3 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
EXEHDR: load = HEADER, type = ro;
|
EXEHDR: load = HEADER, type = ro;
|
||||||
STARTUP: load = RAM, type = ro;
|
STARTUP: load = RAM, type = ro;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
ZPSAVE: load = RAM, type = bss;
|
ZPSAVE: load = RAM, type = bss;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = interruptor,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,42 +1,41 @@
|
|||||||
MEMORY {
|
|
||||||
HEADER: start = $0001, size = $0050, fill = yes, fillval = 0, type = rw, file = %O;
|
|
||||||
ZP: start = $0051, size = $00AD, fill = yes, fillval = 0, type = rw, file = %O, define = yes;
|
|
||||||
STARTUP: start = $00FE, size = $0102, fill = yes, fillval = 0, file = %O;
|
|
||||||
PAGE2: start = $0200, size = $0100, fill = yes, fillval = 0, file = %O;
|
|
||||||
PAGE3: start = $0300, size = $0100, fill = yes, fillval = 0, file = %O;
|
|
||||||
RAM: start = $0400, size = $DC00, file = %O;
|
|
||||||
CHARRAM: start = $E000, size = $1000, define = yes, file = "";
|
|
||||||
VIDRAM: start = $F000, size = $0400, define = yes, file = "";
|
|
||||||
}
|
|
||||||
SEGMENTS {
|
|
||||||
EXEHDR: load = HEADER, type = rw;
|
|
||||||
STARTUP: load = STARTUP, type = rw;
|
|
||||||
PAGE2: load = PAGE2, type = rw;
|
|
||||||
PAGE3: load = PAGE3, type = rw;
|
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
|
||||||
CODE: load = RAM, type = ro;
|
|
||||||
RODATA: load = RAM, type = ro;
|
|
||||||
DATA: load = RAM, type = rw;
|
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
|
||||||
EXTZP: load = ZP, type = rw, define = 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__;
|
|
||||||
}
|
|
||||||
SYMBOLS {
|
SYMBOLS {
|
||||||
__STACKSIZE__: value = $0781, weak = yes; # ~2k stack
|
__STACKSIZE__: value = $0781, weak = yes; # ~2k stack
|
||||||
}
|
}
|
||||||
|
MEMORY {
|
||||||
|
HEADER: file = %O, start = $0001, size = $0050, fill = yes;
|
||||||
|
ZP: file = %O, define = yes, start = $0051, size = $00AD, fill = yes;
|
||||||
|
STARTUP: file = %O, start = $00FE, size = $0102, fill = yes;
|
||||||
|
PAGE2: file = %O, start = $0200, size = $0100, fill = yes;
|
||||||
|
PAGE3: file = %O, start = $0300, size = $0100, fill = yes;
|
||||||
|
RAM: file = %O, start = $0400, size = $DC00 - __STACKSIZE__;
|
||||||
|
CHARRAM: file = "", define = yes, start = $E000, size = $1000;
|
||||||
|
VIDRAM: file = "", define = yes, start = $F000, size = $0400;
|
||||||
|
}
|
||||||
|
SEGMENTS {
|
||||||
|
EXEHDR: load = HEADER, type = rw;
|
||||||
|
STARTUP: load = STARTUP, type = rw;
|
||||||
|
PAGE2: load = PAGE2, type = rw;
|
||||||
|
PAGE3: load = PAGE3, type = rw;
|
||||||
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
|
CODE: load = RAM, type = ro;
|
||||||
|
RODATA: load = RAM, type = ro;
|
||||||
|
DATA: load = RAM, type = rw;
|
||||||
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
|
EXTZP: load = ZP, type = rw, define = 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__;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,40 +1,39 @@
|
|||||||
MEMORY {
|
|
||||||
HEADER: start = $0001, size = $0050, type = rw, fill = yes, fillval = 0, file = %O;
|
|
||||||
ZP: start = $0051, size = $00AD, type = rw, define = yes, fill = yes, fillval = 0, file = %O;
|
|
||||||
STARTUP: start = $00FE, size = $0102, fill = yes, fillval = 0, file = %O;
|
|
||||||
PAGE2: start = $0200, size = $0100, fill = yes, fillval = 0, file = %O;
|
|
||||||
PAGE3: start = $0300, size = $0100, fill = yes, fillval = 0, file = %O;
|
|
||||||
RAM: start = $0400, size = $FAAE, file = %O;
|
|
||||||
}
|
|
||||||
SEGMENTS {
|
|
||||||
EXEHDR: load = HEADER, type = rw;
|
|
||||||
STARTUP: load = STARTUP, type = rw;
|
|
||||||
PAGE2: load = PAGE2, type = rw;
|
|
||||||
PAGE3: load = PAGE3, type = rw;
|
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
|
||||||
CODE: load = RAM, type = ro;
|
|
||||||
RODATA: load = RAM, type = ro;
|
|
||||||
DATA: load = RAM, type = rw;
|
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
|
||||||
EXTZP: load = ZP, type = rw, define = 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__;
|
|
||||||
}
|
|
||||||
SYMBOLS {
|
SYMBOLS {
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
}
|
}
|
||||||
|
MEMORY {
|
||||||
|
HEADER: file = %O, start = $0001, size = $0050, fill = yes;
|
||||||
|
ZP: file = %O, define = yes, start = $0051, size = $00AD, fill = yes;
|
||||||
|
STARTUP: file = %O, start = $00FE, size = $0102, fill = yes;
|
||||||
|
PAGE2: file = %O, start = $0200, size = $0100, fill = yes;
|
||||||
|
PAGE3: file = %O, start = $0300, size = $0100, fill = yes;
|
||||||
|
RAM: file = %O, start = $0400, size = $FAAE - __STACKSIZE__;
|
||||||
|
}
|
||||||
|
SEGMENTS {
|
||||||
|
EXEHDR: load = HEADER, type = rw;
|
||||||
|
STARTUP: load = STARTUP, type = rw;
|
||||||
|
PAGE2: load = PAGE2, type = rw;
|
||||||
|
PAGE3: load = PAGE3, type = rw;
|
||||||
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
|
CODE: load = RAM, type = ro;
|
||||||
|
RODATA: load = RAM, type = ro;
|
||||||
|
DATA: load = RAM, type = rw;
|
||||||
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
|
EXTZP: load = ZP, type = rw, define = 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__;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,35 +1,34 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0400, weak = yes; # 1k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0058, size = $0028, type = rw, define = yes;
|
ZP: define = yes, start = $0058, size = $0028;
|
||||||
HEADER: start = $0204, size = $01FC, file = %O;
|
HEADER: file = %O, start = $0204, size = $01FC;
|
||||||
RAM: start = $0400, size = $5C00, define = yes, file = %O;
|
RAM: file = %O, define = yes, start = $0400, size = $5C00 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
HEADER: load = HEADER, type = ro;
|
HEADER: load = HEADER, type = ro;
|
||||||
STARTUP: load = RAM, type = ro;
|
STARTUP: load = RAM, type = ro;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
EXTZP: load = ZP, type = zp;
|
EXTZP: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0400, weak = yes; # 1k stack
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,41 +1,43 @@
|
|||||||
# ld65 Linker-configuration for LUnix, Next Generation.
|
# ld65 Linker-configuration for LUnix, Next Generation.
|
||||||
|
|
||||||
|
SYMBOLS {
|
||||||
|
__HEAPSIZE__: value = $2000, weak = yes; # 8k heap [temporary, until LUnix malloc() exists]
|
||||||
|
__STACKSIZE__: value = $0400, weak = yes; # 1k stack (do typical LUnix apps. need 2k?)
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0080, size = $0040; # userzp buffer
|
ZP: start = $0080, size = $0040;
|
||||||
RAM: start = %S, size = $7600;
|
RAM: start = %S, size = $7600 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
ZEROPAGE: load = ZP, type = zp, define = yes; # Pseudo-registers
|
ZEROPAGE: load = ZP, type = zp, define = yes; # Pseudo-registers
|
||||||
STARTUP: load = RAM, type = ro; # First initiation code
|
STARTUP: load = RAM, type = ro; # First initialization code
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes; # Legacy from other platforms
|
LOWCODE: load = RAM, type = ro, optional = yes; # Legacy from other platforms
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes; # Library initialization code
|
||||||
CODE: load = RAM, type = ro; # Program
|
CODE: load = RAM, type = ro; # Program
|
||||||
RODATA: load = RAM, type = ro; # Literals, constants
|
RODATA: load = RAM, type = ro; # Literals, constants
|
||||||
DATA: load = RAM, type = rw; # Initialized variables
|
DATA: load = RAM, type = rw; # Initialized variables
|
||||||
BSS: load = RAM, type = bss, define = yes; # Uninitialized variables
|
BSS: load = RAM, type = bss, define = yes; # Uninitialized variables
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
FILES {
|
FILES {
|
||||||
%O: format = o65;
|
%O: format = o65;
|
||||||
}
|
}
|
||||||
FORMATS {
|
FORMATS {
|
||||||
o65: os = lunix, type = small,
|
o65: os = lunix,
|
||||||
|
type = small,
|
||||||
export = main, # Program entry-point
|
export = main, # Program entry-point
|
||||||
import = LUNIXKERNEL; # Kernel entry-points
|
import = LUNIXKERNEL; # Kernel entry-points
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__HEAPSIZE__: value = $2000, weak = yes; # 8k heap [temporary, until LUnix malloc() exists]
|
|
||||||
__STACKSIZE__: value = $0400, weak = yes; # 1k stack (do typical LUnix apps. need 2k?)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,36 +1,35 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0000, size = $0100, type = rw, define = yes;
|
ZP: define = yes, start = $0000, size = $0100;
|
||||||
HEADER: start = $0000, size = $000A, file = %O;
|
HEADER: file = %O, start = $0000, size = $000A;
|
||||||
RAM: start = $0400, size = $BC38, define = yes, file = %O;
|
RAM: file = %O, define = yes, start = $0400, size = $BC38 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
EXEHDR: load = HEADER, type = ro;
|
EXEHDR: load = HEADER, type = ro;
|
||||||
STARTUP: load = RAM, type = ro;
|
STARTUP: load = RAM, type = ro;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
EXTZP: load = ZP, type = zp, optional = yes;
|
EXTZP: load = ZP, type = zp, optional = yes;
|
||||||
APPZP: load = ZP, type = zp, optional = yes;
|
APPZP: load = ZP, type = zp, optional = yes;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = interruptor,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ FILES {
|
|||||||
%O: format = o65;
|
%O: format = o65;
|
||||||
}
|
}
|
||||||
FORMATS {
|
FORMATS {
|
||||||
o65: os = cc65, type = small;
|
o65: os = cc65,
|
||||||
|
type = small;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,37 +1,37 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0300, weak = yes; # 3 pages stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
|
ZP: start = $0002, size = $001A, type = rw, define = yes;
|
||||||
ZP: start = $02, size = $1A, type = rw, define = yes;
|
|
||||||
|
|
||||||
# INES Cartridge Header
|
# INES Cartridge Header
|
||||||
HEADER: start = $0, size = $10, file = %O ,fill = yes;
|
HEADER: start = $0000, size = $0010, file = %O, fill = yes;
|
||||||
|
|
||||||
# 2 16K ROM Banks
|
# 2 16K ROM Banks
|
||||||
# - startup
|
# - startup
|
||||||
# - code
|
# - code
|
||||||
# - rodata
|
# - rodata
|
||||||
# - data (load)
|
# - data (load)
|
||||||
ROM0: start = $8000, size = $7ff4, file = %O ,fill = yes, define = yes;
|
ROM0: start = $8000, size = $7FF4, file = %O, fill = yes, define = yes;
|
||||||
|
|
||||||
# Hardware Vectors at End of 2nd 8K ROM
|
# Hardware Vectors at End of 2nd 8K ROM
|
||||||
ROMV: start = $fff6, size = $c, file = %O, fill = yes;
|
ROMV: start = $FFF6, size = $000C, file = %O, fill = yes;
|
||||||
|
|
||||||
# 1 8k CHR Bank
|
# 1 8k CHR Bank
|
||||||
ROM2: start = $0000, size = $2000, file = %O, fill = yes;
|
ROM2: start = $0000, size = $2000, file = %O, fill = yes;
|
||||||
|
|
||||||
# standard 2k SRAM (-zeropage)
|
# standard 2k SRAM (-zeropage)
|
||||||
# $0100-$0200 cpu stack
|
# $0100-$0200 cpu stack
|
||||||
# $0200-$0500 3 pages for ppu memory write buffer
|
# $0200-$0500 3 pages for ppu memory write buffer
|
||||||
# $0500-$0800 3 pages for cc65 parameter stack
|
# $0500-$0800 3 pages for cc65 parameter stack
|
||||||
SRAM: start = $0500, size = $0300, define = yes;
|
SRAM: start = $0500, size = __STACKSIZE__, define = yes;
|
||||||
|
|
||||||
# additional 8K SRAM Bank
|
# additional 8K SRAM Bank
|
||||||
# - data (run)
|
# - data (run)
|
||||||
# - bss
|
# - bss
|
||||||
# - heap
|
# - heap
|
||||||
RAM: start = $6000, size = $2000, define = yes;
|
RAM: start = $6000, size = $2000, define = yes;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
HEADER: load = HEADER, type = ro;
|
HEADER: load = HEADER, type = ro;
|
||||||
STARTUP: load = ROM0, type = ro, define = yes;
|
STARTUP: load = ROM0, type = ro, define = yes;
|
||||||
@@ -43,25 +43,19 @@ SEGMENTS {
|
|||||||
VECTORS: load = ROMV, type = rw;
|
VECTORS: load = ROMV, type = rw;
|
||||||
CHARS: load = ROM2, type = rw;
|
CHARS: load = ROM2, type = rw;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes;
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
|
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
|
||||||
|
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0300, weak = yes; # 3 pages stack
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +1,30 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0000, size = $0001F, type = rw, define = yes;
|
ZP: define = yes, start = $0000, size = $0001F;
|
||||||
RAM: start = %S, size = $10000, file = %O;
|
RAM: file = %O, start = %S, size = $10000 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = rw;
|
CODE: load = RAM, type = rw;
|
||||||
RODATA: load = RAM, type = rw;
|
RODATA: load = RAM, type = rw;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,36 +1,34 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0055, size = $001A, type = rw, define = yes;
|
ZP: define = yes, start = $0055, size = $001A;
|
||||||
HEADER: start = $03FF, size = $000E, file = %O;
|
HEADER: file = %O, start = $03FF, size = $000E;
|
||||||
RAM: start = $040D, size = $7BF3, file = %O;
|
RAM: file = %O, start = $040D, size = $7BF3 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
EXEHDR: load = HEADER, type = ro;
|
EXEHDR: load = HEADER, type = ro;
|
||||||
STARTUP: load = RAM, type = ro;
|
STARTUP: load = RAM, type = ro;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
ZPSAVE: load = RAM, type = bss;
|
ZPSAVE: load = RAM, type = bss;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,35 +1,34 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0002, size = $001A, type = rw, define = yes;
|
ZP: define = yes, start = $0002, size = $001A;
|
||||||
HEADER: start = $0FFF, size = $000E, file = %O;
|
HEADER: file = %O, start = $0FFF, size = $000E;
|
||||||
RAM: start = $100D, size = $ECF3, file = %O;
|
RAM: file = %O, start = $100D, size = $ECF3 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
EXEHDR: load = HEADER, type = ro;
|
EXEHDR: load = HEADER, type = ro;
|
||||||
STARTUP: load = RAM, type = ro;
|
STARTUP: load = RAM, type = ro;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
ZPSAVE: load = RAM, type = bss;
|
ZPSAVE: load = RAM, type = bss;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = interruptor,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0800, weak = yes; # 2k stack
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ MEMORY {
|
|||||||
BANKROM7: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
|
BANKROM7: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
|
||||||
ROM: start = $c000, size = $4000, fill = yes, fillval = $FF, file = %O;
|
ROM: start = $c000, size = $4000, fill = yes, fillval = $FF, file = %O;
|
||||||
}
|
}
|
||||||
|
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
LOWCODE: load = ROM, type = ro, optional = yes;
|
LOWCODE: load = ROM, type = ro, optional = yes;
|
||||||
INIT: load = ROM, type = ro, define = yes, optional = yes;
|
INIT: load = ROM, type = ro, define = yes, optional = yes;
|
||||||
@@ -29,8 +28,7 @@ SEGMENTS {
|
|||||||
BANK6: load = BANKROM6, type = ro;
|
BANK6: load = BANKROM6, type = ro;
|
||||||
BANK7: load = BANKROM7, type = ro;
|
BANK7: load = BANKROM7, type = ro;
|
||||||
ZEROPAGE: load = RAM, type = bss, define = yes;
|
ZEROPAGE: load = RAM, type = bss, define = yes;
|
||||||
DATA: load = RAM, type = bss, offset = $0200, define = yes;
|
DATA: load = RAM, type = bss, define = yes, offset = $0200;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
VECTOR: load = ROM, type = ro, offset = $3FFA;
|
||||||
VECTOR: load = ROM, type = ro, offset = $3FFA;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,21 +19,19 @@ SEGMENTS {
|
|||||||
FFF0: load = ROM, type = ro, offset = $3FF0;
|
FFF0: load = ROM, type = ro, offset = $3FF0;
|
||||||
VECTOR: load = ROM, type = ro, offset = $3FFA;
|
VECTOR: load = ROM, type = ro, offset = $3FFA;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp, define = yes;
|
ZEROPAGE: load = ZP, type = zp, define = yes;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ MEMORY {
|
|||||||
BANKROM3: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
|
BANKROM3: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
|
||||||
ROM: start = $C000, size = $4000, fill = yes, fillval = $FF, file = %O;
|
ROM: start = $C000, size = $4000, fill = yes, fillval = $FF, file = %O;
|
||||||
}
|
}
|
||||||
|
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
LOWCODE: load = ROM, type = ro, optional = yes;
|
LOWCODE: load = ROM, type = ro, optional = yes;
|
||||||
INIT: load = ROM, type = ro, define = yes, optional = yes;
|
INIT: load = ROM, type = ro, define = yes, optional = yes;
|
||||||
@@ -22,8 +21,7 @@ SEGMENTS {
|
|||||||
BANK2: load = BANKROM2, type = ro;
|
BANK2: load = BANKROM2, type = ro;
|
||||||
BANK3: load = BANKROM3, type = ro;
|
BANK3: load = BANKROM3, type = ro;
|
||||||
ZEROPAGE: load = RAM, type = bss, define = yes;
|
ZEROPAGE: load = RAM, type = bss, define = yes;
|
||||||
DATA: load = RAM, type = bss, offset = $0200, define = yes;
|
DATA: load = RAM, type = bss, define = yes, offset = $0200;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
VECTOR: load = ROM, type = ro, offset = $3FFA;
|
||||||
VECTOR: load = ROM, type = ro, offset = $3FFA;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,8 @@ MEMORY {
|
|||||||
CPUSTACK: start = $0100, size = $0100;
|
CPUSTACK: start = $0100, size = $0100;
|
||||||
RAM: start = $0200, size = $1E00, define = yes;
|
RAM: start = $0200, size = $1E00, define = yes;
|
||||||
VRAM: start = $4000, size = $2000;
|
VRAM: start = $4000, size = $2000;
|
||||||
ROM: start = $8000, size = $8000, fill = yes, fillval = $ff, file = %O, define = yes;
|
ROM: start = $8000, size = $8000, fill = yes, fillval = $FF, file = %O, define = yes;
|
||||||
}
|
}
|
||||||
|
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
LOWCODE: load = ROM, type = ro, optional = yes;
|
LOWCODE: load = ROM, type = ro, optional = yes;
|
||||||
INIT: load = ROM, type = ro, define = yes, optional = yes;
|
INIT: load = ROM, type = ro, define = yes, optional = yes;
|
||||||
@@ -19,21 +18,19 @@ SEGMENTS {
|
|||||||
FFF0: load = ROM, type = ro, offset = $7FF0;
|
FFF0: load = ROM, type = ro, offset = $7FF0;
|
||||||
VECTOR: load = ROM, type = ro, offset = $7FFA;
|
VECTOR: load = ROM, type = ro, offset = $7FFA;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp, define = yes;
|
ZEROPAGE: load = ZP, type = zp, define = yes;
|
||||||
}
|
}
|
||||||
|
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: type = interruptor,
|
CONDES: segment = RODATA,
|
||||||
segment = RODATA,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +1,37 @@
|
|||||||
# Memory configuration for the VIC-20 with 32K RAM Cartridge
|
# Memory configuration for the VIC-20 with 32K RAM Cartridge
|
||||||
# Contributed by Stefan Haubenthal
|
# Contributed by Stefan Haubenthal
|
||||||
|
|
||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0400, weak = yes; # 1k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0002, size = $001A, type = rw, define = yes;
|
ZP: define = yes, start = $0002, size = $001A;
|
||||||
HEADER: start = $11FF, size = $000E, file = %O;
|
HEADER: file = %O, start = $11FF, size = $000E;
|
||||||
RAM: start = $120D, size = $6DF3, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = $120D, size = $6DF3 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
EXEHDR: load = HEADER, type = ro;
|
EXEHDR: load = HEADER, type = ro;
|
||||||
STARTUP: load = RAM, type = ro;
|
STARTUP: load = RAM, type = ro;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
ZPSAVE: load = RAM, type = bss;
|
ZPSAVE: load = RAM, type = bss;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = interruptor,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0400, weak = yes; # 1k stack
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,39 +1,34 @@
|
|||||||
|
SYMBOLS {
|
||||||
|
__STACKSIZE__: value = $0400, weak = yes; # 1k stack
|
||||||
|
}
|
||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $0002, size = $001A, type = rw, define = yes;
|
ZP: define = yes, start = $0002, size = $001A;
|
||||||
HEADER: start = $0FFF, size = $000E, file = %O;
|
HEADER: file = %O, start = $0FFF, size = $000E;
|
||||||
RAM: start = $100D, size = $0DF3, file = %O, define = yes;
|
RAM: file = %O, define = yes, start = $100D, size = $0DF3 - __STACKSIZE__;
|
||||||
}
|
}
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
EXEHDR: load = HEADER, type = ro;
|
EXEHDR: load = HEADER, type = ro;
|
||||||
STARTUP: load = RAM, type = ro;
|
STARTUP: load = RAM, type = ro;
|
||||||
LOWCODE: load = RAM, type = ro, optional = yes;
|
LOWCODE: load = RAM, type = ro, optional = yes;
|
||||||
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
INIT: load = RAM, type = ro, define = yes, optional = yes;
|
||||||
CODE: load = RAM, type = ro;
|
CODE: load = RAM, type = ro;
|
||||||
RODATA: load = RAM, type = ro;
|
RODATA: load = RAM, type = ro;
|
||||||
DATA: load = RAM, type = rw;
|
DATA: load = RAM, type = rw;
|
||||||
ZPSAVE: load = RAM, type = bss;
|
ZPSAVE: load = RAM, type = bss;
|
||||||
BSS: load = RAM, type = bss, define = yes;
|
BSS: load = RAM, type = bss, define = yes;
|
||||||
HEAP: load = RAM, type = bss, optional = yes; # must sit just below stack
|
|
||||||
ZEROPAGE: load = ZP, type = zp;
|
ZEROPAGE: load = ZP, type = zp;
|
||||||
}
|
}
|
||||||
FEATURES {
|
FEATURES {
|
||||||
CONDES: segment = INIT,
|
CONDES: segment = INIT,
|
||||||
type = constructor,
|
type = constructor,
|
||||||
label = __CONSTRUCTOR_TABLE__,
|
label = __CONSTRUCTOR_TABLE__,
|
||||||
count = __CONSTRUCTOR_COUNT__;
|
count = __CONSTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = destructor,
|
type = destructor,
|
||||||
label = __DESTRUCTOR_TABLE__,
|
label = __DESTRUCTOR_TABLE__,
|
||||||
count = __DESTRUCTOR_COUNT__;
|
count = __DESTRUCTOR_COUNT__;
|
||||||
CONDES: segment = RODATA,
|
CONDES: segment = RODATA,
|
||||||
type = interruptor,
|
type = interruptor,
|
||||||
label = __INTERRUPTOR_TABLE__,
|
label = __INTERRUPTOR_TABLE__,
|
||||||
count = __INTERRUPTOR_COUNT__;
|
count = __INTERRUPTOR_COUNT__;
|
||||||
}
|
}
|
||||||
SYMBOLS {
|
|
||||||
__STACKSIZE__: value = $0400, weak = yes; # 1k stack
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user