diff --git a/libsrc/cbm510/cbm510-stdser.s b/libsrc/cbm510/cbm510-stdser.s index 59675e0fe..223668fec 100644 --- a/libsrc/cbm510/cbm510-stdser.s +++ b/libsrc/cbm510/cbm510-stdser.s @@ -353,7 +353,7 @@ IRQ: lda #$0F ldy #ACIA::STATUS lda (acia),y ; Check ACIA status for receive interrupt and #$08 - beq @L9 ; 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 diff --git a/libsrc/cbm610/cbm610-stdser.s b/libsrc/cbm610/cbm610-stdser.s index f844b3c2d..74fd480c8 100644 --- a/libsrc/cbm610/cbm610-stdser.s +++ b/libsrc/cbm610/cbm610-stdser.s @@ -353,7 +353,7 @@ IRQ: lda #$0F ldy #ACIA::STATUS lda (acia),y ; Check ACIA status for receive interrupt and #$08 - beq @L9 ; 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 diff --git a/libsrc/plus4/plus4-stdser.s b/libsrc/plus4/plus4-stdser.s index e09c5ab90..53cec2875 100644 --- a/libsrc/plus4/plus4-stdser.s +++ b/libsrc/plus4/plus4-stdser.s @@ -352,7 +352,7 @@ IOCTL: lda #