home *** CD-ROM | disk | FTP | other *** search
- ; 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
-