__LOADSIZE__: type = weak, value = __BSS_RUN__ - __CODE_RUN__;
 }
 MEMORY {
+    ZP:                start = $0080, size = $001A,      define = yes;
     HEADER: file = %O, start = $0000, size = $0004;
     RAM:    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;
+    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;
 }
 
     __LOADADDR__: type = import;
 }
 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;
 }
     RODATA:   load = RAM,      type = ro,  optional = yes;
     DATA:     load = RAM,      type = rw,  optional = yes;
     BSS:      load = RAM,      type = bss, optional = yes;
+    ZEROPAGE: load = ZP,       type = zp,  optional = yes;
 }