X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fc128%2Fbreak.s;h=0ecdc85ec862dc364befca9b948b62c400f11239;hb=2f44fb05a4908022b42de83363e5593e2af7b37a;hp=6f4cfe42059eed8c697da9a520e6c1fbaf049f52;hpb=e02b3e91c8f30d4553a03eefc610497b973d99f2;p=cc65 diff --git a/libsrc/c128/break.s b/libsrc/c128/break.s index 6f4cfe420..0ecdc85ec 100644 --- a/libsrc/c128/break.s +++ b/libsrc/c128/break.s @@ -8,7 +8,8 @@ .export _set_brk, _reset_brk .destructor _reset_brk .export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc - .importzp ptr1 + .import BRKStub, BRKOld, BRKInd + .importzp ptr1 .include "c128.inc" @@ -20,18 +21,11 @@ _brk_y: .res 1 _brk_sr: .res 1 _brk_pc: .res 2 -oldvec: .res 2 ; Old vector - - .data -uservec: jmp $FFFF ; Patched at runtime +uservec: jmp $FFFF ; Patched at runtime .code -; Where will we put the break stub? -stub_addr = $0E00 ; BASIC sprite area - - ; Set the break vector .proc _set_brk @@ -39,26 +33,26 @@ stub_addr = $0E00 ; BASIC sprite area sta uservec+1 stx uservec+2 ; Set the user vector - lda oldvec - ora oldvec+1 ; Did we save the vector already? - bne L2 ; Jump if we installed the handler already + lda BRKOld+1 + ora BRKOld+2 ; Did we save the vector already? + bne @L1 ; Jump if we installed the handler already - lda BRKVec - sta oldvec + lda BRKVec ; Save the old vector + sta BRKOld+1 lda BRKVec+1 - sta oldvec+1 ; Save the old vector + sta BRKOld+2 + + lda #BRKStub + sta BRKVec + stx BRKVec+1 - ldy #stub_size-1 ; Copy our stub into the low mem area -L1: lda brk_stub,y - sta stub_addr,y - dey - bpl L1 + lda #brk_handler + sta BRKInd+1 + stx BRKInd+2 -L2: lda #stub_addr - sta BRKVec+1 - rts +@L1: rts .endproc @@ -66,12 +60,14 @@ L2: lda #