Use the new declarations from the zeropage include file. In interrupt handlers
that call C code, we don't need to save the register bank, because the C code will save it, when needed. git-svn-id: svn://svn.cc65.org/cc65/trunk@5909 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
673b982b22
commit
dc4e898abd
5 changed files with 36 additions and 33 deletions
|
@ -1,15 +1,16 @@
|
||||||
;
|
;
|
||||||
; _printf: Basic layer for all printf type functions.
|
; _printf: Basic layer for all printf type functions.
|
||||||
;
|
;
|
||||||
; Ullrich von Bassewitz, 21.10.2000
|
; Ullrich von Bassewitz, 2000-10-21
|
||||||
;
|
;
|
||||||
|
|
||||||
|
.include "zeropage.inc"
|
||||||
|
|
||||||
.export __printf
|
.export __printf
|
||||||
|
|
||||||
.import popax, pushax, pusheax, decsp6, push1, axlong, axulong
|
.import popax, pushax, pusheax, decsp6, push1, axlong, axulong
|
||||||
.import _ltoa, _ultoa
|
.import _ltoa, _ultoa
|
||||||
.import _strlower, _strlen
|
.import _strlower, _strlen
|
||||||
.importzp sp, ptr1, ptr2, tmp1, regbank, sreg
|
|
||||||
|
|
||||||
.macpack generic
|
.macpack generic
|
||||||
|
|
||||||
|
@ -750,7 +751,7 @@ HaveArg:
|
||||||
.bss
|
.bss
|
||||||
|
|
||||||
; Save area for the zero page registers
|
; Save area for the zero page registers
|
||||||
RegSave: .res 6
|
RegSave: .res regbanksize
|
||||||
|
|
||||||
; One character argument for OutFunc
|
; One character argument for OutFunc
|
||||||
CharArg: .byte 0
|
CharArg: .byte 0
|
||||||
|
|
|
@ -6,14 +6,31 @@
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _set_irq, _reset_irq
|
.export _set_irq, _reset_irq
|
||||||
.interruptor clevel_irq, 1 ; Export as low priority IRQ handler
|
.interruptor clevel_irq, 1 ; Export as low priority IRQ handler
|
||||||
.import popax
|
.import popax
|
||||||
|
.importzp __ZP_START__
|
||||||
|
|
||||||
.include "zeropage.inc"
|
.include "zeropage.inc"
|
||||||
|
|
||||||
.macpack generic
|
.macpack generic
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.data
|
||||||
|
|
||||||
|
irqvec: jmp $00FF ; Patched at runtime
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.bss
|
||||||
|
|
||||||
|
irqsp: .res 2
|
||||||
|
|
||||||
|
zpsave: .res zpsavespace
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
|
||||||
.proc _set_irq
|
.proc _set_irq
|
||||||
|
|
||||||
; Keep clevel_irq from being called right now
|
; Keep clevel_irq from being called right now
|
||||||
|
@ -59,8 +76,8 @@
|
||||||
rts
|
rts
|
||||||
|
|
||||||
; Save our zero page locations
|
; Save our zero page locations
|
||||||
@L1: ldx #zpspace-1
|
@L1: ldx #.sizeof(::zpsave)-1
|
||||||
@L2: lda sp,x
|
@L2: lda __ZP_START__,x
|
||||||
sta zpsave,x
|
sta zpsave,x
|
||||||
dex
|
dex
|
||||||
bpl @L2
|
bpl @L2
|
||||||
|
@ -75,9 +92,9 @@
|
||||||
jsr irqvec
|
jsr irqvec
|
||||||
|
|
||||||
; Copy back our zero page content
|
; Copy back our zero page content
|
||||||
ldx #zpspace-1
|
ldx #.sizeof(::zpsave)-1
|
||||||
@L3: ldy zpsave,x
|
@L3: ldy zpsave,x
|
||||||
sty sp,x
|
sty __ZP_START__,x
|
||||||
dex
|
dex
|
||||||
bpl @L3
|
bpl @L3
|
||||||
|
|
||||||
|
@ -87,16 +104,3 @@
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.data
|
|
||||||
|
|
||||||
irqvec: jmp $00FF ; Patched at runtime
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.bss
|
|
||||||
|
|
||||||
irqsp: .res 2
|
|
||||||
|
|
||||||
zpsave: .res zpspace
|
|
||||||
|
|
|
@ -35,11 +35,11 @@
|
||||||
|
|
||||||
.include "o65.inc"
|
.include "o65.inc"
|
||||||
.include "modload.inc"
|
.include "modload.inc"
|
||||||
|
.include "zeropage.inc"
|
||||||
|
|
||||||
.import pushax, pusha0, push0, push1, decax1
|
.import pushax, pusha0, push0, push1, decax1
|
||||||
.import _malloc, _free, _bzero
|
.import _malloc, _free, _bzero
|
||||||
.import __ZP_START__ ; Linker generated
|
.import __ZP_START__ ; Linker generated
|
||||||
.importzp sp, ptr1, tmp1, regbank
|
|
||||||
|
|
||||||
.macpack generic
|
.macpack generic
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ TPtr = regbank+4 ; Pointer to module data for relocation
|
||||||
|
|
||||||
; Save areas and error recovery data
|
; Save areas and error recovery data
|
||||||
Stack: .byte 0 ; Old stackpointer
|
Stack: .byte 0 ; Old stackpointer
|
||||||
RegBankSave: .res 6 ; Save area for register bank
|
RegBankSave: .res regbanksize ; Save area for register bank
|
||||||
|
|
||||||
; The header of the o65 file. Since we don't need the first 8 bytes any
|
; The header of the o65 file. Since we don't need the first 8 bytes any
|
||||||
; longer, once we've checked them, we will overlay them with other data to
|
; longer, once we've checked them, we will overlay them with other data to
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _DbgInit
|
.export _DbgInit
|
||||||
.export _DbgSP, _DbgCS, _DbgHI
|
.export _DbgSP, _DbgCS, _DbgHI
|
||||||
.import popax, return0, _DbgEntry, _set_brk, _end_brk
|
.import popax, return0, _DbgEntry, _set_brk, _end_brk
|
||||||
.import _DbgBreaks
|
.import _DbgBreaks
|
||||||
.import _brk_pc
|
.import _brk_pc
|
||||||
|
@ -63,7 +63,8 @@ DbgStack:
|
||||||
CTemp:
|
CTemp:
|
||||||
_DbgCS: .res 2 ; sp
|
_DbgCS: .res 2 ; sp
|
||||||
_DbgHI: .res 2 ; sreg
|
_DbgHI: .res 2 ; sreg
|
||||||
.res (zpspace-4) ; Other stuff
|
.res (zpsavespace-4) ; Other stuff
|
||||||
|
|
||||||
_DbgSP: .res 1
|
_DbgSP: .res 1
|
||||||
retsav: .res 2 ; Save buffer for return address
|
retsav: .res 2 ; Save buffer for return address
|
||||||
|
|
||||||
|
@ -72,7 +73,7 @@ retsav: .res 2 ; Save buffer for return address
|
||||||
; Swap the C temporaries
|
; Swap the C temporaries
|
||||||
|
|
||||||
DbgSwapZP:
|
DbgSwapZP:
|
||||||
ldy #zpspace-1
|
ldy #zpsavespace-1
|
||||||
Swap1: ldx CTemp,y
|
Swap1: ldx CTemp,y
|
||||||
lda <__ZP_START__,y
|
lda <__ZP_START__,y
|
||||||
sta CTemp,y
|
sta CTemp,y
|
||||||
|
@ -91,7 +92,7 @@ Swap1: ldx CTemp,y
|
||||||
; reset the breakpoints. See declaration of struct breakpoint in the C
|
; reset the breakpoints. See declaration of struct breakpoint in the C
|
||||||
; source
|
; source
|
||||||
|
|
||||||
MaxBreaks = 48 ; 4*12
|
MaxBreaks = 48 ; 4*12
|
||||||
|
|
||||||
ResetDbgBreaks:
|
ResetDbgBreaks:
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
|
@ -4,10 +4,7 @@
|
||||||
; CC65 runtime: zeropage usage
|
; CC65 runtime: zeropage usage
|
||||||
;
|
;
|
||||||
|
|
||||||
.exportzp sp, sreg, regsave
|
.include "zeropage.inc"
|
||||||
.exportzp ptr1, ptr2, ptr3, ptr4
|
|
||||||
.exportzp tmp1, tmp2, tmp3, tmp4
|
|
||||||
.exportzp regbank
|
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -15,7 +12,7 @@
|
||||||
|
|
||||||
sp: .res 2 ; Stack pointer
|
sp: .res 2 ; Stack pointer
|
||||||
sreg: .res 2 ; Secondary register/high 16 bit for longs
|
sreg: .res 2 ; Secondary register/high 16 bit for longs
|
||||||
regsave: .res 4 ; slot to save/restore (E)AX into
|
regsave: .res 4 ; Slot to save/restore (E)AX into
|
||||||
ptr1: .res 2
|
ptr1: .res 2
|
||||||
ptr2: .res 2
|
ptr2: .res 2
|
||||||
ptr3: .res 2
|
ptr3: .res 2
|
||||||
|
@ -24,7 +21,7 @@ tmp1: .res 1
|
||||||
tmp2: .res 1
|
tmp2: .res 1
|
||||||
tmp3: .res 1
|
tmp3: .res 1
|
||||||
tmp4: .res 1
|
tmp4: .res 1
|
||||||
regbank: .res 6 ; 6 byte register bank
|
regbank: .res regbanksize ; Register bank
|
||||||
|
|
||||||
; Add an empty EXTZP zeropage segment to avoid linker warnings that this
|
; Add an empty EXTZP zeropage segment to avoid linker warnings that this
|
||||||
; segment does not exist (it does not exist in most builtin linker configs
|
; segment does not exist (it does not exist in most builtin linker configs
|
||||||
|
|
Loading…
Add table
Reference in a new issue