Frequently Used VMS/SIMH Commands

This section lists useful VMS and SIMH commands to run the simulator and perform various tasks on VMS.

VMS Startup Files
General VMS system startup file for applications and queues.
$SYS$MANAGER:SYSTARTUP_VMS.COM
A sample startup file can be found in $SYS$MANAGER:SYSTARTUP_VMS.TEMPLATE
System wide login file for all users. Allows for system wide commands and aliases to be built into this file.
$SYS$MANAGER:SYLOGIN.COM
System wide message to display to the user upon login.
$SYS$MANAGER:WELCOME.TXT
DEC's TCP/IP services startup file.
$SYS$STARTUP:UCX$STARTUP.COM

to examine the UCX configuration: UCX> SHOW CONFIGURATION INTERFACE

DEC Windows startup file.
$SYS$STARTUP:DECW$STARTUP.COM
VAXSET startup files.
$SYS$STARTUP:DECSET$ENVMGR_STARTUP.COM
$SYS$STARTUP:SCA$STARTUP.COM
$SYS$STARTUP:PCA$STARTUP.COM
Disk Backup
Backs up the DKA0 system disk to MKA400 as a system image. This is used to create a backup of the system disk. The disk image can be restored to another disk using the BACKUP/RESTORE command.
$BACKUP/IMAGE/VERIFY DKA0: MKA400:[]VMS.BAK/SAVE_SET/REWIND/LABEL=MAR30/IGNORE=NOBACKUP
Batch Queues
Initializing and starting the SYS$BATCH queue.
$START/QUEUE/MANAGER NEW <-- to start queue manager for the first time

or

$START/QUEUE/MANAGER
$SHOW QUEUE SYS$BATCH
$SHOW QUEUE/MANAGER
$INIT/QUEUE/BATCH/START SYS$BATCH
$SHOW QUEUE SYS$BATCH
Displaying DEC Windows on Apple OS X
This section shows how to initiate DEC Windows to display on OS X using the native X11 capabilities built into OS X. The OS X operating system is Unix based and already has a built-in X11 environment. In my case I use an Apple G4 laptop running OS X Leopard. It is now an unsupported OS and hardware, however, it is a very cost effective high performing platform for experimentation.
Before starting any DEC Windows commands, the X11 listener must be enabled on OS X. On any XTerminal window on OS X type:

xhost +

to enable all remote hosts to display on OS X.
then type: netstat -na | grep 6000
look for:
tip 4 listening on port 6000    or
tip 6 listening on port 6000

Login to the VAX and type the following:
$SET DISPLAY/CREATE/TRANSPORT=TCPIP/NODE=192.168.0.168     <-- G4 Laptop address
$CREATE/TERM=DECTTERM     <-- to create an X11 terminal session on the G4's screen
or
$RUN SYS$COMMON:[SYSEXE]DECW$STARTLOGIN.EXE     <-- to display the DEC Windows session manager on the G4

SIMH Commands for Starting VAX/VMS
This section lists the series of commands used to start the VAX simulator on SIMH. This is assuming that the VAX executable has already been compiled. Then open a terminal session on OS X and change directory to where the vax.exe executable is located.
Start the simulator with: sudo ./vax

SIMH>
SIMH> SHOW VERSION     <-- show the version of SIMH.
SIMH> ATTACH XQ ETH0     <-- attaches the Ethernet adapter to the simulator.
SIMH> SHOW SQ ETH0     <-- shows the ETH devices.
SIMH> SHOW XQ     <-- shows how XQ is configured.

SIMH> HELP     <-- for a listing of SIMH commands.

>>> B DUA0:     <-- to boot VMS from device DUA0.

CTRL E to return to the SIMH prompt.
CTRL C to continue simulation after a break

VMS Distribution Disks for SIMH
VMS distribution disks are often needed to install software on the VAX simulator. The DEC software distribution disks are in an ODS format and not readily readable under OS X or Microsoft Windows. However, to install software these need to be in a format that the SIMH simulator can read. The following shows how to read a VMS software distribution disk on the G4's disk1 CD drive and write it to an iso type image that can be read by SIMH. I noticed that depending on the type of Apple computer, G3, G4 or G5, the success rate for this varies. Below are the instructions successfully used on the Apple G3 laptop I started with. I had some difficulty replicating this on the G4. Feel free to try it.
$ diskutil list
Lists the disks on the laptop. Find which one is the CD drive. In this case it's disk1.

$ dd if=/dev/disk1 of=mydisk.iso bs=2048
Copies the CD disk inserted in disk1 into a file called mydisk.iso using a fixed block size of 2038 bytes for input and output.
The commands in this procedure perform the following tasks:
  • Executes the first pass of AUTOGEN during peak workload times to collect data on realistic work loads. This command runs a very fast image so it does not degrade system response.
  • Executes the second pass of AUTOGEN during off-peak hours to interpret the data collected in the first pass.
  • Mails the resulting report file named AGEN$PARAMS.REPORT to the SYSTEM account.
  • Cleans up the files created.
  • Resubmits the command procedure.
Automating AUTOGEN Reports
Digital recommends you create a batch-oriented command procedure to automatically run AUTOGEN on a regular basis and send the resulting feedback reports to an appropriate Mail account.Below is a sample command procedure.

Note: This command procedure runs AUTOGEN only to recommend system parameter values and send you a report. It does not run AUTOGEN to change system parameters or reboot the system.

The command procedure below runs two passes of AUTOGEN. On the first pass, AUTOGEN runs during peak workload times to collect data on realistic system work loads. This pass does not degrade system performance. On the second pass, AUTOGEN runs during off-peak hours to interpret the data collected in the first stage.

The procedure sends the resulting report, contained in the file AGEN$PARAMS.REPORT, to the SYSTEM account. Review this report on a regular basis to see whether the load on the system has changed. The example below shows a sample command procedure. Use this procedure only as an example; create a similar command procedure as necessary to meet the needs of your configuration.

Sample AUTOGEN Command Batch Procedure

$ BEGIN$:   ! ++++++++++ AGEN_BATCH.COM ++++++++++ 
$  on warning then goto error$ 
$  on control_y then goto error$ 
$! 
$! Setup process 
$! 
$! Set process information 
$  set process/priv=all/name="AUTOGEN Batch" 
$! Keep log files to a reasonable amount 
$  purge/keep=5 AGEN_Batch.log 
$  time = f$time()    ! Fetch current time 
$  hour = f$integer(f$cvtime(time,,"hour")) ! Get hour 
$  today = f$cvtime(time,,"WEEKDAY")  ! Get Day of the week 
$  if f$integer(f$cvtime(time,,"minute")) .ge. 30 then hour = hour + 1 
$! 
$! Start of working day... 
$! 
$ 1AM$:                                      
$  if hour .le. 2 
$     then 
$     next_time = "today+0-14" 
$     gosub submit$    ! Resubmit yourself 
$     set noon 
$! 
 
$!      Run AUTOGEN to TESTFILES using the parameter values collected earlier 
	 
$!      in the day (i.e., yesterday at 2:00pm) 
$       if today .eqs. "Tuesday" .OR. today .eqs. "Thursday" .OR. - 
  today .eqs. "Saturday" 
$          then 
$      @sys$update:autogen GETDATA TESTFILES feedback (2)
$      mail/sub="AUTOGEN Feedback Report for system-name" - 
 sys$system:agen$params.report system (3)
$      ! Clean up 
$            purge/keep=7 sys$system:agen$feedback.report (4)
$            purge/keep=7 sys$system:agen$feedback.dat 
$            purge/keep=7 sys$system:params.dat 
$            purge/keep=7 sys$system:autogen.par 
$            purge/keep=7 sys$system:setparams.dat 
$            purge/keep=7 sys$system:agen$addhistory.tmp 
$            purge/keep=7 sys$system:agen$addhistory.dat 
$        endif 
$     goto end$ 
$     endif 
$! 
$ 2PM$: 
$  if hour .le. 15 
$     then 
$     next_time = "today+0-17" 
$     gosub submit$ 
$     if today .eqs. "Monday" .OR. today .eqs. "Wednesday" .OR. - 
	  today .eqs. "Friday" 
$        then 
$          @sys$update:autogen SAVPARAMS SAVPARAMS feedback (1)
$        endif 
$     goto end$ 
$     endif 
$!
$ 5PM$: 
$  if hour .le. 18 
$     then 
$     next_time = "tomorrow+0-1" 
$     gosub submit$ 
$     endif 
$! 
$! End of working day... 
$! 
$ END$:     ! ---------- BATCH.COM ---------- 
$  exit 
$!++ 
$! Subroutines 
$!-- 
$! 
$ SUBMIT$: 
$  submit/name="AGEN_Batch"/restart/noprint - (5)
   /log=AGEN_batch.log - 
   /queue=sys$batch/after="''next_time'" sys$system:AGEN_batch.com 
$  return 
$!++ 
$! Error handler 
$!-- 
$ ERROR$: 
$  mail/sub="AGEN_BATCH.COM - Procedure failed." _nl: system 
$  goto end$ 
					
Miscellaneous Commands and Logical Associations
Miscellaneous commands and how to create logical name associations.
Adding UNZIP to VMS as a logical name. Ideally the UNZIP executable should be in its own directory.

$ UNZIP :== $SYS$SYSDEVICE:[WASD)UNZIP.EXE
$ UNZIP filename

Defining a logical association:

$ DEFINE HT_ROOT SYS$SYSDEVICE:[WASD.WASD_ROOT]
$ DIR HT_ROOT     <-- to display the contents of the directory

Source: http://www0.mi.infn.it/~calcolo/OpenVMS/ssb71/6015/6017p047.htm