Posted by under Emulation,Linux,OpenVMS,SIMH,VAX on May 25 2012, 1 comment

Emulating a MicroVAX 3900 running OpenVMS 7.3 on a Raspberry-Pi…

 

Starting from my Common Debian Raspberry Pi/Debian Networking SD image some things need to be installed.

sudo apt-get install m4
sudo apt-get install flex
sudo apt-get install bison

At this point creating a user for the Vax and switching to that user is probably a good idea. That’s what i’m doing. Adding this user to /etc/sudoers will probably help too.

After you’ve done that, you’ll need libpcap:

wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz
tar vxf libpcap-1.1.1.tar.gz
cd libpcap-1.1.1
./configure
make
sudo make install
cd ..

Now you’ll need to download and compile SIMH:

mkdir simh
cd simh
wget http://simh.trailing-edge.com/sources/simhv39-0.zip
unzip -a simhv39-0.zip
mkdir BIN
make USE_NETWORK=1 BIN/vax

This will take a while, so go and make a brew.

When thats done, cd up and make some directories and copy a file:

cd ..
mkdir bin
mkdir data
cp simh/BIN/vax bin
cp simh/VAX/ka655x.bin data

Now you’re going to need the iso file of the VMS install media. Get the image (somehow) and store it in the data directory as “openvms.iso”. FTPing the image onto the Pi will take a long time, so I suggest you go and make something to eat, but don’t eat it yet.

Anyway, once that it done you’ll need a vax.ini file in your data directory.

So, vi data/vax.ini and make it thus:

;
; Load CPU microcode
load -r /home/vax/data/ka655x.bin
;
; Attach non-volatile RAM to a file
attach nvr /home/vax/data/nvram.bin
;
; This virtual machine has 64M memory
set cpu 64m
;
; Define disk drive types. RA92 is largest-supported VAX drive.
set rq0 ra92
set rq1 ra92
set rq2 ra92
set rq3 cdrom
;
; Attach defined drives to local files
attach rq0 /home/vax/data/d0.dsk
attach rq1 /home/vax/data/d1.dsk
attach rq2 /home/vax/data/d2.dsk
;
; Attach the CD-ROM to its file (read-only)
attach -r rq3 /home/vax/data/openvms.iso
;
; Disable unused devices. It’s also possible to disable individual devices,
; using a construction like “set rq2 disable” if desired.
;
set rl disable
set ts disable
;
; Attach Ethernet to a network interface
set xq mac=08-00-2B-AA-BB-CC
attach xq eth0
;
; Now start the emulator
boot cpu

We also need this in the bin dir, so

ln -s /home/vax/data/vax.ini bin/vax.ini

So now it is time to try to start the emulator up.

sudo bin/vax

This gives you a load of guff, followed by a “>>>”prompt.

boot dua3

Then enter the date/time when asked, and “yes” when asked.

Once it gives you a “dollar” prompt:

backup dua3:vms073.b/save_set dua0:

Now go and eat the food you cooked earlier.

Once the thing comes up with “Enter “YES” to continue”, hit Ctrl-E and and the prompt enter:

boot cpu

When is comes up with “Tests completed” and shows the $ prompt:

set boot dua0
boot

You’ll be asked for the date/time again, and other questions.

The name of the drive holding the OpenVMS media is DUA3, and Yes it is mounted and you do want to install the OpenVMS library and optional files, along with the MSGHLP database (at its’ default location).

You’ll probably also want the optional OpenVMS Management Station files, but none of the DECWindows or DECnet support (unless you really want it). Answer “Y” when is asks if this is correct.

Now, go and build a yacht while it does the things that it needs to do.

Eventually it will ask you to set passwords for the SYSTEM, SYSTEST and FIELD accounts. Pick ’em wisely.

Next you’ll need an SCSNODE name and SCSSYSTEMID. Pick your own name (6 characters max – I used PIVAX) and use 1025 as the ID.

Next, you will be asked:

Do you want to register any Product Authorization Keys? (Y/N):

Yes you do, and you’ll need your license info (you do have that, don’t you?). So just follow the instructions to enter and confirm your details.

If this goes wrong, which it probably will, exit to the main menu, then use option 99. After entering your timezone details, and waiting for the seasons to change.

When you get back to the sim> prompt, type

boot cpu

and when it shows >>>

boot

Eventually you’ll see a message saying something like “Accounting information” and a whole load of numbers that you don’t need to bother about. Press ENTER, and log in as SYSTEM using the password you set earlier.

If your licence failed earlier, copy your license file directly on to the the command line now (I copied from ConText to Putty in an WinXP box).

My file looked like this (with all the preamble guff removed):

$ LICENSE REGISTER VAX-VMS –
/ISSUER=OPENVMS_HOBBYIST –
/AUTHORIZATION=DECUS-DEC-FANAMA-NADODOO –
/PRODUCER=DEC –
/UNITS=0 –
/TERMINATION_DATE=15-DEC-1971 –
/ACTIVITY=A –
/OPTIONS=(NO_SHARE) –
/CHECKSUM=2-DIDO-DOFA-NAMA-DODO

You may want to do the same to install any other Product Keys that you have.

By now a reboot is in order, so:

$ shutdown now
>>> boot cpu

Next we’ll set up some disks:

initialize dua1: DATA1
initialize dua2: DATA2
mount/system dua1 data1
mount/system dua2 data2

We’ll want these when we reboot, so these lines should be added to the end of the sys$manager:systartup_vms.com file:

$! Locally added stuff
$ mount/system dua1 data1
$ mount/system dua2 data2

And finally you’ll be wanting to add a user.

$ set def sys$system
$ r authorize
UAF> add pi/password=pi/owner="Raspberry Pi"/dev=dua1/dir=[pi]/uic=[200,201]
/flag=nodisuser/priv=all
UAF> exit
$ create/dir dua1:[pi]
$ set directory/owner=pi dua1:[pi]

Of course the user “pi” will need to change the password when they first log in.

I’ll look at adding TCP/IP to it later, but for now I’ll just look at setting up virtual serial linesand make the thing auto boot.

Add this to the vax.ini file after the “Disable unused devices bit”:

;
; Fire up some serial lines! Fun, telnet to 4000
;
set DZ lines=8
attach -am DZ 4000
;
;
; Uncomment the line below to enable auto-boot
dep bdr 0
;

Now you have a working VAX 3900 VMS system emulated on A Raspberry Pi. Fantastic.

Elsewhere, someone has successfully emulated an IBM 4381!

(In all fairness, a lot of this post was cribbed from Phil Wherry’s guide Running VAX/VMS Under Linux Using SIMH, with config bits from Tim Russell)

Tags: