diff --git a/libsrc/supervision/crt0.s b/libsrc/supervision/crt0.s index 6a3614476..bb82de3ee 100644 --- a/libsrc/supervision/crt0.s +++ b/libsrc/supervision/crt0.s @@ -9,6 +9,7 @@ .import initlib, donelib, copydata .import zerobss .import __RAM_START__, __RAM_SIZE__ ; Linker generated + .import __STACKSIZE__ ; Linker generated .include "zeropage.inc" .include "supervision.inc" @@ -30,9 +31,9 @@ reset: ; initialize data jsr copydata - lda #>(__RAM_START__ + __RAM_SIZE__) + lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__) sta sp+1 ; Set argument stack ptr - stz sp ; #<(__RAM_START__ + __RAM_SIZE__) + stz sp ; #<(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__) jsr initlib jsr _main _exit: jsr donelib diff --git a/src/ld65/cfg/supervision-128k.cfg b/src/ld65/cfg/supervision-128k.cfg index 7f3ee51cc..0c2d1b36b 100644 --- a/src/ld65/cfg/supervision-128k.cfg +++ b/src/ld65/cfg/supervision-128k.cfg @@ -4,8 +4,11 @@ # ld65 config file # ld65 --config supervision.cfg -o .bin .o +SYMBOLS { + __STACKSIZE__: value = $0100, weak = yes; # 1 page stack +} MEMORY { - RAM: start = $0000, size = $2000; + RAM: start = $0000, size = $2000 - __STACKSIZE__; VRAM: start = $4000, size = $2000; BANKROM1: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O; BANKROM2: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O; diff --git a/src/ld65/cfg/supervision-16k.cfg b/src/ld65/cfg/supervision-16k.cfg index 5ec5db54e..791133e7b 100644 --- a/src/ld65/cfg/supervision-16k.cfg +++ b/src/ld65/cfg/supervision-16k.cfg @@ -2,14 +2,17 @@ # ld65 config file # ld65 --config supervision16.cfg -o .bin .o + +SYMBOLS { + __STACKSIZE__: value = $0100, weak = yes; # 1 page stack +} MEMORY { ZP: start = $0000, size = $0100; CPUSTACK: start = $0100, size = $0100; - RAM: start = $0200, size = $1E00; + RAM: start = $0200, size = $1E00 - __STACKSIZE__; VRAM: start = $4000, size = $2000; ROM: start = $C000, size = $4000, fill = yes, fillval = $ff, file=%O, define=yes; } - SEGMENTS { LOWCODE: load = ROM, type = ro, optional = yes; INIT: load = ROM, type = ro, define = yes, optional = yes; diff --git a/src/ld65/cfg/supervision-64k.cfg b/src/ld65/cfg/supervision-64k.cfg index 4cafdecae..6ae587296 100644 --- a/src/ld65/cfg/supervision-64k.cfg +++ b/src/ld65/cfg/supervision-64k.cfg @@ -4,8 +4,11 @@ # ld65 config file # ld65 --config supervision.cfg -o .bin .o +SYMBOLS { + __STACKSIZE__: value = $0100, weak = yes; # 1 page stack +} MEMORY { - RAM: start = $0000, size = $2000; + RAM: start = $0000, size = $2000 - __STACKSIZE__; VRAM: start = $4000, size = $2000; BANKROM1: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O; BANKROM2: start = $8000, size = $4000, fill = yes, fillval = $FF, file = %O;