diff --git a/z80.py b/z80.py index 3e0c39a..3ae0be2 100644 --- a/z80.py +++ b/z80.py @@ -106,6 +106,7 @@ addressModeTable = { "a,indc" : "a,(c)", "a,indde" : "a,(de)", "a,indhl" : "a,(hl)", +"a,indix+d" : "a,(ix+${0:02X})", "a,indn" : "a,(${0:02X})", "a,indnn" : "a,(${1:02X}{0:02X})", "a,l" : "a,l", @@ -122,6 +123,7 @@ addressModeTable = { "b,h" : "b,h", "b,indc" : "b,(c)", "b,indhl" : "b,(hl)", +"b,indix+d" : "b,(ix+${0:02X})", "b,l" : "b,l", "b,n" : "b,${0:02X}", "bc" : "bc", @@ -136,6 +138,7 @@ addressModeTable = { "c,h" : "c,h", "c,indc" : "c,(c)", "c,indhl" : "c,(hl)", +"c,indix+d" : "c,(ix+${0:02X})", "c,l" : "c,l", "c,n" : "b,${0:02X}", "c,n" : "c,${0:04X}", @@ -149,6 +152,7 @@ addressModeTable = { "d,h" : "d,h", "d,indc" : "d,(c)", "d,indhl" : "d,(hl)", +"d,indix+d" : "d,(ix+${0:02X})", "d,l" : "d,l", "d,n" : "d,${0:02X}", "de" : "de", @@ -164,6 +168,7 @@ addressModeTable = { "e,h" : "e,h", "e,indc" : "e,(c)", "e,indhl" : "e,(hl)", +"e,indix+d" : "e,(ix+${0:02X})", "e,l" : "e,l", "e,n" : "e,${0:02X}", "h" : "h", @@ -175,6 +180,7 @@ addressModeTable = { "h,h" : "h,h", "h,indc" : "h,(c)", "h,indhl" : "h,(hl)", +"h,indix+d" : "h,(ix+${0:02X})", "h,l" : "h,l", "h,n" : "h,${0:02X}", "hl" : "hl", @@ -187,6 +193,7 @@ addressModeTable = { "i,a" : "i,a", "indaa,bc" : "(${1:02X}{0:02X}),bc", "indaa,de" : "(${1:02X}{0:02X}),de", +"indaa,ix" : "(${1:02X}{0:02X}),ix", "indaa,sp" : "(${1:02X}{0:02X}),sp", "indbc,a" : "(bc),a", "indc,a" : "(c),a", @@ -206,11 +213,25 @@ addressModeTable = { "indhl,h" : "(hl),h", "indhl,l" : "(hl),l", "indhl,n" : "(hl),(${0:02X})", +"indix+d" : "(ix+${0:02X})", +"indix+d,a" : "(ix+${0:02X}),a", +"indix+d,b" : "(ix+${0:02X}),b", +"indix+d,c" : "(ix+${0:02X}),c", +"indix+d,d" : "(ix+${0:02X}),d", +"indix+d,e" : "(ix+${0:02X}),e", +"indix+d,h" : "(ix+${0:02X}),h", +"indix+d,l" : "(ix+${0:02X}),l", +"indix+d,n" : "(ix+${0:02X}),${1:02X}", "indn,a" : "(${0:02X}),a", "indnn,a" : "(${1:02X}{0:02X}),a", "indnn,hl" : "(${1:02X}{0:02X}),hl", "indsp,hl" : "(sp),hl", +"ix" : "ix", +"ix,aa" : "ix,${0:02X}{1:02X}", "ix,bc" : "ix,bc", +"ix,de" : "ix,de", +"ix,indaa" : "ix,(${1:02X}{0:02X})", +"ix,ix" : "ix,ix", "iy,bc" : "iy,bc", "l" : "l", "l,a" : "l,a", @@ -221,6 +242,7 @@ addressModeTable = { "l,h" : "l,h", "l,indc" : "l,(c)", "l,indhl" : "l,(hl)", +"l,indix+d" : "l,(ix+${0:02X})", "l,l" : "l,l", "l,n" : "l,${0:02X}", "m" : "m", @@ -246,6 +268,7 @@ addressModeTable = { "sp,hl" : "sp,hl", "sp,indaa" : "sp,(${1:02X}{0:02X})", "sp,nn" : "sp,${1:02X}{0:02X}", +"xy,sp" : "xy,sp", "z" : "z", "z,n" : "z,${0:04X}", "z,nn" : "z,${1:02X}{0:02X}", @@ -796,6 +819,39 @@ opcodeTable = { 0xcbff : [ 2, "set", "7,a" ], 0xdd09 : [ 2, "add", "ix,bc" ], +0xdd19 : [ 2, "add", "ix,de" ], +0xdd21 : [ 4, "ld", "ix,aa" ], +0xdd22 : [ 4, "ld", "indaa,ix" ], +0xdd23 : [ 2, "inc", "ix" ], +0xdd29 : [ 2, "add", "ix,ix" ], +0xdd2a : [ 4, "ld", "ix,indaa" ], +0xdd2b : [ 2, "dec", "ix" ], +0xdd34 : [ 3, "inc", "indix+d" ], +0xdd35 : [ 3, "dec", "indix+d" ], +0xdd36 : [ 4, "ld", "indix+d,n" ], +0xdd39 : [ 2, "add", "xy,sp" ], +0xdd46 : [ 3, "ld", "b,indix+d" ], +0xdd4e : [ 3, "ld", "c,indix+d" ], +0xdd56 : [ 3, "ld", "d,indix+d" ], +0xdd5e : [ 3, "ld", "e,indix+d" ], +0xdd66 : [ 3, "ld", "h,indix+d" ], +0xdd6e : [ 3, "ld", "l,indix+d" ], +0xdd70 : [ 3, "ld", "indix+d,b" ], +0xdd71 : [ 3, "ld", "indix+d,c" ], +0xdd72 : [ 3, "ld", "indix+d,d" ], +0xdd73 : [ 3, "ld", "indix+d,e" ], +0xdd74 : [ 3, "ld", "indix+d,h" ], +0xdd75 : [ 3, "ld", "indix+d,l" ], +0xdd77 : [ 3, "ld", "indix+d,a" ], +0xdd7e : [ 3, "ld", "a,indix+d" ], +0xdd86 : [ 3, "add", "a,indix+d" ], +0xdd8e : [ 3, "adc", "a,indix+d" ], +0xdd96 : [ 3, "sub", "indix+d" ], +0xdd9e : [ 3, "sbc", "a,indix+d" ], +0xdda6 : [ 3, "and", "indix+d" ], +0xddae : [ 3, "xor", "indix+d" ], +0xddb6 : [ 3, "or", "indix+d" ], +0xddbe : [ 3, "cp", "indix+d" ], 0xdd8e : [3, "adc", "(ix+d)" ],