|The Imlac PDS-1, c. 1970|
The Basics:The PDS-1 was introduced in 1970 and was, as the Technical Manual describes it, "either a Very Smart Terminal or a pretty fair computer with display." For around $8300 you got a system with:
- 4KW of core memory (in 16-bit words)
- A 16-bit data processor operating in parallel with a display processor
- 2 microsecond instruction time (500Khz)
- A 14" vector display, refreshed at 40Hz, with 1024x1024 addressable points (technically 2048x2048 in 1/2 scale "increment" mode.)
If you look at it just right, the PDS-1 could be considered a very early graphical workstation. It was also host to a number of interesting games thanks to its graphics capabilities.
The Data Processor:I've often seen the PDS-1's main (or "data") processor described as "a 16-bit PDP-8" and that's really not far from the truth. There's one 16-bit Accumulator register, and the instruction set is remarkably similar in scope and behavior to the PDP-8's. It does have a couple of enhancements over the PDP-8 -- aside from the wider wordsize, it's also able to address a full 32KW of memory in a flat address space whereas the 8 had 8 4K "fields" that took extra steps to address.
The Display Processor:The display processor runs in parallel with the Data Processor and its only job is to refresh the vector display. It does so by processing a set of instructions (a "display list") created by the main Data Processor. These instructions generally fall into two distinct modes (though there are others provided by different expansion options): Processor and Increment.
Processor mode instructions provide operations to control the flow of execution of the display list. It should be noted that there are no conditional branches available -- only unconditional jumps and unconditional subroutine calls. Further, these instructions cannot modify memory, only read from it. In addition to flow control, Processor mode includes instructions for directly manipulating the X/Y positioning of the vector display.
Increment mode instructions are used to do the bulk of vector drawing, and it is generally intended for drawing text (though with a bit of ingenuity you can do just about anything). In Increment mode, each 16-bit memory word is treated as two 8-bit instructions, each of which describes a short vector (+/- 3 points in both X and Y). A scale of 1/2, 1, 2, or 3 may be applied to these vectors to facilitate drawing larger glyphs.
|Vector Description of the Letter "d" (from the Programming Guide)|
By having separate increment-mode subroutines for each character, the bulk of the display list can consist of nothing more than a set of subroutine calls, one per character.
When running, the Display Processor steals memory cycles from the Data Processor -- this means that a display with a lot of text (for example) will reduce the amount of CPU time available.
Whew, that's probably enough for now... I'll talk a bit more about the PDS-1 in my next post. In the meantime, if you want to read up on the technical details, Bitsavers has the Programming Guide and Technical Reference manuals available -- see here.