]> git.sur5r.net Git - cc65/blobdiff - libsrc/plus4/break.s
no TGI_ERR_NO_MEM or TGI_ERR_NO_IOCB anymore: replaced by TGI_ERR_NO_RES
[cc65] / libsrc / plus4 / break.s
index 4365534261c72d08a650fcf2c95fed28bb4e19d7..37ead40bb50300f456c7aea110a1c96328eb302d 100644 (file)
@@ -7,7 +7,7 @@
 
                .export         _set_brk, _reset_brk
        .export         _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
-       .import         _atexit
+        .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,25 +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
-
-       lda     #<_reset_brk
-       ldx     #>_reset_brk
-       jsr     _atexit         ; Install an exit handler
-
-L1:    lda     #<brk_handler   ; Set the break vector to our routine
-       sta     BRKVec
-       lda     #>brk_handler
-       sta     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
@@ -59,22 +46,21 @@ L1: lda     #<brk_handler   ; Set the break vector to our routine
 ; Reset the break vector
 .proc  _reset_brk
 
-       lda     oldvec
-       sta     BRKVec
-       lda     oldvec+1
-       sta     BRKVec+1
-       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
 
 .proc  brk_handler
 
        pla
-       sta     _brk_y
+               sta     _brk_y
        pla
        sta     _brk_x
        pla