; ; PIPMODEM.ASM ; ;10/29/82 Written by P. L. Kelley ; ;Carefully read the file PIPMODEM.DOC for further information on the ;use of this file. ; ;The following four equates will probably be the only changes that need ;to be made. Currently set up for Heath H89. MDAT EQU 0D8H ;MODEM PORT FOR SENDING AND RECEIVING DATA MSTAT EQU 0DDH ;MODEM STATUS PORT RCV EQU 1 ;STATUS PORT BIT TO TEST FOR A CHARACTER WAITING RCVT EQU RCV ;THE OTHER POSSIBILITY FOR THIS IS 0 ; OLDSTRT EQU 04CEH ;PIP's normal start CTLO EQU 0FH ;Control-O to open memory buffer CTLZ EQU 1AH ;Control-Z to write the file to disk NOPAR EQU 7FH ;no parity mask ; ORG 100H ; JMP NEWSTRT ;go put BIOS vectors in the right places JMP KSTAT ;go run the modem routine DS 3 ;skip over the OUT: vector BYTE DB 0 ;this is where the byte for the memory buffer goes KSTAT CALL $-$ ;get the status of the keyboard ORA A ;A will be zero if you have not typed a key JZ MODIN ;if no keypress check the modem for input KEYIN CALL $-$ ;OK, there is a keypress, go get it CPI CTLO ;do you want to open the buffer? JNZ NOO ;go if you do not STA OFLAG ;save flag if you want buffer open JMP KSTAT ;don't output control-O NOO CPI CTLZ ;end of file? JNZ MODOUT ;no, then output character STA BYTE ;tells PIP to write the memory buffer to disk file RET ;and PIP will go do it MODOUT OUT MDAT ;send the character to the remote MODIN IN MSTAT ;get the modem status ANI RCV ;mask off all but the receive bit CPI RCVT ;test the receive bit JNZ KSTAT ;go if nothing received IN MDAT ;OK, there is modem input, go get it ANI NOPAR ;mask off parity STA BYTE ;save for possible entry into file buffer MOV C,A ;the BIOS display routine wants the character in C CONOUT CALL $-$ ;display input LDA OFLAG ;check whether input should be in memory buffer ORA A ;zero flag will be reset if character goes in buffer JZ KSTAT ;go if the character does not go in buffer RET ;PIP will put character in buffer and call 103H again OFLAG DB 0 ;flag for memory buffer open NEWSTRT LHLD 1 ;get wboote to determine BIOS vectors LXI D,3 ;load DE with 3 DAD D ;put console status vector in HL SHLD KSTAT+1 ;store DAD D ;put console input vector in HL SHLD KEYIN+1 ;store DAD D ;put console output vector in HL SHLD CONOUT+1 ;store JMP OLDSTRT ;go to normal PIP start END