mirror of
https://github.com/cc65/cc65.git
synced 2024-12-25 17:29:50 +00:00
Call interrupt handlers with carry clear
git-svn-id: svn://svn.cc65.org/cc65/trunk@3499 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
107ead3211
commit
3c4cd1fff9
@ -19,7 +19,9 @@
|
|||||||
; 3. Special semantics: An interruptor called by callirq must tell by
|
; 3. Special semantics: An interruptor called by callirq must tell by
|
||||||
; setting or resetting the carry flag if the interrupt has been handled
|
; setting or resetting the carry flag if the interrupt has been handled
|
||||||
; (which means that the interrupt is no longer active at the interrupt
|
; (which means that the interrupt is no longer active at the interrupt
|
||||||
; source). callirq will call no other interruptors if this happens.
|
; source). callirq will call no other interruptors if this happens. To
|
||||||
|
; simplify code, all interrupt routines will be called with carry clear
|
||||||
|
; on entry.
|
||||||
;
|
;
|
||||||
; As the normal condes routine, this one has the limitation of 127 table
|
; As the normal condes routine, this one has the limitation of 127 table
|
||||||
; entries.
|
; entries.
|
||||||
@ -44,7 +46,8 @@
|
|||||||
callirq:
|
callirq:
|
||||||
ldy #.lobyte(__INTERRUPTOR_COUNT__*2)
|
ldy #.lobyte(__INTERRUPTOR_COUNT__*2)
|
||||||
callirq_y:
|
callirq_y:
|
||||||
dey
|
clc ; Preset carry flag
|
||||||
|
loop: dey
|
||||||
lda __INTERRUPTOR_TABLE__,y
|
lda __INTERRUPTOR_TABLE__,y
|
||||||
sta jmpvec+2 ; Modify code below
|
sta jmpvec+2 ; Modify code below
|
||||||
dey
|
dey
|
||||||
@ -54,7 +57,7 @@ callirq_y:
|
|||||||
jmpvec: jsr $FFFF ; Patched at runtime
|
jmpvec: jsr $FFFF ; Patched at runtime
|
||||||
bcs done ; Bail out if interrupt handled
|
bcs done ; Bail out if interrupt handled
|
||||||
index: ldy #$FF ; Patched at runtime
|
index: ldy #$FF ; Patched at runtime
|
||||||
bne callirq_y
|
bne loop
|
||||||
done: rts
|
done: rts
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user