Digital DEC MicroVAX 3100

Page content

Digital DEC MicroVAX 3100

I bought this as a fully working machine.

Series BA42A board and KA41A CPU. So this is a Microvax 3100-10. 16MB RAM. The machine contains two harddrives. One contains a VMS operating system, the other one a NetBSD installation. So it can run both VMS and UNIX.

Contains a DHW-42-AA (also called: DSH32-B?) extension board. It offers 8 additional serial lines (for terminals) and 2 synchronous lines RS-423.

Contains also a 12MB RAM module MS42-BA (54-18287-BA). With the 4MB on board, it has in total 16MB.

From Internet sources I saw that there is also an Ultrix 4.x available, DECs flavour of UNIX.

Connectors: Multiterminal extension"4-11" (8 serial lines) on the top left, “B1” connector for “synchronous (RS-423) communication” . At the bottom from the left: AUI Network, Network switch, BNC network connector. With network switch, one of the two connectors can be enabled. Halt-Button, Terminal lines 1,2,3 with western connectors 6 pin.

Connectors, from left: External SCSI at the top. At bottom: Terminal lines 1,2,3 and an additional serial 25 pin DB connector, used for modem hardware. Switch to set console to Terminal 1 or modem. Then there are eight tiny LEDs to give some feedback during booting up. Power connector, mains switch.

Mainboard. RAM mezzanine board at bottom. The built-in 4MB RAM at bottom right. Clock battery is partly to be seen at bottom right. This is already a replacement for the leaky old NiCD ones.

Main CPU KA41. Date code week 17 1991. A mystery chip with no label (with golden hat) and a 27C1024 EEPROM are also visible. I suppose that EEPROM contains boot code.

The DSH32-B board. This board contains the logic for synchronous/asynchronous external connectors. Furthermore, it also offers two SCSI connectors for both SCSI busses.

This board with part number 54-18858-01 is also described as DSH32-A Distribution Board

Another mezzanine board. This is the main logic board DSH32-BA, part number 54-18905-01, which drives the DSH32-B board. There is also an unused blue connector, wonder what this is for. Maybe a non-SCSI Floppy drive connector (2x17)? Have to research on this.

From ebay sources with different boards I can see that this is also labelled as “54-18905-01 50-18904-01 C1 L1 Combo controller”. This label is printed on a PCB photo I saw. First I thought that this board also contains SCSI controller logic, but from documents I read this seems not to be the case. Also, I found no hint that the blue connector could be a floppy drive connector. Actually I found no hint at all regarding this connector.

Hardware needed to use the machine

For the network connection, I bought a AUI to RJ45 adapter, the venerable ComCentre 210TS, that I had already used in other computer history projects.

To connect a terminal, we need to attach it to terminal #1 connector, which is a DEC MMJ connector type. A Standard 6 pin Western connector can be used but its key needs to be removed with a knife then. Or a real MMJ connector can be bought.

The wiring scheme to a standard DB9 female connector can be found on the internet. From that every real RS232<->USB adapter can be used to communicate with the machine. With “real” I mean that the RS232 signal levels need to be provided (some adapters provide 0..5 volts TTL level only and will not work).

First boot

On my machine, two harddisks with two operating systems were installed when I got it:

  • VMS 5.1 on a Maxtor drive
  • NetBSD 1.5.3 (dated from 2002) on an IBM drive

The Microvax has a console mode, after switching it to on, it will enter the console mode. From there, it boots from default boot device, or allows to select another boot device. So it is a little bit like the BIOs known from PCs.

KA41-A  V1.6          

F_..E...D...C...B...A...9...8...7...6...5...4...3...2_..1?..


 ?  C  0080  0000.4001
 ?  6  80A1  0000.4001
??  1  00C0  0000.7004


>>> show dev
 VMS/VMB  ULTRIX    ADDR    DEVTYP  NUMBYTES  RM/FX  WP  DEVNAM  REV
 -------  ------  --------  ------  --------  -----  --  ------  ---
 ESA0     SE0     08-00-2B-26-46-99

 DKA0     RZ0     A/0/0/00  DISK      625 MB   FX        IBM  061S11
 DKA100   RZ1     A/1/0/00  DISK      345 MB   FX        7345-SC1761
 ...HostID....    A/6       INITR

 ...HostID....    B/6       INITR

 >>> show ether
ID 08-00-2B-26-46-99

>>> show kbd
3
>>> show mop
0
>>> show mem
01000000         
00000000         
00FE3E00:00FFFFFF

>>> show estat

>>> show scsia
6
>>> show scsib
6
>>> show pse
0
>>> show ver

KA41-A  V1.1C6-17A-V6.2-262
PST: 17A         
CON: 1C6         
VMB: V6.2        
ROM: 262  

What commands are available from console mode?

>>> help

  DEPOSIT [{ /B | /W | /L }] [{ /P | /V | /I }] [/G] [/U] [/N:<n>]
          [{ <addr> | <sym> | + | - | * | @ }  [<datum>]]
  EXAMINE [{ /B | /W | /L }] [{ /P | /V | /I }] [/G] [/U] [/N:<n>]
          [{ <addr> | <sym> | + | - | * | @ }]
  SET BOOT <ddau>
  SET BFLG <bflg>
  SET HALT <1-3>
  SET KBD <0-15>
  SET MOP <0-1>
  SET TRIG <0-1>
  SET PSWD
  SET PSE <0-1>
  SHOW { BOOT | BFLG | DEV | ETHER | HALT | KBD | MOP |
         TRIG | MEM | ESTAT | SCSIA | SCSIB | PSE | VER}
  INITIALIZE
  UNJAM
  BOOT [/[R5:]<bflg>] <ddau>:
  CONTINUE
  START <addr>
  REPEAT <cmd>
  TEST <n> [<m>]
  FIND [{ /MEMORY | /RPB }]
  LOGIN
  XFER <addr> <cnt> ...
  DTE
  HALT
  HELP        

Executing t 50 (’t’ is short for ’test’, and 50 means configuration display):

>>> t 50

KA41-A  V1.6          
ID 08-00-2B-26-46-99

   CLK      0000.0001       
   NVR      0000.0001       
 ? DZ       0000.4001       
      00004001 00000001 00000001 00000001 00000000 00000000                   
   MEM      0010.0001       
      01000000                                                                
   MM       0000.0001       
   FP       0000.0001       
   IT       0000.0001       
   SCSI-A   0202.0001  V1.58
      FFFFFF05 00000001 FFFFFF05 FFFFFF05 FFFFFF05 FFFFFF05 FFFFFF03 FFFFFF05 
?? SCSI-B   0000.4142  V1.58
      FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFF03 FFFFFFFF 
   SYS      0000.0001       
   DSH32-A  00FF.0001  V1.0 
   DSH32-S  0000.0001  V2.0 
   NI       0100.0001  

I wanted to try out the NetBSD installation, so I will boot from dka0:

>>> boot dka0

-DKA0
>> NetBSD/vax boot [Jan  6 2002 22:13:30] <<
>> Press any key to abort autoboot 0
1174268+57032+195096+[85608+100959]=0x189ca7
[ preserving 186567 bytes of netbsd a.out symbol table ]
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 1.5.3 (GENERIC) #5: Mon Jul  1 23:34:54 CEST 2002
    he@turing.urc.uninett.no:/usr/src/sys/arch/vax/compile/GENERIC

MicroVAX 3100
cpu: KA41/42
cpu: Enabling primary cache, no secondary cache present
total memory = 16264 KB
avail memory = 12340 KB
using 228 buffers containing 912 KB of memory
mainbus0 (root)
vsbus0 at mainbus0
vsbus0: interrupt mask 0
le0 at vsbus0 csr 0x200e0000 vec 120 ipl 14 maskbit 5 buf 0x3e3000-0x3f2fff
le0: address 08:00:2b:26:46:99
le0: 32 receive buffers, 8 transmit buffers
dz0 at vsbus0 csr 0x200a0000 vec 304 ipl 14 maskbit 6
dz0: 4 lines
si0 at vsbus0 csr 0x200c0080 vec 770 ipl 14 maskbit 1
si0: NCR5380, SCSI ID 6
scsibus0 at si0: 8 targets, 8 luns per target
si1 at vsbus0 csr 0x200c0180 vec 774 ipl 14 maskbit 0
si1: NCR5380, SCSI ID 6
scsibus1 at si1: 8 targets, 8 luns per target
scsibus0: waiting 2 seconds for devices to settle...
sd0 at scsibus0 target 0 lun 0: <SGI, IBM  0662 S08, 1S11> SCSI2 0/direct fixed
sd0: 596 MB, 4116 cyl, 3 head, 98 sec, 512 bytes/sect x 1221088 sectors
sd1 at scsibus0 target 1 lun 0: <MAXTOR, 7345-SCSI, 1761> SCSI2 0/direct fixed
sd1: 329 MB, 2220 cyl, 4 head, 76 sec, 512 bytes/sect x 675484 sectors
scsibus1: waiting 2 seconds for devices to settle...
boot device: sd0
root on sd0a dumps on sd0b
Clock has gained 16 days - CHECK AND RESET THE DATE.
root file system type: ffs
swapctl: adding /dev/sd0b as swap device at priority 0
Automatic boot in progress: starting file system checks.
/dev/rsd0a: file system is clean; not checking
Setting tty flags.
Setting sysctl variables:
Starting network.
Hostname: vax.unknown.anywhere
NIS domainname: local
add net 127.0.0.0: gateway 127.0.0.1
add net fe80::: gateway ::1
add net fec0::: gateway ::1
add net ::ffff:0.0.0.0: gateway ::1
add net ::224.0.0.0: gateway ::1
add net ::127.0.0.0: gateway ::1
add net ::0.0.0.0: gateway ::1
add net ::255.0.0.0: gateway ::1
add net 2002:e000::: gateway ::1
add net 2002:7f00::: gateway ::1
add net 2002:0000::: gateway ::1
add net 2002:ff00::: gateway ::1
add net ::0.0.0.0: gateway ::1
IPv6 mode: host
Configuring network interfaces: le0.
add net default: gateway 192.168.0.1
Adding interface aliases:
le0: device timeout
Building databases...
Starting syslogd.
Oct  7 15:18:33 vax /netbsd: le0: device timeout
Checking for core dump...
savecore: no core dump
Mounting all filesystems...
Clearing /tmp.
Checking quotas: done.
Setting securelevel: kern.securelevel: 0 -> 1
Creating runtime link editor directory cache.
Updating motd.
starting local daemons:.
Starting inetd.
Starting cron.
Sat Oct  7 15:19:39 PDT 2023

NetBSD/vax (vax.unknown.anywhere) (console)

login: root
Last login: Thu Sep 21 11:59:11 2023 on console
Oct  7 15:19:52 vax login: ROOT LOGIN (root) ON console
Oct  7 15:19:52 vax login: ROOT LOGIN (root) ON console
Copyright (c) 1996, 1997, 1998, 1999, 2000
        The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

NetBSD 1.5.3 (GENERIC) #5: Mon Jul  1 23:34:54 CEST 2002

Welcome to NetBSD!

Terminal type is vt100.                                                 
We recommend creating a non-root account and using su(1) for root access.
vax#

I do not know NetBSD, but hey lets hack the network config so that the machine will be present in my LAN.

First, I changed /etc/rc.conf file

vax# cat rc.conf
#       $NetBSD: rc.conf,v 1.85.2.9 2001/04/24 22:42:44 he Exp $
#
# see rc.conf(5) for more information.
#
# Use program=YES to enable program, NO to disable it. program_flags are
# passed to the program on the command line.
#

# Load the defaults in from /etc/defaults/rc.conf (if it's readable).
# These can be overridden below.
#
if [ -r /etc/defaults/rc.conf ]; then
        . /etc/defaults/rc.conf
fi

# If this is not set to YES, the system will drop into single-user mode.
#
rc_configured=YES

# Add local overrides below
#

hostname="vax.fritz.box"
domainname="fritz.box"
defaultroute="192.168.178.1"

Next, the host entry in /etc/hosts

vax# cat hosts
#       $NetBSD: hosts,v 1.5.4.1 2000/08/15 14:37:19 itojun Exp $
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# It is used only for "ifconfig" and other operations
# before the nameserver is started.
#
#
::1                     localhost
127.0.0.1               localhost
#
# RFC 1918 specifies that these networks are "internal".
# 10.0.0.0      10.255.255.255
# 172.16.0.0    172.31.255.255
# 192.168.0.0   192.168.255.255

192.168.178.40  vax.fritz.box           vax

After a reboot, the network came up correctly and the machine is present in my LAN.

There is vi. There is no sshd running, neither telnetd. Let’s see what else we have.

vax# curl
curl: Command not found.
vax# bash
bash: Command not found.
vax# wget
wget: Command not found.
vax# gcc
gcc: No input files
vax# gcc -v
Using builtin specs.
gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)

Output of top command:

CPU states:  1.5% user,  0.0% nice,  0.5% system,  1.5% interrupt, 96.6% idle
Memory: 1732K Act, 1776K Inact, 76K Wired, 7776K Free, 22M Swp free

PID USERNAME PRI NICE   SIZE   RES STATE      TIME   WCPU    CPU COMMAND
200 root      28    0   144K  520K CPU        0:01  2.87%  2.34% top
184 root      18    0   380K  280K pause      0:04  0.00%  0.00% csh
95 root       2     0    80K  336K select     0:01  0.00%  0.00% syslogd
179 root      18    0    48K  312K pause      0:00  0.00%  0.00% inetd
182 root      10    0   116K  348K nanoslee   0:00  0.00%  0.00% cron
1 root        10    0   288K  168K wait       0:00  0.00%  0.00% init

Adding another SCSI disk

I added a third SCSI drive via external SCSI connector. This is also recognized as DKB0/RZ8. This one has whopping 2.1GB.

>>> show dev
 VMS/VMB  ULTRIX    ADDR    DEVTYP  NUMBYTES  RM/FX  WP  DEVNAM  REV
 -------  ------  --------  ------  --------  -----  --  ------  ---
 ESA0     SE0     08-00-2B-26-46-99

 DKA0     RZ0     A/0/0/00  DISK      625 MB   FX        IBM  061S11
 DKA100   RZ1     A/1/0/00  DISK      345 MB   FX        7345-SC1761
 ...HostID....    A/6       INITR

 DKB0     RZ8     B/0/0/00  DISK     2.11 GB   FX        DSE21000306    <--- the "new" drive added
 ...HostID....    B/6       INITR  

Adding a Digital DEC TZ88 tape drive

>>> show dev
 VMS/VMB  ULTRIX    ADDR    DEVTYP  NUMBYTES  RM/FX  WP  DEVNAM  REV
 -------  ------  --------  ------  --------  -----  --  ------  ---
 ESA0     SE0     08-00-2B-26-46-99

 DKA100   RZ1     A/1/0/00  DISK      345 MB   FX        7345-SC1761
 ...HostID....    A/6       INITR

 DKB0     RZ8     B/0/0/00  DISK     2.11 GB   FX        DSE21000306
 MKB300   TZ11    B/3/0/00  TAPE    ........   RM        TZ88   D887   <---- the tape drive
 ...HostID....    B/6       INITR

Adding SCSI2SD disks

SCSI2SD SCSI2SD is an approach emulating SCSI hardware with software running in an PSoC microcontroller. More details on SCSI2SD can be found here

After having created two 400MB disks on a 1GB SD card with SCSI2SD hardware, I attached SCSI2SD via DB25 cable at second SCSI controller and switched on the device. The MicroVAX detected both new drives.

 VMS/VMB  ULTRIX    ADDR    DEVTYP  NUMBYTES  RM/FX  WP  DEVNAM  REV
 -------  ------  --------  ------  --------  -----  --  ------  ---
 ESA0     SE0     08-00-2B-26-46-99

 DKA100   RZ1     A/1/0/00  DISK      345 MB   FX        7345-SC1761
 ...HostID....    A/6       INITR

 DKB0     RZ8     B/0/0/00  DISK     2.11 GB   FX        DSE21000306
 DKB100   RZ9     B/1/0/00  DISK      419 MB   FX        RD26   1.0    <--- SCSI2SD disk 1
 DKB200   RZ10    B/2/0/00  DISK      419 MB   FX        RD27   1.0    <--- SCSI2SD disk 2
 ...HostID....    B/6       INITR

Adding a floppy drive

The original drive for the MicroVAX 3100 was the RX23 (3 1/2" Half-height Floppy Disk 1.4 MB) . This is a SCSI floppy drive. I have a Superdisk SCSI floppy drive, and could attach and use this floppy with no issues.

MicroVAX 3100 with Simh

For experimenting with VAX and VAX operating systems, also the simulation by simh can be used. simh allows to mount harddisks, floppies and other stuff from file images and to work with it like having the real hardware.

Build SIMH for VAX

Get SIMH from https://github.com/simh/simh.

Build only VAX incarnations, search for ALL target in makefile and comment all unneeded emulator incarnations.

Then start build with make. Executables are created in directory BIN.

Example simh.ini file to boot from an iso image named vaxcd-2.0.iso on drive RZ1:

set cpu 16m
set cpu idle
att rz1 vaxcd-2.0.iso
;att rz1 NetBSD-9.3-vax.iso
;att rz1 NetBSD-7.0-vax.iso

Then start simh, executable is named microvax3100, boot CPU code (“b cpu”) and then boot from RZ1 drive (“b dka100”)":

dennis@dennis-pc:~/vax> microvax3100 

MicroVAX 3100 M10/M20 (KA41-A) simulator V4.0-0 Current        git commit id: d5cc3406
sim> b cpu
Loading boot code from internal ka41a.bin

KA41-A  V1.6          

F_..E?..D...C?..B?..A...9...8?..7...6...5?..4_..3_..2_..1?..


??  E  0040  0000.0054
 ?  D  0050  0000.0005
??  C  0080  0000.0004
??  B  0010  0010.0020
??  8  0060  0000.0002
??  5  0001  0000.000A
??  1  00C0  0000.1004

>>> b dka100


-DKA100
>> NetBSD/vax boot [1.11 Thu Dec  2 19:05:43 CST 2004] <<
>> Press any key to abort autoboot 0
getdisklabel: no disk label
nfs_open: must mount first.
2490648+155180=0x286130
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 2.0 (INSTALL) #0: Thu Dec  2 19:20:50 CST 2004
        builds@build:/big/builds/ab/netbsd-2-0-RELEASE/vax/200411300000Z-obj/big/builds/ab/netbsd-2-0-RELEASE/src/sys/arch/vax/compile/INSTALL

MicroVAX 3100
cpu: KA41/42
cpu: Enabling primary cache, secondary cache
total memory = 16264 KB
avail memory = 12800 KB
mainbus0 (root)
vsbus0 at mainbus0
vsbus0: interrupt mask 40
si0 at vsbus0 csr 0x200c0080 vec 770 ipl 14 maskbit 1
si0: NCR5380, SCSI ID 6
scsibus0 at si0: 8 targets, 8 luns per target
si1 at vsbus0 csr 0x200c0180 vec 774 ipl 14 maskbit 0
si1: NCR5380, SCSI ID 6
scsibus1 at si1: 8 targets, 8 luns per target
md0: internal 1536 KB image area
scsibus0: waiting 2 seconds for devices to settle...
scsibus1: waiting 2 seconds for devices to settle...
sd0 at scsibus0 target 0 lun 0: <DEC, RZ23     (C) DEC, 0A18> disk fixed
sd0: drive offline
sd0: async, 8-bit transfers
sd1 at scsibus0 target 1 lun 0: <DEC, RZ23     (C) DEC, 0A18> disk fixed
sd1: 101 MB, 1024 cyl, 2 head, 101 sec, 512 bytes/sect x 208000 sectors
sd1: async, 8-bit transfers
sd2 at scsibus0 target 2 lun 0: <DEC, RZ23     (C) DEC, 0A18> disk fixed
sd2: drive offline
sd2: async, 8-bit transfers
sd3 at scsibus0 target 3 lun 0: <DEC, RZ23     (C) DEC, 0A18> disk fixed
sd3: drive offline
sd3: async, 8-bit transfers

// some lines left out

boot device: sd1
root on md0a dumps on md0b
Clock has lost -17479 day(s) - CHECK AND RESET THE DATE.
root file system type: ffs

In this example, I am trying to boot NetBSD 2.0 from CDROM. This fails, the system stays hanging at the line “root file system type: ffs”.

The cool thing is, in reality, on a real machine, this gives exactly same error.