; B3R1-1.INS - TRS-80 Model I insert for BYE3 - 08/01/85 ; ; TR1602 I/O and BR19411 baudrate generator ; ; Note: This is an insert not an overlay ; ;---------------------------------------------------------------- ; ; 08/01/85 Upgraded for v337 - pst ; 06/25/83 Originally written - pst ; ;---------------------------------------------------------------- ; ; Modem port equates ; DPORT EQU 0EBH ; Modem port SPORT EQU DPORT-1 ; Status port BPORT EQU DPORT-2 ; Baud rate port RPORT EQU DPORT-3 ; Reset port ; DAV EQU 10000000B ; Data available TBMT EQU 01000000B ; Xmit buffer empty DCD EQU 00100000B ; Data carrier detect ; B300 EQU 055H ; 300 baud B1200 EQU 077H ; 1200 bps B2400 EQU 0AAH ; 2400 bps ; ;----------------------------------------------------------------------- ; ; See if we still have a carrier - if not, return with the zero flat set ; MDCARCK:IN RPORT ; Read port ANI DCD ; Mask carrier detect RZ ORI 255 RET ; ; Disconnect and wait for an incoming call ; MDINIT: MVI A,01 ; Reset UART, enable modem control OUT RPORT MVI A,68H ; DTR, RTS off to hang up phone OUT SPORT ; PUSH B MVI B,20 ; 2 seconds to let modem settle down OFFTI: CALL DELAY DCR B JNZ OFFTI POP B ; MVI A,6BH ; Turn DTR back on OUT SPORT ; IF IMODEM CALL IMINIT ENDIF ; IMODEM ; RET ; ; Input a character from the modem port ; MDINP: IN DPORT ; 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 SPORT ; Read port ANI DAV ; Mask crap RZ ; Nope, nothing there ORI 255 ; We got something... RET ; ; Send a character to the modem ; MDOUTP: OUT DPORT ; Send it RET ; ; ; See if the output is ready for another character ; MDOUTST:IN SPORT ; Read port ANI TBMT ; Mask crap RZ ORI 255 RET ; ; Reinitialize the modem and hang up the phone by dropping DTR and ; leaving it inactive. ; MDQUIT: IF IMODEM CALL IMQUIT ; Tell smartmodem to shut down ENDIF ; IMODEM ; ; Called by main program after caller has typed BYE ; MDSTOP: MVI A,68H ; Turn off DTR so that modem will quit OUT SPORT RET ; ; The following routine sets the baudrate. BYE3 asks for the maximum ; speed you have available. ; SET300: MVI A,B300 JMP SETBAUD ; SET1200:MVI A,B1200 JMP SETBAUD ; SET2400:MVI A,B2400 ; SETBAUD:OUT BPORT XRA A RET ; end ;-----------------------------------------------------------------------