1
disassemble(unsigned char * memory,uint16_t ptr,char opcode[5],char param1[9],char param2[11],char comment[8],int * length,uint16_t * alt_ptr)2 static int disassemble (unsigned char *memory, uint16_t ptr, char opcode[5], char param1[9], char param2[11], char comment[8], int *length, uint16_t *alt_ptr)
3 {
4 switch (memory[ptr])
5 {
6 case 0x00: strcpy (opcode, "BRK"); *length = 1; return 0;
7 case 0x01: strcpy (opcode, "ORA"); *length = 2; sprintf (param1, "($%02x,X)", memory[ptr+1]); return 0;
8 case 0x05: strcpy (opcode, "ORA"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
9 case 0x06: strcpy (opcode, "ASL"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
10 case 0x08: strcpy (opcode, "PHP"); *length = 1; return 0;
11 case 0x09: strcpy (opcode, "ORA"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
12 case 0x0A: strcpy (opcode, "ASL"); *length = 1; strcpy (param1, "A"); return 0;
13 case 0x0D: strcpy (opcode, "ORA"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
14 case 0x0E: strcpy (opcode, "ASL"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
15
16 case 0x10: strcpy (opcode, "BPL"); *length = 2; sprintf (param1, "&$%04x", *alt_ptr = (uint16_t)(ptr + (signed char)memory[ptr+1] + *length));
17 sprintf (comment, "%02x", memory[ptr+1]); return 1;
18 case 0x11: strcpy (opcode, "ORA"); *length = 2; sprintf (param1, "($%02x)", memory[ptr+1]);
19 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
20 case 0x15: strcpy (opcode, "ORA"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
21 strcpy (param2, "X"); return 0; //// could merge into param1 ???
22 case 0x16: strcpy (opcode, "ASL"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
23 strcpy (param2, "X"); return 0; //// could merge into param1 ???
24 case 0x18: strcpy (opcode, "CLC"); *length = 1; return 0;
25 case 0x19: strcpy (opcode, "ORA"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
26 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
27 case 0x1D: strcpy (opcode, "ORA"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
28 strcpy (param2, "X"); return 0; //// could merge into param1 ???
29 case 0x1E: strcpy (opcode, "ASL"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
30 strcpy (param2, "X"); return 0; //// could merge into param1 ???
31
32 case 0x20: strcpy (opcode, "JSR"); *length = 3; sprintf (param1, "&$%04x", *alt_ptr = (uint16_t)((memory[ptr+2]<<8) | memory[ptr+1])); return 1;
33 case 0x21: strcpy (opcode, "AND"); *length = 2; sprintf (param1, "($%02x,X)", memory[ptr+1]); return 0;
34 case 0x24: strcpy (opcode, "BIT"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
35 case 0x25: strcpy (opcode, "AND"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
36 case 0x26: strcpy (opcode, "ROL"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
37 case 0x28: strcpy (opcode, "PLP"); *length = 1; return 0;
38 case 0x29: strcpy (opcode, "AND"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
39 case 0x2A: strcpy (opcode, "ROL"); *length = 1; strcpy (param1, "A"); return 0;
40 case 0x2D: strcpy (opcode, "AND"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
41 case 0x2C: strcpy (opcode, "BIT"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+3], memory[ptr+1]); return 0;
42 case 0x2E: strcpy (opcode, "ROL"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
43 strcpy (param2, "X"); return 0; //// could merge into param1 ???
44
45 case 0x30: strcpy (opcode, "BMI"); *length = 2; sprintf (param1, "&$%04x", *alt_ptr = (uint16_t)(ptr + (signed char)memory[ptr+1] + *length));
46 sprintf (comment, "%02x", memory[ptr+1]); return 1;
47 case 0x31: strcpy (opcode, "AND"); *length = 2; sprintf (param1, "($%02x)", memory[ptr+1]);
48 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
49
50 case 0x35: strcpy (opcode, "AND"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
51 strcpy (param2, "X"); return 0; //// could merge into param1 ???
52 case 0x36: strcpy (opcode, "ROL"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
53 strcpy (param2, "X"); return 0; //// could merge into param1 ???
54 case 0x38: strcpy (opcode, "SEC"); *length = 1; return 0;
55 case 0x39: strcpy (opcode, "AND"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
56 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
57 case 0x3D: strcpy (opcode, "AND"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
58 strcpy (param2, "X"); return 0; //// could merge into param1 ???
59 case 0x3E: strcpy (opcode, "ROL"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
60 strcpy (param2, "X"); return 0; //// could merge into param1 ???
61
62 case 0x40: strcpy (opcode, "RTI"); *length = 1; return -1;
63 case 0x41: strcpy (opcode, "EOR"); *length = 2; sprintf (param1, "($%02x)", memory[ptr+1]); return 0;
64 case 0x45: strcpy (opcode, "EOR"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
65 case 0x46: strcpy (opcode, "LSR"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
66 case 0x48: strcpy (opcode, "PHA"); *length = 1; return 0;
67 case 0x49: strcpy (opcode, "EOR"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
68 case 0x4A: strcpy (opcode, "LSR"); *length = 1; strcpy (param1, "A"); return 0;
69 case 0x4C: strcpy (opcode, "JMP"); *length = 3; sprintf (param1, "&$%04x", *alt_ptr = (uint16_t)((memory[ptr+2] << 8) | memory[ptr+1])); return 2;
70 case 0x4D: strcpy (opcode, "EOR"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
71 case 0x4E: strcpy (opcode, "LSR"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
72
73 case 0x50: strcpy (opcode, "BVC"); *length = 2; sprintf (param1, "&$%04x", *alt_ptr = (uint16_t)(ptr + (signed char)memory[ptr+1] + *length));
74 sprintf (comment, "%02x", memory[ptr+1]); return 1;
75 case 0x51: strcpy (opcode, "EOR"); *length = 2; sprintf (param1, "($%02x)", memory[ptr+1]);
76 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
77 case 0x55: strcpy (opcode, "EOR"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
78 strcpy (param2, "X"); return 0; //// could merge into param1 ???
79 case 0x56: strcpy (opcode, "LSR"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
80 strcpy (param2, "X"); return 0; //// could merge into param1 ???
81 case 0x58: strcpy (opcode, "CLI"); *length = 1; return 0;
82 case 0x59: strcpy (opcode, "EOR"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
83 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
84 case 0x5D: strcpy (opcode, "EOR"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
85 strcpy (param2, "X"); return 0; //// could merge into param1 ???
86 case 0x5E: strcpy (opcode, "LSR"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
87 strcpy (param2, "X"); return 0; //// could merge into param1 ???
88
89 case 0x60: strcpy (opcode, "RTS"); *length = 1; return -1;
90 case 0x61: strcpy (opcode, "ADC"); *length = 2; sprintf (param1, "($%02x,X)", memory[ptr+1]); return 0;
91 case 0x65: strcpy (opcode, "ADC"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
92 case 0x66: strcpy (opcode, "ROR"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
93 case 0x68: strcpy (opcode, "PLA"); *length = 1; return 0;
94 case 0x69: strcpy (opcode, "ADC"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
95 case 0x6A: strcpy (opcode, "ROR"); *length = 1; strcpy (param1, "A"); return 0;
96 case 0x6C: strcpy (opcode, "JMP"); *length = 2; sprintf (param1, "&($%02x%02x)", memory[ptr+2], memory[ptr+1]); return -1;
97 case 0x6D: strcpy (opcode, "ADC"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
98 case 0x6E: strcpy (opcode, "ROR"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
99
100 case 0x70: strcpy (opcode, "BVS"); *length = 2; sprintf (param1, "&$%04x", *alt_ptr = (uint16_t)(ptr + (signed char)memory[ptr+1] + *length));
101 sprintf (comment, "%02x", memory[ptr+1]); return 1;
102 case 0x71: strcpy (opcode, "ADC"); *length = 2; sprintf (param1, "($%02x)", memory[ptr+1]);
103 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
104 case 0x75: strcpy (opcode, "ADC"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
105 strcpy (param2, "X"); return 0; //// could merge into param1 ???
106 case 0x76: strcpy (opcode, "ROR"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
107 strcpy (param2, "X"); return 0; //// could merge into param1 ???
108 case 0x78: strcpy (opcode, "SEI"); *length = 1; return 0;
109 case 0x79: strcpy (opcode, "ADC"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
110 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
111 case 0x7D: strcpy (opcode, "ADC"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
112 strcpy (param2, "X"); return 0; //// could merge into param1 ???
113 case 0x7E: strcpy (opcode, "ROR"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
114 strcpy (param2, "X"); return 0; //// could merge into param1 ???
115
116 case 0x81: strcpy (opcode, "STA"); *length = 2; sprintf (param1, "($%02x,X)", memory[ptr+1]); return 0;
117 case 0x84: strcpy (opcode, "STY"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
118 case 0x85: strcpy (opcode, "STA"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
119 case 0x86: strcpy (opcode, "STX"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
120 case 0x88: strcpy (opcode, "DEY"); *length = 1; return 0;
121 case 0x8A: strcpy (opcode, "TXA"); *length = 1; return 0;
122 case 0x8C: strcpy (opcode, "STY"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
123 case 0x8D: strcpy (opcode, "STA"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
124 case 0x8E: strcpy (opcode, "STX"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
125
126 case 0x90: strcpy (opcode, "BCC"); *length = 2; sprintf (param1, "&$%04x", *alt_ptr = (uint16_t)(ptr + (signed char)memory[ptr+1] + *length));
127 sprintf (comment, "%02x", memory[ptr+1]); return 1;
128 case 0x91: strcpy (opcode, "STA"); *length = 2; sprintf (param1, "($%02x)", memory[ptr+1]);
129 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
130 case 0x94: strcpy (opcode, "STY"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
131 strcpy (param2, "X"); return 0; //// could merge into param1 ???
132 case 0x95: strcpy (opcode, "STA"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
133 strcpy (param2, "X"); return 0; //// could merge into param1 ???
134 case 0x96: strcpy (opcode, "STX"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
135 strcpy (param2, "X"); return 0; //// could merge into param1 ???
136 case 0x98: strcpy (opcode, "TYA"); *length = 1; return 0;
137 case 0x99: strcpy (opcode, "STA"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
138 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
139 case 0x9A: strcpy (opcode, "TXS"); *length = 1; return 0;
140 case 0x9D: strcpy (opcode, "STA"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
141 strcpy (param2, "X"); return 0; //// could merge into param1 ???
142
143 case 0xA0: strcpy (opcode, "LDY"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
144 case 0xA1: strcpy (opcode, "LDA"); *length = 2; sprintf (param1, "($%02x,X)", memory[ptr+1]); return 0;
145 case 0xA2: strcpy (opcode, "LDX"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
146 case 0xA4: strcpy (opcode, "LDY"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
147 case 0xA5: strcpy (opcode, "LDA"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
148 case 0xA6: strcpy (opcode, "LDX"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
149 case 0xA8: strcpy (opcode, "TAY"); *length = 1; return 0;
150 case 0xA9: strcpy (opcode, "LDA"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
151 case 0xAA: strcpy (opcode, "TAX"); *length = 1; return 0;
152 case 0xAC: strcpy (opcode, "LDY"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
153 case 0xAD: strcpy (opcode, "LDA"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
154 case 0xAE: strcpy (opcode, "LDX"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
155
156 case 0xB0: strcpy (opcode, "BCS"); *length = 2; sprintf (param1, "&$%04x", *alt_ptr = (uint16_t)(ptr + (signed char)memory[ptr+1] + *length));
157 sprintf (comment, "%02x", memory[ptr+1]); return 1;
158 case 0xB1: strcpy (opcode, "LDA"); *length = 2; sprintf (param1, "($%02x)", memory[ptr+1]);
159 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
160 case 0xB4: strcpy (opcode, "LDY"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
161 strcpy (param2, "X"); return 0; //// could merge into param1 ???
162 case 0xB5: strcpy (opcode, "LDA"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
163 strcpy (param2, "X"); return 0; //// could merge into param1 ???
164 case 0xB6: strcpy (opcode, "LDX"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
165 strcpy (param2, "X"); return 0; //// could merge into param1 ???
166 case 0xB8: strcpy (opcode, "CLV"); *length = 1; return 0;
167 case 0xB9: strcpy (opcode, "LDA"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
168 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
169 case 0xBA: strcpy (opcode, "TSX"); *length = 1; return 0;
170
171 case 0xBC: strcpy (opcode, "LDY"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
172 strcpy (param2, "X"); return 0; //// could merge into param1 ???
173 case 0xBD: strcpy (opcode, "LDA"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
174 strcpy (param2, "X"); return 0; //// could merge into param1 ???
175 case 0xBE: strcpy (opcode, "LDX"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
176 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
177
178 case 0xC0: strcpy (opcode, "CPY"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
179 case 0xC1: strcpy (opcode, "CMP"); *length = 2; sprintf (param1, "($%02x,X)", memory[ptr+1]); return 0;
180 case 0xC4: strcpy (opcode, "CPY"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
181 case 0xC5: strcpy (opcode, "CMP"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
182 case 0xC6: strcpy (opcode, "DEC"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
183 case 0xC8: strcpy (opcode, "INY"); *length = 1; return 0;
184 case 0xC9: strcpy (opcode, "CMP"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
185 case 0xCA: strcpy (opcode, "DEX"); *length = 1; return 0;
186 case 0xCC: strcpy (opcode, "CPY"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
187 case 0xCD: strcpy (opcode, "CMP"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
188 case 0xCE: strcpy (opcode, "DEC"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
189
190 case 0xD0: strcpy (opcode, "BNE"); *length = 2; sprintf (param1, "&$%04x", *alt_ptr = (uint16_t)(ptr + (signed char)memory[ptr+1] + *length));
191 sprintf (comment, "%02x", memory[ptr+1]); return 1;
192 case 0xD1: strcpy (opcode, "CMP"); *length = 2; sprintf (param1, "($%02x)", memory[ptr+1]);
193 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
194 case 0xD5: strcpy (opcode, "CMP"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
195 strcpy (param2, "X"); return 0; //// could merge into param1 ???
196 case 0xD6: strcpy (opcode, "DEC"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
197 strcpy (param2, "X"); return 0; //// could merge into param1 ???
198 case 0xD8: strcpy (opcode, "CLD"); *length = 1; return 0;
199 case 0xD9: strcpy (opcode, "CMP"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
200 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
201 case 0xDD: strcpy (opcode, "CMP"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
202 strcpy (param2, "X"); return 0; //// could merge into param1 ???
203 case 0xDE: strcpy (opcode, "DEC"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
204 strcpy (param2, "X"); return 0; //// could merge into param1 ???
205
206 case 0xE0: strcpy (opcode, "CPX"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
207 case 0xE1: strcpy (opcode, "SBC"); *length = 2; sprintf (param1, "($%02x,X)", memory[ptr+1]); return 0;
208 case 0xE4: strcpy (opcode, "CPX"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
209 case 0xE5: strcpy (opcode, "SBC"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
210 case 0xE6: strcpy (opcode, "INC"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]); return 0;
211 case 0xE8: strcpy (opcode, "INX"); *length = 1; return 0;
212 case 0xE9: strcpy (opcode, "SBC"); *length = 2; sprintf (param1, "#$%02x", memory[ptr+1]); return 0;
213 case 0xEA: strcpy (opcode, "NOP"); *length = 1; return 0;
214 case 0xEC: strcpy (opcode, "CPX"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
215 case 0xED: strcpy (opcode, "SBC"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
216 case 0xEE: strcpy (opcode, "INC"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]); return 0;
217
218 case 0xF0: strcpy (opcode, "BEQ"); *length = 2; sprintf (param1, "&$%04x", *alt_ptr = (uint16_t)(ptr + (signed char)memory[ptr+1] + *length));
219 sprintf (comment, "%02x", memory[ptr+1]); return 1;
220 case 0xF1: strcpy (opcode, "SBC"); *length = 2; sprintf (param1, "($%02x)", memory[ptr+1]);
221 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
222 case 0xF5: strcpy (opcode, "SBC"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
223 strcpy (param2, "X"); return 0; //// could merge into param1 ???
224 case 0xF6: strcpy (opcode, "INC"); *length = 2; sprintf (param1, "$%02x", memory[ptr+1]);
225 strcpy (param2, "X"); return 0; //// could merge into param1 ???
226 case 0xF8: strcpy (opcode, "SED"); *length = 1; return 0;
227 case 0xF9: strcpy (opcode, "SBC"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
228 strcpy (param2, "Y"); return 0; //// could merge into param1 ???
229 case 0xFD: strcpy (opcode, "SBC"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
230 strcpy (param2, "X"); return 0; //// could merge into param1 ???
231 case 0xFE: strcpy (opcode, "SBC"); *length = 3; sprintf (param1, "$%02x%02x", memory[ptr+2], memory[ptr+1]);
232 strcpy (param2, "X"); return 0; //// could merge into param1 ???
233 }
234 return -2;
235 }
236
237