comparison zdis.c @ 313:a13329645ea3

Fix terminal instruction detection in disassembler
author Mike Pavone <pavone@retrodev.com>
date Thu, 09 May 2013 19:24:18 -0700
parents 852b8765bba6
children 54c0e5f22198
comparison
equal deleted inserted replaced
312:cf7ecda060c7 313:a13329645ea3
133 address += (next-encoded); 133 address += (next-encoded);
134 encoded = next; 134 encoded = next;
135 135
136 //z80_disasm(&instbuf, disbuf); 136 //z80_disasm(&instbuf, disbuf);
137 //printf("%X: %s\n", address, disbuf); 137 //printf("%X: %s\n", address, disbuf);
138 if (instbuf.op == Z80_HALT || instbuf.op == Z80_RET || instbuf.op == Z80_RETI || instbuf.op == Z80_RETN || instbuf.op == Z80_RST) {
139 break;
140 }
141 switch (instbuf.op) 138 switch (instbuf.op)
142 { 139 {
143 case Z80_JR: 140 case Z80_JR:
144 address += instbuf.immed; 141 address += instbuf.immed;
145 encoded = filebuf + address; 142 encoded = filebuf + address;
153 encoded = filebuf + address; 150 encoded = filebuf + address;
154 break; 151 break;
155 case Z80_JPCC: 152 case Z80_JPCC:
156 case Z80_CALL: 153 case Z80_CALL:
157 case Z80_CALLCC: 154 case Z80_CALLCC:
155 case Z80_RST:
158 reference(instbuf.immed); 156 reference(instbuf.immed);
159 def = defer(instbuf.immed, def); 157 def = defer(instbuf.immed, def);
160 break; 158 break;
159 default:
160 if (z80_is_terminal(&instbuf)) {
161 address = filesize + 1;
162 }
161 } 163 }
162 } 164 }
163 } 165 }
164 if (labels) { 166 if (labels) {
165 for (address = filesize; address < (64*1024); address++) { 167 for (address = filesize; address < (64*1024); address++) {