Archive for the ‘Pascal MicroEngine’ Category

Western Digital Pascal MicroEngine, an Update

February 16, 2020

Yesterday, I received a 2nd MicroEngine board, unfortunately in a worse state than my first one. Also, probably an earlier patch level as there is less patch cableing on the board. Nevertheless, nice to have.

Also, if you look for images for boot floppy disks, you can find them under

Western Digital Pascal MicroEngine WD900

May 1, 2014


The WD-900 is the main board of a very rare computer whose CPU can execute P-Code (compiled from Pascal) directly. Before I come back to this computer please allow me a short detour 🙂 .

There are few computer architectures that aim at executing code that is closer to a certain programming language directly on the CPU. And none of them were successful in the sense that they sold to a larger extend because simply the technical progress on CPUs that do not have to obey such restrictions is faster than for these special CPUs. As a result, executing the programming language on general CPUs of the next generation is faster than doing it on the special CPU.

The list of programming languages for which such special CPUs exist(ed) is rather short:

  • Lisp (starting in 1975)
  • Forth (starting in the early 80s)
  • Prolog (starting in the 80s; research level only)
  • Java (starting in 1996)

Lisp machines did have some commercial success, but vanished in the early 90s.

Prolog machines never came out commercially although their development was one of the promises of the Fifth Generation projects.

Forth is considered by some not so much a high-level programming language, but something very close to computer hardware. There are still some interesting Fort CPUs products, so it’s probably more the low interest in Forth that leads to a low interest in Forth hardware (don’t get me wrong – I love Forth).

In contrast to that, Java is a high-interest programming language. Now, Java does not need to be executed directly on a CPU as it is often compiled into “Bytecode” anyway. Bytecode is a stack-oriented language like Forth. Of course, in contrast to Forth Java supports e.g. objects, but the principle is the same. Bytecode is a much simpler language than Java and better suited to be executed in hardware.

Now, the concept of Bytecode was not invented by Java. It existed long before Java, notably as the runtime system of UCSD Pascal, and now we are back at the WD-900.

In 1979, Western Digital, then a manufacturer of CPU and controller chips, looked for another use case of their MCP-1600 micro-coded, multi-chip microprocessor consisting of 3 types of chips:

  • CP1611 RALU – Register ALU chip
  • CP1621 CON – Control chip
  • CP1631 MICROM – Mask-programmed microcode ROM chip (512 – 22 bit words)

The main use of this CPU was as the processor in DECs LSI-11 computer, a compact, integrated version of the PDP-11 minicomputer. As the CPU was micro-coded and as the microcode was stored in one or more separate chips, it was easy to let the CPU execute a different command set by switching the microcode storage chips.

So what they did was to change the microcode to directly execute “p-code”, the bytecode of UCSD Pascal (of course, also p-code is a stack-oriented language). To that end they developed the WD-9000 chip set consisting of

  • CP2151 Data chip (was no different from the CP1611 of the MCP-1600 chipset and could be interchanged)
  • CP2161 Control chip
  • 3 CP1631 MICROM chips

The difference was in the CP2161 control chip (and of course the MICROMs).  Though the CP2151 contained multiple registers, but as the the p-code implementation was a pure stack machine, it did not use the registers.

In 1979, the competition were mainly 8bit machines. As a result, the MicroEngine outperformed e.g. a Z80-based machine at the same clock speed by almost a factor of 10. Of course, later 16bit machines like the 68000-based HP9836 (at 8 MHz, sold from 1981 for $11950) were faster by a factor of 3. Also, the performance advantage was eroded by the later availability of p-code to native machine code compilers.

The WD-900 board that I own is reportedly a New Old Stock board bought as a spare for a WD-90 computer that never has been used. It is boxed. The WD-900 board contains all the electronics: the CPU, RAM, serial interfaces and a floppy disk controller (WD1791/2) for two disks.

The WD-90 system contained a WD-900 board and a power supply. The (up to two) floppy disk drives needed to be attached externally.

The first boards shipped were poorly designed (power and ground traces the same size as signal traces, very few capacitors), required a large number of modifications, and even then did not work reliably. A couple of years would pass after introduction before a well-engineered MicroEngine was available. Between a damaged reputation and the introduction of the IBM PC, in the end the MicroEngine was not successful. You can see the lack of craftsmanship in the board design very clearly if you have a closer look on the photo of my board. Many patch wires, additional components and hand-soldering on a New Old Stock board…

The MicroEngine series of products was offered at various levels of integration:

  • WD-9000: five chip microprocessor chip set
  • WD-900: single board computer ($2995)
  • WD-90: packaged system ($5000)
  • SB-1600: MicroEngine single board computer
  • ME-1600: Modular MicroEngine packaged system

Technical Data:

  • CPU: WD-9000@ 3.0 MHz
  • RAM: 64 kB (32k 16bit words)
  • Interfaces: 2 x RS232, 2 x parallel (i.e. floppy disk)
  • Released: 1979
  • Initial price: $2995