# Pascal MicroEngine

Pascal MicroEngine is a series of microcomputer products manufactured by Western Digital from 1979 through the mid-1980s, designed specifically to run the UCSD p-System efficiently. Compared to other microcomputers, which use a machine language p-code interpreter, the Pascal MicroEngine has its interpreter implemented in microcode; p-code is its machine language. The most common programming language used on the p-System is Pascal.
The MicroEngine runs a special release III p-System. The enhancements of release III were incorporated into release IV which was made publicly available for other platforms but not for the MicroEngine.

## Products

The MicroEngine series of products was offered at various levels of integration:
* WD-9000 five chip microprocessor chip set
* WD-900 single board computer
* WD-90 packaged system
* SB-1600 MicroEngine single board computer
* ME-1600 Modular MicroEngine packaged system
The MicroEngine chipset was based on the MCP-1600 chipset, which formed the basis of the DEC LSI-11 low-end minicomputer and the WD16 processor used by Alpha Microsystems (each using different microcode).
One of the well regarded systems was the S-100 bus based dual processor cards developed by Digicomp Research of Ithaca, NY. These cards deserve an entry on their own, as they survived the demise of the WD single-board system and delivered reliable performance at up to 2.5Mhz. A typical configuration was a Digicomp dual processor board set, containing a Zilog Z80 and a bipolar memory mapper harnessed to a microengine chipset on the second board, linked by a direct cable. The sole configuration known to be still running in 2018 and documented on the web is described by Marcus Wigan and contains 312 kB of memory, RAM disc support through a modified Z80 BIOS (written by Tom Evans) taking advantage of the memory mapping chip on the Z80 board, and using the UCSD Pascal III version of the operating system tuned specifically for the WD chipset - once the Microengine had booted the ram-disc was available. A software facility within UCSD Pascal allowed the system to copy the entire operating system to the ram disc and transfer control to it. This sped it up remarkably. This use of a Z80 BIOS to handle all the devices, allowed the use of a range of floppy discs, I/O boards and hard disk controllers.
The performance of this Microengine on a series of simply Interface Age benchmarks (originally designed for BASIC programs) is documented in an Australian Computer Society, MICSIG, paper presented at the National Conference on Microcomputer Software, Canberra, ACT presented in June 1982, along with a wide range of other contemporary machines and compilers, including Z80 systems supported by the 9511 APU chip hosted in the Digicomp S-100 Microengine system that he used.

## Reception

At the time of introduction, the only competitors were 8-bit processors (mainly Intel 8080, Z80, and MOS Technology 6502 based systems). The MicroEngine could compile Pascal source code in a fraction of the time (typically about 1/10) required by contemporaries. Fast compilation made the MicroEngine especially nice as a developer's machine, and the inclusion of a semaphore primitive in the microcode was particularly useful for multi user enhancements, which were developed in Melbourne for the Canberra Australia-based Ortex Company, extended to be a multiuser system and often sold with a bundled pharmacy management system, also delivered on the Sage IV computers under UCSD Pascal IV and enabled as a multiuser system using the Sage multiuser BIOS rather than by extending UCSD Pascal IV to add a semaphore. This performance advantage was eroded by the later availability of p-code to native machine code translators, and mainstream 16-bit microprocessors such as the Intel 8086 and Motorola 68000.
When details of the MicroEngine were first released, the system accumulated a very large number of pre-orders (for the time). 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 only modestly successful.
A further example of a commercial product based on the MicroEngine was the AVAB Viking lighting control system, which used the Modular MicroEngine boards along with some custom hardware.

## Other languages

A group led by David A. Fisher developed the third validated Ada compiler using the Modular MicroEngine. for version 17.1 of the Ada verification system then in use. This compiler was later transferred to mainframe/minicomputers under the name of GenSoft Ada, and ran in an emulator of the Microengine under the MicroEngine-specific UCSD 3 operating system. Copies of the Prime computer version are known to be held by M R Wigan, who also holds a zero price licence for the full MicroEngine Ada system and UCSD 3 Operating system used for the Modular Microengine, as well as the three Modular MicroEngines used to create the 17.1 Ada, and all the development 8" floppy discs.
Ada was the only other full programming language available. John Lloyd of the University of Melbourne created an early version of his Prolog for this system and both Basic and Fortran 77 compilers were ported from other UCSD P-system implementations at various times, but not widely distributed.
Due to limited memory (62K 16-bit words, the last 2K words being reserved for memory-mapped I/O and PROM for the hard disk bootstrap code) only very small Ada programs could be compiled. At one point in the compilation the compiler swapped the operating system out to disk, to gain just a little more room.
"A(da" replaced "A(ssmble"
on the main command menu. No native assembler was available or needed. This UCSD-based Ada was later redeveloped for the Sage 4 by TeleSoft in San Diego.