home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
bye3
/
b3cp-2.ins
< prev
next >
Wrap
Text File
|
1994-07-13
|
6KB
|
238 lines
; B3CP-2.INS - Interfacer 3/4 insert for BYE3 - 07/24/85
;
; 2651 I/O with internal baudrage generator
;
; For: CompuPro Interfacer 3
; CompuPro Interfacer 4
; CompuPro System Support 1
;
; Note: This is an insert, not an overlay.
;
;
; The Interfacer board uses the 2651 I/O. This has a peculiarity that
; prevents its proper use if you hook pin 8 (DCD) of the modem to pin 8
; (DCD) of the Interfacer board. You should instead hook pin 8 of the
; modem (DCD) to (DSR) on the Interfacer board.
;
; Note for inteligent modem users:
; -------------------------------
; In the past people using the intelligent modems and the
; Interfacer board have complained they had to put SW6 up to
; use with BYE3 but then had to put it down to use with MEX,
; MDM7 or other autodial modem programs. With the configur-
; ation below, SW6 can be left in whatever position the user
; prefers (up, for BYE3) and this will have no effect on the
; normal use of MEX or MDM7.
;
; Using factory settings, a cable should be made like this:
;
; TXD 2 --> 3 RXD received data
; RXD 3 <-- 2 TXD tranmitted data
; SG 7 --- 7 SG signal ground
; DCD 8 --> 20 DSR data set ready (carrier)
; DTR 20 <-- 6 DTR data terminal ready
;
; = = = = = = = = = = = = = = = = = =
;
; 07/25/85 Updated for BYE337 - removed ANI 127's - Paul Traina
; 10/04/82 Original version - Paul Traina
;
; = = = = = = = = = = = = = = = = = =
;
INTER4 EQU YES ; Yes for Compupro Interfacer 3 or 4
; No for Compupro System Support 1
;
; The following define the port address and usart number to use.
;
IF INTER4
BASEP EQU 010H ; Base port for Interfacer 3/4 boards
CHIP EQU 6 ; Chip number to use
ENDIF ; INTER4
;
IF NOT INTER4
BASEP EQU 05CH ; Base port for System Support 1
ENDIF ; NOT INTER4
;
;-----------------------------------------------------------------------
;
; Modem port equates
;
DPORT EQU BASEP ; Modem data port
SPORT EQU BASEP+1 ; Modem status port
MPORT EQU BASEP+2 ; Modem mode select port
CPORT EQU BASEP+3 ; Modem control port
;
IF INTER4
UPORT EQU BASEP+7 ; Modem chip select port
ENDIF ; INTER4
;
; Status port equates
;
TBMT EQU 00000001B ; Transmit buffer empty
DAV EQU 00000010B ; Data available
DSCHG EQU 00000100B ; Change in DSR or DCD or shift reg empty
PE EQU 00001000B ; Parity error
OE EQU 00010000B ; Overrun error
FE EQU 00100000B ; Framing error
DCD EQU 01000000B ; Data carrier detect line (not used)
DSR EQU 10000000B ; Data carrier detect (this is really DSR)
;
; Mode port equates
;
B8NO1 EQU 01001110B ; 8 data bits, no parity, 1 stop bit
BBASE EQU 00110000B ; Transmit & Receive clocks internal
BX300 EQU BBASE+5 ; 300 baud
BX1200 EQU BBASE+7 ; 1200 baud
BX2400 EQU BBASE+10 ; 2400 baud
;
; Control port equates
;
CBASE EQU 00000101B ; Normal mode, no error reset, xmit&rcv on
DTR EQU 00000010B ; Data terminal ready
RTS EQU 00100000B ; Request to send line
;
;-----------------------------------------------------------------------
;
; See if we still have a carrier - if not, return with the zero flag set
;
MDCARCK: IF INTER4
MVI A,CHIP ; Select proper chip
OUT UPORT
ENDIF
;
IN SPORT ; Get status
ANI DSR ; Check DSR pin for carrier
RZ
ORI 255
RET
;
; Disconnect and wait for an incoming call
;
MDINIT: IF INTER4
MVI A,CHIP ; Select proper chip
OUT UPORT
ENDIF
;
MVI A,CBASE ; DTR, RTS off to disconnect phone
OUT CPORT
;
PUSH B
MVI B,20 ; Wait 2 seconds
OFFTI: CALL DELAY
DCR B
JNZ OFFTI
POP B
;
MVI A,CBASE+DTR+RTS ; Turn DTR & RTS back on
OUT CPORT
;
IF IMODEM
CALL IMINIT ; Initialize intelligent modem
ENDIF ; IMODEM
;
RET
;
; Input a character from the modem port
;
MDINP: IF INTER4
MVI A,CHIP ; Select proper chip
OUT UPORT
ENDIF ; INTER4
;
IN DPORT ; Get character (do not strip 8th bit)
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: IF INTER4
MVI A,CHIP ; Select proper chip
OUT UPORT
ENDIF
;
IN SPORT ; Get status
ANI DAV ; Check data available bit
RZ
ORI 255 ; We got something
RET
;
; Send a character to the modem
;
MDOUTP: IF INTER4
PUSH PSW
MVI A,CHIP ; Select proper chip
OUT UPORT
POP PSW
ENDIF
;
OUT DPORT ; Send it
RET
;
; See if the output is ready for another character
;
MDOUTST: IF INTER4
MVI A,CHIP ; Select proper chip
OUT UPORT
ENDIF
;
IN SPORT ; Get status
ANI TBMT ; Check transmit ready bit
RZ
ORI 255 ; Make sure we know it's ok
RET
;
; Reinitialize the modem and hang up the phone by dropping DTR and
; leaving it inactive.
;
MDQUIT: IF INTER4
MVI A,CHIP ; Select proper chip
OUT UPORT
ENDIF
;
IF IMODEM
CALL IMQUIT ; Tell modem to shut down
ENDIF
;
; Called by the main program after caller types BYE
;
MDSTOP: IF INTER4
MVI A,CHIP
OUT UPORT
ENDIF
;
MVI A,CBASE ; Turn off DTR & RTS, modem will quit
OUT CPORT
RET
;
; The following routine sets the baudrate. BYE3 asks for the maximum
; speed you have available.
;
SET300: CALL BBAUD ; Set word length
MVI A,BX300 ; Set baud rate
JMP EBAUD
;
SET1200:CALL BBAUD ; Set word length
MVI A,BX1200 ; Set baud rate
JMP EBAUD
;
SET2400:CALL BBAUD ; Set word length
MVI A,BX2400 ; Set baud rate
JMP EBAUD
;
BBAUD: IF INTER4
MVI A,CHIP ; Select proper chip
OUT UPORT
ENDIF
;
IN CPORT ; Make sure we've flip/flopped mode port
MVI A,B8NO1 ; 1 stop, no parity 8 bits
OUT MPORT
RET
;
EBAUD: OUT MPORT ; Send baud rate
XRA A
RET
;
; end
;----------------------------------------------------------------