]> git.sur5r.net Git - cc65/commitdiff
Use the new declarations from the zeropage include file. In interrupt handlers
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 4 Nov 2012 15:23:05 +0000 (15:23 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 4 Nov 2012 15:23:05 +0000 (15:23 +0000)
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

libsrc/common/_printf.s
libsrc/common/interrupt.s
libsrc/common/modload.s
libsrc/dbg/dbgsupp.s
libsrc/runtime/zeropage.s

index a8470df3e55ddc802ee455b41c0cd34e7d79c84e..2169896ba4ddcf683ae850b650b5adc09827d05a 100644 (file)
@@ -1,15 +1,16 @@
 ;
 ; _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
 
        .import         popax, pushax, pusheax, decsp6, push1, axlong, axulong
        .import         _ltoa, _ultoa
        .import         _strlower, _strlen
-       .importzp       sp, ptr1, ptr2, tmp1, regbank, sreg
 
        .macpack        generic
 
@@ -750,7 +751,7 @@ HaveArg:
 .bss
 
 ; Save area for the zero page registers
-RegSave:       .res    6
+RegSave:       .res    regbanksize
 
 ; One character argument for OutFunc
 CharArg:       .byte   0
index 574acab55a9e6072d973ed78d4b52aa79b87891b..c7d0d896c2bfdcfc13ce18c5190f012e9206b2ae 100644 (file)
@@ -6,14 +6,31 @@
 ;
 
        .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
+        .importzp       __ZP_START__
 
        .include        "zeropage.inc"
 
        .macpack        generic
 
 
+; ---------------------------------------------------------------------------
+
+.data
+
+irqvec:        jmp     $00FF           ; Patched at runtime
+
+; ---------------------------------------------------------------------------
+
+.bss
+
+irqsp: .res    2
+
+zpsave: .res    zpsavespace
+
+; ---------------------------------------------------------------------------
+
 .proc  _set_irq
 
        ; Keep clevel_irq from being called right now
@@ -59,8 +76,8 @@
        rts
 
        ; Save our zero page locations
-@L1:   ldx     #zpspace-1
-@L2:    lda     sp,x
+@L1:   ldx     #.sizeof(::zpsave)-1
+@L2:    lda     __ZP_START__,x
        sta     zpsave,x
        dex
        bpl     @L2
@@ -75,9 +92,9 @@
        jsr     irqvec
 
        ; Copy back our zero page content
-       ldx     #zpspace-1
+       ldx     #.sizeof(::zpsave)-1
 @L3:    ldy     zpsave,x
-       sty     sp,x
+       sty     __ZP_START__,x
        dex
        bpl     @L3
 
 
 .endproc
 
-; ---------------------------------------------------------------------------
-
-.data
-
-irqvec:        jmp     $00FF           ; Patched at runtime
-
-; ---------------------------------------------------------------------------
-
-.bss
-
-irqsp: .res    2
-
-zpsave: .res    zpspace
index 63776f1c8ea17af25042b83666e115d6a1afd039..2a4371215e03aadb464f2c07e91f0acb71bd6cc2 100644 (file)
 
         .include        "o65.inc"
         .include        "modload.inc"
+        .include        "zeropage.inc"
 
         .import         pushax, pusha0, push0, push1, decax1
         .import         _malloc, _free, _bzero
         .import         __ZP_START__    ; Linker generated
-        .importzp       sp, ptr1, tmp1, regbank
 
         .macpack        generic
 
@@ -58,7 +58,7 @@ TPtr            = regbank+4             ; Pointer to module data for relocation
 
 ; Save areas and error recovery data
 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
 ; longer, once we've checked them, we will overlay them with other data to
index 5ab0f5863fa2b967e2593835fc08a7c6aa426482..0f9a7041c07265d1a6eb9d0d268fdc10374c0da8 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
        .export         _DbgInit
-               .export         _DbgSP, _DbgCS, _DbgHI
+               .export         _DbgSP, _DbgCS, _DbgHI
        .import         popax, return0, _DbgEntry, _set_brk, _end_brk
        .import         _DbgBreaks
        .import         _brk_pc
@@ -63,7 +63,8 @@ DbgStack:
 CTemp:
 _DbgCS:        .res    2               ; sp
 _DbgHI:        .res    2               ; sreg
-       .res    (zpspace-4)     ; Other stuff
+               .res    (zpsavespace-4) ; Other stuff
+
 _DbgSP:        .res    1
 retsav:        .res    2               ; Save buffer for return address
 
@@ -72,7 +73,7 @@ retsav:       .res    2               ; Save buffer for return address
 ; Swap the C temporaries
 
 DbgSwapZP:
-       ldy     #zpspace-1
+       ldy     #zpsavespace-1
 Swap1:         ldx     CTemp,y
                lda     <__ZP_START__,y
                sta     CTemp,y
@@ -91,7 +92,7 @@ Swap1:        ldx     CTemp,y
 ; reset the breakpoints. See declaration of struct breakpoint in the C
 ; source
 
-MaxBreaks      = 48            ; 4*12
+MaxBreaks      = 48            ; 4*12
 
 ResetDbgBreaks:
                ldy     #0
index ab87901ddf4f3198824d849a90efd4971ececed2..8d5818344fcd42486cd41dbad19b5bbf9e7d7128 100644 (file)
@@ -4,10 +4,7 @@
 ; CC65 runtime: zeropage usage
 ;
 
-       .exportzp       sp, sreg, regsave
-       .exportzp       ptr1, ptr2, ptr3, ptr4
-       .exportzp       tmp1, tmp2, tmp3, tmp4
-       .exportzp       regbank
+.include        "zeropage.inc"
 
 ; ------------------------------------------------------------------------
 
@@ -15,7 +12,7 @@
 
 sp:            .res    2       ; Stack pointer
 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
 ptr2:          .res    2
 ptr3:          .res    2
@@ -24,7 +21,7 @@ tmp1:         .res    1
 tmp2:          .res    1
 tmp3:          .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
 ; segment does not exist (it does not exist in most builtin linker configs