home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
BYE5
/
B5R4-1.INS
< prev
next >
Wrap
Text File
|
2000-06-30
|
3KB
|
149 lines
; 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
;-----------------------------------------------------------------------