! Xyplex CCL   $RCSfile: Telebit_T3000,v $
!             $Revision: 1.3 $
!                 $Date: 1994/01/06 20:54:09 $
!
! "Telebit T3000 Modem 11/11/91" JFK
! 11/14/91 JFK - Added a ton o' comments...
!  
!
@ORIGINATE
@ANSWER
!
! Talk to the modem at 19,200 bps.  the T3000 should auto-baud this
! unless the user has locked the port to a particular speed.  If it
! locked to a different speed, the user will need to change that.
!
serreset 19200, 0, 8, 1
!
! First recall the factory configuration
! F9 is the built in preconfigured setting for CTS/RTS handshaking.
! Since it's possible for the user to modify F0 parameters, this is a 
! little safer.
!
! AT&F9 sets:
! &C1 - DCD is on after connect
! &D2 - DTR on/off disconnects
! S58=2 - Use RTS/CTS flow control in full-duplex mode
!
settries 0
matchclr
@LABEL 1
matchstr 1 4 "OK\13\10"
write "AT&F9\13"
matchread 30
inctries
iftries 2 59
! Modem is not responding, reset and send a break
DTRClear
pause 5
DTRSet
SBreak
jump 1
!
! Next, Set up the configuration: drop connection after losing DTR
!				Turn off auto answer and echo, and set it to dial fast...
!
! &D3 - DTR on/off resets modem 
! S0=0 - Don't answer calls
! E0 - Turn command echo off
! 
@LABEL 4
matchclr
pause 5
matchstr 1 5 "OK\13\10"
write "AT&D3S0=0E0\13"
matchread 30
jump 59
!
! Next, disable MNP and error control
! turn on internal buffering (for V.32bis),
! and extended result codes (CTS/RTS flow control was set when we
!                            issued &F9, so we don't need to
!                            do it here).
!
! S180=0 - Turn off all error detection/correction (ARA does MNP and
!          compression itself.  It needs these turned off in the modem).
! S181=1 - Turn *on* DTE <-> line buffering if there is no error control
!                            (which there is not).  Since we will be
!                            talking to the Mac at 19,200 bps no matter
!                            what speed we connect at, we need this on.
! X2 - Issue extended result codes.  This will display busy, connect XXX, etc.
!      X2 will say "CONNECT XXX"  Where XXX is the line speed.  We need this
!      so we can tell ARA what speed we are really communicating at
!      (for timing)
!
@LABEL 5
pause 5
matchstr 1 6 "OK\13\10"
write "ATS180=0S181=1X2\13"
matchread 30
jump 59
!
! If speaker on flag is true, jump to label 8.  Else turn off the speaker
!
@LABEL 6
ifstr 2 8 "1"
pause 5
matchstr 1 8 "OK\13\10"
write "ATM0\13"
matchread 30
jump 59
!
! The modem is ready so enable answering, or originate a call
!
@LABEL 8
pause 5
ifANSWER 30
note "Dialing ^1" 3
write "ATDT^1\13"
!
@LABEL 9
matchstr 1  11 "CONNECT 1200\13\10"
matchstr 2  12 "CONNECT 2400\13\10"
matchstr 3  13 "CONNECT 4800\13\10"
matchstr 4  19 "CONNECT 7200\13\10"
matchstr 5  14 "CONNECT 9600\13\10"
matchstr 6  20 "CONNECT 12000\13\10"
matchstr 7  18 "CONNECT 14400\13\10"
matchstr 8  50 "NO CARRIER\13\10"
matchstr 9  50 "ERROR\13\10"
matchstr 10 52 "NO DIAL TONE\13\10"
matchstr 11 53 "BUSY\13\10"
matchstr 12 54 "NO ANSWER\13\10"
matchread 700
jump 59
!
! Notice that all we do for different connect speeds is issue a 
! "CommunicatingAt" command.  Remember, we locked the interface speed
! to 19,200 bps so we don't want to reset the serial speed after we connect.
! CommuicatingAt tells ARA what the actual line speed is so that it
! can set it's timers appropriately.  I guess your performance would be
! sub-optimal if you don't set this...
!
@LABEL 11
note "Communicating at 1200 bps." 2
CommunicatingAt 1200
jump 15
!
@LABEL 12
note "Communicating at 2400 bps." 2
CommunicatingAt 2400
jump 15
!
@LABEL 13
note "Communicating at 4800 bps." 2
CommunicatingAt 4800
jump 15
!
@LABEL 19
note "Communicating at 7200 bps." 2
CommunicatingAt 7200
jump 15
!
@LABEL 14
note "Communicating at 9600 bps." 2
CommunicatingAt 9600
jump 15
!
@LABEL 20
note "Communicating at 12000 bps." 2
CommunicatingAt 12000
jump 15
!
@LABEL 18
note "Communicating at 14400 bps." 2
CommunicatingAt 14400
jump 15
!
! Set CTS handshaking ON in the serial port (that's the 1 in the HSReset
! command below )
!
@LABEL 15
HSReset 0 1 0 0 0 0 
ifANSWER 16
pause 30
@LABEL 16
exit 0
!
! @ANSWER
! Set up the modem to answer
!
@LABEL 30
write "ATS0=1\13"
matchstr 1 31 "OK\13\10"
matchread 30
jump 59
!
@LABEL 31
matchstr 1  32 "RING\13\10"
matchstr 2  11 "CONNECT 1200\13\10"
matchstr 3  12 "CONNECT 2400\13\10"
matchstr 4  13 "CONNECT 4800\13\10"
matchstr 5  19 "CONNECT 7200\13\10"
matchstr 6  14 "CONNECT 9600\13\10"
matchstr 7  20 "CONNECT 12000\13\10"
matchstr 8  18 "CONNECT 14400\13\10"
matchstr 9  50 "NO CARRIER\13\10"
matchstr 10 50 "ERROR\13\10"
matchstr 11 52 "NO DIAL TONE\13\10"
matchstr 12 53 "BUSY\13\10"
matchstr 13 54 "NO ANSWER\13\10"
matchread 700
jump 31
!
@LABEL 32
userhook 1
note "Answering phoneI" 2
jump 31
!
! 50: error messages
!
@LABEL 50
exit -6021
!
@LABEL 52
exit -6020
!
@LABEL 53
exit -6022
!
@LABEL 54
exit -6023
!
@LABEL 59
exit -6019
!
! Hang up the modem
!
@HANGUP
@LABEL 60
settries 0
HSReset 0 0 0 0 0 0 
@LABEL 61
write "ATH\13"
matchclr
matchstr 1 63 "NO CARRIER\13\10"
matchstr 2 63 "OK\13\10"
matchstr 3 63 "ERROR\13\10"
matchread 30
inctries
iftries 3 63
! no response, try escape sequence
write "+++"
matchclr
matchstr 1 62 "OK\13\10"
matchread 15
!
! No Response from modem, toggle DTR
!
DTRClear
pause 5
DTRSet
jump 61
!
@LABEL 62
! Pause 1 second before to ensure we meet the escape time delay
pause 10
Flush
write "ATH\13"
matchstr 1 63 "OK\13\10"
matchstr 2 63 "NO CARRIER\13\10"
matchstr 3 63 "ERROR\13\10"
matchread 30
jump 61
!
!
! recall the factory settings.  Use &F9 again (see note at top of script)
!
@LABEL 63
matchclr
matchstr 1 64 "OK\13\10"
pause 15
write "AT&F9\13"
matchread 30
!
! Turn off auto answer, set S51 so modem will check interface
! speed on next connection.  If you don't do this, the modem
! will not try to autobaud, with the result being it exits the 
! script with an error
! 
! S51=255 - Autobaud (9600 bps default)
! S0=0 - Don't try to answer the phone
!
@LABEL 64
pause 5
matchstr 1 65 "OK\13\10"
write "ATS51=255S0=0\13"
matchread 20
!
@LABEL 65
exit 0
