Front End, Back End, Web, Embedded, and More

SIMH AT&T 3B2/400 Emulator
Emulator Screenshot

About

The AT&T 3B2/400 was a small, multi-user UNIX computer developed by AT&T in 1985. It was part of the larger 3B family of UNIX computers based on the Western Electric WE32000 and WE32100 series of CPUs and peripherals. What makes the 3B2 historically interesting was its use as the primary porting platform for AT&T UNIX System V Release 3.

This emulator is part of the SIMH simulation framework, and emulates a standard desktop 3B2/400 with 4MB of system memory and a 72MB MFM hard disk drive.

Since internals documentation for the 3B2 series are not readily available, the emulator was made possible through a reverse-engineering effort, studying the System V Release 3 source code, and lots of caffeine.

Outstanding Issues

This emulator is not yet finished and should be considered beta quality software. There are a few rough edges, and there may be bugs!

The following outstanding issues are not yet addressed:

  1. Dual hard-disk support is currently broken. There are some subtle behavior issues of the hard disk controller that were incorrectly emulated, causing dual disk setups to experience frequent recalibrations. This is a high priority to fix.
  2. Only the Console and CONTTY serial ports are emulated so far. Support for an 8-line PORTS serial card is coming soon.
  3. No network card is emulated yet.

Getting the Emulator

Binary Distributions

File Size Description
3b2 786,816 bytes GNU/Linux x86_64 executable

MD5SUM: 812f36de56c1e1751127bb03de093467
SHA1SUM: e1f9cd25786df79dfe59162cf12b615bab3f9f72
3B2.exe 603,648 bytes Windows XP/7/10 32-bit executable

MD5SUM: f928d313fe61787ec919f340b89d9ef5
SHA1SUM: e23b600228ad5699765a5961b9ee356a3b632389

Compiling from Source on GNU/Linux

The SIMH source repository is here:

https://github.com/simh/simh

If you would like to build the emulator on GNU/Linux yourself:

  1. Clone the SIMH repository above
  2. cd into the simh directory
  3. Type make 3b2

The binary will be built into the BIN diretory.

Exiting the Emulator

To stop SIMH at any time, type the control sequence Control-E. This will return you to the SIMH prompt (sim>), where you can type quit

Simulator IDLE Support

The simulator will use 100% of your free CPU time, unless you enable idling with the command:

sim> set cpu idle

If you do so, after about 20 seconds of running the simulator will start to use much less of your CPU time.

Hard Disk and NVRAM Images

There are several hard disk images to choose from, as well as a pre-generated NVRAM image that you can use.

Image Compressed Size Description
hd_32_base.img.gz 1.4 MB Base System V Release 3 files only (Floppy disks 1 through 6 of SVR3.2)
hd_32_full.img.gz 2.6 MB Above, plus terminfo, editing utilities, sysadmin utilities, and user utilities (Floppy disks 1 through 15 of SVR3.2)
hd_32_full_cprog.img.gz 4.3 MB Above, plus Software Generation and C Programming utilities (Floppy disks 1 through 26 of SVR3.2)
nvram.bin 4KB Non-Volatile RAM image (optional)

Download the file you want, uncompress it, and attach it to the running simulator with the command:

sim> attach id0 <filename>

Additionally, an NVRAM file is provided. You don't really need this, you can use a new blank file instead, but it's here as a convenience.

Booting

To boot the simulator, type:

sim> attach nvram nvram.bin
sim> attach id0 hd_32_full.img
sim> boot cpu

You will see the message:

SELF-CHECK

DIAGNOSTICS FAILED


SYSTEM FAILURE: CONSULT YOUR SYSTEM ADMINISTRATION UTILITIES GUIDE

Note that if you see the message "NVRAM SANITY FAILURE...", it just means you didn't attach the NVRAM image. That's fine. A real 3B2 does the same thing when the battery has gone bad and the NVRAM contents are empty. A new NVRAM is initialized for you with default vales and the next time you boot with the nvram.bin file, you should not see that message again.

The "SYSTEM FAILURE" line is actually an invisible password prompt!

Type the password mcp and press Enter.

When prompted with Enter name of program to execute [ ]: type unix and press enter.

When prompted for which option and slot to load unix from, type 1 and press enter. Now UNIX will boot.

The root user has no password, so have fun.

Some Things To Be Aware Of

Using SVR3

If your only experience with UNIX-like systems is through modern Linux, you should be aware of a few things.

First, SVR3 is not loaded with fancy utilities like Linux. The base 3B2 installation doesn't even come with man pages (there isn't really room for them on a 72MB disk, anyway)

Second, you don't (by default) get a backspace character. That's not a problem with the emulator, that's really how SVR3.2 works. If you want to delete a character, you have to type the pound / hash symbol (#). And if you want to delete the whole line and start again, you have to press the at symbol (@).

Shutting Down

Don't forget to shut down cleanly. Type:

# shutdown -i0 -g0 -y

Installing SVR3.2 From Scratch

If you're feeling particularly adventurous, you can create a new blank hard drive image and low-level format it using the IDTOOLS floppy, then proceed to install SVR3.2 from scratch.

The IDTOOLS floppy image is here:

Image Size Description
idtools.img 720 KB IDTOOLS (Integrated Disk Utils) and DGMON (Diagnostic Monitor)

Instead of attaching the hard drive image above, just attach a new file. A blank hard drive image will be created by SIMH.

Then, boot off of the idtools.img floppy.

sim> attach id0 new_blank_hd.img
sim> attach if0 idtools.img
sim> attach nvram nvram.bin
sim> boot cpu

At the "SYSTEM FAILURE" prompt, enter the password mcp and press enter.

Then at the Enter name of program to execute [ ]: prompt, enter idtools, then select the floppy drive.

Once idtools is running, you'll see the following menu:

    ---------------------   IDTOOLS   ---------------------

       Floppy diskette formatter - type formflop
             Hard disk formatter - type formhard
                Hard disk verify - type verify
    Disk to disk copy high speed - type ddhs
     Disk to disk copy by sector - type dd
              Disk <--> mem copy - type d-m
            Defect table builder - type defect
              Write sanity track - type fixdisk
            Change boot defaults - type chgboot
                            Quit - type q

    Command?

Type formhard, then select disk 0

For parameters, enter the following:


   Current config table values:
              Drive Id:    2 - ? 5
      Number cylinders:  306 - ? 925
       Number tracks/cyl:  4 - ? 9
    Number sectors/track: 18 - ? 18
   Number bytes/sector:  512 - ? 512

You can really just skip all the annoying bad block stuff. You'll have to press Enter a lot.

Finally, select Format entire disk - type 1

The disk image will be low-level formatted and verified, and a sanity track will be written.

Installing SVR3.2

I will largely leave this as an exercise for the reader. The basic procedure is to boot unix from the first floppy disk, and then follow the prompts to install the Essential Utilities floppy disks 1 – 6. After the Essential Utilities are installed, you can reboot off the hard disk id0 and proceed to install additional products with the sysadm command.

All of the SVR3.2 floppy images can be found here.

Image Size Description
01_Essential_Utilities_1.img 720 KB Essential Utilities (Disk 1)
02_Essential_Utilities_2.img 720 KB Essential Utilities (Disk 2)
03_Essential_Utilities_3.img 720 KB Essential Utilities (Disk 3)
04_Essential_Utilities_4.img 720 KB Essential Utilities (Disk 4)
05_Essential_Utilities_5.img 720 KB Essential Utilities (Disk 5)
06_Essential_Utilities_6.img 720 KB Essential Utilities (Disk 6)
07_Directory_and_File_Management.img 720 KB Directory and File Management Utilities
08_User_Environment.img 720 KB User Environment Utilities
09_System_Administration.img 720 KB System Administration Utilities
10_Terminfo_1.img 720 KB Terminal Info Utilities (Disk 1)
11_Terminfo_2.img 720 KB Terminal Info Utilities (Disk 2)
12_Editing.img 720 KB Editing Utilities
13_Basic_Networking_1.img 720 KB Basic Networking Utilities UUCP (Disk 1)
14_Basic_Networking_2.img 720 KB Basic Networking Utilities UUCP (Disk 2)
15_System_Header_Files.img 720 KB System Header Files
16_Software_Generation_1.img 720 KB Software Generation Utilities (Disk 1)
17_Software_Generation_2.img 720 KB Software Generation Utilities (Disk 2)
18_Software_Generation_3.img 720 KB Software Generation Utilities (Disk 3)
19_Software_Generation_4.img 720 KB Software Generation Utilities (Disk 4)
20_Software_Generation_5.img 720 KB Software Generation Utilities (Disk 5)
21_Software_Generation_6.img 720 KB Software Generation Utilities (Disk 6)
22_Extended_Software_Generation.img 720 KB Extended Software Generation Utilities
23_C_Programming_Language_1.img 720 KB C Programming Language Utilities (Disk 1)
24_C_Programming_Language_2.img 720 KB C Programming Language Utilities (Disk 2)
25_Advanced_C_Utilities.img 720 KB Advanced C Utilities
26_Source_Code_Control.img 720 KB Source Code Control Utilities

Other Software

The files below include everything required to get your AT&T 3B2 online. The Network Service Utilities are required before installing the Wollongong TCP/IP driver stack.

NOTE: These files do NOT work with the emulator (yet!) because the emulator does not emulate an NI ethernet card (yet!). They're here in case they're useful for your real 3B2.

Image Size Description
ni.img 720 KB NI Ethernet Card Driver Version 1.1 Diskette
nsu_11.img 720 KB Network Service Utilities Version 1.1 Diskette (note: for use with SVR 3.0 only)
nsu_32.img 720 KB Network Service Utilities Version 3.2 Diskette (note: for use with SVR 3.2 and 3.2.2 only)
tcp_1.img 720 KB Wollongong Integrated Networking WIN/3B (TCP/IP) Release 3.0.1, Disk 1
tcp_2.img 720 KB Wollongong Integrated Networking WIN/3B (TCP/IP) Release 3.0.1, Disk 2
tcp_3.img 720 KB Wollongong Integrated Networking WIN/3B (TCP/IP) Release 3.0.1, Disk 3
tcp_4.img 720 KB Wollongong Integrated Networking WIN/3B (TCP/IP) Release 3.0.1, Disk 4
tcp_5.img 720 KB Wollongong Integrated Networking WIN/3B (TCP/IP) Release 3.0.1, Disk 5
tcp_6.img 720 KB Wollongong Integrated Networking WIN/3B (TCP/IP) Release 3.0.1, Disk 6