home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
TURBODSG
/
REMDRV23.MAC
< prev
next >
Wrap
Text File
|
2000-06-30
|
4KB
|
217 lines
; 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
DW ATACHI##
DW ATACHJ##
DW ATACHK##
DW ATACHL##
D