]> git.sur5r.net Git - cc65/blobdiff - cfg/gamate.cfg
Fixed gcc compiler warning (#867)
[cc65] / cfg / gamate.cfg
index c6f2eed7d1d4ca0a6ffcc10aab078292a8d50e3f..74ae9f3e332ea06329b32e96e0e51a9875663c8c 100644 (file)
@@ -1,41 +1,51 @@
-# c version of 32kbyte config file
-# .data located in rom
-
-# ld65 config file
-# ld65 --config gamate.cfg -o <prog>.bin <prog>.o
+# linker config to produce simple Gamate cartridge (.bin)
 
 SYMBOLS {
-    __STARTUP__:    type = import;
-    __STACKSIZE__: type = weak, value = $0300; # 3 pages stack
+    __STARTUP__:   type = import;
+    __STACKSIZE__: type = weak, value = $0080; # 1 page stack
 }
 
 MEMORY {
-    ZP: start = $0000, size = $100;
-    CPUSTACK: start = $0100, size =$100;
-    RAM: start = $0200, size = $200, define = yes;
-#    ROM: start = $6000, size = $8000, fill = yes, fillval = $ff, file = %O, define = yes;
-#    STARTUP:   file = %O, define = yes, start = $6000, size = $29, fill = yes;
-#    ROM: start = $6000 + __STARTUP_SIZE__, size = $8000 - __STARTUP_SIZE__, fill = yes, fillval = $ff, file = %O, define = yes;
-# WARNING: fill value must be $00 else it will no more work
-    ROM: start = $6000, size = $8000, fill = yes, fillval = $00, file = %O, define = yes;
+    # 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 = $00E8 - $0012;
+    CPUSTACK:  start = $0100,        size = $0100;
+    RAM:       start = $0200,        size = $0200 - __STACKSIZE__, define = yes;
+
+    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;
+    # for images that have code >$6fff we must calculate the checksum!
+    ROM:      start = $6000 + $0029, size = $8000 - $0029, fill = yes, fillval = $00, file = %O, define = yes;
 }
 
 SEGMENTS {
-    ZEROPAGE: load = ZP, type = zp, define = yes;
-    STARTUP:   load = ROM,           type = ro, define=yes;
-    CODE: load = ROM, type = ro, define=yes;
-    RODATA: load = ROM, type = ro, define=yes;
-    DATA: load = ROM, run=RAM, type = rw, define = yes;
-    BSS: load = RAM, type = bss, 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;
+    STARTUP:  load = CARTHEADER,     type = ro,  define = yes;
+    ONCE:     load = ROM,            type = ro,                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;
+    BSS:      load = RAM,            type = bss, define = yes;
 }
 
 FEATURES {
-    CONDES: segment = RODATA,
-            type = constructor,
-            label = __CONSTRUCTOR_TABLE__,
-            count = __CONSTRUCTOR_COUNT__;
-    CONDES: segment = RODATA,
-            type = destructor,
-            label = __DESTRUCTOR_TABLE__,
-            count = __DESTRUCTOR_COUNT__;
+    CONDES: type    = constructor,
+            label   = __CONSTRUCTOR_TABLE__,
+            count   = __CONSTRUCTOR_COUNT__,
+            segment = ONCE;
+    CONDES: type    = destructor,
+            label   = __DESTRUCTOR_TABLE__,
+            count   = __DESTRUCTOR_COUNT__,
+            segment = RODATA;
+    CONDES: type    = interruptor,
+            label   = __INTERRUPTOR_TABLE__,
+            count   = __INTERRUPTOR_COUNT__,
+            segment = RODATA,
+            import  = __CALLIRQ__;
 }