home *** CD-ROM | disk | FTP | other *** search
- ; REMCH - REMOTE CHANNEL DRIVER EXAMPLE
- ;
- MODULE "RemCh0"
- ;
- LOC Code#
- ;
- ; COM1 SET BAUD RATE
- ;
- SETBA_::
- MOV CH,=0 ; SET CHANNEL 1
- MOV CL,0X55[SI] ; GET E-REGISTER
- MOV DL,=3 ; SET FUNCTION 3=SET BAUD RATE
- CALL COMDRV# ; DO IT
- MOV 0X4F[SI],=BYTE 0XFF ; RETURN TRUE
- RET ; AND QUIT
- ;
- ; COM1 GET BAUD RATE
- ;
- GETBD_::
- MOV CH,=0 ; SET CHANNEL 1
- MOV DL,=4 ; SET FUNCTION 4=GET BAUD RATE
- CALL COMDRV#
- MOV 0X4F[SI],AL ; RETURN WITH BAUD IN A
- RET
- ;
- ; COM1 I/O
- ;
- INOUT_::
- MOV AL,0X54[SI] ; GET DIRECTION FLAG
- AND AL,=0X80 ; VALID CHAR IN E?
- JZ __NO1 ; NO, INPUT ONLY
- MOV CH,=0
- CALL CMOUT ; COMMON OUTPUT
- __NO1: MOV DX,0X6A[SI]
- MOV BP,0X6C[SI]
- MOV CX,=128
- MOV BX,&COM1BF
- MOV AL,[BX]
- PUSH AX
- MOV AX,DS
- CALL LDIR#
- POP AX
- MOV COM1BF,=BYTE 0
- MOV 0X4F[SI],AL
- RET
- ;
- ; COMMON OUTPUT
- ;
- CMOUT: MOV CL,0X55[SI] ; GET CHARACTER
- MOV DL,=2 ; OUTPUT FCN
- JMP COMDRV# ; DO IT
- ;
- ; ATTACH COM CHANNEL
- ;
- ATACH_::
- MOV DX,&COM1PL
- CALL LNKPOL#
- MOV 0X4F[SI],=BYTE 0
- RET
- ;
- ; DETACH COM CHANNEL
- ;
- DETA_::
- MOV BX,&COM1PL
- JMP UNLINK#
- ;
- ; POLL ROUTINE
- ;
- COM1PL: WORD 0
- WORD 0
- MOV DL,=0
- MOV CH,=0
- CALL COMDRV#
- OR AL,AL
- JNZ __1
- RET
- ;
- __1: MOV DL,=1
- MOV CH,=0
- CALL COMDRV#
- MOV CH,AL
- MOV BX,&COM1BF
- MOV AL,[BX]
- CMP AL,=0X7F
- JNZ __2
- RET
- ;
- __2: CLI
- INC AL
- MOV [BX],AL
- MOV DL,AL
- MOV DH,=0
- ADD BX,DX
- MOV [BX],CH
- STI
- RET
- ;
- ; REMCH DATA AREA
- ;
- LOC Data#
- ;
- COM1BF: BYTE 0
- RES 127
- ;
- END
-