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