Pocketbook
Pocketbook
68000
Pocketbook
K"D . Peel
SEPTEMBER 1986
Preface 9
General resources 11
The MC68000 family of microprocessors II
Data types 14
MC68000 data storage 15
The Internal register set 16
Condition codes 20
Organization of data in registers 22
Organization of data in memory 23
Address modes overview 24
Accessing program code in memory 25
Addressing modes 26
Register direct 26
Data register 26
Address register 28
Register indirect 30
Register indirect with postincrement 31
Register indirect with predecrement 32
Address register indirect
with displacement 33
Address register indirect with index 34
Special modes 35
Absolute short 35
Absolute long 36
Program counter with displacement 37
Program counter with index 38
Immediate data 40
5
Immediate quick 40
Implied 41
Programming techniques 43
Stacks 43
User defined stacks 45
Access to system stack 46
Queues 47
Open ended 48
Circular buffer 49
Linked List 51
Add item to list 52
Remove item from list 53
Processing states 55
Normal 56
User state 56
Supervisor state 57
Exception processing 58
Multiple exceptions 59
Exception vectors 60
Reset 61
Interrupts 61
Bus error 62
Internal 64
Address error 64
Trace 64
Illegal instruction 65
Unimplemented instruction 66
Privileged instruction 66
Traps 66
Halted state 67
6
instruction summary 68
Instructions A to Z 68
Processor 98
Signal 1/0 98
Address bus 99
Data bus 99
Bus arbitration 99
Interrupt control 99
System control 100
Processor status 100
Appendices 103
7
Virtual memory 136
Cache memory 137
Index 141
8
Preface
Kathleen Peel
January 1986
9
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
General
Resources
The MC68000 Family of
Microprocessors
There are currently four devices in the 68000 range
of 16/32-bit microprocessors, they are developments
from the earlier 8-bit Motorola 6800 and the highly
acclaimed 6809 microprocessors. The 68000 series is
designed to be compatible with the less expensive
and less sophisticated 8-bit synchronous peripheral
support chips as well as the more powerful asyn-
chronous 16-bit support devices. All the 68000 series
processors share the same 56 instruction types with
only a few minor variations; most instructions may
use anyone of 14 different addressing modes, provid-
ing a range of well over 1000 instructions. The very
much more powerful MC68020 can run virtually all
software written for the standard MC68000, but
because of its greatly improved performance, soft-
ware is best written specifically for it to gain max-
imum benefit.
MC68000:
The standard MC68000 microprocessor, housed in a
64-pin dual-in-line package, consists of 8 x 32-bit
data registers, 7 x 32-bit address registers, two 32-bit
11
stack pointers,a program counter that may address 16
Megabytes through 24 active address lines and a 16-
bit status register, all operating within a 32-bit
internal architecture. The processor has memory
mapped I/O and performs operations on bit, nibble,
byte, word and longword sized data. The processor
supports both a prioritized interrupt capability, 6
levels, and a non-maskable interrupt set by the
seventh level.
MC68008:
The MC68008 is housed in a smaller 48-pin package
that limits the addressing range to 1 Megabyte via 20
address lines and provides only three levels of inter-
rupt including the non-maskable interrupt. The data
bus is 8-bits wide and consequently the instruction
and data fetch operations from memory tend to take
twice as long as those of the 16-bit wide bus,
increasing the average program execution time by
about 30"0.
MC68010:
The MC6801O, packaged in the same 64-pin layout
as the MC68000, has a slightly increased instruction
set and is able to support external (not resident in
physical memory) data access - virtual memory.
There are three new registers, Vector Base Register
(32-bit VBR), Source Function Code register (3-bit
SFC) and Destination Function Code register (3-bit
DFC), supported by two new instructions MOVEC
(Move Control register) and MOVES (Move Altern-
ate Address Space). RTD performs return and deal-
12
locate, there is a 1'v10VE from CCR instruction and
MOVE from SR becomes privileged in the MC68010
instruction set. There is a very small 6 byte cache
memory facility, which can be used to produce
extremely fast loop timings using the DBRA
instruction.
MC68020:
The MC68020 is the most powerful of the current
range of Motorola 68000 microprocessors, retaining
all the capabilities of the MC68010, it has a full 32-
bit data and address bus and comes in a 114 pin
package. The MC68020 can address 4 gigabytes of
memory and has much better mathematical capabilit-
ies which include improved BCD operations, 64-bit
multiplication and divisions. An enhanced instruct-
ion set, with 62 addressing modes, include Check
Register with Bounds, Pack and Unpack BCD, Com-
pare and Swap, and Call and Return from Module.
The cache memory is increased in size to 256 bytes
capacity and there are also additional registers which
include a Master Stack Pointer and two extra active
bits in the system byte of the Status Register.
13
Data Types
The MC68000 and MC68008 processors support
five different data types, in some instances instruct-
ions are limited to a specific data type, but mostly
there is a range of allowable types with the default of
word. Where the choice is not implicit, it is defined
in the instruction word extension as either byte, word
or longword.
Word
Byte, Word
MSB LSB
and Longword
Data Types
Hi order byte
Lo order Byte
31 23 15 o
t Byte t
t Hi mid order byte t Low Byte
High Byte La mid order byte
l
Longword
MSB LSB
Bit data
MSB LSB
Byte 17 1 1 14 1 1 1 10 1
~~
BCDO BCD 1
14
Motorola MC68000 Data
Storage
The Motorola MC68000 and MC68008 access two
internal locations for storage:
Program counter
J
I
(Hard/floppy
disks)
ROM
(Read only
I Status register I
memory)
15
The Register Set
The Motorola MC68000 series has seventeen 32-bit
registers, a program counter with 24 active address
lines in the MC68000 and 20 active lines in the
MC68008, and a 16-bit status register. Eight of the
32-bit registers (DO to D7) are used as data registers
for operations involving single bit, bcd (4-bit), byte
(8-bit), word (16-bit) and longword (32-bit) data.
The remaining nine registers are split in two, seven
(AO to A6) acting as address registers and two as
stack pointers. Only one Stack Pointer may be ac-
cessed at a time, hence the convention of calling both
A 7. The address register operations are based on
word and longwords only.
Data Registers
31 16 15 8 7 o
DO
Byte D1
D2
Eight
Word D3
Data
D4 Registers
Longword D5
D6
D7
31 16 15 8 7 o
AO
A1
Word A2
A3 Seven
Address
Longword A4
Registers
A5
A6
A7
17
Stack Pointer
31 o
User Stack Pointer A Two Stack
Pointers
Supervisor Stack Pointer 7
Program Counter
31 x o
1000000 I Program
Counter
18
Status Register
15 8 7 o
Status
System User register
liIi I Soc
X
I
I 4
E
X
N
E
Z
E
0
V
0
C
A
us.:d
T G R E R
E A 0 R R
N T F Y
D L
V 0
E \\"
I
l'
Trace
mode
15 I X
l'
13
Supcn·isor
state
I X X
'=£1Interrupt
mask
9 I 8
I
J
19
Condition Codes
The condition codes are set automatically after the
execution of an instruction, in a predefined manner.
Based on the condition codes,a jump or the setting of
a bit or byte may then be actioned. The condition
bits found in the User Byte of the Status Register
contain four codes and an operand for multi-precis-
ion computations:
USER BYTE
x x x E N z v c Ix = bits
1 - - - - ' ' - _........._---'-_ _. 1 . - _ - 1 ._ _1--_--'-_--'. 1l00used
20
Bit 3: Negative (N)
Only of value when dealing with signed numbers. Set
to 1 if an arithmetic, logical or shift operation
produces a negative result otherwise cleared to zero.
Follows the MSB of the operand regardless of size 8,
16 or 32 bit.
SYSTEM BYTE
T X I Ix
S x I;, I, I 'I x ~
I
' - _ ' - - _ - ' - ._--'._ _-'-_-'-._ _'-_-''--_0...... 'lOT
bilS
used
Bits 8 to 10:
Illterrupt Level Mask
The MC68000 has seven levels of interrupt (1 to 7);
zero is used to indicate that there is no interrupt
present. On completion of the current instruction,
higher level interrupts than the mask will be serviced
21
and the mask set to the level of the new interrupt.
Lower or equal levels of interrupt wait on completion
of the current interrupt. Level 7 interrupts are always
serviced regardless of the current mask level. The
MC68008 only services three levels of interrupt, 2
and 5 and the non maskable interrupt level 7.
22
Organization of Addresses in
Memory
A
Memory
bottom
Any
Byte
M High byte
address
~
Even
address
+1
Longword
"" "'"
Low byte
+2
+3
Even
+- address
Word
+1
F Memory
top
23
Addressing Modes
Overview
There are fourteen different addressing modes, made
up of six basic types of instruction. These are:
Register Direct:
Instructions referring to the data and address regist-
ers directly.
Register Indirect:
Instructions which use the contents of a register to
point to the required memory address. This may be
supplemented by automatic increase or decrease of
the register value, or extended with a l6-bit dis-
placement value or index register.
Absolute:
The absolute instruction uses a constant, which may
be either a word (± 32 KBytes) or longword to
provide an address in memory (up to 16 Mbytes
MC68000,1 Mbyte MC68008).
Immediate:
These instructions use a constant (byte, word or
longword) as the source operand. If the destination is
an address register, the data will be sign extended
and is limited to a word or longword only.
24
Program Counter Relative:
This instruction enables code to be written using
either a displacement (± 32K) or an offset (± 127)
and an index register(DO-D7, AD-A 7), that will work
irrespective of where it is located in memory (po-
sition independent code).
Implied:
Some instructions use internal registers without
specifically referring to them. BRANCH and JUMP
instructions alter the Program Counter, PEA affects
the Stack Pointer etc.
Accessing Program
Code in Memory
The operation words (instructions) are stored in
memory as words in a list of operation words that
form the machine code.
High memory
25
Some instructions include additional data that is
located in the words (Operands) that immediately
follow the instruction. Data referring to the source is
located before data referring to the destination.
Addressing Modes
The effective address of the operand can be specified
in a wide variety of ways.
r------.--,..,,----, Data
MOVE.BDO,DI
L-------L---L-~DO
byte IRegister
r -_ _ _ _-.-_-.-_....,Data
L-----~-~~-"DI
byte IRegister
IOpWord Single \X'ord Instruction
27
Address Register Direct
Address registers do not support byte sized operands
as either a source or a destination. If the previous
example had been to move the data into an address
register (AO) instead of a data register, then it would
be illegal. Operations using address registers as the
destination for data are limited to word and longword
operations only and affect the whole of the address
register; that is the data is sign extended.
MOVEA.WDl,AO
!
Iyxx word xx IDara
Register
01
Address
Register
AO
28
Operations that use an address register as the destin-
ation do not affect the condition code flags. In
assembly language, address register direct destin-
ation instructions are given the notation MOVEA.
The 'A' implies an address register destination oper-
ation and can be appended to other instructions,
ADD, CMP etc.
29
Register Indirect Addressing
Register Indirect
The contents of the specified address register are
used as a pointer to the address in memory where the
data is to be moved from if source and to if
destination.
Address
MOVE.W (AI ),DO yyy~ Register
Al
(AI). MOVE.W(AI),DO
~ -yyyy
+1
The word content of the memory
Data
IHighl Low I Register
DO
30
Register Indirect with
Postincrement
The contents of an address register point to a mem-
ory address. After execution of the current instruc-
tion, the address register contents are increased by
the size of the operand.
~
loop where Al points to the address yyyy
yyyy and AO points to address zzzz. The
Low
- -2
contents of yyyy are moved into address
zzzz and then both address registers arc
- +~
increased by the size of the operand, that
is:
I for a byte
2 for a word
4 for a longword
The effect of this is to set the pointers
D~ -
(AO)
HIgh zzzz ready to move the next piece of data. It is
Low not necessary for the programmer to
31
Register Indirect with
Predecrement
The address register contents are decreased by the
size of the operand before instruction execution, the
new value of the contents of the address register
point to the operand address.
MOVE.W -(AO),-(Al)
zzzz
1-----::y=Y):':,)C'".---I
IAAOI Address
Registers
1....-_ _..:...:...:..'-----'
~~
This instruction is typically used in a
High -2
loop where AO points to address zzzz and
Low
Al points to address yyyy, Both
zzzz addresses arc decreased by the size of the
(AO) operand, that is:
I for a byte
D~
2 for a word
High -2 4 for a longword
Low and then the data in the memory at
yyyy address zzzz-2 is moved into address
(AI) yyyy-2,
If the stack pointer is one of the address
registers, then only even addresses may
be used to keep the stack pointer aligned.
32
Address Register Indirect with
Displacement
The content of the address register is added to the
displacement word and used to obtain the address of
the operand, the displacement is in the word that
follows the op word (instruction).
MOVE.W DO,IOO(AO)
~ _ _ _ _ _ _ _--. Address
yyy Register
An
The Register An contains a memory address yyy. The memory address
yyy is added to the displacement that is located in the word after the op
word. The result is the address of the operand.
Low memory
- Memory address
yyy (An)
This type of addressing mode is
vcry useful for reading and writing
lists and tables of system variables
displacement which move in memory. The
(100) address register contents usually
point to the start address of the
Operand table and the displacement gives the
offset of the required variable.
~
33
Address Register Indirect
with Index
The contents of the address register are added to the
displacement byte and the contents of an index
register, the result is the address of the operand. The
displacement and index are in the word that follows
the operation word (instruction).
MOVE.L DO,5(AO.D2.W)
Address
Register An contains a memory
yyy Register
address yyy. The memory address
An
yyy is added to the contents of the
index register (zzz) and to the Index Index
displacement value to provide the zzz Register
caleulated address of the operand. AnorDn
Operand !Displacement
(5)
sign extended to evaluate the
effective address.
Operation Word
34
Special Addressing Modes
Absolute Short
The address of the operand is in the extension word
to the operation word and is sign-extended to 32 bits
before it is used, which gives the ranges:
MC68000
0-$7FFF (0-32767)
and
$FF8000-$FFFFFF (16744448-16777215)
MC68008
0-$7FFF (0-32767)
and
$F8000-$FFFFF (1015808-1048575)
Data
IUnchanged byte Register
D2
35
Data registers as destinations permit the use of byte,
word and longword operands. Using an address
register limits the operation to a sign-extended word
or longword operand.
Absolute Long
The address of the operand is in the two extension
words that follow the operation word, giving access
to a range of addresses from 0 to 16 Mbytes for the
MC68000 and 0 to 1 Mbyte for the MC68008.
I---o;-~--I
L..-"":;;;;"'-----J
!
Operand
address
MOVE.BS1F7E8,03
MOVE.B 129000,03
36
Moves the byte located at address 129000 into the
low order byte of data register D3.
~ Address 119000
($IF7E8)
Data
I Unchanged byte Register
03
displacement
(100)
Operand
38
.'vIOVE.L 00,5( PC.02. \Vl yyy Program Counter
f
Displacement
Operand
! (5)
Operation Word
x I Reg. I I y 000
~~______L -__L -______L -__________~y=1
I displacement y=O .W Index
.LIndex
15 14-12 II 10-8
°
39
Immediate Data
The operand is the extension word of the operation
word and may be either longword, word or byte, that
is:
Immediate Quick
The operand is embedded in the operation word and
as a single word instruction can execute much faster
than the immediate equivalent.
Implied Addressing
Several instructions use registers that are not spec-
ifically mentioned in the operation word. For inst-
ance, conditional subroutine branches are relative to
the program counter and store a return address on
the stack. Other implied address instructions use the
status register as well as user and supervisor stacks.
MOVECCR J\;lon~
Condition Codes SR
MOVESR Sratus Register
1\1.0\'C SSP
,\IOVE USP Move Ust:r Stack Pointer SSP
41
A11lel11Ollic /llslruClioll Implied
Registers
42
Programming
Techniques
Stacks
A stack is a sequence of consecutive memory locat-
ions referenced by an address register, usually the
stack pointer, where a programmer can store inter-
mediate data, subroutine return addresses etc. that
are to be used later during the execution of a
program. If the stack pointer is used for storing
addresses then the stack must be implemented with
each address on an even boundary using either word
or longword sized data storage.
Low memory
G rowt h
i
High memory
Base
Low memory
7 o 15 8 7 o
E,"en -+ Byte Byte Byte Unchanged
address unchanged entry
HI byte Lo byte
E,"en -+ Hi Byte Word
address LoB)"tc entry
High memory
44
In normal use subroutines push the program counter
return address onto the active stack, but during the
processing of a trap or interrupt, both the program
counter and the status register are saved on the
supervisor stack.
User-Defill1ed Stacks
The seven address registers (AO to A6) may be
employed as additional user stack pointers. User
defined stacks can be made to grow in either direc-
tion in memory, the indirect addressing modes with
postincrement and predecrement are specifically de-
signed to enable the programmer to handle stacks
and queues with the minimum of fuss and should be
used.
Addrcss
yyyy Register A6
PUSH
I.ow memory MOVE. WD5, - (A6)
Growth Consider using A6 as a pointer to a
Hi byte -2 user-defined stack. The contents of
La byte the register A6 arc decreased by the
Start yyyy operand size and the data in a
(A6) specified register (say 1)5) is placed
in rhe memory location given by the
nc\\' \"alue of A6 in high-low order.
PUl.L
I.ow memory MOVE. W (A6) + , D5
The contents of memory address
Hi byte 'yyyy pointed to by contents of A6 arc
La byte moved into the register D5. Then
Start +2 the value of address regisrcr A6 is
increased by the size of the
operand.
Reverse Stacks
It may at some time be necessary to create a stack that
grows towards high memory, this is achieved using
the postincrement instruction to push data onto the
stack and the predecrement instruction to pull it back
off. After the operation, the user defined stack poin-
ter always points to the next free space on the stack.
46
Queues
A queue may be used to hold serial data in its correct
sequence ready for dispatching to a printer, or stor-
ing data in a keyboard buffer etc. while the processor
is employed on another task. User defined queues
may take one of two forms, open ended or ring. In
the open ended queue, two address registers are used
to access it (assuming that we are using the normal
convention of stack growth from high to low mem-
ory); one points to the last entry at the head of the
queue while the other points to the start of free space
above the queue.
Address AS zzzz
Registers A6 yyyy
MOVE.B05,-(A6)
Nexrcntry (A6)
Last entry Byte 4 yyyy
Byte 3
Byte 2
1st entry B te I (AS)
Free +- zzzz
High memory
Data IByte
Register
TAIL 05
48
Exit Queue (First entry)
Queue statistics
If AS = A6 then there are zero items In the queue
(queue empty).
Circular Buffer
Address A5 zzzz
Registers A6 yyyy
49
Low memory
10 limit
9
8
7 Last entry
6 Byte 5 +- yyyy (A6)
Byte 4
4 Byte 3
3 Bytc2
2 Byte 1 (AS)
Free +- zzzz
Start of
'--
free space
High
abovc queuc
!\1emory
Data
05 IByte Register
ENTER QUEUE
MOVE.BD5,-(A6)
EXIT QUEUE
MOVEB-(A5),D5
Queue statistics
If A5 = A6 then the queue is either empty or the
buffer is full; a running count of the items in the list
will determine which.
Linked Lists
Linked lists are used extensively within MC68000
machine code programs to produce extendible lists of
routines or data, which may be extensions to the
operating system, User or System Heap directories
etc. The lists all have one thing in common, the
ability to have items added or removed from the list.
52
Variables table Variables table
Pntr I st Link
Replace
yywith Next add ptr xx
xx Routine addr 1st
Where address xx
is rhe location of Next add ptr Yl'
the new pointer Routine addr xx
in the linked list
53
Variables table Variables table
Routine xx to be deleted
Next add ptr yy from the linked list was
Routine add xx linked from above.
54
Processing States
The Motorola MC68000 and MC68008 processor
are always in one ofthree states:
Processing States
I I I
Normal -, Exception Halted
IStopped
(Special
I
Interrupts
I
Caused by
Executing case) Traps and catastrophic failure.
Instructions Tracing c.g. (wo consecutive
I bus errors
1\
User
.........
Supervisor
/
Generated
/\
Internal External
Only Restart
by an external
reset
Illegal
Instructions
I
Instruction
or Operations Bus Error,
Interrupt
Error and Reset
Trap
55
The processes described in more detail are as follows:
Normal processing
This is defined as executing program instructions.
The stop instruction is a special case, stopping the
processor until a high-priority interrupt or external
reset restarts the processor.
User State
This is set when bit 13 (S-bit) of the status register is
set to zero, trace mode off and the user stack pointer
(USP) selected for the system stack (A 7). In the user
state certain privileged instructions are not accessible
(see following table) and cause a trap to privilege
violation exception processing.
Pri'vileged
Instructions Implications
56
Supervisor State
This sets the S-bit of the status register to '1' and
selects the supervisor stack pointer (SSP) for the
system stack (A 7). All instructions are available to the
programmer with traps to exception processing
caused by those items listed in the following table.
Typical Explal1arioll
Exception Processing
Exceptions are caused by: an unusual occurrence in
processing an instruction, a specific request from
software to process an exception routine (both con-
ditional and unconditional), a request from an ex-
ternal device for control of the processor, or an
external error condition.
Multiple Exceptions
Each type of exception has a priority level assigned to
it such that if two exceptions are met simultaneously,
the processor will serve in sequence that of higher
priority (0 = high, 7 = low priority).
59
Exceptio1l Parity Exception
Instruction Level Origin Stack
Exception Vectors
Vector Address Exception Vector
Number Dec Hex Assigmllellt
60
External Exceptions
The external exceptions can be detailed as follows:
Reset
Reset the system by initializing the supervisor stack
pointer (SSP) and the program counter (PC), acc-
ording to the first two longword contents of the
vector assignment table, and commence execution at
the PC address, normally system startup. This is the
only exception to the method of processing except-
ions.
]Interrupts
Interrupts are requests from peripherals for pro-
cessor time; they wait for completion of the current
instruction before being evaluated for priority level.
Interrupts are then actioned according to the level of
priority supplied by the peripheral on the interrupt
control line, in the range of levels 1 to 7. Zero
61
indicates that there is no interrupt and 7 is a non
maskable interrupt. The MC68008 has a restricted
range of interrupt levels: 2, 5 and the non maskable
interrupt 7.
Again be careful not to confuse interrupt request
priority levels with exception priorities.
Bus error
This is initiated by an external device requesting to
process an error, which may be caused by incorrect
handshaking signals, illegal memory access etc., by
raising the Berr line in system control. Processing of
62
the current instruction is aborted and information on
the current environment saved on the supervisor
stack. A full recovery is unlikely due to the nature of
the entry into the exception processing state.
Low memory
IR'If' I fiN I FUllccion Codt:
Current address High Stack growth
--:-:-- .
being accessed Low i
Operation Word Supervisor Bus
Status Register Word Error Stack
Program High
Counter Low
63
Internal Exceptions
Internally generated exceptions can be detailed as
follows:
Address error
These are initiated by an attempted access of an
instruction, word or longword at an odd address.
Processing of the current instruction is aborted and
information on the current environment saved on the
supervisor stack. A full recovery is unlikely due to
the nature of the entry into the exception processing
state.
Trace
With the trace bit set, after the completion of each
instruction an exception is forced to the trace vector
routine, which may be used to monitor a program
under development.
JlUegali instructions
Illegal instructions are defined as those instruction
words which do not conform to the bit pattern of a
legal operation word.
Dec Hex
19194 #$4AFA
19195 #$4AFB
19196 #$4AFC
65
Unimplemented Instructions
There are two sets of operation word whose most
significant four bits (type 10 -1010 bit pattern and
type 15 -1111 bit pattern) are not referenced as
current operation words, these codes trap to separate
exception vectors and permit efficient access to user
programmed routines.
Privileged Instructions
To provide system security, certain instructions are
privileged and can only be used in supervisor mode.
Any attempt to use a privileged instruction from user
mode causes 'an exception.
Traps
The sixteen forced exception traps available through
the TRAP instruction are usable as software inter-
rupts able to call routines capable of performing
operating system functions, debugging, interrupt
simulation and error conditioning.
66
TRAPV Trap on overflow
CHK Trap on negative or greater than limit
DIVU Trap on divide by zero
DIVS Trap on divide by zero
Hahed State
The processor enters the Halted state if it is deemed
that the system is in an unusable state. This will
occur when a bus error aborts the execution of one of
three exception processes:
67
Instruction
Summary
Each Motorola MC68000 instruction is presented,
many in terms of equivalent BASIC Instructions or
assembler routines. The similes are for clarification
of the use of each instruction; there is no access to the
data or address registers (Dn or An respectively) or
the condition codes from BASIC and therefore the
examples which make use of these registers, and most
of the effective address modes (ea), cannot be taken
literally.
Instructions
The following symbols are used throughout this section
asfollows:
68
BCD addition DA T A Register Memory
Addition Multibyte
Byte only Addition
MOVE #4,CCR
ADDX.L - (AO) , - (A 1 )
ADDX.L - (AO) , - (A 1) etc.
71
Use ANDA where the destination is an address
register.
Use AN DI where the source is immediate data.
72
ASlL: Arithmetically Shift Left the bits of the
operand.
The last MSB shifted sets the carry and extend bits;
the LSB is set to zero each shift. The overflow bit is
set if the sign is changed during the shift and is used
to flag a change of sign. The carry bit is cleared if the
shift count is zero. The instruction is used for fast
multiplication of *2 and *4; other values should use
MULS.
~---[. 4 10
LET ea"ea • 2 ASL ea (shift 1)
LET Dy"Dy • (2ADx) ASL Dx.Dy (reg modulo 64)
LET Dy"Dy • (2A5) ASL #5.Dy (shift 1 to 8)
73
Bee: Branch on condition. A two's complement
displacement from the current program counter po-
sition (Instruction address + 2) + 126 to -128 for a
short branch or + 32766 to -32768 for a word branch
operation, the condition xx may be:
EQ Equal To CS Carry Set GT Greater Than
NE Not Equal CC Carry Clear LTLcssThan
MI Minus VS Overflow GE Greater Than or Equal
PL Plus VC No Overflow LE Less Than or Equal
HI Higher Than
LS Lower Than 2's Compleme1lt
or same Arithmetic
IF BITn~O
IF BITn~O
IF BITn"O
THEN set Z fl ag:
ELSE clear Z flag BSET #6.ea (data mod 8)
LET BITn"1 BSET Dn.ea (reg mod 32)
75
IF BITn=O
THEN set Z flag: BTST #6,ea (data mod 8)
ELSE clear Z flag BTST Dn,ea (reg mod 32)
CMP
IF ea=Dn THEN GOTO loop BEQ loop
76
Use CMPA when the destination is an address
register.
Use CMP I when the source is immediate data.
Use CMPM for memory to memory comparisons.
CMPA ea.Dn
CMPI #999.ea
77
LET Dn~length string -1
loop loop CMPM (Ay)+. (Ax)+
IF PEEK(Ay)<>PEEK(Ax) BNE not_same
THEN
Ay~Ay + s:Ax~Ax + s DBRA Dn. loop
GOTO not same
ELSE same
Ay~Ay + s:Ax~Ax + s
LET Dn~Dn -1
IF Dn<>-1 THEN GOTO loop
same
s = operand size
Dn = character count
78
EQ Equal To CS Carry Set GT Greater Than
NE Not Equal CC Carry Clear LT Less Than
MI 1\1inus VS Overflow GE Greater Than or Equal
PL Plus VC No O\'erflow LE Less Than or Equal
HI Higher Than
LS Lower Than 2's Complement
or same Arithmetic
MOVEQ #2,D2
ASR D2,Dx
is a quicker divide by four
Invert bit 4 of DO
81
LET tmp=DO: DO=D1 : D1 =tmp EXG DO.D1
LET tmp=AO:AO=A1 :A1=tmp EXG AO.A1
LET tmp=DO:DO=AO:AO=tmp EXG DO.AO
EXT Dn
JMP JSR: JMP and JSR are long forms of BRA and
BSR. The main difference is the jump instruction's
ability to access any part of memory whereas the
branch instructions are limited to a relative
± 32 Kbytes jump.
GOTO ea JMP ea
GOSUB ea JSR ea
82
lLEA: Load Effective Address loads a calculated
effective address into an address register. The cal-
culated address can be the sum of two registers, one
must be an address register, and a displacement
which provides the addition of two registers and a
displacement without affecting either register, in a
single instruction.
MOVE ea.ea
LET D1=DO MOVE DO.D1
LET SP=SP-4:POKE(SP).D7 MOVE D7.-(SP)
POKE(SP) .D7:LET SP=SP+4 MOVE (SP)+.D7
84
MOVE from SR: Save the word contents of the
status register in the effective address register or
memory location. Be careful as this instruction is
privileged in the MC68010 and MC68020 instruc-
tion sets, programs should try not to use it in user
state.
MOVE SR.ea
MOVE.W SR,OO
MOVE ea,CCR
MOVE #4.CCR
MOVE ea.SR
MOVE #1792,SR
Clear all flags, set user state, and set interrupt mask
to level seven.
85
MOVE USP: Move the contents of the user stack
pointer to or from the specified address register. This
is a privileged instruction and attempted access while
in user mode will cause a trap to the privilege
violation exception vector.
MOVEM.L # 7.24(A7)
MOVEM.L #57344,-(A7)
86
These two instructions recover registers DO, D 1 and
D2:
87
MULS: Multiply two signed 16-bit operands. Only
the low-order 16-bits are used from both operands
for the multiplication, the result being the 32-bit
product in the destination data register.
MULS ea.Dn
MULU ea.Dn
NBCD ea
NEG ea
NEGX ea
NOP
NOT ea
OR! . W #51 2 , 00
LET ea"data II ea
OR! #5,CCR
90
PEA param
JSR sprag
Access parameter sprag MOVEA.L 4(SP) ,AO
Tidy stack MOVE.L (SP)+,(SP)
RTS
RESET: Reset external devices by asserting the reset
line, There is no effect on the processor other than an
increase of two in the value of the program counter.
This is a privileged instruction and attempted access
while in user mode will cause a trap to the privilege
violation exception vector.
RESET
RDL ea (shift 7)
91
ROXL: ROtate with eXtend Left. The MSB is
rotated to the extend bit and the carry, the extend bit
is rotated to the LSB and the other bits are shifted up
one. The carry bit is cleared for a shift count ofzero.
~ .
~
ea (sh i ft 7)
II
ROXL
ROXL Ox.Oy (reg modulo 64)
ROXL #5.0y (shift 7 to 8)
ROXR ea (shi(t 7)
.. ROXR Ox.Oy (reg modulo 64)
ROXR #5.0y (shift 7 to 8)
(SP)+,SR
(SP)+,PC
(SP)+,CCR
(SP)+,PC
92
RTS: Return from Subroutine. The program coun-
ter is pulled from the current stack.
(SP)+.PC
Memory Multibyte
BCD subtraction subtraction
STOP #7
94
SUBQ: Subtract a constant of from 1 to 8 from the
contents of the effective address. Faster subtraction
than SUB 1.
Memory addition
MOVE #4,CCR
SUBX.L - (AD) , - (A 1 )
SUBX.L -(AD),-(Al) etc.
On 0-15<---+On 16-31
TAS ea
TRAP #n
TRAPV
96
TST: Test an operand. The operand is compared
with zero and the condition codes set accordingly.
TST ea
UNLK An
97
Processor
Signal 1/0
The following is a very brief description of the signal
I/O of the Motorola MC68000 and MC68008 micro-
processors.
MC68000
MC68008
Vee .. Address ~ AO AO
Gnd If bus If' to to
Clk A23 AI9
DO DO
Processor FCO All Data Ii. to to
Status FCI 'If! Bus" DIS D7
FC2
.. Asynchronous
" Control
.AI Synchronous
.. Control
Bus
tArbitration
System
Control
I Berr
Reset ~
Control
98
Address JEhllS
Enables the processor to address 16 Megabytes
(MC68000) or 1 Megabyte (MC68008) of memory.
The address bus provides during an interrupt the
level being serviced on address lines AO to A3 while
the remaining address lines are held high.
Data BUllS
Enables the transfer of word and byte sized data on
the MC68000, but is limited to byte sized transfers
on the MC68008. During an interrupt acknowledge,
a vector number may be placed on lines DO to D7 by
a peripheral device.
InterrUllpt ControX
Provides a priority level from peripherals requesting
processor control, enabling selection of multiple in-
terrupts on a priority basis. Zero implies that there is
no interrupt present and 7 may be considered as a
non-maskable interrupt. The MC68000 has seven
levels of interrupt 1 to 7 whereas the MC68008 is
limited to three levels, 2, 5 and 7.
99
System Control
Informs the processor that bus errors have occurred
and also resets or halts the processor.
Processor Status
Each time a memory or I/O call is made the processor
provides the following information on the processor
status lines to a peripheral device: whether the
processor is accessing data or program memory
space, or servicing an interrupt; and whether the
processor is in user or supervisor mode.
100
Signal I/O Variations
VMA
BGACK
AO-A23 AO-AI5
DO-DI5 DO-D7
IPLO,IPL2 IPLO/2
101
APPENDICES
103
Motorola MC68000
Instruction encoding
BIT MANIPULATION, MOVE
PERIPHERAl. and KMMEDKATE
Type 0 (Bits 15-12)
105
MOVE BYTE, WORD and
LONGWORD INSTRUCTION
(Bits 15-12)
MOVl H ca, - A A 0 0
source - C3- ALL*
destination -C3- dataltadd
1'10\/[ L_ (~i:l . ca - A A 0 0
source -C3- ALL
destination -ca - dataltadd
MISCELLANEOUS
INSTRUCTIONS
Type 4 (Bits 15-12)
106
Type 4 (Bits 15-12) continued
SWAP On 4 0 On - A A 0 0
EXT On 4 Olx 0 On -AAOO
ILLEGAL 5 3 7 4
TRAP data 7 00 v v v v
LINKAn.data 7 2 An
UNLK An 7 3 An
MOVE An. USP 7 4 An
NOVE USP .An 7 An
RESET 7 6 0
NOP 7 6
STOP data 7 6 2 AAAAA
RTE 7 6 3 AAAAA
RTS 7 6 5
TRAPV 7 6 6
RTR 7 6 7 AAAAA
107
ADD AND SUBTRACT QUICK,
SET CONDITIONALLY and
DECREMENT INSTRUCTiONS
Type 5 (Bits 15-12)
BRANCH CONDITIONALLY
INSTRUCTION
Type 6 (Bits 15-12)
108
OR, DIVIDE AND SUBTRACT
DlECIMAI. INSTRUCTIONS
TypeS (Bits 15-12)
109
Emulation instruction
Type 10: Normally available for the implementation
of user-written routines and entered by ensuring four
MSBs of the op word are 1010 and directing trap
service to a user routine. Other bits of Op word may
be used for parameter passing.
110
Type 12 (#$C) (Bits 15-12) cotztitzued
'~BCD D\' . Dx Dx 4 0 Dy A u A u A
i.BCD \:,",1 - : ;~ ~ ) Ax I Ay A u A u A
FXGD Ox . [Jy Dx 0 Dy
lXGA .1\,/ Ax Ay
f:::XG~l 0 ... :. Dx 6 Ay
:·ODX D. [1. Dx s s 0 Dy A A A A A
,\ODX (1\;;). (Ax) Ax s s Ay AAAAA
111
SHIFf AND ROTATE
INSTRUCT][ONS
Type 14 (#SE) (Bits 15-12)
ASL Ox · Dy Ox s s 4 Oy AAAAA
ASL datil .Oy ent s S 0 Oy A A A A A
A,$L ea 0 -ca- altmcmadd A A A A A
ASR 0 x. Dy Ox os s Oy AAAAA
ASR delti.l. Dy ent oS S 0 Oy AAAAA
ASR ea 0 3 - ca- altmcmadd A A A A A
LSL Ox · Dy Ox s s Oy A A A 0 A
LSL dat.:. .Dy ent S S Oy AAA o A
LSL ca -ca- alrmcmadd AAAOA
LSR Ox · Dy Ox os s Oy AAAOA
lSRdat21. Dy em os s Oy AAAOA
LSR ea -ca- altmcmadd AAAOA
ROL Ox · Dy Ox s s Oy - A A 0 A
ROL data . Dy ent s s OJ' -AAOA
ROL ca -ca- altmcmadd -AAOA
ROR Ox · Dy Ox os s Oy -AAOA
RDR data. Dy ent os s Oy -AAOA
RDR ca - ca- altmcmadd -AAOA
ROXlOx . Dy Dx s s 6 Oy AAAOA
ROXL data . Dy ent s s 2 OJ' AAAOA
ROXl COl 2 - ca- altmcmadd AAAOA
ROXR Dx . Dy Ox s s 6 Oy AAAOA
ROXR data . Dy em s s Oy AAAOA
ROXR ea 2 - ca- altmcmadd AAAOA
112
Emulation. Instruction
Type i5: Available for the implementation of user
written routines and entered by ensuring 4 MSBs of
the Op Word are illi (15), directing the trap service
to the user routine. Other bits of Op Word may be
used for parameter passing.
CONDITIONAL TESTS
CC i.Hllemouic Condition
o T TRUE
F FALSE
HI HIGH
LS LOW or SAME
4 CC CARRY CLEAR
CS CARRY SET
6 I'\E NOT EQUAL
7 EQ EQUAL
8 VC OVERFLOW CLEAR
9 VS OVERFLOW' SET
IO PL PLUS
II MI ,"lINUS
12 GE GREATER or EQUAL
13 LT LESS THAN
14 GT GREATER THAN
15 LE LESS or EQUAL
I reg I I I
y 0 displacement
15 14 12 11 10 8 o
Bit
15 0 = Data register
1 = Address register
14-12 Register number
11 0 = .W Index
1 = .L Index
7-{) Displacement Low Memory
Genera/list
I A7 A6 A5 A4 A3 A2 A1 AO D7 D6 D5 D4 D3 D2 D1 DO
15 o
DO D1 D2 D3 D4 D5 D6 D7 AO A1 A2 A3 A4 A5 A6 A7
Predccremcnt list ollly
114
Address modes
ENCODING
The range of addressing modes are coded consistent-
ly throughout the MC68000 instruction set and may
be summarized as follows:
115
n = Register number 0 to 7
Ext. Word =Number of extension words following the op word due to this
address mode (source and destination ext. words are
cumulative)
Mode No. = Dmod and Smod in instruction code tables
Reg No. = Dreg and Sreg in instruction code tables
116
AlLlLOWABLE ADDRESS
MODE TYPES
All Data All Dat Dal COil Con Con
AI! Jv!em All Add Add Add Add All Add
Add Add Mod Mdl Md2 Mdl Add Md2
Source
DI!SI Dest'n Des! Srce Desl Dest Src
On x x x x
An x
(An) x x x x x x
(An)+ x x x
-(An) x x x x x
deAn) x x x x x x
d(An.Ri) x x x x x x
ABS sh x x x x x
ABSlg x x x x x x
d(PC) x x x
d(PC.Ri) x x x x
Imm x
ADn ADD ADDT SHeD ADDQ .-\;..;0 BTST 1MI' .\lOVE.\t .\\O\'E.\1
All = Altcfahk .\tod '" ,\Iode .\1..11 ~~ "todd addrcs~inp: mude type'
.\h:m '" ,\kmllr~ Oat = Data Md2 '" .\10de2 dcfinillom used by
Add" Addro.:\, Con = Control .\tolOf(llu (0 describe
:lllowabk modes
117
ADDRESS MODE
Assembly language and BASIC equivalents
Address
register An ,lOVE LAO, DO fIOVEA. L #999 .AO
direct LET DO-AD LET AO·999
Address
register (An) MOVE L (AD) , DO MOVE L#999, (AD)
indirect LET OO'PEEK L(AO) POKEJ (AD) ,999
Address
register (An) + MOVE L I AD)' ,DO MOVE,L#999, lAO)'
indirect with LET OO-PEEKLIAO) POKE"L I AD) ,999
posrincrcmenr LET AD-AD' 4 LET AD-AD' 4
Address
register -(An) MOVE. L lAD) ,DO MOVE,L#999,-IAO)
indirect with LET AO-AO - 4 LET AD-AD - 4
prcdecrcmcnt LET OO-PEEK .. L lAO) POKE"L lAO) ,999
Address
register d(An) MOVE L9IAO),00 MOVE, L#999, 9IAO)
indirect with LET 00-PEEK_LI9' AD) POKE"LIAO'9) ,999
displacement
Address
register d(An,Ri)
MOVE L 91AO 02) ,DO MOVE. L #999,9 I AD, DO)
indirect with LET DO-PEEK..\. I 9 ·AO· 02) POKE"L lAO' 9· DO) • 999
index
118
Address lIIode Source Destillation
All equivalents have been defined as having longword operands, byte and
word-sized operands may also be used.
119
MC68000 Instruction
Execution Times
The timings given are the execution times of each
instruction in terms of external clock periods, all
instructions other than MOVE must include any
additional time required in calculating the effective
address for both source and destination operands as
applicable. Note that the MC68008 processor times
are somewhat longer when dealing with words and
longwords, absolute addresses or 16-bit displace-
ments.
MOVE Instructions
d(An
.B.W.L On An (An) (An) + -(An) deAn) .Ri) Abs.S Abs.L
d(An d(PC
(An) (An) + -(An) deAn) .Ri) Abs.S Abs.L d(PC) .RO Imm
.B.W;.L 4/8 4,8 6/10 8,12 10/14 8:12 12,.16 8,'12 10'14 4,8
120
Standard instructions
Immediate instructions
CLR
NBCD
NEG
NEGX
NOT
Sec
TAS
4/6
6
4/6
416
4/6
4/6
4
4/6
6
4/6
4.'6
4/6
4/6
4
8/12
8
8/12
8/12
8/12
8/8
10
},;~" operand
instruction
121
Shift/Rotate instructions
.B.W/.L Dn An mem
lmt'n (An) (An)+ -(An) d(An) d(An.Ri) Abs.S Abs.L d(PC) d(PC.Ri)
JMP 10 14 10 12 10 14
jSR 16 18 22 18 20 18 22
LEA 8 12 8 12 8 12
PEA 12 16 20 16 20 16 20
MOVEM
12 12 16 18 16 20 16 18
M>R T ~ 4
MOVEM
12 14 12 16
R>M T ~ 5
Register Memory
Bit imtrucrions LOllgword Byte
.E/.L only Dilly
122
Exception periods
Address Error 50
Bus Error 50
Interrupt 44
Illegal Instruction 34
Privilege Violation 34
Trace 34
123
Instruction Reg Mem Instruction Reg
124
M C68000 Series
Differences Summary
Data Types 5 7
Instruction Set 56 56 58 76
Control Registers 3
System Stacks 2 2 2 3
Interrupt Levels 7 7 7
125
Hex to Decimal Table
Hex Dec Hex Dec Hex Dec
100 256 10 16 1
200 512 20 32 2 2
300 768 30 48 3
400 1024 40 64 4 4
500 1280 50 80 5
600 1536 60 96 6 6
700 1792 70 112 7 7
800 2048 80 128 8 8
900 2304 90 144 9 9
AOO 2560 AO 160 A 10
BOO 2816 BO 176 B 11
COO 3072 CO 192 C 12
DOO 3328 DO 208 D 13
EOO 3584 EO 224 E 14
FOO 3840 FO 240 F 15
126
Instruction Extensions,
MC68010 Processor
Additional Registers
Vector Base Register
31 o
VBR IL...-_______~
The Vector Base Register is used with an offset to
provide the exception vector address. Initially the
VBR is set to zero, but may be loaded or read with
the MOVEC instruction. The vector offset times 4 is
added to the VBR for the required vector address,
the VBR pointing to the base of the table.
MOVE.L #$8000,DO
MOVEC DO,VBR
127
code registers enabling the MOVES instruction to
read or write to locations in the supervisor program,
user program or user data areas.
Additional MC68010 Instructions Encoding
* Privileged # MC68020
MOVE.L (A7)+.An
LEA 12(A7).A7
JMP (An)
Changes to Code:
129
Instruction Extensions
MC68020 Processor
Additional Registers
31 210
S M Status register
0 0
0
User Stack Pointer
User Stack Pointer
15 o
I 0 Interrupt (System) SP .xNzvcl
Master Stack Pointer T T active bies.
o 0 Trace off:
C ~ Clear Cache o Trace on: Branch, jump
CE ~ Clear Entry and return only
F = Freeze Code o Trace on: Same as MC68000
E ~ Enable Cache Reserved:
130
Effective Address Calculations for the indirect modes
An/PC + bd + Rx .2 x sk + od
AO-A7 0 00-07 .W 1 0
or or 16 or or or 2 or 16
PC or 32 AO-A7 .L or4 or 32
or bits or or 8 bits
nothing nothing
131
'User' Programming Model
31 16 15 8 7 0
00
01
02
03 Data
04 Regs
05
06
07
AO
A1
A2
A3 Addr
A4 Regs
A5
A6
A7 User
Stack Pointer
PC
CCR Status
User byte Reg
The only variation between the devices in user state is that the MC68000
and MC68008 can read [he Status Register system byte, whereas the
MC68010 and the MC68020 can not.
132
'Supervisor' Programming Model
MC68008
31 16 15 8 7 0
1
. . . . ._----'I____~I A7
Not strictly true but this
way it gives a consistent I - - - --
-I
approach to programm- _ T -S- - I I I _ _ _ _ _ _ SR
illg the series oj Status register
MC68000 devices_
MC68000
A7
SSP
A7
~____________~IVBR
Cache Control
Register
~____________~ICACR
Cache Address
Register ~______________~ICAAR
134
Virtual Facilities
Virtual Machine
The MC68010 completely secures the supervisor
resources from the user, permitting an operating
system to be run at user level, and due to the
privilege violation traps, think it is running at super-
visory level. Thus one governing operating system
can execute at supervisor level and control the man-
agement of many other operating systems executing
at user level, each operating as though in supervisor
state. Privilege traps go automatically to the govern-
ing operating system where the exceptions are
checked and conditionally executed before control is
returned to the originating system, thus providing a
virtual machine.
135
Virtual Memory
Much of the address space of the MC68010 and
MC68020 processors will not be occupied by physic-
al memory and any call to this non-existant memory
will result in a bus error. The bus error exception
routine is able to hold the memory access until the
relevant data is fetched from an alternative memory
source, usually a disk, and placed in physical memory
whereupon the memory address is adjusted and the
access continued.
Address Space
The MC68010 address bus is 32-bits wide internally
with 24 of the address lines being brought off-chip in
4 different address spaces, each having a 16Mbyte
address range designated User/Supervisor and Prog-
ram/Data. The MOVES instruction (Move alternate
space) allows the executing operating system to move
data to or from an address space other than the
supervisor data space, controlled by the Alternate
Function Code registers.
0 0 0 reserved
0 0 User data space
0 0 User program space
0 ! User definition
0 0 reserved
0 Supervisor data space
0 Supervisor program space
CPU space
136
Cache Memory (MC68010)
The MC68010 has the ability to execute a short piece
of code rapidly, (one instruction word and a DBcc
instruction) by retaining the code internally, not
requiring to go off-chip to fetch each instruction
word from memory in sequence. The facility provid-
es very fast block moves and string comparisons.
LEA data,AO
LEA space,A1
MOVE.W length,DO
loop MOVE .W (AO) + , (A 1 ) +
DBRA DO.loop } 6 byte
cache
Allowable Instructions
137
increased performance as operating system timing
loops may be constructed using the DBRA instruct-
ion.
138
Absolute Bcc (Branch on
addressing 24 condition) 74
ABCD 68 BCHG 74
Access to system BCLR 74
stacks 46 BRA (Branch
Add Binary Coded always) 75
Decimal 68 BSET 75
Add item to linked BSR (Branch to
list 52 subroutine) 75
ADD A 70 BTST 75
ADDI 70 Bus - arbitration
ADDQ 70 control 99
Address - bus 99 - error 62
- error 64
Address mode - Carry 20
assembler & BASIC Changes of operating
equivalents 118 state 57
- allowable 117 CHK 76
- encoding 115 Circular buffer 49
Address spaces 136 CLR 76
Addressing modes 24, CMP 76
26 CMPA 77
ADDX 70 CMPI 77
ANDI 72 CMPM 77
AND I to CCR 72 Condition codes 19, 20
ANDI to SR 72 - exceptions 21
ASL (Arithmetic shift
left) 73 Data bus 99
ASR (Arithmetic shift Data registers 16
right) 73 Data register direct
Assembler and BASIC addressing 26
equivalents 118 DBF 79
141
DBRA 79 JMP 82
Delete from linked JSR 82
list 53 Jump to subroutine 82
DIVS 79
DIVU 80 LEA 83
LINK 83
Encoding address Linked list - add
modes 115 item 52
EOR 80 - delete item 53
EORI 81 Logically -
EORI to CCR 81 complement 89
EORI to SR 81 - shift left 83
Exception state 55 - shift right 84
Execution times 120 LSL 83
EXG 81 LSR 84
EXT 82
Extend 21 MOVE 84
External exceptions 61 MOVE USP 87
MOVE from SR 85
ILLEGAL 82 MOVE to CCR 85
Immediate- MOVE to SR 85
addressing 24 MOVEA 87
- data 40 MOVEM 87
Immediate quick 40 MOVEP 86
Implied addressing 25 MOVEQ 86
Instruction - execution MULS 88
times 120 MULU 88
-summary 68
Internal exceptions 64 NBCD 88
Interrupts 61 NEG 88
- control 99 Negate 88
-level mask 21 - decimal 88
142
Negative 21 Register direct
NEGX 88 addressing 24, 26
NOP 89 Register set 16
Normal- RESET 91
processing 56 Reset 61
- state 55 Return-and
NOT 89 restore 92
- from exception 92
Open ended queues 48 - from subroutine 93
OR 89 Reverse stacks 46
ORI 89 ROL 91
ORI to CCR 90 ROR 91
ORI to SR 90 Rotate - with extend
Overflow 20 left 92
- with extend right 92
PEA 90 - without extend
Privileged left 91
instructions 66 - without extend
Processing states 55 right 91
Processor 98 ROXL 92
- status 100 ROXR 92
Program code in RTE 92
memory 25 RTR 92
Program counter 18 RTS 93
Program counter
relative addressing 25 SBCD 93
Push effective Scc 93
address 90 Sign-extend 82
Signal I/O 98
Queues - circular Spurious interrupts 62
buffer 49 Stack pointer 18
- open ended 48
143
Stacks - access to TAS 96
system 46 Test an operand 97
-reverse 46 Trace 22,64
- user defined 45 TRAP 96
Status r:egister 19 Traps 66
- system byte 19 - on overflow 96
- user byte 19 TRAPV 96
STOP 94 TST 97
SUB 94
SUBA 94 Unimplemented
SUBI 94 instructions 66
SUBQ 95 U nini tialized
Subtract decimal with interrupts 62
extend 93 UNLK 97
SUBX 95 User defined stacks 45
Supervisor 22 User state 56
Supervisor state 57
SWAP 96
System control 100
144