Here are the rest of the instructions.
Note: A.Count refers to bits 0-5 of the A register.
I(Instruction number for stage 1) or A/B(Pattern number for stage 2 and 3) (Pattern) (W/L) (Exceptions) (Description)
W/L refers to instruction classes defined below.
Code: Select all
Byte/Word instruction class:
0000xxx1xxxxxxxx btst, bchg, bclr, bset dynamic
00x1xxxxxxxxxxxx move byte/word
0100xxx110xxxxxx chk word
0100xxx000xxxxxx link, nbcd
01000xx0x1xxxxxx move sr, negx, clr, neg, not byte/word
01001010x1xxxxxx tas, tst byte/word
1x00xxxx0xxxxxxx sbcd, abcd, exg, or, and byte
1x00xxxxx1xxxxxx divs, divu, muls, mulu, or, and word
1xx1xxxx0xxxxxxx subx, sub, cmpm, cmp, eor, addx, add byte
1xx1xxx0x1xxxxxx sub, cmp, eor, add word
0101xxxx0xxxxxxx addq, subq byte
0101xxxxx1xxxxxx addq, subq word, dbcc, trapcc, scc
11100xxx11xxxxxx memory shift
Long instruction class:
0010xxxxxxxxxxxx move long
01000xx010xxxxxx chk long
0100101010xxxxxx tst long
0101xxxx01xxxxxx addq, subq long
1x0xxxxx01xxxxxx or, and long
1xx1xxxx01xxxxxx subx, sub, cmpm, cmp, eor, addx, add long
1xx1xxxx11xxxxxx adda, suba
Undefined instructions (should never come here):
(1) B<=LAST F<=SR A<=PC
(2) HALT
(3) F<=SR A<=PC-2
Go to (2)
I0. XXXXXXXXXX111001L (Long at abs.l)
A86. 0000XXX010111001 except #72 (Immediate long to abs.l)
(1) B.H<=D D<=[PROGRAM:A] A<=A+2
(2) BIT#<=Dm.L B.L<=D D<=[PROGRAM:A] PREFETCH[PROGRAM:A] PC<=A A<=B.H:D W
(3) C<=D D<=[DATA:A] A<=A+2
(4) B<=A E,G<=D D<=[DATA:A] A<=PC+2
Stage3
I1. XXXXXXXXXX111001W (Byte/Word at abs.l)
A87. 0000XXX0XX111001 except #86 (Immediate byte/word to abs.l)
(1) B.H<=D D<=[PROGRAM:A] A<=A+2
(2) BIT#<=Dm.L B.L<=D D<=[PROGRAM:A] PREFETCH[PROGRAM:A] PC<=A A<=B.H:D W
(3) C<=D D<=[DATA:B].B A<=PC+2
Stage3
I2. XXXXXXXXXX111000L (Long at abs.w)
A84. 0000XXX010111000 except #72 (Immediate long to abs.w)
(1) BIT#<=Dm.L B<=D D<=[PROGRAM:A] PREFETCH[PROGRAM:A] PC<=A A<=D W
(2) C<=D D<=[DATA:A] A<=A+2
(3) B<=A E,G<=D D<=[DATA:A] A<=PC+2
Stage3
I3. XXXXXXXXXX111000W (Byte/Word at abs.w)
A85. 0000XXX0XX111000 except #84 (Immediate byte/word to abs.w)
(1) BIT#<=Dm.L B<=D D<=[PROGRAM:A] PREFETCH[PROGRAM:A] PC<=A A<=D W
(2) C<=D D<=[DATA:B].B A<=PC+2
Stage3
I4. XXXXXXXXXX010XXXL (Long at (An))
A71. 0000XXX010010XXX except #72 (Immediate long to (An))
(1) C<=D D<=[DATA:An] A<=An+2
(2) B<=A E,G<=D D<=[DATA:A] A<=PC+2
Stage3
I5. XXXXXXXXXX010XXXW (Byte/Word at (An))
A73. 0000XXX0XX010XXX except #71 (Immediate byte/word to (An))
(1) B<=An C<=D [DATA:An].B
(2) BIT#<=Dm.L D<=[LAST].B W
Stage3
I6. XXXXXXXXXX101XXXL (Long at d(An))
I7. XXXXXXXXXX111010L (Long at d(pc))
A78. 0000XXX010101XXX except #72 (Immediate long to d(An))
(1) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=D+An
(2) C<=D D<=[A] A<=A+2
(3) B<=A E,G<=D D<=[A] A<=PC+4
Stage3
I8. XXXXXXXXXX101XXXW (Byte/Word at d(An))
I9. XXXXXXXXXX111010W (Byte/Word at d(pc))
A79. 0000100000111010 (btst d(pc))
A80. 0000XXX0XX101XXX except #78 (Immediate byte/word to d(An))
(1) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=D+An
(2) B<=A C<=D A<=PC+4 [A].B
(3) BIT#<=Dm.L D<=[LAST].B W
Stage3
I10. XXXXXXXXXX110XXXL (Long at d(An, Xn))
I11. XXXXXXXXXX111011L (Long at d(pc, Xn))
A81. 0000XXX010110XXX except #72 (Immediate long to d(An, Xn))
(1) C<=D.B
(2) A<=An+C NEXTI [PROGRAM:A]
Byte/Word Index:
(3) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn.L+A
Long Index:
(4) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn+A
(5) C<=D D<=[A] A<=A+2
(6) B<=A E,G<=D D<=[A] A<=PC+4
Stage3
I12. XXXXXXXXXX110XXXW (Byte/Word at d(An, Xn))
I13. XXXXXXXXXX111011W (Byte/Word at d(pc, Xn))
A82. 0000100000111011 (btst (An,Di))
A83. 0000XXX0XX110XXX except #81 (Immediate byte/word to address register with index)
(1) C<=D.B
(2) A<=An+C NEXTI [PROGRAM:A]
Byte/Word Index:
(3) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn.L+A
Long Index:
(4) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn+A
(5) B<=A C<=D A<=PC+4 [A].B
(6) BIT#<=Dm.L D<=[LAST].B W
Stage3
I14. 1X00XXX100001XXX (sbcd, abcd -(An), -(Am))
(1) BIT#<=Dm.L E<=D PC<=A A<=An-Sz W
(2) An<=A Dn.L<=D C<=D [DATA:A].B
(3) D<=[LAST].B A<=Am-Sz
(4) Am,B<=A Dm.L,E<=D D<=[DATA:A].B CHECK
(5) C<=Math1(D,E) CCR<=Flags.L [PROGRAM:PC]
(6) C<=Math2(BCD,C) D<=[LAST] PREFETCH[LAST] CCR<=Flags.H A<=B
(7) [DATA:A].B<=C FETCH F<=IMM A<=PC+2
End
I15. 1X01XXX110001XXX (subx.l, addx.l -(An), -(Am))
(1) BIT#<=Dm.L E<=D PC<=A A<=An-Sz W
(2) E<=D D<=[DATA:A] A<=A-2
(3) An<=A Dn.L<=D C<=D [DATA:A].B
(4) D<=[LAST].B A<=Am-Sz
(5) E<=D D<=[DATA:A] A<=A-2
(6) Am,B<=A Dm.L<=D C<=Math1(D,C) D<=[DATA:A] CCR<=Flags.L A<=A+2
(7) [DATA:A]<=C A<=D CHECK
(8) C<=Math2(D,E) D<=[PROGRAM:PC] PREFETCH[PROGRAM:PC] CCR<=Flags.H A<=B
(9) [DATA:A].B<=C FETCH F<=IMM A<=PC+2
End
I16. 1X01XXX10X001XXX (subx.b/w, addx.b/w -(An), -(Am))
(1) BIT#<=Dm.L E<=D PC<=A A<=An-Sz W
(2) An<=A Dn.L<=D C<=D [DATA:A].B
(3) D<=[LAST].B A<=Am-Sz
(4) Am,B<=A Dm.L,E<=D D<=[DATA:A].B CHECK
(5) C<=Math1(D,E) D<=[PROGRAM:PC] PREFETCH[PROGRAM:PC] CCR<=Flags.L A<=B
(6) [DATA:A].B<=C FETCH F<=IMM A<=PC+2
End
I17. 0100111001110001 (nop)
(1) PC<=A A<=A+2 CHECK [PROGRAM:A]
(2) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I18. 0100101011000XXX (tas Dn)
(1) E<=Dn.L C<=Math1(Dn.L,F) PC<=A CHECK [PROGRAM:A]
(2) Rn.L<=C C<=E D<=[LAST] PREFETCH[LAST] CCR<=Flags.L FETCH F<=IMM A<=A+2 W
End
I19. 010011100100XXXX (trap)
(1) F<=SR A<=PC-2
(2) C<=PC.L TRAP A<=SSP-2
(3) C<=F [DATA:A]<=C A<=A-4
(4) SSP<=A C<=PC.H [DATA:A]<=C F<=Vec A<=A+2
(5) B<=F C<=E [DATA:A]<=C A<=A-4
(6) PC<=B D<=[DATA:B] A<=B+2
(7) B.H<=D D<=[DATA:A] A<=A+2
(8) PREFETCH[PROGRAM:B.H:D] A<=B.H:D+2
(9)
(10) PC<=A A<=A+2 CHECK [PROGRAM:A]
(11) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I20. 0100111001110110 (trapv)
(1) E<=D C<=Math1(BIT,D) F<=SR NEXTI [PROGRAM:A]
Overflow:
(2) C<=PC.L D<=[LAST] TRAP A<=SSP-2
(3) C<=F [DATA:A]<=C A<=A-4
(4) SSP<=A C<=PC.H [DATA:A]<=C F<=Vec A<=A+2
(5) B<=F C<=E [DATA:A]<=C A<=A-4
(6) PC<=B D<=[DATA:B] A<=B+2
(7) B.H<=D D<=[DATA:A] A<=A+2
(8) PREFETCH[PROGRAM:B.H:D] A<=B.H:D+2
(9)
(10) PC<=A A<=A+2 CHECK [PROGRAM:A]
(11) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
Not overflow:
(12) PC<=A D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=A+2
End
I21. 0000XXX110000XXX (bclr Dm, Dn)
A93. 0000100010000XXX (bclr static Dn)
(1) B<=Rm BIT#<=Rm.L PC<=A A<=Rn CHECK [PROGRAM:A]
(2) E<=Rn.L C<=Math1(BIT,Rn.L) D<=[LAST] PREFETCH[LAST] A<=PC+2 NEXTI
High byte/word:
(3) E<=Rn.H C<=Math1(BIT,Rn.H)
(4) C<=Math3(BIT,C)
(5) Rn.H<=C C<=BIT&E CCR<=Flags.L FETCH F<=IMM
Low byte/word:
(6) C<=Math3(BIT,C)
(7) Rn.L<=C C<=BIT&E CCR<=Flags.L FETCH F<=IMM
End
I22. 0000XXX1X1000XXX (bchg, bset Dm, Dn)
A90. 00001000X1000XXX (bchg, bset static Dn)
(1) B<=Rm BIT#<=Rm.L PC<=A A<=Rn CHECK [PROGRAM:A]
(2) E<=Rn.L C<=Math1(BIT,Rn.L) D<=[LAST] PREFETCH[LAST] A<=PC+2 NEXTI
High byte/word:
(3) E<=Rn.H C<=Math1(BIT,Rn.H)
(4) Rn.H<=C C<=BIT&E CCR<=Flags.L FETCH F<=IMM
Low byte/word:
(5) Rn.L<=C C<=BIT&E CCR<=Flags.L FETCH F<=IMM
End
I23. 0100101010000XXX (tst.l Dn)
(1) B<=Rn PC<=A C<=Rn.L CCR<=Flags.L A<=A+2 CHECK [PROGRAM:A]
(2) C<=Rn.H D<=[LAST] PREFETCH[LAST] CCR<=Flags.H FETCH F<=IMM
End
I24. 0000XXX100000XXX (btst Dm, Dn)
A89. 0000100000000XXX (btst static Dn)
(1) B<=Rm BIT#<=Rm.L PC<=A A<=Rn CHECK [PROGRAM:A]
(2) E<=Rn.L C<=Rn.L D<=[LAST] PREFETCH[LAST] A<=PC+2 NEXTI
High byte/word:
(3) C<=BIT&Rn.H CCR<=Flags.L FETCH F<=IMM
Low byte/word:
(4) Rn.L<=C C<=BIT&E CCR<=Flags.L FETCH F<=IMM
End
I25. 0100XXX110000XXX (chk Dn)
A133. 0100XXX110XXXXXX (chk)
(1) E<=Dm.L C<=Math1(Dn.L,Dm.L) CCR<=Flags.L A<=A-2
(2) PC<=A C<=E CCR<=Flags.L A<=A+2 NEXTI
Positive, not overflow:
(3) NEXTI
Negative or overflow:
(4) F<=SR A<=PC-2
(5) C<=PC.L TRAP A<=SSP-2
(6) C<=F [DATA:A]<=C A<=A-4
(7) SSP<=A C<=PC.H [DATA:A]<=C F<=Vec A<=A+2
(8) B<=F C<=E [DATA:A]<=C A<=A-4
(9) PC<=B D<=[DATA:B] A<=B+2
(10) B.H<=D D<=[DATA:A] A<=A+2
(11) PREFETCH[PROGRAM:B.H:D] A<=B.H:D+2
(12)
(13) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I26. 1011XXX10X001XXX (cmpm.b/w)
(1) PC<=A A<=An+Sz [DATA:An].B
(2) An,B<=A D<=[LAST].B A<=A+2
(3) C<=D D<=[DATA:Am].B A<=Am+Sz CHECK
(4) Am<=A Dm.L<=C C<=Math1(D,C) D<=[PROGRAM:PC] PREFETCH[PROGRAM:PC] CCR<=Flags.L FETCH F<=IMM A<=PC+2
End
I27. 1011XXX110001XXX (cmpm.l)
(1) PC<=A A<=An+Sz [DATA:An].B
(2) An,B<=A D<=[LAST].B A<=A+2
(3) E<=D An<=A D<=[DATA:B]
(4) C<=D D<=[DATA:Am].B A<=Am+Sz CHECK
(5) G<=D D<=[DATA:A] A<=A+2
(6) Am<=A Dm.L<=C C<=Math1(D,C) CCR<=Flags.L A<=PC+2 [PROGRAM:PC]
(7) C<=Math2(G,E) D<=[LAST] PREFETCH[LAST] CCR<=Flags.H FETCH F<=IMM
End
I28. 1011XXX01000XXXX (cmp.l Rn, Dm)
I29. 1011XXX11100XXXX (cmpa.l Rn, Am)
A113. 1011XXX010XXXXXX (cmp.l)
A144. 1011XXX111XXXXXX (cmpa.l)
(1) B<=Rn.L C<=Math1(Rm.L,Rn.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) C<=Math2(Rm.H,Rn.H) D<=[LAST] PREFETCH[LAST] CCR<=Flags.H
(3) FETCH F<=IMM A<=PC+2
End
I30. 1011XXX01100XXXX (cmpa.b/w Rn, Am)
A146. 1011XXX011XXXXXX (cmpa.b/w)
(1) B<=Rn.L C<=Math1(Rm.L,Rn.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) C<=Math2(Rm.H,B.H) D<=[LAST] PREFETCH[LAST] CCR<=Flags.H
(3) FETCH F<=IMM A<=PC+2
End
I31. 1011XXX00X00XXXX (cmp.b/w Rn, Dm)
A145. 1011XXX00XXXXXXX (cmp.b/w)
(1) B<=Rn.L C<=Math1(Rm.L,Rn.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2
End
I32. 0101XXXX11001XXX (dbcc)
(1) A<=D+PC NEXTI
Condition false:
(2) B<=A E<=Dn.L C<=Dn.L A<=PC+2 [PROGRAM:A]
(3) C<=Math2(-1,E) PREFETCH[LAST] PC<=A A<=B+2 NEXTI
Result not zero:
(4) D<=[PROGRAM:PC] PREFETCH[PROGRAM:PC] FETCH F<=IMM A<=PC+2
(5) PC<=A A<=A+2 CHECK [PROGRAM:A]
(6) Rn.L<=C D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2 W
Condition true:
(7) FETCH F<=IMM A<=PC+2
(8) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(9) PC<=A A<=A+2 CHECK [PROGRAM:A]
(10) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I33. 1000XXX111000XXX (divs Dn)
A142. 1000XXX111XXXXXX (divs)
(1) B.H<=Rn.L E<=Rn.L G<=Dm.L C<=Rn.L CCR<=Flags.L PC<=A
(2) C<=Math1(0,E) CCR<=Flags.L NEXTI
Negative:
(3) B.L<=None E<=C C<=Rm.H CCR<=Flags.L A<=None:F+Sz Cy
(4) C<=Math1(0,Rm.L) NEXTI
Positive:
(5) C<=Math1(B.L,E) CCR<=Flags.L
Negative:
(6) G<=C C<=Math2(0,Rm.H)
(7) B.L<=C C<=Math1(C,E) CCR<=Flags.L
(8) C<=B.L CCR<=Flags.L NEXTI
Carry:
(9) C<=Math3(-1,C) A<=A-Sz Cy
(10) B.L<=C C<=Math1(C,E) CCR<=Flags.L NEXTI
A.Count != 0:
(11) NEXTI
Carry:
(12) C<=B.L CCR<=Flags.L
Go to (9)
Not carry:
(13) C<=Math5(-1,C) A<=A-Sz Cy
Go to (10)
(14) NEXTI
Carry:
(15) C<=Math3(-1,C) A<=A-Sz Cy
Not carry:
(16) B.L<=C C<=Math5(-1,C)
(17) C<=B.H CCR<=Flags.L
(18) E<=G C<=Rm.H CCR<=Flags.L NEXTI
Positive:
(19) B.H<=B.L C<=E CCR<=Flags.L NEXTI
Positive:
(20) B.L<=C C<=C CCR<=Flags.L A<=PC+2 NEXTI [PROGRAM:PC]
Positive:
(21) Rm<=B D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2
End
Negative:
(22) C<=None|None.B D<=[LAST] PREFETCH[LAST] CCR<=Flags.L FETCH F<=IMM
End
Negative:
(23) C<=Math1(0,E) CCR<=Flags.L
(24) B.L<=C E<=C C<=Math1(0,B.H) NEXTI
Zero:
(25) B.H<=C C<=E CCR<=Flags.L A<=PC+2 CHECK [PROGRAM:PC]
Go to (21)
Nonzero:
(26) A<=PC+2 CHECK [PROGRAM:PC]
Go to (22)
Negative:
(27) B.H<=B.L C<=E CCR<=Flags.L NEXTI
Positive:
(28) C<=Math1(0,E) CCR<=Flags.L CHECK
(29) B.L<=C C<=C CCR<=Flags.L A<=PC+2 NEXTI [PROGRAM:PC]
Zero: Go to (21)
Nonzero: Go to (22)
Negative:
(30) B.L<=C E<=C C<=Math1(0,B.H) NEXTI
Positive: Go to (25)
Negative: Go to (26)
Not carry:
(31) A<=PC+2 CHECK [PROGRAM:PC]
Go to (22)
Positive:
(32) B.L<=None C<=Rm.H CCR<=Flags.L A<=None:F+Sz Cy
Go to (4)
Zero:
(33) F<=SR A<=PC-2
(34) PC<=A C<=A.L TRAP A<=SSP-2
(35) C<=F [DATA:A]<=C A<=A-4
(36) SSP<=A C<=PC.H [DATA:A]<=C F<=Vec A<=A+2
(37) B<=F C<=E [DATA:A]<=C A<=A-4
(38) PC<=B D<=[DATA:B] A<=B+2
(39) B.H<=D D<=[DATA:A] A<=A+2
(40) PREFETCH[PROGRAM:B.H:D] A<=B.H:D+2
(41)
(42) PC<=A A<=A+2 CHECK [PROGRAM:A]
(43) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I34. 1000XXX011000XXX (divu Dn)
A141. 1000XXX011XXXXXX (divu)
(1) B.H<=Rn.L E<=Rn.L G<=Dm.L C<=Rn.L CCR<=Flags.L PC<=A
(2) C<=Math1(Rm.H,E) CCR<=Flags.L NEXTI
Nonzero:
(3) B.L<=None C<=Rm.H CCR<=Flags.L A<=None:F+Sz NEXTI Cy
Carry:
(4) C<=Math3(-1,C) A<=A-Sz NEXTI Cy
Positive:
(5) B.L<=C C<=Math1(C,E) CCR<=Flags.L NEXTI
A.Count = 0:
(6) Rm.H<=C C<=0 NEXTI
Carry:
(7) Rm.H<=B.L E<=C C<=Math3(-1,C) A<=PC+2 CHECK [PROGRAM:PC]
(8) Rm.L<=G C<=Math1(G,E) D<=[LAST] PREFETCH[LAST] CCR<=Flags.L FETCH F<=IMM
End
Not carry:
(9) E<=C C<=Math5(-1,C) A<=PC+2 CHECK [PROGRAM:PC]
Go to (8)
A.Count != 0:
(10) NEXTI
Carry:
(11) C<=B.L CCR<=Flags.L
Go to (4)
Not carry:
(12) C<=Math5(-1,C) A<=A-Sz NEXTI Cy
Positive: Go to (5)
Negative:
(13) B.L<=C C<=Math1(C,E) CCR<=Flags.L NEXTI
A.Count = 0:
(14) Rm.H<=C C<=0
Go to (9)
A.Count != 0: Go to (12)
Negative: Go to (13)
Go to (8)
Not carry:
(15) A<=PC+2 CHECK [PROGRAM:PC]
(16) C<=None|None.B D<=[LAST] PREFETCH[LAST] CCR<=Flags.L FETCH F<=IMM
End
Zero:
(17) F<=SR A<=PC-2
(18) PC<=A C<=A.L TRAP A<=SSP-2
(19) C<=F [DATA:A]<=C A<=A-4
(20) SSP<=A C<=PC.H [DATA:A]<=C F<=Vec A<=A+2
(21) B<=F C<=E [DATA:A]<=C A<=A-4
(22) PC<=B D<=[DATA:B] A<=B+2
(23) B.H<=D D<=[DATA:A] A<=A+2
(24) PREFETCH[PROGRAM:B.H:D] A<=B.H:D+2
(25)
(26) PC<=A A<=A+2 CHECK [PROGRAM:A]
(27) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I35. 1100XXX10100XXXX (exg Dm,Dn or exg Am,An)
I36. 1100XXX110001XXX (exg Dm,An)
(1) B<=Rm BIT#<=Rm.L PC<=A A<=Rn CHECK [PROGRAM:A]
(2) Rm<=A Rn<=B D<=[LAST] PREFETCH[LAST]
(3) FETCH F<=IMM A<=PC+2
End
I37. 0100100011000XXX (ext.l Dn)
(1) B<=Rn.L C<=Math2(-1,Rn.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) Rn<=B D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2
End
I38. XXXXXXXXXX111100L (immediate long)
(1) Rn.H<=D D<=[PROGRAM:A] A<=A+2
(2) B.H<=D Rn.L<=D,None PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
Stage2
I39. XXXXXXXXXX111100W (immediate byte/word)
(1) B.H<=D Rn.L<=D,None PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
Stage2
I40. 0100111011111001 (jmp abs.l)
(1) B.H<=D D<=[PROGRAM:A] A<=A+2
(2) PREFETCH[PROGRAM:B.H:D] A<=B.H:D+2
(3) PC<=A A<=A+2 CHECK [PROGRAM:A]
(4) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I41. 0100111011111000 (jmp abs.w)
(1) B<=D
(2) PREFETCH[PROGRAM:B.H:D] A<=B.H:D+2
(3) PC<=A A<=A+2 CHECK [PROGRAM:A]
(4) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I42. 0100111011010XXX (jmp (An))
(1) PREFETCH[PROGRAM:An] A<=An+2
(2) PC<=A A<=A+2 CHECK [PROGRAM:A]
(3) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I43. 0100111011101XXX (jmp d(An))
I44. 0100111011111010 (jmp d(pc))
(1) A<=D+An
(2) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(3) PC<=A A<=A+2 CHECK [PROGRAM:A]
(4) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I45. 0100111011110XXX (jmp d(An, Xn))
I46. 0100111011111011 (jmp d(pc, Xn))
(1) C<=D.B
(2) A<=C+An NEXTI
Byte/Word Index:
(3) A<=A+Xn.L
Long Index:
(4) A<=A+Xn
(5) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(6) PC<=A A<=A+2 CHECK [PROGRAM:A]
(7) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I47. 0100111010111001 (jsr abs.l)
(1) B.H<=D D<=[PROGRAM:A] A<=A+2
(2) B.L<=D PREFETCH[PROGRAM:B.H:D] PC<=A A<=Am-4
(3) [DATA:A]<=PC.H Rm<=A A<=A+2
(4) [DATA:A]<=PC.L A<=B+2 CHECK
(5) PC<=A A<=A+2 CHECK [PROGRAM:A]
(6) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I48. 0100111010111000 (jsr abs.w)
(1) B<=D
(2) PREFETCH[PROGRAM:B] PC<=A A<=Am-4
(3) [DATA:A]<=PC.H Rm<=A A<=A+2
(4) [DATA:A]<=PC.L A<=B+2 CHECK
(5) PC<=A A<=A+2 CHECK [PROGRAM:A]
(6) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I49. 0100111010010XXX (jsr (An))
(1) B<=An PREFETCH[PROGRAM:An] A<=Am-4
(2) [DATA:A]<=PC.H Rm<=A A<=A+2
(3) [DATA:A]<=PC.L A<=B+2 CHECK
(4) PC<=A A<=A+2 CHECK [PROGRAM:A]
(5) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I50. 0100111010101XXX (jsr d(An))
I51. 0100111010111010 (jsr d(pc))
(1) A<=D+An
(2) B<=A A<=PC+2 [PROGRAM:A]
(3) PREFETCH[LAST] PC<=A A<=Am-4
(4) [DATA:A]<=PC.H Rm<=A A<=A+2
(5) [DATA:A]<=PC.L A<=B+2 CHECK
(6) PC<=A A<=A+2 CHECK [PROGRAM:A]
(7) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I52. 0100111010110XXX (jsr d(An, Xn))
I53. 0100111010111011 (jsr d(pc, Xn))
(1) C<=D.B
(2) A<=C+An NEXTI
Byte/Word Index:
(3) A<=A+Xn.L
Long Index:
(4) A<=A+Xn
(5) B<=A A<=PC+2 [PROGRAM:A]
(6) PREFETCH[LAST] PC<=A A<=Am-4
(7) [DATA:A]<=PC.H Rm<=A A<=A+2
(8) [DATA:A]<=PC.L A<=B+2 CHECK
(9) PC<=A A<=A+2 CHECK [PROGRAM:A]
(10) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I54. 0100XXX111111001 (lea abs.l, Am)
(1) Rm.H<=D D<=[PROGRAM:A] A<=A+2
(2) Rm.L<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(3) PC<=A A<=A+2 CHECK [PROGRAM:A]
(4) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I55. 0100XXX111111000 (lea abs.w, Am)
(1) Rm<=D PREFETCH[PROGRAM:A] A<=A+2
(2) PC<=A A<=A+2 CHECK [PROGRAM:A]
(3) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I56. 010011001X101XXX (movem from d(An))
I57. 010011001X111010 (movem from d(pc))
(1) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(2) A<=D+An [PROGRAM:A]
(3) B<=A PREFETCH[LAST] A<=PC+4
(4) D<=[B] NEXT PC<=A A<=B+2 NEXTI
Movem.w:
(5) Rm<=D B<=A D<=[A] NEXT A<=A+2 NEXTI
Movem.w: Go to (5)
Movem.l:
(6) Rm.H<=D D<=[A] A<=A+2
(7) Rm.L<=D B<=A D<=[A] NEXT A<=A+2 NEXTI
Movem.l: Go to (6)
(8) A<=PC+2 CHECK [PROGRAM:PC]
(9) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I58. 010011001X010XXX (movem from (An))
(1) List,F<=D D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(2) B<=Rn D<=[DATA:Rn] NEXT PC<=A A<=Rn+2 NEXTI
Movem.w:
(3) Rm<=D B<=A D<=[A] NEXT A<=A+2 NEXTI
Movem.w: Go to (3)
Movem.l:
(4) Rm.H<=D D<=[A] A<=A+2
(5) Rm.L<=D B<=A D<=[A] NEXT A<=A+2 NEXTI
Movem.l: Go to (4)
(6) A<=PC+2 CHECK [PROGRAM:PC]
(7) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I59. 010011001X110XXX (movem from d(An, Xn))
I60. 010011001X111011 (movem from d(pc, Xn))
(1) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(2) C<=D.B
(3) A<=An+C NEXTI [PROGRAM:A]
Byte/Word Index:
(4) PREFETCH[LAST] A<=Xn.L+A
Long Index:
(5) PREFETCH[LAST] A<=Xn+A
(6) B<=A C<=D A<=PC+4 [A].B
(7) D<=[LAST] NEXT PC<=A A<=B+2 NEXTI
Movem.w:
(8) Rm<=D B<=A D<=[A] NEXT A<=A+2 NEXTI
Movem.w: Go to (8)
Movem.l:
(9) Rm.H<=D D<=[A] A<=A+2
(10) Rm.L<=D B<=A D<=[A] NEXT A<=A+2 NEXTI
Movem.l: Go to (9)
(11) A<=PC+2 CHECK [PROGRAM:PC]
(12) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I61. 0100XXX111010XXX (lea (An), Am)
(1) List,F<=D B<=An PC<=A CHECK [PROGRAM:A]
(2) Rm<=B D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2
End
I62. 0100XXX111101XXX (lea d(An), Am)
I63. 0100XXX111111010 (lea d(pc), Am)
(1) A<=D+An [PROGRAM:A]
(2) Rm<=A PREFETCH[LAST] A<=PC+4
(3) PC<=A A<=A+2 CHECK [PROGRAM:A]
(4) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I64. 0100XXX111110XXX (lea d(An, Xn), Am)
I65. 0100XXX111111011 (lea d(pc, Xn), Am)
(1) C<=D.B
(2) A<=An+C NEXTI [PROGRAM:A]
Byte/Word Index:
(3) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn.L+A
Long Index:
(4) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn+A
(5) Rm<=A A<=PC+4
(6) PC<=A A<=A+2 CHECK [PROGRAM:A]
(7) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I66. 0100111001010XXX (link)
(1) B<=Rn C<=Rn.L A<=A+2 [PROGRAM:A]
(2) PREFETCH[LAST] PC<=A A<=Am-4
(3) [DATA:A]<=B.H An<=A A<=A+2 CHECK
(4) [DATA:A]<=C A<=D+An
(5) Am<=A D<=[PROGRAM:PC] PREFETCH[PROGRAM:PC] FETCH F<=IMM A<=PC+2
End
I67. 010011001X111001 (movem from abs.l)
(1) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(2) Rn.H<=D D<=[PROGRAM:A] A<=A+2
(3) B.H<=D Rn.L<=D,None PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(4) B<=Rn D<=[DATA:Rn] NEXT PC<=A A<=Rn+2 NEXTI
Movem.w:
(5) Rm<=D B<=A D<=[A] NEXT A<=A+2 NEXTI
Movem.w: Go to (5)
Movem.l:
(6) Rm.H<=D D<=[A] A<=A+2
(7) Rm.L<=D B<=A D<=[A] NEXT A<=A+2 NEXTI
Movem.l: Go to (6)
(8) A<=PC+2 CHECK [PROGRAM:PC]
(9) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I68. 010011001X111000 (movem from abs.w)
(1) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(2) Rn<=D PREFETCH[PROGRAM:A] A<=A+2
(3) B<=Rn D<=[DATA:Rn] NEXT PC<=A A<=Rn+2 NEXTI
Movem.w:
(4) Rm<=D B<=A D<=[A] NEXT A<=A+2 NEXTI
Movem.w: Go to (4)
Movem.l:
(5) Rm.H<=D D<=[A] A<=A+2
(6) Rm.L<=D B<=A D<=[A] NEXT A<=A+2 NEXTI
Movem.l: Go to (5)
(7) A<=PC+2 CHECK [PROGRAM:PC]
(8) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I69. 0100111001100XXX (move Dn, usp)
(1) List,F<=D B<=An PC<=A CHECK [PROGRAM:A]
(2) Rm<=B D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2
End
I70. 0000XXX101001XXX (movep.l d(An), Dm)
(1) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=D+An
(2) D<=[DATA:A].B UPPER A<=A+2
(3) D<=[DATA:A].B LOWER A<=A+2
(4) Rm.H<=D D<=[DATA:A].B UPPER A<=A+2
(5) D<=[DATA:A].B LOWER A<=PC+4 CHECK
(6) Dm.L<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] FETCH F<=IMM A<=A+2
End
I71. 0000XXX100001XXX (movep.w d(An), Dm)
(1) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=D+An
(2) D<=[DATA:A].B UPPER A<=A+2
(3) D<=[DATA:A].B LOWER A<=PC+4 CHECK
(4) Dm.L<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] FETCH F<=IMM A<=A+2
End
I72. 0000XXX111001XXX (movep.l Dm, d(An))
(1) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=D+An
(2) [DATA:A].B<=Rm.H UPPER A<=A+2
(3) [DATA:A].B<=Rm.H LOWER A<=A+2
(4) [DATA:A].B<=Dm.L UPPER A<=A+2 CHECK
(5) [DATA:A].B<=Dm.L LOWER A<=PC+4
(6) PC<=A A<=A+2 CHECK [PROGRAM:A]
(7) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I73. 0000XXX110001XXX (movep.w Dm, d(An))
(1) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=D+An
(2) [DATA:A].B<=Dm.L UPPER A<=A+2 CHECK
(3) [DATA:A].B<=Dm.L LOWER A<=PC+4
(4) PC<=A A<=A+2 CHECK [PROGRAM:A]
(5) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I74. 1100XXXX11000XXX (muls, mulu Dn)
A147. 1100XXXX11XXXXXX (muls, mulu)
(1) B<=A E<=Dm.L G<=Dn.L C<=0 CCR<=Flags.L A<=None:F CHECK [PROGRAM:A]
(2) Rm.L<=C D<=[LAST] PREFETCH[LAST] NEXTI
1 unsigned:
(3) C<=Math2(C,E) CCR<=Flags.H
1 signed:
(4) C<=Math1(C,E) CCR<=Flags.H
(5) PC.L<=B.L C<=Math3(-1,C) CCR<=Flags.H A<=A-Sz NEXTI Cy
01 signed or 1x unsigned: Go to (3)
10 signed: Go to (4)
Neither: Go to (5)
A. Count = 0:
(6) Rm.H<=C PC.H<=B.H Am.L<=B.L Dm.L<=G C<=C CCR<=Flags.H FETCH F<=IMM A<=B+2
End
I75. X100100000000XXX (nbcd Dn)
(1) PC<=A C<=Math1(0,Rn.L) CCR<=Flags.L A<=A+2 CHECK [PROGRAM:A]
(2) C<=Math2(BCD,C) D<=[LAST] PREFETCH[LAST] CCR<=Flags.H A<=B
(3) Dn.L<=C FETCH F<=IMM A<=PC+2 W
End
I76. X1000XX010000XXX (negx.l, clr.l, neg.l, not.l Dn)
(1) PC<=A C<=Math1(0,Rn.L) CCR<=Flags.L A<=A+2 CHECK [PROGRAM:A]
(2) Rn.L<=C C<=Math2(0,Rn.H) D<=[LAST] PREFETCH[LAST] CCR<=Flags.H
(3) Rn.H<=C FETCH F<=IMM A<=PC+2
End
I77. X1000XX00X000XXX (negx.b/w, clr.b/w, neg.b/w, not.b/w Dn)
I78. X100100010000XXX (ext.w Dn)
(1) PC<=A C<=Math1(0,Rn.L) CCR<=Flags.L A<=A+2 CHECK [PROGRAM:A]
(2) Rn.L<=C D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2 W
End
I79. X10010100X000XXX (tst.b/w Dn)
(1) B<=Rn PC<=A C<=Rn.L CCR<=Flags.L A<=A+2 CHECK [PROGRAM:A]
(2) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I80. X000XXX00XXXXXXX (eori.b/w, ori.b/w, andi.b/w, subi.b/w, add.b/w)
I147. 000010001XXXXXXX (bclr, bset static)
(1) Rm.L<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
Stage2
I81. X100111001011XXX (unlk)
(1) B<=Rn D<=[DATA:Rn] NEXT PC<=A A<=Rn+2
(2) B.H<=D D<=[DATA:A] A<=A+2 CHECK
(3) Rm<=A A<=PC+2 [PROGRAM:PC]
(4) Rn<=B.H:D D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I82. X100100001111001 (pea abs.l)
(1) B.H<=D D<=[PROGRAM:A] A<=A+2
(2) B.L<=D PREFETCH[PROGRAM:A] PC<=A A<=Am-4
(3) [DATA:A]<=B.H Rm<=A A<=A+2
(4) [DATA:A]<=B.L FETCH F<=IMM A<=PC+2
(5) PC<=A A<=A+2 CHECK [PROGRAM:A]
(6) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I83. X100100001111000 (pea abs.w)
(1) B<=D PREFETCH[PROGRAM:A] PC<=A A<=Am-4
(2) [DATA:A]<=B.H Rm<=A A<=A+2
(3) [DATA:A]<=B.L FETCH F<=IMM A<=PC+2
(4) PC<=A A<=A+2 CHECK [PROGRAM:A]
(5) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I84. XXXXXXXXXX100XXXL (predecrement long)
A76. 0000XXX010100XXX except #72 (immediate long to -(An))
(1) C<=D A<=An-4
(2) An<=A D<=[DATA:A] A<=A+2
(3) B<=A E,G<=D D<=[DATA:A] A<=PC+2
Stage3
I85. XXXXXXXXXX100XXXW (predecrement byte/word)
A77. 0000XXX0XX100XXX except #76 (immediate byte/word to -(An))
(1) BIT#<=Dm.L E<=D PC<=A A<=An-Sz W
(2) An,B<=A C<=E D<=[DATA:A].B A<=PC
Stage3
I86. 0100100001010XXX (pea (An))
(1) B<=Rn C<=Rn.L D<=[PROGRAM:A] PREFETCH[PROGRAM:A] PC<=A A<=Am-4 CHECK
(2) [DATA:A]<=B.H Rm<=A A<=A+2
(3) [DATA:A].B<=C FETCH F<=IMM A<=PC+2
End
I87. 0100100001101XXX (pea d(An))
I88. 0100100001111010 (pea d(pc))
(1) B<=An C<=D D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(2) PC<=A A<=C+B CHECK [PROGRAM:A]
(3) B<=A C<=A.L D<=[LAST] PREFETCH[LAST] A<=Am-4
(4) [DATA:A]<=B.H Rm<=A A<=A+2
(5) [DATA:A].B<=C FETCH F<=IMM A<=PC+2
End
I89. 0100100001110XXX (pea d(An, Xn))
I90. 0100100001111011 (pea d(pc, Xn))
(1) C<=D.B
(2) A<=An+C NEXTI [PROGRAM:A]
Byte/Word Index:
(3) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn.L+A
Long Index:
(4) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn+A
(5) B<=A C<=A.L A<=PC+4 CHECK
(6) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] PC<=A A<=Am-4
(7) [DATA:A]<=B.H Rm<=A A<=A+2
(8) [DATA:A].B<=C FETCH F<=IMM A<=PC+2
End
I91. XXXXXXXXXX011XXXL (Long at (An)+)
A74. 0000XXX010011XXX except #72 (immediate to postincrement long)
(1) C<=D D<=[DATA:An] A<=An+2
(2) B<=A E,G<=D A<=A+2 [DATA:A]
(3) An<=A D<=[LAST] A<=PC+2
Stage3
I92. XXXXXXXXXX011XXXW (Byte/Word at (An)+)
A75. 0000XXX0XX011XXX except #74 (immediate to postincrement byte/word)
(1) BIT#<=Dm.L B<=An E<=D A<=An+Sz W [DATA:An].B
(2) An<=A C<=E D<=[LAST].B A<=PC+2
Stage3
I93. 010011001X011XXX (movem from (An)+)
(1) List,F<=D D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(2) B<=Rn D<=[DATA:Rn] NEXT PC<=A A<=Rn+2 NEXTI
Movem.w:
(3) Rm<=D B<=A D<=[DATA:A] NEXT A<=A+2 NEXTI
Movem.w: Go to (3)
Movem.l:
(4) Rm.H<=D D<=[DATA:A] A<=A+2
(5) Rm.L<=D B<=A D<=[DATA:A] NEXT A<=A+2 NEXTI
Movem.l: Go to (4)
(6) Rn<=B A<=PC+2 [PROGRAM:PC]
(7) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I94. 010010001X100XXX (movem to -(An))
(1) List,F<=D A<=A+2 [PROGRAM:A]
(2) B<=An PREFETCH[LAST] NEXT PC<=A A<=An-2 NEXTI
Movem.w:
(3) [DATA:A]<=Rm.L B<=A NEXT A<=A-2 NEXTI
Movem.w: Go to (3)
Movem.l:
(4) [DATA:A]<=Rm.L B<=A A<=A-2
(5) [DATA:A]<=Rm.H B<=A NEXT A<=A-2 NEXTI
Movem.l: Go to (4)
(6) Rn<=B A<=PC+2 CHECK [PROGRAM:PC]
(7) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I95. 001000111100XXXX (move.l Rn, abs.l)
(1) B.H<=D D<=[PROGRAM:A] A<=A+2
(2) B.L<=Rn.L C<=Rn.L PREFETCH[PROGRAM:A] CCR<=Flags.L PC<=A A<=B.H:D
(3) E,[DATA:A]<=Rn.H C<=Rn.H CCR<=Flags.H A<=A+2
(4) [DATA:A]<=B.L FETCH F<=IMM A<=PC+2
(5) PC<=A A<=A+2 CHECK [PROGRAM:A]
(6) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I96. 00X100111100XXXX (move.b/w Rn, abs.l)
A126. 00X1001111XXXXXX (move.b/w to abs.l)
(1) B.H<=D D<=[PROGRAM:A] A<=A+2
(2) B.L<=Rn.L C<=Rn.L PREFETCH[PROGRAM:A] CCR<=Flags.L PC<=A A<=B.H:D
(3) [DATA:A].B<=C FETCH F<=IMM A<=PC+2
(4) PC<=A A<=A+2 CHECK [PROGRAM:A]
(5) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I97. 0101XXXX1000XXXX (addq.l, subq.l to Rn)
I98. 0101XXXX01001XXX (addq, subq to An)
(1) Rm<=F C<=Math1(Rn.L,F) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) Rn.L<=C D<=[LAST] PREFETCH[LAST]
(3) C<=Math2(Rn.H,Rm.H) CCR<=Flags.H
(4) Rn.H<=C FETCH F<=IMM A<=PC+2
End
I99. 0101XXXX0X000XXX (addq.b/w, subq.b/w to Dn)
(1) Rm<=F C<=Math1(Rn.L,F) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) Rn.L<=C D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2 W
End
I100. 001000011100XXXX (move.l Rn, abs.w)
(1) B.L<=Rn.L C<=Rn.L PREFETCH[PROGRAM:A] CCR<=Flags.L PC<=A A<=D
(2) E,[DATA:A]<=Rn.H C<=Rn.H CCR<=Flags.H A<=A+2
(3) [DATA:A]<=B.L FETCH F<=IMM A<=PC+2
(4) PC<=A A<=A+2 CHECK [PROGRAM:A]
(5) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I101. 00X100011100XXXX (move.b/w Rn, abs.w)
A116. 00X1000111XXXXXX (move.b/w to abs.w)
(1) B.L<=Rn.L C<=Rn.L PREFETCH[PROGRAM:A] CCR<=Flags.L PC<=A A<=D
(2) [DATA:A].B<=C FETCH F<=IMM A<=PC+2
(3) PC<=A A<=A+2 CHECK [PROGRAM:A]
(4) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I102. 1X00XXX100000XXX (abcd, sbcd Dn, Dm)
(1) B<=Rn.L C<=Math1(Rm.L,Rn.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) C<=Math2(BCD,C) D<=[LAST] PREFETCH[LAST] CCR<=Flags.H A<=B
(3) Rm.L<=C FETCH F<=IMM A<=PC+2 W
End
I103. 0111XXX0XXXXXXXX (moveq)
(1) Rm<=F PC<=A C<=F CCR<=Flags.L A<=A+2 CHECK [PROGRAM:A]
(2) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I104. 0010XXX10100XXXX (move.l Rn, d(Am))
A122. 0010XXX101XXXXXX (move.l to d(Am))
(1) PREFETCH[PROGRAM:A] PC<=A A<=D+Am
(2) E,[DATA:A]<=Rn.H C<=Rn.H CCR<=Flags.H A<=A+2
(3) [DATA:A].B<=Rn.L C<=Rn.L CCR<=Flags.L A<=PC+2 CHECK
(4) PC<=A C<=E D<=[PROGRAM:A] PREFETCH[PROGRAM:A] CCR<=Flags.H FETCH F<=IMM A<=A+2
End
I105. X0X1XXX10100XXXX (move.b/w Rn, d(Am))
A114. 00X1XXX101XXXXXX (move.b/w to d(Am))
(1) PREFETCH[PROGRAM:A] PC<=A A<=D+Am
(2) [DATA:A].B<=Rn.L C<=Rn.L CCR<=Flags.L A<=PC+2 CHECK
(3) PC<=A A<=A+2 CHECK [PROGRAM:A]
(4) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I106. X010XXX01100XXXX (move.l Rn, (Am)+)
A120. 0010XXX011XXXXXX (move.l to (Am)+)
(1) E,[DATA:Am]<=Rn.H PC<=A A<=Am+2
(2) [DATA:A]<=Rn.L C<=Rn.L CCR<=Flags.L A<=A+2 CHECK
(3) Am<=A C<=E D<=[PROGRAM:PC] PREFETCH[PROGRAM:PC] CCR<=Flags.H FETCH F<=IMM A<=PC+2
End
I107. X0X1XXX01100XXXX (move.b/w Rn, (Am)+)
A139. 00X1XXX011XXXXXX (move.b/w to (Am)+)
(1) [DATA:Am].B<=Rn.L C<=Rn.L CCR<=Flags.L PC<=A A<=Am+Sz CHECK
(2) Am<=A D<=[PROGRAM:PC] PREFETCH[PROGRAM:PC] FETCH F<=IMM A<=PC+2
End
I108. X010XXX10000XXXX (move.l Rn, -(Am))
A121. 0010XXX100XXXXXX (move.l to -(Am))
(1) C<=Rn.L D<=[PROGRAM:A] PREFETCH[PROGRAM:A] CCR<=Flags.L PC<=A A<=Am-Sz CHECK
(2) C<=Rn.H CCR<=Flags.H [DATA:A]<=C A<=A-2
(3) Am<=A [DATA:A].B<=C FETCH F<=IMM A<=PC+2
End
I109. X0X1XXX10000XXXX (move.b/w Rn, -(Am))
A143. 00X1XXX100XXXXXX (move.b/w to -(Am))
(1) C<=Rn.L D<=[PROGRAM:A] PREFETCH[PROGRAM:A] CCR<=Flags.L PC<=A A<=Am-Sz CHECK
(2) Am<=A [DATA:A].B<=C FETCH F<=IMM A<=PC+2
End
I110. X010XXX01000XXXX (move.l Rn, (Am))
A109. 0010XXX010XXXXXX (move.l to (Am))
(1) E,[DATA:Am]<=Rn.H PC<=A A<=Am+2
(2) [DATA:A]<=Rn.L C<=Rn.L CCR<=Flags.L A<=PC CHECK
(3) PC<=A C<=E D<=[PROGRAM:A] PREFETCH[PROGRAM:A] CCR<=Flags.H FETCH F<=IMM A<=A+2
End
I111. X0X1XXX01000XXXX (move.b/w Rn, (Am))
A111. 00X1XXX010XXXXXX (move.b/w to (Am))
(1) [DATA:Am].B<=Rn.L C<=Rn.L CCR<=Flags.L PC<=A A<=Am+Sz CHECK
(2) A<=PC+2 CHECK [PROGRAM:PC]
(3) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I112. X010XXX11000XXXX (move.l Rn, d(Am, Xm))
A123. 0010XXX110XXXXXX (move.l to d(Am, Xm))
(1) C<=D.B
(2) PC<=A A<=Am+C NEXTI [PROGRAM:A]
Byte/Word Index:
(3) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn.L+A
Long Index:
(4) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn+A
(5) E,[DATA:A]<=Rn.H C<=Rn.H CCR<=Flags.H A<=A+2
(6) [DATA:A].B<=Rn.L C<=Rn.L CCR<=Flags.L A<=PC+2 CHECK
(7) PC<=A C<=E D<=[PROGRAM:A] PREFETCH[PROGRAM:A] CCR<=Flags.H FETCH F<=IMM A<=A+2
End
I113. X0X1XXX11000XXXX (move.b/w Rn, d(Am, Xm))
A115. 00X1XXX110XXXXXX (move.b/w to d(Am, Xm))
(1) C<=D.B
(2) PC<=A A<=Am+C NEXTI [PROGRAM:A]
Byte/Word Index:
(3) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn.L+A
Long Index:
(4) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn+A
(5) [DATA:A].B<=Rn.L C<=Rn.L CCR<=Flags.L A<=PC+2 CHECK
(6) PC<=A A<=A+2 CHECK [PROGRAM:A]
(7) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I114. 1011XXX110000XXX (eor.l Dm, Dn)
A94. 0000XXX010000XXX except #95, #93 (eori.l, ori.l, andi.l, addi.l, subi.l to Dn)
(1) C<=Math1(Rn.L,Rm.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) Rn.L<=C D<=[LAST] PREFETCH[LAST]
(3) C<=Math2(Rn.H,Rm.H) CCR<=Flags.H
(4) Rn.H<=C FETCH F<=IMM A<=PC+2
End
I115. 1011XXX10X000XXX (eor.b/w Dm, Dn)
A91. 0000XXX00X000XXX except #88, #89, #90 (eori.b/w, ori.b/w, andi.l, addi.b/w, subi.b/w to Dn)
(1) C<=Math1(Rn.L,Rm.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) Rn.L<=C D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2 W
End
I116. 1X0XXXX01000XXXX (sub.l, add.l Dn, Dm)
I117. 1X01XXX11X000XXX (subx.l, addx.l Dn, Dm)
I118. 1X01XXX11100XXXX (suba.l, adda.l Rn, Am)
A112. 1X0XXXX010XXXXXX (sub.l, add.l to Dm)
A140. 1X01XXX111XXXXXX (subx.l, addx.l to Dm)
(1) B<=Rn.L C<=Math1(Rm.L,Rn.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) Rm.L<=C D<=[LAST] PREFETCH[LAST]
(3) C<=Math2(Rm.H,Rn.H) CCR<=Flags.H
(4) Rm.H<=C FETCH F<=IMM A<=PC+2
End
I119. 1X01XXX01100XXXX (suba.b/w, adda.b/w Rn, Am)
A138. 1X01XXX011XXXXXX (suba.b/w, adda.b/w to Am)
(1) B<=Rn.L C<=Math1(Rm.L,Rn.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) Rm.L<=C D<=[LAST] PREFETCH[LAST]
(3) C<=Math2(Rm.H,B.H) CCR<=Flags.H
(4) Rm.H<=C FETCH F<=IMM A<=PC+2
End
I120. 1X0XXXX00X00XXXX (sub.b/w, add.b/w Dm, Rn)
I121. 1X01XXX10X000XXX (sub.b/w, add.b/w Dn, Dm)
A137. 1X0XXXX00XXXXXXX (sub.b/w Dm)
(1) B<=Rn.L C<=Math1(Rm.L,Rn.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) Rm.L<=C D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2 W
End
I122. 0010XXX00X00XXXX (move.l Rn, Rm)
A118. 0010XXX00XXXXXXX (move.l to Rm)
(1) B<=Rn PC<=A C<=Rn.L CCR<=Flags.L A<=A+2 CHECK [PROGRAM:A]
(2) Rm<=B C<=Rn.H D<=[LAST] PREFETCH[LAST] CCR<=Flags.H FETCH F<=IMM
End
I123. 0011XXX00100XXXX (movea.b/w Rn, Am)
A117. 0011XXX001XXXXXX (movea.b/w to Am)
(1) B<=Rn.L PC<=A A<=A+2 CHECK [PROGRAM:A]
(2) Rm<=B C<=Rn.H D<=[LAST] PREFETCH[LAST] CCR<=Flags.H FETCH F<=IMM
End
I124. 00X1XXX00000XXXX (move.b/w Rn, Dm)
A119. 00X1XXX000XXXXXX (move.b/w to Dm)
(1) B<=Rn PC<=A C<=Rn.L CCR<=Flags.L A<=A+2 CHECK [PROGRAM:A]
(2) Rm.L<=C D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2 W
End
I125. 010001X011000XXX (move Dn, sr)
A128. 010001X011XXXXXX (move to sr)
(1) List,F<=Rn.L A<=A-2
(2) SR<=F
(3) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(4) PC<=A A<=A+2 CHECK [PROGRAM:A]
(5) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I126. 01001110011101-1 (Error in schematic? Nonsensical)
I127. 0101XXXX11000XXX (scc)
(1) PC<=A C<=0 NEXTI [PROGRAM:A]
Condition false:
(2) Rn.L<=C D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2 W
Condition true:
(3) C<=Math1(-1,C) D<=[LAST] PREFETCH[LAST] A<=B
(4) Dn.L<=C FETCH F<=IMM A<=PC+2 W
End
I128. 010010001X111001 (movem to abs.l)
(1) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(2) B.H<=D D<=[PROGRAM:A] A<=A+2
(3) B.L<=D A<=A+2 [PROGRAM:A]
(4) D<=[LAST] PREFETCH[LAST] NEXT PC<=A A<=B NEXTI
Movem.w:
(5) [DATA:A]<=Rm.L NEXT A<=A+2 NEXTI
Movem.w: Go to (5)
Movem.l:
(6) [DATA:A]<=Rm.H A<=A+2
(7) [DATA:A]<=Rm.L NEXT A<=A+2 NEXTI
Movem.l: Go to (6)
(8) A<=PC+2 CHECK [PROGRAM:PC]
(9) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I129. 010010001X111000 (movem to abs.w)
(1) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(2) B<=D A<=A+2 [PROGRAM:A]
(3) D<=[LAST] PREFETCH[LAST] NEXT PC<=A A<=B NEXTI
Movem.w:
(4) [DATA:A]<=Rm.L NEXT A<=A+2 NEXTI
Movem.w: Go to (4)
Movem.l:
(5) [DATA:A]<=Rm.H A<=A+2
(6) [DATA:A]<=Rm.L NEXT A<=A+2 NEXTI
Movem.l: Go to (5)
(7) A<=PC+2 CHECK [PROGRAM:PC]
(8) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I130. 1110XXXX100XXXXX (shift/rotate long immediate)
(1) C<=Rn.H PC<=A A<=F CHECK [PROGRAM:A]
(2) G<=C C<=Dn.L D<=[LAST] PREFETCH[LAST] CCR<=Flags.L A<=A-Sz NEXTI Cy
A.Count != 0:
(3) C<=Math3(-1,C) CCR<=Flags.L A<=A-Sz NEXTI Cy
A.Count != 0: Go to (3)
(4) Dn.L<=C Rn.H<=G E<=G
(5) C<=E CCR<=Flags.H FETCH F<=IMM A<=PC+2
End
I131. 1110XXXX0X0XXXXX (shift/rotate byte/word immediate)
(1) C<=Rn.H PC<=A A<=F CHECK [PROGRAM:A]
(2) G<=C C<=Dn.L D<=[LAST] PREFETCH[LAST] CCR<=Flags.L A<=A-Sz NEXTI Cy
A.Count != 0:
(3) C<=Math3(-1,C) CCR<=Flags.L A<=A-Sz NEXTI Cy
A.Count != 0: Go to (3)
(4) Dn.L<=C FETCH F<=IMM A<=PC+2 W
End
I132. 1110XXXX101XXXXX (shift/rotate long register)
(1) C<=Rn.H PC<=A A<=Rm.L CHECK [PROGRAM:A]
(2) G<=C C<=Dn.L D<=[LAST] PREFETCH[LAST] CCR<=Flags.L A<=A-Sz NEXTI Cy
A.Count != 0:
(3) C<=Math3(-1,C) CCR<=Flags.L A<=A-Sz NEXTI Cy
A.Count != 0: Go to (3)
(4) Dn.L<=C Rn.H<=G E<=G
(5) C<=E CCR<=Flags.H FETCH F<=IMM A<=PC+2
End
I133. 1110XXXX0X1XXXXX (shift/rotate byte/word register)
(1) C<=Rn.H PC<=A A<=Rm.L CHECK [PROGRAM:A]
(2) G<=C C<=Dn.L D<=[LAST] PREFETCH[LAST] CCR<=Flags.L A<=A-Sz NEXTI Cy
A.Count != 0:
(3) C<=Math3(-1,C) CCR<=Flags.L A<=A-Sz NEXTI Cy
A.Count != 0: Go to (3)
(4) Dn.L<=C FETCH F<=IMM A<=PC+2 W
End
I134. 010010001X101XXX (movem to d(An))
(1) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(2) B<=D A<=A+2 [PROGRAM:A]
(3) PREFETCH[LAST] NEXT PC<=A A<=An+D NEXTI
Movem.w:
(4) [DATA:A]<=Rm.L NEXT A<=A+2 NEXTI
Movem.w: Go to (4)
Movem.l:
(5) [DATA:A]<=Rm.H A<=A+2
(6) [DATA:A]<=Rm.L NEXT A<=A+2 NEXTI
Movem.l: Go to (5)
(7) A<=PC+2 CHECK [PROGRAM:PC]
(8) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I135. 010010001X010XXX (movem to (An))
(1) List,F<=D A<=A+2 [PROGRAM:A]
(2) PREFETCH[LAST] NEXT PC<=A A<=An NEXTI
Movem.w:
(3) [DATA:A]<=Rm.L NEXT A<=A+2 NEXTI
Movem.w: Go to (3)
Movem.l:
(4) [DATA:A]<=Rm.H A<=A+2
(5) [DATA:A]<=Rm.L NEXT A<=A+2 NEXTI
Movem.l: Go to (4)
(6) A<=PC+2 CHECK [PROGRAM:PC]
(7) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I136. 010010001X110XXX (movem to d(An, Xn))
(1) List,F<=D D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+4
(2) B.L<=D PC<=A C<=D.B A<=A-2
(3) A<=An+C NEXTI [PROGRAM:A]
Byte/Word Index:
(4) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn.L+A NEXTI
Long Index:
(5) D<=[LAST] PREFETCH[LAST] NEXT A<=Xn+A NEXTI
Movem.w:
(6) [DATA:A]<=Rm.L NEXT A<=A+2 NEXTI
Movem.w: Go to (6)
Movem.l:
(7) [DATA:A]<=Rm.H A<=A+2
(8) [DATA:A]<=Rm.L NEXT A<=A+2 NEXTI
Movme.l: Go to (7)
(9) A<=PC+2 CHECK [PROGRAM:PC]
(10) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I137. 0100111001110010 (stop)
(1) List,F<=D PC<=A C<=0 FETCH A<=A+2 CHECK
(2) PC<=A FETCH SR<=F A<=A-2
End
I138. 0100000011000XXX (move sr, Dn)
(1) F<=SR PC<=A CHECK [PROGRAM:A]
(2) Rn.L<=F D<=[LAST] PREFETCH[LAST]
(3) FETCH F<=IMM A<=PC+2
End
I139. 0100111001101XXX (move usp, Dn)
(1) B<=Rm BIT#<=Rm.L PC<=A A<=Rn CHECK [PROGRAM:A]
(2) Rn<=B D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2
End
I140. 0100100001000XXX (swap Dn)
(1) B.H<=Rn.L E<=Rn.L C<=Rn.H CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) Rn.H<=B.H An.L<=A.L Dn.L<=C C<=E D<=[LAST] PREFETCH[LAST] CCR<=Flags.H FETCH F<=IMM A<=A+2
End
I141. 0100111001110000 (reset)
(1) List,F<=D PC<=A C<=0 FETCH A<=A+2
(2) A<=C-2 CHECK
(3) A<=A-2 RESET
(4) RESET NEXTI
A.Count != 0: Go to (3)
(5) D<=[PROGRAM:PC] PREFETCH[PROGRAM:PC] FETCH F<=IMM A<=PC+2
End
I142. 0000XXX010XXXXXX except I147 (eori.l, ori.l, andi.l, subi.l, addi.l)
(1) Rm.H<=D D<=[PROGRAM:A] A<=A+2
(2) Rm.L<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
Stage2
I143. 0110XXXXXXXXXXXX except I146, I144, I145 (bcc with 8-bit displacement)
(1) A<=PC+F NEXTI
Condition false:
(2) FETCH F<=IMM A<=PC+2
Condition true:
(3) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(4) PC<=A A<=A+2 CHECK [PROGRAM:A]
(5) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I144. 0110XXXX00000000 except I146 (bcc with 16-bit displacement)
(1) A<=D+PC NEXTI
Condition false:
(2) FETCH F<=IMM A<=PC+2
(3) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
Condition true:
(4) D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(5) PC<=A A<=A+2 CHECK [PROGRAM:A]
(6) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I145. 01100001XXXXXXXX except I146 (bsr with 8-bit displacement)
(1) B<=PC C<=PC.L A<=Am-4
(2) [DATA:A]<=B.H Rm<=A A<=A+2
(3) [DATA:A]<=C A<=F+PC
(4) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(5) PC<=A A<=A+2 CHECK [PROGRAM:A]
(6) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
I146. 0110000100000000 (bsr with 16-bit displacement)
(1) B<=A C<=A.L A<=Am-4
(2) [DATA:A]<=B.H Rm<=A A<=A+2
(3) [DATA:A]<=C A<=D+PC
(4) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(5) PC<=A A<=A+2 CHECK [PROGRAM:A]
(6) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
A88. 000011000X000XXX (cmpi.b/w Dn)
(1) C<=Math1(Rn.L,Rm.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM A<=PC+2
End
A92. 0000XXX00X111100 (eori, ori, andi to sr)
(1) F<=SR A<=PC-2
(2) C<=Math1(Dm.L,F)
(3) List,F<=C A<=A+2
(4) SR<=F
(5) List,F<=D PC<=A D<=[PROGRAM:A] PREFETCH[PROGRAM:A] A<=A+2
(6) PC<=A A<=A+2 CHECK [PROGRAM:A]
(7) D<=[LAST] PREFETCH[LAST] FETCH F<=IMM
End
A95. 0000110010000XXX (cmpi.l Dn)
(1) C<=Math1(Rn.L,Rm.L) CCR<=Flags.L PC<=A CHECK [PROGRAM:A]
(2) C<=Math2(Rn.H,Rm.H) D<=[LAST] PREFETCH[LAST] CCR<=Flags.H
(3) FETCH F<=IMM A<=PC+2
End
A96. 0000XXX100XXXXXX (btst dynamic immediate)
(1) BIT#<=Dm.L Rn.H<=B.H PC<=A W CHECK [PROGRAM:A]
(2) E<=Rn.L C<=Rn.L D<=[LAST] PREFETCH[LAST] A<=PC+2 NEXTI
High byte/word:
(3) C<=BIT&Rn.H CCR<=Flags.L FETCH F<=IMM
Low byte/word:
(4) Rn.L<=C C<=BIT&E CCR<=Flags.L FETCH F<=IMM
End
A124. 00100-1111XXXXXX (Error in schematic)