The name RAM doesn't make much sense in general for a memeory area because i.e. the zero page is for sure RAM but is not part of the memory area named RAM.
For disk based targets it makes sense to put the disk file more into focus and here MAIN means the main part of the file - in contrast to some header.
Only for ROM based targets the name RAM is kept as it makes sense to focus on the difference between RAM and ROM.
MEMORY {
ZP: start = $0080, size = $001A, define = yes;
HEADER: file = %O, start = $0000, size = $0004;
- RAM: file = %O, start = %S, size = $C000 - %S;
+ MAIN: file = %O, start = %S, size = $C000 - %S;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp, optional = yes;
EXEHDR: load = HEADER, type = ro, optional = yes;
- CODE: load = RAM, type = rw, optional = yes, define = yes;
- RODATA: load = RAM, type = ro, optional = yes;
- DATA: load = RAM, type = rw, optional = yes;
- BSS: load = RAM, type = bss, optional = yes, define = yes;
+ CODE: load = MAIN, type = rw, optional = yes, define = yes;
+ RODATA: load = MAIN, type = ro, optional = yes;
+ DATA: load = MAIN, type = rw, optional = yes;
+ BSS: load = MAIN, type = bss, optional = yes, define = yes;
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
- RAM: file = %O, start = %S + __OVERLAYSIZE__, size = __HIMEM__ - __STACKSIZE__ - __OVERLAYSIZE__ - %S;
+ MAIN: file = %O, start = %S + __OVERLAYSIZE__, size = __HIMEM__ - __STACKSIZE__ - __OVERLAYSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = __LCADDR__, size = __LCSIZE__;
OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
}
SEGMENTS {
- ZEROPAGE: load = ZP, type = zp;
- EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, define = yes;
- BSS: load = RAM, type = bss, define = yes;
- ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes;
- LC: load = MOVE, run = LC, type = ro, optional = yes;
- OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes;
- OVERLAY2: load = OVL2, type = ro, define = yes, optional = yes;
- OVERLAY3: load = OVL3, type = ro, define = yes, optional = yes;
- OVERLAY4: load = OVL4, type = ro, define = yes, optional = yes;
- OVERLAY5: load = OVL5, type = ro, define = yes, optional = yes;
- OVERLAY6: load = OVL6, type = ro, define = yes, optional = yes;
- OVERLAY7: load = OVL7, type = ro, define = yes, optional = yes;
- OVERLAY8: load = OVL8, type = ro, define = yes, optional = yes;
- OVERLAY9: load = OVL9, type = ro, define = yes, optional = yes;
+ ZEROPAGE: load = ZP, type = zp;
+ EXEHDR: load = HEADER, type = ro;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, define = yes;
+ BSS: load = MAIN, type = bss, define = yes;
+ ONCE: load = MOVE, run = MAIN, type = ro, define = yes, optional = yes;
+ LC: load = MOVE, run = LC, type = ro, optional = yes;
+ OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes;
+ OVERLAY2: load = OVL2, type = ro, define = yes, optional = yes;
+ OVERLAY3: load = OVL3, type = ro, define = yes, optional = yes;
+ OVERLAY4: load = OVL4, type = ro, define = yes, optional = yes;
+ OVERLAY5: load = OVL5, type = ro, define = yes, optional = yes;
+ OVERLAY6: load = OVL6, type = ro, define = yes, optional = yes;
+ OVERLAY7: load = OVL7, type = ro, define = yes, optional = yes;
+ OVERLAY8: load = OVL8, type = ro, define = yes, optional = yes;
+ OVERLAY9: load = OVL9, type = ro, define = yes, optional = yes;
}
FEATURES {
CONDES: type = constructor,
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;
- RAM: file = %O, start = $2000, size = $9F00 - __STACKSIZE__;
+ MAIN: file = %O, 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;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, define = yes;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, define = yes;
+ BSS: load = MAIN, type = bss, define = yes;
ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes;
LC: load = MOVE, run = LC, type = ro, optional = yes;
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
- RAM: file = %O, start = %S, size = __HIMEM__ - __STACKSIZE__ - %S;
+ MAIN: file = %O, start = %S, size = __HIMEM__ - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = __LCADDR__, size = __LCSIZE__;
}
SEGMENTS {
- ZEROPAGE: load = ZP, type = zp;
- EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, define = yes;
- BSS: load = RAM, type = bss, define = yes;
- ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes;
- LC: load = MOVE, run = LC, type = ro, optional = yes;
+ ZEROPAGE: load = ZP, type = zp;
+ EXEHDR: load = HEADER, type = ro;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, define = yes;
+ BSS: load = MAIN, type = bss, define = yes;
+ ONCE: load = MOVE, run = MAIN, type = ro, define = yes, optional = yes;
+ LC: load = MOVE, run = LC, type = ro, optional = yes;
}
FEATURES {
CONDES: type = constructor,
}
MEMORY {
HEADER: file = %O, start = $0000, size = $0004;
- RAM: file = %O, start = %S, size = $C000 - %S;
+ MAIN: file = %O, start = %S, size = $C000 - %S;
}
SEGMENTS {
EXEHDR: load = HEADER, type = ro, optional = yes;
- CODE: load = RAM, type = rw, optional = yes, define = yes;
- RODATA: load = RAM, type = ro, optional = yes;
- DATA: load = RAM, type = rw, optional = yes;
- BSS: load = RAM, type = bss, optional = yes, define = yes;
+ CODE: load = MAIN, type = rw, optional = yes, define = yes;
+ RODATA: load = MAIN, type = ro, optional = yes;
+ DATA: load = MAIN, type = rw, optional = yes;
+ BSS: load = MAIN, type = bss, optional = yes, define = yes;
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
- RAM: file = %O, start = %S + __OVERLAYSIZE__, size = __HIMEM__ - __STACKSIZE__ - __OVERLAYSIZE__ - %S;
+ MAIN: file = %O, start = %S + __OVERLAYSIZE__, size = __HIMEM__ - __STACKSIZE__ - __OVERLAYSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = __LCADDR__, size = __LCSIZE__;
OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
}
SEGMENTS {
- ZEROPAGE: load = ZP, type = zp;
- EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, define = yes;
- BSS: load = RAM, type = bss, define = yes;
- ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes;
- LC: load = MOVE, run = LC, type = ro, optional = yes;
- OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes;
- OVERLAY2: load = OVL2, type = ro, define = yes, optional = yes;
- OVERLAY3: load = OVL3, type = ro, define = yes, optional = yes;
- OVERLAY4: load = OVL4, type = ro, define = yes, optional = yes;
- OVERLAY5: load = OVL5, type = ro, define = yes, optional = yes;
- OVERLAY6: load = OVL6, type = ro, define = yes, optional = yes;
- OVERLAY7: load = OVL7, type = ro, define = yes, optional = yes;
- OVERLAY8: load = OVL8, type = ro, define = yes, optional = yes;
- OVERLAY9: load = OVL9, type = ro, define = yes, optional = yes;
+ ZEROPAGE: load = ZP, type = zp;
+ EXEHDR: load = HEADER, type = ro;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, define = yes;
+ BSS: load = MAIN, type = bss, define = yes;
+ ONCE: load = MOVE, run = MAIN, type = ro, define = yes, optional = yes;
+ LC: load = MOVE, run = LC, type = ro, optional = yes;
+ OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes;
+ OVERLAY2: load = OVL2, type = ro, define = yes, optional = yes;
+ OVERLAY3: load = OVL3, type = ro, define = yes, optional = yes;
+ OVERLAY4: load = OVL4, type = ro, define = yes, optional = yes;
+ OVERLAY5: load = OVL5, type = ro, define = yes, optional = yes;
+ OVERLAY6: load = OVL6, type = ro, define = yes, optional = yes;
+ OVERLAY7: load = OVL7, type = ro, define = yes, optional = yes;
+ OVERLAY8: load = OVL8, type = ro, define = yes, optional = yes;
+ OVERLAY9: load = OVL9, type = ro, define = yes, optional = yes;
}
FEATURES {
CONDES: type = constructor,
}
MEMORY {
ZP: define = yes, start = $0080, size = $001A;
- RAM: file = %O, start = $2000, size = $9F00 - __STACKSIZE__;
+ MAIN: file = %O, 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;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, define = yes;
- BSS: load = RAM, type = bss, define = yes;
- ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes;
- LC: load = MOVE, run = LC, type = ro, optional = yes;
+ ZEROPAGE: load = ZP, type = zp;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, define = yes;
+ BSS: load = MAIN, type = bss, define = yes;
+ ONCE: load = MOVE, run = MAIN, type = ro, define = yes, optional = yes;
+ LC: load = MOVE, run = LC, type = ro, optional = yes;
}
FEATURES {
CONDES: type = constructor,
MEMORY {
ZP: define = yes, start = $0080, size = $001A;
HEADER: file = %O, start = $0000, size = $0004;
- RAM: file = %O, start = %S, size = __HIMEM__ - __STACKSIZE__ - %S;
+ MAIN: file = %O, start = %S, size = __HIMEM__ - __STACKSIZE__ - %S;
MOVE: file = %O, define = yes, start = $0000, size = $FFFF;
LC: define = yes, start = __LCADDR__, size = __LCSIZE__;
}
SEGMENTS {
- ZEROPAGE: load = ZP, type = zp;
- EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, define = yes;
- BSS: load = RAM, type = bss, define = yes;
- ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes;
- LC: load = MOVE, run = LC, type = ro, optional = yes;
+ ZEROPAGE: load = ZP, type = zp;
+ EXEHDR: load = HEADER, type = ro;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, define = yes;
+ BSS: load = MAIN, type = bss, define = yes;
+ ONCE: load = MOVE, run = MAIN, type = ro, define = yes, optional = yes;
+ LC: load = MOVE, run = LC, type = ro, optional = yes;
}
FEATURES {
CONDES: type = constructor,
STARTADDRESS: default = $2E00;
}
SYMBOLS {
- __EXEHDR__: type = import;
- __AUTOSTART__: type = import; # force inclusion of autostart "trailer"
- __STARTADDRESS__: type = export, value = %S;
+ __EXEHDR__: type = import;
+ __AUTOSTART__: type = import; # force inclusion of autostart "trailer"
+ __STARTADDRESS__: type = export, value = %S;
}
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
# file header, just $FFFF
- HEADER: file = %O, start = $0000, size = $0002;
+ HEADER: file = %O, start = $0000, size = $0002;
# "main program" load chunk
- MAINHDR: file = %O, start = $0000, size = $0004;
- RAM: file = %O, define = yes, start = %S, size = $BC20 - %S;
- TRAILER: file = %O, start = $0000, size = $0006;
+ MAINHDR: file = %O, start = $0000, size = $0004;
+ MAIN: file = %O, define = yes, start = %S, size = $BC20 - %S;
+ TRAILER: file = %O, start = $0000, size = $0006;
}
SEGMENTS {
- EXEHDR: load = HEADER, type = ro, optional = yes;
- MAINHDR: load = MAINHDR, type = ro, optional = yes;
- CODE: load = RAM, type = ro, define = yes, optional = yes;
- RODATA: load = RAM, type = ro optional = yes;
- DATA: load = RAM, type = rw optional = yes;
- BSS: load = RAM, type = bss, define = yes, optional = yes;
- ZEROPAGE: load = ZP, type = zp, optional = yes;
- EXTZP: load = ZP, type = zp, optional = yes; # to enable modules to be able to link to C and assembler programs
- AUTOSTRT: load = TRAILER, type = ro, optional = yes;
+ ZEROPAGE: load = ZP, type = zp, optional = yes;
+ EXTZP: load = ZP, type = zp, optional = yes; # to enable modules to be able to link to C and assembler programs
+ EXEHDR: load = HEADER, type = ro, optional = yes;
+ MAINHDR: load = MAINHDR, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes, optional = yes;
+ RODATA: load = MAIN, type = ro optional = yes;
+ DATA: load = MAIN, type = rw optional = yes;
+ BSS: load = MAIN, type = bss, define = yes, optional = yes;
+ AUTOSTRT: load = TRAILER, type = ro, optional = yes;
}
__CARTFLAGS__: type = weak, value = $01; # see documentation for other possible values
}
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
- RAM: file = "", define = yes, start = %S, size = __CARTSIZE__;
- ROM: file = %O, define = yes, start = $C000 - __CARTSIZE__, size = __CARTSIZE__ - 6, fill = yes, fillval = $FF;
- CARTID: file = %O, start = $BFFA, size = $0006;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
+ MAIN: file = "", define = yes, start = %S, size = __CARTSIZE__;
+ ROM: file = %O, define = yes, start = $C000 - __CARTSIZE__, size = __CARTSIZE__ - 6, fill = yes, fillval = $FF;
+ CARTID: file = %O, start = $BFFA, size = $0006;
}
SEGMENTS {
- ZEROPAGE: load = ZP, type = zp, optional = yes;
- EXTZP: load = ZP, type = zp, optional = yes;
- STARTUP: load = ROM, type = ro, define = yes, optional = yes;
- LOWCODE: load = ROM, type = ro, define = yes, optional = yes;
- ONCE: load = ROM, type = ro, optional = yes;
- CODE: load = ROM, type = ro, define = yes;
- RODATA: load = ROM, type = ro, optional = yes;
- DATA: load = ROM, run = RAM, type = rw, define = yes, optional = yes;
- INIT: load = RAM, type = bss, optional = yes;
- BSS: load = RAM, type = bss, define = yes, optional = yes;
- CARTHDR: load = CARTID, type = ro;
+ ZEROPAGE: load = ZP, type = zp, optional = yes;
+ EXTZP: load = ZP, type = zp, optional = yes;
+ STARTUP: load = ROM, type = ro, define = yes, optional = yes;
+ LOWCODE: load = ROM, type = ro, define = yes, optional = yes;
+ ONCE: load = ROM, type = ro, optional = yes;
+ CODE: load = ROM, type = ro, define = yes;
+ RODATA: load = ROM, type = ro, optional = yes;
+ DATA: load = ROM, run = MAIN, type = rw, define = yes, optional = yes;
+ INIT: load = MAIN, type = bss, optional = yes;
+ BSS: load = MAIN, type = bss, define = yes, optional = yes;
+ CARTHDR: load = CARTID, type = ro;
}
FEATURES {
CONDES: type = constructor,
_cas_hdr: type = import;
}
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
- RAM: file = %O, define = yes, start = %S, size = $BC20 - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
+ MAIN: file = %O, define = yes, start = %S, size = $BC20 - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
}
SEGMENTS {
- ZEROPAGE: load = ZP, type = zp, optional = yes;
- EXTZP: load = ZP, type = zp, optional = yes;
- CASHDR: load = RAM, type = ro;
- STARTUP: load = RAM, type = ro, define = yes, optional = yes;
- LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
- ONCE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro, define = yes;
- RODATA: load = RAM, type = ro, optional = yes;
- DATA: load = RAM, type = rw, optional = yes;
- INIT: load = RAM, type = bss, optional = yes;
- BSS: load = RAM, type = bss, define = yes, optional = yes;
+ ZEROPAGE: load = ZP, type = zp, optional = yes;
+ EXTZP: load = ZP, type = zp, optional = yes;
+ CASHDR: load = MAIN, type = ro;
+ STARTUP: load = MAIN, type = ro, define = yes, optional = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ RODATA: load = MAIN, type = ro, optional = yes;
+ DATA: load = MAIN, type = rw, optional = yes;
+ INIT: load = MAIN, type = bss, optional = yes;
+ BSS: load = MAIN, type = bss, define = yes, optional = yes;
}
FEATURES {
CONDES: type = constructor,
__RESERVED_MEMORY__: type = weak, value = $0000;
}
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
# file header, just $FFFF
- HEADER: file = %O, start = $0000, size = $0002;
+ HEADER: file = %O, start = $0000, size = $0002;
# "system check" load chunk
- SYSCHKHDR: file = %O, start = $0000, size = $0004;
- SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
- SYSCHKTRL: file = %O, start = $0000, size = $0006;
+ SYSCHKHDR: file = %O, start = $0000, size = $0004;
+ SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
+ SYSCHKTRL: file = %O, start = $0000, size = $0006;
# "main program" load chunk
- MAINHDR: file = %O, start = $0000, size = $0004;
- RAM: file = %O, define = yes, start = %S + __OVERLAYSIZE__,
+ MAINHDR: file = %O, start = $0000, size = $0004;
+ MAIN: file = %O, define = yes, start = %S + __OVERLAYSIZE__,
size = $BC20 - __OVERLAYSIZE__ - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
- TRAILER: file = %O, start = $0000, size = $0006;
+ TRAILER: file = %O, start = $0000, size = $0006;
- OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
- OVL2: file = "%O.2", start = %S, size = __OVERLAYSIZE__;
- OVL3: file = "%O.3", start = %S, size = __OVERLAYSIZE__;
- OVL4: file = "%O.4", start = %S, size = __OVERLAYSIZE__;
- OVL5: file = "%O.5", start = %S, size = __OVERLAYSIZE__;
- OVL6: file = "%O.6", start = %S, size = __OVERLAYSIZE__;
- OVL7: file = "%O.7", start = %S, size = __OVERLAYSIZE__;
- OVL8: file = "%O.8", start = %S, size = __OVERLAYSIZE__;
- OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
+ OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
+ OVL2: file = "%O.2", start = %S, size = __OVERLAYSIZE__;
+ OVL3: file = "%O.3", start = %S, size = __OVERLAYSIZE__;
+ OVL4: file = "%O.4", start = %S, size = __OVERLAYSIZE__;
+ OVL5: file = "%O.5", start = %S, size = __OVERLAYSIZE__;
+ OVL6: file = "%O.6", start = %S, size = __OVERLAYSIZE__;
+ OVL7: file = "%O.7", start = %S, size = __OVERLAYSIZE__;
+ OVL8: file = "%O.8", start = %S, size = __OVERLAYSIZE__;
+ OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
SYSCHK: load = SYSCHKCHNK, type = rw, define = yes, optional = yes;
SYSCHKTRL: load = SYSCHKTRL, type = ro, optional = yes;
MAINHDR: load = MAINHDR, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
- ONCE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro, define = yes;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, optional = yes;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, optional = yes;
+ BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes;
OVERLAY2: load = OVL2, type = ro, define = yes, optional = yes;
__RESERVED_MEMORY__: type = weak, value = $0000;
}
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
# file header, just $FFFF
- HEADER: file = %O, start = $0000, size = $0002;
+ HEADER: file = %O, start = $0000, size = $0002;
# "system check" load chunk
- SYSCHKHDR: file = %O, start = $0000, size = $0004;
- SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
- SYSCHKTRL: file = %O, start = $0000, size = $0006;
+ SYSCHKHDR: file = %O, start = $0000, size = $0004;
+ SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
+ SYSCHKTRL: file = %O, start = $0000, size = $0006;
# "main program" load chunk
- MAINHDR: file = %O, start = $0000, size = $0004;
- RAM: file = %O, define = yes, start = %S, size = $BC20 - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
- TRAILER: file = %O, start = $0000, size = $0006;
+ MAINHDR: file = %O, start = $0000, size = $0004;
+ MAIN: file = %O, define = yes, start = %S, size = $BC20 - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
+ TRAILER: file = %O, start = $0000, size = $0006;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
SYSCHK: load = SYSCHKCHNK, type = rw, define = yes, optional = yes;
SYSCHKTRL: load = SYSCHKTRL, type = ro, optional = yes;
MAINHDR: load = MAINHDR, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
- ONCE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro, define = yes;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, optional = yes;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, optional = yes;
+ BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
}
FEATURES {
}
SYMBOLS {
- __EXEHDR__: type = import;
- __SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
- __AUTOSTART__: type = import; # force inclusion of autostart "trailer"
- __STACKSIZE__: type = weak, value = $0800; # 2k stack
- __STARTADDRESS__: type = export, value = %S;
+ __EXEHDR__: type = import;
+ __SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
+ __AUTOSTART__: type = import; # force inclusion of autostart "trailer"
+ __STACKSIZE__: type = weak, value = $0800; # 2k stack
+ __STARTADDRESS__: type = export, value = %S;
}
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
# just $FFFF
- HEADER: file = %O, start = $0000, size = $0002;
+ HEADER: file = %O, start = $0000, size = $0002;
# "system check" load chunk
- SYSCHKHDR: file = %O, start = $0000, size = $0004;
- SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
- SYSCHKTRL: file = %O, start = $0000, size = $0006;
+ SYSCHKHDR: file = %O, start = $0000, size = $0004;
+ SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
+ SYSCHKTRL: file = %O, start = $0000, size = $0006;
# "shadow RAM preparation" load chunk
- SRPREPHDR: file = %O, start = $0000, size = $0004;
- SRPREPCHNK: file = %O, define = yes, start = %S, size = $7C20 - %S - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
- SRPREPTRL: file = %O, start = $0000, size = $0006;
+ SRPREPHDR: file = %O, start = $0000, size = $0004;
+ SRPREPCHNK: file = %O, define = yes, start = %S, size = $7C20 - %S - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
+ SRPREPTRL: file = %O, start = $0000, size = $0006;
# "main program" load chunk
- MAINHDR: file = %O, start = $0000, size = $0004;
- RAM: file = %O, define = yes, start = %S +
- __LOWBSS_SIZE__, size = $D000 -
- __STACKSIZE__ -
- %S -
- __LOWBSS_SIZE__;
+ MAINHDR: file = %O, start = $0000, size = $0004;
+ MAIN: file = %O, define = yes, start = %S +
+ __LOWBSS_SIZE__, size = $D000 -
+ __STACKSIZE__ -
+ %S -
+ __LOWBSS_SIZE__;
# defines entry point into program
- TRAILER: file = %O, start = $0000, size = $0006;
+ TRAILER: file = %O, start = $0000, size = $0006;
# address of relocated character generator
- CHARGEN: file = "", define = yes, start = $D800, size = $0400;
+ CHARGEN: file = "", define = yes, start = $D800, size = $0400;
# memory beneath the ROM
- HIDDEN_RAM: file = "", define = yes, start = $DC00, size = $FFFA - $DC00;
+ HIDDEN_RAM: file = "", define = yes, start = $DC00, size = $FFFA - $DC00;
}
SEGMENTS {
SRPREPTRL: load = SRPREPTRL, type = ro;
MAINHDR: load = MAINHDR, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
- ONCE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro, define = yes;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, optional = yes;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, optional = yes;
+ BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
}
FEATURES {
}
SYMBOLS {
- __EXEHDR__: type = import;
- __SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
- __AUTOSTART__: type = import; # force inclusion of autostart "trailer"
- __STACKSIZE__: type = weak, value = $0800; # 2k stack
- __OVERLAYSIZE__: type = weak, value = $1000; # 4k overlay
- __STARTADDRESS__: type = export, value = %S;
+ __EXEHDR__: type = import;
+ __SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
+ __AUTOSTART__: type = import; # force inclusion of autostart "trailer"
+ __STACKSIZE__: type = weak, value = $0800; # 2k stack
+ __OVERLAYSIZE__: type = weak, value = $1000; # 4k overlay
+ __STARTADDRESS__: type = export, value = %S;
}
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
# just $FFFF
- HEADER: file = %O, start = $0000, size = $0002;
+ HEADER: file = %O, start = $0000, size = $0002;
# "system check" load chunk
- SYSCHKHDR: file = %O, start = $0000, size = $0004;
- SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
- SYSCHKTRL: file = %O, start = $0000, size = $0006;
+ SYSCHKHDR: file = %O, start = $0000, size = $0004;
+ SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
+ SYSCHKTRL: file = %O, start = $0000, size = $0006;
# "shadow RAM preparation" load chunk
- SRPREPHDR: file = %O, start = $0000, size = $0004;
- SRPREPCHNK: file = %O, define = yes, start = %S + __OVERLAYSIZE__, size = $7C20 - %S - __OVERLAYSIZE__ - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
- SRPREPTRL: file = %O, start = $0000, size = $0006;
+ SRPREPHDR: file = %O, start = $0000, size = $0004;
+ SRPREPCHNK: file = %O, define = yes, start = %S + __OVERLAYSIZE__, size = $7C20 - %S - __OVERLAYSIZE__ - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
+ SRPREPTRL: file = %O, start = $0000, size = $0006;
# "main program" load chunk
- MAINHDR: file = %O, start = $0000, size = $0004;
- RAM: file = %O, define = yes, start = %S +
- __OVERLAYSIZE__ +
- __LOWBSS_SIZE__, size = $D000 -
- __STACKSIZE__ -
- %S -
- __OVERLAYSIZE__ -
- __LOWBSS_SIZE__;
+ MAINHDR: file = %O, start = $0000, size = $0004;
+ MAIN: file = %O, define = yes, start = %S +
+ __OVERLAYSIZE__ +
+ __LOWBSS_SIZE__, size = $D000 -
+ __STACKSIZE__ -
+ %S -
+ __OVERLAYSIZE__ -
+ __LOWBSS_SIZE__;
# defines entry point into program
- TRAILER: file = %O, start = $0000, size = $0006;
+ TRAILER: file = %O, start = $0000, size = $0006;
# memory beneath the ROM preceeding the character generator
- HIDDEN_RAM2: file = "", define = yes, start = $D800, size = $0800;
+ HIDDEN_RAM2: file = "", define = yes, start = $D800, size = $0800;
# address of relocated character generator (same addess as ROM version)
- CHARGEN: file = "", define = yes, start = $E000, size = $0400;
+ CHARGEN: file = "", define = yes, start = $E000, size = $0400;
# memory beneath the ROM
- HIDDEN_RAM: file = "", define = yes, start = $E400, size = $FFFA - $E400;
+ HIDDEN_RAM: file = "", define = yes, start = $E400, size = $FFFA - $E400;
# overlays
- OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
- OVL2: file = "%O.2", start = %S, size = __OVERLAYSIZE__;
- OVL3: file = "%O.3", start = %S, size = __OVERLAYSIZE__;
- OVL4: file = "%O.4", start = %S, size = __OVERLAYSIZE__;
- OVL5: file = "%O.5", start = %S, size = __OVERLAYSIZE__;
- OVL6: file = "%O.6", start = %S, size = __OVERLAYSIZE__;
- OVL7: file = "%O.7", start = %S, size = __OVERLAYSIZE__;
- OVL8: file = "%O.8", start = %S, size = __OVERLAYSIZE__;
- OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
+ OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
+ OVL2: file = "%O.2", start = %S, size = __OVERLAYSIZE__;
+ OVL3: file = "%O.3", start = %S, size = __OVERLAYSIZE__;
+ OVL4: file = "%O.4", start = %S, size = __OVERLAYSIZE__;
+ OVL5: file = "%O.5", start = %S, size = __OVERLAYSIZE__;
+ OVL6: file = "%O.6", start = %S, size = __OVERLAYSIZE__;
+ OVL7: file = "%O.7", start = %S, size = __OVERLAYSIZE__;
+ OVL8: file = "%O.8", start = %S, size = __OVERLAYSIZE__;
+ OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
}
SEGMENTS {
SRPREPTRL: load = SRPREPTRL, type = ro;
MAINHDR: load = MAINHDR, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
- ONCE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro, define = yes;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, optional = yes;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, optional = yes;
+ BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes;
}
SYMBOLS {
- __EXEHDR__: type = import;
- __SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
- __AUTOSTART__: type = import; # force inclusion of autostart "trailer"
- __STACKSIZE__: type = weak, value = $0800; # 2k stack
- __STARTADDRESS__: type = export, value = %S;
+ __EXEHDR__: type = import;
+ __SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
+ __AUTOSTART__: type = import; # force inclusion of autostart "trailer"
+ __STACKSIZE__: type = weak, value = $0800; # 2k stack
+ __STARTADDRESS__: type = export, value = %S;
}
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
# just $FFFF
- HEADER: file = %O, start = $0000, size = $0002;
+ HEADER: file = %O, start = $0000, size = $0002;
# "system check" load chunk
- SYSCHKHDR: file = %O, start = $0000, size = $0004;
- SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
- SYSCHKTRL: file = %O, start = $0000, size = $0006;
+ SYSCHKHDR: file = %O, start = $0000, size = $0004;
+ SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
+ SYSCHKTRL: file = %O, start = $0000, size = $0006;
# "shadow RAM preparation" load chunk
- SRPREPHDR: file = %O, start = $0000, size = $0004;
- SRPREPCHNK: file = %O, define = yes, start = %S, size = $7C20 - %S - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
- SRPREPTRL: file = %O, start = $0000, size = $0006;
+ SRPREPHDR: file = %O, start = $0000, size = $0004;
+ SRPREPCHNK: file = %O, define = yes, start = %S, size = $7C20 - %S - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
+ SRPREPTRL: file = %O, start = $0000, size = $0006;
# "main program" load chunk
- MAINHDR: file = %O, start = $0000, size = $0004;
- RAM: file = %O, define = yes, start = %S +
- __LOWBSS_SIZE__, size = $D000 -
- __STACKSIZE__ -
- %S -
- __LOWBSS_SIZE__;
+ MAINHDR: file = %O, start = $0000, size = $0004;
+ MAIN: file = %O, define = yes, start = %S +
+ __LOWBSS_SIZE__, size = $D000 -
+ __STACKSIZE__ -
+ %S -
+ __LOWBSS_SIZE__;
# defines entry point into program
- TRAILER: file = %O, start = $0000, size = $0006;
+ TRAILER: file = %O, start = $0000, size = $0006;
# memory beneath the ROM preceeding the character generator
- HIDDEN_RAM2: file = "", define = yes, start = $D800, size = $0800;
+ HIDDEN_RAM2: file = "", define = yes, start = $D800, size = $0800;
# address of relocated character generator (same addess as ROM version)
- CHARGEN: file = "", define = yes, start = $E000, size = $0400;
+ CHARGEN: file = "", define = yes, start = $E000, size = $0400;
# memory beneath the ROM
- HIDDEN_RAM: file = "", define = yes, start = $E400, size = $FFFA - $E400;
+ HIDDEN_RAM: file = "", define = yes, start = $E400, size = $FFFA - $E400;
}
SEGMENTS {
SRPREPTRL: load = SRPREPTRL, type = ro;
MAINHDR: load = MAINHDR, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
- ONCE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro, define = yes;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss, optional = yes;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss, optional = yes;
+ BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
}
FEATURES {
ZP: file = "", define = yes, start = $00E2, size = $001A;
TAPEHDR: file = %O, type = ro, start = $0000, size = $001F;
BASHEAD: file = %O, define = yes, start = $0501, size = $000D;
- RAM: file = %O, define = yes, start = __BASHEAD_LAST__, size = __RAMEND__ - __RAM_START__ - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = __BASHEAD_LAST__, size = __RAMEND__ - __RAM_START__ - __STACKSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
TAPEHDR: load = TAPEHDR, type = ro;
BASHDR: load = BASHEAD, type = ro, define = yes, optional = yes;
- STARTUP: load = RAM, type = ro;
- LOWCODE: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- DATA: load = RAM, type = rw;
- ZPSAVE1: load = RAM, type = rw, define = yes; # ZPSAVE1, ZPSAVE2 must be together
- ZPSAVE2: load = RAM, type = bss; # see "libsrc/atmos/crt0.s"
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ DATA: load = MAIN, type = rw;
+ ZPSAVE1: load = MAIN, type = rw, define = yes; # ZPSAVE1, ZPSAVE2 must be together
+ ZPSAVE2: load = MAIN, type = bss; # see "libsrc/atmos/crt0.s"
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
- ZP: file = "", define = yes, start = $0070, size = $0020;
- RAM: file = %O, start = $0E00, size = $7200 - __STACKSIZE__;
+ ZP: file = "", define = yes, start = $0070, size = $0020;
+ MAIN: file = %O, start = $0E00, size = $7200 - __STACKSIZE__;
}
SEGMENTS {
- ZEROPAGE: load = ZP, type = zp;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: 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;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
ZP: file = "", define = yes, start = $0002, size = $001A;
LOADADDR: file = %O, start = $1BFF, size = $0002;
HEADER: file = %O, start = $1C01, size = $000C;
- RAM: file = %O, define = yes, start = $1C0D, size = $A3F3 - __OVERLAYSIZE__ - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $1C0D, size = $A3F3 - __OVERLAYSIZE__ - __STACKSIZE__;
OVL1ADDR: file = "%O.1", start = $BFFE - __OVERLAYSIZE__, size = $0002;
OVL1: file = "%O.1", start = $C000 - __OVERLAYSIZE__, size = __OVERLAYSIZE__;
OVL2ADDR: file = "%O.2", start = $BFFE - __OVERLAYSIZE__, size = $0002;
ZEROPAGE: load = ZP, type = zp;
LOADADDR: load = LOADADDR, type = ro;
EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss;
+ BSS: load = MAIN, type = bss, define = yes;
OVL1ADDR: load = OVL1ADDR, type = ro;
OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes;
OVL2ADDR: load = OVL2ADDR, type = ro;
ZP: file = "", define = yes, start = $0002, size = $001A;
LOADADDR: file = %O, start = $1BFF, size = $0002;
HEADER: file = %O, start = $1C01, size = $000C;
- RAM: file = %O, define = yes, start = $1C0D, size = $A3F3 - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $1C0D, size = $A3F3 - __STACKSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
LOADADDR: load = LOADADDR, type = ro;
EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
ZP: file = "", define = yes, start = $0002, size = $001A;
LOADADDR: file = %O, start = $0FFF, size = $0002;
HEADER: file = %O, start = $1001, size = $000C;
- RAM: file = %O, start = $100D, size = $6FF3 - __STACKSIZE__;
+ MAIN: file = %O, start = $100D, size = $6FF3 - __STACKSIZE__;
}
SEGMENTS {
- ZEROPAGE: load = ZP, type = zp;
+ ZEROPAGE: load = ZP, type = zp;
LOADADDR: load = LOADADDR, type = ro;
- EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss;
- BSS: load = RAM, type = bss, define = yes;
+ EXEHDR: load = HEADER, type = ro;
+ STARTUP: load = MAIN, type = ro;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
MEMORY {
ZP: file = "", start = $0002, size = $001A, define = yes;
LOADADDR: file = %O, start = %S - 2, size = $0002;
- RAM: file = %O, start = %S, size = $D000 - %S;
+ MAIN: file = %O, start = %S, size = $D000 - %S;
}
SEGMENTS {
LOADADDR: load = LOADADDR, type = ro;
- EXEHDR: load = RAM, type = ro, optional = yes;
- CODE: load = RAM, type = rw, optional = yes;
- RODATA: load = RAM, type = ro, optional = yes;
- DATA: load = RAM, type = rw, optional = yes;
- BSS: load = RAM, type = bss, optional = yes;
+ EXEHDR: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = rw, optional = yes;
+ RODATA: load = MAIN, type = ro, optional = yes;
+ DATA: load = MAIN, type = rw, optional = yes;
+ BSS: load = MAIN, type = bss, optional = yes;
ZEROPAGE: load = ZP, type = zp, optional = 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;
+ MAIN: file = %O, start = $0400, size = $DC00;
CHARRAM: file = "", define = yes, start = $E000, size = $1000;
VIDRAM: file = "", define = yes, start = $F000, size = $0400;
}
SEGMENTS {
+ ZEROPAGE: load = ZP, type = zp;
+ EXTZP: load = ZP, type = rw, define = yes;
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;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss;
- BSS: load = RAM, type = bss, define = yes;
- ZEROPAGE: load = ZP, type = zp;
- EXTZP: load = ZP, type = rw, define = yes;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
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 = $FECB - __STACKSIZE__;
+ MAIN: file = %O, start = $0400, size = $FECB - __STACKSIZE__;
}
SEGMENTS {
+ ZEROPAGE: load = ZP, type = zp;
+ EXTZP: load = ZP, type = rw, define = yes;
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;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss;
- BSS: load = RAM, type = bss, define = yes;
- ZEROPAGE: load = ZP, type = zp;
- EXTZP: load = ZP, type = rw, define = yes;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
# 0000-03ff is RAM
# FIXME: what zp range can we actually use?
# $0a-$11 is used by IRQ/NMI, $e8 is used by NMI
- ZP: start = $0012, size = $e8 - $12;
- CPUSTACK: start = $0100, size =$100;
- RAM: start = $0200, size = $200 - __STACKSIZE__, define = yes;
+ ZP: start = $0012, size = $00E8 - $0012;
+ CPUSTACK: start = $0100, size = $0100;
+ RAM: start = $0200, size = $0200 - __STACKSIZE__, define = yes;
- CARTHEADER: file = %O, define = yes, start = %S, size = $0029;
+ CARTHEADER: file = %O, define = yes, start = %S, size = $0029;
# 6000-e000 can be (Cartridge) ROM
# WARNING: fill value must be $00 else it will no more work
- #ROM: start = $6000, size = $1000, fill = yes, fillval = $00, file = %O, define = yes;
- #ROMFILL: start = $7000, size = $7000, fill = yes, fillval = $00, file = %O, define = yes;
+ #ROM: start = $6000, size = $1000, fill = yes, fillval = $00, file = %O, define = yes;
+ #ROMFILL: start = $7000, size = $7000, fill = yes, fillval = $00, file = %O, define = yes;
# for images that have code >$6fff we must calculate the checksum!
- ROM: start = $6000 + $29, size = $8000 - $29, fill = yes, fillval = $00, file = %O, define = yes;
+ ROM: start = $6000 + $0029, size = $8000 - $0029, fill = yes, fillval = $00, file = %O, define = yes;
}
SEGMENTS {
__STACKSIZE__: type = weak, value = $0400; # 1k stack (do typical LUnix apps. need 2k?)
}
MEMORY {
- ZP: start = $0080, size = $0040;
- RAM: start = %S, size = $7600 - __STACKSIZE__;
+ ZP: start = $0080, size = $0040;
+ MAIN: start = %S, size = $7600 - __STACKSIZE__;
}
SEGMENTS {
- ZEROPAGE: load = ZP, type = zp, define = yes; # Pseudo-registers
- STARTUP: load = RAM, type = ro; # First initialization code
- LOWCODE: load = RAM, type = ro, optional = yes; # Legacy from other platforms
- ONCE: load = RAM, type = ro, define = yes, optional = yes; # Library initialization code
- CODE: load = RAM, type = ro; # Program
- RODATA: load = RAM, type = ro; # Literals, constants
- DATA: load = RAM, type = rw; # Initialized variables
- BSS: load = RAM, type = bss, define = yes; # Uninitialized variables
+ ZEROPAGE: load = ZP, type = zp, define = yes; # Pseudo-registers
+ STARTUP: load = MAIN, type = ro; # First initialization code
+ LOWCODE: load = MAIN, type = ro, optional = yes; # Legacy from other platforms
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes; # Library initialization code
+ CODE: load = MAIN, type = ro; # Program
+ RODATA: load = MAIN, type = ro; # Literals, constants
+ DATA: load = MAIN, type = rw; # Initialized variables
+ BSS: load = MAIN, type = bss, define = yes; # Uninitialized variables
}
FEATURES {
CONDES: type = constructor,
MEMORY {
ZP: file = "", define = yes, start = $0000, size = $0100;
HEADER: file = %O, start = $0000, size = $000a;
- RAM: file = %O, define = yes, start = $0400, size = $BC38 - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $0400, size = $BC38 - __STACKSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = zp, optional = yes;
APPZP: load = ZP, type = zp, optional = yes;
BLLHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro, define = yes;
- RODATA: load = RAM, type = ro, define = yes;
- DATA: load = RAM, type = rw, define = yes;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ RODATA: load = MAIN, type = ro, define = yes;
+ DATA: load = MAIN, type = rw, define = yes;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
HEADER: file = %O, start = $0000, size = $0040;
BOOT: file = %O, start = $0200, size = __STARTOFDIRECTORY__;
DIR: file = %O, start = $0000, size = 8;
- RAM: file = %O, define = yes, start = $0200, size = $9E58 - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $0200, size = $9E58 - __STACKSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXEHDR: load = HEADER, type = ro;
BOOTLDR: load = BOOT, type = ro;
DIRECTORY: load = DIR, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro, define = yes;
- RODATA: load = RAM, type = ro, define = yes;
- DATA: load = RAM, type = rw, define = yes;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ RODATA: load = MAIN, type = ro, define = yes;
+ DATA: load = MAIN, type = rw, define = yes;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
HEADER: file = %O, start = $0000, size = $0040;
BOOT: file = %O, start = $0200, size = __STARTOFDIRECTORY__;
DIR: file = %O, start = $0000, size = 8;
- RAM: file = %O, define = yes, start = $0200, size = $BD38 - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $0200, size = $BD38 - __STACKSIZE__;
UPLDR: file = %O, define = yes, start = $BFDC, size = $005C;
}
SEGMENTS {
EXEHDR: load = HEADER, type = ro;
BOOTLDR: load = BOOT, type = ro;
DIRECTORY:load = DIR, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro, define = yes;
- RODATA: load = RAM, type = ro, define = yes;
- DATA: load = RAM, type = rw, define = yes;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ RODATA: load = MAIN, type = ro, define = yes;
+ DATA: load = MAIN, type = rw, define = yes;
+ BSS: load = MAIN, type = bss, define = yes;
UPCODE: load = UPLDR, type = ro, define = yes;
UPDATA: load = UPLDR, type = rw, define = yes;
}
HEADER: file = %O, start = $0000, size = $0040;
BOOT: file = %O, start = $0200, size = __STARTOFDIRECTORY__;
DIR: file = %O, start = $0000, size = 8;
- RAM: file = %O, define = yes, start = $0200, size = $BE38 - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $0200, size = $BE38 - __STACKSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXEHDR: load = HEADER, type = ro;
BOOTLDR: load = BOOT, type = ro;
DIRECTORY: load = DIR, type = ro;
- STARTUP: load = RAM, type = ro, define = yes;
- LOWCODE: load = RAM, type = ro, define = yes, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro, define = yes;
- RODATA: load = RAM, type = ro, define = yes;
- DATA: load = RAM, type = rw, define = yes;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro, define = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ RODATA: load = MAIN, type = ro, define = yes;
+ DATA: load = MAIN, type = rw, define = yes;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
__STACKSIZE__: type = weak, value = $0800; # 2k stack
}
MEMORY {
- ZP: file = "", define = yes, start = $0000, size = $0001F;
- RAM: file = %O, start = %S, size = $10000 - __STACKSIZE__;
+ ZP: file = "", define = yes, start = $0000, size = $0001F;
+ MAIN: file = %O, start = %S, size = $10000 - __STACKSIZE__;
}
SEGMENTS {
- ZEROPAGE: load = ZP, type = zp;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = rw;
- RODATA: load = RAM, type = rw;
- DATA: load = RAM, type = rw;
- BSS: load = RAM, type = bss, define = yes;
+ ZEROPAGE: load = ZP, type = zp;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = rw;
+ RODATA: load = MAIN, type = rw;
+ DATA: load = MAIN, type = rw;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
}
MEMORY {
# for size of ZP, see runtime/zeropage.s and c1p/extzp.s
- ZP: file = "", define = yes, start = $0002, size = $001A + $0006;
- HEAD: file = %O, start = $0000, size = $00B6;
- RAM: file = %O, define = yes, start = %S, size = __HIMEM__ - __STACKSIZE__ - %S;
+ ZP: file = "", define = yes, start = $0002, size = $001A + $0006;
+ HEAD: file = %O, start = $0000, size = $00B6;
+ MAIN: file = %O, define = yes, start = %S, size = __HIMEM__ - __STACKSIZE__ - %S;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
BOOT: load = HEAD, type = ro, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = rw;
- RODATA: load = RAM, type = rw;
- DATA: load = RAM, type = rw;
- BSS: load = RAM, type = bss, define = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = rw;
+ RODATA: load = MAIN, type = rw;
+ DATA: load = MAIN, type = rw;
+ BSS: load = MAIN, type = bss, define = yes;
}
}
MEMORY {
# for size of ZP, see runtime/zeropage.s and c1p/extzp.s
- ZP: file = "", define = yes, start = $0002, size = $001A + $0020;
- HEAD: file = %O, start = $0000, size = $00B6;
- RAM: file = %O, define = yes, start = %S, size = __HIMEM__ - __STACKSIZE__ - %S;
+ ZP: file = "", define = yes, start = $0002, size = $001A + $0020;
+ HEAD: file = %O, start = $0000, size = $00B6;
+ MAIN: file = %O, define = yes, start = %S, size = __HIMEM__ - __STACKSIZE__ - %S;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = zp, define = yes, optional = yes;
BOOT: load = HEAD, type = ro, optional = yes;
- STARTUP: load = RAM, type = ro;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = rw;
- RODATA: load = RAM, type = rw;
- DATA: load = RAM, type = rw;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = rw;
+ RODATA: load = MAIN, type = rw;
+ DATA: load = MAIN, type = rw;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
ZP: file = "", define = yes, start = $0002, size = $001A;
LOADADDR: file = %O, start = $0FFF, size = $0002;
HEADER: file = %O, start = $1001, size = $000C;
- RAM: file = %O, define = yes, start = $100D, size = $ECF3 - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $100D, size = $ECF3 - __STACKSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
LOADADDR: load = LOADADDR, type = ro;
EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
MEMORY {
ZP: file = "", start = $0000, size = $001A;
HEADER: file = %O, start = $0000, size = $0001;
- RAM: file = %O, define = yes, start = $0200, size = $FDF0 - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $0200, size = $FDF0 - __STACKSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: 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;
+ STARTUP: load = MAIN, type = ro;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
MEMORY {
ZP: file = "", start = $0000, size = $001A;
HEADER: file = %O, start = $0000, size = $0001;
- RAM: file = %O, define = yes, start = $0200, size = $FDF0 - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $0200, size = $FDF0 - __STACKSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: 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;
+ STARTUP: load = MAIN, type = ro;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
ZP: file = "", define = yes, start = $0002, size = $001A;
LOADADDR: file = %O, start = $11FF, size = $0002;
HEADER: file = %O, start = $1201, size = $000C;
- RAM: file = %O, define = yes, start = $120D, size = $6DF3 - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $120D, size = $6DF3 - __STACKSIZE__;
}
SEGMENTS {
+ ZEROPAGE: load = ZP, type = zp;
LOADADDR: load = LOADADDR, type = ro;
EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss;
- BSS: load = RAM, type = bss, define = yes;
- ZEROPAGE: load = ZP, type = zp;
+ STARTUP: load = MAIN, type = ro;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
ZP: file = "", define = yes, start = $0002, size = $001A;
LOADADDR: file = %O, start = $0FFF, size = $0002;
HEADER: file = %O, start = $1001, size = $000C;
- RAM: file = %O, define = yes, start = $100D, size = $0DF3 - __STACKSIZE__;
+ MAIN: file = %O, define = yes, start = $100D, size = $0DF3 - __STACKSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
LOADADDR: load = LOADADDR, type = ro;
EXEHDR: load = HEADER, type = ro;
- STARTUP: load = RAM, type = ro;
- LOWCODE: load = RAM, type = ro, optional = yes;
- ONCE: load = RAM, type = ro, define = yes, optional = yes;
- CODE: load = RAM, type = ro;
- RODATA: load = RAM, type = ro;
- DATA: load = RAM, type = rw;
- INIT: load = RAM, type = bss;
- BSS: load = RAM, type = bss, define = yes;
+ STARTUP: load = MAIN, type = ro;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = ro;
+ RODATA: load = MAIN, type = ro;
+ DATA: load = MAIN, type = rw;
+ INIT: load = MAIN, type = bss;
+ BSS: load = MAIN, type = bss, define = yes;
}
FEATURES {
CONDES: type = constructor,
($58).
<tag/Stack/
- The C runtime stack is located at end of the RAM memory area ($CFFF)
+ The C runtime stack is located at end of the MAIN memory area ($CFFF)
and grows downwards.
<tag/Heap/
<item>main program&nl;
This load chunk is loaded at the selected program start address (default $2000) and
contains all of the code and data of the program.&nl;
-The contents of this chunk come from the RAM memory area of the linker config file.
+The contents of this chunk come from the MAIN memory area of the linker config file.
</enum>
.import initlib, donelib
.import callmain, zerobss
.import __RESERVED_MEMORY__
- .import __RAM_START__, __RAM_SIZE__
+ .import __MAIN_START__, __MAIN_SIZE__
.ifdef __ATARIXL__
.import __STACKSIZE__
.import sram_init
.ifdef __ATARIXL__
- lda #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
+ lda #<(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
+ ldx #>(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
sta sp
- lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
- sta sp+1
+ stx sp+1
.else
; This file defines the EXE header and main chunk load header for Atari executables
.export __EXEHDR__: absolute = 1
- .import __RAM_START__, __BSS_LOAD__
+ .import __MAIN_START__, __BSS_LOAD__
.segment "EXEHDR"
.word $FFFF
.segment "MAINHDR"
- .word __RAM_START__
+ .word __MAIN_START__
.word __BSS_LOAD__ - 1
.export __STARTUP__ : absolute = 1 ; Mark as startup
.import initlib, donelib
.import callmain, zerobss
- .import __RAM_START__, __RAM_SIZE__, __STACKSIZE__
+ .import __MAIN_START__, __MAIN_SIZE__, __STACKSIZE__
.include "zeropage.inc"
.include "atmos.inc"
tsx
stx spsave ; Save system stk ptr
- lda #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
+ lda #<(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
+ ldx #>(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
sta sp
- lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
- sta sp+1 ; Set argument stack ptr
+ stx sp+1 ; Set argument stack ptr
; Call the module constructors.
.import zerobss
.import push0, callmain
.import RESTOR, BSOUT, CLRCH
- .import __RAM_START__, __RAM_SIZE__, __STACKSIZE__
+ .import __MAIN_START__, __MAIN_SIZE__, __STACKSIZE__
.importzp ST
.include "zeropage.inc"
tsx
stx spsave ; Save the system stack pointer
- lda #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
+ lda #<(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
+ ldx #>(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
sta sp
- lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
- sta sp+1 ; Set argument stack ptr
+ stx sp+1 ; Set argument stack ptr
; Call the module constructors.
; setup the stack
lda #<(__RAM_START__+__RAM_SIZE__)
+ ldx #>(__RAM_START__+__RAM_SIZE__)
sta sp
- lda #>(__RAM_START__+__RAM_SIZE__)
- sta sp + 1
+ stx sp + 1
; Call module constructors
jsr initlib
lda #1
sta ZP_IRQ_CTRL ; enable calling cartridge IRQ/NMI handler
- cli ; allow IRQ only after constructors have run
+ cli ; allow IRQ only after constructors have run
; Pass an empty command line
jsr push0 ; argc
; This header is required for BLL builds.
;
.import __BSS_LOAD__
- .import __RAM_START__
+ .import __MAIN_START__
.export __BLLHDR__: absolute = 1
; ------------------------------------------------------------------------
.segment "BLLHDR"
.word $0880
- .dbyt __RAM_START__
- .dbyt __BSS_LOAD__ - __RAM_START__ + 10
+ .dbyt __MAIN_START__
+ .dbyt __BSS_LOAD__ - __MAIN_START__ + 10
.byte $42,$53
.byte $39,$33
-
.import zerobss
.import callmain
.import _main
- .import __RAM_START__, __RAM_SIZE__, __STACKSIZE__
+ .import __MAIN_START__, __MAIN_SIZE__, __STACKSIZE__
.include "zeropage.inc"
.include "extzp.inc"
; Set up the stack.
- lda #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
+ lda #<(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
+ ldx #>(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
sta sp
- lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
- sta sp+1
+ stx sp+1
; Init Mickey.
;
.include "lynx.inc"
.import __STARTOFDIRECTORY__
- .import __RAM_START__
+ .import __MAIN_START__
.import __CODE_SIZE__, __DATA_SIZE__, __RODATA_SIZE__
.import __STARTUP_SIZE__, __ONCE_SIZE__, __LOWCODE_SIZE__
.import __BLOCKSIZE__
.byte <block0
.word off0 & (__BLOCKSIZE__ - 1)
.byte $88
- .word __RAM_START__
+ .word __MAIN_START__
.word len0
__DIRECTORY_END__:
; add "-u __BOOT__" to the cl65/ld65 command line. Then, the linker
; will import this symbol name; and, link this module at the front
; of your program file.
-;
- .export __BOOT__:abs = 1
- .import __RAM_START__, __RAM_SIZE__, __BSS_RUN__
+ .export __BOOT__ : abs = 1
+
+ .import __MAIN_START__, __MAIN_SIZE__, __BSS_RUN__
; ------------------------------------------------------------------------
-load_addr := __RAM_START__
-load_size = __BSS_RUN__ - __RAM_START__
-ram_top := __RAM_START__ + __RAM_SIZE__
+load_addr := __MAIN_START__
+load_size = __BSS_RUN__ - __MAIN_START__
+ram_top := __MAIN_START__ + __MAIN_SIZE__
.segment "BOOT"
.import _main
.export __STARTUP__ : absolute = 1 ; Mark as startup
-.import __RAM_START__, __RAM_SIZE__ ; Linker generated
+.import __MAIN_START__, __MAIN_SIZE__ ; Linker generated
.import __STACKSIZE__
.import zerobss, initlib, donelib
; ---------------------------------------------------------------------------
; Set cc65 argument stack pointer
- lda #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
+ lda #<(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
+ ldx #>(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
sta sp
- lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
- sta sp+1
+ stx sp+1
; ---------------------------------------------------------------------------
; Initialize memory storage
.import callirq_y, initlib, donelib
.import callmain, zerobss
.import __INTERRUPTOR_COUNT__
- .import __RAM_START__, __RAM_SIZE__ ; Linker generated
+ .import __MAIN_START__, __MAIN_SIZE__ ; Linker generated
.import __STACKSIZE__ ; Linker generated
.importzp ST
; of the usable RAM.
tsx
- stx spsave ; save system stk ptr
+ stx spsave ; Save system stk ptr
- lda #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
+ lda #<(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
+ ldx #>(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
sta sp
- lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
- sta sp+1
+ stx sp+1
; Set up the IRQ vector in the banked RAM; and, switch off the ROM.
.import zerobss, callmain
.import initlib, donelib
.import exit
- .import __RAM_START__, __RAM_SIZE__ ; Linker generated
+ .import __MAIN_START__, __MAIN_SIZE__ ; Linker generated
.import __STACKSIZE__ ; Linker generated
.include "zeropage.inc"
cld
ldx #$FF
txs
- lda #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
- ldx #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
+ lda #<(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
+ ldx #>(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
sta sp
stx sp+1
jsr zerobss
.import zerobss, push0
.import callmain
.import RESTOR, BSOUT, CLRCH
- .import __RAM_START__, __RAM_SIZE__ ; Linker generated
+ .import __MAIN_START__, __MAIN_SIZE__ ; Linker generated
.import __STACKSIZE__ ; Linker generated
.importzp ST
tsx
stx spsave ; Save the system stack ptr
- lda #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
+ lda #<(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
+ ldx #>(__MAIN_START__ + __MAIN_SIZE__ + __STACKSIZE__)
sta sp
- lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
- sta sp+1 ; Set argument stack ptr
+ stx sp+1 ; Set argument stack ptr
; Call the module constructors.