diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 04671baa..da00ccd0 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -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 -+ diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index c40f87de..1585f4e8 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -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 diff --git a/Source/HBIOS/uart.asm b/Source/HBIOS/uart.asm index 0ab408ae..8b7acec0 100644 --- a/Source/HBIOS/uart.asm +++ b/Source/HBIOS/uart.asm @@ -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 diff --git a/Source/ver.inc b/Source/ver.inc index 626cb034..8874a42f 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -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" diff --git a/Source/ver.lib b/Source/ver.lib index f9dd93a4..dca1306a 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -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