zondag 7 februari 2016

The SIMH PDP11 and VAX simulator

This weekend I made a nostalgic trip back in time by recreating the computer environment I used at the university in 1982 and later.

The Computer History Simulation Project created the SIMH emulator (https://github.com/simh/simh) which I used to simulate a PDP11/70 and a VAX 780. On the PDP11/70 I loaded the original Unix v7 tapes and on the Vax I loaded BSD4.1 and BSD4.3.

http://gunkies.org/wiki/Installing_4.3_BSD_on_SIMH describes the procedure step by step, but states that the networking does not work.

I used the latest version of SIMH from Github (4.0 beta) and figured out how to get the Ethernet running on the Vax 780.

The trick is to add:

set xu enable
attach xu msk0

to your boot.ini file.

You should replace msk0 by the name of your physical netwerk interface, eg eth0 on your Linux machine, and start it with sudo vax780 boot.ini

See https://github.com/simh/simh/blob/master/0readme_ethernet.txt for details and other configuration options.

The last step is to rebuild the kernel, you need to add

device          de0     at uba? csr 0174510     vector deintr

to /usr/sys/conf/GENERIC and rebuild the kernel:

bsd43# cd /usr/sys/conf
bsd43# config GENERIC
Don't forget to run "make depend"
bsd43# cd ../GENERIC
bsd43# make depend
...
bsd43# make
...
bsd43# cp vmunix /

create a /etc/resolv.conf with:

nameserver 8.8.8.8

reboot, and you can FTP and telnet to every host on the Internet with software which was compiled in 1986. Amazing isn't it?!

As an exercise I changed the date.c program because it would not let me set a date after 1999, and I changed the timezone to 0 in GENERIC, but after those changes the clock/calendar are OK.

bsd43# date
Sun Feb  7 20:31:58 WET 2016
bsd43#

I also fixed the printing of the man pages so they don't show as year 116 ;-)

Finally I created a program to convert the simulated tapes to normal files, an adaption of
http://zazie.tom-yam.or.jp/starunix/mktape.c which works the other way around.

Get it from my Raspberry Pi-1 running FreeBSD 11-current: