Implement more of Z80.

This commit is contained in:
Jeff Tranter 2015-06-28 20:13:25 -04:00
parent aa6fc9de2d
commit b1503028d2

275
z80.py
View File

@ -106,6 +106,7 @@ addressModeTable = {
"a,indnn" : "a,(${1:02X}{0:02X})",
"a,indn" : "a,(${0:02X})",
"indnn,a" : "(${1:02X}{0:02X}),a",
"indaa,bc" : "(${1:02X}{0:02X}),bc",
"hl,indnn" : "hl,(${1:02X}{0:02X})",
"indbc,a" : "(bc),a",
"indde,a" : "(de),a",
@ -147,6 +148,7 @@ addressModeTable = {
"c,n" : "c,${0:04X}",
"nn" : "${1:02X}{0:02X}",
"b,indc" : "b,(c)",
"indc,b" : "(c),b",
"00" : "$00",
"08" : "$08",
"10" : "$10",
@ -219,6 +221,10 @@ addressModeTable = {
"7,h" : "7,h",
"7,l" : "7,l",
"7,indhl" : "7,(hl)",
"n,(ix+d)" : "n,(ix+${0:02X})",
"n,(iy+d)" : "n,(iy+${0:02X})",
"(iy+d)" : "(iy+${0:02X})",
"(ix+d)" : "(ix+${0:02X})",
}
@ -630,146 +636,161 @@ opcodeTable = {
0xcb7f : [ 2, "bit", "7,a" ],
0xcb80 : [ 2, "res", "0,b" ],
0xcb81 : [ 2, "res", "0,b" ],
0xcb82 : [ 2, "res", "0,b" ],
0xcb83 : [ 2, "res", "0,b" ],
0xcb84 : [ 2, "res", "0,b" ],
0xcb85 : [ 2, "res", "0,b" ],
0xcb86 : [ 2, "res", "0,b" ],
0xcb87 : [ 2, "res", "0,b" ],
0xcb88 : [ 2, "res", "0,b" ],
0xcb89 : [ 2, "res", "0,b" ],
0xcb8a : [ 2, "res", "0,b" ],
0xcb8b : [ 2, "res", "0,b" ],
0xcb8c : [ 2, "res", "0,b" ],
0xcb8d : [ 2, "res", "0,b" ],
0xcb8e : [ 2, "res", "0,b" ],
0xcb8f : [ 2, "res", "0,b" ],
0xcb81 : [ 2, "res", "0,c" ],
0xcb82 : [ 2, "res", "0,d" ],
0xcb83 : [ 2, "res", "0,e" ],
0xcb84 : [ 2, "res", "0,h" ],
0xcb85 : [ 2, "res", "0,l" ],
0xcb86 : [ 2, "res", "0,indhl" ],
0xcb87 : [ 2, "res", "0,a" ],
0xcb88 : [ 2, "res", "1,b" ],
0xcb89 : [ 2, "res", "1,c" ],
0xcb8a : [ 2, "res", "1,d" ],
0xcb8b : [ 2, "res", "1,e" ],
0xcb8c : [ 2, "res", "1,h" ],
0xcb8d : [ 2, "res", "1,l" ],
0xcb8e : [ 2, "res", "1,indhl" ],
0xcb8f : [ 2, "res", "1,a" ],
0xcb90 : [ 2, "res", "0,b" ],
0xcb91 : [ 2, "res", "0,b" ],
0xcb92 : [ 2, "res", "0,b" ],
0xcb93 : [ 2, "res", "0,b" ],
0xcb94 : [ 2, "res", "0,b" ],
0xcb95 : [ 2, "res", "0,b" ],
0xcb96 : [ 2, "res", "0,b" ],
0xcb97 : [ 2, "res", "0,b" ],
0xcb98 : [ 2, "res", "0,b" ],
0xcb99 : [ 2, "res", "0,b" ],
0xcb9a : [ 2, "res", "0,b" ],
0xcb9b : [ 2, "res", "0,b" ],
0xcb9c : [ 2, "res", "0,b" ],
0xcb9d : [ 2, "res", "0,b" ],
0xcb9e : [ 2, "res", "0,b" ],
0xcb9f : [ 2, "res", "0,b" ],
0xcb90 : [ 2, "res", "2,b" ],
0xcb91 : [ 2, "res", "2,c" ],
0xcb92 : [ 2, "res", "2,d" ],
0xcb93 : [ 2, "res", "2,e" ],
0xcb94 : [ 2, "res", "2,h" ],
0xcb95 : [ 2, "res", "2,l" ],
0xcb96 : [ 2, "res", "2,indhl" ],
0xcb97 : [ 2, "res", "2,a" ],
0xcb98 : [ 2, "res", "3,b" ],
0xcb99 : [ 2, "res", "3,c" ],
0xcb9a : [ 2, "res", "3,d" ],
0xcb9b : [ 2, "res", "3,e" ],
0xcb9c : [ 2, "res", "3,h" ],
0xcb9d : [ 2, "res", "3,l" ],
0xcb9e : [ 2, "res", "3,indhl" ],
0xcb9f : [ 2, "res", "3,a" ],
0xcba0 : [ 2, "res", "0,b" ],
0xcba1 : [ 2, "res", "0,b" ],
0xcba2 : [ 2, "res", "0,b" ],
0xcba3 : [ 2, "res", "0,b" ],
0xcba4 : [ 2, "res", "0,b" ],
0xcba5 : [ 2, "res", "0,b" ],
0xcba6 : [ 2, "res", "0,b" ],
0xcba7 : [ 2, "res", "0,b" ],
0xcba8 : [ 2, "res", "0,b" ],
0xcba9 : [ 2, "res", "0,b" ],
0xcbaa : [ 2, "res", "0,b" ],
0xcbab : [ 2, "res", "0,b" ],
0xcbac : [ 2, "res", "0,b" ],
0xcbad : [ 2, "res", "0,b" ],
0xcbae : [ 2, "res", "0,b" ],
0xcbaf : [ 2, "res", "0,b" ],
0xcba0 : [ 2, "res", "4,b" ],
0xcba1 : [ 2, "res", "4,c" ],
0xcba2 : [ 2, "res", "4,d" ],
0xcba3 : [ 2, "res", "4,e" ],
0xcba4 : [ 2, "res", "4,h" ],
0xcba5 : [ 2, "res", "4,l" ],
0xcba6 : [ 2, "res", "4,indhl" ],
0xcba7 : [ 2, "res", "4,a" ],
0xcba8 : [ 2, "res", "5,b" ],
0xcba9 : [ 2, "res", "5,c" ],
0xcbaa : [ 2, "res", "5,d" ],
0xcbab : [ 2, "res", "5,e" ],
0xcbac : [ 2, "res", "5,h" ],
0xcbad : [ 2, "res", "5,l" ],
0xcbae : [ 2, "res", "5,indhl" ],
0xcbaf : [ 2, "res", "a,b" ],
0xcbb0 : [ 2, "res", "0,b" ],
0xcbb1 : [ 2, "res", "0,b" ],
0xcbb2 : [ 2, "res", "0,b" ],
0xcbb3 : [ 2, "res", "0,b" ],
0xcbb4 : [ 2, "res", "0,b" ],
0xcbb5 : [ 2, "res", "0,b" ],
0xcbb6 : [ 2, "res", "0,b" ],
0xcbb7 : [ 2, "res", "0,b" ],
0xcbb8 : [ 2, "res", "0,b" ],
0xcbb9 : [ 2, "res", "0,b" ],
0xcbba : [ 2, "res", "0,b" ],
0xcbbb : [ 2, "res", "0,b" ],
0xcbbc : [ 2, "res", "0,b" ],
0xcbbd : [ 2, "res", "0,b" ],
0xcbbe : [ 2, "res", "0,b" ],
0xcbbf : [ 2, "res", "0,b" ],
0xcbb0 : [ 2, "res", "6,b" ],
0xcbb1 : [ 2, "res", "6,c" ],
0xcbb2 : [ 2, "res", "6,d" ],
0xcbb3 : [ 2, "res", "6,e" ],
0xcbb4 : [ 2, "res", "6,h" ],
0xcbb5 : [ 2, "res", "6,l" ],
0xcbb6 : [ 2, "res", "6,indhl" ],
0xcbb7 : [ 2, "res", "6,a" ],
0xcbb8 : [ 2, "res", "7,b" ],
0xcbb9 : [ 2, "res", "7,c" ],
0xcbba : [ 2, "res", "7,d" ],
0xcbbb : [ 2, "res", "7,e" ],
0xcbbc : [ 2, "res", "7,h" ],
0xcbbd : [ 2, "res", "7,l" ],
0xcbbe : [ 2, "res", "7,indhl" ],
0xcbbf : [ 2, "res", "7,a" ],
0xcbc0 : [ 2, "res", "0,b" ],
0xcbc1 : [ 2, "res", "0,b" ],
0xcbc2 : [ 2, "res", "0,b" ],
0xcbc3 : [ 2, "res", "0,b" ],
0xcbc4 : [ 2, "res", "0,b" ],
0xcbc5 : [ 2, "res", "0,b" ],
0xcbc6 : [ 2, "res", "0,b" ],
0xcbc7 : [ 2, "res", "0,b" ],
0xcbc8 : [ 2, "res", "0,b" ],
0xcbc9 : [ 2, "res", "0,b" ],
0xcbca : [ 2, "res", "0,b" ],
0xcbcb : [ 2, "res", "0,b" ],
0xcbcc : [ 2, "res", "0,b" ],
0xcbcd : [ 2, "res", "0,b" ],
0xcbce : [ 2, "res", "0,b" ],
0xcbcf : [ 2, "res", "0,b" ],
0xcbc0 : [ 2, "set", "0,b" ],
0xcbc1 : [ 2, "set", "0,c" ],
0xcbc2 : [ 2, "set", "0,d" ],
0xcbc3 : [ 2, "set", "0,e" ],
0xcbc4 : [ 2, "set", "0,h" ],
0xcbc5 : [ 2, "set", "0,l" ],
0xcbc6 : [ 2, "set", "0,indhl" ],
0xcbc7 : [ 2, "set", "0,a" ],
0xcbc8 : [ 2, "set", "1,b" ],
0xcbc9 : [ 2, "set", "1,c" ],
0xcbca : [ 2, "set", "1,d" ],
0xcbcb : [ 2, "set", "1,e" ],
0xcbcc : [ 2, "set", "1,h" ],
0xcbcd : [ 2, "set", "1,l" ],
0xcbce : [ 2, "set", "1,indhl" ],
0xcbcf : [ 2, "set", "1,a" ],
0xcbd0 : [ 2, "res", "0,b" ],
0xcbd1 : [ 2, "res", "0,b" ],
0xcbd2 : [ 2, "res", "0,b" ],
0xcbd3 : [ 2, "res", "0,b" ],
0xcbd4 : [ 2, "res", "0,b" ],
0xcbd5 : [ 2, "res", "0,b" ],
0xcbd6 : [ 2, "res", "0,b" ],
0xcbd7 : [ 2, "res", "0,b" ],
0xcbd8 : [ 2, "res", "0,b" ],
0xcbd9 : [ 2, "res", "0,b" ],
0xcbda : [ 2, "res", "0,b" ],
0xcbdb : [ 2, "res", "0,b" ],
0xcbdc : [ 2, "res", "0,b" ],
0xcbdd : [ 2, "res", "0,b" ],
0xcbde : [ 2, "res", "0,b" ],
0xcbdf : [ 2, "res", "0,b" ],
0xcbd0 : [ 2, "set", "2,b" ],
0xcbd1 : [ 2, "set", "2,c" ],
0xcbd2 : [ 2, "set", "2,d" ],
0xcbd3 : [ 2, "set", "2,e" ],
0xcbd4 : [ 2, "set", "2,h" ],
0xcbd5 : [ 2, "set", "2,l" ],
0xcbd6 : [ 2, "set", "2,indhl" ],
0xcbd7 : [ 2, "set", "2,a" ],
0xcbd8 : [ 2, "set", "3,b" ],
0xcbd9 : [ 2, "set", "3,c" ],
0xcbda : [ 2, "set", "3,d" ],
0xcbdb : [ 2, "set", "3,e" ],
0xcbdc : [ 2, "set", "3,h" ],
0xcbdd : [ 2, "set", "3,l" ],
0xcbde : [ 2, "set", "3,indhl" ],
0xcbdf : [ 2, "set", "3,a" ],
0xcbe0 : [ 2, "res", "0,b" ],
0xcbe1 : [ 2, "res", "0,b" ],
0xcbe2 : [ 2, "res", "0,b" ],
0xcbe3 : [ 2, "res", "0,b" ],
0xcbe4 : [ 2, "res", "0,b" ],
0xcbe5 : [ 2, "res", "0,b" ],
0xcbe6 : [ 2, "res", "0,b" ],
0xcbe7 : [ 2, "res", "0,b" ],
0xcbe8 : [ 2, "res", "0,b" ],
0xcbe9 : [ 2, "res", "0,b" ],
0xcbea : [ 2, "res", "0,b" ],
0xcbeb : [ 2, "res", "0,b" ],
0xcbec : [ 2, "res", "0,b" ],
0xcbed : [ 2, "res", "0,b" ],
0xcbee : [ 2, "res", "0,b" ],
0xcbef : [ 2, "res", "0,b" ],
0xcbe0 : [ 2, "set", "4,b" ],
0xcbe1 : [ 2, "set", "4,c" ],
0xcbe2 : [ 2, "set", "4,d" ],
0xcbe3 : [ 2, "set", "4,e" ],
0xcbe4 : [ 2, "set", "4,h" ],
0xcbe5 : [ 2, "set", "4,l" ],
0xcbe6 : [ 2, "set", "4,indhl" ],
0xcbe7 : [ 2, "set", "4,a" ],
0xcbe8 : [ 2, "set", "5,b" ],
0xcbe9 : [ 2, "set", "5,c" ],
0xcbea : [ 2, "set", "5,d" ],
0xcbeb : [ 2, "set", "5,e" ],
0xcbec : [ 2, "set", "5,h" ],
0xcbed : [ 2, "set", "5,l" ],
0xcbee : [ 2, "set", "5,indhl" ],
0xcbef : [ 2, "set", "5,a" ],
0xcbf0 : [ 2, "res", "0,b" ],
0xcbf1 : [ 2, "res", "0,b" ],
0xcbf2 : [ 2, "res", "0,b" ],
0xcbf3 : [ 2, "res", "0,b" ],
0xcbf4 : [ 2, "res", "0,b" ],
0xcbf5 : [ 2, "res", "0,b" ],
0xcbf6 : [ 2, "res", "0,b" ],
0xcbf7 : [ 2, "res", "0,b" ],
0xcbf8 : [ 2, "res", "0,b" ],
0xcbf9 : [ 2, "res", "0,b" ],
0xcbfa : [ 2, "res", "0,b" ],
0xcbfb : [ 2, "res", "0,b" ],
0xcbfc : [ 2, "res", "0,b" ],
0xcbfd : [ 2, "res", "0,b" ],
0xcbfe : [ 2, "res", "0,b" ],
0xcbf0 : [ 2, "set", "6,b" ],
0xcbf1 : [ 2, "set", "6,c" ],
0xcbf2 : [ 2, "set", "6,d" ],
0xcbf3 : [ 2, "set", "6,e" ],
0xcbf4 : [ 2, "set", "6,h" ],
0xcbf5 : [ 2, "set", "6,l" ],
0xcbf6 : [ 2, "set", "6,indhl" ],
0xcbf7 : [ 2, "set", "6,a" ],
0xcbf8 : [ 2, "set", "7,b" ],
0xcbf9 : [ 2, "set", "7,c" ],
0xcbfa : [ 2, "set", "7,d" ],
0xcbfb : [ 2, "set", "7,e" ],
0xcbfc : [ 2, "set", "7,h" ],
0xcbfd : [ 2, "set", "7,l" ],
0xcbfe : [ 2, "set", "7,indhl" ],
0xcbff : [ 2, "set", "7,a" ],
0xdd09 : [ 2, "add", "ix,bc" ],
0xdd8e : [3, "adc", "(ix+d)" ],
0xddcb : [ 4, "bit", "n,(ix+d)" ],
0xed40 : [ 2, "in", "b,indc" ],
0xed41 : [ 2, "out", "indc,b" ],
0xed42 : [ 2, "sbc", "hl,bc" ],
0xed43 : [ 4, "ld", "indaa,bc" ],
0xed44 : [ 2, "neg", "implied" ],
0xed45 : [ 2, "retn", "implied" ],
#...
0xedbb : [ 2, "otdr", "implied" ],
0xfd09 : [ 2, "add", "iy,bc" ],
0xed40 : [ 2, "in", "b,indc" ],
0xfd8e : [3, "adc", "(iy+d)" ],
0xfdcb : [ 4, "bit", "n,(iy+d)" ],
}