TI-990

Last updated
TI-990 programmers panel Ti990.jpg
TI-990 programmers panel

The TI-990 was a series of 16-bit minicomputers sold by Texas Instruments (TI) in the 1970s and 1980s. The TI-990 was a replacement for TI's earlier minicomputer systems, the TI-960 and the TI-980. It had several unique features, and was easier to program than its predecessors.

Contents

Among its core concepts was the ability to support multiprogramming using a software-switchable set of processor registers that allowed it to perform rapid context switches between programs. This was enabled through the use of register values stored in main memory that could be swapped by changing a single pointer.

TI later implemented the TI-990 in a single chip, the TMS9900, one of the first 16-bit microprocessors. Intended for use in low-end models of the TI-990, it retained the 990's memory-to-memory architecture. This chip was widely used in the TI-99/4A home computer, where details of its minicomputer-style memory model presented significant disadvantages.[ according to whom? ]

Features

Workspaces

On the TI-990, registers are stored in memory and are referred to through a hardware register called the Workspace Pointer. The concept behind the workspace is that main memory was based on the new semiconductor RAM chips that TI had developed and ran at the same speed as the CPU.[ clarification needed ] This meant that it didn't matter if the "registers" were real registers in the CPU or stored in memory.[ citation needed ] When the Workspace Pointer is loaded with a memory address, that address is the origin of the registers.

There are only three hardware registers in the 990: the Workspace Pointer (WP), the Program Counter (PC) and the Status register (ST). A context switch entailed the saving and restoring of only the hardware registers.

Extended operation

The TI-990 had a facility to allow extended operations through the use of plug in hardware.[ citation needed ] If the hardware is not present the CPU traps to allow software to perform the function. The operation code (XOP) allowed for 15 attached devices on a system. Although, device 15 was reserved in TI's operating systems for the Supervisor Call (SVC), through which user programs requested I/O and other operating systems services.

On the 990/12, the XOP instruction could run microcode from the machine's Writable Control Store.

Orthogonal instruction set

The TI-990 used a fairly orthogonal instruction set. The instruction formats allowed for one, two and three word instructions. The model 990/12 CPU allowed for a four word instruction with the extended mode operations.[ clarification needed ]

Architectural details

General register addressing modes

(R is a general register, 0 to 15.)

0. Register - the value is to or from a register: OPR R ; R contains operand
1. Indirect register - the register contains the address of the operand: OPR *R ; R points to operand
2. Indexed: OPR @MEM(R); R contains index value (offset in bytes) to add to address MEM. R0 is not used in indexing and allows direct memory addressing
3. Indirect Autoincrement: OPR *R+ ; R contains address of operand. Later, increment R by the length of the operand type

Several registers had defined purposes in many instructions. These are:

TI-990 instructions

The 990/4, 990/5, 990/9 instruction sets consisted of 69 instructions, the 990/10 had 72 instructions, the 990/10A had 77 instructions[ citation needed ] and the 990/12 had 144 instructions.

The instructions are grouped according to which addressing modes and how many operands they accept. A group is defined by the layout of bit-fields within the instruction word. The leftmost bits of the instruction word are sufficient to identify its group.

Group 1 instructions

The first field of the word specifies the operation to be performed, the remaining two fields provide information for locating the operands.[ clarification needed ]

Type 2 instructions

The first field of the word specifies the operation to be performed, the second field is a relative offset to where to go, for JMP instructions, or the relative offset for CRU bit addressing.[ clarification needed ]

Group 3 instructions

The first field of the word specifies the operation, the second field provides the register, the third field provides information for locating the second operand.[ clarification needed ]

Group 4 instructions

The first field of the word specifies the operation to be performed, the second field is the bit width of the operation, the third field provides information for locating the second operand.[ clarification needed ]

Group 5 instructions

The first field of the word specifies the operation to be performed, the second field is the shift count, the third field specifies the register to shift.[ clarification needed ]

Group 6 instructions

The first field specifies the operation to be performed, the second field provides information for locating the second operand.[ clarification needed ]

Group 7 instructions

The word specified the operation to be performed.

Group 8 instructions

The first field specifies the operation, the second field specifies the register if applicable. The third field, if applicable, specifies an immediate operand in a second word.[ clarification needed ]

Group 9 instructions

The first field of the word specifies the operation, the second field provides the register, the third field provides information for locating the second operand.[ clarification needed ]

Group 10 instruction

The first field specifies the operation, the second field specifies the map file (0=kernel, 1=user) and the third field specifies a register with an address.

The given map file is loaded with 6 words from the address in the register.

This instruction was supported on the 990/10A and 990/12, or the 990/10 with memory-map option installed.

Group 11 instructions

The first word is the opcode; in the second word, the first field is the byte count field, the second field is the destination operand and the third field is the source operand. These instructions are supported on the 990/12.[ clarification needed ]

The multiple precision instructions allowed for logic and integer arithmetic on operands from 1-15 bytes long. *SM and *AM were supported on the 990/10A.

Group 12 instructions

The first field of the first word is the opcode, the second field of the first word indicates a checkpoint register; the first field of the second word is the byte count field, the second field is the destination operand and the third field is the source operand. These instructions were supported on the 990/12.

Group 13 instructions

The first word is the opcode; in the second word, the first field is the byte count field, the second field is the shift count and the third field is the source operand. These instructions are supported on the 990/12 and 990/10A.

Group 14 instructions

The first word is the opcode; the first field of the second word is the position field and the second field is the source operand. These instructions were supported on the 990/12.

Group 15 instruction

The first field of the first word is the opcode, the second field of the first word indicates a width; the first field of the second word is the position, the second field is the source operand.[ clarification needed ] This instruction supported on the 990/12.

Group 16 instructions

The first field of the first word is the opcode, the second field of the first word indicates a width; the first field of the second word is the position, the second field is the destination operand and the third field is the source operand. These instructions supported on the 990/12.

Group 17 instructions

The first word is the opcode; the first field of the second word is the value field and the second field is the register and the third field is the relative offset.[ clarification needed ] These instructions supported on the 990/12.

Group 18 instructions

The first field of the word is the opcode and the second field is the register specification. These instructions supported on the 990/12.

Group 19 instruction

The first word is the opcode; the first field of the second word is the destination operand and the second field is the source operand. This instruction supported on the 990/12.

Group 20 instructions

The first word is the opcode; the first field of the second word is the condition code field, the second field is the destination operand and the third field is the source operand. These instructions supported on the 990/12.

Group 21 instruction

The first field of the first word is the opcode, the second field of the first word specifies the destination length; the first field of the second word specifies the source length, the second field is the destination operand and the third field is the source operand. This instruction is only supported on the 990/12.

Assembly Language Programming Example

A complete "Hello, world!" program in TI-990 assembler, to run under DX10:

        IDT     'HELLO'         TITL    'HELLO - hello world program' *         DXOP    SVC,15          Define SVC TMLUNO  EQU     0               Terminal LUNO * R0      EQU     0 R1      EQU     1 R2      EQU     2 R3      EQU     3 R4      EQU     4 R5      EQU     5 R6      EQU     6 R7      EQU     7 R8      EQU     8 R9      EQU     9 R10     EQU     10 R11     EQU     11 R12     EQU     12 R13     EQU     13 R14     EQU     14 R15     EQU     15 *         DATA    WP,ENTRY,0 *  * Workspace (On the 990 we can "preload" registers) * WP      DATA    0               R0         DATA    0               R1          DATA    >1600           R2 - End of program SVC         DATA    >0000           R3 - Open I/O opcode         DATA    >0B00           R4 - Write I/O opcode         DATA    >0100           R5 - Close I/O opcode         DATA    STRING          R6 - Message address         DATA    STRLEN          R7 - Message length         DATA    0               R8         DATA    0               R9         DATA    0               R10         DATA    0               R11         DATA    0               R12         DATA    0               R13         DATA    0               R14         DATA    0               R15 *  * Terminal SVC block * TRMSCB  BYTE    0               SVC op code (0 = I/O) TRMERR  BYTE    0               Error code TRMOPC  BYTE    0               I/O OP CODE TRMLUN  BYTE    TMLUNO          LUNO TRMFLG  DATA    0               Flags TRMBUF  DATA    $-$             Buffer address  TRMLRL  DATA    $-$             Logical record length TRMCHC  DATA    $-$             Character count *  * Message * STRING  TEXT    'Hello world!'         BYTE    >D,>A STRLEN  EQU     $-STRING         EVEN         PAGE *  * Main program entry * ENTRY   MOVB    R3,@TRMOPC      Set open opcode in SCB         SVC     @TRMSCB         Open terminal         MOVB    @TRMERR,R0      Check for error         JNE     EXIT         MOVB    R4,@TRMOPC      Set write opcode         MOV     R6,@TRMBUF      Set buffer address          MOV     R7,@TRMLRL      Set logical record length         MOV     R7,@TRMCHC       and character count         SVC     @TRMSCB         Write message         MOVB    @TRMERR,R0      Check for error         JNE     CLOSE CLOSE   MOVB    R5,@TRMOPC      Set close opcode         SVC     @TRMSCB         Close terminal EXIT    SVC     R2              Exit program *         END

This program can be run on a TI-990 simulator, such as Dave Pitts's "sim990", which emulates the TI-990 and includes software kits for native operating systems (including DX10).

The following program is a standalone version that prints on the serial terminal connected to CRU address 0. It illustrates the CRU I/O and workspace linkage for the PRINT subroutine.

        IDT     'HELLO'         TITL    'HELLO - hello world program' * R0      EQU     0 R1      EQU     1 R2      EQU     2 R3      EQU     3 R4      EQU     4 R5      EQU     5 R6      EQU     6 R7      EQU     7 R8      EQU     8 R9      EQU     9 R10     EQU     10 R11     EQU     11 R12     EQU     12 R13     EQU     13 R14     EQU     14 R15     EQU     15 * * Terminal CRU bits * TRMCRU  EQU     >0              Terminal device address XMIT    EQU     8 DTR     EQU     9 RTS     EQU     10 WRQ     EQU     11 RRQ     EQU     12 NSF     EQU     13 *         PAGE * * Main program entry * ENTRY   LWPI    WP              Load our workspace pointer         BLWP    @PRINT          Call our print routine         DATA    STRING         DATA    STRLEN         IDLE * WP      BSS     32              Main program workspace * * Message * STRING  TEXT    'Hello world!'         BYTE    >D,>A STRLEN  EQU     $-STRING         EVEN         PAGE * * Print a message * PRINT   DATA    PRWS,PRENT PRENT   EQU     $         MOV     *R14+,R2        Get buffer address         MOV     *R14+,R1        Get message length         SBO     DTR             Enable terminal ready         SBO     RTS PRI010  LDCR    *R2+,8          Send out a character         TB      WRQ             Wait until done         JNE     $-2         SBZ     WRQ         DEC     R1         JGT     PRI010         RTWP * PRWS    DATA    0,0,0,0,0,0,0,0         DATA    0,0,0,0,TRMCRU,0,0,0 *         END     ENTRY

TI-990 models

The TI-990 processors fell into several natural groups depending on the original design upon which they are based and which I/O bus they used.

All models supported the Communications Register Unit (CRU) which is a serial bit addressable I/O bus. Also, supported on higher end models was the TILINE I/O bus which is similar to DEC's popular UNIBUS. The TILINE also supported a master/slave relationship that allowed multiple CPU boards in a common chassis with arbitration control.

TILINE/CRU models

The following models used the TILINE as their principal mass storage bus:

CRU only models

The following models used the CRU as their principal bus:

Operating systems

Several operating systems were available for the TI-990

From TI:

From third parties:

Sources

Related Research Articles

MIPS is a family of reduced instruction set computer (RISC) instruction set architectures (ISA) developed by MIPS Computer Systems, now MIPS Technologies, based in the United States.

<span class="mw-page-title-main">PDP-8</span> Minicomputer product line

The PDP-8 is a family of 12-bit minicomputers that was produced by Digital Equipment Corporation (DEC). It was the first commercially successful minicomputer, with over 50,000 units being sold over the model's lifetime. Its basic design follows the pioneering LINC but has a smaller instruction set, which is an expanded version of the PDP-5 instruction set. Similar machines from DEC are the PDP-12 which is a modernized version of the PDP-8 and LINC concepts, and the PDP-14 industrial controller system.

In computer science, an instruction set architecture (ISA) is a part of the abstract model of a computer, which generally defines how software controls the CPU. A device that executes instructions described by that ISA, such as a central processing unit (CPU), is called an implementation.

<span class="mw-page-title-main">MCS-51</span> Single chip microcontroller series by Intel

The Intel MCS-51 is a single chip microcontroller (MCU) series developed by Intel in 1980 for use in embedded systems. The architect of the Intel MCS-51 instruction set was John H. Wharton. Intel's original versions were popular in the 1980s and early 1990s, and enhanced binary compatible derivatives remain popular today. It is a complex instruction set computer, but also has some of the features of RISC architectures, such as a large register set and register windows, and has separate memory spaces for program instructions and data.

x86 assembly language is the name for the family of assembly languages which provide some level of backward compatibility with CPUs back to the Intel 8008 microprocessor, which was launched in April 1972. It is used to produce object code for the x86 class of processors.

The x86 instruction set refers to the set of instructions that x86-compatible microprocessors support. The instructions are usually part of an executable program, often stored as a computer file and executed on the processor.

Addressing modes are an aspect of the instruction set architecture in most central processing unit (CPU) designs. The various addressing modes that are defined in a given instruction set architecture define how the machine language instructions in that architecture identify the operand(s) of each instruction. An addressing mode specifies how to calculate the effective memory address of an operand by using information held in registers and/or constants contained within a machine instruction or elsewhere.

The National Semiconductor COP8 is an 8-bit CISC core microcontroller. COP8 is an enhancement to the earlier COP400 4-bit microcontroller family. COP8 main features are:

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.

In computer engineering, an orthogonal instruction set is an instruction set architecture where all instruction types can use all addressing modes. It is "orthogonal" in the sense that the instruction type and the addressing mode vary independently. An orthogonal instruction set does not impose a limitation that requires a certain instruction to use a specific register so there is little overlapping of instruction functionality.

The Burroughs B6x00-7x00 instruction set includes the set of valid operations for the Burroughs B6500, B7500 and later Burroughs large systems, including the current Unisys Clearpath/MCP systems; it does not include the instruction for other Burroughs large systems including the B5000, B5500, B5700 and the B8500. These unique machines have a distinctive design and instruction set. Each word of data is associated with a type, and the effect of an operation on that word can depend on the type. Further, the machines are stack based to the point that they had no user-addressable registers.

The Atmel AVR instruction set is the machine language for the Atmel AVR, a modified Harvard architecture 8-bit RISC single chip microcontroller which was developed by Atmel in 1996. The AVR was one of the first microcontroller families to use on-chip flash memory for program storage.

<span class="mw-page-title-main">WDC 65C02</span> CMOS microprocessor in the 6502 family

The Western Design Center (WDC) 65C02 microprocessor is an enhanced CMOS version of the popular nMOS-based 8-bit MOS Technology 6502. It uses less power than the original 6502, fixes several problems, and adds new instructions. The power usage is on the order of 10 to 20 times less than the original 6502 running at the same speed; its reduced power consumption has made it useful in portable computer roles and industrial microcontroller systems. The 65C02 has also been used in some home computers, as well as in embedded applications, including medical-grade implanted devices.

TLCS is a prefix applied to microcontrollers made by Toshiba. The product line includes multiple families of CISC and RISC architectures. Individual components generally have a part number beginning with "TMP". E.g. the TMP8048AP is a member of the TLCS-48 family.

Joel McCormack is an American computer scientist who designed the NCR Corporation version of the p-code machine, which is a kind of stack machine popular in the 1970s as the preferred way to implement new computing architectures and languages such as Pascal and BCPL. The NCR design shares no common architecture with the Pascal MicroEngine designed by Western Digital but both were meant to execute the UCSD p-System.[1,2]

The PDP-11 architecture is a 16-bit CISC instruction set architecture (ISA) developed by Digital Equipment Corporation (DEC). It is implemented by central processing units (CPUs) and microprocessors used in PDP-11 minicomputers. It was in wide use during the 1970s, but was eventually overshadowed by the more powerful VAX architecture in the 1980s.

<span class="mw-page-title-main">ST6 and ST7</span> 8-bit microcontroller product lines from STMicroelectronics

The ST6 and ST7 are 8-bit microcontroller product lines from STMicroelectronics. They are commonly used in small embedded applications like washing machines.

The PIC instruction set refers to the set of instructions that Microchip Technology PIC or dsPIC microcontroller supports. The instructions are usually programmed into the Flash memory of the processor, and automatically executed by the microcontroller on startup.

<span class="mw-page-title-main">STM8</span>

The STM8 is an 8-bit microcontroller family by STMicroelectronics. The STM8 microcontrollers use an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller.

<span class="mw-page-title-main">WD16</span> Microprocessor produced by Western Digital

The WD16 is a 16-bit microprocessor introduced by Western Digital in October 1976. It is based on the MCP-1600 chipset, a general-purpose design that was also used to implement the DEC LSI-11 low-end minicomputer and the Pascal MicroEngine processor. The three systems differed primarily in their microcode, giving each system a unique instruction set architecture (ISA).