1
0
mirror of https://github.com/cc65/cc65.git synced 2025-01-12 17:30:50 +00:00

Exclude (small) stack from RAM memory area (like on most other targets) to make explicit that the linker may not use all RAM. If the cc65 parameter stack isn't used at all the __STACKSIZE__ symbol may be overridden on the linker command line with -D __STACKSIZE__=0.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4820 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
ol.sc 2010-10-02 10:20:00 +00:00
parent 172d33e584
commit aaf90c1252
4 changed files with 16 additions and 6 deletions

View File

@ -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

View File

@ -4,8 +4,11 @@
# ld65 config file
# ld65 --config supervision.cfg -o <prog>.bin <prog>.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;

View File

@ -2,14 +2,17 @@
# ld65 config file
# ld65 --config supervision16.cfg -o <prog>.bin <prog>.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;

View File

@ -4,8 +4,11 @@
# ld65 config file
# ld65 --config supervision.cfg -o <prog>.bin <prog>.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;