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