; REMDRV.A - A BASTARDIZATION OF CONREM ; CREATED 12/19/85 BY ESKAY (AS ALWAYS) ; VERSION 23 AS OF 12/19/85 ; MODULE "RemDrv" ; ; ANOTHER ENHANCED TURBODOS MODULE BY ESKAY ; IN ADDITION TO THE DESCRIPTION OF T-FCN 33, REMOTE CONSOLE I/O, ; THE FOLLOWING IS NOW POSSIBLE: ; - SET/QUERY REMOTE BAUD RATES ; - REMOTE CHANNEL I/O ; ; ADDITIONAL SYNTAX: (C-REGISTER = 33) ; REG CONT FUNCTION ; D 0FE ATTACH CHANNEL IN B, RETURN A=FF=BUSY ; D 0FD DETACH CHANNEL IN B ; D 0FC SET BAUD FOR CHANNEL IN B, FROM E ; D 0FB GET BAUD FOR CHANNEL IN B, RETURN IN A ; D 0FA RETURN INPUT DATA FROM CHANNEL B, ; IF BIT 7 SET ON B, OUTPUT BYTE IN E ; ; NOTE: ; ===== ; ADD IN .PAR FILE: RCFCN = 0XE9,[RCHNTY] ; LOC Code# ; RCHNTY:: MOV AL,0X56[SI] ; GET MODE BYTE CMP AL,=0XFE ; ATTACH? JZ ATTACH CMP AL,=0XFD ; DETACH? JZ DETACH CMP AL,=0XFC ; SET BAUD JZ SETBD CMP AL,=0XFB ; GET BAUD JZ GETBD CMP AL,=0XFA ; GET INPUT JZ DOIO ; ; CONTINUE WITH CONREM STUFF ; MOV AL,0X67[SI] JMP RCFCN#+3 ; CONTINUE ; ; +------------------------+ ; | COMM CHANNEL I/O STUFF | ; +------------------------+ ; ; ATTACH TO CHANNEL ; ATTACH: CALL GETCHN ; GET CHANNEL NUMBER INTO DE MOV BX,&BUSYV ; POINT TO BUSY VECTOR ADD BX,DX MOV AL,[BX] MOV BYTE [BX],=0XFF ; PRESET BUSY OR AL,AL ; TEST BUSY JZ __X ; RETURN A=FF IF BUSY MOV 0X4F[SI],AL RET ; __X: MOV BX,&ATTV ; POINT TO ATTACH TABLE JMPS GETVEC ; GET VECTOR ; ; DETACH FROM CHANNEL ; DETACH: CALL GETCHN ; GET CHANNEL NUMBER MOV BX,&BUSYV ; POINT TO BUSY VECTOR ADD BX,DX MOV BYTE [BX],=0 ; SET CHANNEL CLEAR MOV BX,&DETV JMPS GETVEC ; ; SET CHANNEL BAUD RATE ; SETBD: CALL GETCHN ; GET CHANNEL NUMBER MOV BX,&SETBV ; POINT TO SETBAUD VECTORS JMPS GETVEC ; GET VECTOR ; ; GET BAUD RATE ; GETBD: CALL GETCHN ; GET CHANNEL # MOV BX,&GETBV ; POINT TO GETBAUD VECTORS JMPS GETVEC ; ; DO I/O ; DOIO: CALL GETCHN ; GET CHANNEL # AND DL,=0X7F ; STRIO OUTPUT FLAG IF SET MOV BX,&IOV ; ; GET VECTOR ; GETVEC: ADD BX,DX ADD BX,DX MOV DL,[BX] INC BX MOV DH,[BX] CALL TSTUND# ; TEST UNDEFINED MOV AL,=0XFE ; PRELOAD FALSE JNZ XCUTE MOV DX,=0 MOV BX,&BUSYV ADD BX,DX MOV BYTE [BX],=0 MOV 0X4F[SI],AL RET ; XCUTE: XCHG DX,BX JMPI BX ; ; GET CHANNEL NUMBER ; GETCHN: MOV DL,0X54[SI] MOV DH,=0 RET ; LOC Data# ; ; REMDRV DATA AREA ; BUSYV: BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; BUSY VECTORS ATTV: WORD &ATACHA# WORD &ATACHB# WORD &ATACHC# WORD &ATACHD# WORD &ATACHE# WORD &ATACHF# WORD &ATACHG# WORD &ATACHH# WORD &ATACHI# WORD &ATACHJ# WORD &ATACHK# WORD &ATACHL# WORD &ATACHM# WORD &ATACHN# WORD &ATACHO# WORD &ATACHP# ; DETV: WORD &DETAA# WORD &DETAB# WORD &DETAC# WORD &DETAD# WORD &DETAE# WORD &DETAF# WORD &DETAG# WORD &DETAH# WORD &DETAI# WORD &DETAJ# WORD &DETAK# WORD &DETAL# WORD &DETAM# WORD &DETAN# WORD &DETAO# WORD &DETAP# ; SETBV: WORD &SETBAA# WORD &SETBAB# WORD &SETBAC# WORD &SETBAD# WORD &SETBAE# WORD &SETBAF# WORD &SETBAG# WORD &SETBAH# WORD &SETBAI# WORD &SETBAJ# WORD &SETBAK# WORD &SETBAL# WORD &SETBAM# WORD &SETBAN# WORD &SETBAO# WORD &SETBAP# ; GETBV: WORD &GETBDA# WORD &GETBDB# WORD &GETBDC# WORD &GETBDD# WORD &GETBDE# WORD &GETBDF# WORD &GETBDG# WORD &GETBDH# WORD &GETBDI# WORD &GETBDJ# WORD &GETBDK# WORD &GETBDL# WORD &GETBDM# WORD &GETBDN# WORD &GETBDO# WORD &GETBDP# ; IOV: WORD &INOUTA# WORD &INOUTB# WORD &INOUTC# WORD &INOUTD# WORD &INOUTE# WORD &INOUTF# WORD &INOUTG# WORD &INOUTH# WORD &INOUTI# WORD &INOUTJ# WORD &INOUTK# WORD &INOUTL# WORD &INOUTM# WORD &INOUTN# WORD &INOUTO# WORD &INOUTP# ; END  .