The TMS9900 was one of the first commercially available, single-chip 16-bit microprocessors. Introduced in June 1976, it implemented Texas Instruments' TI-990 minicomputer architecture in a single-chip format, and was initially used for low-end models of that lineup.
Its 64-pin DIP format made it more expensive to implement in smaller machines than the more common 40-pin format, and it saw relatively few design wins outside TI's own use. Among those uses was their TI-99/4 and TI-99/4A home computers, which ultimately sold about 2.8 million units.
Microcomputer-on-chip implementations of the 9900 in 40-pin packages included the TMS9940, TMS9980/81, TMS9995. The TMS99105/10 was the last iteration of the 9900 in 1981 and incorporated features of TI's 990/10 minicomputer.
By the mid-1980s the microcomputer field was moving to 16-bit systems like the Intel 8088 and newer 16/32-bit designs like the Motorola 68000. With no obvious future for the chip, TI turned its attention to special-purpose processors like the Texas Instruments TMS320, introduced in 1983.
History
The TMS9900 was designed as a single chip version of the TI 990 minicomputer series, much like the Intersil 6100 was a single chip PDP-8 (12 bit), and the Fairchild 9440 and Data General mN601 were both one-chip versions of Data General's Nova. Unlike multi-chip 16-bit microprocessors such as the National Semiconductor IMP-16 or DEC LSI-11, some of which predated the TMS9900, the 9900 was a single-chip, self-contained 16-bit microprocessor.
The minicomputer roots of the TMS9900 give rise to a number of architectural features that are not commonly found on designs that started from a blank sheet. Notable among these was the TMS9900's use of processor registers that are mapped into main memory. This allows for fast context switching, which can be accomplished by changing a single register, the Workspace Pointer, to point to the first entry in a list of register values. More traditional designs would require the entire set of internal registers to be stored out to memory or the stack.
The downside to this approach is that accessing these registers is more time-consuming. In a minicomputer implementation with fast memory, the effect is relatively small and the upside in a real-time or multi-tasking environment is significant as context switches are common. In other roles, like single-user microcomputers, this tradeoff may not be worthwhile. The 40-pin implementations of the 9900 included 128 or 256 bytes of fast onboard RAM for registers.
TI used the same architecture across different divisions for corporate synergy: "one company, one computer architecture". In the late 1970s Walden C. Rhines gave a presentation of the TMS99110, then code-named “Alpha”, to an IBM group developing a personal computer. "We wouldn't know until 1981 just what we had lost" because IBM chose the Intel 8088 for the IBM PC, he recalled. One factor was the lack of a roadmap for accessing more than 64K of logical memory. The 9900 family could expand its address space to 16MiB only by page-mapping; the 99000 could address 256K through segments.
After dropping out of the personal computer market with products such as TI-99/4A, the company microprocessor division eventually switched focus to the TMS320 special-purpose processor series.
Architecture
The TMS9900 has three internal 16-bit registers — Program counter (PC), Status register (ST), and Workspace Pointer register (WP). The WP register points to a base address in external RAM where the processor's 16 general purpose user registers (each 16 bits wide) are kept. This architecture allows for quick context switching; e.g. when a subroutine is entered, only the single workspace register needs to be changed instead of requiring registers to be saved individually. Bits are numbered unconventionally with the most significant bit being 0.
Addresses refer to bytes with big endian ordering convention. The TMS9900 is a classic 16 bit machine with an address space of 216 bytes (65,536 bytes or 32,768 words).
There is no concept of a stack and no stack pointer register. Instead, branch instructions exist that save the program counter to a register and change the register context. The 16 hardware and 16 software interrupt vectors each consist of a pair of PC and WP values, so the register context switch is automatically performed by an interrupt as well.
Instruction set and addressing
The TMS9900 has 69 instructions which are one, two or three words long and always word-aligned in memory. The instruction set is fairly orthogonal, meaning that with few exceptions, instructions can use all methods of accessing operands (addressing modes).