mirror of
https://github.com/jefftranter/udis.git
synced 2024-05-31 17:41:28 +00:00
Implement more of Z80.
This commit is contained in:
parent
bf9f9f5f95
commit
f761d5d61e
401
z80.py
401
z80.py
|
@ -24,10 +24,18 @@ addressModeTable = {
|
|||
"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",
|
||||
|
@ -82,13 +90,19 @@ addressModeTable = {
|
|||
"hl,de" : "hl,bc",
|
||||
"hl,hl" : "hl,hl",
|
||||
"hl,sp" : "hl,sp",
|
||||
"sp,hl" : "sp,hl",
|
||||
"de,hl" : "de,hl",
|
||||
"bc,nn" : "bc,${1:02X}{0:02X}",
|
||||
"de,nn" : "de,${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,indn" : "a,(${0:02X})",
|
||||
"indnn,a" : "(${1:02X}{0:02X}),a",
|
||||
"hl,indnn" : "hl,(${1:02X}{0:02X})",
|
||||
"indbc,a" : "(bc),a",
|
||||
|
@ -101,6 +115,7 @@ addressModeTable = {
|
|||
"indhl,e" : "(hl),e",
|
||||
"indhl,h" : "(hl),h",
|
||||
"indhl,l" : "(hl),l",
|
||||
"indsp,hl" : "(sp),hl",
|
||||
"a,indde" : "a,(de)",
|
||||
"a,indbc" : "a,(bc)",
|
||||
"b,indhl" : "b,(hl)",
|
||||
|
@ -120,8 +135,23 @@ addressModeTable = {
|
|||
"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}",
|
||||
"00" : "$00",
|
||||
"08" : "$08",
|
||||
"10" : "$10",
|
||||
"18" : "$18",
|
||||
"20" : "$20",
|
||||
"28" : "$28",
|
||||
"30" : "$10",
|
||||
"38" : "$18",
|
||||
}
|
||||
|
||||
|
||||
|
@ -338,74 +368,69 @@ opcodeTable = {
|
|||
0xbe : [ 1, "cp", "indhl" ],
|
||||
0xbf : [ 1, "cp", "a" ],
|
||||
|
||||
# [ "ret nz", 1 ], # c0
|
||||
# [ "pop bc", 1 ], # c1
|
||||
# [ "jp nz,", 3 ], # c2
|
||||
# [ "jp ", 3 ], # c3
|
||||
# [ "call nz,", 3 ], # c4
|
||||
# [ "push bc", 1 ], # c5
|
||||
# [ "ada a,", 2 ], # c6
|
||||
# [ "rst 00", 1 ], # c7
|
||||
# [ "ret z", 1 ], # c8
|
||||
# [ "ret", 1 ], # c9
|
||||
# [ "jp z,", 3 ], # ca
|
||||
# [ "prefix", 2 ], # cb
|
||||
# [ "call z,", 3 ], # cc
|
||||
# [ "call ", 3 ], # cd
|
||||
# [ "adc a,", 2 ], # ce
|
||||
# [ "rst 08", 1 ], # cf
|
||||
#
|
||||
# [ "ret nc", 1 ], # D0
|
||||
# [ "pop de", 1 ], # D1
|
||||
# [ "jp nc,", 3 ], # D2
|
||||
# [ "out (", 2 ], # D3 then append "),a"
|
||||
# [ "call nc,", 3 ], # D4
|
||||
# [ "push de", 1 ], # D5
|
||||
# [ "sub ", 2 ], # D6
|
||||
# [ "rst 10", 1 ], # D7
|
||||
# [ "ret c", 1 ], # D8
|
||||
# [ "exx", 1 ], # D9
|
||||
# [ "jp c,", 3 ], # DA
|
||||
# [ "in a,(", 2 ], # DB then append ")"
|
||||
# [ "call c,", 3 ], # DC
|
||||
# [ "prefix", 2 ], # DD
|
||||
# [ "sbc a,", 2 ], # DE
|
||||
# [ "rst 18", 1 ], # DF
|
||||
#
|
||||
# [ "ret po", 1 ], # E0
|
||||
# [ "pop hl", 1 ], # E1
|
||||
# [ "jp po,", 3 ], # E2
|
||||
# [ "ex (sp),hl", 1 ],# E3
|
||||
# [ "call po,", 3 ], # E4
|
||||
# [ "push hl", 1 ], # E5
|
||||
# [ "and ", 2 ], # E6
|
||||
# [ "rst 20", 1 ], # E7
|
||||
# [ "ret pe", 1 ], # E8
|
||||
# [ "jp (hl)", 1 ], # E9
|
||||
# [ "jp pe,", 3 ], # EA
|
||||
# [ "ex de,hl", 1 ], # EB
|
||||
# [ "call pe,", 3 ], # EC
|
||||
# [ "prefix", 2 ], # ED
|
||||
# [ "xor ", 2 ], # EE
|
||||
# [ "rst 28", 1 ], # EF
|
||||
#
|
||||
# [ "ret p", 1 ], # F0
|
||||
# [ "pop af", 1 ], # F1
|
||||
# [ "jp p,", 3 ], # F2
|
||||
# [ "di", 1 ], # F3
|
||||
# [ "call p,", 3 ], # F4
|
||||
# [ "push af", 1 ], # F5
|
||||
# [ "or ", 2 ], # F6
|
||||
# [ "rst 30", 1 ], # F7
|
||||
# [ "ret m", 1 ], # F8
|
||||
# [ "ld sp,phl", 1 ], # F9
|
||||
# [ "jp m,", 3 ], # FA
|
||||
# [ "ei", 1 ], # FB
|
||||
# [ "call m,", 3 ], # FC
|
||||
# [ "prefix", 2 ], # FD
|
||||
# [ "cp ", 2 ], # FE
|
||||
# [ "rst 38", 1 ], # FF
|
||||
#
|
||||
0xc0 : [ 1, "ret", "nz" ],
|
||||
0xc1 : [ 1, "pop", "bc" ],
|
||||
0xc2 : [ 3, "jp", "nz,nn" ],
|
||||
0xc3 : [ 3, "jp", "nn" ],
|
||||
0xc4 : [ 3, "call","nz,nn" ],
|
||||
0xc5 : [ 1, "push","bc" ],
|
||||
0xc6 : [ 2, "ada", "a,n" ],
|
||||
0xc7 : [ 1, "rst", "00" ],
|
||||
0xc8 : [ 1, "ret", "z" ],
|
||||
0xc9 : [ 1, "ret", "implied" ],
|
||||
0xca : [ 3, "jp", "z,nn" ],
|
||||
0xcc : [ 3, "call","z,nn" ],
|
||||
0xcd : [ 3, "call", "nn" ],
|
||||
0xce : [ 2, "adc", "a,n" ],
|
||||
0xcf : [ 1, "rst", "08" ],
|
||||
|
||||
0xd0 : [ 1, "ret", "nc" ],
|
||||
0xd1 : [ 1, "pop", "de" ],
|
||||
0xd2 : [ 3, "jp", "nc,nn" ],
|
||||
0xd3 : [ 2, "out", "indn,a" ],
|
||||
0xd4 : [ 3, "call", "nc,nn" ],
|
||||
0xd5 : [ 1, "push", "de" ],
|
||||
0xd6 : [ 2, "sub", "n" ],
|
||||
0xd7 : [ 1, "rst", "10" ],
|
||||
0xd8 : [ 1, "ret", "c" ],
|
||||
0xd9 : [ 1, "exx", "implied" ],
|
||||
0xda : [ 3, "jp", "c,nn" ],
|
||||
0xdb : [ 2, "in", "a,indn" ],
|
||||
0xdc : [ 3, "call", "c,nn" ],
|
||||
0xde : [ 2, "sbc", "a,n" ],
|
||||
0xdf : [ 1, "rst", "18" ],
|
||||
|
||||
0xe0 : [ 1, "ret", "po" ],
|
||||
0xe1 : [ 1, "pop", "hl" ],
|
||||
0xe2 : [ 3, "jp", "po,nn" ],
|
||||
0xe3 : [ 1, "ex", "indsp,hl" ],
|
||||
0xe4 : [ 3, "call", "po,nn" ],
|
||||
0xe5 : [ 1, "push", "hl" ],
|
||||
0xe6 : [ 2, "and", "n" ],
|
||||
0xe7 : [ 1, "rst", "20" ],
|
||||
0xe8 : [ 1, "ret", "pe" ],
|
||||
0xe9 : [ 1, "jp", "indhl" ],
|
||||
0xea : [ 3, "jp", "pe,nn" ],
|
||||
0xeb : [ 1, "ex", "de,hl" ],
|
||||
0xec : [ 3, "call", "pe,nn" ],
|
||||
0xee : [ 2, "xor", "n" ],
|
||||
0xef : [ 1, "rst", "28" ],
|
||||
|
||||
0xf0 : [ 1, "ret", "p" ],
|
||||
0xf1 : [ 1, "pop", "af" ],
|
||||
0xf2 : [ 3, "jp", "p,nn" ],
|
||||
0xf3 : [ 1, "di", "implied" ],
|
||||
0xf4 : [ 3, "call", "p,nn" ],
|
||||
0xf5 : [ 1, "push", "af" ],
|
||||
0xf6 : [ 2, "or", "n" ],
|
||||
0xf7 : [ 1, "rst", "30" ],
|
||||
0xf8 : [ 1, "ret", "m" ],
|
||||
0xf9 : [ 1, "ld", "sp,hl" ],
|
||||
0xfa : [ 3, "jp", "m,nn" ],
|
||||
0xfb : [ 1, "ei", "implied" ],
|
||||
0xfc : [ 3, "call", "m,nn" ],
|
||||
0xfe : [ 2, "cp", "n" ],
|
||||
0xff : [ 1, "rst", "38" ],
|
||||
|
||||
# Multibyte instructions
|
||||
|
||||
|
@ -452,243 +477,3 @@ opcodeTable = {
|
|||
# [ "rr l", 2 ], # 1D
|
||||
# [ "rr (hl)", 2 ], # 1E
|
||||
# [ "rr e", 2 ], # 1F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # 2F
|
||||
#
|
||||
# [ "", 2 ], # 20
|
||||
# [ "", 2 ], # 21
|
||||
# [ "", 2 ], # 22
|
||||
# [ "", 2 ], # 23
|
||||
# [ "", 2 ], # 24
|
||||
# [ "", 2 ], # 25
|
||||
# [ "", 2 ], # 26
|
||||
# [ "", 2 ], # 27
|
||||
# [ "", 2 ], # 28
|
||||
# [ "", 2 ], # 29
|
||||
# [ "", 2 ], # 2A
|
||||
# [ "", 2 ], # 2B
|
||||
# [ "", 2 ], # 2C
|
||||
# [ "", 2 ], # 2D
|
||||
# [ "", 2 ], # 2E
|
||||
# [ "", 2 ], # FF
|
||||
#]
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue
Block a user