! U.S. Robotics High Speed Script for all products (hopefully) ! Finalized 3/27/98 ! Author: PCD Applications Engineering (with some outside help - thanks Kevin) ! Loosely based on a Modem Script Generator file ! ! PCD address: ! ! 3Com ! 7770 N. Frontage Rd. ! Skokie, IL 60077 ! ! Corporate Systems Courier, Shared Access, Total Control) Support: ! Phone: (800) 550-7800 (Courier only) ! Phone: (800) 231-8770 (Total Control and Allegra) ! Fax: (847) 222-0823 ! ! Personal Communications (Sportster) Support: ! Phone: (847) 982-5151 ! Fax: (847) 676-7314 ! ! General Support Sites: ! BBS: (847) 982-5092 ! Mac BBS: (847) 676-1598 ! FIDO: 1:115/500 ! RIME: USRUSA #174 ! PRIME: 98:212/1 ! Compuserve Forum: GO USROBOTICS ! Compuserve Mail: 76711,707 ! AOL Forum: Keyword "USROBOTICS" ! Fax On Demand Domestic: (800) 762-6163 ! Internet Support: support@usr.com (gets a list of documents) ! FTP Site: ftp.usr.com ! Main WWW Site: http://www.3com.com ! WWW site for Corporate Systems: http://totalservice.usr.com ! ! International Information: ! BBS: (+33) 20 05 32 41 ! Fax: (+33) 20 05 32 40 ! Phone: (+33) 20 19 19 59 available M-F 9:00am-12:30pm, 1:30pm-6:00pm GMT+1 ! Internet Support: eurosupport@usr.com ! UK Internet Support: uksupport@usr.com ! US Fax On Demand from international: (847) 676-8536 ! ! ! This script should work with most of our modems using our current ! command set. This would include all of our 9600, 14400, 28800/33600, x2 ! and v.90 modems. It should also work, for the most part, with any USR ! ISDN device. ! ! The script will attempt to talk to the modem at 230.4 port speed and ! if it fails, it will attempt the next lowest speed. It will continue to ! do this until it gets an OK back from the system and/or until the system ! says it's an OK speed. ! ! 'mlts' resource info for this modem: ! byte 1 == 01 -> modem HAS built in reliability protocols ! byte 2 == 01 -> modem HAS built-in data compression protocols ! byte 3 == 58 -> max hex chars in varstr 7 ! byte 4 == 58 -> max hex chars in varstr 8 ! byte 5 == 58 -> max hex chars in varstr 9 ! @ORIGINATE @ANSWER ! Set up the port and test to see if the modem is responding. @LABEL 1 serreset 230400, 0, 8, 1 hsreset 0 0 0 0 0 0 settries 0 matchclr matchstr 1 2 "OK\13\10" write "AT\13" matchread 30 jump 6 ! @LABEL 2 ! matchclr matchstr 1 3 "OK\13\10" matchstr 2 100 "ERROR\13\10" write "AT&F&A3&B1&H1&R2&D0&K3&M4E0V1Q0S0=0X4\13" matchread 30 inctries iftries 3 100 pause 2 write "+++" pause 2 write "ATH\13" pause 5 DTRSet flush jump 2 ! ! @LABEL 3 ! Error Control (EC) decided by VarString 4 ! If VarString 4=0, EC handled by computer (ARAP) ! If VarString 4=1, EC handled by modem (v.42/MNP2-4) ! If VarString 4=2, EC handled by modem (2 not supported) ifstr 4 4 "1" ifstr 4 4 "2" matchclr matchstr 1 5 "OK\13\10" write "AT&M0\13" matchread 30 jump 100 ! @LABEL 4 ! Data Compression (DC) decided by VarString 5 ! If VarString 5=0, DC handled by computer ! If VarString 5=1, DC handled by modem (v.42bis/MNP5) ifstr 5 5 "1" ! matchclr matchstr 1 5 "OK\13\10" write "AT&K0\13" matchread 30 jump 100 ! @LABEL 5 ! Modem Speaker decided by VarString 2 ! If VarString 2=0, modem speaker off ! If VarString 2=1, modem speaker on ifstr 2 10 "1" pause 5 matchclr matchstr 1 10 "OK\13\10" write "ATM0\13" matchread 30 jump 100 ! ! Labels 6-9 are for instances where the computer or modem will not ! respond at 230.4 port speed @LABEL 6 serreset 115200, 0, 8, 1 hsreset 0 0 0 0 0 0 settries 0 matchclr matchstr 1 2 "OK\13\10" write "AT\13" matchread 30 jump 7 ! @LABEL 7 serreset 57600, 0, 8, 1 hsreset 0 0 0 0 0 0 settries 0 matchclr matchstr 1 2 "OK\13\10" write "AT\13" matchread 30 jump 8 ! @LABEL 8 serreset 38400, 0, 8, 1 hsreset 0 0 0 0 0 0 settries 0 matchclr matchstr 1 2 "OK\13\10" write "AT\13" matchread 30 jump 9 ! @LABEL 9 serreset 19200, 0, 8, 1 hsreset 0 0 0 0 0 0 settries 0 matchclr matchstr 1 2 "OK\13\10" write "AT\13" matchread 30 jump 100 ! @LABEL 10 ifANSWER 25 ! ! Dialing mode decided by VarString 6 ! If VarString 6=0, normal dialing ! If VarString 6=1, blind dialing ! If VarString 6=2, manual dialing ifstr 6 12 "1" ifstr 6 11 "2" jump 13 ! @LABEL 11 ! Display dialog for manual dialing ASK 2 "Pick up the phone & dial ^1. Hit OK when the phone rings, then hangup." 105 note "Manual dialing started" 3 ! X3 to ignore dialtone & busy, D to dial, \^ generates data tone write "ATX3D\^\13" jump 25 ! @LABEL 12 note "Dialing blind" 3 matchclr matchstr 1 13 "OK\13\10" ! X1 to ignore dialtone & busy write "ATX1\13" matchread 30 jump 100 ! @LABEL 13 ! Display the full dialstring contained in Varstring 1 note "Dialing ^1" 3 ! ! Varstrings 7, 8 and 9, contain dialstring fragments ! Long phone numbers may need to be split into smaller groups ! for the modem to use ! ! Varstring 3: "p" for pulse & "t" for tone dialing ! Varstring 8 == blank (dialstring in varstring 7) ! Varstring 9 == blank (dialstring in varstrings 7 & 8) ! Otherwise (dialstring in varstrings 7, 8 & 9) pause 1 ifstr 8 20 " " ifstr 9 18 " " ! @LABEL 14 ! Write dialstring in varstrings 7, 8 & 9 matchclr matchstr 1 15 "OK\13\10" write "ATD^3^7;\13" matchread 400 jump 20 ! @LABEL 15 matchclr matchstr 1 16 "OK\13\10" write "ATD^3^8;\13" matchread 400 jump 100 ! @LABEL 16 write "ATD^3^9\13" jump 25 ! @LABEL 18 ! Write dialstring in varstrings 7 & 8 matchclr matchstr 1 19 "OK\13\10" write "ATD^3^7;\13" matchread 400 jump 20 ! @LABEL 19 write "ATD^3^8\13" jump 25 ! @LABEL 20 ! Write dialstring in varstring 7 write "ATD^3^7\13" ! @LABEL 25 matchclr matchstr 1 80 "RING\13\10" matchstr 2 101 "NO DIAL TONE\13\10" matchstr 3 102 "NO CARRIER" matchstr 4 102 "ERROR\13\10" matchstr 5 103 "BUSY\13\10" matchstr 6 104 "NO ANSWER\13\10" matchstr 7 26 "CONNECT" matchstr 8 29 "CONNECT\13\10" matchread 700 ifANSWER 25 jump 100 ! ! Parse the speed of connect result codes ! 2400 and 4800 have two entries each ! to distinguish them from 24000 and 48000 ! @LABEL 26 matchclr matchstr 1 29 "2400\13" matchstr 2 29 "2400/" matchstr 3 31 "7200" matchstr 4 32 "9600" matchstr 5 33 "12000" matchstr 6 34 "14400" matchstr 7 35 "16800" matchstr 8 36 "19200" matchstr 9 37 "21600" matchstr 10 38 "24000" matchstr 11 39 "26400" matchstr 12 40 "28000" matchstr 13 41 "28800" matchstr 14 42 "29333" matchstr 15 43 "30666" matchstr 16 44 "31200" matchstr 17 45 "32000" matchstr 18 46 "33333" matchstr 19 47 "33600" matchstr 20 48 "34666" matchstr 21 49 "36000" matchstr 22 50 "37333" matchstr 23 51 "38666" !Match 4xxxx speeds and 4800 matchstr 24 27 " 4" !Match 5xxxx speeds matchstr 25 28 " 5" matchstr 26 67 "60000" matchstr 27 68 "64000" matchread 30 jump 69 @LABEL 27 matchclr matchstr 1 30 "800\13" matchstr 2 30 "800/" matchstr 3 52 "0000" matchstr 4 53 "1333" matchstr 5 54 "2666" matchstr 6 55 "4000" matchstr 7 56 "5333" matchstr 8 57 "6666" matchstr 9 58 "8000" matchstr 10 59 "9333" matchread 30 jump 69 @LABEL 28 matchclr matchstr 1 60 "0666" matchstr 2 61 "2000" matchstr 3 62 "3333" matchstr 4 63 "4666" matchstr 5 64 "6000" matchstr 6 65 "7333" matchstr 7 66 "8666" matchread 30 jump 69 ! ! -- Connection rates -- ! CommunicatingAt informs ARA of the DCE speed ! @LABEL 29 note "Communicating at 2400 bps." 2 CommunicatingAt 2400 jump 70 ! @LABEL 30 note "Communicating at 4800 bps." 2 CommunicatingAt 4800 jump 70 ! @LABEL 31 note "Communicating at 7200 bps." 2 CommunicatingAt 7200 jump 70 ! @LABEL 32 note "Communicating at 9600 bps." 2 CommunicatingAt 9600 jump 70 ! @LABEL 33 note "Communicating at 12000 bps." 2 CommunicatingAt 12000 jump 70 ! @LABEL 34 note "Communicating at 14400 bps." 2 CommunicatingAt 14400 jump 70 ! @LABEL 35 note "Communicating at 16800 bps." 2 CommunicatingAt 16800 jump 70 ! @LABEL 36 note "Communicating at 19200 bps." 2 CommunicatingAt 19200 jump 70 ! @LABEL 37 note "Communicating at 21600 bps." 2 CommunicatingAt 21600 jump 70 ! @LABEL 38 note "Communicating at 24000 bps." 2 CommunicatingAt 24000 jump 70 ! @LABEL 39 note "Communicating at 26400 bps." 2 CommunicatingAt 26400 jump 70 ! @LABEL 40 note "Communicating at 28000 bps." 2 CommunicatingAt 28000 jump 70 ! @LABEL 41 note "Communicating at 28800 bps." 2 CommunicatingAt 28800 jump 70 ! @LABEL 42 note "Communicating at 29333 bps." 2 CommunicatingAt 29333 jump 70 ! @LABEL 43 note "Communicating at 30666 bps." 2 CommunicatingAt 30666 jump 70 ! @LABEL 44 note "Communicating at 31200 bps." 2 CommunicatingAt 31200 jump 70 ! @LABEL 45 note "Communicating at 32000 bps." 2 CommunicatingAt 32000 jump 70 ! @LABEL 46 note "Communicating at 33333 bps." 2 CommunicatingAt 33333 jump 70 ! @LABEL 47 note "Communicating at 33600 bps." 2 CommunicatingAt 33600 jump 70 ! @LABEL 48 note "Communicating at 34666 bps." 2 CommunicatingAt 34666 jump 70 ! @LABEL 49 note "Communicating at 36000 bps." 2 CommunicatingAt 36000 jump 70 ! @LABEL 50 note "Communicating at 37333 bps." 2 CommunicatingAt 37333 jump 70 ! @LABEL 51 note "Communicating at 38666 bps." 2 CommunicatingAt 38666 jump 70 ! @LABEL 52 note "Communicating at 40000 bps." 2 CommunicatingAt 40000 jump 70 ! @LABEL 53 note "Communicating at 41333 bps." 2 CommunicatingAt 41333 jump 70 ! @LABEL 54 note "Communicating at 42666 bps." 2 CommunicatingAt 42666 jump 70 ! @LABEL 55 note "Communicating at 44000 bps." 2 CommunicatingAt 44000 jump 70 ! @LABEL 56 note "Communicating at 45333 bps." 2 CommunicatingAt 45333 jump 70 ! @LABEL 57 note "Communicating at 46666 bps." 2 CommunicatingAt 46666 jump 70 ! @LABEL 58 note "Communicating at 48000 bps." 2 CommunicatingAt 48000 jump 70 ! @LABEL 59 note "Communicating at 49333 bps." 2 CommunicatingAt 49333 jump 70 ! @LABEL 60 note "Communicating at 50666 bps." 2 CommunicatingAt 50666 jump 70 ! @LABEL 61 note "Communicating at 52000 bps." 2 CommunicatingAt 52000 jump 70 ! @LABEL 62 note "Communicating at 53333 bps." 2 CommunicatingAt 53333 jump 70 ! @LABEL 63 note "Communicating at 54666 bps." 2 CommunicatingAt 54666 jump 70 ! @LABEL 64 note "Communicating at 56000 bps." 2 CommunicatingAt 56000 jump 70 ! @LABEL 65 note "Communicating at 57333 bps." 2 CommunicatingAt 57333 jump 70 ! @LABEL 66 note "Communicating at 58666 bps." 2 CommunicatingAt 58666 jump 70 ! @LABEL 67 note "Communicating at 60000 bps." 2 CommunicatingAt 60000 jump 70 ! @LABEL 68 note "Communicating at 64000 bps." 2 CommunicatingAt 64000 jump 70 ! @LABEL 69 note "Communicating at an unknown rate." 2 jump 70 ! ! ! Look for error control and data compression results ! at the end of the connect result. ! @LABEL 70 matchclr matchstr 1 71 "LAPM" matchstr 2 71 "ARQ" matchstr 3 72 "V42BIS" matchstr 4 71 "MNP\13" matchstr 5 72 "MNP5" matchstr 6 75 "\10" matchread 30 jump 75 ! ! -- Modem error control link negotiation -- ! Userhook 2 informs ARA that the modem has established error control ! @LABEL 71 note "Modem Error Control Established." 2 userhook 2 jump 70 ! ! -- Compression negotiation -- ! Userhook 3 informs ARA that the modem has established data compression ! @LABEL 72 note "Modem Data Compression Established." 2 userhook 3 jump 70 ! ! -- Normal exit after "CONNECT" -- ! ! This modem has been setup to do RTS/CTS handshaking, ! and we assume that the proper cable is being used. ! @LABEL 75 ! Turn on RTS/CTS handshaking. HSReset 0 1 0 0 0 1 ! ifANSWER 76 pause 30 @LABEL 76 exit 0 ! ! A RING result from the modem and in ANSWERING mode ! claims the serial port and answering the phone ! @LABEL 80 ifORIGINATE 25 userhook 1 note "Answering phone..." 2 write "ATA\13" jump 25 ! ! ---- Hang up and reset modem ---- ! @HANGUP @LABEL 90 settries 0 HSReset 0 0 0 0 0 0 ! @LABEL 91 ! Escape from data to command mode matchclr matchstr 1 92 "OK\13\10" matchstr 2 92 "NO CARRIER\13\10" write "AT\13" matchread 50 pause 1 write "+++" pause 1 matchread 100 ! @LABEL 92 ! Force a hangup matchclr matchstr 1 94 "NO CARRIER\13\10" matchstr 2 94 "OK\13\10" matchstr 3 94 "ERROR\13\10" write "ATH\13" matchread 100 ! ! Try to get control of the modem by toggling DTR DTRClear pause 2 DTRSet flush ! ! Try the hangup sequence three times otherwise declare and error inctries iftries 3 93 jump 91 ! @LABEL 93 ! Error message if modem will not hang up pause 1 NOTE "Modem is not hanging up properly. Please turn the modem off and back on." 3 jump 100 ! @LABEL 94 ! Recall the factory settings pause 15 matchclr matchstr 1 95 "OK\13\10" write "AT&F&A3&B1&H1&R2&D0&K3&M4E0S0=0X4\13" matchread 30 jump 100 ! @LABEL 95 exit 0 ! ! ---- Error messages ----- ! ! Modem Not Responding @LABEL 100 exit -6019 ! ! No Dial Tone @LABEL 101 exit -6020 ! ! No Carrier or Error @LABEL 102 exit -6021 ! ! Busy @LABEL 103 exit -6022 ! ! No Answer @LABEL 104 exit -6023 ! ! User Cancellation @LABEL 105 exit -6008 ! !The End