.ps 60,78 .nhy .literal .end literal .c ;VAXNET Auto-dial Modems .s .c ;March 18, 1985 .s .c ;Technical Documentation .c ;by .c ;Robin Miller .title VAXNET Auto-dial Modems .st Racal-Vadic Autodialers .page .lm +5;.rm -5 .c ;VAXNET Version 9.12 .index Introduction .hl 1 Introduction. This version of VAXNET includes support for the Racal-Vadic VA3480 modem with VA811 Automatic Calling Unit and VA831A/B Adapter. Support has also been added for the Racal-Vadic VA212, Racal-Vadic VA3450, and the HAYES Smartmodem and U.S. Robotics Password/Courier modems. This document describes the use of the Racal-Vadic VA3480 modem since this is the modem used on system JACK::. .index Command Procedures .hl 1 Command Procedures. There are several command procedures used with VAXNET and the auto-dial modems. The main command procedure is call VAXNET.COM. This should be executed in your login command procedure to make the auto-dial commands available at DCL level and also for the CALLBACK command procedure which runs in batch. The following is a copy of this command procedure: .s .c ;File "VAXNET.COM" .literal $! $! Define the symbols for programs used with VAXNET: $! $ define sys$vaxnet user$disk1:[frank] $ define hlp$library user$disk1:[frank]vaxnet.hlb $ callback :== @sys$vaxnet:callback $ dialup :== @sys$vaxnet:dialup $ mish :== $sys$vaxnet:mish $ ref :== $sys$vaxnet:ref $ sndrcv :== $sys$vaxnet:sndrcv $ vaxnet :== $sys$vaxnet:vaxnet $ vmodem :== $sys$vaxnet:vmodem $! $! Define the symbols for KERMIT: $! $ define hlp$library_1 user$disk1:[frank]kermit.hlb $ kermit :== $sys$vaxnet:kermit .end literal The programs KERMIT, MISH, SNDRCV, and VMODEM are used to transfer files with a remote computer. The REF program is used to reformat the VAXNET logfile (if any) when you exit the program. The logical names HLP$LIBRARY and HLP$LIBRARY_1 are used to access the VAXNET and KERMIT help files. .st DIALUP Command Procedure .page .index DIALUP Command Procedure .hl 2 DIALUP Command Procedure. This command procedure is used to dial a phone number. If parameters aren't specified on the command line to define the phone number, remote speed, and log file name, the user is prompted for them. The command procedure defines all symbols needed to tell VAXNET the type of auto-dialer, the modem ports, and the modem speeds so this is transparent to the user. .literal Command Format: $ DIALUP phone_number modem_speed logfile_name or $ DIALUP Enter the phone number to dial: phone_number Enter the modem speed (1200) : Enter the log file name (None): .end literal .st CALLBACK Command Procedure .index CALLBACK Command Procedure .hl 2 CALLBACK Command Procedure. This command procedure is used to call you back after you've dialed into the system. If parameters aren't specified on the command line to define the phone number, remote speed, and callback delay, the user is prompted for them. After the these parameters are defined, the command procedure then submits itself to batch to call you back. The callback delay defines the number of seconds to delay before calling you to give you enough time to log off the system. Since CALLBACK is running in batch, you must make sure the VAXNET.COM command procedure is executed in your login command file so the VAXNET commands will be defined. .literal Command Format: $ CALLBACK phone_number modem_speed callback_delay or $ CALLBACK Enter the phone number to dial: phone_number Enter the modem speed (1200) : Enter the call-back delay (30): .end literal .st Hardware Configuration .page .index Hardware Configuration .hl 1 Hardware Configuration. The Racal-Vadic auto-dialer and modems are attached to an ABLE terminal server. The ABLE terminal ports are then connected to the VAX on system JACK::. The following is our configuration: .literal ABLE Port Type Originate Speed Extension ---- ---- ---- --------------- --------- LAB:11[0] TXG0: modem 300 3000 LAB:11[1] TXG1: modem 300 3001 LAB:11[2] TXG2: modem 1200 3002 LAB:11[3] TXG3: modem 1200 3003 LAB:11[4] TXG4: modem 1200 3004 LAB:11[5] TXG5: dialer 1200 None .end literal The originate speed doesn't affect the modem when answering an incoming phone call. The modem automatically adjusts to the incoming modem carrier signal of 300 or 1200 baud. The originate speed controls an outgoing phone call and is set by a switch on the back of each modem. The switch is set to either low speed for 300 baud or high speed for 1200 baud. .index ABLE Assist Mode .hl 2 ABLE Assist Mode. When the ABLE system in loaded, it enables a characteristic called assist. In this mode, the ABLE detects the transmission flow characters (XON and XOFF). When the transmission off (XOFF=CTRL/S) character is received, the ABLE stops sending characters on that port and buffers them internally. When the transmission on (XON=CTRL/Q) character is received, the ABLE then resumes transmitting on that port. .s This works just fine when a terminal is attached to the ABLE but doesn't work so well when talking to another computer. If the remote computer sends an XOFF and then never sends the XON character, the ABLE won't send anything to the remote computer. The result of this is that it appears to the user as though the VAXNET program is hung or the remote computer has gone away. Redialing the phone number allows the modems to be connected but whatever the user types or whatever VAXNET sends during auto-login, doesn't get sent to the remote computer. .s To prevent this problem, the ABLE assist mode must be turned off for the modem and auto-dial ports. First the RESTORE command should be executed to clear any transmission off states, then assist mode should be disabled. The following commands should be typed at an ABLE control terminal: .s .literal RESTORE ALL SET LAB:11[0]/FLOW=80H SET LAB:11[1]/FLOW=80H SET LAB:11[2]/FLOW=80H SET LAB:11[3]/FLOW=80H SET LAB:11[4]/FLOW=80H SET LAB:11[5]/FLOW=80H SET LAB:11[0] Xmit=On Rcvr=On Brk =Off Mode=Norm Xmit=1200 Rcvr=1200 XMod=Sync T/O =8 Xflo=Off Rflo=Off ARTS=Off CTSF=Off Bits=8 Par =Off Stop=1 .end literal .s The last command above displays the current terminal characteristics. The transmission flow (Xflo) should be marked as "Off" instead of "Assis". .appendix Command Files .index Command Files .ps 60,78 .lm +5;.rm -5 This section contains a copy of the DIALUP and CALLBACK command procedures for reference. You can copy these and customize them if you wish although specialized versions can be created by defining DCL symbols. For example, the following command could be defined in your login command file to call you at your home phone number: .literal $ CALLME :== "''CALLBACK' home_phone modem_speed dial_back_delay" .end literal This command should be defined after executing the VAXNET.COM command procedure. After you are logged in, simply typing "CALLME" will invoke the CALLBACK command procedure to call you back. .lm +3;.rm +5 .page .c ;File "DIALUP.COM" .s .literal $! $! File: DIALUP.COM $! Author: Robin Miller $! Date: January 31, 1985 $! $! Description: $! $! This command procedure is used to setup various symbols used $! by the VAXNET program to dial a number through the Racal-Vadic $! autodialer/modem. $! $! Input parameters: $! $! P1 The phone number to dial. $! P2 The remote port speed. $! P3 The log file name. $! $!-------------------------------------------------------------------- $! $! Request the phone number to dial. $! $GET_PHONE: $ IF P1 .NES. "" THEN GOTO GET_SPEED $ INQUIRE/NOPUNC P1 "Enter the phone number to dial: " $ IF P1 .EQS. "" THEN GOTO GET_PHONE $! $! Request the remote port speed. $! $GET_SPEED: $ IF P2 .NES. "" THEN GOTO GET_LOGFILE $ INQUIRE/NOPUNC P2 "Enter the modem speed (1200) : " $ IF P2 .EQS. "" THEN P2 := 1200 $! $! If the logfile name = "NONE", then do not create a log file. $! $GET_LOGFILE: $ IF P3 .NES. "NONE" THEN GOTO ASK_LOGFILE $ P3 := "" $ GOTO START_VAXNET $! $! Request the log file name. $! $ASK_LOGFILE: $ IF P3 .NES. "" THEN GOTO START_VAXNET $ INQUIRE/NOPUNC P3 "Enter the log file name (None): " $! $! Define the symbols and start the VAXNET program. $! $START_VAXNET: $ VAXNET_INTRO := N $ VAXNET_LOG := Y $ IF P3 .EQS. "" THEN VAXNET_LOG := N $ LOG_LOCAL := Y $ LOG_FILE := 'P3' $! $! The originate speed for the first two ports are set to 300 baud. $! $ REMOTE_PORT_0 := TXG0: $ REMOTE_SPEED_0 := 'P2' $ REMOTE_PORT_1 := TXG1: $ REMOTE_SPEED_1 := 'P2' $ IF P2 .EQS. "300" THEN GOTO SET_MODEM $! $! The originate speed for the last two ports are set to 1200 baud. $! $ MODEM_SLOT := 2 ! Skip the first two ports. $ REMOTE_PORT_2 := TXG2: $ REMOTE_SPEED_2 := 'P2' $ REMOTE_PORT_3 := TXG3: $ REMOTE_SPEED_3 := 'P2' $ REMOTE_PORT_4 := TXG4: $ REMOTE_SPEED_4 := 'P2' $SET_MODEM: $ MODEM_TYPE := VA3480 $ PHONE_NUMBER := 'P1' $ DIALER_PORT := TXG5: $ DIALER_SPEED := 1200 $ SYSTEM_TYPE := DEC $ IDLE_TIMEOUT := 2 ! Increase IDLE timeout for ABLE. $ INTERRUPT_CHAR := ^A $!DEBUG_OUTPUT := Y $ DEFINE/USER SYS$INPUT SYS$COMMAND $ VAXNET .end literal .page .c ;File "CALLBACK.COM" .s .literal $! $! File: CALLBACK.COM $! Author: Robin Miller $! Date: January 25, 1985 $! $! Description: $! $! This command procedure is used to implement the call-me-back $! feature of the VAXNET program. After prompting for the phone $! number, the modem speed, and the call-back delay, it submits $! itself to batch to call the user back. $! $! Input parameters: $! $! P1 The phone number to dial. $! P2 The remote (modem) speed. $! P3 The call-me-back delay. $! $ IF "''F$MODE()" .EQS. "BATCH" THEN GOTO BATCH $! $! Request the phone number to dial. $! $ IF P1 .NES. "" THEN GOTO GET_SPEED $GET_PHONE: $ INQUIRE/NOPUNC P1 "Enter the phone number to dial: " $ IF P1 .EQS. "" THEN GOTO GET_PHONE $! $! Request the speed to call back at. $! $GET_SPEED: $ IF P2 .NES. "" THEN GOTO GET_DELAY $ INQUIRE/NOPUNC P2 "Enter the modem speed (1200) : " $ IF P2 .EQS. "" THEN P2 := 1200 $! $! Request the number of seconds to delay. $! $GET_DELAY: $ IF P3 .NES. "" THEN GOTO SUBMIT_JOB $ INQUIRE/NOPUNC P3 "Enter the call-back delay (30): " $ IF P3 .EQS. "" THEN P3 := 30 $SUBMIT_JOB: $ SUBMIT SYS$VAXNET:CALLBACK /QUEUE=SYS$BATCH/NOPRINT/NOTIFY - /PARAMETERS=("''P1'", "''P2'", "''P3'") $ SHOW QUEUE SYS$BATCH $ EXIT $! $! We come here when executing in batch mode. $! $BATCH: $! $! Do not exit batch on any errors. $! $ SET NOON $! $! Define the symbols for the VAXNET program. $! $ VAXNET_INTRO := N $ VAXNET_LOG := Y $ LOG_LOCAL := Y $ LOG_FILE := CALLBACK.LOG $! $! The originate speed for the first two ports are set to 300 baud. $! $ REMOTE_PORT_0 := TXG0: $ REMOTE_PORT_1 := TXG1: $ REMOTE_SPEED := 'P2' $ IF P2 .EQS. "300" THEN GOTO SET_MODEM $! $! The originate speed for the last three ports are set to 1200 baud. $! $ MODEM_SLOT := 2 ! Skip the first two ports. $ REMOTE_PORT_2 := TXG2: $ REMOTE_PORT_3 := TXG3: $ REMOTE_PORT_4 := TXG4: $ REMOTE_SPEED := 'P2' $! $! Setup the remaining VAXNET symbols. $! $SET_MODEM: $ MODEM_TYPE := VA3480 $ PHONE_NUMBER := 'P1' $ DIALER_PORT := TXG5: $ DIALER_SPEED := 1200 $ SYSTEM_TYPE := DEC $ INTERRUPT_CHAR := ^A $!DEBUG_OUTPUT := Y $ CALL_ME_BACK := Y $ CALL_ME_DELAY := 'P3' $ DEFINE/USER SYS$INPUT SYS$COMMAND $ VAXNET $ PURGE/KEEP:3 CALLBACK.LOG $ EXIT .end literal .lm -3;.rm -5 .appendix Error Messages .index Error Messages .ps 60,78 .lm +5;.rm -5 Whenever the auto-dialer is in use by another user or if all the modem ports are in use, you will receive a warning or error message. Depending on the error, VAXNET will either retry the operation, or will return you to command level "Vaxnet>". .hl 1 Dialer Not Available. If the auto-dialer in being used by another user, you will receive the following message: .literal *** The dialer is INUSE by another user, please be patient. *** .end literal VAXNET will continue to issue this message every 10 seconds until either the dialer is available or the retry limit is exceeded (usually about three minutes). If the dialer is not available, you will receive the following message: .literal *** The dialer is NOT available, please try again later. *** .end literal .hl 1 Remote Ports Not Available. The DIALUP and CALLBACK command procedures define a series of remote ports to be used for dialing out on. If all ports at either 300 or 1200 baud are in use, you will receive the following message: .literal *** There are no remote ports available at this time. *** .end literal If you receive this message you should exit from VAXNET and try again later when a remote port may be available. If you would like to see who us using the modem ports, you can use the "SHOW DEVICE/FULL" DCL command and specify the modem port(s) you are interested in. Then, the "SHOW USERS" DCL command can be used to match the process id with the user name. .lm -5;.rm +5 .literal $ show device/full txg2: Device TXG2: 14-MAR-1985 17:24:48.15 on line Allocated Error count 0 Owner process id 00070051 Operations completed 58393 Owner process name Doctor Who Reference count 3 Default buffer size 511 $ show users VAX/VMS Interactive Users - Total = 11 14-MAR-1985 17:25:30.90 OPA0: D_JOHNSON 00050052 RTA2: FRANK 00070051 TXA6: TEST_BED 00010046 TXA7: TEST_BED 00010045 TXB0: D_JOHNSON 00030059 TXC2: FLETCHER 0003004E TXD0: STONE 00070056 TXD5: SAUNDERS 00010043 TXE5: BISHOP 0004004B TXF5: TECH_CLERK 00040058 TXG3: MILLER 000A0057 .end literal .lm +5;.rm -5 In this example, device TXG2: is owned by process id 70051 which belongs to user FRANK. If you need to use a modem immediately, you should then contact the user of one of the modems. .hl 1 Modem Error Messages After VAXNET successfully attaches the dialer and modem port, it attempts to dial the phone number. VAXNET first sends a CTRL/A character to the dialer to tell it to abort/reset. The dialer should respond with the character "B" if successful, otherwise VAXNET retrys the operation. If the retry limit (three by default) is exceeded, you'll receive the following message: .literal *** The autodialer is not responding, aborting... *** .end literal Whenever I've received this message, I've had to reset the dialer port to clear the condition. To reset the dialer you must go into the computer room and turn the auto-dialer power off then back on. .s After the dialer starts dialing the phone number one of the following error messages will be returned in the modem connection is not established: .literal *** Abandon Call/Retry received, retrying ... *** Indicates received abort character from the DTE or Automatic Call/Retry (ACR) received from dialer. *** Format Error received, retrying ... *** Indicates data framing error in character string received by adapter. *** Parity Error received, retrying ... *** Indicates parity error in character string received by adapter. *** RAM Overflow received, retrying ... *** Indicates character buffer (RAM) capacity has been exceeded. The maximum capacity is 60 or 32 characters, depending on option switch setting. All characters in the message string except STX and ETX are stored in the buffer during a Write mode. *** Data Line Occupied received, retrying ... *** Indicates the modem or dialer is busy (off-hook). *** Unexpected or no response received, retrying ... *** Indicates one of the above responses or no response was received from the auto dialer. .end literal The VA831A/B Adapter manual should be referenced for more information on the above error messages. VAXNET will retry dialing the number whenever an error is detected. If the retry limit is exceeded, you will receive the following message: .literal *** The connection was not established. *** .end literal If the modem connection is established, you will receive the following message: .literal *** Connection established, you may continue. *** Indicates successful call completion. .end literal .appendix Example "DIALUP" Session .index Example "DIALUP" Session .ps 60,78 .lm +5;.rm -5 The following is an example of using the DIALUP command procedure to dial a phone number. The example starts with the user already logged into system JACK:: and presumes the command procedures are located in account [FRANK]. .lm -5;.rm +5 .literal $ @[frank]vaxnet $ dialup Enter the phone number to dial: 3000 Enter the modem speed (1200) : Enter the log file name (None): VAXNET - Version 9.9 - Wednesday February 13, 1985 VAXNET Status Report: Log file name: None Remote port: _TXG2: Remote speed: 1200 Remote parity: NONE Interrupt char: ^A System type: DEC Local echo: Disabled Modem type: VA3480 Phone number: 3000 Dialer port: _TXG5: Dialer speed: 1200 Modem slot: 2 *** Dialing phone number 3000 *** *** Connection established, you may continue. *** Username: MILLER Password: Welcome to VAX/VMS version V3.7 on node JACK $ show terminal Terminal: _TXG1: Device_Type: VT100 Owner: Doctor Who(MILLER) Input: 1200 LFfill: 0 Width: 80 Parity: None Output: 1200 CRfill: 0 Page: 24 Terminal Characteristics: Interactive Echo Type_ahead No Escape Hostsync TTsync Lowercase Tab Wrap Scope Remote No Holdscreen No Eightbit Broadcast No Readsync Form Fulldup Modem No Local_echo Autobaud Hangup No Brdcstmbx DMA No Altypeahd Set_speed ANSI_CRT No Regis No Block_mode Advanced_video No Edit_mode DEC_CRT $ ( The interrupt character CTRL/A was typed to escape to command mode. ) Vaxnet> show signals Incoming Modem Signals: Clear To Send (CTS) is asserted. Data Set Ready (DSR) is asserted. Secondary receive data is NOT asserted. The calling indicator (RING) is NOT asserted. The line signal detector (CARRIER) is asserted. The remote port (_TXG2:) is attached to a DMF32 controller. Vaxnet> show local Incoming Modem Signals: Clear To Send (CTS) is asserted. Data Set Ready (DSR) is asserted. Secondary receive data is NOT asserted. The calling indicator (RING) is NOT asserted. The line signal detector (CARRIER) is asserted. The local port (__TXG0:) is attached to a DMF32 controller. Vaxnet> $ lo MILLER logged out at 14}} ( The interrupt character CTRL/A was typed to escape to command mode. ) Vaxnet> exit *** Exiting *** $ .end literal .page .c ;Index .c ;----- .print index