|
|
|
@ -16,8 +16,6 @@ |
|
|
|
; |
|
|
|
; 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 |
|
|
|
@ -474,7 +472,7 @@ SIO_INITDEVX: |
|
|
|
; THIS ENTRY POINT BYPASSES DISABLING/ENABLING INTS WHICH IS REQUIRED BY |
|
|
|
; PREINIT ABOVE. PREINIT IS NOT ALLOWED TO ENABLE INTS! |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
CALL NEWLINE |
|
|
|
PRTS("SIO$") |
|
|
|
LD A,(IY+2) |
|
|
|
@ -499,7 +497,7 @@ SIO_INITDEVX: |
|
|
|
; |
|
|
|
SIO_INITDEV1: |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
PUSH DE |
|
|
|
POP BC |
|
|
|
PRTS(" CFG=$") |
|
|
|
@ -524,7 +522,7 @@ SIO_INITDEV1: |
|
|
|
LD C,75 ; DIVIDE BY 75 LIKE BAUD RATE |
|
|
|
CALL DIV32X8 ; HL NOW HAS (CLK / 75) |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
PRTS(" CLK75=$") |
|
|
|
CALL PRTHEX32 |
|
|
|
#ENDIF |
|
|
|
@ -544,7 +542,7 @@ SIO_INITDEV1A: |
|
|
|
JR SIO_INITDEV1A ; AND LOOP |
|
|
|
SIO_INITDEV1B: |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
PRTS(" CLK=$") |
|
|
|
CALL PRTHEX32 |
|
|
|
#ENDIF |
|
|
|
@ -563,7 +561,7 @@ SIO_INITDEV1B: |
|
|
|
LD DE,1 ; USE 1 FOR ENCODING CONSTANT |
|
|
|
CALL DECODE ; DE:HL := BAUD RATE, ERRORS IGNORED |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
PRTS(" BAUD75=$") |
|
|
|
CALL PRTHEX32 |
|
|
|
#ENDIF |
|
|
|
@ -581,7 +579,7 @@ SIO_INITDEV1C: |
|
|
|
DJNZ SIO_INITDEV1C ; LOOP UNTIL DONE SHIFTING |
|
|
|
SIO_INITDEV1D: |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
PRTS(" BAUD=$") |
|
|
|
CALL PRTHEX32 |
|
|
|
#ENDIF |
|
|
|
@ -591,7 +589,7 @@ SIO_INITDEV1D: |
|
|
|
; *** HANDLE DIVIDE BY ZERO??? *** |
|
|
|
CALL DIV16 ; BC := HL/DE == TARGET DIVISOR |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
PRTS(" DIV=$") |
|
|
|
CALL PRTHEXWORD |
|
|
|
#ENDIF |
|
|
|
@ -636,7 +634,7 @@ SIO_INITDEV1D: |
|
|
|
|
|
|
|
; *** CHECK FOR CARRY??? *** |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
PRTS(" DIV=$") |
|
|
|
CALL PRTHEXWORD |
|
|
|
#ENDIF |
|
|
|
@ -691,7 +689,7 @@ SIO_INITDEV4: |
|
|
|
; |
|
|
|
POP DE ; RESTORE DE = SERIAL CONFIG |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
PUSH BC |
|
|
|
PUSH HL |
|
|
|
POP BC |
|
|
|
@ -719,7 +717,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 (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
PRTS(" CTC=$") |
|
|
|
CALL PRTHEXBYTE |
|
|
|
#ENDIF |
|
|
|
@ -748,7 +746,7 @@ SIO_NOCTC: |
|
|
|
; |
|
|
|
SIO_INITFAIL: |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
PRTS(" BAD CFG$") |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
@ -853,7 +851,7 @@ SIO_INITIVT: |
|
|
|
; |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IF (DEBUG_DRV==THIS_DRV) |
|
|
|
#IF (SIODEBUG) |
|
|
|
LD HL,SIO_INITVALS |
|
|
|
LD B,SIO_INITLEN/2 |
|
|
|
SIO_INITPRT: |
|
|
|
|