; void reset_brk (void);
;
- .export _set_brk, _reset_brk
- .export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
+ .export _set_brk, _reset_brk
+ .export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
.import brk_jmp
- .include "plus4.inc"
+ .include "plus4.inc"
.bss
-_brk_a: .res 1
-_brk_x: .res 1
-_brk_y: .res 1
-_brk_sr: .res 1
-_brk_pc: .res 2
+_brk_a: .res 1
+_brk_x: .res 1
+_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
; Set the break vector
-.proc _set_brk
+.proc _set_brk
- sta uservec+1
- stx uservec+2 ; Set the user vector
+ sta uservec+1
+ stx uservec+2 ; Set the user vector
- lda #<brk_handler ; Set the break vector to our routine
- sta brk_jmp+1
- lda #>brk_handler
- sta brk_jmp+2
- rts
+ lda #<brk_handler ; Set the break vector to our routine
+ sta brk_jmp+1
+ lda #>brk_handler
+ sta brk_jmp+2
+ rts
.endproc
; Reset the break vector
-.proc _reset_brk
+.proc _reset_brk
lda #$00
sta brk_jmp+1
-; Break handler, called if a break occurs. Note: Y is not on the stack!
-
-.proc brk_handler
-
- sty _brk_y
- pla
- sta _brk_x
- pla
- sta _brk_a
- pla
- and #$EF ; Clear break bit
- sta _brk_sr
- pla ; PC low
- sec
- sbc #2 ; Point to start of brk
- sta _brk_pc
- pla ; PC high
- sbc #0
- sta _brk_pc+1
-
- jsr uservec ; Call the user's routine
-
- lda _brk_pc+1
- pha
- lda _brk_pc
- pha
- lda _brk_sr
- pha
- ldx _brk_x
- ldy _brk_y
- lda _brk_a
- rti ; Jump back...
+; Break handler, called if a break occurs.
+
+.proc brk_handler
+
+ pla
+ sta _brk_y
+ pla
+ sta _brk_x
+ pla
+ sta _brk_a
+ pla
+ and #$EF ; Clear break bit
+ sta _brk_sr
+ pla ; PC low
+ sec
+ sbc #2 ; Point to start of brk
+ sta _brk_pc
+ pla ; PC high
+ sbc #0
+ sta _brk_pc+1
+
+ jsr uservec ; Call the user's routine
+
+ lda _brk_pc+1
+ pha
+ lda _brk_pc
+ pha
+ lda _brk_sr
+ pha
+ ldx _brk_x
+ ldy _brk_y
+ lda _brk_a
+ rti ; Jump back...
.endproc