SYSIII comes alive on SIMH’s VAX 11/780

Ok, good news, I got it to boot! The bad news is that it’s kind of complicated… First you need a working UNIX/32V machine. And what’s worse is that UNIX SYSIII is not ‘free/shareware’ or anything like that. You need a license to run it.

It cost $100 to get one.

But they don’t sell it anymore.

So this is for the few people with a SYSIII license.

Anyways, to get the jump on SYSIII you need to add a second disk to a working UNIX/32V install. So after a while I managed to work out getting a second HP disk online on 32v, formatting it, and restoring a bare SYSIII install… (Nao’s 32v tape image has support for more then one HP disk, it was just a matter of figuring out the
major/minor for the 2nd disk (0/8,0/14)).

From the extracted cpio’s I took the following files (after looking at
the source of cmd/init.c):


Then I just created the following device files:

crw-rw-rw- 1 console console 0, 0 Jun 23 09:24 console
crw-rw-rw- 1 console console 3, 0 Jun 26 1979 null
brw-rw-rw- 1 console console 0, 0 Jun 26 1979 rp0a
brw-rw-rw- 1 console console 0, 7 Jun 26 1979 rp0h
brw-rw-rw- 1 console console 0, 8 Jun 26 1979 rp1a
brw-rw-rw- 1 console console 0, 14 Jun 26 1979 rp1h

And fired it up!


VAX780 simulator V3.8-1

$$ unixhpht

UNIX/3.0.1: unixhpht
real mem = 8323072
avail mem = 8207872

# ls
# cd bin
# ls
# cd /
# ls
# cd dev
# ls -l
/etc/passwd file cannot be opened for reading#
# ls>/etc/passwd
# ls -l
/etc/group file cannot be opened for reading#
# ls>/etc/group
# ls -l
total 0
crw-rw-rw- 1 console console 0, 0 Jun 23 09:24 console
crw-rw-rw- 1 console console 3, 0 Jun 26 1979 null
brw-rw-rw- 1 console console 0, 0 Jun 26 1979 rp0a
brw-rw-rw- 1 console console 0, 7 Jun 26 1979 rp0h
brw-rw-rw- 1 console console 0, 8 Jun 26 1979 rp1a
brw-rw-rw- 1 console console 0, 14 Jun 26 1979 rp1h

So now the remaining thing to do is to add another HP disk, format it
under SYSIII, and restore onto it… I wish I could share more of my
work, but I figure this will help someone down the road who wants to
venture down the SYSIII on the 11/780.

BSD RENO on SIMH’s microvax DZV11 vs DHQ11

I got this note over on from Lei Wu:

I use the following code to replace the original dz configration. set dz disable set vh enable set vh0 normal set vh0 modem set vh0 hangup att vh 2311

After this, when the vax emulator run up, you can see some messeges on the process of booting like this

dhu0 at uba0 csr 160440 vec 300, ipl 14
qe0 at uba0 csr 174440 vec 764, ipl 15
qe0: delqa, hardware address 08:00:2b:aa:bb:cc

this mean that the hardware is recognized by virtual machine.

next step, login as root, to make dh11 device node in /dev .

sh /dev/MAKEDEV dhu0

this command will make ttyS0 – ttyS15 device node.

now, you need to modify /etc/ttys to add those termial driver to autoload when system startup next time. the parameters is same with tty01-tty07 in the original ttys file.

At last you could reboot and telnet localhost on port 2311.

you will see the prompt, but there will emerge some flaw (some messed characters). but you can neglect this, and continue input your username and password. then you will get a shell.

Now, I don’t know the reason of those messed characters. Any one can continue to explore.

So that’s a ray of sunshine for the other UNIX/BSD’s that predate RENO that can boot on the MicroVAX II… Hopefully the drivers may work on the 11/780 to help some older OS’s whose support under the dz isn’t whole enough to work….

Added UNIX/32v to the sourceforge project

You can download UNIX/32v here:

As a simple windows installer. Just install and run and you’ll be at the login: prompt in no time!

32v is the common ancestor to both 4BSD and SYSV. While primitave by modern standards, this is the version where all 32bit unix’s can be traced back to. This is also the release that was central in the AT&T vs CSRG lawsuit. It is basically a port of the PDP-11’s v7 unix onto the VAX 11/780. I left the default kernel which is restricted to 1MB of ram, and 2 disks.. Only one disk is currently being used.

This version is FREE thanks to the old Caldera license.

Sadly, the DZ11 seems to not be working correctly so this is limited to a single user.. I have made slight modifications to the bootloader & init to print the Caldera message, and to boot 32v into multi user mode.

For what it’s worth, this is a list of the games of 32v:

This copy of 32v is made possible from the instructions found here: (Thanks to Nao!!)

More updates on the 4.2BSD project thing

I updated the website after 2+ years of stagnation… lol

I know its sad, and mostly all licensing… Anyways I’m in the process of moving so no major updates in the next week to two… But once I’m settled up in New York, I’ll crank out another set of releases to include working cursor control for games, and a loaded version of Uwisc BSD with all the fun stuff ready to roll… I’m also going to do a “HP” install of Reno so it won’t be an 80Mb download anymore… I figure if people are actually using them, they can modify the configs, add more disks etc etc….

Which reminds me if there is a online 1st edition copy of the “Unix System Administration Handbook”.. That’d be cool, but otherwise, I’d recommend people to get a copy of the 1st edition as it covers the tail end of the VAX era BSD’s.

Qemu 0.10.5 released!

Well qemu keeps on improving! Personally I like the new approach of more releases… the 0.10 road has been rocky for me with my old stuff at any rate…

Qemu 0.10.5 can be downloaded from here.

For windows users, you are going to have to build your own stuff, there doesn’t seem to be any provided binaries…….

Tera Term ‘fix’ for all *BSD/*UNIX

I’ll have to redo a bunch of stuff, to fix the distributions, and I think there is a ‘bug’ as it were in the installer that if you pick a different directory name, it’ll screw up… I need to test some more.

Anyways to fix the arrow keys, you need to load a keyboard binding into the emulator. If you go to the Tera Term site, and install it, you can copy out the file IBMKEYB.CNF and put it in the various “program files\******” directory for each emulator. Then alter the ‘attach a pty’ shortcut to go from this:

“C:\Program Files (x86)\bsd42\ttermpro.exe” localhost 42323

To this:

“C:\Program Files (x86)\bsd42\ttermpro.exe” localhost:42323 /K=”.\IBMKEYB.CNF”

Oh it’s also comming up for the 40th birthday of UNIX! I’m going to probably package up all the research editions that I can find into easy to install pacakages.. I figure it’d make all these releases more accessable much like the v1 unix package that I’ve done. If anyone can submit any good product links from the pre SYSV days that’d be awesome. It’s too bad that SYSVr2 or prior cannot be released into the wild.. I’d hardly call them ‘competitive’ in this day & age… Heck even SYSVr4 isn’t but sadly the lawyers say otherwise.

back to fun with pread.c

Well I know this topic keeps comming up over & over that the pread.c that I had used to build my Xenix on Qemu is long lost.

Anyways someone else was asking me for it, and I stumbled accross this Microsoft Memo:

which means the device name I was listing was wrong… I’m unsure if it means in 2003 it change from what it was since 1991….

Anyways here is my new ‘pread’.

#include <stdio.h>
#include <stdlib.h>

define BUFFSIZE 1024*1024
void main(void)
FILE *disk;
FILE *ofile;
int disknumber;
char fname[255];
char oname[255];
char *buffer;
int rc;
int pass;
buffer=(char)malloc(BUFFSIZE); if(buffer==(char)NULL)
{printf("\nError allocating buffer!!\n");return;}
printf("please tell me the disk NUMBER that you want to read\n");
printf("for \\.\PhysicalDrive1 just answer 1\n\n:");
printf("reading the device %s\n",fname);
printf("\nWhat is the output file name?\n\n:");
if(ofile==NULL){printf("\n\nERROR with %s\n",oname);return;}
if(disk==NULL){printf("\n\nERROR with disk %s\n",fname);return;}
pass = 0;
printf("\r%d\t%d:Megabytes processed",rc,pass);


FWIW I was checking links, and Tom’s site has moved to, which of course itself is now gone.  However with a lot of leg work, I did manage to snag the source to a few versions, and put them onto my CVS server, linked here: on  And of course you can replicate it via CVS.

As mentioned over here, the steps basically are:

cvs -d:pserver:[email protected]:/frontvm login
cvs -d:pserver:[email protected]:/frontvm checkout frontvm
cvs -d:pserver:[email protected]:/frontvm log -h | grep -P '^\t' | awk '{print $1}' | sort|uniq| sed -e 's/://g'

With the last step showing you the various commit levels….
In this case they are:

  • frontvm-20040517
  • frontvm2-20061120
  • frontvm3-20060613
  • frontvm3-20060623

So to checkout the first and oldest code I’ve found, you would execute:

cvs -d:pserver:[email protected]:/frontvm checkout -r frontvm-20040517 frontvm

And there you go.

The Frontier wiki is still here.

Packages so far on Uwisc 4.3BSD

I’ve been compiling quite a bit of stuff.. Looking back it was something I intended to do back in October of 2007… Well no time like the present then! I’ve done my best to include all the relevant bits for each of the following packages. It’s entirely possible I’ve missed stuff, so feel free to re-build the stuff as you wish. Some of the packages require you to build them with GCC as the default CC won’t work. However if you are going to build it yourself you won’t be able to jump to gcc as it requires gperf which in turn requires a working c++ compiler. So far here are the following packages:


All of these can be downloaded from here. I’m keeping all the source code (unaltered) in tap format for the SIMH emulator right here.

To get the C compilers going I had to build gcc 1.42 with the system compiler (cc/PCC) then use that version of GCC to build the next version. Once I had gcc 2.5.8 building, then I was able to build binutils 2.8.1 without issues, then rebuild gcc 2.5.8 to use binutils instead of the default system assembler so that I could build lynx and it wouldn’t barf because of the massive switch statement…

And no, -J didn’t help.

Speaking of lynx the search ability is broken because the function simply isn’t in 4.3 BSD (bsearch), and for pine, I had to make a fake tmpfile function that uses the /tmp/pinebox directory.

The gcc 2.5.8 package includes the C++ components, and I’m pretty sure I did with as well. I’m not sure if GCC 3.x kept the VAX cpu so I haven’t pushed forward, but seeing that the cc1 exe is over 1mb it doesn’t seem worth it to push ahead.

I’ll have to see about including more games. The selection in this 4.3 release is kind of weak,

aardvark* boggle* hack@ monop* snake*adventure* ching* hangman* quiz* snscore*backgammon* cribbage* hunt* robots* teachgammon*battlestar* doctor* lib/ rogue* trek*bogdict* fortune* mille* sail* zork*

I’ll have to see what’s missing from where.. Also I notice that the arrow key bindings in terraterm are not working… I’ll have to dive into that as well. It may end up with a new re-relase of the emulator or a patch thing. I’ll have to see.

I should add a quick note on how to unpack these tap files. First you will need bzip2 on your native pc. You should be able to get one here.

Now just uncompress the file..

C:\Program Files (x86)\uwiscbsd>bzip2 -d lynx-2.8.2.binary.BSD-4.3.Uwisc.tap.bz2

Now you need to go to the SIMH console window. It will say something like this in it:

VAX780 simulator V3.8-1
Listening on port 42221 (socket 376)
Waiting for console Telnet connection

Hit Control+E and it’ll interrupt the simulator. Then we need to attach the tap file like so:

Simulation stopped, PC: 800018A3 (MTPR #0,#12)
sim> att ts0 lynx-2.8.2.binary.BSD-4.3.Uwisc.tap
sim> c

the att command will attach the tap file to the ts0 device. the c will tell the simulator to continue. Now just switch to a tty windows (or attach a pty), then it’s a simple matter of running the following commands:

myname# cd /
myname# mt rew
myname# tar -xvmf /dev/rmt12
x /usr/local/bin/gzip, 66560 bytes, 130 tape blocks
x /usr/local/bin/lynx, 949248 bytes, 1854 tape blocks
x /usr/local/lib/lynx.cfg, 97203 bytes, 190 tape blocks
myname# rehash

Thats about all it takes, now you can run lynx. If you so wish, you can run back to the SIMH console, and tell it to “det ts0” which will detach the tape image.

Update for HACK

I just found out that hack will run properly if it’s built with the default compiler PCC (cc). However there is a single file that will not build, but gcc can be used to build the single file, and the build process can continue as normal.

Here is a quick log:

myname# make
cc -g -c hack.Decl.c
cc -g -c hack.apply.c
cc -g -c hack.bones.c
cc -g -c hack.c
hack.c: 799: missing endif
*** Error code 1

myname# gcc -g -c hack.c
myname# make
cc -g -c hack.cmd.c

cc -g -c rnd.c
cc -g -c alloc.c
Loading …
myname# size hack
text data bss dec hex
158720 47104 30404 236228 39ac4
myname# ls -l hack
-rwxrwxr-x 1 root 694272 May 10 10:23 hack
myname# strip hack
myname# ls -l hack
-rwxrwxr-x 1 root 206848 May 10 10:23 hack

And with that being said, it seems just about any version of GCC will do… from 1.27 to 2.45. I’ve test played it, and you get the tombstone when you die, not a core dump. This applies to 4.2 BSD and all the 4.3 BSD’s. I’ve updated the sourceforge binary packages that I have made for Hack to include this hybrid exe that seems to work just fine.

Happy hacking!