System 16 Instruction Timing
Dual Operand Instructions
Load Instruction
LD Rt,Rea
Opcode = (PC) 
PC = PC + 1
ALU Left = 0 
ALU Right = Rea
ALU CCin = CC
ALU Func = Opcode
Rt = ALU Out 
CC = ALU CCout
LD Rt,(Rea)+
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = ReaALU Left = 0 
ALU Right = (EA)
ALU CCin = CC
ALU Func = Opcode
Rea = EA + 1;Rt = ALU Out 
CC = ALU CCout
LD Rt,-(Rea)
Opcode = (PC) 
PC = PC + 1
Opcode Decode 
EA = Rea - 1
ALU Left = 0 
ALU Right = (EA)
ALU CCin = CC
ALU Func = Opcode
Rea = EARt = ALU Out 
CC = ALU CCout
LD Rt,disp(Rea)
Opcode = (PC) 
PC = PC + 1
Opcode Decode 
EA = (PC)
PC = PC + 1
EA = EA + Rea 
ALU Left = 0 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeRt = ALU Out 
CC = ALU CCout
LD Rt,#value
Opcode = (PC) 
PC = PC + 1ALU Left = 0 
ALU Right = (PC)
ALU CCin = CC
ALU Func = Opcode
PC = PC + 1Rt = ALU Out 
CC = ALU CCout
LD Rt,address
Opcode = (PC) 
PC = PC + 1
Opcode Decode 
EA = (PC)
PC = PC + 1ALU Left = 0 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeRt = ALU Out 
CC = ALU CCout
LD Rt,(address)
Opcode = (PC) 
PC = PC + 1
Opcode Decode 
EA = (PC)
PC = PC + 1EA = (EA) 
ALU Left = 0 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeRt = ALU Out 
CC = ALU CCout
LD Rt,disp(PC)
Opcode = (PC) 
PC = PC + 1
Opcode Decode 
EA = (PC)
PC = PC + 1EA = PC + EA ALU Left = 0 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeRt = ALU Out 
CC = ALU CCout
Store Instruction
ST Rt,(Rea)+
Opcode = (PC) 
PC = PC + 1ALU Left = Rt 
ALU Right = 0
ALU CCin = CC
ALU Func = Opcode
EA = Rea(EA) = ALU Out 
CC = ALU CCout
Rea = EA + 1;
ST Rt,-(Rea)
Opcode = (PC) 
PC = PC + 1ALU Left = Rt 
ALU Right = 0
ALU CCin = CC
ALU Func = Opcode
EA = Rea - 1(EA) = ALU Out 
CC = ALU CCout
Rea = EA
ST Rt,disp(Rea)
Opcode = (PC) 
PC = PC + 1
EA = (PC) 
PC = PC + 1ALU Left = Rt 
ALU Right = 0
ALU CCin = CC
ALU Func = Opcode
EA = EA + Rea(EA) = ALU Out 
CC = ALU CCout
ST Rt,address
Opcode = (PC) 
PC = PC + 1
ALU Left = Rt 
ALU Right = 0
ALU CCin = CC
ALU Func = Opcode
EA = (PC)
PC = PC + 1(EA) = ALU Out 
CC = ALU CCout
ST Rt,(address)
Opcode = (PC) 
PC = PC + 1
EA = (PC) 
PC = PC + 1ALU Left = Rt 
ALU Right = 0
ALU CCin = CC
ALU Func = Opcode
EA = (EA)(EA) = ALU Out 
CC = ALU CCout
ST Rt,disp(PC)
Opcode = (PC) 
PC = PC + 1
EA = (PC) 
PC = PC + 1ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = Opcode
EA = PC + EA(EA) = ALU Out 
CC = ALU CCout
Compare Arithmetic (CMP) and Boolean (BIT)
CMP Rt,Rea
Opcode = (PC) 
PC = PC + 1ALU Left = Rt 
ALU Right = Rea
ALU CCin = CC
ALU Func = OpcodeCC = ALU CCout 
CMP Rt,(Rea)+
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = ReaALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = Opcode
Rea = EA + 1;CC = ALU CCout 
CMP Rt,-(Rea)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = Rea - 1ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = Opcode
R1 = EACC = ALU CCout 
CMP Rt,disp(Rea)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1EA = Rea + EA ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeCC = ALU CCout 
CMP Rt,#value
Opcode = (PC) 
PC = PC + 1ALU Left = Rt 
ALU Right = (PC)
ALU CCin = CC
ALU Func = Opcode
PC = PC + 1CC = ALU CCout 
CMP Rt,address
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeCC = ALU CCout 
CMP Rt,(address)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1EA = (EA) ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeCC = ALU CCout 
CMP Rt,disp(PC)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1EA = PC + EA ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeCC = ALU CCout 
Arithmetic and Boolean Operations
ADD, SUB, ADC, SBC, AND, OR, EOR
ADD Rt,Rea
Opcode = (PC) 
PC = PC + 1ALU Left = Rt 
ALU Right = Rea
ALU CCin = CC
ALU Func = OpcodeRt = ALU Out 
CC = ALU CCout
ADD Rt,(Rea)+
Opcode = (PC) 
PC = PC + 1
EA = Rea 
ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = Opcode
Rea = EA + 1;Rt = ALU Out 
CC = ALU CCout
ADD Rt,-(Rea)
Opcode = (PC) 
PC = PC + 1
EA = Rea - 1 ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CCin
ALU Func = Opcode
Rea = EARt = ALU Out 
CC = ALU CCout
ADD Rt,disp(Rea)
Opcode = (PC) 
PC = PC + 1
EA = (PC ) 
PC = PC + 1EA = Rea + EA ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeRt = ALU Out 
CC = ALU CCout
ADD Rt,#value
Opcode = (PC) 
PC = PC + 1
ALU Left = Rt 
ALU Right = (PC)
ALU CCin = CC
ALU Func = Opcode
PC = PC + 1Rt = ALU Out 
CC = ALU CCout
ADD Rt,address
Opcode = (PC) 
PC = PC + 1
EA = (PC) 
PC = PC + 1ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeRt = ALU Out 
CC = ALU CCout
ADD Rt,(address)
Opcode = (PC) 
PC = PC + 1
EA = (PC) 
PC = PC + 1EA = Fetch (EA) ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeRt = ALU Out 
CC = ALU CCout
ADD Rt,disp(PC)
Opcode = (PC) 
PC = PC + 1
EA = (PC) 
PC = PC + 1EA = PC + EA ALU Left = Rt 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeRt = ALU Out 
CC = ALU CCout
Load Effectice Address
LEA Rt,(Rea)+
Opcode = (PC) 
PC = PC + 1
EA = Rea 
Rt = EA 
Rea = EA + 1
LEA Rt,-(Rea)
Opcode = (PC) 
PC = PC + 1
EA = Rea - 1 Rt = EA 
Rea = EA
LEA Rt,disp(Rea)
Opcode = (PC) 
PC = PC + 1
EA = (PC ) 
PC = PC + 1EA = Rea + EA Rt = EA 
LEA Rt,address
Opcode = (PC) 
PC = PC + 1
EA = (PC) 
PC = PC + 1Rt = EA 
LEA Rt,(address)
Opcode = (PC) 
PC = PC + 1
EA = (PC) 
PC = PC + 1EA = (EA) Rt = EA 
LEA Rt,disp(PC)
Opcode = (PC) 
PC = PC + 1
EA = (PC) 
PC = PC + 1EA = PC + EA Rt = EA 
Multiply
MUL Rt,Rea
Opcode = (PC) 
PC = PC + 1R0' = Rt 
R1' = Rea
ALU Left = R0'
ALU Right = 0
ALU CCin = CC
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1')
<repeat 7 times> 
ALU Left = R0'
ALU Right = ALU Out
ALU CCin = ALU CCout
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )
Rt = ALU Out 
CC = ALU CCout
MUL Rt,(Rea)+
Opcode = (PC) 
PC = PC + 1EA = Rea R0' = Rt 
R1' = (EA)
R1 = EA + 1
ALU Left = R0'
ALU Right = 0
ALU CCin = CC
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )<repeat 7 times> 
ALU Left = R0'
ALU Right = ALU Out
ALU CCin = ALU CCout
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )
Rt = ALU Out 
CC = ALU CCout
MUL Rt,-(Rea)
Opcode = (PC) 
PC = PC + 1EA = Rea - 1 R0' = Rt 
R1' = (EA)
R1 = EA
ALU Left = R0'
ALU Right = 0
ALU CCin = CC
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )<repeat 7 times> 
ALU Left = R0'
ALU Right = ALU Out
ALU CCin = ALU CCout
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )
Rt = ALU Out 
CC = ALU CCout
MUL Rt,disp(Rea)
Opcode = (PC) 
PC = PC + 1EA = (PC ) 
PC = PC + 1EA = Rea + EA R0' = Rt 
R1' = (EA)
ALU Left = R0'
ALU Right = 0
ALU CCin = CC
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )<repeat 7 times> 
ALU Left = R0'
ALU Right = ALU Out
ALU CCin = ALU CCout
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )
Rt = ALU Out
CC = ALU CCout
MUL Rt,#value
Opcode = (PC) 
PC = PC + 1R0' = Rt 
R1' = (PC)
PC = PC + 1
ALU Left = R0'
ALU Right = 0
ALU CCin = CC
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )<repeat 7 times> 
ALU Left = R0'
ALU Right = ALU Out
ALU CCin = ALU CCout
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )
Rt = ALU Out 
CC = ALU CCout
MUL Rt,address
Opcode = (PC) 
PC = PC + 1EA = (PC) 
PC = PC + 1R0' = Rt 
R1' = (EA)
ALU Left = R0'
ALU Right = 0
ALU CCin = CC
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )<repeat 7 times> 
ALU Left = R0'
ALU Right = ALU Out
ALU CCin = ALU CCout
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )
Rt = ALU Out 
CC = ALU CCout
MUL Rt,(address)
Opcode = (PC) 
PC = PC + 1EA = (PC) 
PC = PC + 1EA = Fetch (EA) R0' = Rt 
R1' = (EA)
ALU Left = R0'
ALU Right = 0
ALU CCin = CC
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )<repeat 7 times> 
ALU Left = R0'
ALU Right = ALU Out
ALU CCin = ALU CCout
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )
Rt = ALU Out
CC = ALU CCout
MUL Rt,disp(PC)
Opcode = (PC) 
PC = PC + 1EA = (PC) 
PC = PC + 1EA = PC + EA R0' = Rt 
R1' = (EA)
ALU Left = R0'
ALU Right = 0
ALU CCin = CC
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )<repeat 7 times> 
ALU Left = R0'
ALU Right = ALU Out
ALU CCin = ALU CCout
if( LSB( R1' ) )
ALU Func = ADD
else
ALU Func = PASSR
R0' = ShiftL( R0' )
R1' = ShiftR( R1' )
Rt = ALU Out
CC = ALU CCout
Branch Conditional
Bcc/LBcc
Opcode = (PC) 
PC = PC + 1
EA = Low(Opcode) 
Evalute( CC )
Decode( Opcode )if( EA == 0 ) 
EA = (PC)
PC = PC + 1
if( CC == True) 
EA = EA + PC
if ( CC == True) 
PC = EA
Single Operand
Negate, Complement, Rotate, Logical Shift, Arithmetic Shift, Increment, Decrement, Swap, Decimal Adjust
NEG Rea
Opcode = (PC) 
PC = PC + 1ALU Left = 1 
ALU Right = Rea
ALU CCin = CC
ALU Func = OpcodeRea = ALU Out 
CC = ALU CCout
NEG (Rea)+
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = ReaALU Left = 1 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout
(EA) = Out 
Rea = EA + 1
NEG -(Rea)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = Rea - 1ALU Left = 1 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout(EA) = Out 
Rea = EA
NEG disp(Rea)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1EA = EA + Rea ALU Left = 1 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout
(EA) = Out
NEG address
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1ALU Left = 0 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout(EA) = Out 
NEG (address)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1EA = (EA) ALU Left = 0 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout
(EA) = Out
NEG disp(PC)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1EA = PC + EA ALU Left = 0 
ALU Right = (EA)
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout
(EA) = Out
Clear
CLR Rea
Opcode = (PC) 
PC = PC + 1ALU Left = 0 
ALU Right = 0
ALU CCin = CC
ALU Func = OpcodeRea = ALU Out 
CC = ALU CCout
CLR (Rea)+
Opcode = (PC) 
PC = PC + 1EA = Rea 
ALU Left = 0
ALU Right = 0
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout(EA) = Out 
Rea = EA + 1
CLR -(Rea)
Opcode = (PC) 
PC = PC + 1EA = Rea - 1 
ALU Left = 0
ALU Right = 0
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout(EA) = Out 
Rea = EA
CLR disp(Rea)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1EA = EA + Rea 
ALU Left = 0
ALU Right = 0
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout
(EA) = Out
CLR address
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1
ALU Left = 0
ALU Right = 0
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout(EA) = Out 
CLR (address)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1EA = (EA) 
ALU Left = 0
ALU Right = 0
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout(EA) = Out 
CLR disp(PC)
Opcode = (PC) 
PC = PC + 1Opcode Decode 
EA = (PC)
PC = PC + 1EA = PC + EA 
ALU Left = 0
ALU Right = 0
ALU CCin = CC
ALU Func = OpcodeOut = ALU Out 
CC = ALU CCout(EA) = Out 
Jump
JMP (Rea)+
JMP -(Rea)
JMP d(Rea)
JMP addr
JMP (addr)
JMP d(PC)
Jump to Subroutine
JSR (Rea)+
JSR -(Rea)
JSR d(Rea)
JSR addr
JSR (addr)
JSR d(PC)