mirror of
https://github.com/cc65/cc65.git
synced 2025-01-11 11:30:13 +00:00
Carry is clear on IRQ entry
git-svn-id: svn://svn.cc65.org/cc65/trunk@3500 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
3c4cd1fff9
commit
f096dc95ae
@ -344,8 +344,9 @@ IOCTL: lda #<SER_ERR_INV_IOCTL ; We don't support ioclts for now
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; IRQ: Called from the builtin runtime IRQ handler as a subroutine. All
|
||||
; registers are already save, no parameters are passed and no return code
|
||||
; is expected.
|
||||
; registers are already save, no parameters are passed, but the carry flag
|
||||
; is clear on entry. The routine must return with carry set if the interrupt
|
||||
; was handled, otherwise with carry clear.
|
||||
;
|
||||
|
||||
IRQ: lda #$0F
|
||||
@ -353,7 +354,7 @@ IRQ: lda #$0F
|
||||
ldy #ACIA::STATUS
|
||||
lda (acia),y ; Check ACIA status for receive interrupt
|
||||
and #$08
|
||||
beq @L10 ; Jump if no ACIA interrupt
|
||||
beq @L9 ; Jump if no ACIA interrupt (carry still clear)
|
||||
ldy #ACIA::DATA
|
||||
lda (acia),y ; Get byte from ACIA
|
||||
ldx RecvFreeCnt ; Check if we have free space left
|
||||
@ -379,13 +380,6 @@ 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
|
||||
|
||||
|
@ -344,8 +344,9 @@ IOCTL: lda #<SER_ERR_INV_IOCTL ; We don't support ioclts for now
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; IRQ: Called from the builtin runtime IRQ handler as a subroutine. All
|
||||
; registers are already save, no parameters are passed and no return code
|
||||
; is expected.
|
||||
; registers are already save, no parameters are passed, but the carry flag
|
||||
; is clear on entry. The routine must return with carry set if the interrupt
|
||||
; was handled, otherwise with carry clear.
|
||||
;
|
||||
|
||||
IRQ: lda #$0F
|
||||
@ -353,7 +354,7 @@ IRQ: lda #$0F
|
||||
ldy #ACIA::STATUS
|
||||
lda (acia),y ; Check ACIA status for receive interrupt
|
||||
and #$08
|
||||
beq @L10 ; Jump if no ACIA interrupt
|
||||
beq @L9 ; Jump if no ACIA interrupt (carry still clear)
|
||||
ldy #ACIA::DATA
|
||||
lda (acia),y ; Get byte from ACIA
|
||||
ldx RecvFreeCnt ; Check if we have free space left
|
||||
@ -379,13 +380,6 @@ 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
|
||||
|
||||
|
@ -346,13 +346,14 @@ IOCTL: lda #<SER_ERR_INV_IOCTL ; We don't support ioclts for now
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; IRQ: Called from the builtin runtime IRQ handler as a subroutine. All
|
||||
; registers are already save, no parameters are passed and no return code
|
||||
; is expected.
|
||||
; registers are already save, no parameters are passed, but the carry flag
|
||||
; is clear on entry. The routine must return with carry set if the interrupt
|
||||
; was handled, otherwise with carry clear.
|
||||
;
|
||||
|
||||
IRQ: lda ACIA_STATUS ; Check ACIA status for receive interrupt
|
||||
and #$08
|
||||
beq @L10 ; Jump if no ACIA interrupt
|
||||
beq @L9 ; Jump if no ACIA interrupt (carry still clear)
|
||||
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
|
||||
@ -370,12 +371,7 @@ IRQ: lda ACIA_STATUS ; Check ACIA status for receive interrupt
|
||||
sta ACIA_CMD
|
||||
sta Stopped
|
||||
sec ; Interrupt handled
|
||||
rts
|
||||
|
||||
; No ACIA interrupt
|
||||
|
||||
@L10: clc ; Interrupt not handled
|
||||
rts
|
||||
@L9: rts
|
||||
|
||||
;----------------------------------------------------------------------------
|
||||
; Try to send a byte. Internal routine. A = TryHard
|
||||
|
Loading…
x
Reference in New Issue
Block a user