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
/
NUBYE
/
NUBY-INS.LBR
/
NUAP-1.IQS
/
nuap-1.ins
Wrap
Text File
|
1986-04-26
|
4KB
|
168 lines
; NUAP-1.INS - APPLE ][ with Mountain CPS Serial Card - 04/21/86
;
; 2651 with internal baudrate generator
;
; NOTE: This is an insert, not an overlay.
;
; WARNING: Carrier detect (DCD) from the modem must go to DSR input on
; the 2651 to provide proper operation for both autodialing
; and autoreceiving. If you use the DCD input, it requires
; voltage (normally unavailable) during dialing to allow
; result codes to be used. See NUCP-x.INS for more information
; on this 2651 peculiarity. This program assumes you use the
; DSR pin 80H to check carrier from the modem.
;
; ========
;
; 04/21/86 Modified for NUBYE
; 09/14/85 Changes to MDINIT, corrected error in B2400,
; added support for B4800, B9600 - Norman Beeler
; 07/17/85 Written to work with BYE5 - Irv Hoff
; 01/20/84 Created overlay using BY2-2651.ASM - Norman Beeler
;
; ========
;
; Define the CPS card slot you are using (normally 1 or 2)
;
SLOT EQU 2 ; CPM card slot
;
; Modem port equates
;
PORT EQU 0E0FAH+SLOT*100H ; Modem data port
MDCTL1 EQU 0E0FBH+SLOT*100H ; Modem status port
XPORT EQU 0E0FEH+SLOT*100H ; Modem swap port
;
;Mode port equates
;
EBASE EQU 70H ; Mode register 2 base
B300 EQU EBASE+5 ; 300 baud
B1200 EQU EBASE+7 ; 1200 bps
B2400 EQU EBASE+10 ; 2400 bps
B4800 EQU EBASE+12 ; 4800 bps
B9600 EQU EBASE+14 ; 9600 bps
;
; See if we still have a carrier - if not, return with the zero flag set
;
MDCARCK:LDA MDCTL1 ; Read port
ANI 80H ; Check DSR for carrier (do not use DCD)
RET
;
; Disconnect and wait for an incoming call
;
MDINIT: IF HS2400
CALL SET2400
ENDIF ; HS2400
;
IF HS1200
CALL SET1200
ENDIF ; HS1200
;
IF HS300
CALL SET300
ENDIF ; HS300
;
CALL DELAY
MVI A,80H ; Open CPS command register
STA XPORT ; By storing 80H in XPORT
MVI A,5 ; Turn DTR off, modem will quit
STA MDCTL1
MVI B,20 ; 2 seconds to drop any carrier
;
MDINIT1:CALL DELAY ; .1 second delay
DCR B
JNZ MDINIT1
MVI A,27H ; With DTR on, modem accepts commands
STA MDCTL1
XRA A ; Close the command port
STA XPORT ; By storing 0 in XPORT
;
IF IMODEM
CALL IMINIT ; Initialize smartmodem
ENDIF ; IMODEM
;
RET
;
; Input a character from the modem port
;
MDINP: LDA 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: LDA 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: STA PORT ; Send it
RET
;
; See if the output is ready for another character
;
MDOUTST:LDA MDCTL1 ; Read port
ANI 1 ; Check transmit ready bit
RET
;
; Reinitialize the modem and hang up the phone by dropping DTR and
; leaving it inactive.
;
MDQUIT: IF IMODEM
CALL IMQUIT ; Initialize modem to default settings
ENDIF ; IF IMODEM
;
; Called by the main program after caller types BYE
;
MDSTOP: MVI A,80H ; Open CPS command register
STA XPORT ; By storing 80H in XPORT
MVI A,15H ; Turn DTR off, modem will quit
STA MDCTL1
CALL DELAY ; Let it stabilize
RET
;
; The following routine sets the baudrate. NUBYE5 asks for the maximum
; speed you have available.
;
SETINV: ORI 0FFH ; Make sure the Zero flag isn't set
RET
;
SET300: CALL BSETUP
MVI A,B300
JMP FSETUP
;
SET1200:CALL BSETUP
MVI A,B1200
JMP FSETUP
;
SET2400:CALL BSETUP
MVI A,B2400
JMP FSETUP
;
SET4800:CALL BSETUP
MVI A,B4800
JMP FSETUP
;
SET9600:CALL BSETUP
MVI A,B9600
JMP FSETUP
;
BSETUP: MVI A,80H
STA XPORT
MVI A,37H ; Initialize the serial chip
STA MDCTL1 ; By storing 37H in MDCTL1
MVI A,4EH ; 1 stop, 8 bits, no parity
STA PORT
XRA A
RET
;
FSETUP: STA PORT
XRA A
STA XPORT ; Close command port by storing 0
RET
;
; end of insert
; -------------