Mercurial > repos > blastem
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++) { |