From 419eb700b5cd730ecf425ed8a597e9cf41ad7208 Mon Sep 17 00:00:00 2001 From: Oliver Schmidt Date: Sun, 6 Mar 2016 21:26:22 +0100 Subject: [PATCH] Renamed INITBSS to INIT and INIT to ONCE. The way we want to use the INITBSS segment - and especially the fact that it won't have the type bss on all ROM based targets - means that the name INITBSS is misleading. After all INIT is the best name from my perspective as it serves several purposes and therefore needs a rather generic name. Unfortunately this means that the current INIT segment needs to be renamed too. Looking for a short (ideally 4 letter) name I came up with ONCE as it contains all code (and data) accessed only once during initialization. --- cfg/apple2-overlay.cfg | 8 ++-- cfg/apple2-system.cfg | 8 ++-- cfg/apple2.cfg | 8 ++-- cfg/apple2enh-overlay.cfg | 8 ++-- cfg/apple2enh-system.cfg | 8 ++-- cfg/apple2enh.cfg | 8 ++-- cfg/atari-cart.cfg | 24 +++++------ cfg/atari-cassette.cfg | 24 +++++------ cfg/atari-overlay.cfg | 10 ++--- cfg/atari.cfg | 10 ++--- cfg/atari5200.cfg | 8 ++-- cfg/atarixl-largehimem.cfg | 11 ++--- cfg/atarixl-overlay.cfg | 11 ++--- cfg/atarixl.cfg | 11 ++--- cfg/atmos.cfg | 4 +- cfg/bbc.cfg | 6 +-- cfg/c128-overlay.cfg | 8 ++-- cfg/c128.cfg | 8 ++-- cfg/c16.cfg | 8 ++-- cfg/c64-overlay.cfg | 6 +-- cfg/c64.cfg | 6 +-- cfg/cbm510.cfg | 6 +-- cfg/cbm610.cfg | 6 +-- cfg/gamate.cfg | 64 ++++++++++++++++------------ cfg/geos-apple.cfg | 4 +- cfg/geos-cbm.cfg | 4 +- cfg/lunix.cfg | 4 +- cfg/lynx-bll.cfg | 10 ++--- cfg/lynx-coll.cfg | 10 ++--- cfg/lynx-uploader.cfg | 10 ++--- cfg/lynx.cfg | 10 ++--- cfg/module.cfg | 2 +- cfg/nes.cfg | 6 +-- cfg/none.cfg | 6 +-- cfg/osic1p-asm.cfg | 4 +- cfg/osic1p.cfg | 8 ++-- cfg/pce.cfg | 38 ++++++++--------- cfg/pet.cfg | 8 ++-- cfg/plus4.cfg | 8 ++-- cfg/sim6502.cfg | 26 +++++------ cfg/sim65c02.cfg | 26 +++++------ cfg/supervision-128k.cfg | 2 +- cfg/supervision-16k.cfg | 6 +-- cfg/supervision-64k.cfg | 2 +- cfg/supervision.cfg | 6 +-- cfg/vic20-32k.cfg | 6 +-- cfg/vic20.cfg | 8 ++-- doc/atari.sgml | 14 +++--- doc/customizing.sgml | 20 ++++----- doc/ld65.sgml | 6 +-- libsrc/apple2/cputc.s | 2 +- libsrc/apple2/crt0.s | 30 ++++++------- libsrc/apple2/dosdetect.s | 2 +- libsrc/apple2/extra/iobuf-0800.s | 2 +- libsrc/apple2/get_ostype.s | 2 +- libsrc/apple2/irq.s | 2 +- libsrc/apple2/mainargs.s | 4 +- libsrc/apple2/open.s | 2 +- libsrc/apple2/read.s | 2 +- libsrc/apple2/reboot.s | 2 +- libsrc/atari/casinit.s | 2 +- libsrc/atari/dosdetect.s | 2 +- libsrc/atari/getargs.s | 2 +- libsrc/atari/irq.s | 2 +- libsrc/atari/mcbpm.s | 2 +- libsrc/atari/shadow_ram_handlers.s | 2 +- libsrc/atari5200/conioscreen.s | 2 +- libsrc/atari5200/irq.s | 2 +- libsrc/atmos/capslock.s | 2 +- libsrc/atmos/cgetc.s | 4 +- libsrc/atmos/irq.s | 2 +- libsrc/atmos/mainargs.s | 4 +- libsrc/atmos/read.s | 2 +- libsrc/c128/cgetc.s | 2 +- libsrc/c128/crt0.s | 2 +- libsrc/c128/irq.s | 2 +- libsrc/c128/mainargs.s | 6 +-- libsrc/c128/mcbdefault.s | 2 +- libsrc/c128/systime.s | 2 +- libsrc/c16/cgetc.s | 2 +- libsrc/c16/crt0.s | 2 +- libsrc/c16/irq.s | 2 +- libsrc/c16/mainargs.s | 6 +-- libsrc/c64/crt0.s | 6 +-- libsrc/c64/irq.s | 2 +- libsrc/c64/mainargs.s | 6 +-- libsrc/c64/mcbdefault.s | 2 +- libsrc/c64/soft80_charset.s | 2 +- libsrc/c64/soft80_conio.s | 4 +- libsrc/c64/soft80mono_conio.s | 4 +- libsrc/c64/systime.s | 2 +- libsrc/cbm/filevars.s | 4 +- libsrc/cbm/mcbpointercolor.s | 2 +- libsrc/cbm/mcbpointershape.s | 2 +- libsrc/cbm/read.s | 2 +- libsrc/cbm/write.s | 2 +- libsrc/cbm510/mainargs.s | 6 +-- libsrc/cbm510/mcbdefault.s | 2 +- libsrc/cbm610/mainargs.s | 6 +-- libsrc/common/_cwd.s | 2 +- libsrc/common/_heap.s | 2 +- libsrc/gamate/clock.s | 2 +- libsrc/gamate/conio.s | 2 +- libsrc/gamate/irq.s | 2 +- libsrc/gamate/nmi.s | 2 +- libsrc/geos-common/conio/_scrsize.s | 2 +- libsrc/geos-common/system/mainargs.s | 2 +- libsrc/lynx/clock.s | 2 +- libsrc/lynx/defdir.s | 13 +++--- libsrc/lynx/irq.s | 2 +- libsrc/lynx/mainargs.s | 4 +- libsrc/nes/cputc.s | 4 +- libsrc/nes/irq.s | 2 +- libsrc/nes/mainargs.s | 4 +- libsrc/osic1p/cgetc.s | 2 +- libsrc/pce/clock.s | 2 +- libsrc/pce/conio.s | 2 +- libsrc/pce/irq.s | 2 +- libsrc/pce/psg.s | 2 +- libsrc/pce/vce.s | 2 +- libsrc/pet/crt0.s | 2 +- libsrc/pet/irq.s | 2 +- libsrc/pet/mainargs.s | 6 +-- libsrc/plus4/cgetc.s | 2 +- libsrc/plus4/crt0.s | 2 +- libsrc/plus4/mainargs.s | 6 +-- libsrc/runtime/condes.s | 2 +- libsrc/runtime/stkchk.s | 4 +- libsrc/sim6502/mainargs.s | 2 +- libsrc/vic20/crt0.s | 2 +- libsrc/vic20/irq.s | 2 +- libsrc/vic20/mainargs.s | 6 +-- 132 files changed, 402 insertions(+), 390 deletions(-) diff --git a/cfg/apple2-overlay.cfg b/cfg/apple2-overlay.cfg index 244e4582f..ef9103b49 100644 --- a/cfg/apple2-overlay.cfg +++ b/cfg/apple2-overlay.cfg @@ -18,7 +18,7 @@ SYMBOLS { __STACKSIZE__: type = weak, value = $0800; # 2k stack __OVERLAYSIZE__: type = weak, value = $1000; # 4k overlay __LOADADDR__: type = weak, value = __STARTUP_RUN__; - __LOADSIZE__: type = weak, value = __INITBSS_RUN__ - __STARTUP_RUN__ + + __LOADSIZE__: type = weak, value = __INIT_RUN__ - __STARTUP_RUN__ + __MOVE_LAST__ - __MOVE_START__; } MEMORY { @@ -45,9 +45,9 @@ SEGMENTS { CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, define = yes; + INIT: load = RAM, type = bss, define = yes; BSS: load = RAM, type = bss, define = yes; - INIT: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; + ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; LC: load = MOVE, run = LC, type = ro, optional = yes; OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes; OVERLAY2: load = OVL2, type = ro, define = yes, optional = yes; @@ -63,7 +63,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/apple2-system.cfg b/cfg/apple2-system.cfg index f07208e45..52cad960f 100644 --- a/cfg/apple2-system.cfg +++ b/cfg/apple2-system.cfg @@ -5,7 +5,7 @@ SYMBOLS { __LCSIZE__: type = weak, value = $0C00; # Rest of bank two __STACKSIZE__: type = weak, value = $0800; # 2k stack __LOADADDR__: type = weak, value = __STARTUP_RUN__; - __LOADSIZE__: type = weak, value = __INITBSS_RUN__ - __STARTUP_RUN__ + + __LOADSIZE__: type = weak, value = __INIT_RUN__ - __STARTUP_RUN__ + __MOVE_LAST__ - __MOVE_START__; } MEMORY { @@ -21,16 +21,16 @@ SEGMENTS { CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, define = yes; + INIT: load = RAM, type = bss, define = yes; BSS: load = RAM, type = bss, define = yes; - INIT: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; + ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; LC: load = MOVE, run = LC, type = ro, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/apple2.cfg b/cfg/apple2.cfg index 27eb706c4..8e63090f5 100644 --- a/cfg/apple2.cfg +++ b/cfg/apple2.cfg @@ -10,7 +10,7 @@ SYMBOLS { __LCSIZE__: type = weak, value = $0C00; # Rest of bank two __STACKSIZE__: type = weak, value = $0800; # 2k stack __LOADADDR__: type = weak, value = __STARTUP_RUN__; - __LOADSIZE__: type = weak, value = __INITBSS_RUN__ - __STARTUP_RUN__ + + __LOADSIZE__: type = weak, value = __INIT_RUN__ - __STARTUP_RUN__ + __MOVE_LAST__ - __MOVE_START__; } MEMORY { @@ -28,16 +28,16 @@ SEGMENTS { CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, define = yes; + INIT: load = RAM, type = bss, define = yes; BSS: load = RAM, type = bss, define = yes; - INIT: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; + ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; LC: load = MOVE, run = LC, type = ro, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/apple2enh-overlay.cfg b/cfg/apple2enh-overlay.cfg index 244e4582f..ef9103b49 100644 --- a/cfg/apple2enh-overlay.cfg +++ b/cfg/apple2enh-overlay.cfg @@ -18,7 +18,7 @@ SYMBOLS { __STACKSIZE__: type = weak, value = $0800; # 2k stack __OVERLAYSIZE__: type = weak, value = $1000; # 4k overlay __LOADADDR__: type = weak, value = __STARTUP_RUN__; - __LOADSIZE__: type = weak, value = __INITBSS_RUN__ - __STARTUP_RUN__ + + __LOADSIZE__: type = weak, value = __INIT_RUN__ - __STARTUP_RUN__ + __MOVE_LAST__ - __MOVE_START__; } MEMORY { @@ -45,9 +45,9 @@ SEGMENTS { CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, define = yes; + INIT: load = RAM, type = bss, define = yes; BSS: load = RAM, type = bss, define = yes; - INIT: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; + ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; LC: load = MOVE, run = LC, type = ro, optional = yes; OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes; OVERLAY2: load = OVL2, type = ro, define = yes, optional = yes; @@ -63,7 +63,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/apple2enh-system.cfg b/cfg/apple2enh-system.cfg index f07208e45..52cad960f 100644 --- a/cfg/apple2enh-system.cfg +++ b/cfg/apple2enh-system.cfg @@ -5,7 +5,7 @@ SYMBOLS { __LCSIZE__: type = weak, value = $0C00; # Rest of bank two __STACKSIZE__: type = weak, value = $0800; # 2k stack __LOADADDR__: type = weak, value = __STARTUP_RUN__; - __LOADSIZE__: type = weak, value = __INITBSS_RUN__ - __STARTUP_RUN__ + + __LOADSIZE__: type = weak, value = __INIT_RUN__ - __STARTUP_RUN__ + __MOVE_LAST__ - __MOVE_START__; } MEMORY { @@ -21,16 +21,16 @@ SEGMENTS { CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, define = yes; + INIT: load = RAM, type = bss, define = yes; BSS: load = RAM, type = bss, define = yes; - INIT: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; + ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; LC: load = MOVE, run = LC, type = ro, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/apple2enh.cfg b/cfg/apple2enh.cfg index 27eb706c4..8e63090f5 100644 --- a/cfg/apple2enh.cfg +++ b/cfg/apple2enh.cfg @@ -10,7 +10,7 @@ SYMBOLS { __LCSIZE__: type = weak, value = $0C00; # Rest of bank two __STACKSIZE__: type = weak, value = $0800; # 2k stack __LOADADDR__: type = weak, value = __STARTUP_RUN__; - __LOADSIZE__: type = weak, value = __INITBSS_RUN__ - __STARTUP_RUN__ + + __LOADSIZE__: type = weak, value = __INIT_RUN__ - __STARTUP_RUN__ + __MOVE_LAST__ - __MOVE_START__; } MEMORY { @@ -28,16 +28,16 @@ SEGMENTS { CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, define = yes; + INIT: load = RAM, type = bss, define = yes; BSS: load = RAM, type = bss, define = yes; - INIT: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; + ONCE: load = MOVE, run = RAM, type = ro, define = yes, optional = yes; LC: load = MOVE, run = LC, type = ro, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/atari-cart.cfg b/cfg/atari-cart.cfg index 58457c606..09bf86761 100644 --- a/cfg/atari-cart.cfg +++ b/cfg/atari-cart.cfg @@ -16,23 +16,23 @@ MEMORY { 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; - INITBSS: load = RAM, type = bss, optional = yes; - BSS: load = RAM, type = bss, define = yes, optional = yes; - CARTHDR: load = CARTID, type = ro; - ZEROPAGE: load = ZP, type = zp, optional = yes; - 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; + 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 = RAM, type = rw, define = yes, optional = yes; + INIT: load = RAM, type = bss, optional = yes; + BSS: load = RAM, 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__, diff --git a/cfg/atari-cassette.cfg b/cfg/atari-cassette.cfg index 80b5c695f..ad68bb8b4 100644 --- a/cfg/atari-cassette.cfg +++ b/cfg/atari-cassette.cfg @@ -12,23 +12,23 @@ MEMORY { RAM: file = %O, define = yes, start = %S, size = $BC20 - __STACKSIZE__ - __RESERVED_MEMORY__ - %S; } SEGMENTS { - CASHDR: load = RAM, type = ro; - STARTUP: load = RAM, type = ro, define = yes, optional = yes; - LOWCODE: load = RAM, type = ro, define = yes, optional = yes; - INIT: load = RAM, type = ro, optional = yes; - CODE: load = RAM, type = ro, define = yes; - RODATA: load = RAM, type = ro, optional = yes; - DATA: load = RAM, type = rw, optional = yes; - INITBSS: load = RAM, type = bss, optional = yes; - BSS: load = RAM, type = bss, define = yes, optional = yes; - ZEROPAGE: load = ZP, type = zp, optional = yes; - EXTZP: load = ZP, type = zp, optional = yes; + ZEROPAGE: load = ZP, type = zp, optional = yes; + EXTZP: load = ZP, type = zp, optional = yes; + CASHDR: load = RAM, type = ro; + STARTUP: load = RAM, type = ro, define = yes, optional = yes; + LOWCODE: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, optional = yes; + CODE: load = RAM, type = ro, define = yes; + RODATA: load = RAM, type = ro, optional = yes; + DATA: load = RAM, type = rw, optional = yes; + INIT: load = RAM, type = bss, optional = yes; + BSS: load = RAM, type = bss, define = yes, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/atari-overlay.cfg b/cfg/atari-overlay.cfg index b3abad988..b14a93a39 100644 --- a/cfg/atari-overlay.cfg +++ b/cfg/atari-overlay.cfg @@ -38,6 +38,8 @@ MEMORY { OVL9: file = "%O.9", start = %S, size = __OVERLAYSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXTZP: load = ZP, type = zp, optional = yes; EXEHDR: load = HEADER, type = ro; SYSCHKHDR: load = SYSCHKHDR, type = ro, optional = yes; SYSCHK: load = SYSCHKCHNK, type = rw, define = yes, optional = yes; @@ -45,14 +47,12 @@ SEGMENTS { MAINHDR: load = MAINHDR, type = ro; STARTUP: load = RAM, type = ro, define = yes; LOWCODE: load = RAM, type = ro, define = yes, optional = yes; - INIT: load = RAM, type = ro, optional = yes; + ONCE: load = RAM, type = ro, optional = yes; CODE: load = RAM, type = ro, define = yes; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, optional = yes; + INIT: load = RAM, type = bss, optional = yes; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; - EXTZP: load = ZP, type = zp, optional = yes; AUTOSTRT: load = TRAILER, type = ro; OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes; OVERLAY2: load = OVL2, type = ro, define = yes, optional = yes; @@ -68,7 +68,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/atari.cfg b/cfg/atari.cfg index 97b289d7e..7460a0f66 100644 --- a/cfg/atari.cfg +++ b/cfg/atari.cfg @@ -26,6 +26,8 @@ MEMORY { TRAILER: file = %O, start = $0000, size = $0006; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXTZP: load = ZP, type = zp, optional = yes; EXEHDR: load = HEADER, type = ro; SYSCHKHDR: load = SYSCHKHDR, type = ro, optional = yes; SYSCHK: load = SYSCHKCHNK, type = rw, define = yes, optional = yes; @@ -33,21 +35,19 @@ SEGMENTS { MAINHDR: load = MAINHDR, type = ro; STARTUP: load = RAM, type = ro, define = yes; LOWCODE: load = RAM, type = ro, define = yes, optional = yes; - INIT: load = RAM, type = ro, optional = yes; + ONCE: load = RAM, type = ro, optional = yes; CODE: load = RAM, type = ro, define = yes; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, optional = yes; + INIT: load = RAM, type = bss, optional = yes; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; - EXTZP: load = ZP, type = zp, optional = yes; AUTOSTRT: load = TRAILER, 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__, diff --git a/cfg/atari5200.cfg b/cfg/atari5200.cfg index 4a90303cf..3db8765d6 100644 --- a/cfg/atari5200.cfg +++ b/cfg/atari5200.cfg @@ -13,9 +13,11 @@ MEMORY { CARTENTRY: file = %O, start = $BFFE, size = $0002; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp, optional = yes; + EXTZP: load = ZP, type = zp, optional = yes; 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; + 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 = RAM, type = rw, define = yes, optional = yes; @@ -23,14 +25,12 @@ SEGMENTS { CARTNAME: load = CARTNAME, type = ro, define = yes; CARTYEAR: load = CARTYEAR, type = ro, define = yes; CARTENTRY: load = CARTENTRY, type = ro, define = yes; - ZEROPAGE: load = ZP, type = zp, optional = yes; - EXTZP: load = ZP, type = zp, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/atarixl-largehimem.cfg b/cfg/atarixl-largehimem.cfg index f96096995..a1ec5cf08 100644 --- a/cfg/atarixl-largehimem.cfg +++ b/cfg/atarixl-largehimem.cfg @@ -50,6 +50,9 @@ MEMORY { } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXTZP: load = ZP, type = zp, optional = yes; + EXEHDR: load = HEADER, type = ro; SYSCHKHDR: load = SYSCHKHDR, type = ro, optional = yes; @@ -66,21 +69,19 @@ SEGMENTS { MAINHDR: load = MAINHDR, type = ro; STARTUP: load = RAM, type = ro, define = yes; LOWCODE: load = RAM, type = ro, define = yes, optional = yes; - INIT: load = RAM, type = ro, optional = yes; + ONCE: load = RAM, type = ro, optional = yes; CODE: load = RAM, type = ro, define = yes; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, optional = yes; + INIT: load = RAM, type = bss, optional = yes; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; - EXTZP: load = ZP, type = zp, optional = yes; AUTOSTRT: load = TRAILER, 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__, diff --git a/cfg/atarixl-overlay.cfg b/cfg/atarixl-overlay.cfg index 7356fc03e..b0b4f3b88 100644 --- a/cfg/atarixl-overlay.cfg +++ b/cfg/atarixl-overlay.cfg @@ -62,6 +62,9 @@ MEMORY { } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXTZP: load = ZP, type = zp, optional = yes; + EXEHDR: load = HEADER, type = ro; SYSCHKHDR: load = SYSCHKHDR, type = ro, optional = yes; @@ -78,14 +81,12 @@ SEGMENTS { MAINHDR: load = MAINHDR, type = ro; STARTUP: load = RAM, type = ro, define = yes; LOWCODE: load = RAM, type = ro, define = yes, optional = yes; - INIT: load = RAM, type = ro, optional = yes; + ONCE: load = RAM, type = ro, optional = yes; CODE: load = RAM, type = ro, define = yes; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, optional = yes; + INIT: load = RAM, type = bss, optional = yes; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; - EXTZP: load = ZP, type = zp, optional = yes; AUTOSTRT: load = TRAILER, type = ro; OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes; @@ -102,7 +103,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/atarixl.cfg b/cfg/atarixl.cfg index 84992a205..2f9523c59 100644 --- a/cfg/atarixl.cfg +++ b/cfg/atarixl.cfg @@ -48,6 +48,9 @@ MEMORY { } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXTZP: load = ZP, type = zp, optional = yes; + EXEHDR: load = HEADER, type = ro; SYSCHKHDR: load = SYSCHKHDR, type = ro, optional = yes; @@ -64,21 +67,19 @@ SEGMENTS { MAINHDR: load = MAINHDR, type = ro; STARTUP: load = RAM, type = ro, define = yes; LOWCODE: load = RAM, type = ro, define = yes, optional = yes; - INIT: load = RAM, type = ro, optional = yes; + ONCE: load = RAM, type = ro, optional = yes; CODE: load = RAM, type = ro, define = yes; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss, optional = yes; + INIT: load = RAM, type = bss, optional = yes; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; - EXTZP: load = ZP, type = zp, optional = yes; AUTOSTRT: load = TRAILER, 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__, diff --git a/cfg/atmos.cfg b/cfg/atmos.cfg index a1f935efa..a0f7e1c3d 100644 --- a/cfg/atmos.cfg +++ b/cfg/atmos.cfg @@ -21,7 +21,7 @@ SEGMENTS { LOWCODE: load = RAM, type = ro, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; DATA: load = RAM, type = rw; ZPSAVE1: load = RAM, type = rw, define = yes; # ZPSAVE1, ZPSAVE2 must be together ZPSAVE2: load = RAM, type = bss; # see "libsrc/atmos/crt0.s" @@ -31,7 +31,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/bbc.cfg b/cfg/bbc.cfg index 6304c309b..98779b6fd 100644 --- a/cfg/bbc.cfg +++ b/cfg/bbc.cfg @@ -6,20 +6,20 @@ MEMORY { RAM: file = %O, start = $0E00, size = $7200 - __STACKSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; STARTUP: load = RAM, type = ro, define = yes; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/c128-overlay.cfg b/cfg/c128-overlay.cfg index f2cc3c40c..771bd290b 100644 --- a/cfg/c128-overlay.cfg +++ b/cfg/c128-overlay.cfg @@ -30,17 +30,17 @@ MEMORY { OVL9: file = "%O.9", start = $C000 - __OVERLAYSIZE__, size = __OVERLAYSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; LOADADDR: load = LOADADDR, type = ro; EXEHDR: load = HEADER, type = ro; STARTUP: load = RAM, type = ro; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss; + INIT: load = RAM, type = bss; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; OVL1ADDR: load = OVL1ADDR, type = ro; OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes; OVL2ADDR: load = OVL2ADDR, type = ro; @@ -64,7 +64,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/c128.cfg b/cfg/c128.cfg index ef2aa4184..0ea6066ad 100644 --- a/cfg/c128.cfg +++ b/cfg/c128.cfg @@ -10,23 +10,23 @@ MEMORY { RAM: file = %O, define = yes, start = $1C0D, size = $A3F3 - __STACKSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; LOADADDR: load = LOADADDR, type = ro; EXEHDR: load = HEADER, type = ro; STARTUP: load = RAM, type = ro; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss; + INIT: load = RAM, type = bss; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/c16.cfg b/cfg/c16.cfg index efb42991f..b4b5ccaf7 100644 --- a/cfg/c16.cfg +++ b/cfg/c16.cfg @@ -10,23 +10,23 @@ MEMORY { RAM: file = %O, start = $100D, size = $6FF3 - __STACKSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; LOADADDR: load = LOADADDR, type = ro; EXEHDR: load = HEADER, type = ro; STARTUP: load = RAM, type = ro; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss; + INIT: load = RAM, type = bss; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/c64-overlay.cfg b/cfg/c64-overlay.cfg index 522a6d1a6..872fdd775 100644 --- a/cfg/c64-overlay.cfg +++ b/cfg/c64-overlay.cfg @@ -44,9 +44,9 @@ SEGMENTS { CODE: load = MAIN, type = ro; RODATA: load = MAIN, type = ro; DATA: load = MAIN, type = rw; - INITBSS: load = MAIN, type = rw; + INIT: load = MAIN, type = rw; BSS: load = MAIN, type = bss, define = yes; - INIT: load = INIT, type = ro; + ONCE: load = INIT, type = ro; OVL1ADDR: load = OVL1ADDR, type = ro; OVERLAY1: load = OVL1, type = ro, define = yes, optional = yes; OVL2ADDR: load = OVL2ADDR, type = ro; @@ -70,7 +70,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/c64.cfg b/cfg/c64.cfg index 8ff7db03c..3735a0a65 100644 --- a/cfg/c64.cfg +++ b/cfg/c64.cfg @@ -23,15 +23,15 @@ SEGMENTS { CODE: load = MAIN, type = ro; RODATA: load = MAIN, type = ro; DATA: load = MAIN, type = rw; - INITBSS: load = MAIN, type = rw; + INIT: load = MAIN, type = rw; BSS: load = MAIN, type = bss, define = yes; - INIT: load = INIT, type = ro, define = yes; + ONCE: load = INIT, type = ro, define = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/cbm510.cfg b/cfg/cbm510.cfg index d0775b6f2..8b01dff0b 100644 --- a/cfg/cbm510.cfg +++ b/cfg/cbm510.cfg @@ -18,11 +18,11 @@ SEGMENTS { PAGE2: load = PAGE2, type = rw; PAGE3: load = PAGE3, type = rw; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss; + INIT: load = RAM, type = bss; BSS: load = RAM, type = bss, define = yes; ZEROPAGE: load = ZP, type = zp; EXTZP: load = ZP, type = rw, define = yes; @@ -31,7 +31,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/cbm610.cfg b/cfg/cbm610.cfg index ae66f4c4a..6df9f1f5a 100644 --- a/cfg/cbm610.cfg +++ b/cfg/cbm610.cfg @@ -15,11 +15,11 @@ SEGMENTS { PAGE2: load = PAGE2, type = rw; PAGE3: load = PAGE3, type = rw; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss; + INIT: load = RAM, type = bss; BSS: load = RAM, type = bss, define = yes; ZEROPAGE: load = ZP, type = zp; EXTZP: load = ZP, type = rw, define = yes; @@ -28,7 +28,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/gamate.cfg b/cfg/gamate.cfg index 90ced1ea5..f0f669f27 100644 --- a/cfg/gamate.cfg +++ b/cfg/gamate.cfg @@ -1,41 +1,51 @@ # linker config to produce simple Gamate cartridge (.bin) SYMBOLS { - __STARTUP__: type = import; - __STACKSIZE__: type = weak, value = $0080; # 1 page stack + __STARTUP__: type = import; + __STACKSIZE__: type = weak, value = $0080; # 1 page stack } MEMORY { - # 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 = $e8 - $12; - CPUSTACK: start = $0100, size =$100; - RAM: start = $0200, size = $200 - __STACKSIZE__, 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 = $e8 - $12; + CPUSTACK: start = $0100, size =$100; + RAM: start = $0200, size = $200 - __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 + $29, size = $8000 - $29, fill = yes, fillval = $00, file = %O, 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 + $29, size = $8000 - $29, fill = yes, fillval = $00, file = %O, define = yes; } SEGMENTS { - 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; - INIT: load = ROM, type = ro, define = yes, 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; + 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, define = yes, 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: segment = RODATA, type = interruptor, label = __INTERRUPTOR_TABLE__, count = __INTERRUPTOR_COUNT__, import = __CALLIRQ__; + 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__; } diff --git a/cfg/geos-apple.cfg b/cfg/geos-apple.cfg index 746e1f2bf..ee8b61aec 100644 --- a/cfg/geos-apple.cfg +++ b/cfg/geos-apple.cfg @@ -40,7 +40,7 @@ SEGMENTS { VLIRIDX0: type = ro, load = CVT, align = $200, optional = yes; STARTUP: type = ro, run = VLIR0, load = CVT, align_load = $200, define = yes; LOWCODE: type = ro, run = VLIR0, load = CVT, optional = yes; - INIT: type = ro, run = VLIR0, load = CVT, define = yes, optional = yes; + ONCE: type = ro, run = VLIR0, load = CVT, define = yes, optional = yes; CODE: type = ro, run = VLIR0, load = CVT; RODATA: type = ro, run = VLIR0, load = CVT; DATA: type = rw, run = VLIR0, load = CVT; @@ -88,7 +88,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/geos-cbm.cfg b/cfg/geos-cbm.cfg index ddef00a99..42cbe9a48 100644 --- a/cfg/geos-cbm.cfg +++ b/cfg/geos-cbm.cfg @@ -37,7 +37,7 @@ SEGMENTS { RECORDS: type = ro, load = CVT, align = $FE, optional = yes; STARTUP: type = ro, run = VLIR0, load = CVT, align_load = $FE, define = yes; LOWCODE: type = ro, run = VLIR0, load = CVT, optional = yes; - INIT: type = ro, run = VLIR0, load = CVT, define = yes, optional = yes; + ONCE: type = ro, run = VLIR0, load = CVT, define = yes, optional = yes; CODE: type = ro, run = VLIR0, load = CVT; RODATA: type = ro, run = VLIR0, load = CVT; DATA: type = rw, run = VLIR0, load = CVT; @@ -66,7 +66,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/lunix.cfg b/cfg/lunix.cfg index 1342c390b..aabacbeb2 100644 --- a/cfg/lunix.cfg +++ b/cfg/lunix.cfg @@ -12,7 +12,7 @@ SEGMENTS { ZEROPAGE: load = ZP, type = zp, define = yes; # Pseudo-registers STARTUP: load = RAM, type = ro; # First initialization code LOWCODE: load = RAM, type = ro, optional = yes; # Legacy from other platforms - INIT: load = RAM, type = ro, define = yes, optional = yes; # Library initialization code + ONCE: load = RAM, type = ro, define = yes, optional = yes; # Library initialization code CODE: load = RAM, type = ro; # Program RODATA: load = RAM, type = ro; # Literals, constants DATA: load = RAM, type = rw; # Initialized variables @@ -22,7 +22,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/lynx-bll.cfg b/cfg/lynx-bll.cfg index 21967752f..fcf6d4c60 100644 --- a/cfg/lynx-bll.cfg +++ b/cfg/lynx-bll.cfg @@ -10,23 +10,23 @@ MEMORY { RAM: file = %O, define = yes, start = $0400, size = $BC38 - __STACKSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXTZP: load = ZP, type = zp, optional = yes; + APPZP: load = ZP, type = zp, optional = yes; BLLHDR: load = HEADER, type = ro; STARTUP: load = RAM, type = ro, define = yes; LOWCODE: load = RAM, type = ro, define = yes, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro, define = yes; RODATA: load = RAM, type = ro, define = yes; DATA: load = RAM, type = rw, define = yes; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; - EXTZP: load = ZP, type = zp, optional = yes; - APPZP: load = ZP, type = zp, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/lynx-coll.cfg b/cfg/lynx-coll.cfg index b7fd787e7..d40c18237 100644 --- a/cfg/lynx-coll.cfg +++ b/cfg/lynx-coll.cfg @@ -14,25 +14,25 @@ MEMORY { RAM: file = %O, define = yes, start = $0200, size = $9E58 - __STACKSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXTZP: load = ZP, type = zp, optional = yes; + APPZP: load = ZP, type = zp, optional = yes; EXEHDR: load = HEADER, type = ro; BOOTLDR: load = BOOT, type = ro; DIRECTORY: load = DIR, type = ro; STARTUP: load = RAM, type = ro, define = yes; LOWCODE: load = RAM, type = ro, define = yes, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro, define = yes; RODATA: load = RAM, type = ro, define = yes; DATA: load = RAM, type = rw, define = yes; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; - EXTZP: load = ZP, type = zp, optional = yes; - APPZP: load = ZP, type = zp, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/lynx-uploader.cfg b/cfg/lynx-uploader.cfg index 740a18b0a..fe6d6133d 100644 --- a/cfg/lynx-uploader.cfg +++ b/cfg/lynx-uploader.cfg @@ -16,27 +16,27 @@ MEMORY { UPLDR: file = %O, define = yes, start = $BFDC, size = $005C; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXTZP: load = ZP, type = zp, optional = yes; + APPZP: load = ZP, type = zp, optional = yes; EXEHDR: load = HEADER, type = ro; BOOTLDR: load = BOOT, type = ro; DIRECTORY:load = DIR, type = ro; STARTUP: load = RAM, type = ro, define = yes; LOWCODE: load = RAM, type = ro, define = yes, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro, define = yes; RODATA: load = RAM, type = ro, define = yes; DATA: load = RAM, type = rw, define = yes; BSS: load = RAM, type = bss, define = yes; UPCODE: load = UPLDR, type = ro, define = yes; UPDATA: load = UPLDR, type = rw, define = yes; - ZEROPAGE: load = ZP, type = zp; - EXTZP: load = ZP, type = zp, optional = yes; - APPZP: load = ZP, type = zp, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/lynx.cfg b/cfg/lynx.cfg index 2c9e76207..4d41c1bbf 100644 --- a/cfg/lynx.cfg +++ b/cfg/lynx.cfg @@ -14,25 +14,25 @@ MEMORY { RAM: file = %O, define = yes, start = $0200, size = $BE38 - __STACKSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXTZP: load = ZP, type = zp, optional = yes; + APPZP: load = ZP, type = zp, optional = yes; EXEHDR: load = HEADER, type = ro; BOOTLDR: load = BOOT, type = ro; DIRECTORY: load = DIR, type = ro; STARTUP: load = RAM, type = ro, define = yes; LOWCODE: load = RAM, type = ro, define = yes, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro, define = yes; RODATA: load = RAM, type = ro, define = yes; DATA: load = RAM, type = rw, define = yes; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; - EXTZP: load = ZP, type = zp, optional = yes; - APPZP: load = ZP, type = zp, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/module.cfg b/cfg/module.cfg index 452491eb4..be312585c 100644 --- a/cfg/module.cfg +++ b/cfg/module.cfg @@ -6,7 +6,7 @@ SEGMENTS { ZEROPAGE: load = ZP, type = zp; EXTZP: load = ZP, type = zp, optional = yes; HEADER: load = COMBINED, type = ro; - INIT: load = COMBINED, type = ro, optional = yes; + ONCE: load = COMBINED, type = ro, optional = yes; CODE: load = COMBINED, type = ro; RODATA: load = COMBINED, type = ro; DATA: load = COMBINED, type = rw; diff --git a/cfg/nes.cfg b/cfg/nes.cfg index 3e2f408cc..f68330425 100644 --- a/cfg/nes.cfg +++ b/cfg/nes.cfg @@ -33,23 +33,23 @@ MEMORY { RAM: file = "", start = $6000, size = $2000, define = yes; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; HEADER: load = HEADER, type = ro; STARTUP: load = ROM0, type = ro, define = yes; LOWCODE: load = ROM0, type = ro, optional = yes; - INIT: load = ROM0, type = ro, define = yes, optional = yes; + ONCE: 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; VECTORS: load = ROMV, type = rw; CHARS: load = ROM2, type = rw; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/none.cfg b/cfg/none.cfg index 49409a82c..54ae54eb4 100644 --- a/cfg/none.cfg +++ b/cfg/none.cfg @@ -6,19 +6,19 @@ MEMORY { RAM: file = %O, start = %S, size = $10000 - __STACKSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = rw; RODATA: load = RAM, type = rw; DATA: load = RAM, type = rw; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/osic1p-asm.cfg b/cfg/osic1p-asm.cfg index 4000890be..ac2e76dc9 100644 --- a/cfg/osic1p-asm.cfg +++ b/cfg/osic1p-asm.cfg @@ -15,11 +15,11 @@ MEMORY { RAM: file = %O, define = yes, start = %S, size = __HIMEM__ - __STACKSIZE__ - %S; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; BOOT: load = HEAD, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = rw; RODATA: load = RAM, type = rw; DATA: load = RAM, type = rw; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; } diff --git a/cfg/osic1p.cfg b/cfg/osic1p.cfg index fd9aa604e..314eac0b9 100644 --- a/cfg/osic1p.cfg +++ b/cfg/osic1p.cfg @@ -15,22 +15,22 @@ MEMORY { RAM: file = %O, define = yes, start = %S, size = __HIMEM__ - __STACKSIZE__ - %S; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + EXTZP: load = ZP, type = zp, define = yes, optional = yes; BOOT: load = HEAD, type = ro, optional = yes; STARTUP: load = RAM, type = ro; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = rw; RODATA: load = RAM, type = rw; DATA: load = RAM, type = rw; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; - EXTZP: load = ZP, type = zp, define = yes, optional = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/pce.cfg b/cfg/pce.cfg index 9128eb727..219cbdec3 100644 --- a/cfg/pce.cfg +++ b/cfg/pce.cfg @@ -1,39 +1,39 @@ # linker config to produce simple NEC PC-Engine cartridge (.pce) SYMBOLS { - __STACKSIZE__: type = weak, value = $0300; # 3 pages stack + __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; + # FIXME: is this correct? the first 3? bytes cant be used? + ZP: file = "", start = $0003, size = $00FD, 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; + # reset-bank and hardware vectors + ROM0: file = %O, start = $E000, size = $1FF6, fill = yes, define = yes; + ROMV: file = %O, start = $FFF6, size = $000A, fill = yes; - # first RAM page (also contains stack and zeropage) - RAM: start = $2200, size = $1e00, define = yes; + # first RAM page (also contains stack and zeropage) + RAM: file = "", start = $2200, size = $1e00, define = yes; } 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, define = yes; + EXTZP: load = ZP, type = zp, define = yes, optional = yes; + APPZP: load = ZP, type = zp, define = yes, optional = yes; + STARTUP: load = ROM0, type = ro, define = yes; + ONCE: 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; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/pet.cfg b/cfg/pet.cfg index 80d89ee50..aad3f579e 100644 --- a/cfg/pet.cfg +++ b/cfg/pet.cfg @@ -10,23 +10,23 @@ MEMORY { RAM: file = %O, start = $040D, size = $7BF3 - __STACKSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; LOADADDR: load = LOADADDR, type = ro; EXEHDR: load = HEADER, type = ro; STARTUP: load = RAM, type = ro; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss; + INIT: load = RAM, type = bss; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/plus4.cfg b/cfg/plus4.cfg index 6eeddf12e..16e9d12c8 100644 --- a/cfg/plus4.cfg +++ b/cfg/plus4.cfg @@ -10,23 +10,23 @@ MEMORY { RAM: file = %O, define = yes, start = $100D, size = $ECF3 - __STACKSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; LOADADDR: load = LOADADDR, type = ro; EXEHDR: load = HEADER, type = ro; STARTUP: load = RAM, type = ro; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss; + INIT: load = RAM, type = bss; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/sim6502.cfg b/cfg/sim6502.cfg index edb630d7f..8e78fceb2 100644 --- a/cfg/sim6502.cfg +++ b/cfg/sim6502.cfg @@ -3,26 +3,26 @@ SYMBOLS { __STACKSIZE__: type = weak, value = $0800; # 2k stack } MEMORY { - ZP: file = "", start = $0000, size = $001A; - HEADER: file = %O, start = $0000, size = $0001; - RAM: file = %O, define = yes, start = $0200, size = $FDF0 - __STACKSIZE__; + ZP: file = "", start = $0000, size = $001A; + HEADER: file = %O, start = $0000, size = $0001; + RAM: file = %O, define = yes, start = $0200, size = $FDF0 - __STACKSIZE__; } SEGMENTS { - EXEHDR: load = HEADER, type = ro; - STARTUP: load = RAM, type = ro; - LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; - CODE: load = RAM, type = ro; - RODATA: load = RAM, type = ro; - DATA: load = RAM, type = rw; - BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; + ZEROPAGE: load = ZP, type = zp; + EXEHDR: load = HEADER, type = ro; + STARTUP: load = RAM, type = ro; + LOWCODE: load = RAM, type = ro, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; + CODE: load = RAM, type = ro; + RODATA: load = RAM, type = ro; + DATA: load = RAM, type = rw; + BSS: load = RAM, type = bss, define = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/sim65c02.cfg b/cfg/sim65c02.cfg index edb630d7f..8e78fceb2 100644 --- a/cfg/sim65c02.cfg +++ b/cfg/sim65c02.cfg @@ -3,26 +3,26 @@ SYMBOLS { __STACKSIZE__: type = weak, value = $0800; # 2k stack } MEMORY { - ZP: file = "", start = $0000, size = $001A; - HEADER: file = %O, start = $0000, size = $0001; - RAM: file = %O, define = yes, start = $0200, size = $FDF0 - __STACKSIZE__; + ZP: file = "", start = $0000, size = $001A; + HEADER: file = %O, start = $0000, size = $0001; + RAM: file = %O, define = yes, start = $0200, size = $FDF0 - __STACKSIZE__; } SEGMENTS { - EXEHDR: load = HEADER, type = ro; - STARTUP: load = RAM, type = ro; - LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; - CODE: load = RAM, type = ro; - RODATA: load = RAM, type = ro; - DATA: load = RAM, type = rw; - BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; + ZEROPAGE: load = ZP, type = zp; + EXEHDR: load = HEADER, type = ro; + STARTUP: load = RAM, type = ro; + LOWCODE: load = RAM, type = ro, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; + CODE: load = RAM, type = ro; + RODATA: load = RAM, type = ro; + DATA: load = RAM, type = rw; + BSS: load = RAM, type = bss, define = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/supervision-128k.cfg b/cfg/supervision-128k.cfg index ce835db50..3cfdf1276 100644 --- a/cfg/supervision-128k.cfg +++ b/cfg/supervision-128k.cfg @@ -21,7 +21,7 @@ MEMORY { } SEGMENTS { LOWCODE: load = ROM, type = ro, optional = yes; - INIT: load = ROM, type = ro, define = yes, optional = yes; + ONCE: load = ROM, type = ro, define = yes, optional = yes; CODE: load = ROM, type = ro; BANK1: load = BANKROM1, type = ro; BANK2: load = BANKROM2, type = ro; diff --git a/cfg/supervision-16k.cfg b/cfg/supervision-16k.cfg index e38948d5f..2e96b9a72 100644 --- a/cfg/supervision-16k.cfg +++ b/cfg/supervision-16k.cfg @@ -14,21 +14,21 @@ MEMORY { ROM: file = %O, start = $C000, size = $4000, fill = yes, fillval = $ff, define=yes; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp, define = yes; LOWCODE: load = ROM, type = ro, optional = yes; - INIT: load = ROM, type = ro, define = yes, optional = yes; + ONCE: load = ROM, type = ro, define = yes, 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; FFF0: load = ROM, type = ro, offset = $3FF0; VECTOR: load = ROM, type = ro, offset = $3FFA; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp, define = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/supervision-64k.cfg b/cfg/supervision-64k.cfg index fd5370fa5..63338d1e3 100644 --- a/cfg/supervision-64k.cfg +++ b/cfg/supervision-64k.cfg @@ -17,7 +17,7 @@ MEMORY { } SEGMENTS { LOWCODE: load = ROM, type = ro, optional = yes; - INIT: load = ROM, type = ro, define = yes, optional = yes; + ONCE: load = ROM, type = ro, define = yes, optional = yes; CODE: load = ROM, type = ro; RODATA: load = ROM, type = ro; BANK1: load = BANKROM1, type = ro; diff --git a/cfg/supervision.cfg b/cfg/supervision.cfg index 66fb4cfad..b7ae207b8 100644 --- a/cfg/supervision.cfg +++ b/cfg/supervision.cfg @@ -10,21 +10,21 @@ MEMORY { ROM: file = %O, start = $8000, size = $8000, fill = yes, fillval = $FF, define = yes; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp, define = yes; LOWCODE: load = ROM, type = ro, optional = yes; - INIT: load = ROM, type = ro, define = yes, optional = yes; + ONCE: load = ROM, type = ro, define = yes, 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; FFF0: load = ROM, type = ro, offset = $7FF0; VECTOR: load = ROM, type = ro, offset = $7FFA; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp, define = yes; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/vic20-32k.cfg b/cfg/vic20-32k.cfg index 23cd718df..a1b609106 100644 --- a/cfg/vic20-32k.cfg +++ b/cfg/vic20-32k.cfg @@ -16,11 +16,11 @@ SEGMENTS { EXEHDR: load = HEADER, type = ro; STARTUP: load = RAM, type = ro; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss; + INIT: load = RAM, type = bss; BSS: load = RAM, type = bss, define = yes; ZEROPAGE: load = ZP, type = zp; } @@ -28,7 +28,7 @@ FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/cfg/vic20.cfg b/cfg/vic20.cfg index 9a5ce9a63..693b356a3 100644 --- a/cfg/vic20.cfg +++ b/cfg/vic20.cfg @@ -10,23 +10,23 @@ MEMORY { RAM: file = %O, define = yes, start = $100D, size = $0DF3 - __STACKSIZE__; } SEGMENTS { + ZEROPAGE: load = ZP, type = zp; LOADADDR: load = LOADADDR, type = ro; EXEHDR: load = HEADER, type = ro; STARTUP: load = RAM, type = ro; LOWCODE: load = RAM, type = ro, optional = yes; - INIT: load = RAM, type = ro, define = yes, optional = yes; + ONCE: load = RAM, type = ro, define = yes, optional = yes; CODE: load = RAM, type = ro; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; - INITBSS: load = RAM, type = bss; + INIT: load = RAM, type = bss; BSS: load = RAM, type = bss, define = yes; - ZEROPAGE: load = ZP, type = zp; } FEATURES { CONDES: type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__, - segment = INIT; + segment = ONCE; CONDES: type = destructor, label = __DESTRUCTOR_TABLE__, count = __DESTRUCTOR_COUNT__, diff --git a/doc/atari.sgml b/doc/atari.sgml index 47ce050e1..f37b43929 100644 --- a/doc/atari.sgml +++ b/doc/atari.sgml @@ -743,7 +743,7 @@ segments should go above $7FFF.

The main problem is that the EXE header generated by the cc65 runtime lib is wrong. It defines a single load chunk with the sizes/addresses -of the STARTUP, LOWCODE, INIT, CODE, RODATA, and DATA segments, in +of the STARTUP, LOWCODE, ONCE, CODE, RODATA, and DATA segments, in fact, the whole user program (we're disregarding the "system check" load chunk here).

@@ -796,7 +796,7 @@ SEGMENTS { NEXEHDR: load = FSTHDR, type = ro; # first load chunk STARTUP: load = RAMLO, type = ro, define = yes; LOWCODE: load = RAMLO, type = ro, define = yes, optional = yes; - INIT: load = RAMLO, type = ro, optional = yes; + ONCE: load = RAMLO, type = ro, optional = yes; CODE: load = RAMLO, type = ro, define = yes; CHKHDR: load = SECHDR, type = ro; # second load chunk @@ -808,7 +808,7 @@ SEGMENTS { AUTOSTRT: load = RAM, type = ro; # defines program entry point } FEATURES { - CONDES: segment = RODATA, + CONDES: segment = ONCE, type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__; @@ -827,7 +827,7 @@ the MAINHDR segment get discarded.

The newly added NEXEHDR segment defines the correct chunk header for the first intended load chunk. It -puts the STARTUP, LOWCODE, INIT, and CODE segments, which are the +puts the STARTUP, LOWCODE, ONCE, and CODE segments, which are the segments containing only code, into load chunk #1 (RAMLO memory area).

The header for the second load chunk comes from the new CHKHDR @@ -858,7 +858,7 @@ cl65 -t atari -C split.cfg -o prog.com prog.c split.s Low data and high code example

-Goal: Put RODATA and DATA into low memory and STARTUP, LOWCODE, INIT, +Goal: Put RODATA and DATA into low memory and STARTUP, LOWCODE, ONCE, CODE, BSS, ZPSAVE into high memory (split2.cfg): @@ -893,7 +893,7 @@ SEGMENTS { CHKHDR: load = SECHDR, type = ro; # second load chunk STARTUP: load = RAM, type = ro, define = yes; - INIT: load = RAM, type = ro, optional = yes; + ONCE: load = RAM, type = ro, optional = yes; CODE: load = RAM, type = ro, define = yes; BSS: load = RAM, type = bss, define = yes; @@ -901,7 +901,7 @@ SEGMENTS { AUTOSTRT: load = RAM, type = ro; # defines program entry point } FEATURES { - CONDES: segment = RODATA, + CONDES: segment = ONCE, type = constructor, label = __CONSTRUCTOR_TABLE__, count = __CONSTRUCTOR_COUNT__; diff --git a/doc/customizing.sgml b/doc/customizing.sgml index 0a0b8c87e..e502f2e9d 100644 --- a/doc/customizing.sgml +++ b/doc/customizing.sgml @@ -78,15 +78,15 @@ vectors at the proper memory locations. The segment definition is: SEGMENTS { - ZEROPAGE: load = ZP, type = zp, define = yes; - DATA: load = ROM, type = rw, define = yes, run = RAM; - BSS: load = RAM, type = bss, define = yes; - HEAP: load = RAM, type = bss, optional = yes; - STARTUP: load = ROM, type = ro; - INIT: load = ROM, type = ro, optional = yes; - CODE: load = ROM, type = ro; - RODATA: load = ROM, type = ro; - VECTORS: load = ROM, type = ro, start = $FFFA; + ZEROPAGE: load = ZP, type = zp, define = yes; + DATA: load = ROM, type = rw, define = yes, run = RAM; + BSS: load = RAM, type = bss, define = yes; + HEAP: load = RAM, type = bss, optional = yes; + STARTUP: load = ROM, type = ro; + ONCE: load = ROM, type = ro, optional = yes; + CODE: load = ROM, type = ro; + RODATA: load = ROM, type = ro; + VECTORS: load = ROM, type = ro, start = $FFFA; } @@ -97,7 +97,7 @@ The meaning of each of these segments is as follows.

BSS: Uninitialized data stored in RAM (used for variable storage)

HEAP: Uninitialized C-level heap storage in RAM, optional

STARTUP: The program initialization code, stored in ROM -

INIT: The code needed to initialize the system, stored in ROM +

ONCE: The code run once to initialize the system, stored in ROM

CODE: The program code, stored in ROM

RODATA: Initialized data that cannot be modified by the program, stored in ROM

VECTORS: The interrupt vector table, stored in ROM at location $FFFA diff --git a/doc/ld65.sgml b/doc/ld65.sgml index 329f975e1..448157ce0 100644 --- a/doc/ld65.sgml +++ b/doc/ld65.sgml @@ -1032,11 +1032,11 @@ The builtin config files do contain segments that have a special meaning for the compiler and the libraries that come with it. If you replace the builtin config files, you will need the following information. -INIT

+ONCE

-The INIT segment is used for initialization code that may be reused once +The ONCE segment is used for initialization code run only once before execution reaches main() - provided that the program runs in RAM. You -may for example add the INIT segment to the heap in really memory +may for example add the ONCE segment to the heap in really memory constrained systems. LOWCODE

diff --git a/libsrc/apple2/cputc.s b/libsrc/apple2/cputc.s index 1cadd1f1c..2db2962f9 100644 --- a/libsrc/apple2/cputc.s +++ b/libsrc/apple2/cputc.s @@ -14,7 +14,7 @@ .include "apple2.inc" - .segment "INIT" + .segment "ONCE" .ifdef __APPLE2ENH__ initconio: diff --git a/libsrc/apple2/crt0.s b/libsrc/apple2/crt0.s index f061b212b..7eee390fa 100644 --- a/libsrc/apple2/crt0.s +++ b/libsrc/apple2/crt0.s @@ -10,8 +10,8 @@ .import initlib, donelib .import callmain .import __LC_START__, __LC_LAST__ ; Linker generated - .import __INIT_RUN__, __INIT_SIZE__ ; Linker generated - .import __INITBSS_RUN__ ; Linker generated + .import __ONCE_RUN__, __ONCE_SIZE__ ; Linker generated + .import __INIT_RUN__ ; Linker generated .include "zeropage.inc" .include "apple2.inc" @@ -29,14 +29,14 @@ bit $C081 ; Set the source start address. - lda #<(__INITBSS_RUN__ + __INIT_SIZE__) - ldy #>(__INITBSS_RUN__ + __INIT_SIZE__) + lda #<(__INIT_RUN__ + __ONCE_SIZE__) + ldy #>(__INIT_RUN__ + __ONCE_SIZE__) sta $9B sty $9C ; Set the source last address. - lda #<(__INITBSS_RUN__ + __INIT_SIZE__ + __LC_LAST__ - __LC_START__) - ldy #>(__INITBSS_RUN__ + __INIT_SIZE__ + __LC_LAST__ - __LC_START__) + lda #<(__INIT_RUN__ + __ONCE_SIZE__ + __LC_LAST__ - __LC_START__) + ldy #>(__INIT_RUN__ + __ONCE_SIZE__ + __LC_LAST__ - __LC_START__) sta $96 sty $97 @@ -51,25 +51,25 @@ jsr $D39A ; BLTU2 ; Set the source start address. - lda #<__INITBSS_RUN__ - ldy #>__INITBSS_RUN__ + lda #<__INIT_RUN__ + ldy #>__INIT_RUN__ sta $9B sty $9C ; Set the source last address. - lda #<(__INITBSS_RUN__ + __INIT_SIZE__) - ldy #>(__INITBSS_RUN__ + __INIT_SIZE__) + lda #<(__INIT_RUN__ + __ONCE_SIZE__) + ldy #>(__INIT_RUN__ + __ONCE_SIZE__) sta $96 sty $97 ; Set the destination last address. - lda #<(__INIT_RUN__ + __INIT_SIZE__) - ldy #>(__INIT_RUN__ + __INIT_SIZE__) + lda #<(__ONCE_RUN__ + __ONCE_SIZE__) + ldy #>(__ONCE_RUN__ + __ONCE_SIZE__) sta $94 sty $95 ; Call into Applesoft Block Transfer Up -- which handles moving - ; overlapping blocks upwards well -- to move the INIT segment. + ; overlapping blocks upwards well -- to move the ONCE segment. jsr $D39A ; BLTU2 ; Delegate all further processing, to keep the STARTUP segment small. @@ -109,7 +109,7 @@ exit: ldx #$02 ; We're done jmp done - .segment "INIT" + .segment "ONCE" ; Save the zero-page locations that we need. init: ldx #zpspace-1 @@ -201,7 +201,7 @@ q_param:.byte $04 ; param_count ; Final jump when we're done done: jmp DOSWARM ; Potentially patched at runtime - .segment "INITBSS" + .segment "INIT" zpsave: .res zpspace diff --git a/libsrc/apple2/dosdetect.s b/libsrc/apple2/dosdetect.s index 68910e3da..cedb1f3e3 100644 --- a/libsrc/apple2/dosdetect.s +++ b/libsrc/apple2/dosdetect.s @@ -30,7 +30,7 @@ ; - Apple II ProDOS 8 TechNote #23, ProDOS 8 Changes and Minutia ; - ProDOS TechRefMan, chapter 5.2.4 - .segment "INIT" + .segment "ONCE" initdostype: lda $BF00 diff --git a/libsrc/apple2/extra/iobuf-0800.s b/libsrc/apple2/extra/iobuf-0800.s index 7951ccbb0..2e5d1927e 100644 --- a/libsrc/apple2/extra/iobuf-0800.s +++ b/libsrc/apple2/extra/iobuf-0800.s @@ -14,7 +14,7 @@ .include "errno.inc" .include "../filedes.inc" - .segment "INIT" + .segment "ONCE" initiobuf: ; Convert end address highbyte to table index diff --git a/libsrc/apple2/get_ostype.s b/libsrc/apple2/get_ostype.s index 68ae865ac..cff6af9a3 100644 --- a/libsrc/apple2/get_ostype.s +++ b/libsrc/apple2/get_ostype.s @@ -10,7 +10,7 @@ ; Identify machine according to: ; Apple II Miscellaneous TechNote #7, Apple II Family Identification - .segment "INIT" + .segment "ONCE" initostype: sec diff --git a/libsrc/apple2/irq.s b/libsrc/apple2/irq.s index 0b0555695..97a1633b4 100644 --- a/libsrc/apple2/irq.s +++ b/libsrc/apple2/irq.s @@ -9,7 +9,7 @@ .include "apple2.inc" - .segment "INIT" + .segment "ONCE" initirq: ; Check for ProDOS diff --git a/libsrc/apple2/mainargs.s b/libsrc/apple2/mainargs.s index 2e809dc56..e3db8bb10 100644 --- a/libsrc/apple2/mainargs.s +++ b/libsrc/apple2/mainargs.s @@ -46,10 +46,10 @@ FNAM_LEN = $280 FNAM = $281 REM = $B2 ; BASIC token-code -; Get possible command-line arguments. Goes into the special INIT segment, +; Get possible command-line arguments. Goes into the special ONCE segment, ; which may be reused after the startup code is run. - .segment "INIT" + .segment "ONCE" initmainargs: diff --git a/libsrc/apple2/open.s b/libsrc/apple2/open.s index b1686df70..e47722973 100644 --- a/libsrc/apple2/open.s +++ b/libsrc/apple2/open.s @@ -19,7 +19,7 @@ .include "mli.inc" .include "filedes.inc" - .segment "INIT" + .segment "ONCE" raisefilelevel: ; Raise file level diff --git a/libsrc/apple2/read.s b/libsrc/apple2/read.s index ef994d6aa..14c80b7e2 100644 --- a/libsrc/apple2/read.s +++ b/libsrc/apple2/read.s @@ -16,7 +16,7 @@ .include "filedes.inc" .include "apple2.inc" - .segment "INIT" + .segment "ONCE" initprompt: ; Set prompt <> ']' to let DOS 3.3 know that we're diff --git a/libsrc/apple2/reboot.s b/libsrc/apple2/reboot.s index 8ee1ba067..e674ea1bc 100644 --- a/libsrc/apple2/reboot.s +++ b/libsrc/apple2/reboot.s @@ -10,7 +10,7 @@ _rebootafterexit := return - .segment "INIT" + .segment "ONCE" initreboot: ; Quit to PWRUP diff --git a/libsrc/atari/casinit.s b/libsrc/atari/casinit.s index c91989aad..668f34867 100644 --- a/libsrc/atari/casinit.s +++ b/libsrc/atari/casinit.s @@ -13,7 +13,7 @@ .import start .export _cas_init -.segment "INIT" +.segment "ONCE" _cas_init: .ifdef DEBUG diff --git a/libsrc/atari/dosdetect.s b/libsrc/atari/dosdetect.s index 654da55b5..cac9a6536 100644 --- a/libsrc/atari/dosdetect.s +++ b/libsrc/atari/dosdetect.s @@ -11,7 +11,7 @@ ; ------------------------------------------------------------------------ ; DOS type detection -.segment "INIT" +.segment "ONCE" detect: lda DOS cmp #'S' ; SpartaDOS diff --git a/libsrc/atari/getargs.s b/libsrc/atari/getargs.s index fb3b7bc03..d32c0a268 100644 --- a/libsrc/atari/getargs.s +++ b/libsrc/atari/getargs.s @@ -20,7 +20,7 @@ SPACE = 32 ; SPACE char. ; -------------------------------------------------------------------------- ; Get command line -.segment "INIT" +.segment "ONCE" initmainargs: lda #0 diff --git a/libsrc/atari/irq.s b/libsrc/atari/irq.s index 0a8efe466..1878ea0a2 100644 --- a/libsrc/atari/irq.s +++ b/libsrc/atari/irq.s @@ -13,7 +13,7 @@ ; ------------------------------------------------------------------------ -.segment "INIT" +.segment "ONCE" initirq: lda VVBLKD diff --git a/libsrc/atari/mcbpm.s b/libsrc/atari/mcbpm.s index c5c5dd433..9e6ccc2c5 100644 --- a/libsrc/atari/mcbpm.s +++ b/libsrc/atari/mcbpm.s @@ -180,7 +180,7 @@ update_colors: ; ------------------------------------------------------------------------ - .segment "INIT" + .segment "ONCE" pm_init: lda #0 diff --git a/libsrc/atari/shadow_ram_handlers.s b/libsrc/atari/shadow_ram_handlers.s index 53a71ab71..d65e6bd68 100644 --- a/libsrc/atari/shadow_ram_handlers.s +++ b/libsrc/atari/shadow_ram_handlers.s @@ -26,7 +26,7 @@ SHRAM_HANDLERS = 1 BUFSZ = 128 ; bounce buffer size BUFSZ_SIO = 256 -.segment "INIT" +.segment "ONCE" ; Turn off ROMs, install system and interrupt wrappers, set new chargen pointer diff --git a/libsrc/atari5200/conioscreen.s b/libsrc/atari5200/conioscreen.s index 660276675..2e86001c2 100644 --- a/libsrc/atari5200/conioscreen.s +++ b/libsrc/atari5200/conioscreen.s @@ -9,7 +9,7 @@ SCREEN_BUF = $4000 - SCREEN_BUF_SIZE .export screen_setup_20x24 - .segment "INIT" + .segment "ONCE" screen_setup_20x24: diff --git a/libsrc/atari5200/irq.s b/libsrc/atari5200/irq.s index 720113f82..263805d02 100644 --- a/libsrc/atari5200/irq.s +++ b/libsrc/atari5200/irq.s @@ -9,7 +9,7 @@ ; ------------------------------------------------------------------------ -.segment "INIT" +.segment "ONCE" initirq: lda VVBLKD diff --git a/libsrc/atmos/capslock.s b/libsrc/atmos/capslock.s index 0ed6e70da..91c484250 100644 --- a/libsrc/atmos/capslock.s +++ b/libsrc/atmos/capslock.s @@ -17,7 +17,7 @@ ;-------------------------------------------------------------------------- ; Put this constructor into a segment that can be re-used by programs. ; -.segment "INIT" +.segment "ONCE" ; Turn the capitals lock off. diff --git a/libsrc/atmos/cgetc.s b/libsrc/atmos/cgetc.s index e4ea15ac6..64d597bc6 100644 --- a/libsrc/atmos/cgetc.s +++ b/libsrc/atmos/cgetc.s @@ -55,10 +55,10 @@ .endproc ; ------------------------------------------------------------------------ -; Switch the cursor off. Code goes into the INIT segment +; Switch the cursor off. Code goes into the ONCE segment ; which may be reused after it is run. -.segment "INIT" +.segment "ONCE" initcgetc: lsr STATUS diff --git a/libsrc/atmos/irq.s b/libsrc/atmos/irq.s index ed443caae..751c860f2 100644 --- a/libsrc/atmos/irq.s +++ b/libsrc/atmos/irq.s @@ -9,7 +9,7 @@ ; ------------------------------------------------------------------------ -.segment "INIT" +.segment "ONCE" initirq: lda IRQVec diff --git a/libsrc/atmos/mainargs.s b/libsrc/atmos/mainargs.s index d6d9ed1ef..8b57d9855 100644 --- a/libsrc/atmos/mainargs.s +++ b/libsrc/atmos/mainargs.s @@ -17,10 +17,10 @@ REM = $9d ; BASIC token-code ;--------------------------------------------------------------------------- -; Get possible command-line arguments. Goes into the special INIT segment, +; Get possible command-line arguments. Goes into the special ONCE segment, ; which may be reused after the startup code is run -.segment "INIT" +.segment "ONCE" .proc initmainargs diff --git a/libsrc/atmos/read.s b/libsrc/atmos/read.s index 324ac789e..edf9d161d 100644 --- a/libsrc/atmos/read.s +++ b/libsrc/atmos/read.s @@ -69,7 +69,7 @@ L9: lda ptr3 ;-------------------------------------------------------------------------- ; initstdin: Reset the stdin console. -.segment "INIT" +.segment "ONCE" initstdin: ldx #<-1 diff --git a/libsrc/c128/cgetc.s b/libsrc/c128/cgetc.s index 46f13d197..7cb4c159e 100644 --- a/libsrc/c128/cgetc.s +++ b/libsrc/c128/cgetc.s @@ -42,7 +42,7 @@ L2: jsr KBDREAD ; Read char and return in A .bss keyvec: .res 2 -.segment "INIT" +.segment "ONCE" initcgetc: ; Save the old vector diff --git a/libsrc/c128/crt0.s b/libsrc/c128/crt0.s index 4c6a0f7d9..5891bacf3 100644 --- a/libsrc/c128/crt0.s +++ b/libsrc/c128/crt0.s @@ -108,7 +108,7 @@ L2: lda zpsave,x ; ------------------------------------------------------------------------ ; Data -.segment "INITBSS" +.segment "INIT" zpsave: .res zpspace diff --git a/libsrc/c128/irq.s b/libsrc/c128/irq.s index 79aa8faaa..9f6d0c6d1 100644 --- a/libsrc/c128/irq.s +++ b/libsrc/c128/irq.s @@ -9,7 +9,7 @@ ; ------------------------------------------------------------------------ -.segment "INIT" +.segment "ONCE" initirq: lda IRQVec diff --git a/libsrc/c128/mainargs.s b/libsrc/c128/mainargs.s index dcd5a11bd..f53ceafa0 100644 --- a/libsrc/c128/mainargs.s +++ b/libsrc/c128/mainargs.s @@ -32,10 +32,10 @@ MAXARGS = 10 ; Maximum number of arguments allowed REM = $8f ; BASIC token-code NAME_LEN = 16 ; Maximum length of command-name -; Get possible command-line arguments. Goes into the special INIT segment, +; Get possible command-line arguments. Goes into the special ONCE segment, ; which may be reused after the startup code is run -.segment "INIT" +.segment "ONCE" initmainargs: @@ -127,7 +127,7 @@ done: lda #