National Semiconductor PACE, abbreviated from "Processing And Control
Element", was the first 16-bit microprocessor. The PACE family was
announced at the end of 1974, at about the same time when Intel and
Motorola released such popular 8-bit microprocessors as 8080 and
MC6800. PACE CPUs run at frequencies up to 2 MHz, have 16-bit address
and data buses, can address up to 64 KB memory, and provide 5
maskable interrupts and one non-maskable interrupt. Internally the
processors have four 16-bit general registers, which can be used for
arithmetic and logical operations, and as index registers. PACE
instruction set includes all basic types of operations - data
transfer, arithmetic, logical, jumps and branches (including SKIP
instructions that conditionally skip the next instruction), and
subroutine calls. The PACE doesn't have special 8- and 16-bit
versions of instructions. Instead, a program can set or clear a
special BYTE status flag, that instructs the CPU to operate on 8- or
16-bit data respectively. To support subroutine calls and interrupt
handling, the microprocessor incorporates 10-level stack. If enabled,
the CPU may generate an interrupt every time when the stack becomes
full or empty, which allows user programs to extend stack size by
swapping stack data to and from main memory. While the CPU may
operate at frequencies up to 2 MHz, it requires on average 10
microseconds to execute one instruction. This is much slower than
speed, in instructions per second, of the above mentioned 8080 and
6800 microprocessors. PACE microprocessor was built on P-channel MOS
technology. National Semiconductor eventually released NMOS version
of the PACE CPU - INS8900.
National Semiconductor PACE microprocessors were manufactured in 40-pin ceramic package. There were no second-source manufacturers of this microprocessor.
PACE
I did my first microprocessor based project with PACE in the mid 70s. It was a "nucleonic ore flow gauge" measuring the rate of ore flow off a vibrating feeder. This required some pretty fancy maths, so I had to write my own floating point math package!