home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
nubye
/
nuby-ins.lbr
/
NUCP-1.IQS
/
nucp-1.ins
Wrap
Text File
|
1986-04-26
|
6KB
|
236 lines
; NUCP-1.INS - Interfacer 3/4 insert for NUBYE - 04/21/86
;
; 2651 I/O with internal baudrate 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 NUBYE 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 NUBYE) 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
;
; ========
;
; 04/21/86 Modified for NUBYE
; 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 10H ; Base port for Interfacer 3/4 boards
CHIP EQU 6 ; Chip number to use
ENDIF ; INTER4
;
IF NOT INTER4
BASEP EQU 5CH ; 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 2 ; 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 1 ; 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. NUBYE 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 of insert
; -------------