From 3c4cd1fff97359c50ffb80a996a4302cefe3ce7b Mon Sep 17 00:00:00 2001 From: cuz Date: Thu, 5 May 2005 10:07:17 +0000 Subject: [PATCH] Call interrupt handlers with carry clear git-svn-id: svn://svn.cc65.org/cc65/trunk@3499 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/runtime/callirq.s | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libsrc/runtime/callirq.s b/libsrc/runtime/callirq.s index 15490e1ab..5f2c2d616 100644 --- a/libsrc/runtime/callirq.s +++ b/libsrc/runtime/callirq.s @@ -19,7 +19,9 @@ ; 3. Special semantics: An interruptor called by callirq must tell by ; setting or resetting the carry flag if the interrupt has been handled ; (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 ; entries. @@ -44,7 +46,8 @@ callirq: ldy #.lobyte(__INTERRUPTOR_COUNT__*2) callirq_y: - dey + clc ; Preset carry flag +loop: dey lda __INTERRUPTOR_TABLE__,y sta jmpvec+2 ; Modify code below dey @@ -54,7 +57,7 @@ callirq_y: jmpvec: jsr $FFFF ; Patched at runtime bcs done ; Bail out if interrupt handled index: ldy #$FF ; Patched at runtime - bne callirq_y + bne loop done: rts -- 2.39.5