Implement more of Z80.

This commit is contained in:
Jeff Tranter 2015-07-01 23:16:58 -04:00
parent 5cd1028fd9
commit d07901394c

332
z80.py
View File

@ -17,25 +17,84 @@ leadInBytes = [0xcb, 0xdd, 0xed, 0xfd]
# List of addressing modes and corresponding format strings for operands.
addressModeTable = {
"implied" : "",
"(ix+d)" : "(ix+${0:02X})",
"(iy+d)" : "(iy+${0:02X})",
"0" : "0",
"0,a" : "0,a",
"0,b" : "0,b",
"0,c" : "0,c",
"0,d" : "0,d",
"0,e" : "0,e",
"0,h" : "0,h",
"0,indhl" : "0,(hl)",
"0,l" : "0,l",
"00" : "$00",
"08" : "$08",
"1" : "1",
"1,a" : "1,a",
"1,b" : "1,b",
"1,c" : "1,c",
"1,d" : "1,d",
"1,e" : "1,e",
"1,h" : "1,h",
"1,indhl" : "1,(hl)",
"1,l" : "1,l",
"10" : "$10",
"18" : "$18",
"2" : "2",
"2,a" : "2,a",
"2,b" : "2,b",
"2,c" : "2,c",
"2,d" : "2,d",
"2,e" : "2,e",
"2,h" : "2,h",
"2,indhl" : "2,(hl)",
"2,l" : "2,l",
"20" : "$20",
"28" : "$28",
"3,a" : "3,a",
"3,b" : "3,b",
"3,c" : "3,c",
"3,d" : "3,d",
"3,e" : "3,e",
"3,h" : "3,h",
"3,indhl" : "3,(hl)",
"3,l" : "3,l",
"30" : "$10",
"38" : "$18",
"4,a" : "4,a",
"4,b" : "4,b",
"4,c" : "4,c",
"4,d" : "4,d",
"4,e" : "4,e",
"4,h" : "4,h",
"4,indhl" : "4,(hl)",
"4,l" : "4,l",
"5,a" : "5,a",
"5,b" : "5,b",
"5,c" : "5,c",
"5,d" : "5,d",
"5,e" : "5,e",
"5,h" : "5,h",
"5,indhl" : "5,(hl)",
"5,l" : "5,l",
"6,a" : "6,a",
"6,b" : "6,b",
"6,c" : "6,c",
"6,d" : "6,d",
"6,e" : "6,e",
"6,h" : "6,h",
"6,indhl" : "6,(hl)",
"6,l" : "6,l",
"7,a" : "7,a",
"7,b" : "7,b",
"7,c" : "7,c",
"7,d" : "7,d",
"7,e" : "7,e",
"7,h" : "7,h",
"7,indhl" : "7,(hl)",
"7,l" : "7,l",
"a" : "a",
"b" : "b",
"c" : "c",
"d" : "d",
"e" : "e",
"h" : "h",
"l" : "l",
"m" : "m",
"nc" : "nc",
"p" : "p",
"z" : "z",
"nz" : "nz",
"pe" : "pe",
"po" : "po",
"sp" : "sp",
"bc" : "bc",
"de" : "de",
"hl" : "hl",
"af" : "af",
"a,a" : "a,a",
"a,b" : "a,b",
"a,c" : "a,c",
@ -43,82 +102,100 @@ addressModeTable = {
"a,e" : "a,e",
"a,h" : "a,h",
"a,i" : "a,i",
"a,indbc" : "a,(bc)",
"a,indc" : "a,(c)",
"a,indde" : "a,(de)",
"a,indhl" : "a,(hl)",
"a,indn" : "a,(${0:02X})",
"a,indnn" : "a,(${1:02X}{0:02X})",
"a,l" : "a,l",
"a,n" : "a,${0:02X}",
"a,r" : "a,r",
"af" : "af",
"af,af" : "af,af",
"b" : "b",
"b,a" : "b,a",
"b,b" : "b,b",
"b,c" : "b,c",
"b,d" : "b,d",
"b,e" : "b,e",
"b,h" : "b,h",
"b,indc" : "b,(c)",
"b,indhl" : "b,(hl)",
"b,l" : "b,l",
"c,l" : "c,l",
"b,n" : "b,${0:02X}",
"bc" : "bc",
"bc,indaa" : "bc,(${1:02X}{0:02X})",
"bc,nn" : "bc,${1:02X}{0:02X}",
"c" : "c",
"c,a" : "c,a",
"c,b" : "c,b",
"c,c" : "c,c",
"c,d" : "c,d",
"c,e" : "c,e",
"c,h" : "c,h",
"c,indc" : "c,(c)",
"c,indhl" : "c,(hl)",
"c,l" : "c,l",
"c,n" : "b,${0:02X}",
"c,n" : "c,${0:04X}",
"c,nn" : "c,${1:02X}{0:02X}",
"d" : "d",
"d,a" : "d,a",
"d,b" : "d,b",
"d,c" : "d,c",
"d,d" : "d,d",
"d,e" : "d,e",
"d,h" : "d,h",
"d,indc" : "d,(c)",
"d,indhl" : "d,(hl)",
"d,l" : "d,l",
"d,n" : "d,${0:02X}",
"de" : "de",
"de,hl" : "de,hl",
"de,indaa" : "de,(${1:02X}{0:02X})",
"de,nn" : "de,${1:02X}{0:02X}",
"e" : "e",
"e,a" : "e,a",
"e,b" : "e,b",
"e,c" : "e,c",
"e,d" : "e,d",
"e,e" : "e,e",
"e,h" : "e,h",
"e,indc" : "e,(c)",
"e,indhl" : "e,(hl)",
"e,l" : "e,l",
"e,n" : "e,${0:02X}",
"h" : "h",
"h,a" : "h,a",
"h,b" : "h,b",
"h,c" : "h,c",
"h,d" : "h,d",
"h,e" : "h,e",
"h,h" : "h,h",
"h,indc" : "h,(c)",
"h,indhl" : "h,(hl)",
"h,l" : "h,l",
"i,a" : "i,a",
"l,b" : "l,b",
"l,a" : "l,a",
"l,c" : "l,c",
"l,d" : "l,d",
"l,e" : "l,e",
"l,h" : "l,h",
"l,l" : "l,l",
"r,a" : "r,a",
"af,af" : "af,af",
"h,n" : "h,${0:02X}",
"hl" : "hl",
"hl,bc" : "hl,bc",
"hl,de" : "hl,bc",
"hl,hl" : "hl,hl",
"hl,sp" : "hl,sp",
"sp,hl" : "sp,hl",
"de,hl" : "de,hl",
"ix,bc" : "ix,bc",
"iy,bc" : "iy,bc",
"bc,nn" : "bc,${1:02X}{0:02X}",
"de,nn" : "de,${1:02X}{0:02X}",
"bc,indaa" : "bc,(${1:02X}{0:02X})",
"de,indaa" : "de,(${1:02X}{0:02X})",
"sp,indaa" : "sp,(${1:02X}{0:02X})",
"hl,indnn" : "hl,(${1:02X}{0:02X})",
"hl,nn" : "hl,${1:02X}{0:02X}",
"sp,nn" : "sp,${1:02X}{0:02X}",
"c,nn" : "c,${1:02X}{0:02X}",
"m,nn" : "m,${1:02X}{0:02X}",
"indnn,hl" : "(${1:02X}{0:02X}),hl",
"indn,a" : "(${0:02X}),a",
"indhl,n" : "(hl),(${0:02X})",
"a,indnn" : "a,(${1:02X}{0:02X})",
"a,indc" : "a,(c)",
"a,indn" : "a,(${0:02X})",
"indnn,a" : "(${1:02X}{0:02X}),a",
"hl,sp" : "hl,sp",
"i,a" : "i,a",
"indaa,bc" : "(${1:02X}{0:02X}),bc",
"indaa,de" : "(${1:02X}{0:02X}),de",
"indaa,sp" : "(${1:02X}{0:02X}),sp",
"hl,indnn" : "hl,(${1:02X}{0:02X})",
"indbc,a" : "(bc),a",
"indc,a" : "(c),a",
"indc,b" : "(c),b",
"indc,c" : "(c),c",
"indc,d" : "(c),d",
"indc,e" : "(c),e",
"indc,h" : "(c),h",
"indc,l" : "(c),l",
"indde,a" : "(de),a",
"indhl" : "(hl)",
"indhl,a" : "(hl),a",
@ -128,127 +205,50 @@ addressModeTable = {
"indhl,e" : "(hl),e",
"indhl,h" : "(hl),h",
"indhl,l" : "(hl),l",
"indhl,n" : "(hl),(${0:02X})",
"indn,a" : "(${0:02X}),a",
"indnn,a" : "(${1:02X}{0:02X}),a",
"indnn,hl" : "(${1:02X}{0:02X}),hl",
"indsp,hl" : "(sp),hl",
"a,indde" : "a,(de)",
"a,indbc" : "a,(bc)",
"b,indhl" : "b,(hl)",
"a,indhl" : "a,(hl)",
"c,indhl" : "c,(hl)",
"d,indhl" : "d,(hl)",
"e,indhl" : "e,(hl)",
"h,indhl" : "h,(hl)",
"l,indhl" : "l,(hl)",
"ix,bc" : "ix,bc",
"iy,bc" : "iy,bc",
"l" : "l",
"l,a" : "l,a",
"l,b" : "l,b",
"l,c" : "l,c",
"l,d" : "l,d",
"l,e" : "l,e",
"l,h" : "l,h",
"l,indc" : "l,(c)",
"c,indc" : "c,(c)",
"d,indc" : "d,(c)",
"e,indc" : "e,(c)",
"h,indc" : "h,(c)",
"n" : "${0:02X}",
"a,n" : "a,${0:02X}",
"b,n" : "b,${0:02X}",
"c,n" : "b,${0:02X}",
"d,n" : "d,${0:02X}",
"e,n" : "e,${0:02X}",
"h,n" : "h,${0:02X}",
"l,indhl" : "l,(hl)",
"l,l" : "l,l",
"l,n" : "l,${0:02X}",
"nz,n" : "nz,${0:04X}",
"z,n" : "z,${0:04X}",
"z,nn" : "z,${1:02X}{0:02X}",
"nz,nn" : "nz,${1:02X}{0:02X}",
"nc,n" : "nc,${0:04X}",
"nc,nn" : "nc,${1:02X}{0:02X}",
"pe,nn" : "pe,${1:02X}{0:02X}",
"po,nn" : "po,${1:02X}{0:02X}",
"p,nn" : "p,${1:02X}{0:02X}",
"c,n" : "c,${0:04X}",
"nn" : "${1:02X}{0:02X}",
"b,indc" : "b,(c)",
"indc,a" : "(c),a",
"indc,b" : "(c),b",
"indc,c" : "(c),c",
"indc,d" : "(c),d",
"indc,e" : "(c),e",
"indc,h" : "(c),h",
"indc,l" : "(c),l",
"0" : "0",
"1" : "1",
"2" : "2",
"00" : "$00",
"08" : "$08",
"10" : "$10",
"18" : "$18",
"20" : "$20",
"28" : "$28",
"30" : "$10",
"38" : "$18",
"0,a" : "0,a",
"0,b" : "0,b",
"0,c" : "0,c",
"0,d" : "0,d",
"0,e" : "0,e",
"0,h" : "0,h",
"0,l" : "0,l",
"0,indhl" : "0,(hl)",
"1,a" : "1,a",
"1,b" : "1,b",
"1,c" : "1,c",
"1,d" : "1,d",
"1,e" : "1,e",
"1,h" : "1,h",
"1,l" : "1,l",
"1,indhl" : "1,(hl)",
"2,a" : "2,a",
"2,b" : "2,b",
"2,c" : "2,c",
"2,d" : "2,d",
"2,e" : "2,e",
"2,h" : "2,h",
"2,l" : "2,l",
"2,indhl" : "2,(hl)",
"3,a" : "3,a",
"3,b" : "3,b",
"3,c" : "3,c",
"3,d" : "3,d",
"3,e" : "3,e",
"3,h" : "3,h",
"3,l" : "3,l",
"3,indhl" : "3,(hl)",
"4,a" : "4,a",
"4,b" : "4,b",
"4,c" : "4,c",
"4,d" : "4,d",
"4,e" : "4,e",
"4,h" : "4,h",
"4,l" : "4,l",
"4,indhl" : "4,(hl)",
"5,a" : "5,a",
"5,b" : "5,b",
"5,c" : "5,c",
"5,d" : "5,d",
"5,e" : "5,e",
"5,h" : "5,h",
"5,l" : "5,l",
"5,indhl" : "5,(hl)",
"6,a" : "6,a",
"6,b" : "6,b",
"6,c" : "6,c",
"6,d" : "6,d",
"6,e" : "6,e",
"6,h" : "6,h",
"6,l" : "6,l",
"6,indhl" : "6,(hl)",
"7,a" : "7,a",
"7,b" : "7,b",
"7,c" : "7,c",
"7,d" : "7,d",
"7,e" : "7,e",
"7,h" : "7,h",
"7,l" : "7,l",
"7,indhl" : "7,(hl)",
"m" : "m",
"m,nn" : "m,${1:02X}{0:02X}",
"n" : "${0:02X}",
"n,(ix+d)" : "n,(ix+${0:02X})",
"n,(iy+d)" : "n,(iy+${0:02X})",
"(iy+d)" : "(iy+${0:02X})",
"(ix+d)" : "(ix+${0:02X})",
"nc" : "nc",
"nc,n" : "nc,${0:04X}",
"nc,nn" : "nc,${1:02X}{0:02X}",
"nn" : "${1:02X}{0:02X}",
"nz" : "nz",
"nz,n" : "nz,${0:04X}",
"nz,nn" : "nz,${1:02X}{0:02X}",
"p" : "p",
"p,nn" : "p,${1:02X}{0:02X}",
"pe" : "pe",
"pe,nn" : "pe,${1:02X}{0:02X}",
"po" : "po",
"po,nn" : "po,${1:02X}{0:02X}",
"r,a" : "r,a",
"sp" : "sp",
"sp,hl" : "sp,hl",
"sp,indaa" : "sp,(${1:02X}{0:02X})",
"sp,nn" : "sp,${1:02X}{0:02X}",
"z" : "z",
"z,n" : "z,${0:04X}",
"z,nn" : "z,${1:02X}{0:02X}",
}