Use the new LOWCODE segment
git-svn-id: svn://svn.cc65.org/cc65/trunk@1589 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
2de0fbb020
commit
6cb572104a
2 changed files with 43 additions and 34 deletions
|
@ -8,7 +8,6 @@
|
||||||
.export _set_brk, _reset_brk
|
.export _set_brk, _reset_brk
|
||||||
.destructor _reset_brk
|
.destructor _reset_brk
|
||||||
.export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
|
.export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
|
||||||
.import BRKStub, BRKOld, BRKInd
|
|
||||||
.importzp ptr1
|
.importzp ptr1
|
||||||
|
|
||||||
.include "c128.inc"
|
.include "c128.inc"
|
||||||
|
@ -33,24 +32,24 @@ uservec: jmp $FFFF ; Patched at runtime
|
||||||
sta uservec+1
|
sta uservec+1
|
||||||
stx uservec+2 ; Set the user vector
|
stx uservec+2 ; Set the user vector
|
||||||
|
|
||||||
lda BRKOld+1
|
lda brk_old+1
|
||||||
ora BRKOld+2 ; Did we save the vector already?
|
ora brk_old+2 ; Did we save the vector already?
|
||||||
bne @L1 ; Jump if we installed the handler already
|
bne @L1 ; Jump if we installed the handler already
|
||||||
|
|
||||||
lda BRKVec ; Save the old vector
|
lda BRKVec ; Save the old vector
|
||||||
sta BRKOld+1
|
sta brk_old+1
|
||||||
lda BRKVec+1
|
lda BRKVec+1
|
||||||
sta BRKOld+2
|
sta brk_old+2
|
||||||
|
|
||||||
lda #<BRKStub ; Set the break vector to our stub
|
lda #<brk_stub ; Set the break vector to our stub
|
||||||
ldx #>BRKStub
|
ldx #>brk_stub
|
||||||
sta BRKVec
|
sta BRKVec
|
||||||
stx BRKVec+1
|
stx BRKVec+1
|
||||||
|
|
||||||
lda #<brk_handler ; Set the indirect vector to our handler
|
lda #<brk_handler ; Set the indirect vector to our handler
|
||||||
ldx #>brk_handler
|
ldx #>brk_handler
|
||||||
sta BRKInd+1
|
sta brk_ind+1
|
||||||
stx BRKInd+2
|
stx brk_ind+2
|
||||||
|
|
||||||
@L1: rts
|
@L1: rts
|
||||||
|
|
||||||
|
@ -60,14 +59,14 @@ uservec: jmp $FFFF ; Patched at runtime
|
||||||
; Reset the break vector
|
; Reset the break vector
|
||||||
.proc _reset_brk
|
.proc _reset_brk
|
||||||
|
|
||||||
lda BRKOld+1
|
lda brk_old+1
|
||||||
ldx BRKOld+2
|
ldx brk_old+2
|
||||||
beq @L9 ; Jump if vector not installed
|
beq @L9 ; Jump if vector not installed
|
||||||
sta BRKVec
|
sta BRKVec
|
||||||
stx BRKVec+1
|
stx BRKVec+1
|
||||||
lda #$00
|
lda #$00
|
||||||
sta BRKOld+1 ; Clear the saved vector
|
sta brk_old+1 ; Clear the saved vector
|
||||||
sta BRKOld+2
|
sta brk_old+2
|
||||||
@L9: rts
|
@L9: rts
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
@ -111,3 +110,26 @@ uservec: jmp $FFFF ; Patched at runtime
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
|
||||||
|
; Break stub, must go into low (non banked) memory
|
||||||
|
|
||||||
|
.segment "LOWCODE"
|
||||||
|
|
||||||
|
.proc brk_stub
|
||||||
|
pla ; Get original MMU_CR value
|
||||||
|
sta MMU_CR ; And set it
|
||||||
|
jmp brk_ind ; Jump indirect to break
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
; ------------------------------------------------------------------------
|
||||||
|
; Data
|
||||||
|
|
||||||
|
.data
|
||||||
|
|
||||||
|
; Old break vector preceeded by a jump opcode
|
||||||
|
brk_old:
|
||||||
|
jmp $0000
|
||||||
|
|
||||||
|
; Indirect vectors preceeded by a jump opcode
|
||||||
|
brk_ind:
|
||||||
|
jmp $0000
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _exit
|
.export _exit
|
||||||
.export BRKStub, BRKOld, BRKInd
|
|
||||||
.import condes, initlib, donelib
|
.import condes, initlib, donelib
|
||||||
.import initconio, doneconio, zerobss
|
.import initconio, doneconio, zerobss
|
||||||
.import push0, _main
|
.import push0, _main
|
||||||
|
@ -189,24 +188,12 @@ IRQStub:
|
||||||
jmp IRQInd ; Jump to the saved IRQ vector
|
jmp IRQInd ; Jump to the saved IRQ vector
|
||||||
|
|
||||||
|
|
||||||
BRKStub:
|
|
||||||
pla ; Get original MMU_CR value
|
|
||||||
sta MMU_CR ; And set it
|
|
||||||
jmp BRKInd ; Jump indirect to break
|
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Data
|
; Data
|
||||||
|
|
||||||
.data
|
.data
|
||||||
zpsave: .res zpspace
|
zpsave: .res zpspace
|
||||||
|
|
||||||
; Old break vector preceeded by a jump opcode
|
|
||||||
BRKOld: jmp $0000
|
|
||||||
|
|
||||||
; Indirect vectors preceeded by a jump opcode
|
|
||||||
BRKInd: jmp $0000
|
|
||||||
|
|
||||||
.bss
|
.bss
|
||||||
spsave: .res 1
|
spsave: .res 1
|
||||||
mmusave:.res 1
|
mmusave:.res 1
|
||||||
|
|
Loading…
Add table
Reference in a new issue