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.