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:
parent
46cb3bb2e8
commit
6ec87c5dd9
@ -27,7 +27,7 @@ __heaplast:
|
|||||||
|
|
||||||
; Initialization. Will be called from startup!
|
; Initialization. Will be called from startup!
|
||||||
|
|
||||||
.code
|
.segment "INIT"
|
||||||
|
|
||||||
initheap:
|
initheap:
|
||||||
sec
|
sec
|
||||||
@ -39,3 +39,4 @@ initheap:
|
|||||||
sta __heapend+1
|
sta __heapend+1
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
;
|
;
|
||||||
; Ullrich von Bassewitz, 17.09.1998
|
; Ullrich von Bassewitz, 1998-09-17, 2005-02-26.
|
||||||
;
|
;
|
||||||
; Zero the bss segment.
|
; Zero the bss segment.
|
||||||
;
|
;
|
||||||
@ -9,7 +9,7 @@
|
|||||||
.importzp ptr1
|
.importzp ptr1
|
||||||
|
|
||||||
|
|
||||||
.code
|
.segment "INIT"
|
||||||
|
|
||||||
zerobss:
|
zerobss:
|
||||||
lda #<__BSS_RUN__
|
lda #<__BSS_RUN__
|
||||||
|
@ -20,17 +20,17 @@
|
|||||||
|
|
||||||
.macpack cpu
|
.macpack cpu
|
||||||
|
|
||||||
.code
|
|
||||||
|
|
||||||
; --------------------------------------------------------------------------
|
; --------------------------------------------------------------------------
|
||||||
; Initialize library modules
|
; Initialize library modules
|
||||||
|
|
||||||
|
.segment "INIT"
|
||||||
|
|
||||||
.proc initlib
|
.proc initlib
|
||||||
|
|
||||||
ldy #<(__CONSTRUCTOR_COUNT__*2)
|
ldy #<(__CONSTRUCTOR_COUNT__*2)
|
||||||
beq exit
|
beq exit
|
||||||
lda #<__CONSTRUCTOR_TABLE__
|
lda #<__CONSTRUCTOR_TABLE__
|
||||||
ldx #>__CONSTRUCTOR_TABLE__
|
ldx #>__CONSTRUCTOR_TABLE__
|
||||||
jmp condes
|
jmp condes
|
||||||
exit: rts
|
exit: rts
|
||||||
|
|
||||||
@ -40,13 +40,16 @@ exit: rts
|
|||||||
; --------------------------------------------------------------------------
|
; --------------------------------------------------------------------------
|
||||||
; Cleanup library modules
|
; Cleanup library modules
|
||||||
|
|
||||||
|
.code
|
||||||
|
|
||||||
.proc donelib
|
.proc donelib
|
||||||
|
|
||||||
ldy #<(__DESTRUCTOR_COUNT__*2)
|
ldy #<(__DESTRUCTOR_COUNT__*2)
|
||||||
beq initlib::exit
|
beq exit
|
||||||
lda #<__DESTRUCTOR_TABLE__
|
lda #<__DESTRUCTOR_TABLE__
|
||||||
ldx #>__DESTRUCTOR_TABLE__
|
ldx #>__DESTRUCTOR_TABLE__
|
||||||
jmp condes
|
jmp condes
|
||||||
|
exit: rts
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
@ -22,24 +22,25 @@
|
|||||||
; Use macros for better readability
|
; Use macros for better readability
|
||||||
.macpack generic
|
.macpack generic
|
||||||
|
|
||||||
.code
|
|
||||||
|
|
||||||
; ----------------------------------------------------------------------------
|
; ----------------------------------------------------------------------------
|
||||||
; Initialization code. This is a constructor, so it is called on startup if
|
; Initialization code. This is a constructor, so it is called on startup if
|
||||||
; the linker has detected references to this module.
|
; the linker has detected references to this module.
|
||||||
|
|
||||||
|
.segment "INIT"
|
||||||
|
|
||||||
.proc initstkchk
|
.proc initstkchk
|
||||||
|
|
||||||
lda sp
|
lda sp
|
||||||
sta initialsp
|
sta initialsp
|
||||||
sub #<__STACKSIZE__
|
sub #<__STACKSIZE__
|
||||||
sta lowwater
|
sta lowwater
|
||||||
lda sp+1
|
lda sp+1
|
||||||
sta initialsp+1
|
sta initialsp+1
|
||||||
sbc #>__STACKSIZE__
|
sbc #>__STACKSIZE__
|
||||||
add #1 ; Add 256 bytes safety area
|
add #1 ; Add 256 bytes safety area
|
||||||
sta lowwater+1
|
sta lowwater+1
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
@ -47,14 +48,18 @@
|
|||||||
; 6502 stack checking routine. Does not need to save any registers.
|
; 6502 stack checking routine. Does not need to save any registers.
|
||||||
; Safety zone for the hardware stack is 12 bytes.
|
; Safety zone for the hardware stack is 12 bytes.
|
||||||
|
|
||||||
|
.code
|
||||||
|
|
||||||
stkchk: tsx
|
stkchk: tsx
|
||||||
cpx #12
|
cpx #12
|
||||||
bcc Fail ; Jump on stack overflow
|
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.
|
; C stack checking routine. Does not need to save any registers.
|
||||||
|
|
||||||
|
.code
|
||||||
|
|
||||||
cstkchk:
|
cstkchk:
|
||||||
|
|
||||||
; Check the high byte of the software stack
|
; Check the high byte of the software stack
|
||||||
@ -101,4 +106,4 @@ initialsp: .word 0
|
|||||||
lowwater: .word 0
|
lowwater: .word 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user