Interrupts edit

WD16 processor has three types of interrupts: vectored, non-vectored, and non-maskable (called "halt" in documentation.)

Vectored edit

Non-Vectored edit

"Datapoint 2200 Version II (CTC's parallel design) was much faster than the TMC 1795, which was slightly faster than the original serial design of the Datapoint 2200, which in turn was considerably faster than the 8008."

The serial design of the Datapoint 2200 was not faster than the Intel 8008. Even though this statement matches the reference cited, it appears that the cited reference is incorrect. Although the Datapoint 2200 version I is somewhat faster than an 8008 on many instructions, any reference to the 2200's shift-register memory incurs a giant 520µs delay. Also any JMP, CALL, or RETURN can incur a variable delay up to 520µs depending on the distance to the new address. Compare the instruction times:

Instruction Description Datapoint 2200 µs 500 kHz Intel 8008 µs
ADB Add B to A 16 20
ADI nn Add nn immediate to A 16 32
ADM Add memory to A 520 32
JMP nn Jump to nn 24-520 44
CALL/RET Call/Return pair 520 64
Rcc (false) Conditional return not taken 16 12

Page 8-11 of the Datapoint 2200 Programmer's Manual of August 1971 gives an assembly language example of a delay routine. The documentation states that the delay routine decrements the delay counter at a rate of 2,000 counts per second. A 500 kHz Intel 8008 would execute this code at a rate of 5,319 counts per second, over twice as fast!

To show a most extreme example of the speed difference, I wrote a routine that would clear a 256 byte buffer located on a 256 byte boundary. The loop is just five instructions but unavoidably includes LMB and JFZ instructions, which are very slow. The 2200 will take about 266ms to execute. A 500 kHz 8008 will execute it in just 37ms, seven times faster! BTW: Using the expanded 8008 instruction set, the routine could be reduced to just three instructions, executing in 24ms.

The 2200 could only be faster than 8008 if almost 520µs of non-memory-reference instructions could be contained inside a loop. That is nearly impossible.

How do we correct this error without violating Wikipedia sourcing rules?