; B5R4-1.INS - BYE5 insert for TRS-80 Model IV - 07/17/85 ; ; TR1865 I/O and BR1943 baudrate generator ; ; Note: This is an insert not an overlay ; ; ; This BYE5 insert is for the TRS-80 model IV and Model IV Gate Array ; computers using the Montezuma Micro CP/M 2.2. ; ; NOTE: The MDCARCK routine contains a "XRI" statement other similar ; inserts do not have. The TRS-Model IV seems to invert the ; DCD line from the modem. If having problems installing this ; insert, you might try nulling out the XRI instruction. ; ; = = = = = = = = = = = = = = = = = = ; ; 07/17/85 Written to work with BYE5 - Irv Hoff ; 06/15/85 Modified from my previous B31865 insert - Tom Brady ; ; = = = = = = = = = = = = = = = = = = ; ; ; Modem port equates ; PORT EQU 0EBH ; Modem port MDCTL1 EQU PORT-1 ; Status port MDCTL2 EQU PORT-2 ; Baud rate port MDCTL3 EQU PORT-3 ; Reset port ; MDRCV EQU 80H ; Data available MDSND EQU 40H ; Xmit buffer empty MDDCD EQU 20H ; Data carrier detect ; ; B300 EQU 55H ; 300 baud B1200 EQU 77H ; 1200 bps B2400 EQU 0AAH ; 2400 bps ; ; ;----------------------------------------------------------------------- ; ; See if we still have a carrier - if not, return with the zero flat set ; MDCARCK:IN MDCTL3 ; Read port ANI MDDCD ; Isolate the DCD response XRI MDDCD ; Invert the signal RET ;..... ; ; ; Disconnect and wait for an incoming call ; MDINIT: MVI A,0EBH ; DTR, RTS off to hang up phone OUT MDCTL1 PUSH B MVI B,20 ; 2 seconds to let modem settle down CALL DLP1 MVI A,01 ; Reset UART, enable modem control OUT MDCTL3 MVI A,0ECH ; Turn DTR back on OUT MDCTL1 MVI B,2 ; Slight additional delay CALL DLP1 POP B ; IF IMODEM CALL IMINIT ENDIF ; IMODEM ; RET ;..... ; ; ; Input a character from the modem port ; MDINP: IN PORT ; Get character RET ;..... ; ; ; Check the status to see if a character is available. If not, return ; with the zero flag set. If yes, use 0FFH to clear the flag. ; MDINST: IN MDCTL1 ; Read port ANI MDRCV ; Mask crap RZ ; Nope, nothing there ORI 0FFH ; We got something... RET ;..... ; ; ; Send a character to the modem ; MDOUTP: OUT PORT ; Send it RET ;..... ; ; ; ; See if the output is ready for another character ; MDOUTST:IN MDCTL1 ; Read port ANI MDSND ; Mask crap RET ;..... ; ; ; Reinitialize the modem and hang up the phone by dropping DTR and ; leaving it inactive. ; MDQUIT: IF IMODEM CALL IMQUIT ; Send ATZ and ATS0=0 (auto-answer off) ENDIF ; IMODEM ; ; ; Called by main program after caller types BYE ; MDSTOP: MVI A,0EBH ; Turn off DTR so that modem will quit OUT MDCTL1 RET ;..... ; ; ; The following routine sets the baudrate. BYE5 asks for the maximum ; speed you have available. ; SETINV: ORI 0FFH ; Make sure the zero flag is not set RET ;..... ; ; SET300: MVI A,B300 JMP SETBAUD ; SET1200:MVI A,B1200 JMP SETBAUD ; SET2400:MVI A,B2400 ; SETBAUD:OUT MDCTL2 XRA A RET ;..... ; ; end ;-----------------------------------------------------------------------