Skip to content

Commit

Permalink
Exclude (small) stack from RAM memory area (like on most other target…
Browse files Browse the repository at this point in the history
…s) 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
  • Loading branch information
ol.sc committed Oct 2, 2010
1 parent 172d33e commit aaf90c1
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 6 deletions.
5 changes: 3 additions & 2 deletions libsrc/supervision/crt0.s
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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
Expand Down
5 changes: 4 additions & 1 deletion src/ld65/cfg/supervision-128k.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
7 changes: 5 additions & 2 deletions src/ld65/cfg/supervision-16k.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
5 changes: 4 additions & 1 deletion src/ld65/cfg/supervision-64k.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit aaf90c1

Please sign in to comment.