; File VA2400PA.SCR ; ; To be used with MS-DOS Kermit 3.11 or later. ; ; An MS-DOS Kermit script program for dialing Vadic 2400PA modems and ; compatibles. Note that the once-popular Vadic 3451 is slightly different ; and will not work with this script except for internally-stored numbers. ; ; -- WARNING: This is no more than 95% debugged, and may not work ; properly in some fringe cases. -- ; ; Stored in Kermit Distribution as MSMVA2400.SCR; rename to VA2400PA.SCR ; if necessary so the DIAL macro can find it. Place this file in your ; current directory or in any directory in your DOS PATH, and then set the ; DOS environment variable, MODEM, to be VA2400PA. Give the following command ; at the DOS prompt before starting Kermit, or add it to your AUTOEXEC.BAT ; file: ; ; SET MODEM=VA2400PA ; ; Expects variable \%1 to contain the phone number or index number for number ; stored in the modem. If actually providing a number, preceed it by "D". ; The number is normally provided by the DIAL macro defined in MSKERMIT.INI. ; If you lack the DIAL macro definition, use this simple substitute: ; DEFINE DIAL TAKE VA2400PA ; To use, just type DIAL Dnnnnnnn at the MS-Kermit> prompt, where nnnnnnn is ; the desired phone number. Or type DIAL nn, where nn is the index for a ; number stored in the modem. ; ; The Vadic 2400PA is a pulse-only modem. ; ; Sets SUCCESS flag if dialing succeeds, sets FAILURE flag if it fails, for ; use with IF SUCCESS, IF FAILURE, \v(status). ; ; Author: John C. Klensin, August 1992 (modified from HAYES.SCR by ; Christine M. Gianone (July 1991). MSKERMIT 3.11 or later. ; echo Using Vadic 2400PA modem\13\10 ; Comforting in multimodem environment ; def errfail echo \%1,hangup,goto fail ; Macro to handle failures. ; if < VERSION 311 errfail {MS-DOS Kermit 3.11 or later required.} set input timeout proceed ; Allow IF SUCCESS, IF FAILURE set input echo off ; hide ^E interactions. ; hangup ; Modem gets very confused if not started clear ; from a clear state. ; if not equ \%1 = goto dialnow ; This provides for initialization only echo Modem initialization completed, no number to dial end 0 :DIALNOW ; connect to, and dial, the modem - 05 decimal is control-E. ; Try up to four times to get a response from control-E. If not, give up. :reinitstar set count 4 :getstar output \13 output \05 pause 0 output \13 input 2 * if SUCCESS goto dialnum if count goto getstar errfail {Modem not responding. Turn on, connect, or manually reset it!} :DIALNUM set input echo on ; From now on, show responses echo \13\10Dialing \%1, wait...\13\10 goto dial ; 1st time, skip Redialing message :REDIAL pause 30 ; Wait 30 seconds before redialing. echo \13\10Redialing...\13\10 ; Message for redialing. pause 1 :DIAL output \%1 ; Have to talk slowly to the Vadic pause 0 output \13 set alarm 60 ; Detect keyboard interruptions. input 40 DIAL ; First thing said is "Dialing" :GETMSG input 40 \10 ; ending in LF if success goto gotmsg ; Got a message. if alarm errfail {No response from modem.} ; No response in 60 secs. hangup ; User interrupted from keyboard, goto reinitstar ; so try again right away :GOTMSG reinput 0 {ON LINE} ; Got message, was it ONLINE? if success goto speed ; Yes, go check the speed. reinput 0 {ANSWER TONE} ; More noise if success goto getmsg reinput 0 RINGING ; check for RINGING (not real Hayes). if success goto getmsg ; RINGING, just wait for next message. reinput 0 DIALING ; Got message. Normally, first two are if success goto getmsg ; just noise reinput 0 {NO CARRIER} ; NO CARRIER? if success goto nocarrier ; Hang up again, then start over reinput 0 {BUSY!} ; BUSY? if success goto busy ; Go wait a bit, then dial again. reinput 0 {INVALID COMMAND} ; modem confused if success errfail {Modem returns 'invalid command'} reinput 0 {NO DIAL TONE} if success goto nodialtn errfail {No dialtone or no answer. Try again later.} :NODIALTN output I\13 ; try to explicitly place modem in IDLE errfail {No dialtone. Try again later.} :NOCARRIER hangup ; try to clear modem, then retry clear goto reinitstar :BUSY if < \v(count) 2 goto quit ; Don't wait 60 seconds if tries used up. Echo \13\10Busy or No Carrier, will dial again in 30 seconds...\13\10 :AGAIN if count goto redial ; Then go redial. :QUIT errfail {It never answers! I give up.} ; Too many tries. :SPEED ; Connected! echo \7 ; Celebrate with a beep. reinput 0 1200 ; Was the message ON LINE 1200? if success set speed 1200 ; Yes, change the speed. reinput 0 2400 ; Was it ON LINE 2400? if success set speed 2400 ; Yes, change speed. reinput 0 300 ; Try 300, just in case if success set speed 300 ; And set ; input 60 ERROR CONTROL if fail errfail {Can't get confirmation of error control} ; Give up ; define errfail ; Erase ERRFAIL definition end 0 ; Finished, return success code. :FAIL ; Dialing failed. define errfail ; Erase ERRFAIL definition end 1 ; Return failure code.