; REMDRV.MAC - A BASTARDIZATION OF CONREM ; CREATED 10/05/85 BY ESKAY (AS ALWAYS) ; VERSION 23 AS OF 10/11/85 ; NAME ('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 ; .Z80 ; ASEG ; GET SERIAL # STRAIGHT PUBLIC ?ORIG?,?UNIT? ?ORIG? EQU 24 ?UNIT? EQU 1 ; CSEG ; RCHNTY: LD A,(IX+32H) ; GET MODE BYTE CP 0FEH ; ATTACH? JP Z,ATTACH CP 0FDH ; DETACH? JP Z,DETACH CP 0FCH ; SET BAUD JP Z,SETBD CP 0FBH ; GET BAUD JP Z,GETBD CP 0FAH ; GET INPUT JP Z,DOIO ; ; CONTINUE WITH CONREM STUFF ; LD A,(IX+3BH) JP RCFCN##+3 ; CONTINUE ; ; +------------------------+ ; | COMM CHANNEL I/O STUFF | ; +------------------------+ ; ; ATTACH TO CHANNEL ; ATTACH: CALL GETCHN ; GET CHANNEL NUMBER INTO DE LD HL,BUSYV ; POINT TO BUSY VECTOR ADD HL,DE LD A,(HL) LD (HL),0FFH ; PRESET BUSY OR A ; TEST BUSY JP NZ,EXITA## ; RETURN A=FF IF BUSY LD HL,ATTV ; POINT TO ATTACH TABLE JR GETVEC ; GET VECTOR ; ; DETACH FROM CHANNEL ; DETACH: CALL GETCHN ; GET CHANNEL NUMBER LD HL,BUSYV ; POINT TO BUSY VECTOR ADD HL,DE LD (HL),0 ; SET CHANNEL CLEAR LD HL,DETV JR GETVEC ; ; SET CHANNEL BAUD RATE ; SETBD: CALL GETCHN ; GET CHANNEL NUMBER LD HL,SETBV ; POINT TO SETBAUD VECTORS JR GETVEC ; GET VECTOR ; ; GET BAUD RATE ; GETBD: CALL GETCHN ; GET CHANNEL # LD HL,GETBV ; POINT TO GETBAUD VECTORS JR GETVEC ; ; DO I/O ; DOIO: CALL GETCHN ; GET CHANNEL # RES 7,E ; STRIO OUTPUT FLAG IF SET LD HL,IOV ; ; GET VECTOR ; GETVEC: ADD HL,DE ADD HL,DE LD E,(HL) INC HL LD D,(HL) CALL TSTUND## ; TEST UNDEFINED LD A,0FEH ; PRELOAD FALSE JR NZ,.XCUTE CALL GETCHN LD HL,BUSYV ADD HL,DE LD (HL),0 JP EXITA## .XCUTE: EX DE,HL JP (HL) ; GETCHN: LD E,(IX+30H) ; GET CHANNEL LD D,0 RET ; COMMON /?INIT?/ ; DSKIN@:: LD HL,RCHNTY LD A,0C3H LD (RCFCN##),A LD (RCFCN##+1),HL RET ; DSEG ; ; REMDRV DATA AREA ; BUSYV: DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; BUSY VECTORS ATTV: DW ATACHA## DW ATACHB## DW ATACHC## DW ATACHD## DW ATACHE## DW ATACHF## DW ATACHG## DW ATACHH## DW ATACHI## DW ATACHJ## DW ATACHK## DW ATACHL## DW ATACHM## DW ATACHN## DW ATACHO## DW ATACHP## ; DETV: DW DETAA## DW DETAB## DW DETAC## DW DETAD## DW DETAE## DW DETAF## DW DETAG## DW DETAH## DW DETAI## DW DETAJ## DW DETAK## DW DETAL## DW DETAM## DW DETAN## DW DETAO## ; SETBV: DW SETBAA## DW SETBAB## DW SETBAC## DW SETBAD## DW SETBAE## DW SETBAF## DW SETBAG## DW SETBAH## DW SETBAI## DW SETBAJ## DW SETBAK## DW SETBAL## DW SETBAM## DW SETBAN## DW SETBAO## DW SETBAP## ; GETBV: DW GETBDA## DW GETBDB## DW GETBDC## DW GETBDD## DW GETBDE## DW GETBDF## DW GETBDG## DW GETBDH## DW GETBDI## DW GETBDJ## DW GETBDK## DW GETBDL## DW GETBDM## DW GETBDN## DW GETBDO## DW GETBDP## ; IOV: DW INOUTA## DW INOUTB## DW INOUTC## DW INOUTD## DW INOUTE## DW INOUTF## DW INOUTG## DW INOUTH## DW INOUTI## DW INOUTJ## DW INOUTK## DW INOUTL## DW INOUTM## DW INOUTN## DW INOUTO## DW INOUTP## ; END