Wang 3300

B&W picture of Wang 3300 CPU

Here are some links to the sections of this page:

Note: this page is wildly out of date. I know a lot more about the 3300 now than when this page was written in 2002, and the information here doesn't reflect that. I've removed some of the specific errors that used to be here, but the new information won't be available until a complete page overhaul, coming any year now.

The Wang 3300

Before Wang made the incredibly successful 2200 series of computers, they had attempted the job at least twice before, with the Wang 4000 Computer System and the 3300 BASIC computer. Where one draws the line between their programmable calculators and their calculating computers is debatable.

Rick Bensene has done a tremendous job of documenting the Wang timeline, starting at their calculators, turning up a lot of great information on the "4000" system as well as the "3300 BASIC" system, which is also described here. If you want to see a bigger picture, as well as alternate information on the 3300, please read what Rick has written.

In June 1968, Wang bought out Philip Hawkins Incorporated (PHI), a mainframe data processing services supplier. Wang was interested in them for their software expertise as well as the fact that they owned an IBM 360/65. This powerful mainframe played an important role in the development of the 3300.

After acquiring PHI, Wang moved quickly. They kicked off two computer designs with in a few months. Although both were intended as general purpose CPUs, one of them ended up getting diverted into being a super calculator instead of an inexpensive computer. This became known as the 700 series of programmable calculators, a tremendously successful and important product for Wang. The other machine, which ended up being named the 3300 BASIC computer, was aimed directly at the PDP-8 customer.

While the hardware design of the 3300 progressed, the software group was busy simulating their software creations on their IBM 360 system, via a software simulation of the 3300 hardware. According to Wang's press releases of the time, the early experiences of writing code for the simulated machine directly lead to changes in the 3300's hardware design. Besides having a BASIC interpreter, the system had an assembler, a loader, and diagnostic software. Wang also envisioned a library of applications to run on the machine that could be a source of continuing revenue. The software applications manager was Bob Kolk, who would later become the project lead for the first generation 2200 family.

Although the 3300 design got off to a quick start, the product was late getting to market. The product was announced and orders were taken in the spring of 1970, although it was almost a year before any units actually shipped. It didn't matter much because the system didn't sell well.

3300 System Configuration

The 3300 was a modular system. Although the minimum configuration was for one user, the machine was most cost effective when used in timesharing mode, since most of the cost could be amortized over all the users. Up to 16 users could be accommodated with one CPU, and a system could have up to 64 KB of RAM. I/O was performed using modified IBM Selectric typewriters. Optionally, teletype consoles could be used instead.

According to the press of the time, the line item costs were as follows:

Item Unit Cost
CPU + 4KB RAM $4,950
4KB RAM expansion $2,500
Selectric terminal $4,200
Terminal control unit $500
Cassette storage $1,400
BASIC software and system setup $1,500

Besides the cassette storage, 64KB disk and 0.5 MB disk storage was promised for future delivery. It took a while for that to appear, so early users were stuck loading system software via paper tape. This became a major sore point. Loading BASIC was a multi-step process, requiring toggling in a tape boot loader by hand, loading a bootstrap loader from paper tape, then loading the BASIC interpreter from paper tape. It took on the order of 40 minutes to get the interpreter running. Then came the process of loading the BASIC program itself, if required.

Tom Lake, a user of the 3300, says that the cassette tape option showed up in 1972, but it wasn't reliable enough for common use.

The base 3300 configuration was to have the CPU, 12 KB of core memory (three 4 KB boards), two Selectric terminals, a terminal control unit (suitable for controlling up to four Selectrics), cassette storage, and BASIC software, all for a total cost of $17,550. There was an option to do without cassette storage for $15,200.

3300 Front Panel

Like all good minicomputers (and even early microcomputers), the 3300 had a front panel with a lot of indicator lights and switches. Besides looking whizzy, they were useful for debugging and for doing an initial program load (i.e., a tiny program that tells the computer how to load a much larger program off of the paper tape.)

diagram of 3300 front panel

Although programmed primarily via the BASIC language, the 3300 was a general-purpose machine. The user visible state of the machine appearsed almost entirely on the front panel. Those fields were:

  • A, an 8b register; the primary accumulator
  • Z, an 8b register; primarily the ms 8b of the 16b ZA accumulator
  • S, an 8b register; holds the usual collection of status flags
  • BC, a 16b register; the program counter
  • M, an 8b register; 8b of data to or from memory

3300 BASIC Syntax

There were a number of released of BASIC for the 3300. The first version, described here, lacked alphanumeric variables and supported only the simplest BASIC dialect.

Verbs

  • COM
  • DATA
  • DEF
  • DIM
  • END
  • FOR
  • STOP
  • GOSUB
  • GOTO
  • IF
  • INPUT
  • LET
  • NEXT
  • PRINT
  • READ
  • REM
  • RESTORE
  • RETURN
  • TRACE

Functions

  • ABS
  • AND
  • ATN
  • BOOL
  • COS
  • EXP
  • INT
  • LOG
  • OR
  • RND
  • SIN
  • SGN
  • SQR
  • TAN

Commands

  • LIST
  • LOAD
  • RERUN
  • RESTART
  • RUN
  • SAVE
  • START

In 3300 BASIC, each variable was a single precision floating point number, represented in memory by five bytes. One byte held the sign of the mantissa, the sign of the exponent, and a six bit exponent magnitude; the other four bytes held eight normalized BCD digits. The maximum representable number was +/- 9.9999999E+63. The smallest non-zero number was +/-1.0000000E-63.

The BASIC interpreter was written within PHI. An Wang's book credits Dave Moros as the author of the microcode that implemented it. Wang further says that this code was recycled to become the 2200's BASIC. This isn't literally true: the 3300 instruction set was very different than that used by the 2200. What is true is that the architecture of the 2200 Wang BASIC interpreter was very closely modelled on the 3300's, to the point that they shared some of the same bugs.

In 1971, Wang released an updated version of BASIC, called Extended BASIC. This added some support for alphanumeric variables and added a host of matrix operations (MAT statements). Being a more capable interpreter, Extended BASIC ate up more memory, leaving less for each user.

3300 Instruction Set

The 3300 press releases provided some high-level description of the CPU's capabilities. The CPU had one accumulator register (A), a single accumulator extension register (Z), and one addressable status register (S). Other information in the press releases are:

  • 72 instructions
  • 21 addressing modes
  • 9 addressing modes, including auto-increment/auto-decrement indirect addressing mode.
  • 6 arithmetic instructions that operate in both binary and decimal mode.

Five addressing modes are:

  • in page
  • absolute page 0
  • absolute page 1
  • immediate
  • indirect

In auto inc/dec indirect addressing mode, the indirect address is decremented before and incremented after single or double byte memory transfers. This essentially provides an unlimited number of index registers.

While the cycle time was 1.6 usec (probably determined entirely by Wang's core memory cycle time), individual instructions look a few cycles to execute.

  • 4.8 usec for an 8b binary or BCD add
  • 6.4 usec for a 16b binary or BCD add

The CPU had a general purpose I/O bus, which was capable of addressing 128 devices. It also had a DMA channel controller, capable of up to 300,000 cps transfer rates. This greatly exceeded what the first generation 2200 systems could do.

Sources

The information presented here was collected from a few sources:

  • Riding the Runaway Horse, by Charles C. Kenney

    This book doesn't contain very many technical details.

  • Lessons, by Dr. An Wang

    While rich in technical details, some have called into question the accuracy of Dr. Wang's recollections.

  • Wang 3300 brochure
  • Some press clippings
  • Rick Bensene's web site
  • Discussions with Steve Witham, a former 3300 user
  • Discussions with Tom Lake, a former 3300 user
  • Discussions with Mark Crispin, a former 3300 user

If you have any information on the Wang 3300 family (manuals, instruction set, schematics, sales literature, etc.), or you worked at Wang at the time, please get in contact with me. I'd like to learn more about the machine.