Able

The Able processor was designed in the mid-1970s for MSI components, and first assembled by New England Digital (NED, no connection to DEC) in a converted barn in Norwich VT. It was primarily used in embedded applications for experiment control and network processing. Its most successful application was in the Synclavier® digital synthesizer.

NED ceased operations in 1992, although a Synclavier® user consortium continued manufacturing for several years. Synclavier systems and support are still available from Synclavier.com.

The most notable feature of the Able processor is its single instruction - a MOVE from source to destination. Each instruction has an 8-bit source field and a 8-bit destination field. There is no opcode field. Arithmetic and control operations are encoded as special destinations. This makes the Able a transport-triggered architecture.

The Able had 16 16-bit registers. Memory references used a register for the address, with no addressing arithmetic. The PC was register 15, except in the interrupt state when it was register 14 (register 14 thus served as an interrupt handler pointer).

The Able bus transferred 16-bit data for 7-bit device addresses and 16-bit memory addresses. Bus transfers were asynchronous - the instruction would stall until the device acknowledged the transfer. For example, the single instruction which moved a character from the keyboard to the display would stall until a key was hit. In practice, devices included addresses for control and status registers to avoid such stalls. Late models of the Able, used in the Synclavier, added memory mapping registers to address several gigabytes of audio sample RAM.

Although an assembler syntax is shown below, the ABLE was programmed almost exclusively in XPL. All fields and register numbers here are in octal.

INSTRUCTION FORMAT

low byte

SOURCE

high byte

DESTINATION

SOURCE

DESTINATION

An attempt at re-implementation in VHDL is here. It runs under GHDL. On a Spartan 3 it occupies about 300 slices in addition to a BRAM for code/data. Instructions execute in a minimum of 3 clocks. The assembler uses an idiosyncratic syntax and hexademimal notation.

Synclavier® is a registered trademark of Cameron W. Jones and is used by permission.