]> git.sur5r.net Git - cc65/blobdiff - cfg/atari-cart.cfg
un-remove TABs in doc/using-make.sgml
[cc65] / cfg / atari-cart.cfg
index 04934309b818fe2102fa760436c6fe100f8c4d93..e903d4d74365bd0b096f1aa9f6a59c699edfc067 100644 (file)
@@ -2,6 +2,7 @@ FEATURES {
     STARTADDRESS: default = $2000;
 }
 SYMBOLS {
+    __CARTSIZE__:        type = weak,   value = $2000; # possible values: $2000 and $4000
     __CART_HEADER__:     type = import;
     __STACKSIZE__:       type = weak,   value = $0800; # 2k stack
     __STARTADDRESS__:    type = export, value = %S;
@@ -9,28 +10,30 @@ SYMBOLS {
     __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 = $2000;
-    ROM:        file = %O, define = yes, start = $A000, size = $1FFA, 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 {
-    STARTUP:   load = ROM,            type = ro,  define = yes, optional = yes;
-    LOWCODE:   load = ROM,            type = ro,  define = yes, optional = yes;
-    INIT:      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;
-    BSS:       load = RAM,            type = bss, define = yes; optional = yes;
-    CARTHDR:   load = CARTID,         type = ro;
-    ZEROPAGE:  load = ZP,             type = zp;
-    EXTZP:     load = ZP,             type = zp,                optional = yes;
+    ZEROPAGE: load = ZP,              type = zp,                optional = yes;
+    EXTZP:    load = ZP,              type = zp,                optional = yes;
+    STARTUP:  load = ROM,             type = ro,  define = yes, optional = yes;
+    LOWBSS:   load = MAIN,            type = bss,               optional = yes;  # not zero initialized
+    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,
             label   = __CONSTRUCTOR_TABLE__,
             count   = __CONSTRUCTOR_COUNT__,
-            segment = INIT;
+            segment = ONCE;
     CONDES: type    = destructor,
             label   = __DESTRUCTOR_TABLE__,
             count   = __DESTRUCTOR_COUNT__,