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