|
|
@ -3,19 +3,18 @@ |
|
|
; UART DRIVER (SERIAL PORT) |
|
|
; UART DRIVER (SERIAL PORT) |
|
|
;================================================================================================== |
|
|
;================================================================================================== |
|
|
; |
|
|
; |
|
|
; Setup Parameter Word: |
|
|
|
|
|
; _______________________________ _______________________________ |
|
|
|
|
|
; | | | encoded || | | | | | |
|
|
|
|
|
; | |rts| Baud Rate ||dtr|xon| parity |stp| 8/7/6 | |
|
|
|
|
|
; |_______|___|___|_______________||___|___|___________|___|_______| |
|
|
|
|
|
; 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 |
|
|
|
|
|
; D register E register |
|
|
|
|
|
; |
|
|
|
|
|
; _______________________________ _______________________________ |
|
|
|
|
|
; | | | || | | | | | |
|
|
|
|
|
; | 0 0 |AFE|LP OT2 OT1 RTS DTR||DLB|BRK|STK EPS PEN|STB| WLS | |
|
|
|
|
|
; |_______|___|___________________||___|___|___________|___|_______| |
|
|
|
|
|
; 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 |
|
|
|
|
|
|
|
|
; SETUP PARAMETER WORD: |
|
|
|
|
|
; +-------+---+-------------------+ +---+---+-----------+---+-------+ |
|
|
|
|
|
; | |RTS| ENCODED BAUD RATE | |DTR|XON| PARITY |STP| 8/7/6 | |
|
|
|
|
|
; +-------+---+---+---------------+ ----+---+-----------+---+-------+ |
|
|
|
|
|
; F E D C B A 9 8 7 6 5 4 3 2 1 0 |
|
|
|
|
|
; -- MSB (D REGISTER) -- -- LSB (E REGISTER) -- |
|
|
|
|
|
; |
|
|
|
|
|
; UART CONFIGURATION REGISTERS: |
|
|
|
|
|
; +-------+---+-------------------+ +---+---+-----------+---+-------+ |
|
|
|
|
|
; | 0 0 |AFE|LP OT2 OT1 RTS DTR| |DLB|BRK|STK EPS PEN|STB| WLS | |
|
|
|
|
|
; +-------+---+-------------------+ +---+---+-----------+---+-------+ |
|
|
|
|
|
; F E D C B A 9 8 7 6 5 4 3 2 1 0 |
|
|
; -- MCR -- -- LCR -- |
|
|
; -- MCR -- -- LCR -- |
|
|
; |
|
|
; |
|
|
; |
|
|
; |
|
|
@ -46,20 +45,16 @@ UART_SCR .EQU 7 ; SCRATCH REGISTER (READ/WRITE) |
|
|
UART_DLL .EQU 0 ; DLAB=1: DIVISOR LATCH (LS) (READ/WRITE) |
|
|
UART_DLL .EQU 0 ; DLAB=1: DIVISOR LATCH (LS) (READ/WRITE) |
|
|
UART_DLM .EQU 1 ; DLAB=1: DIVISOR LATCH (MS) (READ/WRITE) |
|
|
UART_DLM .EQU 1 ; DLAB=1: DIVISOR LATCH (MS) (READ/WRITE) |
|
|
UART_EFR .EQU 2 ; LCR=$BF: ENHANCED FEATURE REG (READ/WRITE) |
|
|
UART_EFR .EQU 2 ; LCR=$BF: ENHANCED FEATURE REG (READ/WRITE) |
|
|
; |
|
|
|
|
|
UART_FIFO .EQU 0 ; FIFO ENABLE BIT |
|
|
|
|
|
UART_AFC .EQU 1 ; AUTO FLOW CONTROL ENABLE BIT |
|
|
|
|
|
|
|
|
;; |
|
|
|
|
|
;UART_FIFO .EQU 0 ; FIFO ENABLE BIT |
|
|
|
|
|
;UART_AFC .EQU 1 ; AUTO FLOW CONTROL ENABLE BIT |
|
|
; |
|
|
; |
|
|
#DEFINE UART_INP(RID) CALL UART_INP_IMP \ .DB RID |
|
|
#DEFINE UART_INP(RID) CALL UART_INP_IMP \ .DB RID |
|
|
#DEFINE UART_OUTP(RID) CALL UART_OUTP_IMP \ .DB RID |
|
|
#DEFINE UART_OUTP(RID) CALL UART_OUTP_IMP \ .DB RID |
|
|
; |
|
|
; |
|
|
; CHARACTER DEVICE DRIVER ENTRY |
|
|
|
|
|
; A: RESULT (OUT), CF=ERR |
|
|
|
|
|
; B: FUNCTION (IN) |
|
|
|
|
|
; C: CHARACTER (IN/OUT) |
|
|
|
|
|
; E: DEVICE/UNIT (IN) |
|
|
|
|
|
; |
|
|
; |
|
|
UART_INIT: |
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
UART_PREINIT: |
|
|
; |
|
|
; |
|
|
; INIT UART4 BOARD CONFIG REGISTER (NO HARM IF IT IS NOT THERE) |
|
|
; INIT UART4 BOARD CONFIG REGISTER (NO HARM IF IT IS NOT THERE) |
|
|
; |
|
|
; |
|
|
@ -68,11 +63,11 @@ UART_INIT: |
|
|
; |
|
|
; |
|
|
; SETUP THE DISPATCH TABLE ENTRIES |
|
|
; SETUP THE DISPATCH TABLE ENTRIES |
|
|
; |
|
|
; |
|
|
LD B,UARTCNT ; LOOP CONTROL |
|
|
|
|
|
|
|
|
LD B,UART_CNT ; 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 |
|
|
UART_INIT0: |
|
|
|
|
|
|
|
|
UART_PREINIT0: |
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
LD A,C ; PHYSICAL UNIT TO A |
|
|
LD A,C ; PHYSICAL UNIT TO A |
|
|
RLCA ; MULTIPLY BY CFG TABLE ENTRY SIZE (8 BYTES) |
|
|
RLCA ; MULTIPLY BY CFG TABLE ENTRY SIZE (8 BYTES) |
|
|
@ -83,39 +78,28 @@ UART_INIT0: |
|
|
PUSH HL ; SAVE IT |
|
|
PUSH HL ; SAVE IT |
|
|
PUSH HL ; COPY CFG DATA PTR |
|
|
PUSH HL ; COPY CFG DATA PTR |
|
|
POP IY ; ... TO IY |
|
|
POP IY ; ... TO IY |
|
|
CALL UART_INITP ; HAND OFF TO GENERIC INIT CODE |
|
|
|
|
|
|
|
|
CALL UART_INITUNIT ; HAND OFF TO GENERIC INIT CODE |
|
|
POP DE ; GET ENTRY ADDRESS BACK, BUT PUT IN DE |
|
|
POP DE ; GET ENTRY ADDRESS BACK, BUT PUT IN DE |
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
; |
|
|
; |
|
|
LD A,(IY + 1) ; GET THE UART TYPE DETECTED |
|
|
LD A,(IY + 1) ; GET THE UART TYPE DETECTED |
|
|
OR A ; SET FLAGS |
|
|
OR A ; SET FLAGS |
|
|
JR Z,UART_INIT1 ; SKIP IT IF NOTHING FOUND |
|
|
|
|
|
|
|
|
JR Z,UART_PREINIT2 ; SKIP IT IF NOTHING FOUND |
|
|
; |
|
|
; |
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
LD BC,UART_DISPATCH ; BC := DISPATCH ADDRESS |
|
|
LD BC,UART_DISPATCH ; BC := DISPATCH ADDRESS |
|
|
CALL NZ,CIO_ADDENT ; ADD ENTRY IF UART FOUND, BC:DE |
|
|
CALL NZ,CIO_ADDENT ; ADD ENTRY IF UART FOUND, BC:DE |
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
; |
|
|
; |
|
|
UART_INIT1: |
|
|
|
|
|
|
|
|
UART_PREINIT2: |
|
|
INC C ; NEXT PHYSICAL UNIT |
|
|
INC C ; NEXT PHYSICAL UNIT |
|
|
DJNZ UART_INIT0 ; LOOP UNTIL DONE |
|
|
|
|
|
|
|
|
DJNZ UART_PREINIT0 ; LOOP UNTIL DONE |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
RET ; AND RETURN |
|
|
RET ; AND RETURN |
|
|
; |
|
|
; |
|
|
; UART INITIALIZATION ROUTINE |
|
|
; UART INITIALIZATION ROUTINE |
|
|
; |
|
|
; |
|
|
UART_INITP: |
|
|
|
|
|
; WAIT FOR ANY IN-FLIGHT DATA TO BE SENT |
|
|
|
|
|
LD B,0 ; LOOP TIMEOUT COUNTER |
|
|
|
|
|
UART_INITP1: |
|
|
|
|
|
UART_INP(UART_LSR) ; GET LINE STATUS REGISTER |
|
|
|
|
|
BIT 6,A ; TEST BIT 6 (TRANSMITTER EMPTY) |
|
|
|
|
|
JR NZ,UART_INITP2 ; EMPTY, CONTINUE |
|
|
|
|
|
LD DE,100 ; DELAY 100 * 16US |
|
|
|
|
|
CALL VDELAY ; NORMALIZE TIMEOUT TO CPU SPEED |
|
|
|
|
|
DJNZ UART_INITP1 ; KEEP CHECKING UNTIL TIMEOUT |
|
|
|
|
|
|
|
|
|
|
|
UART_INITP2: |
|
|
|
|
|
|
|
|
UART_INITUNIT: |
|
|
; DETECT THE UART TYPE |
|
|
; DETECT THE UART TYPE |
|
|
CALL UART_DETECT ; DETERMINE UART TYPE |
|
|
CALL UART_DETECT ; DETERMINE UART TYPE |
|
|
LD (IY + 1),A ; ALSO SAVE IN CONFIG TABLE |
|
|
LD (IY + 1),A ; ALSO SAVE IN CONFIG TABLE |
|
|
@ -130,10 +114,36 @@ UART_INITP2: |
|
|
|
|
|
|
|
|
; SET DEFAULT CONFIG |
|
|
; SET DEFAULT CONFIG |
|
|
LD DE,-1 ; LEAVE CONFIG ALONE |
|
|
LD DE,-1 ; LEAVE CONFIG ALONE |
|
|
CALL UART_INITDEV ; IMPLEMENT IT |
|
|
|
|
|
|
|
|
|
|
|
; DISPLAY UART CONFIG AND RETURN |
|
|
|
|
|
JP UART_PRTCFG |
|
|
|
|
|
|
|
|
JP UART_INITDEV ; IMPLEMENT IT AND RETURN |
|
|
|
|
|
; |
|
|
|
|
|
; |
|
|
|
|
|
; |
|
|
|
|
|
; |
|
|
|
|
|
UART_INIT: |
|
|
|
|
|
LD B,UART_CNT ; COUNT OF POSSIBLE UART UNITS |
|
|
|
|
|
LD C,0 ; INDEX INTO UART CONFIG TABLE |
|
|
|
|
|
UART_INIT1: |
|
|
|
|
|
PUSH BC ; SAVE LOOP CONTROL |
|
|
|
|
|
|
|
|
|
|
|
LD A,C ; PHYSICAL UNIT TO A |
|
|
|
|
|
RLCA ; MULTIPLY BY CFG TABLE ENTRY SIZE (8 BYTES) |
|
|
|
|
|
RLCA ; ... |
|
|
|
|
|
RLCA ; ... TO GET OFFSET INTO CFG TABLE |
|
|
|
|
|
LD HL,UART_CFG ; POINT TO START OF CFG TABLE |
|
|
|
|
|
CALL ADDHLA ; HL := ENTRY ADDRESS |
|
|
|
|
|
PUSH HL ; COPY CFG DATA PTR |
|
|
|
|
|
POP IY ; ... TO IY |
|
|
|
|
|
|
|
|
|
|
|
LD A,(IY + 1) ; GET UART TYPE |
|
|
|
|
|
OR A ; SET FLAGS |
|
|
|
|
|
CALL NZ,UART_PRTCFG ; PRINT IF NOT ZERO |
|
|
|
|
|
|
|
|
|
|
|
POP BC ; RESTORE LOOP CONTROL |
|
|
|
|
|
INC C ; NEXT UNIT |
|
|
|
|
|
DJNZ UART_INIT1 ; LOOP TILL DONE |
|
|
|
|
|
; |
|
|
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
|
|
RET ; DONE |
|
|
; |
|
|
; |
|
|
; |
|
|
; |
|
|
; |
|
|
; |
|
|
@ -239,8 +249,9 @@ UART_INITDEV1: |
|
|
LD A,%00100111 ; FIFO ENABLE & RESET, 64 BYTE FIFO ENABLE ON 750+ |
|
|
LD A,%00100111 ; FIFO ENABLE & RESET, 64 BYTE FIFO ENABLE ON 750+ |
|
|
UART_OUTP(UART_FCR) ; DO IT |
|
|
UART_OUTP(UART_FCR) ; DO IT |
|
|
; |
|
|
; |
|
|
; SETUP LCR TO DEFAULT (DLAB IS CLEARED) |
|
|
|
|
|
LD A,$03 ; DLAB OFF, 8 DATA, 1 STOP, NO PARITY |
|
|
|
|
|
|
|
|
; SETUP LCR FROM SECOND CONFIG BYTE (DLAB IS CLEARED) |
|
|
|
|
|
LD A,(IY + 4) ; GET CONFIG BYTE |
|
|
|
|
|
AND ~$C0 ; ISOLATE PARITY, STOP/DATA BITS |
|
|
UART_OUTP(UART_LCR) ; SAVE IT |
|
|
UART_OUTP(UART_LCR) ; SAVE IT |
|
|
; |
|
|
; |
|
|
; SETUP MCR FROM FIRST CONFIG BYTE |
|
|
; SETUP MCR FROM FIRST CONFIG BYTE |
|
|
@ -248,10 +259,6 @@ UART_INITDEV1: |
|
|
AND ~$1F ; REMOVE ENCODED BAUD RATE BITS |
|
|
AND ~$1F ; REMOVE ENCODED BAUD RATE BITS |
|
|
OR $03 ; FORCE RTS & DTR |
|
|
OR $03 ; FORCE RTS & DTR |
|
|
UART_OUTP(UART_MCR) ; SAVE IT |
|
|
UART_OUTP(UART_MCR) ; SAVE IT |
|
|
; |
|
|
|
|
|
; SPECIAL HANDLING FOR AFC ON UARTS WITH EFR REGISTER |
|
|
|
|
|
BIT 5,A ; IS FLOW CONTOL REQUESTED? |
|
|
|
|
|
JR Z,UART_INITDEV3 ; NOPE, SKIP AHEAD |
|
|
|
|
|
; |
|
|
; |
|
|
; TEST FOR EFR CAPABLE CHIPS |
|
|
; TEST FOR EFR CAPABLE CHIPS |
|
|
LD A,(IY + 1) ; GET UART TYPE |
|
|
LD A,(IY + 1) ; GET UART TYPE |
|
|
@ -259,20 +266,26 @@ UART_INITDEV1: |
|
|
JR Z,UART_INITDEV2 ; USE EFR REGISTER |
|
|
JR Z,UART_INITDEV2 ; USE EFR REGISTER |
|
|
CP UART_16850 ; 16850? |
|
|
CP UART_16850 ; 16850? |
|
|
JR Z,UART_INITDEV2 ; USE EFR REGISTER |
|
|
JR Z,UART_INITDEV2 ; USE EFR REGISTER |
|
|
JR UART_INITDEV3 ; NO EFT, SKIP AHEAD |
|
|
|
|
|
|
|
|
JR UART_INITDEV4 ; NO EFT, SKIP AHEAD |
|
|
; |
|
|
; |
|
|
UART_INITDEV2: |
|
|
UART_INITDEV2: |
|
|
; WE HAVE AN EFR CAPABLE CHIP, SET AUTOFLOW IN EFR REGISTER |
|
|
|
|
|
|
|
|
; WE HAVE AN EFR CAPABLE CHIP, SET EFR REGISTER |
|
|
UART_INP(UART_LCR) ; GET CURRENT LCR VALUE |
|
|
UART_INP(UART_LCR) ; GET CURRENT LCR VALUE |
|
|
PUSH AF ; SAVE IT |
|
|
PUSH AF ; SAVE IT |
|
|
LD A,$BF ; VALUE TO ACCESS EFR |
|
|
LD A,$BF ; VALUE TO ACCESS EFR |
|
|
UART_OUTP(UART_LCR) ; SET VALUE IN LCR |
|
|
UART_OUTP(UART_LCR) ; SET VALUE IN LCR |
|
|
LD A,$C0 ; ENABLE CTS/RTS FLOW CONTROL |
|
|
|
|
|
|
|
|
LD A,(IY + 5) ; GET CONFIG BYTE |
|
|
|
|
|
BIT 5,A ; AFC REQUESTED? |
|
|
|
|
|
LD A,$C0 ; ASSUME AFC ON |
|
|
|
|
|
JR NZ,UART_INITDEV3 ; YES, IMPLEMENT IT |
|
|
|
|
|
XOR A ; NO AFC REQEUST, EFR := 0 |
|
|
|
|
|
; |
|
|
|
|
|
UART_INITDEV3: |
|
|
UART_OUTP(UART_EFR) ; SAVE IT |
|
|
UART_OUTP(UART_EFR) ; SAVE IT |
|
|
POP AF ; RECOVER ORIGINAL LCR VALUE |
|
|
POP AF ; RECOVER ORIGINAL LCR VALUE |
|
|
UART_OUTP(UART_LCR) ; AND SAVE IT |
|
|
|
|
|
|
|
|
UART_OUTP(UART_LCR) ; AND PUT IT BACK |
|
|
; |
|
|
; |
|
|
UART_INITDEV3: |
|
|
|
|
|
|
|
|
UART_INITDEV4: |
|
|
#IF (UART_DEBUG) |
|
|
#IF (UART_DEBUG) |
|
|
PRTS(" [$") |
|
|
PRTS(" [$") |
|
|
|
|
|
|
|
|
@ -327,7 +340,7 @@ UART_QUERY: |
|
|
; |
|
|
; |
|
|
UART_DEVICE: |
|
|
UART_DEVICE: |
|
|
LD D,CIODEV_UART ; D := DEVICE TYPE |
|
|
LD D,CIODEV_UART ; D := DEVICE TYPE |
|
|
LD E,C ; E := PHYSICAL UNIT |
|
|
|
|
|
|
|
|
LD E,(IY) ; E := PHYSICAL UNIT |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
XOR A ; SIGNAL SUCCESS |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
@ -496,13 +509,13 @@ UART_PRTCFG: |
|
|
; ; PRINT FEATURES ENABLED |
|
|
; ; PRINT FEATURES ENABLED |
|
|
; LD A,(UART_FEAT) |
|
|
; LD A,(UART_FEAT) |
|
|
; BIT UART_FIFO,A |
|
|
; BIT UART_FIFO,A |
|
|
; JR Z,UART_INITP2 |
|
|
|
|
|
|
|
|
; JR Z,UART_INITUNIT2 |
|
|
; PRTS(" FIFO$") |
|
|
; PRTS(" FIFO$") |
|
|
;UART_INITP2: |
|
|
|
|
|
|
|
|
;UART_INITUNIT2: |
|
|
; BIT UART_AFC,A |
|
|
; BIT UART_AFC,A |
|
|
; JR Z,UART_INITP3 |
|
|
|
|
|
|
|
|
; JR Z,UART_INITUNIT3 |
|
|
; PRTS(" AFC$") |
|
|
; PRTS(" AFC$") |
|
|
;UART_INITP3: |
|
|
|
|
|
|
|
|
;UART_INITUNIT3: |
|
|
; |
|
|
; |
|
|
XOR A |
|
|
XOR A |
|
|
RET |
|
|
RET |
|
|
@ -570,67 +583,68 @@ UART_DEV .DB 0 ; DEVICE NUM USED DURING INIT |
|
|
; UART PORT TABLE |
|
|
; UART PORT TABLE |
|
|
; |
|
|
; |
|
|
UART_CFG: |
|
|
UART_CFG: |
|
|
#IF (UARTCNT >= 1) |
|
|
|
|
|
|
|
|
#IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_ZETA) | (PLATFORM == PLT_ZETA2)) |
|
|
|
|
|
; SBC/ZETA ONBOARD SERIAL PORT |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; UART TYPE |
|
|
.DB 0 ; UART TYPE |
|
|
.DB UART0IOB ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART0IOB + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART0CFG ; LINE CONFIGURATION |
|
|
|
|
|
|
|
|
.DB $68 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB $68 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW DEFSERCFG ; LINE CONFIGURATION |
|
|
.FILL 2,$FF ; FILLER |
|
|
.FILL 2,$FF ; FILLER |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UARTCNT >= 2) |
|
|
|
|
|
|
|
|
#IF (PLATFORM == PLT_SBC) | (PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4)) |
|
|
|
|
|
; CASSETTE INTERFACE SERIAL PORT |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; UART TYPE |
|
|
.DB 0 ; UART TYPE |
|
|
.DB UART1IOB ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART1IOB + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART1CFG ; LINE CONFIGURATION |
|
|
|
|
|
|
|
|
.DB $80 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB $80 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW SER_300_8N1 ; LINE CONFIGURATION |
|
|
.FILL 2,$FF ; FILLER |
|
|
.FILL 2,$FF ; FILLER |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UARTCNT >= 3) |
|
|
|
|
|
|
|
|
#IF (PLATFORM == PLT_SBC) |
|
|
|
|
|
; MF/PIC SERIAL PORT |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; UART TYPE |
|
|
.DB 0 ; UART TYPE |
|
|
.DB UART2IOB ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART2IOB + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART2CFG ; LINE CONFIGURATION |
|
|
|
|
|
|
|
|
.DB $48 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB $48 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW DEFSERCFG ; LINE CONFIGURATION |
|
|
.FILL 2,$FF ; FILLER |
|
|
.FILL 2,$FF ; FILLER |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UARTCNT >= 4) |
|
|
|
|
|
|
|
|
#IF (PLATFORM == PLT_SBC) | (PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4)) |
|
|
|
|
|
; 4UART SERIAL PORT A |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; UART TYPE |
|
|
.DB 0 ; UART TYPE |
|
|
.DB UART3IOB ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART3IOB + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART3CFG ; LINE CONFIGURATION |
|
|
|
|
|
|
|
|
.DB $C0 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB $C0 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW DEFSERCFG ; LINE CONFIGURATION |
|
|
.FILL 2,$FF ; FILLER |
|
|
.FILL 2,$FF ; FILLER |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UARTCNT >= 5) |
|
|
|
|
|
|
|
|
#IF (PLATFORM == PLT_SBC) | (PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4)) |
|
|
|
|
|
; 4UART SERIAL PORT B |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; UART TYPE |
|
|
.DB 0 ; UART TYPE |
|
|
.DB UART4IOB ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART4IOB + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART4CFG ; LINE CONFIGURATION |
|
|
|
|
|
|
|
|
.DB $C8 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB $C8 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW DEFSERCFG ; LINE CONFIGURATION |
|
|
.FILL 2,$FF ; FILLER |
|
|
.FILL 2,$FF ; FILLER |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UARTCNT >= 6) |
|
|
|
|
|
|
|
|
#IF (PLATFORM == PLT_SBC) | (PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4)) |
|
|
|
|
|
; 4UART SERIAL PORT C |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; UART TYPE |
|
|
.DB 0 ; UART TYPE |
|
|
.DB UART5IOB ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART5IOB + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART5CFG ; LINE CONFIGURATION |
|
|
|
|
|
|
|
|
.DB $D0 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB $D0 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW DEFSERCFG ; LINE CONFIGURATION |
|
|
.FILL 2,$FF ; FILLER |
|
|
.FILL 2,$FF ; FILLER |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (UARTCNT >= 7) |
|
|
|
|
|
|
|
|
#IF (PLATFORM == PLT_SBC) | (PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4)) |
|
|
|
|
|
; 4UART SERIAL PORT D |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
.DB 0 ; UART TYPE |
|
|
.DB 0 ; UART TYPE |
|
|
.DB UART6IOB ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART6IOB + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART6CFG ; LINE CONFIGURATION |
|
|
|
|
|
.FILL 2,$FF ; FILLER |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
#IF (UARTCNT >= 8) |
|
|
|
|
|
.DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) |
|
|
|
|
|
.DB 0 ; UART TYPE |
|
|
|
|
|
.DB UART7IOB ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB UART7IOB + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW UART7CFG ; LINE CONFIGURATION |
|
|
|
|
|
|
|
|
.DB $D8 ; IO PORT BASE (RBR, THR) |
|
|
|
|
|
.DB $D8 + UART_LSR ; LINE STATUS PORT (LSR) |
|
|
|
|
|
.DW DEFSERCFG ; LINE CONFIGURATION |
|
|
.FILL 2,$FF ; FILLER |
|
|
.FILL 2,$FF ; FILLER |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
UART_CNT .EQU ($ - UART_CFG) / 8 |
|
|
|