Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
The Engineering Staff of
TEXAS INSTRUMENTS INCORPORATED Semiconductor Group
TMS 9900 Microprocessor
Data Manual
MAY 1976
TEXAS INSTRUMENTS INCORPORATED
Information contained in this publication is believed to be accurate and
reliable. However, responsibility is assumed neither for its use nor for any
infringement of patents or rights of others thai: may result from its use. No
license is granted by implication or otherwise under any patent or patent
right of Texas I nstruments or others.
Copyright © 1976
Texas Instruments Incorporated
1. INTRODUCTION 1.1 Description. 1.2 Key Features .
2. ARCHITECTURE 2.1 Registers and Memory 2.2 Interrupts . . . . 2.3 Input/Output. . . 2.4 Single-Bit CRU Operations 2.5 Multiple-Bit CRU Operations. 2.6 External Instructions 2.7 Load Function 2.8 TMS 9900 Pin Description 2.9 Timing
2.9.1 2.9.2 2.9.3
Memory . Hold CRU ..
3. TMS 9900 INSTRUCTION SET 3.1 Definition. . . . . . . 3.2 Addressing Modes
TABLE OF CONTENTS
3.2.1 Workspace Register Addressing R 3.2.2 Workspace Register Indirect Addressing * R 3.2.3 Workspace Register Indirect Auto Increment Addressing *R+ 3.2.4 Symbolic (Direct) Addressing@Label 3.2.5 Indexed Addressing@Table (R) . . 3.2.6 Immediate Addressing . . . . . 3.2.7 Program Counter Relative Addressing 3.2.8 CR U Relative Addressing
3 3
3 6 7 8 8
10 11 13 15 15 15 18
18 18 18 18 18 20 20 20 20 20
3.3 Terms and Definitions 21 3.4 Status Register 21 3.5 Instructions 22
3.5.1 Dual Operand Instructions with Multiple Addressing Modes for Source and Destination Operand. 22 3.5.2 Dual Operand Instructions with Multiple Addressing Modes for the Source Operand
and Workspace Register Addressing for the Destination 23 3.5.3 Extended Operation (XOP) Instruction 24 3.5.4 3.5.5 3.5.6 3.5.7 3.5.8 3.5.9 3.5.10 3.5.11 3.5.12
Single Operand Instructions . CRU Multiple-Bit Instructions CRU Single-Bit Instructions Jump Instructions Shift Instructions. . . . I mmediate Register Instructions. Internal Register Load Immediate Instructions Internal Register Store Instructions. . . . Return Workspace Pointer (RTWP) Instruction
3.5.13 External Instructions 3.6 TMS 9900 Instruction Execution Times . . . . .
4. TMS 9900 ELECTRICAL AND MECHANICAL SPECIFICATIONS 4.1 Absolute Maximum Ratings . . . 4.2 Recommended Operating Conditions 4.3 Electrical Characteristics 4.4 Timing Requirements . 4.5 Switching Characteristics
24 25 25 25 26 26 27 27 27 27 28
29 30 30 31 31
2
TABLE OF CONTENTS (Continued)
5. TMS 9900 PROTOTYPING SYSTEM 5.1 Hardware . . 5.2 System Console 5.3 Software 5.4 Options. . .
6. TMS 9900 SUPPORT CIRCUITS
7. SYSTEM DESIGN EXAMPLES
8. MECHAN ICAL DATA
LIST OF ILLUSTRATIONS
Figure 1 Figure 2 Figure 3 Figure 4 Figure 5 Figure 6 Figure 7 Figure 8 Figure 9 Figure 10 Figure 11 Figure 12 Figure 13 Figure 14 Figure 15
Architecture . . . . . . Memory Map . . . . . . TMS 9900 Interrupt Interface TMS 9900 Single·Bit CRU Address Development TMS 9900 LDCR/STCR Data Transfers . TMS 9900 16·Bit I nput/Output Interface. External Instruction Decode Logic TMS 9900 CPU Flow Chart . TMS 9900 Memory Bus Timing . TMS 9900 Hold Timing TMS 9900 CRU Interface Timing Clock Timing. . . . . Signal Timing. . . . . . Minimum TMS 9900 System . Maximum TMS 9900 System.
LIST OF TABLES
Table 1 Interrupt Level Data Table 2 TMS 9900 Pin Assignments and Functions Table 3 Instruction Execution Times. . . . .
32 33 33 33
34
34
36
4 5 8 9 9
10 11 12 16 17 19 31 32 35 35
7 13 28
1. INTRODUCTION
1.1 DESCRIPTION
The TMS 9900 microprocessor is a single-chip 16-bit central processing unit (CPU) produced using N-channel silicon-gate MOS technology (see Figure 1). The instruction set of the TMS 9900 includes the capabilities offered by full minicomputers. The unique memory-to-memory architecture features multiple register files, resident in memory, which allow faster response to interrupts and increased programming flexibility. The separate bus structure simplifies the system design effort. Texas Instruments provides a compatible set of MOS and TTL memory and logic function circuits to be used with a TMS 9900 system. The system is fully supported by software and a complete prototyping system.
1.2 KEY FEATURES
o 16-Bit Instruction Word
o Full Minicomputer Instruction Set Capability Including Multiply and Divide
o Up to 65,536 Bytes of Memory
o 3-M Hz Speed
o Advanced Memory-to-Memory Architecture
o Separate Memory, I/O, and Interrupt-Bus Structures
o 16 General Registers
o 16 Prioritized Interrupts
o Programmed and DMA I/O Capability
oN-Channel Silicon-Gate Technology
2. ARCHITECTURE
The memory word of the TMS 9900 is 16 bits long. Each word is also defined as 2 bytes of 8 bits. The instruction set of the TMS 9900 allows both word and byte operands. Thus, all memory locations are on even address boundaries and byte instructions can address either the even or odd byte. The memory space is 65,536 bytes or 32,768 words. The word
and byte formats are shown below.
MSB LSB
2 3 4 5 6 7 8 9 SIGN
\~B~I~T ________________________ ~ ~ ______________________________ ~/
V MEMORY WORD (EVEN ADDRESS)
MSB LSB MSB LSB
I 0 1 2 3 4 5 6
1 7
1 81 9 10 111 1 12 1
131
14 1
151
SIGN SIGN / \ BIT A BIT
V V EVEN BYTE ODD BYTE
2.1 REGISTERS AND MEMORY
The TMS 9900 employs an advanced memory-to-memory architecture. Blocks of memory designated as workspace replace internal-hardware registers with program-data registers. The TMS 9900 memory map is shown in Figure 2. The
first 32 words are used for interrupt trap vectors. The next contiguous block of 32 memory words is used by the extended operation (XOP) instruction for trap vectors. The last two memory words, FFFC16 and FFFE16' are used for the trap vector of the LOAD signal. The remaining memory is then available for programs, data, and workspace
registers. If desired, any of the special areas may also be used as general memory.
TENTATIVE DATA This document provides tentative information on a new product. Texas Instruments reserves the right to change specifications for this product in any manner without notice.
3
iNfRTIi: ICO·IC3 AO-A14
15
T1
T2
PROGRAM COUNTER
WORKSPACE REGISTER
HOLD A
HOLDA
LOAD ALU
WE READY
WAIT r;;m;m:J
DB IN
RESET
IAQ
CRUCLK
</>1-</>4
CRUOUT 00-015 CRUIN
FIGURE 1 - ARCHITECTURE 176
4
AREA DEFINITION
INTERRUPT VECTORS
XOP SOFTWARE TRAP VECTORS
GENERAL MEMORY FOR
PROGRAM,DATA,AND
WORKSPACE REGISTERS
LOAD SIGNAL VECTOR {
MEMORY
ADDRESS16
0000
0002
0004
0006
003C
003E
0040
0042
007C
007E
0080
FFFC
FFFE
o
~I;?
~';1'
FIGURE 2 - MEMORY MAP
MEMORY CONTENT
15
WP LEVEL 0 INTERRUPT
PC LEVEL 0 INTERRUPT
WP LEVEL 1 INTERRUPT
PC LEVEL 1 INTERRUPT
.:~
WP LEVEL 15 INTERRUPT
PC LEVEL 15 INTERRUPT
WP XOPO
PC XOPO
~>
WP XOP 15
PC XOP 15
• • •
GENERAL·MEMORY AREA
MAY BE ANY
COMBINATION OF
PROGRAM SPACE
OR WORKSPACE
• •
WP LOAD FUNCTION
PC LOAD FUNCTION
Three internal registers are accessible to the user. The program counter (PC) contains the address of the instruction
following the current instruction being executed. This address is referenced by the processor to fetch the next
instruction from memory and is then automatically incremented. The status register (ST) contains the present state of
the processor and will be further defined in Section 3.4. The workspace pointer (WP) contains the address of the first
word in the currently active set of workspace registers.
A workspace-register file occupies 16 contiguous memory words in the general memory area (see Figure 2). Each
workspace register may hold data or addresses and function as operand registers, accumulators, a~dress registers, or
5
6
index registers. During instruction execution, the processor addresses any register in the workspace by adding the
register number to the contents of the workspace pointer and initiating a memory request for the word. The relationship between the workspace pointer and its corresponding workspace is shown below.
GENERAL MEMORY
PROGRAM A I-------TMS 9900
-1 I PC (AI
,.::? ,.::?
WORKSPACE REGISTER 0 I
WP (AI I I
WORKSPACE A
~ ST (AI I WORKSPACE REGISTER 15
;t!? ... '7
PROGRAM B
~7 ~'7
WORKSPACE B
The workspace concept is particularly valuable during operations that require a context switch, which is a change from
one program environment to another (as in the case of an interrupt) or to a subroutine. Such an operation, using a conventional multi-register arrangement, requires that at least part of the contents of the register file be stored and
reloaded. A memory cycle is required to store or fetch each word. By exchanging the program counter, status register,
and workspace pointer, the TMS 9900 accomplishes a complete context switch with only three store cycles and three fetch cycles. After the switch the workspace pointer contains the starting address of a new 16-word workspace in
memory for use in the new routine. A corresponding time saving occurs when the original context is restored. Instructions in the TMS 9900 that result in a context switch include:
1. Branch and Load Workspace Pointer (B LWP)
2. Return from Subroutine (RTWP)
3. Extended Operation (XOP).
Device interrupts, RESET, and LOAD also cause a context switch by forcing the processor to trap to a service
subroutine.
2.2 INTERRUPTS
The TMS 9900 employs 16 interrupt levels with the highest priority level 0 and lowest level 15. Level 0 is reserved for the RESET function and all other levels may be used for external devices. The external levels may also be shared by several device interrupts, depending upon system requirements.
The TMS 9900 continuously compares the interrupt code (ICO through IC3) with the interrupt mask contained in status-register bits 12 through 15. When the level of the pending interrupt is less than or equal to the enabling mask level (higher or equal priority interrupt), the processor recognizes the interrupt and initiates a context switch following
completion of the currently executing instruction. The processor fetches the new context WP and PC from the interrupt vector locations. Then, the previous context WP, PC, and ST are stored in workspace registers 13, 14, and 15,
respectively, of the new workspace. The TMS 9900 then forces the interrupt mask to a value that is one less than the level of the interrupt being serviced, except for level-zero interrupt, which loads zero into the mask. This allows only interrupts of higher priority to interrupt a service routine. The processor also inhibits interrupts until the first
instruction of the service routine has been executed to preserve program linkage should a higher priority interrupt occur. All interrupt requests should remain active until recognized by the processor in the device-service routine. The
individual service routines must reset the interrupt requests before the routine is complete.
If a higher priority interrupt occurs, a second context switch occurs to service the higher priority interrupt. When that routine is complete, a return instruction (RTWP) restores the first service routine parameters to the processor to complete processing of the lower-priority interrupt. All interrupt subroutines should terminate with the return instruction to restore original program parameters. The interrupt-vector locations, device assignment, enabling-mask
value, and the interrupt code are shown in Table 1.
I nterrupt Level
(Highest priority) 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(Lowest priority) 15
• Level 0 can not be disabled.
Vector Location
(Memory Address
In Hex)
00
04
08
OC
10
14
18
lC
20
24
28
2C
30
34
38
3C
TABLE 1
INTERRUPT LEVEL DATA
Device Assignment
Reset
External device
External device
Interrupt Mask Values To Interrupt
Enable Respective Interrupts Codes
(ST12 thru ST15) ICO thru IC3
o through F* 0000
1 through F 0001
2 through F 0010
3 through F 0011
4 through F 0100
5 through F 0101
6 through F 0110
7 through F 0111
8 through F 1000
9 through F 1001
A through F 1010
B through F 1011
C through F 1100
D through F 1101
E and F 1110
F only 1111
The TMS 9900 interrupt interface utilizes standard TTL components as shown in Figure 3. Note that for eight or less external interrupts a single SN74148 is required and for one external interrupt INTREQ is used as the interrupt signal with a hard-wired code ICO through IC3.
2.3 INPUT/OUTPUT
The TMS 9900 utilizes a versatile direct command-driven I/O interface designated as the communications-register unit (CRU). The CRU provides up to 4096 directly addressable input bits and 4096 directly addressable output bits. Both input and output bits can be addressed individually or in fields of from 1 to 16 bits. The TMS 9900 employs three dedicated 110 pins (CR UI N, CRUOUT, and CRUCLK) and 12 bits (A3 through A 14) of the address bus to interface with the CRU system. The processor instructions that drive the CRU interface can set, reset, or test any bit in the CRU array or move between memory and CRU data fields.
7
8
INTERRUPT SIGNAL 1
(highest priority)
I
I I
I I I
INTERRUPT SIGNAL 15
(lowest priority)
VCC
EI
SN7408
GS 1:)----------0 b-----~ INTREQ
A2 1:)---+------, SN7404
>-___ ~ICO A1 P---+-+---~
SN7408
AO 10---+--11----, Jo----~IC1
SN7408
)()----~ IC2
SN7408 GS
)O-----~ IC3 A2 10-------1.
A1 P--------~
AO P-------------'
FIGURE 3 - TMS 9900 INTERRUPT INTERFACE
2.4 SINGLE-BIT CRU OPERATIONS
TMS 9900
The TMS 9900 performs three single-bit CRU functions: test bit (TB), set bit to one (SBO), and set bit to zero (SBZ). To identify the bit to be operated upon, the TMS 9900 develops a CRU-bit address and places it on the address bus, A3
to A14.
For the two output operations (SBO and SBZ), the processor also generates a CRUCLK pulse, indicating an output operation to the CRU device, and places bit 7 of the instruction word on the CRUOUT line to accomplish the specified operation (bit 7 is a one for SBO and a zero for SBZI. A test-bit instruction transfers the addressed CRU bit from the
CRUIN input line to bit 2 of the status register (EQUAL).
The TMS 9900 develops a CRU-bit address for the single-bit operations from the CRU-base address contained in workspace register 12 and the signed displacement count contained in bits 8 through 15 of the instruction. The displacement allows two's complement addressing from base minus 128 bits through base plus 127 bits. The base address from W12 is added to the signed displacement specified in the instruction and the result is loaded onto the address bus. Figure 4 illustrates the development of a single-bit CRU address.
2.5 MULTIPLE-BIT CRU OPERATIONS
The TMS 9900 performs two multiple-bit CRU operations: store communications register (STCR) and load communications register (LDCR). Both operations perform a data transfer from the CRU-to-memory or from
memory-to-CRU as illustrated in Figure 5. Although the figure illustrates a full 16-bit transfer operation, any number of
bits from 1 through 16 may be involved. The LDCR instruction fetches a word from memory and right-shifts it to serially transfer it to CR U output bits. If the LDCR involves eight or fewer bits, those bits come from the right-justified
field within the addressed byte of the memory word. If the LDCR involves nine or more bits, those bits come from the right-justified field within the whole memory word. When transferred to the CRU interface, each successive bit receives an address that is sequentially greater than the address for the previous bit. This addressing mechanism results in an order reversal of the bits; that is, bit 15 of the memory word (or bit 7) becomes the lowest addressed bit in the CR U and bit 0 becomes the highest addressed bit in the CRU field.
An STCR instruction transfers data from the CRU to memory. If the operation involves a byte or less transfer, the transferred data will be stored right-justified in the memory byte with leading bits set to zero. If the operation involves from nine to 16 bits, the transferred data is stored right-justified in the memory word with leading bits set to zero.
0 2 3 4 5 6 7 8 9 10 11 12 13 14 15
X X X x I W12
DON'T CARE
+ 8 9 10 11 12 13 14 15
I I I I SIGNED
"" DISPLACEMENT
;;;; BIT 8 SIGN
U EXTENDED
0 2 3 4 5 6 7 8 10 11 12 13 14
0 0 0 ADDRESS BUS
'---v--" V SET TO ZERO EFFECTIVE CRU BIT ADDRESS
FOR ALL CRU OPERATIONS
FIGURE 4 - TMS 9900 SINGLE-BIT CRU ADDRESS DEVELOPMENT
CRU CRU INPUT OUTPUT
BITS BITS
N N
N+1 N+1
INPUT (STCR I
EFFECTIVE MEMORY ADDRESS 14
OUTPUT (LDCRI N+14 N+14
N+15 N+15
N; BIT SPECIFIED BY CRU BASE REGISTER
FIGURE 5 - TMS 9900 LDCR/STCR DATA TRANSFERS
When the input from the CRU device is complete, the first bit from the CRU is the least-significant-bit position in the
memory word or byte_
Figure 6 illustrates how to implement a 16-bit input and a 16-bit output register in the CRU interface. CRU addresses
are decoded as needed to implement up to 256 such 16-bit interface registers. In system application, however, only the
exact number of interface bits needed to interface specific peripheral devices are implemented. It is not necessary to
have a 16-bit interface register to interface an 8-bit device.
9
10
FIGURE 6 - TMS 9900 16-BIT INPUT/OUTPUT INTERFACE
2.6 EXTERNAL INSTRUCTIONS
The TMS 9900 has five external instructions that allow user-defined external functions to be initiated under program control. These instructions are CKON, CKOF, RSET, IDLE, and LREX. These mnemonics, except for IDLE, relate to
functions implemented in the 990 minicomputer and do not restrict use of the instructions to initiate various
user-defined functions. IDLE also causes the TMS 9900 to enter the idle state and remain until an interrupt, RESET, or LOAD occurs. When any of these five instructions are executed by the TMS 9900, a unique 3-bit code appears on the
most-significant 3 bits of the address bus (AO through A2) along with a CRUCLK pulse. When the TMS 9900 is in an idle state, the 3-bit code and CRUCLK pulses occur repeatedly until the idle state is terminated. The codes are:
EXTERNAL INSTRUCTION AO A1 A2
LREX H H H
CKOF H H L
CKON H L H
RSET L H H
IDLE L H L
Figure 7 illustrates typical external decode logic to implement these instructions. Note that a signal is generated to inhibit CR U decodes during external instructions.
176
TO MEMORY AND CRU
~ ~
,/ V 15
CRU INHIBIT SIGNAL
--Y7 LREX
L---c YO SN74LS138 --
Y6 CKOF ...
j5 3 ~A CKON i B Y5 TMS 9900 /
:.c.A2 ~ C --AO·A14 ..... RESET Y3
--G2BY2 IDLE
G1 G2A
I rI
CRlJCLK
-'-- -'--
FIGURE 7 - EXTERNAL INSTRUCTION DECODE LOGIC
2.7 LOAD FUNCTION
.. r
.
TO USER DEFINED EXTERNAL INSTRUCTION LOGIC
The LOAD signal allows cold-start ROM loaders and front panels to be implemented for the TMS 9900. When active,
LOAD causes the TMS 9900 to initiate an interrupt sequence immediately following the instruction being executed.
Memory location FF FC is used to obtain the vector (WP and PC). The old PC, WP and ST are loaded into the new
workspace and the interrupt mask is set to 0000. Then, program execution resumes using the new PC and WP.
11
12
RESET SIGNAL CAUSES IMMEDIATE ENTRY HERE
GET RESET VECTOR (WPAND PC) FROM LOCATION 0,2
STORE PREVIOUS PC, WP. AND ST IN NEW WORKSPACE. SET INTERRUPT MASK (ST12-ST15) = 0
N
Y
GET LOAD VECTOR (WP AND PC) FROM
LOCATION FFFC16. FFFE16
STORE PREVIOUS PC, WP. AND ST IN NEW WORKSPACE. SET INTERRUPT MASK (ST12 - ST15) = 0
Y
STORE PREVIOUS PC, WP. AND ST IN NEW WORKSPACE. SET INTERRUPT MASK (ST12 ':":'ST15) TO LEVEL - 1
FIGURE 8 - TMS 9900 CPU FLOW CHART
Y
N
N
176
2.8 TMS 9900 PIN DESCRIPTION
Table 2 defines the TMS 9900 pin assignments and describes the function of each pin.
TABLE 2
TMS 9900 PIN ASSIGNMENTS AND FUNCTIONS
SIGNATURE PIN I/O DESCRIPTION TMS 9900 PIN ASSIGNMENTS
AO (MSB)
A1
A2
A3
A4
A5
A6
A7
A8 A9
A10
A11
A12
A13
A14 (LSB)
00 (MSB)
01
02
03
04
05
06
07
08
09
010
011
012
013
014
015 (LSB)
VBB
Vce VOO
VSS
<1>1
<1>2
<1>3
<t>4
576
24
23
22
21
20
19
18
17
16
15
14
13
AODRESS BUS
OUT AO through A 14 comprise the address bus.
OUT This 3-state bus provides the memory
OUT address vector to the external·memory
OUT system when MEMEN is active and I/O-bit
OUT addresses and external-instruction addresses
OUT to the I/O system when MEMEN is inactive.
OUT The address bus assumes the high-impedance
OUT state when HOLOA is active.
OUT
OUT
OUT
OUT
12 OUT
11 OUT
10 OUT
DATA BUS
41 I/O 00 through 015 comprise the bidirectional
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
I/O 3-state data bus. This bus transfers memory
I/O data to (when writing) and from (when
I/O reading) the external-memory system when
I/O MEMEN is active. The data bus assumes the
I/O high-impedance state when HOLOA is
I/O active.
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
POWER SUPPLIES Supply voltage (-5 V NOM)
VBB
VCC 2
WAIT 3
LOAD 4
HOLDA 5
RESET 6
lAO 7
<1>1 8
ct>2 9
A14 10
A13 11
A12 12
A11 13
A10 14
A9 15
A8 16
A7 17
A6 18
A5 19
A4 20
A3 21
A2 22
A1 23
AO 24
ct>4 25
VSS 26
VDD 27
ct>3 28
DBIN 29
CRUOUT 30
CRUIN 31
INTREO 32
D
NC - No internal connection
2,59
27
26,40
Supply voltage (5 V NOM). Pins 2 and 59 must be connected in parallel.
Supply voltage (12 V NOM)
8
9
28
25
Ground reference. Pins 26 and 40 must be connected in parallel.
CLOCKS
IN Phase-1 clock
IN Phase-2 clock
IN Phase-3 clock
IN Phase-4 clock
64 HOLD
63 MEMEN
62 READY
61 WE
60 CRUCLK
59 VCC
58 NC
57 NC
56 D15
55 014
54 D13
53 012
52 011
51 D10
50 D9
49 D8
48 D7
47 D6
46 D5
45 D4
44 D3
43 D2
42 D1
41 DO
40 VSS
39 NC
38 NC
37 NC
36 ICO
35 IC1
34 IC2
33 IC3
13
14
SIGNATURE PIN
DBIN
MEMEN
WE
CRUCLK
CRUIN
CRUOUT
INTREQ
ICO (MSB)
IC1
IC2
IC3 (LSB)
HOLD
HOLDA
READY
WAIT
29
63
61
60
31
30
32
36
35
34
33
64
5
62
3
1/0
OUT
OUT
OUT
OUT
IN
OUT
IN
IN
IN
IN
IN
IN
OUT
IN
OUT
TABLE 2 (CONTINUED)
DESCRIPTION
BUS CONTROL
Data bus in. When active (high), DBIN indicates that the TMS 9900 has disabled its output buffers to
allow the memory to place memory·read data on the data bus during MEMEN. DBIN remains low in
all other cases except when HOLDA is active.
Memory enable. When active (low), MEMEN indicates that the address bus contains a memory address.
Write enable. When active (low), WE indicates that memory·write data is available from the TMS 9900
to be written into memory.
CRU clock. When active (high), CRUCLK indicates that external interface logic should sample the
output data on CRUOUT or should decode external instructions on AO through A2.
CRU data in. CRUIN, normally driven by 305tate or open·collector devices, receives input data from
external interface logic. When the processor executes a STCR or TB instruction,it samples CRU IN for
the level of the CRU input bit specified by the address bus (A3 through A14).
CRU data out. Serial 1/0 data appears on the CRUOUT line when an LDCR, SBZ, or SBO instruction
is executed. The data on CRUOUT should be sampled by external 1/0 interface logic when CRUCLK
goes active (h igh I.
INTERRUPT CONTROL
Interrupt request. When active (low), I NTR EQ indicates that an external interrupt is requested. If
INTREQ is active, the processor loads the data on the interrupt·code·input lines ICO through IC3 into
the internal interrupt-<:ode·storage register. The code is compared to the interrupt mask bits of the
status register. If equal or higher priority than the enabled interrupt level (interrupt code equal or less
than status register bits 12 through 15) the TMS 9900 interrupt sequence is initiated. If the
comparison fails, the processor ignores the request. INTREQ should remain active and the processor
will continue to sample ICO through IC3 until the program enables a sufficiently low priority to accept
the request interrupt.
Interrupt codes. ICO is the MSB of the interrupt code, which is sampled when INTREQ is active. When
ICO through IC3 are LLLH, the highest external·priority interrupt is being requested and when HHHH,
the lowest·priority interrupt is being requested.
MEMORY CONTROL
Hold. When active (low), HOLD indicates to the processor that an external controller (e.g., DMA
device) desires to utilize the address and data buses to transfer data to or from memory. The
TMS 9900 enters the hold state following a hold signal when it has completed its present memory
cycle.* The processor then places the address and data buses in the high·impedance state (along with
WE, MEMEN, and DBIN) and responds with a hold·acknowledge signal (HOLDA). When HOLD is
removed, the processor returns to normal operation.
Hold acknowledge. When active (high), HOLDA indicates that the processor is in the hold state and
the address and data buses and memory control outputs (WE, MEMEN, and DBIN) are in the
high·impedance state.
Ready. When active (high), READY indicates that memory will be ready to read or write during the
next clock cycle. When not·ready is indicated during a memory oper;)tion, the TMS 9900 enters a wait
state and suspends internal operation until the memory systems indicate ready.
Wait. When active (high), WAIT indicates that the TMS 9900 has entered a wait state because of a
not·ready condition from ,memory.
'If the cycle following the present memory cycle is also a memory cycle, it, too, is completed before the TMS9900 enters the hold state. The
maximum number of consecutive memory cycles is two. 276
276
TABLE 2 (CONCLUDED)
SIGNATURE PIN I/O DESCRIPTION
lAO OUT
LOAD 4 IN
TIMING AND CONTROL
Instruction acquisition. lAO is active (high) during any memory cycle when the TMS 9900 is acquiring an
instruction. lAO can be used to detect illegal op codes.
Load. When active (low), LOAD causes the TMS 9900 to execute a nonmaskable interrupt with memory
address FFFC16 containing the trap vector (WP and PC). The load sequence begins after the instruction
being executed is completed. LOAD will also terminate an idle state. If LOAD is active during the time
RESET is released, then the LOAD trap will occur after the RESET function is completed. LOAD should
remain active for one instruction period. lAO can be used to determine instruction boundaries. This signal
can be used to implement cold·start ROM loaders. Additionally, front·panel routines can be implemented
using CRU bits as front·panel-interface signals and software-control routines to control the panel
operations.
RESET 6 IN Reset. When active (low), RESET causes the processor to be reset and inhibits WE and CRUCLK. When
RESET is released, the TMS 9900 then initiates a level-zero interrupt sequence that acquires WP and PC
from locations 0000 and 0002, sets all status register bits to zero, and starts execution. RESET will also
terminate an idle state. RESET must be held active for a minimum of three clock cycles.
2.9 TIMING
2.9.1 MEMORY
A basic memory read and write cycle is shown in Figure 9. The read cycle is shown with no wait states and the write
cycle is shown with one wait state.
MEMEN goes active (low) during each memory cycle. At the same time that MEMEN is active, the memory address
appears on the address bus bits AO through A14. If the cycle is a memory-read cycle, DBIN will go active (high) at the
same time MEMEN and AO through A 14 become valid. The memory-write signal WE will remain inactive (high) during
a read cycle. If the read cycle is also an instruction acquisition cycle, IAQ will go active (high) during the cycle.
The READY signal, which allows extended memory cycles, is shown high during ¢l of the second clock cycle of the
read operation. This indicates to the TMS 9900 that memory-read data will be valid during ¢l of the next clock cycle.
If READY is low during ¢l, then the TMS 9900 enters a wait state suspending internal operation until a READY is
sensed during a subsequent ¢l. The memory read data is then sampled by the TMS 9900 during the next cpl, which
completes the memory-read cycle.
At the end of the read cycle, MEMEN and DBIN go inactive (high and low, respectively). The address bus may also
change at this time, however, the data bus remains in the input mode for one clock cycle after the read cycle.
A write cycle is similar to the read cycle with the exception that WE goes active (low) as shown and valid write data
appears on the data bus at the same time the address appears. The write cycle is shown as an example of a
one-wait-state memory cycle. READY is low during ¢l resulting in the WAIT signal shown.
2.9.2 HOLD
Other interfaces may utilize the TMS 9900 memory bus by using the hold operation (illustrated in Figure 10) of the
TMS 9900. When HOLD is active (low), the TMS 9900 enters the hold state at the next available non-memory cycle.
Considering that there can be a maximum of two consecutive memory cycles, the maximum delay between HOLD
going active to HOLDA going active (high) could be tc(cp) (for setup) + (4+W) tc(¢) + tc(¢) (delay for HOLDA), where
W is the number of wait states per memory cycle and tc(¢) is the clock cycle time. When the TMS 9900 has entered the
hold state, HOLDA goes active (high) and AO through A15, DO through D15 DBIN, 1'i7IEi'i7fE\f, and WE" go into a
high-impedance state to allow other devices to use the memory buses. When HOLD goes inactive (high), the TMS 9900
resumes processing as shown. If hold occurs during a CR U operation, the TMS 9900 uses an extra clock cycle (after the
removal of the HOLD signal) to reassert the CRU address providing the normal setup times for the CRU bit transfer
that was interrupted.
15
.... en
9 1
¢2
ct>3
¢4
MEMEN
DBIN
WE
AO·A14
READY
WAIT
DO-D15
IAQ
n'--------lnL..._________�nL..._________�n'--------'n~_______InL..._________In'_______'nL..._________InL.___1l
~ n n n n n n n n I
l n n n n n n \ I \ ~--------------~I I \
\\--____ ----11
__________ ~X~_V_A_L_ID_A_D_D_R_E_SS ____ _JX~ ______________ ~X~ _____ V_A_L_ID_A_D_D_R_E_SS ________ -JX~ ________ _
----------------------------------------~I \'----------CPU DRIVEN INPUT MODE CPU WRITE DATA CPU DRIVEN
__________ ~/SHOWN ASSUMING THIS \~ _________________________ _
\
CYCLE IS AN INSTRUCTION
ACQUISITION CYCLE
V I
MEMORY READ CYCLE WITH NO WAITS
\~-----~ _--------~I V MEMORY WRITE CYCLE WITH ONE WAIT
RD = READ DATA
FIGURE 9 - TMS 9900 MEMORY BUS TIMING
1>1 n n n n n n n.r.r <;'>2 Jl n n n n n rl n n <;'>3
<;,>4 n n n n n fL; MEMEN \ f' Hi-Z :S , AO-A14 =x >0 Hi-Z
'5 C =x X ) Hi-Z
C 00-015 J;
DBIN J \ Hi-Z "'~ I ~ L
WE \ Hi-Z f' ,-
READY ) ~§1'f g~R:e\ I '()('X)OO(X)O():~O~:<Cf~~ :xxxxxxxxxx:.;XXXXXXX>1>9&'j f;~EXXXXXXXX WAIT I \ )c
~,..
HOLDA I '-HOLD \ H- I
~ PROCESSOR OUTPUTS FLOATING ~I
FIGURE 10 - TMS 9900 HOLD TIMING
18
2.9.3 CRU
CRU interface timing is shown in Figure 11. The timing for transferring two bits out and one bit in is shown. These transfers would occur during the execution of a CRU instruction. The other cycles of the instruction execution are not illustrated. To output a CRU bit, the CRU-bit address is placed on the address bus AO through A 14 and the actual bit data on CRUOUT. During the second clock cycle a CRU pulse is supplied by CRUCLK. This process is repeated until the number of bits specified by the instruction are completed.
The CRU input operation is similar in that the bit address appears on AO through A 14. During the subsequent cycle the TMS 9900 accepts the bit input data as shown. No CRUCLK pulses occur during a CRU input operation.
3. TMS 9900 INSTRUCTION SET
3.1 DEFINITION
Each TMS 9900 instruction performs one of the following operations:
• Arithmetic, logical, comparison, or manipulation operations on data
Q Loading or storage of internal registers (program counter, work~pace pointer, or status)
• Data transfer between memory and external devices via the CRU
• Control functions.
3.2 ADDRESSING MODES
TMS 9900 instructions contain a variety of available modes for addressing random-memory data (e.g., program parameters and flags), or formatted memory data (character strings, data lists, etc.). The following figures graphically describe the derivation of the effective address for each a~dressing mode. The applicability of addressing modes to particular instructions is described in Section 3.5 along with the description of the operations performed by the instruction. The symbols following the names of the addressing modes [R, *R, *R+, @ LABEL, or@TABLE (R)l are the general forms used by TMS 9900 assemblers to select the addressing mode for register R.
3.2.1 WORKSPACE REGISTER ADDRESSING R
Workspace Register R contains the operand.
Register R
(PCI-1 Instruction ~WPI+2R-1 Operand
3.2.2 WORKSPACE REGISTER INDIRECT ADDRESSING *R
Workspace Register R contains the address of the operand.
Register R
(PCI-1 Instruction ~WPI+2R-1 Address HL... __ o_p_e_ra_n_d_---'
3.2.3 WORKSPACE REGISTER INDIRECT AUTO INCREMENT ADDRESSING *R+
Workspace Register R contains the address of the operand. After acquiring the operand, the contents of workspace register R are incremented.
(PCI--1 Instruction ~WPI+2R
176
2 1-0 ~-c..1-I-<l: ~o: Ow
c.. 0
2 o
<,'>1
<,'>2
<;>3
<>4
AO·A15
CRUCLK
CRUOUT
~~ ~ ~ CRUIN -w
c.. o
n n n n n n n n n n Jl n n n n n n n n ~ ~ n n n n n
n n n n n n
UNKNOWN CRU BIT ADDRESS n CRU ADDRESS n + 1 ; n n H
UNKNOWN X CRU DATA OUT n X CRU DATA OUT n + 1 X ;;
\~--------------~,...--------------~/ V CRU OUTPUT
FIGURE 11 - TMS 9900 CRU INTERFACE TIMING
n n
n n ~ n n n
X CRU ADDRESS m x=
X UNKNOWN x==
\'-------~v,...--------J/ INPUT BIT m
CRUINPUT
20
3.2.4 SYMBOLIC (DIRECT) ADDRESSING @ LABEL
The word following the instruction contains the address of the operand.
(PC)
(PC)+2
Instruction
~ ____ L_ab_e_I ____ J-----~·~I ___ o_p_e_ra_n_d __ ~
3.2.5 INDEXED ADDRESSING @ TABLE (R)
The word following the instruction contains the base address. Workspace register R contains the index value. The sum of the base address and the index value results in the effective address of the operand.
Register R
(PC)--.j Instruction ~(WP)+2R
(PC)+2
3.2.6 IMMEDIATE ADDRESSING
The word following the instruction contains the operand.
(PC)
(PC)+2
3.2.7 PROGRAM COUNTER RELATIVE ADDRESSING
Effective Operand
Address
The 8-bit signed displacement in the right byte (bits 8 through 15) of the instruction is multiplied by 2 and added to the
updated contents of the program counter. The result is placed in the PC.
Jump Instruction
2 • DISP
3.2.8 CRU RELATIVE ADDRESSING
The 8-bit signed displacement in the right byte of the instruction is added to the CRU base address (bits 3 through 14 of the workspace register 12). The result is the CRU address of the selected CRU bit.
Instruction
(PC)I------+-!
o 7 8 15 CRU Bit
Register 12 Address
(WP)+2·12 CRU Base Add
o 23 1415
3.3 TERMS AND DEFINITIONS
The following terms are used in describing the instructions of the TMS 9900:
TERM DEFINITION
B Byte indicator (1=byte, 0 = word)
C Bit count
D Destination address register
DA Destination address
lOP Immediate operand
LSB(n) Least significant (right most) bit of (n)
MSB(n) Most significant (left most) bit of (n)
N Don't care
PC Program counter
Result Result of operation performed by instruction
S Source address register
SA Source address
ST Status register
STn Bit n of status register
TD Destination address modifier
TS Source address modifier
W Workspace register
WAn Workspace register n
(n) Contents of n
a~b a is transferred to b
Inl Absolute value of n
+ Arithmetic addition
- Arithmetic subtraction
AND Logical AND
OR Logical OR
@ Logical exclusive OR
n Logical complement of n
3.4 STATUS REGISTER
The status register contains the interrupt mask level and information pertaining to the instruction operation.
o 2 3 4 5 6 7
BIT NAME INSTRUCTION
STO LOGICAL C,CB
GREATER
THAN CI
ABS
All Others
ST1 ARITHMETIC C,CB
GREATER
THAN CI
ABS
All Others
8 9 10 11 12 13 14 15
not used (=0) ST12 ST13 ST14 ST15
Interrupt Mask
CONDITION TO SET BIT TO 1
If MSB(SA) = 1 and MSB(DA) = 0, or if MSB(SA) = MSB(DA)
and MSB of (DA) - (SA) = 1
If MSB(W) = 1 and MSB of lOP = 0, or if MSB(W) = MSB of
lOP and MSB of lOP - (W) = 1
If (SA) -:/= 0
If result -:/= 0
If MSB(SA) = 0 and MSB(DA) = 1, or if MSB(SA) = MSB(DA)
and MSB(DA) - (SA) = 1
If MSB(W) = 0 and MSB of lOP = 1, or if MSB(W) = MSB of
lOP and MSB of lOP - (W) = 1
If MSB(SA) = 0 and (SA) -:/= 0
If MSB of result = 0 and result -:/= 0
- Continued
21
22
BIT NAME INSTRUCTION CONDITION TO SET BIT TO 1
ST2 EQUAL C,CB If (SA) = (DA)
C1 If (W) = lOP
COC If (SA) and (DA) = 0
CZC If (SA) and (DA) = 0
TB IfCRUIN=1
ABS If (SA) = 0
All others If result = 0
ST3 CARRY A, AB, ABS, AI, DEC,
DECT,INC,INCT, If CARRY OUT = 1
NEG,S, SB
SLA, SRA, SRC, SRL If last bit shifted out = 1
ST4 OVERFLOW A,AB If MSB(SA) = MSB(DA) and MSB of result *' MSB(DA)
AI If MSB(W) = MSB of lOP and MSB of result *' MSB(W)
S,SB If MSB(SA) *' MSB(DA) and MSB of result *' MSB(DA)
DEC,DECT If MSB(SA) = 1 and MSB of result = 0
INC,INCT If MSB(SA) = 0 and MSB of result = 1
SLA If MSB changes during shift
DIV If MSB (SA) = 0 and MSB(DA) = 1, or if MSB(SA) = MSB(DA)
and MSB of (DA) - (SA) = 0
ABS,NEG If (SA) = 800016
ST5 PARITY CB, MOVB If (SA) has odd number of 1's
LDCR, STCR If 1 ,;:;; C ,;:;; 8 and (SA) has odd number of 1's
AB, SB, SOCB, SZCB If result has odd number of 1's
ST6 XOP XOP If XOP instruction is executed
ST12-ST15 INTERRUPT L1MI If corresponding bit of lOP is 1
MASK RTWP If corresponding bit of WR15 is 1
3.5 INSTRUCTIONS
3.5.1 Dual Operand I nstructions with Multiple Addressing Modes for Source and Destination Operand
o 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: OP CODE B TD D TS S
If B = 1 the operands are bytes and the operand addresses are byte addresses. If B = 0 the operands are words and the
operand addresses are word addresses.
The addressing mode for each operand is determined by the T field of that operand.
TS OR To SOR D ADDRESSING MODE NOTES
00 0,1, ... 15 Workspace register 1
01 0,1, ... 15 Workspace register indirect
10 0 Symbolic 4
10 1,2, ... 15 Indexed 2,4
11 0,1, ... 15 Workspace register indirect auto·increment 3
NOTES: 1. When a workspace register is the operand of a byte instruction (bit 3 = 1), the left byte (bits 0 through 7) is the operand and the
right byte (bits 8 through 15) is unchanged.
2. Workspace register 0 may not be used for indexing.
3. The workspace register is incremented by 1 for byte instructions (bit 3 = 1) and is incremented by 2 for word instructions (bit 3 = 0).
4. When TS = TO = 10, two words are required in addition to the instruction word. The first word is the source operand base
address and the second word is the destination operand base address.
176
17G
RESUL T STATUS OP CODE B
MNEMONIC MEANING COMPARED BITS DESCRIPTION 0 1 2 3
TO 0 AFFECTED
A 1 0 1 0 Add Yes 04 (SA)+(OA) -4- (DA)
AB 1 0 1 1 Add bytes Yes 0-5 (SA)+(OA) -4- (OA)
C 1 0 0 0 Compare No 0-2 Compare (SA) to (DA) and set
appropriate status bits
CB 1 0 0 1 Compare bytes No 0-2,5 Compare (SA) to (DA) and set
appropriate status bits
S 0 1 1 0 Subtract Yes 04 (DA) - (SA) -4- (DA)
SB 0 1 1 1 Subtract bytes Yes 0-5 (DA) - (SA) -4- (DA)
SOC 1 1 1 0 Set ones corresponding Yes 0-2 (DA) OR (SA) -4- (DA)
SOCB 1 1 1 1 Set ones corresponding bytes Yes 0-2,5 (DA) OR (SA) -4- (DA)
SZC 0 1 0 0 Set zeroes corresponding Yes 0-2 (DA) AND (SA)"""* (DA)
SZCB 0 1 0 1 Set zeroes corresponding bytes Yes 0-2,5 (DA) AND (SA) -4- (DA)
MOV 1 1 0 0 Move Yes 0-2 (SA) """*(DA)
MOVB 1 1 0 1 Move bytes Yes 0-2,5 (SA) -4- (DA)
3.5.2 Dual Operand Instructions with Multiple Addressing Modes for the Source Operand and Workspace Register Addressing for the Destination
o 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: OP CODE o TS S
The addressing mode for the source operand is determined by the T S field.
TS S ADDRESSING MODE NOTES
00 0,1, ... 15 Workspace register
01 0,1, ... 15 Workspace register indirect
10 0 Symbolic
10 1,2, ... 15 Indexed 1
11 0,1, ... 15 Workspace register indirect auto increment 2
NOTES: 1. Workspace register 0 may not be used for indexing.
2. The workspace register is incremented by 2.
RESULT OPCODE
MNEMONIC o 1 2 345 MEANING COMPARED
TO 0
COC o 0 1 000 Compare ones No
corresponding
CZC o 0 1 001 Compare zeros No
correspondi ng
XOR o 0 1 0 1 0 Exclusive OR Yes
MPY o 0 1 1 1 0 Multiply No
DIV o 0 1 1 1 1 Divide No
STATUS
BITS DESCRIPTION
AFFECTED
2 Test (D) to determine if l's are in each bit
position where l's are in (SA). If so, set ST2.
2 Test (D) to determine if O's are in each bit
position where l's are in (SA). If so, set ST2.
0-2 (D) (t) (SA) -4- (D)
Multiply unsigned (D) by unsigned (SA) and
place unsigned 32..IJit product in 0 (most
significant) and 0+1 (least significant). If WR15
is 0, the next word in memory after WR 15 will
be used for the least significant half of the
product.
4 If unsigned (SA) is less than or equal to unsigned
(D), perform no operation and set ST4. Otherwise,
divide unsigned (0) and (0+1) by unsigned
(SA). Quotient ..... (D), remainder ..... (0+1). If
o = 15, the next word in memory after WR 15
will be used for the remainder.
23
24
3.5.3 Extended Operation (XOP) Instruction
o 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: o o o D TS S
The TS and S fields provide multiple mode addressing capability for the source operand. When the XOP is executed, ST6 is set and the following transfers occur: (4016 + 40) ~ (WP)
(4216 + 40) ~ (PC) SA ~ (newWR11) (old WP) ~ (new WR 13) (old PC) ~ (new WR14) (old ST) ~ (new WR15)
The TMS 9900 does not test interrupt requests (I NTR EQ) upon completion of the XOP instruction.
3.5.4 Single Operand Instructions
o 2 3 4 5 6 7 8 9 10 11 12 13 14
General format: OP CODE TS S
The TS and S fields provide multiple mode addressing capability for the source operand.
RESULT OP CODE
STATUS
MNEMONIC MEANING COMPARED BITS DESCRIPTION o 1 2 345 6 7 8 9 TOO AFFECTED
B o 0 0 o 0 1 000 1 Branch No - SA ..... (PC)
BL 00000 1 1 0 1 0 Branch and link No - (PC) ~ (WR11); SA ~ (PC)
BLWP 00000 1 o 0 0 0 Branch and load No - (SA) ~ (WP);(SA+1) ~ (PC);
workspace pointer (old WP) ~ (new WR 13);
(old PC) ~ (new WR14);
(old ST) ~ (new WR15);
15
the interrupt input (lNTREQ) is not
tested upon completion of the
BLWP instruction.
CLR o 0 0 0 0 1 o 0 1 1 Clear operand No - O~(SA)
SETO o 0 0 0 0 1 1 1 o 0 Set to ones No - FFFF16 ~ (SA)
INV 00000 1 0 1 0 1 Invert Yes 0-2 (SA)~ (SA)
NEG 00000 1 0 1 o 0 Negate Yes 0-4 -(SA) ~ (SA)
ABS 00000 1 1 1 0 1 Absolute valuc* No 0-4 I(SA)I-+ (SA)
SWPB 00000 1 1 o 1 1 Swap bytes No - (SA), bits 0 thru 7 ~ (SA), bits
8 thru 15; (SA), bits 8 thru 15-+
(SA), bits 0 thru 7.
INC o 0 0 0 0 1 o 1 1 0 Increment Yes 0-4 (SA) + 1 -+ (SA)
INCT 00000 1 o 1 1 1 Increment by two Yes 0-4 (SA) + 2~ (SA)
DEC 0 0 0 0 0 1 1 000 Decrement Yes 0-4 (SA) -1 ~ (SA)
DECT o 0 0 0 0 1 100 1 Decrement by two Yes 0-4 (SA) - 2~ (SA)
xt o 0 0 0 0 1 001 0 Execute No - Execute the instruction at SA.
• Operand is compared to zero for status bit. t If additional memory words for the execute instruction are required to define the operands of the instruction located at SA, these words
will be accessed from PC and the PC will be updated accordingly. The instruction acquisition signal (IAQ) will not be true when the TMS 9900 accesses the instruction at SA. Status bits are affected in the normal manner for the instruction executed.
276
3.5.5 CRU Multiple-Bit Instructions
o 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: OPCODE C TS S
The C field specifies the number of bits to be transferred. If C = D, 16 bits will be transferred. The CR U base register (WR12, bits 3 through 14) defines the starting CRU bit address. The bits are transferred serially and the CRU address is incremented with each bit,transfer, although the contents of WR12 is not affected. TS and S provide multiple mode addressing capability for the source operand. If 8 or fewer bits are transferred (C = 1 through 8), the source address is a byte address. If 9 or more bits are transferred (C = D, 9 through 15). the source address is a word address. If the source is addressed in the workspace 'register indirect auto increment mode, the workspace register is incremented by 1 if C = 1 through 8, and is incremented by 2 otherwise.
RESULT OPCODE
STATUS
MNEMONIC MEANING o 1 234 5 COMPARED BITS DESCRIPTION
TO 0 AFFECTED
LDCR 001 100 Load communcation Yes 0-2,5 t Beginning with LSB of (SA), transfer the
register specified number of bits from (SA) to
the CRU.
STCR o 0 1 1 0 1 Store communcation Yes 0-2,5 t Beginning with LSB of (SA), transfer the
register specified number of bits from the CRU to
(SAl. Load unfilled bit positions with O.
tST5 is affected only if 1 .;; C .;; 8.
3.5.6 CRU Single-Bit Instructions
o 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: OP CODE SIGNED DISPLACEMENT
CRU relative addressing is used to address the selected CRU bit.
STATUS
MNEMONIC OP CODE
o 1 234 567 MEANING BITS DESCRIPTION
AFFECTED
SBO 000 1 1 1 o 1 Set bit to one - Set the selected CRU output bit to 1.
SBZ 000 1 1 1 1 0 Set bit to zero - Set the selected CRU output bit to O.
TB 000 1 1 1 1 1 Test bit 2 If the selected CRU input bit = 1, set ST2.
3.5.7 Jump Instructions
o 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: OP CODE DISPLACEMENT
Jump instructions cause the PC to be loaded with the value selected by PC relative addressing if the bits of ST are at specified values. Otherwise, no operation occurs and the next instruction is executed since PC points to the next instruction. The displacement field is a word count to be added to PC. Thus, the jump instruction has a range of -128
to 127 words from memory-word address following the jump instruction. No ST bits are affected by jump instruction.
25
26
OPCODE MNEMONIC MEANING ST CONDITION TO LOAD PC
0 1 2 3 4 5 6 7
JEQ 0 0 0 1 0 0 1 1 Jump equal ST2 = 1
JGT 0 0 0 1 0 1 0 1 Jump greater than STl = 1
JH 0 0 0 1 1 0 1 1 Jump high STO = 1 and ST2 = 0
JHE 0 0 0 1 0 1 0 0 Jump high or equal STO = 1 or ST2 = 1
JL 0 0 0 1 1 0 1 0 Jump low STO = 0 and ST2 = 0
JLE 0 0 0 1 0 0 1 0 Jump low or equal STO = 0 or ST2 = 1
JLT 0 0 0 1 0 0 0 1 Jump less than STl = 0 and ST2 = 0
JMP 0 0 0 1 0 0 0 0 Jump unconditional unconditional
JNC 0 0 0 1 0 1 1 1 Jump no carry ST3 = 0
JNE 0 0 0 1 0 1 1 0 Jump not equal ST2 = 0
JNO 0 0 0 1 1 0 0 1 Jump no overflow ST4 = 0
JOC 0 0 0 1 1 0 0 0 Jump on carry ST3 = 1
JOP 0 0 0 1 1 1 0 0 Jump odd parity ST5 = 1
3.5.8 Shift Instructions
o 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: OPCODE C w
If C = 0, bits 12 through 15 of WRO contain the shift count. If C = 0 and bits 12 through 15 of WRO = 0, the shift
count is 16.
RESULT STATUS OP CODE
MNEMONIC MEANING COMPARED BITS DESCRIPTION 0 1 2 3 4 5 6 7
TOO AFFECTED
SLA 0 0 0 0 1 0 1 0 Shift left arith metic Yes 0-4 Shift (W) left. Fill vacated bit
positions with O.
SRA 0 0 0 0 1 0 0 0 Shift right arithmetic Yes 0-3 Shift (W) right. Fill vacated bit
positions with original MSB of (W).
SRC 0 0 0 0 1 0 1 1 Shift right circular Yes 0-3 Shift (W) right. Shift previous LSB
into MSB.
SRL 0 0 0 0 1 0 0 1 Shift right logical Yes 0-3 Shift (W) right. Fill vacated bit
positions with O's.
3_5.9 Immediate Register Instructions
o 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: OP CODE N W
lOP
RESULT STATUS OP CODE
MNEMONIC MEANING COMPARED BITS DESCRIPTION o 1 23456 7 8 9 10 TO 0 AFFECTED
AI o 0 0 0 0 0 1 000 1 Add immediate Yes 0-4 (W) + lOP ~ (W)
ANDI 000000 1 o 0 1 0 AND immediate Yes 0-2 (W) AND IOP~ (W)
CI 000000 1 0 1 0 0 Compare Yes 0-2 Compare (W) to lOP and set
immediate appropriate status bits
LI 000000 1 0 o 0 0 Load immediate Yes 0-2 IOP~(W)
ORI o 0 0 0 0 0 1 0 o 1 1 OR immediate Yes 0-2 (W) OR lOP ~ (W)
176
3.5.10 Internal Register Load Immediate Instructions
o 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: OPCODE N
lOP
OP CODE MNEMONIC MEANING DESCRIPTION
0 1 2 3 4 5 6 7 8 9 10
LWPI 0 0 0 0 0 0 1 0 1 1 1 Load workspace pointer immediate IOP-+ (WP), no ST bits affected
LIMI 0 0 0 0 0 0 1 1 0 0 0 Load interrupt mask lOP, bits 12 thru 15 --+ST12
thru ST15
3.5.11 Internal Register Store Instructions
o 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: OPCODE N W
No ST bits are affected.
OP CODE MNEMONIC MEANING DESCRIPTION
0 1 2 3 4 5 6 7 8 9 10
STST 0 0 0 0 0 0 1 0 1 1 0 Sto re status register (ST) -+ (W)
STWP 0 0 0 0 0 0 1 0 1 0 1 Sto re workspace pointer (WP)--+(W)
3.5.12 Return Workspace Pointer (RTWP) Instruction
0 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: 0 0 0 0 0 0 0 0 N
The RTWP instruction causes the following transfers to occur:
(WR15) --+ (ST) (WR14) --+ (PC) (WR13) --+ (WP)
3.5.13 External Instructions
0 2 3 4 5 6 7 8 9 10 11 12 13 14 15
General format: OPCODE N
External instructions cause the three most-significant address lines (AD through A2) to be set to the below-described levels and the CRUCLK line to be pulsed, allowing external control functions to be initiated.
STATUS ADDRESS OPCODE
MNEMONIC MEANING BITS DESCRIPTION BUS 012 3 4 5 6 7 8 9 10
AFFECTED AO Al A2
IDLE o 0 0 0 0 0 1 1 o 1 0 Idle - Suspend TMS 9900 L H L
instruction execution until
an interrupt, LOAD, or --RESET occurs
RSET 000000 1 1 0 1 1 Reset 12-15 0--+ ST12 thru ST15 L H H
CKOF 00000 0 1 1 1 1 0 User defined --- H H L
CKON o 0 0 000 1 1 1 0 1 User defined --- H L H
LREX 000000 1 1 1 1 1 User defined --- H H H
17G
27
28
3.6 TMS 9900 INSTRUCTION EXECUTION TIMES
Instruction execution times for the TMS 9900 are a function of:
1) Clock cycle time,tc(¢)
2) Addressing mode used where operands have mUltiple addressing mode capability
3) Number of wait states required per memory access.
Table 3 lists the number of clock cycles and memory accesses required to execute each TMS 9900 instruction. For instructions with multiple addressing modes for either or both operands, the table lists the number of clock cycles and memory accesses with all operands addressed in the workspace·register mode. To determine the additional number of clock cycles and memory accesses required for modified addressing, add the appropriate values from the referenced tables. The total instruction·execution time for an instruction is:
T = tc(¢) (C + W·M)
where: T = total instruction execution time; tc(¢) = clock cycle time; C = number of clock cycles for instruction execution plus address modification; W = number of required wait states per memory access for instruction execution plus address
modification; M = number of memory accesses.
CLOCK MEMORY INSTRUCTION CYCLES ACCESS
C M A 14 4 AB 14 4 ABS (MSB = 0) 12 2
(MSB = 1) 14 3 AI 14 4 ANDI 14 4 B 8 2 BL 12 3 BLWP 26 6 C 14 3 CB 14 3 CI 14 3 CKOF 12 1 CKON 12 1 CLR 10 3 COC 14 3 CZC 14 3 DEC 10 3 DECT 10 3 DIV (ST4 is set! 16 3 DIV (ST4 is reset) 92-124 6 IDLE 12 1 !NC 10 3 INCT 10 3 INV 10 3 Jump (PC is
changed) 10 1 (PC is not
changed) 8 1 LDCR (C = 0) 52 3
(1';;C';;8) 20+2C 3 (9 ';;C.;;15) 20+2C 3
LI 12 3 L1MI 16 2 LREX 12 1
RESET function 26 5
LOAD function 22 5 Interrupt context
switch 22 5
TABLE 3
INSTRUCTION EXECUTION TIMES
ADDRESS MODIFICATIONt INSTRUCTION SOURCE DEST
A A LWPI B B MOV A - MOVB A - MPY
- - NEG - - ORI A - RSET A - RTWP A - S A A SB B B SBO
- - SBZ
- - SETa
- - Shift (C*O) A - (C=O. Bits 12-15 A - of WRO=O) A - (C=O. Bits 12--15 A - of WRP=N"O) A - soc A - SOCB A - STCR (C=O) - - (1';;C.;;7)
A - (C=8)
A -I A -
(9<eC<e15) STST STWP
- - SWPB SZC
- - SZCB A - TB B - x ** A - XOP - - XOR - -
- -
- -
- -
- -
~ I U"',"",' .".,,, 0000-01 FF.0320-
033F.OCOO-OFFF. 0780-07FF
CLOCK CYCLES
C 10 14 14 52 12 14 12 14 14 14 12 12 10
12+2C
52
20+2N 14 14
60 42 44 58
8 8
10 14 14 12
8 36 14
6
• Execution time is dependent upon the partial quotient after each clock cycle during execution .
MEMORY ADDRESS ACCESS MODIFICATIONt
M SOURCE DEST 2 - -
4 A A 4 B B 5 A -3 A -
4 - -1 - -
4 - -
4 A A 4 B B 2 - -2 - -
3 A -3 - -
4 - -
4 - -
4 A A 4 B B 4 A -4 B -4 B -
4 A -
2 - -
2 - -
3 A -4 A A 4 B B 2 - -
2 A -
8 A -
4 A -
1 - -
•• Execution time is added to the execution time of the instruction located at the source address minus 4 clock cycles and 1 memory access time. tThe letters A and B refer to the respective tables that follow.
576
ADDRESS MODIFICATION - TABLE A ADDRESS MODIFICATION - TABLE B
CLOCK MEMORY CLOCK MEMORY
ADDRESSING MODE CYCLES ACCESSES ADDRESSING MODE CYCLES ACCESSES
C M C M
WR (TS or TD = 00) 0 0 WR (TS or TO = 00) 0 0
WR indirect (TS or TD = 01) 4 1 WR indirect (TS or TO = 01) 4 1
WR indirect auto- WR indirect auto-
increment (TS or TD = 11) 8 2 increment (TS or TO = 11) 6 2
Symbolic (TS or TD = 10, Symbolic (TS or TO = 10,
S or D = 0) 8 1 S or 0 = 0) 8 1
Indexed (TS or TD = 10, Indexed (TS or TO = 10, S or D *- 0) 8 2 S or 0 *- 0) 8 2
As an example, the instruction MOVB is used in a system with tc(¢) = 0.333 ps and no wait states are required to access memory. Both operands are addressed in the workspace register mode:
T = tc(¢) (C + W·M) = 0.333 (14 + 0-4) j1S = 4.662 j1S.
If two wait states per memory access were required, the execution time is:
T = 0.333 (14 + 2·4) j1S = 7.326 j1S.
If the source operand was addressed in the symbolic mode and two wait states were required:
T = tc(¢) (C + W·M) C= 14+8=22 M=4+1=5
T = 0.333 (22 + 2· 5) j1s = 10.656 j1S.
4. TMS 9900 ELECTRICAL AND MECHANICAL SPECIFICATIONS
4.1 ABSOLUTE MAXIMUM RATINGS OVER OPERATING FREE-AIR TEMPERATURE RANGE (UNLESS OTHERWISE NOTEO)*
Supply voltage, VCC (see Note 1)
Supply voltage, VOO (see Note 1) Supply voltage, VSS (see Note 1) All input voltages (see Notp. 1) Output voltage (with respect to VSS) Continuous power dissipation Operating free-air temperature range Storage temperature range.
-0.3 to 20 V -0.3 to 20 V -0.3 to 20 V -0.3 to 20 V -2 V to 7 V
1.2W O°C to 70°C
. -55°C to 150°C
·Stresses beyond those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and
functional operation of the device at these or any other conditions beyond those indicated in the "Recommended Operating Conditions"
section of this specification is not implied. Exposure to absolute-maximum-rated conditions for extended periods may affect device reliability.
NOTE 1: Under absolute maximum ratings voltage values are with respect to the most negative supply, V BB (substrate), unless otherwise
noted. Throughout the remainder of this section, voltage values are with respect to VSS'
29
30
4.2 RECOMMENDED OPERATING CONDITIONS
MIN NOM MAX UNIT
Supply voltage, VBB -5.25 -5 -4.75 V
Supply voltage, VCC 4.75 5 5.25 V
Supply voltage, VDD 11.4 12 12.6 V
Supply voltage, VSS 0 V
High-level input voltage, VIH (all inputs except clocks) 2.4 V
High-level clock input voltage, VIH(q,) VDD V
Low-level input voltage, VIL (all inputs except clocks) 0.4 V
Low-level clock input voltage, VI L(q,) 0.3 V
Operating free-air temperature, T A 0 70 °c
4.3 ELECTRICAL CHARACTERISTICS OVER FULL RANGE OF RECOMMENDED OPERATING CONDITIONS (UNLESS OTHERWISE NOTED)
PARAMETER TEST CONDITIONS MIN Typt MAX UNIT
Data bus during DBIN VI = VSS to VCC ±75
WE, MEMEN, DBIN VI = VSS to VCC ±75
II Input current during HOLDA j.lA
Clock VI =-1 Vto 13.6V ±75
Any other inputs VI = VSS to VCC ±10
VOH High-level output voltage 10 = -0.4 rnA 2.4 V
VOL Low-level output voltage 10 = 3.2 rnA 0.4 V
IBB Supply current from VBB 1 rnA
ICC Supply current from VCC 125 rnA
100 Supply current from VDD 30 rnA
Ci Input capacitance (any inputs except f = 1 MHz,
15 pF clock and data bus) unmeasured pins at VSS
Ci(q,1) Clock-1 input capacitance f = 1 MHz,
100 pF unmeasured pins at VSS
Ci(q,2) Clock-2 input capacitance f = 1 MHz,
200 pF unmeasured pins at VSS
Ci(q,3) Clock-3 input capacitance f = 1 MHz,
100 pF unmeasured pins at VSS
Cj(q,4) Clock-4 input capacitance f = 1 MHz,
100 pF unmeasured pins at VSS
COB Data bus capacitance f= 1 MHz,
25 pF unmeasured pins at VSS
Co Output capacitance (any output except f = 1 MHz,
15 pF data bus) unmeasured pins at VSS
t All tYpical values are at T A = 25° C and nominal voltages.
4.4 TIMING REQUIREMENTS OVER FULL RANGE OF RECOMMENDED OPERATING CONDITIONS (SEE FIGURES 12 AND 13)
PARAMETER MIN NOM MAX
tc(<t>} Clock cycle time 0.333
tr(<t>} Clock rise time 12
tf~} Clock fall time 12
tw(<t>} Pulse width, any clock high 45
td(<t>1 L-</>2H} Delay time, clock 1 low to clock 2 high (time between clock pulses) 5
td(<t>2L-<t>3H} Delay time, clock 2 low to clock 3 high (time between clock pulses) 5
td(<t>3L-<t>4H} Delay time, clock 3 low to clock 4 high (time between clock pulses) 5
td(<t>4L-</>1 H) Delay time, clock 4 low to clock 1 high (time between clock pulses) 5
td(<t>1 H-</>2H} Delay time, clock 1 high to clock 2 high (time between leading edges) 80
td(<t>2H-<t>3H} Delay time, clock 2 high to clock 3 high (time between leading edges) 80
td(<t>3H-</>4H} Delay time, clock 3 high to clock 4 high (time between leading edges) 80
td(<t>4H-</>1H} Delay time, clock 4 high to clock 1 high (time between leading edges) 80
tsu Data or control setup time before clock 1 40
th Data hold time after clock 1 10
4.5 SWITCHING CHARACTERISTICS OVER FULL RANGE OF RECOMMENDED OPERATING CONDITIONS (SEE FIGURE 13)
PARAMETER TEST CONDITIONS MIN TYP MAX
tp LH or tpH L Propagation delay time, clocks to outputs CL = 200 pF 20
/"'11 .. 1-------------- tc(1)1
UNIT
}J.s
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
ns
~td(91H_¢2H} ~ I
~_;vt r~:VI~~~~I:I~, L ~: :\0.7 V I _ tr(1)}----.j j.- -.ll.-tf(r,'l}1 II
j+tW(r/l}-.! I I+-- ldll/J2H-</J3H} ---., II
CLOCK.2 'd'.'L-¢2H' --J..-.l! \L-___ : ___________ ~ : _____ _ I I I+- td(l/J3H-</>4Ht~
II II II II _
________ td(_r/l2L_-<t>3_HII_ .. ~~tl \ II CLOCK l/J3 t L----_________________ _
I I II I j4-td(r,'l4H -<t>1H'ji
_________________ td_Ir/l_3_L
_-<t>_4_H_} _1"_-A~11 > \~ 'd'04L"'HI CLOCK l/J4 _ :t: NOTE: All timing and voltage levels shown on r/l1 applies to l/J2.l/J3. and l/J4 in the same manner.
FIGURE 12 - CLOCK TIMING
31
32
INPUT 7lA::: ~~~f~{f:ttll#ttmmltllltlIltA --.l tsu I+- -+l th r-
I M I 95vn 0.7 V : 9.5 V '-...;;.0:..;...7....;v ______________ ---' I '--_________ _ CLOCK ¢1
I
____ ~:---9.5---lV~'-------------~------'r--\~-----CLOCK ¢2
CLOCK ¢4
95V~ 9.5vn ----------------~I ~--------------------I
i 95vn I i ----------------~----~I I
--J I+- tpLH II --.I I+- I _ I I tpHL I I
CLOCK <1>3
CRUCLK OUTPUT : 1"V J 1,'V! : ~ I+-tPLH
-------=------~ ~I r tPLH - _I I
WE OUTPUT
WAIT OUTPUT
J.- tPLH OR tpHL
I
All OTHER OU"UTSr:tJ:l!~~¥V~_1'=I...;;.:~::....;:-------V-;;....;ID-t--------...J'Ii:A~~~~ii~'ti tThe number of cycles over which input/output data must/will remain valid can be determined from Section 3.9. Note that in all cases data
should not change during 1>1. FIGURE 13-SIGNAL TIMING
5. TMS 9900 PROTOTYPING SYSTEM
5.1 HARDWARE
The TMS 9900 prototyping system enables the user to generate and debug software and to debug I/O controller interfaces. The prototyping system consists of:
• 990/4 computer with TMS 9900 microprocessor
• 1024 bytes of ROM containing the bootstrap loader for loading prototyping system software, the
front-panel and maintenance utility, and the CPU self-testing feature
• 16,896 bytes of RAM with provisions for expansion up to 57,334 bytes of RAM
• Programmable-write-protect feature for RAM
• Interface for Texas Instruments Model 733 ASR* Electronic Data Terminal with provisions for up to five additional interface moculdes
• Requires remote device control and 1200 baud EIA interface option on 733 ASR.
276
o Available with Texas Instruments Model 733 ASR Electronic Data Terminal
o 7-inch-high table-top chassis
o Programmer's front panel with controls for run, halt, single-instruction execute, and entering and displaying memory or register contents
• Power supply with the following voltages: 5 V dc @20 A
12 V dc @ 2 A -12 V dc @ 1 A -5 V [email protected] A
o Complete hardware and software documentation.
5.2 SYSTEM CONSOLE
The system console for the prototyping system is the 733 ASR, which provides keyboard entry, 30-character-per-second thermal printer, and dual cassette drives for program loading and storage.
5.3 SOFTWARE
The following software is provided on cassette for loading into the prototyping system:
o Debug Monitor - Provides full control of the prototyping system during program development and includes single instruction, multiple breakpoints, and entry and display capability for register and memory contents for debugging user software under 733 ASR console control.
• One-Pass Assembler - Converts source code stored on cassette to relocatable object on cassette and generates program listing. (Object is upward compatible with other 990 series assemblers).
o Linking Loader - Allows loading of absolute and relocatable object modules and links object modules as they are loaded.
o Source Editor - Enables user modification of both source and object from cassette with resultant storage on cassette.
o Trace Routine - Allows user to monitor status of computer at completion of each instruction.
o PROM Programming/Documentation Facility - Provides documentation for ROM mask. generation, or communicates directly with the oPtional PROM Programmer Unit.
5.4 OPTIONS
The following optional equipment is offered for the prototyping system:
• Battery-pack/standby-power supply
• PROM programming unit and adapter boards
o Universal wire-wrap modules
• Expansion RAM modules
• Expansion EPROM modules
• I/O modules and other interfaces
• Rack-mounted version
• International ac voltage option
33
34
6. TMS 9900 SUPPORT CIRCUITS
MEMORY DEVICE ORGAN IZATION/FUNCTI ON 1/0 STRUCTURE PACKAGE ACCESS TIME
RAMS TMS 4036-2 64 x 8 static Common bus 20 pin 450 ns MAX
TMS 4033 1024 x 1 static Dedicated bus 16 pin 450 ns MAX
TMS 4039-2 256 x 4 static Dedicated bus 22 pin 450 ns MAX
TMS 4042-2 256 x 4 static Common bus 18 pin 450 ns MAX
TMS 4050 4096 x 1 dynamic Common bus 18 pin 300 ns MAX
TMS 4060 4096 x 1 dynamic Dedicated bus 22 pin 300 ns MAX
ROMS/PROMS TMS 4700 1024 x 8 ROM 24 pin 450 ns MAX
SN74S371 256 x 8 ROM 20 pin 70 ns MAX
SN74S471 256 x 8 PROM 20 pin 70 ns MAX
SN74S472 512 x 8 PROM 20 pin 55 ns TYP
PERIPHERALS SN74LS259t Addressable latch 16 pin
SN74LS251 t Data multiplexer 16 pin
SN74148 Priority encoder 16 pin
SN74S412 8-bit 1/0 port 24 pin
SN75355 t Quad TTL-to-MOS driver 16 pin
TMS 6011 UART 40 pin
SN74S241 Bidirectional bus driver 20 pin
tTo be announced.
7. SYSTEM DESIGN EXAMPLES
Figure 14 illustrates a typical minimum TMS 9900 system. Eight bits of input and output interface are implemented. The memory system contains 1024 x 16 ROM and 256 x 16 RAM memory blocks. The total package count for this system is 15 packages.
A maximum TMS 9900 microprocessor system is illustrated in Figure 15. ROM and RAM are both shown for a total of 65,536 bytes of memory. The I/O interface supports 4096-output bits and 4096-input bits. Fifteen external interrupts are implemented in the interrupt interface. The clock generator and control section contains memory decode logic, synchronization logic, and the clock electronics. Bus buffers, required for this maximally configured system, are indicated on the system buses.
< 12 BITS ADDRESS BUS 15 BITS ,~~------------------------~ r------------------, r----------------~ r---------------~
..---------II I ~r_----~--------~
B BITS ) SN74LS251k==' IN -------,/ '\ l.- I-----------~ C RU IN
I "1----B~TS <.tL-------.&,/ SN74LS259k'---
OUT I ~----------------~CRUCLK
1-----------1- C RUOUT
AO·A14
DBIN I-------.... ~ WE I-------+~
TMS 9900 CPU
I
I I -"'./~
,1 j RAM TMS 4042
..
I INTERRUPTCODE=t -~ ICO·IC3 .J ..
IN TE R RUPT R,EQUEST I NTREQ 00-015 K'\r _________ D_A_T_A_B_U_S ______________ 1_6_B_IT_S ____ ---./)
01-<,',4 .. ________ . .,......~-------l
CLOCK GENERATOR
,~------------~ FIGURE 14 - MINIMUM TMS 9900 SYSTEM
ADDRESS BUS r-------~ r---------------~
DATA BUS
-t>-, . , BUFFER
FIGURE 15 - MAXIMUM TMS 9900 SYSTEM
35
8. MECHANICAL DATA
ct ct '-------------3.200 ± 0.030------------..!
1---0.900 ± 0.020 -----l 0.185 MAX1 I. . I 1;0.020 MIN
~4 ~SEAnNGC 1050
0 PLANE
90 0.010-.11- .- --ll. 0.017 NOM 0.120 MIN I I- 0.050 NOM~ ~ .0.003 -J
~ 0.050 PIN SPACING 0.100 T.P. ±0.020
(See Note A)
NOTE A. Each pin centerline is located within 0.010 of its true longitudinal position.
36
CB-183A
74072-56-CS Printed in U.S.A.