Series 3000 Reference Manual Feb76

Series_3000_Reference_Manual_Feb76 Series_3000_Reference_Manual_Feb76

User Manual: manual pdf -FilePursuit

Open the PDF directly: View PDF PDF.
Page Count: 151

DownloadSeries 3000 Reference Manual Feb76
Open PDF In BrowserView PDF
inter
Series 3000 Family Of
Computing Elements The Total System Solution.
Since its introduction in September, 1974, the Series 3000 family of computing
elements has found acceptance in a wide range of high performance
applications from disk controllers to airborne CPU's.
The Series 3000 family represents more than a simple collection of bipolar
components, it is a complete family of computing elements and hardware/software
support that greatly simplifies the task of transforming a design from concept
to production.
The Series 3000 Component Family

A complete set of computing elements that are designed as a system requiring
a minimum amount of ancillary circuitry.
3001
3002
3003 .
3212
3214
3216/26
ROMs/PROMs
RAMs

Microprogram Control Unit.
Central Processing Element.
Look-Ahead Carry Generator.
Multi-Mode Latch Buffer.
Interrupt Control Unit.
Parallel Bi-directional Bus Driver.
A complete set of bipolar ROMs and PROMs.
A Complete family of MOS and bipolar RAMs.

rhe Series 3000 Support

A comprehensive support system that assists the designer in writing
microprograms, debugging hardware and microcode, and programming
prototype and production PROMs.
CROMIS

Cross microprogram assembler.

MDS-800

Microcomputer development system with TTY/CRT,
line printer, diskette, PROM programmer and high
speed paper tape reader facilities.

ICE-30

In-circuit emulation for the 3001 MCU.

ROM-SIM

ROM simulation for all of Intel's Bipolar ROMs
and PROMs.

Application
Notes

Central processor and disk controller designs and
system timing considerations.

Customer
Course

Comprehensive 3 day course covering the component
family, CPU and controller designs, microprogramming
and the MDS-800, ICE-30 and ROM-SIM operation.

The Series 3000 family is designed to provide a Total System Solution: high
performance, minimum package count and total commitment to support.

Contents

Series 3000
Reference
Manual

INTRODUCTION ........................ 1-1
COMPONENT FAMILY .................. 2-1
3001 Microprogram Control Unit ....... 2-1
3002 Central Processing Element ...... 2-15
3003 Look-Ahead Carry Generator .... 2-31
3212 Multi-Mode Latch Buffer ......... 2-39
3214 Interrupt Control Unit . . . . . . .. . .. 2-49
3216/3226 Parallel Bi-Directional
Bus Driver. . . . . . . . . . . . . . . . . . . . . . . . . .. 2-61
APPLICATIONS ......................... 3-1
3000 Family System Timing ............ 3-1
Disk Controller Designed With Series 3000
Computing Elements. . . . . . . . . . . . . . . . .. 3-9
Central Processor Designs Using The
Intel® Series 3000 Computing
Elements . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-19
ORDERING AND PACKAGING
INFORMATION ......................... 4-1
Ordering Information .................. 4-1
Package Outlines ...................... 4-2

Series 3000 Family

INTRODUCTION
A family architecture

busses to be formed simply by connecting inputs and
outputs together.
Each CPE represents a complete two-bit slice through
the data-processing section of a computer. Several CPES
may be arrayed in parallel to form a processor of any
desired word length. The MCU, which together with the
microprogram memory, controls the step-by-step operation of the processor, is itself a powerful microprogramed state sequencer.
Enhancing the performance and capabilities of these
two components are a number of compatible computing
elements. These include a fast look-ahead carry generator, a priority interrupt unit, and a multimode latch
buffer. A complete summary of the first available members of this family of LSI computing elements and memories is given in the table on this page.

To reduce component count as far as practical, a
multi-chip LSI microcomputer set must be designed as a
complete, compatible family of devices. The omission of
a bus or a latch or the lack of drive current can multiply
the number of miscellaneous SSI and MSI packages to a
dismaying extent-witness the reputedly LSI minicomputers now being offered which need over a hundred extra TIL packages on their processor boards to
support one or two custom LSI devices. Successful integration should .result in a minimum of extra packages,
and that includes the interrupt and the input/output
systems.
With this objective in mind, the Intel Schottky bipolar LSI microcomputer chip set was developed. Its two
major components, the 3001 Microprogram Control
Unit (MCU) and the 3002 Central Processing Element
(CPE), may be combined by the digital designer with
standard bipolar LSI memory to construct high-performance controller-processors (Fig.!) with a minimum
of ancillary logic.
Among the features that minimize package count and
improve performance are: the multiple independent
data and address busses that eliminate time multiplexing and the need for external latches; the three-state
output buffers with high fanout that make bus drivers
unnecessary except in the largest systems, and the separate output-enable logic that permits bidirectional

3001

Microprogram control unit

3002

Central processing element

3003
3212
3214
3216
3226
3601
3604
3301 A

Look.-ahead carry generator
Multimode latch buffer

3304A

CONTROL TO

MEMORY

DATA BUS

MEMORY 110

AOORESS BUS

TO MEMORY

Priority interrupt unit
Noninverting bidirectional bus driver
Inverting bidirectional bus driver
256-by-4-bit programable read-only memory
512-by-8-bit programable read-only memory
256-by-4-bit read-only memory
512-by-8-bit read-only memory .

MICRO
NE~T

ADDRESS

PROGRAM

MEMORY

CONTROL

CLOCK
181T

1 BIT

8 BITS

FROM EXTERNAL
110 DEVICES

DATA IN FROM
MEMORY

1. Bipolar microcomputer. Block diagram shows how to implement a typical 16-bit controller-processor with new family of
bipolar computer elements. An array of eight central processing elements (CPEs} is governed by a microprogram control unit
(MCU} through a separate read-only memory that carries the microinstructions for the various processing elements. This ROM
may be a fast, off-the-shelf unit.
Intll Corporation ... mll no responsibility for the u. of any circuitry or microprogram other than circuitry or microprograms embodied in an Intel product. No other circuit patent licenas Ire implied.

1-1

Series 3000 Family
ePEs form a processor
Each CPE (Fig. 2) carries two bits of five independent
busses. The three input busses can be used in several
different ways. Typically, the K-bus is used for microprogram mask or literal (constant) value input, while
the other two input busses, M and I, carry data from external memory or input/output devices. D-bus outputs
are connected to the CPE accumulator; A-bus outputs
are connected to the CPE memory address register. As
the CPES are wired together, all the data paths, registers,
and busses expand accordingly.
Certain data operations can be performed simply by
connecting the busses in a particular fashion. For example, a byte exchange operation, often used in datacommunications processors, may be carried out by wiring the D-bus outputs back to the I-bus inputs, exchanging the high-order outputs and low-order inputs.
Several other discretionary shifts and rotates can be
accomplished in this manner.
A sixth CPE bus, the seven-line microfunction bus,
controls the internal operation of the CPE by selecting
the operands and the operation to be performed. The
arithmetic function section, under control of the microfunction bus decoder, performs over 40 Boolean and
binary functions, including 2's complement arithmetic
and logical AND, OR, NOT, and exclusive-NOR. It increments, decrements, shifts left or right, and tests for zero.

Unlike earlier MSI arithmetic-iogic units, which contain many functions that are rarely used, the microfunction decoder selects only useful CPE operations.
Standard carry look-ahead outputs, X and y, are generated by the CPE for use with available look-ahead devices or the Intel 3003 Look-ahead Carry Generator. Independent carry input, carry output, shift input, and
shift output lines are also available.
What's more, since the K-bus inputs are always
ANDed with the B-multiplexer outputs into the arithmetic function section, a number of useful functions
that in conventional MSI ALUs would require several
cycles are generated in a single CPE microcycle. The
type of bit masking frequently done in computer control
systems can be performed with the mask supplied to the
K-bus directly from the microinstruction.
Placing the K-bus in either the aU-one or all-zero
state wiU, in most cases, select or deselect the accumulator in the operation, respectively. This toggling effect of
the K-bus on the accumulator nearly doubles the CPE's
repertoire of microfunctions. For instance, with the
K-bus in the all-zero state, the data on the M-bus may
be complemented and loaded into the CPE's accumulator. The same function selected with the K-bus in the
all-one state will exclusive-NOR the data on the M-bus
with the accumulator contents.

MEMORY DATA BUS

MEMORY AOORESS BUS OUTPUTS

MEMORY
ADDRESS
ENABLE

CARRY
LOOK-AHEAD
OUTPUTS

{_j
__--========~lL-l=t:==~==TTll
--:-------------1
x

MICRO-

!+--+-+--+-+--j:>---CARRY INPUT

y

RIPPLE CARRY - OUTPUT
./
SHIFT RIGHT./"
INPUT

EA

CLIO-~-----------+t"'T'"T"""_ _ _ _ _-r-.-J
vee

.-J

{;;O-i

FUNCTION;'
BUS
INPUTS
F,'

I
FUM~g~N

I
I

DECOOER

F,

~

SHIFT RIGHT
OUTPUT

I

CLK.....I

L __ _

__.-J
M,

Mo

~

~--.--­

MEMORY OATA
BUS INPUTS

EXTERNAL MASK BUS
BUS I NPUTS
INPUTS

2. Central processing element. This element contains all the circuits representing a two-bit-wide slice through a small computer's central processor. To build a processor of word width N, all that's necessary is to connect an array of NI2 CPEs together.

1-2

Series 3000 Family
Threelnnovatlonl
other approach would require some type of program
counter. To simplify its logic, the MCV (Fig. 4) uses the
classic approach and requires address control information from each microinstruction. This information is
not, however, simply the next microprogram address.
Rather, it is a highly encoded specification of the next
address and one of a set of conditional tests on the MCV
bus inputs and regist(:rs.
The next-address logic and address control functions
of the MCV are based on a unique scheme of memory
addressing. Microprogram addresses are organized as a
two-dimensional array or matrix. Unlike in ordinary
memory, which has linearly sequenced addresses, each
microinstruction is pinpointed by its row and column
address in the matrix. The 9-bit microprogram address
specifies the row address in the upper 5 bits and the
column address in the lower 4 bits. The matrix can
therefore contain up to 32 row addresses and 16 column addresses for a total of 512 microinstruction
addresses.
The next-address logic of the MCV makes extensive
use of this addressing scheme. For example, from a particular row or column address, it is possible to jump either unconditionally to any other location in that row or
column or conditionally to other specified locations, all
in one operation. For a given location in the matrix
there is a fixed subset of microprogram addresses that
may be selected as the next address. These are referred
to as a jump set, and each type of MCV address control
jump function has ajump set associated with it.
Incorporating a jump operation in every microinstruction improves performance by allowing processing functions to be executed in parallel with program
branches. Reductions in microcode are also obtained
because common microprogram sequences can be
shared without the time-space penalty usually incurred
by conditional branching.
Independently controlled lIag logic in the MCV is
available for latching and controlling the value of the
carry and shift inputs to the CP array. Two lIags, called
C and Z, are used to save the state of the lIag input line.
Under microprogram control, the lIag logic simultaneously sets the state of the lIag output line, forcing the
line to logical 0, logical I, or the value of the C or Z lIag.
The jump decisions are made by the next-address
logic on the basis of: the MCV'S current microprogram
address; the address control function on the accumulator inputs; and the data that's on the macroinstruction
(X) bus or in the program latch or in the lIags. Jump decisions may also be based on the instantaneous state of
the lIag input line without loading the value in one of
the !lags. This feature eliminates many extra microinstructions that would be required if only the lIag lIip1I0p could be tested.
Microinstruction sequences are normally selected by
the operation codes (op codes) supplied by the microinstructions, such as control commands or user instructions in main memory. The MCV decodes these commands by using their bit patterns to determine which is
to be the next microprogram address. Each decoding results in a 16-way program branch to the desired microinstruction sequence.

The power and versatility of the CPE are increased by
three rather novel techniques. The first of these is the
use of the carry lines and logic during non-arithmetic
operations for bit testing and zero detection. The carry
circuits during these operations perform a word-wide
logical OR (oRing adjacent bits) of a selected result from
the arithmetic section. The value of the OR, called the
carry OR, is passed along the carry lines to be ORed with
the result of an identical operation taking place simultaneously in the adjacent higher-order CPE.
Obviously, the presence of at least one bit in the logical I state will result in a true carry output from the
highest-order CPE. This output, as explained later, can
be used by the MCV to determine which microprogram
sequence to follow. With the ability to mask any desired
bit, or set of bits, via the K-bus inputs included in the
carry OR, a powerful bit-testing and zero-detection facility is realized.
The second novel CPE feature is the use of three-state
outputs on the shift right output (RO) and carry output
(CO) lines. During a right shift operation, the CO line is
placed in the high-impedance (Z) state, and the shift
data is active on the RO line. In all other CPE operations,
the RO line is placed in the Z state, and the carry data is
active on the CO line. This permits the CO and RO lines
to be tied together and sent as a single rail input to the
MCV for testing and branching. Left shift operations utilize the carry lines, rather than the shift lines, to propagate data.
The third novel CPE capability, called conditional
clocking, saves microcode and microcycles by reducing
the number of microinstructions required to perform a
given test. One extra bit is used in the microinstruction
to selectively control the gating of the clock pulse to the
central processor (CP) array. Momentarily freezing the
clock (Fig. 3) permits the CPE microfunction to be performed, but stops the results from being clocked into
the specified registers. The carry or shift data that results from the operation is available because the arithmetic section is CQmbinatorial, rather than sequential.
The data can be used as a jump condition by the MCV
and in this way permits a variety of nondestructive tests
to be performed on register data.

Microprogram control
The classic form of microprogram control incorporates a next-address field in each microinstruction-any
MICIIOINSTRlICTlDN WORD .

CPARRAY

3. Conditional clock. This feature permits an extra bit in
microinstruction to selectively control gating of clock pulse
to CP array. Carry or shift data thus made available permits
tests to be performed on data with fewer microinstructions.

1-3

Series 3000 Family
MICROPROGRAM
ROW AOORESS
COLUMN AOORESS

ENABLE ROW AODRESS "'"

r----

INTERRUPT STROBE ENABLE

NEXT
AODRESS
CONTROL
FUNCTION
INPUTS

l

•
._ .... MA.

"

,.------A..---MA J - • . MAo

:~:~

AC.

---f-------l I

AC,----1f-------,
AC, - I f - - - - - - - ,
AC, ----1r-----.,
AC,----1f---.

MICROPROGRAM LO
AOORESS LOAO

PR, }
PR,
PR,

PROGRAM
LATCH
OUTPUTS

__ -.J
FC o Fe,

FI

~

INPUT

FLAG LOGIC
CONTROL

Fa

Fe .. Fe J

PX 7

• · .•• -

px.

~'
•
CONTROL PRIMARY
FLAG LOGIC ---"
INSTRUI~TlONS

\

OUTPUT

,I

SX 3

·· ....

sXo

~

SECONOARY
INSTRUCTIONS
IN

4. Microprogram control unit. The MCU's two major control functions include controlling the sequence of microprograms
fetched from the microprogram memory, and keeping track of the carry inputs and outputs of the CP array by means of the
flag logic control.

Cracking the op cod••

For instance, the Meu can be microprogramed to directly decode conventional 8-bit op codes. In these op
codes the upper 4 bits specify one of up to 16 instruction
classes or address modes, such as register, indirect, or
indexed. The remaining bits specify the particular subclass such as ADD, SKIP IF ZERO, and so on. If a set of op
codes is required to be in a different format, as may occur in a full emulation, an external pre-decoder, such as
ROM, can be used in series with the X-bus to reformat
the data for the Meu.
In rigorous decoding situations where speed or space
is critical, the fu)] 8-bit macroinstruction bus can be
used for a single 256-way branch. Pulling down the load
line of the Meu forces the 8 bits of data on the X-bus
(typically generated by a predecoder) directly into the
microprogram address register.
The data thUs directly determines the next microprogram address which should be the start of the desired microprogram sequence. The load line may also
be used by external logic to force the Meu, at power-up,
into the system re-initialization sequence.

From time to time, a microprocessor must examine
the state of its interrupt system to determine whether an
interrupt is pending. If one is, the processor must suspend its normal execution sequence and enter an interrupt sequence in the microprogram. This requirement is
handled by the Meu in a simple but elegant manner.
When the microprogram flows through address row 0
and column IS, the interrupt strobe enable line of the
Meu is raised. The interrupt system, an Intel 3214 Interrupt Control Unit, responds by disabling the row address outputs of the Meu via the enable row address
line, and by forcing the row entry address of the microprogram interrupt sequence onto the row address bus.
The operation is normally performed just before the
macroinstruction fetch cycle, so that a macroprogram is
interrupted between, not during, macroinstructions.
The 9-bit microprogram address register and address
bus of the Meu directly address 5 12 microinstructions.
This is about twice as many as required by the typical
16-bit disk-controller or central processor.

1-4

Series 3000 Family
STANOARO fUNCTION flELOS

USER·DEfINABLE fUNCTION flELOS

A

r~-------------------#A~------------------~\ r
CPARRAY
fUNCTION

I

fLAG LOGIC
fUNCTION

I --

JUMP
fUNCTION

:::S-;" flELO

' - -_ _ _ _---L_ _ _ _ _ _ _ _ _---L. _ _ -

I-- 7

I"I.~

BITS - - _ a

-+1,_--7

4 BITS ........

-TI

____

\

-::O:L7R:s:R-l
fUNCTIONS
I

J.- - -

-+1. . ---

BITS--_.I"I.>---- N BITS - -.....

-4~

__ J

n'BITS---.j

5. Microinstruction format. Only a generalized microinstruction format can be shown since allocation of bits for the mask
field and optional processor functions depends on the wishes of the designer and the tradeoffs he decides to make.
Moreover, multiple 512 microinstruction memory
planes can easily be implemented simply by adding an
extra address bit to the microinstruction each time the
number of extra planes is doubled. Incidentally, as the
number of bits in the microinstruction is increased.
speed is not reduced. The additional planes also permit
program jumps to take place in three address dimensions instead of two.
Because of the tremendous design flexibility offered
by the Intel computing elements, it is impossible to describe every microinstruction format exactly. But generally speaking. the formats all derive from the one in Fig.
5. The minimum width is 18 bits: 7 bits for the address
control functions. plus 4 bits for the flag logic control:
plus 7 bits for the CPE microfunction control.
More bits can be added to the microinstruction format to provide such functions as mask field input to the
CP array. external memory control. conditional clocking.
and so on. Allocation of these bits is left to the designer
who organizes the system. He is free to trade off
memory costs. support logic. and microinstruction
cycles to meet his cOSt/performance objectives.

The cOlt/performance spectrum

The total flexibility of the Intel LSI computing elements is demonstrated by the broad cost/performance
spectrum of the controllers and processors that can be
constructed with them. These include:
• High-speed controllers. built with a stand-alone ROMMCV combination that sequences at up to 10 megahertz; it can be used without any CPES as a system state
coniroller.
• Pipelined look-ahead carry controller-processors,
where the overlapped microinstruction fetch/execute
cycles and fast-carry logic reduce the l6-bit add time to
less than 125 nanoseconds.
• Ripple-carry controller processors (a l6-bit design
adds the contents of two registers in 300 nanoseconds).
• Multiprocessots. or networks of any of the above controllers and processors, to provide computation, interrupt superviSion. and peripheral control.
These configurations represent a range of microinstruction execution rates of from 3 million to 10 million instructions per second, or up to two orders of
magnitude faster, for example, than p-channel microprocessors. Moreover, the increases in processor performance are achieved with relative simplicity. A
ripple-carry l6-bit processor uses one MCV, eight CPES.
plus microprogram memory. One extra computing element, the 3003 Look-ahead Carry Generator, enhances
. the processor with fast carry. Increasing speed further
by pipe lining, the overlap of microinstruction fetch and
execute cycles, requires a few D-type MSI flip-flOps.
At the multiprocessor level, the microprogram
memory, MCV. or CPE devices can be shared. A l6-bit
processor. complete with bus control and microprogram
memory. requires some 20 bipolar LSI packages and
half that many small-scale ICs. In this configuration. it
replaces an equivalent MSI TIL system having more
than 200 packages.
Furthermore. systems built with this large-scale integrated circuitry are much smaller and less costly and
consume less energy than equivalent designs using
lower levels of transistor-transistor-logic integration.
Even allowing for ancillary logic circuits. the new bipolar computing elements cut 60% to 80% off the package
count in realizing most of today's designs made with
small- or medium-scale-integrated TIL.

Microprograming technology
• Microprogram: A type of program that directly
controls the operation of each functional element in a
microprocessor.
• Mlcrolnllrucllon: A bit pattern that is stored in a
microprogram memory word and specifies the operation of the individual LSI computing elements and related subunits, such as main memory and input loutput interfaces.
• Mlcrolnllrucllon lequence: The series of microinstructions that the microprogram control unit (MCU)
selects from the microprogram to execute a single
macroinstruction or control command. Microinstruction sequences can be, shared by several macroinstructions.
• Macrolnllructlon: Either a conventional computer
instruction (e.g. ADD MEMORY TO REGISTER, INCREMENT, and SKIP, etc.) or device controller command (e.g., SEEK, READ, etc.).

1-5

intel"

SCHOTTKY
BIPOLAR LSI
MICROCOMPUTER

3001
MICROPROGRAM
CONTROL UNIT

SET
The INTEL ® 3001 Microprogram Control Unit (MCU) controls the sequence in
which microinstructions are fetched
from the microprogram memory. Its
functions include the following:
Maintenance of the microprogram
address register.
Selection of the next microinstruction
based on the contents of the microprogram address register.
Decoding and testing of data supplied
via several input busses to determine
the microinstruction execution
sequence.
Saving and testing of carry output data
from the central processor (CP) array_
Control of carry/shift input data to
the CP array.
Control of microprogram interrupts_

High Performance - 85 ns Cycle
Time
TTL and DTL Compatible
Fully Buffered Three-State and Open
Collector Outputs
Direct Addressing of Standard Bipolar
PROM or ROM
512 Microinstruction Addressability
Advanced Organization
9-Bit Microprogram Address Regjster
and Bus
4·Bit Program Latch
Two Flag Registers
Eleven Address Control Functions
Three Jump and Test Latch
Functions
16·way Jump and Test Instruction
Bus Function
Eight Flag Control Functions
Four Flag Input Functions
Four Flag Output Functions
40 Pin DIP

2-1

PACKAGE CONFIGURATION

px.
PX 7
PX6
PX 5
sX 3
SX 2
PR 2
sx,
PR,
sXo
PRo
FC3
FC 2
FO
FC o
FC,
FI
ISE
ClK
GND

vcc
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

INTEl@

3001

~~
30
29

28
27
26
25
24
23
22
21

ACo
AC,
AC5
lD
ERA
MAs
MA7
MA6
MA.
MA.
MAo
MA3
MA2
MA,
EN
AGo
AC.
AC3
AC2

3001
PIN DESCRIPTION
NAME AND FUNCTION

TYPE 111

1-4

Primary Instruction Bus Inputs
Data on the primary instruction bus is tested by the JPX function to
determine the next microprogram address_

active LOW

5,6,8,10

Secondary Instruction Bus Inputs
Data on the secondary instruction bus is synchronously loaded into the
PR-Iatch while the data on the PX-bus is being tested (JPX)_ During a
subsequent cycle, the contents of the PR-Iatch may be tested by the
JPR, JLL, or JRL functions to determine the next microprogram address_

active LOW

7,9,11

PR-Latch Outputs
The PR-Iatch outputs are asynchronously enabled by the JCE function_
They can be used to modify microinstructions at the outputs of the
microprogram memory or to provide additional control lines_

open collector

PIN

SYMBOL

12,13,15,
16

·FC O- FC3

Flag Logic Control Inputs
The flag logic control inputs are used to cross-switch the flags (C and Z)
with the flag logic input (FI) and the flag logic output (FO).

14

FO

Flag Logic Output
The outputs of the flags (C and Z) are multiplexed internally to form the
common flag logic output_ The output may also be forced to a logical 0
or logical 1_

active LOW
three-state

17

FI

Flag Logic Input
The flag logic input is demultiplexed internally and applied to the inputs
of the flags (C and Z). Note: the flag input data is saved in the F-Iatch
when the clock input (CLK) is low_

active LOW

18

ISE

Interrupt Strobe Enable Output
The interrupt strobe enable output goes to logical 1 when one of the JZR
functions are selected (see Functional Description, page 6). It can be used
to provide the strobe signal required by the INTEL 3214 Priority Interrupt
Control Unit or other interrupt circuits_

19

CLK

Clock Input

20

GND

Ground

21-24
37-39

ACo-ACs

Next Address Control Function Inputs
All jump functions are selected by these control lines.

25

EN

Enable Input
When in the HIGH state, the enable input enables the microprogram
address, PR-Iatch and flag outputs.

26-29

MAo-MA3

Microprogram Column Address Outputs

three-state

30-34

MA,j-MAa

Microprogram Row Address Outputs

three-state

35

ERA

Enable Row Address Input
When in the LOW state, the enable row address input independently
disables the microprogram row address outputs. It can be used with the
INTEL 3214 Priority Interrupt Control Unit or other interrupt circuits
to facilitate the implementation of priority interrupt systems.

36

LD

Microprogram Address Load Input
When in the active HIGH state, the microprogram address load input
inhibits all jump functions and synchronously loads the data on the
instruction busses into the microprogram registllr. However, it does not
inhibit the operation of the PR-Iatch or the generation of the interrupt
strobe enable.

40

VCC

+5 Volt Supply

NOTE:
111 Active HIGH unless otherwise specified_

2-2

3001
LOGICAL DESCRIPTION
The MCU performs two major control
functions. First, it controls the sequence
in which microinstructions are fetched
from the microprogram memory. For
this purpose, the MCU contains a microprogram address register and the
associated logic for selecting the next
microinstruction address. The second
function of the MCU is the control of
the two flag flip·flops that are included
for interaction with the carry input and
carry output logic of the CP array.
The logical organization of the MCU
is shown in Figure 2.
NEXT ADDRESS LOGIC
The next address logic of the MCU pro·
vides a set of conditional and uncondi·
tional address control functions. These
address control functions are used to
implement a jump or jumpltest opera·
tion as part of every microinstruction.
That is to say, each microinstruction
typically contains a jump operation field
that specifies the address control
function, and hence, the next micro·
program address.

In order to minimize the pin count of
the MCU, and reduce the complexity of
the next address logic, the microprogram
address space is organized as a two
dimensional array or matrix. Each
microprogram address corresponds to
a unit of the matrix at a particular
row and column location. Thus, the 9bit microprogram address is treated as
specifying not one, but two addresses the row address in the upper five bits
and the column address in the lower
four bits. The address matrix can therefore contain, at most, 32 row addresses
and 16 column addresses for a total of
512 microinstructions.

possible jump target addresses are referred
to as a jump set. Each type of MCU
address control (jump) function has a
jump set associated with it. Appendix
C illustrates the jump set for each
function.
FLAG LOGIC
The flag logic of the MCU provides a
set of functions for saving the current
value of the carry output of the CP
array and for controlling the value of
the carry input to the CP array. These
two distinct flag control functions are
called flag input functions and flag
output functions.

The next address logic of the MCU
makes extensive use of this two component addressing scheme. For example,
from a particular row or column
address, it is possible to jump uncon·
ditionally in one operation anywhere in
that row or column. It is not possible,
however, to jump anywhere in the
address matrix. In fact, for a given location in the matrix, there is a fixed sub·
set of microprogram addresses that may
be selected as the next address. These

The flag logic is comprised of two
flip·flops, designated the C-flag and the
Z-flag, along with a simple latch, called
the F-Iatch, that indicates the current
state of the carry output line of the
CP array. The flag logic is used in conjunction with the carry and shift logic
of the CP array to implement a variety
of shift/rotate and arithmetic functions.

ENABLE

ROW

MICROPROGRAM MEMORY
ADDRESS

ADDRESS

MAo - - -

ERA

.....

MAo - - MAo

INTERRUPT
STROBE
ISE
ENABLE
EN

ACe

MCUOUTPUT
ENABLE

AC,
ADDRESS
CONTROL
fUNCTION

AC,
AC,
AC,
AC,
AC.

LOAD

LD

GND-,

~l-l--f~::~~+--PR2

vee ---.I

MOGRAM

I

PR, LATCH
' -_ _ _l""T"-PRO OUTPUTS

I
I
I

I
I

I
---~

FCo Fe,
FLAG

FLAG

FLAG

FLAG

PRIMARY

LOGIC

INPUT

OUTPUT

LOGIC

INSTRUCTION

CONTROL

BUS

CONtROL

F,

FO

FC2 FC3 PX, - - PX4

Figura 2. 3001 Block Diagram

2-3

SX3

-

-

SXo

SECONDARY
INSTRUCTION

aus

3001
FUNCTIONAL DESCRIPTION
ADDRESS CONTROL FUNCTIONS
The address control functions of the
MCU are selected by the seven input
lines designated ACO-ACS. On the
rising edge of the clock, the 9-bit microprogram address generated by the next
address logic is loaded into the microprogram address register. The next
microprogram address is delivered to the
microprogram memory via the nine
output lines designated MAo-MAs. The
microprogram address outputs are organized into row and column addresses
as:

JZR

Jump to zero row.
ACO-AC3 are used to
select 1 of 16 column
addresses in rowO, as the
next address.

JCR

Jump in current row.
ACO-AC3 are used to
select 1 of 16 addresses
in the current row, specified by MA4-MAS, as
the next address.

JCE

Jump in current column/
row group and enable
PR-Iatch outputs. ACoAC2 are used to select 1
of 8 row addresses in the
current row group, specified by MA7-MAs, as
the next row address. The
current column is specified by MAo-MA3. The
PR-Iatch outputs are
asynchronously enabled.

MAS MA7 MAs MA5 MA4
row address
MA3 MA2 MA, MAo
column address
Each address control function is specified by a unique encoding of the data on
the function input lines. From three to
five bits of the data specify the particular function while the remaining bits
are used to select part of either the row
or column address desired. Function
code formats are given in Appendix A,
"Address Control Function Summary."
The following is a detailed description
of each of the eleven address control
functions. The symbols shown below
are used throughout the description to
specify row and column addresses.
Symbol

Meaning
5-bit next row address
where n is the decimal row
address.

coin

4-bit next column address
where n is the decimal
column address.

FLAG CONDITIONAL ADDRESS
CONTROL (JUMP/TEST)
FUNCTIONS
The jump/test flag functions use the
current microprogram address, the contents of the selected flag or latch, and
several bits from the address control
function to generate the next microprogram address.
Mnemonic
JFL

UNCONDITIONAL ADDRESS CONTROL (JUMP) FUNCTIONS
The jump functions use the current
microprogram address (i.e., the contents
of the microprogram address register
prior to the rising edge of the clock) and
several bits from the address control inputs to generate the next microprogram
address.
Mnemonic

Function Description

JCC

Jump in current column.
ACo-AC4 are used to
se Iect 1 of 32 row addresses in the current
column, specified by

row group, specified by
MA7 and MAs, as the
next row address. If the
current column group
specified by MA3 is
coIO-coI7, the C-flag is
used to select col2 or
col3 as the next column
address. If MA3 specifies
column group cols-col,5,
the C-flag is used to select
col,O or col" as the next
column address.

MAO-MA3, as the next
address

JCF

JZF

Jump/test Z-flag. Identical
to the JCF function described above, except
that the Z-flag, rather
than the C-flag, is used to
select the next column
address.

PX-BUS AND PR-LATCH CONDITIONAL ADDRESS CONTROL
(JUMPITEST) FUNCTIONS
The PX-bus jump/test function uses the
data on the primary instruction bus
(PX4-PX71. the current mircoprogram
address, and several selection bits from
the address control function to generate
the next microprogram address. The
PR-Iatch jump/test functions use the
data held in the PR-Iatch, the current
microprogram address, and several selection bits from the address control
function to generate the next microprogram address.

Function Description

Mnemonic

Function Description

Jump/test F-Latch.
ACO-AC3 are used to
select 1 of 16 row addresses in the current
row group, specified by
MAs, as the next row
address. If the current
column group, specified
by MA3, is colo-coI7,
the F-Iatch is used to
select col2 or col3 as the
next column address. If
MA3 specifies column
group coIS-col,5, the
F-Iatch is used to select
col1O or col" as the
next column address.

JPR

Jump/test PR-Iatch.
ACO-AC2 are used to
select 1 of 8 row addresses in the current
row group, specified by
MA7 and MAS, as the
next row address. The
four PR-Iatch bits are
used to select 1 of 16
possible column addresses as the next
column address.

Mnemonic

Function Description

JLL

Jump/test leftmost PRlatch bits. ACO-AC2 are
used to select 1 of 8 row
addresses in the current
row group, specified by
MA7 and MAS, as the
next row address. PR2
and PR3 are used to

Jump/test C-flag.
ACO-AC2 are used to
select 1 of 8 row addresses in the current

2-4

3001
FUNCTIONAL DESCRIPTION (con't)
select 1 of 4 possible
column addresses in col4
through col7 as the next
column address.
JRL

JPX

Jump/test rightmost P R·
latch bits. ACo and ACl
are used to select 1 of 4
high·order row addresses
in the current row group,
specified by MA7 and
MAS, as the next row
address. PRo and PRl are
used to select 1 of 4 possible column addresses in
col12 through coilS as the
next column address.
Jump/test PX·bus and
load PR-Iatch. ACo and
ACl are used to select 1
of 4 row addresses in the
current row group, specified by MAs-MAS' as the
next row address. PX4PX7 are used to select 1
of 16 possible column
addresses as the next
column address. SXO. SX3 data is locked in the
PR-Iatch at the rising
edge of the clock.

FLAG CONTROL FUNCTIONS
The flag control functions of the MCU
are selected .by the four input lines
designated FCO-FC3. Function code
formats are given in Appendix B, "Flag
Control Function Summary."
The following is a detailed description
of each of the eight flag control
functions.
FLAG INPUT CONTROL FUNCTIONS
The flag input control functions select
which flag or flags will be set to the current value of the flag input (FI) line.
Data on FI is stored in the F-Iatch when
the clock is low. The content of the Flatch is loaded into the C and/or Z flag
on the rising edge of the clock.
Mnemonic

Function Description

SCZ

Set C-flag and Z-flag to
FI. The C-flag and the Zflag are both set to the
value of FI.

STZ

Set Z-flag to F I. The Zflag is set to the value of
FI. The C-flag is
unaffected.

STC

Set C-flag to F I. The Cflag is set to the value of
FI. The Z flag is
unaffected.

HCZ

Hold C-flag and Z-flag.
The values in the C-flag
and Z-flag are unaffected.

FLAG OUTPUT CONTROL
FUNCTIONS
The flag output control functions
select the value to which the flag output (FO) line will be forced.
Mnemonic

Function Description

FFO

Force FO to o. FO is
forced to the value of
10gicalO.

FFC

Force FO to C. FO is
forced to the value of
the C-flag.

FFZ

Force FO to Z. FO is
forced to the value of
the Z-flag.

FF1

Force FO to 1. FO is
forced to the value of
logical 1.

2-5

LOAD AND INTERRUPT
STROBE FUNCTIONS
The load function of the MCU is controlled by the input line designated LD.
If the LD line is active HIGH at the
rising edge of the clock, the data on
the primary and secondary instruction
busses, PX4-PX7 and SXO-SX3, is
loaded ·into the microprogram address
register. PX4-PX7 are loaded into
MAo-MA3 and SXO-SX3 are loaded
into M~-MA7. The high-order bit of
the microprogram address register MAs
is set to a logical O. The bits from the
primary instruction bus select 1 of 16
possible column addresses. Likewise,
the bits from the secondary instruction
bus select 1 of the first 16 row addresses.
The interrupt strobe enable of the MCU
is available on the output line designated
ISE. The line is placed in the active high
state whenever a JZR to COl15 is selected
as the address control function. Customarily, the start of a macroinstruction
fetch sequence is situated at rowo and
COl15 so that the INTEL 3214 Priority
Interrupt Control Unit may be enabled
at the beginning of the fetch/execute
cycle. The priority interrupt control
unit may respond to the interrupt by
pulling the enable row address (ERA)
input line down to override the selected
next row address from the MCU. Then
by gating an alternative next row address
on to the row address lines of the microprogram memory, the microprogram
may be forced to enter an interrupt
handling routine. The alternative row
address placed on the microprogram
memory address lines does not alter
the contents of the microprogram
address register. Therefore, subsequent
jump functions will utilize the row
address in the register, and not the
alternative row address, to determine
the next microprogram address.
Note, the load function always overrides
the address control function on ACoACe. It does not, however, override the
latch enable or load sub-functions of the
JCE or JPX instruction, respectively. In
addition, it does not inhibit the interrupt
strobe enable or any of the flag control
functions.

3001
D.C. AND OPERATING CHARACTERISTICS
ABSOLUTE MAXIMUM RATINGS·
Temperature Under Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , O°C to· 70°C
Storage Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -65°C to +160°C
All Output and Supply Voltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ;).5V to +7V
All Input Voltages

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -1.0V to +5.5V

Output Currents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 100 mA
·COMMENT: Stresses above those listed under "Absolute Maximum Ratings" may cause permanont damage to tho device. Thi. i•••tro•• rating only

of

and functional operation
the device at these or any other conditions above those indicated in the operational sections of this specification is not
implied. Exposure to absolute maximum ratings for extended periods may affect device reliability.

TA = O°C to 70°C

Vec = 5.0V ±5%

SYMBOL

PARAMETER

Vc

Input Clamp Voltage (All
Input Pins)

IF

Input Load Current:
CLK Input
EN Input
All Other Inputs

IR

MIN

TYP(1)

MAX

--o.B

-1.0

--0.075
--0.05
--0.025

Input Leakage Current:
ClK
EN Input
All Other Inputs

V

Ic =-5.mA

--0.75
--0.50
--0.25

mA
mA
mA

VF =0.45V

120

j.lA
j.lA
j.lA

VR

80
40

VIL

Input low Voltage

VIH

Input High Voltage

Icc

Power Supply Current (21

170

240

VOL

Output low Voltage
(All Output Pins)

0.35

0.45

VOH

Output High Voltage
(MAo-MAs. ISE. FO)

los

Output Short Circuit Current
(MAo-MAs. ISE. FO)

10 (of!)

O.B
2.0

2.4
-15

CONDITIONS

UNIT

V

= 5.25V

Vcc

= 5.0V

V

3.0
-28

Off-State O~tPut Current:
MAo-M.AS. FO
MAo-MAs. F.O. PRo-PR2

NOTES:
(1) Typical values are for TA = 25°C and nominal supply voltage.
(2) EN input grounded. all other inputs and outputs open.

2-6

mA
V

10L = 10mA

V

10H =-1 mA

--60

mA

Vec = 5.0V

-100
100

j.lA
j.lA

Vo = 0.45V
Vo = 5.25V

3001
A.C. CHARACTERISTICS AND WAVEFORMS
SYMBOL

TA ..

o·c to 70·C. vcc

PARAMETER

= 5.0V ±5%

MIN

Typl'l

MAX

UNIT

tCY

Cycle Time (21

85

60

ns

twp

Clock Pulse Width

30

20

ns

tSF
tSK
tsx
tSI

Control and Data Input Set·Up Times:
lD. ACo-ACS
FCO.FC,
SXO-SX3. PX4-PX7
FI

10
0
35
15

0

ns
ns
ns
ns

tHF
tHK
tHx
tHI

Control and Data Input Hold Times:
lD. ACo-ACs
FCo. FC,
SXO-SX3. PX4-PX7
FI

5
0
20
20

0

10

30

45

ns

25
5

ns
ns
ns
ns

5
8

tco

Propagation Delay from Clock Input (ClKI to Outputs
(MAo-MAs. Fa)

tKO

Propagation Delay from Control Inputs FC2 and FC3 to Flag
Out (Fa)

16

30

ns

tFO

Propagation Delay from Control Inputs ACo-ACs to latch
Outputs (PRo-PR2)

26

40

ns

tEO

Propagation Delay from Enable Inputs EN and ERA to Outputs
(MAo-MAs. Fa. PRo-PR2)

21

32

ns

tFI

Propagation Delay from Control Inputs ACo-ACS to Interrupt
Strobe Enable Output (lSE)

24

40

ns

NOTE:
I1l Typical values are for TA • 25°C and nominal supply voltage.
121 tCY = twp + tSF + tco

TEST CONDITIONS:

TEST lOAD CIRCUIT:
vee

Input pulse amplitude of 2.5 volts.
Input rise and fall times of 5 ns between 1 volt and 2 volts.
Output load of 10 mA and 50 pF.
Speed measurements are taken at the 1.5 volt level.

soon
OUT
1 Kfl

50pF

-=CAPACITANCE(21 T A .. 25·C

TYP

MAX

UNIT

Input Capacitance:
ClK.EN
All Other Inputs

11
5

16
10

pF
pF

Output Capacitance

6

12

pF

SYMBOL
CIN

CoUT

MIN

PARAMETER

NOTE:
(21 This parameter is periodically sampled and is not 100% tested. Condition 01 measurement is 1·1 MHz. VBIAS· 2.SV. Vcc = SV and
TA=2SoC.

2·7

3001
D.C. AND OPERATING CHARACTERISTICS
ABSOLUTE MAXIMUM RATINGS·
Temperature Under Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. -55°C to +125°C
Storage Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -i55°C to +160°C
All Output and Supply Voltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -il.5V to +7V
All Input Voltages

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -1.0V to +5.5V

Output Currents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 100 mA
'COMMENT: Stresses above 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 above those indicated in the operational sactions of this specification is not
implied. Exposure to absolute maximum ratings for extended periods may affect device reliability.

SYMBOL

PARAMETER

Vc

Input Clamp Voltage (All
Input Pins)

IF

Input load Current:
ClK Input
EN Input
All Other Inputs

IR

MIN

Typ (1 )

MAX

-0.8

-1.2

V

IC =-5mA

-75
-50
-25

-750
-500
-250

IJ.A
IJ.A
IJ.A

VF = 0.45V

120
80
40

IJ.A
IJ.A
IJ.A

VR = 5.5V

Input Leakage Current:
CLK
EN Input
All Other Inputs

VIL

Input Low Voltage

VIH

Input High Voltage

Icc

Power Supply Current (2)

170

250

VOL

Output Low Voltage
(All Output Pins)

0.35

0.45

VOH

Output High Voltage
(MAo-MA8. ISE. FO)

los

Output Short Circuit Current
(MAo-MAs. ISE. FO)

10 (off)

Off·State Output Current:
MAO-MA8. FO
MAo-MA8. F.O. PRo-PR2

0.8
2.0

UNIT

V

CONDITIONS

Vcc = 5.0V

V

2.4

3.0

-15

-28

NOTES:
(1) Typical values are for TA = 2SoC and nominal supply voltage.
(2) EN input grounded. all other inputs and outputs open.

2-8

mA
V

10L = 10 mA

V

10H =-1 mA

-60

mA

Vcc = 5.0V

-100
100

IJ.A
IJ.A

Va = 0.45V
Va = 5.5V

4f'L/lr~

3001

A.C. CHARACTERISTICS AND WAVEFORMS
SYMBOL

PARAMETER

MIN

Typ (1 )

MAX

UNIT

tCY

Cycle Time (2)

95

60

ns

twp

Clock Pulse Width

40

20

ns

tSF
tSK

Control and Data Input Set-Up Times:
lD. ACo-AC6
FCo. FC,
SXO-SX3. PXot-PX7
FI

10
0
35
15

0

ns
ns
ns
ns

Control and Data Input Hold Times:
lD. ACO-AC6
FCo. FC,
SXO-SX3. PX4-PX7
FI

5
0
25
22

0

8

10

30

45

ns

Propagation Delay from Control Inputs FC2 and FC3 to Flag
Out (FO)

16

50

ns

Propagation Delay from Control Inputs ACO-AC6 to latch
Outputs (PRo-PR2)

26

50

ns

Propagation Delay from Enable Inputs EN and ERA to Outputs
(MAo-MAs. FO. PRo-PR2)

21

35

ns

Propagation Delay from Control Inputs ACO-AC6 to Interrupt
Strobe Enable Output (lSE)

24

40

ns

tsx
tsl

Propagation Delay from Clock Input (ClK) to Outputs
(MAo-MAs. FO)

NOTE:
II) Typical.alues are lor TA
121 tCY = twp + tSF + tco

25
5

ns
ns
ns
ns

5

= 25°C and nominal supply voltage.

TEST CONDITIONS:

TEST lOAD CIRCUIT:
Vee

Input pulse amplitude of 2.5 volts.
Input rise and fall times of 5 ns between 1 volt and 2 volts.
Output load of 10 mA and 50 pF.
Speed measurements are taken at the 1.5 volt level.

500n

OUTo-......- - i
1 Kfl

50pF

CAPACITANCE (2 ) TA = 25°C

SYMBOL
CIN

COUT

TYP

MAX

UNIT

Input Capacitance:
ClK.EN
All Other Inputs

MIN

11
5

16
10

pF
pF

Output Capacitance

6

12

pF

PARAMETER

NOTE:
121 This parameter is periodically sampled and is not 100% tested. Condition 01 measurement is I
TA = 25°C.

2-9

= 1 MHz. VBIAS = 2.5V. Vcc = 5V and

3001
3001 WAVEFORMS

CLK
CLOCK INPUT

~

/
\

1/

\
\

J

/

~IW~
ICY

EN. ERA
ENABLE INPUTS

V

1\
E-tco
---l

-----l>

f\1
11\

lEO

MAO·MAS
CONTROL MEMORY
ADDRESS OUTPUTS

E---- -IHF

ISF-----)

\f

ACO-AC6. LD
ADDRESS CONTROL
INPUTS

/\
'f---IEO- -----l>
----'l

IFO

E--

V
1\

PRO-PR2
"PR" LATCH OUTPUTS
iE-IHK

tsK

\V
11\

FCO-FC3
FLAG CONTROL
INPUTS
IHI

lSI

E--

\1
1\

FI
FLAG INPUT
iE--IKO
E--IEO-

E-tco

V

FO
FLAG OUTPUT

"E--IFI---J

\/
\

ISE
INTERRUPT STROBE
ENABLE OUTPUT
IHX

ISX

SXO-PX7
INSTRUCTION
BUS INPUTS

2-10

)1

3001
TYPICAL AC AND DC CHARACTERISTICS
CLOCK PULSE WIDTH Vs. VCC AND TEMPERATURE

ICC VS. TEMPERATURE
190

40

Vee·5.0V

190
126'C

-~

V

170

0

~

26'C

0

5.0

4.75

4.6

160

&.60

6.26

"'

-56 C

O'C

70 C

26"C

126"C

TEMPERATURE (OC)

Vee

CLOCK TO mA OUTPUTS VS. LOAD CAPACITANCE

OUTPUT CURRENT VS. OUTPUT LOW VOLTAGE
6O.-------,--------r------~------_,

40

Vee - I.OV
30

-56°C

--

1

12&°C
26'

E
a:

0

6Or--------r--------r--------r--~~~

a

.r--------r------~~--~~~------_;

~

3Or-------+-----~~~----_t------~
25'C
70'C
126'C

0
4.6

5.0

4.7&

5.5

5.25

°0~----~~~----~0.~4------~0.8~----~0~

5.75

Vee

OUTPUT VOLTAGE (VOLTSI

CLOCK TO MA OUTPUTS VS. LOAD CAPACITANCE

OUTPUT CURRENT VS. OUTPUT HIGH VOLTAGE

60

we

-----

1MAo

r- Vee -

5.0V -

TA • WC

~

.--

Vee

~

160

300

260

300

~

-40

350

LOAD CAPACITANCE (pFI

".

IJ

~r'

~
o

1.0

2.0

3.0

OUTPUT VOLTAGE (VOLTS)

2-11

r"-?O'C
26"c

/

5

-35
100

~ 1"26'C
~

0

60

-6&'C
O'C

~

5

0

-~.ov

4.0

5.0

3001
APPENDIX A

ADDRESS CONTROL FUNCTION SUMMARY
FUNCTION

MNEMONIC

NEXT ROW

AC6 S

m,

mo

d2

d,

dO

mS

m4

d3

d2

d,

dO

d2

d,

dO

m3

m2

m,

mo

d3

d2

d,

do

m3

0

ma m7

d2

d,

dO

m3

0

ma m7

d2

d,

do

m3

0

do

ma m7

d2

d,

do

P3

P2

do

ma m7

d2

d,

do

0

d,

dO

d,

do

do

d4

d3

d2

d,

do

0

0

0

d3

d2

d,

dO . ma m7

m6

0

d2

d,

dO

d3

d2

d,

do

ma

0

d2

d,

dO

d2

d,

do

d2

d,

d2

d,

0

JCE

Jump in column/enable

JFL

Jump/test F-Iatch

0

JCF

Jump/test C-flag

0

JZF

Jump/test Z-flag

0

JPR

Jump/test PR-Iatches

0

JLL

Jump/test left PR bits

0

JRL

Jump/test right PR bits

JPX

Jump/test PX-bus

0

0

0

SYMBOL

MEANING

dn

Data on address control line n
Data in microprogram address register bit n
Data in PR-Iatch bit n
Data on PX-bus line n (active LOW)
Contents of F-Iatch. C-flag. or Z-flag. respectively

0

ma m7

dO

ma m7

1

d,

do

ma m7

mS

DESCRIPTION

MNEMONIC

FC,

0

0

SCZ

Set C-flag and Z-flag to f

0

STZ

Set Z-flag to f

0

STC

Set C-flag to f

HCZ

Hold C-flag and Z-flag

0

DESCRIPTION

MNEMONIC

FC3

2

Force Fa to 0

0

0

FFC

Force Fa to C-flag

0

FFZ

Force Fa to Z-flag

FFl

Force Fa to 1

LOAD
FUNCTION
LD

MAs

0

see Appendix A
0

7

x3

s

x2

S

4

MA3

2

0

see Appendix A
x,

Xo

x7

Xs

SYMBOL

MEANING

xn

Contents of the F-Iatch
Data on PX- or SX-bus line n (active LOW)

1
0

NEXT COL

NEXT ROW

Xs

2-'2

6

d,

FLAG CONTROL FUNCTION SUMMARY

FFO
Flag
Output

m2

d3

d,

d2

Jump in current row

TYPE

m3

d2

d3

JCR

Flag
Input

do
0

d3

0

0

APPENDIX B

d,
0

d4

0

Jump to zero row

Pn
xn
f. c. z

MA3

2

Jump in current column

mn

4

3

JZR

0

MAS 7

4

JCC

TYPE

NEXT COL

DESCRIPTION

X4

S

X7

2

Xs

0

c

p,

Po

P3

P2

p,

Po

Xs

x4

3001
APPENDIX C

JUMP SET DIAGRAMS

JCC
Jump in Current Column

JZR
Jump to Zero Row

The following ten diagrams illustrate
the jump set for each of the eleven
jump and jump/test functions of the
MCU. Location 341, indicated by the
black square, represents one current
row (row21 ) and current column (COI5)
address. The grey boxes ind icate the
microprogram locations that may be
selected by the particular function as
the next address.
row31---i>

t t

colo current

column
JCF, JZF
Jump/Tlit C-FI8g
Jump/Test Z-FI8g

JFL
Jump/Tlit F·Lau:h
JCR
Jump in Current Row

JCE
Jump Column/En.....

current row

current
row
group

group

Ma7
10

Ma7
10

current column

JLL
Jump/Tlit Left Latch

JPR

Jump/Tlit PR·Latch

JRL
Jump/Tlit Right Latch

currant
.ow

JPX

Jump/Tlit PX-Bul

:,rentL

group

Ma7
10

group

M,~tJ

2-13

3001
TYPICAL CONAGURATIONS

r'S-,--~'~R7A~M~A~'~""~"'~""-"'~"'~""~M~A-0--------"N~
AC.
360.
PROM

A,
ClK

TO 3002 CP ARRAY
3604
PROM

1

~8
Non-Pipelined Configuration with
512 Microinstruction Addressability

IIIII

sv

cs,··cs. AO

Os

°5 ..... 0 ,

3604
PROM

3604
PROM

cs, ··CS4 Ao

·················A8

············--·A8

PROM

CS,.-CS4 AO'"

···.0,

t

'"'"'

360'

PROM

. ···-A8

CS,··CS. AO ················-Aa

sv

II
.11

AS"

···········AOCS4-·CS'

A8 ········ __ ······-AOCS4--CS'

-.ll

A8 ·················.4.0 CS4"CS,

360.

3604

PROM

380.

PROM

PROM

08 ··········· .. ··0,

08 ···············0,

Os ·····.. ·······0,

II

A8·················AOCS4··CS'

360'

PROM
Oa ·············0,

MAa··· ........... MAo

IS'

lllI_~_~ACO

AC,
AC,
AC3
AC,
ACs
AC.

'NW

3001

MCU

TO MEMORY DATA BUS

U§~sv~~~~~~r;:-:JI
ig
2D

3D

2Q~

30-

L=::j:=!==/

~~-======:::::::...J

eLK
NOTE;

5V

Two O-Iype flip-flops of the '5174 pipeline register ate used as the
microprogram address reglst.r 81(1I1'1S1on.

Pipelined Configuration with

2048 Microinstruction Addressability

2-14

CLK

0-- CLR
~

PIPELINE
REGISTER

TO 3002 CPARRAV

SCHOTTKY
BIPOLAR LSI
MICROCOMPUTER
SET

The INTE L® 3002 Central Processing
Element contains all of the circuits that
represent a 2·bit wide slice through the
data processing section of a digital com·
puter. To construct a complete central
processor for a given word width N, it
is simply necessary to connect an array
of N/2 CPE's together. When wired
together in such an array, a set of CPE's
provide the following capabilities:
2's complement arithmetic
Logical AND, OR, NOT and
exclusive·OR
Incrementing and decrementing
Shifting left or right
Bit testing and zero detection
Carry look·ahead generation
Multiple data and address busses

High Performance - 100 ns Cycle Time

3002
CENTRAL
PROCESSING
ELEMENT

PACKAGE CONFIGURATION

TTL and DTL Compatible
N·Bit Word Expandable Multi·Bus
Organization
3 I nput Data Busses
2 Three·State Fully Buffered Output
Data Busses

Ko

3

11 General Purpose Registers

K,
X
y

Full Function Accumulator
Independent Memory Address Register
Cascade Outputs for Full Carry
Look·Ahead
Versatile Functional Capability
8 Function Groups
Over 40 Useful Functions
Zero Detect and Bit Test
Single Clock
28 Pin DIP

2·15

vee

10

I,
26

F2
F,

4

25

Fo

5

24

F3
ED

6

co

7

RO

8

LI

9

CI

10

19

EA

11

18

Do
CLK

A,

12

17

F.

Ao

13

16

Fs

GND

14

15

F6

INTEL@
3002

Mo
M,
0,

3002
PIN DESCRIPTION
PIN

SYMBOL

1,2

NAME AND FUNCTION
External Bus Inputs

Active lOW

The external bus inputs provide a separate input port for external input
devices.

3,4

Active LOW

Mask Bus Inputs
The mask bus inputs provide a separate input port for the microprogram
memory, to allow mask or constant entry.

5,6

X,Y

Standard Carry Look-Ahead Cascade Outputs
The cascade outputs allow high speed arithmetic operations to be
performed when they are used in conjunction with the INTEL 3003
Look-Ahead Carry Generator.

7

CO

Ripple Carry Output
The ripple carry output is only disabled during shift right operations.

Active LOW
Th ree-state

B

RO

Sh ift Right Output
The shift right output is only enabled during shift right operations.

Active LOW
Three-state

9

LI

Shift Right Input

Active LOW

10

CI

Carry Input

Active LOW

11

EA

Memory Address Enable Input
When in the LOW state, the memory address enable input enables the
memory address outputs (AO-A1)'

Active LOW

12-13

Ao-A1

Memory Address Bus Outputs
The memory address bus outputs are the buffered outputs of the
memory address register (MAR).

Active LOW
Th ree-state

14

GNO

Ground

15-17,
24-27,

Fo-F6

Micro-Function Bus Inputs
The micro-function bus inputs control ALU function and register
selection.

18

ClK

Clock Input

19-20

00-0 1

Memory Data Bus Outputs
The memory data bus outputs are the buffered outputs of the full
function accumulator register (AC).

Active LOW
Three-state

21-22

Mo-M1

Memory Data Bus Inputs
The memory data bus inputs provide a separate input port for
memory data.

Active LOW

23

ED

Memory Data Enable Input
When in the LOW state, the memory data enable input enables the
memory data outputs (00-01)

Active LOW

28

Vee

+5 Volt Supply

NOTE:
1. Active HIGH, unless otherwise specified.

2-16

3002
LOGICAL DESCRIPTION
The CPE provides the arithmetic, logic
and register functions of a 2·bit wide
slice through a microprogrammed central
processor. Data from external sources
such as main memory, is brought into
the CPE on one of the three separate in·
put busses. Data being sent out of the
CPE to external devices is carried on
either of the two output busses. Within
the CPE, data is stored in one of eleven
scratch pad registers or in the accumula·
tor. Data from the input busses, the
registers, or the accumulator is available
to the arithmetic/logic section (ALS)
under the control of two internal multi·
plexers. Additional inputs and outputs
are included for carry propagation,
shifting, and micro·function selection.
The complete logical organization of the
CPE is shown below.
MICRO·FUNCTION BUS AND
DECODER
The seven micro·function bus input
lines of the CPE, designated Fa-Fa,
are decoded internally to select the
ALS function, generate the scratch pad
address, and control the A and B
multiplexers.
M·BUS AND I·BUS INPUTS
The M·bus inputs are arranged to bring
data from an external main memory
into the CPE. Data on the M·bus is
multiplexed internally for input to
the ALS.
The I·bus inputs are arranged to bring
data from an external I/O system into
the CPE. Data on the I·bus is also mul·
tiplexed internally, although indepen·
dently of the M·bus, for input to the
ALS Separation of the two busses per·
mits a relatively lightly loaded memory
bus even though a large number of I/O
devices are connected to the I·bus.
Alternatively, the I·bus may be wired
to perform a multiple bit shift (e.g., a
byte exchange) by connecting it to one
of the output busses. In this case, I/O
device data is gated externally onto the
M·bus.
SCRATCH PAD
The scratchpad contains eleven registers
designated Ra through Rg and T. The
output of the scratch pad is multiplexed
interl'lally for input to ALS. The ALS
output is returned for input into the
scratch pad.
ACCUMULATOR AND D·BUS
An independent register called the
accumulator (AC) is available for storing
the result of an ALS operation. The
output of the accumulator is multi·
plexed internally for input back to the

ALS and is also available via a three·
state output buffer on the D·bus
outputs. Conventional usage of the
D·bus is for data being sent to the
external main memory or to external
I/O devices.
A AND B MULTIPLEXERS
The A and B multiplexers select the two
inputs to the ALS specified on the
micro·function bus. Inputs to the A·
multiplexer include the M·bus, the
scratchpad, and the accumulator. The
B·multiplexer selects either the I·bus,
the accumulator, or the K·bus. The
selected B·multiplexer input is always.
logically ANDed with the data on the
K·bus (see below) to provide a flexible
masking and bit testing capability.
ALS AND K-BUS
The A LS is capable of a variety of
arithmetic and logic operations, in·
cluding 2's complement addition, in·
crementing, and decrementing, plus
logical AND, inclusive·OR, exclusive·
NOR, and logical complement. The
result of an ALS operation may be
stored in the accumulator or one of the
scratchpad registers. Separate left input
and right output lines, designated LI
and RO, are available for use in right
shift operations. Carry input and carry
output lines, designated CI and CO are
provided for normal ripple carry propaga·

tion. CO and RO data are brought out via
two alternately enabled tri·state buffers.
In addition, standard look ahead carry
outputs, designated X and Y, are available
for full carry look ahead across any word
length.
The ability of the K·bus to mask inputs
to the ALS greatly increases the versa·
tility of the CPE. During non·arithmetic
operations in which carry propagation
has no meaning, the carry circuits are
used to perform a word·wise inclusive·
OR of the bits, masked by the K·bus,
from the register or bus selected by the
function decoder. Thus, the CPE pro·
vides a flexible bit testing capability.
The K·bus is also used during arithmetic
operations to mask portions of the field
being operated upon. An additionalfunction of the K-bus is that of supply·
ing constants to the CPE from the
microprogram.
MEMORY ADDRESS REGISTER
ANDA·BUS
A separate ALS output is also avail·
able to the memory address register
(MAR) and to the A·bus via a three·
state output buffer. Conventional usage
of the MAR and A·bus is for sending ad·
dresses to an external main memory.
The MAR and A·bus may also be used
to select an external device when
executing I/O operations.

MAIN MEMORY
ADDRESS
A,

D,

..

D,

ED ENABLE

ENABLE EA
ADDRESS

LOOK AHEAD

DATA

CI CARRY IN

{X

-+------l
CARRY OUT co --

..:s"'

&0

~

r----

i..

,

E

26:::-

40

~K

&.0

Vee (VOLTS)

Vee (VOLTSI

PROPAGATION DELAY - CLOCK TO "A" AND "0"
DATA OUTPUT VS.
AND TEMPERATURE

PROPAGATION DELAY - CLOCK TO
"A" AND "0" DATA OUTPUT VS. LOAD CAPACITANCE

"-CC:

10

1Or--------r------~--------r_------~

!

5
~

UDY

PROPAGATION DELAY FROM FUNCTION INPUTS TO
CASCADE OUTPUTS VS. Vee AND TEMPE_R!'TURE

CARRY IN SET UP TIME vs. Vee AND TEMPERATURE

I

&.2&V

vee (VOLTS)

OUTPUT VOLTAGE

I

5 &0

1Or-------;-------~--------+_------~

~

~

~

!

I,

40 1----+-::;_.....

IE,

:P

:P
Vee (VOLTSI

LOAD CAPAC'T ANCE (pFI

2-26

3002
TYPICAL CONRGURATIONS
MEMORY ADDRESS BUS
(ZH L1NESI
DATA BUS TO MEMORY
(2N llNESI

LAD

'--v' F.-F. ClK

l+-

3002

CARRY FROM
3001

i-

CI

CO
II

3002
RO

--::>F o-F3
I

CARRY TO 3001
MICROPROGRAM
CONSTANTIMASK
INPUT BUS
(ZH llNESI

1,

M K

""""

-

r--

~

r-------.-

ir>
"rt=

'---

r-

1-

I

.J

+
+

- - - - l l - I ' - - - - - , DATA BUS FROM
MEMORY

- - - - l l - - - - - - ' (2N llNESI
EXTERNAL DATA BUS
(2N L1NESI

Rippltl-Carry Confi.,ration

IN 3002 CPE's)

+5V

EC n +8

ECn +8

CARRY
FROM
3001

CARRY
TO
3001

+-~------------------------------------------------------------------------------~

Carry Look-Aha. Confi.,retion
With Ripple Through tho Left Slice
(32 Bit Array)

2-27

3002
APPENDIX A MICRO-FUNCTION SUMMARY
F·GROUP

R·GROUP

MICRO·FUNCTION
Rn + (AC A K) + CI ... Rn , AC

o

II

M + (AC A K) + CI'" AT

III

ATL A (lL A Kd'" RO
II V [(IH A KH) A ATHl "'ATH
[AhA (lLA Kdl V [ATHV(lH A KH)l"'Ah
K V Rn "'MAR

Rn + K + CI ... Rn

II

K V M "'MAR

M+K+CI"'AT

III

(AT V K) + (AT A K)+CI"'AT
(AC A K) -1 + CI ... Rn

2

II

(AC A K) -1 + CI'" AT

III

(I A K) -1 + CI'" AT

II

M + (AC A K) + CI ... AT

III

AT + (I A K) + CI ... AT
CI V (R n A AC A K) ... CO

Rn A (AC A K) ... Rn

II

CI V (M A AC /\ K) ... CO

M A (AC A K)'" AT

III

CI V (AT A I A K)->CO

AT A (I A K)'" AT

1

(see Note 1)

Rn + (AC ,\ K) + CI ... Rn

3

4

5

6

7

CI V (R n A K)'" CO

K A Rn ... Rn

II

CI V (M A K) ... CO

K AM'" AT

III

CI V (AT A K)'" CO

K A AT'" AT

CI V (AC A K) ... CO

Rn V (AC A K)'" Rn

II

CI V (AC A K) ... CO

MV(ACAK)"'AT

III

CI V (I A K) ... CO

AT V (I A K)

CI V (Rn A AC A K) ... CO

Rn iii (AC A K) ... Rn

CI V (M A AC A K) ... CO

M iii (AC /\ K)'" AT

III

CI V (AT A I A K) ... CO

AT iii (I A K)'" AT

1. 2'5 complement arithmetic adds 111 ... 11 to perform subtraction of 000 ... 01.
2. Rn includes T and AC as source and destination registers in R-group 1 micro-functions.
3. Standard arithmetic carry output values are generated in F-group 0, 1, 2 and 3 instructions.

SYMBOL

MEANING

I, K,M
CI, II
CO, RO
Rn
AC
AT
MAR
L, H

Data on the I, K, and M busses, respectively
Data on the carry input and left input, respectively
Data on the carry output and right output, respectively
Contents of register n including T and AC (R-Group I)
Contents of the accumulator
Contents of AC or T, as specified
Contents of the memory address register
As subscripts, designate low and high order bit, respectively
2's complement addition
2's complement subtraction
Logical AND
Logical OR
Exclusive-NOR
Deposit into

/\
V

(ji

AT

II

NOTES:

+

-~

2-28

3002
APPENDIX B ALL-ZERO AND ALL-ONE K-BUS MICRO-FUNCTIONS
K·BUS

=00

MICRO·FUNCTION

MNEMONIC

K·BUS

= 11

MICRO·FUNCTION

MNEMONIC

Rn + CI .... Rn. AC

ILR

AC + Rn + CI .... Rn. AC

ALR

M + CI .... AT

ACM

M + AC + CI .... AT

AMA

SRA

(See Appendix AI

LMI

11 .... MAR

Rn - 1 + CI-- Rn
M - 1 + CI .... AT

AT L .... RO

ATH .... ATL

Rn .... MAR

Rn + CI .... Rn

M .... MAR

M+CI-+AT

CI-1--AT

DSM

LMM

11 .... MAR

CIA

AT-1 + CI->AT

See Note 1

CSR

AC - 1 + CI-> Rn

See Note 1

SDR

See Notes 1,4

CSA

AC -1 + CI'" AT

See Notes 1.4

SDA

AT+ CI .... AT
CI-1 .... Rn

LI .... ATH

(See CSA above)
INR

Rn + CI -- Rn
(See ACM above)
AT + CI .... AT

LDM
DCA

1- 1 + CI-- AT

LDI

AC + Rn + CI -- Rn

ADR

(See AMA above)
INA

I+AT+CI->AT

AlA

CI .... CO

0 .... Rn

CLR

CI v (R n II AC) -> CO

Rn II AC -> Rn

ANR

CI->CO

0"" AT

CLA

Cl.v (M II ACI ... CO

MIIAC""AT

ANM

(See CLA above)

CI v (AT II I)'" CO

AT II I'" AT

ANI

(See CLR above)

CI v Rn'" CO

Rn'" Rn

TZR

(See C LA above)

CI v M "'CO

M"'AT

LTM

(See C LA above I

CI v AT'" CO

AT -+AT

TZA

CI"'CO

Rn'" Rn

NOP

CI v AC"'CO

Rn v AC'" Rn

ORR

CI"'CO

M""AT

LMF

CI v AC"'CO

M v AC"'AT

ORM

CI v I'" CO

I v AT'" AT

ORI

(See NOP above)
CI--CO

R;; .... Rn

CMR

CI v (R n

CI""CO

M"'AT

LCM

Clv (M

CI""CO

AT"" AT

CMA

Clv (AT

Rn iii AC'" Rn

XNR

AC)"'CO

Miii AC"'AT

XNM

I)--CO

I iii AT--AT

XNI

AC)"'CO

4. The more general operations. CSR and SDR. should be used in place of the CSA and SDA operations. respectively.

2·29

3002
APPENDIX C
FUNCTION
GROUP

0
1
2
3
4
5
6
7

REGISTER
GROUP

FUNCTION AND REGISTER GROUP FORMATS

F6

5

4

0
0
0
0

0
0

0
1
0
1
0
1
0
1

1
0
0
1
1

REGISTER

RO
R,
R2
R3
R4
RS
R6
R7
RS
Rg

F3

2

0
0
0
0
0
0
0
0
1

0
0
0
0

1
0
0
1
1

T

AC
II

III

T

0
0

AC
T

0

0
0
1
0
0
1
0
0
0
0

0
1
0
1
0
1
0
1
0
1
0
1
0

0
1

AC

2-30

SCHOTTKY
BIPOLAR LSI
MICROCOMPUTER
SET

The INTEL (!) 3003 Look·Ahead Carry
Generator (LCG) is a high speed circuit
capable of anticipating a carry across a
full 16-bit 3002 Central Processing
Array. When used with a larger 3002
CP Array multiple 3003 carry generators
provide high speed carry look·ahead
capability for any word length.
The LCG accepts eight pairs of active
high cascade inputs (X, V) and an active
low carry input and generates active
10\'11 carries for up to eight groups of
binary adders.

High Performance - 10 ns typicel
propagation dalay
Compatible with INTEL 3001 MCU
and 3002CPE
DTL and TTL compatible

3003
LOOK-AHEAD
CARRY
GENERATOR

PACKAGE CONFIGURATION

Y7

Vee

x7

YI

ECn+ 8

28

Full look-ahead across 8 adders

Xs

Xl
Y2

X.

Low voltage diode input clamp

INTEL-

Ys

3003

28-pin DIP

Cn+S

X,

X3

"0

Y3

11

Yo

,.

en +3

en

Cn+"

en +2
GND

2-31

Cn+.

Y,

Y.

Expandable

Xs
Cn+ 7

Cn+1

'3

Cn+ 1

3003
LOGIC DIAGRAM

EC n+ 8

SYMBOL

1,7,8,11
18,21,23
27

Y O-Y7

2,5,6,10
19,20,24
26
17

X7

NAME AND
FUNCTION

TYPE
Active
HIGH

XO-X7

Standard carry
look-ahead
inputs

Active
HIGH

Cn

Carry input

Active
LOW

Cn+8

3

ECn+8

Cn+l-

Carry outputs

Cn+8 carry
output enable

}--

:;;;;

Standard carry
look-ahead
inputs

4,9,12
13,15,16

R==
=;= ~

V7

PIN DESCRIPTION
PIN

.........

Active
LOW
Active
HIGH

~

Vs

Xs
Vo

en+8

en+7
en+8

Xs
v.
X.

Cn+5

V3

28
14

Vee

+5 volt supply

GND

Ground

Cn+~

X3
V2

Cn+3

X2

v,

en+ 2

X,
Vo
Xo
Cn

....
to'"

-rt=r>-

3003 LOGIC EQUATIONS
The 3003 Look-Ahead Generator is implemented in a compatible form for direct connection to the 3001 MCU and 3002 CPE.
Logic equations for the 3003 are:

Cn +.7 = Y SXS + Y SY 5 X 5 + Y SY 5Y 4X 4 + Y SY 5 Y 4Y 3X 3 + Y SY 5Y 4Y 3Y 2 X 2 + Y6Y5Y4Y3Y2Y1Xl + Y SY 5Y 4Y3Y 2Y lYOXO
+YSY5Y4Y3Y2Y1YOCn
Cn + 8 = High Impedance State when EC n + 8 Low
Cn + 8 = Y 7 X 7 + Y 7Y SX S + Y 7Y SY 5 X 5 + Y7YSY5Y4X4 + Y 7 Y SY 5 Y 4Y 3X3 + Y 7Y SY 5 Y 4Y 3Y 2 X 2 + Y7YSY5Y4Y3Y2Y1Xl
+ Y 7Y SY 5 Y 4Y 3Y 2Y l YOXO + Y 7 Y SY 5 Y 4Y3Y2Y 1YOGn when EC n + 8 high

2-32

en+ 1

3003
D.C. AND OPERATING CHARACTERISTICS
ABSOLUTE MAXIMUM RATINGS·
Temperature Under Bias

.

Storage Temperature

-65°C to +160°C
-0.5V to +7V

All Output and Supply Voltages.

-1.0V to +5.5V

All Input Voltages
Output Current

. o°C to 70°C

100mA

.

·COMMENT: Stresses above those listed under "Absolute Maximum Rating" may cause permanent damage to the device. This is a stress rating only
and functional operation of the device at these or at any other condition above those indicated in the operational sections of this specification is
not implied.

T A = O°C to +70°C
SYMBOL

VCC = 5.0V ±5%
PARAMETER

Vc

Input Clamp Voltage (All
Input Pins)

'F

Input Load Current:
X6,X7Cn,ECn + 8
Y7,XO,X5,
YO'Y6
Input Leakage Current:
Cn and EC n + 8
All Other Inputs

'R

V,L

Input Low Voltage

V,H

Input High Voltage

ICC

Power Supply Current

VOL

Output Low Voltage (All
Output Pins)

VOH

Output High Voltage (All
Output Pins)

lOS

Short Circuit Output Current
(All Output Pins)

'O(off)

MIN.

TYP.(1)

MAX.

-O.B

-1.0

-0.07
-0.200
-0.6

-0.25
-0.500
-1.5
40
100
0.8

2.0
80

0.35

2.4

-15

130

0.45

3

-40

Off·State Output Current
(C n + 8)

UNIT

CONDITIONS

V

'C = -5 mA

mA
mA
mA

VF = 0.45V

jJ.A
jJ.A

VR = 5.25V

V

VCC = 5.0V

V

VCC = 5.0V

mA

All Y and EC n + 8 high,
All X and Cn low

V

10L = 4 mA

V

10H = -1 mA

-65

mA

VCC = 5V

-100
+100

jJ.A
jJ.A

Vo = 0.45V
Vo = 5.25V

NOTE:
Typical values are for TA = 25°C and nominal supply voltage.
(11

A.C. CHARACTERISTICS
TA = O°C to 70°C, VCC = +5V ± 5%
SYMBOL

MIN.

PARAMETER

3

TYP.(1)

MAX.

UNIT

10

20

ns

txc

X, Y to Outputs

tcc

Carry I n to Outputs

13

30

ns

tEN

Enable Time, Cn + 8

20

40

ns

NOTE:
Typical values are for T A = 25°C and nominal supply voltage.
(11

2-33

3003
D.C. AND OPERATING CHARACTERISTICS
ABSOLUTE MAXIMUM RATINGS·
Temperature Under Bias

-55·C to +125·C

Storage Temperature

-65·C to +160·C

All Output and Supply Voltages.

-0.5V to +7V

All I nput Voltages
Output Current

-1.0V to +5.5V

.

100mA

·COMMENT: Stresses above those listed under "Absolute Maximum Rating" may cause permanent damage to the device. This is a stress rating only
and functional operation of the device at these or at any other condition above those indicated in the operational sections of this specification is
not implied.

TA = -55·Cto +125·C, Vee = 5.0V ±10%.
SYMBOL

PARAMETER

MIN.

Vc

Input Clamp Voltage (All
Input Pins)

IF

Input Load Current:
X6,X7,Cn,ECn+8
Y 7,XO,X5,
YO'Y6
Input Leakage Current:
and EC n + 8
All Other Inputs

IR

TYP.(I)

MAX.

-0.8

-1.2

-0.07
-0.200
-0.6

-0.25
-0.500
-1.5

en

VIL

Input low Voltage

VIH

Input High Voltage

ICC

Power Supply Current

VOL

Output Low Voltage (All
Output Pins)

VOH

Output High Voltage (All
Output Pins)

lOS

Short Circuit Output Current
(All Output Pins)

10(off)

40
100
0.8
2.1
80

0.35

2.4

-15

130

0.45

3

-40

Off·State Output Current
(C n + 8)

CONDITIONS

UNIT
V

IC = -5 mA

mA
mA
mA

VF = 0.45V

IJA
IJA

VCC = 5.25V, VR = 5.5V

V

VCC= 5.0V

V

VCC = 5.0V

mA

All Y and ECn + 8 high,
All X and Cn low

V

10l

=4 mA

V

10H

=-1

-65

mA

-100
+100

IJA
IJA

VCC

mA

=5V

VO=0.45V
VO= 5.5V

NOTE:
Typical values are for T A = 25°C and nominal supply voltage.

(1)

A.C. CHARACTERISTICS
TA

=-55·C to +125·C, Vee =+5.0V ±10%

SYMBOL

MIN.

PARAMETER

3

TYP.(I)

MAX.

UNIT

10

25

ns

txc

X. Y to Outputs

tcc

Carry I n to Outputs

13

40

ns

Enable Time. Cn + 8

20

50

ns

NOTE:
(11

Typical values are for TA

= 25°C and

nominal supply voltage.

2-34

3003
WAVEFORMS

G . =*.....---

X,V INPUTS

________________
Cn INPUT

~*~I~.~---------~----------~-e------~----.--!

____________

NOTE: ALTERNATE TeST LOAD:

-------

Vee

----.-;~-tEN1-r--..,~,J::.::"-1-j
____~
T

Cn.a OUT

VOH

I

Cn .8 OUTPUT

.

_

__________ J

tt

~

~

'0'
,.

VOL

O.SV

SYMBOL

PARAMETER

MIN

TYP

MAX

UNIT

Input Capacitance

All inputs

12

20

pF

Output Capacitance

Cn

+8

7

12

pF

NOTE:
(21 This parameter is periodically sampled and is not 100% tested. C.ondition 01 measurement is 1 = 1 MHz, VBIAS
VCC = S.OV and TA = 25°C.

= S.OV,

TEST LOAD CIRCUIT:

TEST CONDITIONS:

Input pulse amplitude of 2.5V.
Input rise and fall times of 5 ns between 1 and 2 volts.
Output loading is 5 mA and 30 pF.
Speed measurements are made at 1.5 volt levels.

Vee

"
OUT

o--~---+

=3O.F

2-35

2.

3003
TYPICAL A.C. AND D.C. CHARACTERISTICS
OUTPUT CURRENT vs. OUTPUT LOW VOLTAGE

ICC VS. TEMPERATURE
80

8Or_----,-----~------r_--~

L..L

8O~-----+------~------~~~~

!Jj

-

70

m~----~----.,,~------+-----~

~75

-50

-26

25

50

75

100

°0~--~~~-----7------~----~

125

OUTPUT (V)

TEMPERATURE (OCI

x, Y TO OUTPUTS VI. Vee AND TEMPERATURE

OUTPUT CURRENT VS.OUTPUT.HIGH VOLTAGE

30
t

-.
!.

..
z
a:
a:

::l
U

~

!

-'0

m

~
~

.

-,.

::l

0

-m

x

0

---

_55°C

/ / O"c}5'C
//

~

:e>

'0

'\).:c
125'1

-26

-30

....

o

0

Vee (VOLTS)

x, Y TO OUTPUT DELAY VS. LOAD CAPACITANCE

..

x, Y TO OUTPUTS VS. VCC AND TEMPERATURE
30

Vee

J

ls.ov

TA " 26°C

30

>

~
Q

!;

I!:
::l

m

0

:e>

x '0

~

0..

!

-

.

txc_+

~

"- "-

0

x

,

25'\ '"

~

:e>

1-"

70'C

m

~

~
,-+
I--"
...-:::
p-- ~

'00

5."

5.25

5.00

4.75

OUTPUT IV)

!

xc ._

'0

~

\'C

-5T

260

....

o

300

LOAD CAPACITANCE (pFI

4.75

5.00
Vee (VOL TSI

2·36

5.26

....

3003
TYPICAL CONFIGURATIONS
The 3003 LCG can be directly tied to the 3001 MCU and a 3002 CP array of any word length. The following figures represent
typical configurations of 16· and 32-bit CP arrays. Figures 1 and 2 illustrate use of the 3003 in a system where the carry output
(CO) to the 3001 MCU is rippled through the high order CPE slice. Figure 3 illustrates use of the 3003 in a system where tri·state
output Cn+8 is connected directly to the flag input on the 3001 MCU. Cn+8 is disabled during shift right by decoding that instruction
externally. thus multiplexing Cn+8 with the shift right (RO) output of the low order CPE slice.

Ee n + 8

CARRY
FROM

3001

TO
+-~--________________________________________~
CARRY
3001

Figure 1. Carry Look-Ahead Configuration with Ripple through the Left Slice U6-Bit Array)

...
...

F;"

-5V

F3

F,
F,

Ec" +8

CARRY

FROM

M3IlOl

~~RRV~-+

______________________________________________________________________________________

M3IlOl

Figure 2. Carry Look-Ahead Configuration with No Carry Ripple through the Left Slice (32-Bit Array)

2·37

~

SCHOTTKY
BIPOLAR LSI
MICROCOMPUTER
SET
The INTE~3212 Multi-Mode Latch
Buffer is a versatile 8-bit latch with
three-state output buffers and built-in
device select logic. It also contains an
independent service request flip-flop
for the generation of central processor
interrupts. Because of its multi-mode
capabilities, one or more 3212's can
be used to implement many types of
interface and support systems for Series
3000 computing elements including:

High Performance - 50 ns Write Cycle
Time
Low Input Load Current - 250 JJ.A
Maximum
Three-State Fully Buffered Outputs

PACKAGE CONFIGURATION

24

•

OSI

23

MO

22

011

High Output Drive Capability
Independent Service Request FlipFlop
Asynchronous Data Latch Clear

001

4

21
INTEL@
3212

01 2

IS

01 3

17
16

01 4

Gated data buffers

004
5TB

Multiplexers

GNO

20
19

002

003

24 Pin DIP

Simple data latches

3212
MULTI-MODE
LA TCH BUFFER

10

15

11

14

12

13

Bi-directional bus drivers

Vcc
INT

DiS
DOS
01 7
007
01 6
006
01 5
005
CLR

OS2

Interrupting input/output ports

CQNTROL " 0
MEMORV 110

M'fMOR'"
"');l-:''''''~S

aus

MICRO
PROGRAM
MEMORV

INSTRUCTION BUS

't)Ptt..~ l!trr.. ~V'..o""

""'t'W\o""

Figure 1_ Block Diagram of a Typicel System

2·39

u ...~ po., ~"()V\
't)'C........ ,c'C..'S.

3212
PIN DESCRIPTION
PIN

2

SYMBOL

NAME AND FUNCTION

OS1

Device Select Input 1

MO

Mode Input

active LOW

When MO is high (output mode) the output buffers are enabled and the
write signal to the data latches is obtained from the device select logic.
When MO is low (input mode) the output buffer state is determined bV
the device select logic and the write signal is obtained from the strobe
(STB) input.

3,5,7,9,
16, lB, 20,
22

011- 01 S

4,6, B,10,
15,17,19,
21

001- 00 S

11

STB

Data Inputs
The data inputs are connected to the O-inputs of the data latches.
three-state

Data Outputs
The data outputs are the buffered outputs of the eight data latches.
Strobe Input
When MO is in the LOW state, the STB input provides the clock input
to the data latch.

12

GNO

13

Ground
Device Select Input 2
When OS1 is low and OS2 is high, the device is selected.

14

CLR

23

INT

Clear

active LOW

Interrupt Output

active LOW

The interrupt output will be active LOW (interrupting state) when
either the service request flip-flop is low or the device is selected.

NOTE:
(1) Active HIGH, unless otherwise specified.

2-40

3212
FUNCTIONAL DESCRIPTION
The 3212 contains eight D·type data
latches, eight three·state output buf·
fers, a separate D·type service request
flip·flop, and a flexible device select!
mode control section.

DATA LATCHES
The Q·output of each data latch will
follow the data on its corresponding
date input line (DI,-Dls) while its
clock input is high. Data wi II be
latched when the internal write line WR
is brought low. The output of each
data latch is connected to a three·state,
non·inverting output buffer. The in·
ternal enable line EN is bussed to each
buffer. When the EN is high, the buf·
fers are enabled and the data in each
latch is available on its corresponding
data output line (DOo-DO S )'

The Q output of the SR flip·flop is
logically ORed with the output of
device select logic and then inverted
to provide the interrupt output INT.
The 3212 is considered to be in the in·
terrupting state when the INT output
is low. This allows direct connection
to the active LOW priority request in·
puts of the INTEL3214 Interrupt
Control Unit.

When operated in the input mode (i.e.,
MD low) the strobe input STB is used
to synchronously write data into the
data latch and place the SR flip·flop in
the interrupting (reset) state. The in·
terrupt is removed by the central pro·
cessor when the interrupting 3212 is
selected.

1---------------1
I
I
I
I
I
I
I
I

STB::+===::t::;:===!f:>
~

D~
05 2

I
I
INT

DEVICE SELECT LOGIC
Two input lines DS, and D'S2 are pro·
vided for device selection. When DS,
is low and DS2 is high, the 3212 is
selected.

0"

I-++--r>-~DOI

012

1-4--1--1'">4- 002

MODE CONTROL SECTION
The 3212 may be operated in two
modes. When the mode input line MD
is low, the device is in the input mode.
In this mode, the output buffers are
enabled whenever the 3212 is selected;
the internal WR line follows the STB
input line.
When MD is high, the device is in the
output mode and, as a result, the out·
put buffers are enabled. In this mode,
the write signal for the data latch is
obtained from the device select logic.

01 3

01.

DiS

01.

01,

H-+--f>-"':"'-oo,

01,

1-4--1'">........ DO,

SERVICE REQUEST FLIP·FLOP
AND STROBE
The service request flip-flop SR is used
to generate and control central proces·
sor interrupt signals. For system reset,
the SR flip·flop is placed in the non·
interrupting state (i.e., SR is set) by
bringing the CLR line low. This simul·
taneously clears (resets) the 8·bit data
latch.

CLR
L

M3212 Logic Diagram

2·41

3212
D.C. AND OPERATING CHARACTERISTICS

ABSOLUTE MAXIMUM RATINGS·
Temperature Under Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .O°C to 70°C
Storage Temperature . . . . . . .

.. _65°C to +160°C

All Output and Supply Voltages.

. ... -0.5V to +7V

All Input Voltages

. -1.0V to +5.5V

Output Currents

. . . . . 100mA

·COMMENT: Stresses above 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 above those indicated in the operational sections of this specification
is not implied. Exposure to absolute maximum ratings for extended periods may affect device reliability.

T A .. aOc to +75°C
Symbol

Vee

=+5V ±5%

Parameter

Typ.

Min.

Max.

Conditions

Unit

IF

Input Load Current
STB, 052, CLR, 01,-0IS Inputs

-.25

mA

VF

= .45V

IF

Input Load Current
MO Input

-.75

mA

VF

.45V

IF

I nput Load Current
OS, Input

-1.0

mA

VF

.45V

IR

Input Leakage Current
STB, OS,CLR, 01,-0ISlnputs

10

IlA

VR

5.25V

IR

I nput Leakage Current
MO Input

30

IlA

VR

5.25V

IR

I nput Leakage Current
05, Input

40

IlA

VR

5.25V

Ve

Input Forward Voltage Clamp

-1

V

Ie

VIL

Input "Low" Voltage

VIH

Input "High" Voltage

VOL

Output "Low" Voltage

VO H

Output "High" Voltage

Ise

Short Circuit Output Current

1101

Output Leakage Current
High I mpedance State

lee

Power Supply Current

.85

-5 mA

V
V

2.0

V

10L

15mA

V

10H

-1 mA

-75

mA

Vee

= 5.0V

20

IlA

Vo

= .45V/5.25V

130

mA

.45
4.0

3.65
-15

90

2042

3212
A.C. CHARACTERISTICS
Symbol

TA -

ooc to 75°C, VCC = +5.0V ± 5%

Paramatar

Min.

Max.

Typ.

Unit
ns

tpw

Pulse Width

tpD

Data To Output Delay

30

ns

twE

Write Enable To Output Delay

40

ns

tSET

Data Setup Time

15

ns

tH

Data Hold Time

20

ns

tR

Reset To Output Delay

40

ns

ts

Set To Output Delay

30

ns

tE

Output Enable Time

45

ns

tc

Clear To Output Display

45

ns

25

CL = 30 pf

TEST LOAD CIRCUIT:

TEST CONDITIONS:
Input pulse amplitude of 2.5 volts.
Input rise and fall times of 5 ns between 1 volt and 2 volts.
Output load of 15 mA and 30 pF.
Speed measurements are taken at the 1.5 volt level.

Vee
300n

our 0--_--+
30pF

CAPACITANCE(1I
Symbol

LIMITS

Test
Min.

Typ.

Max.

Units

CIN

OS,. MD Input Capacitance

9

12

pf

CIN

DS2, CLR, STB, 0I 1-DI S
Input Capacitance

5

9

pf

COUT

D01-DOS Output Capacitance

B

12

pf

NOTE:
11) This parameter is periodicallv sampled and is not 100% tested. Condition 01 measurement is 1 = 1 MHz. VSIAS = 2.SV. VCC
TA = 25°C.

2-43

=

SV and

3212
D.C. AND OPERATING CHARACTERISTICS

ABSOLUTE MAXIMUM RATINGS*
Temperature Under Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -55°C to +125°C
Storage Temperature . . . . . . .
. .. -0.5V to +7V

All Output and Supply Voltages.
All Input Voltages

. -1.0V to +5.5V

Output Currents

. . . . . 100 mA

·COMMENT: Stresses above 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 above those indicated in the operational sections of this specification
is not implied. Exposure to absolute maximum ratings for extended periods may affect device reliability.

TA

=_55°C to +125°C;

Symbol

Vee

=5.0V ±10%

Parameter

Typ.

Min.

Max.

Conditions

Unit

IF

I nput Load Current
STB, OS2, CLR, OI,-OIS Inputs

-.25

mA

VF = .45V

IF

Input Load Current
MO Input

-.75

mA

VF

.45V

IF

I nput Load Current
OS, Input

-1.0

mA

Vrf.

.45V

IR

I nput Leakage Current
STB, OS, CLR, OI,-OIS Inputs

10

f.l.A

VR

5.5V

IR

I nput Leakage Current
MO Input

30

f.l.A

VR

5.5V

IR

Input Leakage Current
OS, Input

40

f.l.A

VR

5.5V

Ve

Input Forward Voltage Clamp

V

Ie

-5 mA

V 1L

Input "Low" Voltage

VIH

Input "High" Voltage

VOL

Output "Low" Voltage

VO H

Output "High" Voltage

Ise

Short Circuit Output Current

1101

Output Leakage Current
High Impedance State

lee

Power Supply Current

1.2
.80

V
V

2.0

V

10L

= 10mA

V

10H

= .5mA

mA

Vee

= 5.0V

20

f.l.A

Va = .45V/5.5V

145

mA

.45
4.0

3.5
-15

-75

90

2-44

ArIL/~
A.C. CHARACTERISTICS
Symbol

TA = -55°C to +125°C. Vee = 5.0V ± 10%

Parametar

Typ.

Min.

Max.

Unit

40

tpw

Pulse Width

tpo

Data To Output Delay

30

ns

tWE

Write Enable To Output Delay

50

ns

tSET

Data Setup Time

20

ns

tH

Data Hold Time

30

ns

tR

Reset To Output Delay

55

ns

ts

Set To Output Delay

35

ns

tE

Output Enable Time

50

ns

tc

Clear To Output Display

55

ns

ns

TEST CONDITIONS:

CL

30 pf

TEST LOAD CIRCUIT:

Input pulse amplitude of 2.5 volts.
Input rise and fall times of 5 ns between 1 volt and 2 volts.
Output load of 15 mA and 30 pF.
Speed measurements are taken at the 1.5 volt level.

Vcc
300n

OUTo--_--t
30 pF

600n

CAPACITANCE I1 }
Symbol

LIMITS
Test
Min.

Typ.

Max.

Units

CIN

05 1• MD Input Capacitance

9

12

pf

CIN

DS2. CLR, STB, Oil-Dis
Input Capacitance

5

9

pf

COUT

DO I-DOS Output Capacitance

8

12

pf

NOTE:
111 This parameter is periodicallv sampled and is not 100% tested. Condition of measurement is f = 1 MHz. VSIAS = 2.SV. Vee = SV and
TA = 2Soe.

2-45

3212

3212
WAVEFORMS

,o5vX-------------y5v

DATA

- - - - - - - '

'o5Vl

STBodis,. DS2

'I'

I;=='PW

°

\'5V
'_W_E=j , __________ _
X'-'_o5V__________

I

~---------------

____________
I4
_-_
-

OUTPUT

'H ~'------

_______________ --'

OUTPUT

DO

,5VX- ------------- --Y'5V

DATA

- - - - - - - . . . / I--

STB ..

r

'SET

'H

'.I '----

'5V\'-_____________

OS, • 052

'PDo-j

!,------------

X'-:_5V________________

OUTPUT

_ _ _ _ _ _ _ _ _ __ - I

STB

_____-J~~'o_5V_____________________

-~l

NOTE: ALTERNATIVE TEST LOAD

-<

VCC'0K

OUT

~

_0 'R

CL

lK

2-46

3212
TYPICAL A.C. AND D.C. CHARACTERISTICS

vs.

INPUT CURRENT
Vee"

~~

~5.DV

-so
~ -100

~

OUTPUT CURRENT VS. OUTPUT "LOW" VOLTAGE
'00r------,-------,------,-------,

INPUT VOLTAGE

Vee" +5.0V
8O~----~------_+------~----~

~

c

I
TA .. ere

!

V TA • 2."C
VVTA ·'S"C

/'

>-

~ -150

il

i

!

~

60

>-

00

rr:
rr:
:>
u

~

-200

0

20
-250

-300

-3

.,

-,

-2

.2

°o~--~~~-----L------~------J

.3

INPUT VOLTAGE IV)

OUTPUT "LOW" VOLTAGE (VI

OUTPUT CURRENT vs.
OUTPUT "HIGH" VOLTAGE

DATA TO OUTPUT DELAY
VS. LOAD CAPACITANCE

so
Vee" +5.0V

Vee ,·~s.ov
TA .. 25G e

-s
00

C
!
>-

~

rr:
rr:

!

-'0

>

TA " 75°C

";;j

-,S

0

....
T...

:>

u
>-

:>
0
0

TA -O"C

-20

i>-

:>
0

30

~

-a"c

>-

20

"!<

-25

0

~-

'0

00

so

'00

DATA TO OUTPUT DELAY
vs. TEMPERATURE

0

30

~

25

z

20

>-

I

>-

;I

80

's
'0
-25

'00

TE_ER"TURE C·CI

2-47

-- .

I

0
0

.
...~
a:

.-- r--....
211

35

..

,;':"",""'"""

... ......

1
>
~

",,'

0

-211

300

Vee" +5.0V

20

0

250

00
Vee" +I.GV

,

-

WRITE ENABLE TO OUTPUT DELAY
VS. TEMPERATURE

22

2

'so

...

~

LOAD CAPACITANCE (pFI

OUTPUT "HIGH" VOLTAGE (VI

•
•

--

--::. ~ f.-\---;. ..........

I

~~

_-- ---

\-

........;:-i

1---~~~<' ......

.--

DS~< I--

I--

I

I
26

80

'00

3212
TYPICAL CONFIGURATIONS
GATED BUFFER (TRI·STATE)

BI·DIRECTIONAL BUS DRIVER

VCC---r-------.----;:~~_,

.I..

STB

INPUT
DATA
(250 "A)

STB

OUTPUT
DATA
(!5mAI
(3.65V MINI

;3212

L-__________

~

DATA
BUS

I.

CLR

'"

1
~

DATA BUS
CONTROL
(0: L - RI
(I: R - LI

GND
----------------'

,L

"
r-<

GATING {
CONTROL
(DS1.DS2)

;3212

CLR

--

G~D

L..-

STB

INTERRUPTING INPUT PORT
DATA
BUS

INPUT
STROBE

;3212

L

STB

CLR

L-...J
SYSTEM
INPUT

SYSTEM
RESET

t---DR

T~c~~~~ IE~W)
TO CPU
INTERRUPT INPUT

OUTPUT PORT (WITH HAND·SHAKING)
DATA
BUS
,....------ OUTPUT STROBE
STB

SYSTEM OUTPUT

SYSTEM RESET

SYSTEM
INTERRUPT

~
GND

1........::..:'--____-

PORT SELECTION
} (LATCH CONTROL)
(DS\.DS21

2-48

V....

DATA
BUS

The Intel"'3214 Interrupt Control Unit
(ICU) implements multi-level interrupt
capability for systems designed with
Series 3000 computing elements.
The ICU accepts an asynchronous interrupt strobe from the 3001 Microprogram Control Unit or a bit in
microprogram memory and generates
a synchronous interrupt acknowledge
and an interrupt vector which may be
directed to the MCU or CP Array to
uniquely identify the interrupt source.
The ICU is fully expandable in 8-level
increments and provides the following
system capabilities:

SCHOTTKY
BIPOLAR LSI
MICROCOMPUTER
SET

3214

High Performance - 80 ns Cycle Time

PACKAGE CONFIGURATION

INTERRUPT
CONTROL
UNIT

Compatible with Intel 3001 MCU and
3002 CPE
8-Bit Priority I nterrupt Request Latch
4·Bit Priority Status Latch
3-Bit Priority Encoder with Opan
Collector Outputs
DTL and TTL Compatible
8-Level Priority Comparator
Fully Expandable

.,••
.,

ECS

SGS

R.

IA

R,

ClK

R,

ISE

R,

At

R,

A,

R,

Vcc
R,

A,

R.

EtR

24-Pin DIP

GNo

Eight unique priority levels per ICU
Automatic Priority Determination
Programmable Status
N-Ievel expansion capability
Automatic interrupt vector generation

2-49

ENLG

"

"

ETLG

3214
PIN DESCRIPTION
PIN

NAME AND FUNCTION

SYMBOL

1-3

Current Status Inputs

Active LOW

The Current Status inputs carry the binary value modulo 8 of the current
priority level to the current status latch.

4

SGS

Status Group Select Input

Active LOW

The Status Group Select input informs the ICU that the current priority
level does belong to the group level assigned to the ICU.

5

IA

Interrupt Acknowledge
The Interrupt Acknowledge Output will only be active from the ICU
(multi·ICU system) which has received a priority request at a level
superior to the current status. It signals the controlled device (usually
the processor) and the other ICUs OR·tied on the Interrupt Acknowledge
line that an interrupt request has been recognized.

Active LOW
Open·Coliector
Output

The IA signal also sets the Interrupt Disable flip·flop (it overrides the
clear function of the ECS input).

6

CLK

Clock Input
The Clock input is used to synchronize the interrupt acknowledge with
the operation of the device which it controls.

7

ISE

Interrupt Strobe Enable Input
The Interrupt Strobe Enable input informs the ICU that it is authorized
to enter the interrupt mode.

8-10

Request Level Outputs
When valid, the Request Level outputs carry the binary value (modulo 8)
of the highest priority request present at the priority request inputs or
stored in the priority request latch. The request level outputs can become active only with the ICU which has received the highest priority
request with a level superior to the current status.

11

ELR

Enable Level Read Input

Active LOW
Open·Coliector

Active LOW

When active, the Enable Level Read input enables the Request Level
output buffers (Ao-A2)'

12

GND

13

ETLG

Ground
Enable This Level Group Input
The Enable This Level Group input allows a higher priority ICU in multiICU systems to inhibit interrupts within the next lower priority ICU
(and all the following ICUs).

14

ENLG

Enable Next Level Group Output
The Enable Next Level Group output allows the ICU to inhibit interrupts within the lower priority ICU in a multi-ICU system.

15-22

Priority Interrupt Request Inputs

Active LOW

The Priority Interrupt Request inputs are the inputs of the priority
Interrupt Request Latch, The lowest priority level interrupt request
signal is attached to Ro and the highest is attached to R 7 .

23

ECS

Enable Current Status Input
The Enable Current Status input controls the current status latch
and the clear function of the Interrupt Inhibit flip-flop.

24

Vee

+5 Volt Supply

NOTE:
(1) Active HIGH, unless otherwise noted.

Active LOW

3214
FUNCTIONAL AND LOGICAL DESCRIPTION
The ICU adds interrupt capability to
suitably microprogrammed processors
or controllers. One or more of these
units allows external signals called
interrupt requests to cause the pro·
cessor/controller to suspend execution
of the active process, save its status,
and initiate execution of a new task
as requested by the interrupt signal.
It is customary to strobe the ICU at
the end of each instruction execution.
At that time, if an interrupt request is
acknowledged by the ICU, the MCU is
forced to follow the interrupt micro·
program sequence.
Figure 1 shows the block diagram of
the ICU. Interrupt requests pass
through the interrupt request latch
and priority encoder to the magnitude
comparator. The output of the pri·
ority encoder is the binary equivalent
of the highest active priority request.
At the comparator, this value is com·
pared with the Current Status (cur·
rently active priority level) contained
in the current status latch. A request,
if acknowledged at interrupt strobe
time, will cause the interrupt flip·flop
to enter the "interrupt active" state
for one microinstruction cycle. This
action causes the interrupt acknowl·
edge (lA) signal to go low and sets the
interrupt disable flip·flop.

The IA signal constitutes the interrupt
command to the processor. It can
directly force entry into the interrupt
service routine as demonstrated in the
appendix. As part of this routine, the
microprogram normally reads the reo
questing level via the request level out·
put bus. This information which is
saved in the request latch can be en·
abled onto one of the processor input
data buses using the enable level read
input. Once the interrupt handler has
determined the requesting level, it
normally writes this level back into the
current status register of the ICU. This
action resets the interrupt disable flip·
flop and acts to block any further
request at this level or lower levels.
Entry into a macro level interrupt ser·
vice routine may be vectored using the
request level information to generate a
subroutine address which corresponds
to the level. Exit from such a macro·
program should normally restore the
prior status in the current status latch.
The Enable This Level Group (ETLG)
input and the Enable Next Level Group
(EN LG) output can be used in a daisy
chain fashion, as each ICU is capable
of inhibiting interrupts from all of the
following ICUs in a multiple ICU
configuration.

I

I

J

",
",
",
",
",
",
",

.,
.,

.,

An active request level (Ro-R7) is
greater than the current status
Bo-B2
The interrupt mode (lSE) is active
ETLG is enabled
The interrupt disable flip·flop is reset
When active, the IA signal asynchron·
ously sets the disable flip·flop and
holds the requests in the request latch
until new current status information
(BO-B2, SGS) is enabled (ECS) into
the current status latch. The disable
flip·flop is reset at the completion of
this load operation.
During this process, ENLG will be en·
abled only if the following conditions
are met:
ETLG is enabled
The current status (SGS) does not
belong to this level group
There is no active request at this level
The request level outputs Ao-A2 and
the IA output are open·collector to
permit bussing of these lines in multi·
ICU configuration.

.......-

El"

ETlG

",

The interrupt acknowledge flip-flop
is set to the active LOW state on the
rising edge of the clock when the
following conditions are met:

1
I
I

I

-

REaUEST ACTIVITY

I

I

....r:-

:r-

INTERRUPT
REQUEST

::c.....

LATCH

•

I

PRIORITY

ENCODER

I
I

I
I
I

~ '--

I
CURRENT

STATUS

F=
I---

COMPARATOR

FD

LATCH

I

I
I

INT
ACK
FF

.........

'I'

'CS

I
I
I
I

-

I
I
I

I
I
I
I
I

I
I
I
I
I
I

r~
DIS

"

I

-.:.l........

I

I

IS'
CLK

At

I

L

___________________________________

Figure 1. 3214 Block Diagram.

2·51

A,

A,
ENlG

r--c.S.!......

SGS

I

~r;--;;

I

I

~~
PRIORITV

I

~

3214
D.C. AND OPERATING CHARACTERISTICS
ABSOLUTE MAXIMUM RATINGS*
Temperature Under Bias
Ceramic. . . .
Plastic . . . .

. -65°C to +75°C
. . O°C to +75°C

Storage Temperature

_65°C to + 160°C

All Output and Supply Voltages.

.-0.5V to +7V

All Input Voltages

-1.0V to +5.5V
.

Output Currents .

. . 100mA

·COMMENT: Stresses above those listed under "Absolute Maximum Rating" may cause permanent damage to the device. This is a stress rating only
and functional operation of the device at these or at any other condition above those indicated in the operational sections of this specification is not
implied. Exposure to absolute maximum ratings for extended periods may affect device reliability.

TA

= oOe

SYMBOL

to +75°C, Vcc

= 5.0V

±5%

PARAMETER

MIN

Vc

Input Clamp Voltage (all inputs)

IF

I nput Forward Current:

LIMITS
Typ(1)

MAX
-1.0

ETLG input
all other inputs

-.15

-.OS

CONDITIONS

UNIT
V

IC = -5 mA

-0.5
-0.25

mA
mA

VF = 0.45V

IR

Input Reverse Current:

ETLG input
all other inputs

80
40

iJ.A
iJ.A

VR = 5.25V

VIL

Input LOW Voltage:

all inputs

0.8

V

VCC = 5.0V

VIH

Input HIGH Voltage:

all inputs

V

VCC = 5.0V

ICC

Power Supply Current (2)

VOL

Output LOW Voltage:

all outputs

VOH

Output HIGH Voltage:

ENLG output

lOS

Short Circuit Output Current: ENLG output

ICEX

Output Leakage Current:

2.0

= 25°C and

130

mA

.3

.45

V

10L = 15 mA

V

10H = -1 mA

2.4

3.0

-20

-35

IA and
AO-A2 outputs

NOTES:
11)Typical values are for T A

90

nominal supply voltage.

12)80-82, SGS, ClK, R0-R4 grounded, ali other inputs and ali outputs open.

2·52

= 5.0V

-55

mA

VCC

100

iJ. A

VCEX = 5.25V

3214
A.C. CHARACTERISTICS
TA z DoC to +75°e. Vee - +5V ± 5%
SYMBOL

PARAMETER

MIN

liMITS
TYP(1)

MAX

UNIT

ttv

ClK Cycle Time

80

tpw

ClK, ECS, IA Pulse Width

25

15

ns

ns

Interrupt Flip-Flop Next State Determination:
tlSS

ISE Set-Up Time to ClK

16

12

ns

tlSH

ISE Hold Time After ClK

20

10

ns

tETCS 2

ETlG Set-Up Time to ClK

25

12

ns

tETCH 2

ETlG Hold Time After ClK

20

10

ns

tECCS 3

ECS Set-Up Time to ClK (to clear interrupt inhibit prior to ClK)

80

25

ns

tECCH 3

ECS Hold Time After ClK (to hold interrupt inhibit)

0

tECRS 3

ECS Set-Up Time to ClK (to enable new requests through the request latch)

3

110

ECS Hold Time After ClK (to hold requests in request latch)

0

tECSS 2

ECS Set-Up Time to ClK (to enable new status through the status latch)

75

tECSH 2

ECS Hold Time After ClK (to hold status in status latch)

tDCS 2

SGS and B0-82 Set-Up Time to ClK (current status latch enabled)

70

tDCH 2

SGS and 80-B2 Hold Time After ClK (current status latch enabled)

0

tRCS 3

R0-R7 Set-Up Time to ClK (request latch enabled)

90

tRCH 3

R0-R7 Hold Time After ClK (request latch enabled)

0

tiCS

IA Set-Up Time to ClK (to set interrupt inhibit F_F. before ClK)

55

tCI

ClK to IA Propagation Delay

tECRH

ns
70

ns

70

ns
ns

0
50

ns
ns

55

ns
ns

35
15

ns
25

ns

Contents of Request Latch and Request Level Output Status Determination:
tRIS4

R0-R7 Set·Up Time to IA

10

0

ns

tRIH4

R0-R7 Hold Time After IA

35

20

ns

tRA

R0-R7 to A0-A2 Propagation Delay (request latch enabled)

80

100

ns

tELA

ElR to A0-A2 Propagation Delay

40

55

ns

tECA

ECS to A0-A2 Propagation Delay (to enable new requests through request latch)

100

120

ns·

tETA

ETlG to A0-A2 Propagation Delay

35

70

ns

2-53

3214
A.C. CHARACTERISTICS (CON'T)
SYMBOL

LIMITS

PARAMETER

UNIT

MIN

Typ(l)

SGS and B0-B2 Set-Up Time to ECS

15

10

ns

SGS and 80-82 Hold Time After ECS

15

10

ns

MAX

Contents of Current Priority Status Latch Determination:

Enable Next Level Group Determination:
R0-R7 to EN LG Propagation Delay

45

70

ns

ETLG to EN LG Propagation Delay

20

25

ns

ECS to ENLG Propagation Delay (enabling new request through the
request latch)

85

90

ns

ECS to ENLG Propagation Delay (enabling new SGS through status latch)

35

55

ns

NOTES:
(11 Typical values are for TA

= 25°C and nominal supply voltage.

(2) Required for proper operation if ISE is enabled during next clock pulse.
(3)

The~e

times are not required for proper operation but for desired change in interrupt flip-flop.

(4) Required for new request or status to be properly loaded.

(5) tCY = tiCS + tCI

TEST LOAD CI RCUIT

TEST CONDITIONS:
Input pulse amplitude: 2_5 volts_
Input rise and fall times: 5 ns between 1 and 2 volts_

300n

Output loading of 15 mA and 30 pf_
OUT

Speed measurements taken at the 1_5 V levels_

0---..--------;
lOOn

3001

CAPACITANCE(5)

SYMBOL

LIMITS

PARAMETER

UNIT

Typ(l)

MAX

Input Capacitance

5

10

pf

Output Capacitance

7

12

pf

TEST CONDITIONS:
VBIAS =2_5V, Vee = 5V, TA

MIN

=25°C, f = 1 MHz

NOTE:
(5)This parameter is periodically sampled and not 100% tested_

2-64

D.C. AND OPERATING CHARACTERISTICS
ABSOLUTE MAXIMUM RATINGS*
Temperature Under Bias
CerDip . . . . .
Storage Temperature

-55°C to +125°C
-65°C to +160°C

All Output and Supply Voltages.

.

All Input Voltages

. -1.0V to +5.5V

Output Currents .

. • . • . 100mA

. -0.5V to + 7V

·COMMENT: Stresses above those listed under "Absolute Maximum Rating" may cause permanent damage to the device: This is a stress rating only
and functional operation of the device at these or at any other condition above those indicated in the operational sections of this specification is not
implied. Exposure to absolute maximum ratings for extended periods may affect device reliability.

TA =_55°C to +125°C; Vee
SYMBOL

=5.0V ± 10%

PARAMETER

MIN

Vc

Input Clamp Voltage (all inputs)

IF

I nput Forward Current:

LIMITS
TYPO)

MAX
-1.2

ETLG input
all other inputs

-.15

-.08

UNIT

CONDITIONS

V

IC = -5 mA

-0.5
-0.25

mA
mA

VF = 0.45V

IR

I nput Reverse Current:

ETLG input
all other inputs

80
40

/lA
/lA

V R =5.5V

V IL

Input LOW Voltage:

all inputs

0.8

V

VCC = 5.0V

VIH

Input HIGH Voltage:

all inputs

V

VCC = 5.0V

ICC

Power Supply Current(2 )

VOL

Output LOW Voltage:

all outputs

VOH

Output HIGH Voltage:

ENLG output

lOS

Short Circuit Output Current: ENLG output

ICEX

Output Leakage Current:

2.0

= 2S

Cl

130

mA

.3

.45

V

10L = 10mA

V

10H = -1 mA

2.4

3.0

-15

-35

IA and
A0-A3 outputs

NOTES:
(1)Typical values are for T A

90

C and nominal supply voltage.

12)80-82' SGS. elK. R0-R4 grounded. all other inputs and all outputs open.

2·55

-55

mA

VCC= 5.0V

100

/lA

VCEX = 5.5V

3214

M41
. ~r4RV·

A.C. CHARACTERISTICS
TA=-55°Cto+125°C;
SYMBOL

vee =5.0V± 10%
PARAMETER

MIN

LIMITS
Typ(l)

MAX

UNIT

tcy

ClK Cycle Time l51

85

tpw

ClK. ECS. IA Pulse Width

25

15

ns

ns

Interrupt Flip-Flop Next State Determination:
tlSS

ISE Set-Up Time to ClK

16

12

ns

tlSH

ISE Hold Time After ClK

20

10

ns

tETCS 2

ETlG Set-Up Time to ClK

25

12

ns

tETCH 2

ETlG Hold Time After ClK

20

10

ns

tECCS 3

ECS Set-Up Time to ClK (to clear interrupt inhibit prior to ClK)

85

25

ns

tECCH 3

ECS Hold Time After ClK (to hold interrupt inhibit)

tECRS 3

ECS Set-Up Time to ClK (to enable new requests through the request latch)

3

110

ECS Hold Time After ClK (to hold requests in request latch)

0

tECSS 2

ECS Set-Up Time to ClK (to enable new status through the status latch)

85

tECSH 2

ECS Hold Time After ClK (to hold status in status latch)

tDCS 2

SGS and B0-B2 Set-Up Time to ClK (current status latch enabled)

90

tDCH 2

SGS and B0-82 Hold Time After ClK (current status latch enabled)

0

tRCS 3

R0-R7 Set-Up Time to ClK (request latch enabled)

100

tRCH 3

R0-R7 Hold Time After ClK (request latch enabled)

0

tiCS

IA Set-Up Time to ClK (to set interrupt inhibit F.F_ before ClK)

55

tCI

ClK to IA Propagation Delay

tECRH

ns

0
70

ns

70

ns

0

ns
50

ns
ns

55

ns
ns

35
15

ns
30

ns

Contents of Request Latch and Request Level Output Status Determination:
tRIS4

R0-R7 Set-Up Time to IA

10

0

ns

tRIH4

R0-R7 Hold Time After IA

35

20

ns

tRA

R0-R7 to A0-A2 Propagation Delay (request latch enabled)

80

100

ns

tELA

ElR to A0-A2 Propagation Delay

40

55

ns

tECA

ECS to A0-A2 Propagation Delay (to enable new requests through request latch)

100

130

ns

tETA

ETlG to A0-A2 Propagation Delay

35

70

ns

2-56

A.C. CHARACTERISTICS (CON'T)

MIN

LIMITS
TYP(1)

SGS and B0-B2 Set-Up Time to ECS

20

10

ns

SGS and B0-82 Hold Time After ECS

20

10

ns

SYMBOL

PARAMETER

MAX

UNIT

Contents of Current Priority Status Latch Determination:

Enable Next Level Group Determination:

tECSN

R0-R7 to EN LG Propagation Delay

45

70

ns

ETLG to ENLG Propagation Delay

20

30

ns

ECS to ENLG Propagation Delay (enabling new request through the
request latch)

85

110

ns

ECS to EN LG Propagation Delay (enabling new SGS through status latch)

35

55

ns

NOTES:
111 Typical values are for TA

= 25°C and

nominal supply voltage.

121 Required for proper operation if ISE is enabled during next clock pulse.
(3) These times are not required for proper operation but for desired change in interrupt flip-flop.
(4) Required for new request or status to be properlv loaded.

(51 tCY

= tiCS + tCI

TEST CONDITIONS:

TEST LOAD CIRCUIT

Vce

Input pulse amplitude: 2.5 volts.
Input rise and fall times: 5 ns between 1 and 2 volts.

300n

Output loadi ng of 15 rnA and 30 pf.
OUT O--~-------1

Speed measurements taken at the 1.5V levels.

30 pI

CAPACITANCE(5)

LIMITS
TYP(1)

MAX

Input Capacitance

5

10

pf

Output Capacitance

7

12

pf

SYMBOL

PARAMETER

TEST CONDITIONS:
VBIAS = 2.5V, VCC = 5V, TA

MIN

= 25°C, f = 1 MHz

NOTE:
(S)This parameter is periodically sampled and not 100% tested.

2-57

UNIT

3214
WAVEFORMS

'OCS

• ______ J

~

'ocH','-.;;;;---;07/1

------- --,
~

r--- -----------

X
-J1''-----r----------

-------+--Ji~--------teres

'ETCH

--------ylX----------------

ISE - - - - - - -

------4---~------J.;I~ _J

1

'ISS

IISH

r-~

r---- ,

SGS '0',

JI~+~EJ~ -------J~~,~D~HJ '-I-.-~.-EC-SS-.-EC-SH-I-"""\

ECS

Ir+---+~,

i'--J

~--+,I

lEeRS

CLK

"CRN

-----

=±

I-~."""~--f

'PW

_.j::~::j:::j:==1==1==~EC~C"-S---

IA

x-------

'(u---------------x

0 0 0,

_________

~i

--

'-_+--J

tecRH

leeCH

'CI

ICY

~

r-----, __ _

__________ J~

I~

tpw

I

-:~~-- ------)(I~--------------

ELO

-+--...j::j::-:::-=I=I-:-:,!.,-ar +----- ~L: __ ,I~____
------ -.-- .... -IETEN.I '--+-________
tecsN
ENLG

J

OEN

'- _ _ _ _ _ _ _ _

-------------------------~)(--------------)(------

TYPICAL CONFIGURATIONS
The ICU has been designed for use
with the INTEL Series 3000 Bipolar
Microcomputer Set. It operates from
the single common system clock and
can accept an interrupt strobe (lSE)
generated by the 3001 Micropgoram
Control Unit or by a bit in micropro'
gram memory as shown in Figures 2
and 3.
The ICU responds to interrupt reo
quests of sufficient priority by enter·
ing the interrupt active mode. Its
output (lA) can be tied to the row
enable input (ERA) of the 3001 MCU.
This gates an alternate row address
onto the microprogram memory ad·

dress bus which forces the system to
execute an interrupt handling routine.
Alternatively, the ICU output can be
used to directly modify the MCU jump
instruction (AC inputs) so that the
next microprogram address corresponds
to the start of the interrupt routine
rather than the start of the macroin·
struction fetch sequence. Of course,
in the case of this particular imple·
mentation, the interrupt strobe must
be generated one clock period earlier
and the ISE output of the MCU
should not be used.
As shown in Figure 4, when several
ICUs are used together to provide a

2-58

multiple of 8 priority levels, most con·
trollines will be bussed. The Intel
3205 Decoder may be used to decode
the high order bits of the request level,
the information being derived from
the daisy·chain group level signals.
As mentioned in the functional description, the request level information
(Ao-A2) may be sent to the 3001 MCU
or the 3002 CP array as a constant
through the Mask (K) bus or as data
through the memory (M) or data (I)
busses. Similarly, the status information can be generated by the CP array
and carried to the ICU by the data (D)
output bus of the CP array.

3214
TYPICAL CONFIGURATIONS (CON'T)
MlCRO·INSTRUCTION

MICROPROGRAM
MEMORY

TOct'ARRAY,
110 AND MAIN MEMORY

RAM -3101,3107

MIC;:AOf'ROGRAM

MICRO·INSTRUCTION

MEMORY

"OM-3301A, 3304"
I'ROM -1801.3104

TOct'ARRAY.

AAM-31G1.lI01
ROM-3)(11,\,3304.
"ROM-lIIIl,3IIM

110 AND M"IN MEMOFlY

AC'I===::;l

Figura 2. Interfacing 3214 with 3001.

Figura 3. Interfacing 3214 with 3001.

Interrupt strobe generated by MCU.
Interrupt routine start address at column 15 row 31.
Macro-instruction fetch start address at column 15 row 0.

I nterrupt strobe generated by the microprogram memory.
Interrupt routine start address at column 14 row 0Macro-instruction fetch start address at column 15 row 0.

...

~J
.

.."VHOW{
INTERRUPT

RIOUIS"
IHIO"II'
PRIORITY
OROlWl

:

r--

.,
,.

ICU1.t.o

..

rnI

'G,

OI.

l:r

m-

r-~
r;-.'

.."V, LOW {

.

"UOfUTY

GROUPI

_.

112

_,v
A,

r;:::=:

ICUI AO

I.

ENlG

-~

r-

1

~f-[J
.,

INTERRUPT
REOUESTS
ILOWEST
I'RIORITY
GROUPI

.
:

'GS

::'.'

.,

ICUO

Ao

1CUfi'R_

-

I.

ISE~

~l

L..J...

AC"VHOW{

.,.,

32.4

r;:::
r- A.

"" OS.

INT STROBE FROM MCU OR
MICROPROGRAM MEMORY

r---ETlO

.,.,

SG$

-

ENABLE LEVEL READ

INT ACKNOWLEDGE
{TO ERA"'" Of MCUI

ElLG

INTEIIHU"

REOUESTS
12ND HIGHEST

r-r--

III

ENLO-

e--'

}a~.

-

1m

Ao

"" f-rrI.

ISE

...

f- r-

ENLG

~

l

"..

,III

I
i

CU""IJIITITATUS
I f " " CI' ""RAYI

I

tHAIU CURRENT
STATUI

Figura 4. Using Several 3214 Interrupt Chips to Provide more than Eight Priority Levels.
(The 3214 at the upper right is used to encode the high order bits of the requesting level)

2-59

intel

SCHOTTKY
BIPOLAR LSI
MICROCOMPUTER
SET

The INTE~3216 is a high-speed 4-bit
Parallel, Bidirectional Bus Driver. Its
three-state outputs enable it to isolate
and drive external bus structures
associated with Series 3000 systems

High Performance- 25 ns typical
propagation delay
Low Input Load Current-O_25 mA
maximum
High Output Drive Capability for
Driving System Data Busses
Three-State Outputs
TTL Compatible
16-pin DIP

The INTEL 3226 is a high-speed 4-bit
Parallel, Inverting Bidirectional Bus
Driver_ Its three-state outputs enable
it to isolate and drive external bus
structures associated with Series 3000
systems_

3216/3226
PARALLEL
BIDIRECTIONAL
BUS DRIVER
PACKAGE CONFIGURATION
cs

vcc

000

DCE

DBa

'4

003

01 0

'3

DB3

DO,

INTEl@

3216

'2

01 3

DB,

11

0°2

01,

'A

GND

The 3216/3226 driver and receiver gates
have three state outputs with PNP
inputs_ When the drivers or receivers
are tri-stated the inputs are disabled,
presenting a low current load, typically
less than 40 /lamps, to the system bus
structure_

3216

3226

LOGIC DIAGRAM 3216

LOGIC DIAGRAM 3226

010 o----~I>-~---,

DIOO------jl>o>---j---,

DOoo-----i----<>--+--,

0" o----j---jl>---j---,

01,

oo,o-----i----O---j----'

01, o-----i-~I>----i---,

OI,o----j---jI>o>---j---,

DO,o----j-------j---,

DD,o----j--o===r
I

~

-----------'

I

O.5V

2-65

OH
V
VOL

System Timing

Series 3000
System Timing
Considerations
by Gary Fielland
While the timing for each component in Intel's 3000
Series Schottky Bipolar Microcomputer Set is clearly
specified, the composite system timing must be derived. This system timing is highly dependent on the
particular configuration implemented, and hence,
must be carefully considered for each implementation.
Though Intel cannot generate the system timing for
every possible configuration, an effort has been
made to study a few simple variations. By examining
these examples and taking note of considerations
given, it should be easier for the system designer to
realize those times which are critical, and to generate the appropriate timing for his particular system.
The designer must consider many different factors in
determining this "proper" system timing. Several
simplifications are made to facilitate this discussion.
Intel commercial grade parts are specified over a
wide temperature range (O°C - 70°C) and so variations in timing due to temperature will not be considered, except for a short note at the end.
Whenever a signal must traverse a conductor between
two points, there is a finite delay introduced into
the signal path that is not accounted for by any data
sheet. This is the delay due to such factors as the

Aside from these simplifications, it should be realized
that this note is not an extensive study of the timing
of any particular system, but rather a compendium
of typical considerations which a designer might
examine.
Consider the basic "data sheet" I6-bit processor configuration as shown in Figure 1. It utilizes pipeline
registers, full carry look-ahead, and a priority interrupt mechanism. To implement any such system the
designer must be very careful to provide the proper
timing for all components under all possible operating conditions. Such a system is highly complex and
the analysis is best approached in a piecemeal fashion.

t

MICRO·
PROGRAM

PIPELINE

MEMORY
16 3601·1·S
OR
4 3604'S

length of the conductor, its transmission properties,
and the characteristics of the driver and receiver.
When a TTL totempole output drives a TTL input a
short distance away this delay is usually negligible
compared to other delays in the signal path. However, if there are many loads (increasing the capacitance), or the driver is of the open-collector type
(limiting the drive), or if the receiver is physically far
removed, the designer should consider and allow for
any possible deleterious effects of this delay. For this
discussion, except in one special case, the delay introduced by interconnection is not considered.

K BUS
CK

I---

, . . - LI

CI

VECtOR

j

E

C"

Cn+8

l

1

CK MA8·4 MA3·B
AC6-9
MCU FC9·3
3214
3001
FO
IAI------ ERA
FI
B8'·2
RiI·7
SX9·PX7
CK

AB·2

ICU

INTEJRUPT
REQUESTS

ISE

t

J~"+'

+Vcc

I - - ISE

"N
M,N I--ROI---

XY

t

I

INTERRUPT

DOUT

16 BIT
CPE ARRAY
3OO2'S

CK

ADDRESS

SY STEM
CL OCK

t

F)1.6 "oUT

REGISTERS
74S174

1

CARRY XY
LOOK-AHEAD
3003

Cli-

C"~

--

t
I
MEMORY

DATA

Figure 1. Basic 16-Bit Processor Configuration

3-1

OTHER
DATA

System Timing
ARITHMETIC DELAY PATHS
First an analysis will be made of the arithmetic paths
and delays. Imagine cycles in which arithmetic is
being done within the CPE array. The carrys must
have time to propagate through the arithmetic portion and reach the MCU so that a conditional jump
may be made based on that carry out bit. For the
moment ignore other critical paths, and examine
Figure 2 which illustrates these arithmetic cycles.

Keeping the same train of thought, consider individually the effects of variants from the configuration
of Figure 1. If full carry look-ahead is not used and
the carry is allowed to ripple through only the last
slice, an additional delay path is introduced. After
the 3003 has generated the carry outputs there is the
CPE carry-in setup time (tSS) which must be met as
before. However, the carry-out of the last slice will
not be available to the MCU flag input until it has
rippled through (tCe> that slice. Finally, the MCU
flag input setup time (tsI) must be satisfied.

The cycle begins with the rising edge of the system
clock as it clocks the pipeline registers. After the delay (tpLR) introduced by the pipeline, the function
is available at the CPE array. There is a delay (tXF)
while all the CPE's decode the function and generate
their X and Y outputs for the operation. Once the X
and Y outputs are stable, the Carry Look-Ahead circuit takes some time (txC> to simultaneously generate all the carry outputs, including the one which
goes to the MCU flag input. Time must be provided
to allow for the carry-input setup time of the CPE's
(tss) and the MCU (tsI). Finally, adding in enough
time for the clock pulse, which acts as a write pulse
for the CPE register array, the cycle time is determined. Note the time for the MCU flag output to
stabilize (tKO) was ignored as it is not a limiting
specification for this configuration.

tCYCLE = tpLR + tXF + txc + tcc + tsI + twp
If the 3003 Look-Ahead Carry circuit is not used,
there will be considerable delay added to the basic
cycle due to ripple carry time. Once the CPE function-inputs are stable, the function must be decoded
and the carry-out of the least significant slice generated (tCF)' The carry must ripple through six slices
(6* tCC) and meet the carry setup time (tsS) of the
most significant slice. However, it must also ripple
through this last slice (tCC) and meet the MCU flag
input setup time which is a more severe restriction.

tCYCLE = tPLR + tXF + txc + tss + twp

CLOCK

u

FUNCTION
INPUTS

•

tcYCLE = tPLR + tCF + (7* tCC) + tSI + twp

u

1

~~~

i

----------- I

j-----tXF~:
X. Y. RO
OUTPUTS

C

r--------------------------

i
I
i'xc---+\---'sS-1
CARRY
INPUTS

'

~~~

*-------------------..;.I--

------------------------~------~

t-'SI--~-i----------i

_ t cc

FLAG
INPUT

l

--'

==================================
tPLR

elK t to pipeline register outpUts (745174)

'XF

function inputs to X,Y,RD outputs

17
52

'XC

Lookahead - X. V inputs to carry OUtputl

20

'SS

Data set-up time, LI &: CI

27

'CC

Ripple carry lei to CO) delay

25

'SI
'WP

NOTE: tce included only if carry ripples through lalt slice.
Flag input set"lJP time

'5

Clock pulse width

33

tCYCLE

Full fast carry

tpLA + tXF + txc + tss + tw'P

last slice ripple

tPLR

'49

+ tXF + txc + tce + tSI + tw'P

If pipeline ragistersare not used; replace tPLA with the sum of teo (eLKt to

'62
M~

outputs,

44 nsec) plus tROM (access time; 50 nsec for 3601-1, 70 nsec for 3604).
If 3003 fast carry is not used; replace tXF with teF (function IN to eo output, 85 nsec);
replac8tXe + tee with (N-l)-tee. where "N" is the number of stices used.

Figure 2. Non-Interrupt 16-Bit Processor Cycle Timing

3-2

"sec

System Timing
Consider first a special case. Namely, the data is input via an LTM instruction and no test will be made
on the carry-output. This implies that for this specific
instruction, carry propagation is unimportant and it
is acceptable to have an erroneous carry-output. For
such a case, it is sufficient to only allow for the
CPE data setup time (tDS)'

If pipeline registers are not used, there will be additional delay. It takes some time (tCO) after the rising edge of the clock for the next address to propagate through the MCU address register and buffers.
Then, when this address is stable the ROMs must be
accessed and there will be a delay (tROM' access
time) before their output and hence the CPE function-input is stable. Thus, the cycle time for a nonpipelined system with carry look-ahead is:

tCYCLE

tSETUP = tDS
For the more general case where arithmetic is done
on input and the carry-output may be tested, the
above analysis is incomplete. While the above condition must be met, it is no longer the determining factor. Time must be allowed for carry propagation.
See Figure 3, which illustrates this case.
From the point in time when the data becomes stable
at the CPE inputs, there is a delay (tXD) while the
CPE generates the X and Y outputs. If Ripple Carry
is employed, the delay (tCD) is in waiting for the
carry-output of the least significant slice. After
either of these delays the rest of the setup time is
allocated analogously to that depicted in Figure 2
and discussed previously in relation to arithmetic
cycle times.

= tco + tROM + tXF + txc + tss + twp

In the previous discussion it was assumed that the
operands in the arithmetic operations were internal
registers and the K-bus as implemented. If one of the
operands is the M-bus or the I-bus, additional consideration should be given. This situation will typically arise at the completion of a Memory-Read or
Input cycle. Typically, these cycles are implemented
such that the processor clock stops in its high state
to wait for the data to be available, while the processor is in the midst of executing an LMM or similar
instruction. Thus, it is often the case that the pipeline registers have long since been accessed and the
function decoded.
Then, when the data becomes available a clock pulse
is issued and normal operation continues. It is the
time from the point the data becomes available until
the clock pulse is issued (Data Input Setup Time)
that is of concern here.

tSETUP (Basic) =tXD + txc + tss
tsETUP (Last Slice Ripple) = tXD + txc + tcc + tsI
tsETUP (Ripple Carry) = teD + (7* tCe> + tSI
tsETUP (No Pipeline) - Same as Basic

CLOCK

DATA

INPUTS

-t

I

'xo"-

x, V
OUTPUTS

-'xc-I'
X

CARRY
INPUTS

'"

·I~,cc~

I

FLAG
INPUT

\'=t

SI - _

I

tXD

Data inputs to X.V outputs

tHX

SX,PX input hold time

tSET-UP

Full fast carry
LIlt slice ripple

42 nsec
20

89

txo + txc + t55
tXD + txc + tee + tSI

102

If 3003 fast carry is not used; replace tXD with tCD (data input to CO output, 55 nsec);
replace txc + tee with (N-ll-tCC then tSET-UP fripple carryl.
NOTE: This diagram is UMJ.lly of concern only in relation to memory-read, or input
cycles.

Fillur.3. 16-Bit Processor Data Input Set-Up Times

3-3

245

t=

System Timing
CONTROL DELAY PATHS

control inputs. Some consideration must be given to
the additional requirements on timing imposed by
the use of this ISE output. After the ROM has been
accessed and the MCU address control inputs are
valid, it takes the MCU some time (tFI) to decode the
JZR 15 operation and raise the ISE output. This output is used as the 3214 ISE input and must be valid
early enough to meet that input setup time (tISS).
As this setup time is relative to the rising edge of the
clock, the clock pulse width need not be added in.

After carefully examining the arithmetic paths and
delays it is appropriate to push all of this information onto your "mental stack" and begin again with
a consideration of the control paths and delays_
After this study the stack can be popped and information merged to yield overall system requirements_
Consider the MCU as it cycles in normal operation
(see Figure 4). At the rising edge of the clock the
new microprogram address is loaded into its holding
register and through the output buffers. Thus, the
new address reaches the ROM after a delay (teo).
Then there is a wait (tRaM) while the ROMs are accessed before the outputs are valid. At this time the
MCU address control inputs (which are never pipelined) are valid and this must be early enough in the
cycle to satisfy the MCU address control input setup
time (tSF). Adding the time for the clock pulse
(twp) yields the cycle time requirement. Note this
paragraph has ignored the generation of the ISE
output.

tcYCLE = teo + tRaM + tFI + tISS
Recalling the basic configuration depicted in Figure
1 and the situation described in the last paragraph,
imagine that an interrupt request had been active
long enough to meet the request setup time (tRCS)
of the ICU. Then since the ISE input went high and
satisfied the input setup time, the Interrupt Acknowledge flip-flop within the 3214 will change state
and lower the MCUs ERA input after a delay (tCI).
After the row address outputs are disabled (tEO)'
the pull-up resistors will begin to pull these lines high
and after the voltage on these lines rises to 2.0V
(tRISE) the ROM address will be valid. The remainder
of this cycle is the same as previously described and
usually will not be required to again generate an ISE
pulse.

tCYCLE = teo + tRaM + tSF + twp
In the basic configuration shown in Figure 1 the ISE
output is used to strobe the 3214 Interrupt Control
Unit each time a JZR 15 (usually a jump to macroinstruction fetch) is recognized at the MCU address

tCYCLE

=

tCI + tEO + tRISE + tRaM + tSF + twp

CLOCK

ROM
ADDRESS

AC 16-61

INPUTS

ISE
OUT

:

,t°-1

',I

1--t

c

ERA
INPUT

I

F==---tM-U-X~--~-----------------

tco

elK t to MA [8 ..... 4>1 outputs

44 nsec

tROM

ROM access time (70 nsec for 3604) 3601- 1

50

tSF
tFI

ACIS .....1/.l1 input set-up time

10

ACI6-¢1 input to ISE output

40

tlSS

ISE input (3214) set-up

16

tc,

elKI to IAoutput (3214)

25

tEO

ERA input to MA 18 ..... 4J output

tRISE

RISE time to 2.0 V with 1 KH pull-ups: (16"3601-1)

32
84
21

tMUX

Multiplexer switch time (7451581

tCYCLE

Ignoring ISE output

teo + tROM + tSF + twp \3601-11

Using ISE output

teo + tROM + tFI

14"36041

12
(3604)

+ llSS 13601-1)

137
157

150

Interrupt using pull-upstCI + tEO + tRISE + tRaM + tSF + twp (3601-11

234

Interrupt using MUX" tel + tMUX + tROM + tSF + twp (3601-11

130

("MUX adds tMUX-PROP [6 nsec] to

Figure 4. MCU & Interrupt Cycle Timing

3-4

tcol

System Timing
Examining the times shown on Figure 4 for this case
of an interrupt cycle using pull-up resistors, it is clear
that unless something is done this will be the limiting cycle time requirement. There are several techniques which may be used to ease this requirement.
Since interrupt cycles are relatively infrequent in
comparison with other cycles, one solution might be
to extend just that cycle. In other words, the system
cycle time would be determined by all considerations
previously mentioned, but ignoring the abnormal interrupt cycle requirement. Then the clock circuit
would be designed such that it could extend a cycle
in response to a signal from the 3214 Interrupt Control Unit (see Figure 5).

teYCLE (Interrupt with MUX)

tCI + t MUX + t ROM + tSF + twp

MICRO·
PROGRAM
MEMORY

ADDRESS

l
MULTIPLEXER
SELECT
A'N

+Vcc
SYSTEM
CLOCK

I
ClK
OUT
CLOCK
GENERATOR

r

j
CK

CYCLE
EXTEND

i----

B'N

r
MAB-4

'SE

MA3-O

'SE

ICU

CK
'SE

'CU
3214

=

MCU
IA

f.--

+Vcc

--"

ERA

'SE
MCU
3001

~

TERA

1

Figure 6. Multiplexer to Reduce Address Rise Time

A third alternative to solve the long interrupt cycle
requirement is to implement the interrupts in quite
a different way. Rather than changing the MCU address outputs, the MCU address control input least
significant bit (AO/» may be altered (see Figure 7).
Using this technique an extra ROM bit (Interrupt
Strobe) is required to strobe the 3214 ICU since the
MCUs ISE output occurs one cycle too late. Implementing the same mechanism (interrupt strobe on
JZR 15) could be done by using the interrupt strobe
bit to strobe the ICU (see Figure 7) the cycle before
the JZR 15 code appears. An added benefit of this
method is that the interrupt structure may be strobed
at points other than the beginning of an instruction
fetch cycle, facilitating PAUSE or WAIT instructions.
Examining the timing diagrams in Figure 7, it can be
seen that this implementation of interrupts does not
limit the system cycle time. Rather, this interrupt
mechanism's timing is less restrictive than timing for
a normal cycle. The only requirements are that the
interrupt strobe bit from the ROM reaches the 3214
ICU ISE-input within its setup time (tISS ). In the
next cycle it is only necessary that the lA-output has
gone low (tCI) early enough to meet the MCU address control input setup time (tSF). Thus, for the
price of one bit of ROM interrupts can be implemented with no penalty in time.
At this point both major delay paths (arithmetic and
control) have been examined for the implementation
in question. After the designer has assured himself

Figure 5. Interrupt Cvcle Extension

The interrupt cycle would still be exactly as depicted
in Figure 4, but the length of the interrupt cycle
would be longer than a normal cycle, and in fact long
enough to accommodate the interrupt cycle requirement.
It can be seen that a significant portion of the interrupt cycle is lost waiting for the pull-up resistors to
charge the capacitance on the address lines. Thus,
another method of easing the interrupt cycle requirement would be to reduce the address line rise time
(tRISE). Reducing the resistance of the pull-ups
would help but this technique is limited by the available MCU address output fanout. Alternatively, the
MCU row address outputs (MA8-4) could be connected to the ROM address lines through a multiplexer such as the 74S158 (see Figure 6). With such
a connection the interrupt cycle time is reduced
since the MCU enable time (tEO) plus the address
line rise time (1RISE) may be replaced with simply
the multiplexer select time (tMUX) as shown in Figure 4. However, it should be noted that such a connection adds delay to the MCU address outputs, thus
effectively lengthening this existing delay (teo) by
the multiplexer propagate time (tMUX.PROP) and
hence lengthening any cycle which was dependent on
the MCU delay (teo).

3·5

System Timing

MICROPROGRAM
MEMORY
(OPEN·
COLLECTOR)

ISEI-----I
ICU

+Vcc

IA

teo + tROM + tSF + twp
tco + tROM + 1155
Modification) > teo + tROM + tSF + twP. and

tCYCLE (Non-Interrupti ;>

+Vcc

tCYCLE (Interrupt Strobel

MCU

tCYCLE IAC[411

+Vcc

AC6-11----4o-AJlIv--'

ERA

)0

;;;.otel + tBUF + tSF + twP
tCYCLE (Interrupti - Same as Non-Interrupt

CLOCK

Ir-

L

'-J

~

'w.- -

'wp- ~ _ t c o _

~'co--ROM
ADDRESS
__ t

ROM

___

1\

-'S.-

I--'ROM

t
'ISS

IA
OUTPUT

7417
OUTPUT

.-

'

JZR 15 CODE
FROM ROM

INTERRUPT STROBE
BIT APPEARS
CI

__

MODIFIED TO JZR 14
BY IAOUTPUT

J

---

tauF

[-

Figure 7. Interrupt Using AC (1/» Modification

there are no other delays which he may have overlooked, such as introducing external circuitry into
the paths, he may merge the various requirements
generated into a uniform set of system requirements.
Any change introduced after these requirements have
been generated must be closely examined that it does
not subtly alter any system requirements. Delays that
are negligible in one configuration may be dominant
in a slightly different structure.

WHAT HASN'T BEEN MENTIONED?

1. In the introduction it was explained that temperature would not be considered in the examples
since Intel specifies products over the 0° C to 70° C
temperature range. This deserves further comment.
A quick glance at an Intel Data Sheet will verify
that Intel parts are specified and guaranteed over
the O°C to 70°C ambient temperature range and
concurrently with a five percent tolerance power
supply. This is a reasonable range and allows the
designer to guarantee circuit operation.
.

Unfortunately, the standard Schottky MSI line
(74SXX) is only specified at 25°C ambient and
Vee = 5V. The variance of parameters over the
allowable temperature and supply voltage is un·
specified and left to the designer's experience. Due
to this uncertainty the designer should "appro·
priately" modify any times attributable to nonIntel parts to allow for variations over temperature and supply voltage.
2. In the examples given it was always assumed that
setup times would be honored. Though most of a
computing system is synchronous, it typically has
to interface with asynchronous events. It is at this
interface that difficulty may be encountered. Consider a popular circuit (Figure 8) used to "synchronize" asynchronous signals.
In this circuit the output delay is guaranteed only
if the input setup time is met. But since the input
is asynchronous, this setup time may not always
be satisfied, as at the second event depicted in
Figure 8. What happens? Though the results are
highly dependent on the flip-flop circuit design,

System Timing
Recall the 3214 Interrupt Control Unit and its request setup time (tRCS) and its IA output delay
(tCI)' This delay is in several critical system paths
as shown by the examples. Of course, the IA output delay specified also presumes the IA flip-flop
setup time was met. When deliberately violating
the IA flip-flop setup time, a hang-up of 50 nsec
has been observed. What is a designer to do?
Slowing down the system such that it could tolerate any expected hang-up would be the easiest
solution. This may not always be as bad as it
sounds. Recalling the situation depicted in Figure 7, note that some flip-flop hang-up is tolerable. [tIA-HANG = tCYCLE - (tSF + twp )]. An alternative would be to "synchronize" the asynchronous interrupt requests using the technique
previously described. An octal D flip-flop such as
the 74S374 would be suitable. .

some general observations may be made. Typically,
the effect is to stretch out the flip-flop delay time
as the event approaches arbitrarily close to the
clock edge. Theoretically, the delay will go to infinity if the event falls precisely on the clock edge.
Some flip-flops also exhibit a characteristic in
which the output may change state and some time
later return to the original state. This phenomena
is known as "hang-up" and has been observed to
last for twenty nanoseconds on a 7 4S7 4. It cannot be absolutely prevented when asynchronous
signals are introduced into a synchronous system,
but the probability of the "hung" flip-flop causing
an error can be reduced without limit. The technique is simply to cascade these interfaces.
If two such flip-flops are cascaded there is some
probability PI (Pj <1) that the asynchronous event
will fall close enough to the clock edge to hang
the first flip-flop. Given that it hangs, there is
some probability 1'2 that it will hang for very nearly an entire clock period and into the hang-up
zone of the second flip-flop. Then, there is a
probability Pa that the second flip-flop will hang
long enough to cause an error. Thus, the probability of error is I'E = PI *P2*Pa. Hence, by cascading flip-flops the probability of error can be
reduced without limit.

ASVNCHRONOUS I
SVSTEM

3. In the examples given it has been assumed that
the system, including all the CPEs, the MCU, and
the ICU, operates from a single clock. If a circuit,
such as in Figure 9, that provides a separate clock
for different components is used, the possible
clock skew must also be considered when determining system timing.

INTERFACE

74874

----+-----~D
ASV-;;;;::ONOUS I
EVENT

I SYNCHRONOUS
I SVSTEM
I

Q~------~-----

I~CK
"'1J"'"'U""
SYSTEM
CLOCK

SYSTEM
CLOCK

ASVNC
EVENT

Q

OUTPUT

LJ

U
*'OU1

{:'"j

U

~l,"+;:t" .I.

tsu - 74574 oa1a input set-up time" 3 nsec.
tFO - 74574 Delay hom clock t ·9 nsec.
tHU - Heng up due to set-up time violation.

Figure 8. Synchronizing Circuit Exhibiting Hang-Up

3-7

~

U

1-'oU1

X

t

HU ---

System Timing
SUMMARY
Generating the correct timing for a complex system
in which parameters may vary with temperature,
power supply voltage, lead length and the like is no
trivial task. Fortunately, large scale integration such
as Intel's 3000 family is making the task much easier.
With the 3000 family of compatible parts the designer need only worry about the interfaces and may
be assured the internal timing is correct. Such a system is best analyzed by separately considering the
various delay paths and later combining the sundry
results. And of course, with Murphy on vacation the
designer can be confident of a flawless design on the
first pass.

TWICE
CLOCK - - - . . _ - - - - - - - ,
RATE

MCUANO
SYSTEM

"RUN"---+-~

CLOCK

CPE
CLOCK
CPE CLOCK
INHIBIT
BIT FROM PIPE LINE

REGISTER

Figure 9. CPE Clock Inhibit Circuit

4. Though not explicitly mentioned, it has been assumed that all input hold times would be observed.
Usually these times are satisfied with no conscious
effort required of the system designer. However,
parameters such as the MCU SX and PX input
hold time must be carefully considered. These inputs are used for macro instruction decoding and
typically are used at the end of an instruction
fetch cycle. When using these inputs the designer
must provide the necessary data hold time before
allowing the data to change.

3-8

Disk Controller Design

Disk Controller Designed
With Series 3000
Computing Elements
by Glenn Louie

Figure 1. Bipolar Microprogrammed Disk Controller

speed microprocessors that together with a minimum of external logic perform the intricate program sequences required by high speed peripheral
controllers.

With the introduction of the first microprocessor, digital designers began a massive switch to
programmable LSI technology, away from hardwired random logic. Designers found that with
these new LSI components and the availability of
low cost ROMs they could easily implement structured designs which were both cost effective and
flexible. However, not all digital designs were
amenable to the microcomputer approach. One of
the basic limitations was the speed at which a particular critical program sequence could be executed
by a microprocessor. The early P-channel MOS
microprocessors, such as Intel's 4004 and 8008,
were able to solve a broad class of logic problems
where speed was not essential. With the introduction of the more powerful n-channel MOS microprocessors, such as the Intel@8080, the range of
applications was significantly broadened, but there
still existed a class of applications that even these
newer devices were not fast enough to handle.

A multi-chip bipolar microprocessor differs from
the single chip MOS microprocessor in that the
bipolar microprocessor is programmed at the· microinstruction level rather than at the macroinstruction level. This means that instead of specifying
the action via a macro program using a fixed instruction set, a designer can specify the detailed
action occurring inside the microprocessor hardware via a microprogram using his own customized
microinstructions.
In general, microinstructions are wider than
macroinstructions (e.g. 24 to 32 bits) and have a
number of independent fields that specify simultaneous operations. In a single microcycle, an arithmetic operation can be executed while a constant is
stored into external logic and a conditional jump is
being performed.

Recently, two new Schottky bipolar LSI computing elements, members of the Intel Bipolar
Microcomputer Set, were introduced which expand
the range of microcomputer applications to include
high speed peripheral controllers and communication equipment. The new elements are the 3001
Microprogram Control Unit (MCU) and the 3002
Central Processing Element (CPE). These two components facilitate the design of specialized, high

A bipolar LSI microprocessor design is )im. ilar to
a general MSI/SSI microprocessor design where
the intricacies of the application are imbedded in
the program patterns in ROM. However, the large
amount of logic necessary to access the microcode
has been replaced by the LSI MCU chip. Also,
3-9·

Disk Controller Design
the MSI logic required to provide the arithmetic
and register capabilities has been replaced by the
functionally denser LSI CPE slices. Because of
these new LSI chips, microprogramming with all
its advantages can now be applied to designs which
previously were unable to justify microprogramming
overhead.

The bipolar LSI microcomputer in the BMDC
performs the necessary command decoding, address checking, sector counting, overlap seeking,
direct memory accessing, write protection, password protection, overrun detection, drive and read
selection, and formatting. External hardware assists
the microprocessor in updating the sector counter,
performing parallel-to-serial and serial-to-parallel
conversion, and generating the CRC data checking
information. The BMDC uses a special purpose
microprocessor, configured with the components
listed in Table A. The LSI microprocessor uses an
MCV, an 8: I multiplexer, eight 360 I PROMs, a
command latch, a data buffer, and an array of
eight CPE slices (Fig. 2). The characteristics of
this design, only one of many possible with the
3000 family, are as follows:

The effectiveness of these new LSI components
in a high speed peripheral controller design has
been demonstrated by the Applications Research
group at Intel with the design of a 2310/5440
moving head disk controller (BMDC). The BMDC
has a total of 67 IC chips and is packaged on a
printed circuit board measuring 8" x IS", as shown
in Figure I. Disk controllers of equivalent complexity realized with conventional components
typically require between 150 and 250 I.C.'s. The
BMDC performs all the operations required to
interface up to four "daisy chained" moving head
disk drives, with a combined storage capacity of
400 megabits, to a typical minicomputer. It is fast
enough to keep up with the drive's 2.5 MHz bit
serial data stream while performing the requisite
data channel functions of incrementing an address
register, decrementing a word count register, and
terminating upon completion of a block transfer.

•
•
•
•
•
•
•

400 nsec system clock
16-bit wide CP array
Ripple carry CPE configuration
Non-pipelined architecture
One level subroutining
230 32-bit microinstructions
Word to 4-bit nibble serialization

The MCV controls the sequence in which microinstructions are executed. It has a set of unconditional and conditional jump instructions which is
based on a 2-dimensional array for the microprogram address spece called the MCV Jump Map. (I)

The BMDC interacts with the minicomputer's
disk operating system (DOS) via I/O commands,
interrupts and direct memory access (DMA) cycles.
The I/O commands recognized by the BMDC's
microprogram are:

PART #

Conditions In
Seek Cylinder
Write Data
Read Data
Verify Data
Format Data
The BMDC sends an interrupt to the minicomputer when either a command is successfully executed, a command is aborted, or a drive has finished
seeking. The DOS then interrogates the BMDC
with a Conditions In command. The following
flags specify the conditions which the BMDC can
detect:
Done flag
Malfunction flag
Not Ready flag
Change In Seek Status flag
Program Error flag
Address Error flag
Data Error flag
Data Overrun flag
Data transfers between the minicomputer and
the disk BMDC occur during DMA cycles. DMA
cycles are also used for ·passing command information from the minicomputer to the BMDC.

DESCRIPTION

QUANTITY

3001

MCU

1

3002

CPE

3212

8 bit 1/0 Port

3205

1 of 8 Decoder

8
6
2
8

3601

lK PROM

3404

6 bit Latch

74173

4 bit Gated D F/F

74174

6 bit D F/F

74175

4 bit D F/F

74151

8: 1 Multiplexer

8233

Dual 4: 1 Multiplexer

9300

4 bit Shift Register

9316

4 bit Binary Counter

2

8503

CAe Generator

1

7474

Dual D F/F

5
2

7473

Dual J·K F/F

7451
7404

And-Dr-Invert Gate
Hex Inverter

Quad 2 Input Nand Gate

1
6
9

7400
74H08

Quad 2 Input And Gate

1

7403

Quad 2 Input Nand O.C. Gate

2

7438

Quad C.C. Drivers

4

74Hl03

Dual J·K F/F

2
Total

67 I.C. Packages

Table A. I.C. Component List for Disk Controller
3·10

Disk Controller Design
MICROPROGRAM MEMORY

OUTPUT PORTS

8·36015

~
.1

8

8

ACQ·6

Fe
Fa

,001
SX

PX

2

7

2

F1

-7";

1

t
I' It·····
,I ,I

8

----I

~IIIIIIIII

MAO.
MCU

J'

8:1 MUX

I

INPU~ PORT

y

O-l-DATA
MUX

......-'

t..... t

PORTA

t

I II 1·····1'

I

,

PORTe

PORT B

t

I

I

f8

LeI
' - - - eo

,.

I

LI

o OUTPUTS

18
MAB

I

M

,.

,.

I
•

K

AO

CP ARRAY
8 - 3OO2's

A OUTPUTS

4

COMMAND
LATCH

FO-6

8

NIBBLE OUT

4
4
NIBBLE IN

EXTERNAL LOGIC

J.

27

,

DATA BUFFER

,.

18
MOB

DISK DRIVE
SIGNALS

Figure 2. Disk Controller - The various elements of a specialized microprogrammed processor is shown with the external logic
which together is the entire disk controller.

In addition, the MCV is connected in such a manner as to perform command decoding, external
input testing, and one level subroutining.

upon exiting, a subroutine with a JPR instruction,
control can be returned to the procedure which
called it (Fig. 4). This technique saves a significant
amount of microcode in the BMDC because some
long sequences do not have to be repeated.

Command decoding is achieved by connecting
the command latch to the Primary Instruction (PX)
bus inputs and using the JPX instruction (Fig. 3).
The testing of external input signals is performed
by routing the least significant bit (LSB) of the
seven bit jump code through an eight-to-one multiplexer (Fig. 2). The mUltiplexer is controlled by a
3-bit Input Select Code which selects either the
LSB of the jump code or one of 7 external input
signals to be routed to the MCV. This technique
has the effect of conditionally modifying an unconditional jump code so that the next address will
either be an odd or even location (Fig. 3). A one
instruction wait for external signal loop can be
simply implemented in this fashion.

The microprogram control store is an array of
eight 360 I PROMs organized to give 256 words x
32 bits (230 words were required for the BMDC).
The 32-bit wide word is divided into the following
sub control fields:
I.
2.
3.
4.
5.
6.
7.

Jump Code field
Flag Control field
CPE Function field
Input Select field
Output Select field
Mask or Data field
Mask Control field
TOTAL

7 bits
2 bits
7 bits
3 bits
3 bits
8 bits
2 bits
32 bits

The command latch and data buffer retain command information from the computer so that the
memory bus will not be held up if the BMDC
should be busy performing an updating task. The
data buffer also retains the next data word during
a Write Data to disk operation.

One level subroutining is achieved by feeding the
four least significant bits of the address microprogram outputs back into the secondary instruction
(SX) inputs. Enough program status information
can then be saved in the internal PR latch when a
subroutine is called with a JPX instruction so that

3-11

Disk Controller Design
The CP array is connected in a ripple carry configuration as shown in Figure 5. The eight CPE
slices provide the BMDC with a l6-bit arithmetic,
logic and register section. Word to nibble serialization is made possible by connecting the Shift
Right Outputs (RO) of the first, third, fifth, and
seventh CPE to the Nibble Out bus. By using only
four shift right operations a word in a register can
be converted into four 4-bit nibbles. The final
serialization of these nibbles is done in the external

logic. Similarly, the Shift Right Inputs (LI) of the
second, fourth, sixth, and eighth CPE are connected
to the Nibble In bus so that with only four shift
right operations, a word can be assembled from
four nibbles.
COLUMN

o

,

2

3

4

5

6

1

8

9

10

11

12

13

1415

COLUMN

2

3

4

5

6

7

8

9

10

"

12

13

14

15

0

V" CALL
i

.... '

-!UBROUTlN~

CALL

CAL~

C

~
B

CAL~

ROW

(WAIT FOR EXTERNAL INPUT)

RET

,.

SHItWAlnlltAOVAlfVfOR.. AT
DAnOATAOATADATA
D"TA

..,

\
DESIGNATED
RETURN ROW

~

~
B"

r--

C.,

-

0"

"

ROW
(INSTRUCTION DECODING)

13

I

JCC

'--+-+H-CJNDITIION~L
BRANCH ON EXTERNAL INPUTS -t-t-+--i
r
USING JUMP CURRENT COLUMN (Jec) AND
JUMP CURRENT ROW (JeRI INSTRUCTION

1T

,,~t=~~=l~~JC3R~~~~~~~t=J==t=l~

Figure 4. MCU Jump Map for one level subroutine call and
return. A subroutine is called from four different
places in the program each with a unique column
number. Upon returning from the subroutine,
control will be transferred back to the portion of
program which called it. A subroutine may be
called from a maximum of 16 different places.

13

Figure 3. MCU Jump Map for instruction decoding and
conditional branching on external inputs

,

NIo
{, '.
•
NI IN
,--!r- CO CII--'-LI
RO I----

,

BBlE

ur

BBLE

4

1',

1',

{,

I

1

~~y-

~K

300'

,

L-L

-

r300'

I---

300'

-

,

,

---.l
I----

'r--

,

,

1

---.l

300'

,

,

,
,

-

,

{,

{,

{,

---.l

L.J..

-..l

r300'

'-

-

1-

:...-

--:r.T

Tz

,
,

,

,

,

{2'6

e-

BUS

CATA
OUTPUT
BUS

,~

CI - r- IN
_LI RO M-t,-K
n;-r
300'

CARRY

300'

.

I

I

, ,

16

-co

3002

l-

ADDRESS

,

"

,

I

I

,
,
01 DATA MUX

,
MASK CONTROL
FIELD

}.

DISK

DRIVE

co NOITIONS

DATA

, ,

16

INPUT
BUS

I

FIELD

Figure 5. CPE Array - A 16-bit arithmetic, logic and register section is built up with 8 CPE slices connected in a ripple carry
configuration. The K, I, and M bus is used for loading information into the CPE slices. The LI inputs and RO outputs
are connected to make up the Nibble In and Nibble Out buses.

3-12

Disk Controller Design
MCV chip via the carry out line. Finally, the eleven
scratch pad registers allow the controller to retain
data and status for the processor.

An eight bit mask bus is connected to the mask
inputs of the least significant half of the array. The
mask inputs of the most significant half of the CP
array are all tied to the eighth mask bit. A constant
with a value between +127 and -128 can therefore
be loaded into the array from the microprogram.
The mask bus comes from the data field of the
microprogram via a 0-1 data multiplexer. When the
CP array requires either an all one or all zero mask,
the data field is freed to provide data to external
logic.

The CP array in the microprocessor performs the
following for the BMDC with its registers and
arithmetic functions.
I.
2.
3.
4.
5.
6.
7.
8.

Sector counting
Word to nibble serialization
Drive seek status monitoring
Header checking
DMA address incrementing
Word counting
Multi-sector length counting
Automatic resynchronization of sector
counter
9. Accessing of additional information from
memory
10. Time delays

The 3002 CPE is an extremely flexible component which makes it particularly attractive for
controller designs. The Memory Address Register
makes an ideal DMA address register.(!) The accumulator (AC) register, which also has its own
output bus can be used as a data word buffer
during a write DMA cycle. Concurrently, another
word can be assembled in the T register using the
shift right operation. The three separate input buses
provide a mUltiplexing capability for routing different .data into the CPE. In the BMDC, the I-bus
is used for loading disk drive conditions, the K-bus
for loading mask or constant information, and the
M-bus for reading an external data buffer. The
arithmetic logic section performs zero detection
and bit testing with the result delivered to the

The organization of the microprocessor was
chosen to maximize the use of the MCV and CPE
in performing the various tasks required for disk
control. However, there are some specialized tasks
which are more economically performed by external logic. The microprocessor controls this external logic by output ports whiclr are selected by
the output select field in the microinstruction. The

EXT BUS RD

B~~!~~~LE

BUS
CONTROL II

I
I

DAT~EOT~~~RUN t-R!!:E'-:A='~~::":':':;'::::TE,-J

t--'-';6f:--_-i-C_______~------..:'+6_>--<--.1
t---,7A-----------t~----,._____+._=__........._ j
16

16

•

-

-

-

BIPOLAR LSI
MICROPROCESSOR

-

•
4

MEM ADO BUS
MEM DATA BUS
BUS INTERFACE

+DISK

DRive INTERFACE

CYLINDER ADD

I PLATTERHEAD SELECT
UNIT SELECT

WR GATE
NIBBLE OUT

t--f-..,

NIBBLE IN

t-,4---'

DISK
CABLE
DRIVER

3 I

;~T~~TL~NDER

I

OF DATA

OUTPUT PORTS

DISK DATA

FOR CONTROLLING

~

r;;t---J

TOP INDEX PULSE

~ BOTTOM INDEX

EXTERNAL LOGIC

INPUT PORT

I;;;-l

FOR TESTING
OR SVNCHRONIZING

~

~~

TO EXTERNAL LOGIC

L -_ _ _ _ _ _ _ _ _ _ _ _D_R_'V~E~C~0~ND~I_Tl~ON_S~/~8---------~I

PULSE
TOP SECTOR PULSE
BOTTOM SECTOR
PULSE

Figure 6. External Logic - Microprocessor monitors and controls external logic via input-output port to perform sPeCialized
disk controller functions.

3-13

Disk Controller Design
data to these ports is delivered from the shared data
field.
The external logic section of the BMDC (Fig. 6)
has a double buffered 4-bit shift register which is
used for initial packing and the final serialization
of data. It is controlled by a modulo-4 counter
circuit. During a write operation, serial data from
the shift register is encoded by the clock controlled
double frequency encoder and sent to the drive. As
data is being transferred to a cyclic redundancy code
(CRC) is generated and then appended to the end of
the data stream to be recorded on the disk. The external logic also contains addressing latches and
flag flip-flops to capture sector and index pUlses.
It also contains main memory bus·control circuitry
for performing bus protocol, bus acquisition, and
data overrun detection.

~-_

SET NOT HEADY flAG 80 AHORT

GET FROM MEMORY THE
HEADER. STARTING ADDRESS,
BLOCK LENGTH, & PASSWORD

SET PROGRAM ERROR FLAG 8. ABORT

The microprogram for the BMDC microprocessor
directly implements the six I/O commands. The
program controls the sequential action of the various elements of the microprocessor and of the
external logic needed to decode and execute the
commands. In Figure 7, the flow chart of the Read
command shows the actions required to read a file
off the disc. The BMDC first selects the drive specified by the command and checks its ready status.
It then uses a memory pointer passed to it by the
command to access four more words from the main
memory using DMA cycles. The first word is the
Header, which contains the track address and sector
address information. The second word is the Starting Address specifying the first location in memory
where the data is to be stored. The third word is the
Block Length of the file to be retrieved. All of the
address information and the Block Length are
stored in several CPE registers for further processing. The fourth word is the Password which is compared against a microprogram word to insure that
the command from the computer is a valid one and
not a program error. The password can prevent an
erroneous command, due to a user programming
error, from destroying important files on the disc.

' - - - - SET ADDRESS ERROR FLAG & ABORT

PACK NIBBLES TO FORM WORDS
INCREMENT MEM ADD COUNT

DECREMENT WORD COUNT
INITIALIZE CHANNEL OPERATION

CRITICAL
TIMING

lOOP

NO
SET OATA ERROR FLAG l!. ABORT

After the password check, the BMDC resynchronizes the sector counter if necessary and waits
for the desired sector by monitoring the sector
pulse flag. When the desired sector arrives, the
BMDC synchronizes itself to a start nibble and
reads the header which it compares to the desired
header to insure that the head is positioned
properly. It then reads and stores 128 words of
data at sequential locations in memory. A cyclic
redundancy code is compiled during the read oper-

YES
seT DONE flAG

Figure 7. Read Command Flowchart - This flowchart is
coded in the microprogram which when executed
performs the disk Read operation.

3·14

Disk Controller Design
ation and compared against the CRC word read in
after the data. At the end of each sector the block
length is decremented to see if it is the last sector.
If it is not, the sector address is incremented and
another sector is read.
In addition to the command routines, the microprogram has an idle loop routine (Fig. 8) which the
BMDC executes when it is not busy with a command. While in the loop, the BMDC updates the
sector count, monitors the drives seeks status lines
and decodes any disc commands from the disc
operating system in the minicomputer.
The design process for the BMDC began with an
evaluation of what disc controller operations could
effectively be handled by the microprocessor. This
also determined what had to be performed by
external logic. A microprocessor configuration was
then established and certain critical sequences were
programmed to verify that the configuration was
fast enough. A flow chart was produced and the
microprogram coded directly from it. All attempts
were made to use the MCU and CPE slices effectively and keep the microprogram within 256
words. The assignment of MCU addresses which
initially appeared difficult, was, with a little experience, quite straight forward and less restrictive
than a state counter design. After the coding, the
microprogram was assembled and loaded into the
microprocessor's control memory.
The BMDC design demonstrates how a specialized high speed microprocessor can be designed
using standard bipblar LSI devices and microprogrammed to perform disc control functions with
the addition of a small amount of external logic.
The flexibility of Series 3000 allows a designer
to optimize the configuration for his application.
For extremely high speed applications, the designer
can add fast carry logic and microinstruction pipelining to his microprocessor to achieve alSO nsec
16-bit microprocessor.
At Intel, our design experience with the BMDC
design exercise has shown that the use of the MCU
and CPE results in a clean, well structured design.
The complexity of the design resides primarily in
the microprogram leaving the external logic relatively simple. During debugging, most of the problems encountered were restricted to the microprogram which was easily modified and debugged
using l:)ipolar RAM for the control memory.
Figure 8. BMDC Flowchart - The BMDC runs in the idle
loop when it is not busy doing command processing.

References
I. J. Rattner, J. Cornet, M. E. Hoff, Jr., "Bipolar
LSI Computing Elements Usher In New Era of
Digital Design," ELECTRONICS, September 5,
1974, pp 89-96.

3·15

l>
'tJ
'tJ

m

. ,'

Z
C

"

••~~~~

: : ~r; ; -; ; oli';ii~~

-,; =='i
===ii
::;
~
I..~

'.",.:,:,1

"

DU

::

Oil n 001

:

UI]C~ST'

An

~ ::~~T~
2l

eoMMAlKl Oll

"::~

.,.
iili
I.
~_ _ _'_"_-<
I

c

Cii
~

0
0

z
::a

-I

0
rrm

"
I¥."

::a
en

0
:I:
m

s::
~

(;

I:' ,
r.-

""w.

110

-.32 Cl"

""I·r
iil-

CMlI

CO-AND

I)l' OlID JIll

0
iii"
~

0

-20

~

(j)

....

0
CD
en

cD'
~

»

'tI
'tI

m

Z

o
><
I
o

en

8"z
-I

:D

o

rr-

m

:D

en

o

:I:

m

s::
~

(;

..

~ ~.

f&"V

CnAoO

C
iii'

oo""

-...
:::I

(3

(5"

c

m
cO·
:::I

CPU Design

Contents

Central Processor Designs
Using The Intel® Series 3000
Computing Elements
by
M.E. Hoff, Jr.,
James Sugg,
Ron Yara

INTRODUCTION .. . . . . . . . . . . . . . . . . . . . . . . . . ..
THE SERIES 3000 F AMILY . . . . . . . . . . . . . . . . . . ..
AN INTRODUCTION TO MICROPROGRAMMING..
CONSTRUCTING CENTRAL PROCESSING
UNITS .....................................
Basic Design Steps . . . . . . . . . . . . . . . . . . . . . . . . ..
Hardware Organization ......................
Writing of Microprograms .... . . . . . . . . . . . . . . ..
DEFINITION OF CONTROL FIELDS . . . . . . ..
ASSIGNMENT TO CONTROL MEMORY. . . . ..
PROGRAMMING TECHNIQUES . . . . . . . . . . ..
A DESIGN EXAMPLE ........................
Initial Specifications ........................
Macro-Instruction Decoding ..................
Microprogram Implementation. . . . . . . . . . . . . . ..
MEMORY REFERENCE AND
IMMEDIATE GROUP .....................
JUMP GROUP. . . . . . . . . . . . . . . . . . . . . . . . . ..
REGISTER MOVE AND SUBROUTINE
GROUP ................................
SPECIAL FUNCTION GROUP. . . . . . . . . . . . ..
INPUT/OUTPUT GROUP ..................
INTERRUPTS. . . . . . . . . . . . . . . . . . . . . . . . . ..
Microprogram Memory Assignment. . . . . . . . . . . ..
CONCLUSION ..............................
APPENDIX A - DESIGN EXAMPLE
INSTRUCTION SET. . . . . . . . . . . . . . . . . . . . . . . . ..
Memory Reference Group . . . . . . . . . . . . . . . . . . ..
Immediate Group ..........................
Jump Group ..............................
Subroutine Call Group. . . . . . . . . . . . . . . . . . . . . ..
Subroutine Return Group ........ . . . . . . . . . . ..
Register Manipulation Group. . . . . . . . . . . . . . . . ..
Byte Load and Store Group. . . . . . . . . . . . . . . . . ..
Special Memory Reference Instruction ..........
Base and Status Register Move Group . . . . . . . . . ..
Input/Output Group . . . . . . . . . . . . . . . . . . . . . . ..
Stack Push and Pop Group ...................
APPENDIX B - MICROPROGRAM LISTINGS . . . ..
APPENDIX C - CENTRAL PROCESSOR
SCHEMATIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..

3·19

3-21
3-21
3-21
3-23
3-23
3-23
3-26
3-26
3-27
3-28
3-29
3-30
3-33
3-34
3-34
3-43
3-46
3-49
3-52
3-52
3-53
3-58
3-62
3-62
3-62
3-63
3-63
3-64
3-64
3-64
3-64
3-64
3-64
3-64
3-65
3-76

CPU Design

INTRODUCTION
Unit (MCU) and the 3002 Central Processing Element (CPE). The MCU determines the sequence of
micro-instruction execution and controls carry /
shift data to and from the CPE array. The CPE
provides a complete two-bit wide slice through the
data processing section of a central processing unit.
CPEs may be arrayed in parallel to form a processor
of any desired word length. For example, to produce a l6-bit wide data path, eight CPEs would be
used.

Until recently, the area of high performance, general purpose and special purpose central processors
was unaffected by the microprocessor revolution.
Although they covered a broad range of applications, the P-channel and N-channel microprocessors' performance limitation prevented their use in
applications where high speed was necessary.
The introduction of the Series 3000 Computing
Elements has expanded the spectrum of microprocessor applications to include both high performance central processors and controllers. Utilizing Intel's Schottky bipolar technology, the Series
3000 components realized a level of performance
that was not possible with MaS microprocessors.
For example, a l6-bit processor with a microinstruction cycle time of 150 nanoseconds can be
built with the 3000 components. In addition, the
components of the family can be arranged into a
number of different configurations and microprogrammed by the system designer to perform in a
variety of processing environments from front end
processing to arithmetic intensive computation. I

All of the above components use standard TTL
logic levels, as some designers may wish to utilize
SSI and MSI TTL logic to control external circuitry, or to add functions not included in the
basic set to increase the speed of certain operations.
Other members of the family currently include the
following computing elements:
•
•
•
•
•

3003
3212
3214
3216
3226

Look-Ahead Carry Generator
Multi-Mode Latch Buffer
Interrupt Control Unit
Bidirectional Bus Driver
Inverting Bidirectional Bus Driver

This application note describes a systematic procedure for designing central processors with the Series
3000. Using a CPU design example, simple guidelines are given for tasks such as macro-instruction
opcode assignment, macro-instruction decoding and
execution and microprogram memory assignment.

The control and main memory portion of the
central processor may be implemented with any of
the standard bipolar or MaS memory components
shown on page 2.

THE SERIES 3000 F AMIL Y

AN INTRODUCTION TO
MICROPROGAMMING

The Intel® Series 3000 Bipolar Microcomputer Set
is a family of Schottky bipolar LSI computing elements which simplify the construction of microprogrammed central processors and device controllers. These processors and controllers are truly
microprogrammed in the sense that their control
functions are determined by the contents of a control memory. This control memory may be realized
with standard read-only (ROM) memory, read/
write (RAM) memory or programmable read-only
memory (PROM) elements.

The central processing unit of a general purpose
computer usually consists of two portions: an
arithmetic portion and a control portion. The control portion determines the sequence of instructions to be executed and presides over their fetching and execution while the arithmetic portion
performs arithmetic and logical operations.
The basic operation of the control portion consists
of selecting the next instruction from memory,
!hen executing a series of states based upon the
instruction fetched. This sequence may be implemented via a combination of flip-flop and random
logic, or by the use of tables in control memory.

The two most important computing elements in
the family are the 3001 Microprogram Control

I J. Rattner, J. Cornet, and M. E. Hoff, Jr., "Bipolar LSI Computing Elements Usher In New Era of Digital Design,"
ELECTRONICS, September 5, 1974, pp 89-96.

3-21

CPU Design

Standard Bipolar and MOS Memory Components
PART
NUMBER

NUMBER
OF PINS

DATA
ORGANIZATION

TECHNOLOGY

ACCESS
TIME

CONTROL MEMORY

3601

16

Bipolar PROM

256X4

70 nS'

3602

16

Bipolar PROM

512X4

70 nS

3604

24

Bipolar PROM

512X8

70 nS

3624

24

Bipolar PROM

512X8

70 nS

3301A

16

Bipolar ROM

256X4

45 nS

3302

16

Bipolar ROM

512X4

70 nS
70 nS

3304A

24

Bipolar ROM

512X8

3324A

24

Bipolar ROM

512X8

70 nS

3106A

16

Bipolar RAM

256X1

60 nS

3107A

16

Bipolar RAM

256X1

60 nS

256X8

1000 nS

MAIN MEMORY

1702A

24

Static MOS EPROM

2704

24

Static MOS EPROM

512X8

500 nS

2708

24

Static MOS EPROM

1024X8

500 nS
1000 nS

1302

24

Static MOS ROM

256X8

2308

24

Static MOS ROM

1024X8

500 nS

2316

24

Static MOS ROM

2048X8

850 nS

2101

22

Static MOS RAM

256X4

1000 nS'

2102

16

Static MOS RAM

1024X1

1000 nS'

2111

18

Static MOS RAM

256X4

1000 nS'

2112

16

Static MOS RAM

256X4

1000 nS'

2104

16

Dynamic MOS RAM

4096X1

2107B

22

Dynamic MOS RAM

4096X1

200 nS

5101

22

Static CMOS RAM

256X4

650 nS

*Higher speed versions of these devices are available. Consult the Intel Data Catalog.

When the latter technique is used, the central
processor is said to be microprogrammed.

memory. Each macro-instruction is then executed
as a series of micro-instructions. Main memory contains macroprograms, while control memory contains microprograms which define the realized
central processor.

The functions of the control portion of a microprogrammed central processing unit are very similar
to that of a central processing unit itself. To avoid
confusion, the terms "micro" and "macro" are
used to distinguish those operations in the control
unit from those of the realized central processorFor example, the central processor, under the
direction of micro-instructions read from its control memory, fetches macro-instructions from main

Figure I shows a block diagram of a microprogrammed central processing unit (defined by the
dotted boundary). The control unit issues addresses
to the control memory and fetches micro-instructions. This control unit uses the contents of control
memory (micro-instructions) to drive the data
processing unit, external circuits, and to select the
3-22

CPU Design
finds it necessary to alter or enhance the basic
macro-instruction set in some fashion. The tabular
or programming approach offered by the microprogrammed architecture makes such changes far
easier than would be possible in a processor realized
via hardwired logic.

EXTERNAL CONTROL
SIGNALS

r------1

1.----...,

DATA
PROCESSING
UNIT

1
1

IALU, REGISTERS.

1'---?O:~-'
1

1...-...,

1.--.........

I MAIN MEMORY
I (MACROPROGRAMSI

CONSTRUCTING CENTRAL PROCESSING
UNITS

BUS CONNECTIONS)

1

L----.,..~-' I1 L---::oo::--'

1

Basic Design Steps

1

1
I'--.....".,~-'

To realize a central processor with the Series 3000
computing elements, several steps are necessary:

1
1

1

1. Definition of hardware organization.
2. Definition of the central processor macroinstruction set.
3. Implementation of microprograms which realize
the desired macro-instruction set.

1
MACRO·INSTRUCTION
MACRO-I'l'STRUCTIONSIDATA
1
OPCODE
11.. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ...l
CENTRAL PROCESSING UNIT

Figure 1. Block Diagram - Microprogrammed
Computer

Hardware Organization
A typical CPU constructed utilizing the Series 3000
computing elements will consist of an array of CPE
chips, one MCU, and a control memory. The array
of CPE chips realizes the arithmetic, logical functions and registers of the CPU, while the combination of the MCU and control memory realizes the
control portion. The microprogram contained in
control memory initializes the machine when power
is first turned on and supervises the fetching and
execution of macro-level instructions. In addition,
routines to handle such special functions as interrupts will also be contained within the control
memory.

next micro-instruction. The data processing unit
performs the actual computations, logical operations, etc.
In the Intel® Bipolar Microcomputer set, the 3001
MCU performs the control unit function, while the
3002 CPE is the basic building block for the data
processing section.
Thus, within a microprogrammed machine, there
are at least two levels of control and two levels of
programming to be considered. The designer of a
central processor is usually concerned with the
definition of the macro-instruction set and its
realization as a microprogram. The Intel® Series
3000 Bipolar Microcomputer Set establishes a
micro-instruction set which is used as a base for the
microprograms which generate macro-instruction
sets.

The 3002 CPE array contains six buses for communication with external circuitry. Four of these
buses are used primarily to communicate with
memory and I/O devices while the remaining two,
the function control bus (F-Bus) and the control
memory data bus (K-Bus), enable the control portion of the processor to drive the CPE array. The
function control bus is driven by control memory
outputs which direct the CPE array to execute the
desired operation. The K-Bus allows the control
memory to supply various constants and/or masks
to the CPE array.

The reason for using this microprogrammed approach is that very complex macro-instruction
sets can be realized as sequences of relatively primitive micro-instructions. The logic of the final
macro-machine remains relatively simple, with most
of the design complexity residing in the microinstruction sequences contained in control memory.

Because 8 bits of operation code information can
be passed directly to the MCU, the set is best
adapted to macro-instruction sets in which all of
the operation code information is defined by 8 bits
(256 unique macro-instructions). However, larger
macro-instruction sets can be realized by saving any
remaining bits of the operation code in the CPE
array or in an external register. The saved bits can

The final user of the computer seldom needs to be
aware that the CPU was realized with microprograms rather than hardwired logic. A functional
description of the macro-instruction set is usually
sufficient for his purposes. However, the user will
benefit from the microprogrammed approach if he
3-23

CPU Design
then be tested later by routing them to the MCV,
through its 8-bit input port.

• The address bus (A-Bus) to main memory
• The data bus (D-Bus) to memory
• The data bus (M-Bus) from memory with its
path for operation code data to the MCU
• The external device input bus (I-Bus), not
shown
• The micro-function bus (F-Bus) from the
pipeline register
• The constant bus (K-Bus) from the pipeline
register

A "pipelined" mode of operation may be implemented by placing a register of edge triggered D
flip-flops between control memory outputs and the
circuitry controlled by those outputs. This register
causes the execution of a micro-instruction to overlap the fetching of the next micro-instruction. The
control lines which issue micro-instruction sequence
information to the MCV are not routed through
the pipeline register when the pipelined mode is
used; they are routed directly from the microprogram memory outputs to the ACO-AC6 inputs of
the MCV.

In addition, the carry logic bus to and from the
MCV and the micro-instruction sequence logic bus
from control memory to the MCV are shown. Ad-

ditional control fields to such external logic as
memory and I/O control are shown as an output
bus from control memory.

Microprograms written to realize a given macroinstruction set will differ for pipelined and nonpipe lined machines. The major differences are associated with conditional jumps in the microprogram
which test the results of arithmetic or logical operations executed by the CPE array. In a pipelined
machine, these results are delayed by one microinstruction, so that conditional jumps must be
delayed by at least one micro-instruction before
execution. More detailed information concerning
these differences is contained in the microprogramming section of this application note.

The number of bits required for each word of
control memory, i.e., each micro-instruction, is
determined by the number of logical functions the
micro-instruction controls. A minimum of 18 bits
is usually required for basic hardware control:
7 bits of micro-instruction sequence control to the
MCV, (ACO-AC6), 4 bits of carry control to the
MCV, (FCO-FC3), and 7 bits of micro-function
selection to the CPE array, (FO-F6). That is, the
basic hardware requires at least three control word
fields of 7 bits, 4 bits, and 7 bits width respectively.
Almost every processor will require additional
fields to control other logical functions such as
main memory control, I/O control, and constant
generation. Figure 3 illustrates a typical microinstruction word format with several typical user
defined control fields added.

Figure 2 shows block diagrams illustrating the
organization of standard and pipelined central
processing units. The block diagrams show the
basic modules of standard and pipelined CPVs:
the MCV, CPE array, microprogram memory and
the pipeline register. The six buses associated with
the CPE array are shown:

MEMORY ADDRESS

DATA BUSTO

BUS

MEMORY

CLOCK

CONTROL TO
MEMORY,IID

MEMORY ADDRESS

DATA IUS TO

IUS

MEMORY

CLOCK

DATA IN FROM MEMORY

DATA IN fROM MEMORY

Figure 2. Bipolar Microcomputer Non-Pipelined
Organization

Figure 2. Bipolar Microcomputer Pipelined
Organization

3-24

CPU Design
As an example of the use of additional logic to
enhance the set, consider the use of a control field
(I-bit width) to inhibit the CPE clock. This operation allows non-destructive testing of CPE registers
via the MCU carry logic. The carry logic in the
MCU responds just as if the micro-instruction were
executed, but the fact that the CPE clock was inhibited leaves the CPE registers unaltered. An example of conditional clocking is given in a later
section called "Programming Techniques."

The constant bus to the CPE array seldom needs to
be as wide as the data buses. For example, consider
a l6-bit machine where an array of eight CPEs is
used. While the constant bus is nominally 16 bits
wide, if a limited set of masking operations are
used, the number of bits can be reduced significantly. Figure 4 shows how 4 bits can be used to
generate the masks for such a machine where the
only masks needed are for separating high and low
order data bytes, for testing the sign and magnitude
of the data word, and for testing the least significant bit of the word.

MCU

CPE

CPE

MCU

MAIN
MEMORY

1/0
SYSTEM

Figure 3. General Micro-Instruction Format

co

LI
03
02o-----_4----_4--~----_+--~----~~

01 O-----------------------------------------4-__

~----~_4----~~_+

____

~

OOo-------------------------------------------------------------------------~

O.

03 02 01
!BINARV. LOW TRUE)
1

1
1

K·BUS
(HEXADECIMALI

1

• ••
•
•
• • • •
1

MASK FUNCTION

0000
0001

SELECT lse

•a

ooFF

SELECT LOW ORDER BYTE

1

FFOO

SELECT HIGH ORDER BYTE

1

1

7FFF
8000
FFFF

SELECT ENTIRE WORD

SELeCT WORD MAGNITUDE

SELECT WORD SIGN

Figure 4. Wiring the K-Bus Using 4-Bits

MICRO-INSTRUCTION WORD
CONDITIONAL CLOCKING
CONTROL BIT

---J=0,VCLETIME

MASTER
CLOCK

CONDITIONING

CO~~~~I:~

_____-J!

Figure 5. Conditional Clocking

3·25

CPU Design
Writing of Microprograms

Each symbol is associated with only one field, so
that the various symbols can be uniquely interpreted by the assembler. A number of symbols are
predefined for the assembler, and are not to be
used except as provided by the assembler. These
reserved symbols include the standard symbols for
the MCU and CPE functions, and a number of
directives to the assembler.

Once the hardware design is established and the
macro-instruction set chosen, the designer should
proceed to implement the microprograms for the
system. To assist in the writing of these microprograms, Intel has developed CROMIS, a complete
microprogramming system for Series 3000 computing elements.
CROMIS consists of two major software subsystems, XMAS and XMAP. XMAS is a symbolic
microassembler which is extensible in both microinstruction length and memory address space.
XMAP is a complementary subsystem which maps
the micro-instruction bit patterns produced by
XMAS into compatible ROM/PROM programming
files for use with standard memory components.

DEFINITION OF CONTROL FIELDS
Each control field added by the hardware designer
must be declared to the microprogram assembler.
In addition, each bit pattern to be assembled into a
word in the control field may be symbolically
designated. A FIELD definition statement in the
declaration part of the microprogram is used to
declare the field by name and define any states.

Programs written in the microassembly language
have two main parts, a declaration part in which
various aspects of the micro-instruction word are
defined and a specification part in which microinstruction contents are symbolically declared. Provision is made for comment statements throughout
the program so that the programmer may explain
the functions being performed.

As an example, let a 2-bit field be defined for
memory control. If the programmer wishes to
name this field MEMC, and define symbols for the
states with 0 I corresponding to READ, 10 corresponding to WRITE, and II signalling RMW (readmodify-write) and default to 00 if READ, WRITE
or RMW is not specified, the statement:

The main body of the program, the specification
part, defines the sequences of states to be executed,
and the operations which take place for each state.
The main effort in writing a microprogram will be
expended in developing this section.

MEMC

Each statement of the specification part of the
program defines the action (and location) of one
micro-instruction, i.e., one word of control memory. The statement will declare, either directly or
by default, the contents of each control field for
the specified micro-instruction. Furthermore, the
statement will include assignment information designating the address in control memory where the
statement is located.

MICROPS (REAO-01B, WRITE-lOB, RMW-l1BI

DEFAULT-ooB;

would perform the definition. The words FIELD,
MICROPS, LENGTH, and DEFAULT are directives
to the microprogram assembler.
Additional directives include IMPLY, STRING,
KBUS, and ADDRESS. The use of these words,
and other features of CROMIS are covered in the
Series 3000 Cross Microprogramming System Specification.

A specification statement consists of one or more
labels followed by a series of control field specifications. A colon after an entry indicates that it is a
label. The contents of the control fields are indicated symbolically, using either standard MCU or
CPE symbols or user-defined symbols, or by an
equation of the type

FNM

FIELD

LENGTH-2

A typical statement of the specification section
might take the form:

7BH:

IOIB

LAB:

ILRIR3)

FFO

STZ

JFllNC lei;

The number 7BH (hexadecimal) followed by a
colon tells the assembler that the micro-instruction
is assigned to row 7 column II of control memory
(when control memory is treated as an array of 32
rows and 16 columns). The symbolic label LAB

where FNM is a name associated with the field.
The entry 10lB implies the binary value 101.
3·26

CPU Design
3. Using the flowchart as a guide, perform the
assignment. In general, conditional jumps should
be assigned first, with clusters of conditional
jumps assigned before isolated jumps. Leave long
chains of unconditional sequences for last. The
process of assignment can be assisted by using a
diagram of the control memory showing the 32
rows and 16 columns. As each state is assigned,
the control memory diagram is marked to show
occupancy of that word and the flowchart
marked to show the assignment of the state.
With the assignment complete, the addresses are
copied from the memory diagram.

(the colon indicates a label) is also associated with
this location. ILR(R3) indicates that the contents
of register 3 are to be conditionally incremented
and copied to the AC register, while FFO forces the
carry input to a logic zero, so that the increment
operation does not take place. STZ indicates that
the Z flip-flop is to be set by the results, so that,
as no carry can result, the Z flip-flop will be set to
a logic zero. These symbols are standard symbols,
with ILR associated with the CPE and FFO and
STZ associated with the MCU carry logic. The JFL
tests the carry output line for a conditional jump
to either the statement labeled NC or to the statement labeled Te. JFL is also a standard symbol.
Note that, if the machine is pipelined, the conditional jump tests the results of the previous instruction, not of the present one. The semicolon indicates the end of the statement.

One other procedure in microprogram memory
assignment has been found to be useful. When the
control memory diagram is marked as each state is
assigned, it is helpful to include state linkage information in the diagram, i.e., memory location(s)
that reference the current location and memory
location(s) referenced by the current location.
With the additional information, micro-instruction
sequences can be easily traced on the control
memory diagram.

In the statement above, no information was provided for the K-Bus. It is assumed the assembler
will provide the appropriate default value associated with the ILR operation, i.e., the K-Bus at all
zeros.
The reader is referred to the Intel® Series 3000
Cross Microprogramming System Specification for
detailed information concerning CROMIS.

The state linkage information can be quite useful
when most of the microcode has been assigned and
only a few locations are left to assign the remaining
states. If reassignment of memory locations becomes necessary in order to assign the remaining
microcode, or modify the existing microcode, the
state linkage information will greatly simplify the
task.

ASSIGNMENT TO CONTROL MEMORY
The nature of the MCU next state address control
requires the programmer to assign control memory
locations to each micro-instruction. While this may
at first seem unfamiliar, it can usually be easily
accomplished if the following sequence is followed:

When reassignment becomes necessary, sequences
of unconditional micro-instructions should be considered first since they are the easiest to move.
Therefore, these types of states are useful to
annotate.

1. The microprogram should be written without
regard to address assignment. Then conditional
jumps are assigned using the basic conditional
jumps provided by the MCU (JFL, JCF, JZF,
JPR, JLL, JRL, JPX), noting the number of
possible destinations for the conditional jumps
chosen. When a sequence of instructions is to be
executed unconditionally and does not indicate
what jump codes will be used to advance to the
next state (unless the JCE enable feature is required), use the non-committal code JMP rather
than selecting a JCC, JZR or JCR.

In some cases, a particular sequence may be impossible to assign as written. For example, consider the
following section of microprogram:

r

ENTER WITH INSTRUCTION DISPLACEMENT "0" IN AC, SAVE AT R9 -,

175:

r

2. Prepare a state sequence flowchart for the program (see example, Figure 7). According to the
programmer's preference, this may be done before, during or after the actual writing of the
code. Label the conditional jump points on the
flowchart.
3·27

SQR(9) FFI .PX(MO,Ml, M2, M3. M4, MS, MS, M7, MS, M9, MA. MS, Me,
MD. ME. MFI;
ALSO TESTS HIGH 4 BITS OF MACRO-INSTRUCTION .,

r

MO- MACRO INSTRUCTION GROUP 1, FETCH R2 -,
128:

MO:

ILRIR21

FFO

129

Ml:

ILRIR3}

FFO;

M1P;

ADRIR91

FFO;

JMP(M1PI:

CPU Design
1. Forcing a fixed address to access a predetermined
location in memory or to select a specific I/O
device. (Also may be used to load literals.)

"

MIP

M2

I I: D
M3 I M41·:"G

ClRtN)
LMIIN)

The first operation clears the register selected by
N, while the second loads the logical OR of the
contents of N and the contents of the K-Bus to
the memory address register (MAR) of the CPE
array and into register N. DESAD is a symbol
for the desired address value previously defined
by the programmer. The pair of micro-ops above
may also be used to set any register to any
desired constant, although the contents of the
MAR are destroyed.

ROWp

Figure 6. Operation MIP Can Be Reached From
Both MO and M1 by Locating MIP in
Row 0 or Duplicating it in Both
Column 0 and Column 1

In the above example, MIP follows both MO and
M1. Since the row in which MO and MI reside is
completely filled, MIP must be located in row zero
(because the JZR jump operation allows a location
in row zero to be reached from anywhere in memory). If row zero were already fully occupied, the
assignment could not be made. However, in this
case the state represented by MIP might be duplicated so that it can be reached from state MO and
M1. No extra execution time is added by this
modification, although one more memory location
is used.
When assigning
should be used
cause only they
in the program

KB"OESAD;

2. Any register may be set to all I's by the operation
CSR(N)

FFO

3. A value read from memory or I/O into the AC
may be split into bytes and stored in another
register as follows:
SOR{N)

FFl

KFFOO;

f" STORE RIGHT BYTE IN REG N • /

SORIAe)

FFl

KOOFF;

r

SET lEFT BYTE OF ACTOZERQ ./

where KFFOO is a symbol which causes the KBus to be set to IIII IIII 0000 0000 in binary,
and KOOFF is a symbol for setting the K-Bus to
0000 0000 II1I 1I1I in binary. The high order
byte is placed in the upper byte of register N
while the low order byte remains in the low
position of the AC. The low byte of register N
and high byte of the AC are cleared.

to memory, row zero locations
judiciously, but not sparingly, becan be reached from anywhere else
using a single JZR jump function.

Finally, in a 512-word microprogram memory
there are 64 possible destination pairs for the JCF,
JZF and JFL conditional jump functions, since all
three use columns 2 and 3 or columns 10 and II as
their jump target. It is therefore important to
insure that enough destination pairs are available
for the conditional jumps used in a microprogram.

4. Sign Testing and Absolute Magnitude - To test
sign bits most effectively, an inhibit operation at
the CPE clock is very desirable. In the following
examples the symbol INH implies a signal from
the control memory to inhibit the CPE clock.
This prevents modification of the AC register.

PROGRAMMING TECHNIQUES

The operations

Because of the flexibility of both the micro-operations and the architecture of the Series 3000 computing elements, a number of programming "tricks"
can be used to implement a desired operation. As
the programmer becomes more familiar with the
set, he will find new ways to perform different
functions. The list of operations given here are
intended as examples. In general, the labels indicating assignments to memory are not shown. In
all of the examples, KB is the name associated with
the K-Bus field of the micro-instruction. Statements bounded by /* ... * / are comments and do
not affect the assembly.

TZAtAC)
AN:

K8000

INH

JFl(AP,AN);

CtA(AC)

AP:

generate the absolute magnitude of AC in AC
for the non-pipelined case (note K8000 implies
1000 0000 0000 0000 on the K-Bus) while
TZR(AC)
NOP
AN:

KSOOO

INH
JFLiAP,ANI;

CIA(ACI

AP:

performs the same operation for the pipelined
case.

3·28

CPU Design

r

When two numbers in AC and T must be converted to positive numbers and the signs saved,
as well as the sign of the product, the following
routine may be used for a pipelined machine.

CL

Mel+1

Mel +:~

/' ENTER WITH VALUES IN T,AC "
,"

fiRST CLEAR SIGN AREA

MCl+J

REGISTER 9 FOR THIS EXAMPLE 'f

CLR(R91.

MLP

"NEXT TEST SIGNS OF AC. THEN T "
K8000

TZRIACI

INH.

TlRm

r

JfL(AP,ANI:

LMI(R91

K8000

CIA(ACI

«000

LMHR91

M8'~~--------~'---~
JFL

TEST AC SIGN SIT "

,'TESTTSIGNBIT "

JFL(TP,TNI.

I" SET HIGH AND LOW ORDER BIT "

JFL(TP,TN).

"

COMPLEMENT AC "

JMP(NXOPI:

r

SET BIT 15 'f

M81+1

M81+2

o-________-to~"'M8::::Z~>=JZ"'F

,. COMPLEMENT T 'f

ClAm.

MEX

Figure 7. State Sequence Flow Diagram Multiply Loop

Upon reaching label NXOP, both AC and T will
contain positive numbers (high order bit = 0)
and register 9 will contain a I in the high order
bit if and only if AC was originally positive, a I
in the second bit from the top if and only if T
was originally positive, and a zero in the low
order bit if and only if the signs were the same.
A one will appear in the second lowest order bit
if and only if both numbers were originally
positive. Execution of the sequence takes 5
micro-instruction cyeles.

ROW 10

CSRIRBI

1(0000.

"SET R8TOFFFF HEX'

TZFHR81

KFFFO.

/' SET R8TOFFFOHEX •

!" CLEAR PARTIAL PRODUCT lAC) "
ClRIACI.
/' fETCH AND TEST MULTIPLIER LOWQAOER BIT "
SRA(TI;

" MAIN LOOP - EXECUTE MULTIPLIER BIT TEST, ADD IF NECESSARY',
MLP:

LMUR81

FF 1

STZ

SDRIRll

FFI

,. SAVE AC IN REGl "

JFLIMBZ.MBll.

,. INCREMENT LOOP COUNTER SAVE IN Z .,

ILR(R91

FFO.

I" PLACE MULTIPLICAND. R9.IN AC "

ALR(R7I

FFO

r

" A.oD SEQUENCE "
MBI'

ADO MULTIPLICAND TO PARTIAL PRODUCT ./

" NOW ROTATE. THEN TEST LOOP COUNT - SAveD IN Z .,
,'NOTE

r

COL
2

COL
3

COL
4

COL
5

MCl

.,

MlP

MEX

MCl

MCl

'2

'3

MB'

MBZ

MB,

,

MB1

Because MLP and MEX are the two destinations
of a JZF jump function, they must be in the
same row, in columns two and three respectively
or in columns 10 and II respectively. Since MLP
executes a lFL to MBZ, MBI, then MBZ and
MBI must be in the same pair of columns as
MLP and MEX. For the example, rows 9 and 10
were chosen, and columns 2 and 3, and the four
states MLP, MEX, MBZ, MBI are assigned first.
Next the states following MBL (indicated by
MBI+I and MBI+2) and MBZ are assigned. As
all of these jumps are unconditional, the operations lCC, lCR, and lZR are used. As the lZR
is usually reserved for entry to commonly used
routines, only the JCC and JCR jumps are used
here.

SET UP LOOP COUNTER 'f
MGl

COL

MCl

Figure 8. An Assignment of the Multiply Loop
to Control Memory

5. Pipelined Multiply - Assume that AC and T
represent the partial product and multiplier
respectively, while register 9 contains the multiplicand and register 8 will be used as a loop
counter. Register 7 is used for temporary storage. It is assumed that both numbers are positive.
r

COL

o

ROW 9

PIPELINE ALLOWS USE OF Z FOR SHIFT BIT PROPAGATION '/

To demonstrate the techniques introduced above,
a central processing unit design cycle will be carried
through from initial specification to final microprogram memory assignment.

NOTE THE SoRIR7I. ILRIR91. AND ALRIR11 MICRO-INSTRUCTIONS CAN BE
REPLA.CEo WITH AN A¥A MICRO·INSTRUCTION ELIMINATING Z INSTRUCTIONS
FROM THE INNER LOOP IF OATA IS LATCHEO ON THE M BUS .,
SRAIACI

FFOSTZ.

I' SHIFT PARTIAL PRODUCT. SAVE LSB .,

SRAtTI

FFZ JZFIMLP.MEXI.

I' Z TEST IF OF LOOP CDUNTI "

MEX:

Note that the pipeline causes the lZF (or a lCF)
to test the contents of the flip-flop as set two or
more instructions earlier.
A state sequence flow diagram for the multiply
sequence might be drawn as shown in Figure 7.
Note that in Figure 7, each symbolically labeled
state is noted, and each conditional jump is indicated and the conditions corresponding to each
jump are noted. A flowchart like that of Figure
7 contains sufficient information to perform the
assignment to memory. An assignment might be
as shown in Figure 8.

A DESIGN EXAMPLE
The following design example illustrates some of
the basic techniques which may be used in developing a central processor with the Intel® Series 3000
Bipolar Microcomputer Set. The basic design sequence consists of stating the machine objectives,
then designing the hardware configuration and
microprograms. For this example, it is assumed
that the designer has the freedom to specify operation code assignments, and to modify the instruction set to take greatest advantage of the chip set's
capabilities.

3-29

CPU Design
Initial Specifications

P register with the starting address of the
routine. Similarly, a return instruction restores
the appropriate registers. Some jumps may
also be conditional, checking the status of the
C flip-flop, or the sign or magnitude of the A
register.

Let the following list of design objectives represent
the initial specifications for a central processor
instruction set.
I. The machine should use a 16-bit data path,
with instructions containing an opcode portion and a data or displacement portion.

8. Additional operations may involve manipulations of data in the A and X registers and the
ability to move data between the X and the
W, B, E or S registers.

2. Machine registers should include a program
counter, P, a stack pointer, S, an accumulator,
A, an index register, X, and two base registers,
Band E. B is a base register for data and E is
a base register for program. In -addition, a
carry flip-flop may be a bit in the status word,

W.
3. References to memory for data should be
relative to the B register, using the displacement portion of the instruction (designated
D). Memory reference modes include direct
(Address=B+D), indirect (address equals the
contents of B+D), and indirect indexed (address equals the value given by the sum of X
and the contents of the word at address B+D).
Indirect and indirect-indexed modes should
include both absolute and B relative (Le., the
address is relative to the contents of the B
register) forms so that indirections may be
computed both at time of assembly and during prog~am execution.
4. Memory reference instructions include: load
address to A, load data to A, AND data to A,
OR data to A, XOR data to A, add data to A,
subtract data from A, push address to stack,
push data to stack, store A at computed
address, pop stack to computed address, load
address to X, load data to X, add data to X,
subtract data from X, store X at computed
address (operations involving X may not need
to implement indirect-indexed modes).
5. Immediate instructions using the displacement
portion of the instruction as the data, include,
load A, load X, add to A, add to X. A two
word "load immediate" instruction may also
be implemented.
6. Jump instructions include a short relative
jump (Address=P+D-K, where K is a constant), an indirect jump to an address relative
to the E base register, and an indirect call
operation.
7. The call (to a subroutine) operation saves the
P, E, B, and W registers (global call), or the P
register (local call) on the stack and loads the

9. Byte load and store operations should include
automatic packing and unpacking of bytes in
a 16-bit memory location.
10. Input/output instructions should use either
the displacement or the X register to specify
the I/O device address.
In addition to the definition of the macro-instruction set, the designer should also prepare descriptions of the initialization operations (Le., at "power
on") and interrupt handling to be used. For this
machine, let it be considered necessary for the
machine to start at power up with W, A, and X
cleared and for S to be set to the contents of word
0, B to be set to the contents of word 1 of memory, E set to the contents of word 2, and P set to
the contents of the memory location pointed to
by E.
Let I/O device 0 represent a source of interrupt
level information (level requesting in) and a destination for current level out, consistent with the use
of the 3214 Interrupt Control chip. In addition,
let the low order bits of W contain current interrupt level information.
When servicing an interrupt, the processor will
execute a jump to subroutine which will reload P
and E while saving all registers except S on the
stack. The service routine will interrogate the interrupt hardware to determine the level of the request
and will restore former status upon exit from the
interrupt program. For this purpose, a return and
restore status instruction will be provided.
In parallel with the specification of the design
objectives, a first pass at the CPU's architecture can
be made. The block diagram in Figure 9 shows a
general CPU architecture as defined in the initial
specification above.
The design example machine uses a pipelined
architecture and includes a control structure which
implements eight basic memory bus and clock
operations. A 3-bit field is used to control this
structure. The states for this field are designated

3-30

CPU Design

\

MEMORY 8. I 0 ADDRESS BUS

\

BIDIRECTIONAL DATA BUS

\

CONTROL BUS

---------------,
3002 CPE ARRAY

AC REGISTER

I I

MAR

ARITHMETlC:LOGIC

UNIT
P[AFOIl.MSADDf:lESSCALCU

I

I

'MEMORY AND I 0
BUS CONTROL

IMSISSI!

I " " - - - - - - - - r - - - - - - - - - - - - I MICROPROGRAM
MEMORY
1\,-_ _ _ _--,

(ROMS PROMSr

LATIONS AND AHITHMETIC

lOGIC OPERATIONS UNDER
CONTROL OF THE MICRO
PROGRAM

r--------------- - -------1

-H'
I

REGISTER FILE
X _ INDEX REGISTER (RlI

W - STATUS REGistER IR11
B
E
P
S

3001 MCU

I

A - ACCUMULATOR 11'101
- BASE REGISTER, DATA (1'151
- BASE REGISTER, PROGRAMIR61
- PROGRAM COUNTER IR31
- STACK POINTER IR41
MICROPROGRAM WORKING

I
I

,

I

SHIFT CARRY

MICROPROGRAM

LOGIC

CONTROL UNIT

SEQUENCE

I

I

IL _________________ _

REGISTERS RB. 1'19, T

,,
L _____________________________

~

OPCQDE FIELD

Figure 9. Block Diagram of CPU Architecture

stack pointer and a push decrementing it. This
direction is preferred, as it leaves the stack pointer
pointing at the topmost entry in the stack. In
addition, pops usually appear more often than
pushes (pushes share code), and the increment
operation requires fewer micro-instructions.

NBO (No Bus Operation), INH (Inhibit CPE Clock),
CNB (CPE uses bus), RMW (read modify write
signal to memory - starts a read cycle and prevents
release of bus until the CPU executes a write cycle),
RRM (Request read cycle from memory), RWM
(Request write to memory), RIN (Request input
from an I/O device), and ROT (Request an output
to an I/O device).

The designer must select the actual instructions to
be used. Let the instructions and their associated
mnemonics shown in Table I be selected in the first
design pass.

The stack has been designed to run "backwards"
through memory, with a pop incrementing the

:j:.31

CPU Design
Table I. Proposed Instruction Set
MEMORY REFERENCE GROUP
MNEMONIC

JUMP GROUP (continued)

FUNCTION

MNEMONIC
RELATIVE
INDIRECT

FUNCTION

LAA

Load address to A

LDA

Load data to A

JRCZ

JICZ

Jump if C=O

ADA

Add data to A

JRXL

JIXL

Jump if X';;;A

SDA

Subtract data from A

JRLE

JILE

Jump if A';;;O

AND data to A

JRGT

JIGT

Jump if A>O

ODA

OR data to A

JRCN

JICN

Jump ifC*O

XDA

Exclusive OR data to A

JRXE

JIXE

Jump if X=A

NDA

PAS

Jump relative:
Jump indirect:

Push address to stack

PDS

Push data to stack

SAM

Store A into memory

PSM

Pop stack into memory

LAX

Load add ress to X

P=P+D-128
P=(E+D)+E

STACK PUSH AND POP GROUP
MNEMONIC

FUNCTION

LDX

Load data to X

PHAX

Push A and X onto stack

ADX

Add data to X

PPAX

Pop A and X from top of stack

SDX

Subtract data from X

SXM

Store X in memory

SPECIAL MEMORY REFERENCE INSTRUCTION
MNEMONIC

IMMEDIATE GROUP
MNEMONIC

ISZ

FUNCTION

LAI

I ncrement location B+D and skip if zero
SUBROUTINE CALL GROUP

Load to A immediate

AAI

Add to A immediate

NAI

AND to A immediate

OAI

OR to A immediate

XAI

Exclusive OR to A immediate

PSI

Push to stack immediate

LXI

Load to X immediate

AXI

Add to X immediate

MNEMONIC

FUNCTION

CLS

Call local subroutine, push P onto stack
P=E+(E+D)

CVS

Call value subroutine, push W, B, E, P
onto stack
E=E+(E+D)
P=E'+(E')

CAS

Call absolute subroutine, push W. B. E, P
onto stack
P=(D)

where E'=E+(E+D)

If D is equal to zero, the contents of the memory location
following the instruction is used as the immediate value.
JUMP GROUP
MNEMONIC
RELATIVE
INDIRECT

FUNCTION

SUBROUTINE RETURN GROUP
FUNCTION
MNEMONIC

JRU

JIU

Jump unconditional

JRGE

JIGE

Jump if A;;'O

JRLT

JILT

Jump if AA

JREZ

JIEZ

Jump if A=O

JRNZ

JINZ

Jump if A*O

3-32

FUNCTION

RLS

Return from local subroutine, pop P from
stack

RVS

Return from value subroutine, pop P, E,
B, W from stack

RSA

Return from subroutine, restore all, pop
A, X, P, E, B, W from stack

CPU Design
Table I. Proposed Instruction Set (continued)
BYTE LOAD AND STORE GROUP
MNEMONIC

INPUT/OUTPUT GROUP

FUNCTION

MNEMONIC

FUNCTION

LBA

Load byte absolute

IND

Input one word to the A register

LBR

Load byte relative

OTO

Output one word from the A register

SBA

Store byte absol ute

SBR

Store byte relative

Absolute mode:
Relative mode:

D serves as the address for the I/O port.

Byte address = (B+D)+X12
Byte address = (B+D)+B+X12

Input one word to the A register

OTX

Output one word from the A register

The X register provides the address for the I/O port.

The least significant bit of the X register is treated as the
byte pointer in main memory as follows:
X Reg. LSB = 0
= 1

INX

Given the basic design objectives, the next step is
to write the sequences of micro-instructions to implement the macro-instruction described above.
Each macro-instruction must be assigned a unique
operation code. The operation code (opcode) will
be used by the 300 I MCV to generate the appropriate address for the micro-instruction which executes that macro-instruction.

the left or high order byte is selected
the right or low order byte is selected

For load operations, the selected byte is loaded into the
right byte position of the A register and the left byte is
cleared. For store operations, the right byte of the A regis·
ter is stored at the selected byte location leaving the un·
selected byte of the word unaltered.

Macro-Instruction Decoding
To take full advantage of the 3001 MCV's eight
input lines (SXO-3, PX4-7) for instruction decoding, all macro-instruction operations should be
completely specified in an 8-bit opcode field and
use the remaining 8 bits for displacement values.
In Figure 10 the 8-bit opcode of a macro-instruction being read in on the memory data bus is gated
directly to the 3001 MCV. While the displacement
is being stored in the CPE array, a JPX operation is

REGISTER MANIPULATION GROUP
MNEMONIC

FUNCTION

RAR

Rotate A right, include CF F

RAX

Rotate A and X right, include CFF

SAX

Shift A and X right, preserve sign

SAL

Shift A left, fill with zeros

The shift count is given by D if D is non· zero or by the
least significant seven bits of the X register if D is zero.

300'

Meu

300'

I'PR1

CPE ARRAY

~
SXO-l

OPCODE FIELD

BASE AND STATUS REGISTER MOVE GROUP
MNEMONIC

FUNCTION
MEMORY DATA
INPUT BUS

MSX

Move S to X, adjust

MBX

Move B to X, adjust

MEX

Move E to X, adjust

MWX

Move W to X, adjust

MXS

Move X to S, adjust

MXB

Move X to B, adjust

MXE

Move X to E, adjust

MXW

Move X to W, adjust

Figure 10, Macro-Instruction Decoding with
the 3001
executed by the 300 I. The JPX operation executes
a 16 way branch based on the 4 bits of the PX lines
and also stores the 4 bits on the SX lines in the PR
latches for later decoding. For best microcode
efficiency then, the opcode field should be arranged
in such a manner that the first 4 bits tested (by the
JPX operation) select the initial processing (usually
an address calculation) of the macro-instruction. A
possible instruction format is shown in Figure II.

The destination register is adjusted by D-128 (i.e., D-128
is added to the destination register).

3-33

CPU Design
15 14 13 12 11 10 9 8
I
I
I
I
I
I

I

I

ADDRESS
MODE

I

7

6
I

OPERATION
MODE

5
I

4
I

3
I

2
I

1
I

0
I

In addition to the initial address mode processing
input/output, register to register, and other special
function operations can be specified in the first 4
bits, as shown in Table III.

I

DISPLACEMENT

Figure 11. possible Macro-Instruction Format
In the case of the CPU design example, the initial
processing involves address calculations and/or
operand fetching. Table II contains the initial
processing modes for the design example.

Microprogram Implementation
Having assigned the first 4 bits of the macroinstruction operation code, the next 4 may be
tentatively assigned. These 4 bits will have different
meanings for different instruction classes. To improve microcode efficiency it is desirable to share
as much code as possible between different microprogram segments. For example, the ADA and AAI
instructions might share the add operation once the
data has been fetched.

Table II. Memory Modes
In the description below, the letters A, X, B, S, P, W, and E
represent the contents of the respective registers. 0 represents the 8-bit displacement treated as a positive number
ranging from 0 to 255. 0' represents 0-128. ( ) are used to
designate contents of memory. For example, (B+O) means
the contents of the memory location whose address is equal
to the sum of the contents of B and the displacement O. It
is assumed that, when the instruction is fetched, P is incremented prior to instruction execution.

MEMORY REFERENCE AND IMMEDIATE
GROUP
The assignment shown in Table IV might be used
for the memory reference and immediate group
instructions. The clustering has been chosen in a
way that should allow JPR and JLL and JRL
micro-operations to be used effectively and to
allow code sharing between the two groups.

MEMORY REFERENCE MODES
1.

Direct: Address = B+O

2.

Indirect: Address = (B+O)

3.

Indirect relative: Address = (B+O)+B

4.

Indirect indexed: Address = (B+O)+X

5.

Indirect indexed relative: Address = (B+O)+B+X

An initial flowchart for the memory reference and
immediate group instructions is shown in Figure
12. In the flowchart, the boxes indicate the operations performed. The appropriate jump operations
(JPX, JLL and JRL) are indicated along with the
bit patterns that select each box.

IMMEDIATE MODES
6.

If 0*0, Data = 0-128

It is possible that when the actual code for the
sequence is written, some improvements in efficiency may still be made_ In addition, some of the
boxes shown as dummies may be eliminated by
suitable placement of the JLL and JRL instructions.

If 0=0, Data = (P), P=P+l
JUMP MODES
7.

Jump relative: P=P+0-128

8.

Jump indirect: P=(E+O)+E

g.

Call relativ\!: P=(E+O)+E

10.

Knowledge of the MCU assignment restrictions
may also influence some choices here. For example,
the MCU provides twice as many possible JLL
jump destinations as JRL jump destinations, while
the sequence shown uses twice as many JRLs as
JLLs. As a result, an easier assignment might be
obtained if the JLLs and JRLs were exchanged,
which is equivalent to a reassignment of the macrooperation codes.

Call indirect: P=E'+(E') where E'=E+(E+O)
REGISTER MODE

11.

Fetch source register

Using the instruction format shown in Figure 11,
the high order 4 bits (bits 12 to 15) will be used to
select one of the modes listed in Table II. Thus, by
executing a JPX operation, a 16 way branch on the
PXQ-PX3 bus can be performed to determine the
address mode specified. At the same time the SX
bus bits (the Operation Code field) will be stored
in the PR latches for later use. A possible assignment of the first 4 bits (bits 12 through 15) might
be as shown in Table III.

Also, recognizing that the MCU's JCC type jump
facilitates jumping from one JLL destination to
another, it is desirable to assign the macro-operation codes so that operations which share final
segments are aligned in columns. For example, the
SDA instruction would typically be achieved by
complementing the data, then adding it to A,
which may share the code for ADA. As a result, a

3-34

CPU Design
Table III. Mode Bit Assignments
ADDRESS MODE
BITS

INITIAL PROCESS

MODE

0000

No operation

0001

Jump relative

P+D'

0010

Jumps (index, etc.)

(E+D)+E

0011

Immediate

D' or (P)

0100

Direct memory reference

B+D

0101

Indirect memory reference

(B+D)

0110

I ndirect index

(B+D)+X

0111

Indirect index relative

(B+D)+X+B

1000

I/O input

D->MAR

1001

I/O input

X->MAR

1010

I/O output

D->MAR

1011

I/O output

X->MAR

1100

Move group

1101

Special function group

1110

Indirect relative memory reference

1111

No operation

OP FIELD
BITS

MEMORY
REFERENCE
FUNCTION

IMMEDIATE
FUNCTION

0000

ADA

AAI

0001

ADX

AXI

0010

NDA

NAI

0011

ODA

OAI

0100

LDA

LAI

0101

LOX

LXI

0110

PDS

PSI

0111

XDA

XAI

1000

LAA

1001

LAX
PAS

1011

SDA

1100

SAM

1101

SXM

1110

PSM

1111

SDX

Condition testing

LAI, AAI, etc.

LAA, LDA, etc.

Shift A

Table IV. Memory Reference and Immediate
Op Code Assignment

1010

SUBSEOUENT PROCESSING

(B+D)+B

better assignment of opcodes might be achieved by
placing ADA and SDA in the same column. For
example, see the assignment shown in Table V.
Table V also assumes exchange of the JLL and JRL
instructions.
Table V. Modified Memory Reference Op Code
Assignments
0000 = NDA

0100 = ODA

1000 = XDA

0001 = LDA

0101 = LDX

1001 = PDS

1100 = ADA
1101 = ADX

0010=LAA

0110=LAX

1010=PAS

1110=SDA

0011 = SAM

0111 =SXM

1011 =PSM

1111 =SDX

Except for those considerations mentioned above,
the code is most easily written without regard to
memory assignment. Also, it is assumed that reassignments of macro-operations codes are made
when efficiency can be improved.
Let the CPE register assignments be made as shown
in Table VI.
The code which follows represents the specification
portion of the microprogram in which the various
fields are identified, and symbols defined.

3-35

CPU Design

fETCH

FeTCH

FETCH

FeTCH

JRL
JRL

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

JRL

JRL

FETCH

FETCH

FETCH

FETCH

Figure 12. First Pass of Memory Reference Group Flowchart

/* BIPOLAR MICROCOMPUTER MACRO-MACHINE
REGISTER MACHINE- -12/13/74
UPDATED 3/18/75
MACHINE HAS 7 REGISTERS AS FOLLOWS:
A
ACCUMULATOR
RD
X
INDEX REGISTER
R1
P
PROGRAM COUNTER
R3
S
STACK POINTER
R4
B
DATA BASE REG
R5
E
PROG_ BASE REG.
R6
W
STATUS WORD
R7
C=CARRY,LlNK FLiP-FLOP=HOB OF W
DEFINITION OF KBUS FIELD *1

3-36

CPU Design
FIELD
LENGTH=4
M ICROPS( KOOOO=O
K8000=8
KBUS;

KB

KB

DEFAULT=O
K007F=1
KOOOFF=3
K7FFF=7
KFFOO=12
KFF80=14
KFFFF=15);

/* DEFINITION OF BUS CONTROL FIELD *f
FIELD
LENGTH=3
MICROPS(NBO=OOOB
RIN=100B

MCF

/*

DEFAULT=O
INH=OOlB
RMW=010B
ROT=101B
RRM=110B

CNB=OllB
RWM=lllB);

NBO
NO BUS OPERATION
INHIBIT CPE ARRAY
READ-MODIFY-WRITE
CPU NEEDS BUS
REQUEST INPUT
REQUEST OUTPUT
REQUEST READ MEM.
REQUEST WRITE MEM.

INH
RMW
CNB
RIN
ROT
RRM
RWM

SET UP FOR SYMBOLIC REPRESENTATION OF REGISTER DESIGNATIONS *j

A
X
P
S
B
E
W

/*

STRING
STRING
STRING
STRING
STRING
STRING
STRING

'RO';
'Rl';
'R3';
'R4';
'R5';
'R6';
'R7';

SET UP A SPECIAL NO.OP STRING *f

NO.OP

STRING

'NOP(R3)';

/* NEXT WE SPECIFY A DEFAULT TO FFl IN THE FO FIELD FOR THE SDR
MICROP IN THE CPE FIELD. SDR IS NORMALLY USED AS A STORE
OPERATION. WHEN A DECREMENT OPERATION IS ALSO DESIRED, FFO
WILL HAVE TO BE EXPLICITLY SPECIFIED */
SDR

IMPLY

FO=llB;

Table VI. Register Assignments
RO = A
Rl =

X

R3 = P
R4 = S
R5 =

B

R6 = E
R7 = W (C is high order bit of W)

The next portion of the code represents the machine initialization (in which registers are set to
initial values during power up), and the memory
reference and immediate group of instructions. The

elementary flowchart followed is that of Figure 13,
reflecting the reassignment shown in Table V.
A number of programming "tricks" can be found
in the microcode. For example, the C flag of the
MCU (not to be confused with the C flip-flop of
the macro machine) is set each time the machine
executes a fetch instruction by the SDR microoperation. SDR adds 111 ... 1 to the AC (as masked
by the K-Bus) so that whenever the carry input of
the CPE array is a I, the masked AC register will be
stored unchanged into the designated register, and
the carry output of the CPE array will be I.
Similarly, a ILR micro-operation (KBUS = 0) with
a carry-in of zero never generates a carry, so that it
can be used to clear the C flag if so desired.

3-37

CPU Design

FETCH

FETCH

FETCH

FETCH
JLL
JLL

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

JLL

JLL

Figure 13. Second Pass of Memory Reference Group Flowchart

The C flag is used to implement a type of microcode subroutine where code is shared by two
"calling" routines, one which leaves the C flag
unchanged and the other which clears it. Upon exit
from the shared code sequence, the C flag is tested
giving a unique exit for each of the two calling
routines (see Figure 14).
The inhibit operation, indicated by the "INH"
micro-operation, inhibits the clock to the CPE
array. For these operations the carry function and
conditional jump results are the same as if the operation were executed. However, none of the CPE
registers are altered when the clock is inhibited.

Figure 14. Microcode Subroutine Using the C-Flag
to Determine Exit

3-38

CPU Design
The result is a number of "compare" or test
micro-operations.

As an example of this situation, consider the tollowing sequence of micro-instructions (only labels
and jumps shown):

In general, row zero locations should be used
sparingly because they are the only locations that
can be reached from anywhere in microprogram
memory using a single JZR micro-operation. During the first pass of the microprogram implementation, notes can be added to indicate where code
might be saved if row zero locations are used.

TST:
DO:

In the sequence above, DO through D 15 occupy an
entire row. The micro-instruction labeled DIA
unconditionally follows both of those labeled DO
and D I. Since the row containing DO through D 15
is fully occupied, DlA cannot be assigned to that
row. The only other unconditional jump which can
reach a common location from more than one column is the JZR. However, such conditional jumps
as JCF and JZF, where the condition is pre-set,
can jump to a given location from up to eight sites
in a given row, as illustrated in Figure 15.

A common case of such microcode saving follows
the execution of a JPR or JPX micro-operation. If
the datum being tested by the JPR or JPX represents a macro-instruction operation code in which
less than 16 modes are used, there is always the
possibility that an invalid code might be encountered. Rather than have the machine behave
unpredictably, it is better to have the machine execute some designated sequence for invalid macrooperation codes. As a result, all 16 locations
reached by the JPX or JPR micro-operation must
be considered occupied. Therefore, when it is
desirable to have a single state follow each of
several states reached by a single JPX or JPR microoperation, two possible methods can be used which
do not require additional jump micro-operations:

COLUMN

012345678

ROWn

100 I0+21 1 106 1 107108109 f
03

WITHIN CURRENT
ROW GROUP

t

Figure 15. Special Use of the Conditional Jump
Functions

/* ZERO T AS TEMPORARY POINTER, WRITE W TO INTERRUPT STRUCTURE
CLR(T);
LMI(T);
ILR(W) ROT;

*/

LMI (T) FF 1 RRM;
ACM(AC) ;
SOR(S);

/* SET B = (1), T = 2 FOR NEXT OPERATION */
LMI(T) FF1 RRM;
ACM(AC);
SOR(B) STC;

/*

>

COLUMN 2 FOR C·FLAG" 0

CLR(A);
CLR(X);
GLR(W);

/* SET S = (0), T = 1 FOR NEXT OPERATION

06

8

ROWn+1

INITIALIZATION SEQUENCE
ZERO A, X, AND W */
INIT:

04

+_+_L+_L+_+_+_'
-!---JCF MICRO"()PERATI'lN

I. Locate the single state in the row zero
2. Locate the single state in a column reached by a
JCF or JZF micro-instruction and insure the
corresponding (C or Z) flag is in the desired
state.

'*

,R IDO. 01. 02. D•... D151
.IMP ID1A)

01:
01A:

THIS SETS THE C FLAG TO INSURE
A CORRECT JUMP TO XRTN */

3-39

*/

CPU Design
/* GET (2), JUMP TO XRTN TO SET E = (2), P = (E)
LMI(T) RRM;
ACM(AC)

*j

JCF (*,XRTN);

/* FETCH SEQUENCE & START OF MACRO-INSTRUCTION PROCESSING
P IS ISSUED TO MAR AND INCREMENTED, MACRO-INSTRUCTION
IS FETCHED AND TESTED BY JPX MICRO-OPERATOR_ NOTE
FETCH IS IN LOCATION 15 TO STROBE INTERRUPT ON ENTRY_ *j
FETCH:

LMI(P) FFl RRM;

/* LOAD DISPLACEMENT AND TEST FOR ZERO USING Z FLAG * j
LTM(AC) STZ KOOFF;

/* SAVE DISPLACEMENT, TEST 4 BITS OF MACRO-OP_ TEST IS
DELAYED TO ALLOW PIPELINE PROPAGATlON_ ALSO C FLAG IS
SET FOR LATER USE IN PSEUDO-SUBROUTlNES_ *j
SDR(R9) STC

JPX(NAO,JREL,JIG,IMMD,DMRF,IMRF,IXMA,IXMB,IND,
I NX,OTD,OTX,MVGP ,SPFG,I R BM,NA 15);

/* UNASSIGNED OP-CODE GROUPS- -NOPS FOR THIS VERSION
NAO:
NA15:

NO_OP
NO_OP

*j

JZR(FETCH);
JZR(FETCH);

/* IMMEDIATE GROUP OF MACRO-INSTRUCTIONS- -TEST FOR LONG OR SHORT
FORM- -D IS IN AC AND R9- -ADJUST AC BY -128 *j
IMMD:

LMI(AC) KFF80

/* LONG FORM: FETCH NEXTWORD TO AC
IMML:

LMI(P) FFl RRM;
ACM(AC)

/* SHORT FORM: NO PROCESSING NEEDED
IMMS:

NO_OP

JZF(lMML,IMMS);
*j

JRL(lLGA,ILPX,NAll,NAI2);
*j

JRL(ILGA,ILPX,NAll,NAI2);

/* PREPROCESSING FOR ARITHMETIC AND LOGIC ROUTINES? NONE NEEDED
ILGA:
ILPX:

NO_OP
NO_OP

JLL(NDA,ODA,XDA,ADA);
JLL(LDA,LDX,PDS,ADX)

/* NOTE: NAil AND NAI2 ARE NON-VALID INSTRUCTIONS!! THEY ARE
MADE INTO NO-OPS IN THIS VERSION OF THE MACRO-MACHINE *j
NAil:
NAI2:

NO_OP
NO_OP

JZR(FETCH);
JZR(FETCH);

/* BASIC ARITHMETIC AND LOGIC PROCESSING- -UPDATE C FF OF MACROMACHINE FOR ADA--TOGGLE ITON CARRY FROM ADA *j
ADA:
ADA1:
NCY:
SCY:

/* LOGICALS
NDA:
ODA:
XDA:

ADR(A);
NO_OP
NO_OP
LMI(W) K8000

JFL(NCY,SCY);
JZR(FETCH);
JZR(FETCH);

*j

ANR(A)
ORR(A)
CMR(AC);
XNR(A)

JZR(FETCH);
JZR(FETCH);
JZR(FETCH);

3-40

*j

CPU Design
/* LOA AND LOX OPERATIONS *j
LOA:
LOX:

SDR(A)
SDR(X)

JZR(FETCH);
JZR(FETCH);

/* STACK PUSH- -ADVANCE STACK POINTER TO NEXT LOCATION (FOR THE
REVERSE DIRECTION STACK- -A DECREMENT OF S), THEN WRITE *j
PDS:
PDS1:

/*

DSM(S);
LMI(S) RWM

JZR(FETCH);

ADX - SHARES CODE FOR ADA - ALSO TOGGLES C FF OF MACRO MACHINE *j
ADX:

ADR(X)

JMP(ADA1);

/* MEMORY REFERENCE INSTRUCTION GROUPS
DIRECT--GETB+D INTO AC--ALSO R9 *j
DMRF:

/*

ILR(B);
ALR(R9)

JRL(MRV1,MRV2,MRAD,STPG);

INDIRECT-ABSOLUTE- -GET (B+D) INTO AC- -C FLAG USED FOR PSEUDO-SUBROUTINE *j
IMRF:
IMRF1:
MLOAD:

ILR(B);
ALR(R9);
LMI(R9) RRM
ACM(AC)

JCF(MADD,MLOAD);
JRL(MRV1,MRV2,MRAD,STPG);

/* NOTE: MADD WILL BE USED FOR OTHER INDIRECT OPERATIONS WHERE
B, X, ETC_ HAS BEEN LOADED TO R8 *j
MADD:

/*

ACM(AC);
ALR(R8)

JRL(MRV1,MRV2,MRAD,STPG);

INDIRECT INDEXED ABSOLUTE - CLEAR C FLAG, MOVE X TO R8 *j
IXMA:

ILR(X) STC;
SDR(R8);

/* NOTING THAT ASSIGNMENT RULES WOULD NOT ALLOW THE DESIRED
JUMP TO IMRF UNLESS IXMA+l WERE IN ROW ZERO- -AN EXTRA STATE
IS ADDED HERE *j
IXMA2:

/*

ILR(B)

JMP(lMRF1);

INDIRECT INDEXED RELATIVE - CLEAR C FLAG, PUT B+X IN R8 *j
IXMB:

ILR(X) STC;
SDR(R8);
ILR(B);
ADR(R8)

JMP(lMRF);

/* INDIRECT RELATIVE (TO B) - CLEAR C FLAG, PUT B IN R8 *j
IRBM:

/*

ILR(B);

AGAIN ASSIGNMENT RULES PREVENT JUMPING TO IXMA+l UNLESS IT IS
LOCATED IN ROW ZERO- -PLACEMENT THERE COULD FREE TWO WORDS *j
SDR(R8)

/*

JMP(lXMA2);

THE FOLLOWING PROCEDURES IMPLEMENT THE BASIC PREPROCESSING FOR
VALUE AND ADDRESS LOADING_
VALUE-GROUP 1: GET (AC) IN AC
MRV1:

LMI(AC) RRM;
ACM(AC)

*'
JLL(NDA,ODA,XDA,ADA);

3-41

CPU Design
/*

VALUE GROUP 2 *f
MRV2:

LMI(AC) RRM;
ACM(AC)

JLL(LDA,LDX,PDS,ADX);

f* MRAD GROUP INCLUDES ADDRESS LOADS AND SUBTRACT FROM A *f

/*

MRAD:

NO.OP

JLL(LAA,LAX,PAS,ISDA);

LAA:
LAX:
PAS:

SDR(A)
SDR(X)
DSM(S)

JZR(FETCH);
JZR(FETCH);
JMP(PDS1);

FOR SUBTRACT, ADD l'S COMPLEMENT PLUS 1 * f
ISDA:

/*

/*

JMP(ADA1);

STPG GROUP INCLUDES STORES AND SUBTRACT FROM X *f
STPG:

LMI(AC)

JLL(SAM,SXM,PSM,SDX);

SAM:
SXM:

ILR(A) RWM
ILR(X) RWM

JZR(FETCH);
JZR(FETCH);

POP STACK TO MEMORY - SAVE ADDRESS, POP STACK' f
PSM:

/*

LMI(AC) RRM;
LCM(AC);
ADR(A) FF1

SDR(T);
LMI(S) FF1 RRM;
ACM(AC);
LMI(T) RWM

JZR(FETCH);

SUBTRACT FROM X *f
SOX:

LMI(AC) RRM;
LCM(AC);
ADR(X) FF1

JMP(ADA1);

Thus the initialization procedure requires 16 words
of microcode, the fetch sequence 3, and the memory reference and immediate groups use a total of
57 words. In addition, two dummy locations
(NAI I and NAI2) are needed for unassigned macrooperation codes.

Sample execution times for some of the instructions may be estimated by counting the number of
micro-instructions in the sequences and the number
of read and write memory cycles. Allowing I SO
nsec for each micro-instruction, and 400 nsec for
each memory cycle, some representative execution
times would be as shown in Table VII.

Table VII. Representative Execution Times
INSTRUCTION
ADA, direct

MICROCYCLES

READ CYCLES

10

2

2.3J.1S

2

2.0 JJS

3

3.45 J.lS

ADI, short

9

LOA

8

LAI, short
LOA, indirect index relative

EXECUTION TIME

1.75J.1S

7
15

WRITE CYCLES

1.45 J.lS

3-42

CPU Design
the conditional jumps, X>A, X~, X=A and X=t-A
which share a common subroutine and exit via a
JLL jump, the opcode values were assigned arbitrarily.

JUMP GROUP
The next section shows the realization of the jump
group instructions. Two basic classes, a jump relative to the program counter and an indirect jump
through a table stored at the beginning of the program are represented. Conditional jumps include
A>O, ,900, A=O, A~O, A~, AO,
X~, C=O and c=t-o.

A flowchart representing the jump coding is shown
in Figure 16. During the microcoding of the sequence, two methods were evaluated. One used
the JRL, JLL sequence of testing 2 bits of macrooperation code at a time, while the one actually
selected uses a JPR macro-operation. The JPR test
selected uses no more code than the JRL, JLL
sequence method, and executes more rapidly. At
one point (for the X=A, X=t-A, X>A, X";A tests),
code is shared as if it were part of a subroutine,
then a JLL instruction is used to resolve the exit.
This method is another example of a pseudosubroutine that saves microprogram memory. Use
of this technique does put a constraint on the
assignment of macro-operation codes.

In addition, two classes of subroutine calls are provided; a local call which pushes P onto the stack,
and jumps relative to E, and a global subroutine
call which stores the W, B, E, and P registers on
stack and computes new values for E, the program
base register, and P. Also, included in this section
of microcode is the operation that pushes both A
and X onto the stack.
Table VIII shows the opcode assignments for the
various jump operations implemented. Except for

Table VIII. Jump Instruction Group
MNEMONIC

RELATIVE
M
0

FUNCTION

INDIRECT
M
0

JRU, JIU

Jump unconditional

0001

0000

0010

JRGE, JIGE

Jump if A;;'O

0001

0001

0010

0000
0001

JRL T, JILT

Jump if AA

0001

0011

0010

0011

JREZ, JIEZ

Jump if A=O

0001

0100

0010

0100

JRNZ, JINZ

Jump if A*O

0001

0101

0010

0101

JRCZ, JICZ

Jump if C=O

0001

0110

0010

0110

JRXL, JIXL

Jump ifX,A

0001

0111

0010

0111

JRLE, JILE

Jump if A';;;O

0001

1000

0010

1000

JRGT, JIGT

Jump if A>O

0001

1001

0010

1001

JRCN, JICN

Jump ifC*O

0001

1010

0010

1010

0001

0010

1011

JRXE,JIXE

Jump if X=A

CVS

Call subroutine, push W, B, E, P

PHAX

Push A, X onto stack

CLS

Call subroutine, push P

JRXN, JIXN

1011
N.A.

0001

1101
N.A.

0001

)ump if X"=foA

Subroutine calls

1111

0010

1100

0010.

1101

0010

1110

0010

1111

Unconditional and conditional jumps

Local:

Push P to stack
P=E+(E+D)

Value:

Push W, B, E, P to stack
E=E+(E+O)
P=E'+(E') where E'=E+(E+O)

Relative:
Indirect:

3-43

P=P+O'
where D'=0-128
P=E+(E+O)

CPU Design

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

FETCH

Figure 16. Jump Group Flowchart

/* JUMP GROUPS- -USE JPR MICRO-OPERATION TO RESOLVE CONDITION SELECTION
DESTINATION ADDRESS IS COMPUTED FIRST - -PLACED IN AC AND R9
JUMP RELATIVE TO P- -ADDRESS=P+D-12S * f
JREL:
JRDR:

ILR(P);
LMI(AC) KFFSO;
ALR(R9)

JPR(JUNC,JAGE,JAL T,JXGA,JAEO,JANE,JCEZ,JXLA,
JALE ,JAGT,JCNZ,JX EA,CPSS,PXA,C LOP,JX NA);

/* JUMP INDIAECT - GET E+(E+D) IN AC AND R9 *f
JIG:

ILR(E);
ADR(R9);
LMI(R9) RRM;
AMA(AC);
SDR(R9)

JPR (JUNC,JAGE,JAL T,JXGA,JAEO,JAN E,JCEZ,JX LA,
JALE,JAGT,JCNZ,JXEA,CPSS,PXA,CLOP,JXNA);

1* UNCONDITIONAL JUMP *f
JUNC:

SDR(P)

JZR(FETCH);

/* TESTS FOR A_GE_O, ETC_ *f
JAGE:
JALT:
JAEO:
JANE:

TZR(A) KSOOO INH
TZR(A) KSOOO INH
TZR(A)
TZR(A)

JMP(TTRU);
JMP(TFAL);
JMP(TTRU);
JMP(TFAL);

3-44

FETCH

FETCH

CPU Design
TZR(A) K8000 INH;
TZR(A)

JFL(APRE,ANPE);

APRE:
ANPE:

NO.OP
NO.OP

JFL(JNT2,JTR2);
JZR(FETCH);

JALE:

TZR(A) K8000 INH;
TZR(A)

JFL(APE2,AN2);

NO.OP
SDR(P)

JFL(JTR1,JNT1);
JZR(FETCH);

JAGT:

APE2:
AN2:

/* TESTS OF C FLlp·FLOP (HIGH ORDER BIT OF W)
JCEZ:
JCNZ:

TZR(W) K8000lNH
TZR(W) K8000 INH

*j

JMP(TTRU);
JMP(TFAL);

/* TEST EXECUTION FOR ABOVE TESTS - ROW ZERO USED * j
TTRU:

NO.OP

JFL(JTR1,JNT1);

JTR1:
JNT1:

SDR(P)
NO.OP

JZR(FETCH);
JZR(FETCH);

TFAL:

NO.OP

JFL(JNT2,JTR2.);

JNT2:
JTR2:

NO.OP
SDR(P)

JZR(FETCH);
JZR(FETCH);

/* TESTS FOR X.GT.A, X.LE.A, X.EQ.A, X.NE.A- -SHARED PSEUDO·
SUBROUTINE USES JLL FOR AN EXIT TEST - -ROUTINE ENTRY IN ROW 0
C FLAG IS SET FOR X.GT.A, FL TEST FOR X.EQ.A * j
JXGA:
JXLA:
JXEA:
JXNA:

ILR(X)
ILR(X)
ILR(X)
ILR(X)

JMP(XATS);
JMP(XATS);
JMP(XATS);
JMP(XATS);

/* SAVE X AT T, FETCH AND COMPLEMENT A
XATS:

SDR(T);
ILR(A) STC;
CMA(AC);

*j

/* CLEAR C FLAG * j

/* ADD HOB'S OF A' AND X - CARRY MEANS X NEG., A.GE.O

*j

ADR(T) K8000;

/* EXECUTE PREVIOUS TEST, SET UP TO TEST HOB OF RESULT - -IF I,
THE SIGNS OF A AND X WERE THE SAME *j
TZR(T) K8000lNH

JFL(TFEQ,TXNG);

/* TXNG IMPLIES X NEG AND A.GE.O- -I.E. X.NE.A AND X.L T.A- -DO A
DUMMY OPERATION TO FORCE THE PROPER F FLAG *j
TXNG:

JLL(JXGX,JXLX,JXEX,JXNX);

ILR(A)

/* PERFORM A TEST ADDITION AND EXECUTE SIGN·EQUAL TEST
C WILL BE SET IF SIGNS WERE THE SAME AND X.GT.A *j
TFEQ:

ADR(T) STC K7FFF

JFL(SNEQ,SWEQ);

/* SNEQ IMPLIES SIGNS NOT EQUAL- -I.E. X.GE.O, A NEG- -X.GT.A
SNEQ:

SDR(AC) STC;
NO.OP

/* DUMMY OPIO SET C FLAG

*j

*j

JLL(JXGX,JXLX,JXEX,JXNX);

345

CPU Design
/*

FOR SIGNS EQUAL,IF X=A RESULT WOULD BE 1111 ... 1. INCREMENT
WILLGENERATEACARRYIFSO *f
SWEQ:

/*

JXGX:
JXLX:
JXEX:
JXNX:

/*

ILR(AC) FF1

JLL(JXGX,JXLX,JXEX,JXNX);

EXECUTION OF JUMP TESTS * f
ILR(R9)
ILR(R9)
ILR(R9)
ILR(R9)

JCF(JNT2,JTR2);
JCF(JTR1,JNT1);
JFL(JNT2,JTR2);
JFL(JTR l,JNT1);

SUBROUTINE CALLS
CALL LOCAL AND PUSH W, B, E, P =CPSS
CALL LOCAL AND PUSH P ONL Y=CLOP
CL FLAG IS USED FOR EXIT TEST AFTER PUSHING P *f
CPSS:

DSM(S);
ILR(W);
LMI(S) RWM;

CPG2:

DSM(S);
ILR(B);
LMI(S) RWM;
DSM(S);
ILR(E);
LMI(S) RWM;

CLOP2:

/*

DSM(S);
ILR(P);
LMI(S) RWM;

E+(E+D) INTO AC *f
ILR(R9)

/*

JCF(LRTN,XRTN);

XRTN:

SDR(E);
LMI(E) RRM;
AMA(AC);

LRTN:

SDR(P)

JZR(FETCH);

CLOP:

DSM(S);
ILR(P) STC

JMP(CLOP2);

PUSH INSTRUCTION *f
PXA:

DSM(S);
ILR(X);
LMI(S) RWM;
DSM(S);
ILR(A);
LMI(S) RWM

JZR(FETCH);

REGISTER MOVE AND SUBROUTINE
RETURN GROUP
In this section of code, the Register Move and Subroutine Return group instructions are implemented.
Both groups share the same IPX entry point,
I 100B. Table X shows the opcode values assigned
to the macro-instructions.

To simplify the decoding for register selection (S,
B, E or W) in the Register Move group, the two low
order bits of the PR latch are used to modify the
micro-instruction as it is strobed into the pipeline
register. By tying the two PR latch outputs of the
300 I to the two low order bits of the CPE control
field, a ICE jump function (which enables the PR

CPU Design
latch outputs) can be used to provide a wire OR of
PRO, PR I and FO, F I (see Figure 17).

Table X. Register Move and Subroutine
Return Group
MNEMONIC

Figure 17. Wire-OR of POa-1 and FO-1

Thus, in the micro-instruction
SDR(Rl)

FUNCTION

M

0

RLS

Pop P

1100

1111

RVS

Pop P, E, B, W

1100

1101
1100

RSA

Pop A, X, P, E, B, W

1100

PPAX

PapA, X

1100

1110

MSX

Move S to X, adjust

1100

0100

MBX

Move B to X, adjust

1100

0101

MEX

Move E to X, adjust

1100

0110

MWX

Move W to X, adjust

1100

0111

MXS

Move X to S, adjust

1100

0000

MXB

Move X to B, adjust

1100

0001

MXE

Move X to E, adjust

1100

0010

MXW

Move X to W, adjust

1100

0011

NO.OP

Nothing implemented

1100

10XX

JCE (MXRXI

the register group field FO-F3 is modified as
shown in Table IX.
The microprogram sequence is shown in Figure 18.

Table IX. Register Group Field FO-F3 Modification
MICROPROGRAM
MEMORY OUTPUT
(FO-F3)

PR LATCH
OUTPUT

RESULT STORED IN
PIPELINE REGISTER

SELECTED REGISTER

0111

00

0100

S

0111

01

0101

B

0111

10

0110

E

0111

11

0111

W

FETCH

FETCH

FETCH

FETCH

Figure 18, Register Move and Subroutine Return Group Flowchart

3-47

FETCH

FETCH

CPU Design
/* MOVE GROUP OF INSTRUCTIONS- -USES JCE TO SELECT REGISTER- -NOTE
THAT REGISTER ASSIGNMENT BECOMES IMPORTANT
FIRST MODIFY D TO GET D-12B ./
MVGP:

LMI(R9) KFFBO

JLL(MVXR,MVRX,MOD,PGRP);

/* MOVE X TO REG. - GET X, MODIFY BY D'=D-12B ./
MVXR:

MXRX:

ILR(X);
ALR(R9);
SDR(R7)
NO.OP

JCE(MXRX);
JZR(FETCH);

/* REGISTER OVERRIDE ./

/* MOVE REG TO X - FETCH REG USING JCE OVERRIDE ./
MVRX:
MRXX:

ILR(R7)
ALR(R9)

JCE(MRXX);
JMP(LDX);

/* MOD NOT IMPLEMENTED IN THIS VERSION ./
MOD:

NO.OP

JZR(FETCH);

/* ADJUST STACK AND RETURN GROUP
PPAL- -POPS A, X, P, E, B, AND W
PPRA- -POPS P, E, B, AND W
PPAX- -POPS ONLY A AND X
POPP- -POPS ONLY P • /
PGRP:

PPAL:

PAXC:
PPRA:

ILR(R9);
ADR(S)

JRL(PPAL,PPRA,PPAX,POPP);

LMI(S) FF1 RRM;
ACM(AC);
SDR(A);
LMI(S) FF1 RRM;
ACM(AC)
SDR(X);

JCF(PAXE,PAXC);

LMI(S) FF1 RRM;
ACM(AC);
SDR(P);
LMI(S) FF1 RRM;
ACM(AC);
SDR(E);
LMI(S) FF1 RRM;
ACM(AC);
SDR(B);
LMI(S) FF1 RRM;
ACM(AC);
SDR(W);

/. RESTORE INTERRUPT STRUCTURE ~
CLR(T);
LMI(T) ROT

JZR(FETCH);

PAXE:

SDR(X)

JZR(FETCH);

PPAX:

ILR(AC) STC

JMP(PPAL);

POPP:

LMI(S) FF1 RRM;
ACM(AC)

JMP(JUNC);

3-48

CPU Design
SPECIAL FUNCTION GROUP

Table XI. Special Function Groups

The JPX entry point 110 I B is used as an entry
point for the special function groups which include
byte load and store, register manipulation, and the
absolute subroutine call and increment and skip if
zero instructions. Table XI lists the opcode values
assigned to the instructions. A flowchart of the
sequences is shown in Figure 19.

MNEMONIC

In order to execute a byte load or store operation
efficiently, a byte swap capability (which exchanges
the high and low order byte positions) is necessary.
By wiring the data outputs of the high order byte
to the I inputs of the low order byte, and the low
order outputs to the high order I inputs, a byte
swap operation can be performed (see Figure 20).
Note that with the configuration shown in Figure
20, a byte swap can be performed on either a
memory word or the AC register of the CPE array
by reading data in on the I-Bus inputs while performing a memory read or enabling the D-Bus,
respectively.

REGISTER
SHIFTIROTATE
GROUP

Figure 19. Special Function Groups Flowchart

3-49

FUNCTION

M

0

LBA

Load byte absolute

1101

0000

LBR

Load byte relative

1101

0100

SBA

Store byte absol ute

1101

1000

SBR

Store byte relative

1101

1100

RAR

Rotate A right, include
CFF

1101

0001

RAX

Rotate A and X right,
include CFF

1101

0101

SAX

Shift A and X right,
preserve sign

1101

1001

SAL

Shift A left, fill with
zeros

1101

1101

ISZ

I ncrement and skif ip
zero

1101

XX10

CAS

Call absolute, push
P, E, W, B
P <- (D)

1101

XXll

CPU Design

BIDIRECTIONAL
DATA BUS

{J-::======~.2:.~
f-

Figure 20. I-Bus Wired for Byte Swap

/* SPECIAL FUNCTION GROUP
BYTE OPERATORS- -ADDR=(B+D)+B+X/2 OR (B+D)+XI2
CALL TO (D) AND PUSH ALL
SHIFT AND ROTATE GROUP
INCREMENT AND SKIP
FETCH B JUST IN CASE */
SPFG:

/*

JRL(BYTE,RSGP,SCJG,ISJG);

BYTE GROUP- -COMPUTE ADDR, STORE B IN CASE NEEDED */
BYTE:

SDR(R8);
ADR(R9);
ILR(X);
SRA(AC) STC;
LMI(R9) RRM;
ACM(AC)

LBYR:
LBYA:
LBYT:
RBYT:
DBIA:

ALR(R8);
LMI(AC) RRM
LDI(AC) FFl KOOFF
L TM(AC) KOOFF;
SDR(A)

SBYR:
SBYA:

ALR(R8);
LMI(AC);
ILR(A);
TZR(AC) KOOFF RRM
L TM(T) KFFOO;
ALR(T) RWM

STRB:
SRB1:
STLB:

/*

ILR(B)

LTM(T) KOOFF;
LDI(AC) FFl CNB

JLL(LBYA,LBYR,SBYA,SBYR);

JCF(LBYT,RBYT);
JMP(DBIA);
JZR(FETCH);

/* LOAD MAR FOR LATER USE */
JCF(STLB,STRB);
JZR(FETCH);

JMP(SRB1);

ROTATE GROUP
ROTATE A WITH C- -ROTATE A AND X WITH C- -SHIFT A, X RIGHT, FILL
WITH SIGN- -SHIFT A LEFT, FILL WITH ZEROES

3-50

CPU Design
AT ENTRY, Z FLAG IS ZERO IF D=O. DUE TO PIPELINED OPERATION, IT IS
THIS CONDITION THAT IS TESTED BY THE FIRST JZF *f
RSGP:
SZDS:
SNZD:
RACI:
RAXI:
SAXI:
SLZI:

TZR(W) STZ K8000lNH
ILR(X);
SDR(R9) FFO K007F
DSM(R9)

JZF(SZDS,SNZD);

ILR(A)
ILR(X);
SDR(T)
TZR(A) STZ K8000 INH
ILR(A)

JMP(RUNR);

JLL(RACI, RAXI,SAXI,SLZI);
JLL(RACI,RAXI,SAXI,SLZI);

JMP(RACI);
JMP(RAXI);
JMP(RUNR);

f* MAIN ROTATION LOOP *f
RUNR:

DSM(R9)STC

JLL(RACR,RAXR,SAXR,SLZR);

RACR:
RAXR:

JFL(RSEX,RUNR);

SLZR:

SRA(AC) FFZ STZ
SRA(AC) FFZ STZ;
SRA(T) FFZ STZ
SRA(AC) FFZ STC;
SRA(T) FFC
ADR(AC) STZ

JCF(RSEX,RUNR);
JFL(RSEX,RUNR);

RSEX:

SDR(A)

JLL(RACF,RAXF,SAXF,SLZF);

RACF:
SNCF:
SSCF:
RAXF:
RXF1:
SAXF:
SLZF:

TZR(W) K7FFF
NO.OP
LMI(W) K8000
ILR(T);
SDR(X)
ILR(T)
TZR(W) K7FFF

JZF(SNCF,SSCF);
JZR(FETCH);
JZR(FETCH);

SAXR:

JCF(RSEX,RUNR);

JMP(RACF);
JMP(RXF1);
JZF(SNCF,SSCF);

/* SPECIAL CALL AND JUMP GROUP- -CURRENTLY CONTAINS ONLY THE
CALL TO (D) AND PUSH W,B,E,P- -ALL 4 OPCODES DO THE SAME THING * f
SCJG:

LMI(R9) RRM;
ACM(AC);
SDR(R9)

JMP(CPSS);

f* INCREMENT AND SKIP GROUP- -AGAIN 4 OPCODES ARE USED FOR ONE
INSTRUCTlON- -LOCATION AT B+D IS INCREMENTED *f
ISJG:

NOSK:
SKIP:

ALR(R9);
LMI(R9) RMW;
ACM(AC) FFl RWM;
NO.OP
NO.OP
LMI(P) FFl

JFL(NOSK,SKIP);
JZR(FETCH);
JZR(FETCH);

3-51

CPU Design
generates a Request Input or Request Output to
select an I/O port and specify the operation to be
performed. Table XII lists the opcode values assigned to the macro-instructions. The flowchart in
Figure 21 shows the microcode sequence used.

INPUT/OUTPUT GROUP
In this section of code, the input/output instructions are implemented. In conjunction with the
memory address register, the bus control field
Table XII. Input/Output Group
MNEMONIC

INTERRUPTS
M

FUNCTION

0

IND

I nput one word
A+- (D)

1000

XXXX

OTD

Output one word
(D) +-A

1001

XXXX

INX

I nput one word
A+- (X)

1010

XXXX

OTX

Output one word
(X) +-A

1011

XXX X

A basic means for microcoding interrupts when
using the 3214 Interrupt Control Circuit involves
forcing an alternate microprogram address which
then leads to an interrupt handling routine. The
interrupt handling routine interrogates the interrupt structure to determine the interrupting level.
This level is rewritten to the interrupt structure to
block further interrupts at the interrupting priority
level or lower levels while enabling interrupts at
higher levels.

• FOR NOW FOUR OPCOOE GROUPS Will BE
ASSIGNED FOR INPut AND OUTPUT'
LMIIR9)RIN
ACM(ACI.
SORIA)

LMIIXI RIN
ACM(AC)
LMIIR9)

JZRIFETCHI

wx--~----------~~----------~----------~----

FETCH

FETCH

FETCH

Figure 21. Input/Output Flowchart

/* INTERRUPT- -UTILIZED CALL ROUTINES FOR REGISTER SAVING
I/O DEVICE #0 REPRESENTS EXTERNAL INTERRUPT STRUCTURE
START BY PUSHING OLD VALUE OF STATUS */
INTER:

DSM(S);
ILR(W);
LMI(S) RWM;

/* READ INTERRUPTING LEVEL FROM EXTERNAL STRUCTURE */
CLR(T);
LMI(T) RIN;
LTM(AC) KOOFF ROT;

/* NOTE LEVEL REWRITTEN */

/* STORE PRIORITY IN W - SET C FLAG FOR PROPER LOADING OF REGISTERS */
SDR(W) STC;

/* INTERRUPT ROUTINE STARTING ADDRESS IS COMPUTED IN R9 */
LMI(W) RRM;
ACM(AC);
SDR(R9)

JMP(CPG2);

3·52

CPU Design
Microprogram Memory Assignment

below. Conditional jumps should be labeled as to
type and condition corresponding to each destination. This information will be necessary when performing an assignment. No other information is
needed on the flowchart, but it is quite useful to
show any symbolic label that may be associated
with a state.

Having written the actual code with minimal regard
to memory assignment, the actual assignment to
ROM must be performed. To assist in this function,
a complete state (Le., microcode instruction) flowchart should be prepared. Each machine state is
represented by a dot in the state diagrams shown

INITIALIZATION GROUP

INIT=OO
ENTRV POINT
FROM OTHEA
ROUTINES

FETCH

=

OOOFH

JPX

NAO

JREL

JIG

IMMO

DMRf

IMRF

IXMA

IXMB

IND

INX

OTD

aTX

MVGP

SPFG

tRBM

IMMEDIATE GROUP

IMML

IMMS

JRL

00
lLGA

01

ILPX

NAI2
FROM MRXX

JLL
JLL

00

01

NDA

aDA

FETCH

10

00

11

xaA

ADA

LOA

10

LOX

PDS

FETCH

PDSl

FETCH

FROM MEMORY
REFERENCE GROUP
"ISOA" AND "SOX"

FETCH

FETCH

3-53

ADX

FROMMEM
REF "PAS"

FETCH

FETCH

11

NA1S

CPU Design
MEMORY REFERENCE
GROUP

OMRF

IXMB

IRBM

•0
MADO

JRL

JRL

JRL

00

01

10

11

MRVl

MRV2

MRAD

STPG

JLL
JLL

00

01

SAM

SXM

10

PSM

11

sox

11

LOA

LOX

PDS

ODA

XDA

ADA

FETCH

ADX

FETCH

JLL
00

NDA

11

FETCH
TO "ADA'"

10

11

PAS
FETCH

FETCH

ISOA

PDS'

JUMP GROUP
JREL
TO "ADA'"

JROR

JIG

n

~

r-oooo-----1~~~~--~--t------,------~--~--t-,O~IO~--~I~OO~I~-1-,~OO~O--~~~---r~~--,------,-,-ll~, ~
JUNe

JCNZ

JAGT

FROM

"pop,,",","

FETCH
'1

ANPE

• 0

JTRI

FETCH

FETCH

FETCH

FeTCH

3-54

JALE

JXNA

CPU Design

JUMP GROUP (CONTINUE'"

--1.

"R
1110

1101

1100

PXA

CPIS

CLOP

FROM
INTER +9
CLOP2

CPO'
JCF

LRTN

FETCH

XRTN

FETCH

MOVE GROUP

11
PGRP

00
MVXR

MRXX

FETCH

JRL

.t

00
'PAL

t.

PPRA

PPAX

MXRX
FETCH

TO "LDX"
FETCH

FETCH

TO "JUNC"

"

POPP

CPU Design
SPECIAL FUNCTION GROUP
SPECIAL FUNCTION GROUP
JOL

SP F.

00

0'
RSGP

BYTE

11

'0
SCJ.

'SJG

---m- -,
'0

SZOS

SNZO

~
-0

- - . . TO "CPSS"

>JLL

JCF

kJ:11

LBVR

·0

.,

LBYT

R8VT

SBYA

JCF
-0

STLB

SBVR

RAel

~:Y

STRB

JLL

00
RACF

0'
RAXF

~

(

10
SAXF

SLZI

JCF
"0

SRBl

FETCH

SKIP

.,
JFL

DBtA

.,

FETCH

FETCH

JLL

u~'
LBVA

NOSK

'"1

RUNR

~RSEX

FETCH

JLL

11

SLZF

U~ACO

0'

RAXR

"-

SAXO
'0

11

SLZR

JZF
·0
SNCF

FETCH

t~F
FETCH

INTERRUPT SERVICE ROUTINE

If0 GROUP

INTER = 255

FETCH

3-56

CPG'

CPU Design
executes a JCE jump which uses an additional
location within the JLL destination columns. However, the basic jump micro-operation characteristics
do allow all of these conditional jumps to be placed
within one block of eight rows.

Once all of the state diagrams have been prepared,
a number of steps may be followed to simplify the
assignment procedure. First, the basic hardware
characteristics dictate that INIT, FETCH, and
INTER be located in microprogram memory locations 0, 15, and 255 (decimal), respectively. Then,
note that each conditional jump has a limited
range.- As a result, when several conditional jumps
follow one another in sequence, all may have to be
located within a restricted range in microprogram
memory. For JCF, JZF, JLL and JRL microinstructions, the calling instruction must be in the
same block of eight rows as the destinations.

To retain row zero, the conditional jumps of
clusters one and five are placed in the last eight
rows of the microprogram memory. In addition to
the destinations, space must be reserved for the
"calling" micro-instructions for each of the conditional jumps listed in the clusters.
Chart I shows an assignment of the conditional
jumps of clusters one and five, together with some
of the immediately related states. For the assignment procedure, a form like that of Chart I is used
to show which microprogram memory locations
are occupied and which are available. The format
also aids visualization of valid jump micro-operations. As each state is assigned to its location in
micro memory, the corresponding position on the
state diagram is marked to show assignment. In this
way, unassigned states are easily located on the
state diagrams.

To do the best assignment, the most restricted set
of micro-instructions should be assigned first. The
most restricted groups of micro-instructions are
usually associated with clusters of conditional
jumps which must be located within a given range
of memory. It is therefore very useful to catalog all
such clusters of conditional jumps. Table XIII lists
the clusters associated with this machine. In each
case the conditional jump is identified by the jump
micro-operation and the first of its destinations.
Thus in Table XIII the symbol JRL(MRVI) really
refers to the code JRL(MRVI, MRV2, MRAD,
STPG). For this machine, there are only five
clusters.

The information placed in the memory maps includes the state label or, for strings of states with
no assigned label, the label of the nearest previously
labeled state plus information to indicate how far
from that labeled state the present state is. For
example, INIT+2 is the second state after INIT.

Table XIII. Conditional Jump Clusters
1.

JPX
JRL
JLL
JZF

(NAO)
(lLGA). JRL (BYTE)
(NOA). JLL (LOA). JLL (MVXR). JLL (RACI)
(IMML). JZF (SZOS)

2.

JRL (MRV1)
JLL (SAM). JLL (LAA)
JCF (MAOO)

3.

JLL (JXEX)
JFL (JTR 1). JCF (JNT2)

4.

JRL (PPAL)
JCF (PAXC)

5.

JLL (RACR). JLL (RACF)
JCF (RSEX)
JZF (SNCF)

The state assignment can proceed, with conditional
jumps and short unconditional sequences being assigned before long unconditional sequences. Chart
2 shows the state assignment at a point when all
states except those between INIT and FETCH,
those between PPRA and FETCH, and those associated with IND, INX, OTD and OTX have been
assigned.
For those states which have only one calling state
(Le., a state which has only one state jumping to it
with a non-conditional jump) and only one target
state (i.e., it makes a non-conditional jump to
another state), two hexadecimal numbers are also
written on the memory map. The number in the
lower left-hand corner is the address of the calling
state (first hex digit is the row, second hex digit is
the column), and the number in the lower righthand corner is the address of the target state. This
information will tell the designer at a glance which
states can be easily moved in the process of memory assignment, and to which locations they can be
moved. For instance, a state with its calling state
and target state in the same row (or column) can be
moved anywhere in that row (or column), and a

An examination of the flowcharts indicates that a
simpler code might result if clusters one and five
were combined because of the coupling between
JLL(RACI) of cluster one and the JCF(RSEX) of
cluster five. The combination of these two clusters
represents the greatest degree of restriction, as
within the same block of rows there would be one
JPX, six JLL, two JRL, one JCF and three JZF
micro-operations. In addition, the JLL(MVXR)

3-57

CPU Design
may then be used freely. In those cases where extra
states were used to avoid the use of row zero
locations, the assignment may be reconsidered. For
this machine, the operations IND, INX, OTD and
OTX were rewritten to utilize row zero locations.
Figure 22 shows the revised flow diagram for these
four operations.

state with its target state in the row zero can be
moved anywhere in the same row or column as its
calling state.
As an example of how this information can be
used, note that in Chart 2 state RAXI+ I has been
assigned to location 090H. However, when the
INIT sequence is assigned, it becomes convenient
to locate INIT+ I somewhere in column O. Since
there are no available spaces in column 0, the
designer notes that state RAXI+ 1 has both its
calling and target states in row 9, and so RAXI+ I
can be moved anywhere in row 9. In Chart 3,
RAXI+ I has been reassigned to location 098H,
and INIT+ 1 has been assigned to location 090H.
This moving process will typically be frequently
necessary in the assignment procedure, and thus it
is quite useful to have this information right on the
working memory map.

The final assignment is as shown in Chart 3. Two
locations remain.

FETCH

FETCH

Figure 22. IND, INX, OTD and OTX
Revised Flow Diagram

The final state assignments consist mostly of the
long unconditional sequences. Row zero locations

/* INPUT AND OUTPUT - -CURRENT VERSION DOES NOT DECODE INTO
SUBGROUPS- -ALSO ROW ZERO IS USED TO SAVE CODE */
IND:
IND1:
INX:
OTD:
OTD1:
OTX:

LMI(R9) RIN;
ACM(AC);
SDR(A)
LMI(X) RIN
LMI(R9);
ILR(A) ROT
LMI(X)

JZR(FETCH);
JMP(lND1);
JZR(FETCH);
JMP(OTD1);

CONCLUSION
In the central processor design example described
above, the final definition of the central processor
macro-instruction set evolved as the microprograms
were being implemented. In many instances, it was
necessary to modify the macro-instruction opcode
assignment in order to take full advantage of the
capabilities of the Series 3000 architecture. Macroinstruction operations were also redefined to add
more flexibility as microprogramming techniques
improved.

ability to decode macro-instruction opcodes and
large repertoire of conditional and unconditional
jump operations resulted in both efficient microprograms and complete memory utilization. Only
two memory locations remained unused after the
microcoding was complete.
The central processor developed in this application
note is used as a design example only, and therefore does not represent a complete central processor or an instruction set designed for a specific
application. However, because of the microprogrammability of the Series 3000 family, the same
basic organization can be tailored to a wide range
of operating environments from I/O processing to
data processing and dedicated arithmetic computation.

The microprograms were implemented without
regard to memory assignment except in cases where
code sharing between micro-instruction opcode
assignments were critical. Actual assignment of the
micro-instructions to memory involved a very small
portion of the design cycle. The 3001 MCU's

3·58

Chart 1
JFL, JCF, JZF
COLUMN RESTRICT

0
00

,

f,e,<=O

f,e,<=1

2

3

JFL, JCF, JZF
COLUMN RESTRICT

JLL COLUMN RESTRICT

4

5

6

8

7

9

f,e,<=O

f,e,<=1

A

B

JRL COLUMN RESTRICT

C

0

E

F
FETCH

IN IT

01
02
03

04
05
06
07
08

NAO

09

RAXI+l
95 94

OA

RAXR+l
A4
RXFI

JREL

JIG

IMMD

DMRF

IMRF

IXMA

IXMB

RSEX

RUNR

RACI

RAXI

SAXI

SLZI

SAXR+l
A6

SNCF

SSCF

RACR

RAXR

SAXR

SLZR

IMML+l
B2

IMML

IMMS

RACF

RAXF

SAXF

SLZF

OC

MVXR

MVRX

MOD

PGRP

OD

NDA

ODA

XDA

ADA

OE

LDA

LDX

PDS

ADX

OB

OF

MRXX

IND

INX

OTD

OTX

SZDS+l
9A

SZDS

SNZD

PAXC

PAXE

MVGP

SPFG

IRBM

NA15

BYTE

RSGP

SCJG

ISJG

PPAL

PPRA

PPAX

POPP

ILGA

ILPX

NAil

NAI2
INTER

o"CJ

c:
C

m
cs·
:::J

o"0

c:
c

Chart 2
JFL, JCF, JZF
COLUMN RESTRICT

0

1,<,.=1

2

3

4

JTRI

JNTI

TFAL

TTRU

1
JAGT+l

JLL COLUMN RESTRICT

1,<,.=0

6

5

7

8

1,<,.=0

1,<,.=1

9

A

B

MAOO+l

IMRF1+l

XATS

SBYA+2
18

STLB

STRB

00

INIT

01

SNEO+l
12

SNEO

SWEO

LBYA

LBYR

SBYA

SBYR

02

OBIA

LBYT

RBYT

-JXGX

JXLX

JXEX

JXNX

03

JUNC

JALT

JXGA

JAEO

JANE

JCEZ

JXLA

04

PXAt2
40 70

APE2

AN2

IXMB+3
47 85

IXMA+l
86 56

IXMB+2
57 45

05

JIG+3
EO 60

XATS+4
5A

TFEO

TXNG

OMRF+l
84

IMRFI

IXMA2

IXMB+l
87 47

INTER+3
5F 59

INTER+4
58 69

06

JIGt4
50

JROR+ 1
71

JNT2

JTRI

LAA

LAX

PAS

ISOA

ISOA+l
67 F8

07

PXA+3
40 FO

JROR
81 61

APRE

ANPE

SAM

SXM

PSM

SOX

PSM+1
76 A8

08

NAO

JRLE

JIG

IMMO

OMRF

IMRF

IXMA

IXMB

INO

09

RAXI+1
95 94

OA

RAXR+ 1
A4

SAXRt 1
A6

SNCF

SSCF

RACR

RAXR

SAXR

OB

RXFI

IMML+l
B2

IMML

IMMS

RACF

RAXF

oc

MVXRtl
C4 Cl

MVXRt2
CO

NCY

SCY

MVXR

00

POPP+l
OF 30

XOA+l
06 OF

CPG2+7
F2 00

PPAL+l
OC 08

OE

JIGt2
E2 50

MXRX

JIGtl
82 EO

OF

PXAt4
70 Fl

PXAt5
FO OF

CPG2+6
FB 02

JAGE

RSEX

RUNR

I

JFL, JCF, JZF
COLUMN RESTRICT

JALE+l
SBYA+l
16 79

JALE

cS'
:J

JRL COLUMN RESTRICT

C

STLB+l
lA 10

0

E

F

CLOP2

FETCH

SRBI

FETCH+l
OF 9F

PPRA+l
DO 2F

BYTE+5
AE

JXEA

CPSS

PXA

CLOP

XATS+l
OB 5B

SCJG+2
4E 3C

PXA+l
3D 40

SCJG+l
CE 4C

XATS+3
5B 51

XATS+2
4B 5A

CPSS+l
3C 50

CPSS+2
5C AO

IRBM+l
8E 56

INTER+2
BF 58

INTER+5
59 6C

MAOO

MLOAO

INTER+6
69 60

INTER+7
6C 6F

CLOP+l
3E 00

INTER+8
60 AF

SOX+l
77 F9

CPG2+2
AA 7B

CPG2+3
7A EB

MRVI

MRV2

MRAO

STPG

INX

OTO

OTX

MVGP

SPFG

IRBM

MRV2+1
7D

JAGT

JCNZ

JXNA

NA15
FETCH+2
IF

SZOS+l
9A

SXOS

SNZO

MRV1+l
7C

SLZR

PSM+2
78 B8

ISJG+3
09

CPG2+1
AO 7A

BYTE+3
AC AE

BYTEt2
BC AB

CPG2

BYTEt4
AB 2E

INTERt9
6F AO

SAXF

SLZF

PSM+3
A8 OF

XRTN+2
B9 BA

LRTN

XRTN

BYTE+l
CC AC

CLOP2tl
00

XRTN+l
BB B9

INTER+!
FF 5F

MVRX

MOO

PGRP

PGRP+l
C7

ISJG+l
CF 09

NOSK

SKIP

BYTE

RSGP

SCJG

ISJG

NOA

aOA

XOA

AOA

PPAL+2
03 E8

ISJG+2
09 A9

PAXE

PAXC

PPAL

PPRA

PPAX

POPP

LOA

LOX

POS

AOX

PPAL+3
08 E9

PPAL+4
E8

CPG2+4
7B FB

ILGA

ILPX

NAil

NAI2

AOAI

ISOA+2
68 F7

SOX+2
79 F7

CPG2+5
EB F2

RACI

RAXI

MRXX

SAXI

POSI

SLZJ

INTER

Chart 3
JFL. JCF. JZF
COLUMN RESTRICT

0

f.e •• =O

f.e ••=1

2

3

4

5

6

1

JFL. JCF. JZF
COLUMN RESTRICT

JLL COLUMN RESTRICT

7

8

f.e ••=O

f,c,z=l

9

A

B

JRL COLUMN RESTRICT
C

0

E

F

00

INIT

JAGT+l

JTRl

JNTl

TFAL

TTRU

OTOl

JALE+l

IN01

MAOO+l

IMRF1+l

XATS

INIT+12
FC

CLOP2

PPRA+4
lE

FETCH

01

SNEO+l
12

INIT+4
21 41

SNEO

SWEO

LBYA

LBYR

SBYA

SBYR

SBYA+l
16 79

SBYA+2
lB

STLB

STRB

STLB+l
lA 10

SRBI

PPRA+5
OE 9E

FETCH+l
OF 9F

02

OBIA

INIT+3
91 11

LBYT

RBYT

JXGX

JXLX

JXEX

JXNX

os

INOl+l
OF

PPRA+13 PPRA+ll
2B OF
EA 2B

PPRA+12
2A 29

PPRA+l
00 2F

BYTE+5
AE

PPRA+2
20 4F

03

JUNC

JAGE

JALT

JXGA

JAEO

JANE

JCEZ

JXLA

JALE

JAGT

JCNZ

JXEA

CPSS

PXA

CLOP

JXNA

04

PXA+2
40 70

INIT+5
11 44

APE2

AN2

INIT+6
41 F4

IXMB+3
47 85

IXMA+l
86 56

IXMB+2
57 45

INIT+ll
49 OC

INIT+10
4A 48

INIT+9
FA 49

XATS+l
OB 5B

SCJG+2
4E 3C

PXA+l
30 40

SCJG+l
CE 4C

PPRA+3
2F OE

05

JIG+3
EO 60

XA1'S+4
5A

TFEO

TXNG

OMRF+l
84

IMRFl

IXMA2

IXMB+l
B7 47

INTER+3
5F 59

INTER+4 XATS+3
58 69
5B 51

XATS+2
4B SA

CPSS+l
3C 50

CPSS+2
5C AO

IRBM+l
BE 56

INTER+2
BF 5B

06

JIG+4
50

JROR+l
71

JNT2

JTRl

LAA

LAX

PAS

ISOA

ISOA+l
67 F8

INTER+5
59 6C

MAOO

MLOAO

INTER+6
69 60

INTER+7 CLOP+l
6C 6F
3E 00

INTER+8
60 AF

07

PXA+3
40 FO

JROR
81 61

APRE

ANPE

SAM

SXM

PSM

SOX

PSM+l
76 A8

SOX+l
77 F9

CPG2+2
AA 7B

CPG2+3
7A EB

MRVl

MRV2

MRAO

STPG

OS

NAO

JRLE

JIG

IMMO

OMRF

IMRF

IXMA

IXMB

INO

INX

OTD

OTX

MVGP

SPFG

IRBM

NA15

09

INIT+l
00 91

INIT+2
90 21

RSEX

RUNR

RACI

RAXI

SAXI

SLZJ

RAXI+1
95 94

SZOS+l
9A

SXOS

SNZO

MRV1+l
7C

MRV2+1
7D

PPRA+6
lE FE

FETCH+2
IF

OA

RAXR+l
A4

SAXR+l
A6

SNCF

SSCF

RACR

RAXR

SAXR

SLZR

PSM+2
78 B8

ISJG+3
09

CPG2+1
AO 7A

BYTE+3
AC AE

BYTE+2
BC AB

CPG2

BYTE+4
AB 2E

INTER+9
6F AO

OB

RXFI

IMML+l
B2

IMML

IMMS

RACF

RAXF

SAXF

SLZF

PSM+3
A8 OF

XRTN+2
B9 BA

LRTN

XRTN

BYTE+l
CC AC

CLOP2+1
00

XRTN+l
BB B9

INTER+l
FF 5F

OC

MVXR+l
C4 Cl

MVXR+2
CO

NCY

SCY

MVXR

MVRX

MOO

PGRP

PGRP+l
C7

ISJG+l
CF 09

NOSK

SKIP

BYTE

RSGP

SCJG

ISJG

00

POPP+l
OF 30

XOA+l
06 OF

CPG2+7
F2 00

PPAL+l
OC 08

NOA

OOA

XOA

AOA

PPAL+2
03 E8

ISJG+2
09 A9

PAXE

PAXC

PPAL

PPRA

PPAX

POPP

OE

JIG+2
E2 50

MXRX

JIG+l
82 EO

PPRA+9
F3 EA

LOA

LOX

POS

AOX

PPAL+3
08 E9

PPAL+4
E8

PPRA+l0 CPG2+4
E3 2A
7B FB

ILGA

ILPX

NAil

NAI2

OF

PXA+4
70 Fl

PXA+5
FO OF

CPG2+6
FB 02

PPRA+8
FE E3

INIT+7
44 FA

MRXX

POSl

AOAl

ISOA+2
68 F7

SOX+2
79 F7

INIT+8
F4 4A

PPRA+7
9E F3

INTER

CPG2+5
EB F2

INIT+13
OC

o'V

c:

c

I

CS·
::s

CPU Design
The operations supported under these five modes
are as follows:

APPENDIX A
THE DESIGN EXAMPLE INSTRUCTION SET
The basic machine uses a 16-bit word. All instructions are single word instructions except the long
immediate forms. Macroprograms are fully reloeatable without reassembly. The data segment is
also independently relocatable. There are five basic
instruction catagories: memory reference, immediate data, jumps (including calls and returns), register moves and manipulations, and input-output
functions.

MNEMONIC

ASSIGNED
CPE
REGISTER

(A)

Accumulator

RO

0

AND data to A

0000

LOA

Load data to A

0001

LAA

Load address to A

0010

SAM

Store A in memory

0011

ODA

OR data to A

0100

LOX

Load data to X

0101

LAX

Load address to X

0110

SXM

Store X in memory

XoA

Exclusive OR data to A

POS

Push data to stack

0111
1000
1001

PAS

Push address to stack

PSM

Pop stack to memory

1010
1011

ADA

Add data to A

1100

NoA

The machine has seven registers as follows:

REGISTER

FUNCTION

(X)

Index Register

Rl

(B)

Data·Base Register

R5

AoX

Add data to X

1101

(E)

Program Execution Base Register

R6

SoA

Subtract data from A

1110

(P)

Program Counter

R3

SOX

Subtract data from X

1111

(S)

Stack Pointer

R4

(W)

Status Word Register'

R7

Immediate Group

• A carry flip·flop designated C is. the high order bit of the status
word register W.

MNEMONIC

Memory Reference Group
ADDRESS MODE

ADDRESS
COMPUTATION

M·FIELD
CODES

FUNCTION

M·
O·
FIELD FIELD

LAI

Load to A immediate

0011

0001

AAI

Add to A immediate

0011

1100

NAI

AND to A immediate

0011

0000

OAI

OR to A immediate

0011

0100

XAI

Exclusive OR to A
immediate

0011

1000

Direct

B+o

0100

Indirect

(B+D)

0101

Indirect Relative

(B+o)+B

1110

PSI

Push to stack immediate

0011

1001

Indirect Indexed

(B+o)+X

0110

LXI

Load to X immediate

0011

0101

Indirect Indexed Relative

(B+o)+X+B

0111

AXI

Add to X immediate

0011

1101

SUMMARY OF MEMORY REFERENCE MODES

If D is equal to zero, the contents of the memory
location following the instruction is used as the
immediate value.

Note: Values enclosed in ( ) designate indirect
addresses.

3.&2

CPU Design

Jump Group
MNEMONIC

RELATIVE
M
0

FUNCTION

INOIRECT
M
0

JRU,JIU

Jump unconditional

0001

0000

0010

0000

JRGE,JIGE

Jump if A.GE.O

0001

0001

0010

0001

JRLT,JILT

JumpifA.LT.O

0001

0010

0010

0010

JRXG,JIXG

Jump if X.GT.A

0001

0011

0010

0011

JREZ,JIEZ

Jump if A.EQ.O

0001

0100

0010

0100

JRNZ,JINZ

Jump if A.NE.O

0001

0101

0010

0101
0110

JRCZ,JICZ

Jump if C.EQ.O

0001

0110

0010

JRXL,JIXL

Jump if X.LE.A

0001

0111

0010

0111

JRLE,JILE

Jump if A.LE.O

0001

1000

0010

1000

JRGT,JIGT

Jump if A.GT.O

0001

1001

0010

1001

JRCN,JICN

Jump if C.NE.O

0001

1010

0010

1010

JRXE,JIXE

Jump if X.EQ.A

0001

1011

0010

1011

JRXN,JIXN

Jump i·f X.NE.A

0001

1111

0010

1111

M

0

Unconditional and conditional jumps:
Relative:
Indirect:

P = P+D'
P = E+(E+O)

where 0'=0-128

Subroutine Call Group
MNEMONIC
CAS

FUNCTION
Call absolute, push
P, E, W, B
P +- (0)

ABSOLUTE
0
M
1101

XXll

M

0

CLS

Call local subroutine,
push P

N.A.

0010

1110

CVS

Call global subroutine,
push W. B, E, P

N.A.

0010

1100

Local:

Push P to stack
P = E+(E+O)

Value:

Push W, B, E, P to stack
E = E+(E+O)
P = E'+(E')
where E'=E+(E+O)

CPU Design
Subroutine Return Group
M

0

RLS

Pop P

1100

1111

RVS

Pop P, E, B, W

1100

1101

RSA

Pop A, X, P, E, B, W

1100

1100

MNEMONIC

FUNCTION

The shift count is given by D if D is non-zero or by
the least significant seven bits of the X register if D
is zero.

Base and Status Register Move Group
MNEMONIC

Register Manipulation Group
MNEMONIC

FUNCTION

M

0

RAR

Rotate A right, include
CFF

1101

0001

Rotate A and X right,
include CFF

1101

RAX

0101

SAX

Shift A and X right,
preserve sign

1101

1001

SAL

Shift A left, fill with
zeros

1101

1101

LBA

FUNCTION

Move B to X, adjust

1100

0101

MEX

Move E to X, adjust

1100

0110

MWX

Move W to X, adjust

1100

0111

MXS

Move X to S, adjust

1100

0000

MXB

Move X to B, adjust

1100

0001

MXE

Move X to E, adjust

1100

0010

MXW

Move X to W, adjust

1100

0011

NO.OP

Nothing implemented

1100

10XX

0

MNEMONIC

M

0

0000

INO

I nput one word
A<- (0)

1000

XXXX

OTD

Output one word
(0) +-A

1001

XXXX

INX

I nput one word
A+- (X)

1010

XXXX

OTX

Output one word
(X) +-A

1011

XXXX

Load byte relative

1101

0100

Store byte absol ute

1101

1000

SBR

Store byte relative

1101

1100

Byte address

MBX

M

LBR

Relative mode:

0100

1101

SBA

Byte add ress

1100

FUNCTION

Input/Output Group

Load byte absol ute

Absolute mode:

0

Move S to X, adjust

The destination register is adj us ted by D-128.

Byte Load and Store Group
MNEMONIC

M

MSX

=
=

FUNCTION

(B+0)+X/2
(B+O)+B+X12

Special Memory Reference Instruction
MNEMONIC
ISZ

FUNCTION
Increment and skip if
zero

M
1101

0
XX10

Stack Push and Pop Group
M

o

M

0

PHAX

Push A, X onto stack

0001

1101

0010

1101

PPAX

Pop A, X

1100

1110

MNEMONIC

FUNCTION

3-64

CPU Design
APPENDIX B
MICROPROGRAM LISTING
RECORD
NUMBER
1
2

© Intel Corporation, 1975

1* BIPOLAR MICROCOMPUTER MACRO-MACHINE

REGISTER MACHINE--12/13/74
UPDATED 3/18175

3

4
5
6

7
B

9

10
11

12
13

MACHINE HAS 7 REGISTERS AS FOLLOWS:
ACCUMULATOR
RO
A
INDEX REGISTER R1
X
P
PROGRAM COUNTER R3
S
STACK POINTER
R4
DATA BASE REG
R5
I:i
g
PROG. BASE REG. R6
W
STATUS WORD
R7

14
15
16
17

C=CARRY,LINK FLIP-rLUP=HOB OF W

113
19
.!O

KB

FIELD
LENG'lH=4
MICROPS(KOOOO=O
KIiOOO=B

KB

KBUS:

DErINIrl~H

Or KBUS fIELD

*/

DEfAULT=O
K007f=1
KOOfF=3
K7FFF=7
KFFn-=15);
KfFOO=12
KfFBO=14

21
22

23

.i!4

25
20
27
28
.!9

30
31
32
33
34

35
36
37
31i
39

,* DEFINITION OF BUS CONTROL FIELD
MCr

/*

INH
RMW
CNB
RIN
ROT
RRM
RWM

FIELD
LENG1'H=3
MICROPS(NMO=0008
RHi=100B

*/

DEFAULT=O
INH=OOlB
RMW=010B
ROT=10lB
RRM=lI0B

CNB=OIIB
RWM=111B);

NBO
NO BUS OPERATION
INHIBIT,CPE ARRAY
READ-MODIFY-wRITE
CPU NEEDS BUS
REQUEST INPUT
REQUEST OUTPUT
REQUEST READ MEM.
REQUEST WRITE MEM.

40
41
42
43

SEt UP FOR SYMBOLIC REPRESENTATION OF REGISTER DESIGNATIONS *1

44

P
S
B
E

45
4b

47
48

STRING
STRING
STRING
STRING
STRING
STRING
STRING

A
X

w

'RO',
'Rl',
'R3';
'R4',
'RS',
'Ro';
'R7',

49

50
51
52
53
54
55
56
57

1* SET UP A SPECIAL NO.OP STRING *1

NO.OP
/*

STRING

'NOP(R2)',

NEXT WE SPECIFY A DEFAULT TO rFl IN THE Fa FIELD tOR THE lOR
MlCROP IN" THE CPE FlELD. lOR 18 NORMALLY USED AS A STORE
OPERATION. WHEN A DECREMENT OPERATION II ALIO DESIRED, "0
WILL HAVE TO BE EXPLICITLY SPECIFIED *1

511

59
60

SDR

IMPLY

FO-11B'

CPU Design
RiCORD
NUMIER
61

62
63
64
65

66
b1

be

69
10
11

'* ZERO
INITIALIZATION SEQUENCE
A, X, AND W *'
INIT:

OOOH:
090H:
091H:

,. ZERO

f

AS TEMPORARY POINTER, WRITE W TO INTERkUPT STRUCTURE

12
13

021H:

74
75
76

01lH:

17

ao

81
82
83

84
85
86
87

041H:

/. SET S

= CO),

T

=1

fOR NEXT

92
93

94
95
96
97
98

LMlCT) fFl RRMJ
ACMCAC)

044H:
OF4H:
OFAH:

SDR(S);

/. SET B

= (1),

r =

~

FUR NEXT OPERATION *1

L~ll(T) Ff1 RRM;
ACMCAC);
SDRCB} src;

04AH:
049H:
048H:

/. THIS SETS THE C fLAG TO INSURE
A CORRECT JUMP TO XRIN */

/. GET (2), JUMP TO XRTN TO SET E

= (2),

LMI(T) RRM;
ACM(AC)

OOCH:
OFCH:
/*

./

OPERATIO~

88

89
90
91

*'

CLRCT) ,
LMl(l'H
ILR(W) Ron

78
H

CLR(A) J
CLR(X);
CLRCW)J

P

= CE)

./

JCF C*,XRTN);

FETCH SEQUENCE & START Of MACRO-INSTRUCTION PROCESSING
P IS ISSUED TO MAR AND INCREMENTED, MACRO-INSTRUCTION
IS fETCHED AND TESTED BY JPX MICRO-OPtRATION. NOTE
fETCH IS IN LOCATION 15 TU STROBE INTERRUPT ON ENTRY. *'

99
100
101
102

10l

104
105
106

107
108
1()':/
110
111
112
113
114
11!)
110
117
116
119
120
121
12.1
123
124
125

OOFH:

fETCH:

LMI(P) ffl RRM;

/* LOAD DISPLACEMENT AND TEST fOR ZERO USING Z FLAG

*'

LTMCAC) STZ KOOfF;

0IFH:

'* SAVE DISPLACEMENT, TEST 4 BITS OF MACRO-OP. TEST IS
DELAYED TO ALLOW PIPELINE PROPAGATION. ALSO C FLAG IS
SET FOR LATER USE IN PSEUDO-SUBROUTINES.

*'

09FH:

SOH(RII) S'fC

J~X(NAO,JR~L,JIG,IMMO,OM~f,lMRF,lXMA,lx~~,IhO,

INX,OIO,OTX,MVGP,SPfG,IRbM,NAI5);
/.

~~ASSIGN~D

080H:
u8F'ti:
/'

:'lAO:
NAl~:

UP-CODE

GHUUPS--NOP~

fUH 1HIS

V~RSION

./

JZRnTfCH) ;
JZR(nl'Cit);

1000.OP
NO.UP

IMM~()lATE GROUP Uf MACRU-INSTRUCTIONS--TEST fOR LONG
F'URN--O IS IN AC AND H9--AOJUSl AC bY -128 ./

0.3tll

/. LUNG
O~lh:

IMMO:
F'O~M:

lMML:

LIH(AC) KfF'I!O
FETCH NEXI WURD TU AC */
LMl(P) Hi

RR~I:

JZHIMML,IMMS);

O~

SHORT

CPU Design
IlECOtlD
NU~tlt:R

OBIH:

12b

ACI-l( AC)

JRLIILGA,ILPX,~AII,NAI2);

U7
12i!

129
13,)
131
132

"

SHURf fORM: NO PROCESSING NEEDEU "
Otl3ti:

"

IMMS:

Pk~PRJCESSING

JRLIILGA,ILPX,~All,NAI2);

fUR ARITHMETIC

A~U

LOGIC ROuTINES?

NONE NEEDED "

133

Ol:H:
Ot:DH:

134
Ij~

136
137

"

NO.UP
NO.OP

~OTE:
NAIl AND NAil ARE
~AD£ l~rU ~U-UPS IN lHIS

13b

139
140
141
142
143
144

ILGA:
ILPX:

OHH:

OEfH:

NAll :
NAI2:

JLLINDA,DUA,XDA,ADA);
JLLILDA,LDX,PDS,ADX);
NUN-VALID INSTRUCTIOhSll THt:1 ARE
VERSIUN Of fHE MACHO-MACHINE "

NO.OP
NO.UP

JZRlfETCH);
JZRlfETCH);

BASIC ARITHMETIC AND LOGIC PROCt:SSING--UPUATE C ff
MACHINE fOR ADA--TOGGLE IT ON CARRY fROM ADA '1

"

O~

MACRU-

1 .. ~

OD/H:
Of7H:
OC2H:
OC3H:

146

147
14~

1411

ADA:
AUAl:
NCY:
scr:

AURIA);
NU.OP
NO.UP
LMIIW) K8000

JfL INcr, scn;
JZRlfETCH);
JZRlfETCH);

I~O

151
152
153
154
155
156
157
158
159
160

161
162
163

164

"

LOGICALS "
OD4H:
OU5H:
OD6H:
ODIH:

NDA:
ODA:
XDA:

ANH(A)
ORRIA)
CMR(AC l:
XNR(A)

JZRlfETCH):
JZH(fETCH);
JZR(fETCH) I

LDA AND LOX OPERATIONS '1

"

OE4H:
OE5HI

LDA:
LDX:

SDR(A)
SDR(X)

J:l.R(FETCH) ,
J:l.R(FETCHl/

/. STACK PUSH--ADVANCE STACK POINTER TO NEXT LOCATION (fOR THE
REVERSE DIRECTION STACK--A DECREMENT Of S), THEN WRITE '1

165

OE6H:
OfbH:

166
167
168

169
170
171
172
173
114
175
176
177
178

179

PDS:
PDSI:

DSM(S);
LMHS) RWM

JZR(fETCH);

I' ADX - SHARES CODE fOR ADA - ALSU TOGGLES C ff Of MACRO MACHINE '1
OE7H:
"

AUX:

JMP(ADAl);

ADHIX)

MEMONI REFERENCE INSTRUCTION GRUUPS
DIRECT--GET 8tD INTO AC--ALSO R9 '1
0&4H:

DMRf:

054H:

ILRIS);
ALRIR9)

JRLIMRVl,MRV2,MRAU,STPG);

/. INDIRECT-ABSOLUIE--GET (8+D) INfO AC--C fLAG USED fOR PSEUDO-SUBROUTINE ./

180

l~i
182
181
184

O·~5H:

055H:
UOAH:
ObBH:

IMRf:
IMRr1:
MLOAD:

ILR(B);
ALH(R9);
LMIIR9) RRM
ACM(AC)

JCf"( MADD, MLOAD);
JRL(MRVl,MRV2,MRAD,SIPG);

18~

180
1~7

If

~OIE:
kADD WILL bE USED fUR orHER IhDIPECT
S, X, ETC. HAS BEEN LOADED TU RB '1

OPERATION~

WHERE

188
1~9

I!lO

ObAH:
009H:

MADU:

ACiHAC);
ALI« 1'\8)

JRL(MRVl,MRV~,MRAD,STPG);

1~1

\1/2

If INDIRECT INDEXlD

Atl~OLUT~

- CLEAR C fLAG, MUVE X TO H8 '1

l~j

194

oa6H:

195

04bH:

lXMA:

ILR(X) ~TC;
SDR(RS);

196

3-67

CPU Design
RECORD
NUMBER
197
198
19':1

200
lOI
202
203
204
205
:l06
207
2011
209
210
211
212

j* NOriNG r~AT ASSIGNMENT RULES WOULD NOT ALLOW ThE DESIRED

JUMP ro IMRF UNLESS IIMA+l WERE IN
IS ADDED HERE */
U5bH:

UMA2 :

ILR(B)

RO~

ZERO--AN EXTRA STATE
JMP (lHRf'1);

/* INDIRECT INDEXED RELATIVE - CLEAR C FLAG, PUT B+X IN R8 */

01l7H:
057H:
047H:
045H:
/*

IXHB:

lLR(X) STC;
SDR(R8);
ILR(BJ;
ADIHR8)

JMP1'1:
/~

245
246
247
248

249
250
251
252
253
lS4
255
256
257
258
259
260
2,,1
264/
263
264
265
266
267

LMllAC) RRM;
ACM(AC)

JLL(LDA,LDX,PDS,ADX)/

MRAD GROUP INCLUDES ADDRESS LOAOS AND SUijTRACT FROM A */

OIEH:

MRAU:

NO.OI'

JLL(LAA,LAX,PAS,ISDA);

064H:
065H:
066H:

LAA:
LAX:
PAS:

SDI
2"'6
2'J7
29ij
2':1':1
300

301
30l

OHH:
OOIH:

JAGT:

072n:

IIPkE:

07Jti:

AI~PE:

038H:
U07H:

JALE:

04211:
043tl:

Ak'E2:
AN2:

303
304
305
30b

307
308
309
310
311
H.o!
311
314
315
316
317

1* TESTS OF C fLIP-fLOP (HIGH ORDER BIT or W) *1

UJbH:
03AH:

JCEZ:
JCNZ:

TZR(w) K800u INH
TZR(W) Keooo INH

JMP(TTRU);
JMP(TFAL);

1* TESI EXECUTION fUR ABuVE TESTS - ROW ZERO USED *1

005H:

'HRU:

NO.OP

JFL(JTRI,JNTl)1

002H:
003H:

JIRl:
JNTl:

SIlR(P)
NO.OP

JZRIFETCH);
JZR(FETCH);

319

004H:

TfAL:

320
321
322

NO.UP

JFL(JNT2,JTR2)I

OblH:
063H:

JNT2:
JTR2:

NO.OP
SDR(P)

JZRCfETCH)I
JZR(FETCH)I

31ij

323

324
325
326
321
32ij
329
330
331
332
333
334
335
He>
3J7
338

/* TESTS fOR X.GT.A, X.LE.A, X.EO.A, X.NE.A--SHARED PSEUDOSUBROUTINE USES JLL ~OR AN EXIT TEST--kOUTINE ENTRY IN ROW 0

C

FLA~

033H:
037H:
03BH:
03FH:

IS SET FOR X.GT.A, FL TEST FOR X.EQ.A *1
JXGA:
JXLA:
JXEA:
JXNA:

ILRCX)
ILR(X)
ILR(X)
ILR(X)

JMP(XATS);
JMP(XATS);
JMP(XATS);
JMP(XATS);

/* SAVE X AT r, fETCH ANIl cmlPLEMENT A *1

OOBH
04BH
05bH

XATS:

SOR(T) ;
lLRCA) STC;
CMA(AC);

1* CLEAR C FLAG *1

3-69

CPU Design
RECORD
NUfoIBER
33~

1* ADD Hoa'S Of A' AND X - CARRY

~EANS

1 NEG •• A.GE.O *1

340

341
342
343
344

AOR(,£) K80UO;

u~AH:

1* EXEcurE PREVIOUS TEsr, SET UP TO TEST HOB OF RESULT--IF 1.
THE SIGNS OF A AND X ~ERE THE SAME *1

345
HI>
34/
348
34':1

J50
J!>l
3::.:.1
J~J

051H:

TZR(T)

~8000

INH

JFL(TFEQ,TXNG) ;

1* rXNG IMPLIES x NEG AND A.GE.O--I.E. X.NE.A AND X.LT.A--DO A

DUMMY OPERATION TO FURCE THE PkUPER
053H:

lLRCA)

F

fLAG .,
JLLCJXGX,JXLX,JXEX,JXNX);

1* PERfORM A TEST ADDITION AND EXECUTE SIGN-EQUAL TEST

C

354

~ILL

BE SEf IF SIGNS WERE THE SAME AND X.GT.A .,

3::'~

356
J~

052H:

rFEQ:

I. SNEQ

IM~L1ES

012H:
010H:

SNEQ:

ADR(T) STC K7FfF

JFL (SNEQ, SWEQ) ;

I

35i!
J59
360
361
J02
3td
J64

365
Jb6
367
368
369
370
311
372
373
374
375

376
317
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393

394
395
390
397
398

SIGNS NOT EQUAL--I.E. X.GE.O, A NEG--X.GT.A *1
SDR(AC) STC;
NU.UP

I.

DUMMY UP TO SET C fLAG .,
JLLCJXGX,JXLX,JXEX,JXNX);

1* FOR SIGNS EQUAL, IF X=A RESULT wOULD SE 1111 ••• 1.
wILL GENERATE A CARRY IF SO *1

OllH:

Sf/EQ:

JLLeJXGX,JXLX.JXEX,JXNX);

ILkCAC) "1

1* EXECUTION OF JUMP TESTS .,

024H:
U2::'H:
02bH:
027H:

JXGX:
JXLX:
JXEX:
JXNX:

lLR(R9)
lLR(R9)
ILR(R9)
ILR(R9)

JCf(JNT2,JTR2) ;
JCf(JTR1,JNTl) ;
Jf'L(JNT2,JTR2);
Jf'L(JTR1,JNT1);

1* SUBROUTINE CALLS

CALL LOCAL AND PUSH W, S, E, P =CPSS
CALL LOCAL AND PUSH P ONLY-CLOP
C FLAG IS USED FOR EXlT TEST AFTER PUSHING P
03CH:
05CH:
OSDH:

CPSS:

DSM(S);
ILR(W);
LMI(S) RWM;

OADH:
OAAH:
07AH:

CPG2:

DSM(S);
ILR(S);
LMICS) RWM;
DSM(S);

07BH:
OEBH:
OFSH:

LMlCS) RwM;

OF2H:
0l>2H:
OODH:

DSM(S);
ILH(P);
LMI(S) RWM;

I.

"~I

!LROd;

CLOP2:

t:tCE+D) l",ro AC

.,

ILR(R9)

OIlDH:

JCFCLRTN,XRTN);

399

400
401
402
403
4114
40':)
4U6

407
40b
409

INCREMENT

OSSH:
OBEH:
OS9H:

XRTI~

UBAH:

LRTN:

SDR(P)

JZR(HTCH) ;

CLOP:

DSM(S) ;
lLR(P) STC

JMPCCLOP2);

031:.H:
OoEH:

:

SORCE);
LMl(E) RRM;
AMA(AC) ;

1* PUSri INSTRuCTION

.,

3-70

CPU Design
RECORD
NUMBER
410

030H:
04DH:
040H:

Ul
41~

413

PXA:

OSM(S):
IL~(X):

LMI(S) 1'.\1114:

414
415
411>

O~·OH:

OSM(S):
ILIHA);

417

OFIH:

L~ll(S)

070H:

RWM

JZR(FETCH);

4111

419
420
421
422
42.3
4:l4
425

421>

1* MUVE GROUP OF

INSTI'.UCTIO~S--USES JCE TO SELECT REGISTER--NOTE
THAT REGISTER ASSIGNMENT BECOMES IMPORTANT
FIRST MUOIF¥ 0 to GET D-128 *1

08CH:

OC4H:
OCOH:
OCIH:
OEIH:

428
429

U8

MVXR:
MXRX:

1* MOVE Rt:G TO

OCSH:
01'"5H:

435
436

437

LMI(R9) KFF80

JLL(MVXR,MVRX,MOO,PGRP):

1* MOVE X TO REG. - GET X, MODIfY BY 0'=0-128 "

421

430
431
432
433
U4

MVGP:

"

439

MVRX:
MRXX:

ILR(X);
ALR(R9):
SOR(R7)
NO.OP

x-

JCE(MXRX);
JZR(FETCH) ,

"

REGISTER OVERRIDE *1

FETCH REG USING JCE OVERRIDE *1

ILR(R7)
ALR(R9)

JCE(MRXX);
JMP(LOX) :

MOO NOT IMPLEMENTED IN THIS VERSION *1
OCbH:

MUD:

JZR(FETCH):

NO.OP

440
441
44J

443

444
44!)
441>

"

ADJUST STACK AND RETURN GROUP
A, X, P, E, B, AND W
PPHA--POPS P, E, B, AND w
PPAX--POPS UNLr A AND X
POPP--POPS ONLr P "

PPAL--~OPS

447
448
449

OC7H:
OC8H:

PGRP:

lLR(R9);
ADIHS)

450
451
452

OOCH:
003H:
OOSH:

PPAL:

LMl(S) FFl RRM;
ACM(AC):
SORIA):

453
454

Olo:llH:

4!)5

451>

OE9H:
OOBH:

PAXC:

JRL(PPAL,PPRA,PPAX,POPP);

LMI(S) n·1 RRM;
ACM(AC)
SDR(X);

JCF(PAXE,PAXC) :

4!)7

45S
459
460
41>1

ODOH:
02UH:
02~·H:

LtU(S) HI· RRM;
ACM(AC):
SDR(P):

4b2

04FH:
OOEH:
011::11:

LMI(S) FF1 kRM;
ACIH AC );
SORCE):

09EI1:
OFEH:

LMHS) Fn RRM:
ACM(AC):
SOIHB) ;

463
404
46~

,*b6

46"/
468
41>9
470

471
4U

O~jH:

01::311:
OEAH:
O~AH:

LMI(S) FFI RRM;
ACM(AC) :
SOlleW);

4·/j

474
475
476

471

1* RESTORE

INTE.R~UI'T

STRUCTURE

*'

02t!H:
029H:

CLR(T);
LMI(T) HOT

JZR(FETCH) ;

ODAIH

50Rl1.)

J'Z.R l rE'tC~) ;

478

419
480

3-71

CPU Design
RECORD
NUMBER
PPAX:
JMP(PPALl:
OOEH:
ILIHAC) STC
482
ODFH:
POP!':
LMHS) FFl RRM;
483
JMP(JUNC);
OOOH:
ACM(AC)
484
485
48b I ' SPECIAL FUNCTION GROUP
481
BYTE OPERATORS--AODR=(B+0)+S+X/2 OR (B+D)+X/2
488
CALL TO (D) AND PUSH ALL
4119.
SHIFT AND ROTATE GRUUP
490
INCREMENT AND SKIP
491
FETCH B JUST IN CASE *1
492
493
ILR(B)
SPFG:
JRL(BYTE,RSGP,SCJG,ISJG);
494
49~
1* BYTE GROU!'--COMpUtE AOOR, STORE B IN CASE NEEDED *1
49i1
SOR(k8);
491
OCCH:
tinE:
AOR(R9);
498
OBCri:
499
OACH:
ILR(X);
500
OABri:
SRA(AC) STC;
501
OAEH:
LtoIHR9) RRM;
)02
AMA(AC)
02EH:
JLL(LBYA,LBYR,SB~A,SBYR);
503
ALR(R8);
1.115ri:
LBYk:
504
LMI(AC) RRM
014H:
LIHA:
505
JCrtLBYT,RBYT);
50E>
LDI(AC) FFI KOOFF
JMp (lJllIA);
022H:
LilYT:
SCI')
02JH:
KbYT:
LT'UAC) KOOFF;
5011
SOH(A)
020H:
DBIA:
JZH(Ft::TCH);
509
510
017H:
ALI«k8) ;
SbYR:
01bH:
511
SlltA:
LMUAC) ;
1* LOAD MAR FUR LATER US~ *1
ILldA) ;
512
01t1H:
019H:
T~R(AC) KOOFF RRM
S13
JCnSTLB,STRB);
)14
STRb:
01bH:
LTM('r) "'FrOO;
010H:
515
JZR(FETCH) ;
ALRlT) RwM
SRBI:
51&
517
OlAH:
Sl'LS:
L'fMlT) KOOfF;
JMp(SRBI);
518
OleH:
LOHAC) Ffl CNS
519
/f
ROfArE
GROUP
~lO
521
RUTArE A WITH C--ROIATE A AND I WITH C--SHIfT A, X RIGHT, FILL
5U
~ITH SIGN--SHIFT A LEFT, FILL WITH ZEROES
52J
524
AT ENTRY, Z FLAG is ZERO IF 0=0. DUE TO piPELINt::O OPERATION, IT IS
)l5
CHIS CUNOITION THAT IS TESTED bY THE fIRST JZF *1
5lE>
HSGp:
527
OCDH:
TZR(W) STZ K8000 INH
JZHSZOS, SNZD);
09AH:
528
ILRlX):
SZDS:
52~
SDR(R9) FFO K007f
099H:
JLL(RACI,RAXI,SAII,SLZI);
5JO
SIIIZD:
DSM(R9)
09BH:
JLL(RACI,RAXI,SAII,SLZI)7
481

531

532
533

534

535
53E>
537
538
539
540
541
542
543
544
54::;
54&
547
548
54\1

094H:
095H:
098H:
09bH:
097H:

RACI:
RAil:
SAXI:
SLZI:

ILR(A)
ILR(I);
SDiHT)
TZR(A) STZ K8000 INH
ILR(A)

JMP(RUNR);
JMp(RACI);
JMP (RAXI J:
JMP(RUNR);

1* MAIN ROTATION LOOP ' I

093H:

RUNR:

OSM(R9) STC

JLL(RACR,RAXR,SAXR,SLZR),

OA4H:
OA5H:
OAOH:
OA&H:
OA1H:
OA7ri:

RACR:
RAXR:

JFL(RSEI,RUNR);

SLZR:

SRA(AC) FfZ STZ
SRA(AC) FFZ STZ;
SRA(T) FFZ lOTZ
SRA(AC) FFZ STC;
SRA(T) FFC
AOR(AC) STZ

O\l2H:

RSI::X:

lOLJR(A)

JLL(RACf,HAXF,SAXf,SLZf);

OB4H:

RACF:

TZR(w) K7FFF

JZH SNCF, SSCF);

SAXR:

JCf'( RSEX, RUNR) 7
JC~' (RSEI, RliNIO ;
JFL(RSEX,RUNR);

550

551

3-72

CPU Design
RECORD
NUMBER
OA2H
uAJH
085H
OSOH
08bH
vS"/H

55~

553
554
5~5

55b
557
55d

559
5&0
5&1

"

~b4
SO~

50&

SLZ~

NO.Up
LMl(W) K~OOO
ILRtl);
SDIHX)
ILRtT)
TZIHw) K7fH

JZIHFETCH) ;
JZRtFETCH);
JMp(RACF);
JMp t RXF 1);
JZF (SNCF , SSCf') ;

SPECIAL CALL AND JUMP GRO~p--CURRENTLY CUNTAINS ONL~ tHE
CALL TO to) A~D PUSH ~,B,E,p--ALL 4 UpCOD~S DO THE SAMg THING "
OCgll:
04EH:
04Cti:

5&~

Soj

SNCF
SSCF
RAXf
RXF1
SAXf

SCJii:

LMl(R9) RRM;
ACrHAC);
SOR(M!f)

JI'!P(CPSS);

INCR~MENT AND SKIP GROUp--AGAIN " OpCUDES ARE DSED FOR ONE
INS1RUCTION--LOCATIUN AT b+D IS l~CREMENTED "

"

~67

!)6a

569

OCFH:
OC9H:
ODIIH:
OA9H:
OCIIH:
OC8H:

570

571
572
5"/3
574

ISJG:

NUSK:
SKU':

ALRtR9);
LMI(R9) RMW;
ACM(AC) Ffl;
NU.Up R.. M
IW.OP
LMItp) ffl

Jf'L (NOSII, 51111');
JZIH fETCH);
JZRtFEl'CH) ;

57~

57&

"

INpur AND OuTPUT--CURRENT VERSION DOES NOT DECODE INTO
SUBGROUpS--ALSO ROW ZgRO IS USED TU SAVE CUDE "

577
51d

579

08~H:

580

008H:
028H:
089H:
OIlAH:
006H:
088H:

581
58~

583

584
585

INO:
IND1:
INX:
OtD:
OTD1:
OTX:

LMltR9) RIN;
AC"! tAC J;
SDRtA)
LMItX) IUN
LMltR9);
ILlltA) ROT
LMIlX)

JZRtHTCH);
JMp t IND1);
JZRtFETCH) ;
JMp(OTD1);

580
~87

"

INTERRUpT--UTILIZES CALL ROUTINES FOR REGISTER SAVING

588

110 DEVICE 10 REPRESENTS EXTERNAL INTERRUPT STRUCTURE

START 8Y PUSHING OLD VALUE OF STATUS "

589

590
591

592
593

OFFH:
OBFH:
05FH:

INTER:

DSM(S);
ILR(Wl;
LMItS) RioIM;

594
595

"

READ INTERRUPTING LEVEL FROM EXTERNAL STRUCTURE "

59&
058H:
059H:
0&9H:

597
598

599
600
601

CLR(T);
L!H(Tl R1N;
LTM(AC) KOOFF ROT; "

NOTE LEVEL REWRIrTEN "

STORE PRIORITY IN W - SET C FLAG FOR PROPER LOADING OF REGISTERS "

"

602
O&CH:

603

604
&05
60b
ou7
60d
609

SDR(W) STCI

INTERRUPT RUUfINE STARTING ADDRESS IS COMPUTED IN R9 "

"

U6DH:
OoFH:
OA~'H:

[.~i l ( w) RRM;
ACIHAC);
SDRtIl9)

JMPtCpG2);

610
b11

612

EOF

NO PROGRAM EMRORS
END Uf PROGRAM

3·73

o"'D

c:

Mle~OP~O~~A~

OH

~E~ORY

IMA~E

JCC
0090H

C

2H

IH

1H

JfL'
JZR
0072H • OOOFH

OOOri
b7

o

- - -JLL- 0024H

I

JZN'
JFL
UOOFH • 0062H

OOP2H

319

314

317
4 •

7H

6H

JfL

584

8H

9H

JFL
0042H

JCC
0028H

302

580

AH

8H

• 18.1 • 335 * 92
4
1
1 *
.-------.-------.
- JCR
JCF'
JCR'
JCR'

3

2

1

2

JCR
0018H

JC~

JC~

0016H

0019H

504

511
2

510

512

513 *

517 •

1

1

1 •

1 •

74

I

I

OOOtH

JCC
0011H

5UiI

7J

~

I

*
*

JoO
I

*

36b

505
2

1

.-------f------·.
- JCf
*
JCII'
JCR *
UO.OH' 0020H
SOb

*

1 •

*

507

1

001AH * 001CH

•

JCt'
0002f!

J.L
OU02H

370

371

J72

3

J

373
. 3

OOOAH

0055H

0047H

0059"

182

201

206

597

598'

2

2

1

1

l'

OOOfH

JZII
OOOFH

JCC
OOn.H

JCR
006aH

1

JZR
OOOFH

JfL

514 •
1

*

JZt<'*-------f-----~-*
JCR *
JeR

0062H

000.2H

OOIOH

OH

EH

FH

JCC
OOBOH

JCC
001EH

JCC
001FH

394

463

2

1

100
38

001UH

JZR
OOOFH

Jce
OU9lH

JCC
009t'H

51a

515

4b4

104

1

2

I

I

JCR
002.H

JLL
0014H

Jee
004t'H

190 •
1 •

JCII
0014H

t-------.-------.

eH

JRL'
JCF'
JCC'
JCC
007CH * OOoAH • 004BH • OOFCH

3

301
J~H

OU2"

SH

JCC'
JC~'
JLL'
JCF
0041H * uOIOH * u024H * 0022H

001H

-----

•

31b •
4 •

2~b

4H

-

OOOFH • 002BH • 0029H

581

•
477'

•
472'

476'

459

502

460

I

l'

1*

I'

I

1

1

- JZ~
*t-------f-------.
JZR
J~R *
JZR
JZR
JZ~
JZII
Jec
JCC
JZR
JZII'*-------*-------.
JZR *
Jec'
JCC
* 0004H OOOdH' U005H 0004H 0005H OOOI:lH 1i007H OOOIH • 0004H * OOOSH * 005CH 0040H OObEH OOUIlH
OOjH
• 310 • 330 380 411
J28 •
20b
J09
329
]01
406
295
293
29l
331
190 *
HI *
l •
2 •
3
2
2
2
2
2
2
2
3
2
2
2
l *
2 *
-------------------.-------.------------------------------------:---------------,------.,-------,-------------------------------JZH
JZR
JCC
JZH *
JCC
Jee
Jec
JCII
JeM
JCR
JCR *
JCR *
JCC'
JeC
JCt< *
JfL *
0070h
OOOfH • 00F4H
0056H
U04SH
004SH • 0049H • 005ijH • 003CH
0040H
OOOEK
Ou85H
OOOCH
004CH
004411 * 0002H
U04H
• 564
* J04' JOS *
86 •
85 •
33b •
5&3
195
207
87
402
412
413
2U8
75 *
79
I •
1 •
1 •
1 •
1 •
1
1
I
1
1
I
I
1
1
I
1 *
.-------.-------.
.-------.-------.
JeR
JZR
JCII
JCR
JCC
Jell
Jet:
JLL'
JRL
JCC
JCC *
JCR'
JCR'
JCR
Jt'l. *
JfL
JZk
OuUt"h

JZ~
OOO~H

..

0060H
280

1

340
1 •

J5b
1

*

*

]SI
1

*

177
1

.-------f-------.
- JZR
JZM
JZR'

JPR
0030H

0030H

281

271

2Jo

237

2]8

1

1

1

I

1

JZM *
JZR
OilOFH
OOOFH

JZR
OOOFt!

JCR
0078H

J~R'

OUbH

Jce
OOFOH

*

415
1.

OOOFH

Jec'
Jt"L
0061H • 0062H

007H
•

0024H * 007CH

OOSlH * OOllH

2/1 *
l'

OOOFH

29~'

2~9'

1*

1*

250
1.

251
1.

255
1.

=

JCC
OOfSH

OOAOK

0056H

0058K

381
1

382

217

1

1

593
1

JCR *
JZR *
JRL *
JCR
006CH • 0009H * 007CH
0060H

JCII
006FH

JZR
OOOOH

JCC
OOArH
608
1

00&9" • 0051H • 005"H • 0050H

•

243

599 •

1

1

1 •

JCR ..
Jce
0079H
OOASH
262
1

25b
1.

•

337'
1*

.-------*-------. -

242

- - ,.

•

341'
1*

189 •
1

*

184 •

603

607

407

1 •

1

1

1

JCC
0090H

JLL
0064H

229
3

234
3

.-------.-------.
JCC'
JCR *
Jec'
JCC.
00F9H • 0078H • 00E8H • 00geH
•
•
26.1 ** ·3S6 *
388'
224
l'

1*

l'

J

JLL •
0074H
248
J

================&=&*=======*=======*===8=========================================a= •• =====3.==== •••• ===================.::=_==_ •••••

m
ca·
~

MICROPROGRAM MEMORl IMAGE
2H

OH

IH

JZR
OOOFH

JCC
007111

008H

*

*

4H

3H

JCC.
00E2H

JZr.

* UU~2H *
*

•

I

270
1

277 •
121
I •• _____1 . f• • _______

176
1

JCR
0091H

JCC

*
*

JCII

0021H

II~

*

JLL'
JLL
00B4H • OUA4H

009H
-

*

OO~311

7H

6H

~H

JCC
0054H

91t

Sit

Jce
005511

Jce
0046H

JCC
0057H

Jee
0008H

181
2

194

205

579

I

I

I

JCR.
JeR
0098H •. 009~H

Jell
0093H

= JeR
= 0094H

S3b

534
1

All

OOOFH

423
1

493
I

212
1

116
I

JLL'
JCR.
JLL'
JLL
0094H • 0099H • 0094H • 0004H

JLL
00E4H

Jee
OOFEH

JPX
OO&OH

230
1

too

I

1

110
1

JfL'
JCC *
JCR *
JCR
OOCAH • 007AH * OOAE" • OOASH

JeR
OOAAH

Jec
OU2EH

JCII
OVAOH

1

384
2

501
I

609
1

JCII'
JZR *
JCR *
JCC
OOBAH * OOOfH
OOSEH. OOA:H

JCF
OOBAH

JCII
0089H

Jee
005fH

*

•

582 •
I

69'

~49

540'

~32

~H

1*

4

6'

J

3

535
2

JeR
OUAOH

JCR
OOA1H

0092H

544
1

JCF.
JZR'
JZII
JFL
0092H' OOOFH • OOOFH
0092H
•
540'
552'
553
542
l 'f _______
2 •' _______
, t
1

~43

545

~47

'1

I

1

257
1

JCP
00B4H

JRL'
JCN'
JilL'
JZ.
OOECn
00B1h' OOECH • OOA,1t

JCR
0080H

JeR
OOIlOH

JZF
OOA4i1l

JZH
OOOFH

~51

~54

5~0

~~7

2

1

1

1

258
I

40,
1

OOElh' OUOfH
OOOfH
OOCOII
•
429 •
148 •
149 •
427
I •f _______
1 •f _______
1 ••
1

OOfSH

dOOFH

OOCBH

OODeH

0009H

1

439
1

447
1

448
1

*

JZR
OOOFH

JCN
OOOIH

Jce
oonH

JCC
00E8H

153
2

1~4

1~5

2

146
2

4~2

2

JCII
JZR
OOEAH. OOOfH

JZR
OOOfH

Jec
OOfoH

161
3

166

171

454

~

2

2

I

Jee *
JCR
00E3H
OOFAH

Jce
00E5H

JZR
OOOFH

435
I

167
2

-

-

JCF
0092H
OOAII

. - - - - - __ f _______ •

2

JFL

Jce
001l8H

FH

Jce
005EH

1

-

EH

JRL
ooeCH

68
-

DH

CH

Bit

JZR'
JZR'
JZR'
JLL
0008H
0006H • OOOoH
00e4h

529
1

512

585 •

583

1 *
• _______
I •
•
.-______
t

528

-

530
I

I

22~

.-------*-------* -

•
*

1 •

*

385 •
I

•

500
1

*
*

499

t-------*-------* -

JZ~

008H
55~

2

120
I

12~'

l'

130
I

404.
3'

400.
2'

498
I

39S
1

401
1.

592
1.

OObCH

009AH

004EH

00e911

497

502

509

I

527
1

I

I

JCII
OOODH • OODlH

Jce
0020H

JC~

OODCH

JCR
OUI)OH

450
2

458

481

2

I

483
1

JLL
00E4H

JZR
OOOFH

JZII
OOOFH

135

140
2

141
2

JeR
00F3H

Jec
OOSFH

-------------------.-------.-------.-------------------------------:---------------.-----.. -------.-------------------------------JCII
JZR
JZII'
JeR
JCE
JZR
JCR
JilL
Jce *
JZR'
JZII
Jec
JZf
Jee
Jell
JC~'

OOClh

ooer!

Jec
0030H

-

-

484
I
- - JCC

vO~UII

*

15&
393'
4~1
1 .t _______
l '* _______
1*•
JZII'
JCR
OOOFH' OOEOH

OOEH
279
I

JCR
OOFlH

*

JZR'
JZR
JCII
JZR
OOOfH • OOODH • UODSH • OOOfH

OOOIt

HO •
I

*

278

_

*

•*
*

470
1

*-------f------_.* I

JZK *
Jce
OOOfH • 0002H

*

160

434

I

Jce '"
JCR
oonH '" 00E9H

JFL"
Jell
00C2H .. oonH

570
1

*

*
*
•

•

417'
1*

392'
1*

4bB.
1*

80
I.

147..
4=

244
1

•

*

573
1

574
1 •

*-------t-------*
JCC'
JZR *
JC~ *

00A9H • OOOF"

*

•

479 •

4~0

1 •

1 •

1

~71

•
*

*

.-------*-------.
- JLL
*

Jef *
JCC
JCC
OODAH * 002AH • OOfSH
45~

•

471 •
1 •

00D4H

3B9

1 *
.------_t _______
* -

1 •

134
2

- __ -2 -

JeR *
Jee.
JCR *
JCF
00F7H
004AH * OUf2H • OOSAH

OOfH
416
I

OOOfH • OOOfH

264 •
1*

*

81
I.

•

390.
1*

93
I.

•

467
1.

591
O.

aa.==a=a=====a=====*=======*= •• =K==*===============================a===========aa=.*.======*======.*:z:====.=.====.aa.aa=•••• =_:::::

o"V
c:
C

m

cO
::s

CPU Design
APPENDIX C

§ll'
=il

CENTRAL PROCESSOR SCHEMJ\TICS

~.r= ~

~

r-

::B 1=

~

.~

C2?

,~~

~

~

,r~~~ ~~e.: J:il

l[

I

i=-

Eb..L1.

§

I

lliJ=~

,)ll
~I[ 1-1
Imfilll ~IIII
-

~=!

~

N1d
I~~ "Ul ~
..........
In~l~

- llY}

I-t

~

J

~

e-+~I

~

~

:::

.
.~:~"

e- ~

~$.l

.
Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.6
Linearized                      : No
Create Date                     : 2016:08:25 21:32:27-08:00
Modify Date                     : 2016:08:25 21:39:04-07:00
XMP Toolkit                     : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19
Metadata Date                   : 2016:08:25 21:39:04-07:00
Producer                        : Adobe Acrobat 9.0 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:bd3cf327-7bbf-954e-bf45-0f3b9ffe13ca
Instance ID                     : uuid:485c2d25-a59a-9e4c-86a3-d7df162c6914
Page Layout                     : SinglePage
Page Mode                       : UseOutlines
Page Count                      : 151
EXIF Metadata provided by EXIF.tools

Navigation menu