From 6cb572104a3bbc497caf43cff4fbbb2c9f0a51d0 Mon Sep 17 00:00:00 2001 From: cuz Date: Fri, 22 Nov 2002 22:34:46 +0000 Subject: [PATCH] Use the new LOWCODE segment git-svn-id: svn://svn.cc65.org/cc65/trunk@1589 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/c128/break.s | 64 ++++++++++++++++++++++++++++++--------------- libsrc/c128/crt0.s | 13 --------- 2 files changed, 43 insertions(+), 34 deletions(-) diff --git a/libsrc/c128/break.s b/libsrc/c128/break.s index 0ecdc85ec..4cb349444 100644 --- a/libsrc/c128/break.s +++ b/libsrc/c128/break.s @@ -8,7 +8,6 @@ .export _set_brk, _reset_brk .destructor _reset_brk .export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc - .import BRKStub, BRKOld, BRKInd .importzp ptr1 .include "c128.inc" @@ -33,24 +32,24 @@ uservec: jmp $FFFF ; Patched at runtime sta uservec+1 stx uservec+2 ; Set the user vector - lda BRKOld+1 - ora BRKOld+2 ; Did we save the vector already? - bne @L1 ; Jump if we installed the handler already + lda brk_old+1 + ora brk_old+2 ; Did we save the vector already? + bne @L1 ; Jump if we installed the handler already lda BRKVec ; Save the old vector - sta BRKOld+1 + sta brk_old+1 lda BRKVec+1 - sta BRKOld+2 + sta brk_old+2 - lda #BRKStub + lda #brk_stub sta BRKVec stx BRKVec+1 lda #brk_handler - sta BRKInd+1 - stx BRKInd+2 + sta brk_ind+1 + stx brk_ind+2 @L1: rts @@ -60,14 +59,14 @@ uservec: jmp $FFFF ; Patched at runtime ; Reset the break vector .proc _reset_brk - lda BRKOld+1 - ldx BRKOld+2 - beq @L9 ; Jump if vector not installed + lda brk_old+1 + ldx brk_old+2 + beq @L9 ; Jump if vector not installed sta BRKVec stx BRKVec+1 lda #$00 - sta BRKOld+1 ; Clear the saved vector - sta BRKOld+2 + sta brk_old+1 ; Clear the saved vector + sta brk_old+2 @L9: rts .endproc @@ -85,17 +84,17 @@ uservec: jmp $FFFF ; Patched at runtime pla sta _brk_a pla - and #$EF ; Clear break bit + and #$EF ; Clear break bit sta _brk_sr - pla ; PC low + pla ; PC low sec - sbc #2 ; Point to start of brk + sbc #2 ; Point to start of brk sta _brk_pc - pla ; PC high + pla ; PC high sbc #0 sta _brk_pc+1 - jsr uservec ; Call the user's routine + jsr uservec ; Call the user's routine lda _brk_pc+1 pha @@ -106,8 +105,31 @@ uservec: jmp $FFFF ; Patched at runtime ldx _brk_x ldy _brk_y lda _brk_a - rti ; Jump back... + rti ; Jump back... .endproc +; Break stub, must go into low (non banked) memory + +.segment "LOWCODE" + +.proc brk_stub + pla ; Get original MMU_CR value + sta MMU_CR ; And set it + jmp brk_ind ; Jump indirect to break +.endproc + +; ------------------------------------------------------------------------ +; Data + +.data + +; Old break vector preceeded by a jump opcode +brk_old: + jmp $0000 + +; Indirect vectors preceeded by a jump opcode +brk_ind: + jmp $0000 + diff --git a/libsrc/c128/crt0.s b/libsrc/c128/crt0.s index 5a66cd753..791408994 100644 --- a/libsrc/c128/crt0.s +++ b/libsrc/c128/crt0.s @@ -5,7 +5,6 @@ ; .export _exit - .export BRKStub, BRKOld, BRKInd .import condes, initlib, donelib .import initconio, doneconio, zerobss .import push0, _main @@ -189,24 +188,12 @@ IRQStub: jmp IRQInd ; Jump to the saved IRQ vector -BRKStub: - pla ; Get original MMU_CR value - sta MMU_CR ; And set it - jmp BRKInd ; Jump indirect to break - - ; ------------------------------------------------------------------------ ; Data .data zpsave: .res zpspace -; Old break vector preceeded by a jump opcode -BRKOld: jmp $0000 - -; Indirect vectors preceeded by a jump opcode -BRKInd: jmp $0000 - .bss spsave: .res 1 mmusave:.res 1 -- 2.39.5