SPARCstation IPC

The SPARCStation IPC (Model Number 4/40), codenamed Phoenix, was the first in the line of lunchbox SPARCstations based on the sun4c Sparc architecture.  It was released in July of 1990. It’s clamshell design made for a compact system that fit nicely on the desktop without consuming the entire desktop.

Acquisition

I acquired this IPC via eBay from a Sun salvage guy on March 11th 2021.  It arrived in nearly perfect condition with a 424Mb hard drive and Sun OS 4.1.2 installed.  Upon booting the IPC, and examining the syslog, I found that in its past life it was named Salisbury, and the last time it had been booted up was January 7th, 1995, about 26 years, 2 months earlier.  There was one user configured - a fellow named Mitch Mathena. I tried reaching out to a likely candidate on LinkedIn but did not get a response.

Configuration

The SPARCstation IPC incorporates a single 25 MHz Fujitsu MB86901A or LSI L64801 processor. This IPC has an LSI chip.  IPC’s have twelve SIMM memory slots, in three 4-slot groups. Each group of 4 slots can be filled with either four 1MB SIMMs or four 4MB SIMMs, for a maximum of 48MB of RAM memory.  My IPC arrived outfitted with 48M of RAM.

The SPARCstation IPC can hold one internal 3.5", 50-pin, single ended, fast-narrow SE SCSI disk drive and a 3.5" 1.44MB floppy drive. Both are mounted in the top cover of the case. The hard disk slot supports taller drives than the 1 inch format that became standard later. It also supports external SCSI devices. The largest hard disk shipped by Sun with the IPC was 2.1GB drive.  When I replaced the hard drive with a SCSI2SD board, I built a custom 3D printed SBus plastic board and mounted the SCSI2SD to it for access to the SDCard , making it easy to change out or backup the SDCard occasionally without opening the shell. The original floppy drive was stored on the shelf for future needs.

In the page banner photo above, the IPC is shown with the Sun Voyager Keyboard. The Voyager was a portable (luggable?) that Sun produced a few years later with a built in LCD display. I would love to find one one day, but when I saw the keyboard come up on eBay i had to buy it. It registers as a type 5 keyboard and technically doesn’t work well with the IPC due to ROM incompatibility (the arrow keys don’t work). But in a case of form-over-function I thought it looked great with the IPC. It does however work fine with the IPX and SPARCstation 10 in my collection.

TimeKeeper Update

Like most SPARCstations, this one arrived with a faulty Timekeeper chip. The timekeeper chip is a M48T02 that contains a real-time clock, battery, and battery backed NVRAM. This chip, when programmed, also holds the machine’s Ethernet address, system type, and system serial number. When replaced, it is necessary to reprogram 16 bytes of static memory in the chip to return the system to full functionality. You do this via commands at the OpenBoot prompt. Generally, you don’t know the original Ethernet address so you have to make one up, which creates no problems in practice, but if you have several workstations you have to keep track of ones you have used and be careful to reuse them on the same network. I randomly chose an address from a block apparently owned by Canon, as my network monitor seems to believe my SPARCstation is a Camera!

Procedure for reseting IDPROM values on a Sun Workstation

Hard Drive Replacement

I exclusively use ZuluSCSI RP2040 cards in my workstations. Initially, about half of my systems were equipped with SCSI2SD V6 cards, which worked great. However, during the pandemic, parts for those cards became nearly impossible to obtain. Toward the end of the pandemic, ZuluSCSI cards were introduced to the market, offering significant improvements.

One of the main enhancements is the use of standard files for disk images. This was a game changer, making it much easier to back up and share images.

You can read more about how I use and configure ZuluSCSI here. The setup is generally the same across all my workstations. For many, such as IPC, I add a daughter card that I designed to replace the green power LED with a bi-color LED. This modification results in a green LED when the system is powered on, and the LED changes to blue when the disk is accessed.

It’s nice to have a visual indication when the disk is being accessed, especially since we’ve come to expect instant results from our computers. However, these systems were released back in a time when disk access took a bit longer!

Link to my bi-color LED daughter card

Operating Systems

Sun IPC’s were generally released with SunOS 4, the last of the SunOS branded OS’s based on 4.3BSD with System V IPC.  Later boxes were released with the Solaris OS.

The IPC can run a variety of OS’s including SunOS 4.0.3c onwards, Solaris 2.0 to Solaris 7, some distributions of Linux, NetBSD/sparc32 since 1.0, OpenBSD up to 5.9.  My goal was to install SunOS 4.1.x on the IPC, as I felt it was the most period correct OS and the one I used back at NASA in the Sun glory days.

Setting up the first 800Mb of the card to be a SCSI CDROM drive (SCSI Device 3, as is common with SPARCstations) allowed me to easily copy new CD ISO images to the card at offset zero. This can technically be anywhere on the card but then you need to keep track of the byte offset when copying another image onto the card later. Once the image is copied, I was able to boot the image from the OpenBoot prompt with “boot cdrom”.

Before installing the OS, you need to label the disk (basically formatting and partitioning the simulated hard disk).  This was the second portion of the SDCard that I set to be a 2.1Gb Sun Disk, the largest Sun size disk sold at the time and plenty of space for my needs.  The installation in the end went well, but it took a few tries to get correct.  After installation I could boot from the “Ok” prompt as expected with Ok “boot disk,” and with the TimeKeeper repair could setup the SPARCstation IPC to now automatically boot.

TGX+ Graphics

The world we live in is now is dominated by LCD displays, and Sun’s default resolution of 1152x900 does not fit neatly into any default pixel resolutions of common LCD monitors (even Sun’s). In order to solve this problem, I decided to get a TGX+ Graphics board so I could display the workstation output at 1280x1024. This was nice addition, and these cards are reasonably easy to come by through resellers. Sun produced a staggering number of Sbus graphics cards labeled “cgsix” at various resolution, refresh rates, and frame buffering. I found through trial and error that that cgsix TGX+ board is fine for my needs. It supports the resolution I need (still at 8bit color) and only takes up a single Sbus slot. It was a snug fit next to my 3D printed Sbus SCSI2SD carrier card, but it works out fine.

Account Setup and Default Shell

The SunOS 4.1.3 default user shell is sh. For anyone that regularly uses Unix/Linux machines, the lack of shell tab completion is a non-starter. I decided to try and find an older tcsh source that would compile with the SunOS compiler. The default C compiler for 4.X was a K&R compiler that did not require function prototypes. I could have found a new tcsh or any shell for that matter, but i decided to keep it period correct. I ended up finding an early version to tcsh source that would work and compiled if from source. Much to my relief it works great!

OpenWindows vs X11R7

Back in the 80’s, I was never an OpenWindows fan.  It “looked” ok, but I found the UI paradigm strange, so I always ran straight X11R5.  I wrote a lot of X Windows code on that box and traversed up the layers of Xlib, Xt, and finally Xm, that I bought through Metro Link. I ended up writing a full commercial app using that stack and I remember it fondly. Of course later, Motif was included in CDE environments that included CDE, which I think was everyone.

After getting this IPC running, I decided to install X11R6.  All I could find was the X11 source on the Internet, so I compiled it from source.  It took around 4 hours to compile and worked like champ the first time.  I elected to set up the twm window manager (its legend now what that stands for) which is minimal but super fast and a staple of the X11R7 era.

Network and DNS Setup

The Sun Lunchbox computers don’t take 10baseT ethernet natively. Instead, you need to get an Ethernet AUI adaptor. You can buy these new or used at a variety of price points. I chose to buy a new one from Blackbox. Setup of IP address and default route was reasonably easy and completely manual as things were back then. For anyone that has used an AUI adaptor you probably remember the goofy connector that “sort of" locks onto the computer, then provides a 10baseT (or whatever) on the other end. The “lock” doesn’t work, never worked, and is just a pain to use. But, thats what we are working with here. Same mess with my recently acquired SGI Indigo.

The real struggle came when it came time to setup DNS. In this area of Sun, the focus was on Yellow Pages/NIS. This was an over-complicated name resolution system that just kinda sucked. It’s an example of a community of software engineers trying to solve a problem in a too complicated way, and it eventually failed. Anyway…

My experience with workstations really started when I worked at NASA. I recall at the time that Sun was focused on NIS and NASA, and as I recall many Universities had no interest in a proprietary name resolution system. As a result, these organizations refused to support NIS lookups and demanded DNS name resolution. Sun, not wanting to break with their decided upon standard at the time, supplied an alternate library archive that the customer could patch libc with to provide DNS name resolution. This allowed all the programs that used the libc library (which was all of them) to use DNS for name lookups rather than the brain-dead NIS system. This was “kind-of” listening to your customer in 1991.

I ultimately found the instructions on how to do this in a usenet thread where the University of Colorado Boulder (in my own back yard) described a procedure of opening the libc library, deleting a few functions, then adding replacement functions of the same name from the alternate archive not dependent on NIS. After replacing those and adding the required /etc/resolv.conf file. DNS name lookup worked like it works today.

The procedure to patch libc in SunOS 4.1

Editor Setup

My standard editor for nearly any OS is uEmacs (ie, micro emacs).

I started using uEmacs back in 1988 or so and I have never looked back. Its super fast and just works for what I do. It’s basically my “vi” without all the brain damage. I know just enough vi to get an account setup on a box and compile uEmacs.

It’s one of the most portable editors available in source code. There are several derivatives out there, and after restoring many systems from different era’s, I decided to quit fighting the different source trees and standardized on a version that I have put together starting with the 3.9 Linus Torvolds version on GitHub. (Yes, the Linux Linus).

My version has my own additions, dependent on OS version, but works really nice on old machines and my modern Macs. Every time I changed jobs in my career, the first few days was compiling this editor on whatever machine was next, HP, AIX, DOS, Windows, whatever!

Final Thoughts

A SPARCstation IPC was the first workstation I used on a regular basis at NASA, where I worked in the 80’s.  In fact, I bought an IPC to write code at home. When everyone else had a PC or Mac, I had an IPC.  It was an innovative time in computers, and the IPC was for me a glimpse of the future of how personal computers should work.  So glad I took on the challenge.