|
|
@ -54,27 +54,6 @@ UART_FIFOACT .EQU 6 ; FIFO ACTIVE BIT |
|
|
UART_AFCACT .EQU 5 ; AUTO FLOW CONTROL ACTIVE BIT |
|
|
UART_AFCACT .EQU 5 ; AUTO FLOW CONTROL ACTIVE BIT |
|
|
UART_CTSBAD .EQU 4 ; CTS STALL DETECTED |
|
|
UART_CTSBAD .EQU 4 ; CTS STALL DETECTED |
|
|
; |
|
|
; |
|
|
#IF (PLATFORM == PLT_DUO) |
|
|
|
|
|
UARTSBASE .EQU $58 |
|
|
|
|
|
UARTDBASE .EQU $70 |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
#IF (PLATFORM == PLT_NABU) |
|
|
|
|
|
UARTSBASE .EQU $48 |
|
|
|
|
|
UARTDBASE .EQU $80 |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
#IF ((PLATFORM != PLT_DUO) & (PLATFORM != PLT_NABU)) |
|
|
|
|
|
UARTSBASE .EQU $68 |
|
|
|
|
|
UARTDBASE .EQU $80 |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
UARTABASE .EQU $A8 |
|
|
|
|
|
UARTCBASE .EQU $80 |
|
|
|
|
|
UARTMBASE .EQU $18 |
|
|
|
|
|
UART4BASE .EQU $C0 |
|
|
|
|
|
UARTRBASE .EQU $A0 |
|
|
|
|
|
; |
|
|
|
|
|
#IF (UARTINTS) |
|
|
#IF (UARTINTS) |
|
|
; |
|
|
; |
|
|
#IF ((INTMODE == 2) | (INTMODE == 3)) |
|
|
#IF ((INTMODE == 2) | (INTMODE == 3)) |
|
|
@ -92,17 +71,17 @@ UART1_IVT .EQU IVT(INT_UART1) |
|
|
; |
|
|
; |
|
|
; |
|
|
; |
|
|
UART_PREINIT: |
|
|
UART_PREINIT: |
|
|
#IF (UART4) |
|
|
|
|
|
|
|
|
#IF (UART4UART) |
|
|
; |
|
|
; |
|
|
; INIT UART4 BOARD CONFIG REGISTER (NO HARM IF IT IS NOT THERE) |
|
|
; INIT UART4 BOARD CONFIG REGISTER (NO HARM IF IT IS NOT THERE) |
|
|
; |
|
|
; |
|
|
LD A,$80 ; SELECT 7.3728MHZ OSC & LOCK CONFIG REGISTER |
|
|
LD A,$80 ; SELECT 7.3728MHZ OSC & LOCK CONFIG REGISTER |
|
|
OUT (UART4BASE+$0F),A ; DO IT |
|
|
|
|
|
|
|
|
OUT (UART4UARTBASE+$0F),A ; DO IT |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
; SETUP THE DISPATCH TABLE ENTRIES |
|
|
; SETUP THE DISPATCH TABLE ENTRIES |
|
|
; |
|
|
; |
|
|
LD B,UART_CNT ; LOOP CONTROL |
|
|
|
|
|
|
|
|
LD B,UARTCNT ; LOOP CONTROL |
|
|
LD C,0 ; PHYSICAL UNIT INDEX |
|
|
LD C,0 ; PHYSICAL UNIT INDEX |
|
|
XOR A ; ZERO TO ACCUM |
|
|
XOR A ; ZERO TO ACCUM |
|
|
LD (UART_DEV),A ; CURRENT DEVICE NUMBER |
|
|
LD (UART_DEV),A ; CURRENT DEVICE NUMBER |
|
|
@ -203,7 +182,7 @@ UART_INITUNIT1: |
|
|
; |
|
|
; |
|
|
; |
|
|
; |
|
|
UART_INIT: |
|
|
UART_INIT: |
|
|
LD B,UART_CNT ; COUNT OF POSSIBLE UART UNITS |
|
|
|
|
|
|
|
|
LD B,UARTCNT ; COUNT OF POSSIBLE UART UNITS |
|
|
LD C,0 ; INDEX INTO UART CONFIG TABLE |
|
|
LD C,0 ; INDEX INTO UART CONFIG TABLE |
|
|
UART_INIT1: |
|
|
UART_INIT1: |
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
@ -249,14 +228,14 @@ UART_INIT2: |
|
|
|
|
|
|
|
|
UART_INT: |
|
|
UART_INT: |
|
|
; |
|
|
; |
|
|
#IF (UARTSBC) |
|
|
|
|
|
LD IY,UART_CFG_SBC |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 1) |
|
|
|
|
|
LD IY,UART0_CFG |
|
|
CALL UART_INTRCV |
|
|
CALL UART_INTRCV |
|
|
RET NZ |
|
|
RET NZ |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
#IF (UARTCAS) |
|
|
|
|
|
LD IY,UART_CFG_CAS |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 2) |
|
|
|
|
|
LD IY,UART1_CFG |
|
|
CALL UART_INTRCV |
|
|
CALL UART_INTRCV |
|
|
RET NZ |
|
|
RET NZ |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
@ -265,15 +244,15 @@ UART_INT: |
|
|
; |
|
|
; |
|
|
#IF ((INTMODE == 2) | (INTMODE == 3)) |
|
|
#IF ((INTMODE == 2) | (INTMODE == 3)) |
|
|
; |
|
|
; |
|
|
#IF (UARTSBC) |
|
|
|
|
|
UART_INTSBC: |
|
|
|
|
|
LD IY,UART_CFG_SBC |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 1) |
|
|
|
|
|
UART_INT0: |
|
|
|
|
|
LD IY,UART0_CFG |
|
|
JR UART_INTRCV |
|
|
JR UART_INTRCV |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
#IF (UARTCAS) |
|
|
|
|
|
UART_INTCAS: |
|
|
|
|
|
LD IY,UART_CFG_CAS |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 2) |
|
|
|
|
|
UART_INT1: |
|
|
|
|
|
LD IY,UART1_CFG |
|
|
JR UART_INTRCV |
|
|
JR UART_INTRCV |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
@ -837,16 +816,6 @@ UART_CHIP2: ; PICK BETWEEN 16550A/C |
|
|
JR UART_CHIP_16550C ; IS SET, SO 16550C |
|
|
JR UART_CHIP_16550C ; IS SET, SO 16550C |
|
|
; |
|
|
; |
|
|
UART_CHIP_NONE: |
|
|
UART_CHIP_NONE: |
|
|
; |
|
|
|
|
|
#IF (UARTSBCFORCE) |
|
|
|
|
|
; SIMH DOES NOT EMULATE A UART WELL ENOUGH TO BE DETECTED, SO |
|
|
|
|
|
; THIS BIT OF CODE CAN BE ENABLED TO FORCE THE PRIMARY SBC |
|
|
|
|
|
; UART TO BE HANDLED AS AN 8250. |
|
|
|
|
|
LD A,(IY+2) ; BASE IO PORT |
|
|
|
|
|
CP UARTSBASE ; IS THIS PRIMARY SBC PORT? |
|
|
|
|
|
JR Z,UART_CHIP_8250 ; SPECIAL CASE FOR PRIMARY UART! |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
LD A,UART_NONE ; NO UART DETECTED AT THIS PORT |
|
|
LD A,UART_NONE ; NO UART DETECTED AT THIS PORT |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
@ -1028,199 +997,153 @@ UART_DEV .DB 0 ; DEVICE NUM USED DURING INIT |
|
|
; UART PORT TABLE |
|
|
; UART PORT TABLE |
|
|
; |
|
|
; |
|
|
UART_CFG: |
|
|
UART_CFG: |
|
|
#IF (UARTSBC) |
|
|
|
|
|
UART_CFG_SBC: |
|
|
|
|
|
; SBC/ZETA ONBOARD SERIAL PORT |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UARTSBASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UARTSBASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW UARTSBC_RCVBUF ; POINTER TO RCV BUFFER STRUCT |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=SBC, IO=" |
|
|
|
|
|
DEVECHO UARTSBASE |
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
#IF (UARTCNT >= 1) |
|
|
|
|
|
UART0_CFG: |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (SET DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE (SET DURING INIT) |
|
|
|
|
|
.DB UART0BASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART0BASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART0CFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW UART0_RCVBUF ; POINTER TO RCV BUFFER STRUCT |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: IO=" |
|
|
|
|
|
DEVECHO UART0BASE |
|
|
#IF ((UARTINTS) & (INTMODE > 0)) |
|
|
#IF ((UARTINTS) & (INTMODE > 0)) |
|
|
DEVECHO ", INTERRUPTS ENABLED" |
|
|
DEVECHO ", INTERRUPTS ENABLED" |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
DEVECHO "\n" |
|
|
DEVECHO "\n" |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UARTAUX) |
|
|
|
|
|
UART_CFG_AUX: |
|
|
|
|
|
; AUX SERIAL PORT |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UARTABASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UARTABASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; NO INT HANDLER |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=AUX, IO=" |
|
|
|
|
|
DEVECHO UARTABASE |
|
|
|
|
|
DEVECHO "\n" |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
#IF (UARTCAS) |
|
|
|
|
|
UART_CFG_CAS: |
|
|
|
|
|
; CASSETTE INTERFACE SERIAL PORT |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UARTCBASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UARTCBASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCASSPD ; LINE CONFIGURATION |
|
|
|
|
|
.DW UARTCAS_RCVBUF ; POINTER TO RCV BUFFER STRUCT |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=CAS, IO=" |
|
|
|
|
|
DEVECHO UARTCBASE |
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
#IF (UARTCNT >= 2) |
|
|
|
|
|
UART1_CFG: |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (SET DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE (SET DURING INIT) |
|
|
|
|
|
.DB UART1BASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART1BASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART1CFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW UART1_RCVBUF ; POINTER TO RCV BUFFER STRUCT |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: IO=" |
|
|
|
|
|
DEVECHO UART1BASE |
|
|
#IF ((UARTINTS) & (INTMODE > 0)) |
|
|
#IF ((UARTINTS) & (INTMODE > 0)) |
|
|
DEVECHO ", INTERRUPTS ENABLED" |
|
|
DEVECHO ", INTERRUPTS ENABLED" |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
DEVECHO "\n" |
|
|
DEVECHO "\n" |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UARTMFP) |
|
|
|
|
|
UART_CFG_MFP: |
|
|
|
|
|
; MF/PIC SERIAL PORT |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UARTMBASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UARTMBASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; SHOULD NEVER NEED INT HANDLER |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=MFP, IO=" |
|
|
|
|
|
DEVECHO UARTSBASE |
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
#IF (UARTCNT >= 3) |
|
|
|
|
|
UART2_CFG: |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (SET DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE (SET DURING INIT) |
|
|
|
|
|
.DB UART2BASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART2BASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART2CFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; POINTER TO RCV BUFFER STRUCT |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: IO=" |
|
|
|
|
|
DEVECHO UART2BASE |
|
|
DEVECHO "\n" |
|
|
DEVECHO "\n" |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UART4) |
|
|
|
|
|
; 4UART SERIAL PORT A |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UART4BASE+0 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART4BASE+0 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; SHOULD NEVER NEED INT HANDLER |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=4UART, IO=" |
|
|
|
|
|
DEVECHO UART4BASE+0 |
|
|
|
|
|
DEVECHO "\n" |
|
|
|
|
|
; |
|
|
; |
|
|
; 4UART SERIAL PORT B |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UART4BASE+8 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART4BASE+8 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; SHOULD NEVER NEED INT HANDLER |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=4UART, IO=" |
|
|
|
|
|
DEVECHO UART4BASE+8 |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 4) |
|
|
|
|
|
UART3_CFG: |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (SET DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE (SET DURING INIT) |
|
|
|
|
|
.DB UART3BASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART3BASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART3CFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; POINTER TO RCV BUFFER STRUCT |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: IO=" |
|
|
|
|
|
DEVECHO UART3BASE |
|
|
DEVECHO "\n" |
|
|
DEVECHO "\n" |
|
|
|
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
; 4UART SERIAL PORT C |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UART4BASE+16 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART4BASE+16 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; SHOULD NEVER NEED INT HANDLER |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=4UART, IO=" |
|
|
|
|
|
DEVECHO UART4BASE+16 |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 5) |
|
|
|
|
|
UART4_CFG: |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (SET DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE (SET DURING INIT) |
|
|
|
|
|
.DB UART4BASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART4BASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART4CFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; POINTER TO RCV BUFFER STRUCT |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: IO=" |
|
|
|
|
|
DEVECHO UART4BASE |
|
|
DEVECHO "\n" |
|
|
DEVECHO "\n" |
|
|
|
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
; 4UART SERIAL PORT D |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UART4BASE+24 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART4BASE+24 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; SHOULD NEVER NEED INT HANDLER |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=4UART, IO=" |
|
|
|
|
|
DEVECHO UART4BASE+24 |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 6) |
|
|
|
|
|
UART5_CFG: |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (SET DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE (SET DURING INIT) |
|
|
|
|
|
.DB UART5BASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART5BASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART5CFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; POINTER TO RCV BUFFER STRUCT |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: IO=" |
|
|
|
|
|
DEVECHO UART5BASE |
|
|
DEVECHO "\n" |
|
|
DEVECHO "\n" |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UARTRC) |
|
|
|
|
|
; UARTRC SERIAL PORT A |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UARTRBASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UARTRBASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; SHOULD NEVER NEED INT HANDLER |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=RC, IO=" |
|
|
|
|
|
DEVECHO UARTRBASE+0 |
|
|
|
|
|
DEVECHO "\n" |
|
|
|
|
|
; |
|
|
; |
|
|
; UARTRC SERIAL PORT B |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UARTRBASE+8 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UARTRBASE+8 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; SHOULD NEVER NEED INT HANDLER |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=RC, IO=" |
|
|
|
|
|
DEVECHO UARTRBASE+8 |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 7) |
|
|
|
|
|
UART6_CFG: |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (SET DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE (SET DURING INIT) |
|
|
|
|
|
.DB UART6BASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART6BASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART6CFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; POINTER TO RCV BUFFER STRUCT |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: IO=" |
|
|
|
|
|
DEVECHO UART6BASE |
|
|
DEVECHO "\n" |
|
|
DEVECHO "\n" |
|
|
; |
|
|
|
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UARTDUAL) |
|
|
|
|
|
; DUAL UART CHANNEL A |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UARTDBASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UARTDBASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; SHOULD NEVER NEED INT HANDLER |
|
|
|
|
|
; DUAL UART CHANNEL B |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UARTDBASE+8 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UARTDBASE+8 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UARTCFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; SHOULD NEVER NEED INT HANDLER |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: MODE=DUAL, IO=" |
|
|
|
|
|
DEVECHO UARTDBASE+0 |
|
|
|
|
|
DEVECHO "\n" |
|
|
|
|
|
; |
|
|
; |
|
|
DEVECHO "UART: MODE=DUAL, IO=" |
|
|
|
|
|
DEVECHO UARTDBASE+8 |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 8) |
|
|
|
|
|
UART7_CFG: |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (SET DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE (SET DURING INIT) |
|
|
|
|
|
.DB UART7BASE ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART7BASE + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART7CFG ; LINE CONFIGURATION |
|
|
|
|
|
.DW 0 ; POINTER TO RCV BUFFER STRUCT |
|
|
|
|
|
; |
|
|
|
|
|
DEVECHO "UART: IO=" |
|
|
|
|
|
DEVECHO UART7BASE |
|
|
DEVECHO "\n" |
|
|
DEVECHO "\n" |
|
|
; |
|
|
|
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
UART_CNT .EQU ($ - UART_CFG) / 8 |
|
|
|
|
|
; |
|
|
|
|
|
#IF ((!UARTINTS) | (INTMODE == 0)) |
|
|
#IF ((!UARTINTS) | (INTMODE == 0)) |
|
|
; |
|
|
; |
|
|
UARTSBC_RCVBUF .EQU 0 |
|
|
|
|
|
UARTCAS_RCVBUF .EQU 0 |
|
|
|
|
|
|
|
|
UART0_RCVBUF .EQU 0 |
|
|
|
|
|
UART1_RCVBUF .EQU 0 |
|
|
; |
|
|
; |
|
|
#ELSE |
|
|
#ELSE |
|
|
; |
|
|
; |
|
|
; UART SBC RECEIVE BUFFER |
|
|
; UART SBC RECEIVE BUFFER |
|
|
; |
|
|
; |
|
|
#IF (UARTSBC) |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 1) |
|
|
; |
|
|
; |
|
|
UARTSBC_RCVBUF: |
|
|
|
|
|
UARTSBC_CNT .DB 0 ; CHARACTERS IN RING BUFFER |
|
|
|
|
|
UARTSBC_HD .DW UARTSBC_BUF ; BUFFER HEAD POINTER |
|
|
|
|
|
UARTSBC_TL .DW UARTSBC_BUF ; BUFFER TAIL POINTER |
|
|
|
|
|
UARTSBC_BUF .FILL UART_BUFSZ,0 ; RECEIVE RING BUFFER |
|
|
|
|
|
|
|
|
UART0_RCVBUF: |
|
|
|
|
|
UART0_CNT .DB 0 ; CHARACTERS IN RING BUFFER |
|
|
|
|
|
UART0_HD .DW UART0_BUF ; BUFFER HEAD POINTER |
|
|
|
|
|
UART0_TL .DW UART0_BUF ; BUFFER TAIL POINTER |
|
|
|
|
|
UART0_BUF .FILL UART_BUFSZ,0 ; RECEIVE RING BUFFER |
|
|
; |
|
|
; |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
; UART CASSETTE RECEIVE BUFFER |
|
|
; UART CASSETTE RECEIVE BUFFER |
|
|
; |
|
|
; |
|
|
#IF (UARTCAS) |
|
|
|
|
|
|
|
|
#IF (UARTCNT >= 2) |
|
|
; |
|
|
; |
|
|
UARTCAS_RCVBUF: |
|
|
|
|
|
UARTCAS_CNT .DB 0 ; CHARACTERS IN RING BUFFER |
|
|
|
|
|
UARTCAS_HD .DW UARTCAS_BUF ; BUFFER HEAD POINTER |
|
|
|
|
|
UARTCAS_TL .DW UARTCAS_BUF ; BUFFER TAIL POINTER |
|
|
|
|
|
UARTCAS_BUF .FILL UART_BUFSZ,0 ; RECEIVE RING BUFFER |
|
|
|
|
|
|
|
|
UART1_RCVBUF: |
|
|
|
|
|
UART1_CNT .DB 0 ; CHARACTERS IN RING BUFFER |
|
|
|
|
|
UART1_HD .DW UART1_BUF ; BUFFER HEAD POINTER |
|
|
|
|
|
UART1_TL .DW UART1_BUF ; BUFFER TAIL POINTER |
|
|
|
|
|
UART1_BUF .FILL UART_BUFSZ,0 ; RECEIVE RING BUFFER |
|
|
; |
|
|
; |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
|