From d0c41ecee9263b29113cde0bbbf46a1f08f710d9 Mon Sep 17 00:00:00 2001 From: Christian Groessler Date: Wed, 18 Sep 2013 00:38:29 +0200 Subject: [PATCH] Default atatixl.cfg file now leaves the character generator at $E000. This reduces the potential to flicker, but creates two separate memory areas in the high memory. For applications which require a large continuous memory space in high memory, atarixl-largehimem.cfg is provided. With high IRQ activity or DL interrupt there might be flicker. --- cfg/atarixl-largehimem.cfg | 89 ++++++++++++++++++++++++++++++++++++++ cfg/atarixl.cfg | 13 +++--- 2 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 cfg/atarixl-largehimem.cfg diff --git a/cfg/atarixl-largehimem.cfg b/cfg/atarixl-largehimem.cfg new file mode 100644 index 000000000..94aff46a5 --- /dev/null +++ b/cfg/atarixl-largehimem.cfg @@ -0,0 +1,89 @@ +FEATURES { + STARTADDRESS: default = $2400; +} + +SYMBOLS { + __STACKSIZE__: type = weak, value = $0800; # 2k stack + __STARTADDRESS__: type = export, value = %S; + syschk: type = import; # force inclusion of SYSCHK + sramprep: type = import; # force inclusion of SRPREP +} + +MEMORY { + ZP: file = "", define = yes, start = $0082, size = $007E; + +# just $FFFF + 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; + +# "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; + +# "main program" load chunk + MAINHDR: file = %O, start = $0000, size = $0004; + RAM: file = %O, define = yes, start = %S + + __SAVEAREA_SIZE__ + + __LOWDATA_SIZE__, size = $D000 - + __STACKSIZE__ - + %S - + __SAVEAREA_SIZE__ - + __LOWDATA_SIZE__; + +# defines entry point into program + TRAILER: file = %O, start = $0000, size = $0006; + +# address of relocated character generator + CHARGEN: file = "", define = yes, start = $D800, size = $0400; + +# memory beneath the ROM + HIDDEN_RAM: file = "", define = yes, start = $DC00, size = $FFF0 - $DC00; +} + +SEGMENTS { + EXEHDR: load = HEADER, type = ro; + + SYSCHKHDR: load = SYSCHKHDR, type = ro, optional = yes; + SYSCHK: load = SYSCHKCHNK, type = rw, define = yes, optional = yes; + SYSCHKTRL: load = SYSCHKTRL, type = ro, optional = yes; + + SRPREPHDR: load = SRPREPHDR, type = ro; + SAVEAREA: load = SRPREPCHNK, type = bss, define = yes; # shared btw. SRPREP and RAM + LOWDATA: load = SRPREPCHNK, type = bss, define = yes; # " " " " " " " " + SRPREP: load = SRPREPCHNK, type = rw, define = yes; + SHADOW_RAM: load = SRPREPCHNK, run = HIDDEN_RAM, type = rw, define = yes, optional = yes; + SHADOW_RAM2: load = SRPREPCHNK, run = HIDDEN_RAM, type = rw, define = yes, optional = yes; + SRPREPTRL: load = SRPREPTRL, type = ro; + + 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; + CODE: load = RAM, type = ro, define = yes; + RODATA: load = RAM, type = ro; + DATA: load = RAM, type = rw; + 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; + 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/atarixl.cfg b/cfg/atarixl.cfg index 94aff46a5..e400c6bea 100644 --- a/cfg/atarixl.cfg +++ b/cfg/atarixl.cfg @@ -38,11 +38,14 @@ MEMORY { # defines entry point into program TRAILER: file = %O, start = $0000, size = $0006; -# address of relocated character generator - CHARGEN: file = "", define = yes, start = $D800, size = $0400; +# memory beneath the ROM preceeding the character generator + 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; # memory beneath the ROM - HIDDEN_RAM: file = "", define = yes, start = $DC00, size = $FFF0 - $DC00; + HIDDEN_RAM: file = "", define = yes, start = $E400, size = $FFF0 - $E400; } SEGMENTS { @@ -56,8 +59,8 @@ SEGMENTS { SAVEAREA: load = SRPREPCHNK, type = bss, define = yes; # shared btw. SRPREP and RAM LOWDATA: load = SRPREPCHNK, type = bss, define = yes; # " " " " " " " " SRPREP: load = SRPREPCHNK, type = rw, define = yes; - SHADOW_RAM: load = SRPREPCHNK, run = HIDDEN_RAM, type = rw, define = yes, optional = yes; - SHADOW_RAM2: load = SRPREPCHNK, run = HIDDEN_RAM, type = rw, define = yes, optional = yes; + SHADOW_RAM: load = SRPREPCHNK, run = HIDDEN_RAM, type = rw, define = yes, optional = yes; + SHADOW_RAM2: load = SRPREPCHNK, run = HIDDEN_RAM2, type = rw, define = yes, optional = yes; SRPREPTRL: load = SRPREPTRL, type = ro; MAINHDR: load = MAINHDR, type = ro; -- 2.39.5