]> git.sur5r.net Git - cc65/blobdiff - cfg/pce.cfg
Fixed LinuxDoc Tools issues in some verbatim blocks in the Atari document.
[cc65] / cfg / pce.cfg
index 9128eb727fa793544b4fe8fe1f2a9cfef00fe832..eae9c1316d896aaae60f6b02987fb29fafc358fc 100644 (file)
@@ -1,39 +1,34 @@
-# linker config to produce simple NEC PC-Engine cartridge (.pce)
-
+# Linker config. to produce a NEC PC-Engine 8K, 16K, or 32K image (.bin)
 SYMBOLS {
-        __STACKSIZE__: type = weak, value = $0300; # 3 pages stack
+    __CARTSIZE__:  type = weak, value = $2000; # $2000, $4000, or $8000
+    __STACKSIZE__: type = weak, value = $0300; # 3 pages stack
 }
-
 MEMORY {
-        # FIXME: is this correct? the first 3? bytes cant be used?
-        ZP: start = $03, size = $fd, type = rw, define = yes;
-
-        # reset-bank and hardware vectors
-        ROM0: start = $e000, size = $1ff6, file = %O ,fill = yes, define = yes;
-        ROMV: start = $fff6, size = $a, file = %O,fill = yes;
-
-        # first RAM page (also contains stack and zeropage)
-        RAM: start = $2200, size = $1e00, define = yes;
+    ZP:   file = "", start =  $0000, define = yes,  size = $0100;
+    # RAM bank
+    MAIN: file = "", start =  $2200, define = yes,  size = $1E00 - __STACKSIZE__;
+    # ROM banks, before swapping, and after mapping
+    ROM:  file = %O, start = $10000 - __CARTSIZE__, size = __CARTSIZE__, fill = yes, fillval = $FF;
 }
-
 SEGMENTS {
-        STARTUP: load = ROM0, type = ro, define = 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;
-        BSS:     load = RAM, type = bss, define = yes;
-        VECTORS: load = ROMV, type = rw, define = yes;
-        ZEROPAGE: load = ZP, type = zp, define = yes;
-        EXTZP: load = ZP, type = zp, define = yes, optional = yes;
-        APPZP: load = ZP, type = zp, define = yes, optional = yes;
+    ZEROPAGE: load = ZP,              type = zp;
+    EXTZP:    load = ZP,              type = zp,  optional = yes;
+    APPZP:    load = ZP,              type = zp,  optional = yes;
+    DATA:     load = ROM, run = MAIN, type = rw,                  define = yes;
+    INIT:     load = MAIN,            type = bss, optional = yes;
+    BSS:      load = MAIN,            type = bss,                 define = yes;
+    RODATA:   load = ROM,             type = ro;
+    CODE:     load = ROM,             type = ro;
+    LOWCODE:  load = ROM,             type = ro,  optional = yes;
+    ONCE:     load = ROM,             type = ro,  optional = yes;
+    STARTUP:  load = ROM,             type = ro,  start = $FFF6 - $0066;
+    VECTORS:  load = ROM,             type = ro,  start = $FFF6;
 }
-
 FEATURES {
     CONDES: type    = constructor,
             label   = __CONSTRUCTOR_TABLE__,
             count   = __CONSTRUCTOR_COUNT__,
-            segment = INIT;
+            segment = ONCE;
     CONDES: type    = destructor,
             label   = __DESTRUCTOR_TABLE__,
             count   = __DESTRUCTOR_COUNT__,