1
0
mirror of https://github.com/cc65/cc65.git synced 2026-04-24 14:17:23 +00:00

Fixed the break stuff

git-svn-id: svn://svn.cc65.org/cc65/trunk@1593 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz
2002-11-22 23:41:20 +00:00
parent 81827cbb45
commit 96e87c49ee
3 changed files with 96 additions and 41 deletions
+14 -29
View File
@@ -6,8 +6,8 @@
;
.export _set_brk, _reset_brk
.destructor _reset_brk
.export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
.import brk_jmp
.include "plus4.inc"
@@ -19,11 +19,11 @@ _brk_y: .res 1
_brk_sr: .res 1
_brk_pc: .res 2
oldvec: .res 2 ; Old vector
oldvec: .res 2 ; Old vector
.data
uservec: jmp $FFFF ; Patched at runtime
uservec: jmp $FFFF ; Patched at runtime
.code
@@ -32,21 +32,12 @@ uservec: jmp $FFFF ; Patched at runtime
.proc _set_brk
sta uservec+1
stx uservec+2 ; Set the user vector
stx uservec+2 ; Set the user vector
lda oldvec
ora oldvec+1 ; Did we save the vector already?
bne L1 ; Jump if we installed the handler already
lda BRKVec
sta oldvec
lda BRKVec+1
sta oldvec+1 ; Save the old vector
L1: lda #<brk_handler ; Set the break vector to our routine
ldx #>brk_handler
sta BRKVec
stx BRKVec+1
lda #<brk_handler ; Set the break vector to our routine
sta brk_jmp+1
lda #>brk_handler
sta brk_jmp+2
rts
.endproc
@@ -55,26 +46,20 @@ L1: lda #<brk_handler ; Set the break vector to our routine
; Reset the break vector
.proc _reset_brk
lda oldvec
ldx oldvec+1
beq @L9 ; Jump if vector not installed
sta BRKVec
stx BRKVec+1
lda #$00
sta oldvec ; Clear the old vector
stx oldvec+1
@L9: rts
lda #$00
sta brk_jmp+1
sta brk_jmp+2 ; Reset the vector
rts
.endproc
; Break handler, called if a break occurs
; Break handler, called if a break occurs. Note: Y is not on the stack!
.proc brk_handler
pla
sta _brk_y
sty _brk_y
pla
sta _brk_x
pla