# IMLAC

IMLAC Corporation was an American electronics company in Needham, Massachusetts, that manufactured graphical display systems, mainly the PDS-1 and PDS-4, in the late 1960s and 1970s.
The PDS-1 debuted in late 1969 at that year's Fall Joint Computer Conference. It was the first low-cost commercial realization of a highly interactive computer graphics display with motion. The PDS-1's initial selling price was $9450 for single units, and down to $6545 per unit in larger quantities. The PDS-1 was functionally similar to the much bigger IBM 2250, which cost 30 times more. It was a significant step forward towards computer workstations and modern displays.
The PDS-1 consisted of a CRT monitor, keyboard, light pen, and a control panel on a small desk with most electronic logic in the desk pedestal. The electronics included a simple 16-bit minicomputer, 8-16 kilobytes of magnetic-core memory, and a display processor for driving CRT beam movements. By 1971 a mouse for the PDS-1 was available.
IMLAC is not an acronym, but is the name of a poet-philosopher from Samuel Johnson's novel, The History of Rasselas, Prince of Abissinia.

## Timeline of products

* 1968: Imlac founded. Their business plan was interactive graphics terminals for stock exchange traders, which did not happen.
* 1969: PDS-1 introduced for the general graphics market. First units delivered late that year.
* 1970: PDS-2 introduced. It consolidated all of the PDS-1's circuitry into the desktop display unit.
* 1972: PDS-1D introduced. It was similar to the PDS-1 with improved circuits and backplane.
* 1973: PDS-4 introduced. It ran twice as fast and displayed twice as much text or graphics without flicker. Its display processor supported instantaneous interactive magnification with clipping. It had an optional floating point add-on.
* 1974: PDS-1G introduced.
* 1977: A total of about 700 PDS-4 systems had been sold in the US. They were built upon order rather than being mass-produced.
* 1978: Dynagraphic 3205, 6210, and 6220 introduced. They were designed to be used mainly by a proprietary Fortran-coded graphics library running on larger computers, without customer programming inside the terminals.
* 1979: Imlac Corporation acquired by Hazeltine Corporation, a maker of text-only terminals.
* 1981: Hazeltine's Imlac Dynagraphic Series II introduced. It was designed to be compatible with SIGGRAPH's CORE 1979 3D graphics library standard. Its cost was $9000 in OEM quantities. It had 2Kx2K resolution,192 kilobytes of RAM, and an 8086 microprocessor, all inside the monitor unit.
The DEC GT40 had a similar design and price point to the PDS-1D. Its desktop electronics were more compact and used a mass-produced PDP 11/05 board set as its local minicomputer. This automatically gave it a much bigger set of programming tools, but it too was usually driven by applications running on larger PDP systems.

## Refreshed vector display

The monitor was a 14-inch monochrome vector display, continually refreshed from local memory. Its normal resolution was 1024 by 1024 addressable points, and 2K x 2K in small-font scaling mode. The CRT electron beam moved freely in X and Y position and angle under program control to draw individual sloped lines and letter forms, much like the pen-on-paper motions of a pen plotter. The beam skipped blank areas of the screen. Things could be drawn in arbitrary order.
Vector displays are a now-obsolete alternative to raster scan displays. In vector displays, the CRT electron beam 'draws' only the lines and curves displayed. In raster scan displays, the image is a grid of pixel spots (a 'bitmapped' image), and the CRT beam repeatedly sweeps the entire screen in a fixed horizontal pattern (like in TV sets), regardless of which dots are turned on. Bitmap raster graphics require much more memory than vector graphics. XGA-level 1024x768 black/white resolution requires 96 kilobytes of video refresh memory, 12 times more than a basic PDS-1. In 1970, that much core memory cost about $8000. (It now costs only 0.05 cents of shared DRAM.)
Vector displays were good for showing data charts, modifying line drawings and CAD diagrams, tumbling 3-D wire-frame shapes, editing text, laying out printed pages, and playing simple games. But they did not handle colors, images, filled-in areas, black-on-white screens, or WYSIWYG fidelity to the fonts of professionally printed text.
The PDS-1 screen was repeatedly refreshed or redrawn 40 times per second to avoid visible flickering. But irregular beam motion was slower than the steady motions on raster displays. The beam deflections were driven by magnetic coils, and those coils fought against rapid changes to their current. The screen flickered when filled with more than 800 inches of lines or more than 1200 characters, because the beam then needed more than 1/40th of a second to retrace everything.
The competing lower cost Tektronix 4010 graphics terminal used an alternative storage tube CRT technology which required no continual refresh and hence no local computer display memory at all. The glowing image was remembered by the CRT phosphor itself. But like an Etch A Sketch, the accumulated image could be modified or moved only by flash-erasing the entire screen and then slowing redrawing everything with data resent from some large computer. This was much less interactive than the PDS-1 and could not show animations.
On other displays of this era, text fonts were hardwired and could not be changed. For example, the operator consoles of the CDC 6600 formed each letter all at once by sending the Charactron CRT electron beam through a metallic stencil mask with an A-shaped hole, or through a B-shaped hole, etc.
But on the PDS-1, all letter shapes, sizes, and spacing were entirely controlled in software. Each desired form of the letter E had its own display subroutine which executed a sequence of short vector strokes for that letter. Each occurrence of a letter on the screen was a display processor call to that letter's subroutine. This scheme handled arbitrary fonts, extended character sets, and even cursive right-to-left languages like Arabic. The smaller, fastest-drawing fonts were ugly, with diamond-shaped approximations of rounded loops. The display subroutine scheme also handled electronic design symbols.
The PDS-1 monitor face was rectangular and was available in portrait or landscape orientation. The 1K x 1K grid of points was stretched 33% in the longer direction to allow text and graphics to fill the screen. All graphics programs then had to account for the non-square pixels. If the system was to be used mainly for graphics, the monitor could be installed with an unstretched grid leaving ends of the screen permanently unused.

## Dual processors

The PDS-1's display processor and its minicomputer ran simultaneously, out of the same memory.
Instructions for the display processor consisted of 1-byte short-stroke instructions for letters and curves, and 6-byte long vector instructions, and 2-byte unconditional jumps. The display processor had no conventional ALU instructions and never modified memory. Jumps supported subroutine calls for repeated objects like letters and symbols. Jumps also supported arranging displayed objects into linked lists for quick editing. XY positions were in integer form only. There was no support for rotations or arbitrary scaling on the fly. If a symbol crossed over an edge of the screen, the beam wrapped around to the other side rather than being clipped, making a smear. So higher levels of the application had to do the clipping test, using separate data structures. (This was fixed in later models.) Programming the letter font subroutines was via assembler language. Code for line drawings and overall layout was generated on the fly, by programs running on the local minicomputer or on a large remote computer.
The PDS-1's built-in minicomputer was needed for responding to user keyboard and light pen interactions quickly, without delays in talking to a remote timeshared large computer for help. The minicomputer's main task was to build and modify the display list as needed for the next refresh cycle. For text and 2-D line graphics this was easy and did not involve much computing. To minimize costs, Imlac designed their own simple minicomputer with as few registers and logic gates as possible. It was a single-accumulator machine much like a DEC PDP-8, except using 16-bit instructions and data instead of 12 bits. There were no integer multiply/divide instructions, no floating point instructions, no microprogramming, no virtual addressing, and no cache. The single form of address modification was via indirect address pointers held in memory. Certain pointer cells would auto-increment when used. Stack operations were not supported.
Programming of this minicomputer was via assembler language. It was not object code compatible with anything else and so had limited tool support. Imlac eventually added a self-hosted Fortran compiler with hour-long compiles due to the cramped memory. Some PDS models had an optional IBM 2310 cartridge disk drive or 8-inch floppy drive. These ran a rudimentary disk OS supporting program overlays. The disks were dropped from later products.
The PDS-1 electronics were built from 7400 series low-density TTL integrated circuits, with only a dozen logic gates or 4 register bits per DIP chip. Small printed circuit cards held up to 12 chips each. The shallow desk pedestal held three racks or rows of cards, with 25 cards per row, and a wire wrap backplane connecting all cards. There was no uniform backplane bus. Customer documentation included complete schematics down to the gate level, so that customers could design their own interface boards. It was possible to see, touch, and understand every detail of how the whole system worked. Cycle time for the core memory was 2.0 microseconds for the PDS-1, and 1.8 microseconds for PDS-1D. TTL logic ran 10x faster, with 10 timing pulses per core memory cycle.
The basic PDS-1 did not include the optional hardware cards for long vectors. Instead, the minicomputer created a long sequence of short-stroke display instructions. The software used a quick Bresenham method to compute intermediate points for sloped lines without doing multiplies or divides. The long vector hardware similarly needed only an add/subtract circuit. If a long vector program was mistakenly run on a basic machine without that option, the display processor could go wild and potentially burn the monitor phosphor or deflection amplifiers.

## Applications

The PDS-1 and PDS-4 were bought in small numbers by R&D organizations and many universities. They developed pioneering computer applications and trained the next generation of graphics system designers. The FRESS hypertext system had enhanced capability and usability if accessed from a PDS-1 system; the user could make hyperlinks with a light pen and create them simply with a couple of keystrokes. Multi-window editing on FRESS was also possible when using the PDS-1. PDS-1 systems were used to design Arpanet's network graphics protocol.
The first overlapping multi-windowing system, the DNLS or Display NLS, was first fully implemented on the PDS-1 in early 1973 by SRI (non-overlapping windows implemented 1971). The DNLS implemented "Display Areas", or DAs, which could be dynamically moved, resized, and overlapped. In contrast to later windowing systems, these DAs could only store text strings. The DNLS was used on several PDS-1s at several ARPANET locations, and was the main inspiration for the Xerox Alto's overlapping window system.
Imlac display systems were bundled into various larger commercial products involving visual design and specialized software. Imlac sold a newspaper layout and typesetting system using PDS-1 called CES. MCS's Anvil mechanical CAD system used later Imlac workstations to interactively design mechanical parts, which were then milled out automatically from metal stock.
Some simple applications such as text editors were entirely coded in Imlac assembler and could run without much involvement with a larger computer. Hofstadter composed his book Gödel, Escher, Bach on an Imlac editor. But most graphics applications required strong floating point support, compilers, and a file system. Those applications ran mostly on an expensive timeshared computer, which sent digested image data to the Imlac, which ran a small assembler program emulating a generic graphics terminal. A typical use was rendering architectural drawings and animated walkthroughs that had been previously drawn offline. PDS-1 use was held back for several years by not having a standard program library supporting animation or interactive drawing and dragging of objects.
But at night time, students were willing to write large amounts of assembler code just for fun. The PDS-1 applications most remembered today are the early interactive games. The two-player Spacewar! was ported from a PDP-1 demo. Freeway Crossing, an early predecessor of the popular arcade game Frogger, was created on a PDS-1 as part of a psychology experiment in 1971. Mazewar, the first online multiplayer computer game, was created on a pair of PDS-1's. Later, up to 8 players ran on PDS-1 stations or other terminals networked to the MIT host PDP-10 computer running the Mazewar AI program. Mazewar games between MIT and Stanford were a major data load on the early Arpanet.

## Pixels replace vector displays

The density, capacity, and price of computer memory have improved steadily and exponentially for decades, an engineering trend called Moore's Law. The limitations of refreshed or storage vector displays were accepted only in the era when those displays were much cheaper than raster-scan alternatives. Raster graphic displays inevitably took over when the price of 128 kilobytes no longer mattered.
Imlac PDS-1's at Xerox PARC impressed them with its interactivity and graphics. But its ugly text prompted Chuck Thacker to develop the experimental bitmapped Xerox Alto machine in 1973, a decade before that much memory was affordable for non-research single-user machines. The Alto led to the GUI revolution.
The PDS-1 and similar vector terminals were supplanted in the 1980s by (non-programmable) raster graphics terminals such as the AED767. And by easily programmed personal workstations with raster graphics such as the Terak 8510/a UCSD Pascal machine and the high performance PERQ Unix system. And those were supplanted by microprocessor-based mass-market Macintoshes, Windows PCs, and video game consoles. And now by single chips inside smartphones.

## Emulation

In 2013, an Imlac emulator named sImlac was written. An update version of this emulator can be obtained from the GitHub repository of the Seattle-based Living Computers: Museum + Labs.