MEMORY {
-    ZP: start = $00, size = $1A, type = rw, define = yes;
-    HEADER: start = $0000, size = $4, file = %O;
-    RAM: start = $4000, size = $7600, file = %O;
+    ZP:     start = $0000, size = $001A, type = rw, define = yes;
+    HEADER: start = $0000, size = $0004, file = %O;
+    RAM:    start = $4000, size = $7600, file = %O;
 }
 SEGMENTS {
-    EXEHDR: load = HEADER, type = ro;
-    STARTUP: load = RAM, type = ro, define = yes;
-    LOWCODE: load = RAM, type = ro;
-    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;
+    EXEHDR:   load = HEADER, type = ro;
+    STARTUP:  load = RAM,    type = ro, define = yes;
+    LOWCODE:  load = RAM,    type = ro,               optional = yes;
+    INIT:     load = RAM,    type = ro, define = yes, optional = yes;
+    CODE:     load = RAM,    type = ro;
+    RODATA:   load = RAM,    type = ro;
+    DATA:     load = RAM,    type = rw;
+    BSS:      load = RAM,    type = bss, define = yes;
+    ZEROPAGE: load = ZP,     type = zp;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 MEMORY {
-    ZP: start = $00, size = $1A, type = rw, define = yes;
-    HEADER: start = $0000, size = $4, file = %O;
-    RAM: start = $800, size = $8E00, file = %O;
+    ZP:     start = $0000, size = $001A, type = rw, define = yes;
+    HEADER: start = $0000, size = $0004, file = %O;
+    RAM:    start = $0800, size = $8E00, file = %O;
 }
 SEGMENTS {
-    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;
-    BSS: load = RAM, type = bss, define = yes;
-    ZEROPAGE: load = ZP, type = zp;
+    EXEHDR:   load = HEADER, type = ro;
+    STARTUP:  load = RAM,    type = ro, define = yes;
+    LOWCODE:  load = RAM,    type = ro,               optional = yes;
+    INIT:     load = RAM,    type = ro, define = yes, optional = yes;
+    CODE:     load = RAM,    type = ro;
+    RODATA:   load = RAM,    type = ro;
+    DATA:     load = RAM,    type = rw;
+    BSS:      load = RAM,    type = bss, define = yes;
+    ZEROPAGE: load = ZP,     type = zp;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 MEMORY {
-    ZP: start = $82, size = $7E, type = rw, define = yes;
-    HEADER: start = $0000, size = $6, file = %O;
-    RAM: start = $2E00, size = $8E20, file = %O;    # $8E20: matches upper bound $BC1F
+    ZP:     start = $0082, size = $007E, type = rw, define = yes;
+    HEADER: start = $0000, size = $0006, file = %O;
+    RAM:    start = $2E00, size = $8E20, file = %O;    # $8E20: matches upper bound $BC1F
 }
 SEGMENTS {
-    EXEHDR: load = HEADER, type = ro;
-    CODE: load = RAM, type = ro, define = yes;
-    RODATA: load = RAM, type = ro;
-    DATA: load = RAM, type = rw;
-    BSS: load = RAM, type = bss, define = yes;
-    ZEROPAGE: load = ZP, type = zp;
-    AUTOSTRT: load = RAM, type = ro;
+    EXEHDR:   load = HEADER, type = ro;
+    LOWCODE:  load = RAM,    type = ro,               optional = yes;
+    INIT:     load = RAM,    type = ro, define = yes, optional = yes;
+    CODE:     load = RAM,    type = ro, define = yes;
+    RODATA:   load = RAM,    type = ro;
+    DATA:     load = RAM,    type = rw;
+    BSS:      load = RAM,    type = bss, define = yes;
+    ZEROPAGE: load = ZP,     type = zp;
+    AUTOSTRT: load = RAM,    type = ro;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 MEMORY {
-    ZP: start = $E2, size = $1A, type = rw, define = yes;
-    TAPEHDR: start = $000, size= 14, type = ro, file = %O;
-    RAM: start = $0500, size = $9300, define = yes, file = %O;
+    ZP:      start = $00E2, size = $001A, type = rw, define = yes;
+    TAPEHDR: start = $0000, size = $000E, type = ro, file = %O;
+    RAM:     start = $0500, size = $9300, file = %O, define = yes;
 }
 SEGMENTS {
-    TAPEHDR: load = TAPEHDR, type = ro;
-    STARTUP: load = RAM, type = ro;
-    LOWCODE: load = RAM, type = ro, 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;
+    TAPEHDR:  load = TAPEHDR, type = ro;
+    STARTUP:  load = RAM,     type = ro;
+    LOWCODE:  load = RAM,     type = ro,               optional = yes;
+    INIT:     load = RAM,     type = ro, define = yes, optional = yes;
+    CODE:     load = RAM,     type = ro;
+    RODATA:   load = RAM,     type = ro;
+    DATA:     load = RAM,     type = rw;
+    BSS:      load = RAM,     type = bss, define = yes;
+    ZEROPAGE: load = ZP,      type = zp;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 MEMORY {
-    ZP: start = $70, size = $20, type = rw, define = yes;
-    RAM: start = $E00, size = $7200, file = %O;
+    ZP:  start = $0070, size = $0020, type = rw, define = yes;
+    RAM: start = $0E00, size = $7200, file = %O;
 }
 SEGMENTS {
-    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 = RAM, type = ro, define = yes;
+    LOWCODE:  load = RAM, type = ro,               optional = yes;
+    INIT:     load = RAM, type = ro, define = yes, optional = yes;
+    CODE:     load = RAM, type = ro;
+    RODATA:   load = RAM, type = ro;
+    DATA:     load = RAM, type = rw;
+    BSS:      load = RAM, type = bss, define = yes;
+    ZEROPAGE: load = ZP,  type = zp;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
-MEMORY {
-    ZP: start = $02, size = $1A, type = rw, define = yes;
-    RAM: start = $1bff, size = $a401, define = yes, file = %O;
+MEMORY {                                           
+    ZP:  start = $0002, size = $001A, type = rw, define = yes;
+    RAM: start = $1Bff, size = $A401, file = %O, define = yes;
 }
 SEGMENTS {
-    STARTUP: load = RAM, type = ro;
-    LOWCODE: load = RAM, type = ro, 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 = RAM, type = ro;
+    LOWCODE:  load = RAM, type = ro,               optional = yes;
+    INIT:     load = RAM, type = ro, define = yes, optional = yes;
+    CODE:     load = RAM, type = ro;
+    RODATA:   load = RAM, type = ro;
+    DATA:     load = RAM, type = rw;
+    BSS:      load = RAM, type = bss, define = yes;
+    ZEROPAGE: load = ZP,  type = zp;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 MEMORY {
-    ZP: start = $02, size = $1A, type = rw, define = yes;
-    RAM: start = $0fff, size = $7001, file = %O;
-}
+    ZP:  start = $0002, size = $001A, type = rw, define = yes;
+    RAM: start = $0FFF, size = $7001, file = %O;
+}                                                  
 SEGMENTS {
-    STARTUP: load = RAM, type = ro;
-    LOWCODE: load = RAM, type = ro, 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 = RAM, type = ro;
+    LOWCODE:  load = RAM, type = ro,               optional = yes;
+    INIT:     load = RAM, type = ro, define = yes, optional = yes;
+    CODE:     load = RAM, type = ro;
+    RODATA:   load = RAM, type = ro;
+    DATA:     load = RAM, type = rw;
+    BSS:      load = RAM, type = bss, define = yes;
+    ZEROPAGE: load = ZP,  type = zp;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 MEMORY {
-    ZP: start = $02, size = $1A, type = rw, define = yes;
-    RAM: start = $7FF, size = $c801, define = yes, file = %O;
+    ZP:  start = $0002, size = $001A, type = rw, define = yes;
+    RAM: start = $07FF, size = $C801, file = %O, define = yes;
 }
 SEGMENTS {
-    STARTUP: load = RAM, type = ro;
-    LOWCODE: load = RAM, type = ro, 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 = RAM, type = ro;
+    LOWCODE:  load = RAM, type = ro,               optional = yes;
+    INIT:     load = RAM, type = ro, define = yes, optional = yes;
+    CODE:     load = RAM, type = ro;
+    RODATA:   load = RAM, type = ro;
+    DATA:     load = RAM, type = rw;
+    BSS:      load = RAM, type = bss, define = yes;
+    ZEROPAGE: load = ZP,  type = zp;
 }
-FEATURES {
+FEATURES {                                         
     CONDES: segment = RODATA,
            type = constructor,
            label = __CONSTRUCTOR_TABLE__,
 
 MEMORY {
-    BASICHDR: start = $01, size = $50, type = rw, fill = yes, fillval = 0, file = %O;
-    ZP: start = $51, size = $A6, type = rw, define = yes, fill = yes, fillval = 0, file = %O;
-    STARTUP: start = $00F7, size = $109, fill = yes, fillval = 0, file = %O;
-    PAGE2:   start = $0200, size = $100, fill = yes, fillval = 0, file = %O;
-    PAGE3:   start = $0300, size = $100, fill = yes, fillval = 0, file = %O;
-    RAM:     start = $0400, size = $DC00, file = %O;
-    CHARRAM: start = $E000, size = $1000, define = yes, file = "";
-    VIDRAM:  start = $F000, size = $0400, define = yes, file = "";
+    BASICHDR: start = $0001, size = $0050, fill = yes, fillval = 0, type = rw, file = %O;
+    ZP:       start = $0051, size = $00A6, fill = yes, fillval = 0, type = rw, file = %O, define = yes;
+    STARTUP:  start = $00F7, size = $0109, fill = yes, fillval = 0, file = %O;
+    PAGE2:    start = $0200, size = $0100, fill = yes, fillval = 0, file = %O;
+    PAGE3:    start = $0300, size = $0100, fill = yes, fillval = 0, file = %O;
+    RAM:      start = $0400, size = $DC00, file = %O;
+    CHARRAM:  start = $E000, size = $1000, define = yes, file = "";
+    VIDRAM:   start = $F000, size = $0400, define = yes, file = "";
 }
 SEGMENTS {
     BASICHDR: load = BASICHDR, type = rw;
     STARTUP:  load = STARTUP,  type = rw;
     PAGE2:    load = PAGE2,    type = rw;
     PAGE3:    load = PAGE3,    type = rw;
-    LOWCODE:  load = RAM,      type = ro, optional = yes;
+    LOWCODE:  load = RAM,      type = ro,               optional = yes;
+    INIT:     load = RAM,      type = ro, define = yes, optional = yes;
     CODE:     load = RAM,      type = ro;
     RODATA:   load = RAM,      type = ro;
     DATA:     load = RAM,      type = rw;
     BSS:      load = RAM,      type = bss, define = yes;
     ZEROPAGE: load = ZP,       type = zp;
-    EXTZP:    load = ZP,       type = rw, define = yes;
+    EXTZP:    load = ZP,       type = rw,  define = yes;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 MEMORY {
-    BASICHDR: start = $01, size = $50, type = rw, fill = yes, fillval = 0, file = %O;
-    ZP: start = $51, size = $AD, type = rw, define = yes, fill = yes, fillval = 0, file = %O;
-    STARTUP: start = $00FE, size = $102, fill = yes, fillval = 0, file = %O;
-    PAGE2:   start = $0200, size = $100, fill = yes, fillval = 0, file = %O;
-    PAGE3:   start = $0300, size = $100, fill = yes, fillval = 0, file = %O;
-    RAM:     start = $0400, size = $FAAE, file = %O;
+    BASICHDR: start = $0001, size = $0050, type = rw, fill = yes, fillval = 0, file = %O;
+    ZP:       start = $0051, size = $00AD, type = rw, define = yes, fill = yes, fillval = 0, file = %O;
+    STARTUP:  start = $00FE, size = $0102, fill = yes, fillval = 0, file = %O;
+    PAGE2:    start = $0200, size = $0100, fill = yes, fillval = 0, file = %O;
+    PAGE3:    start = $0300, size = $0100, fill = yes, fillval = 0, file = %O;
+    RAM:      start = $0400, size = $FAAE, file = %O;
 }
 SEGMENTS {
     BASICHDR: load = BASICHDR, type = rw;
     STARTUP:  load = STARTUP,  type = rw;
     PAGE2:    load = PAGE2,    type = rw;
     PAGE3:    load = PAGE3,    type = rw;
-    LOWCODE:  load = RAM,      type = ro, optional = yes;
+    LOWCODE:  load = RAM,      type = ro,               optional = yes;
+    INIT:     load = RAM,      type = ro, define = yes, optional = yes;
     CODE:     load = RAM,      type = ro;
     RODATA:   load = RAM,      type = ro;
     DATA:     load = RAM,      type = rw;
     BSS:      load = RAM,      type = bss, define = yes;
     ZEROPAGE: load = ZP,       type = zp;
-    EXTZP:    load = ZP,       type = rw, define = yes;
+    EXTZP:    load = ZP,       type = rw,  define = yes; 
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 MEMORY {
-    ZP: start = $58, size = $28, type = rw, define = yes;
-    HEADER: start = $204, size = 508, file = %O;
-    RAM: start = $400, size = $5C00, define = yes, file = %O;
+    ZP:     start = $0058, size = $0028, type = rw, define = yes;
+    HEADER: start = $0204, size = $01FC, file = %O;
+    RAM:    start = $0400, size = $5C00, define = yes, file = %O;
 }
 SEGMENTS {
-    HEADER: load = HEADER, type = ro;
-    STARTUP: load = RAM, type = ro;
-    LOWCODE: load = RAM, type = ro, optional = yes;
-    CODE: load = RAM, type = ro;
-    RODATA: load = RAM, type = ro;
-    DATA: load = RAM, type = rw;
-    BSS: load = RAM, type = bss, define = yes;
-    ZEROPAGE: load = ZP, type = zp;
-    EXTZP: load = ZP, type = zp;
+    HEADER:   load = HEADER, type = ro;
+    STARTUP:  load = RAM,    type = ro;
+    LOWCODE:  load = RAM,    type = ro,               optional = yes;
+    INIT:     load = RAM,    type = ro, define = yes, optional = yes;
+    CODE:     load = RAM,    type = ro;
+    RODATA:   load = RAM,    type = ro;
+    DATA:     load = RAM,    type = rw;
+    BSS:      load = RAM,    type = bss, define = yes;
+    ZEROPAGE: load = ZP,     type = zp;
+    EXTZP:    load = ZP,     type = zp;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 # ld65 Linker-configuration for LUnix, Next Generation.
 MEMORY {
-    ZP:        start = $80, size = $40;        # userzp buffer
-    RAM: start = %S, size = $7600;
+    ZP:         start = $0080, size = $0040;        # userzp buffer
+    RAM: start = %S,  size = $7600;
 }
 SEGMENTS {
     ZEROPAGE: load = ZP,  type = zp,  define = yes; # Pseudo-registers
     STARTUP:  load = RAM, type = ro;   # First initiation code
     LOWCODE:  load = RAM, type = ro, optional = yes; # Legacy from other platforms
+    INIT:     load = RAM, type = ro, define = yes, optional = yes;
     CODE:     load = RAM, type = ro;   # Program
     RODATA:   load = RAM, type = ro;   # Literals, constants
     DATA:     load = RAM, type = rw;   # Initialized variables
 
 MEMORY {
-    ZP: start = $00, size = $100, type = rw, define = yes;
-    HEADER: start = $0000, size = $A, file = %O;
-    RAM: start = $0400, size = $BA3F, define = yes, file = %O;
+    ZP:     start = $0000, size = $0100, type = rw, define = yes;
+    HEADER: start = $0000, size = $000A, file = %O;
+    RAM:    start = $0400, size = $BA3F, define = yes, file = %O;
 }
 SEGMENTS {
-    EXEHDR: load = HEADER, type = ro;
-    STARTUP: load = RAM, type = ro;
-    LOWCODE: load = RAM, type = ro, optional = yes;
-    CODE: load = RAM, type = ro;
-    RODATA: load = RAM, type = ro;
-    DATA: load = RAM, type = rw;
-    BSS: load = RAM, type = bss, define = yes;
-    ZEROPAGE: load = ZP, type = zp;
-    EXTZP: load = ZP, type = zp, optional = yes;
-    APPZP: load = ZP, type = zp, optional = yes;
+    EXEHDR:   load = HEADER, type = ro;
+    STARTUP:  load = RAM,    type = ro;
+    LOWCODE:  load = RAM,    type = ro,               optional = yes;
+    INIT:     load = RAM,    type = ro, define = yes, optional = yes;
+    CODE:     load = RAM,    type = ro;
+    RODATA:   load = RAM,    type = ro;
+    DATA:     load = RAM,    type = rw;
+    BSS:      load = RAM,    type = bss, define = yes;
+    ZEROPAGE: load = ZP,     type = zp;
+    EXTZP:    load = ZP,     type = zp,               optional = yes;
+    APPZP:    load = ZP,     type = zp,               optional = yes;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 
 SEGMENTS {
     HEADER:   load = HEADER,          type = ro;
-    STARTUP:  load = ROM0,            type = ro, define = yes;
-    CODE:     load = ROM0,            type = ro, define = yes;
-    RODATA:   load = ROM0,            type = ro, define = yes;
-    DATA:     load = ROM0, run = RAM, type = rw,    define = yes;
+    STARTUP:  load = ROM0,            type = ro,  define = yes;
+    LOWCODE:  load = ROM0,            type = ro,                optional = yes;
+    INIT:     load = ROM0,            type = ro,  define = yes, optional = yes;
+    CODE:     load = ROM0,            type = ro,  define = yes;
+    RODATA:   load = ROM0,            type = ro,  define = yes;
+    DATA:     load = ROM0, run = RAM, type = rw,  define = yes;
     VECTORS:  load = ROMV,            type = rw;
     CHARS:    load = ROM2,            type = rw;
-    BSS:      load = RAM,             type = bss,   define = yes;
+    BSS:      load = RAM,             type = bss, define = yes;
     ZEROPAGE: load = ZP,              type = zp;
-
 }
 
 FEATURES {
 
 MEMORY {
-    ZP: start = $00, size = $1F, type = rw, define = yes;
-    RAM: start = %S, size = $10000, file = %O;
+    ZP:  start = $0000, size = $0001F, type = rw, define = yes;
+    RAM: start = %S,    size = $10000, file = %O;
 }
 SEGMENTS {
-    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 = RAM, type = ro,               optional = yes;
+    INIT:     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;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
     ZEROPAGE: start = $0000, size = $0100, file = %O;
 }
 SEGMENTS {
-    CODE: load = COMBINED, type = ro;
-    RODATA: load = COMBINED, type = ro;
-    DATA: load = COMBINED, type = rw, define = yes;
-    BSS: load = COMBINED, type = bss, define = yes;
+    LOWCODE:  load = COMBINED, type = ro,                optional = yes;
+    INIT:     load = COMBINED, type = ro,  define = yes, optional = yes;
+    CODE:     load = COMBINED, type = ro;
+    RODATA:   load = COMBINED, type = ro;
+    DATA:     load = COMBINED, type = rw,  define = yes;
+    BSS:      load = COMBINED, type = bss, define = yes;
     ZEROPAGE: load = ZEROPAGE, type = zp;
 }
 FEATURES {
 
 MEMORY {
-    ZP: start = $55, size = $1A, type = rw, define = yes;
+    ZP:  start = $0055, size = $001A, type = rw, define = yes;
     RAM: start = $03FF, size = $7BFF, file = %O;
 }
 SEGMENTS {
-    STARTUP: load = RAM, type = ro;
-    LOWCODE: load = RAM, type = ro, 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 = RAM, type = ro;
+    LOWCODE:  load = RAM, type = ro,               optional = yes;
+    INIT:     load = RAM, type = ro, define = yes, optional = yes;
+    CODE:     load = RAM, type = ro;
+    RODATA:   load = RAM, type = ro;
+    DATA:     load = RAM, type = rw;
+    BSS:      load = RAM, type = bss, define = yes;
+    ZEROPAGE: load = ZP,  type = zp;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 MEMORY {
-    ZP: start = $02, size = $1A, type = rw, define = yes;
-    RAM: start = $0fff, size = $ED01, file = %O;
+    ZP:  start = $0002, size = $001A, type = rw, define = yes;
+    RAM: start = $0FFF, size = $ED01, file = %O;
 }
 SEGMENTS {
-    STARTUP: load = RAM, type = ro;
-    LOWCODE: load = RAM, type = ro, 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 = RAM, type = ro;
+    LOWCODE:  load = RAM, type = ro,               optional = yes;
+    INIT:     load = RAM, type = ro, define = yes, optional = yes;
+    CODE:     load = RAM, type = ro;
+    RODATA:   load = RAM, type = ro;
+    DATA:     load = RAM, type = rw;
+    BSS:      load = RAM, type = bss, define = yes;
+    ZEROPAGE: load = ZP,  type = zp;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 # or reset from code >0xc000 and switch bank to the 3rd bank
 
 MEMORY {
-    ZP: start = $0000, size = $100;
-    CPUSTACK: start = $0100, size =$100;
-    RAM: start = $0200, size = $1e00, define = yes;
-    VRAM: start = $4000, size = $2000;
-    ROM: start = $8000, size = $8000, fill = yes, fillval = $ff, file = %O, define = yes;
+    ZP:       start = $0000, size = $0100;
+    CPUSTACK: start = $0100, size = $0100;
+    RAM:      start = $0200, size = $1E00, define = yes;
+    VRAM:     start = $4000, size = $2000;
+    ROM:      start = $8000, size = $8000, fill = yes, fillval = $ff, file = %O, define = yes;
 }
 
 SEGMENTS {
-    CODE: load = ROM, type = ro, define=yes;
-    RODATA: load = ROM, type = ro, define=yes;
-    DATA: load = ROM, run=RAM, type = rw, define = yes;
-    FFF0: load = ROM, type = ro, offset = $7FF0;
-    VECTOR: load = ROM, type = ro, offset = $7FFA;
-    BSS: load = RAM, type = bss, define = yes;
-    ZEROPAGE: load = ZP, type = zp, define = yes;
+    LOWCODE:  load = ROM,            type = ro,                optional = yes;
+    INIT:     load = ROM,            type = ro,  define = yes, optional = yes;
+    CODE:     load = ROM,            type = ro,  define = yes;
+    RODATA:   load = ROM,            type = ro,  define = yes;
+    DATA:     load = ROM, run = RAM, type = rw,  define = yes;
+    FFF0:     load = ROM,            type = ro,  offset = $7FF0;
+    VECTOR:   load = ROM,            type = ro,  offset = $7FFA;
+    BSS:      load = RAM,            type = bss, define = yes;
+    ZEROPAGE: load = ZP,             type = zp,  define = yes;
 }
 
 FEATURES {
 
 # ld65 --config supervision.cfg -o <prog>.bin <prog>.o
 
 MEMORY {
-    RAM: start = $0000, size = $2000;
-    VRAM: start = $4000, size = $2000;
-    BANKROM1: start = $8000, size = $4000, fill = yes, fillval=$ff, file=%O;
-    BANKROM2: start = $8000, size = $4000, fill = yes, fillval=$ff, file=%O;
-    BANKROM3: start = $8000, size = $4000, fill = yes, fillval=$ff, file=%O;
-    BANKROM4: start = $8000, size = $4000, fill = yes, fillval=$ff, file=%O;
-    BANKROM5: start = $8000, size = $4000, fill = yes, fillval=$ff, file=%O;
-    BANKROM6: start = $8000, size = $4000, fill = yes, fillval=$ff, file=%O;
-    BANKROM7: start = $8000, size = $4000, fill = yes, fillval=$ff, file=%O;
-    ROM: start = $c000, size = $4000, fill = yes, fillval = $ff, file=%O;
+    RAM:      start = $0000, size = $2000;
+    VRAM:     start = $4000, size = $2000;
+    BANKROM1: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
+    BANKROM2: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
+    BANKROM3: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
+    BANKROM4: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
+    BANKROM5: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
+    BANKROM6: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
+    BANKROM7: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
+    ROM:      start = $c000, size = $4000, fill = yes, fillval = $FF, file = %O;
 }
 
 SEGMENTS {
-    CODE: load = ROM, type = ro;
-    BANK1: load = BANKROM1, type = ro;
-    BANK2: load = BANKROM2, type = ro;
-    BANK3: load = BANKROM3, type = ro;
-    BANK4: load = BANKROM4, type = ro;
-    BANK5: load = BANKROM5, type = ro;
-    BANK6: load = BANKROM6, type = ro;
-    BANK7: load = BANKROM7, type = ro;
-    ZEROPAGE: load = RAM, type = bss, define = yes;
-    DATA: load = RAM, type = bss, offset= $200, define = yes;
-    BSS: load = RAM, type = bss, define = yes;
-    VECTOR: load = ROM, type = ro, offset = $3FFA;
+    LOWCODE:  load = ROM,      type = ro,                optional = yes;
+    INIT:     load = ROM,      type = ro,  define = yes, optional = yes;
+    CODE:     load = ROM,      type = ro;
+    BANK1:    load = BANKROM1, type = ro;
+    BANK2:    load = BANKROM2, type = ro;
+    BANK3:    load = BANKROM3, type = ro;
+    BANK4:    load = BANKROM4, type = ro;
+    BANK5:    load = BANKROM5, type = ro;
+    BANK6:    load = BANKROM6, type = ro;
+    BANK7:    load = BANKROM7, type = ro;
+    ZEROPAGE: load = RAM,      type = bss, define = yes;
+    DATA:     load = RAM,      type = bss, offset = $0200, define = yes;
+    BSS:      load = RAM,      type = bss, define = yes;
+    VECTOR:   load = ROM,      type = ro,  offset = $3FFA;
 }
 
 # ld65 config file
 # ld65 --config supervision16.cfg -o <prog>.bin <prog>.o
 MEMORY {
-    ZP: start = $0000, size = $100;
-    CPUSTACK: start = $0100, size =$100;
-    RAM: start = $0200, size = $1e00;
-    VRAM: start = $4000, size = $2000;
-    ROM: start = $c000, size = $4000, fill = yes, fillval = $ff, file=%O, define=yes;
+    ZP:       start = $0000, size = $0100;
+    CPUSTACK: start = $0100, size = $0100;
+    RAM:      start = $0200, size = $1E00;
+    VRAM:     start = $4000, size = $2000;
+    ROM:      start = $C000, size = $4000, fill = yes, fillval = $ff, file=%O, define=yes;
 }
 
 SEGMENTS {
-    CODE: load = ROM, type = ro, define=yes;
-    RODATA: load = ROM, type = ro, define=yes;
-    DATA: load = ROM, run=RAM, type = rw, define = yes;
-    FFF0: load = ROM, type =ro, offset = $3ff0;
-    VECTOR: load = ROM, type = ro, offset = $3FFA;
-    ZEROPAGE: load = ZP, type = zp, define = yes;
-    BSS: load = RAM, type = bss, define = yes;
+    LOWCODE:  load = ROM,            type = ro,                optional = yes;
+    INIT:     load = ROM,            type = ro,  define = yes, optional = yes;
+    CODE:     load = ROM,            type = ro,  define = yes;
+    RODATA:   load = ROM,            type = ro,  define = yes;
+    DATA:     load = ROM, run = RAM, type = rw,  define = yes;
+    FFF0:     load = ROM,            type = ro,  offset = $3FF0;
+    VECTOR:   load = ROM,            type = ro,  offset = $3FFA;
+    BSS:      load = RAM,            type = bss, define = yes;
+    ZEROPAGE: load = ZP,             type = zp,  define = yes;
 }
 FEATURES {
     CONDES: segment = RODATA,
 
 # ld65 --config supervision.cfg -o <prog>.bin <prog>.o
 
 MEMORY {
-    RAM: start = $0000, size = $2000;
-    VRAM: start = $4000, size = $2000;
-    BANKROM1: start = $8000, size = $4000, fill = yes, fillval=$ff, file=%O;
-    BANKROM2: start = $8000, size = $4000, fill = yes, fillval=$ff, file=%O;
-    BANKROM3: start = $8000, size = $4000, fill = yes, fillval=$ff, file=%O;
-    ROM: start = $c000, size = $4000, fill = yes, fillval = $ff, file=%O;
+    RAM:      start = $0000, size = $2000;
+    VRAM:     start = $4000, size = $2000;                       
+    BANKROM1: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
+    BANKROM2: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
+    BANKROM3: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;
+    ROM:      start = $C000, size = $4000, fill = yes, fillval = $FF, file = %O;
 }
 
 SEGMENTS {
-    CODE: load = ROM, type = ro;
-    RODATA: load = ROM, type = ro;
-    BANK1: load = BANKROM1, type = ro;
-    BANK2: load = BANKROM2, type = ro;
-    BANK3: load = BANKROM3, type = ro;
-    ZEROPAGE: load = RAM, type = bss, define = yes;
-    DATA: load = RAM, type = bss, offset= $200, define = yes;
-    BSS: load = RAM, type = bss, define = yes;
-    VECTOR: load = ROM, type = ro, offset = $3FFA;
+    LOWCODE:  load = ROM,      type = ro,                optional = yes;
+    INIT:     load = ROM,      type = ro,  define = yes, optional = yes;
+    CODE:     load = ROM,      type = ro;
+    RODATA:   load = ROM,      type = ro;
+    BANK1:    load = BANKROM1, type = ro;
+    BANK2:    load = BANKROM2, type = ro;
+    BANK3:    load = BANKROM3, type = ro;
+    ZEROPAGE: load = RAM,      type = bss, define = yes;
+    DATA:     load = RAM,      type = bss, offset = $0200, define = yes;
+    BSS:      load = RAM,      type = bss, define = yes;
+    VECTOR:   load = ROM,      type = ro,  offset = $3FFA;
 }
 
 MEMORY {
-    ZP: start = $02, size = $1A, type = rw, define = yes;
-    RAM: start = $FFF, size = $0E01, define = yes, file = %O;
+    ZP: start =  $0002, size = $001A, type = rw, define = yes;
+    RAM: start = $0FFF, size = $0E01, define = yes, file = %O;
 }
 SEGMENTS {
-    STARTUP: load = RAM , type = ro;
-    LOWCODE: load = RAM, type = ro, 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 = RAM, type = ro;
+    LOWCODE:  load = RAM, type = ro,               optional = yes;
+    INIT:     load = RAM, type = ro, define = yes, optional = yes;
+    CODE:     load = RAM, type = ro;
+    RODATA:   load = RAM, type = ro;
+    DATA:     load = RAM, type = rw;
+    BSS:      load = RAM, type = bss, define = yes;
+    ZEROPAGE: load = ZP,  type = zp;
 }
 FEATURES {
     CONDES: segment = RODATA,