]> git.sur5r.net Git - cc65/commitdiff
Adjusted IRQ handler for new callirq semantics
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 5 May 2005 10:00:17 +0000 (10:00 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 5 May 2005 10:00:17 +0000 (10:00 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3498 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/cbm510/cbm510-stdser.s
libsrc/cbm610/cbm610-stdser.s
libsrc/plus4/plus4-stdser.s

index 59675e0fe869732824a89487586b56f15fb1997b..223668fec1a5802aaf3497626530c1df0f7b632c 100644 (file)
@@ -353,7 +353,7 @@ IRQ:    lda     #$0F
         ldy     #ACIA::STATUS
         lda     (acia),y        ; Check ACIA status for receive interrupt
        and     #$08
-               beq     @L            ; Jump if no ACIA interrupt
+               beq     @L10            ; Jump if no ACIA interrupt
         ldy     #ACIA::DATA
         lda            (acia),y        ; Get byte from ACIA
        ldx     RecvFreeCnt     ; Check if we have free space left
@@ -371,6 +371,7 @@ IRQ:    lda     #$0F
         ldy     #ACIA::CMD
         sta     (acia),y
        sta     Stopped
+        sec                     ; Interrupt handled
 
 ; Done, switch back to the execution segment
 
@@ -378,6 +379,13 @@ IRQ:    lda     #$0F
         sta     IndReg
         rts
 
+; No ACIA interrupt
+
+@L10:   clc                     ; Interrupt not handled
+        lda     ExecReg
+        sta     IndReg
+        rts
+
 ;----------------------------------------------------------------------------
 ; Try to send a byte. Internal routine. A = TryHard
 
index f844b3c2d5e96d713384f193ffa7b24c7773c24f..74fd480c84b0a420031d16760b0435585121878e 100644 (file)
@@ -353,7 +353,7 @@ IRQ:    lda     #$0F
         ldy     #ACIA::STATUS
         lda     (acia),y        ; Check ACIA status for receive interrupt
        and     #$08
-               beq     @L            ; Jump if no ACIA interrupt
+               beq     @L10            ; Jump if no ACIA interrupt
         ldy     #ACIA::DATA
         lda            (acia),y        ; Get byte from ACIA
        ldx     RecvFreeCnt     ; Check if we have free space left
@@ -371,6 +371,7 @@ IRQ:    lda     #$0F
         ldy     #ACIA::CMD
         sta     (acia),y
        sta     Stopped
+        sec                     ; Interrupt handled
 
 ; Done, switch back to the execution segment
 
@@ -378,6 +379,13 @@ IRQ:    lda     #$0F
         sta     IndReg
         rts
 
+; No ACIA interrupt
+
+@L10:   clc                     ; Interrupt not handled
+        lda     ExecReg
+        sta     IndReg
+        rts
+
 ;----------------------------------------------------------------------------
 ; Try to send a byte. Internal routine. A = TryHard
 
index e09c5ab90614b8e596b1c1d3c0d9e411105e5205..53cec287579633abcf60b9e93a9051151a16fb3f 100644 (file)
@@ -352,7 +352,7 @@ IOCTL:  lda     #<SER_ERR_INV_IOCTL     ; We don't support ioclts for now
 
 IRQ:    lda            ACIA_STATUS     ; Check ACIA status for receive interrupt
        and     #$08
-               beq     @L            ; Jump if no ACIA interrupt
+               beq     @L10            ; Jump if no ACIA interrupt
         lda    ACIA_DATA       ; Get byte from ACIA
        ldx     RecvFreeCnt     ; Check if we have free space left
                beq     @L1             ; Jump if no space in receive buffer
@@ -362,13 +362,19 @@ IRQ:    lda       ACIA_STATUS     ; Check ACIA status for receive interrupt
        dec     RecvFreeCnt     ; Decrement free space counter
        cpx     #33             ; Check for buffer space low
                bcc     @L1             ; Assert flow control if buffer space low
-@L9:    rts
+        rts                     ; Return with carry set (interrupt handled)
 
 ; Assert flow control if buffer space too low
 
 @L1:   lda     RtsOff
        sta     ACIA_CMD
        sta     Stopped
+        sec                     ; Interrupt handled
+        rts
+
+; No ACIA interrupt
+
+@L10:   clc                     ; Interrupt not handled
         rts
 
 ;----------------------------------------------------------------------------