1
0
mirror of https://github.com/cc65/cc65.git synced 2024-07-01 08:29:37 +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,17 +20,17 @@
.macpack cpu
.code
; --------------------------------------------------------------------------
; Initialize library modules
.segment "INIT"
.proc initlib
ldy #<(__CONSTRUCTOR_COUNT__*2)
ldy #<(__CONSTRUCTOR_COUNT__*2)
beq exit
lda #<__CONSTRUCTOR_TABLE__
ldx #>__CONSTRUCTOR_TABLE__
lda #<__CONSTRUCTOR_TABLE__
ldx #>__CONSTRUCTOR_TABLE__
jmp condes
exit: rts
@ -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,24 +22,25 @@
; 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
sta initialsp
sub #<__STACKSIZE__
sta lowwater
lda sp+1
sta initialsp+1
sbc #>__STACKSIZE__
add #1 ; Add 256 bytes safety area
sta lowwater+1
rts
lda sp
sta initialsp
sub #<__STACKSIZE__
sta lowwater
lda sp+1
sta initialsp+1
sbc #>__STACKSIZE__
add #1 ; Add 256 bytes safety area
sta lowwater+1
rts
.endproc
@ -47,14 +48,18 @@
; 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
rts ; Return if ok
rts ; Return if ok
; ----------------------------------------------------------------------------
; C stack checking routine. Does not need to save any registers.
.code
cstkchk:
; Check the high byte of the software stack
@ -101,4 +106,4 @@ initialsp: .word 0
lowwater: .word 0