.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
.s 2
.c ;Last Update:  May 28, 1985
.title VAXNET Auto-dial Modems
.st Racal-Vadic Autodialers
.page
.lm +5;.rm -5
.c ;VAXNET Version 9
.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 sys$common:[sysexe.vaxnet]
	$ define hlp$library sys$common:[sysexe.vaxnet]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

.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=JACK_BATCH/NOPRINT/NOTIFY -
	/PARAMETERS=("''P1'", "''P2'", "''P3'")
$ SHOW QUEUE JACK_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 SYS$COMMON:[SYSEXE.VAXNET].
.lm -5;.rm +5
.literal

$ @vaxnet$command
$ 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
