1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-30 05:30:41 +00:00

Move initialization code into the init segment

git-svn-id: svn://svn.cc65.org/cc65/trunk@3404 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2005-02-26 09:06:46 +00:00
parent 46cb3bb2e8
commit 6ec87c5dd9
4 changed files with 31 additions and 22 deletions

View File

@ -27,7 +27,7 @@ __heaplast:
; Initialization. Will be called from startup!
.code
.segment "INIT"
initheap:
sec
@ -39,3 +39,4 @@ initheap:
sta __heapend+1
rts

View File

@ -1,5 +1,5 @@
;
; Ullrich von Bassewitz, 17.09.1998
; Ullrich von Bassewitz, 1998-09-17, 2005-02-26.
;
; Zero the bss segment.
;
@ -9,7 +9,7 @@
.importzp ptr1
.code
.segment "INIT"
zerobss:
lda #<__BSS_RUN__

View File

@ -20,11 +20,11 @@
.macpack cpu
.code
; --------------------------------------------------------------------------
; Initialize library modules
.segment "INIT"
.proc initlib
ldy #<(__CONSTRUCTOR_COUNT__*2)
@ -40,13 +40,16 @@ exit: rts
; --------------------------------------------------------------------------
; Cleanup library modules
.code
.proc donelib
ldy #<(__DESTRUCTOR_COUNT__*2)
beq initlib::exit
beq exit
lda #<__DESTRUCTOR_TABLE__
ldx #>__DESTRUCTOR_TABLE__
jmp condes
exit: rts
.endproc

View File

@ -22,12 +22,13 @@
; Use macros for better readability
.macpack generic
.code
; ----------------------------------------------------------------------------
; Initialization code. This is a constructor, so it is called on startup if
; the linker has detected references to this module.
.segment "INIT"
.proc initstkchk
lda sp
@ -47,6 +48,8 @@
; 6502 stack checking routine. Does not need to save any registers.
; Safety zone for the hardware stack is 12 bytes.
.code
stkchk: tsx
cpx #12
bcc Fail ; Jump on stack overflow
@ -55,6 +58,8 @@ stkchk: tsx
; ----------------------------------------------------------------------------
; C stack checking routine. Does not need to save any registers.
.code
cstkchk:
; Check the high byte of the software stack