home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
turbodsg
/
attrem.mac
< prev
next >
Wrap
Text File
|
1986-07-05
|
2KB
|
135 lines
; ATTACH TO REMOTE DRIVERS VIA REMDRV
;
CR EQU 0DH
LF EQU 0AH
;
.Z80
;
CSEG
;
START: LD SP,STACK ; set up local stack
LD A,(5DH) ; PORT A..P
CP 'A' ; CHECK!
JR C,.FALP
CP 'Q'
JR NC,.FALP
LD (PORT1),A
LD (PORT2),A
LD (PORT3),A
LD (PORT4),A
DEC A
AND 0FH
LD (PORT),A
LD DE,QUIT ; set abort address
LD C,8
CALL 50H
LD C,33
LD D,0FEH ; attach to com channel 1
LD A,(PORT)
LD B,A
CALL 50H
INC A ; busy?
JR Z,BUZI
INC A
JR NZ,LOCL1
LD DE,EROR
JR XX
;
.FALP: LD DE,FALP
JR XX
;
BUZI: LD DE,BARF ; else quit with error message
XX: LD C,9
CALL 5
RST 0
;
LOCL1: LD C,9
LD DE,HOOKED ; display success message
CALL 5
LD C,33
LD D,0FCH ; set com channel 1 baud rate
LD A,(PORT)
LD B,A
LD E,7 ; 1200 baud
CALL 50H
;
; I/O loop
;
LOCL: LD C,6 ; get keyboard char if there is one
LD E,0FFH
CALL 5
OR A ; got a character?
JR NZ,ECHO ; yes, echo it to remote
;
NOIN: LD C,33
LD D,0FAH ; com channel 1 I/O
LD A,(PORT)
LD B,A ; set input-only
CALL 50H
OR A ; check if any input chars
JR Z,LOCL ; no, get next keyboard char
..OO: LD B,A ; else display the input buffer
LD HL,81H ; starting at 81h, for A chars
OLP: LD A,(HL)
PUSH BC
PUSH HL
CALL ECHO1 ; display the character
POP HL
POP BC
INC HL
DJNZ OLP
JR LOCL
;
; echo a character to remote, read input buffer
;
ECHO: LD C,33
LD E,A ; load character
LD D,0FAH ; com channel 1 I/O request
LD A,(PORT)
OR 80H
LD B,A ; set output flag
CALL 50H
OR A ; got any input?
JR NZ,..OO ; yes, join above loop
JR LOCL ; else go for next keyboard char
;
; echo a character to the console
;
ECHO1: LD E,A
LD C,6
JP 5
;
; abort address - only way to exit
;
QUIT: LD D,0FDH ; request detach from com1
LD A,(PORT)
LD B,A
LD C,33
CALL 50H
LD C,9
LD DE,UNHOOK ; display message
CALL 5
RST 0
;
DSEG
;
PORT: DB 0
;
BARF: DB 0DH,0AH,0AH,7
DB 'ERROR: COM CHANNEL '
PORT1: DB '1 IS BUSY',0DH,0AH,0AH,'$'
EROR: DB 0DH,0AH,0AH,7
DB 'ERROR: COM CHANNEL '
PORT2: DB '1 DOES NOT EXIST',0DH,0AH,0AH,'$'
HOOKED: DB 0DH,0AH
DB 'CONNECTED TO COM CHANNEL '
PORT3: DB '1 AT 1200 BAUD',0DH,0AH,'$'
UNHOOK: DB 0DH,0AH
DB 'DISCONNECTED FROM COM CHANNEL '
PORT4: DB '1',0DH,0AH,0AH,'$'
FALP: DB 0DH,0AH,0AH,7
DB 'ERROR: ONLY PORTS A..P ALLOWED!',0DH,0AH,0AH,'$'
DS 40
STACK EQU $
END