; 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