i8008UM Nov 73 PDF
i8008UM Nov 73 PDF
i8008UM Nov 73 PDF
NOVEMBER 1973
8008 REV. 4
Second Printing
8 Bit Parallel
Central Processor Unit
USERS MANUAL
intel®
delivers.
8008
8 Bit Parallel· Central Processor Unit
The 8008 is a complete computer system central' processor unit which may be interfaced with memories
having capacities up to 16K bytes. The processor communicates over an 8-bit data and address bus and
uses two leads for internal control and four leads for external control. The CPU contains an 8-bit
parallel arithmetic unit, a dynamic RAM (seven 8-bit data registers and an 8x14 stack), and complete
instruction decoding and control logic.
Features
DO
01 ACCUMULATOR,DATA
ALU REGISTERS, PROG.
O2 Voo 18 INTERRUPT
COUNTER STACK
03 ~0.....2 17 READY
04
06 16 9,
05
06 05 92
07 04 SYNC
DATA
BUS 03 13
INT
O2 12
TIMING
0, 11
ROY
0 0 0..... 9 10 Vee
So S, S2 9, ¢2 SYNC
intellee
ANEW, EASY AND INEXPENSIVE WAY
mDmlOP MICROCOMPUTER SYSTEMS
From Intel, the people who invented the microcom- pandable to 16K bytes. At the h~art of this system is
puter, comes a new, inexpensive and easy way to the Intel 8008 CPU chip which has a repertoire of 48
develop OEM microcomputer systems. The wide- instructions, seven working registers, an eight level
spread usage of low-cost microcomputers is made address stack, interrupt capability and direct address
possible by Inters MCS-4 four bit; and MCS-8 eight capability to 16K bytes of memory.
bit, microcomputer sets. To make it easier to use The Intellec 4 is a four-bit modular microcomputer
these microcomputer sets, Intel now offers complete development system with 5K bytes of program
4-bit and 8-bit modular microcomputer development memory. At the heart of this system is the Intel 4004
systems called Intellec 4 and Intellec 8. The Intellec CPU chip with a repertoire of 45 instructions, sixteen
modular microcomputers are self-contained expand- working registers, a four level address stack, and the
able systems complete with central processor. capability of directly addressing over 43K bits
memory, 1/0, crystal clock, TTY interface, power of memory.
supplies, standard software, and a control and display
console. Standard Microcomputer Modules. The individual
modules used to develop the 4-bit and 8-bit micro-
The Intellec microcomputer development systems computer systems are also available as off-the-shelf
feature: microcomputer building blocks. These include 4-bit
• 4-bit and 8-bit parallel processor systems and 8-bit CPU modules, 1/0 Modules, PROM
• Program development using RAMS for easier Programmer Modules, Data Storage Modules,
loading and modification Control Modules, a Universal OEM Module and other
• Standard DMA channel standard modules for expanding the Intellec systems
• Standard software package or developing pre-production systems.
• Crystal controlled clocks
• Expandable memory and I/O With these modules you can tailor the components
• Control panel for system monitoring and program to your specific microcomputer needs, buying as little
debugging or as much as you need to do the job.
• PROM programming capability Write for complete details on the Intellec modular
• Less time and cost for microcomputer systems microcomputer development systems. They will be
development available in 120 days, but plan now. Intel Corporation,
The Intellec 8 is an eight-bit modular microcomputer 3065 Bowers Avenue, Santa Clara, California 95051
development system with 5K bytes of memory, ex- (408) 246-7501.
intel®
deJivers.
Ad Reprint, June 1973 See Appendix VI
CONTENTS
Page No.
I. Introduction . . . . . . . . . . . . . . . . . . -. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
II. Processor Timing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
A. State Control Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
8. Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
C. Cycle Control Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
III. Basic Functional Blocks 7
A. Instruction Register and Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
B. Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
C. Arithmetic/Logic Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
D. I/O Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
IV. Basic Instruction Set 8
A. Data and Instruction Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
B. Summary of Processor Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
C. Complete Functional Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . io
D. Internal Processor Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
V. Processor Control Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
A. Interrupt Signal . . . . . . _. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
B. Ready Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
VI. Electrical Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
A .. DC and Operating Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
B. AC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
C. Timing Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
D. Typical DC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
E. Typical AC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
VII. The SIMS-01 - An MCS-S Micro Computer . . . . . . . . . . . . . . . . . . . . . . . . . . 24
A. SI M8-0 1 Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
B. SIM8-01 Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
C. System Description . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
D. Normal Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
E. SIM8-01 Pin Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
VIII. MCS-8 PROM Programming System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
A. General System Description and Operating Instructions . . . . . . . . . . . . . . . . 33
B. MP7-03 PROM Programmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
C. Programming System Interconnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
IX. Micro Computer Program Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
A. MCS-8 Software Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
B. Development of a Microcomputer System . . . . . . . . . . . . . . . . . . . . . . . . . . 46
C. Execution of Programs from RAM on SI M8-01 Using
Memory Loader Control Programs ., .... '. . . . . . . . . . . . . . . . . . . . . . 47
X. MCBS-10 Microcomputer Interconnect and Control Module . . . . . . . . . . . . . . . . 49
XI. Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
I. SI M8 Hardware Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
II. MCS-8 Software Package - Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
A. Assembler Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8. Tymshare Users Guide for Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . 81
C. General Electric Users Guide for Assembly . . . . . . . . . . . . . . . . . . . . . . 81
D. Sample Program Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
III. MCS-8 Software Package - Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
A. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
B. Basic Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
C. INTERP/8 Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
D. I/O Formatting Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
E. Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
F. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
IV. Teletype Modifications for SIM8-01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
V. Programming Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
A. Sample Program to Search a String of Characters . . . . . . . . . . . . . . . . . . 98
B. Teletype and Tape Reader Control Program . . . . . . . . . . . . . . . . . . . . . . 99
C. Memory Chip Select Decodes and Output Test Program . . . . . . . . . . . . . 99
D. RAM Test Program . . . . . . . . . . . . . . . _. . . . . . . . . . . . . . . . . . . . . . . 99 -
E. Bootstrap Loader Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lOa
VI. Intellec 8, Bare Bones 8, and Microcomputer Modules . . . . . . . . . . . . . . . . 103
XII. Ordering Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
A. Sales Offices . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . 124
B. Distributors . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . 125
C. Ordering Information/Packaging Information . . . . . . . . . . . . . . . . . . . . . . . 126
NOTICE: The circuits contained herein are suggested applications only. Intel Corporation makes no warranties whatsoever with respect to the com-
pleteness, accuracy, patent or copyright status; or applicability of the circuits to a user's requirements. The user is cautioned to check these circuits
for applicability to his specific situation prior to use. The user is further cautioned that in the event a patent or copyright claim is made against him
as a result of the use of these circuits, Intel shalf have no liability to user with respect to any such claim.
8008 Photomicrograph With Pin Designations
2
I. INTRODUCTION
The 8008 is a single chip MOS 8-bit parallel central processor unit for the MCS-8 micro computer
system. A micro computer system is formed when the 8008 is interfaced with any type or speed
standard semiconductor memory up to 16K 8-bit words. Examples are INTEL's 1101, 1103, 2102 (RAMs),
1302, 1602A, 1702A (ROMs) 1404, 2405 (Shift Registers).
I
The processor communicates over an 8-bit data and address bus (Do through 0 7 ) and uses two input leads
(READY and I NTE R RUPT) and four output leads (So' S1' S2 and Sync) for control. Time multiplexing
of the data bus allows control information, 14 bit addresses, and data to be transmitted between the
CPU and external memory.
This CPU contains six 8-bit data registers, an 8-bit accumulator, two 8-bit temporary registers, four fla'g
bits, and an 8-bit parallel binary arithmetic unit which implements addition, subtraction, and logical
operations. A memory stack containing a 14-bit program counter and seven 14-bit words is used internally
to store program and subroutine addresses. The 14-bit address permits the direct addressing of 16K words
of memory (any mix of RAM, ROM or'S.R.).
The control portion of the chip contains logic to implement a variety of register transfer, arithmetic
control, and logical instructions. Most instructions are coded in ·one byte (8 bits); data immediate in-
structions use two bytes; jump instructions utilize three bytes. Operating with a 500kHz clock, the
8008 CPU executes non-memory referencing instructions in 20 microseconds. A selected device, the
8008-1, executes non-memory referencing instructions in 12.5 microseconds when operating from an
800kHz clock.
All inputs (including clocks) are TTL compatible and all outputs are low-power TTL compatible.
The instruction set of the 8008 consists of 48 instructions including data manipulation, binary arith-
metic,· and jump to subroutine.
The normal program flow of the 800B may be interrupted through the use of the "INTERRUPT"
control line. This allows the servicing of slow I/O peripheral devices while also executing the main
program.
The "READY" command line synchronizes the 8008 to the memory cycle allowing any type or speed
of semiconductor memory to be used.
ST ATE and SYNC outputs indicate the state of the processor at any ti me in the instruction cycle.
3
II. PROCESSOR TIMING
The 8008 is a complete central processing unit intended for use in any arithmetic, control, or decision-
making system. The internal organization is centered around an 8-bit internal data bus. All communication
within the processor and with external components occurs on this bus in the form of 8-bit bytes of
address, instruction or data. (Refer to the accompanying block diagram for the relationship of all of
the internal elements of the processor to each other and to the data bus.) For the MCS-8 a logic 111" is
defined as a high level and a logic "0" is defined as a low level.
~,
4>2
SYNC
So
S,
HIGHER
LOWER 6·BITS EXTERNAL INSTRUCTION HALT
CPU 8· BITS ADDRESS, MEMORY OR DATA INSTRUCTION EXECUTION OF
INTERRUPTED ADDRESS TWO BITS NOT READY FETCH, OR RECEIVED BY INSTRUCTION
OUT CONTROL (OPTIONAL) DATA OUT CPU
OUT 18·BITS)
4
The receipt of an INTE RRUPT is acknowledged by t~T11. When the proc~ssor has been interrupted,
this state replaces T1. A READY is acknowledged by T3. The STOPPED state acknowledges the receipt
, of a HALT instruction.
Many of the instructions for the 8008 are mUlti-cycle and do not require the two execution states, T4
and T5. As a result, these states are omitted when they are not needed and the 8008 operates asyn-
chronously with respect to the cycle length. The external state transition is shown below. Note that the
WAIT state and the STOPPED may be indefinite in length (each of these states will be 2n clock periods).
The use of READY and INTER RUPT with regard to these states will be explained later.
YES
D6 D7 CYCLE FUNCTION
5
INTERNAL DATA BUS
ACCUMULATOR
AND
SCRATCH PAD
MEMORY
STACK AND
PROGRAM COUNTER
--------...J
FLIP-FLOPS (Z,C,S,P)I-.... 8 WORDS It 14 BITS
. .- - - - -.... AND CONDITION
LOGIC
STATE TIMING
GENERATOR
STATUS
SIGNALS
READY INTERRUPT
B. Memory
Two separate dynamic memories are used in the 8008, the pushdown address stack and a scratch pad.
These internal memories are automatically refreshed by each WAIT, T3, and STOPPED state. In the worst
case the memories are completely refreshed every eighty clock periods.
1. Address Stack
The address stack contains eight 14-bit registers providing storage for eight lower and six higher
order address bits in each register. One register is used as the program counter (sto'ring the effective
address) and the other seven permit address storage for nesting of subroutines up to seven levels.
The stack automatically stores the content of the program counter upon the execution of a CALL
instruction and automatically restores the program counter upon the execution of a RETU RN. The
CALLs may be nested and the registers of the stack are used as last in/first out pushdown stack.
A three-bit address pointer is used to designate the present location of the program counter. When
the capacity of the stack is exceeded the address. pointer recycles and the content of the lowest
level register is destroyed. The program counter is incremented immediately after the lower order
address bits are sent out. The higher order address bits are sent out at T2 and then incremented
if a carry resulted from T1. The 14-bit program counter provides direct addressing of 16K bytes
of memory. Through the use of an I/O instruction for bank switching, memory may be indefinitely
expanded.
2. Scratch Pad Memory or I ndex Registers
The scratch pad contains the accumulator (A register) and six additional 8-bit registers (B, C, D,
E, H, L). All arithmetic operations use the accumulator as one of the operands. All registers are
independent and may be used for temporary storage. In the case of instructions which require
operations with a register in external memory, scratch pad registers H & L provide indirect ad-
dressing capability; register L contains the eight lower order bits of address and register H contains
the six higher order bits of address (in this case bit 6 and bit 7 are "don't cares").
register lib", are used to store the accumulator and operand for ALU operations. In addition, they are
used for temporary address and data storage during intra-processor transfers. Four control bits, carry
flip-flop (c) , zero flip-flop (z) , sign flip-flop (s) , and parity flip-flop (p) , are set as the result of each
arithmetic and logical operation. These bits provide conditional branching capability through CALL,
JUMP, or RETURN on condition instructions. In addition, the carry bit provides the ability to do mul-
tiple precision binary arithmetic.
D. I/O Buffer
This buffer is the only link between the processor and the rest of the system. Each of the eight buffers
is bi-directional and is under control of the instruction register and state timing. Each of the buffers is
low power TTL compatible on the output and TTL compatible on the input.
7
IV. BASIC INSTRUCTION SeT
The following section presents the basic instruction set of the 8008.
A. Data and Instruction Formats
Data in the 800B is stored in the form of 8-bit binary integers. All data transfers to the system data bus will be
in the same format.
I0 7 0 6 0 5 0 4 0 3 O2 0 1 DO I
DATA WORD
The program instructions may be one, two, or three bytes in length. Multiple byte instructions must be stored
. in successive words in program memory. The instruction formats then depend din the particular operation
executed.
One Byte Instructions TYPICAL INSTRUCTIONS
10 7 06 05 0 4 0 3 O2 0, DO I. OP CODE
10 7 0 6 05 0 4 0 3 O2 0, DO I OP CODE
1 0 7 0 6 05 0 4 0 3 O2 0, DO I LOW ADDRESS
JUMP or CALL instructions
IX X 05 0 4 0 3 ~ 0, DO 1 HIGH ADDRESS· -For the third byte of this instruction, 0 6 and 0 7 are "don't care" bits.
For the MCS-8 a logic "1" is defined as a high level and a logic "Oil is defined as a low level.
B. Summary of Processor Instructions
Index Register Instructions
The load instructions do not affect the flag flip-flops. The increment and decrement instructions affect all flip-
flops except the carry.
MINIMUM INSTRUCTION CODE
MNEMONIC STATES E? 0 6 °5 0 4 0 3 D:z 0 1 DO DESCRIPTION OF OPERATION
REQUIRED
(1) lrl r2 (5) 1 1 0 0 0 S S S load index register rl with the content of index register r2.
T,2TlrM
lMr
(8'
(1'
1
1
1
1 ,° 0
1
0
1
1
5
1
S
1
5
load index register r with the content of memory register M.
load memory register M with the content of index registtr r.
(3}lrl (8) 0 0 0 0 0 1 1 0 load index register r with data B ..• B.
B B B B B B B B
lMI (9' 0 0 1 1 1 1 1 0 load memory register M with data B ... B.
B B B B B B B B
INr (5) 0 0 0 0 0 0 0 0 Increment the content of index register r (r f A).
OCr (5) 0 0 0 0 0 0 0 1 Decrement the content of index register r (r fA).
The result of the AlU instructions affect all of the flag flip-flops. The rotate instructions affect only the carry flip-flop.
AOr (5' 1 0 0 0 0 S 5 S Add the content of index register r, memory register M, or data
ADM (8) 1 0 0 0 0 1 1 1 B ••. B to the accumulator. An overflow (carry) sets the carry
AOI (8) 0 0 0 0 0 1 0 0 flip-flop.
B B B B B B B B
ACr (5) 1 0 0 0 1 5 5 5 Add the content of index register r, memory register M, or data
ACM (8' 1 0 0 0 1 1 1 1 B ... B to the accumulator with carry. An overflow (carry'
ACI (8) 0 0 0 0 1 1 0 0 sets the carry flip-flop.
B B B B B B B B
SUr (5) 1 0 0 1 0 5 S S Subtract the content of index register r, memory register M. or
5UM (8' 1 0 () 1 0 1 1 1 data B .•• B from the accumulator. An underflow Ul,orrow)
SUI (8' 0 0 0 1 0 1 0 0 sets the carry flip-flop.
B B B B B B B B
5Br (5' 1 0 0 1 1 5 5 5 Subtract the content of index register r, memory register M, or data
5BM (8' 1 0 0 1 1 1 1 1 data B ..• B from the accumulator with borrow. An underflow
5BI (8' 0 0, 0 1 1 1 0 0 (borrow) sets the carry flip-flop.
B B B B B B B B
8
MINIMUM INSTRUCTION CODE
MNEMONIC STATES 07 06 DsD4 D 3 ~D1 q, DESCRIPTION OF OPERATION
REQUIRED
NOr (5) 1 0 1 0 0 S S S Compute the logical AND of the content of index register r,
NOM (8) 1 0 1 0 0 1 1 1 memory 'register M, or data B •.• B with the accumulator.
NDI (8) 0 0 1 0 0 1 0 0
B B B B B B B B
XRr (5) 1 0 1 0 1 S S S Compute the EXCLUSIVE OR of the content of index register
XRM (8) 1 0 1 0 1 1 1 1 r, memory register M, or data B .•• B with the accumulator.
XRI (8) 0 0 1 0 1 1 0 0
B B B B B B B B
ORr (5) 1 0 1 1 0 S S S Compute the INCLUSIVE OR of the content of index register
ORM (8) 1 0 1 1 0 1 1 1 r, memory register m, or data B .•• B with the accumulator.
ORI (8) 0 0 1 1 0 1 0 0
B B B B B B B B
CPr (5) 1 0 1 1 1 S S S Compare the content of index register r, memory register M,
CPM (8) 1 0 1 1 1 1 1 1 or data B ••• B with the accumulator. The content of the
CPI (8) 0 0 1 1 1 1 0 0 accumulator is unchanged.
B B B B B B B B
RLC (5) 0 0 0 0 0 0 1 0 Rotate the content of the accumulator left.
RRC (5) 0 0 0 0 1 0 1 0 Rotate the content of the accumulator right.
RAL (5) 0 0 0 1 0 0 1 0 Rotate the content of the accumulator left through the carry.
RAR (5) 0 0 0 1 1 0 1 0 Rotate the content of the accumulator right through the carry.
Input/Output Instructions
INP (8) 0 1' 0 0 M M M 1 Read the content of the selected input port (MMM) into the
accumulator.
OUT (6) 0 1 R R M M M 1 Write the content of the accumulator into the selected output .
port (RRMMM, RR f. 00).
Machine Instruction
HLT (4) o 0 000 o 0 X Enter the STOPPED state and remain there until interrupted.
HLT (4) Enter the STOPPED state and remain there until interrupted.
NOTES:
(1) SSS = Source Index Register } These registers, F'j, are de.signatedA(aCCumulator-OOO),
DOD = Destination Index Register B(001), C(010), 0(011), E(100), H(101), L(110L
(2) Memory registers are addressed by the contents of registers H & L.
(3) Additional bytes of instruction are designated by BBBBBBBB.
(4) X = "Don't Care".
(5) Flag flip-flops are defined by C4C3: carry (OO-overflow or underflow), zero (01-result is zero), sign (10-MSB of result is "1 "),
parity (11-parity is even) .
9
c. Complete Functional Definition
The following pages present a detailed description of the complete 8008 I nstruction Set.
Symbols Meaning
10
INDEX REGISTER INSTRUCTIONS-'
Operations are performed and the status flip-flops, C, Z, S, P, are set based on the result of the operation.
Logical operations (NOr, XRr, ORr) set the carry flip-flop to zero. Rotate operations affect only the
carry flip-flop. Two's complement subtraction is used.
11
ACCUMULATOR GROUP INSTRUCTIONS - Cont'd.
12
ROTATE INSTRUCTIONS - One 8yte
(one cycle - PCI)
The accumulator content (register A) may be rotated either right or left, around the carry bit or
through the carry bit. Only the carry flip-flop is affected by these instructions; the other flags are
unchanged.
RLC 00 000 010 A m+1-A m , A o-A 7, {carry)-A 7
Rotate the content of register A left one bit.
Rotate A7 into Ao and into the carry flip-flop.
RRC 00 001 010 A m-A m+1 , A 7-Ao, {carry)-Ao
Rotate the content of register A right one bit.
Rotate Ao into A7 and into the carr~ flip-flop.
RAL 00 010 010 A m+ 1-Am ,A o-(carry),(carry)-A7 .
Rotate the content of Register A left one bit.
Rotate the content of the carry flip-flop into Ao.
Rotate A7 into the carry flip-flop.
RAR 00 011 010 Am-Am+1,A7 -(carry), (carry)-Ao
Rotate the content of register A right one bit.
Rotate the content of the carry flip-flop into A 7 .
Rotate Ao into the carry flip-flop.
PROGRAM COUNTER AND STACK CONTROL INSTRUCTIONS
JUMP INSTRUCTIONS - Three 8ytes
(three cycles - PCI/PCR/PCR)
Normal flow of the microprogram may be altered by jumping to an address specified by bytes two
and three of an instruction.
JMP 01 XXX 100 {P)-<83><B2> Jump unconditionally to the
(Jump Unconditionally) <8 2 > instruction located in memory location addressed
<~> by byte two and byte three.
JFc 01 OC4C3 000 If (c) = 0, {P)-<83> <8 2>. Otherwise, (P) = {P)+3.
(Jump if Condition <~> If the content of flip-flop c is zero, then jump to
False) <83 > the instruction located in memory location <8 3> <8 2> ;
otherwise, execute the next instruction in sequence.
JTc 01 1C4 C3 000 If (c) = 1, {P)--<8 3> <8 2>. Otherwise, (P) = {P)+3.
(Jump if Condition <8 2 > If the content of flip-'flop c is one, then jump to the
True) <8 3 > instruction located in memory location <8 3> <8 2> ;
otherwise, execute the next instruction in sequence.
CALL INSTRUCTIONS - Three 8ytes
(three cycles - PCI/PCR/PCR)
Subroutines may be called and nested up to seven levels.
CAL 01 XXX 110 (Stack)-(P), (P)-<8 3> <8 2>. Shift the content of P
(Call subroutine < 8 2> to the pushdown stack. Jump unconditiona lIy to the
Unconditionally) < 8 3> instruction located in memory location addressed by
byte two and byte three.
CFc 01 OC4 C3 010 If (c) = 0, (Stack)-(P), (P)-<8 3><8 2>. Otherwise,
(Call subroutine <8 2 > (P) = (P)+3. If the content of flip-flop c is zero, then
if Condition False) <83 > shift contents of P to the pushdown s~ack and jump
to the instruction located in memory location<8 3><B 2> ;
otherwise, execute the next instruction in sequence.
CTc 01 1C4 C3 010 If (c) = 1, (Stack)-{P), {P)-<8 3> <8 2>. Otherwise,
(Call subroutine <82 > (P) = (P)+3. If the content of flip-flop c is one, then
if Condition True) <8 3 > shift contents of P to the pushdown stack and jump
to the instruction located in memory location<8 3> < 82>;
otherwise, execute the next instruction in sequence.
In the above JUMP and CALL instructions < 8 2 > contains the least significant half of the address and
< 8 3 > contains the most sign ificant half of the address. Note that D6 and D7 of< 8 3 >are "don't care"
bits since the CPU uses fourteen bits of address.
13
RETURN INSTRUCTIONS - One Byte
(one cycle - PCI)
A return instruction may be used to exit from a subroutine; the stack is popped-up one level at a time.
RET 00 XXX 111 (P)-(Stack). Return to the instruction in the memory
location addressed by the last value shifted into the
pushdown stack. The stack pops up one level.
RFc If (c) = 0, (P)-(Stack); otherwise, (P) = (P)+l.
(Return Condition If the content of flip-flop c is zero, then return to
False) the instruction in the memory location addressed by
the last value inserted in the pushdown stack. The stack
pops up one level. Otherwise, execute the next instruction
in sequence.
RTc If (c) = 1, (P)-(Stack); otherwise, (P) = (P}+l.
(Return Condition If the content of flip-flop c is one, then return to
True) the instruction in the memory location addressed by
the last value inserted in the pushdown stack. The stack
pops up one level. Otherwise, execute the next instruction
in sequence.
RESTART INSTRUCTION - One Byte
(one cycle - PCI)
The restart instruction acts as a one byte call on eight specified locations of page 0, the first 256 instruction
words.
RST 00 AAA 101 (Stack)-(P),(P)-(OOOOOO OOAAAOOO)
Shift the contents of P to the pushdown stack.
The content, AAA, of the instruction register is
shifted into bits 3 through 5 of the P-counter. All
other bits of the P-counter are set to zero. As a one-
word IIca II " I eight eight-byte subroutines may be
accessed in the lower 64 words of memory.
INPUT/OUTPUT INSTRUCTIONS
One Byte
(two cycles - PCI/PCC)
Eight input devices may be referenced by the input instruction
INP 01 OOM MM1 (A)-(input data lines). The content of register A
is made available to external equipment at state T1
of the pee cycle. The content of the instruction
register is made available to-external equipment at
state T2 of the pec cycle. New data for the
accumulator is loaded at T3 of the PCC cycle.
MMM denotes input device number. The content of the
condition flip-flops, S,Z,P IC, is output on Do, 0 1 , O2 ' 0 3
respectively at T 4 on the PCC cycle.
Twenty-four output devices may be referenced by the output instruction.
OUT 01 R RM MM 1 (Output data lines)-(A). The content of register A
is made available to external equipment at state T1
and the content of the instruction register is made
available to external equipment at state T2 of the pce
cycle. R RMMM denotes output device number (R R =1=
00).
MACHINE INSTRUCTION
HALT INSTRUCTION - One Byte
(one cycle - PCI)
HLT 00 000 OOX On receipt of the Halt Instruction, the activity of the
or processor is immediately suspended in the STOPPED
11 111 111 state. The content of all registers and memory is un-
changed. The P-counter has been updated and the
internal dynamic memories continue to be refreshed.
14
D. Internal Processor Operation
Internally the processor operates through five different states:
I
T 1 - - - - - I INTERRUPT
Send out lower eight bits of address and suppress incrementing of program counter and
acknowledge interrupt.
Send out six higher order bits of address and two control bits, 06 and 07. Increment
T2-----t/. program counter if there has been a carry from T1.
~==========
WAIT Wait for READY signal to come true. Refresh internal dynamic memories while waiting.
T3-----~ NORMAL Fetch and decode instruction; fetch data from memory; output data to memory. Refresh
internal memories .
. STOPPED Remain stopped until INTERRUPT occurs. Refresh internal memories.
T4 and T5 ---1. ._________ Execute instruction and appropriately transfer data within processor. Content of data
bus transfer is available at I/O bus for convenience in testing. Some cycles do not require
these states. In those cases, the states are skipped and the processor goes directly to T1.
Processor Clocks
The figure below shows state transitions relative to the internal operation of the processor. As noted
in the previous table, the processor skips unnecessary execution steps during any cycle. The state
counter within the 8008 operates is a five bit feedback shift register with the feedback path controlled
by the instruction being executed. When the processor is either waiting or stopped, it is internally
cycling through the T3 state. This state is the only time in the cycle when the internal dynamic memories
can be refreshed.
(CYCLE 1) (HLT • INT + RETURN (CF)) + (CYCLE 2) (OUT + LMrI + (CYCLE 3) (LMI + JUMP (CF) + CALL (CF))
(CYCLE 1) (LMr)
The following pages show the processor activity during each state of the execution of each instruction.
15
INTERNAL PROCESSOR OPERATION
1/0 INSTRUCTIONS
0 1 0 0 M M M 1 INP 8 PC LOUT PCHOUT FETCH INSTR.
~
TO IR & REG. b
0 1 R R M M M 1 OUT 6 PC LOUT PCHOUT FETCH INSTR.
~
TO IR & REG. b
MACHINE INSTRUCTIONS
o 0 000 o 0 X HLT 4
1 1 1 1 1 1 1 1 HLT 4
NOTES:
1. The first memory cycle is always a PCI (instruction) cycle. 6. Temporary registers are used internally for arithmetic operations
2. Internally, states are defined as Tl through T5. IR some cases and data transfers (Register a and Register bJ
more than one memory cycle is required to execute an instruction. 7. These states are skipped.
3. Content of the internal data bus at T4 and T5 is available at the 8. PCR cycle (Memory Read Cycle).
data bus. This is designed for testing purposes only. 9: "X" denotes an idle state.
4. Lower order address bits in the program counter are denoted 10. PCW cycle (Memory Write Cycle).
by PCL arid higher order bits are designated by PCH. 11. When the JUMP is conditional and the condition fails, states
5. During an instruction fetch the instruction comes from memory T4 and T5 are skipped and the state counter advances to
to the instruction register and is decoded. the next memory cycle.
16
MEMORY CYCLE TWO MEMORY CYCLE THREE
T1 T2 T3 T4(3) T5 T1 T2 T3 T4(3) T5
REG. LOUT
(10)
PCLOUT (S)
PCLOUT (S)
PCLOUT(S) PCHOUT
TO REG.b
LOWER ADD.
TOREG.b
. PCLOUT(S) PCHOUT HIGHER ADD.
REG.a
TO PCH
REG.a
TO PCH
TO PC
REG.b
TOPCL
PCLOUT(S) PCHOUT .. PCLOUT(S) PCHOUT HIGHER ADD.
REG. a (12)
REG.b
TO PCl
PCLOUT(S) PCHOUT .. PCLOUT(S) PCHOUT REG.b
12. When the CALL is conditional and the condition fails. states
T4 and T5 are skipped and the state coul)ter advances to
I I II· II
15. PCC cycle (1/0 Cycle).
16. The content of the condition flip-flops is available at the data bus:
the next memory.cycle. If the condition is true. the stack S at DO. Z at 01. Pat 02. C at 03.(04 - 07 all ones)
is pushed at T4. and the lower and higher order address 17. A READY command must be supplied for the OUT operation
bytes are loaded into the progr~m counter. to be completed. An idle T3 state is used and then the state
13. When the RETURN condition is true, pop up the stack; counter advances to the next memory cycle.
otherwise. advance to next memory cycle skipping T4 and T5. lS. When a HALT command occurs. the CPU internally remains
14. Bits 03 through 05 are loaded into PCL and all other bits in the T3 state until an INTERRUPT is recognized. Externally.
are set to zero; zeros are loaded into PCH. the STOPPED state is indicated.
17
V. PROCESSOR CONTROL SIGNALS
When the processor is interrupted, the system INTERRUPT signal must be synchronized with
the leading edge of the ~1 or ~2 clock. To assure proper operation of the system, the interrupt
line to the CPU must not be allowed to change within 200ns of the falling edge of ~1' An
example of a synchronizing circuit is shown on the schematic for the SIMB-01 (Section V").
I I
1/>1
~~ ______J·I0\ I~'--~---
I I
I I I
INTERRUPT
TO SYSTEM
---'
I , ______
-
-4)o-_ _
,S
+-1
I
1
---+-----11 - - - -
I
SYNCHRONIZED ~ ss I J
INTERRUPT TO ~ I \
CPU _ _ _.... (200ns I I I 1'---
I I I~I~-----
T11 INTERRUPT
ACKNOWLEDGE ---------------~S~~S ____. . . ___ .INTERRUPT
I I RECOGNIZED
If a HALT is inserted,the CPU enters a STOPPED state; if a NOP is inserted, the CPU
continues; if a "JUMP to 0" is inserted, the processor executes program from location 0,
etc. The RESTART instruction is particularly useful for handling interrupt routines since
it is a one byte call.
18
ADDR. LOCATION PC CONTENTS
N -1 INTR. N-1 N (INTERRUPT ARRIVES HERE)
N INSTR. N
N+1 INSTR. N + 1
~_ _- - I USER SUPPLIES ALTERNATE
INSTRUCTION (RESTART OR
CALL TO SRT), RELEASES
INTERRUPT,
PC IS SAVED IN STACK
(VALUE = N)
SUBROUTINE FOR HANDLING INTERRUPT:
S INSTR. S
S+1 INSTR.S+1
S+2
S+K RETURN STACK POPS - WITH VALUE N
Three possible sequences for starting the 8008 are shown on the following page. The
RESTART instruction is effectively a one cycle call instruction, and it is convenient to use·
this instruction to call an initiation subroutine. Note that it is not necessary 10 start the
8008 with a RESTART instructLon.
The selection of initiation technique to use depends on the sophistication of the system
using the 8008. If the interrupt feature is used only for the start-up of the 8008 use the
ROM directly, no additional external logic associated with instructions from source other
than the ROM program need be considered. If the interrupt feature is used to jam in-
structions into the 8008, it would then be consistent to use it to jam the initial instruction.
The timing for the interrupt with the start-up timing is shown on an accompanying sheet.
The jamming of an instruction and the suppression of the program counter update are
handled the same for all interrupts.
19
EXAMPLE 1:
Shown below are two start-up alternatives where an instruction is not forced into the 8008 during
the interrupt cycle. The normal program fl.ow starts the 8008.
a. 8008 ADDR ESS OUT INSTRUCTION IN ROM
a a a a a a a 0 0 a a a a a NOP (LAA 11 000 000) }
000000 00000000 NOP Entry Directly To
oaaaaa a a 0 0 000 1 INSTR1 Main Program
a a a a a a aa aaa0 1 0 INSTR2
EXAMPLE 2:
A RESTART instruction is jammed in and first instruction in ROM initially ignored.
8008 ADDRESS OUT INSTRUCTION IN ROM
a0aaa0 000 a a 000 INSTR1 (RST = 00 XYZ 101)}
000000 OOXYZOOO I NSTRa Start-up
000000 OOXYZOOl INST~ Routine
Note that during the interrupt cycle the flow of the instruction to the 8008 either from ROM or
another source must be controlled by hardware external to 8008.
B. Ready (ROY)
The 8008 is designed to operate with any type or speed of semiconductor memory. This flex-
ibility is provided by the READY command line. A high-speed memory will always be ready
with data (tie READY line to Vee ) almost immediately after the second byte of the address
has been sent out. As a result the 8008 will never be required to wait for the memory. On the
other hand, with slow ROMs, RAMs or shift registers, the data will not be immediately avail-
able; the 8008 must wait until the READY command indicates that the valid memory data is
available. As a result any type or any combination of memory types may be used. The READY
command line synchronizes the 8008 to the memory cycle. When a program is being developed,
the READY signal provides a means of stepping through the program, one cycle at a time.
20
VI. ELECTRICAL SPECI FICATION
The following pages provide the electrical characteristics for the 8008. All of the inputs are TTL
compatible, but input pull-up resistors are recommended to insure proper V1H levels. All outputs are
'low-power TTL compatible. The transfer of data to and from the data bus is controlled by the CPU.
During both the WAIT and STOPPED states the data bus output buffers are disabled and the data bus
is floating.
- - - -- -v:-l
I
I
FROM -------41...----..... I'
__....~I..... DATA BUS
INTERNAL
DATABUS---------~------~
I/O
TO INTERNAL _ ...._---.
DATA BUS
OUTPUT ___.....~_~I--~
DISABLE
8008 vee
, ~c
-----------------~---------~
.---
I
I
I
I
I ....---+--~ OUT
I I
I I
IN ....-01-0-41--.... I
I .
_...J
Vee
Vce
Input Buffer Output Buffer
(cf>1' cf>2' ROY, INT) (SYNC, So' S1' S2)
21
ABSOLUTE MAXIMUM RATINGS*
Ambient Temperature *COMMENT
Under Bias O°C to +70°C
Stresses above those listed under" Absolute Max-
Storage Temperature -55°C to +150°C imum Ratings" may cause permanent damage to
Input Voltages and Supply the device. This is a stress rating only and func-
Voltage With Respect tional operation of the device at these or any other
to Vee +0.5 to -20V condition above those indicated in the operational
Power Dissipation 1.0 W @ 25°C sections of this specification is not implied_
LIMITS TEST
SYMBOL PARAMETER UNIT
MIN. TYP. MAX. CONDITIONS
A.C. CHARACTERISTICS
TA = O°C to 70°C; Vce = +5V ±5%, VOO = -9V ±5%. All measurements are referenced to 1.5V levels.
8008 8008-1
LIMITS LIMITS
SYMBOL PARAMETER UNIT TEST CONDITIONS
MIN. MAX. MIN. MAX.
tOH HOLD TIME FOR DATA BUS OUT .10 .10 J,J.s
tS1 STATE OUT DELAY (ALL STATES 1.1 1.1 J,J.S C L = 100pF
EXCEPT T1AND T11) [2]
SYNC
STATE
LINES
READY {
• '4
T,
Notes: 1. READY line must be at "0" prior to ¢22 of T2 to guarantee entry into the WAIT state.
2. INTERRUPT line must not change levels within 200ns (max.) of falling edge of ¢1.
TYPICAL D. C. CHARACTERISTICS
POWER SUPPLY CURRENT OUTPUT SINKING CURRENT OUTPUT SOURCE CURRENT
VS. TEMPERATURE VS. TEMPERATURE. VS. OUTPUT VOLTAGE
vool= -9)
60 2.4 Vee =5V -
TA = 70°C
o _5
o
50 ;;i 2.2 <i
<i !
------
! !
...Z ...z ...Z
40
r- ~ 2.0 0:: -......
~ "-
0:: 0::
0::
::>
r-- a
--
"'"
u
~
~
Vee -Voo = 14V 1.8 U
':
t
30
r- ~C~~3V iii
z
........... 0::
::>
iil ............ ~Voo Sl
,,~
=14V
(ij
...
----
0:: 20 ~ 1.6 ~
~
ri:
...::> J- r- ~ 2
"
o VOl=rV o
0 1.4 - 1 ~
0 i
I
2 o
"r'\.
10 20 30 40 50 60 70 60 10 20 30 40 50 60 70 80 1.0 2.0 3.0 4.0 5.0
OUTPUT VOLTAGE (V). V OH
AMBIENT TEMPERATURE (OC) AMBIENT TEMPERATURE (OC)
TYPICAL A. C. CHARACTERISTICS
DATA OUT DelAY VS.
OUTPUT LOAD CAPACITANCE
1
>
1.0 / CAPACITANCE f = 1MHz; TA = 25°C; Unmeasured Pins Grounded
e
9
/' LIMIT (pF)
/
/ SYMBOL TEST
TYP. MAX.
8
C IN INPUT CAPACITANCE 5 10
.
> /
::} .7 / COB DATA BUS I/O CAPACITANCE 5 10
...:::J
COUT OUTPUT CAPACITANCE 5 10
:::J
o .6
.5
o 50 100 150 200 250 300
23
VII THE SIM8-01 - AN MCS-8 T •M• MICRO COMPUTER
During the development phase of systems using the 8008, Intel's single chip 8-bit parallel central processor
unit, both hardware and software must be designed. Since many systems will require similar memory and
I/O interface to the 8008, I ntel has developed a prototyping system, 1he SI M8-01. Through the use of this
system and Intel's programmable and erasable ROMs (1702), MCS-8 systems can be completely developed
and checked-out before committing to mask programmed ROMs (1301).
The SI M8-01 is a complete byte-oriented computing system including the processor (8008), 1 K x 8 memory
(1101), six I/O ports (two in and four out), and a two-phase clock generator. Sockets are provided for 2K
x 8 of ROM or PROM memory for the system microprogram. The SIM8-01 may be used with either the
8008 or 8008-1. To operate at clock frequencies greater than 500kHz, former SIM8-01 boards must be
modified as detailed in the schematic and the following system description. Note that all Intel-developed
8008 programs interface with TTY and require system operation at 500kHz. Currently, the SIM8-01 is
supplied with the 8008-1 CPU and the system clock preset to 500kHz ..
The following block diagram shows the basic configuration of the SI M8-01. All interface logic for the
8008 to operate with standard ROM and RAM memory is included on the board. The following pages
present the SI M8.:01 schematic and deta'iled system description.
++++++++
BUFFERS '.!- MEMORY
& ::: ROM· RAM
8 BITS/BYTE
::::
- ~
MPXERS
TO 16 K BYTES
!..
I/O
8008 DEVICE 1/0
DATA MEMORY,
"'r-... ;:SELECT OUTPUT
DATA
r
BUS INTERRUPT
rr=il
& INPUT
ENABLES
IADDRESS, CONTROL
REGISTER·8 BITS
H ADDRESS
REGISTER· 8 BITS
ttl ttl
~~
r-f+ ...I J.. J..
...I
BUFFERS
STATUS
R/W
LOGIC
SYNC
8008 EXTERNAL INTERRUPT
tNT.
it... J CLOCK
i GENERATOR I
t
READY
24
SIMS-01 SPECIFICATIONS Operating Speed
• 2 f.J.S clock period
Card Dimensions: • 20 f.J.S typical instruction cycle
• 11.5 inches high
D.C. Power Requirement:
• 9.5 inches deep
• Voltage:
Sys~em Components I ncluded on Board: Vcc = 5V ±5%
.8008-i TTL GRD = OV
• Complete TTL interface to memory Voo = -9V ±5%
• lK x 8 RAM memory
• Sockets for 2K x 8 PROM memory • Current:
• TTY interface ckts. Eight ROMs
• Two input and four output ports (8 bits each) Typical Maximum
• Two phase clock generator
Icc = 2.5 amps 4.0 amps.
Maximum Memory Configuration:
100 = 1.0 amps 1.5 amps.
• 1K x 8 RAM
• 2K x 8 PROM
Connector:
• All control lines are provided for
• Wire wrap type Amphenol 86 pin
memory expansion
connector PIN 261-10043-2
I I I CM
cs
= CS CS
= CS
= CS
= CS
= CS 13
=
DATA
I--< ::
:: .== :: = I--< = OUT
= r--==
1101 1101 1101 1101 lJOl 1101
15
A2S
-= r- = A23
1--= ~ - =
--c _ A" A20
f-'-
=
= A,fA~~
R/W
15
~
T T CM
A¢> CS 13
= = = = =
=
cs 13
= = = :=
= = =
1101 1101
HOI
Poo,
1101
A.oo --<:=
1101
A38
1101
A38
-:=
1101
Aa7
-<
=
=
1101
Aao
- :
'A35
I--< = AJ4 Cs FOR
RAM
A7 RIW R/W
15 15
.1. 16 I I I CM
An CS ~3 =
= := : = CS
13
1101 I--< 1101 = 1101 1101 - 1101 = 1101
1101
As3 As,
r-'== Aoo =
--<= Poo. A.os
--< - P007 =
- = Aos
A7 RIW R/W
15 15
.I. 16 I
1101
=
= 1101
=
= 1101
- =
:= 1101
=
:: 1101
=
:::
1101
~ =
::
CS
1101
13
Ass =
----<= Aas =
----<.= Ao. =
---<:= As3
---<:: Au
---<:: A6,
----<= Aoo
NOTE: 1101',
+5V - PIN 5
-9V - PIN 4, 8
PIN 14 NOT USED· DATA OUT
25
+5
-9
'1)',""'!
{
.," I
[;~~if
RAM
DATA IN
EXPANSION
:~;~g~ ~::::::::::::::::::::::::::::::::::::::::::::::::::=4~::::::~~::::::::::::::::::::::::::::::
:~~~ ~::::::::::::::::::::::::::::::::::::::::::::::::::=4~::::::~~::::::::::::::::::::::::::::::,
~;!~ MI¥>::============~::I;
r.J/_6()
~~~ > ~e IIPJ' ~ A'P / J
Z'~ I4P¥
~ F----------
L1
MPX
MEMORY DATA
·~:fJ::: J69 nr/.~:f-----Itt;::::::t:p#~ A5~ }:J~+'-----------
II-IIJI., 8211J 8 ?
-:z:~.:z:;.z~============3~Ji
INPUT PORT.p
INPUT PORT 1 26 F.rf'llz:::;-._ _ _ _ _ _ _ __
~~~; "'2/.1 II
H
~~~:::~:::::::::::::::::::::::::~~H~~~ ~r/~+~----tti111,;::tt~/~ ~F/S-~---------.
J/~2/.rI!l, >-------------11ltr'l,:s~o~/Ic~'7.s~J~ S() .51
fl-"'I/~~~~~~~=----~~~~-~~~g~~_+~I.~/~~~~~ ~~~~/~"___?~--~-_--------
(AlOitMAUY TQ +sv)tJI-Z' ,lMTA ~OI"tPtG"".Nr
J~72ID ~---~--------~~~-~~_+~I~••------~ ~~S~Lj.~~~i_-------------
r" H /s /t. , 'J
V..e-~ Alt>,,>_ _ _ _ _ _ _ _ _ _ _ _ _+-+-H~~44 ,SI>QC $1 ""-w/.;:::'O;.-.-----+-+-H-_--i/ct'".,,- ~
JI-,ZI I44 iii r>O,- _ .
51 ,."'~'___ _ _ _ _ _ _ _~
JI-Zt.ZIl4 >------------++-t-H. . . ~~C
/ /of p X r-----:ZI6 ,.,ro
Mft
X L"/ ~
MPX
MEMORY DATA ~:f.,:::~~~~~~~~~~~~~E~~~
J/~aIZn II?/) ~, II
~.. A56 ~'___ _ _ _ _ _ _ __
r' ...
INPUT PORT ¢
INPUT PORT 1
~=::;::: 8263 ~ 13 I~ 8Z67 F.t '2
_ _ _ _ _ _ _ _ _ _ __
to
JI-3+IIII. r---B-
.:;r,/- 'H /lin 1'1 1 4 ? I~
~::i:; ~ ~ r-------------
'-
INTERRUPT
INSTRUCTION
PORT
26
---------------------;rJH
N"~h' 171/'/)£'"
#"Af"SS 17U r
AI3
t:t:~} CyclE eouTloL
ed, CODIA/6
'1.
" 12
ROM
00
CS7
DATA FROM CM 3
MEMORY RAM
07 CMO -.
NOTE:
~ <r~ 0 "
THIS SCHEMATIC
IS INCLUDED FOR ---~. ; .'\
REFERENCE ONLY.
'" <~~ .. BII DI(2. (No. 00014)
.. tey ~
(2~s)
, _~I
J~t¢1~\ I'
t R• tF
Memory Organization
The SIM8-01 has capacity for 2K x 8 of ROM or PROM and 1 K x 8 of RAM. The memory can easily
be expanded to 16K x 8 using the address and chip select control lines provided. Further memory
expansion may be accomplished by dedicating an output port to the control of memory bank switching.
In an MCS-8 system, it is possible to use any combination of memory elements. The SIM8-01 is
shipped from the factory with the ROM memory designated from address 0 ~ 2047, RAM memory
from 2048~3071, and memory expansion for all addresses 3072 and above. Jumper wires provided
on the board (boxes C, 0, E) allow complete flexibility of the memory organization. They may
be rearranged to meet any requirement. the Intel 3205 data sheet provides a complete description of
the one of eight decoder used in this system. the 3205 truth table is shown below.
Control Lines
• Interrupt
The interrupt control line is directly available as an input to the board. For manual control, a normally
open push-button switch may be connected to terminals J1-50 and J 1-53. The interrupt may be inserted
28
under system control on pin J1-1. An external flip-flop (A33) latches the interrupt and is reset by T11
when the CPU recognizes the interrupt. Instructions inserted under interrupt control may be set up
automatically or by toggle switches at the interrupt input port as shown on the schematic. Use the
interrupt line and interrupt input port to start up the 800S .
Note that the interrupt line has two different connections to the input to the board (box B). The path
from J 1-1 directly to pin 4 of package A3 is the normal interrupt path (the board is shipped from the
factory with this connection). Lfet..he connection from pin 8 of package A 15 to pin 4 of package A3 is
marla instead the processor will reCQgnfze an interrupt only when it is in the STOPPED state. This is
used to recognize the " start character" when entering data from TTY .
• Ready
The ready line on the 8008 provides the flexibility for operation with any type of semiconductor memory.
On the SIM8-01 board, the ready line is buffered; and at the connector (J1-30), the READY line is active
low. During program development, the READY line may be used to step the system through a program.
NORMAL OPERATION OF SYSTEM
The 8008 CPU exercises control over the entire system using its state lines (So, S" S2) and two control
bits (CCO, CC1) which are sent onto the data bus with the address. The state lines are decoded by a
3205 (A44) and gated with appropriate clock and SYNC signals. The two control bits form part of the
control for the multiplexers to the data bus (A55, A56), the memory readlwrite line (A33) and the I/O
line (A17).
I n normal operation, the lower order address is sent out of the CPU at state T1, stored in 3404 latches
(A59, A72) and provided to all memories. The' high order address is sent out at a state T2 and stored in
3404 latches (A72, A73). These lines are decoded as the chip selects to the memory. The two highest
order bits (CCO, CC1) are decoded for control.
. To guarantee that instructions and data are available to the CPU at the proper time, the T3 state is
anticipated by setting aD-type flip-flop (A 16) at the end of each T2 state. This line controls the
multiplexing of data to the 8008. This flip-:flop is reset at the end of each T3 state. In addition, switched
pull-up resistors are used on the data-bus to minimize data bus loading and increase bus response. The use
of switched resistors on the data bus is mandatory when using the SOOS-1. SIMS-01 boards built prior to
October,.1972 must be modified in order to operate with the SOOS-1 at clock frequencies greater than 500kHz.
Normally, the 8008 executes instructions and has no interaction with the rest of the system during states
T4 and T5. In the case of the INP instruction, the content of the flag flip-flops internal to the 8008 is
sent out at state T4 and stored in a 3404 latch (A43).
Instructions and data are multiplexed onto the 8008 data bus through four multiplexers (A55, A56, A69,
A70). In normal operation, line J1-29 should be at +5V in order for IItrue" data to reach the S008 data bus.
System I/O
The SI M8-01 communicates with other systems or peripherals through two input ports and four output ports.
All control and 1/0 selection decoding lines are provided for expansion to the full complement of eight input
ports and twenty-four output ports. To expand the number of input ports, break the trace at the output of
Device A68, pin 11, and generate input port decoding external to the SIM8-01. Control the input multi-
plexer through pin J1-69. The output ports latch data and remain unchanged until referenced again under
software control. Note that all output ports complement data. When power is first applied to the board,
the output ports should be cleared under software control to guarantee a known output state. To enable the
I/O device decoder, pin J2-8 should be at ground.
Teletype Interface
The 8008 is designed to operate with all types of terminal devices. A typical example of peripheral interface
'is the teletype (ASR-33). The SIM8-01 contains the three simple transistor TTY interface circuits shown on
the following page. One transistor is used for receiving serial data from the teletype, one for transmitting
data back to the teletype, and the third for tape reader.control.
The teletype must be operating in the full duplex mode. Refer to your teletype operating manual for making
connections within the TTY itself. Many models include a nine terminal barrier strip in the rear of
29
the machine. It is at this point where the
connections are made for full duplex
operation. The interconnections to the
L ~~
FULL DUPLEX
SIM8-01 for transmit and receive are made
at this same point. co 0
RECEIVE
FROM SIMS-01
J1-86 " 0
A complete description of the interconnection J2-40 \Q 0
of the SI M8-0 1 and the AS R-33 is presented
It)
0
in Appendix IV.
SEND
TO SIM8-01 1 J2-37
J2-59
o;t
M
(2)
(2)
N (2)
(2)
+5 +5
+5
DATA DATA
FROM FROM
SIM8-01 SIMS-01
J2-27 >-"JV'v...... J1-84 >--VV\-+....
J2-83
RELAY
TO BE
ADDED
TO TTY
-9 -9 -9
FROM TTY TRANSMITTER TAPE READER CONTROL TO TTY RECEIVER
To use the teletype tape reader with the SIM8-01, the machine must contain a reader power pack.
The contacts of a 10V dc relay must be connected in series with the TTY automatic reader (refer
to TTY manual) and the coil is connected to the SIM8-01 tape reader control as shown.
For all Intel developed TTY programs for the SIM8-01, the following I/O port assignments have been made:
1. DATA IN -- INPUT PORT 0, BIT 0 (J2-83 connected to J1-11)
2. DATA OUT -- OUTPUT PORT 2, BIT 0 (J1-84 connected to J2-36)
3. READER CONTROL -- OUTPUT PORT 3, BIT 0 (J2-27 connected to J2-44)
Note that the SIMS-01 clock generator must remain set at 500kHz. All Intel developed TTY programs
are synchronized to operate with the SIMS-01 at 500kHz.
In order to sense the start character, data in is also sensed at the interrupt input (J2-83 connected to J1-1)
and the interrupt jumper (box B) must be between pin 8 of A 15 and pin 4 of A3. It requires approximately
110ms for the teletype to transmit or receive eight serial data bits plus three control bits. The first and last
bits are idling bits, the second is the start bit, and the following eight bits are data. Each bit stays 9.09ms.
While waiting for data to be transmitted, the 8008 is in the STOPPED state; when the start character is
received, the processor is interrupted and forced to call the TTY processing routine. Under software control,
the processor can determine the duration of each bit and strobe the character at the proper time.
A listing of a teletype control program is shown in Appendix V.
SIM8-01 MICRO COMPUTER BOARD PIN DESCRIPTION
Pin No. Connector Symbol Description Pin t.o. Connector Symbol Des=iption
2,4 J1 +5VDC POWJ::R SUPPLY 57 Jl RAM DATA IN D5
31
FigUre 14. SI M8-01 Assembly Diagram
32
VIII. MCS-8 PROM PROGRAMMING SYSTEM
ROM MEMORY
PROM SOCKET
¢ 1 2 3 4 5 6 7 /
/-
A086~CONT
A0861 PROG
ROL
RAM
00000000000
I .-.
r BANK ~ 0 0 0 0 DOD 0
l..t
r'I .
... D
MP7-03
PROM PROGRAMMING
BOARD
A0863
RAM
BANK 1 0 0 0 0 00 0 0
MEMO RY
BANK 2 0 00 0 00 00
~BANK 3 0 0 00 00 00 L.- ....
,.. TIY
ASR33
r~
SIMS-01
33
PROGRAMMING THE 1602A/1702A
Information is introduced by selectively programming "1"s (output high) and "0"S (output low) into the
proper bit locations. Note that these ROMs are defined in terms of positive logic.
Word address selection is done by'the same decoding circuitry used in the READ mode. The eight
output terminals are used as data inputs to determine the information pattern in the eight bits of
each word. A low data input level (ground - P on tape) will leave a "1" and a high data input level
(+48V - N on tape) will allow programming of "0". All eight bits of one word are programmed
simultaneously by setting the desired bit information patterns on the data input terminals.
TAPE FORMAT
The tape reader used with a model 33 ASR teletype accepts 1" wide paper tape using 7 or 8 bit
ASCII code. For a tape to correctly program a 1602A/1702A, it must follow exactly the format rules
below:
Start Character 1 Stop Character 11 Data F;eld I MSB r;n 111 LSB~IP;n 41
1) There must be exactly 256 word fields in consecutive sequence, starting with word field 0
(all ad,dress lines low) to program an entire ROM. If a short tape is needed to program only
a portion of the ROM, the same format requirements apply.
2) Each word field must consist of ten consecutive characters, the first of which must be the
start character B. Following that start character, there must be exactly eight data characters
(P's or N's) and ending with the stop character F. NO OTHER CHARACTERS ARE
ALLOWED ANYWHERE IN A WORD FIELD. If an error is made while preparing a tape
and the stop character "F" has not been typed, a typed "B" will eliminate the previous
characters entered. This is a feature not available on Intel's 7600 programmer; the format
shown in the Intel Data Catalog must be used when preparing tapes for other programming
systems. An example of this error correcting feature is shown below:
If any character other than P or N is entered, a format error is indicated. If the stop
character is entered before the error is noticed, the entire word field, including the B
and F, must be rubbed out. Within, the word field, a P results in a high level output,
and N results in, a low level output. The first data character corresponds to the desired
output for data bit 8 (pin 11), the second for data bit 7 (pin 10), etc.
3) Preceding the first word field and following the last word fie1d, there must be a leader/
trailer length of at least 25 characters. This shou Id consist of rubout punches.
34
4) Between word fields, comments not PROM PIN CONFIGURATION
containing B's or F's may be inserted.
It is important that a carriage return A1 2 23 </>1
'DATA OUT 4 7 18 A6
returns are inserted, the tape may be
'DATA OUT 5 . 8 17 A7
easi Iy Iisted on the teletype for -DATA OUT 6 9 16 VGG
purposes of error checking. It may -DATA OUT 7 10 15 jVBB
IMPORTANT
It should be noted that the PROM's are described in the data sheet with respect to positive
logic (high level = p-Iogic 1). The MCS-8 system is also defined in terms of positive logic.
Consider the instruction code for LHD (one of the 48 instructions for the MCS-8).
1 1 101 011
When entering this code to the programmer it should be typed,
BPPPNPNPPF
This is the code that will be put into the 1302, Intel's mask programmed ROM, when the
final system is defined.
The S.lM8-01 is used as the micro computer controller for the programming. The control program
performs the function of a bootstrap loader of data from the TTY into the RAM memory. It then
presents data and addresses to the PROM to be programmed and controls the programming pulse.
The following steps must be followed when programming a PROM:
The programming system operates in an interactive mode with the user. After resetting and starting
the system with an INTERRUPT [steps 4), 5), 6)], a "*,, will appear on the TTY. This is the signal
that.the system is ready for a command .. To load a data tape, the following sequence must be followed:
35
TYPED BY SYSTEM
This RAM bank may be edited by re-entering blocks of data prior to programming a PROM. More than
one RAM bank may be loaded in preparation for programming several different PROMs or to permit
the merging of blocks of data from different banks into a single PROM. (See the explanation of the
CONTINUE command in section IXJ .
FORMAT CHECKING
When the system detects the first format error (data words entered either on tape or manually),
it will stop loading data and it will print out the address where the format error occurred.
At this time, an "R" may be typed and the data can be RE-ENTERED manually. This is shown below.
EXAMPLE 1:
020 BNPNPNPNPF
021 B P P P P N N N N F
022 BNNNNPPPPN FE
o 2 2 ......t---------- format error indicated at address
#022 (too many characters in
data field).
Listing R . . . .t
. - - - - - - - - - - - - RE-ENTER cpmmand
by B N N N N P P P P F ..... Stop tape reader and manually
TTY RE-ENTER the data word
023 B N P N P N P N P F ....~t---- Start the tape reader and continue
024 B P N M FE
o 2 4 ......1---------- Format error indicated at address
#024 (illegal character in data field).
R ......1 - - - - - - - - - - - RE-ENTER command
B P N P N P N P N F~ RE-ENTER data
* ...
-111(1------------ Ready for new command
36
PROGRAMMING
After data has been entered, the PROM may be programmed. Data from a designated address field
in a designated RAM bank is programmed into corresponding addresses in the PROM. A complete
PROM or any portion of a PROM may be programmed in the following manner:
Request for RAM BA NK # ... Bn .... RAM BAN K in which data has been stored.
'" ~
Enter bank number (0, 1, 2 or 3). Each
, bank stores 256 bytes.
Request for address 0 f data ..lI~ A
field within RAM ban k
xxx ... Initial address }
Address 0 through 255
yyy
-
~
Final address
I ]-
TTY will list data address as each locatjon
in PROM is programmed.
ERROR CHECKING
After each location in ROM is programmed, the content of the location is read and compared against
the programming data. In the event that the program\TIing is not correct, the ROM location will be
programmed again. The MCS-8 programming system allows each location of the ROM to be repro-
grammed up to four times. A "$" will be printed for each reprogramming. If a location in ROM will
not accept a data word after the fourth time, the system will stop programming and a II?" will be
printed. This feature of the system guarantees that the programmed ROM will be correct, and in-
completely erased or defective ROMs will be identified.
EXAMPLE 2:
.--------~ 1st programming
Listed - - {
by
System
006
! I
+,
1
2nd programming
3rd programming
If a location in the ROM will not program, a new ROM must be inserted in the programmer. The
system must be reset before continuing. (If erasable ROMs are being used, the "faulty" ROM should
be erased and reprogrammed).
PROGRAM LISTING
Before or after the programming is finished, the _c~mplete content of the ROM, or any portion
may be listed on the teletype. A duplicated programming tape may also be made using the teletype
tape punch. To list the ROM:
37
TYPED BY SYSTEM TYPED BY USER
The listing feature may also be used to verify that a 1702A is completely erased.
EXAMPLE 3:
Ready for command~*T ......r - . - - - - - - - - - - - - DATA F.NTRY
B0
A } Specification of RAM
000 memory add ress
010
000 BNPNPNPNNF
001 B P P P P P P P P F
002 B P P P P P P P P F
003 BPPNPPPNPF
004 B P P P P P P P P F Loading of data listing of
005 BNNPNNPPPF tape and verifying correct
006 BNPNNPNPPF format
007 BPNPNPPPPF
008 BNPNPPNPPF
009 BNNNNPPPNF
010 B P P N P P P P N F
Ready for command~ *P ........1 - - - - - - - - - - - - PROGRAM
B0
A } Specification of PROM
005 locations to be programmed
008
005
006 Programming bf PROM and
007 } verifying correct transfer of
008 data
Ready, for command ~*L .....
" 1 1 ( 1 - - - - - - - - - - - - LIST
000 B P P P P P P P P F
001 B P P P P P P P P F
002 B P P P P P P P P F
003 B P P P P P P P P F
004 B P P P P P P P P F
005 B N N P N N P P P F Listing of PROM
BNPNNPNPP~F~J
006
007 BPNPNPPPP
008 BNPNPPNPP
009 B P P P P P P P P
010 B P P P P P P P P
Ready for command~*
38
1702A ERASING PROCEDURE
The 1702A may be erased by exposure to high intensity short-wave ultraviolet light at a wave:length
of 2537 A. The recommended integrated dose (Le., UV intensity x exposure time) is 6W-sec/cm 2 •
Example of ultraviolet sources which can erase the 1702A in 10 to 20 minutes is the Model S-52 and
Model UVS-54 short-wave ultraviolet lamps manufactured by Ultra-Violet Products, Inc. (San Gabriel,
California).' The lamps should be used without short-wave filters, and the 1702A to be erased should
be placed about one inch away from the lamp tubes.
Features: Connector:
eHigh speed programming of Int~I's a. Solder lug type/ Amphenol
1702A (three minutes) 72 pin connector
elnputs and outputs TTL PIN 225-23621-101
compatible b. Wire wrap type - Amphenol
e Board sold complete with trans- 72 pin connector
formers, capacitor and connector PIN 261-15636
eDirectly interfaces with SIM8.;.01
Board
Dimensions:
8.4 inches high
9.5 inches deep
Power Requirement:
Vee = +5 @ 0.8 amps *This board may be used with a -10V
supply because a pair of diodes (i.e. 1 N9l4
TTL GRD = OV or equivalent) are located on the board in
*Voo = -9V @ 0.1 amps series with the supply. Select the appropriate
Vp = 50Vrms @ 1 amp pin for either -9V or -10V operation.
A micro computer bulletin which describes the modification of the MP7·02 for programming the
1602A/1702A is available on request. These modifications include complete failsafe circuitry (now
on MP7·03) to protect the PROMs and the 50V power supply.
39
c. Programming System Interconnection
+5 GND -9V
84
I
1,3
I
2,4
OUTPUT
1 1
13, 15 19,21 20 ENABLE +5
86 OArp PORTrp A.
Jl-53 J2·61 47 33 OAT A OUT
~
INTERR
J2-67
0A1 A,
45 DISABLE~
OA2 A2 ":"
J2·54 43
+5
- Jl-50
~ Jl-29
J2-36
J2-51
OA3
OA4
A3
A.
41
.. ~ 4.7 K
+5- [ J1-84
J2-53
J2-49
OAS Ali
66
53 31
:,. YaW
~ -
OA6 A.
READ Y '-- Jl-3O J2-50 51
OA7 A7 3
J2-47 49
J2-44 OUTPUT
-* [ J2-27
" " ' - J2-8
J2-75
J2-60
0841 PORT 1
OBl
0,
02
23
25
37
...
NoRMAL +5
DATA IN
J2-18 J2-78
082 03
27 COMPLEME~
[
OB3 D.
J2·60 29 0---:.-
TAPE
READER SIMS-01
J2-65
084
085
011
D.
48
MP7'()3
35
-COMPo DATA OUT
J2-57 50 ":"
CONTROL 07
J2-28 OB6 NORMAL
J2-62 52
J1-86
J2-55
OB7
INPUT
D.
54 a; ::::::J
R~
1841 PORT 1 0,
Jl-6 32
. TTY IB1 1D2 2-P-8180 ST ANCOR
PRINTE Jl-13 34 9 n
:03
2L~·~1"II
182 T
Jl-16 36
T , '0"
J2-40 IB3
Jl-21 38
Jl-l 184 ; : : :05
E Jl·11
J2-83
Jl-26
Jl-31
IB5
186
T I : : :0,
T , , I , 'D 42
40 11
,""YRMS.
1.0A
TTY
J2-37 Jl-34
i: :::: 44 10,12
1:
KEYBOARD
OR TAPE READE
Rill J2-59
J1-39
J2-43
187
8 17 --.-J;",d ::-ANCOR
T2
8110
% AMPS
$LO ILO
NOTES:
1. SIMS-02 Connector :
J2·39
0 02 4_7K
1/4W
~
~
. . • ~
I I I I I I I',
IIIII IRIWA
16 6
I+5V
14
1+5V
75·100VDC
+5V
2.
Wire ~ type/Amphenol
88 pin connector PIN 261-10043·2_
MP7'()2 Connectors:
a. Solder lug type I Amp!lenol
1 IIIII
11111
IIIIL
UIII
rot "'''''1'
~ 60 07 59
Aa 62 D. 57
A.t 64 CHIP SELECT OUT 72
As 66 PROGRAM OUT 22
SN 7407 N LED 220n
YaW
At 68 Vee OUT 2,4 In) MV·1OB
MONSANTO
A, 70 VQGOUT 26
0, "OUT" DEVICE UNDER TEST 71 "n OUT 24
O2 69 VooOUT 30
The complete interconnection bet-.m the SIM8-01 and the MP7'()3
03 67 .1,.2 OUT 2 is provided by the MCB8-'0 system interface and control module.
65 See the MCB8·10 description.
D.
40
P I.C.12 I
111111111111111111111111111111111111
~3 ~ ~9 ~7 ~9 ~7 ~5 ~3 ~ I~I
Solder Connector PfN 225·23621·101
nllnlllllllllllllllllllllllllllill
!oIdor Connector PfN 225-23621·101 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 J6 !
Amphonol
w_apConnec_ PIN 261·15636·2 2 4 6 8 10 12 14 16 18 20 22· 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72
41
POWER SUPPLY REGULATOR
I
FILTER CAP
~____~________________~PR~G~M~____-,~U
L.~.~.~~
R52 R53
4.7K 4.7K
1N4002
-9 ~~ ____~C~R~7__________________________~____-1 Voo
eR12
1N4002
+5 +5 +5
+BOV
\
LJ
3.0ms
SN7405
IC 11
R16
4.7K
13
SN7405
Ie 11
-=
+5
R23
470
9
SN7405
Ie 11
6
1-........-.--.--.-----+5 SN7405 NOTES: Unless otherwise specified-
+5 IC 11
1. RESISTORS ARE RATED IN n. %W. 10%.
2. TRANSISTORS ARE SE6021. or 2N3658 or 2N3722.
3. PIN NUMBERS ARE SPECIFIED FOR AMPHENOL
WIRE WRAP CONNECTORS.
42
R47
6.8K Vccs OUT
R28
6.8K
DATA 1
PIN4
D.U.T.
DATA OUT
ENABLE
DATA 2
PIN 5
D.U.T.
DATA 3
PIN6
D.U.T.
~~~R~~ ~~--r----------+--r---------~
DATA 4
PIN 7
D.U.T.
DATA 5
PIN8
D.U.T.
I
ADDRESS DRIVER
DATA 6
PIN9
D.U.T. A2 24 Voo
A1 23 <1>,
AD 3 22 <1>2
DATA OUT 1 4 (LSB) 21 A3
2 20 A4
19 AS
18 AS
17 A7
6 16 VGG
DATA 7
PIN 10 10 15. Vss
D.U.T. DATA OUT 8 11 (MSB) 14 CS
Vee 12 13 PROGRAM
DEVICE TO BE PROGRAMMED
NOTE:
DATA 8
THIS SCHEMATIC
PIN 11 IS INCLUDED FOR
D.U.T.
REFERENCE ONLY.
i
DATA DRIVER
43
IX. MICROCOMPUTER PROGRAM DEVELOPMENT
A. MCS-8 Software Library
1.0 PL/M™ COMPI LER - A High Level Systems Language
It's easy to program the MCS-8 Microcomputer using PL/M, a new high level language concept developed to meet
the special needs of microcomputer systems programming. Programmers can now utilize a true high level language
to efficiently program microcomputers. PL/M is an assembly language replacement that can fully command the
800B CPU and future processors to produce efficient run-time object code. PL/M was designed to provide addi-
tional developmental software support for the MCS-8 microcomputer system, permitting the programmer to con-
centrate more on his problem and less on the actual task of programming than is possible with assembly language.
Programming time and costs are drastically reduced, and training, documentation and program maintenance are
simplified. User application programs and standardsystems programs may be transferred to future computer sys-
tems that support PL/M with little or no reprogramming. These are advantages of high-level language program-
ming that have been proven in the large computer field and are now available to the microcomputer user.
PL/M is derived from IBM's PL/I, a very extensive and sophis- Hesa MACRO ASSc.t~;Lun PAGE 1
, /- SA1"1PL( f'ROGR",~
ticated language which promises to become the most widely I LOCATE ALL r"1~E :'IiUf1f1£kS S(i~:f.["~ 1 AND
I poT Rt.SULT~ !tJ lQUTr-I HEILE .6$ fCLLOWSt
::;r..
=
known and used language in the near future. PL/M is de- I PRlt;« I) iHU( If I IS A PRI"'l£.. ./
('lV-OS ~601
Sf A~TI
\ PRP1[(1) = 'HIVE;
K~ t •• 1
'* 1 lS l PRt~E -,
coding in PL/M. Results of this one short test shows a 28 to 1 reduction in 0r56 C7
~"~:"7 :!!.c.rtn:~:}
MOV
LX 1
P1.A
Iof, PP, :~,t:
coding time. This ratio may be somewhat high, overall ratio in a mix of pro- 0:"5A ft6
~j::'C c~
AnD
fo'!OV
L
A..a
C~5:J t:~
grams is more on the order of 10 to 1. ~J~1: r,C~0
I'IIJV
.C I
H/A
0
'!tl6~ r 1. HOV 9. L
0361 lO t10V A,H
e062 :iC~l Mvt H,l
, [NDI
kH'I~4 :"OOP41
G~54 ~&!. :'!2£uQl ~, I
0006 r:F HOV
1Il0"r,I 1,0 It~ R
0"6A r9 HOY
I [NOI
1lI06!) "''H5J:J JHP L.OOf' 0
PL/M Is An Efficient language (~:J t.t: ('10 I~E I
I (or I.
,
t: ;.v or PROG iiI. ~1 .1
~e6( I).~ H~ T
I
, DECLt~l£ j.:RP1(5'·) Dyrt I
Tests on sample programs indicate that a PL/M program can ,
uYTr.;
LITUl:'I.LY '1', r.t.5E t.1T£RAI..L.Y tiP'
J OlCL"~~(
O::C~J..;,':: j;:\,;£
(J,j~)
loss. The main reason for this savings in time is the fact
that PL/M allows' the programmer to define his problem in Assembly Coding
terms natural to him, not in the computer's terms. Consider Program Development Time: 7 hours
the following sample program which selects the ,largest of
two numbers. In PL/M, the programmer might write:
If A > B, then C = A; else C = B;
Meaning: "If variable A is greater than variable B, then assign A to variable C; otherwise, assign B to C."
44
A corresponding program in assembly language is twelve separate machine instructions, and conveys little of
original intent of the program. "
Because of the ease and conciseness with which programs can be written and the error free translation into
machine language achieved by the compiler, the time to program a given system is reduced substantially over
assembly language.
Debug and checkout time of a PL/M program is also much less than that of an assembly language program, partly
because of the inherent clarity of PL/M, but also because writing a program in PL/M encourages good program-
ming techniques. Furthermore, the structure of the PL/M language enables the PL/M compiler to detect error
. conditions that would 'Slip by an assembler. The PL/M compiler is written in ANSI FORTRAN IV and thus will
execute on most large· scale machines with little alteration.
46
6.0 PROGRAM LIBRARY
These program listings are available to all Intel microcomputer users. We encourage all users to submit all non-proprietary
programs to Intel to add to the program library so that we may make them available to other users.
* MCS-8 bootstrap loader and control program and PROM programming • Three dimensional blackboard stroke generator using MCS-8.
systems routine for the SIM8-01 and SIM8-01/MP7-03 PROM pro- • MCS-8 program for saving CPU states on an interrupt.
gramming system (A0860, A0861, A0863) [1] .
• MCS-8 program for controlling the timing for a serial input
• Floating point multiply routine for the MCS-8. from a teletype.
* Fixed point multiply routine for the MCS-8. • Fast Fourier transform program for the MCS-8.
• Fast Fourier transform program for the MCS..a using the algorithm by • MCS-8 Assembler for use on HP 2100
G.D. Berglund (see IEEE Transactions on Computers, April, 1972).
* MCS-8 teletype and tape reader control program (A0800) [1 ] .
• Debug Program
* MCS-8 memory chip select decode and output test program
• Binary Search Routine for the SIM8-01 card (A0801) [1].
• Interrupt Service Routine * MCS-8 RAM test program for the SIM8-01 card (A0802) [1].
• Analog to digital controller - MCS-8. * Single precision multiply/divide.
• MCS-8 driving an incremental X-V plotter such as those manufactured
by CALCOMP.
* Program written by Intel.. Program submitted by customers.
Note 1. These are the program numbers that should be used when ordering the programs in PROMs.
46
C. Execution of Programs from RAM on SIMS-01 Using Memory Loader Control Programs
The previous section provided a description of the preparation of tapes and the programming of PROMs for permanently
storing the microcomputer programs. During the system development, programs may be loaded, stored, and executed direct-
ly from RAM memory. This section explains these additional features.
ROM MEMORY
I
I I
~ ~~DDDDD
ROMe' .OW-255
ROM 1 256-511
A0860}
A0861 CONTROL
PROGRAM
I
be loaded with data without entering a new Request for Address Field xxx Initial Address
within RAM BANK 255 Final Address = 255
data entry command and new memory bank
Ij
Start tape reader and load data into RAM memory.
and address designations. Data entry must be in specified format. All format
Note that the CONTINUE command should checking is done at this time. If data is entered from
the keyboard, depress the RETURN key after manually
only be used when the subsequent RAM will entering each complete word.
be completely loaded with 256 bytes of data. Ready for new command CONTINUE command
For partial loading of RAM banks, always 1-- Start tape and continue loading data into
use the DATA ENTRY command. The con- J RAM memory. Data is loaded into the next RAM
BANK (n + 1) beginnin'g with address 000 and
tent of a RAM bank may be edited by using Ready for new command ending at address 255.
the DATA ENTRY command and revising
47
and re-entering sections of the bank. When a program is being stored in memory, the first instruction of the program should
be located at address Gte in a RAM bank. The entire RAM memory with the exception of the last fifteen bytes of RAM
bank 3 may be used for program storage in conjunction with the bootstrap loader.
Program Execution
The program which has been loaded into RAM may be executed directly from RAM.
COMMAND EXPLANATION
T DATA ENTRY - Enter data from TTY into a RAM bank
C CONTINUE - Continue entering 256 byte blocks of data into subsequent
RAM banks
R RE-ENTER - Re-enter a data word where a format error has occurred and
continue entering data
E EXECUTE - Execute the program stored in RAM memory
P PROGRAM - Program a PROM using data stored in RAM memory
48
x. MC8S-10 MICRO COMPUTER INTERCONNECT AND CONTROL MODULE
The MCB8-10 is a completely assembled interconnect, display and control switch assembly which elim-
inates all hand wiring associated with an MP7-03/SIM8-01 setup. With the additions noted below, it
becomes a self-contained system featuring the following:
1. General Purpose Micro Processor with I/O and Display (with SIM8-01, power supplies)
2. Automatic PROM Programming (with SIM8-01, PROM set A0860, A0861, A0863, MP7-03, power
supplies, TTY) .
3. Test System for checkout of programs, features single-step capability (with SIM8-01, power supplies)
The MCB8-10 shown in Figure 20 includes the following:
1. All interconnect circuitry necessary to implement the programming system described in Section VIII
of the MCS-8 Users Manual.
2. ·Connectors for the SIM8-01 and MP7-03 boards.
3. A zero insertion force 24-pin socket for PROMs to be programmed. Appropriate connections to the
MP7-03 connector are provided.
4. Teletype, keyboard, printer, tape punch and reader control connections to SIM8-01. Access to these
signals is provided by a 16-pin socket (TTY-J8). Aflat cable is provided for the connection.
5.Control switches (2) and logic necessary for true-complement of programmer input or output data.
6. Breakout of all computer signals to open sockets for easy access. This includes output ports, flags
(carry, sign, parity, zero), I/O decode (select I/O port 0,1,2,3), I/O selection, cycle control, two
decoded states (stop and wait), lower and higher order address.
7.60 bits of LED display from SIM8-01.
8. All control lines are "OR-tied" to MCB8-10 or its connectors for external control.
9. Two toggle switches are provided for the following operations:
a. For A0860 program (Bootstrap Loader and PROM programmer control ROMs), set the switches
as shown in the figure above.
b. For A0840 program (SIM8 Hardware Assembler) set S16* to "INTERRUPT" and S15* to IITTY".
c. For operation not using teletype as an I/O device, set S16 to IIINTERRUPT" and S15 to "IN-AO".
1O. Two memontary pushbutton switches are used for interrupt and single step function.
11. 8 toggle switches are provided for interrupt instruction input.
12. A toggle switch is provided for JlWAIT" control.
13. Two transformers, 115V AC/220V AC, capacitor, fuse holder and AC input jack wired to develop
the unregulated 80V DC which in turn is regulated on MP7-03 to 47V DC programming voltage.
14. A control switch for disabling the programming voltage.
15. Input jacks for applying externally supplied +5V DC and -9V DC to the assembly. (Note: internal
supplies are not included).
*See figure 24.
The setup for the PROM programming application is shown in Figure 21. The MP7-03 (rear) and the
SI M8-01 boards are installed in the MCB8-10.
49
Figure 20. MC8S-10
'RfWOR!< A
• • ~K£T
LQ~
GHD GHD +5V -9V -lIN£
• ••••••••••••
•• "
115V/220V
•
•
71
•
JI~
•• •
••• FI
I/l-
S.B.
JI~
• •
50
B. Programm ing System
Consider the actual programming (in the hardware sel)se) of the 17Q2A PROM in the example above. The system can
perform this function with the addition of an MP7-Q3 board inserted into the MP7-Q3 connector. An automatic pro-
gramming system which allows data entry from a keyboard or paper tape, automatic verification, listing of ROM contents,
and hands-off programming is provided by the further addition of three preprogrammed PROMs (AQS6Q, AQS61, AQS63)
and a modified teletype. The teletype modification consists of the addition of simple relay network described by the
MCS-S Users Manual. The procedure for programming a PROM, then, is as follows:
1. Insert MP7-Q3 and SIMS-Ql boards (SIMS~Ql loaded with PROMs AQS6Q, AQS61, AQS63).
2. Connect teletype to "TTY" socket.
3. Connect +5V DC, -9V DC and 115/22QV AC. Verify 115/22Q switch is in proper position.
4. Insert instruction "0.0.0.0.0.10.1" with the S toggle switches provided for interrupt instruction input .(i.e., RESTART
to location 0.).
Depress "INTERRUPT"
Insert instruction "110.0.0.0.0.0." (Le., NOP) with the same S toggle switches
Depress "INTERRUPT"
5. Set PROG.AC" to "ON"
6. Set data enable switch to "ENABLE".
7. Set the data "IN/OUT" switches to "TRUE" or "COMPLEMENT"
8. Place teletype in "ON-LINE" mode
9. Insert PROM
10.. Use AQS6Q program directives as described in Section IX of this Users Manual.
C. Program Debugging
Program debugging may be performed by using the "SI NGLE-STEP" switch and LED display provided.
The procedure is as follows: .
1. For executing program in ROM (or ROMs):
a. Turn off system power.
b. Set toggle switch to "WAIT".
c. Insert programmed ROM (or ROMs).
d. Turn on system power.
e. Set interrupt instruction input (using the 8 toggle switches provided) with an RST 0 (00000101)
instruction.
f. Depress III NTE R RUPT" switch.
g. Depress "SI NG LE-STEP" switch. This causes the CPU to execute the RST 0 instruction.
h. Continue to depress IISI NGLE-STEP" switch to advance the program one location at a time (a
three-byte instruction requires three depressions of the IISINGLE-STEP" switch).
2. For executing program in RAM:
a. Load program in RAM using A0860, A0861 , A0863 program.
b. Set toggle switch to "WAIT".
c. Set interrupt instruction input (using the 8 toggle switches provided) with a JMP instruction to
select the desired RAM bank where the program has been loaded in step a. Ehter the three byte
JMP instruction as follows:
Load 1st byte (01000100).
Depress "INTER RUPT" switch.
Depress "SI NGLE STEP" switch.
Load 2nd byte.
Depress "SI NG LE-STEP" switch.
Load 3rd byte.
Depress IISI NG LE-STEP" switch.
Set the 2nd and 3rd bytes according to the following examples:
For BANK 0-
00000000 (2nd byte)
00001000 (3rd byte)
For BANK 1 -
00000000 (2nd byte)
00001001 (3rd byte)
For BANK 2-
00000000 (2nd byte)
00001010 (3rd byte)
51
JI J"
I i
EJ
I ,
r'BzEJ I§]
I I
~
@
I I I '
[>I.TA..
38 .zz
8
I '
F2otJ\ Y~\oA02.Y
~8
! ! ~
.58 0
a
I I
.. !~: I I
! t
"'' 1' 18 Gj
1t-l"T'EIi!2UPT \""-1 I
.@
~
QUTPU"T POIZ. T "
I I
!EJ GJ
I I
Db.1A. Il.JPu,
: !
~
POti:T tJ
4~
5"8
l f
~
<-8 bj
I I I I
l~ .. 5 ~
JI JII
q"Ii
JI
tJ~
I~ ~
2~ ~
iU.W\
3~ ~
~
p ....,. ... I .....
4~
~
I '
s~
.~
I I
I '
GJ
I I
,~ ~
52
,II ,I4
5~T" ~IJWC~~-----_~
~8
: l
6J
! :
"~ tq
2~ ~
sr§ ~
!!AU CWIP 'SIE .. cT " I ,
4 0
I I
0
I I
5@ ~
~~ ~ J2 sa
sl;j ~f---------l~
1 I
4
8 ~ -------------lb]
5~ ~ I------------~
I I I I
0~ ~
P'20...., TO 1!!IQ
Peo&rz... ..
1~
I ,
., W .
I I 4~o LED '2.
t;o 1 1--_---1-----4 ~~~w.~;'o:.~ @]f--+~-IZ.-
..-z-------
.r/~1'
SYl-Jc' OUT ~I--_________"""
I •
'h ",-O<..IC 152l___-----------
(io.LiEe.IJA'TCa.oc..tcn
I I I I
C,,-.,::,,~~,,)GJ---------""
I/o IXCOOE OUT
~+~ L£D I~ ~
h,'_,'
~~ ~
I I
~~------------~~
¢1@]
..1'1
0
I I
eaA.OY' ....
D. Procedural Precautions
1. CAUTION: Do not remove DC power while programming AC power is on. Permanent damage to
MP7-03 and PROM may result.
2. The MP7-03 board should be removed when SIMB-01 is not programmed to drive it.
3. Power up and power down for the programming system should be performed-as follows:
a. +5 V DC and -9V DC on
b. Restart procedure:
-Restart instruction 00000 101
-Interrupt
- Restart instruction 11 000 000
-Interrupt
c. TTY on
d. Programming AC on
e. Insert PROM
f. Execute
g. Remove PROM
h. Programming AC off
i. TTY off
j. +5V DC and -9V DC off
(S)
0000
~ ~---------------------~
1 1
0
~
T'
&'
<1
aE
.c.- .'
&"1.
Ii~
+
0
w~ 0
-
.4-
_6
,{p 0
•
C'
J>
I"
FlO
-~ ~~ ~~~
J'~ J4
~J'
~ ~
-"~
[g 0
1 1
0
1 1 ~ 0
1 1 lor [g ..
~
'D~I 0
~
'Oro I'D
D IsO
~
0 Q Q 00 00000000000000
~O"
0
'" ,..' ,. " ,. .. ~"
,.
C;;;'o;oo~'~' oo~o~o~~ Q oooo~~~~ QQ99Q9Q9,. '" 40 ., •• ., ••••
0000
...,......"""
~
~~~
)
~oQ ·SJ
Q '" ~ ~"
9~9
CD
Figure 24. MeSS-'O Assembly Drawing
54
MC8S-10 INTERCONNECT AND CONTROL MODULE
SIMS.Q1 MCBS-10 SIMS.Q1 MCBS-10
Pin No. Connector Symbol Description Connection Pin No. Connector Symbol Description Connection
57 Jl DS RAM DATA IN DS J5-6
2,4 Jl +5V +SVDC POWt:R SUPPLY
55 Jl D6 RAM DATA IN D6 J5-7
84 & 8b J2 -9V -9VDC POWER SUPPLY
GND 54 Jl D7 RAM DATA IN D7 J5-8
1,3 J2 GROUND
J5-16 48 Jl WAn' STATE COUNTER J4-1
60 Jl MDo DATA FROM MEMORY /1 BIT /1
BIT 1 J5·15 49 Jl T STATE COUNTER J4-8
63 Jl MDl UA'!'A FROM MEMORY 1 3
17 Jl MD2 DATA FROM MEMORY 2 BIT 2 J5-14 46 Jl
Tl STATE COUNTER J4-7
55
APPENDIX I. SIM8 HARDWARE ASSEMBLER
1.0 INTRODUCTION
The SIMS Hardware Assembler is a program which translates a symbolic assembly language into an octal representation
of the SIMS machine language. An auxilliary .program then translates the octal object code into the "BNPF" format
suitable for bootstrap loading or PROM programming. The program operates on the SIMS-01 micro computer system
with an ASR 33 teletype and utilizes all memory of that system. The components included are the following:
S PROMs (1702): A0840, AOS41, .... , AOS47
S RAMs 1101): Last 256 bytes of assembler
24 RAMs (1101): Name table or object code
Upon purchase of the assembler the customer will receive the following:
S PROMs (AOS40-AOS47) or S paper tapes
1 "SIMS Hardware Assembler - page S" paper tape (AOS4S)
1 "BNPF Tape Generator" (OCTAL) paper tape (AOS49) \.
1 "BNPF Tape Generator" (SOURCE) pa~r tape (AOS50)
1 "BNPF Tape Generator" Listing
1 SIMS Hardware Assembler Listing
1 SOO8 Users Manual
A system block diagram is given in Figure 1.1.
ROM MEMORY
I
0 1 2 3 4 5 6 7
~ MANUAL
CONTROLS
~
0000000000000000
r--
BANKO
00000000 L.I POWER
RAM
MEMOR Y
BANK 1
00000000 ~ SUPPLY
BANK 2 00000000
_BANK 3 00000000 L.I
I~
...r TTY
MR33
SIM8-01
The assembler accepts the source text from the paper tape reader on the first of two passes and constructs a name table.
On a second pass the assembler translates the source text using the previously determined name values, creates an octal
object paper tape, and if directed, writes the object code into Read!Write memory.
The assembler's commands allow for TTY keyboard manipulation of R!W memory and execution of stored programs
so that program debugging may be undertaken directly after assembly. If a "BNPF" tape is desired, an auxilliary "tape
generator" program may be loaded and executed by the assembler.
2.0 DESCRIPTION
2.1 Assembly Passes
During Pass 1 the assembler reads the paper tape, constructs a name table and generates a listing. The listing consists of
a line by line copy of the source text with each line prompted by an assembly address. When the assembler detects
a source termination the process is stopped and a symbol table listing all labeled lines is generated. At this point
no diagnostics have been acted upon.
56
During pass 2 the assembler generates an object code by reading the source tape and interrogating the name table
for all labeled addresses. The object code is written into pre-assigned R/W memory or onto paper tape at the operator's
option. Diagnostics performed during pass 2 result in omission of the erroneous line and a printout signaling the error.
Errors detected are given below:
Detectable Errors
1. Unrecognized mnemonics
2. Unidentified labels
3. Illegal restart instruction
4. Non numeric literals
5. Illegal I/O instruction formats
2.2 O.,erating Procedures
In addition to being an assembler, this program offers some of the features of a teletype operating system. Its commands
offer the operator a useful interactive mode. The commands "LOAD". "DUMP". and "BEGIN" allow the operator to
read, write, and execute small programs directly from the keyboard;
The assembler requires a source text presented via a teletype reader. The first step of the assembly procedure is therefore
the preparation of a punched paper tape version of the source text. (See Section 9 for details.) This is accomplished
in an "off line" mode.
Before proceeding with the lion line" operations the hardware configuration must be correct. This requires a system
equivalent with one exception to the SIMB-01 portion of the MP7-02/SIM8-01 PROM programming system described
in the SOOS Users manual. The exception is the teletype connection. On the programming system the teletype transmit
,line drives both the interrupt line and the TTY buffer. The hardware assembler, however, must receive TTY data from
the buffer only, so the interrupt must not be connected. A detailed description of the required connections for the
Hardware Assembler is given in Section 10.
The assembler is a program which resides in nine 256 byte blocks or "pages" of memory; On the SIMS-01 eight pages
are permanentJy stored in the "read only" section of its memory. The ninth page must be reloaded into R/W memory
at each "power on" and becomes the second step in the operating procedure. To accomplish this, the paper tape
containing the octal version of "SIM8 Hardware Assembler - Page S" is placed in the reader. If the "interrupt" input is
stimulated. the assembler will bootstrap its 9th page into the R/W memory.
The assembler is now ready to execute commands.
The third step of the procedure is pass 1 of the assembly. To accomplish this the source tape is placed into the reader and
the command below is typed.
ASSEMBLE: 032: 000:
The numeric values select the memory origin point for the assembly. When the reader is placed in the "start" mode the
assembler will read the tape, generate a listing, and assemble a name table.
The fourth step is pass 2 during which the assembler rereads the source tape and compiles the object code. Line
addresses and an octal representation of the object code is printed on the TTY and, if desired, simultaneously loaded
into memory. Pass 2 may be initiated by typing "LOAD:" or "LIST:". "LOAD" will result in loading of memory
and "LIST" will not. If the paper tape punch is enabled, an octal tape of the object code is created. Diagnostics are
performed by the assembler during this pass and errors are flagged by a"?".
At this point the errors have been flagged and an edit of the source tape may proceed. If the program has been loaded
into memory interactive editing is possible. This procedure is continued until the assembly is correct.
If the "BNPF" formatted object tape is required, an auxilliary program must be loaded into memory and executed. The
"LOAD:" :command is used to load the program "BNPF Tape Generator" into memory. The octal tape (2~6 character
maximum) is then loaded into another area of the memory with a second "LOAD:" command. The tape generator
program is executed by asserting the command "BEGIN:". The tape generator program accepts a three digit octal value
terminated by a colon as a start address and begins to translate the memory contents into the "BNPF" format. A print-
out and a paper tape will be generated. Sample listings generated during each step described above are given in Figures
2.1, 2.2, 2.3, 2.4, and 2.5. Another example with a step-by-step procedure is given in Section 9.
57
ASTST LAB
LCM
JMP ASTST
END
The assembler operates with the 64 character subset of ASCII generated by the ASR-33 teletype with the commercial
at sign, @, given specIal significance and control characters, carriage return, and linefeed. Instruction source fields utilize
a subset of the above including numerics, upper case alphabetics, the colon, quote sign, commercial at, and the control
characters.
The MCS-8 instruction mnemonics as described in the MCS-8 manual and pocket guide are recognized by the assembler.
The instructions set is· augmented by three pseudo operators, "PAM", "ADR" and "LOC" which simplify the assembly
process.
Symbolic addressing and selection of constants are provided by the definition of labels and use of the pseudo operators.
A comment field is also provided.
58
3.0 ASSEMBLER COMMANDS
Five commands are used to direct the assembler which provide for teletype/memory interaction, assembly, and execution
of loaded programs. They are defined as follows:
LOAD: The LOAD command is used to store keyboard or paper tape entries into consecutive locations beginning with an
address specified by an address modifier. The modifier consists of 2 three digit octal numbers each terminated by a colon.
The first defines a page address (see memory organization - section 5.0) and the second defines the character address.
The format, described below, requires that leading zeroes be typed. Note that the character address has the range 000 to
377 8 = 256 10, LOAD: ,0',':, ,~S:,
Page Char.
Characters of the input tape must be 3 digit octal with leading zeroes, terminated with a colon. During an assembly the
LOAD command may be used without a modifier to initiate pass 2. The source tape is then loaded and the object code
is printed on the teletype printer and stored into memory as well.
DUMP: The DUMP command is used to display memory contents on the teletype printer. The command-reql!ires two
address modifier pairs similar to that described for the LOAD command. The first pair is the address of the last content
to be printed and the second pair is the first. The format is as follows:
Last Address
, First Address
,
DUMP: ,0',1:, ,O~S:, ,01,1: , ,O~:,
Page Char. Page Char.
The printout is 3 digit octal with S characters per line. Each line is prompted by a 6 digit octal memory address.
ASSEMBLE: The assemble command initiates pass 1 of the assembly. It is associated with an address modifier which
establishes the origin of the program to be assembled. This address need not be related to the usable memory of the
SIMS-01 card performing the assembly. The format of the command is described below:
Origin
I ' i
ASSEMBLE: ,O~2:, ,O~:,
Page Char.
LIST: The LIST command is recognized only during an assembly. It will initiate pass 2 in such a way that the source
tape is loaded and the object code printed but not stored in memory. The LIST command does not require an address
modifier. Its format is simply:
LIST:
BEGIN: The BEGIN command will initiate execution of a program located at the address specified by its address
modifier. If an RST<I> instruction is hardwired into the interrupt input port, assembler control may be recovered
by generating an external interrupt. It should be noted that the ninth page of memory is not protected, hence care in
execution of a secondary program is warranted. The format of the instruction-is as follows:
Address Modifier
BEGIN: ;Oi2:,' ,~O::
Page Char.
59
1 PAGE = 256 BYTES = 2K BITS
T 001:
002:
000:
000:
000:
001;
002:
377:
377:
377:
003: 000:
003: 377: 1702
ASSEMBLER 004: 000: PROM
(DARK) 004: 377:
005: 000:
005: 377:
006: 000:
006: 377:
007: 000:
,
007: 377:
010: 000:
h J~
010: 377:
011 : 000: c:-:::.:-:;;:_:
h *011: 020: PAGE 9
377: 1101
NAME TABLE 011 :
012: 000: R/W
AND PAGE 10
OBJECT CODE 012: 377:
013: 000:
j PAGE 11 , ,r
01 :3: 377:
NAME TABLE BEGINS AT 011: 020:
SPACE AVAILABLE FOR VOLATILE AND-
OBJECT CODE LOAD UNPROTECTED
DURING ASSEMBLY = 752 - ax (Number of Names)
MAXIMUM NUMBER OF NAMES = 94
The assembler resides in the first 9 pages of memory. Two bytes of the 10th page are also dedicated. The first 8 pages,
number 0 through 7, are preprogrammed read only memories and the 9th resides in read write memory, page 8. The last
page is volatile and must be reloaded if power is removed. The memory is unprotected so care must be exercised in
selection of the assembly origin if the object code is to be stored in memory.
The name table created during pass 1 begins at location 011: 020: and displaces 8 contiguous locations for each entry.
The usable RIW memory for loading of object code in pass 2 diminishes as the table develops. The maximum number of
names allowed is 94.
6.0 FORMAT
The assembler is a line-statement, fixed format assembler. Each field of the source statement is defined by its position
in the line. If the positional format is violated the assembler will reject the statement. The format, depicted in Figure
6.1, provides fields for a 6 character label, a 3 character instruction, a 6 character operand, and variable length comment.
The line is terminated by a carriage return followed by a linefeed but may be entirely cancelled by a commercial at
sign, @.
Detailed descriptions of the fields are provided in the following sections.
LEFT
-...--\ - - + - - ~ \~I /----+_____1_. . . /
1 - CrLf
60
6.1 Labels
Any line of the assembly may be aSsign~ a label by placing a one to six character name into the label field. The label
field is the first six, positions of each line. If no label is to be assigned to the line, the fieJd must be filled with spaces.
Each entry into a label field must satisfy the following requirements;
1. The name must be left justified in the field.
2. The name can contain any character except the commercial at sign, @.
3. All unused positions in the field must be filled with spaces.
4. The name must appear e~tly once in a label field of the source text.
5. The total number of names for a single assembly cannot exceed 94.
nnnnnn
\ \ JMP n
II
START n COMMENT
/ \
PAGE 4 CHARACTER 6
RESTART: The assembler operates on the operand field of a RESTART instruction in the same manner as on the
operand field of a JUMP or CALL instruction. Its assembled value, however, must be consistent with the 6 bit "AAA
000" format utilized by the processor. If not,an error indication will result.
IMMEDIATES: All Immediate instructions such as LAI can have an operand field occupied by a three digit octal
number (left justified within field) or a character surrounded by double quote marks. (See section 6.3) If an octal
number is found, it will be assembled directly as the immediate value. If a quote mark is found in the first position
of the field, the ASCII equivalent of the character in the second position will be used as the operand value. If the first
character of the operand field is neither a number or double quote mark, an error message will result. Examples of the
formats are given below;
LEFT JUST I FI ED
NUMERIC
nnnnnn LAI n
\ 567 nnn COMMENT
/
QUOTE MARK IN
FIRST POSITION
IMMEDIATE VALUE IS AN
ASCII A = 11000001
61
INPUT: The INPUT instruction may have either a name or an octal digit with two leading zeroes. The three digit
numeric value is of the form "OOX" where X can vary from zero to seven. The formats are as follows:
f
CONSTANTS
The name must assemble to a value between 0 and 7, and numerics must be within the specified range or an error flag will
result.
OUTPUT: The OUTPUT instruction format is similar to the INPUT instruction but range of operand values is ·Iarger.
Numeric operands may assume values'from octal 010 to octal 037. The leading zero is required. Names must assemble
to values within the specified range or an error flagwill result. Examples o"f the formats are given below:
CONSTANT
/\ MAXIMUM
VALUE
HALT: The HALT instruction may be used as a pseudo operator. If the operand field is blank, it will assemble to its
normal value of 000. If a non-zero value is placed into the first three digits of the operand field, that value will be
assigned. If a quote mark is found in the first position of the operand field, the ASCII value of the digit in the
second position will be assigned.
SOURCE
STATEMENT
n n n n n n PAM n 010377 COMMENT
EOUIVALENT
SOURCE
nnnnnn LHI n 010 nnn COMMENT
STATEMENT
62
ADR: The instruction "ADR" is non-executable and may appear anywhere in a program except the first instruction.
The address specified in the operand field will be assigned to the name specified in the instruction. With this instruction,
names may be assigned to external subroutines and I/O units. An example is given below:
SOURCE
STATEMENT
START n ADR n 0013n COMMENT
. RESULT OF
ASSEMBLY
4-....---- 0013n
START ....
LOC: The instruction "LOC" is nonexecutable and must only appear after the last executable instruction. It is used
to reserve blocks of memory locations directly after the assembled programs and to assign a name to the first location.
The name field should contain the desired name and the operand field should contain two three-digit octal numbers to
indicate the length of the array. The form of the number is the same as that used to indicate an address. For example,
the number 001000 would reserve 256 locations and the number 000377 would reserve 255 locations.
END: If the instruction END is encountered by the assembler it will terminate the current pass in process.
. HALT: If the operand value of a H LT instruction is non-zero it is treated as a pseudo operator. Section 6.2 provides
a detailed description.
Diagnostics performed in pass 1 and pass 2 may result in error flags during pass 2. If an error is detected, the invalid
source entry followed by a question mark is printed. If the error exists in the operand field but not in the instruction
field, the object code for the instruction will be printed and punched. The assembly must therefore be repeated after
.source text corrections are made.
The conditions that result in error flags are described below:
INVALID MNEMONICS
Every mnemonic fi~ld must contain three letters which can be exactly iqentified as an instruction; otherwise, it will be
rejected as an error.
UNDEFINED NAMES
If a referenced name is not found an error message will result.
INVALID RESTART ADDRESS
The RESTART instruction operates on the operand in the same manner as the JUMP and CALL instruction, except that
it requires that the resulting address be one of the valid restart loc~tions. If this is not true, an error message will result.
INVALID OPERAND FIELD FOR IMMEDIATES
For immediate instructions, the first character of the operand field must be a number or a quote mark.
INVALID OPERAND FIELD FOR JUMP AND CALL INSTRUCTIONS
Operand fields for JUMP and CALL instructions must be a valid name or an octal number.
INVALID OPERAND FIELDS FOR INPUT/OUTPUT INSTRUCTIONS
Section 6.2 defines valid operands fields for the input and output instructions. If those definitions are violated in the
source text, error flags will result.
The assembler generates an octal output tape representation of the object code. Each byte is represented by three digits
terminated with a colon (see Section 9). Lines of 8 bytes are prefixed by the address of the first byte. The address is
not terminated by a colon and will therefore not be accepted by the assembler "LOAD" instruction.
The octal listing is compact and intended for editing operations. To perform standard Intel programming functions, a
"BNPF" formatted tape version of the octal tape must be prepared. To accomplish this, a "BNPF Tape Generator"
program supplied by Intel, and a page of the octal object code is loaded into memory. The BEGIN instruction is then
used to execl:Jte the "Tape Generator" program which reads 256 bytes of memory, translates them to a "BNPF" format,
and transmits them to the teletype for printing and punching.
As an option a "BNPF Tape Generator" source tape is provided so that the ciJstomer may assemble the auxilliary
program with an origin of his choosing. Section 11 provides a detailed, step-by-step description.
A detailed description of the procedure and tape outputs is provided in Section 9.
63
9.0 SAMPLE ASSEMBLY WITH A STEP-BY-STEP PROCEDURE
The sample program used in this description is not executable, but includes every instruction, several register pair selections,
erroneous instructions, and the pseudo operators.
ASSEMBLE: r:J
/
I
032:
,
r-1 000: I
64
ASSE~EI 1321 19S.
~TST LAB
LeM
Ll'ID
FIRST CHARACTER LEI 123
LMI .....
MUST HAVE NA~E INK
Del.
ADA
ACB
SUC
SSD
NDE
~
~L
C~
ADI "A"
A~I "S"
SUI "COO
SSI "0"
NDI "E"
XIII HI='"
O'lI "G"
CltI "If"
moe
!'lIlC
hI.
!'tAil
JftP JMP t21ass
J"C JMJt
J,.z Jl'IIt
JFS Jl'IP
JF:P JKP
INA
INK
DCA
DCM
LAI OONTROlCHARACTER
Jl'Ip ASTSY
CAL "DELETING" LINE
'lES TYOT
'lES (lnGU'1
LF'M
CAL CAl.
ADI 'A'
65
AS5EIIB1.lh 132. 1f'8._
LINE ADDRESS~ES 832 IQIGl 45TST 1.4.13 - KEYBOARD INPUT
ASSIGNED BY 132 '81 I.CM
132 III I.IeD
ASSEMBLER 832 883 I.EI 123
132 1185 I.MI .....
832 " , INK
112 fill DC 1.
1f3! III 404
1321U 4ca
e32 8ll SUC
.32 n .. sao
832 81.5 NDE
'32 "l6 XltH
832 111 ORL.
132 821 CPK
832 .21 401 "4"
932 123 4CI "B"
133 US SUI "C"
1132 1121. sal "0"
1132 .31 NDI "E"
.31 .33 X'lI "P'"
832 135 O'lI lOG"
.32 831. CPl "H"
832 8 .. 1 IU.C
132 8 ..2 R"IC
"32 .... 3 'l41.
.32 "'.. R4'l
832 11&5 JMP JKIIt 828811
132 .58 JP'C JfiCJt
832 853 JP'Z JIIp
132 856,. JP'S .....,.
"32 961 J"P JrtP
832 86 .. JTC J!nt
832 861 JttJKP
832 812 .ITS JKp
132 ,,5 JTP .IMP
832 III C41. C41. eM.
832 t83 CP'C C41.
832 I.'~ crt C41.
132 ttl CF'S CM.
1132 U" CP'P C41.
132 lI1 CTC C41.
&32 l2! cn eM.
1132 l2S CTS C4l.
fIl2 l31 CTP 111113111
.32 1.33 'tU
'3! 13" 'lTC
132 ll5 fttt
.32 136 QTS
'32 131 lItTP
832 ..... ltP'C
"32
'32
l".
t ..2
V''l.
'l"S
332 t·U RP'P
832 ...... Itsr UtlU
332 1."5 ''is! TTVOT
832 l ..6 TTVOT 40ft 818861
832 l ..6 INP It3
INP TYIN
832
831
132
LS'
.... '
1.51
OUT 833
OUT TYOT
1932 lSI H1.T
.32 l53 H1.T 123
832 U" H1.T "4"
832 ,,5~ P4M TST4Y
132 161 P4M 821123
332 165 THE "01.LOWING INSTRUCTIONS 4RE IN ERROR •
'32 l65 IN4
132 l66 INM
832 l61 DC4
832 1.1' DCIt
832 1.11 WU
t3! t13 JMP 4STSY
132 .,~ C41.
832 211 RES TYOT
332 21! "lES UI't.
1f32 213 1.P'fiC
132 21" CM. C41.
132 281 401 '4'
831211 THE r01.LOVING INSTRUCTIONS A~E NONEXECUTAB1.E •
83221.1
332 2l!
TST1.C I.OC
TS'TAY I.OC
I ""Ie
"1'"
833 212
833 213
£NDI.C 1.0C
tYIN AOft 883'"
I 'e••,
'33 all TYOT ADft 933""8
133 213 END
...
ASTST 1132
JIIP 832
CAl. "32
Tr(OT "'
T5T1.C n2 > SYMBOL TABLE
TST4Y 132
DlDLC .33
tyUt 8.3
TVOT .33
1.1$1'1
KEYBOARD~
INPUT 1.0AOI "32. 831iJ.
B32 1318 3n. 327. 37.1. 946. 123. e76. 256, ~5".
132,9UJ 1361, 21", 21le 222. 233. 24 •• 255. 266.
332 1iJ21 277, 9"". 3tll II •• 3321 1124. 3"3' "3.,
.,32 If3B 3'14, lUlU 3~5, '54, 3136, 164. 387: 37,'"
"32 U"
"32 "5"
1113.
U'"
1312. 012, Gl2!' 832.
1l4S, 132, I'" , '145, I'''. lUI. 12".
132. 12~, 'us.
332 iiJ69 "321 131, us, 332., 1.. 0. Gl4S, 132. 153.
332 17~ a4S. a321 16e, Gl.S' 1432, 173. 1t"5. 1432, OCTAL OBJECT CODE
332 l~" 186. 1.1'''' 1432. 132. UtI a32. 112. lB".
132 lie U21 122: 1.39. a32, 1321 U3. a32. 142.
U2 U9 Ulh n2. 1~2' 1131. 332. 162. U3. 332.
n2 13~ 172c eUI 113. 037, ""'3. "531 '163: ~13,
Ql32 l4e a"3. 1113. &23. ~33a 37Sa 1365. 101. 1"1:
932 l58 1!t1. 161, Q1~fh 123, 1"1. 356. "32. 366:
"32 16" 212' "'SS. "2B. 13661 123a
PARTIAL OUTPUT INA 1
JM,. A9TSY ?
RESULT OF
CAL. ?
DIAGNOSTICS
'tES 1'YOT 7
\
I.rrK 7
ADI 'A' 7
67
STEP 6. CREATE A "BNPF" PROGRAMMING TAPE
The octal object tape of the assembler is not suitable for PROM programming or bootstrap loading so the next step is
the conversion of the octal tape into a "BNPF" formatted tape.
In summary, this requires the following:
1. Loading of a "BNPF Tape Generator" program (Tape A0849) into R/W memory~
2. Loading a block of 256 bytes of memory with octal object code.
3. Executing the "BNPF Tape Generator" program which creates the desired output tape.
A detailed description is provided below:
The "BNPF Tape Generator" program reads 256 memory locations, translates them, and sends them to the TTY. If the
punch is on, a "BNPF" tape will be generated. The RAM must therefore be loaded with the octal data that must be
translated. The load command; LOAD: 012: 000: was used to load the test tape into locations 012: 000: to 012: 157:
as shown in Figure 9.4. Note that the load instruction does not prefix the data. Also, RAM overlap onto "BNPF" at
013: 000: arid page 8 at 010: 000: must be avoided by proper addressing. With object code loaded a translation may
now be accomplished. The begin instruction is used to jump to the "BNPF" program loaded at 013: 000:. The punch
is turned onand 256 lines of "BNPF" tape are generated. The command; BEGIN: 013: 000: was used as shown in
Figure 9.5. Long tapes must be processed in blocks of 256 eight bit codes.
't';T TVOT ?
'!5T 33'31" I 7
L.FN
332 1119 136,
CAL. CAL. ?
1iJ84.
ADI 'A'
68
. ~ START OF PROGRAM
~ TO BE EXECUTED
.
I atGIN. ~13. 11'''. .
KEYBOARD INPUT L 3121 • START OF DATA BLOCK
~'" B~~NNNPF
'8. B~~NPYPPPF
132 B~PPPPNPPF
183 BlllNPItNPPUP'
0... BNPNPNNPPF
885 BNN~~PPPNP'
836 BPNPNPPPHF
3~1 8NNPNPMNNF
lUI BNf'lPPNlfNJIP'
all BPNNNNNNNF
312 BPNNNPNNPF
31.3 BPNNPNNPNF
346 BNNNNNNNNF
341 BNNNNNNNNP'
35" 3NNNNNNNNF
351 8NNNNNNNNP'
3Sa 8NNltllllNllPJl' . - - - - - - - - - OUTPUT
353 BNNNNNNNNF
354 BNNNtrNlfNNF
355 BNNItNNNNYF
356 BNNNIftJNNYF
351 8NNNNNNNYF
36. 8rPPlflfNNNF
361 8NPNNNlfNNF
362 8MNNNNNP~F
363 BNIINIINNNNF
36'- BNPNNIINNNF
365 8NNNIIMNNNJI'
366 SNNNNNPMNP'
361 3NNNNNNNNF
37( 8lfNNNNPtfPF
311 BNNNNNPNNF
·312 8NNNNN8NNT
313 8N~NNNNNNF
3'" 9NPNNNNNNF
315 BNNNY"N~PF
376 BIIPNNNNlftIlI'
377 8PPP~PPF
69
10.0 HARDWARE CONFIGURATION DETAILS
The basic wiring required for the assembler is shown in Figure 10-1. This is compatible with the PROM programming
system with two exceptions:
1. The auxilliary interrupt input (J1-1) is not used by the assembler and must b~ grounded. The PROM Programming
System software utilizes this input to initiate a teletype receive sequence. A switched selection is recommended.
2. The interrupt instruction port can be permanently wired as an RST instruction for the assembler but must be
selectable for the Bootstrap., Loader program. To satisfy both, it is recommended that switches be used to drive
inputs J1-7, 9, 18, 20, 24, 27, 38 and 40 between ground and +5V.
+5V -10V
J2-B4,86
------I J1-2,4
J2-1,3
AUX. INTERRUPT
INPUT. (This is an
exception to the
MANUAL
PROM programming
INTERRUPT
system.)
RESTART
INSTRUCTION
(Recommend use
of switches to
ASSEMBLER select these levels)
J1-1
The tape "BNPF Tape Generator" (source), tape A0850, may be used to relocate the "BNPF Tape Generator" object
code. The object code, A0849, provided has origin 013: 000: and may be changed if desired.
The assembly process described in Section 9 is applied to the source tape A0850. At Step 3 (Section 9) of the
assembly, the origin is changed to the value desired. When Steps 4 and 5 are completed, an object code for the
relocated tape generator is created. The object tape may then be loaded at the new location using the "LOAD"
command and executed using the "BEGIN" command_ (See Step 6 of Section 9).
70
APPENDIX II. MCS-8 SOFTWARE PACKAGE - ASSEMBLER
A. Assembler Specification
1.0 GENERAL DESCRIPTION
The 8008 Assembler generates object programs from symbolic assembly language instructions. Programs are written in
the assembly language using mnemonic symbols both for 8008,instruction and for special assembler operations. Symbolic
addresses can be used in the source program; however, the assembled program will use absolute addresses.
The Assembler is designed to operate from a time shared terminal with input by paper tape or directly from the terminal
keyboard. The assembled program is punched out at the terminal in BNPF format paper tape.
This routine is written in FORTRAN IV. It may be procured from Intel on magnetic tape. Alternatively, designers
may contact several nationwide timesharing services for access to the programs.
The program specifications are presented first and are followed by a user's guide for some of the timesharing'services.
1.1 Assembler Use and Operation
Source programs are written in assembly language and edited prior to assembling, using the time sharing EDITOR program.
Edited programs can then be assembled. The Assembler processes the source program in two passes.
!
The Assembler generates a symbol table from the source statement names in the first pass and checks for errors.
In the second pass the Assembler uses the symbol table and the source program to generate both a program listing and an
absolute binary program. Error conditions are indicated in the program listing.
1.2 Symbol Usage
Symbols can represent specific addresses in memory for data and program words, or can be defined as constants. Symbols
are used as labels for locations in the program or as data storage area labels or as constants.
Expressions can be formed from a symbol combined by plus or minus operators with other symbols or numbers to
indicate a location other than that named by the symbol. Every symbol appearing as part of an operand must also
appear as a statement label or else it is not defined and will be treated as an error. Symbols that are used as labels for -
two or more statements are also in error.
1.3 Absolute Addressing
Object programs use all absolute addresses. The starting address is specified by a pseudo instruction at the beginning of
the source program. All subroutines referenced by symbol in the main program must be assembled as part of the main
program. Subroutines not assembled with the main program must be referenced by their starting addresses.
1.4 Program Addresses
Consecutive memory addresses are generated by the Assembler program counter and assigned to each source statement.
Two byte source statements are assigned two consecutive addresses and three byte source statements are assigned three
consecutive addresses.
The starting address is set by an ORG pseudo instruction at the beginning of the source program.
1.5 Output Options
The Assembler output is stored in files and can be read out in several forms under control of the time sharing EXECUTIVE.
Some of the options available are:
a. binary paper tape at the terminal;
b. card output at computer center;
c. program listing at the terminal;
d. program listing at the computer center;
e. symbol table listing at the terminal;
f. symbol table listing at the computer center.
71
Each statement is terminated by an end of statement mark. On punched paper tape a carriage return and a line feed punch
term inates a statement.
The maximum length of any statement is 80 characters, not including the end of statement mark. The instruction must
end prior to character 48 but the comments may extend to column 80.
2.1 Symbols
Symbols are used in the location field and in the operand field. A symbol is a sequence of one to six characters repre-
senting a value. The first character of any symbol must b~ an alphabetic. Symbols are comprised of the characters A
through Z, and zero through nine.
The value of a symbol is determined by its use. In the location fie1d of a machine instruction or a data definition, the value
assigned to the symbol is the current value of the program counter. In the location field of an EQU pseudo instruction,
the value of the operand field is assigned to the symbol.
An asterisk is a special purpose symbol. It represents the location of the first byte of the current instruction. Thus if
an operand contains *-1, then the value calculated by the Assembler is one less than the location of the first byte of the
current instruction.
Examples of legal symbols:
MAT START2
MIKE Z148
TED24 RONA3Z
*
72
2.6 Operand Field
The contents and significance of the operand field are dictated by the operation code. The operand field can contain the
following:
blank
symbol
numeric
expression
data list
The operand field follows the operation code and is separated from that code by one or more blanks. The operand is
terminated by a blank or an end of statement mark if no comments follow the operand.
Examples of operands:
DANI MIKE2-MIKE4 + 1
1438 7738 + X2
1869 *~1
RON+338 AA44-228
(blank)
2.7 Comment Field
The comment field is optional. It follows the operand field and is separated from that field by at least one blank. If
there is no operand field for a given operation code, then the comment field follows the operation field. Once again at
least one blank separates the operation code and the comments. Comments must terminate on or before the 80th charac-
ter position. If the comment extends beyond that position, it will be truncated on the output listing. Comments up to
the 48th character position are printed along with the source code. If comments are in positions 49 through 80, then
they are printed on the next line.
3.0 MACHINE OPERATION
Each instruction in the 8008 repertoire can be represented by a three letter mnemonic in the 8008 assembly language.
For each source statement in the assembly language (except for some pseudo instructions), the Assembler will generate
one or more bytes of object code. Source language statements use the following notation:
Label Optional statement label;
Operand One of the following:
data A number, symbol or expression used to generate the second byte of an immediate instruction.
address A number, symbol or expression used to generate the second and third bytes of a call or jump
instruction.
device A number, symbol or expression used to define input/output instructions to select specific devices.
start A number, symbol or expression used to define a starting address after a restart instruction.
Comment Optional comment
( ) Information enclosed- in brackets is optional.
3.1 Move Statements- - 1 byte, or 2 bytes when operand is used.
Move instructions replace the contents of memory or of the A, 8, C, 0, E, Hand L Registers with the contents of one
of the Registers A, 8, C, 0, E, H or L or with the contents of the memory location specified by Hand L or' with an
operand from the second byte of the instr.uction. In what follows, r1 can represent A, 8, C, 0, E, H, L, or M. r2 can
represent A, 8, C, 0, E, H, L, M or I. If r 1= M, the contents of memory are replaced by the contents of r2' If r2 = M,
the contents of r 1 are replaced by the contents of memory. If r2 = I, the contents of r 1 are replaced by the operand from
the second byte of the instruction.
(Label) I Lr 1r2 data I (Comment)
Move r2 to r1'
Examples:
Label LEH I Comment
Move H to E.
73
Label LCI 062B I Comment
Load octal 062 into C.
The contents of the sending location are unchanged after each move. An operand is required if and only if r2= 1.
3.2 Arithmetic and Logical Operation Statements - - 1 byte, or 2 bytes when operand is used.
These instructions perform arithmetic or logical operations between the contents of the A Register and the contents
of one of the Registers B, C, D, E, H or L or the contents of a memory location specified by Hand L or an operand.
The result is placed in the A Register. In what follows, r may be B, C, D, E, H 'or L, M or I. If r = M, memory location
is specified. If r = I, the operand from the second byte of the instruction is specified.
74
3.3.2 (Label) RRC I (Comment)
Rotate A one bit right.
75
3.5.4 (Label) JTZ address I(Comment)
Jump to address if accumulator = O.
76
3.7 Input/Output Statements - - 1 byte
These instructions are. used to input or output data, one byte at a time, between the A Register and the external.device
selected by the operand. An operand is always required.
The device operand must have a value between 0 and 7 for input instructions and between 10 and 37 octal for output
instructions.
3.8 Increment/Decrement Statements - - 1 byte
These instructions are used to in~rement by one or decrement by one any of the registers r. In what follows, r can
represent B, C, D, E, H or L. Increment and decrement operations affect the accumulator conditions zero, parity and
sign, but not carry.
The purpose of pseudo instructions is to direct the Assembler, to define constants used by the object code, and define
values required by the Assembler. The fol,lowing is a list of pseudo operations.
ASB Define paper tape output
ORG Define origin of program
eou Define symbol value for Assembler
DEF Define constants for object code
DAD Define two byte address
77
4.1 Program Origin
The program origin can be defined by the user by an ORG pseudo operation. If no ORG statement is defined, the origin
is assumed to be zero. The origin can be redefined whenever necessary by including an ORG statement prior to the
section of code wh ich starts at a specific program location.
The format of the ORG statement is:
ORG n I (Comment)
The operand n can be a number symbol, or an expression. If a symbol is used it must be predefined in the code.
Example of the ORG statement:
LAB Instruction starts in LOC 0000
LCD
ORG 1000B
SAM LCD Instruction stored in LOC 1000
ORG 5000B
SALLY DEF 1,4, 777B, 7000B Data starts in LOC 5000
END
The operand may contain a numeric, a symbol, or an expression. Symbols which appear in the operand must be pre-
viously defined in the source code.
All fields are required except for the comment field, which is always optional.
Example of EQU statements:
TELET EQU 4
MAGT2 EQU 2
MAGT6 EQU 6
SAM EQU 1000B
INP TELET
LAB
CALL SAM
OUT MAGT2
The data list consists of one or more terms separated by'commas. There can be no embedded blanks in the data list
(except in a literal character string). The;terms can be octal or decimal numerics, literal character strings, symbols or
expressions.
78
A literal character string is enclosed in single quote marks ('). It can contain any ASCII ~haracters, including blanks.
The internal BCD S bit codes corresponding to the given characters are stored in sequential bytes, one character per
byte.
Octal and decimal numbers are stored one per byte in binary.
Octal numbers must be in the range 0 to 377B:
Decimal numbers must be in the range 0 to 255.
Two's complements are stored for minus numbers.
The program counter is incremented by one for each numeric term in the data string and by n for each literal string of n
characters.
Examples of data strings:
MESSl DEF 'SYMBOL TABLE OVERFLOWED', Y-2, SUB2
MESS2 DEF 'LITERAL STRING 1', 'LITERAL STRING 2'
MASKS DEF 77B, 177B, 130B, LABEL 3, X + 3 Required masks
DEF 24, 133, 37B, 99, 232, 'ERROR' Required constants
The data list consists of one or more symbols separated by commas. There can be no embedded blanks in the data list.
The program counter is incremented by two for each symbol in 'the data list.
Examples of DAD statements:
LINK DAD SUB 1, SUB2, SUB3
ERRSUB DAD ER RORX Print Errors
DAD SOCTAL, SPECM, SYMBOL, SEXPR, SLIT
END (Comment)
Note that no symbol is allowed in the location field of the END statement.
79
5.0 ERRORS
Various types of errors can be detected by the Assembler. Message is emitted following the statement which contains
the error. The·error messages and their meanings follow.
$ERROR$llLEGAL CHARACTER X
The special charact~r X (such as $, / . , ) appears in the statement (not in the comment) or perhaps a required
operand field is missing.
$ERROR$ MULTIPLY DEFINED SYMBOL XXXXXX
The symbol XXXXXX has been defined more than one time.
$ERROR$ UNDEFINED SYMBOL XXXXXX
The symbol XXXXXX has been used but never defined.
$ERROR$ILLEGAL NUMERIC CONTAINS CHARACTER X
An octal number includes an megal digit (such as 8 or 9) or the numeric contains non numeric characters.
$ERROR$ILLEGAL OPCODE XXX
The operation code XXX is not one of the acceptable mnemonics.
$ERROR$ MISSING OPERAND FIELD
No operand found for an operation code which requires one.
$ERROR$ILLEGAL VALUE = YYYYYY, MAXIMUM = XXXXXX
The numeric value of an octal or decimal number of an expression has overflowed its limit.
XXXXXX= 377B for 1 byte operands or data word
XXXXXX= 37777B for 2 byte operands
XXXXXX= 37B for output device numbers
XXXXXX= 7 for input devic€! numbers
YYYYYY= given operand value
$ERROR$ILLEGALSYMBOL
A location field contains a symbol that has more than six characters or that does not start with an alphabetic..
$ERROR$ MISSING LABEL
The label, which is required by the EQU pseudo operation, is missing.
$ERROR$ SYMBOL TABLE OVERFLOW, MAXIMUM = XXXXXX
Too many symbols in source program to fit into allocated symbol table.
$ERROR$ LINE OVERFLOW, MAXIMUM = XXXX
Input line exceeds 48 characters; or missing carriage return.
$ERROR$ERRONEOUSLABEL
Opcodes END and ORG may not have a label.
$ERROR$ILLEGAL ORIGIN XXXXXX is less than XXXXXX
Value of new origin is less than current program count.
$ERROR$ I LLEGAL OPERAND
DAD opcode requires symbolic operand
80
6.2 Binary Output
The formatted object code is punched out on request in sequence on 8 level paper tape.
6.3 Program Listing
The printout of the program listing will have the following format:
Columns
1-5 Location (octal) of first byte of object code
6-7 Blank
8-10 First byte object code word in octal
11 Blank
12-14 Second byte object code word in octal
15 Blank
16-18 Third byte object code word in octal
19 Blank
20-22 Fourth byte object code word in octal
23-24 Blank
25-72 First 48 characters of source statement
81
To start the assembler, type:
OLD ASM8,
When the program prints "READY", type:
RUN,
The assembler will request the input file name. The user replies by typing the source file name of the file to be assembled.
When the assembly is complete, the assembler will type a stop message and return to: the monitor. Output files from the
assembler may then be listed or punched on the user's terminal.
Three output files are produced by the assembler:
LOGOUT contains the assembly listing
LOGBIN contains the object tape
LOGMID contains intermediate pass code (this file may be deleted to reduce storage charges)
The output from the assembler is described in Section A of this appendix. Section D contains an example of the
assembly language listing (leading zeroes are suppressed by the General Electric version of the assembler).
S rMBOL VALUE
1: MIJL 00000
£I: MUL000 00013
:5: HUL001 00025
4: U,",UL 00036
5: UMULS 000140
6: J"1UL00 00042
7: UMULi1'l 00054
8: 01 V 30061
9: 01V00~ 00076
10: GIV001 00110
111 01 V002 00140
12: UJIVS 00144
13: UDIV 00146
14: 'J!lIVe0 00151
15: UOIvel 00173
16: ONEG 11:0204
82
~1i'i0 44 320 LCA SHARED REGI STER,
~i1I045 041 DCE I'ORCING NEXT"LSI:!
01.1046 12153 RTi! TO CARRY
021047 301 LAB 2) EXIT II' 8TH ITERATION
000521 101!1 054 00(11 JI'C UMUL 01 3) I I' STEP (1) :SET CARRY
illil053 203 ADD ADD MUL TlPLlCAND TO
eo0~54 032 UMUL01 RAR PRODUCT
210055 310 LBA 4) ROTATE HOST S IGNI FICA
012112156 104 042 000 JMP UMUL00 PRO~CT AND GO T~ ( 1)
121121061 • 01 V - SIGNED INTEGER DIVIDE
00061 • CA LL I HI ORDER DIV IDEND IN B
0:l1061 LO ORDER DIVIDEND IN C
0.,061 DIVISOR IN 0
00061 • EX IT I QUOTIENT IN C
00061 REMA INDER IN B
00061 OVERI'LOW I'LAG IN CARRY (CY"0 a >UV)
1210061 • REGS: A.B.C.O.E. AND I'LAGS ARE ALTEREe
00061 • TI ME I 922 TO 1416 MICROSECONDS (1101118)
00061 250 01 V XRA 1) COUNT AND NEGATE
0012162 340 LEA NEGAl IV E ARGUMENTS
00063 221 SUB
00064 160 076 01210 JTS 01 V000
:30067 150 076 000 JTi! DIV.000
tHl072 040 lNE
1110073 106 204 12100 .CAL DNEG
00076 250 01 V000 XRA
00077 223 SUD
00100 160 110 000 JTS !:II V001
0011113 150 110 000 JTi! DIV001
00106 3:!0 LOA
00107 040 INE
1110110 304 DIV001 LAE 2) HOVE COUNT MOD ~
00111 11)32 RAR TO CARRY
00112 106 146 000 CAL UDIV 3) CALL 'UDIV'
00115 032 RAR ExtT WITH C~ RY
00116 340 LEt. ,. £I I I' OVERI'LOW
£10117 25£1 XRA OCCURRED
00120 262 DRC
00121 063 RTS
00122 301 LAB
00123 223 SUD
00124 003 RI'C
00125 250 XRA 4) I I' CARR Y WA S
00126 264 ORE SET IN STEP (2)
011127 120 140 000 JF'S 01 V£l02 NEGATE QUOTIENT
0~132 250 XRA AND REMAINDER
001;n 222 SUC
00134 320 LCA
00135 25£1 XRA
00136 221 SUB
00137 310 LBA
''Hl14(11 0 06 200 01 V002 LA I 200B 5) SET CARRY AND
00142 022 RAL EXIT
00143 00? RET
00144 • UDIV - UNSIGNED INTEGER DIVIDE
00144 • CALL: HI ORDER DIVIDEND IN B
00144 LO ORDER DIVIDEND IN C
00144 DIVISOR IN 0
00144 • EX IT : QUOT lENT IN C
0£'144 . REMA INDER IN B
00144 NOTE: OVERF'LOW IF' B >= D
0121144 • REGS: A.B.C.E, AND I'LAGS EXCEPT CARRY AI. TERED
00144 • T! ME: 724 TO 1298 MICROSECONDS (80"S)
00144 • UDIVS - SINGLE pRECISION DIVIDEND EN!!oIY
00144 016 l~ UD IVS LB I 0
00146 046 :lIll UDIV LEI 9
0015121 301 I.AB
00151 310 UO IV00 LBA
00152 302 LAC 1) ROTATE CARRY INTO .
00153 022 RAL o IV IDENO - (,IUOTiENT
0!!1154 320 LCA SHARED REGI iiTER·;"
00155 041 OCE FORCING NEXt ·HSB
00156 150 173 000. JTi! UOIV01 TO CARRY
00161 301 LAB 2) ROTATE MSB INTO
00162 022 RAI. HI O!olDER QI,IOIIEN!
0.,163 223 SUD 3) SUBTRACT DI·VISORI IF'
00164 100 151 000 JF'C UD IV00 I.ESS THAN HI ORDER QI,J
00167 203 ADD GO TO (1)
01'l170. 104 151 000 JMP UDIV0J!l ELSE ADD IT BACK
00173 022 UDI Vill RAI. AND GO TO (1)
00174 340 I.EA 4) COHPI.E~ENT QUOT lENT
00175 006 377 LAI 377B AND EXIT
00177 252 XRC
00200 320 LCA
00201 304 I.AE
00202 032· RAR
00203 007 RET
00204 • DNEG - DOUBLE PRECISION NEGATE
00204 • CALLI HI ORDER IN B
00204 1.0 ORDER IN C
00204 • EX IT I HI ORDER IN B
0021il4 LO ORDER IN C
00204 • REGS I A,B,C, AND F'I.AGS ARE ALTERED
00204 • TI ME: 76 HICROSECONDS (8008)
0021114 • NOTEI -32768 CANNOT BE NEGATED
00204 250 DNEG XRA
00205 222 SUC
00206 320 I.CA
00207. 006 000 LA I
00211 231 SBB
00212 310 LBA
00213 007 RET.
00214 END
83
APPENDIX III. MCS-8 SOFTWARE PACKAGE - SIMULATOR
A. Introduction
This Appendix describes the use of a FORTRAN IV program called INTERP/8. This program provides a software simu-
lation of the INTEL 8008 CPU, along with execution monitoring commands to aid program development for the MCS-8.
INTERP/8 accepts machine code produced by the INTEL 8008 Assembler, along with execution commands from a time-
sharing terminal, card reader, or disk file. The execution commands allow manipulation of the simulated MCS-8 memory
and the 8008 CPU registers. In addition, operand and instruction breakpoints may be set to stop execution at crucial
points in the program. Tracing features are also available which allow the CPU operation to be monitored. INTERP/8
provides symbolic reference to storage locations as well as numeric reference in various number bases. The command
language is described in the paragraphs which follow.
B. Basic Elements
All input to INTERP/8 is "free form". Numbers, symbolic names, and special characters may be placed anywhere within
the input line (see margin commands in Section D). Comments may be interspersed in the input, but must be enclosed
within the bracketing symbols 1* and * /.
1. Numbers. Numeric input to INTERP/8 can be expressed in binary, octal, decimal or hexadecimal. The letters B, 0,
a, 0, and H follow!ng the integer number indicates the base, as shown below:
Number Value
11011B 11011 2
280 28 10
330 338
330 338
lCH lC 16
28 28 10
a
A decimal number is assumed if the base is omitted. Note that although 0 is allowed to indicate octal integers, is also
permitted to avoid confusion with the integer O. Note that the leading digit of a hexadecimal number must be one of
the digits 0, 1, ... ,9. Thus, EF2 16 must be expressed as OEF2H.
On output, I NTERP/8 indicates octal integers with a and omits the 0 on decimal values. The base used on output de-
faults to decimal, but may be changed by the user. (See the BASE command in Section C,)
2. Symbolic Names .. Symbolic names are strings of contiguous alphabetic and numeric characters not exceeding 32
characters in length. The first character must be alphabetic. Valid symbolic names are:
SYMBOLICNAME
X3
G1G2G3
LONGSTR INGOFCHARACTERS
3. Special Characters. The special characters recognized by INTERP/8 are: $ = • / ( ) + - ' * ,. All other special charac-
ters are replaced by a blank.
84
The commands NOTRACE, NOREFER, and NOALTEA-are also defined. These commands negate the effects of TRACE,
REFER, and ALTER, respectively. In all cases, the commands may be abbreviated (but not misspelled!). These abbre-
viations are indicated with the command description.
Commands are typed anywhere on the input line, with as many commands on a line as desired. The symbol n." must
follow each command.
The end of data for the execution of INTERP/8 is indicated by a "$EOF" starting in column 1 of the last card.
1. Range-Lists. Many of the INTERP/8 commands accept a "range-list" as an' operand. Tracing, for example, can be
enabled for a specific range of addresses in the program. The range-list specifies a sequence of contiguous addresses in
memory, or a range of numeric values to which the command is applied.
In its simplest form, a range-list is a number (binary, octal, decimal, or hexadecimal), or it may be a pair of numbers
separated by the symbol "TO~" Thus, valid range-lists are:
10
630
50 TO 630
OFH TO 110011118.
A range-list, however, can also reference a symbolic location, with or without a numeric displacement from the location.
Suppose, for example, the symbols START and INCR appear at locations 10 and 32 in the source program. Valid range-
lists involving these symbols are:
START (Same as 10)
START+6 (Same as 16)
START -1018 (Same as 5)
10 TO INCR (Same as 10 TO 32)
START+3 TO
INCR-2 (Same as 13 TO 30)
The range-list !'Day also contain a reference to the current value of the program counter of the simulated 8008 CPU. The
symbol "*,, represents this value. If the value of the program counter is 16, for example, the following is a valid range-
list:
START TO * (Same as 10 TO 16)
The exact use of the range-list is illustrated with the individual commands.
2. Notation. The following notation is used to describe the INTERP/8 command structure. Elements enclosed within
br~ces { and} are optional, while elements enclosed within the brackets [and] are alternatives, where .at least one
alternative must be present.
A range-list, for example, can be specified as:
range.,.element { TO range-element}
where a range-element is defined as:
SYMBOLS {[SymbO~ic-nameJ}
number
The form
DISPLAY SYMBOLS.
prints the entire symbol table, while the form
DISPLA¥ SYMBOLS number.
responds with the symbolic name (± a numeric displacement) which is closest to the address specified by the number.
Examples are:
DISP SY.
DI SY OFFH, SY 32
If the symbol "*" is used in the command, the symbolic location closest to the current program counter is printed.
MEMORY range-list
86
The range of elements printed is specified in the range-list, while the form of the elements in the display is controlled by
the command CODE (decoded instructions) or one of the number bases. If the form is omitted, the default number base
is used in the display (see the BASE command). Valid DISPLAY commands are:
DISPLAY MEMORY 20.
DISP MEM 20 TO 30H.
01 M START T START+5.
01 MEM 0 TO 30 CODE.
o MOT 30 0, M 40 TO INCR+l0 OCT.
The various display-elements may be mixed in a single DISPLAY command.
S. END.
The END command reinitializes the INTERP/S system. If another program is ~ubsequently loaded into memory, all
break and trace points are reset. Otherwise, the currently loaded program may be rerun with all break and trace
points remaining.
9. go { [:umber] }.
The- GO command causes the execution of the loaded program to begin. In the case that a break point was previously
encountered, the e~ecution continues through the breakpoint. If the GO is followed by a *, the breakpoint addresses
are printed as they are encountered, but the SOOS CPU does not halt until completion. If the GO is followed by a number,
the effect is exactly the same as
CYCLE number. GO.
10. INTER {number {number { number}} }.
The INTER command simulates the SOOS interrupt system. The numbers which follow the INTER command correspond
to an instruction and its operands which will be "jammed" into the instruction register. If no instructions follow the
INTER command, the instructions from the last interrupt are used. If no previous command has been specified, a LAA
(NOP) instruction is used. The INTER command causes the simulated execution to continue. Examples are:
INTER.
INT.
INTER 00010101B (this is an RST 200).
11. LOAD number { number} .
The LOAD command reads the symbol table and SO OS machine code into the simulated memory. The form
LOAD number.
reads only the machine code from the file specified by number (see file numbering in Section D). The form
LOAD number number.
reads the symbol table from the file specified by the first number and the machine code from the second file. The symbol
table is in the form produced by the SOOS assembler (i.e., the first part of the listing file), and the machine cod,e is in
"BNPF" format (see PROM programming specifications in the INTEL Data Catalog). This format is also produced by
the INTEL SOOS assembler. The end of the coqe file is indicated by a 11$" appearing in the input. INTERP/S responds
to this command by printing the number of locations used by the program. Examples are:
LOAD 1.
LOAD 6 7.
87
The value of the specified register is set to the number following the "=" or to the value of the program counter if "*,,
is specified. Thus, valid commands are:
SET Z = 0
SE A = 3, B ::: 770, PS 0 = OEEH.
S HL = 2S.
A set-element can also be the symbol "CPU" in which case all registers are set to zero, including the simulated SOOS timer.
Examples are:
SET CPU.
S CP, PC = 25.
The values of 10 ports can also be set by using a set-element of the form
PORT range-list = number {number number ... number}
In this case, the 10 ports specified in the range-list are set to the list of numbers following the "=". If more ports are
spevified than there are numbers in the list, the numbers are reused starting at the beginning. Examples are:
SET PORT 5 = 10.
SET PO 6 TO S = 1 23
S PO 10 TO 13 = 7702.
S PO S = 10B, PO 12 = 13H, PO 300 = 16.
The values contained in memory locations can be altered directly by using a set element of the form
M.EMORY range-list = number { number ... number}
As in the case of 10 ports, the memory locations are filled from the list to the right of the equal sign, with numbers
being reused if the list is exhausted. Examples of this command are:
SET MEMORY 0 = O.
S MEM 0 TO 50 = O.
The SET command does not change break or trace points which are in effect.
S M START TO START+5 = 11111oo0B 220 33H.
As in the DISPLAY command, set-elements of each type may be intermixed:
SET CP, CY=O, M 5 = 10, PO 6=12, PC = 30.
15. TIME.
The TIME command causes INTERP/S to print the number of states used by the simulated SOOS CPU since the last
LOAD, END, or SET CPU command.
16. [TRACE
NOTRACE J range- I'1st{, range-
I '1st, ... , range- I'1st } .
The TRACE command causes the INTERP/S system to print the CPU register contents and the decoded instruction
whenever an instruction is fetched from the memory region specified in the range-list. The form of the elements in the
trace is defined by the current default base (see BASE command). The trace shows the register contents and operation
code before the instruction is executed. The resu It of the operation is found in the next line of the trace, or through
the DISPLAY CPU command.
A heading showing the various columns in the trace is printed after each tenth line of the trace. Examples of the TRACE
command are:
TRACE 0 TO 100.
TR START TO START + 111 B.
NOtRACE START, INCR, FOUND TO FOUND+3, 70.
17. PUNCH range list { number} .
The PUNCH command causes the specified region of the simulated memory to be output in the BPNF format. If the
number is present, the code is written into the corresponding INTERP/S output file; otherwise the currently defined
file is used. Examples are:
PUNCH 0 TO OFFH.
PU START TO FINISH.
88
INPUT TYMSHARE GE
INTERP/8 No. Device PDP-10 Device File Name File Name
1 User's Console TTY 5
2 Card Reader CDR 2
3 Paper Tape PAP 6
4 Magnetic Tape MAG 16
5 Magnetic Tape DEC9
6 Disk DISK 20 FOH20.DAT LOGOUT
7 Disk DISK 21 FOR21.DAT LOGBIN
OUTPUT
INTERP/8 No. Device PDP-10 Device File Name
1 User's Console TTY5
2 Printer PTR 3
3 Paper Tape PAP 7
4 MagnetiC Tape MAG 17
5 Magnetic Tape DEC 10
6 Disk DISK 22 fOR22.DAT Disk 4>1-
7 Disk DISK 23 FOR23.DAT Disk 4>2
I/O functions are controlled through "$" commands which may be interspersed throughout the input.
Any input line with a "$" in column one, followed by a non-blank character is considered an I/O command. The card is
then scanned for an "=" foll.owed by a decimal integer. The character following the "$" and the integer value affect the
I/O formatting functions as follows:
Control Meaning Initial Value
$COUNT = n Start the output line count at the value n. 1.
$DELETE = n Delete all characters after column n of the output 120
$EOF = 1 End-of-file on this device o
$1 NPUT = n Read subsequen input from file number n
$LEFT = n Ignore character positions 1 through n-1 of the input.
$OUTPUT = n Write sUbsequent output to file number n. 1
$PRI NT = n Controls listing of the output. If n = 0, input lines are not printed; o
otherwise input is echoed.
$RIGHT = n Ignore all character positions beyond column n of the input. 80
$TERMINAL =n INTERP/8 assumes conversational usage if n = 1; otherwise batch 1'
processing is assumed.
$WIDTH =n This command sets the width of the output line. Note that this affects 72
the format of the DISPLAY MEMORY command.
The default values shown above assume conversational use with a teletYpe or similar device. The defaults can easily be
changed by recompiling the INTERP/8 program.
In the case of controls which take on only 0 or 1 values (e.g., $PRINT, $TERMINAL, and $EOF), the equal sign and
decimal number may be omitted. The value of the control is complemented in this case.
E. Error Messages
ERR 0 R M E 5 SAG E S
EXECUTION ERRORS
1 PROGRAM COUNTER STACK OVERFLOW
2 PROGRAM COUNTER STACK UNDERFLOW
3 PROGRAH COUNTER OUTSIDE SIMULATED MCS-B MEMORY
4 ~E~ORY REFERENCE I,
89
22 UNRECOGNI~ED DISPLAY ELEMENT OR INVALID DISPLAY FORMAT
10 10 FORMAT COMMAND ERROR (TOGGLE HAS VALUE OTHER THAN 0 OR 1) 23 SYMBOLiC NAME NOT FOUND IN SYMBOL TABLE
11 UIIJUSED 24 INVALID ADDRESS OR NO SYMBOL TABLE PRESENT' IN DISPLAY SYMBOL
COMMAND
13 INVALID SEARCH PARAMETER IN OISPLAY SYMBOL COMMAND (MUST BE 25 OUTPuT DEVICE WIDTH TOO NARROW FOR DISPLAY MEMORY COMMAND
SYMBOLIC NAME. ADDRESS. OR.) (USE SWIDTH = N 10 FORMAT COMMANO TO INCREASE WIDTH)
14 DISPLAY SYMBOLS COMMAND INVALID SINCE NO SYMBOL TABLE EXISTS 26 INVALID RADIX IN MEMORY DISPLAY COMMAND (MUST BE CODE. BIN.
15 UNUSED OCT. OR DEC)
16 UNRECOGNI~ED COMMAND OR INVALID FORMAT IN COMMAND MODE
27 UNRECOGNI~EQ SET ELEMENT IN SET COMMAND
17 MISSING. OR EXTRA CHARACTERS FOLLOWING COMMAND 28 MISSING SET LIST IN SET COMMANO
18 LOWER BOUND EXCEEDS UPPER BOUND OR IS LESS THAN ~ERO 29 INVALID SET LIST OR SET VALUE IN SET COMMAND
IN RANGE LIST 30 MISSING OR MISPLACED ~ IN SET COMMANO
19 THE FORMAT OF THE SYMBOL TABLE IS INVALID (MUST BE A 31 MISSING PROGRAM STACK ELEMENT ~UMBER IN SET PS N
SE~UENCE OF THE FORM N SY AD. WHERE N IS AN INTEGER.
SY IS THE SYMBOLIC NAME. AND AD IS THE AODRESS (IN OCTAL» COMMAND
20 INVALlI) CHARACTER IN MACHINE CODE FILE.
32 INVALID INTERRUPT CODE SPECIFICATION (EITHER MORE THAN THREE
21 UNUSED BYTES. OR ELEMENT EXCEEDS 255)
F. Examples
Two sample INTERP/S executions are given in this section which illustrate the commands available with the INTERP/S
system. The first example illustrates the basic commands. A simple program is constructed in the simulated MCS-S
memory. This program is then executed, showing the use of break and trace points. The second execution shows the
use of symbol tables and SOOS code which is produced by the INTEL SODS assembler. In each case, the actual commands
which initiate the INTERP/S system may vary from installation to installation .
• R INT6 SET OK
CYZSP A a C 0 E H L HL SP pse
B£.GIN .Iee 110 000 eee 8ee 0Ile*1l14*239*03823 .e. lee00
1* ThIS IS All; EXAMPLE OF THE USE OF THE HlTERP/!! SYSTE.t'.• CONV 83823.
1* TH£. NUMBER CONVERSIOr, C~I':~·At:I.i IS USED FIRST .1 BASE HEX. DISP CPU.
CCt.lV 10.
HEX BASE OK
1010S 12Q 10 An CYZSP A a C 0 E H L HL SP PSI
CON 10Q. e •• e eeH ~8H 80H 8eli ellH 0EH EFH IlEEFH 00H 00'01i
1* THEN CHANGE BASE TO OCTAL *1
10008 10Q 8 8n
CON 3 TO 8. BASE oc. DI CPo
A .. II INITIALIZED PRO~ERLY. *1
D .. II LOAD I.
liL • 0
DIS PORT 4. PS 0. MEM 5.
0Q LOAD OK
P4-0 DISPLAY MEMORY 10 TO 20.
PSIl .. II
/* MEMORY LOCATIO., 5 WAS NOT DISPLAYED SINCE NO PRCGRAt' HAS m:u; 00012Q 000Q 000Q 000Q 000Q 000Q 000Q eB0Q 000Q 000Q 000Q 000Q
BASE DEC.
LOADED *1
DEC BASE. OK
SET Ii • 5. L-10Q. DISP CPU. SET MEM 10 TO 20 • 00101110B I'" THIS IS LliI II *1
00110110B 2311l 1* LlI 200 *1
SET OK 11001111B I'" LBM *1 000010008 1* INS *1
CYZSP A 8 C 0 E H L HL SP PS0
110110 Ilile Ilee ee0 000 eIl0.805*008*01288 1100 00000 1III1001B 1* LMB *1 0 1* HLT *1
1* NOTE THAT THE ELEMEN~S WHICh HAVE CHANGED SINCE THE LAST UISPLAY
ARE PRECEDED BY AN ASTLRISK *1
SET OK
SET HL • 0EEFH. DIS CPo 01 ME 10 TO 20.
90
. . . 18 .46 ••0 054 211 207 188 249 .81 0_6 101 054 LBM
DI M I. TO'28 CODE. *0001 ••' •• 83 888 000 000 080 200 00200 000*00017
JiLT
HLT CYCLE 4e
/* SWITCH BACK TO FULL TRACE .. / TR 0 TO 100.
8801. LHl~"H LLl,C8H LaM INa LHB HLT LHl,.IH LLI
I" NOTE THAT THE • I· SEPARATES ELEtIUITS WHICH ARE _PART OF THE TRACE OK
DISP _MEM 288.
SAME I~STRUCTION (THE SECON -D AND THIRD BYTES ARE ltJ HEX) .. ,
GO OK
88288 811 e001 lee 80e eee ell le0 el0 208 80200 000 80014
1* MEMORY LOCATION 210 HAS BEEN INCREMNTED -- NOV TURN ON THE LBH
CYCLE AT 15
TRACE AND EXECUTE THE PROGRAM AGAIN . , 01 CPU.
TRACE OK
TRACE OK
SET CPU, PC-I •• -GO. 1* THE EXECUTION CAN ALSO BE STOPPED WHEN THE PROGPAM REFERS
TO KEMORY LOCA!I
SET OK
8e0e 080*00e 008 000 000 008*000*00000 000*00012
LLI 20e
le00 08e e0e 808 100 188 e80 ..200*e0200 0e0*80014
91
REFER 2.1. NOTRACE • TO I". SET cpu,pc-Ie. GO. THIS EXAMPLE SHOWS A COMPLETE ASSEMBLY AND INTERP'8 EXECUTION
REFER OK
THAC&- OK
SET OK TYPE AS"J.DAT
RUER AT 14 • SAMPLE "CS-8 PROGRAM <PAGE 47 OF 8888 MANUAL)
DI CPU. START LLI 218
LHI 8
LOOP LAM
CYZSP A B C D E H L HL SP PS8 CPI 46
•• ,. ,.1 leI e ••••• Ie •••• *2 ••• el21. 81e ••• e14 JTZ FOUND
01 HEM 14 CODE. CAL INCR
LAL
CPI 228
.JF'Z LOOP
ell14 LBH FOUND RET
GO 1. 01 CPo I NCR INL
RF'Z
INK
GO OK RET
CYCLE AT 15 END
CYZSP A 8 C D E H L HL SP PSI
Ille lee ••15 III •••••••ee 21. al21. 818 ••• ,15 .R ASH8
REFER OK
ALTER OK
SET OK 1e.8 INTEL ASSEMBLER
ALTER AT 16
DI CPU.
CPU TIME. 3 •.72 ELAPSED TIME. 9.73
CYZSP A B C D E H L HL SP PS0 110EXECUT 1011 ERRORS DETECTED
•• e01 e0'."6 e •• 108 .00 e •• 2.' ee2e. 8.,.e0,16
o M 16 co.
EXIT
tC
.1016 LMB
,. THE REGISTER DUMP SHOVS THAT 6 WILL BE STORED AT LOCATION 200.
EXAMINE LOCATION 2.e, RUN THE KACHINE FOR ONE CYCLE. AND EXAMINE .RENAME FORI •• DAT • 'J,.OGOU.DAT# 'OR21.DAT. LOG81.DAT
FILES RENAMED.
THE CELL AGAIN ., LOGOU .DAT
LOGBI.DAT
11"" ," •••• ,S .8.8.e ••B 8el •••••8 IIIIII.8S e.e81e81B IIIIIIIIS •••••••••••••••••••••••• tC
...e6 ••• ,1••• 8 1 •• 8 ••• IB ••••••••S •••• e.8IB e.l.1118S Ileee.leB fC
1•• 12 .8118118B 11.81 •• aa 11 •• 111IS 8"81.8.S 11111881B •• 08.000B
8ee18
.8824
.ll.111.S
•••• 88 ••S
••••••• 88 ••
•••• 88.8S
11811.B
••••••••B
,.,8
' ' '••
••e ••••• a
1888881.B
88.88.8IB
el ••• I.e8
•• 88.8.8B
.TYPE DORfU
TYPE FOR21 .DAT
'.198 •••• 888.S ••••••••8 8' ••• 11.8 .8.888•• 8 88 ••••• 88 .18.e.818
••2'4 .... ee ••8 ••• 888.'S ••••••••B •• 8 •••••S 8.......8 8.8.e888B
.851' •• 8.88••B ••••• 8 ••8
••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
,. AND THEN PUNCH THE CODE 8ETWEEN LOCATIONS 18 AND 28 (WE WILL USE ••••••••
••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
THE CONSOLE AS THE OUTPUT DEVICE ) ., ••••••••
8 8NNPPNPPNF 8PPNNP~NNF' BN~PNPPPNf BN~NNN~NNF
BPPNNNPPPF BNNPPPPNNF BNNPNPPPNF BNPPNPNNNF
••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 8 BNNNPNNPPT 8NNNNNN~NF BNPNN~PPN' BNNNPNPNNF
••••••••8 BMI.........,. SNNN....NNY 8NNPUPPPIIIP' BNNNNNNNNF SNNNNNNNNF BPPN~~PNF BNNPPPPN~' 8PPNPPPNNF
16 BNPNNPNN~7 8NNNNNPNNF BNNNNNNNNF BNNNNNPPPF'
BII1NPPNPPHF BPPNNPNNNF BI'I'N1IIPP!'P' BNNNNPNt.lNF BNNPPNNNNF BNNNNPNPPf BN~~NPNNNF BNNNNNPPPF
16 BP!'PPI'NNPF BNNNNNtlNNF BNNPNPPPNP' BNNNNNNNNF 24 B~NNNNNNNF BNNNNNNNNF BNNNNNNNNF BNNNNNNNNF
END.
SEOF'
92
*.,..,UTSS
32 SS SET OK
00200 043 046 048 032 12" 843 046 048 032 120 043
1* GET A COMPLETE TRACE OF THE PROGRAM *1 TR 9 TO 9100 •
• R Ir.<T8 TRACE OK
LOADING GO.
80"023Q 0"819 1113H FOUND 1111 843 '.8 188 880 088 080 281 802"1*'00 00813
00""24Q 01.28 ""14H I NCR
01 SYMBOL LOOP.
LAL
"e"e'4Q 88884 ""04H LOOP 1011$201 080 080 000 000 000 201 00201 000*00014
01 SYMBOL :EAP. CPI 22O·
CYZSP A B C D' E H L HL SP PS0
1011 201 80O 800 000 O00 000 201 00201 000*00816
(00'21) ERROR 23 NEAR ZAP JFZ 4
'* ERROR MESSAGE HAS LINE WMBER ERROR WMBER AND ITEM IN ERROR. IN 1011 201 ""0 "00 008 "00 000 201 00201 000*0"804
LAM
1011*046 000 000 0"8 880 000 201 00201 800*00005
THIS CASE. THE SYMBOL COULl) NOT BE FOUND '5 THE TABLE *1 CPI 46
*0181 846 008 080 008 108 000 201 00201 000*"0007
JTZ 19
01 SY 13H. 0101 046 088
RET "I"
800 80O 000 201 00201 080*00019
EXECUTION ERROR 2 AT 22
FOUND /* THE ERROR OCCURS BECAUSE THE PROGRAM TERMINATES WITH A RET
DI SY 12H.
01 MEl'l 19.
LOOP.4
01 SY *.
00019 007
STA."lT 01 M"'"'El'l 19 COD.
1* NOW TAKE A LOOK AT MEMORY IN HEXADECIMAL AND IN C~DE FORY~T *1
00000 368 C8R 2ER 10H C1H 3eH 2EH 68H 13H 88H 46H 14H "0H C6H 3CH DCH
00016 48H 04H 0eH 01H 308 0BH 28H 07H 08H 00H 00H e0H 0eH 00H 08H 00H SET M 19 s 0. DI MEM 19 CO.
00032 08H 00K 80H '0K 8eK 00H 80H e8H 88H 00H 00H 00H 80H 08H 00H 00H
SET OK
00019 HU
00096 0'H '0H 00K 10H .0H NOTR 0 TO 100. SET CPU. GO.
00088 LLI~caH LHI.0"H LAM CPI.2EH JTZ.13H."0H-CAL.14H.00H LAL CPI,OCH
00016 JFZ.84H.08U RET INL RFZ INK RET HLT 8LT HLT HLT 8LT HLT HLT HLT
08032 HLT HLT HLT HLT HLT KLT HLT HLT HLT HLT HLT HLT HLT HLT HLT HLT
TRACE OK
SET QK
HLT CYCLE 111
00096 RLT HLT HLT HLT HLT 01 CPU.
TIME.
LOCATIONS *'
TIME-II 1
SET MEM 200 TO 210 a 43 46 48 28H 1111"0'B. 01 HEM 200 TO 210. /* SET SELECTIVE BREAK POINTS */
93
REF START. INCa.l, LOOP. SET CPU. GO. SET OK
.a00IUfJIIl
LLI 28.
1.1 18. .ee 888 IIIJIh,e,...,801 11. ., . . . .
HUla OK eeelll III 8Ie eee aee 80e ae.,.211.eI2.1 " ...Ii.e.
SET OK LAM
REFER AT • .le.h211 I " eee eee Ila 0."*20 ....201 11188 ate04
DI Sy •• LAM
.1111111.e46
HI.T
e •• eee eel
••• eee 2.1 11281 . ,. . 18119
REYER AT 19
START GO.
G.
01 SY ..
REFER AT 4
GO.
1111 '46 1118 H. 1.1 ell .88 2., ••281 e.8 81819
HLT
HLT C;YCU 11"7
LOOP
DI SY -.
REFER AT 21
GO.
/. THE ONLY REMAINING COMMANDS TO ILLUSTRATE ARE HTHE SET AND
INCR+I IDISPLAY
REFER AT' 4
D SY.
PORTS COMMANDS . ,
REFER OK
/_ SET SELECTIVE TRACE POINTS (TRACE AND REFER POINTS CAN bE P4-,
P3-0
IN EFFECT P7-0 P8-fIl
01 PO 2f1l TO 2S.
TR START. LOOP. FOUND. R~FER FOUND. GO. P2B-. P21-0 P22-' P23-. P24-1 PiS-.
SET PORT S - IlelllflleB. PO 18H • SSO.
TRACE OK
REFER OK SET OK
_,,.01*046
HLT
REFER AT 19
... ••• ".. •••
_1011_201 000 000 000 000 01118 2.1 8.201 000*00004
LAM
• 1• 2111 08a.1 810-80819
01 POR S TO 17.
PS-204 P6-0 P7.e P8-e P9-1 PI'-I PII-' P12-0 P13-1 PI4-' P1S-0
P16:45 P
01 CPo
17"0
E HL SP END.
CYZSP A B C 0 H L PSI
I/JIII 846 ..I 8 •• eee
SET CPo GO. ••• ee. all 80201 080 ••• 19
SEOF'
94
APPENDIX IV
TELETYPE MODIFICATIONS
The SIMB-01 microcomputer systems and associated software have been designed for interface to a
model ASR 33 teletype wired in accordance with the following description.
The ASR 33 teletype must receive the following internal modifications and external connections:
Internal Modifications
1. The current source resistor value must be changed to 1450 ohms; This is accomplished by moving a
single wire. (See Figures 5 and 6.)
2. A full duplex hook-up must be created internally. This is accomplished by moving two wires on a
terminal strip. (See Figures 4 and 6.) .
3. The receiver current level must be changed from 60mA to 20mA. This is accomplished by moving a
s~ngle wire. (See Figures 4 and 6.)
4. A relay circuit must be introduced into the paper tape reader drive circuit. The recommended circuit
consists of a relay, a resistor, a capacitor and suitable mounting fixture. An alternate circuit utilizes
a thyractor for suppression of inductive spikes. This change requires the assembly of a small "vector"
board with the relay circuit on it. It may be mounted in the teletype by using 'two tapped holes in
the mounting plate shown in Figure 1. The relay circuit may then be added without alteration of
the existing circuit. (See Figures 2, 3, and 6.) That is, wire "A", to be connected to the brown wire
in Figure 2, may be spliced into the brown wire near its connector plug. The "line" and "local" wires
must then be connected to the mode switch as shown. Existing reader control circuitry within the
teletype need not be altered.
External Connections
1. A two-wire receive loop must be created. This is accomplished by the connection of two wires between
the teletype and the "SIM" board in accordance with Figure 6.
2. A two-wire send loop similar to the receive loop must be created. (See Figure 6.)
3. A two-wire tape reader loop connecting the reader control relay to the "SIM" board must be
created. (See Figure 6.)
95
Figure 2. Distributor Trip Magnet Figure 3. Mode Switch (Rear View)
96
,--- I
I I[ I
ITJ}
~,
I 12-0J<. L I_ _ _- '
I ;::'Ueee:NT ",=>OUec.e: IZE'::>I':>TOI2.
I
I
L _W~Ee:LOCI::.
_ _ _3002101A.B
__ _ -.J ~EE 1"1.::,,·5
~'~
,r-~-+--- e,1...I(; BI...~
(J
o _f----~(~~==t==-:v.J;:I-l~T:---....:::..:=-=----------(,r,;1~~ 111'1 A..C
~~-----+----4----~--------~ Wi-IT W
w
~
a
u S5
EC IS EXTERNAL CONNECTION
Figure 6. Schematic
MODE
SWITCH
~EY BOAQD TAPE
MOUNT 'KEADEI2
REED
RELAY
PQUJTEI2 UNIT
CAPACITOR ---1>-------'
o I
CURRENT
SOURCE
RESISTOR
---1----1 ~ ~ ~
DOG 0
I DISTeIBuTORi'
TI2IP MA6"-JET
A."=:'5EMBLY
POWER
SUPPLY
-----1----1 f t; ®
o
TERMI NA L --+-C~==::J
STRIP ~~i------~------------------------------------~------~-J
TOP VIEW
97
APPENDIX V. PROGRAMM'ING EXAMPLES
A. Sample Program to Search A String Of Characters I n Memory Locations 200-219 For A Period (.)
101·103
INITIALIZE
H & L TO 200
104
98
B. Teletype and tape Reader Control Program (A0800) CAL DELAY
CAL DEl.AY
BEGIN LAl 1 SUPPRESS TTY INH H • H _+ I
OUT 12B OUTPUT 2 INC C • C +1
XRA CLEAR AC .JFl. CSTEST
OUT 138 OUTPUT 3 - TAPE READER CO'JTROL .JMP BEGI~
CAL TAPE CALL FOR TAPE READER CONT. RT· DELAY LDI 0 LOAD 0 TO REe. D
..iMP BECIN Dl IND D • D ... 1
TAPE LAI I TAPE READER ENABLE CODE JFZ Dl
OUT 138 OUTPUT 3 - ENABLE TAPE READER RET
CAL TTYDI TAPE READER CO~TROL DELAY END
TTY HLT WAIT FOR TTY START PULSE
CAL TTYD2 TTY' DELAY - 4.468 ~SEC. D. RAM Test Program· (A0802)
XRA TAPE READER ~ISAELE CODE
OUT 13B OUTPUT 3. DISABLE TAPE READER BEGIN LAI 0 LOAD 0 T·) AC
I~P OB I~PUT O. READ START PULSE OUT 108 WRITE TO OUTPUT 0
LCI 255 CO~PLEMENT TTY START PULSE OUT lIB WRITE TO OUTPUT 1
XRC EXCLUSIVE-OR .REC. C OUT 12B WRITE TO OUTPUT 2
OUT 128 OUTPUT 2. OUTPUT START PUCSE OUT 138 WRITE TO OUTPUT 3
LEI 2118 TTY rATA SAMPLING COUNTER L81 8 LOAD 8 TO REC~ B
TTYl~ CAL TTYDl TTY DELAY - 9.01~ MSEC. LCI 0 LOAD 0 TO REe. C
INP OB READ TTY DATA I'JPUT LHI 8 LOAD 8 TO REC H
LCI 255 COMPLEMENT TTY DATA 1.1.1 0 LOAD 0 TO REe. I.
}(HC l.Ml XRA CLEAR AC
OUT 12B OUTPUT 2. TTY DATA OUT LM2 LMA LO~D AC TO MEMORY
RAR ST'JRE TTY DATA INL 1. = 1. + 1
LAB LOAD TTY DATA TO REC. B CPL AC - L
RAR JFZ LM2 JUMP IF AC I S· !\JOT ZERO
L8A LOAD AC TO REG. B HJH H =H + 1
I~E E = E + 1 LAI 12 LOAD 12 TO AC
..JFZ TTYI:-.J JUMP IF ZERO FIF IS NOT SET CPH AC-H
LA8 LOAD REG. B TO AC JFZ LMI JU~P IF AC IS ~OT ZERO
OUT 11 B OUTPUT 1. TTY CHARACTER LHI B
SUI 128 REMOVE PARITY BIT REPT4 LAB LOAD REC. B TO AC
LBA STORE TTY INPUT DATA OUT lOB
CAL TTYDI REPT3 LLC LOAD REe. C TO L
LAI 1 LAC LOAD REe. C TO AC
OUT 128 SUPPRESS TTY OUT 13B
RET LAI 255 LOAD 255 TO AC
TTYD1 LDI 115 9.012 MSEC. DELAY LMA LOAD AC TO MEMORY
ST IND D = D ... 1 CPM AC-M
JFZ ST JFZ ERROR JUMP IF AC IS ~OT ZERO
RET REPT2 LAH LOAD REC. H TO AC
TTYD2 LDI 186 4.468 MSEC. DELAY OUT 108
HEPTS XRA CLEAR AC
ST2 IND D = D ... 1 INL 1. = L ... 1
JFZ STa CPL AC ... 1.
RET JTZ HEPTI JUMP IF AC=O
END LAL LOAD REe. 1. TO AC
OUT liB
C. Memory Chip Select Decodes and XRA CLEAR AC
Output Test Program (A0801) CPM AC-M
.,WZ ERROR JU~P IF AC IS NOT ZERO
BEG Il'J LAI 15 LOAD 15 TO AC JMP REPTS
OUT lOB WRITE TO OUTPUT 0 REPTI INH H = H +
OUT liB LAI 12
OUT 12B CPH
OUT 13B JTZ CONT
OUT I11B XRA
OUT 15B CPM
OUT 16B JFZ mROR
OUT 17B JMP REPT2
CAL DELAY CO~T LHB LOAD REC. E TO H
CAL DELAY XRA
CAL DELAY INC C • C +
CAL DELAY CPC AC - C
XRA CLEAR AC JFZ REPT3
OUT lOB B = B ...
OUT llB" INS
OUT 12B LHB LOAD REe. P TO H
OUT 13B LAI 12
OUT IIIB CPB AC-B
OUT 15B JFZ REPT4
OUT 16B JMP BECIN
OUT 17B ERROR LAI 240 LOAD 240 TO AC
LCI 2110 LOAD 2~O TO REG. C ADS AC=AC+B
2528
1.1.1 LOAD 25~B(OCTAL) TO REC. C OUT lOB
LHI 0 LOAD 0 TO REC. H LAL LOAD REC. 1. TO ~C
CSTEST LAH LOAL' H TO AC OUT liB
OUT lOB LAM LOAD MEMORY TO AC
LAL LOAD ,_ TO AC OUT 128
OUT liB LAC LOAD REG. C TO AC
XRA CLEAR AC OUT 138
LMA WRITE AC TO ME~ORY HLT
E~D
99
E. Bootstrap Loader Program
(Intel Tape Numbers A0860, A0861, A0863, Nov. 16, 1972)
o ORG a 131 16 INC C.. C+1
o 6 BECl:-lLAl 1 SUPPRESS TTY 132 68 126 0 JMP BD3
2 85 OUT 12S OUTPUT 2 135 14 10 8D4 LBI 10 B .. 10
3 168 XRA CLEAR AC 137 129 ADB AC"AC+B
87 OUT 138 OUTPUT 3 - TAPE R 138 200 L8A LOAD AC TO REC B
EADER CONTROL 139 6 A8 LAI A8 A=A+48
5 0 HLT 141 130 ADC A-A+C
6 68 206 JMP START 142 A8 INL L"L+l
9 143 248 LMA
9
**TELETYPE TAPE READER II. I/O CO'lTROL 144 6 48 LAl 48
LOAD A TO M
A=A+48
9 ADB
9
*TAPE LAI 1 T4PE RE4DER E'lePL
IA6
147
129
48 INL
A=A+8
1. .. 1.+1
E CODE 148 248 LMA LOAD A TO M
i 1 B7 OTJT 138 OUTPUT 3 - E'l"lBI.E 1'19 7 RET RETUR~
TAPE READER 150
12 0 TTY HLT WAIT FOR TTY STAR 150 '"
*TTY OUT!'UT ROUTI NE
T PULSE 150
13 30 194 LDI 194 TTY DELAY - 4 !'ISE 150 22 253 TTYOUT LCI 253 C=253
C. 152 70 55 0 TTYO CAL TTYDI DELAY - 9.012 MSE
15 24 ST2 I:-lD C.
16 72 15 0 JFZ ST2 155 16 I:-lC C=C+I
19 168 XRA TA?E READER DI Sl>,B 156 72 152 0 JFZ TTYO
I.E CODE 159 168 XRA
20 87 OUT 13B OUTPUT 3, ~ISABLE 160 85 OUT 12B TTY START PULSE
TAPE READER 161 22 248 LCI 248 REG C=2118
21 85 OUT 12B OUTPUT 2, OUTPUT 163 70 55 0 TTYI CAL TTYDI TTY DELAY ~ 9.012
START PULSE MSEC.
22 38 248 LEI 2ta8 TTY DATA SAMPLING 166 193 LA8 LOAD DATA TO e.c
COUNTER 167 85 OUT 128 OUTPUT DATA
24 70 55 0 TTYIN CAL TTYDI TTY DELAY - 8.7 M 168 26 RAR STORE DATA 1:.1 CAR
SEC. RY
27 65 INP 08 READ TTY DATA INP 169 200 L8A LOAD A TO P
UT 170 6 0 LAI 0 AC = 0
28 44 255 XRI 255 CO!'lPLEMENT TTY DA 172 26 RAR RESTORE Dl>,TA BIT
TA 173 129 ADB RESTORE DAT4
30 85 OUT 12B OUTPUT 2, TTY OAT 174 200 LBA STORE
A OUT 175 16 INC C=C+l
31 26 RAR STORE TTY ~TA 176 72 163 0 JFZ TTYI JUMP I F AC I S ~O T
32 193 LAB LOAD TTY DATA TO, ZERO
REG. 8 179 70 55 0 CAL TTYDI TTY DELAY - 9.012
33 26 RAR MSEC.
34 200 LBA LOAD AC TO REG. 8 182 6 LAI 1 A-A+ 1
35 32 INE E .. E + 1 184 85 OUT 12B SUPPRESS TTY
36 72 24 0 JFZ TTYIN JUMP I F ZERO F IF 185 7 RET
15 NOT SET 186
39 193 LA8 LOAD REG. 8 TO AC
REMOVE PARITY BIT
186 '*CARRIAGE
" RETURN & LINE FEED
40 36 127 NDI 127 186
42 200 LBA STORE TTY INPUT D 186 lA 141 *
CRLF LSI 215B CARRIACE RETURN -
ATA CR
43 70 55 0 CAL TTYDI 188 70 ISO 0 CAL TTYOUT TYPE CR
ta6 6 I LAI 1 191 111 138 LF LBI 212B LINE FEED - 1.1"
48 85 OUT 128 SUPPRESS TTY 193 70 ISO 0 CAL TTYOUT TYPE 1.1"
49 7 RET 196 7 RET
50 192 LAA 1II0P 197
51 192 LAA
LAA
197 '.ERROR
" SICNAL
52 192 197
53
54
192
192
LAA
LAA
197 lA 191 'ERROR
" L81 277B (1)
199 70 150 0 CAL TTYOUT TYPE (1)
55
55
*
*TTY DELAY - 8.7 MSEC.
202 7 RET
203
55 **TYPE
55 30 121 '"
TTYDI LDI 121 f!.7 MSEC. DELAY
203
203
B AND I DENTI FY RAl'! BANK
62
62 199
*BCDBIN LAM LOAD LSD TO A
21A 249 LMB STORE INPUT IN ME
MORY
63 20 48 SUI AS AC-AC-A8 215 RET
65 200 LBA LOAD A TO B 216
66 49 DCL 1. .. 1.-1 216 *
.TYPE A AND IDENTIFY I~ITIAL AND FHIAL LOCATIO:-l
67 199 LAM LOAD M TO A 216
68 20 48 SUI 48 A-A-A8 216 70 186 0 *
ADRESL CAL CRLF
70 224 LEA LOAD A TO E 219 14 193 LBI 301B LOAD CA)
71 104 82 0 . BBI JTZ BB2 IF A-O JUMP 221 70 150 0 CAL TTYOUT TYPE CA)
74 r, 10 IJAI 10 AC"10 224 70 186 0 ADI GAL CRLF
76 129 ADS AC .. AC+B 227 22 253 LCI 253 C=253
77 200 L<'A LOAr: AC TO REC. S 229 70 12 0 AD2 CAL TTY CALL FOR TTY KS I
78 33 DCE E-E-I NPUT
79 68 71 0 JMP SSI 232 48 INL 1."1.+1
82 49 BB2 DCL L=L-I 233 2A9 LMB LOAD TTY KP. INPUT
113 199 LAM LOAD M TO A TO M
84 20' 48 SUI 48 A=A-48 234 16 INC C=C+ I
86 224 LEA LOAD A TO E 235 72 229 0 JFZ AD2 JUMP IF C IS NOT
117 104 98 0 B83 JTZ 8E4 ZERO
90 6 lOa LAI lOa AC-l00 236 RET..
239
92 129 ADB
LEA
AC=AC+B
LOAD AC TO REG. B 239
**DATA IWUT ROUTINE
93 200
DCE E=F-l 239
94
95
33
68 87 a JMP 8B3 239 70 9 0 '"
DATAIN CAL TAPE READ TAPE
98 7 BB4 RET 242 6 66 LAI 102B LOAD (8)
99 2AA 165 CPB SEARCH FOR (B)
99
**BINARY TO BCD CONVERSION 245 72 239 0 JFZ DATAIN JUMP IF IT IS ~OT
99 CB)
99 46 11 '8INBCD
" LHI II 248 46 11 DATAl LHI 11 H=11
101 54 241 LLI 241 250 SA 255 1.1.1 255 1.=255
103 22 0 BNBD LCI a CLEAR REG. C 252 6 2116 LAI 248 DATA BIT COU'fTER
105 193 LAB 254 248 LMA STORE DATA BIT CO
106 20 100 BDI SUI 100 AC-AC-IOO NTR
108 96 115 0 JTC BD2 JUMP IF AC<IOO 255 70 9 0 DATA2 GAL TAPE READ TAPE
111 16 INC C.. C+I 258 SA 250 LLI 250 MEMORY LOC. FOR "
112 68 106 0 JMP BDI ATA
115 14 100 802 LEI 100 LOAD 100 TO REC. 260 6 80 LAI 120B l.OAD (P)
8 262 185 CPB SEARCH FOR (P)
In 129 ADB AC=AC+8 263 lOll AO JTZ PDATA IF (P) STORE (I)
118 200 L8A LOAD AC TO REG. B 266 6 7f1 LAI 116B LOAD (1'1)
119 6 48 LAI 48 A-A+48 268 185 CPB SEARCH FOR (N)
121 130 ADC A-A+C 269 104 49 JTZ NDATA IF eN) STORE (0)
122 248 LMA LOAD A TO MEMORY 272 6 66 LAI 102B LOAD <B)
123 22 LCI CLEAR REC. C 274 185 CPS SEARCH FOR <B)
125 193 LA8 LOAD B TO A 275 104 2A8 0 JTZ DATAl IF CB) DELETE LAS
126 20 10 8D3 SUllO AC=AC-10 T INSTRCTION
128 96 135 JTC BD4 JUMP IF AC<10 278 6 127 LAI 177B LOAD <RO)
100
2$0 185 CPS SEARCH FOR RUBOUT IN M
281 72 34 JFZ FI'IEROR JUMP IF NOT RUBOU 436 7 RET
T 437
284 70 90 CAL RUBOUT CALL FOR RWOUT R 437 *SET ADDRESS. TO 1101 P.MI
OUTINE 437
287 682-S5 0 JMP DATAl? 437 46 11 *
SETMA LHI 11 H:l1
290 70 98 1 FI'IEROR CAL FORl"AT CALL FOR FORMAT E 439 51.1 252 LLI 252 L:~5?
RROR ROUTlm 441 223 LDM BANK NO TO r>
293 68 89 JI'IP OATAEN 442 48 INL L:L+l=253
296 6 1 PDATA LAI 1 REPLACE (P> WITH 443 199 LAM INIT ADR TO E
(1) 444 81, OUT lOB !JRITE ADDRESS TO
298 26 RAR ROTATE RIGHT OUT 0
299 199 LAM 445 240 LLA LOAD AC TO L
300 18 RAL ROTATE LEFT 446 235 LHD D TO H : BANK :-10
301 248 LMA 447 7 RET
302 68 53 JMP DATA3 448
305 168 NDATA XRA CLEAR AC AVU CARR 448 **ADDRESS CHECKI NC
Y 448
306 199 LAM 448 46 11 *ACHECK LHI 11 H:lt
307 18 RAL ROTATE LEFT 450 54 254 LLI 254 L:~511
308 248 LMA 452 199 LAM LOAD FI:-lAL ADRF.S.
309 54 255 DATA3 LLI 255 TO AC
311 207 LSM LOAD /'! TO B 453 49 DeL L:1.-1 =fl"i3
312 8 I!IIB INC DATA BIT COUN 454 191 CPM COMPAP.EHIF-IH
TER 455 104 205 JTZ CHECK JUMP IF AF-AI:O
313 249 LMS 458 215 LCI'! LOAD AI TO AC
314 72 255 0 JFZ DATA2 JUMP IF B IS NOT 459 16 INC AI=AI+\
ZERO 460 250 LMC LOAD A I TO MEMORY
317 70 9 0 FDATA CAL TAPE CALL FOR TAPE I NP 461 7 CHECK RET
UT 462
320 6 70 LAI 106S LOAD(n 462 *
*PROGRAM BEG I NS
322 185 CPB SEARCH FOR (F> 462
323 104 88 JTZ DATA4 STORE DATA IF IT 462 70 186 0 *START CAL CRLF
IS ( n 465 14 170 LBI 252B B:2528
326 6 66 LAI 102B LOAD CB) 467 70 150 0 CAL TTYOUT TYPE C*)
328 185 CPS SEARCH FOR (B> 470 70 12 0 CAL TTY CALL FOR TTY KB I
329 104 248 0 JTZ DATAl DELETE LAST INSTR NPUT
UCTION IF IT IS (S> 473 '6 84 LAI 124B LOAD (T) TO AC
332 6 127 LAI 177B LOAD (RO) 475 185 CPS AC-8
334 185 CPB SEARCH FOR (RO) 476 104 3 2 JTZ TAPEIN JUMP IF AC-B:O
335 72 34 JFZ FMEROR JUMP IF IT IS NOT 479 6 69 LAI 105B AC .. \05B, (E)
(RO> 481 185 CPB AC-B
338 70 90 CAL RUBOUT CALL FOR (RO) ROU 482 104 31 2 JTZ EXECUT JUMP IF AC-B:O
TINE 485 6 82 LAI 122B AC=122B, ('R)
341 68 255 0 JMP DATA2 487 185 CPS AC-B
344 168 DATA4 XRA CLEAR AC AND CARR 488 104 6 2 JTZ READIN JUMP IF AC-B:O
Y 491 6 67 LAI 103B AC .. \03B, ec)
345 DATAEN RET 493 185 CPS AC-B
346 494 104 77 2 JTZ CONTIN JUMP IF AC-B=O
346
**RUBOUT ROUTINE 497 6 76 LAI 114B AC=114B. (1.)
346 499 185 CPB AC-B
346 192 *
RUBOUT LAA NOP 500 104 94 2 JTZ LISTIN JUMP IF AC-B=O
347 192 LAA 503 6 80 LAI 120B AC:120B, CP)
348 192 LAA 505 185 CPB AC-B
349 192 LAA 506 104 181 2 JTZ PROGRM JUMP IF AC-B:O
350 192 LAA 509 70 197 0 CAL ERROR TYPE (7)
351 192 LAA 512 68 206 I JMP START
352 192 LAA 515
353 7 RET 515 **LOAD DATA INPUT TO 1101 RAM
354
354 **FORMAT ERROR ROUTINE
515
515 70 141 1 *
TAPEIN CALENTERA ENTER ADDRESS
354
354 14 160 *FORMATLBI 240B LOAD esp>
518 70 23,9 0 READIN CAL DATAIN
OUTINE
READ TAPE INPUT R
356 70 150 0 CAL TTYOUT TYPE esp> 521 26 RAR CHECK FOR FE FLAC
359 14 198 LBI 306B LOAD cn 522 96 206 JTC START JUMP IF CARRY=1
361 70 150 0 CAL TTYOUT TYPE en 525 54 250 LLI 250 L=250
364 14 197 LBI 305B LOAD eE) 527 215 LCM LOAD MEMORY TO C
366 70 150 0 CAL TTYOUT TYPE (E) 528 70 181 CAL SETMA SET MEMORY ADDRES
369 70 186 0 LISTA CAL CRLF S
372 54 253 PRINTA LLI 253 L:253 531 194 LAC
374 207 LBI'. LOAD MEMORY TO B 532 83 OUT liB
375 70 '99 0 CAL BINBCD BIN TO BCD CONV 533 248 LMA LOAD DATA TO MEMO
378 38 253 LEI 253 E.. 253 RY
380 49 DCL L:L-l 534 70 192 1 CAL ACHECK COMPARE AF AND AI
381 49 DCL L"L-l 537 104 206 1 JTZ START JUMP IF A:O
382 199 FMl LAM LOAD MSD TO AC 540 68 6 2 JMP READIN READ INPUT DATA
383 4 128 ADI 128 AC-AC+12~ 543 46 11 EXECUT LHI 11 H:l1
385 200 LBA LOAD AC TO B 545 54 240 LLI 240 L=?40
386 70 150 0 CAL TrYOUT TYPE BCD LOCATION 547 BANKO EQU 4000B BANK 0 LOCATION
389 48 INL 547 BANK 1 EQU 4400B BANK t LOCATION
390 32 INE E=E+l 547 BANK2 EQU 5000B BANK 2 LOCATION
391 72 126 JFZ FMl JUMP IF E IS NOT 547 BANK3 EQU 5400B BANK 3 LOCATION
o 547 70 203 0 CAL ADRESH ENTER BANK NO
394 6 LAt 1 FORMAT ERROR FLAG 550 70 186 0 CAL CRLF
396 7 RET 553 199 1.AM LOAD MEMORY TO AC
397
397 **ENTER ADDRESS AND CONVERT THEM INTO BINARY REP.
554
556
20
4
48
8
SUI
ADI
48
8
AC-AC-48
AC=AC+8
397
397 46 11 *ENTERALHt 11 H-l1
558
559
23'2
6 8
LHA
LAI 8
LOAD AC TO H
AC .. S
399 54 240 LLI 240 L:240 561 189 CPH AC=AC-H
401 70 203 0 ENTERH CAL ADRESH ENTER BANK NO. 562 104 0 JTZ BANKO JUMP IF ACeO
404 70 216 0 ENTERL CAL ADRESL ENTER INITIAL ADD 565 6 9 LAI 9
RESS 567 189 CPH
407 70 224 0 CAL ADI ENTER FI NAL ADDRE 568 104 0 9 JTZ BANKI
SS 571 6 10 LAI 10
410 70 186 0 CAL CRLF 573 189 CPH
413 54 246 LLI 246 L~246 0
415 70 62 ° Y
CAL BCDSIN FINAL ADRES-BINAR
574
577
579
104
189
6 11
10 JTZ
LAI
CPH
BANK2
11
418 209 LCB LOAD S TO C , 580 104 0 11 JTZ BANK3
419 49 DeL L:L-l 583 70 197 0 CAL ERROR
420 70 62 0 CAL BCDBIN INITIAL ADRES-BIN 586 68 206 1 JMp START
ARY 589 46 11 CONTIN LHI 11
423 49 DeL L"L-l 591 S4 252 LLI 252
424 199 LAM AC-M 593 223 LDM
425 20 48 SUI 48 AC-AC-48 594 24 IND D"o+l
427 4 8 ADI 8 AC-AC+8 595 251 LMD BA!'rt{aSANK+ 1
429 54 252 LLI 252 L-252 596 48 INL L-L+l
431 248 LMA STORE SA:m NO IN 597 168 XRA CLEAR AC
M 598 248 LMA INITIAL ADRESzO
432 48 INL L:L+l=253 599 48 INL
433 249 LMB STORE INITIAL ADR 600 6 255 LAI 255
ES IN M 602 248 LMA FINAL ADRES:255
434 48 INL L .. L+1-254 603 68 6 2 JMP READHll
435 250 LMC STORE FINAL ADRES
101
606 * R·=4
606 *PROM LISTING ROUTINE' 690 68 109 J!'IP LIST!
606 * 693
606 46 11 LISTIN LHI 11 H"'II 693 '"'PROM
" PROCF.AMMEF.
608 54 240 LLI 240 L-240 693 *
610 70 148 CAL ENTERL ENTER INITIAL & I' 693 70 141 PEOCP'~ CAL ENTERlI E:'JTFR ME:-IORY AGDR
INAL ADR. ES5
613 70 186 0 LISTER CAL CRLF 696 54 255 PCI LLI 255 REPROCRAM CO:'JTR.
616 54 251 LLI 251 L=251 698 6 253 LAI 2'53 PC=?'"i:l
618 6 252 LAI 252 NO. OF INSTR. PER 700 246 Lf'.A LOAD AC TO fY:F:"':Oi'Y
LINE 701 14 141 LBI 2158 CAF.RIACF RETUP.:'J
620 248 LMA LOAD AC TO MEMORY 703 70 150 CAL TTYOUT
621 70 116 LISTI CAL PRINTA PRINT ADDRESS 706 70 181 PC2 CAL 5ET"1'1 SET ACDRFS5 TO 17
624 14 160 LBI 240B LOAD [SP] 02
626 70 150 0 CAL TTYOUT PRINT [SP] 709 6 255 LA! 255 COMPLEMENT I'lPUT
629 14 194 LBI 302B LOAD [E] CATA
631 70 150 0 CAL TTYOUT PRINT [B] 711 175 XF.!o' LOAD DATA TO AC
634 54 253 1.1.1 253 1.=253 712 83 OUT 118 '.~P.ITE DATA TO OUT
636 199 LAM LOAD AI TO AC
637 81 OUT lOB OUTPUT AI TO OUT 713 6 LA! 4 AC=4. DELAY
0 715 67 OUT 13E PROCP.AM PULSE ENA
638 38 248 LEI 248 READ DELAY/DATA E BLE
IT CONTR 716 38 197 LEI 197 E=197. DELAY - 52
640 67 INP IB READ INPUT FROM 1 o M5EC.
702 718 70 55 0 PC4 CAL TTYDI DELAY - 8.672 MSE
641 18 LIST2 HAL C.
642 54 249 LLI 249 1.-249 721 32 INE E"'E+I
644 248 LMA SAVE INPUT DATA 722 72 206 JFZ PG4 JUMP IF E IS NOT
645 96 144 2 JTC PRI1<lTP PRINT [P] IF CARR
Y=1 725 6 0 LAI 0 AC=O
648 14 206 LBI 316E LOAD [1'1] 727 87 OUT 13E DISABLE PROCRA[Y' P
650 70 150 0 CAL TTYOUT PRINT (N] ULSE
653 68 149 2 JMP LIST3 728 45 RST 5 DELAY APPROXI. 9
656 14 208 PRINTP LEI 320B LOAD CP] MSEC
658 70 150 o- CAL TTYOUT PRHIT [P] 729 67 INP 18 READ DATA FROM 17
661 199 LIST3 LAM LOAD DATA TO AC 02
662 32 INE E=E+l 730 191 CPM COMPARE DATA
663 72 129 2 JFZ LIST2 JUMP IF E IS NOT 731 104 246 JTZ PC5 JUf'.P I I' COMPARED
0 734 14 164 LEI 244E LOAD ($]
666 14 198 LBI 306B LOAD [I'] 736 70 150 0 CAL TTYOUT PR[IIH!-]
668 70 150 0 CAL TTYOUT PRINT (1'] 739 46 II LHI II
671 14 160 LSI 240B LOAD [SP] 741 54 255 LLI 255
673 70 150 0 CAL TTYOUT PRINT CSP] 743 207 LEM
676 70 192 I CAL ACHECK AF - AI 744 8 INB
679 104 206 1 JTZ START 745 249 LME LOAD B TO MEMORY
682 54 251 1.1.1 251 LOAD LINE CONTR. 746 72 194 2 JFZ PC2
TO AC 749 70 197 0 CAL ERROR PRINT [?]
684 215 LCM LOAD MEMORY TO C 752 70 113 I CAL LISTA PRI"lT ADDRESS
665 16 INC C=C+l 755 68 206 1 JMP START
666 250 LMC 758 70 192 I PC5 CAL ACHECK
687 lOll 101 2 JTZ LISTER Jl~P IF LINF CO'lT 761 104 206 I JTZ START
764 68 164 JMP PCI CO"lTlNUE PRCC. "IE
XT INSTR.
767 END
102
APPENDIX VI The widespread usage of low-cost microcomputer systems is made pos-
sible by I ntel's development and volume production of MCS-8 micro-
computer sets. To make it easier to use these sets, Intel now offers
complete 8-bit modular microcomputer development systems called
Intellec 8.
Bare Bones 8 ory, I/O, crystal clock, power supplies, standard software, and a control
and display console.
The major benefit of the I ntellec modular microcomputers is that ran-
and dom access memories (RAMs) may be used instead of read-only-mem-
ories (ROMs) for program storage. By using RAMs, program loading
Microcomputer and modification is made much easier. In addition, the Intellec front
panel control and display console makes it easier to monitor and debug
programs. What this means is faster turn-around time during develop-
Modules ment, enabling you to arrive at that finished system sooner.
The Intellec 8 Eight-Bit Microcomputer Development System. The
Intellec 8 is a microcomputer development system designed for applica-
tions which require 8-bit bytes of data to perform either binary arith-
metic manipulations or logical operations. The Intellec 8 comes com-
plete with power supplies, display and control panel, and finished cabi-
net. It can directly address upto 16k 8-bit bytes of memory which can
be any mix of ROMs, PROMs, or RAMs. The Intellec 8 is designed
around the I ntel' 8008 central processor chip. There are 48 instructions
including conditional branching, binary arithmetic, logical, register-to-
register, and memory reference operations. I/O channels provide eight
8-bit input ports and twenty-four 8-bit output ports - all completely
TTL compatible. The unit has interrupt capability and a two-phase
crystal clock that operates at 800 kHz providing an instruction cycle
time of about 12.5JLs.
Bare Bones 8. The Bare Bones8 has the same capability as the Intellec
8 only it does not include the power supplies, front panel, or finished
cabinet .. It is designedas a rack-mountable version.
The I ntellec 8 system comes with a standard software package which
includes a system monitor, resident assembler, and text editor. The
programmer can prepare his program in mnemonic form, load it into the
Intellec 8, edit and modify it, then assemble it and use the monitor to
load the assembled program.
Other development tools for the Intellec 8 include a PL/M compiler,
cross assembler, and simulator designed to operate on large scale general,
purpose computers. PL/M, a new high-level language, has been develop-
ed as an assembly language replacement. A PL/M program can be writ-
ten in less than 10% of the time it takes to write that same program in.
assembly language without loss of machine efficiency.
Standard Microcomputer Modules. Microcomputer Modules, standard
cards that can be purchased individually so that the designer can develop
his system with as little or as much as he needs, are also available.
Additional CPU, Memory, Input/Output, PROM Programmer, Universal
Prototype, and other standard modules provide developmental support
. and systems expansion capability.
103
• •
I Intellec 8/ Bare Bones 8
MCS-8 MICROCOMPUTER DEVELOPMENT SYSTEMS
• Intellec 8 (imm8-80A): Complete Microcomputer • 9k bytes of Memory (expandable to 16,3S4 bytes
Development System - I ntellec 8)
Central Processor Module III 5k bytes of Memory (expandable to 16,384 bytes-
RAM Memory Modules (8192 x 8) Bare Bones 8)
Input/Output Module (TTL compatible) • Direct Access to Memory and I/O
PROM Memory Module (4k x 8 capacity; • Four 8-bit input ports (expandable to eight)
1k Resident System Monitor included)
PROM Programmer Module • Fou.r 8~bit output ports (expandable to twenty-four)
Control Console and Display • Universal Asynchronous Transmitter Receiver for
Power Supplies and Cabinet serial communications interface
• Bare Bones 8: MCS-S System without power • Real time interrupt capability
supplies, cabinet, or control console • Crystal controlled master system clock
• Standard Software
Resident Assembler} Requires
System Monitor Text Editor Sk of RAM
The I ntellec 8 is a complete microcomputer development operate at either 110 baud for standard teletype inter-
system for MCS-8 microcomputer systems. Its modular face or 1200 baud for communication with a high speed
design allows the development of any size MCS-8 system, CRT terminal. Additional I/O modules, imm8-60, and
and it has built-in features to make this task easier than output modules, imm8-62, can expand the I/O capability
it has ever been before. of the I ntellec 8 to eight input ports and twenty-four
The basic Intellec8 (imm8-80A) consists of six microcom- output ports, all TTL compatible.
puter modules (CPU, 2-RAM, PROM, I/O and PROM pro- An interrupt line and an 8-bit interrupt instruction port
grammer), power supplies, and console and displays in a is built into the imm8-82 Central Processor Module. When
small compact package. The heart of the system is the an interrupt occurs, the processor executes the instruction
imm8-82 Central Processor Module. It is built around which is present at the interrupt instruction port. In the
Intel's 8008-1, an 8-bit CPU on a chip. It contains all Intellec 8, both the interrupt line and the interrupt instruc-
necessary interface to control up to 16k of memory, eight tion port are connected to the console. The processor
8-bit input ports, twenty-four 8-bit output ports, and to may be interrupted by depressing the switch labeled I NT,
respond to real time interrupts. and the interrupt instruction is entered in the ADDRESS/
The I ntellec 8 has 9k bytes of memory in its basic con- INSTRUCTION/DATA switches.
figuration and may be expanded up to a maximum of
Additional module locations are available in the Intellec 8
16,384 bytes of memory. Of the basic 9k bytes of mem-
so the user may develop his own custom interface using
ory, 8192 bytes are random access read/write memory
the imm6-70 Universal Prototype Module. All necessary
located on the imm6-28 RAM Memory Modules and are
control signals, data, and address buses are present at the
addressed as the lower 8k of memory. This memory may
connectors of the unused module locations for this ex-
be used for both data storage and program storage. The re-
pansion. When memory, liO, and custom interfaces are
maining 1024 bytes of memory are located on the imm6-26
added to the I ntellec 8, care should be taken not to ex-
PROM Memory Module and addressed as the upper 1280 ceed the built-in power supply capability.
bytes of the 16k memory. This portion of memory is a
system monitor in five 1702A PROMs. Eleven additional Every I ntellec 8 comes with three basic pieces of software,
sockets are available on the imm6-26 for monitor or pro- the systems mon itor, a resident program located in the
gram expansion. Control for the PROM Programmer upper 1280 bytes of memory, a symbolic assembler and
Module (imm6-76) is included with the monitor for system a text editor. The resident systems monitor allows the
control. operator to punch and load tapes, display and alter mem-
ory, and execute programs.
PROM memory modules and RAM memory modules may
be used in any combination to make up the 16k of direct- With the PROM Programmer Module, 1702A PROMs may
ly addressable memory. Facilities are built into these be programmed and verified under control of the system
modules so that any combination of RAM and ROM or monitor.
PROM may be mixed in 256 byte increments. The text editor is a paper tape editor to allow the oper-
Input and output in the Intellec 8 is provided by the ator to edit his source code before assembly. The assem-
imm8-60 I/O module. It contains four 8-bit input ports, bler takes this source tape and translates it into object
and four 8-bit output ports. In addition it contains a code to run on the I ntellec 8 or any MCS-8 system.
universal asynchronous transmitter/receiver chip as well The I ntellec 8 microcomputer development system is also
as a teletype driver, receiver, and reader control. Bit serial
available in a Bare Bones 8 version. In this version the
communication using only the teletype drivers, receivers,
power supply, chassis, console, and display are removed
and the I/O port, is also possible with this module.
leaving the user a compact rack mountable chassis to
The universal asynchronous transmitter receiver chip may imbed in his own system.
104
•
I Intellec 8/ Bare Bones 8
",A:l.
A
~
CPU
K "I
INTERRUPT INSTRUCTION BUS
FRONT PANEL
immS-S2 CONTROL LOGIC
~
A
K.... CONTROL BUS
v'
/'). /
DATA TO MEMORY
i i
DATA FROM MEMORY
"\./
• ANY COMBINATION TO
• MAX 16k OF MEMORY :
•
MEMORY
MODULE-
A
r:::;:
"
4 INPUT
PORTS
4 OUTPUT
I
A
32 DATA LINES
v >
32 DATA LINES
PORTS .... I NPUT/
OUTPUT OUTPUT !I. S
MODULE MODULE 64 DATA LINES OUTP UT
immS-60 immS-62 v POR TS
TELETYPE OR
/1
HIGH SPEED
COMMUNICATIONS ....
SERIAL -)
v
(MEMORY ADDRESS BUS/OUTPUT:DATA:>
INTERFACE
.~
CONTROL BUS
I
4 INPUT -)
, l
PORTS I 32 DATA LINES
v
A
4 OUTPUT
32 DATA Lll\tfS INPUT/
PORTS OUTPUT ..... S
"I OUTPUT
MODULE MODULE 64 DATA LINES OUTPUT
immS-60 immS-62 v POR TS
TELETYPE OR
BUS/OUTPUT~
/1
HIGH SPEED SERIAL "\ (A MEMORY ADDRESS
COMMUNICATIONS
INTERFACE
"I V " V
105
inter Intellec 8
106
Intellec 8
107
in~r~ ______ln_te_lIe_C_8_/_B_a_re_B_o_ne_S_8______111111
SYSTEMS SOFTWARE
The Intellec 8 and Bare Bones 8 Microcomputer Development Systems come with
three pieces of software: Resident System Monitor, Text Editor and Symbolic
Assembler. The Text Editor and Assembler are supplied on paper tape and are
loaded with the System Monitor.
BUS INTERFACE
FRONT PANEL CONTROLLER
CPU
RAM 3
RAM'l
RAM 1
RAM 0
PROM 3 OUT 3
PROM 2 OUT 2
PROM 1
PROM 0
~/01
1/00
CUSTOM INTERFACE MAY BE USED <C..------PROM, PROGRAMMER MODULE
IN ANY OF THESE LOCATIONS
109
•
I Microcomputer Modules
The imm8-82 Central Processor Module is a complete 8-bit parallel central processor unit. It contains complete'
control for interface to memory and I/O. Thi's is the main module in I ntel's I ntellec™ 8 systems.
The imm8-82 is bu ilt around Intel's 8008-1 CPU on a chip. I t executes 48 instructions including conditional
branching, register to register transfers, arithmetic, logical and I/O instructions. Six 8-bit registers and an 8-bit
accumulator are provided. Subroutines may be nested to seven levels. Real time interrupt capability is provided
and the processor may directly address up to 16,384 bytes of memory.
The imm8-82 has a fourteen bit TTL compatible memory address bus, an 8-bit data output bus and an 8-bit
memory data input bus. Memory read and write signals and the wait request signal provide interface at TTL
levels to any type of memory (including PROM, ROM, and RAM). Asynchronous interface to slower speed
memories (access> 1J1s) is provided by the wait request signal. This causes the processor to wait for memory
response to a read or write command.
The Central Processor Module directly addresses up to eight 8-bit input ports and twenty-four 8-bit output ports.
The 5-bit I/O address is contained in the upper byte of the memory address bus. Addresses 0 through 7 are
defined as input ports, and 8 through 31 as output ports. Control signals, I/O cycle, I/O in and I/O out, define
the I/O cycle and its function. An 8-bit data output bus and an 8-bit data input bus, both TTL compatible,
provide data channels in and out of the processor module.
Real time interrupt capability and direct memory access capability complete the list of functional features for
the imm8-82. During an interrupt, the Central Processor Module responds to the instruction presented at the
8-bit interrupt instruction port. Unless the main program flow is altered by the interrupt instruction, the exe-
cution will continue where it left off before processing the interrupt. Eight bits of data including sign, carry,
zero and parity flags are latched on a separate bus during the execution portion of most instructions.
The direct memory access capability allows an alternate source to access memory or I/O while temporarily sus-
pending processor operation. At the end of this alternative access to memory, the processor may return to nor-
mal program execution.
All system timing is derived from a two phase crystal clock running at 800kHz. This gives a machine cycle time
of 12.5J1s ± 0.01 % and provides an accurate ti ming source for software delay loops and other timing requirements.
110
i·nte~I~________M_ic_r_o_c.....;..o_m.-.:..p_u_te-r-M-o-d-u-le-s--_________". .
111
1iIIIiIIIJIj1. 'ill"1
r-------------r--+--------------------+----------------~~~~CA}CPUCLOCK
PROCESSOR (PCW) MEM WRITE CYC
CYCLE BUS (PcC) i70CYC
{
(PCI) FETCH CYC ~------------r--.------------------~-+--------------~~61 BUS OUT
~----------_.--~------------------~~------------~~0
CONTROL
LOGIC
(CCO)
RAM MOD ENBL ----.. (CC1)
PROM MOD ENBL
BUS CTL
ADDRESS CONTROL
CYCLE CODING (CCO, CC1)
t-_ _ _ _ _.....,_8~. . ~~~~~~ (DB 0-7)
111
•
I Microcomputer Modules
The imm6-28 RAM Memory Module is a standard 4k x 8 memory module designed for use with the Intellec 8
Microcomputer Development System. This module contains address and data buffers, read/write timing circuits
and is implemented with Intel's 2102 1k x 1 static RAM. Although the basic memory module is 4096 x 8, con-
figurations as small as 1024 x 8 are also available.
The imm6-28 RAM Memory Module is used with the MCS-8 Micro Processor in configurations of up to 16k bytes
of memory (4 modules). The imm8-82 Central Processor Module directly interfaces with the imm6-28 RAM
Memory Module with all module select decoding done directly on the connector. This allows an imm6-28 to be
moved to any location within the 16k of memory without making any changes in the module. This bui.lt-in
decoding allows additional expansion of memory by bank switching.
112
i~~e____~_________M_ic~r_o_c_o_m~p_u_te_r_M__O~d~ul~e~s__________~IIIIIII~I"·.··M·_
t
DBo - - - -___~ MOO
DB, - - - -___~ MD1
DB2 - - - -___~ MD2
D B 6 - - - - -. . MD6
DB7 -------~
..
_
MD7
DATA TO DATA FROM
MEMORY MEMORY
MAD 12
MAD 13
-
MAD 14
MAD 14
MODULE
MAD 15 - - - - -••~I SELECT
LOGIC ADDRESS BUFFER
MAD 15
MS12
MS13
MS 14 . MAD 0 MAD 1 MAD 2 MAD 3 MAD 4 MAD 5 MAD 6 MAD 7 MAD 8 MAD 9 MAD 10 MAD 11
MS15
MEMORY ADDRESS
RAM
MOD ENBL
ADR STB
113
• •
I Microcomputer Modules
The imm6-26 PROM Memory Module may be used with the imm8-82 8-bit Central Processor Module for non-
volatile program storage. Each PROM Memory Module has sockets for from one to sixteen of Intel's 1602A or
1702A PROMs. In addition, the 1302 mask programmed ROM may be used in place of the PROMs in OEM
applications.
The PROM Memory Module is used for program storage and look-up-tables with the MCS-8 8-bit Micro Proces-
sor. It interfaces directly with the imm8-82 Central Processor Module and may be used with the imm6-28 RAM
Memory Module in any combination to 16k bytes. Special control logic on the imm6-28 module allows any mix
of PROM and RAM in a system in 256 byte increments.
For memories larger than 4k bytes, decoding on the module allows addressing of up to sixteen imm6-28 modules
for a total of 65k bytes of memory. The decoding is accomplished on the module connector. Any imm6-26
may be plugged in to any memory module connector. /
114
• Microcomputer Modules
I
I
(1)Board loaded with all 16 PROMs.
MADO----------••~I
MAD1----------~
MAD 2 ---------~
MAD3----------••~1 ADDRE~ I
I--------I~ MD5
MAD8----------~
J-------I~ MD6
MAD9---------....~1 CHIP 256 x 8
SELECT TO - . . - - - - - - -... MD7
MAD10---------.....~1 LOGIC 4096 x 8
MAD 11---------~ DATA FROM
MEMORY
MAD12---------~
MAD 12 ...----------1
MAD 14 - - - - - - - - -....~I
MAD 14 ...----------1
MODULE
MAD 1 5 - - - - - - - - -.....~1 SELECT
MAD 15 - LOGIC
MS 12 - - - - - - - - -.....
MS 13 - - - - - - - - -.....~I
MS14---------~~
MS 15 ----------II..~.
PROM MOD _____________ ----l+
EKiBL
115
Microcomputer Modules
-...
immS-60 INPUT/OUTPUT MODULE
• Four 8-bit input ports and four 8-bit latching output ports
• TTL compatible
• Interfaces directly with imm8-82 Central Processor Module
• TeletYpe asynchronous transmitter/receiver and controls on board
• Transmission rates of 110 or 1200 baud
• Crystal clock for asynchronous transmitter/receiver
• Capable of high speed serial communications to 9600 baud
The imm8-60 I/O Module provides four 8-bit TTL compatible input ports and four 8-bit" TTL compatible latch-
ing output ports. It interfaces directly with the imm8-82 Central Processor Module. Built-in decoding on the
board provides for expansion of I/O to the maximum with the addition of one imm8-60 and two imm8-62 Out-
put Modules (eight input ports and twenty four output ports).
For more efficient use of the imm8-82 Central Processor, an asynchronous transmitter receiver is included in the
module. This frees the processor of time-consuming bit manipulation during bit serial data transmission. The
transmitter receiver operates at either 110 or 1200 baud and by alteration of the basic clock frequency, data
rates to 9600 baud may be obtained. The module contains drivers and receivers for connection to a teletype.
These may be used with the asynchronous transmitter receiver or directly with I/O ports for bit serial transmis-
sion and reception of teletype data.
The module is configured with all common control signals bused to the module on the PC connector, while all
I/O signals are available at the ribbon connectors on the top of the module.
I/O Module
116
i~~~·_______________M~'i~c_ro~c~o~m~p~ut_e_r_M_o~d~u=l~e~s__--------~I111111~
.•·.·M·~····
SERIAL SERIAL
FROM TTY TTY
RECEIVER - DATA IN CRYSTAL
CLOCK
DATA OUT
~
TTY
TRANSMITTER
TO TTY
~
COMMUNICATIONS
PARALLEL DATA OUT ,8 INTERFACE PARALLEL DATA IN
(RECEIVED DATA) , -~-"'9"""~-"" (TRANSMITTED DATA)
STATUS OUT
J 8
... '"
TTY RDR
CONTROL
TO READER
RELAY
J
DATA FROM CPU
,,8
ADDRESS BUS I
t ,8 PORT 0
, PORT
CONTROL BUS ,8 PORT 1
L
SELECT
J
, OUTPUT FOUR SBIT
LATCHES ,8 PORT 2 OUTPUT
4 PORTS
. . . 1-- ',8 PORT 3
,
~
DATA TO CPU
,,8
8-BIT ---f/---.....
FOUR { ] : : : ':
-
~I .... INPUT
INPUT PORT 2 8 MUX
PORTS ----~~------~~
PORT 3',8
----~,--------~~
----
117
•
I Microcomputer Modules
• TTL Compatible
The imm8-62 Output Module provides eight 8-bit latching output ports for direct interface with the imm8-82
CPU Module. Each port is individually addressable, and all outputs are TTL compatible. The module address
includes decoding for expansion to a full complement of 24 output ports. This may be accomplished by using
two imm8-60 I/O Modules and two imm8-62 Output Modules. All output signals are available through a ribbon
connector at the top of the module.
Output Module
118
Microcomputer Modules
/8 -
PORT 0
,/8 POR'f1
,8
DATA FROM CPU ; •
,/8 PORT2
,,8 PORT 5
,,8 PORT 6
,,8 PORT 7
-
ADDRESS BUS , ,5
OUTPUT
PORT
SELECT
t
CONTROL BUS
119
• ®
Microcomputer Modules
I
imm6-76 PROM PROGRAMMER MODULE
• High speed programming of Intel's • Direct interface with Intel's Intellec 8
1702A or 1602A PROM Microcomputer Development System
• All necessary timing and level • Complete software necessary for use
shifting included included with Intellec 8 system monitor
The imm6-76 PROM Programmer Module provides all necessary hardware and software to add PROM program-
ming capability to the Intellec 8 microcomputer development system.
The module has been designed to slip into the I ntellec 8 and provides all connections to the zero insertion force
socket on the front panel. All required timing and level shifting is accomplished on the module utilizing the high
voltage power supply already located in the Intellec 8.
Software to control programmer operation is included as part of the Intellec 8 system monitor. This software
is specifically written for the Intellec 8 and allows both programming and verification of 1602A and 1702A
PROMs. In addition, the contents of any PROM may be listed or unloaded into memory for duplication.
The imm6-76 may also be used as a stand alone PROM programmer with toggle switches or with another com-
puter providing data address and control signals.
5/
SHIFTERS
CONTROL BUS
- Vees
,
GND PRGM
POWER
;4
CS (0·3)
PROGRAM
Vee
• SUPPLY
REGULATOR
Voo IGND
CONTROL 14
PULSE
TIMING
Voo
• BUFFERS
VBB TO PROM
STAT (0·3) (
Vp AND LEVEL VGG
INTERFACE
SHIFTERS
CS
Vecs
;8
DATA IN (0·7)
/1 8
DATA OUT (0·7) DATA
BUFFERS
DATA OUT CTL 8
AND ,J DATA (0·7)
DA T A OUT ENBL
DATA IN cn
- LEVEL
SHIFTERS
DATA IN ENBL
120
• ®
Microcomputer Modules
I
The imm6-70 Universal Prototype Module is a standard size microcomputer module with power buses which in-
terface with the I ntellec 8. It provides a standard format for prototyping both customer interface and system
. control. I/O interface is provided through ribbon-type connectors on top of the module.
The module will accept dual in-line packaged components having pin center-to-center dimensions of 0.100 inch
by 0.300 inch or 0.100 inch by 0.600 inch. These parts should be mounted in standard wirewrap sockets.
121
• Microcomputer Modules
I
The imm6-72 Module Extender is designed to be used with the Intellec 8 system. It allows the operator to ex-
tend any module out of the cage for servicing while maintaining all electrical connections.
Module Extender
122
123
u.s. SALES AND MARKETING OFFICES
U.S. MARKETING HEADQUARTERS NATIONAL SALES MANAGER
3065 Bowers Avenue Hank O'Hara
408/246-7501, TWX: 910-338-0026 3065 Bowers Avenue
Telex: 34-6372 408/246-7501, TWX: 910-338-0026
-Santa Clara, California 95051 Telex: 34-6372
·Santa Clara, California 95051
INTERNATIONAL DISTRIBUTORS
AUSTRALIA DENMARK GERMANY NETHERLANDS SWEDEN
AJ. Ferguson (Adelaide) PTY. Ltd. Scandinavian Semiconductor Alfred Neye Enatachnik GmbH Inelco N.V_ Nordisk Elektronik AB
125 Wright Street Supply A/S Schillerstrasse 14 Weerdestein 205 Fack
51-6895 20, Nannasgade 041 06/612-1, Telex: 02-13"590 Postbus 7815 08-24-83-40, Telex: 10547
Adelaide 5000 Telex: 19037 2085 Quickborn-Hamburg 020441666, Telex: 12534 S-103 Stockholm 7
DK-2200 Copenhagen N Amsterdam 1011 SWITZERLAND
AUSTRIA ISRAEL
Bacher Elektronische Gerate GmbH FINLAND NORWAY Industrade AG
Meidlinger Haupstrasse 78 Havulinna Oy Telsys Ltd_ Nordisk Elektronik (Norge) A/S Gemen!.trasse 2
0222-9301 43, Telex: (01) 1532 P_O_ Box 468 54, labotinsky Road Mustads Vei 1 Postcheck 80 - 21190
A 1120 Vienna 90-61451, Telex: 12426 25 2839, Telex: TSEE-IL 333192 602590, Telex: 16963 01-60-22-30, Telex: 56788
SF 00100 H.lsinki 10 Ramat - Gan 52 464 Oslo 2 8021 Zurich
BELGIUM ITALY
FRANCE SOUTH AFRICA UNITED KINGDOM
Inelee Belgium S.A.
Avenue Val Duchesse, 3 Tekelec Airtronic Eledra 3S Electronic Building Elements Walmore Electronics Ltd.
(02) 60 00 12, Telex: 25441 Cite des Bruyeres Via Ludovico da Viadana 9 P.O. Box 4609 11-15 Betterton Street
8-1160 lrux.lles Rue Carle Vernet (02) 86-03-07 78-9221, Telex: 30181 SA Drury Lane
626-02-35, Telex: 25997 20122 Milano Pretoria 01-836-Q201, Telex: 28752
92 Selfes London WC2H 9BS
124
u.s. DISTRIBUTORS
125
Ordering Information
1. The 8008 (CPU) is available in ceramic only and should be 7. SIM8 Hardware Assembler
ordered as C8008 or C8008-1 . Eight PROMs containing the assembly program plug into the
2. SIM8-01 Prototyping System SIM8-01 prototyping board permitting assembly of all MCS-8
This MCS-8 system for program development provides complete software. To order, specify C1702A/840 set.
interface between the CPU and ROMs and RAMs. 1702A elec-
8. PL/M Compiler Software Package
trically programmable and erasable ROMs may be used for the
Programs for the MCS-8 may now be developed in a high level
program development. Each board contains one 8008 CPU,
language and compiled to 8008 machine code. This program is
1 k x 8 RAM, and sockets for up to eight 1702As (2k x 8 PROM).
written in FORTRAN IV and is available via time sharing service
This system should be ordered as SIM8-01 (the number of or directly from Intel.
PROMs should also be specified).
3. Memory Expansion 9. MCS-8 Cross Assembler and Simulator Software Package
Additional memory for the 8008 may be developed from indivi- This software program converts a list of instruction mnemonics
dual memory components. Specify RAM 1101, 1103, 2102; into machine instructions and simulates the execution of instruc-
ROM 1702, 1302. tions by the 8008. This program is written in FORTRAN IV
and is aVailable via time sharing service or directly from Intel.
4. MP7-03 ROM Programmer
This is the programmer board for the 1702A. The 1702A control 10. Intellec 8
ROMs used with the SIM8-01 for an automatic programming The Intellec 8, Bare Bones 8, and microcomputer modules must
system are specified by pattern numbers A0860, A0861, A0863. be specified individually by product code.
5. MCB8-tO System Interface and Control Module imm8-80A Intellec 8 (complete table top system)
The MCB8-1 0 is a complete chassis which provides the intercon- imm8-81 Bare Bones 8 (complete rack mountable system)
nection between the SI M8 -01 and MP7 -03. I n addition, the imm8-82 Central Processor - includes 8008-1 CPU crystal
MCB8-10 provides the 50Vrms power supply for PROM program- clock and interface logic
ming, complete output display, and single step control capability imm6-26 PROM Memory - includes sockets for sixteen
for program development. 1702A PROMs
6. Bootstrap Loader imm6-28 RAM Memory - 4k x 8 static memory
The same control ROM set used with the PROM programming imm8-60 Input/Output - 4 input and 4 output ports
system is used for the bootstrap loading of programs into RAM imm6-76 1702A PROM programmer and control software
'and execution of programs from RAM. Specify 1702A PROMs imm6-70 Universal prototype module
programmed to tapes A0860, A0861 , and A0863. imm6-72 Module extender
Packaging Information
.050 i _ .2!'.!l---..l
MAX.! .310 I
.060
j l~
~ ~ ~ ~TYP.-/!- .012
15 0 MAX.-1
i
\-
126
MCS-8 T.M Instruction Set
INDEX REGISTER INSTRUCTIONS
The load instructions do not affect the flag flip-flops. The increment and decrement instructions affect all flip-flops except the carry.
MINIMUM INSTRUCTION CODE
MNEMONIC STATES ~ 06 05 04 0 3 ~ 0 1 DO DESCRIPTION OF OPERATION
REQUIRED
lSI 1 1 D D D S S S Load index register r 1 with the content of index register r2.
1:lILrM 181 1 1 DOD Load index register r with the content of memory register M.
LMr 1 1 1 1 1 Load memory register M with the content of index register r.
(31 l.rI (81 o 0 ODD 1 1 0 Load index register r with data B ... B.
B B B B B B B
LMI (91 o 0 1 1 1 1 1 Load memory register M with data B ... B.
B B B B B B B B
INr (51 o 0 ODD 000 I ncrement the content of index register r Ir f AI.
OCr (51 o 0 ODD o 0 1 Decrement the content of index register r (r I AI.
B B B B B B B
SBr (51 1 0 o 1 1 S S S
SBM (SIlO 0 1 1 1 1 Subtract the content of index register r. memory register M. or data
I-.....:::.:SB:::I=----+--..!(:::SI-........:f--..:..O~O--O"---.:....l"":"';--"":"""":0---':--1 data B ... B from the accumulator with borrow. An underflow
B B B B B B (borrowl sets the carry flip-flop.
I-....:N.:.:O:::.r_ _+_-.!.:(5:::.1----!....:...1...:0"---_1~0:........::0:........__=S__=S~S_lCompute the logical AND of the content of index register r,
I-....:N.:.:O:::.M::.....-_+_-.!.:(S:::.I----!....:...1...:0"---_1~0:........::0:........___,:1---=-1~1_l memory register M. or data B ... B with the accumulator.
NOI (SI 0 0 1 0 0 1 0 0
B B B B B B B B
I--'Xc:..:R..:.:r_ _+-_c:..:(5:::.1_---1-'-1_0"____1:........::0::........:1_......::;.S......::;.S--=.S-ICompute the EXCLUSIVE OR of the content of index register
1-....:~..:.::..:.:~:.:.....--+--..:.:~:::.:----!-0.:..1_~=---::........::~:........::::...-........;.:........;.~~~-lr. memory register M. or data B ... B with the accumulator.
B B B B B B B B
I--....:O:::.R..:.:r_ _+-_.!.:(5:::.'_---1-'-1...:0"---_1:........::1:........::0:..............:::.S......:::.S--=.S-ICompute the INCLUSIVE OR of the content of index register
I--....:O:::.R..:.:M::.....-_+-_.!.:(S::!.I_---1-'--=-_-'1:........::1:........::0:........-=.1---=-1~-Ir, memory register m, or data B ... B with the accumulator.
ORI lSI 1 0 0
B B B B B
I-~CP~r_ _-+-_..!15:::1_ _f--..:..l~0_....:...1_1.:........1:........__=S:........::S__=__1Compare the content of index register r. memory register M,
I--_C:::.;Pc..:.M"---_-+-_...!.(S:::I_ _~1......:::.0--'-1_1.:........1:""""--':::"""":-='-I0r data B ... B with the accumulator. The content of the
CPI (SI 0 0 1 1 accumulator is unchanged.
B B B B B B B
RLC (51 o 0 0 0 0 o 1 0 Rotate the content of the accumulator left.
RRC (51 o 0 0 0 o 1 0 Rotate the content of the accumulator right.
RAL (51 o 0 0 1 1 0 Rotate the content of the accumulator left through the carry.
RAR (51 o 0 0 1 1 1 0 Rotate the content of the accumulator right through the carry.
INPUT/OUTPUT INSTRUCTIONS
(S) o 1 o 0 M M M 1 Read the content of the selected input port (MMMI into the
accumulator.
(61 o 1 R R M M M 1 Write the content of the accumulator into the selected output
port (RRMMM, RR 1001.
MACHINE INSTRUCTION
(41 0 0 0 0 0 0 0 X Enter the STOPPED state and remain there until interrupted.
.-nfel"
H LT (41 1 1 1 1 1 1 1 1 Enter the STOPPED state and remain there until interrupted.
NOTES:
(1) SSS = Source Index Register } These registers. r" are designated A(accumulator-OOOI,
DOD = Destination Index Register B(001l, C(010), 0(011). E(l00I, H(1011, LlllOl.
(21 Memory registers are addressed by the contents of registers H & L.
(3) Additional bytes of instruction are designated by BBBBBBBB.
(41 X = "Don't Care".
(5) Flag flip-flops are defined by C4C3: carry 100-overfiow or underflowl, zerO (Ol-result is zero), sign (10-MSB of result is "1"1,
parity (ll·parity is evenl.
r
L____
IN_T_E_L CORPORATION • 3065 B::_5_A~:~a:_C_la_ra_._~lif._O_rn
__i_a._9_5_05_'__
- _(.4_0....8...'.... 2..._4.6_.-.7_..5...0._'..... __._. _______..J
lfi19l4/Printed in U.S.A./MCS·056·0574/25K