mirror of
https://github.com/larsbrinkhoff/awesome-cpus
synced 2025-04-11 07:46:47 +03:00
Contributing 68000, VAX, Z80, SH4, PDP-11, NS32000 docs plus various README.md files
This commit is contained in:
parent
c1878866cc
commit
b7508b9900
473
M68000/680x0bin.txt
Normal file
473
M68000/680x0bin.txt
Normal file
@ -0,0 +1,473 @@
|
||||
680x0bin.txt
|
||||
Instruction set of the 680x0 in binary order
|
||||
1988/WJvG
|
||||
|
||||
0 1 2 3
|
||||
0000 000000 aaaaaa 00000000 dddddddd ori.b #datab,a
|
||||
0000 000000 111100 00000000 dddddddd ori.b #datab,ccr
|
||||
0000 000001 aaaaaa dddddddd dddddddd ori.w #dataw,a
|
||||
0000 000001 111100 dddddddd dddddddd ori.w #dataw,sr (sup)
|
||||
0000 000010 aaaaaa longword ori.l #datal,a
|
||||
0000 000011 aaaaaa nnnn0000 00000000 cmp2.b a,Rn (020)
|
||||
0000 000011 aaaaaa nnnn1000 00000000 chk2.b a,Rn (020)
|
||||
|
||||
0000 001000 aaaaaa 00000000 dddddddd andi.b #datab,a
|
||||
0000 001000 111100 00000000 dddddddd andi.b #datab,ccr
|
||||
0000 001001 aaaaaa dddddddd dddddddd andi.w #dataw,a
|
||||
0000 001001 111100 dddddddd dddddddd andi.w #dataw,sr (sup)
|
||||
0000 001010 aaaaaa longword andi.l #datal,a
|
||||
0000 001011 aaaaaa nnnn0000 00000000 cmp2.w a,Rn (020)
|
||||
0000 001011 aaaaaa nnnn1000 00000000 chk2.w a,Rn (020)
|
||||
|
||||
0000 010000 aaaaaa 00000000 dddddddd subi.b #datab,a
|
||||
0000 010001 aaaaaa dddddddd dddddddd subi.w #dataw,a
|
||||
0000 010010 aaaaaa longword subi.l #datal,a
|
||||
0000 010011 aaaaaa nnnn0000 00000000 cmp2.l a,Rn (020)
|
||||
0000 010011 aaaaaa nnnn1000 00000000 chk2.l a,Rn (020)
|
||||
|
||||
0000 011000 aaaaaa 00000000 dddddddd addi.b #datab,a
|
||||
0000 011001 aaaaaa dddddddd dddddddd addi.w #dataw,a
|
||||
0000 011010 aaaaaa longword addi.l #datal,a
|
||||
0000 011011 00nnnn rtm Rn (020)
|
||||
0000 011011 aaaaaa 00000000 dddddddd callm #data8,a (020)
|
||||
|
||||
0000 100000 aaaaaa 00000000 000bbbbb btst #bitnr,a
|
||||
0000 100001 aaaaaa 00000000 000bbbbb bchg #bitnr,a
|
||||
0000 100010 aaaaaa 00000000 000bbbbb bclr #bitnr,a
|
||||
0000 100011 aaaaaa 00000000 000bbbbb bset #bitnr,a
|
||||
|
||||
0000 101000 aaaaaa 00000000 dddddddd eori.b #datab,a
|
||||
0000 101000 111100 00000000 dddddddd eori.b #datab,ccr
|
||||
0000 101001 aaaaaa dddddddd dddddddd eori.w #dataw,a
|
||||
0000 101001 111100 dddddddd dddddddd eori.w #dataw,sr (sup)
|
||||
0000 101010 aaaaaa longword eori.l #datal,a
|
||||
0000 101011 aaaaaa 0000000u uu000ccc cas.b Dc,Du,ea (020)
|
||||
0000 101011 111100 nnnn000u uu000ccc cas2.b Dc1:Dc2,Du1:Du2,
|
||||
nnnn000u uu000ccc (Rn):(Rn) (020)
|
||||
|
||||
0000 1100zz aaaaaa cmpi.z #dataz,a
|
||||
0000 110011 aaaaaa 0000000u uu000ccc cas.w Dc,Du,ea (020)
|
||||
0000 110011 111100 nnnn000u uu000ccc cas2.w Dc1:Dc2,Du1:Du2,
|
||||
nnnn000u uu000ccc (Rn):(Rn) (020)
|
||||
|
||||
0000 1110zz aaaaaa nnnn0000 00000000 moves.z a,Rn (010,sup)
|
||||
0000 1110zz aaaaaa nnnn1000 00000000 moves.z Rn,a (010,sup)
|
||||
0000 111011 aaaaaa 0000000u uu000ccc cas.l Dc,Du,ea (020)
|
||||
0000 111011 111100 nnnn000u uu000ccc cas2.l Dc1:Dc2,Du1:Du2,
|
||||
nnnn000u uu000ccc (Rn):(Rn) (020)
|
||||
|
||||
0000 nnn100 aaaaaa btst Dn,a
|
||||
0000 nnn101 aaaaaa bchg Dn,a
|
||||
0000 ddd10z 001sss dddddddd dddddddd movep.z data16(As),Dd
|
||||
0000 nnn110 aaaaaa bclr Dn,a
|
||||
0000 nnn111 aaaaaa bset Dn,a
|
||||
0000 sss11z 001ddd dddddddd dddddddd movep.z Ds,data16(Ad)
|
||||
|
||||
0001 dddddd ssssss move.b as,ad (dddddd reversed)
|
||||
0010 dddddd ssssss move.l as,ad (dddddd reversed)
|
||||
0010 ddd001 ssssss movea.l as,Ad
|
||||
0011 dddddd ssssss move.w as,ad (dddddd reversed)
|
||||
0011 ddd001 ssssss movea.w as,Ad
|
||||
|
||||
0100 0000zz aaaaaa negx.z a
|
||||
0100 000011 aaaaaa move SR,a (010,sup)
|
||||
0100 0010zz aaaaaa clr.z a
|
||||
0100 001011 aaaaaa move CCR,a (010)
|
||||
0100 0100zz aaaaaa neg.z a
|
||||
0100 010011 aaaaaa move a,CCR
|
||||
0100 0110zz aaaaaa not.z a
|
||||
0100 011011 aaaaaa move a,SR (sup)
|
||||
|
||||
0100 100000 aaaaaa nbcd a
|
||||
0100 100000 001nnn dddddddd dddddddd link An,#disp32.l (020)
|
||||
dddddddd dddddddd
|
||||
0100 100001 000nnn swap Dn
|
||||
0100 100001 001vvv bkpt #vector (010)
|
||||
0100 100001 aaaaaa pea a
|
||||
0100 10001z 000nnn ext.z Dn
|
||||
0100 10001z aaaaaa a6543210 d6543210 movem.z reg-list,a (rev in pred mode)
|
||||
|
||||
0100 1010zz aaaaaa tst.z a
|
||||
0100 101011 aaaaaa tas a
|
||||
0100 101011 111100 illegal
|
||||
|
||||
0100 101011 111010 bgnd (cpu32)
|
||||
|
||||
0100 110000 aaaaaa 0lll0000 0000hhhh mulu.l a,Dl (020)
|
||||
0100 110000 aaaaaa 0lll0100 0000hhhh mulu.q a,Dh:Dl (020)
|
||||
0100 110000 aaaaaa 0lll1000 0000hhhh muls.l a,Dl (020)
|
||||
0100 110000 aaaaaa 0lll1100 0000hhhh muls.q a,Dh:Dl (020)
|
||||
0100 110001 aaaaaa 0qqq0000 00000rrr divu.l a,Dq (020)
|
||||
0100 110001 aaaaaa 0qqq0100 00000rrr divu.q a,Dr:Dq (020)
|
||||
0100 110001 aaaaaa 0qqq1000 00000rrr divs.l a,Dq (020)
|
||||
0100 110001 aaaaaa 0qqq1100 00000rrr divs.q a,Dr:Dq (020)
|
||||
0100 11001z aaaaaa a6543210 d6543210 movem.z a,reg-list (rev in pred mode)
|
||||
|
||||
0100 111001 00vvvv trap #vector
|
||||
0100 111001 010nnn dddddddd dddddddd link An,data16
|
||||
0100 111001 011nnn unlk An
|
||||
0100 111001 100nnn move An,USP (sup)
|
||||
0100 111001 101nnn move USP,An (sup)
|
||||
0100 111001 110000 reset (sup)
|
||||
0100 111001 110001 nop
|
||||
0100 111001 110010 dddddddd dddddddd stop #data16 (sup)
|
||||
0100 111001 110011 rte (sup)
|
||||
0100 111001 110100 rtd (010)
|
||||
0100 111001 110101 rts
|
||||
0100 111001 110110 trapv
|
||||
0100 111001 110111 rtr
|
||||
|
||||
0100 111001 111010 nnnn0000 00000000 movec SFC,Rn (010,sup)
|
||||
0100 111001 111010 nnnn0000 00000001 movec DFC,Rn (010,sup)
|
||||
0100 111001 111010 nnnn0000 00000010 movec CACR,Rn (020,sup)
|
||||
0100 111001 111010 nnnn1000 00000000 movec USP,Rn (010,sup)
|
||||
0100 111001 111010 nnnn1000 00000001 movec VBR,Rn (010,sup)
|
||||
0100 111001 111010 nnnn1000 00000010 movec CAAR,Rn (020,sup)
|
||||
0100 111001 111010 nnnn1000 00000011 movec MSP,Rn (020,sup)
|
||||
0100 111001 111010 nnnn1000 00000100 movec ISP,Rn (020,sup)
|
||||
|
||||
0100 111001 111011 nnnn0000 00000000 movec Rn,SFC (010,sup)
|
||||
0100 111001 111011 nnnn0000 00000001 movec Rn,DFC (010,sup)
|
||||
0100 111001 111011 nnnn0000 00000010 movec Rn,CACR (020,sup)
|
||||
0100 111001 111011 nnnn1000 00000000 movec Rn,USP (010,sup)
|
||||
0100 111001 111011 nnnn1000 00000001 movec Rn,VBR (010,sup)
|
||||
0100 111001 111011 nnnn1000 00000010 movec Rn,CAAR (020,sup)
|
||||
0100 111001 111011 nnnn1000 00000011 movec Rn,MSP (020,sup)
|
||||
0100 111001 111011 nnnn1000 00000100 movec Rn,ISP (020,sup)
|
||||
|
||||
0100 nnn100 aaaaaa chk.l a,Dn (020)
|
||||
0100 nnn110 aaaaaa chk.w a,Dn
|
||||
0100 nnn111 aaaaaa lea a,An
|
||||
0100 100111 000nnn extb Dn (020)
|
||||
|
||||
0100 111010 aaaaaa jsr a
|
||||
0100 111011 aaaaaa jmp a
|
||||
|
||||
0101 ddd0zz aaaaaa addq.z #data3,a (data3 = 8,1..7)
|
||||
0101 ddd1zz aaaaaa subq.z #data3,a (data3 = 8,1..7)
|
||||
0101 cccc11 aaaaaa sCC a
|
||||
0101 cccc11 001nnn llllllll llllllll dbCC Dn,label
|
||||
0101 cccc11 111010 dddddddd dddddddd trapCC #operand.w (020)
|
||||
0101 cccc11 111011 longword trapCC #operand.l (020)
|
||||
0101 cccc11 111100 trapCC (020)
|
||||
|
||||
0110 0000 llllllll bra label
|
||||
0110 0001 llllllll bsr label
|
||||
0110 cccc llllllll bCC label
|
||||
|
||||
0111 nnn0 dddddddd moveq #data8,Dn
|
||||
|
||||
1000 nnn0zz aaaaaa or.z a,Dn
|
||||
1000 nnn011 aaaaaa divu.w a,Dn
|
||||
1000 nnn1zz aaaaaa or.z Dn,a
|
||||
1000 nnn111 aaaaaa divs.w a,Dn
|
||||
1000 ddd100 000sss sbcd Ds,Dd
|
||||
1000 ddd100 001sss sbcd -(As),-(Ad)
|
||||
|
||||
1000 ddd101 000sss dddddddd dddddddd pack Ds,Dd,#adj (020)
|
||||
1000 ddd101 001sss dddddddd dddddddd pack -(As),-(Ad),#adj (020)
|
||||
1000 ddd110 000sss dddddddd dddddddd unpk Ds,Dd,#adj (020)
|
||||
1000 ddd110 001sss dddddddd dddddddd unpk -(As),-(Ad),#adj (020)
|
||||
|
||||
1001 nnn0zz aaaaaa sub.z a,Dn
|
||||
1001 nnn1zz aaaaaa sub.z Dn,a
|
||||
1001 nnnz11 aaaaaa suba.z a,An
|
||||
1001 ddd1zz 000sss subx.z Ds,Dd
|
||||
1001 ddd1zz 001sss subx.z -(As),-(Ad)
|
||||
|
||||
1011 nnn0zz aaaaaa cmp.z a,Dn
|
||||
1011 nnn1zz aaaaaa eor.z a,Dn
|
||||
1011 nnnz11 aaaaaa cmpa.z a,An
|
||||
1011 ddd1zz 000sss cmpm.z Ds,Dd
|
||||
1011 ddd1zz 001sss cmpm.z (As)+,(Ad)+
|
||||
|
||||
1100 nnn0zz aaaaaa and.z a,Dn
|
||||
1100 nnn011 aaaaaa mulu.w a,Dn
|
||||
1100 nnn1zz aaaaaa and.z Dn,a
|
||||
1100 nnn111 aaaaaa muls.w a,Dn
|
||||
1100 ddd100 000sss abcd Ds,Dd
|
||||
1100 ddd100 001sss abcd -(As),-(Ad)
|
||||
1100 ddd101 000sss exg Ds,Dd
|
||||
1100 ddd101 001sss exg As,Ad
|
||||
1100 ddd110 001sss exg As,Dd
|
||||
|
||||
1101 nnn0zz aaaaaa add.z a,Dn
|
||||
1101 nnn1zz aaaaaa add.z Dn,a
|
||||
1101 nnnz11 aaaaaa adda.z a,An
|
||||
1101 ddd1zz 000sss addx.z Ds,Dd
|
||||
1101 ddd1zz 001sss addx.z -(As),-(Ad)
|
||||
|
||||
1110 ccc0zz 000nnn asrd.z #ccc,Dn
|
||||
1110 ccc1zz 000nnn asld.z #ccc,Dn
|
||||
1110 ccc0zz 001nnn lsrd.z #ccc,Dn
|
||||
1110 ccc1zz 001nnn lsld.z #ccc,Dn
|
||||
1110 ccc0zz 010nnn roxrd.z #ccc,Dn
|
||||
1110 ccc1zz 010nnn roxld.z #ccc,Dn
|
||||
1110 ccc0zz 011nnn rord.z #ccc,Dn
|
||||
1110 ccc1zz 011nnn rold.z #ccc,Dn
|
||||
|
||||
1110 ccc0zz 100nnn asrd.z Dc,Dn
|
||||
1110 ccc1zz 100nnn asld.z Dc,Dn
|
||||
1110 ccc0zz 101nnn lsrd.z Dc,Dn
|
||||
1110 ccc1zz 101nnn lsld.z Dc,Dn
|
||||
1110 ccc0zz 110nnn roxrd.z Dc,Dn
|
||||
1110 ccc1zz 110nnn roxld.z Dc,Dn
|
||||
1110 ccc0zz 111nnn rord.z Dc,Dn
|
||||
1110 ccc1zz 111nnn rold.z Dc,Dn
|
||||
|
||||
1110 000011 aaaaaa asrd a
|
||||
1110 000111 aaaaaa asld a
|
||||
1110 001011 aaaaaa lsrd a
|
||||
1110 001111 aaaaaa lsld a
|
||||
1110 010011 aaaaaa roxrd a
|
||||
1110 010111 aaaaaa roxld a
|
||||
1110 011011 aaaaaa rord a
|
||||
1110 011111 aaaaaa rold a
|
||||
|
||||
1110 100011 aaaaaa 0000dooo oofwwwww bftst a[offs:wid] (020)
|
||||
1110 100111 aaaaaa 0nnndooo oofwwwww bfextu a[offs:wid],Dn (020)
|
||||
1110 101011 aaaaaa 0000dooo oofwwwww bfchg a[offs:wid] (020)
|
||||
1110 101111 aaaaaa 0nnndooo oofwwwww bfexts a[offs:wid],Dn (020)
|
||||
1110 110011 aaaaaa 0000dooo oofwwwww bfclr a[offs:wid] (020)
|
||||
1110 110111 aaaaaa 0nnndooo oofwwwww bfffo a[offs:wid],Dn (020)
|
||||
1110 111011 aaaaaa 0000dooo oofwwwww bfset a[offs:wid] (020)
|
||||
1110 111111 aaaaaa 0nnndooo oofwwwww bfins Dn,a[offs:wid] (020)
|
||||
|
||||
1111 000000 aaaaaa 0000100f 00000000 pmove[fd] a,tt0 (030,sup)
|
||||
1111 000000 aaaaaa 0000110f 00000000 pmove[fd] a,tt1 (030,sup)
|
||||
1111 000000 aaaaaa 0000101f 00000000 pmove tt0,a (030,sup)
|
||||
1111 000000 aaaaaa 0000111f 00000000 pmove tt1,a (030,sup)
|
||||
|
||||
1111 000000 aaaaaa 001000r0 000fffff pload fc,a (851,030,sup)
|
||||
|
||||
1111 000000 aaaaaa 00100100 mmmfffff pflusha (851,sup)
|
||||
1111 000000 aaaaaa 00110000 mmmfffff pflush fc,#mask (851,sup)
|
||||
1111 000000 aaaaaa 00111000 mmmfffff pflush fc,#mask,a (851,sup)
|
||||
|
||||
1111 000000 aaaaaa 0100000f 00000000 pmove[fd] a,tc (030,sup)
|
||||
1111 000000 aaaaaa 0100100f 00000000 pmove[fd] a,srp (030,sup)
|
||||
1111 000000 aaaaaa 0100110f 00000000 pmove[fd] a,crp (030,sup)
|
||||
1111 000000 aaaaaa 0100001f 00000000 pmove tc,a (030,sup)
|
||||
1111 000000 aaaaaa 0100101f 00000000 pmove srp,a (030,sup)
|
||||
1111 000000 aaaaaa 0100111f 00000000 pmove crp,a (030,sup)
|
||||
|
||||
1111 000000 aaaaaa 01000000 00000000 pmove a,tc (851,sup)
|
||||
1111 000000 aaaaaa 01000100 00000000 pmove a,drp (851,sup)
|
||||
1111 000000 aaaaaa 01001000 00000000 pmove a,srp (851,sup)
|
||||
1111 000000 aaaaaa 01001100 00000000 pmove a,crp (851,sup)
|
||||
1111 000000 aaaaaa 01010000 00000000 pmove a,cal (851,sup)
|
||||
1111 000000 aaaaaa 01010100 00000000 pmove a,val (851,sup)
|
||||
1111 000000 aaaaaa 01011000 00000000 pmove a,scc (851,sup)
|
||||
1111 000000 aaaaaa 01011100 00000000 pmove a,ac (851,sup)
|
||||
1111 000000 aaaaaa 01000010 00000000 pmove tc,a (851,sup)
|
||||
1111 000000 aaaaaa 01000110 00000000 pmove drp,a (851,sup)
|
||||
1111 000000 aaaaaa 01001010 00000000 pmove srp,a (851,sup)
|
||||
1111 000000 aaaaaa 01001110 00000000 pmove crp,a (851,sup)
|
||||
1111 000000 aaaaaa 01010010 00000000 pmove cal,a (851,sup)
|
||||
1111 000000 aaaaaa 01010110 00000000 pmove val,a (851,sup)
|
||||
1111 000000 aaaaaa 01011010 00000000 pmove scc,a (851,sup)
|
||||
1111 000000 aaaaaa 01011110 00000000 pmove ac,a (851,sup)
|
||||
|
||||
1111 000000 aaaaaa 01100000 00000000 pmove a,mmusr (030,sup)
|
||||
1111 000000 aaaaaa 01100010 00000000 pmove mmusr,a (030,sup)
|
||||
|
||||
1111 000000 aaaaaa 100lll00 000fffff ptestw fc,a,#level (851,030,sup)
|
||||
1111 000000 aaaaaa 100lll10 000fffff ptestr fc,a,#level (851,030,sup)
|
||||
1111 000000 aaaaaa 100lll01 rrrfffff ptestw fc,a,#level,An (851,030,sup)
|
||||
1111 000000 aaaaaa 100lll11 rrrfffff ptestr fc,a,#level,An (851,030,sup)
|
||||
|
||||
1111 000000 aaaaaa 10100000 00000000 pflushr a (851,sup)
|
||||
|
||||
1111 000001 001nnn 00000000 00cccccc pdbCC.w Dn,label (851,sup)
|
||||
1111 000001 aaaaaa 00000000 00cccccc psCC (851,sup)
|
||||
1111 00001z cccccc w [w] pbCC.z label (851,sup)
|
||||
1111 000100 aaaaaa psave a (851,sup)
|
||||
1111 000101 aaaaaa prestore a (851,sup)
|
||||
|
||||
1111 001000 aaaaaa 011nnnmmm kkkkkkk fmove.p fpm,a{,Dn|#k} (88x,040)
|
||||
|
||||
1111 010000 000nnn pflushn (An) (040,sup)
|
||||
1111 010000 001nnn pflush (An) (040,sup)
|
||||
1111 010000 010nnn pflushan (040,sup)
|
||||
1111 010000 011nnn pflusha (040,sup)
|
||||
|
||||
1111 0100cc 001nnn cinvl caches,(An) (sup,040)
|
||||
1111 0100cc 010nnn cinvp caches,(An) (sup,040)
|
||||
1111 0100cc 011nnn cinva caches (sup,040)
|
||||
1111 0100cc 101nnn cpushl caches,(An) (sup,040)
|
||||
1111 0100cc 110nnn cpushp caches,(An) (sup,040)
|
||||
1111 0100cc 111nnn cpusha caches (sup,040)
|
||||
|
||||
1111 010101 001nnn ptestw An (040,sup)
|
||||
1111 010101 101nnn ptestr An (040,sup)
|
||||
|
||||
1111 100000 000000 00000001 11000000 lpstop #data (cpu32)
|
||||
|
||||
1111 100000 000mmm 0xxx0000 zz000yyy tblu.z Dym:Dyn,Dx
|
||||
1111 100000 000mmm 0xxx0100 zz000yyy tblun.z Dym:Dyn,Dx
|
||||
1111 100000 aaaaaa 0xxx0001 zz000000 tblu.z a,Dx
|
||||
1111 100000 aaaaaa 0xxx0101 zz000000 tblun.z a,Dx
|
||||
1111 100000 000mmm 0xxx1000 zz000yyy tbls.z Dym:Dyn,Dx
|
||||
1111 100000 000mmm 0xxx1100 zz000yyy tblsn.z Dym:Dyn,Dx
|
||||
1111 100000 aaaaaa 0xxx1001 zz000000 tbls.z a,Dx
|
||||
1111 100000 aaaaaa 0xxx1101 zz000000 tblsn.z a,Dx
|
||||
|
||||
1111 100001 111010 00000000 00cccccc ptrapCC #oper.w (851)
|
||||
1111 100001 111011 00000000 00cccccc ptrapCC #oper.l (851)
|
||||
1111 100001 111100 00000000 00cccccc ptrapCC (851)
|
||||
|
||||
1111 ccc000 aaaaaa CPgen a,user-defined (020)
|
||||
1111 ccc001 aaaaaa 00000000 00cccccc CPsCC (020)
|
||||
1111 ccc001 001nnn 00000000 00cccccc CPdbCC Dn,disp16 (020)
|
||||
1111 ccc001 111010 00000000 00cccccc CPtrapCC #oper.w (020)
|
||||
1111 ccc001 111011 00000000 00cccccc CPtrapCC #oper.l (020)
|
||||
1111 ccc001 111100 00000000 00cccccc CPtrapCC (020)
|
||||
1111 ccc01z cccccc dddddddd dddddddd CPbCC.z disp16 (020)
|
||||
1111 ccc100 aaaaaa CPsave a (020,sup)
|
||||
1111 ccc101 aaaaaa CPrestore a (020,sup)
|
||||
|
||||
1111 ccc000 000000 010111nnn rrrrrrr fmovecr.l #ccc,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0000001 fint.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0000010 fsinh.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0000011 fintrz.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0000110 flognp1.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0001001 ftanh.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0001010 fatan.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0001100 fasin.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0001101 fatanh.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0001110 fsin.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0001111 ftan.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0010000 fetox.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0010001 ftwotox.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0010010 ftentox.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0010100 flogn.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0010101 flog10.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0010110 flog2.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0011001 fcosh.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0011100 facos.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0011101 fcos.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0011110 fgetexp.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0011111 fgetman.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0100001 fmod.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0100100 fsgldiv.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0100101 frem.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0100110 fscale.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0100111 fsglmul.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmsss 0110ccc fsincos.z fpm/a,fpc:fps (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0111000 fcmp.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn 0111010 ftst.z fpm/a (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn g???d?? fabs.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn g000d00 fmove.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn g000d0x fsqrt.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn g011d10 fneg.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn g100d00 fdiv.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn g100d10 fadd.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn g100d11 fmul.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 0r0mmmnnn g101d00 fsub.z fpm/a,fpn (88x,040)
|
||||
1111 ccc000 aaaaaa 100001000 0000000 fmove.l a,fpiar (88x,040)
|
||||
1111 ccc000 aaaaaa 100010000 0000000 fmove.l a,fpsr (88x,040)
|
||||
1111 ccc000 aaaaaa 100100000 0000000 fmove.l a,fpcr (88x,040)
|
||||
1111 ccc000 aaaaaa 100csi00 00000000 fmovem.z a,list (88x,040)
|
||||
1111 ccc000 aaaaaa 101001000 0000000 fmove.l fpiar,a (88x,040)
|
||||
1111 ccc000 aaaaaa 101010000 0000000 fmove.l fpsr,a (88x,040)
|
||||
1111 ccc000 aaaaaa 101100000 0000000 fmove.l fpcr,a (88x,040)
|
||||
1111 ccc000 aaaaaa 101csi00 00000000 fmovem.z list,a (88x,040)
|
||||
1111 ccc000 aaaaaa 110m0000 rrrrrrrr fmovem.z a,list (88x,040)
|
||||
1111 ccc000 aaaaaa 110m1000 0nnn0000 fmovem.z a,Dn (88x,040)
|
||||
1111 ccc000 aaaaaa 111m0000 rrrrrrrr fmovem.z list,a (88x,040)
|
||||
1111 ccc000 aaaaaa 111m1000 0mmm0000 fmovem.z Dm,a (88x,040)
|
||||
1111 ccc001 001nnn 00000000 00cccccc fdbCC.z Dn,disp16 (88x,040)
|
||||
1111 ccc001 111010 00000000 00cccccc ftrapCC #oper.w (88x,040)
|
||||
1111 ccc001 111011 00000000 00cccccc ftrapCC #oper.l (88x,040)
|
||||
1111 ccc001 111100 00000000 00cccccc ftrapCC (88x,040)
|
||||
1111 ccc001 aaaaaa 00000000 00cccccc fsCC.b (88x,040)
|
||||
1111 ccc010 000000 00000000 00000000 fnop (88x,040)
|
||||
1111 ccc01z cccccc dddddddd dddddddd fbCC.z disp16 (88x,040)
|
||||
1111 ccc100 aaaaaa fsave a (88x,040,sup)
|
||||
1111 ccc101 aaaaaa frestore a (88x,040,sup)
|
||||
|
||||
coprocessor primitives (020)
|
||||
|
||||
1p100100 00000000 busy
|
||||
cpd00001 llllllll transfer multiple coprocessor registers
|
||||
cpd0001s 00000000 transfer status register and scanpc
|
||||
1p000100 00000000 supervisor check
|
||||
cpd00110 00000000 transfer multiple processor registers
|
||||
cp000111 00000000 transfer operation word
|
||||
cp00100i 000000ft null
|
||||
cp001010 00000000 evaluate and transfer effective address
|
||||
cpd01100 0000nnnn transfer single main processor register
|
||||
cpd01101 00000000 transfer main processor control register
|
||||
cpd1110l llllllll transfer to/from top of stack
|
||||
cp001111 llllllll transfer from instruction stream
|
||||
cpd10aaa llllllll evaluate effective address and transfer data
|
||||
0p011101 vvvvvvvv take mid-instruction exception
|
||||
0p011110 vvvvvvvv take post-instruction exception
|
||||
cp100000 llllllll write to previously evaluated effective address
|
||||
|
||||
subfields:
|
||||
|
||||
ddd data3 (1..8)
|
||||
zz 00=b, 01=w, 10=l
|
||||
ss 01=b, 10=w, 11=l
|
||||
z 0=w, 1=l
|
||||
s 0=l, 1=w
|
||||
llllllll if $00 -> 16 bits label follows
|
||||
llllllll if $ff -> 32 bits label follows (020)
|
||||
d bitfields: 0 offset is imm, 1 offs = Dr
|
||||
f bitfields: 0 width is imm, 1 width = Dr
|
||||
|
||||
addressing modes (aaaaaa):
|
||||
|
||||
000 nnn Dn
|
||||
001 nnn An
|
||||
010 nnn (An)
|
||||
011 nnn (An)+
|
||||
100 nnn -(An)
|
||||
101 nnn dddddddd dddddddd (d16,An)
|
||||
110 nnn iiiiz000 dddddddd (d8,An,Ri.z)
|
||||
iiiizss0 dddddddd (d8,An,Ri.z*scale) (020)
|
||||
iiiizss1 bfxx0iii (bd,An,Ri.z*scale) (020)
|
||||
1 1 = base register suppressed
|
||||
1 1 = index operand suppressed
|
||||
xx base disp size (01=null disp, 10=word, 11=long)
|
||||
0 000 ( bd,An,Ri.z*scale )
|
||||
0 001 ([bd,An,Ri.z*scale] )
|
||||
0 010 ([bd,An,Ri.z*scale],od.w)
|
||||
0 011 ([bd,An,Ri.z*scale],od.l)
|
||||
0 100 reserved
|
||||
0 101 ([bd,An],Ri.z*scale )
|
||||
0 110 ([bd,An],Ri.z*scale,od.w)
|
||||
0 111 ([bd,An],Ri.z*scale,od.l)
|
||||
1 000 ( bd,An )
|
||||
1 001 ([bd,An] )
|
||||
1 010 ([bd,An] ,od.w)
|
||||
1 011 ([bd,An] ,od.l)
|
||||
111 000 dddddddd dddddddd addr16
|
||||
111 001 longword addr32
|
||||
111 010 dddddddd dddddddd d16(PC)
|
||||
111 011 iiiiz000 dddddddd d8(PC,ix)
|
||||
iiiizss0 dddddddd d8(PC,ix*scale) (020)
|
||||
iiiizss1 bfxx0iii d8(PC,ix*scale) (020)
|
||||
111 100 imm/implied
|
||||
|
||||
flags:
|
||||
|
||||
0000 t allways
|
||||
0001 f never
|
||||
0010 hi
|
||||
0011 ls
|
||||
0100 cc
|
||||
0101 cs
|
||||
0110 ne
|
||||
0111 eq
|
||||
1000 vc
|
||||
1001 vs
|
||||
1010 pl
|
||||
1011 mi
|
||||
1100 ge
|
||||
1101 lt
|
||||
1110 gt
|
||||
1111 le
|
||||
|
||||
|
BIN
M68000/MC68000/68000 opcodes.pdf
Normal file
BIN
M68000/MC68000/68000 opcodes.pdf
Normal file
Binary file not shown.
194
M68000/MC68000/68000abc.txt
Normal file
194
M68000/MC68000/68000abc.txt
Normal file
@ -0,0 +1,194 @@
|
||||
68000abc.txt
|
||||
Instruction set of the 68000 in alphabetical order
|
||||
1988/wjvg
|
||||
|
||||
0 2 3 4 5
|
||||
abcd Ds,Dd 1100 ddd100 000sss
|
||||
abcd -(As),-(Ad) 1100 ddd100 001sss
|
||||
|
||||
add.z a,Dd 1101 ddd0zz aaaaaa
|
||||
add.z Ds,a 1101 sss1zz aaaaaa
|
||||
adda.z a,Ad 1101 dddz11 aaaaaa
|
||||
addi.z #kz,a 0000 0110zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
||||
addq.z #k3,a 0101 kkk0zz aaaaaa
|
||||
addx.z Ds,Dd 1101 ddd1zz 000sss
|
||||
addx.z -(As),-(Ad) 1101 ddd1zz 001sss
|
||||
|
||||
and.z a,Dd 1100 ddd0zz aaaaaa
|
||||
and.z Ds,a 1100 sss1zz aaaaaa
|
||||
andi.z #kz,a 0000 0010zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
||||
|
||||
asld.z Ds,Dd 1110 sss1zz 100ddd
|
||||
asld.z #k,Dd 1110 kkk1zz 000ddd
|
||||
asld.w #1,a 1110 000111 aaaaaa
|
||||
|
||||
asrd.z Ds,Dd 1110 sss0zz 100ddd
|
||||
asrd.z #k,Dd 1110 kkk0zz 000ddd
|
||||
asrd.w #1,a 1110 000011 aaaaaa
|
||||
|
||||
bcc label 0110 ccccll llllll if zero, a 16bit address follows
|
||||
|
||||
bra label 0110 0000ll llllll if zero, a 16bit address follows
|
||||
bsr label 0110 0001ll llllll if zero, a 16bit address follows
|
||||
|
||||
bchg #n,a 0000 100001 aaaaaa 00000000 000nnnnn
|
||||
bchg Ds,a 0000 sss101 aaaaaa
|
||||
bclr #n,a 0000 100010 aaaaaa 00000000 000nnnnn
|
||||
bclr Ds,a 0000 sss110 aaaaaa
|
||||
bset #n,a 0000 100011 aaaaaa 00000000 000nnnnn
|
||||
bset Ds,a 0000 sss111 aaaaaa
|
||||
btst #n,a 0000 100000 aaaaaa 00000000 000nnnnn
|
||||
btst Ds,a 0000 sss100 aaaaaa
|
||||
|
||||
chk.w a,Dd 0100 ddd110 aaaaaa
|
||||
clr.z a 0100 0010zz aaaaaa
|
||||
|
||||
cmp.z a,Dd 1011 ddd0zz aaaaaa
|
||||
cmpa.z a,Ad 1011 dddz11 aaaaaa
|
||||
cmpi.z #kz,a 0000 1100zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
||||
|
||||
cmpm.z Ds,Dd 1011 ddd1zz 000sss
|
||||
cmpm.z (As)+,(Ad)+ 1011 ddd1zz 001sss
|
||||
|
||||
db(cc) Ds,label 0101 cccc11 001sss llllllll llllllll
|
||||
|
||||
divs.w a,Dd 1000 ddd111 aaaaaa
|
||||
divu.w a,Dd 1000 ddd011 aaaaaa
|
||||
|
||||
eor.z a,Dd 1011 ddd1zz aaaaaa
|
||||
eori.z #kz,a 0000 1010zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
||||
|
||||
exg.l As,Ad 1100 ddd101 001sss
|
||||
exg.l Ds,Dd 1100 ddd101 000sss
|
||||
exg.l As,Dd 1100 ddd110 001sss
|
||||
ext.z Dd 0100 10001z 000ddd
|
||||
|
||||
jmp a 0100 111011 aaaaaa
|
||||
jsr a 0100 111010 aaaaaa
|
||||
|
||||
lea a,Ad 0100 ddd111 aaaaaa
|
||||
link As,d16 0100 111001 010sss dddddddd dddddddd
|
||||
|
||||
lsld.z Ds,Dd 1110 sss1zz 101ddd
|
||||
lsld.z #k,Dd 1110 kkk1zz 001ddd
|
||||
lsld.w #1,a 1110 001111 aaaaaa
|
||||
lsrd.z Ds,Dd 1110 sss0zz 101ddd
|
||||
lsrd.z #k,Dd 1110 kkk0zz 001ddd
|
||||
lsrd.w #1,a 1110 001011 aaaaaa
|
||||
|
||||
move SR,a 0100 000011 aaaaaa
|
||||
move a,CCR 0100 010011 aaaaaa
|
||||
move a,SR 0100 011011 aaaaaa
|
||||
move As,USP 0100 111001 100sss
|
||||
move USP,Ad 0100 111001 101ddd
|
||||
move.b as,ad 0001 dddddd ssssss (dddddd reversed)
|
||||
move.l as,ad 0010 dddddd ssssss (dddddd reversed)
|
||||
move.w as,ad 0011 dddddd ssssss (dddddd reversed)
|
||||
|
||||
movem.z a,reg-list 0100 11001z aaaaaa a6543210 d6543210
|
||||
movem.z reg-list,a 0100 10001z aaaaaa a6543210 d6543210
|
||||
movep.z Ds,d16(Ad) 0000 sss11z 001ddd dddddddd dddddddd
|
||||
movep.z d16(As),Dd 0000 ddd10z 001sss dddddddd dddddddd
|
||||
|
||||
moveq.l #k8,Dd 0111 ddd0kk kkkkkk
|
||||
|
||||
muls.w a,Dd 1100 ddd111 aaaaaa
|
||||
mulu.w a,Dd 1100 ddd011 aaaaaa
|
||||
|
||||
nbcd a 0100 100000 aaaaaa
|
||||
|
||||
neg.z a 0100 0100zz aaaaaa
|
||||
negx.z a 0100 0000zz aaaaaa
|
||||
|
||||
nop 0100 111001 110001
|
||||
not.z a 0100 0110zz aaaaaa
|
||||
|
||||
or.z a,Dd 1000 ddd0zz aaaaaa
|
||||
or.z Ds,a 1000 sss1zz aaaaaa
|
||||
ori.z #kz,a 0000 0000zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
||||
|
||||
pea a 0100 100001 aaaaaa
|
||||
reset 0100 111001 110000
|
||||
|
||||
rold.z Ds,Dd 1110 sss1zz 111ddd
|
||||
rold.z #k,Dd 1110 kkk1zz 011ddd
|
||||
rold.w #1,a 1110 011111 aaaaaa
|
||||
rord.z Ds,Dd 1110 sss0zz 111ddd
|
||||
rord.z #k,Dd 1110 kkk0zz 011ddd
|
||||
rord.w #1,a 1110 011011 aaaaaa
|
||||
|
||||
roxld.z Ds,Dd 1110 sss1zz 110ddd
|
||||
roxld.z #k,Dd 1110 kkk1zz 010ddd
|
||||
roxld.w #1,a 1110 010111 aaaaaa
|
||||
roxrd.z Ds,Dd 1110 sss0zz 110ddd
|
||||
roxrd.z #k,Dd 1110 kkk0zz 010ddd
|
||||
roxrd.w #1,a 1110 010011 aaaaaa
|
||||
|
||||
rte 0100 111001 110011
|
||||
rtr 0100 111001 110111
|
||||
rts 0100 111001 110101
|
||||
|
||||
sbcd Ds,Dd 1000 ddd100 000sss
|
||||
sbcd -(As),-(Ad) 1000 ddd100 001sss
|
||||
stcc.b a 0101 cccc11 aaaaaa
|
||||
stop #k16 0100 111001 110010 kkkkkkkk kkkkkkkk
|
||||
|
||||
sub.z Ds,a 1001 sss1zz aaaaaa
|
||||
sub.z a,Dd 1001 ddd0zz aaaaaa
|
||||
subi.z #kz,a 0000 0100zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
||||
suba.z a,Ad 1001 dddz11 aaaaaa
|
||||
subq.z #k3,a 0101 kkk1zz aaaaaa
|
||||
subx.z Ds,Dd 1001 ddd1zz 000sss
|
||||
subx.z -(As),-(Ad) 1001 ddd1zz 001sss
|
||||
|
||||
swap.w Dd 0100 100001 000ddd
|
||||
tas.b a 0100 101011 aaaaaa
|
||||
trap vector 0100 111001 00vvvv
|
||||
trapv 0100 111001 110110
|
||||
tst.z a 0100 1010zz aaaaaa
|
||||
|
||||
unlk Ad 0100 111001 011ddd
|
||||
|
||||
general subfields
|
||||
|
||||
zz 00=b, 01=w, 10=l
|
||||
z 0=w, 1=l
|
||||
kkk immediate data in addq etc.: 0==8
|
||||
immediate data in movq is sign extended to 32bits
|
||||
shift count also represents 1..8 (how?)
|
||||
|
||||
addresssing modes (aaaaaa):
|
||||
|
||||
000 rrr Dr
|
||||
001 rrr Ar
|
||||
010 rrr (Ar)
|
||||
011 rrr (Ar)+
|
||||
100 rrr -(Ar)
|
||||
101 rrr d16(Ar) dddddddd dddddddd
|
||||
110 rrr d8(Ar,ix) aiiiz000 dddddddd
|
||||
111 000 addr16 dddddddd dddddddd
|
||||
111 001 addr32 dddddddd dddddddd ddddddddd dddddddd
|
||||
111 010 d16(PC) dddddddd dddddddd
|
||||
111 011 d8(PC,ix) aiiiz000 dddddddd
|
||||
111 100 imm/implied
|
||||
|
||||
flags:
|
||||
|
||||
0000 t allways or bra ipv btr
|
||||
0001 f never or bsr ipv bnv
|
||||
0010 hi
|
||||
0011 ls
|
||||
0100 cc
|
||||
0101 cs
|
||||
0110 ne
|
||||
0111 eq
|
||||
1000 vc
|
||||
1001 vs
|
||||
1010 pl
|
||||
1011 mi
|
||||
1100 ge
|
||||
1101 lt
|
||||
1110 gt
|
||||
1111 le
|
||||
|
||||
|
179
M68000/MC68000/68000bin.txt
Normal file
179
M68000/MC68000/68000bin.txt
Normal file
@ -0,0 +1,179 @@
|
||||
68000bin.txt
|
||||
Instruction set of the 68000 in binary order
|
||||
1988/wjvg
|
||||
|
||||
0 2 3 4 5
|
||||
0000 0000zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk ori.z #kz,a
|
||||
0000 0010zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk andi.z #kz,a
|
||||
0000 0100zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk subi.z #kz,a
|
||||
0000 0110zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk addi.z #kz,a
|
||||
0000 1010zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk eori.z #kz,a
|
||||
0000 1100zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk cmpi.z #kz,a
|
||||
|
||||
0000 100000 aaaaaa 00000000 000nnnnn btst #n,a
|
||||
0000 100001 aaaaaa 00000000 000nnnnn bchg #n,a
|
||||
0000 100010 aaaaaa 00000000 000nnnnn bclr #n,a
|
||||
0000 100011 aaaaaa 00000000 000nnnnn bset #n,a
|
||||
|
||||
0000 sss100 aaaaaa btst Ds,a
|
||||
0000 sss101 aaaaaa bchg Ds,a
|
||||
0000 sss110 aaaaaa bclr Ds,a
|
||||
0000 sss111 aaaaaa bset Ds,a
|
||||
|
||||
0000 ddd10z 001sss dddddddd dddddddd movep.z d16(As),Dd
|
||||
0000 sss11z 001ddd dddddddd dddddddd movep.z Ds,d16(Ad)
|
||||
|
||||
0001 dddddd ssssss (dddddd reversed) move.b as,ad
|
||||
0010 dddddd ssssss (dddddd reversed) move.l as,ad
|
||||
0011 dddddd ssssss (dddddd reversed) move.w as,ad
|
||||
|
||||
0100 0000zz aaaaaa negx.z a
|
||||
0100 000011 aaaaaa move SR,a
|
||||
0100 0010zz aaaaaa clr.z a
|
||||
0100 0100zz aaaaaa neg.z a
|
||||
0100 010011 aaaaaa move a,CCR
|
||||
0100 0110zz aaaaaa not.z a
|
||||
0100 011011 aaaaaa move a,SR
|
||||
|
||||
0100 100000 aaaaaa nbcd a
|
||||
0100 100001 000ddd swap.w Dd
|
||||
0100 100001 aaaaaa pea a
|
||||
0100 10001z 000ddd ext.z Dd
|
||||
0100 10001z aaaaaa a6543210 d6543210 movem.z reg-list,a
|
||||
0100 1010zz aaaaaa tst.z a
|
||||
0100 101011 aaaaaa tas.b a
|
||||
0100 11001z aaaaaa a6543210 d6543210 movem.z a,reg-list
|
||||
0100 111001 00vvvv trap #vector
|
||||
0100 111001 010sss dddddddd dddddddd link As,#k16
|
||||
0100 111001 011ddd unlk Ad
|
||||
0100 111001 100sss move As,USP
|
||||
0100 111001 101ddd move USP,Ad
|
||||
0100 111001 110000 reset
|
||||
0100 111001 110001 nop
|
||||
0100 111001 110010 kkkkkkkk kkkkkkkk stop #k16
|
||||
0100 111001 110011 rte
|
||||
0100 111001 110101 rts
|
||||
0100 111001 110110 trapv
|
||||
0100 111001 110111 rtr
|
||||
0100 111010 aaaaaa jsr a
|
||||
0100 111011 aaaaaa jmp a
|
||||
|
||||
0100 ddd110 aaaaaa chk.w a,Dd
|
||||
0100 ddd111 aaaaaa lea a,Ad
|
||||
|
||||
0101 cccc11 001sss llllllll llllllll db(cc) Ds,label
|
||||
0101 cccc11 aaaaaa stcc.b a
|
||||
0101 kkk0zz aaaaaa addq.z #k3,a
|
||||
0101 kkk1zz aaaaaa subq.z #k3,a
|
||||
0110 0000ll llllll if zero, a 16bit address follows bra label
|
||||
0110 0001ll llllll if zero, a 16bit address follows bsr label
|
||||
0110 ccccll llllll if zero, a 16bit address follows bcc label
|
||||
0111 ddd0kk kkkkkk moveq.l #k8,Dd
|
||||
|
||||
1000 ddd0zz aaaaaa or.z a,Dd
|
||||
1000 ddd011 aaaaaa divu.w a,Dd
|
||||
1000 ddd100 000sss sbcd Ds,Dd
|
||||
1000 ddd100 001sss sbcd -(As),-(Ad)
|
||||
1000 sss1zz aaaaaa or.z Ds,a
|
||||
1000 ddd111 aaaaaa divs.w a,Dd
|
||||
|
||||
1001 ddd0zz aaaaaa sub.z a,Dd
|
||||
1001 ddd1zz 000sss subx.z Ds,Dd
|
||||
1001 ddd1zz 001sss subx.z -(As),-(Ad)
|
||||
1001 sss1zz aaaaaa sub.z Ds,a
|
||||
1001 dddz11 aaaaaa suba.z a,Ad
|
||||
|
||||
1011 ddd0zz aaaaaa cmp.z a,Dd
|
||||
1011 ddd1zz 000sss cmpm.z Ds,Dd
|
||||
1011 ddd1zz 001sss cmpm.z (As)+,(Ad)+
|
||||
1011 ddd1zz aaaaaa eor.z a,Dd
|
||||
1011 dddz11 aaaaaa cmpa.z a,Ad
|
||||
|
||||
1100 ddd0zz aaaaaa and.z a,Dd
|
||||
1100 ddd011 aaaaaa mulu.w a,Dd
|
||||
1100 ddd100 000sss abcd Ds,Dd
|
||||
1100 ddd101 000sss exg.l Ds,Dd
|
||||
1100 ddd100 001sss abcd -(As),-(Ad)
|
||||
1100 ddd101 001sss exg.l As,Ad
|
||||
1100 ddd110 001sss exg.l As,Dd
|
||||
1100 sss1zz aaaaaa and.z Ds,a
|
||||
1100 ddd111 aaaaaa muls.w a,Dd
|
||||
|
||||
1101 ddd0zz aaaaaa add.z a,Dd
|
||||
1101 ddd1zz 000sss addx.z Ds,Dd
|
||||
1101 ddd1zz 001sss addx.z -(As),-(Ad)
|
||||
1101 sss1zz aaaaaa add.z Ds,a
|
||||
1101 dddz11 aaaaaa adda.z a,Ad
|
||||
|
||||
1110 kkk0zz 000ddd asrd.z #k,Dd
|
||||
1110 kkk0zz 001ddd lsrd.z #k,Dd
|
||||
1110 kkk0zz 010ddd roxrd.z #k,Dd
|
||||
1110 kkk0zz 011ddd rord.z #k,Dd
|
||||
1110 kkk1zz 000ddd asld.z #k,Dd
|
||||
1110 kkk1zz 001ddd lsld.z #k,Dd
|
||||
1110 kkk1zz 010ddd roxld.z #k,Dd
|
||||
1110 kkk1zz 011ddd rold.z #k,Dd
|
||||
|
||||
1110 sss0zz 100ddd asrd.z Ds,Dd
|
||||
1110 sss0zz 101ddd lsrd.z Ds,Dd
|
||||
1110 sss0zz 110ddd roxrd.z Ds,Dd
|
||||
1110 sss0zz 111ddd rord.z Ds,Dd
|
||||
1110 sss1zz 100ddd asld.z Ds,Dd
|
||||
1110 sss1zz 101ddd lsld.z Ds,Dd
|
||||
1110 sss1zz 110ddd roxld.z Ds,Dd
|
||||
1110 sss1zz 111ddd rold.z Ds,Dd
|
||||
|
||||
1110 000011 aaaaaa asrd.w #1,a
|
||||
1110 000111 aaaaaa asld.w #1,a
|
||||
1110 001011 aaaaaa lsrd.w #1,a
|
||||
1110 001111 aaaaaa lsld.w #1,a
|
||||
1110 010011 aaaaaa roxrd.w #1,a
|
||||
1110 010111 aaaaaa roxld.w #1,a
|
||||
1110 011011 aaaaaa rord.w #1,a
|
||||
1110 011111 aaaaaa rold.w #1,a
|
||||
|
||||
general subfields
|
||||
|
||||
zz 00=b, 01=w, 10=l
|
||||
z 0=w, 1=l
|
||||
kkk immediate data in addq etc.: 0==8
|
||||
immediate data in movq is sign extended to 32bits
|
||||
shift count also represents 1..8 (how?)
|
||||
|
||||
addressing modes (aaaaaa):
|
||||
|
||||
000 rrr Dr
|
||||
001 rrr Ar
|
||||
010 rrr (Ar)
|
||||
011 rrr (Ar)+
|
||||
100 rrr -(Ar)
|
||||
101 rrr d16(Ar) dddddddd dddddddd
|
||||
110 rrr d8(Ar,ix) aiiiz000 dddddddd
|
||||
111 000 addr16 dddddddd dddddddd
|
||||
111 001 addr32 dddddddd dddddddd ddddddddd dddddddd
|
||||
111 010 d16(PC) dddddddd dddddddd
|
||||
111 011 d8(PC,ix) aiiiz000 dddddddd
|
||||
111 100 imm/implied
|
||||
|
||||
flags:
|
||||
|
||||
0000 t allways or bra ipv btr
|
||||
0001 f never or bsr ipv bnv
|
||||
0010 hi
|
||||
0011 ls
|
||||
0100 cc
|
||||
0101 cs
|
||||
0110 ne
|
||||
0111 eq
|
||||
1000 vc
|
||||
1001 vs
|
||||
1010 pl
|
||||
1011 mi
|
||||
1100 ge
|
||||
1101 lt
|
||||
1110 gt
|
||||
1111 le
|
||||
|
||||
*end
|
||||
|
||||
|
BIN
M68000/MC68000/M68000PRM.pdf
Normal file
BIN
M68000/MC68000/M68000PRM.pdf
Normal file
Binary file not shown.
11
M68000/MC68000/README.md
Normal file
11
M68000/MC68000/README.md
Normal file
@ -0,0 +1,11 @@
|
||||
This subfolder contains the documents and other stuff for Motorola-Freescale 68000 CPU.
|
||||
|
||||
[Main Wikipedia article on 68000](https://en.wikipedia.org/wiki/Motorola_68000)
|
||||
|
||||
| Files | Description | Source |
|
||||
| ----- | ----------- | ------ |
|
||||
| 68000 opcodes.pdf | 68000 Instruction Set in detail | URL not determined |
|
||||
| 68000bin.txt | 68000 instruction set in binary order | URL not determined |
|
||||
| manual.pdf | | |
|
||||
| 68000abc.txt | 68000 instruction set in alphabetic order | URL not determined |
|
||||
| M68000PRM.pdf | 68000 Programmer's Reference Manual | Believed to be obtained from Freescale website |
|
17
M68000/README.md
Normal file
17
M68000/README.md
Normal file
@ -0,0 +1,17 @@
|
||||
This subfolder contains the documents and other stuff for Motorola-Freescale 680x0 CPU family.
|
||||
|
||||
[Main Wikipedia article on this family](https://en.wikipedia.org/wiki/Motorola_68000_series)
|
||||
|
||||
| Subfolders | Description |
|
||||
| ---------- | ----------- |
|
||||
| MC68000 | 68000 manuals |
|
||||
| MC68020 | 68020 manuals |
|
||||
| MC68030 | 68030 manuals |
|
||||
| MC68040 | 68040 manuals |
|
||||
| MC68060 | 68060 manuals |
|
||||
|
||||
| Files | Description | Source |
|
||||
| ----- | ----------- | ------ |
|
||||
| 680x0bin.txt | Instruction set of the 680x0 in binary order | URL not determined |
|
||||
| architecture.pdf | | |
|
||||
| references.txt | | |
|
BIN
MC6809/Lomont_6809.pdf
Normal file
BIN
MC6809/Lomont_6809.pdf
Normal file
Binary file not shown.
BIN
MC6809/The 6309 Book.pdf
Normal file
BIN
MC6809/The 6309 Book.pdf
Normal file
Binary file not shown.
7
NS32000/README.md
Normal file
7
NS32000/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
This subfolder contains the documents and other stuff for National Semiconductor 32000 CPU family.
|
||||
|
||||
[Main Wikipedia article on NS 32000](https://en.wikipedia.org/wiki/NS320xx)
|
||||
|
||||
| Files | Description | Source |
|
||||
| ----- | ----------- | ------ |
|
||||
| NS32c032.pdf | National Semiconductor 32c032 manual | https://stuff.mit.edu/afs/sipb/contrib/doc/specs/ic/cpu/ns32c032.pdf |
|
BIN
NS32000/ns32c032.pdf
Normal file
BIN
NS32000/ns32c032.pdf
Normal file
Binary file not shown.
BIN
PDP-11/PDP_11_Handbook_1969.pdf
Normal file
BIN
PDP-11/PDP_11_Handbook_1969.pdf
Normal file
Binary file not shown.
8
PDP-11/README.md
Normal file
8
PDP-11/README.md
Normal file
@ -0,0 +1,8 @@
|
||||
This subfolder contains the documents and other stuff for DEC PDP-11 family.
|
||||
|
||||
[Main Wikipedia article on DEC PDP-11](https://en.wikipedia.org/wiki/PDP-11)
|
||||
|
||||
| Files | Description | Source |
|
||||
| ----- | ----------- | ------ |
|
||||
| PDP_11_Handbook_1969.pdf | PDP-11 Handbook | URL not determined |
|
||||
| The_PDP-11_FAQ.htm | PDP-11 FAQ | URL not determined |
|
369
PDP-11/The_PDP-11_FAQ.htm
Normal file
369
PDP-11/The_PDP-11_FAQ.htm
Normal file
@ -0,0 +1,369 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- saved from url=(0051)http://www.village.org/pdp11/faq.pages/PDPinst.html -->
|
||||
<HTML><HEAD><TITLE>The PDP-11 FAQ</TITLE>
|
||||
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
|
||||
<META content="MSHTML 6.00.2900.3059" name=GENERATOR></HEAD>
|
||||
<BODY>
|
||||
<H1><A name=PDPinst>What is the PDP-11 instruction set?</A></H1>
|
||||
<P>The instruction set of the PDP-11 was designed towards a clean, general,
|
||||
symmetric instruction set. It can be used as a register-based, stack-based, or
|
||||
memory-based machine, depending on the programmer's preferences. Interrupt
|
||||
responsiveness is also important, supported with multiple interrupt levels for
|
||||
real-time computing as well as allowing for a separate interrupt handler for
|
||||
each device that generates interrupts. </P>
|
||||
<P>Word length is 16 bits with the leftmost, most significant bit (MSB) being
|
||||
bit 15. There are eight general registers of 16 bits each. Register 7 is the
|
||||
program counter (PC) and, by convention, Register 6 is the stack pointer (SP).
|
||||
There is also a Processor Status Register/Word (PSW) which indicates the 4
|
||||
condition code bits (N, Z, V, C), the Trace Trap bit, processor interrupt
|
||||
priority, and 4 bits for current and previous operating modes. Addressing on the
|
||||
-11 is linear from memory address 0 through 177777. Memory management allows
|
||||
access to physical memory with addresses of up to 22 bits (17777777). All I/O
|
||||
devices, registers etc are addressed as if they were part of memory. These live
|
||||
in the 4KW of reserved memory space at the top of the addressing range.
|
||||
Additionally, on most implementations of the PDP-11 architecture, the
|
||||
processor's registers are memory-mapped to the range 17777700-17777717 (there
|
||||
are many control registers beyond just the general registers, the specifics vary
|
||||
between implementations). Thus Register 2 (R2) has an address of 17777702. All
|
||||
word memory addresses are even, except for registers. In byte operations, an
|
||||
even address specifies the least-significant byte and an odd address specifies
|
||||
the most-significant byte. Specifying an odd byte in a word operation will
|
||||
return an odd address trap. Memory addresses from 0 to 400 octal are reserved
|
||||
for various exception traps such as timeouts, reserved instructions, parity,
|
||||
etc., and device interrupts. </P>
|
||||
<P>Addressing for the Single Operand, Double Operand and Jump instructions is
|
||||
achieved via six bits: </P><PRE> _ _ _ _ _ _
|
||||
|x|x|x|_|_|_|
|
||||
|Mode |Reg |
|
||||
</PRE>
|
||||
<P>where the modes are as follows: (Reg = Register, Def = Deferred) </P><PRE> Mode 0 Reg Direct addressing of the register
|
||||
Mode 1 Reg Def Contents of Reg is the address
|
||||
Mode 2 AutoIncr Contents of Reg is the address, then Reg incremented
|
||||
Mode 3 AutoIncrDef Content of Reg is addr of addr, then Reg Incremented
|
||||
Mode 4 AutoDecr Reg is decremented then contents is address
|
||||
Mode 5 AutoDecrDef Reg is decremented then contents is addr of addr
|
||||
Mode 6 Index Contents of Reg + Following word is address
|
||||
Mode 7 IndexDef Contents of Reg + Following word is addr of addr
|
||||
</PRE>
|
||||
<P>Note that the right-most bit of the mode is an indirection bit.
|
||||
<P>Although not special cases, when dealing with R7 (aka the PC), some of these
|
||||
operations are called different things: </P><PRE> _ _ _ _ _ _
|
||||
|x|x|x|1|1|1|
|
||||
|Mode | R7 |
|
||||
|
||||
Mode 2 Immediate Operand follows the instruction
|
||||
Mode 3 Absolute Address of Operand follows the instruction
|
||||
Mode 6 Relative Instr address+4+Next word is Address
|
||||
Mode 7 RelativeDef Instr address+4+Next word is Address of address
|
||||
</PRE>
|
||||
<P>Mainstream instructions are broken into Single operand and Double operand
|
||||
instructions, which in turn can be word or byte instructions. </P>
|
||||
<H2>Double Operand Instructions</H2><PRE> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
|b|i|i|i|s|s|s|s|s|s|d|d|d|d|d|d|
|
||||
| | | : | : |
|
||||
| | Op | Source | Dest |
|
||||
</PRE>
|
||||
<P>Bit 15, b, generally selects between word-sized (b=0) and byte-sized (b=1)
|
||||
operands. In the table below, the mnemonics and names are given in the order
|
||||
b=0/b=1. </P>
|
||||
<P>The double operand instructions are: </P>
|
||||
<DL>
|
||||
<DT>b 000 ssssss dddddd
|
||||
<DD>Non-double-operand instructions.
|
||||
<P></P>
|
||||
<DT>b 001 ssssss dddddd -- MOV/MOVB <I>Move Word/Byte</I>
|
||||
<DD>Moves a value from source to destination.
|
||||
<P></P>
|
||||
<DT>b 010 ssssss dddddd -- CMP/CMPB <I>Compare Word/Byte</I>
|
||||
<DD>Compares values by subtracting the destination from the source, setting
|
||||
the condition codes, and then discarding the result of the subtraction.
|
||||
<P></P>
|
||||
<DT>b 011 ssssss dddddd -- BIT/BITB <I>Bit Test Word/Byte</I>
|
||||
<DD>Performs a bit-wise AND of the source and the destination, sets the
|
||||
condition codes, and then discards the result of the AND.
|
||||
<P></P>
|
||||
<DT>b 100 ssssss dddddd -- BIC/BICB <I>Bit Clear Word/Byte</I>
|
||||
<DD>For each bit set in the source, that bit is cleared in the destination.
|
||||
This is accomplished by taking the ones-complement of the source and ANDing it
|
||||
with the destination. The result of the AND is stored in the destination.
|
||||
<P></P>
|
||||
<DT>b 101 ssssss dddddd -- BIS/BISB <I>Bit Set Word/Byte</I>
|
||||
<DD>For each bit set in the source, that bit is set in the destination. This
|
||||
is accomplished by ORing the source and destination, and storing the result in
|
||||
the destination.
|
||||
<P></P>
|
||||
<DT>b 110 ssssss dddddd -- ADD/SUB <I>Add/Subtract Word</I>
|
||||
<DD>Adds the source and destination, storing the results in the destination.
|
||||
<P>Subtracts the source from the destination, storing the results in the
|
||||
destination.
|
||||
<P>Note that this is a special case for b=1, in that it does not indicate that
|
||||
byte-wide operands are used.
|
||||
<P></P>
|
||||
<DT>b 111 xxxxxx xxxxxx
|
||||
<DD>Arithmetic functions not supported by all implementations of the PDP-11
|
||||
architecture. </DD></DL>
|
||||
<H2>Single Operand Instructions</H2><PRE> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
|b|0|0|0|i|i|i|i|i|i|d|d|d|d|d|d|
|
||||
| | | : | : |
|
||||
| | |Instruction| Dest |
|
||||
</PRE>
|
||||
<P>Bit 15, b, generally selects between word-sized (b=0) and byte-sized (b=1)
|
||||
operands. In the table below, the mnemonics and names are given in the order
|
||||
b=0/b=1. Unless otherwise stated, the operand is read for the data to operate
|
||||
on, and the result is then written over that data. </P>
|
||||
<P>The single operand instructions are: </P>
|
||||
<DL>
|
||||
<DT>b 000 000 011 dddddd -- SWAB/BPL <I>Swap Bytes/Branch Plus</I>
|
||||
<DD>Swap bytes exchanges the two bytes found in the destination, writing the
|
||||
result back to it.
|
||||
<P>The branch (b=1) is described in the section on branches, below.
|
||||
<P>Note that SWAB is actually a bit pattern from the range reserved for
|
||||
branches. This particular pattern is otherwise unused, as it would be a
|
||||
modification of BR, Branch Always, which has no obvious semantics.
|
||||
<P></P>
|
||||
<DT>b 000 101 000 dddddd -- CLR/CLRB <I>Clear Word/Byte</I>
|
||||
<DD>Sets all the bits in destination to zero.
|
||||
<P></P>
|
||||
<DT>b 000 101 001 dddddd -- COM/COMB <I>Complement Word/Byte</I>
|
||||
<DD>Calculates the ones-complement of the operand, and stores it. The
|
||||
ones-complement is formed by inverting each bit (0->1, 1->0)
|
||||
independently.
|
||||
<P></P>
|
||||
<DT>b 000 010 010 dddddd -- INC/INCB <I>Increment Word/Byte</I>
|
||||
<DD>Adds one to the destination.
|
||||
<P></P>
|
||||
<DT>b 000 101 011 dddddd -- DEC/DECB <I>Decrement Word/Byte</I>
|
||||
<DD>Subtracts one from the destination.
|
||||
<P></P>
|
||||
<DT>b 000 101 100 dddddd -- NEG/NEGB <I>Negate Word/Byte</I>
|
||||
<DD>Calculates the twos-complement of the operand, and stores it. The
|
||||
twos-complement is formed by adding one to the ones-complement. The effect is
|
||||
the same as subtracting the operand from zero.
|
||||
<P></P>
|
||||
<DT>b 000 101 101 dddddd -- ADC/ADCB <I>Add Carry Word/Byte</I>
|
||||
<DD>Adds the current value of the carry flag to the destination. This is
|
||||
useful for implementing arithmetic subroutines with more than word-sized
|
||||
operands.
|
||||
<P></P>
|
||||
<DT>b 000 101 110 dddddd -- SBC/SBCB <I>Subtract Carry Word/Byte</I>
|
||||
<DD>Subtracts the current value of the carry flag from the destination. This
|
||||
is useful for implementing arithmetic subroutines with more than word-sized
|
||||
operands.
|
||||
<P></P>
|
||||
<DT>b 000 101 111 dddddd -- TST/TSTB <I>Test Word/Byte</I>
|
||||
<DD>Sets the N (negative) and Z (zero) condition codes based on the value of
|
||||
the operand.
|
||||
<P></P>
|
||||
<DT>b 000 110 000 dddddd -- ROR/RORB <I>Rotate Right Word/Byte</I>
|
||||
<DD>Rotates the bits of the operand one position to the right. The right-most
|
||||
bit is placed in the carry flag, and the carry flag is copied to the left-most
|
||||
bit (bit 15) of the operand.
|
||||
<P></P>
|
||||
<DT>b 000 110 001 dddddd -- ROL/ROLB <I>Rotate Left Word/Byte</I>
|
||||
<DD>Rotates the bits of the operand one position to the left. The left-most
|
||||
bit is placed in the carry flag, and the carry flag is copied to the
|
||||
right-most bit (bit 0) of the operand.
|
||||
<P></P>
|
||||
<DT>b 000 110 010 dddddd -- ASR/ASRB <I>Arithmetic Shift Right Word/Byte</I>
|
||||
<DD>Shifts the bits of the operand one position to the right. The left-most
|
||||
bit is duplicated. The effect is to perform a signed division by 2.
|
||||
<P></P>
|
||||
<DT>b 000 110 011 dddddd -- ASL/ASLB <I>Arithmetic Shift Left Word/Byte</I>
|
||||
<DD>Shifts the bits of the operand one position to the left. The right-most
|
||||
bit is set to zero. The effect is to perform a signed multiplication by 2.
|
||||
<P></P>
|
||||
<DT>b 000 110 100 dddddd -- MARK/MTPS <I>Mark/Move To Processor Status</I>
|
||||
<DD>Mark is used as part of one of the subroutine call/ return sequences. The
|
||||
operand is the number of parameters.
|
||||
<P>MTPS is only on LSI-11s, and is used to move a byte to the processor status
|
||||
word. This is needed because the LSI-11 does not support accessing registers
|
||||
via memory addresses.
|
||||
<P></P>
|
||||
<DT>b 000 110 101 dddddd -- MFPI/MFPD <I>Move From Prev. Instruction/Data</I>
|
||||
<DD>Pushes a word onto the current R6 stack from the operand address in the
|
||||
previous address space, as indicated in the PSW. On PDP-11s that do not
|
||||
support separate instruction and data spaces, MFPD is treated the same as
|
||||
MFPI.
|
||||
<P></P>
|
||||
<DT>b 000 110 110 dddddd -- MTPI/MTPD <I>Move To Previous Instruction/Data</I>
|
||||
|
||||
<DD>Pops a word from the current stack as indicated in the PSW to the operand
|
||||
address in the previous address space, as indicated in the PSW. On PDP-11s
|
||||
that do not support separate instruction and data spaces, MTPD is treated the
|
||||
same as MTPI.
|
||||
<P></P>
|
||||
<DT>b 000 110 111 dddddd -- SXT/MFPS <I>Sign Extend/Move From Processor
|
||||
Status</I>
|
||||
<DD>SXT sets the destination to zero if the N (negative) flag is clear, or to
|
||||
all ones if N is set. This is useful for implementing arithmetic subroutines
|
||||
with more than word-sized operands.
|
||||
<P>MFPS copies the processor status byte to the indicated register. This only
|
||||
exists on LSI-11s, and is needed there because those systems don't support
|
||||
accessing registers via memory addresses. </P></DD></DL>
|
||||
<H2>Branches</H2><PRE> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
|b|0|0|0|b|b|b|b|d|d|d|d|d|d|d|d|
|
||||
| Branch Code | Destination |
|
||||
</PRE>
|
||||
<P>The destination of a branch is +127 to -128 words from the word following the
|
||||
branch instruction itself. This seems slightly odd, until you realize the
|
||||
sequence of events: the branch instruction is read from memory and the PC
|
||||
incremented. If the branch is to be taken, the offset is then added to the
|
||||
current value of the PC. Since the PC has already been incremented, the offset
|
||||
is thus relative to the following word. Note that all branch instructions are
|
||||
one word long. </P>
|
||||
<P>The various branches test the values of specific condition codes, and if the
|
||||
tests succeed, the branch is taken. The condition codes are N (negative), Z
|
||||
(zero), C (carry), and V (overflow). In the table below, the branch tests are
|
||||
shown as boolean expressions. `x' stands for exclusive-OR. `v' stands for
|
||||
inclusive-OR. </P>
|
||||
<DL compact>
|
||||
<DT>0 000 000 1dd dddddd
|
||||
<DD>BR: Branch Always
|
||||
<DT>0 000 001 0dd dddddd
|
||||
<DD>BNE: Branch if Not Equal (Z==0)
|
||||
<DT>0 000 001 1dd dddddd
|
||||
<DD>BEQ: Branch if EQual (Z==1)
|
||||
<DT>0 000 010 0dd dddddd
|
||||
<DD>BGE: Branch if Greater or Equal (NxV == 0)
|
||||
<DT>0 000 010 1dd dddddd
|
||||
<DD>BLT: Branch if Less Than (NxV == 1)
|
||||
<DT>0 000 011 0dd dddddd
|
||||
<DD>BGT: Branch if Greater Than (Zv(NxV) == 0)
|
||||
<DT>0 000 011 1dd dddddd
|
||||
<DD>BLE: Branch if Less or Equal (Zv(NxV) == 1)
|
||||
<DT>1 000 000 0dd dddddd
|
||||
<DD>BPL: Branch if PLus (N == 0)
|
||||
<DT>1 000 000 1dd dddddd
|
||||
<DD>BMI: Branch if MInus (N == 1)
|
||||
<DT>1 000 001 0dd dddddd
|
||||
<DD>BHI: Branch if HIgher (C==0 and Z==0)
|
||||
<DT>1 000 001 1dd dddddd
|
||||
<DD>BLOS: Branch if Lower Or Same (CvZ == 1)
|
||||
<DT>1 000 010 0dd dddddd
|
||||
<DD>BVC: Branch if oVerflow Clear (V == 0)
|
||||
<DT>1 000 010 1dd dddddd
|
||||
<DD>BVS: Branch if oVerflow set (V == 1)
|
||||
<DT>1 000 011 0dd dddddd
|
||||
<DD>BCC: Branch if Carry Clear (C == 0) <BR><I>also known as</I><BR>BHIS:
|
||||
Branch if Higher Or Same
|
||||
<DT>1 000 011 1dd dddddd
|
||||
<DD>BCS: Branch if Carry Set (C == 1) <BR><I>also known as</I><BR>BLO: Branch
|
||||
if Lower </DD></DL>
|
||||
<H2>Condition Code Operations</H2><PRE> _ _ _ _ _ _ _ _ _ _:_ _ _:_ _ _
|
||||
|0|0|0|0|0|0|0|0|1|0|1|s|N|Z|V|C|
|
||||
| O p c o d e | | Mask |
|
||||
</PRE>
|
||||
<P>General opcode 000240x. Set/Clear corresponding bits depending on sense of
|
||||
bit 04 (set=1, clear=0). Codes 240 and 260 set/clear no bits and are, thus, used
|
||||
as NOP. Although specific mnemonic are provided for each flag and all flags, any
|
||||
combination may actually be set or cleared at a time. </P>
|
||||
<P>General mnemonics are: </P>
|
||||
<DL compact>
|
||||
<DT>CLx
|
||||
<DD>Clear x, where x is N, Z, V, or C
|
||||
<DT>SEx
|
||||
<DD>Set x, where x is N, Z, V, or C
|
||||
<DT>CCC
|
||||
<DD>Clear all condition codes
|
||||
<DT>SCC
|
||||
<DD>Set all condition codes </DD></DL><BR>
|
||||
<DL compact>
|
||||
<DT>0 000 000 010 1s0 000
|
||||
<DD>NOP/NOP: No Operation
|
||||
<DT>0 000 000 010 1s0 001
|
||||
<DD>SEC/CLC: Set/Clear Carry
|
||||
<DT>0 000 000 010 1s0 010
|
||||
<DD>SEV/CLV: Set/Clear Overflow
|
||||
<DT>0 000 000 010 1s0 100
|
||||
<DD>SEZ/CLZ: Set/Clear Zero
|
||||
<DT>0 000 000 010 1s1 000
|
||||
<DD>SEN/CLN: Set/Clear Negative
|
||||
<DT>0 000 000 010 1s1 111
|
||||
<DD>SCC/CCC: Set/Clear All Condition Codes </DD></DL>
|
||||
<H2>Other, Miscellaneous</H2><PRE> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
|0|0|0|0|1|0|0|s|s|s|d|d|d|d|d|d|
|
||||
| Opcode |Stack|Destination|
|
||||
</PRE>
|
||||
<P>
|
||||
<DL compact>
|
||||
<DT>0 000 100 sss dddddd -- JSR <I>Jump to Subroutine</I>
|
||||
<DD>The actual sequence of steps taken is: <PRE> MOV <source>,-(R6)
|
||||
MOV PC,<source>
|
||||
JMP <destination>
|
||||
</PRE><BR>
|
||||
<P>Thus, it loads the calling address into the specified source register
|
||||
(after saving the original contents). It then jumps to the destination. The
|
||||
fun part is (as usual with the PDP-11) that the PC is a general register, and
|
||||
the description above is the result when the PC is used as the source.
|
||||
</P></DD></DL><PRE> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
|0|0|0|0|0|0|0|0|1|0|0|0|0|s|s|s|
|
||||
| Opcode |Stack|
|
||||
</PRE>
|
||||
<P>
|
||||
<DL compact>
|
||||
<DT>0 000 000 010 000 sss -- RTS <I>ReTurn from Subroutine</I>
|
||||
<DD>Undoes the effects of a JSR. For predictable results, it is suggested that
|
||||
the same register should be used as was named in the corresponding JSR
|
||||
instruction.
|
||||
<P>The actual operations involved are: <PRE> MOV <source>,PC
|
||||
MOV (R6)+,<source>
|
||||
</PRE><BR>
|
||||
<P>This is the reverse of JSR. Obviously, the finesse here too is that you can
|
||||
use the PC, to get what people normally consider a CALL/RETURN function.
|
||||
<P>Why is it done like this then? Well, consider this example: <PRE> ...
|
||||
JSR R0,FOO
|
||||
.WORD A
|
||||
.WORD B
|
||||
MOV R1,C
|
||||
...
|
||||
|
||||
FOO: MOV @(R0)+,R1
|
||||
ADD @(R0)+,R1
|
||||
RTS R0
|
||||
</PRE><BR>
|
||||
<P>This type of parameter passing is used extensively in the PDP-8 and
|
||||
PDP-10), for example. Also, the FORTRAN runtime system on the PDP-11 do it
|
||||
this way. (It is fairly easy to write a compiler who generates such a calling
|
||||
sequence, and then have a library of functions which expect this calling
|
||||
convention.) </P></DD></DL><PRE> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
|0|0|0|0|0|0|0|0|0|1|d|d|d|d|d|d|
|
||||
| Opcode |Destination|
|
||||
</PRE>
|
||||
<P>
|
||||
<DL compact>
|
||||
<DT>0 000 000 001 ddd ddd -- JMP <I>JuMP</I>
|
||||
<DD>Loads the destination address into the PC, thus effecting an unconditional
|
||||
jump. Note that a trap will occur on some systems if an odd address is
|
||||
specified. On others, the destination is silently rounded down to the
|
||||
next-lower even address (i.e., the right-most bit is ignored). </DD></DL><PRE> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
|0|0|0|0|0|0|0|0|0|0|0|0|0|i|i|i|
|
||||
| | | | | | Op |
|
||||
</PRE>
|
||||
<P>
|
||||
<DL compact>
|
||||
<DD>0 000 000 000 000 000 -- HALT <I>Halts the machine</I>
|
||||
<DD>Ceases I/O, and gives control to the console. Operator intervention is
|
||||
required to continue or restart the system.
|
||||
<P></P>
|
||||
<DD>0 000 000 000 000 001 -- WAIT <I>WAIT for interrupt</I>
|
||||
<DD>0 000 000 000 000 010 -- RTI <I>ReTurn from Interrupt</I>
|
||||
<DD>0 000 000 000 000 100 -- BPT <I>BreakPoint Trap</I>
|
||||
<DD>0 000 000 000 000 101 -- RESET <I>Initializes the system</I> </DD></DL>
|
||||
<P>The following opcode ranges are all unused (using three bits per digit):
|
||||
<P>
|
||||
<DL compact>
|
||||
<DD>00 00 07 .. 00 00 77
|
||||
<DD>00 02 10 .. 00 02 27
|
||||
<DD>00 70 00 .. 00 77 77
|
||||
<DD>07 50 40 .. 07 67 77
|
||||
<DD>10 64 00 .. 10 64 77
|
||||
<DD>10 67 00 .. 10 77 77 </DD></DL>
|
||||
<P>Other arithmetic and floating point instructions were added to the basic set
|
||||
over the years, but those listed above form the core PDP-11 instruction set.
|
||||
<P>There is a comparison of PDP-11 and 80x86 floating point formats available
|
||||
at: <A
|
||||
href="ftp://ftp.dbit.com/pub/pdp11/info/fpp.txt">ftp://ftp.dbit.com/pub/pdp11/info/fpp.txt</A>
|
||||
|
||||
<HR>
|
||||
<A href="http://www.village.org/pdp11/faq.html">Table of Contents</A>
|
||||
</BODY></HTML>
|
41
README.md
Normal file
41
README.md
Normal file
@ -0,0 +1,41 @@
|
||||
This repository contains the documentations for various CPUs. It may contain data sheets, programmer's references, quick cards, and the like.
|
||||
|
||||
| Subfolders | Description |
|
||||
| ---------- | ----------- |
|
||||
| 8085 | Intel 8085 |
|
||||
| Alpha | Compaq Alpha |
|
||||
| ARM | |
|
||||
| AVR | |
|
||||
| Burroughs | |
|
||||
| CRIS | |
|
||||
| DSP56000 | |
|
||||
| ESA390 | |
|
||||
| F18A | |
|
||||
| H8 | |
|
||||
| HD6301 | |
|
||||
| IA-64 | Intel IA-64 |
|
||||
| KDF9 | |
|
||||
| M68000 | Motorola 680x0 CPU family |
|
||||
| MARC4 | |
|
||||
| MC6809 | Motorola 6809 and Hitachi 6309 |
|
||||
| MCS-51 | |
|
||||
| MCS6500 | |
|
||||
| MIPS | |
|
||||
| MN103 | |
|
||||
| MSP430 | |
|
||||
| NS32000 | National Semiconductor 32000 family |
|
||||
| OpenRISC | |
|
||||
| PDP-1 | DEC PDP-1 |
|
||||
| PDP-10 | DEC PDP-10 |
|
||||
| PDP-8 | DEC PDP-8 |
|
||||
| PIC | |
|
||||
| PowerPC | IBM PowerPC |
|
||||
| PSC1000 | |
|
||||
| RISC-V | |
|
||||
| RTX2000 | |
|
||||
| SPARC | |
|
||||
| SuperH | Hitachi SuperH |
|
||||
| x86-64 | |
|
||||
| Xtensa | |
|
||||
| Z80 | Zilog Z80 |
|
||||
| zArchitecture | |
|
BIN
SuperH/sh4.pdf
Normal file
BIN
SuperH/sh4.pdf
Normal file
Binary file not shown.
7
VAX/README.md
Normal file
7
VAX/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
This subfolder contains the documents and other stuff for DEC VAX family.
|
||||
|
||||
[Main Wikipedia article on DEC VAX](https://en.wikipedia.org/wiki/VAX)
|
||||
|
||||
| Files | Description | Source |
|
||||
| ----- | ----------- | ------ |
|
||||
| VAX_archHbkVol1_1977.pdf | VAX Architecture Handbook | URL not determined |
|
BIN
VAX/VAX_archHbkVol1_1977.pdf
Normal file
BIN
VAX/VAX_archHbkVol1_1977.pdf
Normal file
Binary file not shown.
286
Z80/eZ80_OpList.txt
Normal file
286
Z80/eZ80_OpList.txt
Normal file
@ -0,0 +1,286 @@
|
||||
Full eZ80 Opcode List
|
||||
=====================
|
||||
File: http://mdfs.net/Docs.Comp.eZ80.OpList - Update: 0.11
|
||||
Author: J.G.Harston - Date: 15-04-1998
|
||||
|
||||
nn nn DD nn CB nn FD CB dd nn ED nn
|
||||
-----------------------------------------------------------------------------------
|
||||
00 NOP - RLC B - IN0 B,(&00)
|
||||
01 LD BC,&0000 - RLC C - OUT0 (&00),B
|
||||
02 LD (BC),A - RLC D - LEA BC,IX+d
|
||||
03 INC BC - RLC E - LEA BC,IY+d
|
||||
04 INC B - RLC H - TST A,B
|
||||
05 DEC B - RLC L - -
|
||||
06 LD B,&00 - RLC (HL) RLC (IY+d) -
|
||||
07 RLCA LD BC,(IX+d) RLC A - LD BC,(HL)
|
||||
08 EX AF,AF' - RRC B - IN0 C,(&00)
|
||||
09 ADD HL,BC ADD IX,BC RRC C - OUT0 (&00),C
|
||||
0A LD A,(BC) - RRC D - -
|
||||
0B DEC BC - RRC E - -
|
||||
0C INC C - RRC H - TST A,C
|
||||
0D DEC C - RRC L - -
|
||||
0E LD C,&00 - RRC (HL) RRC (IY+d) -
|
||||
0F RRCA LD (IX+d),BC RRC A - LD (HL),BC
|
||||
10 DJNZ dist - RL B - IN0 D,(&00)
|
||||
11 LD DE,&0000 - RL C - OUT0 (&00),D
|
||||
12 LD (DE),A - RL D - LEA DE,IX+d
|
||||
13 INC DE - RL E - LEA DE,IY+d
|
||||
14 INC D - RL H - TST A,D
|
||||
15 DEC D - RL L - -
|
||||
16 LD D,&00 - RL (HL) RL (IY+d) -
|
||||
17 RLA LD DE,(IX+d) RL A - LD DE,(HL)
|
||||
18 JR dist - RR B - IN0 E,(&00)
|
||||
19 ADD HL,DE ADD IX,DE RR C - OUT0 (&00),E
|
||||
1A LD A,(DE) - RR D - -
|
||||
1B DEC DE - RR E - -
|
||||
1C INC E - RR H - TST A,E
|
||||
1D DEC E - RR L - -
|
||||
1E LD E,&00 - RR (HL) RR (IY+d) -
|
||||
1F RRA LD (IX+d),DE RR A - LD (HL),DE
|
||||
20 JR NZ,dist - SLA B - IN0 H,(&00)
|
||||
21 LD HL,&0000 LD IX,&0000 SLA C - OUT0 (&00),H
|
||||
22 LD (&0000),HL LD (&0000),IX SLA D - LEA HL,IX+d
|
||||
23 INC HL INC IX SLA E - LEA HL,IY+d
|
||||
24 INC H INC IXH SLA H - TST A,H
|
||||
25 DEC H DEC IXH SLA L - -
|
||||
26 LD H,&00 LD IXH,&00 SLA (HL) SLA (IY+d) -
|
||||
27 DAA LD HL,(IX+d) SLA A - LD HL,(HL)
|
||||
28 JR Z,dist - SRA B - IN0 L,(&00)
|
||||
29 ADD HL,HL ADD IX,IX SRA C - OUT0 (&00),L
|
||||
2A LD HL,(&0000) LD IX,(&0000) SRA D - -
|
||||
2B DEC HL DEC IX SRA E - -
|
||||
2C INC L INC IXL SRA H - TST A,L
|
||||
2D DEC L DEC IXL SRA L - -
|
||||
2E LD L,&00 LD IXL,&00 SRA (HL) SRA (IY+d) -
|
||||
2F CPL LD (IX+d),HL SRA A - LD (HL),HL
|
||||
30 JR NC,dist - - - -
|
||||
31 LD SP,&0000 LD IY,(IX+d) - - -
|
||||
32 LD (&0000),A - - - LEA IX,IX+d
|
||||
33 INC SP - - - LEA IY,IY+d
|
||||
34 INC (HL) INC (IX+d) - - TST A,(HL)
|
||||
35 DEC (HL) DEC (IX+d) - - -
|
||||
36 LD (HL),&00 LD (IX+d),&00 - - LD IY,(HL)
|
||||
37 SCF LD IX,(IX+d) - - LD IX,(HL)
|
||||
38 JR C,dist - SRL B - IN0 A,(&00)
|
||||
39 ADD HL,SP ADD IX,SP SRL C - OUT0 (&00),A
|
||||
3A LD A,(&0000) - SRL D - -
|
||||
3B DEC SP - SRL E - -
|
||||
3C INC A - SRL H - TST A,A
|
||||
3D DEC A - SRL L - -
|
||||
3E LD A,&00 LD (IX+d),IY SRL (HL) SRL (IY+d) LD (HL),IY
|
||||
3F CCF LD (IX+d),IX SRL A - LD (HL),IX
|
||||
40 LD B,B - BIT 0,B - IN B,(BC)
|
||||
41 LD B,C - BIT 0,C - OUT (BC),B
|
||||
42 LD B,D - BIT 0,D - SBC HL,BC
|
||||
43 LD B,E - BIT 0,E - LD (&0000),BC
|
||||
44 LD B,H LD B,IXH BIT 0,H - NEG
|
||||
45 LD B,L LD B,IXL BIT 0,L - RETN
|
||||
46 LD B,(HL) LD B,(IX+d) BIT 0,(HL) BIT 0,(IY+d) IM 0
|
||||
47 LD B,A - BIT 0,A - LD I,A
|
||||
48 LD C,B - BIT 1,B - IN C,(BC)
|
||||
49 LD C,C - BIT 1,C - OUT (BC),C
|
||||
4A LD C,D - BIT 1,D - ADC HL,BC
|
||||
4B LD C,E - BIT 1,E - LD BC,(&0000)
|
||||
4C LD C,H LD C,IXH BIT 1,H - MULT BC
|
||||
4D LD C,L LD C,IXL BIT 1,L - RETI
|
||||
4E LD C,(HL) LD C,(IX+d) BIT 1,(HL) BIT 1,(IY+d) -
|
||||
4F LD C,A - BIT 1,A - LD R,A
|
||||
50 LD D,B - BIT 2,B - IN D,(BC)
|
||||
51 LD D,C - BIT 2,C - OUT (BC),D
|
||||
52 LD D,D - BIT 2,D - SBC HL,DE
|
||||
53 LD D,E - BIT 2,E - LD (&0000),DE
|
||||
54 LD D,H LD D,IXH BIT 2,H - LEA IX,IY+d
|
||||
55 LD D,L LD D,IXL BIT 2,L - LEA IY,IX+d
|
||||
56 LD D,(HL) LD D,(IX+d) BIT 2,(HL) BIT 2,(IY+d) IM 1
|
||||
57 LD D,A - BIT 2,A - LD A,I
|
||||
58 LD E,B - BIT 3,B - IN E,(BC)
|
||||
59 LD E,C - BIT 3,C - OUT (BC),E
|
||||
5A LD E,D - BIT 3,D - ADC HL,DE
|
||||
5B LD E,E - BIT 3,E - LD DE,(&0000)
|
||||
5C LD E,H LD E,IXH BIT 3,H - MULT DE
|
||||
5D LD E,L LD E,IXL BIT 3,L - -
|
||||
5E LD E,(HL) LD E,(IX+d) BIT 3,(HL) BIT 3,(IY+d) IM 2
|
||||
5F LD E,A - BIT 3,A - LD A,R
|
||||
60 LD H,B LD IXH,B BIT 4,B - IN H,(BC)
|
||||
61 LD H,C LD IXH,C BIT 4,C - OUT (BC),H
|
||||
62 LD H,D LD IXH,D BIT 4,D - SBC HL,HL
|
||||
63 LD H,E LD IXH,E BIT 4,E - LD (&0000),HL
|
||||
64 LD H,H LD IXH,IXH BIT 4,H - TST A,&00
|
||||
65 LD H,L LD IXH,IXL BIT 4,L - PEA IX+d
|
||||
66 LD H,(HL) LD H,(IX+d) BIT 4,(HL) BIT 4,(IY+d) PEA IY+d
|
||||
67 LD H,A LD IXH,A BIT 4,A - RRD
|
||||
68 LD L,B LD IXL,B BIT 5,B - IN L,(BC)
|
||||
69 LD L,C LD IXL,C BIT 5,C - OUT (BC),L
|
||||
6A LD L,D LD IXL,D BIT 5,D - ADC HL,HL
|
||||
6B LD L,E LD IXL,E BIT 5,E - LD HL,(&0000)
|
||||
6C LD L,H LD IXL,IXH BIT 5,H - MULT HL
|
||||
6D LD L,L LD IXL,IXL BIT 5,L - LD MB,A
|
||||
6E LD L,(HL) LD L,(IX+d) BIT 5,(HL) BIT 5,(IY+d) LD A,MB
|
||||
6F LD L,A LD IXL,A BIT 5,A - RLD
|
||||
70 LD (HL),B LD (IX+d),B BIT 6,B - -
|
||||
71 LD (HL),C LD (IX+d),C BIT 6,C - -
|
||||
72 LD (HL),D LD (IX+d),D BIT 6,D - SBC HL,SP
|
||||
73 LD (HL),E LD (IX+d),E BIT 6,E - LD (&0000),SP
|
||||
74 LD (HL),H LD (IX+d),H BIT 6,H - TSR (&00)
|
||||
75 LD (HL),L LD (IX+d),L BIT 6,L - -
|
||||
76 HALT - BIT 6,(HL) BIT 6,(IY+d) SLP
|
||||
77 LD (HL),A LD (IX+d),A BIT 6,A - -
|
||||
78 LD A,B - BIT 7,B - IN A,(BC)
|
||||
79 LD A,C - BIT 7,C - OUT (BC),A
|
||||
7A LD A,D - BIT 7,D - ADC HL,SP
|
||||
7B LD A,E - BIT 7,E - LD SP,(&0000)
|
||||
7C LD A,H LD A,IXH BIT 7,H - MULT SP
|
||||
7D LD A,L LD A,IXL BIT 7,L - STMIX
|
||||
7E LD A,(HL) LD A,(IX+d) BIT 7,(HL) BIT 7,(IY+d) RSMIX
|
||||
7F LD A,A - BIT 7,A - -
|
||||
80 ADD A,B - RES 0,B - -
|
||||
81 ADD A,C - RES 0,C - -
|
||||
82 ADD A,D - RES 0,D - INIM
|
||||
83 ADD A,E - RES 0,E - OTIM
|
||||
84 ADD A,H ADD A,IXH RES 0,H - INI2
|
||||
85 ADD A,L ADD A,IXL RES 0,L - -
|
||||
86 ADD A,(HL) ADD A,(IX+d) RES 0,(HL) RES 0,(IY+d) -
|
||||
87 ADD A,A - RES 0,A - -
|
||||
88 ADC A,B - RES 1,B - -
|
||||
89 ADC A,C - RES 1,C - -
|
||||
8A ADC A,D - RES 1,D - INDM
|
||||
8B ADC A,E - RES 1,E - OTDM
|
||||
8C ADC A,H ADC A,IXH RES 1,H - IND2
|
||||
8D ADC A,L ADC A,IXL RES 1,L - -
|
||||
8E ADC A,(HL) ADC A,(IX+d) RES 1,(HL) RES 1,(IY+d) -
|
||||
8F ADC A,A - RES 1,A - -
|
||||
90 SUB A,B - RES 2,B - -
|
||||
91 SUB A,C - RES 2,C - -
|
||||
92 SUB A,D - RES 2,D - INIMR
|
||||
93 SUB A,E - RES 2,E - OTIMR
|
||||
94 SUB A,H SUB A,IXH RES 2,H - INI2R
|
||||
95 SUB A,L SUB A,IXL RES 2,L - -
|
||||
96 SUB A,(HL) SUB A,(IX+d) RES 2,(HL) RES 2,(IY+d) -
|
||||
97 SUB A,A - RES 2,A - -
|
||||
98 SBC A,B - RES 3,B - -
|
||||
99 SBC A,C - RES 3,C - -
|
||||
9A SBC A,D - RES 3,D - INDMR
|
||||
9B SBC A,E - RES 3,E - OTDMR
|
||||
9C SBC A,H SBC A,IXH RES 3,H - IND2R
|
||||
9D SBC A,L SBC A,IXL RES 3,L - -
|
||||
9E SBC A,(HL) SBC A,(IX+d) RES 3,(HL) RES 3,(IY+d) -
|
||||
9F SBC A,A - RES 3,A - -
|
||||
A0 AND B - RES 4,B - LDI
|
||||
A1 AND C - RES 4,C - CPI
|
||||
A2 AND D - RES 4,D - INI
|
||||
A3 AND E - RES 4,E - OTI
|
||||
A4 AND H AND IXH RES 4,H - OTI2
|
||||
A5 AND L AND IXL RES 4,L - -
|
||||
A6 AND (HL) AND (IX+d) RES 4,(HL) RES 4,(IY+d) -
|
||||
A7 AND A - RES 4,A - -
|
||||
A8 XOR B - RES 5,B - LDD
|
||||
A9 XOR C - RES 5,C - CPD
|
||||
AA XOR D - RES 5,D - IND
|
||||
AB XOR E - RES 5,E - OTD
|
||||
AC XOR H XOR IXH RES 5,H - OTD2
|
||||
AD XOR L XOR IXL RES 5,L - -
|
||||
AE XOR (HL) XOR (IX+d) RES 5,(HL) RES 5,(IY+d) -
|
||||
AF XOR A - RES 5,A - -
|
||||
B0 OR B - RES 6,B - LDIR
|
||||
B1 OR C - RES 6,C - CPIR
|
||||
B2 OR D - RES 6,D - INIR
|
||||
B3 OR E - RES 6,E - OTIR
|
||||
B4 OR H OR IXH RES 6,H - ORI2R
|
||||
B5 OR L OR IXL RES 6,L - -
|
||||
B6 OR (HL) OR (IX+d) RES 6,(HL) RES 6,(IY+d) -
|
||||
B7 OR A - RES 6,A - -
|
||||
B8 CP B - RES 7,B - LDDR
|
||||
B9 CP C - RES 7,C - CPDR
|
||||
BA CP D - RES 7,D - INDR
|
||||
BB CP E - RES 7,E - OTDR
|
||||
BC CP H CP IXH RES 7,H - OTD2R
|
||||
BD CP L CP IXL RES 7,L - -
|
||||
BE CP (HL) CP (IX+d) RES 7,(HL) RES 7,(IY+d) -
|
||||
BF CP A - RES 7,A - -
|
||||
C0 RET NZ - SET 0,B - -
|
||||
C1 POP BC - SET 0,C - -
|
||||
C2 JP NZ,&0000 - SET 0,D - -
|
||||
C3 JP &0000 - SET 0,E - -
|
||||
C4 CALL NZ,&0000 - SET 0,H - -
|
||||
C5 PUSH BC - SET 0,L - -
|
||||
C6 ADD A,&00 - SET 0,(HL) SET 0,(IY+d) -
|
||||
C7 RST &00 - SET 0,A - -
|
||||
C8 RET Z - SET 1,B - -
|
||||
C9 RET - SET 1,C - -
|
||||
CA JP Z,&0000 - SET 1,D - -
|
||||
CB **** CB **** **** CB **** SET 1,E - -
|
||||
CC CALL Z,&0000 - SET 1,H - -
|
||||
CD CALL &0000 - SET 1,L - -
|
||||
CE ADC A,&00 - SET 1,(HL) SET 1,(IY+d) -
|
||||
CF RST &08 - SET 1,A - -
|
||||
D0 RET NC - SET 2,B - -
|
||||
D1 POP DE - SET 2,C - -
|
||||
D2 JP NC,&0000 - SET 2,D - -
|
||||
D3 OUT (&00),A - SET 2,E - -
|
||||
D4 CALL NC,&0000 - SET 2,H - -
|
||||
D5 PUSH DE - SET 2,L - -
|
||||
D6 SUB A,&00 - SET 2,(HL) SET 2,(IY+d) -
|
||||
D7 RST &10 - SET 2,A - -
|
||||
D8 RET C - SET 3,B - -
|
||||
D9 EXX - SET 3,C - -
|
||||
DA JP C,&0000 - SET 3,D - -
|
||||
DB IN A,(&00) - SET 3,E - -
|
||||
DC CALL C,&0000 - SET 3,H - -
|
||||
DD **** DD **** - SET 3,L - -
|
||||
DE SBC A,&00 - SET 3,(HL) SET 3,(IY+d) -
|
||||
DF RST &18 - SET 3,A - -
|
||||
E0 RET PO - SET 4,B - -
|
||||
E1 POP HL POP IX SET 4,C - -
|
||||
E2 JP PO,&0000 - SET 4,D - -
|
||||
E3 EX (SP),HL EX (SP),IX SET 4,E - -
|
||||
E4 CALL PO,&0000 - SET 4,H - -
|
||||
E5 PUSH HL PUSH IX SET 4,L - -
|
||||
E6 AND &00 - SET 4,(HL) SET 4,(IY+d) -
|
||||
E7 RST &20 - SET 4,A - -
|
||||
E8 RET PE - SET 5,B - -
|
||||
E9 JP (HL) JP (IX) SET 5,C - -
|
||||
EA JP PE,&0000 - SET 5,D - -
|
||||
EB EX DE,HL - SET 5,E - -
|
||||
EC CALL PE,&0000 - SET 5,H - -
|
||||
ED **** ED **** - SET 5,L - -
|
||||
EE XOR &00 - SET 5,(HL) SET 5,(IY+d) -
|
||||
EF RST &28 - SET 5,A - -
|
||||
F0 RET P - SET 6,B - -
|
||||
F1 POP AF - SET 6,C - -
|
||||
F2 JP P,&0000 - SET 6,D - -
|
||||
F3 DI - SET 6,E - -
|
||||
F4 CALL P,&0000 - SET 6,H - -
|
||||
F5 PUSH AF - SET 6,L - -
|
||||
F6 OR &00 - SET 6,(HL) SET 6,(IY+d) -
|
||||
F7 RST &30 - SET 6,A - -
|
||||
F8 RET M - SET 7,B - -
|
||||
F9 LD SP,HL LD SP,IX SET 7,C - -
|
||||
FA JP M,&0000 - SET 7,D - -
|
||||
FB EI - SET 7,E - -
|
||||
FC CALL M,&0000 - SET 7,H - -
|
||||
FD **** FD **** - SET 7,L - -
|
||||
FE CP &00 - SET 7,(HL) SET 7,(IY+d) -
|
||||
FF RST &38 - SET 7,A - -
|
||||
|
||||
|
||||
Notes on index registers
|
||||
------------------------
|
||||
Where DD and IX are mentioned, FD and IY may be substituted and vis versa.
|
||||
If a DD or FD opcode prefixes an nonexistant instruction, then the DD or
|
||||
FD opcode acts as a NOP and the base instruction is executed. For example,
|
||||
DD FF does a RST &38.
|
||||
|
||||
Notes on Indexed Shift/Bit Operations
|
||||
-------------------------------------
|
||||
A shift or bit operation on an indexed byte in memory is done by prefixing a
|
||||
CB opcode refering to (HL) with DD or FD to specify (IX+n) or (IY+n). If
|
||||
the CB opcode does not refer to (HL), then the CB prefix is executed as a
|
||||
NOP and the following code executed.
|
||||
|
||||
Notes on ED opcodes
|
||||
-------------------
|
||||
Opcodes 00 to 3F and C0 to FF (other than the block instructions) just
|
||||
increment the R register by 2.
|
||||
|
||||
References
|
||||
----------
|
14372
Z80/eZ80_um0077,pdf.pdf
Normal file
14372
Z80/eZ80_um0077,pdf.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
Z80/z80.pdf
Normal file
BIN
Z80/z80.pdf
Normal file
Binary file not shown.
BIN
Z80/z80cpu_um.pdf
Normal file
BIN
Z80/z80cpu_um.pdf
Normal file
Binary file not shown.
1308
Z80/z80opcod.txt
Normal file
1308
Z80/z80opcod.txt
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user