Finalize UART Interrupt Receive

This commit is contained in:
Wayne Warthen
2021-09-14 13:29:20 -07:00
parent d6783e5a6e
commit 097777c043
5 changed files with 58 additions and 15 deletions

View File

@@ -773,8 +773,8 @@ HBX_INTSTK .EQU $
; 1 CTC0B INT2 |
; 2 CTC0C TIM0 |
; 3 CTC0D TIM1 |
; 4 DMA0 +- Z180 INTERNAL
; 5 DMA1 |
; 4 UART0 DMA0 +- Z180 INTERNAL
; 5 UART1 DMA1 |
; 6 CSIO |
; 7 SIO0 SER0 |
; 8 SIO1 SER1 -+

View File

@@ -637,6 +637,8 @@ INT_CTC0A .EQU 0 ; ZILOG CTC 0, CHANNEL A
INT_CTC0B .EQU 1 ; ZILOG CTC 0, CHANNEL B
INT_CTC0C .EQU 2 ; ZILOG CTC 0, CHANNEL C
INT_CTC0D .EQU 3 ; ZILOG CTC 0, CHANNEL D
INT_UART0 .EQU 4 ; MBC UART 0
INT_UART1 .EQU 5 ; MBC UART 1
INT_SIO0 .EQU 7 ; ZILOG SIO 0, CHANNEL A & B
INT_SIO1 .EQU 8 ; ZILOG SIO 1, CHANNEL A & B
INT_PIO0A .EQU 9 ; ZILOG PIO 0, CHANNEL A

View File

@@ -58,6 +58,18 @@ UARTCBASE .EQU $80
UARTMBASE .EQU $48
UART4BASE .EQU $C0
UARTRBASE .EQU $A0
;
#IF (UARTINTS)
;
#IF ((INTMODE == 2) | (INTMODE == 3))
;
UART0_IVT .EQU IVT(INT_UART0)
UART1_IVT .EQU IVT(INT_UART1)
;
#ENDIF
;
#ENDIF
;
#DEFINE UART_INP(RID) CALL UART_INP_IMP \ .DB RID
#DEFINE UART_OUTP(RID) CALL UART_OUTP_IMP \ .DB RID
@@ -121,7 +133,17 @@ UART_PREINIT2:
#ENDIF
;
#IF ((INTMODE == 2) | (INTMODE == 3))
; *** FIXME *** IMPLEMENT THIS!!!
; SETUP IM2/3 VECTORS
#IF (UARTSBC)
LD HL,UART_INTSBC
LD (UART0_IVT),HL ; IVT INDEX
#ENDIF
;
#IF (UARTCAS)
LD HL,UART_INTCAS
LD (UART1_IVT),HL ; IVT INDEX
#ENDIF
;
#ENDIF
;
#ENDIF
@@ -192,22 +214,46 @@ UART_INIT1:
; POLLING CHAIN WHEN DEVICES ARE INITIALIZED SUCH THAT
; ONLY DEVICES ACTUALLY USING INTS ARE POLLED HERE.
;
#IF (INTMODE == 1)
UART_INT:
;
#IF (UARTSBC)
#IF (UARTSBC)
LD IY,UART_CFG_SBC
CALL UART_INTRCV
RET NZ
#ENDIF
#ENDIF
;
#IF (UARTCAS)
#IF (UARTCAS)
LD IY,UART_CFG_CAS
CALL UART_INTRCV
RET NZ
#ENDIF
#ENDIF
;
#ENDIF
;
#IF ((INTMODE == 2) | (INTMODE == 3))
;
#IF (UARTSBC)
UART_INTSBC:
LD IY,UART_CFG_SBC
JR UART_INTRCV
#ENDIF
;
#IF (UARTCAS)
UART_INTCAS:
LD IY,UART_CFG_CAS
JR UART_INTRCV
#ENDIF
;
#ENDIF
;
XOR A ; CLEAR ACCUM (INT NOT HANDLED)
RET ; DONE
;
; IM2 ENTRY POINTS
;
;
; HANDLE INT FOR A SPECIFIC CHANNEL
; BASED ON UNIT CFG POINTED TO BY IY
@@ -648,12 +694,7 @@ UART_DETECT:
RET Z ; DONE IF NO CHIP
LD C,A ; PUT CHIP VARIANT IN C
;
; *** FIXME *** THIS NEEDS TO CHANGE WHEN INTMODE 2/3 IS IMPLEMENTED. AT THIS
; POINT, WE ONLY SET THE INT RCV FEATURE BIT FOR IM1 BECAUSE THAT IS ALL
; THAT IS IMPLEMENTED.
;
;#IF ((UARTINTS) & (INTMODE > 0))
#IF ((UARTINTS) & (INTMODE == 1))
#IF ((UARTINTS) & (INTMODE > 0))
;
; CHECK TO SEE IF INT RCV WANTED ON THIS DEVICE
PUSH AF ; SAVE CHIP ID

View File

@@ -2,4 +2,4 @@
#DEFINE RMN 1
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.115"
#DEFINE BIOSVER "3.1.1-pre.116"

View File

@@ -3,5 +3,5 @@ rmn equ 1
rup equ 1
rtp equ 0
biosver macro
db "3.1.1-pre.115"
db "3.1.1-pre.116"
endm