Mercurial > repos > blastem
comparison z80inst.h @ 199:69585e7d474f
Add initial stab at Z80 decoder and disassembler
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 20 Jan 2013 19:11:24 -0800 |
parents | |
children | d3066ceb29d1 |
comparison
equal
deleted
inserted
replaced
198:209a37eed3e7 | 199:69585e7d474f |
---|---|
1 #include <stdint.h> | |
2 | |
3 enum { | |
4 Z80_LD, | |
5 Z80_PUSH, | |
6 Z80_POP, | |
7 Z80_EX, | |
8 Z80_EXX, | |
9 Z80_LDI, | |
10 Z80_LDIR, | |
11 Z80_LDD, | |
12 Z80_LDDR, | |
13 Z80_CPI, | |
14 Z80_CPIR, | |
15 Z80_CPD, | |
16 Z80_CPDR, | |
17 Z80_ADD, | |
18 Z80_ADC, | |
19 Z80_SUB, | |
20 Z80_SBC, | |
21 Z80_AND, | |
22 Z80_OR, | |
23 Z80_XOR, | |
24 Z80_CP, | |
25 Z80_INC, | |
26 Z80_DEC, | |
27 Z80_DAA, | |
28 Z80_CPL, | |
29 Z80_NEG, | |
30 Z80_CCF, | |
31 Z80_SCF, | |
32 Z80_NOP, | |
33 Z80_HALT, | |
34 Z80_DI, | |
35 Z80_EI, | |
36 Z80_IM, | |
37 Z80_RLC, | |
38 Z80_RL, | |
39 Z80_RRC, | |
40 Z80_RR, | |
41 Z80_SL, | |
42 Z80_RLD, | |
43 Z80_RRD, | |
44 Z80_BIT, | |
45 Z80_SET, | |
46 Z80_RES, | |
47 Z80_JP, | |
48 Z80_JPCC, | |
49 Z80_JR, | |
50 Z80_JRCC, | |
51 Z80_DJNZ, | |
52 Z80_CALL, | |
53 Z80_CALLCC, | |
54 Z80_RET, | |
55 Z80_RETCC, | |
56 Z80_RETI, | |
57 Z80_RETN, | |
58 Z80_RST, | |
59 Z80_IN, | |
60 Z80_INI, | |
61 Z80_INIR, | |
62 Z80_INDR, | |
63 Z80_OUT, | |
64 Z80_OUTI, | |
65 Z80_OTIR, | |
66 Z80_OUTD, | |
67 Z80_OTDR | |
68 }; | |
69 | |
70 enum { | |
71 Z80_B=0, | |
72 Z80_C, | |
73 Z80_D, | |
74 Z80_E, | |
75 Z80_H, | |
76 Z80_L, | |
77 Z80_A=7, | |
78 Z80_BC, | |
79 Z80_DE, | |
80 Z80_HL, | |
81 Z80_SP, | |
82 Z80_AF, | |
83 Z80_USE_IMMED, | |
84 Z80_UNUSED | |
85 }; | |
86 | |
87 enum { | |
88 Z80_CC_NZ, | |
89 Z80_CC_Z, | |
90 Z80_CC_NC, | |
91 Z80_CC_C, | |
92 Z80_CC_PO, | |
93 Z80_CC_PE, | |
94 Z80_CC_P, | |
95 Z80_CC_M | |
96 }; | |
97 | |
98 enum { | |
99 Z80_REG, | |
100 Z80_REG_INDIRECT, | |
101 Z80_IMMED, | |
102 Z80_IMMED_INDIRECT, | |
103 Z80_REG_DISPLACE | |
104 }; | |
105 #define Z80_DIR 0x80 | |
106 | |
107 typedef struct { | |
108 uint8_t op; | |
109 uint8_t reg; | |
110 uint8_t addr_mode; | |
111 uint8_t ea_reg; | |
112 uint16_t immed; | |
113 } z80inst; | |
114 | |
115 uint8_t * z80_decode(uint8_t * istream, z80inst * decoded); | |
116 int z80_disasm(z80inst * decoded, char * dst); | |
117 | |
118 |