2 ; Ullrich von Bassewitz, 27.09.1998
4 ; void set_brk (unsigned Addr);
5 ; void reset_brk (void);
8 .export _set_brk, _reset_brk
10 .export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
24 uservec: jmp $FFFF ; Patched at runtime
29 ; Set the break vector
33 stx uservec+2 ; Set the user vector
36 ora brk_old+2 ; Did we save the vector already?
37 bne @L1 ; Jump if we installed the handler already
39 lda BRKVec ; Save the old vector
44 lda #<brk_stub ; Set the break vector to our stub
49 lda #<brk_handler ; Set the indirect vector to our handler
59 ; Reset the break vector
64 beq @L9 ; Jump if vector not installed
68 sta brk_old+1 ; Clear the saved vector
76 ; Break handler, called if a break occurs
87 and #$EF ; Clear break bit
91 sbc #2 ; Point to start of brk
97 jsr uservec ; Call the user's routine
113 ; Break stub, must go into low (non banked) memory
118 pla ; Get original MMU_CR value
119 sta MMU_CR ; And set it
120 jmp brk_ind ; Jump indirect to break
123 ; ------------------------------------------------------------------------
128 ; Old break vector preceeded by a jump opcode
132 ; Indirect vectors preceeded by a jump opcode