! Mac Modem Script for Nokia 7110 ! ! Fixed speed 14400 - no compression. ! ! Copyright © 2000 by ID express Oy. All rights reserved. ! - Version 1.0 10.4.2000 ID express Oy JR ! ! Notes: ! At this time it is not recommended to use compression ! in GSM networks - network support may vary quite a lot. ! ! Script has some extra stuff, but since disk space is not an issue ! with file this size - we'll leave it for it to be done in the future. ! @ORIGINATE @ANSWER ! ! ---- Initial modem setup ---- ! @LABEL 1 serreset 19200, 0, 8, 1 ! @LABEL 2 hsreset 0 0 0 0 0 0 settries 0 ! ! Get the modem's attention ! matchclr !jump 3 matchstr 1 3 "OK\13\10" write "+++\13" pause 5 write "AT\13" matchread 200 jump 101 ! @LABEL 3 matchclr ! for Nokia phone only! matchstr 1 4 "Nokia Mobile Phones" write "AT+CGMI\13" matchread 60 jump 103 ! @LABEL 4 ! ! matchclr matchstr 1 5 "OK\13\10" matchstr 2 101 "ERROR\13\10" write "AT&FV1E0&D2&S0&C1S0=0+DS=0,0\13" matchread 60 inctries iftries 3 101 @LABEL 5 pause 20 matchclr matchstr 1 6 "OK\13\10" matchstr 2 101 "ERROR\13\10" write "AT+CBST=14,0,1\13" matchread 60 inctries iftries 3 101 ! ! Reset the Modem on setup failure ! DTRClear pause 5 DTRSet flush jump 4 ! ! @LABEL 6 ifANSWER 32 ! ! ! ---- Originating a call ---- ! ! Varstring 6, dialing mode: ! = 0, normal dialing ! = 1, blind dialing ! = 2, manual dialing ! otherwise dial as ARA version 1.0 ifstr 6 19 "0" ifstr 6 17 "1" ifstr 6 15 "2" ! ! Dialing for ARA version 1.0 note "Dialing ^1" 3 write "ATX5D^3^1\13 jump 32 ! @LABEL 15 ! Display ASK dialog with message. Goto label 107 if dialog canceled. ASK 2 "Pick up the phone & dial ^1. When the phone rings, click OK then hang up." 107 note "Manual dialing initiated" 3 ! X1 to ignore dialtone & busy, D to dial write "ATX5D\13" jump 32 ! @LABEL 17 note "Dialing without tone" 3 matchclr matchstr 1 19 "OK\13\10" ! X1 to ignore dialtone & busy write "ATX5\13" matchread 30 jump 101 ! ! ! @LABEL 19 ! 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) ! ifstr 8 27 " " ifstr 9 24 " " ! ! Write dialstring in varstrings 7, 8 & 9 matchclr matchstr 1 21 "OK\13\10" write "ATX5D^3^7;\13" matchread 400 jump 101 @LABEL 21 matchclr matchstr 1 22 "OK\13\10" write "ATX5D^3^8;\13" matchread 400 jump 101 @LABEL 22 write "ATX5D^3^9\13" jump 32 ! ! @LABEL 24 ! Write dialstring in varstrings 7 & 8 matchclr matchstr 1 25 "OK\13\10" write "ATX5D^3^7;\13" matchread 400 jump 101 @LABEL 25 write "ATX5D^3^8\13" jump 32 ! @LABEL 27 ! Write dialstring in varstring 7 write "ATX5D^3^7\13" ! ! ! ---- Connection response ---- ! ! The following section will parse modem responses of two types: ! 1) CARRIER xxx, PROTOCOL: yyy, COMPRESSION: yyy, CONNECT xxx ! 2) CONNECT xxx/yyy ! @LABEL 32 settries 0 @LABEL 33 matchclr matchstr 1 81 "RING\13\10" matchstr 2 102 "NO DIALTONE\13\10" matchstr 3 103 "NO CARRIER" matchstr 4 103 "ERROR\13\10" matchstr 5 104 "BUSY\13\10" matchstr 6 105 "NO ANSWER\13\10" matchstr 7 35 "CONNECT" matchstr 8 34 "CARRIER" matchstr 9 83 "PROTOCOL: LAP" matchstr 10 83 "PROTOCOL: MNP" matchstr 11 83 "PROTOCOL: ALT" matchstr 12 85 "COMPRESSION: V" matchstr 13 85 "COMPRESSION: MNP5" matchstr 14 85 "COMPRESSION: CLASS" matchread 700 ifANSWER 32 jump 105 ! ! CARRIER parsing ! @LABEL 34 note "Carrier from cellular network" 2 ! jsr 38 ! inctries jump 33 ! ! CONNECT parsing - do not parse rate if CARRIER seen ! @LABEL 35 iftries 1 82 jsr 38 jump 82 ! ! Parse CONNECT/CARRIER rate subroutine ! 2400 and 4800 have two entries each ! to distinguish them from 24000 and 48000 ! @LABEL 38 matchclr matchstr 1 39 "2400\13" matchstr 2 39 "2400/" matchstr 3 40 "4800\13" matchstr 4 40 "4800/" matchstr 5 41 "7200" matchstr 6 42 "9600" matchstr 7 43 "12000" matchstr 8 44 "14400" matchstr 9 45 "16800" matchstr 10 46 "19200" matchstr 11 47 "21600" matchstr 12 48 "24000" matchstr 13 49 "26400" matchstr 14 50 "28800" matchstr 15 51 "29333" matchstr 16 52 "30667" matchstr 17 53 "31200" matchstr 18 54 "32000" matchstr 19 55 "33333" matchstr 20 56 "33600" matchstr 21 57 "34000" matchstr 22 58 "34667" matchstr 23 59 "36000" matchstr 24 60 "37333" matchstr 25 61 "38400" matchstr 26 62 "38667" matchstr 27 63 "40000" matchstr 28 64 "41333" matchstr 29 65 "42000" matchstr 30 66 "43200" matchstr 31 67 "44000" matchstr 32 68 "45333" matchstr 33 69 "46000" matchstr 34 70 "46667" matchstr 35 71 "48000" matchstr 36 72 "49333" matchstr 37 73 "50000" matchstr 38 74 "50667" matchstr 39 75 "52000" matchstr 40 76 "53333" matchstr 41 77 "54000" matchstr 42 78 "54667" matchstr 43 79 "57600" matchread 100 jump 80 ! ! -- Connection rates -- ! CommunicatingAt informs ARA of the raw modem to modem ! connection speed. ! ! ! -- Connection rates -- ! CommunicatingAt informs ARA of the raw modem to modem ! connection speed. ! @LABEL 39 note "Communicating at 2400 bps." 2 CommunicatingAt 2400 jump 81 ! @LABEL 40 note "Communicating at 4800 bps." 2 CommunicatingAt 4800 jump 81 ! @LABEL 41 note "Communicating at 7200 bps." 2 CommunicatingAt 7200 jump 81 ! @LABEL 42 note "Communicating at 9600 bps." 2 CommunicatingAt 9600 jump 81 ! @LABEL 43 note "Communicating at 12400 bps." 2 CommunicatingAt 12400 jump 81 ! @LABEL 44 note "Communicating at 14400 bps." 2 CommunicatingAt 14400 jump 81 ! @LABEL 45 note "Communicating at 16800 bps." 2 CommunicatingAt 16800 jump 81 ! @LABEL 46 note "Communicating at 19200 bps." 2 CommunicatingAt 19200 jump 81 ! @LABEL 47 note "Communicating at 21600 bps." 2 CommunicatingAt 21600 jump 81 ! @LABEL 48 note "Communicating at 24000 bps." 2 CommunicatingAt 24000 jump 81 ! @LABEL 49 note "Communicating at 26400 bps." 2 CommunicatingAt 26400 jump 81 ! @LABEL 50 note "Communicating at 28800 bps." 2 CommunicatingAt 28800 jump 81 ! @LABEL 51 note "Communicating at 29333 bps." 2 CommunicatingAt 29333 jump 81 ! @LABEL 52 note "Communicating at 30667 bps." 2 CommunicatingAt 30667 jump 81 ! @LABEL 53 note "Communicating at 31200 bps." 2 CommunicatingAt 31200 jump 81 ! @LABEL 54 note "Communicating at 32000 bps." 2 CommunicatingAt 32000 jump 81 ! @LABEL 55 note "Communicating at 33333 bps." 2 CommunicatingAt 33333 jump 81 ! @LABEL 56 note "Communicating at 33600 bps." 2 CommunicatingAt 33600 jump 81 ! @LABEL 57 note "Communicating at 34000 bps." 2 CommunicatingAt 34000 jump 81 ! @LABEL 58 note "Communicating at 34667 bps." 2 CommunicatingAt 34667 jump 81 ! @LABEL 59 note "Communicating at 36000 bps." 2 CommunicatingAt 36000 jump 81 ! @LABEL 60 note "Communicating at 37333 bps." 2 CommunicatingAt 37333 jump 81 ! @LABEL 61 note "Communicating at 38400 bps." 2 CommunicatingAt 38400 jump 81 ! @LABEL 62 note "Communicating at 38667 bps." 2 CommunicatingAt 38667 jump 81 ! @LABEL 63 note "Communicating at 40000 bps." 2 CommunicatingAt 40000 jump 81 ! @LABEL 64 note "Communicating at 41333 bps." 2 CommunicatingAt 41333 jump 81 ! @LABEL 65 note "Communicating at 42000 bps." 2 CommunicatingAt 42000 jump 81 ! @LABEL 66 note "Communicating at 43200 bps." 2 CommunicatingAt 43200 jump 81 ! @LABEL 67 note "Communicating at 44000 bps." 2 CommunicatingAt 44000 jump 81 ! @LABEL 68 note "Communicating at 45333 bps." 2 CommunicatingAt 45333 jump 81 ! @LABEL 69 note "Communicating at 46000 bps." 2 CommunicatingAt 46000 jump 81 ! @LABEL 70 note "Communicating at 46667 bps." 2 CommunicatingAt 46667 jump 81 ! @LABEL 71 note "Communicating at 48000 bps." 2 CommunicatingAt 48000 jump 81 ! @LABEL 72 note "Communicating at 49333 bps." 2 CommunicatingAt 49333 jump 81 ! @LABEL 73 note "Communicating at 50000 bps." 2 CommunicatingAt 50000 jump 81 ! @LABEL 74 note "Communicating at 50667 bps." 2 CommunicatingAt 50667 jump 81 ! @LABEL 75 note "Communicating at 52000 bps." 2 CommunicatingAt 52000 jump 81 ! @LABEL 76 note "Communicating at 53333 bps." 2 CommunicatingAt 53333 jump 81 ! @LABEL 77 note "Communicating at 54000 bps." 2 CommunicatingAt 54000 jump 81 ! @LABEL 78 note "Communicating at 54667 bps." 2 CommunicatingAt 54667 jump 81 ! @LABEL 79 note "Communicating ast 57600 bps." 2 CommunicatingAt 57600 jump 81 ! @LABEL 80 note "Communicating at an unknown rate." 2 jump 81 ! @LABEL 81 return ! ! Look for reliablilty and compression results ! after the CONNECT rate. ! @LABEL 82 matchclr matchstr 1 84 "LAPM" matchstr 2 84 "REL" matchstr 3 84 "ARQ" matchstr 4 86 "COMP/" matchstr 5 86 "COMP\13" matchstr 6 84 "V42/" matchstr 7 84 "V42\13" matchstr 8 86 "V42BIS" matchstr 9 86 "V42bis" matchstr 10 84 "MNP\13" matchstr 11 86 "MNP5" matchstr 12 87 "\10" matchread 10 jump 87 ! -- Modem error correction link negotiation -- ! Userhook 2 informs ARA that a modem-to-modem error ! correcting protocol has been negotiated ! ! @LABEL 83 note "Modem Reliable Link Established." 2 userhook 2 jump 33 ! @LABEL 84 note "Modem Reliable Link Established." 2 userhook 2 jump 82 ! ! -- Compression negotiation -- ! Userhook 3 informs ARA that a modem-to-modem compression ! protocol has been negotiated ! @LABEL 85 note "Modem Compression Established." 2 userhook 3 jump 33 ! @LABEL 86 note "Modem Compression Established." 2 userhook 3 jump 82 ! ! ! -- Normal exit after "CONNECT" -- ! ! This modem has been setup to do CTS handshaking, ! and we assume that a CTS handshaking cable is being used. ! @LABEL 87 ! Turn on hardware handshaking. HSReset 0 0 0 0 0 0 ! ifANSWER 88 pause 30 @LABEL 88 exit 0 ! ! ! ---- Answer calls ---- ! ! A RING result from the modem and in ANSWERING mode ! claims the serial port and answering the phone ! @LABEL 89 ifORIGINATE 32 userhook 1 note "Answering phone..." 2 write "ATA\13" jump 32 ! ! ! ---- Hang up and reset modem ---- ! @HANGUP @LABEL 90 settries 0 HSReset 0 1 0 0 0 0 ! @LABEL 92 ! Escape from data to command mode matchclr matchstr 1 96 "OK\13\10" write "+++" matchread 20 ! @LABEL 94 ! Force a hangup matchclr matchstr 1 98 "NO CARRIER\13\10" matchstr 2 98 "OK\13\10" matchstr 3 98 "ERROR\13\10" matchstr 4 98 "0\13\10" write "ATH\13" matchread 30 ! ! Try to get control of the modem by toggling DTR DTRClear pause 5 DTRSet flush ! ! Try the hangup sequence three times otherwise declare and error inctries iftries 3 101 jump 92 ! @LABEL 96 ! Pause between data and command mode pause 50 jump 94 ! ! @LABEL 98 ! Recall the factory settings pause 15 matchclr matchstr 1 99 "OK\13\10" write "AT&F\13" matchread 30 jump 101 ! @LABEL 99 exit 0 ! ! ---- Error messages ----- ! ! Modem Not Responding @LABEL 101 exit -6019 ! ! No Dial Tone @LABEL 102 exit -6020 ! ! No Carrier or Error @LABEL 103 exit -6021 ! ! Busy @LABEL 104 exit -6022 ! ! No Answer @LABEL 105 exit -6023 ! ! User Cancellation @LABEL 107 exit -6008