home *** CD-ROM | disk | FTP | other *** search
-
- ; B5CP-1.INS - Interfacer 3/4 insert for BYE5 - 07/17/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. To further complicate
- ; the picture, CompuPro uses an unique wiring they refer to as "master"
- ; or "slave setting". Normally the board is delivered with the serial
- ; ports hooked as "slave", which makes (DSR) pin 20 instead of the con-
- ; ventional pin 6 as on most RS-232 DB-25 connectors. It then makes
- ; (DTR) pin 6 instead of conventional pin 20. (See page 14 of the In-
- ; terfacer 3 manual or page 20 of the Interfacer 4 manual for additional
- ; information on this subject. The schematic below is shown for both
- ; configurations.
- ;
- ; (For interest, the newer version of the 2561 is called the 2661. It
- ; came out in 1981, but has this same bug the 2651 has. That chip is
- ; used in the Heath/Zenith-100 series computers. The 2651 has another
- ; serious bug, if selecting other than 1 stop pulse, it must receive an
- ; incoming signal with the same (or more) stop pulses. Fortunately few
- ; people need 1-1/2 or 2 stop pulses so this bug is rarely a problem.)
- ;
- ;
- ; NOTE FOR HAYES SMARTMODEM USERS:
- ; -------------------------------
- ; In the past people using the Hayes Smartmodem 1200 and the
- ; Interfacer board have complained they had to put SW6 up to
- ; use with BYE5 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 BYE5) and this will have no effect on the
- ; normal use of IMP, MEX or MDM7.
- ;
- ; If using "slave" mode:
- ; ---------------------
- ; MODEM=DCE INTERFACER (Slave mode)
- ;
- ; 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
- ;
- ;
- ; If using "master" mode
- ; ----------------------
- ; MODEM=DCE INTERFACER (as Master)
- ;
- ; TXD 2 --> 2 RXD received data
- ; RXD 3 <-- 3 TXD tranmitted data
- ; SG 7 --- 7 SG signal ground
- ; DCD 8 --> 6 DSR data set ready (carrier)
- ; DTR 20 <-- 20 DTR data terminal ready
- ;
- ; - Notes by Irv Hoff
- ;
- ; = = = = = = = = = = = = = = = = = =
- ;
- ; 07/17/85 Written for use with BYE5 - Irv Hoff
- ; 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
- ;
- PORT EQU BASEP ; Modem data port
- MDCTL1 EQU BASEP+1 ; Modem status port
- MDCTL2 EQU BASEP+2 ; Modem mode select port
- MDCTL3 EQU BASEP+3 ; Modem control port
- ;
- IF INTER4
- USER EQU BASEP+7 ; Modem chip select port
- ENDIF ; INTER4
- ;
- ;
- ; Mode port equates
- ;
- BBASE EQU 30H ; Mode register 2 base
- ;
- BD300 EQU BBASE+5 ; 300 baud
- BD1200 EQU BBASE+7 ; 1200 bps
- BD2400 EQU BBASE+10 ; 2400 bps
- ;
- ;
- ;-----------------------------------------------------------------------
- ;
- ;
- ; 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 USER
- ENDIF
- ;
- IN MDCTL1 ; Read port
- ANI 80H ; Check DSR pin for DCD (see above)
- RET
- ;.....
- ;
- ;
- ; Disconnect and wait for an incoming call
- ;
- MDINIT: IF INTER4
- MVI A,CHIP ; Select proper chip
- OUT USER
- ENDIF ; INTER4
- ;
- MVI A,15H ; DTR, RTS off to disconnect phone
- OUT MDCTL3
- PUSH B
- MVI B,20 ; Wait 2 seconds
- ;
- MDINIT1:CALL DELAY
- DCR B
- JNZ MDINIT1
- POP B
- MVI A,27H ; Turn DTR, RTS back on
- OUT MDCTL3
- ;
- 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 USER
- ENDIF ; INTER4
- ;
- 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: IF INTER4
- MVI A,CHIP ; Select proper chip
- OUT USER
- ENDIF
- ;
- IN MDCTL1 ; Read port
- ANI 02H ; Check receive ready bit
- RZ ; Nope, nothing there
- ORI 0FFH ; We got something...
- RET
- ;.....
- ;
- ;
- ; Send a character to the modem
- ;
- MDOUTP: IF INTER4
- PUSH PSW
- MVI A,CHIP ; Select proper chip
- OUT USER
- POP PSW
- ENDIF
- ;
- OUT PORT ; Send it
- RET
- ;.....
- ;
- ;
- ; See if the output is ready for another character
- ;
- MDOUTST: IF INTER4
- MVI A,CHIP ; Select proper chip
- OUT USER
- ENDIF
- ;
- IN MDCTL1 ; Read port
- ANI 01H ; Check transmit ready bit
- RZ
- ORI 0FFH
- 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 USER
- ENDIF
- ;
- IF IMODEM
- CALL IMQUIT ; Tell modem to shut down
- ENDIF
- ;
- ;
- ; Called by the main program after caller types BYE
- ;
- MDSTOP: MVI A,CHIP ; Select proper chip
- OUT USER
- MVI A,15H ; Turn off DTR, modem will quit
- OUT MDCTL3
- RET
- ;.....
- ;
- ;
- ; The following routine sets the baudrate. BYE5 asks for the maximum
- ; speed you have available.
- ;
- SET300: MVI B,BD300 ; Set baud rate
- JMP SETBAUD
- ;
- SET1200:MVI B,BD1200 ; Set baud rate
- JMP SETBAUD
- ;
- SET2400:MVI B,BD2400 ;set baud rate
- ;
- SETBAUD: IF INTER4
- MVI A,CHIP ; Select proper chip
- OUT USER
- ENDIF ; INTER4
- ;
- MVI A,4EH ; 1 stop, no parity 8 bits
- OUT MDCTL2
- MOV A,B ; Get the baudrate back
- OUT MDCTL2
- XRA A
- RET
- ;.....
- ;
- ; end
- ;-----------------------------------------------------------------------