|
|
|
@ -16,6 +16,8 @@ |
|
|
|
; |
|
|
|
; SIO PORT A (COM1:) and SIO PORT B (COM2:) ARE MAPPED TO DEVICE UC1: AND UL1: IN CP/M. |
|
|
|
; |
|
|
|
THIS_DRV .SET DRV_ID_SIO |
|
|
|
; |
|
|
|
SIO_BUFSZ .EQU 32 ; RECEIVE RING BUFFER SIZE |
|
|
|
; |
|
|
|
SIO_NONE .EQU 0 |
|
|
|
@ -472,7 +474,7 @@ SIO_INITDEVX: |
|
|
|
; THIS ENTRY POINT BYPASSES DISABLING/ENABLING INTS WHICH IS REQUIRED BY |
|
|
|
; PREINIT ABOVE. PREINIT IS NOT ALLOWED TO ENABLE INTS! |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
CALL NEWLINE |
|
|
|
PRTS("SIO$") |
|
|
|
LD A,(IY+2) |
|
|
|
@ -497,7 +499,7 @@ SIO_INITDEVX: |
|
|
|
; |
|
|
|
SIO_INITDEV1: |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
PUSH DE |
|
|
|
POP BC |
|
|
|
PRTS(" CFG=$") |
|
|
|
@ -522,7 +524,7 @@ SIO_INITDEV1: |
|
|
|
LD C,75 ; DIVIDE BY 75 LIKE BAUD RATE |
|
|
|
CALL DIV32X8 ; HL NOW HAS (CLK / 75) |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
PRTS(" CLK75=$") |
|
|
|
CALL PRTHEX32 |
|
|
|
#ENDIF |
|
|
|
@ -542,7 +544,7 @@ SIO_INITDEV1A: |
|
|
|
JR SIO_INITDEV1A ; AND LOOP |
|
|
|
SIO_INITDEV1B: |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
PRTS(" CLK=$") |
|
|
|
CALL PRTHEX32 |
|
|
|
#ENDIF |
|
|
|
@ -561,7 +563,7 @@ SIO_INITDEV1B: |
|
|
|
LD DE,1 ; USE 1 FOR ENCODING CONSTANT |
|
|
|
CALL DECODE ; DE:HL := BAUD RATE, ERRORS IGNORED |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
PRTS(" BAUD75=$") |
|
|
|
CALL PRTHEX32 |
|
|
|
#ENDIF |
|
|
|
@ -579,7 +581,7 @@ SIO_INITDEV1C: |
|
|
|
DJNZ SIO_INITDEV1C ; LOOP UNTIL DONE SHIFTING |
|
|
|
SIO_INITDEV1D: |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
PRTS(" BAUD=$") |
|
|
|
CALL PRTHEX32 |
|
|
|
#ENDIF |
|
|
|
@ -589,7 +591,7 @@ SIO_INITDEV1D: |
|
|
|
; *** HANDLE DIVIDE BY ZERO??? *** |
|
|
|
CALL DIV16 ; BC := HL/DE == TARGET DIVISOR |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
PRTS(" DIV=$") |
|
|
|
CALL PRTHEXWORD |
|
|
|
#ENDIF |
|
|
|
@ -634,7 +636,7 @@ SIO_INITDEV1D: |
|
|
|
|
|
|
|
; *** CHECK FOR CARRY??? *** |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
PRTS(" DIV=$") |
|
|
|
CALL PRTHEXWORD |
|
|
|
#ENDIF |
|
|
|
@ -689,7 +691,7 @@ SIO_INITDEV4: |
|
|
|
; |
|
|
|
POP DE ; RESTORE DE = SERIAL CONFIG |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
PUSH BC |
|
|
|
PUSH HL |
|
|
|
POP BC |
|
|
|
@ -717,7 +719,7 @@ SIO_INITDEV4: |
|
|
|
; ALL GOOD. PROGRAM THE CTC CHANNEL |
|
|
|
LD A,(IY+13) ; GET CTC CHANNEL |
|
|
|
ADD A,CTCBASE ; ADD TO CTC BASE PORT ADR |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
PRTS(" CTC=$") |
|
|
|
CALL PRTHEXBYTE |
|
|
|
#ENDIF |
|
|
|
@ -746,7 +748,7 @@ SIO_NOCTC: |
|
|
|
; |
|
|
|
SIO_INITFAIL: |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
PRTS(" BAD CFG$") |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
@ -851,7 +853,7 @@ SIO_INITIVT: |
|
|
|
; |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IF (SIODEBUG) |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
LD HL,SIO_INITVALS |
|
|
|
LD B,SIO_INITLEN/2 |
|
|
|
SIO_INITPRT: |
|
|
|
|