From: Oliver Schmidt
Date: Sun, 13 Mar 2016 21:18:51 +0000 (+0100)
Subject: Fixed INIT properties.
X-Git-Tag: V2.16~166
X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=c768de156ad67e2df769fc7c36ee37b989f15ddf;p=cc65
Fixed INIT properties.
The main chunk load header references __BSS_LOAD__ so BSS must be the first bss type segment. Subsequent changes will move ONCE to share its address with the BSS. Then it'll be necessary to load INIT from disk. Therefore we do it right now.
---
diff --git a/cfg/atari-overlay.cfg b/cfg/atari-overlay.cfg
index 1dec49b7d..87e62d764 100644
--- a/cfg/atari-overlay.cfg
+++ b/cfg/atari-overlay.cfg
@@ -11,31 +11,31 @@ SYMBOLS {
__RESERVED_MEMORY__: type = weak, value = $0000;
}
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
# file header, just $FFFF
- HEADER: file = %O, start = $0000, size = $0002;
+ HEADER: file = %O, start = $0000, size = $0002;
# "system check" load chunk
- SYSCHKHDR: file = %O, start = $0000, size = $0004;
- SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
- SYSCHKTRL: file = %O, start = $0000, size = $0006;
+ SYSCHKHDR: file = %O, start = $0000, size = $0004;
+ SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
+ SYSCHKTRL: file = %O, start = $0000, size = $0006;
# "main program" load chunk
- MAINHDR: file = %O, start = $0000, size = $0004;
- MAIN: file = %O, define = yes, start = %S + __OVERLAYSIZE__,
- size = $BC20 - __OVERLAYSIZE__ - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
- TRAILER: file = %O, start = $0000, size = $0006;
+ MAINHDR: file = %O, start = $0000, size = $0004;
+ MAIN: file = %O, define = yes, start = %S + __OVERLAYSIZE__, size = $BC20 - __OVERLAYSIZE__ - __STACKSIZE__ - __RESERVED_MEMORY__ - %S;
+ TRAILER: file = %O, start = $0000, size = $0006;
- OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
- OVL2: file = "%O.2", start = %S, size = __OVERLAYSIZE__;
- OVL3: file = "%O.3", start = %S, size = __OVERLAYSIZE__;
- OVL4: file = "%O.4", start = %S, size = __OVERLAYSIZE__;
- OVL5: file = "%O.5", start = %S, size = __OVERLAYSIZE__;
- OVL6: file = "%O.6", start = %S, size = __OVERLAYSIZE__;
- OVL7: file = "%O.7", start = %S, size = __OVERLAYSIZE__;
- OVL8: file = "%O.8", start = %S, size = __OVERLAYSIZE__;
- OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
+# overlays
+ OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
+ OVL2: file = "%O.2", start = %S, size = __OVERLAYSIZE__;
+ OVL3: file = "%O.3", start = %S, size = __OVERLAYSIZE__;
+ OVL4: file = "%O.4", start = %S, size = __OVERLAYSIZE__;
+ OVL5: file = "%O.5", start = %S, size = __OVERLAYSIZE__;
+ OVL6: file = "%O.6", start = %S, size = __OVERLAYSIZE__;
+ OVL7: file = "%O.7", start = %S, size = __OVERLAYSIZE__;
+ OVL8: file = "%O.8", start = %S, size = __OVERLAYSIZE__;
+ OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
@@ -51,7 +51,7 @@ SEGMENTS {
CODE: load = MAIN, type = ro, define = yes;
RODATA: load = MAIN, type = ro;
DATA: load = MAIN, type = rw;
- INIT: load = MAIN, type = bss, optional = yes;
+ INIT: load = MAIN, type = rw, optional = yes;
BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes;
diff --git a/cfg/atari.cfg b/cfg/atari.cfg
index 959a07e4c..4680a89ed 100644
--- a/cfg/atari.cfg
+++ b/cfg/atari.cfg
@@ -39,7 +39,7 @@ SEGMENTS {
CODE: load = MAIN, type = ro, define = yes;
RODATA: load = MAIN, type = ro;
DATA: load = MAIN, type = rw;
- INIT: load = MAIN, type = bss, optional = yes;
+ INIT: load = MAIN, type = rw, optional = yes;
BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
}
diff --git a/cfg/atarixl-largehimem.cfg b/cfg/atarixl-largehimem.cfg
index 94405fce2..56d2af15b 100644
--- a/cfg/atarixl-largehimem.cfg
+++ b/cfg/atarixl-largehimem.cfg
@@ -6,7 +6,6 @@
FEATURES {
STARTADDRESS: default = $2400;
}
-
SYMBOLS {
__EXEHDR__: type = import;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
@@ -14,41 +13,35 @@ SYMBOLS {
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__STARTADDRESS__: type = export, value = %S;
}
-
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
# just $FFFF
- HEADER: file = %O, start = $0000, size = $0002;
+ HEADER: file = %O, start = $0000, size = $0002;
# "system check" load chunk
- SYSCHKHDR: file = %O, start = $0000, size = $0004;
- SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
- SYSCHKTRL: file = %O, start = $0000, size = $0006;
+ SYSCHKHDR: file = %O, start = $0000, size = $0004;
+ SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
+ SYSCHKTRL: file = %O, start = $0000, size = $0006;
# "shadow RAM preparation" load chunk
- SRPREPHDR: file = %O, start = $0000, size = $0004;
- SRPREPCHNK: file = %O, define = yes, start = %S, size = $7C20 - %S - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
- SRPREPTRL: file = %O, start = $0000, size = $0006;
+ SRPREPHDR: file = %O, start = $0000, size = $0004;
+ SRPREPCHNK: file = %O, define = yes, start = %S, size = $7C20 - %S - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
+ SRPREPTRL: file = %O, start = $0000, size = $0006;
# "main program" load chunk
- MAINHDR: file = %O, start = $0000, size = $0004;
- MAIN: file = %O, define = yes, start = %S +
- __LOWBSS_SIZE__, size = $D000 -
- __STACKSIZE__ -
- %S -
- __LOWBSS_SIZE__;
+ MAINHDR: file = %O, start = $0000, size = $0004;
+ MAIN: file = %O, define = yes, start = %S + __LOWBSS_SIZE__, size = $D000 - __STACKSIZE__ - %S - __LOWBSS_SIZE__;
# defines entry point into program
- TRAILER: file = %O, start = $0000, size = $0006;
+ TRAILER: file = %O, start = $0000, size = $0006;
# address of relocated character generator
- CHARGEN: file = "", define = yes, start = $D800, size = $0400;
+ CHARGEN: file = "", define = yes, start = $D800, size = $0400;
# memory beneath the ROM
- HIDDEN_RAM: file = "", define = yes, start = $DC00, size = $FFFA - $DC00;
+ HIDDEN_RAM: file = "", define = yes, start = $DC00, size = $FFFA - $DC00;
}
-
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = zp, optional = yes;
@@ -73,7 +66,7 @@ SEGMENTS {
CODE: load = MAIN, type = ro, define = yes;
RODATA: load = MAIN, type = ro;
DATA: load = MAIN, type = rw;
- INIT: load = MAIN, type = bss, optional = yes;
+ INIT: load = MAIN, type = rw, optional = yes;
BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
}
diff --git a/cfg/atarixl-overlay.cfg b/cfg/atarixl-overlay.cfg
index 89240170b..923436497 100644
--- a/cfg/atarixl-overlay.cfg
+++ b/cfg/atarixl-overlay.cfg
@@ -1,7 +1,6 @@
FEATURES {
STARTADDRESS: default = $2400;
}
-
SYMBOLS {
__EXEHDR__: type = import;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
@@ -10,57 +9,50 @@ SYMBOLS {
__OVERLAYSIZE__: type = weak, value = $1000; # 4k overlay
__STARTADDRESS__: type = export, value = %S;
}
-
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
# just $FFFF
- HEADER: file = %O, start = $0000, size = $0002;
+ HEADER: file = %O, start = $0000, size = $0002;
# "system check" load chunk
- SYSCHKHDR: file = %O, start = $0000, size = $0004;
- SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
- SYSCHKTRL: file = %O, start = $0000, size = $0006;
+ SYSCHKHDR: file = %O, start = $0000, size = $0004;
+ SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
+ SYSCHKTRL: file = %O, start = $0000, size = $0006;
# "shadow RAM preparation" load chunk
- SRPREPHDR: file = %O, start = $0000, size = $0004;
- SRPREPCHNK: file = %O, define = yes, start = %S + __OVERLAYSIZE__, size = $7C20 - %S - __OVERLAYSIZE__ - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
- SRPREPTRL: file = %O, start = $0000, size = $0006;
+ SRPREPHDR: file = %O, start = $0000, size = $0004;
+ SRPREPCHNK: file = %O, define = yes, start = %S + __OVERLAYSIZE__, size = $7C20 - %S - __OVERLAYSIZE__ - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
+ SRPREPTRL: file = %O, start = $0000, size = $0006;
# "main program" load chunk
- MAINHDR: file = %O, start = $0000, size = $0004;
- MAIN: file = %O, define = yes, start = %S +
- __OVERLAYSIZE__ +
- __LOWBSS_SIZE__, size = $D000 -
- __STACKSIZE__ -
- %S -
- __OVERLAYSIZE__ -
- __LOWBSS_SIZE__;
+ MAINHDR: file = %O, start = $0000, size = $0004;
+ MAIN: file = %O, define = yes, start = %S + __OVERLAYSIZE__ +
+ __LOWBSS_SIZE__, size = $D000 - __STACKSIZE__ - %S - __OVERLAYSIZE__ - __LOWBSS_SIZE__;
# defines entry point into program
- TRAILER: file = %O, start = $0000, size = $0006;
+ TRAILER: file = %O, start = $0000, size = $0006;
# memory beneath the ROM preceeding the character generator
- HIDDEN_RAM2: file = "", define = yes, start = $D800, size = $0800;
+ HIDDEN_RAM2: file = "", define = yes, start = $D800, size = $0800;
# address of relocated character generator (same addess as ROM version)
- CHARGEN: file = "", define = yes, start = $E000, size = $0400;
+ CHARGEN: file = "", define = yes, start = $E000, size = $0400;
# memory beneath the ROM
- HIDDEN_RAM: file = "", define = yes, start = $E400, size = $FFFA - $E400;
+ HIDDEN_RAM: file = "", define = yes, start = $E400, size = $FFFA - $E400;
# overlays
- OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
- OVL2: file = "%O.2", start = %S, size = __OVERLAYSIZE__;
- OVL3: file = "%O.3", start = %S, size = __OVERLAYSIZE__;
- OVL4: file = "%O.4", start = %S, size = __OVERLAYSIZE__;
- OVL5: file = "%O.5", start = %S, size = __OVERLAYSIZE__;
- OVL6: file = "%O.6", start = %S, size = __OVERLAYSIZE__;
- OVL7: file = "%O.7", start = %S, size = __OVERLAYSIZE__;
- OVL8: file = "%O.8", start = %S, size = __OVERLAYSIZE__;
- OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
+ OVL1: file = "%O.1", start = %S, size = __OVERLAYSIZE__;
+ OVL2: file = "%O.2", start = %S, size = __OVERLAYSIZE__;
+ OVL3: file = "%O.3", start = %S, size = __OVERLAYSIZE__;
+ OVL4: file = "%O.4", start = %S, size = __OVERLAYSIZE__;
+ OVL5: file = "%O.5", start = %S, size = __OVERLAYSIZE__;
+ OVL6: file = "%O.6", start = %S, size = __OVERLAYSIZE__;
+ OVL7: file = "%O.7", start = %S, size = __OVERLAYSIZE__;
+ OVL8: file = "%O.8", start = %S, size = __OVERLAYSIZE__;
+ OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__;
}
-
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = zp, optional = yes;
@@ -85,7 +77,7 @@ SEGMENTS {
CODE: load = MAIN, type = ro, define = yes;
RODATA: load = MAIN, type = ro;
DATA: load = MAIN, type = rw;
- INIT: load = MAIN, type = bss, optional = yes;
+ INIT: load = MAIN, type = rw, optional = yes;
BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
diff --git a/cfg/atarixl.cfg b/cfg/atarixl.cfg
index 9573fc78c..197daace6 100644
--- a/cfg/atarixl.cfg
+++ b/cfg/atarixl.cfg
@@ -1,7 +1,6 @@
FEATURES {
STARTADDRESS: default = $2400;
}
-
SYMBOLS {
__EXEHDR__: type = import;
__SYSTEM_CHECK__: type = import; # force inclusion of "system check" load chunk
@@ -9,44 +8,38 @@ SYMBOLS {
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__STARTADDRESS__: type = export, value = %S;
}
-
MEMORY {
- ZP: file = "", define = yes, start = $0082, size = $007E;
+ ZP: file = "", define = yes, start = $0082, size = $007E;
# just $FFFF
- HEADER: file = %O, start = $0000, size = $0002;
+ HEADER: file = %O, start = $0000, size = $0002;
# "system check" load chunk
- SYSCHKHDR: file = %O, start = $0000, size = $0004;
- SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
- SYSCHKTRL: file = %O, start = $0000, size = $0006;
+ SYSCHKHDR: file = %O, start = $0000, size = $0004;
+ SYSCHKCHNK: file = %O, start = $2E00, size = $0300;
+ SYSCHKTRL: file = %O, start = $0000, size = $0006;
# "shadow RAM preparation" load chunk
- SRPREPHDR: file = %O, start = $0000, size = $0004;
- SRPREPCHNK: file = %O, define = yes, start = %S, size = $7C20 - %S - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
- SRPREPTRL: file = %O, start = $0000, size = $0006;
+ SRPREPHDR: file = %O, start = $0000, size = $0004;
+ SRPREPCHNK: file = %O, define = yes, start = %S, size = $7C20 - %S - $07FF; # $07FF: space for temp. chargen buffer, 1K aligned
+ SRPREPTRL: file = %O, start = $0000, size = $0006;
# "main program" load chunk
- MAINHDR: file = %O, start = $0000, size = $0004;
- MAIN: file = %O, define = yes, start = %S +
- __LOWBSS_SIZE__, size = $D000 -
- __STACKSIZE__ -
- %S -
- __LOWBSS_SIZE__;
+ MAINHDR: file = %O, start = $0000, size = $0004;
+ MAIN: file = %O, define = yes, start = %S + __LOWBSS_SIZE__, size = $D000 - __STACKSIZE__ - %S - __LOWBSS_SIZE__;
# defines entry point into program
- TRAILER: file = %O, start = $0000, size = $0006;
+ TRAILER: file = %O, start = $0000, size = $0006;
# memory beneath the ROM preceeding the character generator
- HIDDEN_RAM2: file = "", define = yes, start = $D800, size = $0800;
+ HIDDEN_RAM2: file = "", define = yes, start = $D800, size = $0800;
# address of relocated character generator (same addess as ROM version)
- CHARGEN: file = "", define = yes, start = $E000, size = $0400;
+ CHARGEN: file = "", define = yes, start = $E000, size = $0400;
# memory beneath the ROM
- HIDDEN_RAM: file = "", define = yes, start = $E400, size = $FFFA - $E400;
+ HIDDEN_RAM: file = "", define = yes, start = $E400, size = $FFFA - $E400;
}
-
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
EXTZP: load = ZP, type = zp, optional = yes;
@@ -71,7 +64,7 @@ SEGMENTS {
CODE: load = MAIN, type = ro, define = yes;
RODATA: load = MAIN, type = ro;
DATA: load = MAIN, type = rw;
- INIT: load = MAIN, type = bss, optional = yes;
+ INIT: load = MAIN, type = rw, optional = yes;
BSS: load = MAIN, type = bss, define = yes;
AUTOSTRT: load = TRAILER, type = ro;
}