]> git.sur5r.net Git - cc65/blobdiff - libsrc/pet/break.s
remove superfluous ".code" line
[cc65] / libsrc / pet / break.s
index 7fbf2b36ad38fec6b0d5158cf423a3485e9c04a0..7d31c679d70dc91731b75222814ab71b18a40872 100644 (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         _atexit
 
        .include        "pet.inc"
 
@@ -43,14 +43,10 @@ uservec:            jmp     $FFFF           ; Patched at runtime
        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
+       ldx     #>brk_handler
        sta     BRKVec
-       lda     #>brk_handler
-       sta     BRKVec+1
+       stx     BRKVec+1
        rts
 
 .endproc
@@ -59,11 +55,15 @@ 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     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
 
 .endproc
 
@@ -106,4 +106,4 @@ L1: lda     #<brk_handler   ; Set the break vector to our routine
 .endproc
 
 
-                             
+