Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
9837 | turbocat | 1 | ; For assembly by NASM only |
2 | bits 32 |
||
3 | |||
4 | ; Theory of operation |
||
5 | |||
6 | ; EDI=General purpose |
||
7 | ; ESI=Program counter + base address |
||
8 | ; EBP=z80Base |
||
9 | ; AX=AF |
||
10 | ; BX=HL |
||
11 | ; CX=BC |
||
12 | ; DX=General purpose |
||
13 | |||
14 | ; Using stack calling conventions |
||
15 | ; Extended input/output instructions treat (C) as I/O address |
||
16 | |||
17 | IFF1 equ 01h |
||
18 | IFF2 equ 02h |
||
19 | CPUREG_PC equ 00h |
||
20 | CPUREG_SP equ 01h |
||
21 | CPUREG_AF equ 02h |
||
22 | CPUREG_BC equ 03h |
||
23 | CPUREG_DE equ 04h |
||
24 | CPUREG_HL equ 05h |
||
25 | CPUREG_AFPRIME equ 06h |
||
26 | CPUREG_BCPRIME equ 07h |
||
27 | CPUREG_DEPRIME equ 08h |
||
28 | CPUREG_HLPRIME equ 09h |
||
29 | CPUREG_IX equ 0ah |
||
30 | CPUREG_IY equ 0bh |
||
31 | CPUREG_I equ 0ch |
||
32 | CPUREG_A equ 0dh |
||
33 | CPUREG_F equ 0eh |
||
34 | CPUREG_B equ 0fh |
||
35 | CPUREG_C equ 10h |
||
36 | CPUREG_D equ 11h |
||
37 | CPUREG_E equ 12h |
||
38 | CPUREG_H equ 13h |
||
39 | CPUREG_L equ 14h |
||
40 | CPUREG_IFF1 equ 15h |
||
41 | CPUREG_IFF2 equ 16h |
||
42 | CPUREG_CARRY equ 17h |
||
43 | CPUREG_NEGATIVE equ 18h |
||
44 | CPUREG_PARITY equ 19h |
||
45 | CPUREG_OVERFLOW equ 1ah |
||
46 | CPUREG_HALFCARRY equ 1bh |
||
47 | CPUREG_ZERO equ 1ch |
||
48 | CPUREG_SIGN equ 1dh |
||
49 | CPUREG_MAXINDEX equ 1eh |
||
50 | |||
51 | |||
52 | |||
53 | section .data use32 flat class=data |
||
54 | |||
55 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
56 | |||
57 | global _mz80contextBegin |
||
58 | _mz80contextBegin: |
||
59 | global _z80pc |
||
60 | global z80pc_ |
||
61 | global z80pc |
||
62 | global _z80nmiAddr |
||
63 | global _z80intAddr |
||
64 | global z80intAddr |
||
65 | |||
66 | ; DO NOT CHANGE THE ORDER OF AF, BC, DE, HL and THE PRIME REGISTERS! |
||
67 | |||
68 | _z80Base dd 0 ; Base address for Z80 stuff |
||
69 | _z80MemRead dd 0 ; Offset of memory read structure array |
||
70 | _z80MemWrite dd 0 ; Offset of memory write structure array |
||
71 | _z80IoRead dd 0 ; Base address for I/O reads list |
||
72 | _z80IoWrite dd 0 ; Base address for I/O write list |
||
73 | _z80clockticks dd 0 ; # Of clock tips that have elapsed |
||
74 | _z80iff dd 0 ; Non-zero if we're in an interrupt |
||
75 | _z80interruptMode dd 0 ; Interrupt mode |
||
76 | _z80halted dd 0 ; 0=Not halted, 1=Halted |
||
77 | _z80af dd 0 ; A Flag & Flags |
||
78 | _z80bc dd 0 ; BC |
||
79 | _z80de dd 0 ; DE |
||
80 | _z80hl dd 0 ; HL |
||
81 | _z80afprime dd 0 ; A Flag & Flags prime |
||
82 | _z80bcprime dd 0 ; BC prime |
||
83 | _z80deprime dd 0 ; DE prime |
||
84 | _z80hlprime dd 0 ; HL prime |
||
85 | |||
86 | ; The order of the following registers can be changed without adverse |
||
87 | ; effect. Keep the WORD and DWORDs on boundaries of two for faster access |
||
88 | |||
89 | _z80ix dd 0 ; IX |
||
90 | _z80iy dd 0 ; IY |
||
91 | _z80sp dd 0 ; Stack pointer |
||
92 | z80pc: |
||
93 | z80pc_: |
||
94 | _z80pc dd 0 ; PC |
||
95 | _z80nmiAddr dd 0 ; Address to jump to for NMI |
||
96 | z80intAddr: |
||
97 | _z80intAddr dd 0 ; Address to jump to for INT |
||
98 | _z80rCounter dd 0 ; R Register counter |
||
99 | _z80i db 0 ; I register |
||
100 | _z80r db 0 ; R register |
||
101 | _z80intPending db 0 ; Non-zero if an interrupt is pending |
||
102 | |||
103 | _mz80contextEnd: |
||
104 | |||
105 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
106 | |||
107 | dwElapsedTicks dd 0 ; # Of ticks elapsed |
||
108 | cyclesRemaining dd 0 ; # Of cycles remaining |
||
109 | dwOriginalExec dd 0 ; # Of cycles originally executing |
||
110 | dwLastRSample dd 0 ; Last sample for R computation |
||
111 | dwEITiming dd 0 ; Used when we cause an interrupt |
||
112 | _orgval dw 0 ; Scratch area |
||
113 | _orgval2 dw 0 ; Scratch area |
||
114 | _wordval dw 0 ; Scratch area |
||
115 | _intData db 0 ; Interrupt data when an interrupt is pending |
||
116 | bEIExit db 0 ; Are we exiting because of an EI instruction? |
||
117 | |||
118 | RegTextPC db 'PC',0 |
||
119 | RegTextAF db 'AF',0 |
||
120 | RegTextBC db 'BC',0 |
||
121 | RegTextDE db 'DE',0 |
||
122 | RegTextHL db 'HL',0 |
||
123 | RegTextAFP db 'AF',27h,0 |
||
124 | RegTextBCP db 'BC',27h,0 |
||
125 | RegTextDEP db 'DE',27h,0 |
||
126 | RegTextHLP db 'HL',27h,0 |
||
127 | RegTextIX db 'IX',0 |
||
128 | RegTextIY db 'IY',0 |
||
129 | RegTextSP db 'SP',0 |
||
130 | RegTextI db 'I',0 |
||
131 | RegTextR db 'R',0 |
||
132 | RegTextA db 'A',0 |
||
133 | RegTextB db 'B',0 |
||
134 | RegTextC db 'C',0 |
||
135 | RegTextD db 'D',0 |
||
136 | RegTextE db 'E',0 |
||
137 | RegTextH db 'H',0 |
||
138 | RegTextL db 'L',0 |
||
139 | RegTextF db 'F',0 |
||
140 | RegTextCarry db 'Carry',0 |
||
141 | RegTextNegative db 'Negative',0 |
||
142 | RegTextParity db 'Parity',0 |
||
143 | RegTextOverflow db 'Overflow',0 |
||
144 | RegTextHalfCarry db 'HalfCarry',0 |
||
145 | RegTextZero db 'Zero',0 |
||
146 | RegTextSign db 'Sign',0 |
||
147 | RegTextIFF1 db 'IFF1',0 |
||
148 | RegTextIFF2 db 'IFF2',0 |
||
149 | |||
150 | intModeTStates: |
||
151 | db 13 ; IM 0 - 13 T-States |
||
152 | db 11 ; IM 1 - 11 T-States |
||
153 | db 11 ; IM 2 - 11 T-States |
||
154 | |||
155 | |||
156 | ; |
||
157 | ; Info is in: pointer to text, address, shift value, mask value, size of data chunk |
||
158 | ; |
||
159 | |||
160 | RegTable: |
||
161 | dd RegTextPC, _z80pc - _mz80contextBegin, 0, 0ffffh |
||
162 | dd RegTextSP, _z80sp - _mz80contextBegin, 0, 0ffffh |
||
163 | dd RegTextAF, _z80af - _mz80contextBegin, 0, 0ffffh |
||
164 | dd RegTextBC, _z80bc - _mz80contextBegin, 0, 0ffffh |
||
165 | dd RegTextDE, _z80de - _mz80contextBegin, 0, 0ffffh |
||
166 | dd RegTextHL, _z80hl - _mz80contextBegin, 0, 0ffffh |
||
167 | dd RegTextAFP, _z80af - _mz80contextBegin, 0, 0ffffh |
||
168 | dd RegTextBCP, _z80bc - _mz80contextBegin, 0, 0ffffh |
||
169 | dd RegTextDEP, _z80de - _mz80contextBegin, 0, 0ffffh |
||
170 | dd RegTextHLP, _z80hl - _mz80contextBegin, 0, 0ffffh |
||
171 | dd RegTextIX, _z80ix - _mz80contextBegin, 0, 0ffffh |
||
172 | dd RegTextIY, _z80iy - _mz80contextBegin, 0, 0ffffh |
||
173 | dd RegTextI, _z80i - _mz80contextBegin, 0, 0ffh |
||
174 | dd RegTextR, _z80r - _mz80contextBegin, 0, 0ffh |
||
175 | dd RegTextA, (_z80af + 1) - _mz80contextBegin, 0, 0ffh |
||
176 | dd RegTextF, _z80af - _mz80contextBegin, 0, 0ffh |
||
177 | dd RegTextB, (_z80bc + 1) - _mz80contextBegin, 0, 0ffh |
||
178 | dd RegTextC, _z80bc - _mz80contextBegin, 0, 0ffh |
||
179 | dd RegTextD, (_z80de + 1) - _mz80contextBegin, 0, 0ffh |
||
180 | dd RegTextE, _z80de - _mz80contextBegin, 0, 0ffh |
||
181 | dd RegTextH, (_z80hl + 1) - _mz80contextBegin, 0, 0ffh |
||
182 | dd RegTextL, _z80hl - _mz80contextBegin, 0, 0ffh |
||
183 | dd RegTextIFF1, _z80iff - _mz80contextBegin, 0, 01h |
||
184 | dd RegTextIFF2, _z80iff - _mz80contextBegin, 1, 01h |
||
185 | dd RegTextCarry, _z80af - _mz80contextBegin, 0, 01h |
||
186 | dd RegTextNegative, _z80af - _mz80contextBegin, 1, 01h |
||
187 | dd RegTextParity, _z80af - _mz80contextBegin, 2, 01h |
||
188 | dd RegTextOverflow, _z80af - _mz80contextBegin, 2, 01h |
||
189 | dd RegTextHalfCarry, _z80af - _mz80contextBegin, 4, 01h |
||
190 | dd RegTextZero, _z80af - _mz80contextBegin, 6, 01h |
||
191 | dd RegTextSign, _z80af - _mz80contextBegin, 7, 01h |
||
192 | |||
193 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
194 | |||
195 | z80regular: |
||
196 | dd RegInst00 |
||
197 | dd RegInst01 |
||
198 | dd RegInst02 |
||
199 | dd RegInst03 |
||
200 | dd RegInst04 |
||
201 | dd RegInst05 |
||
202 | dd RegInst06 |
||
203 | dd RegInst07 |
||
204 | dd RegInst08 |
||
205 | dd RegInst09 |
||
206 | dd RegInst0a |
||
207 | dd RegInst0b |
||
208 | dd RegInst0c |
||
209 | dd RegInst0d |
||
210 | dd RegInst0e |
||
211 | dd RegInst0f |
||
212 | dd RegInst10 |
||
213 | dd RegInst11 |
||
214 | dd RegInst12 |
||
215 | dd RegInst13 |
||
216 | dd RegInst14 |
||
217 | dd RegInst15 |
||
218 | dd RegInst16 |
||
219 | dd RegInst17 |
||
220 | dd RegInst18 |
||
221 | dd RegInst19 |
||
222 | dd RegInst1a |
||
223 | dd RegInst1b |
||
224 | dd RegInst1c |
||
225 | dd RegInst1d |
||
226 | dd RegInst1e |
||
227 | dd RegInst1f |
||
228 | dd RegInst20 |
||
229 | dd RegInst21 |
||
230 | dd RegInst22 |
||
231 | dd RegInst23 |
||
232 | dd RegInst24 |
||
233 | dd RegInst25 |
||
234 | dd RegInst26 |
||
235 | dd RegInst27 |
||
236 | dd RegInst28 |
||
237 | dd RegInst29 |
||
238 | dd RegInst2a |
||
239 | dd RegInst2b |
||
240 | dd RegInst2c |
||
241 | dd RegInst2d |
||
242 | dd RegInst2e |
||
243 | dd RegInst2f |
||
244 | dd RegInst30 |
||
245 | dd RegInst31 |
||
246 | dd RegInst32 |
||
247 | dd RegInst33 |
||
248 | dd RegInst34 |
||
249 | dd RegInst35 |
||
250 | dd RegInst36 |
||
251 | dd RegInst37 |
||
252 | dd RegInst38 |
||
253 | dd RegInst39 |
||
254 | dd RegInst3a |
||
255 | dd RegInst3b |
||
256 | dd RegInst3c |
||
257 | dd RegInst3d |
||
258 | dd RegInst3e |
||
259 | dd RegInst3f |
||
260 | dd RegInst40 |
||
261 | dd RegInst41 |
||
262 | dd RegInst42 |
||
263 | dd RegInst43 |
||
264 | dd RegInst44 |
||
265 | dd RegInst45 |
||
266 | dd RegInst46 |
||
267 | dd RegInst47 |
||
268 | dd RegInst48 |
||
269 | dd RegInst49 |
||
270 | dd RegInst4a |
||
271 | dd RegInst4b |
||
272 | dd RegInst4c |
||
273 | dd RegInst4d |
||
274 | dd RegInst4e |
||
275 | dd RegInst4f |
||
276 | dd RegInst50 |
||
277 | dd RegInst51 |
||
278 | dd RegInst52 |
||
279 | dd RegInst53 |
||
280 | dd RegInst54 |
||
281 | dd RegInst55 |
||
282 | dd RegInst56 |
||
283 | dd RegInst57 |
||
284 | dd RegInst58 |
||
285 | dd RegInst59 |
||
286 | dd RegInst5a |
||
287 | dd RegInst5b |
||
288 | dd RegInst5c |
||
289 | dd RegInst5d |
||
290 | dd RegInst5e |
||
291 | dd RegInst5f |
||
292 | dd RegInst60 |
||
293 | dd RegInst61 |
||
294 | dd RegInst62 |
||
295 | dd RegInst63 |
||
296 | dd RegInst64 |
||
297 | dd RegInst65 |
||
298 | dd RegInst66 |
||
299 | dd RegInst67 |
||
300 | dd RegInst68 |
||
301 | dd RegInst69 |
||
302 | dd RegInst6a |
||
303 | dd RegInst6b |
||
304 | dd RegInst6c |
||
305 | dd RegInst6d |
||
306 | dd RegInst6e |
||
307 | dd RegInst6f |
||
308 | dd RegInst70 |
||
309 | dd RegInst71 |
||
310 | dd RegInst72 |
||
311 | dd RegInst73 |
||
312 | dd RegInst74 |
||
313 | dd RegInst75 |
||
314 | dd RegInst76 |
||
315 | dd RegInst77 |
||
316 | dd RegInst78 |
||
317 | dd RegInst79 |
||
318 | dd RegInst7a |
||
319 | dd RegInst7b |
||
320 | dd RegInst7c |
||
321 | dd RegInst7d |
||
322 | dd RegInst7e |
||
323 | dd RegInst7f |
||
324 | dd RegInst80 |
||
325 | dd RegInst81 |
||
326 | dd RegInst82 |
||
327 | dd RegInst83 |
||
328 | dd RegInst84 |
||
329 | dd RegInst85 |
||
330 | dd RegInst86 |
||
331 | dd RegInst87 |
||
332 | dd RegInst88 |
||
333 | dd RegInst89 |
||
334 | dd RegInst8a |
||
335 | dd RegInst8b |
||
336 | dd RegInst8c |
||
337 | dd RegInst8d |
||
338 | dd RegInst8e |
||
339 | dd RegInst8f |
||
340 | dd RegInst90 |
||
341 | dd RegInst91 |
||
342 | dd RegInst92 |
||
343 | dd RegInst93 |
||
344 | dd RegInst94 |
||
345 | dd RegInst95 |
||
346 | dd RegInst96 |
||
347 | dd RegInst97 |
||
348 | dd RegInst98 |
||
349 | dd RegInst99 |
||
350 | dd RegInst9a |
||
351 | dd RegInst9b |
||
352 | dd RegInst9c |
||
353 | dd RegInst9d |
||
354 | dd RegInst9e |
||
355 | dd RegInst9f |
||
356 | dd RegInsta0 |
||
357 | dd RegInsta1 |
||
358 | dd RegInsta2 |
||
359 | dd RegInsta3 |
||
360 | dd RegInsta4 |
||
361 | dd RegInsta5 |
||
362 | dd RegInsta6 |
||
363 | dd RegInsta7 |
||
364 | dd RegInsta8 |
||
365 | dd RegInsta9 |
||
366 | dd RegInstaa |
||
367 | dd RegInstab |
||
368 | dd RegInstac |
||
369 | dd RegInstad |
||
370 | dd RegInstae |
||
371 | dd RegInstaf |
||
372 | dd RegInstb0 |
||
373 | dd RegInstb1 |
||
374 | dd RegInstb2 |
||
375 | dd RegInstb3 |
||
376 | dd RegInstb4 |
||
377 | dd RegInstb5 |
||
378 | dd RegInstb6 |
||
379 | dd RegInstb7 |
||
380 | dd RegInstb8 |
||
381 | dd RegInstb9 |
||
382 | dd RegInstba |
||
383 | dd RegInstbb |
||
384 | dd RegInstbc |
||
385 | dd RegInstbd |
||
386 | dd RegInstbe |
||
387 | dd RegInstbf |
||
388 | dd RegInstc0 |
||
389 | dd RegInstc1 |
||
390 | dd RegInstc2 |
||
391 | dd RegInstc3 |
||
392 | dd RegInstc4 |
||
393 | dd RegInstc5 |
||
394 | dd RegInstc6 |
||
395 | dd RegInstc7 |
||
396 | dd RegInstc8 |
||
397 | dd RegInstc9 |
||
398 | dd RegInstca |
||
399 | dd RegInstcb |
||
400 | dd RegInstcc |
||
401 | dd RegInstcd |
||
402 | dd RegInstce |
||
403 | dd RegInstcf |
||
404 | dd RegInstd0 |
||
405 | dd RegInstd1 |
||
406 | dd RegInstd2 |
||
407 | dd RegInstd3 |
||
408 | dd RegInstd4 |
||
409 | dd RegInstd5 |
||
410 | dd RegInstd6 |
||
411 | dd RegInstd7 |
||
412 | dd RegInstd8 |
||
413 | dd RegInstd9 |
||
414 | dd RegInstda |
||
415 | dd RegInstdb |
||
416 | dd RegInstdc |
||
417 | dd RegInstdd |
||
418 | dd RegInstde |
||
419 | dd RegInstdf |
||
420 | dd RegInste0 |
||
421 | dd RegInste1 |
||
422 | dd RegInste2 |
||
423 | dd RegInste3 |
||
424 | dd RegInste4 |
||
425 | dd RegInste5 |
||
426 | dd RegInste6 |
||
427 | dd RegInste7 |
||
428 | dd RegInste8 |
||
429 | dd RegInste9 |
||
430 | dd RegInstea |
||
431 | dd RegInsteb |
||
432 | dd RegInstec |
||
433 | dd RegInsted |
||
434 | dd RegInstee |
||
435 | dd RegInstef |
||
436 | dd RegInstf0 |
||
437 | dd RegInstf1 |
||
438 | dd RegInstf2 |
||
439 | dd RegInstf3 |
||
440 | dd RegInstf4 |
||
441 | dd RegInstf5 |
||
442 | dd RegInstf6 |
||
443 | dd RegInstf7 |
||
444 | dd RegInstf8 |
||
445 | dd RegInstf9 |
||
446 | dd RegInstfa |
||
447 | dd RegInstfb |
||
448 | dd RegInstfc |
||
449 | dd RegInstfd |
||
450 | dd RegInstfe |
||
451 | dd RegInstff |
||
452 | |||
453 | z80PrefixCB: |
||
454 | dd CBInst00 |
||
455 | dd CBInst01 |
||
456 | dd CBInst02 |
||
457 | dd CBInst03 |
||
458 | dd CBInst04 |
||
459 | dd CBInst05 |
||
460 | dd CBInst06 |
||
461 | dd CBInst07 |
||
462 | dd CBInst08 |
||
463 | dd CBInst09 |
||
464 | dd CBInst0a |
||
465 | dd CBInst0b |
||
466 | dd CBInst0c |
||
467 | dd CBInst0d |
||
468 | dd CBInst0e |
||
469 | dd CBInst0f |
||
470 | dd CBInst10 |
||
471 | dd CBInst11 |
||
472 | dd CBInst12 |
||
473 | dd CBInst13 |
||
474 | dd CBInst14 |
||
475 | dd CBInst15 |
||
476 | dd CBInst16 |
||
477 | dd CBInst17 |
||
478 | dd CBInst18 |
||
479 | dd CBInst19 |
||
480 | dd CBInst1a |
||
481 | dd CBInst1b |
||
482 | dd CBInst1c |
||
483 | dd CBInst1d |
||
484 | dd CBInst1e |
||
485 | dd CBInst1f |
||
486 | dd CBInst20 |
||
487 | dd CBInst21 |
||
488 | dd CBInst22 |
||
489 | dd CBInst23 |
||
490 | dd CBInst24 |
||
491 | dd CBInst25 |
||
492 | dd CBInst26 |
||
493 | dd CBInst27 |
||
494 | dd CBInst28 |
||
495 | dd CBInst29 |
||
496 | dd CBInst2a |
||
497 | dd CBInst2b |
||
498 | dd CBInst2c |
||
499 | dd CBInst2d |
||
500 | dd CBInst2e |
||
501 | dd CBInst2f |
||
502 | dd CBInst30 |
||
503 | dd CBInst31 |
||
504 | dd CBInst32 |
||
505 | dd CBInst33 |
||
506 | dd CBInst34 |
||
507 | dd CBInst35 |
||
508 | dd CBInst36 |
||
509 | dd CBInst37 |
||
510 | dd CBInst38 |
||
511 | dd CBInst39 |
||
512 | dd CBInst3a |
||
513 | dd CBInst3b |
||
514 | dd CBInst3c |
||
515 | dd CBInst3d |
||
516 | dd CBInst3e |
||
517 | dd CBInst3f |
||
518 | dd CBInst40 |
||
519 | dd CBInst41 |
||
520 | dd CBInst42 |
||
521 | dd CBInst43 |
||
522 | dd CBInst44 |
||
523 | dd CBInst45 |
||
524 | dd CBInst46 |
||
525 | dd CBInst47 |
||
526 | dd CBInst48 |
||
527 | dd CBInst49 |
||
528 | dd CBInst4a |
||
529 | dd CBInst4b |
||
530 | dd CBInst4c |
||
531 | dd CBInst4d |
||
532 | dd CBInst4e |
||
533 | dd CBInst4f |
||
534 | dd CBInst50 |
||
535 | dd CBInst51 |
||
536 | dd CBInst52 |
||
537 | dd CBInst53 |
||
538 | dd CBInst54 |
||
539 | dd CBInst55 |
||
540 | dd CBInst56 |
||
541 | dd CBInst57 |
||
542 | dd CBInst58 |
||
543 | dd CBInst59 |
||
544 | dd CBInst5a |
||
545 | dd CBInst5b |
||
546 | dd CBInst5c |
||
547 | dd CBInst5d |
||
548 | dd CBInst5e |
||
549 | dd CBInst5f |
||
550 | dd CBInst60 |
||
551 | dd CBInst61 |
||
552 | dd CBInst62 |
||
553 | dd CBInst63 |
||
554 | dd CBInst64 |
||
555 | dd CBInst65 |
||
556 | dd CBInst66 |
||
557 | dd CBInst67 |
||
558 | dd CBInst68 |
||
559 | dd CBInst69 |
||
560 | dd CBInst6a |
||
561 | dd CBInst6b |
||
562 | dd CBInst6c |
||
563 | dd CBInst6d |
||
564 | dd CBInst6e |
||
565 | dd CBInst6f |
||
566 | dd CBInst70 |
||
567 | dd CBInst71 |
||
568 | dd CBInst72 |
||
569 | dd CBInst73 |
||
570 | dd CBInst74 |
||
571 | dd CBInst75 |
||
572 | dd CBInst76 |
||
573 | dd CBInst77 |
||
574 | dd CBInst78 |
||
575 | dd CBInst79 |
||
576 | dd CBInst7a |
||
577 | dd CBInst7b |
||
578 | dd CBInst7c |
||
579 | dd CBInst7d |
||
580 | dd CBInst7e |
||
581 | dd CBInst7f |
||
582 | dd CBInst80 |
||
583 | dd CBInst81 |
||
584 | dd CBInst82 |
||
585 | dd CBInst83 |
||
586 | dd CBInst84 |
||
587 | dd CBInst85 |
||
588 | dd CBInst86 |
||
589 | dd CBInst87 |
||
590 | dd CBInst88 |
||
591 | dd CBInst89 |
||
592 | dd CBInst8a |
||
593 | dd CBInst8b |
||
594 | dd CBInst8c |
||
595 | dd CBInst8d |
||
596 | dd CBInst8e |
||
597 | dd CBInst8f |
||
598 | dd CBInst90 |
||
599 | dd CBInst91 |
||
600 | dd CBInst92 |
||
601 | dd CBInst93 |
||
602 | dd CBInst94 |
||
603 | dd CBInst95 |
||
604 | dd CBInst96 |
||
605 | dd CBInst97 |
||
606 | dd CBInst98 |
||
607 | dd CBInst99 |
||
608 | dd CBInst9a |
||
609 | dd CBInst9b |
||
610 | dd CBInst9c |
||
611 | dd CBInst9d |
||
612 | dd CBInst9e |
||
613 | dd CBInst9f |
||
614 | dd CBInsta0 |
||
615 | dd CBInsta1 |
||
616 | dd CBInsta2 |
||
617 | dd CBInsta3 |
||
618 | dd CBInsta4 |
||
619 | dd CBInsta5 |
||
620 | dd CBInsta6 |
||
621 | dd CBInsta7 |
||
622 | dd CBInsta8 |
||
623 | dd CBInsta9 |
||
624 | dd CBInstaa |
||
625 | dd CBInstab |
||
626 | dd CBInstac |
||
627 | dd CBInstad |
||
628 | dd CBInstae |
||
629 | dd CBInstaf |
||
630 | dd CBInstb0 |
||
631 | dd CBInstb1 |
||
632 | dd CBInstb2 |
||
633 | dd CBInstb3 |
||
634 | dd CBInstb4 |
||
635 | dd CBInstb5 |
||
636 | dd CBInstb6 |
||
637 | dd CBInstb7 |
||
638 | dd CBInstb8 |
||
639 | dd CBInstb9 |
||
640 | dd CBInstba |
||
641 | dd CBInstbb |
||
642 | dd CBInstbc |
||
643 | dd CBInstbd |
||
644 | dd CBInstbe |
||
645 | dd CBInstbf |
||
646 | dd CBInstc0 |
||
647 | dd CBInstc1 |
||
648 | dd CBInstc2 |
||
649 | dd CBInstc3 |
||
650 | dd CBInstc4 |
||
651 | dd CBInstc5 |
||
652 | dd CBInstc6 |
||
653 | dd CBInstc7 |
||
654 | dd CBInstc8 |
||
655 | dd CBInstc9 |
||
656 | dd CBInstca |
||
657 | dd CBInstcb |
||
658 | dd CBInstcc |
||
659 | dd CBInstcd |
||
660 | dd CBInstce |
||
661 | dd CBInstcf |
||
662 | dd CBInstd0 |
||
663 | dd CBInstd1 |
||
664 | dd CBInstd2 |
||
665 | dd CBInstd3 |
||
666 | dd CBInstd4 |
||
667 | dd CBInstd5 |
||
668 | dd CBInstd6 |
||
669 | dd CBInstd7 |
||
670 | dd CBInstd8 |
||
671 | dd CBInstd9 |
||
672 | dd CBInstda |
||
673 | dd CBInstdb |
||
674 | dd CBInstdc |
||
675 | dd CBInstdd |
||
676 | dd CBInstde |
||
677 | dd CBInstdf |
||
678 | dd CBInste0 |
||
679 | dd CBInste1 |
||
680 | dd CBInste2 |
||
681 | dd CBInste3 |
||
682 | dd CBInste4 |
||
683 | dd CBInste5 |
||
684 | dd CBInste6 |
||
685 | dd CBInste7 |
||
686 | dd CBInste8 |
||
687 | dd CBInste9 |
||
688 | dd CBInstea |
||
689 | dd CBInsteb |
||
690 | dd CBInstec |
||
691 | dd CBInsted |
||
692 | dd CBInstee |
||
693 | dd CBInstef |
||
694 | dd CBInstf0 |
||
695 | dd CBInstf1 |
||
696 | dd CBInstf2 |
||
697 | dd CBInstf3 |
||
698 | dd CBInstf4 |
||
699 | dd CBInstf5 |
||
700 | dd CBInstf6 |
||
701 | dd CBInstf7 |
||
702 | dd CBInstf8 |
||
703 | dd CBInstf9 |
||
704 | dd CBInstfa |
||
705 | dd CBInstfb |
||
706 | dd CBInstfc |
||
707 | dd CBInstfd |
||
708 | dd CBInstfe |
||
709 | dd CBInstff |
||
710 | |||
711 | z80PrefixED: |
||
712 | dd invalidInsWord |
||
713 | dd invalidInsWord |
||
714 | dd invalidInsWord |
||
715 | dd invalidInsWord |
||
716 | dd invalidInsWord |
||
717 | dd invalidInsWord |
||
718 | dd invalidInsWord |
||
719 | dd invalidInsWord |
||
720 | dd invalidInsWord |
||
721 | dd invalidInsWord |
||
722 | dd invalidInsWord |
||
723 | dd invalidInsWord |
||
724 | dd invalidInsWord |
||
725 | dd invalidInsWord |
||
726 | dd invalidInsWord |
||
727 | dd invalidInsWord |
||
728 | dd invalidInsWord |
||
729 | dd invalidInsWord |
||
730 | dd invalidInsWord |
||
731 | dd invalidInsWord |
||
732 | dd invalidInsWord |
||
733 | dd invalidInsWord |
||
734 | dd invalidInsWord |
||
735 | dd invalidInsWord |
||
736 | dd invalidInsWord |
||
737 | dd invalidInsWord |
||
738 | dd invalidInsWord |
||
739 | dd invalidInsWord |
||
740 | dd invalidInsWord |
||
741 | dd invalidInsWord |
||
742 | dd invalidInsWord |
||
743 | dd invalidInsWord |
||
744 | dd invalidInsWord |
||
745 | dd invalidInsWord |
||
746 | dd invalidInsWord |
||
747 | dd invalidInsWord |
||
748 | dd invalidInsWord |
||
749 | dd invalidInsWord |
||
750 | dd invalidInsWord |
||
751 | dd invalidInsWord |
||
752 | dd invalidInsWord |
||
753 | dd invalidInsWord |
||
754 | dd invalidInsWord |
||
755 | dd invalidInsWord |
||
756 | dd invalidInsWord |
||
757 | dd invalidInsWord |
||
758 | dd invalidInsWord |
||
759 | dd invalidInsWord |
||
760 | dd invalidInsWord |
||
761 | dd invalidInsWord |
||
762 | dd invalidInsWord |
||
763 | dd invalidInsWord |
||
764 | dd invalidInsWord |
||
765 | dd invalidInsWord |
||
766 | dd invalidInsWord |
||
767 | dd invalidInsWord |
||
768 | dd invalidInsWord |
||
769 | dd invalidInsWord |
||
770 | dd invalidInsWord |
||
771 | dd invalidInsWord |
||
772 | dd invalidInsWord |
||
773 | dd invalidInsWord |
||
774 | dd invalidInsWord |
||
775 | dd invalidInsWord |
||
776 | dd EDInst40 |
||
777 | dd EDInst41 |
||
778 | dd EDInst42 |
||
779 | dd EDInst43 |
||
780 | dd EDInst44 |
||
781 | dd EDInst45 |
||
782 | dd EDInst46 |
||
783 | dd EDInst47 |
||
784 | dd EDInst48 |
||
785 | dd EDInst49 |
||
786 | dd EDInst4a |
||
787 | dd EDInst4b |
||
788 | dd invalidInsWord |
||
789 | dd EDInst4d |
||
790 | dd invalidInsWord |
||
791 | dd EDInst4f |
||
792 | dd EDInst50 |
||
793 | dd EDInst51 |
||
794 | dd EDInst52 |
||
795 | dd EDInst53 |
||
796 | dd invalidInsWord |
||
797 | dd invalidInsWord |
||
798 | dd EDInst56 |
||
799 | dd EDInst57 |
||
800 | dd EDInst58 |
||
801 | dd EDInst59 |
||
802 | dd EDInst5a |
||
803 | dd EDInst5b |
||
804 | dd invalidInsWord |
||
805 | dd invalidInsWord |
||
806 | dd EDInst5e |
||
807 | dd EDInst5f |
||
808 | dd EDInst60 |
||
809 | dd EDInst61 |
||
810 | dd EDInst62 |
||
811 | dd EDInst63 |
||
812 | dd invalidInsWord |
||
813 | dd invalidInsWord |
||
814 | dd invalidInsWord |
||
815 | dd EDInst67 |
||
816 | dd EDInst68 |
||
817 | dd EDInst69 |
||
818 | dd EDInst6a |
||
819 | dd invalidInsWord |
||
820 | dd invalidInsWord |
||
821 | dd invalidInsWord |
||
822 | dd invalidInsWord |
||
823 | dd EDInst6f |
||
824 | dd invalidInsWord |
||
825 | dd invalidInsWord |
||
826 | dd EDInst72 |
||
827 | dd EDInst73 |
||
828 | dd invalidInsWord |
||
829 | dd invalidInsWord |
||
830 | dd invalidInsWord |
||
831 | dd invalidInsWord |
||
832 | dd EDInst78 |
||
833 | dd EDInst79 |
||
834 | dd EDInst7a |
||
835 | dd EDInst7b |
||
836 | dd invalidInsWord |
||
837 | dd invalidInsWord |
||
838 | dd invalidInsWord |
||
839 | dd invalidInsWord |
||
840 | dd invalidInsWord |
||
841 | dd invalidInsWord |
||
842 | dd invalidInsWord |
||
843 | dd invalidInsWord |
||
844 | dd invalidInsWord |
||
845 | dd invalidInsWord |
||
846 | dd invalidInsWord |
||
847 | dd invalidInsWord |
||
848 | dd invalidInsWord |
||
849 | dd invalidInsWord |
||
850 | dd invalidInsWord |
||
851 | dd invalidInsWord |
||
852 | dd invalidInsWord |
||
853 | dd invalidInsWord |
||
854 | dd invalidInsWord |
||
855 | dd invalidInsWord |
||
856 | dd invalidInsWord |
||
857 | dd invalidInsWord |
||
858 | dd invalidInsWord |
||
859 | dd invalidInsWord |
||
860 | dd invalidInsWord |
||
861 | dd invalidInsWord |
||
862 | dd invalidInsWord |
||
863 | dd invalidInsWord |
||
864 | dd invalidInsWord |
||
865 | dd invalidInsWord |
||
866 | dd invalidInsWord |
||
867 | dd invalidInsWord |
||
868 | dd invalidInsWord |
||
869 | dd invalidInsWord |
||
870 | dd invalidInsWord |
||
871 | dd invalidInsWord |
||
872 | dd EDInsta0 |
||
873 | dd EDInsta1 |
||
874 | dd EDInsta2 |
||
875 | dd EDInsta3 |
||
876 | dd invalidInsWord |
||
877 | dd invalidInsWord |
||
878 | dd invalidInsWord |
||
879 | dd invalidInsWord |
||
880 | dd EDInsta8 |
||
881 | dd EDInsta9 |
||
882 | dd EDInstaa |
||
883 | dd EDInstab |
||
884 | dd invalidInsWord |
||
885 | dd invalidInsWord |
||
886 | dd invalidInsWord |
||
887 | dd invalidInsWord |
||
888 | dd EDInstb0 |
||
889 | dd EDInstb1 |
||
890 | dd EDInstb2 |
||
891 | dd EDInstb3 |
||
892 | dd invalidInsWord |
||
893 | dd invalidInsWord |
||
894 | dd invalidInsWord |
||
895 | dd invalidInsWord |
||
896 | dd EDInstb8 |
||
897 | dd EDInstb9 |
||
898 | dd EDInstba |
||
899 | dd EDInstbb |
||
900 | dd invalidInsWord |
||
901 | dd invalidInsWord |
||
902 | dd invalidInsWord |
||
903 | dd invalidInsWord |
||
904 | dd invalidInsWord |
||
905 | dd invalidInsWord |
||
906 | dd invalidInsWord |
||
907 | dd invalidInsWord |
||
908 | dd invalidInsWord |
||
909 | dd invalidInsWord |
||
910 | dd invalidInsWord |
||
911 | dd invalidInsWord |
||
912 | dd invalidInsWord |
||
913 | dd invalidInsWord |
||
914 | dd invalidInsWord |
||
915 | dd invalidInsWord |
||
916 | dd invalidInsWord |
||
917 | dd invalidInsWord |
||
918 | dd invalidInsWord |
||
919 | dd invalidInsWord |
||
920 | dd invalidInsWord |
||
921 | dd invalidInsWord |
||
922 | dd invalidInsWord |
||
923 | dd invalidInsWord |
||
924 | dd invalidInsWord |
||
925 | dd invalidInsWord |
||
926 | dd invalidInsWord |
||
927 | dd invalidInsWord |
||
928 | dd invalidInsWord |
||
929 | dd invalidInsWord |
||
930 | dd invalidInsWord |
||
931 | dd invalidInsWord |
||
932 | dd invalidInsWord |
||
933 | dd invalidInsWord |
||
934 | dd invalidInsWord |
||
935 | dd invalidInsWord |
||
936 | dd invalidInsWord |
||
937 | dd invalidInsWord |
||
938 | dd invalidInsWord |
||
939 | dd invalidInsWord |
||
940 | dd invalidInsWord |
||
941 | dd invalidInsWord |
||
942 | dd invalidInsWord |
||
943 | dd invalidInsWord |
||
944 | dd invalidInsWord |
||
945 | dd invalidInsWord |
||
946 | dd invalidInsWord |
||
947 | dd invalidInsWord |
||
948 | dd invalidInsWord |
||
949 | dd invalidInsWord |
||
950 | dd invalidInsWord |
||
951 | dd invalidInsWord |
||
952 | dd invalidInsWord |
||
953 | dd invalidInsWord |
||
954 | dd invalidInsWord |
||
955 | dd invalidInsWord |
||
956 | dd invalidInsWord |
||
957 | dd invalidInsWord |
||
958 | dd invalidInsWord |
||
959 | dd invalidInsWord |
||
960 | dd invalidInsWord |
||
961 | dd invalidInsWord |
||
962 | dd invalidInsWord |
||
963 | dd invalidInsWord |
||
964 | dd invalidInsWord |
||
965 | dd invalidInsWord |
||
966 | dd invalidInsWord |
||
967 | dd invalidInsWord |
||
968 | |||
969 | z80PrefixDD: |
||
970 | dd invalidInsWord |
||
971 | dd invalidInsWord |
||
972 | dd invalidInsWord |
||
973 | dd invalidInsWord |
||
974 | dd invalidInsWord |
||
975 | dd invalidInsWord |
||
976 | dd invalidInsWord |
||
977 | dd invalidInsWord |
||
978 | dd invalidInsWord |
||
979 | dd DDInst09 |
||
980 | dd invalidInsWord |
||
981 | dd invalidInsWord |
||
982 | dd invalidInsWord |
||
983 | dd invalidInsWord |
||
984 | dd invalidInsWord |
||
985 | dd invalidInsWord |
||
986 | dd invalidInsWord |
||
987 | dd invalidInsWord |
||
988 | dd invalidInsWord |
||
989 | dd invalidInsWord |
||
990 | dd invalidInsWord |
||
991 | dd invalidInsWord |
||
992 | dd invalidInsWord |
||
993 | dd invalidInsWord |
||
994 | dd invalidInsWord |
||
995 | dd DDInst19 |
||
996 | dd invalidInsWord |
||
997 | dd invalidInsWord |
||
998 | dd invalidInsWord |
||
999 | dd invalidInsWord |
||
1000 | dd invalidInsWord |
||
1001 | dd invalidInsWord |
||
1002 | dd invalidInsWord |
||
1003 | dd DDInst21 |
||
1004 | dd DDInst22 |
||
1005 | dd DDInst23 |
||
1006 | dd DDInst24 |
||
1007 | dd DDInst25 |
||
1008 | dd DDInst26 |
||
1009 | dd invalidInsWord |
||
1010 | dd invalidInsWord |
||
1011 | dd DDInst29 |
||
1012 | dd DDInst2a |
||
1013 | dd DDInst2b |
||
1014 | dd DDInst2c |
||
1015 | dd DDInst2d |
||
1016 | dd DDInst2e |
||
1017 | dd invalidInsWord |
||
1018 | dd invalidInsWord |
||
1019 | dd invalidInsWord |
||
1020 | dd invalidInsWord |
||
1021 | dd invalidInsWord |
||
1022 | dd DDInst34 |
||
1023 | dd DDInst35 |
||
1024 | dd DDInst36 |
||
1025 | dd invalidInsWord |
||
1026 | dd invalidInsWord |
||
1027 | dd DDInst39 |
||
1028 | dd invalidInsWord |
||
1029 | dd invalidInsWord |
||
1030 | dd invalidInsWord |
||
1031 | dd invalidInsWord |
||
1032 | dd invalidInsWord |
||
1033 | dd invalidInsWord |
||
1034 | dd invalidInsWord |
||
1035 | dd invalidInsWord |
||
1036 | dd invalidInsWord |
||
1037 | dd invalidInsWord |
||
1038 | dd DDInst44 |
||
1039 | dd DDInst45 |
||
1040 | dd DDInst46 |
||
1041 | dd invalidInsWord |
||
1042 | dd invalidInsWord |
||
1043 | dd invalidInsWord |
||
1044 | dd invalidInsWord |
||
1045 | dd invalidInsWord |
||
1046 | dd DDInst4c |
||
1047 | dd DDInst4d |
||
1048 | dd DDInst4e |
||
1049 | dd invalidInsWord |
||
1050 | dd invalidInsWord |
||
1051 | dd invalidInsWord |
||
1052 | dd invalidInsWord |
||
1053 | dd invalidInsWord |
||
1054 | dd DDInst54 |
||
1055 | dd DDInst55 |
||
1056 | dd DDInst56 |
||
1057 | dd invalidInsWord |
||
1058 | dd invalidInsWord |
||
1059 | dd invalidInsWord |
||
1060 | dd invalidInsWord |
||
1061 | dd invalidInsWord |
||
1062 | dd DDInst5c |
||
1063 | dd DDInst5d |
||
1064 | dd DDInst5e |
||
1065 | dd invalidInsWord |
||
1066 | dd DDInst60 |
||
1067 | dd DDInst61 |
||
1068 | dd DDInst62 |
||
1069 | dd DDInst63 |
||
1070 | dd DDInst64 |
||
1071 | dd DDInst65 |
||
1072 | dd DDInst66 |
||
1073 | dd DDInst67 |
||
1074 | dd DDInst68 |
||
1075 | dd DDInst69 |
||
1076 | dd DDInst6a |
||
1077 | dd DDInst6b |
||
1078 | dd DDInst6c |
||
1079 | dd DDInst6d |
||
1080 | dd DDInst6e |
||
1081 | dd DDInst6f |
||
1082 | dd DDInst70 |
||
1083 | dd DDInst71 |
||
1084 | dd DDInst72 |
||
1085 | dd DDInst73 |
||
1086 | dd DDInst74 |
||
1087 | dd DDInst75 |
||
1088 | dd invalidInsWord |
||
1089 | dd DDInst77 |
||
1090 | dd invalidInsWord |
||
1091 | dd invalidInsWord |
||
1092 | dd invalidInsWord |
||
1093 | dd invalidInsWord |
||
1094 | dd DDInst7c |
||
1095 | dd DDInst7d |
||
1096 | dd DDInst7e |
||
1097 | dd invalidInsWord |
||
1098 | dd invalidInsWord |
||
1099 | dd invalidInsWord |
||
1100 | dd invalidInsWord |
||
1101 | dd invalidInsWord |
||
1102 | dd DDInst84 |
||
1103 | dd DDInst85 |
||
1104 | dd DDInst86 |
||
1105 | dd invalidInsWord |
||
1106 | dd invalidInsWord |
||
1107 | dd invalidInsWord |
||
1108 | dd invalidInsWord |
||
1109 | dd invalidInsWord |
||
1110 | dd DDInst8c |
||
1111 | dd DDInst8d |
||
1112 | dd DDInst8e |
||
1113 | dd invalidInsWord |
||
1114 | dd invalidInsWord |
||
1115 | dd invalidInsWord |
||
1116 | dd invalidInsWord |
||
1117 | dd invalidInsWord |
||
1118 | dd DDInst94 |
||
1119 | dd DDInst95 |
||
1120 | dd DDInst96 |
||
1121 | dd invalidInsWord |
||
1122 | dd invalidInsWord |
||
1123 | dd invalidInsWord |
||
1124 | dd invalidInsWord |
||
1125 | dd invalidInsWord |
||
1126 | dd DDInst9c |
||
1127 | dd DDInst9d |
||
1128 | dd DDInst9e |
||
1129 | dd invalidInsWord |
||
1130 | dd invalidInsWord |
||
1131 | dd invalidInsWord |
||
1132 | dd invalidInsWord |
||
1133 | dd invalidInsWord |
||
1134 | dd DDInsta4 |
||
1135 | dd DDInsta5 |
||
1136 | dd DDInsta6 |
||
1137 | dd invalidInsWord |
||
1138 | dd invalidInsWord |
||
1139 | dd invalidInsWord |
||
1140 | dd invalidInsWord |
||
1141 | dd invalidInsWord |
||
1142 | dd DDInstac |
||
1143 | dd DDInstad |
||
1144 | dd DDInstae |
||
1145 | dd invalidInsWord |
||
1146 | dd invalidInsWord |
||
1147 | dd invalidInsWord |
||
1148 | dd invalidInsWord |
||
1149 | dd invalidInsWord |
||
1150 | dd DDInstb4 |
||
1151 | dd DDInstb5 |
||
1152 | dd DDInstb6 |
||
1153 | dd invalidInsWord |
||
1154 | dd invalidInsWord |
||
1155 | dd invalidInsWord |
||
1156 | dd invalidInsWord |
||
1157 | dd invalidInsWord |
||
1158 | dd DDInstbc |
||
1159 | dd DDInstbd |
||
1160 | dd DDInstbe |
||
1161 | dd invalidInsWord |
||
1162 | dd invalidInsWord |
||
1163 | dd invalidInsWord |
||
1164 | dd invalidInsWord |
||
1165 | dd invalidInsWord |
||
1166 | dd invalidInsWord |
||
1167 | dd invalidInsWord |
||
1168 | dd invalidInsWord |
||
1169 | dd invalidInsWord |
||
1170 | dd invalidInsWord |
||
1171 | dd invalidInsWord |
||
1172 | dd invalidInsWord |
||
1173 | dd DDInstcb |
||
1174 | dd invalidInsWord |
||
1175 | dd invalidInsWord |
||
1176 | dd invalidInsWord |
||
1177 | dd invalidInsWord |
||
1178 | dd invalidInsWord |
||
1179 | dd invalidInsWord |
||
1180 | dd invalidInsWord |
||
1181 | dd invalidInsWord |
||
1182 | dd invalidInsWord |
||
1183 | dd invalidInsWord |
||
1184 | dd invalidInsWord |
||
1185 | dd invalidInsWord |
||
1186 | dd invalidInsWord |
||
1187 | dd invalidInsWord |
||
1188 | dd invalidInsWord |
||
1189 | dd invalidInsWord |
||
1190 | dd invalidInsWord |
||
1191 | dd invalidInsWord |
||
1192 | dd invalidInsWord |
||
1193 | dd invalidInsWord |
||
1194 | dd invalidInsWord |
||
1195 | dd DDInste1 |
||
1196 | dd invalidInsWord |
||
1197 | dd DDInste3 |
||
1198 | dd invalidInsWord |
||
1199 | dd DDInste5 |
||
1200 | dd invalidInsWord |
||
1201 | dd invalidInsWord |
||
1202 | dd invalidInsWord |
||
1203 | dd DDInste9 |
||
1204 | dd invalidInsWord |
||
1205 | dd invalidInsWord |
||
1206 | dd invalidInsWord |
||
1207 | dd invalidInsWord |
||
1208 | dd invalidInsWord |
||
1209 | dd invalidInsWord |
||
1210 | dd invalidInsWord |
||
1211 | dd invalidInsWord |
||
1212 | dd invalidInsWord |
||
1213 | dd invalidInsWord |
||
1214 | dd invalidInsWord |
||
1215 | dd invalidInsWord |
||
1216 | dd invalidInsWord |
||
1217 | dd invalidInsWord |
||
1218 | dd invalidInsWord |
||
1219 | dd DDInstf9 |
||
1220 | dd invalidInsWord |
||
1221 | dd invalidInsWord |
||
1222 | dd invalidInsWord |
||
1223 | dd invalidInsWord |
||
1224 | dd invalidInsWord |
||
1225 | dd invalidInsWord |
||
1226 | |||
1227 | z80PrefixFD: |
||
1228 | dd invalidInsWord |
||
1229 | dd invalidInsWord |
||
1230 | dd invalidInsWord |
||
1231 | dd invalidInsWord |
||
1232 | dd invalidInsWord |
||
1233 | dd invalidInsWord |
||
1234 | dd invalidInsWord |
||
1235 | dd invalidInsWord |
||
1236 | dd invalidInsWord |
||
1237 | dd FDInst09 |
||
1238 | dd invalidInsWord |
||
1239 | dd invalidInsWord |
||
1240 | dd invalidInsWord |
||
1241 | dd invalidInsWord |
||
1242 | dd invalidInsWord |
||
1243 | dd invalidInsWord |
||
1244 | dd invalidInsWord |
||
1245 | dd invalidInsWord |
||
1246 | dd invalidInsWord |
||
1247 | dd invalidInsWord |
||
1248 | dd invalidInsWord |
||
1249 | dd invalidInsWord |
||
1250 | dd invalidInsWord |
||
1251 | dd invalidInsWord |
||
1252 | dd invalidInsWord |
||
1253 | dd FDInst19 |
||
1254 | dd invalidInsWord |
||
1255 | dd invalidInsWord |
||
1256 | dd invalidInsWord |
||
1257 | dd invalidInsWord |
||
1258 | dd invalidInsWord |
||
1259 | dd invalidInsWord |
||
1260 | dd invalidInsWord |
||
1261 | dd FDInst21 |
||
1262 | dd FDInst22 |
||
1263 | dd FDInst23 |
||
1264 | dd FDInst24 |
||
1265 | dd FDInst25 |
||
1266 | dd FDInst26 |
||
1267 | dd invalidInsWord |
||
1268 | dd invalidInsWord |
||
1269 | dd FDInst29 |
||
1270 | dd FDInst2a |
||
1271 | dd FDInst2b |
||
1272 | dd FDInst2c |
||
1273 | dd FDInst2d |
||
1274 | dd FDInst2e |
||
1275 | dd invalidInsWord |
||
1276 | dd invalidInsWord |
||
1277 | dd invalidInsWord |
||
1278 | dd invalidInsWord |
||
1279 | dd invalidInsWord |
||
1280 | dd FDInst34 |
||
1281 | dd FDInst35 |
||
1282 | dd FDInst36 |
||
1283 | dd invalidInsWord |
||
1284 | dd invalidInsWord |
||
1285 | dd FDInst39 |
||
1286 | dd invalidInsWord |
||
1287 | dd invalidInsWord |
||
1288 | dd invalidInsWord |
||
1289 | dd invalidInsWord |
||
1290 | dd invalidInsWord |
||
1291 | dd invalidInsWord |
||
1292 | dd invalidInsWord |
||
1293 | dd invalidInsWord |
||
1294 | dd invalidInsWord |
||
1295 | dd invalidInsWord |
||
1296 | dd FDInst44 |
||
1297 | dd FDInst45 |
||
1298 | dd FDInst46 |
||
1299 | dd invalidInsWord |
||
1300 | dd invalidInsWord |
||
1301 | dd invalidInsWord |
||
1302 | dd invalidInsWord |
||
1303 | dd invalidInsWord |
||
1304 | dd FDInst4c |
||
1305 | dd FDInst4d |
||
1306 | dd FDInst4e |
||
1307 | dd invalidInsWord |
||
1308 | dd invalidInsWord |
||
1309 | dd invalidInsWord |
||
1310 | dd invalidInsWord |
||
1311 | dd invalidInsWord |
||
1312 | dd FDInst54 |
||
1313 | dd FDInst55 |
||
1314 | dd FDInst56 |
||
1315 | dd invalidInsWord |
||
1316 | dd invalidInsWord |
||
1317 | dd invalidInsWord |
||
1318 | dd invalidInsWord |
||
1319 | dd invalidInsWord |
||
1320 | dd FDInst5c |
||
1321 | dd FDInst5d |
||
1322 | dd FDInst5e |
||
1323 | dd invalidInsWord |
||
1324 | dd FDInst60 |
||
1325 | dd FDInst61 |
||
1326 | dd FDInst62 |
||
1327 | dd FDInst63 |
||
1328 | dd FDInst64 |
||
1329 | dd FDInst65 |
||
1330 | dd FDInst66 |
||
1331 | dd FDInst67 |
||
1332 | dd FDInst68 |
||
1333 | dd FDInst69 |
||
1334 | dd FDInst6a |
||
1335 | dd FDInst6b |
||
1336 | dd FDInst6c |
||
1337 | dd FDInst6d |
||
1338 | dd FDInst6e |
||
1339 | dd FDInst6f |
||
1340 | dd FDInst70 |
||
1341 | dd FDInst71 |
||
1342 | dd FDInst72 |
||
1343 | dd FDInst73 |
||
1344 | dd FDInst74 |
||
1345 | dd FDInst75 |
||
1346 | dd invalidInsWord |
||
1347 | dd FDInst77 |
||
1348 | dd invalidInsWord |
||
1349 | dd invalidInsWord |
||
1350 | dd invalidInsWord |
||
1351 | dd invalidInsWord |
||
1352 | dd FDInst7c |
||
1353 | dd FDInst7d |
||
1354 | dd FDInst7e |
||
1355 | dd invalidInsWord |
||
1356 | dd invalidInsWord |
||
1357 | dd invalidInsWord |
||
1358 | dd invalidInsWord |
||
1359 | dd invalidInsWord |
||
1360 | dd FDInst84 |
||
1361 | dd FDInst85 |
||
1362 | dd FDInst86 |
||
1363 | dd invalidInsWord |
||
1364 | dd invalidInsWord |
||
1365 | dd invalidInsWord |
||
1366 | dd invalidInsWord |
||
1367 | dd invalidInsWord |
||
1368 | dd FDInst8c |
||
1369 | dd FDInst8d |
||
1370 | dd FDInst8e |
||
1371 | dd invalidInsWord |
||
1372 | dd invalidInsWord |
||
1373 | dd invalidInsWord |
||
1374 | dd invalidInsWord |
||
1375 | dd invalidInsWord |
||
1376 | dd FDInst94 |
||
1377 | dd FDInst95 |
||
1378 | dd FDInst96 |
||
1379 | dd invalidInsWord |
||
1380 | dd invalidInsWord |
||
1381 | dd invalidInsWord |
||
1382 | dd invalidInsWord |
||
1383 | dd invalidInsWord |
||
1384 | dd FDInst9c |
||
1385 | dd FDInst9d |
||
1386 | dd FDInst9e |
||
1387 | dd invalidInsWord |
||
1388 | dd invalidInsWord |
||
1389 | dd invalidInsWord |
||
1390 | dd invalidInsWord |
||
1391 | dd invalidInsWord |
||
1392 | dd FDInsta4 |
||
1393 | dd FDInsta5 |
||
1394 | dd FDInsta6 |
||
1395 | dd invalidInsWord |
||
1396 | dd invalidInsWord |
||
1397 | dd invalidInsWord |
||
1398 | dd invalidInsWord |
||
1399 | dd invalidInsWord |
||
1400 | dd FDInstac |
||
1401 | dd FDInstad |
||
1402 | dd FDInstae |
||
1403 | dd invalidInsWord |
||
1404 | dd invalidInsWord |
||
1405 | dd invalidInsWord |
||
1406 | dd invalidInsWord |
||
1407 | dd invalidInsWord |
||
1408 | dd FDInstb4 |
||
1409 | dd FDInstb5 |
||
1410 | dd FDInstb6 |
||
1411 | dd invalidInsWord |
||
1412 | dd invalidInsWord |
||
1413 | dd invalidInsWord |
||
1414 | dd invalidInsWord |
||
1415 | dd invalidInsWord |
||
1416 | dd FDInstbc |
||
1417 | dd FDInstbd |
||
1418 | dd FDInstbe |
||
1419 | dd invalidInsWord |
||
1420 | dd invalidInsWord |
||
1421 | dd invalidInsWord |
||
1422 | dd invalidInsWord |
||
1423 | dd invalidInsWord |
||
1424 | dd invalidInsWord |
||
1425 | dd invalidInsWord |
||
1426 | dd invalidInsWord |
||
1427 | dd invalidInsWord |
||
1428 | dd invalidInsWord |
||
1429 | dd invalidInsWord |
||
1430 | dd invalidInsWord |
||
1431 | dd FDInstcb |
||
1432 | dd invalidInsWord |
||
1433 | dd invalidInsWord |
||
1434 | dd invalidInsWord |
||
1435 | dd invalidInsWord |
||
1436 | dd invalidInsWord |
||
1437 | dd invalidInsWord |
||
1438 | dd invalidInsWord |
||
1439 | dd invalidInsWord |
||
1440 | dd invalidInsWord |
||
1441 | dd invalidInsWord |
||
1442 | dd invalidInsWord |
||
1443 | dd invalidInsWord |
||
1444 | dd invalidInsWord |
||
1445 | dd invalidInsWord |
||
1446 | dd invalidInsWord |
||
1447 | dd invalidInsWord |
||
1448 | dd invalidInsWord |
||
1449 | dd invalidInsWord |
||
1450 | dd invalidInsWord |
||
1451 | dd invalidInsWord |
||
1452 | dd invalidInsWord |
||
1453 | dd FDInste1 |
||
1454 | dd invalidInsWord |
||
1455 | dd FDInste3 |
||
1456 | dd invalidInsWord |
||
1457 | dd FDInste5 |
||
1458 | dd invalidInsWord |
||
1459 | dd invalidInsWord |
||
1460 | dd invalidInsWord |
||
1461 | dd FDInste9 |
||
1462 | dd invalidInsWord |
||
1463 | dd invalidInsWord |
||
1464 | dd invalidInsWord |
||
1465 | dd invalidInsWord |
||
1466 | dd invalidInsWord |
||
1467 | dd invalidInsWord |
||
1468 | dd invalidInsWord |
||
1469 | dd invalidInsWord |
||
1470 | dd invalidInsWord |
||
1471 | dd invalidInsWord |
||
1472 | dd invalidInsWord |
||
1473 | dd invalidInsWord |
||
1474 | dd invalidInsWord |
||
1475 | dd invalidInsWord |
||
1476 | dd invalidInsWord |
||
1477 | dd FDInstf9 |
||
1478 | dd invalidInsWord |
||
1479 | dd invalidInsWord |
||
1480 | dd invalidInsWord |
||
1481 | dd invalidInsWord |
||
1482 | dd invalidInsWord |
||
1483 | dd invalidInsWord |
||
1484 | z80ddfdcbInstructions: |
||
1485 | dd invalidInsWord |
||
1486 | dd invalidInsWord |
||
1487 | dd invalidInsWord |
||
1488 | dd invalidInsWord |
||
1489 | dd invalidInsWord |
||
1490 | dd invalidInsWord |
||
1491 | dd DDFDCBInst06 |
||
1492 | dd invalidInsWord |
||
1493 | dd invalidInsWord |
||
1494 | dd invalidInsWord |
||
1495 | dd invalidInsWord |
||
1496 | dd invalidInsWord |
||
1497 | dd invalidInsWord |
||
1498 | dd invalidInsWord |
||
1499 | dd DDFDCBInst0e |
||
1500 | dd invalidInsWord |
||
1501 | dd invalidInsWord |
||
1502 | dd invalidInsWord |
||
1503 | dd invalidInsWord |
||
1504 | dd invalidInsWord |
||
1505 | dd invalidInsWord |
||
1506 | dd invalidInsWord |
||
1507 | dd DDFDCBInst16 |
||
1508 | dd invalidInsWord |
||
1509 | dd invalidInsWord |
||
1510 | dd invalidInsWord |
||
1511 | dd invalidInsWord |
||
1512 | dd invalidInsWord |
||
1513 | dd invalidInsWord |
||
1514 | dd invalidInsWord |
||
1515 | dd DDFDCBInst1e |
||
1516 | dd invalidInsWord |
||
1517 | dd invalidInsWord |
||
1518 | dd invalidInsWord |
||
1519 | dd invalidInsWord |
||
1520 | dd invalidInsWord |
||
1521 | dd invalidInsWord |
||
1522 | dd invalidInsWord |
||
1523 | dd DDFDCBInst26 |
||
1524 | dd invalidInsWord |
||
1525 | dd invalidInsWord |
||
1526 | dd invalidInsWord |
||
1527 | dd invalidInsWord |
||
1528 | dd invalidInsWord |
||
1529 | dd invalidInsWord |
||
1530 | dd invalidInsWord |
||
1531 | dd DDFDCBInst2e |
||
1532 | dd invalidInsWord |
||
1533 | dd invalidInsWord |
||
1534 | dd invalidInsWord |
||
1535 | dd invalidInsWord |
||
1536 | dd invalidInsWord |
||
1537 | dd invalidInsWord |
||
1538 | dd invalidInsWord |
||
1539 | dd invalidInsWord |
||
1540 | dd invalidInsWord |
||
1541 | dd invalidInsWord |
||
1542 | dd invalidInsWord |
||
1543 | dd invalidInsWord |
||
1544 | dd invalidInsWord |
||
1545 | dd invalidInsWord |
||
1546 | dd invalidInsWord |
||
1547 | dd DDFDCBInst3e |
||
1548 | dd invalidInsWord |
||
1549 | dd invalidInsWord |
||
1550 | dd invalidInsWord |
||
1551 | dd invalidInsWord |
||
1552 | dd invalidInsWord |
||
1553 | dd invalidInsWord |
||
1554 | dd invalidInsWord |
||
1555 | dd DDFDCBInst46 |
||
1556 | dd invalidInsWord |
||
1557 | dd invalidInsWord |
||
1558 | dd invalidInsWord |
||
1559 | dd invalidInsWord |
||
1560 | dd invalidInsWord |
||
1561 | dd invalidInsWord |
||
1562 | dd invalidInsWord |
||
1563 | dd DDFDCBInst4e |
||
1564 | dd invalidInsWord |
||
1565 | dd invalidInsWord |
||
1566 | dd invalidInsWord |
||
1567 | dd invalidInsWord |
||
1568 | dd invalidInsWord |
||
1569 | dd invalidInsWord |
||
1570 | dd invalidInsWord |
||
1571 | dd DDFDCBInst56 |
||
1572 | dd invalidInsWord |
||
1573 | dd invalidInsWord |
||
1574 | dd invalidInsWord |
||
1575 | dd invalidInsWord |
||
1576 | dd invalidInsWord |
||
1577 | dd invalidInsWord |
||
1578 | dd invalidInsWord |
||
1579 | dd DDFDCBInst5e |
||
1580 | dd invalidInsWord |
||
1581 | dd invalidInsWord |
||
1582 | dd invalidInsWord |
||
1583 | dd invalidInsWord |
||
1584 | dd invalidInsWord |
||
1585 | dd invalidInsWord |
||
1586 | dd invalidInsWord |
||
1587 | dd DDFDCBInst66 |
||
1588 | dd invalidInsWord |
||
1589 | dd invalidInsWord |
||
1590 | dd invalidInsWord |
||
1591 | dd invalidInsWord |
||
1592 | dd invalidInsWord |
||
1593 | dd invalidInsWord |
||
1594 | dd invalidInsWord |
||
1595 | dd DDFDCBInst6e |
||
1596 | dd invalidInsWord |
||
1597 | dd invalidInsWord |
||
1598 | dd invalidInsWord |
||
1599 | dd invalidInsWord |
||
1600 | dd invalidInsWord |
||
1601 | dd invalidInsWord |
||
1602 | dd invalidInsWord |
||
1603 | dd DDFDCBInst76 |
||
1604 | dd invalidInsWord |
||
1605 | dd invalidInsWord |
||
1606 | dd invalidInsWord |
||
1607 | dd invalidInsWord |
||
1608 | dd invalidInsWord |
||
1609 | dd invalidInsWord |
||
1610 | dd invalidInsWord |
||
1611 | dd DDFDCBInst7e |
||
1612 | dd invalidInsWord |
||
1613 | dd invalidInsWord |
||
1614 | dd invalidInsWord |
||
1615 | dd invalidInsWord |
||
1616 | dd invalidInsWord |
||
1617 | dd invalidInsWord |
||
1618 | dd invalidInsWord |
||
1619 | dd DDFDCBInst86 |
||
1620 | dd invalidInsWord |
||
1621 | dd invalidInsWord |
||
1622 | dd invalidInsWord |
||
1623 | dd invalidInsWord |
||
1624 | dd invalidInsWord |
||
1625 | dd invalidInsWord |
||
1626 | dd invalidInsWord |
||
1627 | dd DDFDCBInst8e |
||
1628 | dd invalidInsWord |
||
1629 | dd invalidInsWord |
||
1630 | dd invalidInsWord |
||
1631 | dd invalidInsWord |
||
1632 | dd invalidInsWord |
||
1633 | dd invalidInsWord |
||
1634 | dd invalidInsWord |
||
1635 | dd DDFDCBInst96 |
||
1636 | dd invalidInsWord |
||
1637 | dd invalidInsWord |
||
1638 | dd invalidInsWord |
||
1639 | dd invalidInsWord |
||
1640 | dd invalidInsWord |
||
1641 | dd invalidInsWord |
||
1642 | dd invalidInsWord |
||
1643 | dd DDFDCBInst9e |
||
1644 | dd invalidInsWord |
||
1645 | dd invalidInsWord |
||
1646 | dd invalidInsWord |
||
1647 | dd invalidInsWord |
||
1648 | dd invalidInsWord |
||
1649 | dd invalidInsWord |
||
1650 | dd invalidInsWord |
||
1651 | dd DDFDCBInsta6 |
||
1652 | dd invalidInsWord |
||
1653 | dd invalidInsWord |
||
1654 | dd invalidInsWord |
||
1655 | dd invalidInsWord |
||
1656 | dd invalidInsWord |
||
1657 | dd invalidInsWord |
||
1658 | dd invalidInsWord |
||
1659 | dd DDFDCBInstae |
||
1660 | dd invalidInsWord |
||
1661 | dd invalidInsWord |
||
1662 | dd invalidInsWord |
||
1663 | dd invalidInsWord |
||
1664 | dd invalidInsWord |
||
1665 | dd invalidInsWord |
||
1666 | dd invalidInsWord |
||
1667 | dd DDFDCBInstb6 |
||
1668 | dd invalidInsWord |
||
1669 | dd invalidInsWord |
||
1670 | dd invalidInsWord |
||
1671 | dd invalidInsWord |
||
1672 | dd invalidInsWord |
||
1673 | dd invalidInsWord |
||
1674 | dd invalidInsWord |
||
1675 | dd DDFDCBInstbe |
||
1676 | dd invalidInsWord |
||
1677 | dd invalidInsWord |
||
1678 | dd invalidInsWord |
||
1679 | dd invalidInsWord |
||
1680 | dd invalidInsWord |
||
1681 | dd invalidInsWord |
||
1682 | dd invalidInsWord |
||
1683 | dd DDFDCBInstc6 |
||
1684 | dd invalidInsWord |
||
1685 | dd invalidInsWord |
||
1686 | dd invalidInsWord |
||
1687 | dd invalidInsWord |
||
1688 | dd invalidInsWord |
||
1689 | dd invalidInsWord |
||
1690 | dd invalidInsWord |
||
1691 | dd DDFDCBInstce |
||
1692 | dd invalidInsWord |
||
1693 | dd invalidInsWord |
||
1694 | dd invalidInsWord |
||
1695 | dd invalidInsWord |
||
1696 | dd invalidInsWord |
||
1697 | dd invalidInsWord |
||
1698 | dd invalidInsWord |
||
1699 | dd DDFDCBInstd6 |
||
1700 | dd invalidInsWord |
||
1701 | dd invalidInsWord |
||
1702 | dd invalidInsWord |
||
1703 | dd invalidInsWord |
||
1704 | dd invalidInsWord |
||
1705 | dd invalidInsWord |
||
1706 | dd invalidInsWord |
||
1707 | dd DDFDCBInstde |
||
1708 | dd invalidInsWord |
||
1709 | dd invalidInsWord |
||
1710 | dd invalidInsWord |
||
1711 | dd invalidInsWord |
||
1712 | dd invalidInsWord |
||
1713 | dd invalidInsWord |
||
1714 | dd invalidInsWord |
||
1715 | dd DDFDCBInste6 |
||
1716 | dd invalidInsWord |
||
1717 | dd invalidInsWord |
||
1718 | dd invalidInsWord |
||
1719 | dd invalidInsWord |
||
1720 | dd invalidInsWord |
||
1721 | dd invalidInsWord |
||
1722 | dd invalidInsWord |
||
1723 | dd DDFDCBInstee |
||
1724 | dd invalidInsWord |
||
1725 | dd invalidInsWord |
||
1726 | dd invalidInsWord |
||
1727 | dd invalidInsWord |
||
1728 | dd invalidInsWord |
||
1729 | dd invalidInsWord |
||
1730 | dd invalidInsWord |
||
1731 | dd DDFDCBInstf6 |
||
1732 | dd invalidInsWord |
||
1733 | dd invalidInsWord |
||
1734 | dd invalidInsWord |
||
1735 | dd invalidInsWord |
||
1736 | dd invalidInsWord |
||
1737 | dd invalidInsWord |
||
1738 | dd invalidInsWord |
||
1739 | dd DDFDCBInstfe |
||
1740 | dd invalidInsWord |
||
1741 | |||
1742 | section .text use32 flat class=code |
||
1743 | |||
1744 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1745 | |||
1746 | CBInst00: |
||
1747 | sahf |
||
1748 | rol ch, 1 |
||
1749 | lahf |
||
1750 | and ah, 029h ; Clear H and N |
||
1751 | mov byte [_z80af], ah |
||
1752 | or ch, ch |
||
1753 | lahf |
||
1754 | and ah, 0c4h ; Sign, zero, and parity |
||
1755 | or ah, byte [_z80af] |
||
1756 | sub edi, byte 8 |
||
1757 | js near noMoreExec |
||
1758 | mov dl, byte [esi] ; Get our next instruction |
||
1759 | inc esi ; Increment PC |
||
1760 | jmp dword [z80regular+edx*4] |
||
1761 | |||
1762 | |||
1763 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1764 | |||
1765 | CBInst01: |
||
1766 | sahf |
||
1767 | rol cl, 1 |
||
1768 | lahf |
||
1769 | and ah, 029h ; Clear H and N |
||
1770 | mov byte [_z80af], ah |
||
1771 | or cl, cl |
||
1772 | lahf |
||
1773 | and ah, 0c4h ; Sign, zero, and parity |
||
1774 | or ah, byte [_z80af] |
||
1775 | sub edi, byte 8 |
||
1776 | js near noMoreExec |
||
1777 | mov dl, byte [esi] ; Get our next instruction |
||
1778 | inc esi ; Increment PC |
||
1779 | jmp dword [z80regular+edx*4] |
||
1780 | |||
1781 | |||
1782 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1783 | |||
1784 | CBInst02: |
||
1785 | mov dx, [_z80de] ; Move DE into something half usable |
||
1786 | sahf |
||
1787 | rol dh, 1 |
||
1788 | lahf |
||
1789 | and ah, 029h ; Clear H and N |
||
1790 | mov byte [_z80af], ah |
||
1791 | or dh, dh |
||
1792 | lahf |
||
1793 | and ah, 0c4h ; Sign, zero, and parity |
||
1794 | or ah, byte [_z80af] |
||
1795 | mov [_z80de], dx ; Once modified, put it back |
||
1796 | xor edx, edx |
||
1797 | sub edi, byte 8 |
||
1798 | js near noMoreExec |
||
1799 | mov dl, byte [esi] ; Get our next instruction |
||
1800 | inc esi ; Increment PC |
||
1801 | jmp dword [z80regular+edx*4] |
||
1802 | |||
1803 | |||
1804 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1805 | |||
1806 | CBInst03: |
||
1807 | mov dx, [_z80de] ; Move DE into something half usable |
||
1808 | sahf |
||
1809 | rol dl, 1 |
||
1810 | lahf |
||
1811 | and ah, 029h ; Clear H and N |
||
1812 | mov byte [_z80af], ah |
||
1813 | or dl, dl |
||
1814 | lahf |
||
1815 | and ah, 0c4h ; Sign, zero, and parity |
||
1816 | or ah, byte [_z80af] |
||
1817 | mov [_z80de], dx ; Once modified, put it back |
||
1818 | xor edx, edx |
||
1819 | sub edi, byte 8 |
||
1820 | js near noMoreExec |
||
1821 | mov dl, byte [esi] ; Get our next instruction |
||
1822 | inc esi ; Increment PC |
||
1823 | jmp dword [z80regular+edx*4] |
||
1824 | |||
1825 | |||
1826 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1827 | |||
1828 | CBInst04: |
||
1829 | sahf |
||
1830 | rol bh, 1 |
||
1831 | lahf |
||
1832 | and ah, 029h ; Clear H and N |
||
1833 | mov byte [_z80af], ah |
||
1834 | or bh, bh |
||
1835 | lahf |
||
1836 | and ah, 0c4h ; Sign, zero, and parity |
||
1837 | or ah, byte [_z80af] |
||
1838 | sub edi, byte 8 |
||
1839 | js near noMoreExec |
||
1840 | mov dl, byte [esi] ; Get our next instruction |
||
1841 | inc esi ; Increment PC |
||
1842 | jmp dword [z80regular+edx*4] |
||
1843 | |||
1844 | |||
1845 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1846 | |||
1847 | CBInst05: |
||
1848 | sahf |
||
1849 | rol bl, 1 |
||
1850 | lahf |
||
1851 | and ah, 029h ; Clear H and N |
||
1852 | mov byte [_z80af], ah |
||
1853 | or bl, bl |
||
1854 | lahf |
||
1855 | and ah, 0c4h ; Sign, zero, and parity |
||
1856 | or ah, byte [_z80af] |
||
1857 | sub edi, byte 8 |
||
1858 | js near noMoreExec |
||
1859 | mov dl, byte [esi] ; Get our next instruction |
||
1860 | inc esi ; Increment PC |
||
1861 | jmp dword [z80regular+edx*4] |
||
1862 | |||
1863 | |||
1864 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1865 | |||
1866 | CBInst06: |
||
1867 | mov [cyclesRemaining], edi |
||
1868 | mov edi, [_z80MemRead] ; Point to the read array |
||
1869 | |||
1870 | checkLoop0: |
||
1871 | cmp [edi], word 0ffffh ; End of the list? |
||
1872 | je memoryRead0 |
||
1873 | cmp ebx, [edi] ; Are we smaller? |
||
1874 | jb nextAddr0 ; Yes, go to the next address |
||
1875 | cmp ebx, [edi+4] ; Are we bigger? |
||
1876 | jbe callRoutine0 |
||
1877 | |||
1878 | nextAddr0: |
||
1879 | add edi, 10h ; Next structure! |
||
1880 | jmp short checkLoop0 |
||
1881 | |||
1882 | callRoutine0: |
||
1883 | mov dx, bx ; Get our address |
||
1884 | call ReadMemoryByte ; Standard read routine |
||
1885 | mov dl, al ; Put our returned value here |
||
1886 | mov ax, [_z80af] ; Get our AF back |
||
1887 | jmp short readExit0 |
||
1888 | |||
1889 | memoryRead0: |
||
1890 | mov dl, [ebp + ebx] ; Get our data |
||
1891 | |||
1892 | readExit0: |
||
1893 | mov edi, [cyclesRemaining] |
||
1894 | sahf |
||
1895 | rol dl, 1 |
||
1896 | lahf |
||
1897 | and ah, 029h ; Clear H and N |
||
1898 | mov byte [_z80af], ah |
||
1899 | or dl, dl |
||
1900 | lahf |
||
1901 | and ah, 0c4h ; Sign, zero, and parity |
||
1902 | or ah, byte [_z80af] |
||
1903 | mov [cyclesRemaining], edi |
||
1904 | mov [_z80af], ax ; Store AF |
||
1905 | mov al, dl ; And our data to write |
||
1906 | mov edi, [_z80MemWrite] ; Point to the write array |
||
1907 | |||
1908 | checkLoop1: |
||
1909 | cmp [edi], word 0ffffh ; End of our list? |
||
1910 | je memoryWrite1 ; Yes - go write it! |
||
1911 | cmp bx, [edi] ; Are we smaller? |
||
1912 | jb nextAddr1 ; Yes... go to the next addr |
||
1913 | cmp bx, [edi+4] ; Are we smaller? |
||
1914 | jbe callRoutine1 ; If not, go call it! |
||
1915 | |||
1916 | nextAddr1: |
||
1917 | add edi, 10h ; Next structure, please |
||
1918 | jmp short checkLoop1 |
||
1919 | |||
1920 | callRoutine1: |
||
1921 | mov dx, bx ; Get our address to target |
||
1922 | call WriteMemoryByte ; Go write the data! |
||
1923 | jmp short WriteMacroExit1 |
||
1924 | memoryWrite1: |
||
1925 | mov [ebp + ebx], dl |
||
1926 | mov ax, [_z80af] ; Get our accumulator and flags |
||
1927 | WriteMacroExit1: |
||
1928 | mov edi, [cyclesRemaining] |
||
1929 | xor edx, edx |
||
1930 | sub edi, byte 15 |
||
1931 | js near noMoreExec |
||
1932 | mov dl, byte [esi] ; Get our next instruction |
||
1933 | inc esi ; Increment PC |
||
1934 | jmp dword [z80regular+edx*4] |
||
1935 | |||
1936 | |||
1937 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1938 | |||
1939 | CBInst07: |
||
1940 | sahf |
||
1941 | rol al, 1 |
||
1942 | lahf |
||
1943 | and ah, 029h ; Clear H and N |
||
1944 | mov byte [_z80af], ah |
||
1945 | or al, al |
||
1946 | lahf |
||
1947 | and ah, 0c4h ; Sign, zero, and parity |
||
1948 | or ah, byte [_z80af] |
||
1949 | sub edi, byte 8 |
||
1950 | js near noMoreExec |
||
1951 | mov dl, byte [esi] ; Get our next instruction |
||
1952 | inc esi ; Increment PC |
||
1953 | jmp dword [z80regular+edx*4] |
||
1954 | |||
1955 | |||
1956 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1957 | |||
1958 | CBInst08: |
||
1959 | sahf |
||
1960 | ror ch, 1 |
||
1961 | lahf |
||
1962 | and ah, 029h ; Clear H and N |
||
1963 | mov byte [_z80af], ah |
||
1964 | or ch, ch |
||
1965 | lahf |
||
1966 | and ah, 0c4h ; Sign, zero, and parity |
||
1967 | or ah, byte [_z80af] |
||
1968 | sub edi, byte 8 |
||
1969 | js near noMoreExec |
||
1970 | mov dl, byte [esi] ; Get our next instruction |
||
1971 | inc esi ; Increment PC |
||
1972 | jmp dword [z80regular+edx*4] |
||
1973 | |||
1974 | |||
1975 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1976 | |||
1977 | CBInst09: |
||
1978 | sahf |
||
1979 | ror cl, 1 |
||
1980 | lahf |
||
1981 | and ah, 029h ; Clear H and N |
||
1982 | mov byte [_z80af], ah |
||
1983 | or cl, cl |
||
1984 | lahf |
||
1985 | and ah, 0c4h ; Sign, zero, and parity |
||
1986 | or ah, byte [_z80af] |
||
1987 | sub edi, byte 8 |
||
1988 | js near noMoreExec |
||
1989 | mov dl, byte [esi] ; Get our next instruction |
||
1990 | inc esi ; Increment PC |
||
1991 | jmp dword [z80regular+edx*4] |
||
1992 | |||
1993 | |||
1994 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
1995 | |||
1996 | CBInst0a: |
||
1997 | mov dx, [_z80de] ; Move DE into something half usable |
||
1998 | sahf |
||
1999 | ror dh, 1 |
||
2000 | lahf |
||
2001 | and ah, 029h ; Clear H and N |
||
2002 | mov byte [_z80af], ah |
||
2003 | or dh, dh |
||
2004 | lahf |
||
2005 | and ah, 0c4h ; Sign, zero, and parity |
||
2006 | or ah, byte [_z80af] |
||
2007 | mov [_z80de], dx ; Once modified, put it back |
||
2008 | xor edx, edx |
||
2009 | sub edi, byte 8 |
||
2010 | js near noMoreExec |
||
2011 | mov dl, byte [esi] ; Get our next instruction |
||
2012 | inc esi ; Increment PC |
||
2013 | jmp dword [z80regular+edx*4] |
||
2014 | |||
2015 | |||
2016 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2017 | |||
2018 | CBInst0b: |
||
2019 | mov dx, [_z80de] ; Move DE into something half usable |
||
2020 | sahf |
||
2021 | ror dl, 1 |
||
2022 | lahf |
||
2023 | and ah, 029h ; Clear H and N |
||
2024 | mov byte [_z80af], ah |
||
2025 | or dl, dl |
||
2026 | lahf |
||
2027 | and ah, 0c4h ; Sign, zero, and parity |
||
2028 | or ah, byte [_z80af] |
||
2029 | mov [_z80de], dx ; Once modified, put it back |
||
2030 | xor edx, edx |
||
2031 | sub edi, byte 8 |
||
2032 | js near noMoreExec |
||
2033 | mov dl, byte [esi] ; Get our next instruction |
||
2034 | inc esi ; Increment PC |
||
2035 | jmp dword [z80regular+edx*4] |
||
2036 | |||
2037 | |||
2038 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2039 | |||
2040 | CBInst0c: |
||
2041 | sahf |
||
2042 | ror bh, 1 |
||
2043 | lahf |
||
2044 | and ah, 029h ; Clear H and N |
||
2045 | mov byte [_z80af], ah |
||
2046 | or bh, bh |
||
2047 | lahf |
||
2048 | and ah, 0c4h ; Sign, zero, and parity |
||
2049 | or ah, byte [_z80af] |
||
2050 | sub edi, byte 8 |
||
2051 | js near noMoreExec |
||
2052 | mov dl, byte [esi] ; Get our next instruction |
||
2053 | inc esi ; Increment PC |
||
2054 | jmp dword [z80regular+edx*4] |
||
2055 | |||
2056 | |||
2057 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2058 | |||
2059 | CBInst0d: |
||
2060 | sahf |
||
2061 | ror bl, 1 |
||
2062 | lahf |
||
2063 | and ah, 029h ; Clear H and N |
||
2064 | mov byte [_z80af], ah |
||
2065 | or bl, bl |
||
2066 | lahf |
||
2067 | and ah, 0c4h ; Sign, zero, and parity |
||
2068 | or ah, byte [_z80af] |
||
2069 | sub edi, byte 8 |
||
2070 | js near noMoreExec |
||
2071 | mov dl, byte [esi] ; Get our next instruction |
||
2072 | inc esi ; Increment PC |
||
2073 | jmp dword [z80regular+edx*4] |
||
2074 | |||
2075 | |||
2076 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2077 | |||
2078 | CBInst0e: |
||
2079 | mov [cyclesRemaining], edi |
||
2080 | mov edi, [_z80MemRead] ; Point to the read array |
||
2081 | |||
2082 | checkLoop2: |
||
2083 | cmp [edi], word 0ffffh ; End of the list? |
||
2084 | je memoryRead2 |
||
2085 | cmp ebx, [edi] ; Are we smaller? |
||
2086 | jb nextAddr2 ; Yes, go to the next address |
||
2087 | cmp ebx, [edi+4] ; Are we bigger? |
||
2088 | jbe callRoutine2 |
||
2089 | |||
2090 | nextAddr2: |
||
2091 | add edi, 10h ; Next structure! |
||
2092 | jmp short checkLoop2 |
||
2093 | |||
2094 | callRoutine2: |
||
2095 | mov dx, bx ; Get our address |
||
2096 | call ReadMemoryByte ; Standard read routine |
||
2097 | mov dl, al ; Put our returned value here |
||
2098 | mov ax, [_z80af] ; Get our AF back |
||
2099 | jmp short readExit2 |
||
2100 | |||
2101 | memoryRead2: |
||
2102 | mov dl, [ebp + ebx] ; Get our data |
||
2103 | |||
2104 | readExit2: |
||
2105 | mov edi, [cyclesRemaining] |
||
2106 | sahf |
||
2107 | ror dl, 1 |
||
2108 | lahf |
||
2109 | and ah, 029h ; Clear H and N |
||
2110 | mov byte [_z80af], ah |
||
2111 | or dl, dl |
||
2112 | lahf |
||
2113 | and ah, 0c4h ; Sign, zero, and parity |
||
2114 | or ah, byte [_z80af] |
||
2115 | mov [cyclesRemaining], edi |
||
2116 | mov [_z80af], ax ; Store AF |
||
2117 | mov al, dl ; And our data to write |
||
2118 | mov edi, [_z80MemWrite] ; Point to the write array |
||
2119 | |||
2120 | checkLoop3: |
||
2121 | cmp [edi], word 0ffffh ; End of our list? |
||
2122 | je memoryWrite3 ; Yes - go write it! |
||
2123 | cmp bx, [edi] ; Are we smaller? |
||
2124 | jb nextAddr3 ; Yes... go to the next addr |
||
2125 | cmp bx, [edi+4] ; Are we smaller? |
||
2126 | jbe callRoutine3 ; If not, go call it! |
||
2127 | |||
2128 | nextAddr3: |
||
2129 | add edi, 10h ; Next structure, please |
||
2130 | jmp short checkLoop3 |
||
2131 | |||
2132 | callRoutine3: |
||
2133 | mov dx, bx ; Get our address to target |
||
2134 | call WriteMemoryByte ; Go write the data! |
||
2135 | jmp short WriteMacroExit3 |
||
2136 | memoryWrite3: |
||
2137 | mov [ebp + ebx], dl |
||
2138 | mov ax, [_z80af] ; Get our accumulator and flags |
||
2139 | WriteMacroExit3: |
||
2140 | mov edi, [cyclesRemaining] |
||
2141 | xor edx, edx |
||
2142 | sub edi, byte 15 |
||
2143 | js near noMoreExec |
||
2144 | mov dl, byte [esi] ; Get our next instruction |
||
2145 | inc esi ; Increment PC |
||
2146 | jmp dword [z80regular+edx*4] |
||
2147 | |||
2148 | |||
2149 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2150 | |||
2151 | CBInst0f: |
||
2152 | sahf |
||
2153 | ror al, 1 |
||
2154 | lahf |
||
2155 | and ah, 029h ; Clear H and N |
||
2156 | mov byte [_z80af], ah |
||
2157 | or al, al |
||
2158 | lahf |
||
2159 | and ah, 0c4h ; Sign, zero, and parity |
||
2160 | or ah, byte [_z80af] |
||
2161 | sub edi, byte 8 |
||
2162 | js near noMoreExec |
||
2163 | mov dl, byte [esi] ; Get our next instruction |
||
2164 | inc esi ; Increment PC |
||
2165 | jmp dword [z80regular+edx*4] |
||
2166 | |||
2167 | |||
2168 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2169 | |||
2170 | CBInst10: |
||
2171 | sahf |
||
2172 | rcl ch, 1 |
||
2173 | lahf |
||
2174 | and ah, 029h ; Clear H and N |
||
2175 | mov byte [_z80af], ah |
||
2176 | or ch, ch |
||
2177 | lahf |
||
2178 | and ah, 0c4h ; Sign, zero, and parity |
||
2179 | or ah, byte [_z80af] |
||
2180 | sub edi, byte 8 |
||
2181 | js near noMoreExec |
||
2182 | mov dl, byte [esi] ; Get our next instruction |
||
2183 | inc esi ; Increment PC |
||
2184 | jmp dword [z80regular+edx*4] |
||
2185 | |||
2186 | |||
2187 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2188 | |||
2189 | CBInst11: |
||
2190 | sahf |
||
2191 | rcl cl, 1 |
||
2192 | lahf |
||
2193 | and ah, 029h ; Clear H and N |
||
2194 | mov byte [_z80af], ah |
||
2195 | or cl, cl |
||
2196 | lahf |
||
2197 | and ah, 0c4h ; Sign, zero, and parity |
||
2198 | or ah, byte [_z80af] |
||
2199 | sub edi, byte 8 |
||
2200 | js near noMoreExec |
||
2201 | mov dl, byte [esi] ; Get our next instruction |
||
2202 | inc esi ; Increment PC |
||
2203 | jmp dword [z80regular+edx*4] |
||
2204 | |||
2205 | |||
2206 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2207 | |||
2208 | CBInst12: |
||
2209 | mov dx, [_z80de] ; Move DE into something half usable |
||
2210 | sahf |
||
2211 | rcl dh, 1 |
||
2212 | lahf |
||
2213 | and ah, 029h ; Clear H and N |
||
2214 | mov byte [_z80af], ah |
||
2215 | or dh, dh |
||
2216 | lahf |
||
2217 | and ah, 0c4h ; Sign, zero, and parity |
||
2218 | or ah, byte [_z80af] |
||
2219 | mov [_z80de], dx ; Once modified, put it back |
||
2220 | xor edx, edx |
||
2221 | sub edi, byte 8 |
||
2222 | js near noMoreExec |
||
2223 | mov dl, byte [esi] ; Get our next instruction |
||
2224 | inc esi ; Increment PC |
||
2225 | jmp dword [z80regular+edx*4] |
||
2226 | |||
2227 | |||
2228 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2229 | |||
2230 | CBInst13: |
||
2231 | mov dx, [_z80de] ; Move DE into something half usable |
||
2232 | sahf |
||
2233 | rcl dl, 1 |
||
2234 | lahf |
||
2235 | and ah, 029h ; Clear H and N |
||
2236 | mov byte [_z80af], ah |
||
2237 | or dl, dl |
||
2238 | lahf |
||
2239 | and ah, 0c4h ; Sign, zero, and parity |
||
2240 | or ah, byte [_z80af] |
||
2241 | mov [_z80de], dx ; Once modified, put it back |
||
2242 | xor edx, edx |
||
2243 | sub edi, byte 8 |
||
2244 | js near noMoreExec |
||
2245 | mov dl, byte [esi] ; Get our next instruction |
||
2246 | inc esi ; Increment PC |
||
2247 | jmp dword [z80regular+edx*4] |
||
2248 | |||
2249 | |||
2250 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2251 | |||
2252 | CBInst14: |
||
2253 | sahf |
||
2254 | rcl bh, 1 |
||
2255 | lahf |
||
2256 | and ah, 029h ; Clear H and N |
||
2257 | mov byte [_z80af], ah |
||
2258 | or bh, bh |
||
2259 | lahf |
||
2260 | and ah, 0c4h ; Sign, zero, and parity |
||
2261 | or ah, byte [_z80af] |
||
2262 | sub edi, byte 8 |
||
2263 | js near noMoreExec |
||
2264 | mov dl, byte [esi] ; Get our next instruction |
||
2265 | inc esi ; Increment PC |
||
2266 | jmp dword [z80regular+edx*4] |
||
2267 | |||
2268 | |||
2269 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2270 | |||
2271 | CBInst15: |
||
2272 | sahf |
||
2273 | rcl bl, 1 |
||
2274 | lahf |
||
2275 | and ah, 029h ; Clear H and N |
||
2276 | mov byte [_z80af], ah |
||
2277 | or bl, bl |
||
2278 | lahf |
||
2279 | and ah, 0c4h ; Sign, zero, and parity |
||
2280 | or ah, byte [_z80af] |
||
2281 | sub edi, byte 8 |
||
2282 | js near noMoreExec |
||
2283 | mov dl, byte [esi] ; Get our next instruction |
||
2284 | inc esi ; Increment PC |
||
2285 | jmp dword [z80regular+edx*4] |
||
2286 | |||
2287 | |||
2288 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2289 | |||
2290 | CBInst16: |
||
2291 | mov [cyclesRemaining], edi |
||
2292 | mov edi, [_z80MemRead] ; Point to the read array |
||
2293 | |||
2294 | checkLoop4: |
||
2295 | cmp [edi], word 0ffffh ; End of the list? |
||
2296 | je memoryRead4 |
||
2297 | cmp ebx, [edi] ; Are we smaller? |
||
2298 | jb nextAddr4 ; Yes, go to the next address |
||
2299 | cmp ebx, [edi+4] ; Are we bigger? |
||
2300 | jbe callRoutine4 |
||
2301 | |||
2302 | nextAddr4: |
||
2303 | add edi, 10h ; Next structure! |
||
2304 | jmp short checkLoop4 |
||
2305 | |||
2306 | callRoutine4: |
||
2307 | mov dx, bx ; Get our address |
||
2308 | call ReadMemoryByte ; Standard read routine |
||
2309 | mov dl, al ; Put our returned value here |
||
2310 | mov ax, [_z80af] ; Get our AF back |
||
2311 | jmp short readExit4 |
||
2312 | |||
2313 | memoryRead4: |
||
2314 | mov dl, [ebp + ebx] ; Get our data |
||
2315 | |||
2316 | readExit4: |
||
2317 | mov edi, [cyclesRemaining] |
||
2318 | sahf |
||
2319 | rcl dl, 1 |
||
2320 | lahf |
||
2321 | and ah, 029h ; Clear H and N |
||
2322 | mov byte [_z80af], ah |
||
2323 | or dl, dl |
||
2324 | lahf |
||
2325 | and ah, 0c4h ; Sign, zero, and parity |
||
2326 | or ah, byte [_z80af] |
||
2327 | mov [cyclesRemaining], edi |
||
2328 | mov [_z80af], ax ; Store AF |
||
2329 | mov al, dl ; And our data to write |
||
2330 | mov edi, [_z80MemWrite] ; Point to the write array |
||
2331 | |||
2332 | checkLoop5: |
||
2333 | cmp [edi], word 0ffffh ; End of our list? |
||
2334 | je memoryWrite5 ; Yes - go write it! |
||
2335 | cmp bx, [edi] ; Are we smaller? |
||
2336 | jb nextAddr5 ; Yes... go to the next addr |
||
2337 | cmp bx, [edi+4] ; Are we smaller? |
||
2338 | jbe callRoutine5 ; If not, go call it! |
||
2339 | |||
2340 | nextAddr5: |
||
2341 | add edi, 10h ; Next structure, please |
||
2342 | jmp short checkLoop5 |
||
2343 | |||
2344 | callRoutine5: |
||
2345 | mov dx, bx ; Get our address to target |
||
2346 | call WriteMemoryByte ; Go write the data! |
||
2347 | jmp short WriteMacroExit5 |
||
2348 | memoryWrite5: |
||
2349 | mov [ebp + ebx], dl |
||
2350 | mov ax, [_z80af] ; Get our accumulator and flags |
||
2351 | WriteMacroExit5: |
||
2352 | mov edi, [cyclesRemaining] |
||
2353 | xor edx, edx |
||
2354 | sub edi, byte 15 |
||
2355 | js near noMoreExec |
||
2356 | mov dl, byte [esi] ; Get our next instruction |
||
2357 | inc esi ; Increment PC |
||
2358 | jmp dword [z80regular+edx*4] |
||
2359 | |||
2360 | |||
2361 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2362 | |||
2363 | CBInst17: |
||
2364 | sahf |
||
2365 | rcl al, 1 |
||
2366 | lahf |
||
2367 | and ah, 029h ; Clear H and N |
||
2368 | mov byte [_z80af], ah |
||
2369 | or al, al |
||
2370 | lahf |
||
2371 | and ah, 0c4h ; Sign, zero, and parity |
||
2372 | or ah, byte [_z80af] |
||
2373 | sub edi, byte 8 |
||
2374 | js near noMoreExec |
||
2375 | mov dl, byte [esi] ; Get our next instruction |
||
2376 | inc esi ; Increment PC |
||
2377 | jmp dword [z80regular+edx*4] |
||
2378 | |||
2379 | |||
2380 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2381 | |||
2382 | CBInst18: |
||
2383 | sahf |
||
2384 | rcr ch, 1 |
||
2385 | lahf |
||
2386 | and ah, 029h ; Clear H and N |
||
2387 | mov byte [_z80af], ah |
||
2388 | or ch, ch |
||
2389 | lahf |
||
2390 | and ah, 0c4h ; Sign, zero, and parity |
||
2391 | or ah, byte [_z80af] |
||
2392 | sub edi, byte 8 |
||
2393 | js near noMoreExec |
||
2394 | mov dl, byte [esi] ; Get our next instruction |
||
2395 | inc esi ; Increment PC |
||
2396 | jmp dword [z80regular+edx*4] |
||
2397 | |||
2398 | |||
2399 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2400 | |||
2401 | CBInst19: |
||
2402 | sahf |
||
2403 | rcr cl, 1 |
||
2404 | lahf |
||
2405 | and ah, 029h ; Clear H and N |
||
2406 | mov byte [_z80af], ah |
||
2407 | or cl, cl |
||
2408 | lahf |
||
2409 | and ah, 0c4h ; Sign, zero, and parity |
||
2410 | or ah, byte [_z80af] |
||
2411 | sub edi, byte 8 |
||
2412 | js near noMoreExec |
||
2413 | mov dl, byte [esi] ; Get our next instruction |
||
2414 | inc esi ; Increment PC |
||
2415 | jmp dword [z80regular+edx*4] |
||
2416 | |||
2417 | |||
2418 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2419 | |||
2420 | CBInst1a: |
||
2421 | mov dx, [_z80de] ; Move DE into something half usable |
||
2422 | sahf |
||
2423 | rcr dh, 1 |
||
2424 | lahf |
||
2425 | and ah, 029h ; Clear H and N |
||
2426 | mov byte [_z80af], ah |
||
2427 | or dh, dh |
||
2428 | lahf |
||
2429 | and ah, 0c4h ; Sign, zero, and parity |
||
2430 | or ah, byte [_z80af] |
||
2431 | mov [_z80de], dx ; Once modified, put it back |
||
2432 | xor edx, edx |
||
2433 | sub edi, byte 8 |
||
2434 | js near noMoreExec |
||
2435 | mov dl, byte [esi] ; Get our next instruction |
||
2436 | inc esi ; Increment PC |
||
2437 | jmp dword [z80regular+edx*4] |
||
2438 | |||
2439 | |||
2440 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2441 | |||
2442 | CBInst1b: |
||
2443 | mov dx, [_z80de] ; Move DE into something half usable |
||
2444 | sahf |
||
2445 | rcr dl, 1 |
||
2446 | lahf |
||
2447 | and ah, 029h ; Clear H and N |
||
2448 | mov byte [_z80af], ah |
||
2449 | or dl, dl |
||
2450 | lahf |
||
2451 | and ah, 0c4h ; Sign, zero, and parity |
||
2452 | or ah, byte [_z80af] |
||
2453 | mov [_z80de], dx ; Once modified, put it back |
||
2454 | xor edx, edx |
||
2455 | sub edi, byte 8 |
||
2456 | js near noMoreExec |
||
2457 | mov dl, byte [esi] ; Get our next instruction |
||
2458 | inc esi ; Increment PC |
||
2459 | jmp dword [z80regular+edx*4] |
||
2460 | |||
2461 | |||
2462 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2463 | |||
2464 | CBInst1c: |
||
2465 | sahf |
||
2466 | rcr bh, 1 |
||
2467 | lahf |
||
2468 | and ah, 029h ; Clear H and N |
||
2469 | mov byte [_z80af], ah |
||
2470 | or bh, bh |
||
2471 | lahf |
||
2472 | and ah, 0c4h ; Sign, zero, and parity |
||
2473 | or ah, byte [_z80af] |
||
2474 | sub edi, byte 8 |
||
2475 | js near noMoreExec |
||
2476 | mov dl, byte [esi] ; Get our next instruction |
||
2477 | inc esi ; Increment PC |
||
2478 | jmp dword [z80regular+edx*4] |
||
2479 | |||
2480 | |||
2481 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2482 | |||
2483 | CBInst1d: |
||
2484 | sahf |
||
2485 | rcr bl, 1 |
||
2486 | lahf |
||
2487 | and ah, 029h ; Clear H and N |
||
2488 | mov byte [_z80af], ah |
||
2489 | or bl, bl |
||
2490 | lahf |
||
2491 | and ah, 0c4h ; Sign, zero, and parity |
||
2492 | or ah, byte [_z80af] |
||
2493 | sub edi, byte 8 |
||
2494 | js near noMoreExec |
||
2495 | mov dl, byte [esi] ; Get our next instruction |
||
2496 | inc esi ; Increment PC |
||
2497 | jmp dword [z80regular+edx*4] |
||
2498 | |||
2499 | |||
2500 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2501 | |||
2502 | CBInst1e: |
||
2503 | mov [cyclesRemaining], edi |
||
2504 | mov edi, [_z80MemRead] ; Point to the read array |
||
2505 | |||
2506 | checkLoop6: |
||
2507 | cmp [edi], word 0ffffh ; End of the list? |
||
2508 | je memoryRead6 |
||
2509 | cmp ebx, [edi] ; Are we smaller? |
||
2510 | jb nextAddr6 ; Yes, go to the next address |
||
2511 | cmp ebx, [edi+4] ; Are we bigger? |
||
2512 | jbe callRoutine6 |
||
2513 | |||
2514 | nextAddr6: |
||
2515 | add edi, 10h ; Next structure! |
||
2516 | jmp short checkLoop6 |
||
2517 | |||
2518 | callRoutine6: |
||
2519 | mov dx, bx ; Get our address |
||
2520 | call ReadMemoryByte ; Standard read routine |
||
2521 | mov dl, al ; Put our returned value here |
||
2522 | mov ax, [_z80af] ; Get our AF back |
||
2523 | jmp short readExit6 |
||
2524 | |||
2525 | memoryRead6: |
||
2526 | mov dl, [ebp + ebx] ; Get our data |
||
2527 | |||
2528 | readExit6: |
||
2529 | mov edi, [cyclesRemaining] |
||
2530 | sahf |
||
2531 | rcr dl, 1 |
||
2532 | lahf |
||
2533 | and ah, 029h ; Clear H and N |
||
2534 | mov byte [_z80af], ah |
||
2535 | or dl, dl |
||
2536 | lahf |
||
2537 | and ah, 0c4h ; Sign, zero, and parity |
||
2538 | or ah, byte [_z80af] |
||
2539 | mov [cyclesRemaining], edi |
||
2540 | mov [_z80af], ax ; Store AF |
||
2541 | mov al, dl ; And our data to write |
||
2542 | mov edi, [_z80MemWrite] ; Point to the write array |
||
2543 | |||
2544 | checkLoop7: |
||
2545 | cmp [edi], word 0ffffh ; End of our list? |
||
2546 | je memoryWrite7 ; Yes - go write it! |
||
2547 | cmp bx, [edi] ; Are we smaller? |
||
2548 | jb nextAddr7 ; Yes... go to the next addr |
||
2549 | cmp bx, [edi+4] ; Are we smaller? |
||
2550 | jbe callRoutine7 ; If not, go call it! |
||
2551 | |||
2552 | nextAddr7: |
||
2553 | add edi, 10h ; Next structure, please |
||
2554 | jmp short checkLoop7 |
||
2555 | |||
2556 | callRoutine7: |
||
2557 | mov dx, bx ; Get our address to target |
||
2558 | call WriteMemoryByte ; Go write the data! |
||
2559 | jmp short WriteMacroExit7 |
||
2560 | memoryWrite7: |
||
2561 | mov [ebp + ebx], dl |
||
2562 | mov ax, [_z80af] ; Get our accumulator and flags |
||
2563 | WriteMacroExit7: |
||
2564 | mov edi, [cyclesRemaining] |
||
2565 | xor edx, edx |
||
2566 | sub edi, byte 15 |
||
2567 | js near noMoreExec |
||
2568 | mov dl, byte [esi] ; Get our next instruction |
||
2569 | inc esi ; Increment PC |
||
2570 | jmp dword [z80regular+edx*4] |
||
2571 | |||
2572 | |||
2573 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2574 | |||
2575 | CBInst1f: |
||
2576 | sahf |
||
2577 | rcr al, 1 |
||
2578 | lahf |
||
2579 | and ah, 029h ; Clear H and N |
||
2580 | mov byte [_z80af], ah |
||
2581 | or al, al |
||
2582 | lahf |
||
2583 | and ah, 0c4h ; Sign, zero, and parity |
||
2584 | or ah, byte [_z80af] |
||
2585 | sub edi, byte 8 |
||
2586 | js near noMoreExec |
||
2587 | mov dl, byte [esi] ; Get our next instruction |
||
2588 | inc esi ; Increment PC |
||
2589 | jmp dword [z80regular+edx*4] |
||
2590 | |||
2591 | |||
2592 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2593 | |||
2594 | CBInst20: |
||
2595 | sahf |
||
2596 | shl ch, 1 |
||
2597 | lahf |
||
2598 | and ah, 0edh ; Clear H and N |
||
2599 | sub edi, byte 8 |
||
2600 | js near noMoreExec |
||
2601 | mov dl, byte [esi] ; Get our next instruction |
||
2602 | inc esi ; Increment PC |
||
2603 | jmp dword [z80regular+edx*4] |
||
2604 | |||
2605 | |||
2606 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2607 | |||
2608 | CBInst21: |
||
2609 | sahf |
||
2610 | shl cl, 1 |
||
2611 | lahf |
||
2612 | and ah, 0edh ; Clear H and N |
||
2613 | sub edi, byte 8 |
||
2614 | js near noMoreExec |
||
2615 | mov dl, byte [esi] ; Get our next instruction |
||
2616 | inc esi ; Increment PC |
||
2617 | jmp dword [z80regular+edx*4] |
||
2618 | |||
2619 | |||
2620 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2621 | |||
2622 | CBInst22: |
||
2623 | mov dx, [_z80de] ; Move DE into something half usable |
||
2624 | sahf |
||
2625 | shl dh, 1 |
||
2626 | lahf |
||
2627 | and ah, 0edh ; Clear H and N |
||
2628 | mov [_z80de], dx ; Once modified, put it back |
||
2629 | xor edx, edx |
||
2630 | sub edi, byte 8 |
||
2631 | js near noMoreExec |
||
2632 | mov dl, byte [esi] ; Get our next instruction |
||
2633 | inc esi ; Increment PC |
||
2634 | jmp dword [z80regular+edx*4] |
||
2635 | |||
2636 | |||
2637 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2638 | |||
2639 | CBInst23: |
||
2640 | mov dx, [_z80de] ; Move DE into something half usable |
||
2641 | sahf |
||
2642 | shl dl, 1 |
||
2643 | lahf |
||
2644 | and ah, 0edh ; Clear H and N |
||
2645 | mov [_z80de], dx ; Once modified, put it back |
||
2646 | xor edx, edx |
||
2647 | sub edi, byte 8 |
||
2648 | js near noMoreExec |
||
2649 | mov dl, byte [esi] ; Get our next instruction |
||
2650 | inc esi ; Increment PC |
||
2651 | jmp dword [z80regular+edx*4] |
||
2652 | |||
2653 | |||
2654 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2655 | |||
2656 | CBInst24: |
||
2657 | sahf |
||
2658 | shl bh, 1 |
||
2659 | lahf |
||
2660 | and ah, 0edh ; Clear H and N |
||
2661 | sub edi, byte 8 |
||
2662 | js near noMoreExec |
||
2663 | mov dl, byte [esi] ; Get our next instruction |
||
2664 | inc esi ; Increment PC |
||
2665 | jmp dword [z80regular+edx*4] |
||
2666 | |||
2667 | |||
2668 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2669 | |||
2670 | CBInst25: |
||
2671 | sahf |
||
2672 | shl bl, 1 |
||
2673 | lahf |
||
2674 | and ah, 0edh ; Clear H and N |
||
2675 | sub edi, byte 8 |
||
2676 | js near noMoreExec |
||
2677 | mov dl, byte [esi] ; Get our next instruction |
||
2678 | inc esi ; Increment PC |
||
2679 | jmp dword [z80regular+edx*4] |
||
2680 | |||
2681 | |||
2682 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2683 | |||
2684 | CBInst26: |
||
2685 | mov [cyclesRemaining], edi |
||
2686 | mov edi, [_z80MemRead] ; Point to the read array |
||
2687 | |||
2688 | checkLoop8: |
||
2689 | cmp [edi], word 0ffffh ; End of the list? |
||
2690 | je memoryRead8 |
||
2691 | cmp ebx, [edi] ; Are we smaller? |
||
2692 | jb nextAddr8 ; Yes, go to the next address |
||
2693 | cmp ebx, [edi+4] ; Are we bigger? |
||
2694 | jbe callRoutine8 |
||
2695 | |||
2696 | nextAddr8: |
||
2697 | add edi, 10h ; Next structure! |
||
2698 | jmp short checkLoop8 |
||
2699 | |||
2700 | callRoutine8: |
||
2701 | mov dx, bx ; Get our address |
||
2702 | call ReadMemoryByte ; Standard read routine |
||
2703 | mov dl, al ; Put our returned value here |
||
2704 | mov ax, [_z80af] ; Get our AF back |
||
2705 | jmp short readExit8 |
||
2706 | |||
2707 | memoryRead8: |
||
2708 | mov dl, [ebp + ebx] ; Get our data |
||
2709 | |||
2710 | readExit8: |
||
2711 | mov edi, [cyclesRemaining] |
||
2712 | sahf |
||
2713 | shl dl, 1 |
||
2714 | lahf |
||
2715 | and ah, 0edh ; Clear H and N |
||
2716 | mov [cyclesRemaining], edi |
||
2717 | mov [_z80af], ax ; Store AF |
||
2718 | mov al, dl ; And our data to write |
||
2719 | mov edi, [_z80MemWrite] ; Point to the write array |
||
2720 | |||
2721 | checkLoop9: |
||
2722 | cmp [edi], word 0ffffh ; End of our list? |
||
2723 | je memoryWrite9 ; Yes - go write it! |
||
2724 | cmp bx, [edi] ; Are we smaller? |
||
2725 | jb nextAddr9 ; Yes... go to the next addr |
||
2726 | cmp bx, [edi+4] ; Are we smaller? |
||
2727 | jbe callRoutine9 ; If not, go call it! |
||
2728 | |||
2729 | nextAddr9: |
||
2730 | add edi, 10h ; Next structure, please |
||
2731 | jmp short checkLoop9 |
||
2732 | |||
2733 | callRoutine9: |
||
2734 | mov dx, bx ; Get our address to target |
||
2735 | call WriteMemoryByte ; Go write the data! |
||
2736 | jmp short WriteMacroExit9 |
||
2737 | memoryWrite9: |
||
2738 | mov [ebp + ebx], dl |
||
2739 | mov ax, [_z80af] ; Get our accumulator and flags |
||
2740 | WriteMacroExit9: |
||
2741 | mov edi, [cyclesRemaining] |
||
2742 | xor edx, edx |
||
2743 | sub edi, byte 15 |
||
2744 | js near noMoreExec |
||
2745 | mov dl, byte [esi] ; Get our next instruction |
||
2746 | inc esi ; Increment PC |
||
2747 | jmp dword [z80regular+edx*4] |
||
2748 | |||
2749 | |||
2750 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2751 | |||
2752 | CBInst27: |
||
2753 | sahf |
||
2754 | shl al, 1 |
||
2755 | lahf |
||
2756 | and ah, 0edh ; Clear H and N |
||
2757 | sub edi, byte 8 |
||
2758 | js near noMoreExec |
||
2759 | mov dl, byte [esi] ; Get our next instruction |
||
2760 | inc esi ; Increment PC |
||
2761 | jmp dword [z80regular+edx*4] |
||
2762 | |||
2763 | |||
2764 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2765 | |||
2766 | CBInst28: |
||
2767 | sahf |
||
2768 | sar ch, 1 |
||
2769 | lahf |
||
2770 | and ah, 0edh ; Clear H and N |
||
2771 | sub edi, byte 8 |
||
2772 | js near noMoreExec |
||
2773 | mov dl, byte [esi] ; Get our next instruction |
||
2774 | inc esi ; Increment PC |
||
2775 | jmp dword [z80regular+edx*4] |
||
2776 | |||
2777 | |||
2778 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2779 | |||
2780 | CBInst29: |
||
2781 | sahf |
||
2782 | sar cl, 1 |
||
2783 | lahf |
||
2784 | and ah, 0edh ; Clear H and N |
||
2785 | sub edi, byte 8 |
||
2786 | js near noMoreExec |
||
2787 | mov dl, byte [esi] ; Get our next instruction |
||
2788 | inc esi ; Increment PC |
||
2789 | jmp dword [z80regular+edx*4] |
||
2790 | |||
2791 | |||
2792 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2793 | |||
2794 | CBInst2a: |
||
2795 | mov dx, [_z80de] ; Move DE into something half usable |
||
2796 | sahf |
||
2797 | sar dh, 1 |
||
2798 | lahf |
||
2799 | and ah, 0edh ; Clear H and N |
||
2800 | mov [_z80de], dx ; Once modified, put it back |
||
2801 | xor edx, edx |
||
2802 | sub edi, byte 8 |
||
2803 | js near noMoreExec |
||
2804 | mov dl, byte [esi] ; Get our next instruction |
||
2805 | inc esi ; Increment PC |
||
2806 | jmp dword [z80regular+edx*4] |
||
2807 | |||
2808 | |||
2809 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2810 | |||
2811 | CBInst2b: |
||
2812 | mov dx, [_z80de] ; Move DE into something half usable |
||
2813 | sahf |
||
2814 | sar dl, 1 |
||
2815 | lahf |
||
2816 | and ah, 0edh ; Clear H and N |
||
2817 | mov [_z80de], dx ; Once modified, put it back |
||
2818 | xor edx, edx |
||
2819 | sub edi, byte 8 |
||
2820 | js near noMoreExec |
||
2821 | mov dl, byte [esi] ; Get our next instruction |
||
2822 | inc esi ; Increment PC |
||
2823 | jmp dword [z80regular+edx*4] |
||
2824 | |||
2825 | |||
2826 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2827 | |||
2828 | CBInst2c: |
||
2829 | sahf |
||
2830 | sar bh, 1 |
||
2831 | lahf |
||
2832 | and ah, 0edh ; Clear H and N |
||
2833 | sub edi, byte 8 |
||
2834 | js near noMoreExec |
||
2835 | mov dl, byte [esi] ; Get our next instruction |
||
2836 | inc esi ; Increment PC |
||
2837 | jmp dword [z80regular+edx*4] |
||
2838 | |||
2839 | |||
2840 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2841 | |||
2842 | CBInst2d: |
||
2843 | sahf |
||
2844 | sar bl, 1 |
||
2845 | lahf |
||
2846 | and ah, 0edh ; Clear H and N |
||
2847 | sub edi, byte 8 |
||
2848 | js near noMoreExec |
||
2849 | mov dl, byte [esi] ; Get our next instruction |
||
2850 | inc esi ; Increment PC |
||
2851 | jmp dword [z80regular+edx*4] |
||
2852 | |||
2853 | |||
2854 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2855 | |||
2856 | CBInst2e: |
||
2857 | mov [cyclesRemaining], edi |
||
2858 | mov edi, [_z80MemRead] ; Point to the read array |
||
2859 | |||
2860 | checkLoop10: |
||
2861 | cmp [edi], word 0ffffh ; End of the list? |
||
2862 | je memoryRead10 |
||
2863 | cmp ebx, [edi] ; Are we smaller? |
||
2864 | jb nextAddr10 ; Yes, go to the next address |
||
2865 | cmp ebx, [edi+4] ; Are we bigger? |
||
2866 | jbe callRoutine10 |
||
2867 | |||
2868 | nextAddr10: |
||
2869 | add edi, 10h ; Next structure! |
||
2870 | jmp short checkLoop10 |
||
2871 | |||
2872 | callRoutine10: |
||
2873 | mov dx, bx ; Get our address |
||
2874 | call ReadMemoryByte ; Standard read routine |
||
2875 | mov dl, al ; Put our returned value here |
||
2876 | mov ax, [_z80af] ; Get our AF back |
||
2877 | jmp short readExit10 |
||
2878 | |||
2879 | memoryRead10: |
||
2880 | mov dl, [ebp + ebx] ; Get our data |
||
2881 | |||
2882 | readExit10: |
||
2883 | mov edi, [cyclesRemaining] |
||
2884 | sahf |
||
2885 | sar dl, 1 |
||
2886 | lahf |
||
2887 | and ah, 0edh ; Clear H and N |
||
2888 | mov [cyclesRemaining], edi |
||
2889 | mov [_z80af], ax ; Store AF |
||
2890 | mov al, dl ; And our data to write |
||
2891 | mov edi, [_z80MemWrite] ; Point to the write array |
||
2892 | |||
2893 | checkLoop11: |
||
2894 | cmp [edi], word 0ffffh ; End of our list? |
||
2895 | je memoryWrite11 ; Yes - go write it! |
||
2896 | cmp bx, [edi] ; Are we smaller? |
||
2897 | jb nextAddr11 ; Yes... go to the next addr |
||
2898 | cmp bx, [edi+4] ; Are we smaller? |
||
2899 | jbe callRoutine11 ; If not, go call it! |
||
2900 | |||
2901 | nextAddr11: |
||
2902 | add edi, 10h ; Next structure, please |
||
2903 | jmp short checkLoop11 |
||
2904 | |||
2905 | callRoutine11: |
||
2906 | mov dx, bx ; Get our address to target |
||
2907 | call WriteMemoryByte ; Go write the data! |
||
2908 | jmp short WriteMacroExit11 |
||
2909 | memoryWrite11: |
||
2910 | mov [ebp + ebx], dl |
||
2911 | mov ax, [_z80af] ; Get our accumulator and flags |
||
2912 | WriteMacroExit11: |
||
2913 | mov edi, [cyclesRemaining] |
||
2914 | xor edx, edx |
||
2915 | sub edi, byte 15 |
||
2916 | js near noMoreExec |
||
2917 | mov dl, byte [esi] ; Get our next instruction |
||
2918 | inc esi ; Increment PC |
||
2919 | jmp dword [z80regular+edx*4] |
||
2920 | |||
2921 | |||
2922 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2923 | |||
2924 | CBInst2f: |
||
2925 | sahf |
||
2926 | sar al, 1 |
||
2927 | lahf |
||
2928 | and ah, 0edh ; Clear H and N |
||
2929 | sub edi, byte 8 |
||
2930 | js near noMoreExec |
||
2931 | mov dl, byte [esi] ; Get our next instruction |
||
2932 | inc esi ; Increment PC |
||
2933 | jmp dword [z80regular+edx*4] |
||
2934 | |||
2935 | |||
2936 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2937 | |||
2938 | CBInst30: |
||
2939 | sahf |
||
2940 | shl ch, 1 |
||
2941 | lahf |
||
2942 | or ch, 1 ; Slide in a 1 bit (SLIA) |
||
2943 | and ah, 0edh ; Clear H and N |
||
2944 | sub edi, byte 8 |
||
2945 | js near noMoreExec |
||
2946 | mov dl, byte [esi] ; Get our next instruction |
||
2947 | inc esi ; Increment PC |
||
2948 | jmp dword [z80regular+edx*4] |
||
2949 | |||
2950 | |||
2951 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2952 | |||
2953 | CBInst31: |
||
2954 | sahf |
||
2955 | shl cl, 1 |
||
2956 | lahf |
||
2957 | or cl, 1 ; Slide in a 1 bit (SLIA) |
||
2958 | and ah, 0edh ; Clear H and N |
||
2959 | sub edi, byte 8 |
||
2960 | js near noMoreExec |
||
2961 | mov dl, byte [esi] ; Get our next instruction |
||
2962 | inc esi ; Increment PC |
||
2963 | jmp dword [z80regular+edx*4] |
||
2964 | |||
2965 | |||
2966 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2967 | |||
2968 | CBInst32: |
||
2969 | mov dx, [_z80de] ; Move DE into something half usable |
||
2970 | sahf |
||
2971 | shl dh, 1 |
||
2972 | lahf |
||
2973 | or dh, 1 ; Slide in a 1 bit (SLIA) |
||
2974 | and ah, 0edh ; Clear H and N |
||
2975 | mov [_z80de], dx ; Once modified, put it back |
||
2976 | xor edx, edx |
||
2977 | sub edi, byte 8 |
||
2978 | js near noMoreExec |
||
2979 | mov dl, byte [esi] ; Get our next instruction |
||
2980 | inc esi ; Increment PC |
||
2981 | jmp dword [z80regular+edx*4] |
||
2982 | |||
2983 | |||
2984 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
2985 | |||
2986 | CBInst33: |
||
2987 | mov dx, [_z80de] ; Move DE into something half usable |
||
2988 | sahf |
||
2989 | shl dl, 1 |
||
2990 | lahf |
||
2991 | or dl, 1 ; Slide in a 1 bit (SLIA) |
||
2992 | and ah, 0edh ; Clear H and N |
||
2993 | mov [_z80de], dx ; Once modified, put it back |
||
2994 | xor edx, edx |
||
2995 | sub edi, byte 8 |
||
2996 | js near noMoreExec |
||
2997 | mov dl, byte [esi] ; Get our next instruction |
||
2998 | inc esi ; Increment PC |
||
2999 | jmp dword [z80regular+edx*4] |
||
3000 | |||
3001 | |||
3002 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3003 | |||
3004 | CBInst34: |
||
3005 | sahf |
||
3006 | shl bh, 1 |
||
3007 | lahf |
||
3008 | or bh, 1 ; Slide in a 1 bit (SLIA) |
||
3009 | and ah, 0edh ; Clear H and N |
||
3010 | sub edi, byte 8 |
||
3011 | js near noMoreExec |
||
3012 | mov dl, byte [esi] ; Get our next instruction |
||
3013 | inc esi ; Increment PC |
||
3014 | jmp dword [z80regular+edx*4] |
||
3015 | |||
3016 | |||
3017 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3018 | |||
3019 | CBInst35: |
||
3020 | sahf |
||
3021 | shl bl, 1 |
||
3022 | lahf |
||
3023 | or bl, 1 ; Slide in a 1 bit (SLIA) |
||
3024 | and ah, 0edh ; Clear H and N |
||
3025 | sub edi, byte 8 |
||
3026 | js near noMoreExec |
||
3027 | mov dl, byte [esi] ; Get our next instruction |
||
3028 | inc esi ; Increment PC |
||
3029 | jmp dword [z80regular+edx*4] |
||
3030 | |||
3031 | |||
3032 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3033 | |||
3034 | CBInst36: |
||
3035 | mov [cyclesRemaining], edi |
||
3036 | mov edi, [_z80MemRead] ; Point to the read array |
||
3037 | |||
3038 | checkLoop12: |
||
3039 | cmp [edi], word 0ffffh ; End of the list? |
||
3040 | je memoryRead12 |
||
3041 | cmp ebx, [edi] ; Are we smaller? |
||
3042 | jb nextAddr12 ; Yes, go to the next address |
||
3043 | cmp ebx, [edi+4] ; Are we bigger? |
||
3044 | jbe callRoutine12 |
||
3045 | |||
3046 | nextAddr12: |
||
3047 | add edi, 10h ; Next structure! |
||
3048 | jmp short checkLoop12 |
||
3049 | |||
3050 | callRoutine12: |
||
3051 | mov dx, bx ; Get our address |
||
3052 | call ReadMemoryByte ; Standard read routine |
||
3053 | mov dl, al ; Put our returned value here |
||
3054 | mov ax, [_z80af] ; Get our AF back |
||
3055 | jmp short readExit12 |
||
3056 | |||
3057 | memoryRead12: |
||
3058 | mov dl, [ebp + ebx] ; Get our data |
||
3059 | |||
3060 | readExit12: |
||
3061 | mov edi, [cyclesRemaining] |
||
3062 | sahf |
||
3063 | shl dl, 1 |
||
3064 | lahf |
||
3065 | or dl, 1 ; Slide in a 1 bit (SLIA) |
||
3066 | and ah, 0edh ; Clear H and N |
||
3067 | mov [cyclesRemaining], edi |
||
3068 | mov [_z80af], ax ; Store AF |
||
3069 | mov al, dl ; And our data to write |
||
3070 | mov edi, [_z80MemWrite] ; Point to the write array |
||
3071 | |||
3072 | checkLoop13: |
||
3073 | cmp [edi], word 0ffffh ; End of our list? |
||
3074 | je memoryWrite13 ; Yes - go write it! |
||
3075 | cmp bx, [edi] ; Are we smaller? |
||
3076 | jb nextAddr13 ; Yes... go to the next addr |
||
3077 | cmp bx, [edi+4] ; Are we smaller? |
||
3078 | jbe callRoutine13 ; If not, go call it! |
||
3079 | |||
3080 | nextAddr13: |
||
3081 | add edi, 10h ; Next structure, please |
||
3082 | jmp short checkLoop13 |
||
3083 | |||
3084 | callRoutine13: |
||
3085 | mov dx, bx ; Get our address to target |
||
3086 | call WriteMemoryByte ; Go write the data! |
||
3087 | jmp short WriteMacroExit13 |
||
3088 | memoryWrite13: |
||
3089 | mov [ebp + ebx], dl |
||
3090 | mov ax, [_z80af] ; Get our accumulator and flags |
||
3091 | WriteMacroExit13: |
||
3092 | mov edi, [cyclesRemaining] |
||
3093 | xor edx, edx |
||
3094 | sub edi, byte 15 |
||
3095 | js near noMoreExec |
||
3096 | mov dl, byte [esi] ; Get our next instruction |
||
3097 | inc esi ; Increment PC |
||
3098 | jmp dword [z80regular+edx*4] |
||
3099 | |||
3100 | |||
3101 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3102 | |||
3103 | CBInst37: |
||
3104 | sahf |
||
3105 | shl al, 1 |
||
3106 | lahf |
||
3107 | or al, 1 ; Slide in a 1 bit (SLIA) |
||
3108 | and ah, 0edh ; Clear H and N |
||
3109 | sub edi, byte 8 |
||
3110 | js near noMoreExec |
||
3111 | mov dl, byte [esi] ; Get our next instruction |
||
3112 | inc esi ; Increment PC |
||
3113 | jmp dword [z80regular+edx*4] |
||
3114 | |||
3115 | |||
3116 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3117 | |||
3118 | CBInst38: |
||
3119 | sahf |
||
3120 | shr ch, 1 |
||
3121 | lahf |
||
3122 | and ah, 0edh ; Clear H and N |
||
3123 | sub edi, byte 8 |
||
3124 | js near noMoreExec |
||
3125 | mov dl, byte [esi] ; Get our next instruction |
||
3126 | inc esi ; Increment PC |
||
3127 | jmp dword [z80regular+edx*4] |
||
3128 | |||
3129 | |||
3130 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3131 | |||
3132 | CBInst39: |
||
3133 | sahf |
||
3134 | shr cl, 1 |
||
3135 | lahf |
||
3136 | and ah, 0edh ; Clear H and N |
||
3137 | sub edi, byte 8 |
||
3138 | js near noMoreExec |
||
3139 | mov dl, byte [esi] ; Get our next instruction |
||
3140 | inc esi ; Increment PC |
||
3141 | jmp dword [z80regular+edx*4] |
||
3142 | |||
3143 | |||
3144 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3145 | |||
3146 | CBInst3a: |
||
3147 | mov dx, [_z80de] ; Move DE into something half usable |
||
3148 | sahf |
||
3149 | shr dh, 1 |
||
3150 | lahf |
||
3151 | and ah, 0edh ; Clear H and N |
||
3152 | mov [_z80de], dx ; Once modified, put it back |
||
3153 | xor edx, edx |
||
3154 | sub edi, byte 8 |
||
3155 | js near noMoreExec |
||
3156 | mov dl, byte [esi] ; Get our next instruction |
||
3157 | inc esi ; Increment PC |
||
3158 | jmp dword [z80regular+edx*4] |
||
3159 | |||
3160 | |||
3161 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3162 | |||
3163 | CBInst3b: |
||
3164 | mov dx, [_z80de] ; Move DE into something half usable |
||
3165 | sahf |
||
3166 | shr dl, 1 |
||
3167 | lahf |
||
3168 | and ah, 0edh ; Clear H and N |
||
3169 | mov [_z80de], dx ; Once modified, put it back |
||
3170 | xor edx, edx |
||
3171 | sub edi, byte 8 |
||
3172 | js near noMoreExec |
||
3173 | mov dl, byte [esi] ; Get our next instruction |
||
3174 | inc esi ; Increment PC |
||
3175 | jmp dword [z80regular+edx*4] |
||
3176 | |||
3177 | |||
3178 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3179 | |||
3180 | CBInst3c: |
||
3181 | sahf |
||
3182 | shr bh, 1 |
||
3183 | lahf |
||
3184 | and ah, 0edh ; Clear H and N |
||
3185 | sub edi, byte 8 |
||
3186 | js near noMoreExec |
||
3187 | mov dl, byte [esi] ; Get our next instruction |
||
3188 | inc esi ; Increment PC |
||
3189 | jmp dword [z80regular+edx*4] |
||
3190 | |||
3191 | |||
3192 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3193 | |||
3194 | CBInst3d: |
||
3195 | sahf |
||
3196 | shr bl, 1 |
||
3197 | lahf |
||
3198 | and ah, 0edh ; Clear H and N |
||
3199 | sub edi, byte 8 |
||
3200 | js near noMoreExec |
||
3201 | mov dl, byte [esi] ; Get our next instruction |
||
3202 | inc esi ; Increment PC |
||
3203 | jmp dword [z80regular+edx*4] |
||
3204 | |||
3205 | |||
3206 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3207 | |||
3208 | CBInst3e: |
||
3209 | mov [cyclesRemaining], edi |
||
3210 | mov edi, [_z80MemRead] ; Point to the read array |
||
3211 | |||
3212 | checkLoop14: |
||
3213 | cmp [edi], word 0ffffh ; End of the list? |
||
3214 | je memoryRead14 |
||
3215 | cmp ebx, [edi] ; Are we smaller? |
||
3216 | jb nextAddr14 ; Yes, go to the next address |
||
3217 | cmp ebx, [edi+4] ; Are we bigger? |
||
3218 | jbe callRoutine14 |
||
3219 | |||
3220 | nextAddr14: |
||
3221 | add edi, 10h ; Next structure! |
||
3222 | jmp short checkLoop14 |
||
3223 | |||
3224 | callRoutine14: |
||
3225 | mov dx, bx ; Get our address |
||
3226 | call ReadMemoryByte ; Standard read routine |
||
3227 | mov dl, al ; Put our returned value here |
||
3228 | mov ax, [_z80af] ; Get our AF back |
||
3229 | jmp short readExit14 |
||
3230 | |||
3231 | memoryRead14: |
||
3232 | mov dl, [ebp + ebx] ; Get our data |
||
3233 | |||
3234 | readExit14: |
||
3235 | mov edi, [cyclesRemaining] |
||
3236 | sahf |
||
3237 | shr dl, 1 |
||
3238 | lahf |
||
3239 | and ah, 0edh ; Clear H and N |
||
3240 | mov [cyclesRemaining], edi |
||
3241 | mov [_z80af], ax ; Store AF |
||
3242 | mov al, dl ; And our data to write |
||
3243 | mov edi, [_z80MemWrite] ; Point to the write array |
||
3244 | |||
3245 | checkLoop15: |
||
3246 | cmp [edi], word 0ffffh ; End of our list? |
||
3247 | je memoryWrite15 ; Yes - go write it! |
||
3248 | cmp bx, [edi] ; Are we smaller? |
||
3249 | jb nextAddr15 ; Yes... go to the next addr |
||
3250 | cmp bx, [edi+4] ; Are we smaller? |
||
3251 | jbe callRoutine15 ; If not, go call it! |
||
3252 | |||
3253 | nextAddr15: |
||
3254 | add edi, 10h ; Next structure, please |
||
3255 | jmp short checkLoop15 |
||
3256 | |||
3257 | callRoutine15: |
||
3258 | mov dx, bx ; Get our address to target |
||
3259 | call WriteMemoryByte ; Go write the data! |
||
3260 | jmp short WriteMacroExit15 |
||
3261 | memoryWrite15: |
||
3262 | mov [ebp + ebx], dl |
||
3263 | mov ax, [_z80af] ; Get our accumulator and flags |
||
3264 | WriteMacroExit15: |
||
3265 | mov edi, [cyclesRemaining] |
||
3266 | xor edx, edx |
||
3267 | sub edi, byte 15 |
||
3268 | js near noMoreExec |
||
3269 | mov dl, byte [esi] ; Get our next instruction |
||
3270 | inc esi ; Increment PC |
||
3271 | jmp dword [z80regular+edx*4] |
||
3272 | |||
3273 | |||
3274 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3275 | |||
3276 | CBInst3f: |
||
3277 | sahf |
||
3278 | shr al, 1 |
||
3279 | lahf |
||
3280 | and ah, 0edh ; Clear H and N |
||
3281 | sub edi, byte 8 |
||
3282 | js near noMoreExec |
||
3283 | mov dl, byte [esi] ; Get our next instruction |
||
3284 | inc esi ; Increment PC |
||
3285 | jmp dword [z80regular+edx*4] |
||
3286 | |||
3287 | |||
3288 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3289 | |||
3290 | CBInst40: |
||
3291 | mov byte [_z80af], ah ; Store F |
||
3292 | sahf |
||
3293 | test ch, 001h ; Do a bitwise check |
||
3294 | lahf |
||
3295 | and ah, 0c0h ; Only care about Z and S |
||
3296 | or ah, 10h ; Set half carry to 1 |
||
3297 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3298 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3299 | sub edi, byte 8 |
||
3300 | js near noMoreExec |
||
3301 | mov dl, byte [esi] ; Get our next instruction |
||
3302 | inc esi ; Increment PC |
||
3303 | jmp dword [z80regular+edx*4] |
||
3304 | |||
3305 | |||
3306 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3307 | |||
3308 | CBInst41: |
||
3309 | mov byte [_z80af], ah ; Store F |
||
3310 | sahf |
||
3311 | test cl, 001h ; Do a bitwise check |
||
3312 | lahf |
||
3313 | and ah, 0c0h ; Only care about Z and S |
||
3314 | or ah, 10h ; Set half carry to 1 |
||
3315 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3316 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3317 | sub edi, byte 8 |
||
3318 | js near noMoreExec |
||
3319 | mov dl, byte [esi] ; Get our next instruction |
||
3320 | inc esi ; Increment PC |
||
3321 | jmp dword [z80regular+edx*4] |
||
3322 | |||
3323 | |||
3324 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3325 | |||
3326 | CBInst42: |
||
3327 | mov byte [_z80af], ah ; Store F |
||
3328 | sahf |
||
3329 | test byte [_z80de + 1], 001h ; Do a bitwise check |
||
3330 | lahf |
||
3331 | and ah, 0c0h ; Only care about Z and S |
||
3332 | or ah, 10h ; Set half carry to 1 |
||
3333 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3334 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3335 | sub edi, byte 8 |
||
3336 | js near noMoreExec |
||
3337 | mov dl, byte [esi] ; Get our next instruction |
||
3338 | inc esi ; Increment PC |
||
3339 | jmp dword [z80regular+edx*4] |
||
3340 | |||
3341 | |||
3342 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3343 | |||
3344 | CBInst43: |
||
3345 | mov byte [_z80af], ah ; Store F |
||
3346 | sahf |
||
3347 | test byte [_z80de], 001h ; Do a bitwise check |
||
3348 | lahf |
||
3349 | and ah, 0c0h ; Only care about Z and S |
||
3350 | or ah, 10h ; Set half carry to 1 |
||
3351 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3352 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3353 | sub edi, byte 8 |
||
3354 | js near noMoreExec |
||
3355 | mov dl, byte [esi] ; Get our next instruction |
||
3356 | inc esi ; Increment PC |
||
3357 | jmp dword [z80regular+edx*4] |
||
3358 | |||
3359 | |||
3360 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3361 | |||
3362 | CBInst44: |
||
3363 | mov byte [_z80af], ah ; Store F |
||
3364 | sahf |
||
3365 | test bh, 001h ; Do a bitwise check |
||
3366 | lahf |
||
3367 | and ah, 0c0h ; Only care about Z and S |
||
3368 | or ah, 10h ; Set half carry to 1 |
||
3369 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3370 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3371 | sub edi, byte 8 |
||
3372 | js near noMoreExec |
||
3373 | mov dl, byte [esi] ; Get our next instruction |
||
3374 | inc esi ; Increment PC |
||
3375 | jmp dword [z80regular+edx*4] |
||
3376 | |||
3377 | |||
3378 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3379 | |||
3380 | CBInst45: |
||
3381 | mov byte [_z80af], ah ; Store F |
||
3382 | sahf |
||
3383 | test bl, 001h ; Do a bitwise check |
||
3384 | lahf |
||
3385 | and ah, 0c0h ; Only care about Z and S |
||
3386 | or ah, 10h ; Set half carry to 1 |
||
3387 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3388 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3389 | sub edi, byte 8 |
||
3390 | js near noMoreExec |
||
3391 | mov dl, byte [esi] ; Get our next instruction |
||
3392 | inc esi ; Increment PC |
||
3393 | jmp dword [z80regular+edx*4] |
||
3394 | |||
3395 | |||
3396 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3397 | |||
3398 | CBInst46: |
||
3399 | mov [cyclesRemaining], edi |
||
3400 | mov edi, [_z80MemRead] ; Point to the read array |
||
3401 | |||
3402 | checkLoop16: |
||
3403 | cmp [edi], word 0ffffh ; End of the list? |
||
3404 | je memoryRead16 |
||
3405 | cmp ebx, [edi] ; Are we smaller? |
||
3406 | jb nextAddr16 ; Yes, go to the next address |
||
3407 | cmp ebx, [edi+4] ; Are we bigger? |
||
3408 | jbe callRoutine16 |
||
3409 | |||
3410 | nextAddr16: |
||
3411 | add edi, 10h ; Next structure! |
||
3412 | jmp short checkLoop16 |
||
3413 | |||
3414 | callRoutine16: |
||
3415 | mov dx, bx ; Get our address |
||
3416 | call ReadMemoryByte ; Standard read routine |
||
3417 | mov dl, al ; Put our returned value here |
||
3418 | mov ax, [_z80af] ; Get our AF back |
||
3419 | jmp short readExit16 |
||
3420 | |||
3421 | memoryRead16: |
||
3422 | mov dl, [ebp + ebx] ; Get our data |
||
3423 | |||
3424 | readExit16: |
||
3425 | mov edi, [cyclesRemaining] |
||
3426 | mov byte [_z80af], ah ; Store F |
||
3427 | sahf |
||
3428 | test dl, 001h ; Do a bitwise check |
||
3429 | lahf |
||
3430 | and ah, 0c0h ; Only care about Z and S |
||
3431 | or ah, 10h ; Set half carry to 1 |
||
3432 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3433 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3434 | xor edx, edx |
||
3435 | sub edi, byte 12 |
||
3436 | js near noMoreExec |
||
3437 | mov dl, byte [esi] ; Get our next instruction |
||
3438 | inc esi ; Increment PC |
||
3439 | jmp dword [z80regular+edx*4] |
||
3440 | |||
3441 | |||
3442 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3443 | |||
3444 | CBInst47: |
||
3445 | mov byte [_z80af], ah ; Store F |
||
3446 | sahf |
||
3447 | test al, 001h ; Do a bitwise check |
||
3448 | lahf |
||
3449 | and ah, 0c0h ; Only care about Z and S |
||
3450 | or ah, 10h ; Set half carry to 1 |
||
3451 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3452 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3453 | sub edi, byte 8 |
||
3454 | js near noMoreExec |
||
3455 | mov dl, byte [esi] ; Get our next instruction |
||
3456 | inc esi ; Increment PC |
||
3457 | jmp dword [z80regular+edx*4] |
||
3458 | |||
3459 | |||
3460 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3461 | |||
3462 | CBInst48: |
||
3463 | mov byte [_z80af], ah ; Store F |
||
3464 | sahf |
||
3465 | test ch, 002h ; Do a bitwise check |
||
3466 | lahf |
||
3467 | and ah, 0c0h ; Only care about Z and S |
||
3468 | or ah, 10h ; Set half carry to 1 |
||
3469 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3470 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3471 | sub edi, byte 8 |
||
3472 | js near noMoreExec |
||
3473 | mov dl, byte [esi] ; Get our next instruction |
||
3474 | inc esi ; Increment PC |
||
3475 | jmp dword [z80regular+edx*4] |
||
3476 | |||
3477 | |||
3478 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3479 | |||
3480 | CBInst49: |
||
3481 | mov byte [_z80af], ah ; Store F |
||
3482 | sahf |
||
3483 | test cl, 002h ; Do a bitwise check |
||
3484 | lahf |
||
3485 | and ah, 0c0h ; Only care about Z and S |
||
3486 | or ah, 10h ; Set half carry to 1 |
||
3487 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3488 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3489 | sub edi, byte 8 |
||
3490 | js near noMoreExec |
||
3491 | mov dl, byte [esi] ; Get our next instruction |
||
3492 | inc esi ; Increment PC |
||
3493 | jmp dword [z80regular+edx*4] |
||
3494 | |||
3495 | |||
3496 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3497 | |||
3498 | CBInst4a: |
||
3499 | mov byte [_z80af], ah ; Store F |
||
3500 | sahf |
||
3501 | test byte [_z80de + 1], 002h ; Do a bitwise check |
||
3502 | lahf |
||
3503 | and ah, 0c0h ; Only care about Z and S |
||
3504 | or ah, 10h ; Set half carry to 1 |
||
3505 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3506 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3507 | sub edi, byte 8 |
||
3508 | js near noMoreExec |
||
3509 | mov dl, byte [esi] ; Get our next instruction |
||
3510 | inc esi ; Increment PC |
||
3511 | jmp dword [z80regular+edx*4] |
||
3512 | |||
3513 | |||
3514 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3515 | |||
3516 | CBInst4b: |
||
3517 | mov byte [_z80af], ah ; Store F |
||
3518 | sahf |
||
3519 | test byte [_z80de], 002h ; Do a bitwise check |
||
3520 | lahf |
||
3521 | and ah, 0c0h ; Only care about Z and S |
||
3522 | or ah, 10h ; Set half carry to 1 |
||
3523 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3524 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3525 | sub edi, byte 8 |
||
3526 | js near noMoreExec |
||
3527 | mov dl, byte [esi] ; Get our next instruction |
||
3528 | inc esi ; Increment PC |
||
3529 | jmp dword [z80regular+edx*4] |
||
3530 | |||
3531 | |||
3532 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3533 | |||
3534 | CBInst4c: |
||
3535 | mov byte [_z80af], ah ; Store F |
||
3536 | sahf |
||
3537 | test bh, 002h ; Do a bitwise check |
||
3538 | lahf |
||
3539 | and ah, 0c0h ; Only care about Z and S |
||
3540 | or ah, 10h ; Set half carry to 1 |
||
3541 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3542 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3543 | sub edi, byte 8 |
||
3544 | js near noMoreExec |
||
3545 | mov dl, byte [esi] ; Get our next instruction |
||
3546 | inc esi ; Increment PC |
||
3547 | jmp dword [z80regular+edx*4] |
||
3548 | |||
3549 | |||
3550 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3551 | |||
3552 | CBInst4d: |
||
3553 | mov byte [_z80af], ah ; Store F |
||
3554 | sahf |
||
3555 | test bl, 002h ; Do a bitwise check |
||
3556 | lahf |
||
3557 | and ah, 0c0h ; Only care about Z and S |
||
3558 | or ah, 10h ; Set half carry to 1 |
||
3559 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3560 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3561 | sub edi, byte 8 |
||
3562 | js near noMoreExec |
||
3563 | mov dl, byte [esi] ; Get our next instruction |
||
3564 | inc esi ; Increment PC |
||
3565 | jmp dword [z80regular+edx*4] |
||
3566 | |||
3567 | |||
3568 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3569 | |||
3570 | CBInst4e: |
||
3571 | mov [cyclesRemaining], edi |
||
3572 | mov edi, [_z80MemRead] ; Point to the read array |
||
3573 | |||
3574 | checkLoop17: |
||
3575 | cmp [edi], word 0ffffh ; End of the list? |
||
3576 | je memoryRead17 |
||
3577 | cmp ebx, [edi] ; Are we smaller? |
||
3578 | jb nextAddr17 ; Yes, go to the next address |
||
3579 | cmp ebx, [edi+4] ; Are we bigger? |
||
3580 | jbe callRoutine17 |
||
3581 | |||
3582 | nextAddr17: |
||
3583 | add edi, 10h ; Next structure! |
||
3584 | jmp short checkLoop17 |
||
3585 | |||
3586 | callRoutine17: |
||
3587 | mov dx, bx ; Get our address |
||
3588 | call ReadMemoryByte ; Standard read routine |
||
3589 | mov dl, al ; Put our returned value here |
||
3590 | mov ax, [_z80af] ; Get our AF back |
||
3591 | jmp short readExit17 |
||
3592 | |||
3593 | memoryRead17: |
||
3594 | mov dl, [ebp + ebx] ; Get our data |
||
3595 | |||
3596 | readExit17: |
||
3597 | mov edi, [cyclesRemaining] |
||
3598 | mov byte [_z80af], ah ; Store F |
||
3599 | sahf |
||
3600 | test dl, 002h ; Do a bitwise check |
||
3601 | lahf |
||
3602 | and ah, 0c0h ; Only care about Z and S |
||
3603 | or ah, 10h ; Set half carry to 1 |
||
3604 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3605 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3606 | xor edx, edx |
||
3607 | sub edi, byte 12 |
||
3608 | js near noMoreExec |
||
3609 | mov dl, byte [esi] ; Get our next instruction |
||
3610 | inc esi ; Increment PC |
||
3611 | jmp dword [z80regular+edx*4] |
||
3612 | |||
3613 | |||
3614 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3615 | |||
3616 | CBInst4f: |
||
3617 | mov byte [_z80af], ah ; Store F |
||
3618 | sahf |
||
3619 | test al, 002h ; Do a bitwise check |
||
3620 | lahf |
||
3621 | and ah, 0c0h ; Only care about Z and S |
||
3622 | or ah, 10h ; Set half carry to 1 |
||
3623 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3624 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3625 | sub edi, byte 8 |
||
3626 | js near noMoreExec |
||
3627 | mov dl, byte [esi] ; Get our next instruction |
||
3628 | inc esi ; Increment PC |
||
3629 | jmp dword [z80regular+edx*4] |
||
3630 | |||
3631 | |||
3632 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3633 | |||
3634 | CBInst50: |
||
3635 | mov byte [_z80af], ah ; Store F |
||
3636 | sahf |
||
3637 | test ch, 004h ; Do a bitwise check |
||
3638 | lahf |
||
3639 | and ah, 0c0h ; Only care about Z and S |
||
3640 | or ah, 10h ; Set half carry to 1 |
||
3641 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3642 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3643 | sub edi, byte 8 |
||
3644 | js near noMoreExec |
||
3645 | mov dl, byte [esi] ; Get our next instruction |
||
3646 | inc esi ; Increment PC |
||
3647 | jmp dword [z80regular+edx*4] |
||
3648 | |||
3649 | |||
3650 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3651 | |||
3652 | CBInst51: |
||
3653 | mov byte [_z80af], ah ; Store F |
||
3654 | sahf |
||
3655 | test cl, 004h ; Do a bitwise check |
||
3656 | lahf |
||
3657 | and ah, 0c0h ; Only care about Z and S |
||
3658 | or ah, 10h ; Set half carry to 1 |
||
3659 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3660 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3661 | sub edi, byte 8 |
||
3662 | js near noMoreExec |
||
3663 | mov dl, byte [esi] ; Get our next instruction |
||
3664 | inc esi ; Increment PC |
||
3665 | jmp dword [z80regular+edx*4] |
||
3666 | |||
3667 | |||
3668 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3669 | |||
3670 | CBInst52: |
||
3671 | mov byte [_z80af], ah ; Store F |
||
3672 | sahf |
||
3673 | test byte [_z80de + 1], 004h ; Do a bitwise check |
||
3674 | lahf |
||
3675 | and ah, 0c0h ; Only care about Z and S |
||
3676 | or ah, 10h ; Set half carry to 1 |
||
3677 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3678 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3679 | sub edi, byte 8 |
||
3680 | js near noMoreExec |
||
3681 | mov dl, byte [esi] ; Get our next instruction |
||
3682 | inc esi ; Increment PC |
||
3683 | jmp dword [z80regular+edx*4] |
||
3684 | |||
3685 | |||
3686 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3687 | |||
3688 | CBInst53: |
||
3689 | mov byte [_z80af], ah ; Store F |
||
3690 | sahf |
||
3691 | test byte [_z80de], 004h ; Do a bitwise check |
||
3692 | lahf |
||
3693 | and ah, 0c0h ; Only care about Z and S |
||
3694 | or ah, 10h ; Set half carry to 1 |
||
3695 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3696 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3697 | sub edi, byte 8 |
||
3698 | js near noMoreExec |
||
3699 | mov dl, byte [esi] ; Get our next instruction |
||
3700 | inc esi ; Increment PC |
||
3701 | jmp dword [z80regular+edx*4] |
||
3702 | |||
3703 | |||
3704 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3705 | |||
3706 | CBInst54: |
||
3707 | mov byte [_z80af], ah ; Store F |
||
3708 | sahf |
||
3709 | test bh, 004h ; Do a bitwise check |
||
3710 | lahf |
||
3711 | and ah, 0c0h ; Only care about Z and S |
||
3712 | or ah, 10h ; Set half carry to 1 |
||
3713 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3714 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3715 | sub edi, byte 8 |
||
3716 | js near noMoreExec |
||
3717 | mov dl, byte [esi] ; Get our next instruction |
||
3718 | inc esi ; Increment PC |
||
3719 | jmp dword [z80regular+edx*4] |
||
3720 | |||
3721 | |||
3722 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3723 | |||
3724 | CBInst55: |
||
3725 | mov byte [_z80af], ah ; Store F |
||
3726 | sahf |
||
3727 | test bl, 004h ; Do a bitwise check |
||
3728 | lahf |
||
3729 | and ah, 0c0h ; Only care about Z and S |
||
3730 | or ah, 10h ; Set half carry to 1 |
||
3731 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3732 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3733 | sub edi, byte 8 |
||
3734 | js near noMoreExec |
||
3735 | mov dl, byte [esi] ; Get our next instruction |
||
3736 | inc esi ; Increment PC |
||
3737 | jmp dword [z80regular+edx*4] |
||
3738 | |||
3739 | |||
3740 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3741 | |||
3742 | CBInst56: |
||
3743 | mov [cyclesRemaining], edi |
||
3744 | mov edi, [_z80MemRead] ; Point to the read array |
||
3745 | |||
3746 | checkLoop18: |
||
3747 | cmp [edi], word 0ffffh ; End of the list? |
||
3748 | je memoryRead18 |
||
3749 | cmp ebx, [edi] ; Are we smaller? |
||
3750 | jb nextAddr18 ; Yes, go to the next address |
||
3751 | cmp ebx, [edi+4] ; Are we bigger? |
||
3752 | jbe callRoutine18 |
||
3753 | |||
3754 | nextAddr18: |
||
3755 | add edi, 10h ; Next structure! |
||
3756 | jmp short checkLoop18 |
||
3757 | |||
3758 | callRoutine18: |
||
3759 | mov dx, bx ; Get our address |
||
3760 | call ReadMemoryByte ; Standard read routine |
||
3761 | mov dl, al ; Put our returned value here |
||
3762 | mov ax, [_z80af] ; Get our AF back |
||
3763 | jmp short readExit18 |
||
3764 | |||
3765 | memoryRead18: |
||
3766 | mov dl, [ebp + ebx] ; Get our data |
||
3767 | |||
3768 | readExit18: |
||
3769 | mov edi, [cyclesRemaining] |
||
3770 | mov byte [_z80af], ah ; Store F |
||
3771 | sahf |
||
3772 | test dl, 004h ; Do a bitwise check |
||
3773 | lahf |
||
3774 | and ah, 0c0h ; Only care about Z and S |
||
3775 | or ah, 10h ; Set half carry to 1 |
||
3776 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3777 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3778 | xor edx, edx |
||
3779 | sub edi, byte 12 |
||
3780 | js near noMoreExec |
||
3781 | mov dl, byte [esi] ; Get our next instruction |
||
3782 | inc esi ; Increment PC |
||
3783 | jmp dword [z80regular+edx*4] |
||
3784 | |||
3785 | |||
3786 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3787 | |||
3788 | CBInst57: |
||
3789 | mov byte [_z80af], ah ; Store F |
||
3790 | sahf |
||
3791 | test al, 004h ; Do a bitwise check |
||
3792 | lahf |
||
3793 | and ah, 0c0h ; Only care about Z and S |
||
3794 | or ah, 10h ; Set half carry to 1 |
||
3795 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3796 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3797 | sub edi, byte 8 |
||
3798 | js near noMoreExec |
||
3799 | mov dl, byte [esi] ; Get our next instruction |
||
3800 | inc esi ; Increment PC |
||
3801 | jmp dword [z80regular+edx*4] |
||
3802 | |||
3803 | |||
3804 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3805 | |||
3806 | CBInst58: |
||
3807 | mov byte [_z80af], ah ; Store F |
||
3808 | sahf |
||
3809 | test ch, 008h ; Do a bitwise check |
||
3810 | lahf |
||
3811 | and ah, 0c0h ; Only care about Z and S |
||
3812 | or ah, 10h ; Set half carry to 1 |
||
3813 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3814 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3815 | sub edi, byte 8 |
||
3816 | js near noMoreExec |
||
3817 | mov dl, byte [esi] ; Get our next instruction |
||
3818 | inc esi ; Increment PC |
||
3819 | jmp dword [z80regular+edx*4] |
||
3820 | |||
3821 | |||
3822 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3823 | |||
3824 | CBInst59: |
||
3825 | mov byte [_z80af], ah ; Store F |
||
3826 | sahf |
||
3827 | test cl, 008h ; Do a bitwise check |
||
3828 | lahf |
||
3829 | and ah, 0c0h ; Only care about Z and S |
||
3830 | or ah, 10h ; Set half carry to 1 |
||
3831 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3832 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3833 | sub edi, byte 8 |
||
3834 | js near noMoreExec |
||
3835 | mov dl, byte [esi] ; Get our next instruction |
||
3836 | inc esi ; Increment PC |
||
3837 | jmp dword [z80regular+edx*4] |
||
3838 | |||
3839 | |||
3840 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3841 | |||
3842 | CBInst5a: |
||
3843 | mov byte [_z80af], ah ; Store F |
||
3844 | sahf |
||
3845 | test byte [_z80de + 1], 008h ; Do a bitwise check |
||
3846 | lahf |
||
3847 | and ah, 0c0h ; Only care about Z and S |
||
3848 | or ah, 10h ; Set half carry to 1 |
||
3849 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3850 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3851 | sub edi, byte 8 |
||
3852 | js near noMoreExec |
||
3853 | mov dl, byte [esi] ; Get our next instruction |
||
3854 | inc esi ; Increment PC |
||
3855 | jmp dword [z80regular+edx*4] |
||
3856 | |||
3857 | |||
3858 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3859 | |||
3860 | CBInst5b: |
||
3861 | mov byte [_z80af], ah ; Store F |
||
3862 | sahf |
||
3863 | test byte [_z80de], 008h ; Do a bitwise check |
||
3864 | lahf |
||
3865 | and ah, 0c0h ; Only care about Z and S |
||
3866 | or ah, 10h ; Set half carry to 1 |
||
3867 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3868 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3869 | sub edi, byte 8 |
||
3870 | js near noMoreExec |
||
3871 | mov dl, byte [esi] ; Get our next instruction |
||
3872 | inc esi ; Increment PC |
||
3873 | jmp dword [z80regular+edx*4] |
||
3874 | |||
3875 | |||
3876 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3877 | |||
3878 | CBInst5c: |
||
3879 | mov byte [_z80af], ah ; Store F |
||
3880 | sahf |
||
3881 | test bh, 008h ; Do a bitwise check |
||
3882 | lahf |
||
3883 | and ah, 0c0h ; Only care about Z and S |
||
3884 | or ah, 10h ; Set half carry to 1 |
||
3885 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3886 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3887 | sub edi, byte 8 |
||
3888 | js near noMoreExec |
||
3889 | mov dl, byte [esi] ; Get our next instruction |
||
3890 | inc esi ; Increment PC |
||
3891 | jmp dword [z80regular+edx*4] |
||
3892 | |||
3893 | |||
3894 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3895 | |||
3896 | CBInst5d: |
||
3897 | mov byte [_z80af], ah ; Store F |
||
3898 | sahf |
||
3899 | test bl, 008h ; Do a bitwise check |
||
3900 | lahf |
||
3901 | and ah, 0c0h ; Only care about Z and S |
||
3902 | or ah, 10h ; Set half carry to 1 |
||
3903 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3904 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3905 | sub edi, byte 8 |
||
3906 | js near noMoreExec |
||
3907 | mov dl, byte [esi] ; Get our next instruction |
||
3908 | inc esi ; Increment PC |
||
3909 | jmp dword [z80regular+edx*4] |
||
3910 | |||
3911 | |||
3912 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3913 | |||
3914 | CBInst5e: |
||
3915 | mov [cyclesRemaining], edi |
||
3916 | mov edi, [_z80MemRead] ; Point to the read array |
||
3917 | |||
3918 | checkLoop19: |
||
3919 | cmp [edi], word 0ffffh ; End of the list? |
||
3920 | je memoryRead19 |
||
3921 | cmp ebx, [edi] ; Are we smaller? |
||
3922 | jb nextAddr19 ; Yes, go to the next address |
||
3923 | cmp ebx, [edi+4] ; Are we bigger? |
||
3924 | jbe callRoutine19 |
||
3925 | |||
3926 | nextAddr19: |
||
3927 | add edi, 10h ; Next structure! |
||
3928 | jmp short checkLoop19 |
||
3929 | |||
3930 | callRoutine19: |
||
3931 | mov dx, bx ; Get our address |
||
3932 | call ReadMemoryByte ; Standard read routine |
||
3933 | mov dl, al ; Put our returned value here |
||
3934 | mov ax, [_z80af] ; Get our AF back |
||
3935 | jmp short readExit19 |
||
3936 | |||
3937 | memoryRead19: |
||
3938 | mov dl, [ebp + ebx] ; Get our data |
||
3939 | |||
3940 | readExit19: |
||
3941 | mov edi, [cyclesRemaining] |
||
3942 | mov byte [_z80af], ah ; Store F |
||
3943 | sahf |
||
3944 | test dl, 008h ; Do a bitwise check |
||
3945 | lahf |
||
3946 | and ah, 0c0h ; Only care about Z and S |
||
3947 | or ah, 10h ; Set half carry to 1 |
||
3948 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3949 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3950 | xor edx, edx |
||
3951 | sub edi, byte 12 |
||
3952 | js near noMoreExec |
||
3953 | mov dl, byte [esi] ; Get our next instruction |
||
3954 | inc esi ; Increment PC |
||
3955 | jmp dword [z80regular+edx*4] |
||
3956 | |||
3957 | |||
3958 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3959 | |||
3960 | CBInst5f: |
||
3961 | mov byte [_z80af], ah ; Store F |
||
3962 | sahf |
||
3963 | test al, 008h ; Do a bitwise check |
||
3964 | lahf |
||
3965 | and ah, 0c0h ; Only care about Z and S |
||
3966 | or ah, 10h ; Set half carry to 1 |
||
3967 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3968 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3969 | sub edi, byte 8 |
||
3970 | js near noMoreExec |
||
3971 | mov dl, byte [esi] ; Get our next instruction |
||
3972 | inc esi ; Increment PC |
||
3973 | jmp dword [z80regular+edx*4] |
||
3974 | |||
3975 | |||
3976 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3977 | |||
3978 | CBInst60: |
||
3979 | mov byte [_z80af], ah ; Store F |
||
3980 | sahf |
||
3981 | test ch, 010h ; Do a bitwise check |
||
3982 | lahf |
||
3983 | and ah, 0c0h ; Only care about Z and S |
||
3984 | or ah, 10h ; Set half carry to 1 |
||
3985 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
3986 | or ah, byte [_z80af] ; Put it in with the real flags |
||
3987 | sub edi, byte 8 |
||
3988 | js near noMoreExec |
||
3989 | mov dl, byte [esi] ; Get our next instruction |
||
3990 | inc esi ; Increment PC |
||
3991 | jmp dword [z80regular+edx*4] |
||
3992 | |||
3993 | |||
3994 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
3995 | |||
3996 | CBInst61: |
||
3997 | mov byte [_z80af], ah ; Store F |
||
3998 | sahf |
||
3999 | test cl, 010h ; Do a bitwise check |
||
4000 | lahf |
||
4001 | and ah, 0c0h ; Only care about Z and S |
||
4002 | or ah, 10h ; Set half carry to 1 |
||
4003 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4004 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4005 | sub edi, byte 8 |
||
4006 | js near noMoreExec |
||
4007 | mov dl, byte [esi] ; Get our next instruction |
||
4008 | inc esi ; Increment PC |
||
4009 | jmp dword [z80regular+edx*4] |
||
4010 | |||
4011 | |||
4012 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4013 | |||
4014 | CBInst62: |
||
4015 | mov byte [_z80af], ah ; Store F |
||
4016 | sahf |
||
4017 | test byte [_z80de + 1], 010h ; Do a bitwise check |
||
4018 | lahf |
||
4019 | and ah, 0c0h ; Only care about Z and S |
||
4020 | or ah, 10h ; Set half carry to 1 |
||
4021 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4022 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4023 | sub edi, byte 8 |
||
4024 | js near noMoreExec |
||
4025 | mov dl, byte [esi] ; Get our next instruction |
||
4026 | inc esi ; Increment PC |
||
4027 | jmp dword [z80regular+edx*4] |
||
4028 | |||
4029 | |||
4030 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4031 | |||
4032 | CBInst63: |
||
4033 | mov byte [_z80af], ah ; Store F |
||
4034 | sahf |
||
4035 | test byte [_z80de], 010h ; Do a bitwise check |
||
4036 | lahf |
||
4037 | and ah, 0c0h ; Only care about Z and S |
||
4038 | or ah, 10h ; Set half carry to 1 |
||
4039 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4040 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4041 | sub edi, byte 8 |
||
4042 | js near noMoreExec |
||
4043 | mov dl, byte [esi] ; Get our next instruction |
||
4044 | inc esi ; Increment PC |
||
4045 | jmp dword [z80regular+edx*4] |
||
4046 | |||
4047 | |||
4048 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4049 | |||
4050 | CBInst64: |
||
4051 | mov byte [_z80af], ah ; Store F |
||
4052 | sahf |
||
4053 | test bh, 010h ; Do a bitwise check |
||
4054 | lahf |
||
4055 | and ah, 0c0h ; Only care about Z and S |
||
4056 | or ah, 10h ; Set half carry to 1 |
||
4057 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4058 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4059 | sub edi, byte 8 |
||
4060 | js near noMoreExec |
||
4061 | mov dl, byte [esi] ; Get our next instruction |
||
4062 | inc esi ; Increment PC |
||
4063 | jmp dword [z80regular+edx*4] |
||
4064 | |||
4065 | |||
4066 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4067 | |||
4068 | CBInst65: |
||
4069 | mov byte [_z80af], ah ; Store F |
||
4070 | sahf |
||
4071 | test bl, 010h ; Do a bitwise check |
||
4072 | lahf |
||
4073 | and ah, 0c0h ; Only care about Z and S |
||
4074 | or ah, 10h ; Set half carry to 1 |
||
4075 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4076 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4077 | sub edi, byte 8 |
||
4078 | js near noMoreExec |
||
4079 | mov dl, byte [esi] ; Get our next instruction |
||
4080 | inc esi ; Increment PC |
||
4081 | jmp dword [z80regular+edx*4] |
||
4082 | |||
4083 | |||
4084 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4085 | |||
4086 | CBInst66: |
||
4087 | mov [cyclesRemaining], edi |
||
4088 | mov edi, [_z80MemRead] ; Point to the read array |
||
4089 | |||
4090 | checkLoop20: |
||
4091 | cmp [edi], word 0ffffh ; End of the list? |
||
4092 | je memoryRead20 |
||
4093 | cmp ebx, [edi] ; Are we smaller? |
||
4094 | jb nextAddr20 ; Yes, go to the next address |
||
4095 | cmp ebx, [edi+4] ; Are we bigger? |
||
4096 | jbe callRoutine20 |
||
4097 | |||
4098 | nextAddr20: |
||
4099 | add edi, 10h ; Next structure! |
||
4100 | jmp short checkLoop20 |
||
4101 | |||
4102 | callRoutine20: |
||
4103 | mov dx, bx ; Get our address |
||
4104 | call ReadMemoryByte ; Standard read routine |
||
4105 | mov dl, al ; Put our returned value here |
||
4106 | mov ax, [_z80af] ; Get our AF back |
||
4107 | jmp short readExit20 |
||
4108 | |||
4109 | memoryRead20: |
||
4110 | mov dl, [ebp + ebx] ; Get our data |
||
4111 | |||
4112 | readExit20: |
||
4113 | mov edi, [cyclesRemaining] |
||
4114 | mov byte [_z80af], ah ; Store F |
||
4115 | sahf |
||
4116 | test dl, 010h ; Do a bitwise check |
||
4117 | lahf |
||
4118 | and ah, 0c0h ; Only care about Z and S |
||
4119 | or ah, 10h ; Set half carry to 1 |
||
4120 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4121 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4122 | xor edx, edx |
||
4123 | sub edi, byte 12 |
||
4124 | js near noMoreExec |
||
4125 | mov dl, byte [esi] ; Get our next instruction |
||
4126 | inc esi ; Increment PC |
||
4127 | jmp dword [z80regular+edx*4] |
||
4128 | |||
4129 | |||
4130 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4131 | |||
4132 | CBInst67: |
||
4133 | mov byte [_z80af], ah ; Store F |
||
4134 | sahf |
||
4135 | test al, 010h ; Do a bitwise check |
||
4136 | lahf |
||
4137 | and ah, 0c0h ; Only care about Z and S |
||
4138 | or ah, 10h ; Set half carry to 1 |
||
4139 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4140 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4141 | sub edi, byte 8 |
||
4142 | js near noMoreExec |
||
4143 | mov dl, byte [esi] ; Get our next instruction |
||
4144 | inc esi ; Increment PC |
||
4145 | jmp dword [z80regular+edx*4] |
||
4146 | |||
4147 | |||
4148 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4149 | |||
4150 | CBInst68: |
||
4151 | mov byte [_z80af], ah ; Store F |
||
4152 | sahf |
||
4153 | test ch, 020h ; Do a bitwise check |
||
4154 | lahf |
||
4155 | and ah, 0c0h ; Only care about Z and S |
||
4156 | or ah, 10h ; Set half carry to 1 |
||
4157 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4158 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4159 | sub edi, byte 8 |
||
4160 | js near noMoreExec |
||
4161 | mov dl, byte [esi] ; Get our next instruction |
||
4162 | inc esi ; Increment PC |
||
4163 | jmp dword [z80regular+edx*4] |
||
4164 | |||
4165 | |||
4166 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4167 | |||
4168 | CBInst69: |
||
4169 | mov byte [_z80af], ah ; Store F |
||
4170 | sahf |
||
4171 | test cl, 020h ; Do a bitwise check |
||
4172 | lahf |
||
4173 | and ah, 0c0h ; Only care about Z and S |
||
4174 | or ah, 10h ; Set half carry to 1 |
||
4175 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4176 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4177 | sub edi, byte 8 |
||
4178 | js near noMoreExec |
||
4179 | mov dl, byte [esi] ; Get our next instruction |
||
4180 | inc esi ; Increment PC |
||
4181 | jmp dword [z80regular+edx*4] |
||
4182 | |||
4183 | |||
4184 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4185 | |||
4186 | CBInst6a: |
||
4187 | mov byte [_z80af], ah ; Store F |
||
4188 | sahf |
||
4189 | test byte [_z80de + 1], 020h ; Do a bitwise check |
||
4190 | lahf |
||
4191 | and ah, 0c0h ; Only care about Z and S |
||
4192 | or ah, 10h ; Set half carry to 1 |
||
4193 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4194 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4195 | sub edi, byte 8 |
||
4196 | js near noMoreExec |
||
4197 | mov dl, byte [esi] ; Get our next instruction |
||
4198 | inc esi ; Increment PC |
||
4199 | jmp dword [z80regular+edx*4] |
||
4200 | |||
4201 | |||
4202 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4203 | |||
4204 | CBInst6b: |
||
4205 | mov byte [_z80af], ah ; Store F |
||
4206 | sahf |
||
4207 | test byte [_z80de], 020h ; Do a bitwise check |
||
4208 | lahf |
||
4209 | and ah, 0c0h ; Only care about Z and S |
||
4210 | or ah, 10h ; Set half carry to 1 |
||
4211 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4212 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4213 | sub edi, byte 8 |
||
4214 | js near noMoreExec |
||
4215 | mov dl, byte [esi] ; Get our next instruction |
||
4216 | inc esi ; Increment PC |
||
4217 | jmp dword [z80regular+edx*4] |
||
4218 | |||
4219 | |||
4220 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4221 | |||
4222 | CBInst6c: |
||
4223 | mov byte [_z80af], ah ; Store F |
||
4224 | sahf |
||
4225 | test bh, 020h ; Do a bitwise check |
||
4226 | lahf |
||
4227 | and ah, 0c0h ; Only care about Z and S |
||
4228 | or ah, 10h ; Set half carry to 1 |
||
4229 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4230 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4231 | sub edi, byte 8 |
||
4232 | js near noMoreExec |
||
4233 | mov dl, byte [esi] ; Get our next instruction |
||
4234 | inc esi ; Increment PC |
||
4235 | jmp dword [z80regular+edx*4] |
||
4236 | |||
4237 | |||
4238 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4239 | |||
4240 | CBInst6d: |
||
4241 | mov byte [_z80af], ah ; Store F |
||
4242 | sahf |
||
4243 | test bl, 020h ; Do a bitwise check |
||
4244 | lahf |
||
4245 | and ah, 0c0h ; Only care about Z and S |
||
4246 | or ah, 10h ; Set half carry to 1 |
||
4247 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4248 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4249 | sub edi, byte 8 |
||
4250 | js near noMoreExec |
||
4251 | mov dl, byte [esi] ; Get our next instruction |
||
4252 | inc esi ; Increment PC |
||
4253 | jmp dword [z80regular+edx*4] |
||
4254 | |||
4255 | |||
4256 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4257 | |||
4258 | CBInst6e: |
||
4259 | mov [cyclesRemaining], edi |
||
4260 | mov edi, [_z80MemRead] ; Point to the read array |
||
4261 | |||
4262 | checkLoop21: |
||
4263 | cmp [edi], word 0ffffh ; End of the list? |
||
4264 | je memoryRead21 |
||
4265 | cmp ebx, [edi] ; Are we smaller? |
||
4266 | jb nextAddr21 ; Yes, go to the next address |
||
4267 | cmp ebx, [edi+4] ; Are we bigger? |
||
4268 | jbe callRoutine21 |
||
4269 | |||
4270 | nextAddr21: |
||
4271 | add edi, 10h ; Next structure! |
||
4272 | jmp short checkLoop21 |
||
4273 | |||
4274 | callRoutine21: |
||
4275 | mov dx, bx ; Get our address |
||
4276 | call ReadMemoryByte ; Standard read routine |
||
4277 | mov dl, al ; Put our returned value here |
||
4278 | mov ax, [_z80af] ; Get our AF back |
||
4279 | jmp short readExit21 |
||
4280 | |||
4281 | memoryRead21: |
||
4282 | mov dl, [ebp + ebx] ; Get our data |
||
4283 | |||
4284 | readExit21: |
||
4285 | mov edi, [cyclesRemaining] |
||
4286 | mov byte [_z80af], ah ; Store F |
||
4287 | sahf |
||
4288 | test dl, 020h ; Do a bitwise check |
||
4289 | lahf |
||
4290 | and ah, 0c0h ; Only care about Z and S |
||
4291 | or ah, 10h ; Set half carry to 1 |
||
4292 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4293 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4294 | xor edx, edx |
||
4295 | sub edi, byte 12 |
||
4296 | js near noMoreExec |
||
4297 | mov dl, byte [esi] ; Get our next instruction |
||
4298 | inc esi ; Increment PC |
||
4299 | jmp dword [z80regular+edx*4] |
||
4300 | |||
4301 | |||
4302 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4303 | |||
4304 | CBInst6f: |
||
4305 | mov byte [_z80af], ah ; Store F |
||
4306 | sahf |
||
4307 | test al, 020h ; Do a bitwise check |
||
4308 | lahf |
||
4309 | and ah, 0c0h ; Only care about Z and S |
||
4310 | or ah, 10h ; Set half carry to 1 |
||
4311 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4312 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4313 | sub edi, byte 8 |
||
4314 | js near noMoreExec |
||
4315 | mov dl, byte [esi] ; Get our next instruction |
||
4316 | inc esi ; Increment PC |
||
4317 | jmp dword [z80regular+edx*4] |
||
4318 | |||
4319 | |||
4320 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4321 | |||
4322 | CBInst70: |
||
4323 | mov byte [_z80af], ah ; Store F |
||
4324 | sahf |
||
4325 | test ch, 040h ; Do a bitwise check |
||
4326 | lahf |
||
4327 | and ah, 0c0h ; Only care about Z and S |
||
4328 | or ah, 10h ; Set half carry to 1 |
||
4329 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4330 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4331 | sub edi, byte 8 |
||
4332 | js near noMoreExec |
||
4333 | mov dl, byte [esi] ; Get our next instruction |
||
4334 | inc esi ; Increment PC |
||
4335 | jmp dword [z80regular+edx*4] |
||
4336 | |||
4337 | |||
4338 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4339 | |||
4340 | CBInst71: |
||
4341 | mov byte [_z80af], ah ; Store F |
||
4342 | sahf |
||
4343 | test cl, 040h ; Do a bitwise check |
||
4344 | lahf |
||
4345 | and ah, 0c0h ; Only care about Z and S |
||
4346 | or ah, 10h ; Set half carry to 1 |
||
4347 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4348 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4349 | sub edi, byte 8 |
||
4350 | js near noMoreExec |
||
4351 | mov dl, byte [esi] ; Get our next instruction |
||
4352 | inc esi ; Increment PC |
||
4353 | jmp dword [z80regular+edx*4] |
||
4354 | |||
4355 | |||
4356 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4357 | |||
4358 | CBInst72: |
||
4359 | mov byte [_z80af], ah ; Store F |
||
4360 | sahf |
||
4361 | test byte [_z80de + 1], 040h ; Do a bitwise check |
||
4362 | lahf |
||
4363 | and ah, 0c0h ; Only care about Z and S |
||
4364 | or ah, 10h ; Set half carry to 1 |
||
4365 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4366 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4367 | sub edi, byte 8 |
||
4368 | js near noMoreExec |
||
4369 | mov dl, byte [esi] ; Get our next instruction |
||
4370 | inc esi ; Increment PC |
||
4371 | jmp dword [z80regular+edx*4] |
||
4372 | |||
4373 | |||
4374 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4375 | |||
4376 | CBInst73: |
||
4377 | mov byte [_z80af], ah ; Store F |
||
4378 | sahf |
||
4379 | test byte [_z80de], 040h ; Do a bitwise check |
||
4380 | lahf |
||
4381 | and ah, 0c0h ; Only care about Z and S |
||
4382 | or ah, 10h ; Set half carry to 1 |
||
4383 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4384 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4385 | sub edi, byte 8 |
||
4386 | js near noMoreExec |
||
4387 | mov dl, byte [esi] ; Get our next instruction |
||
4388 | inc esi ; Increment PC |
||
4389 | jmp dword [z80regular+edx*4] |
||
4390 | |||
4391 | |||
4392 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4393 | |||
4394 | CBInst74: |
||
4395 | mov byte [_z80af], ah ; Store F |
||
4396 | sahf |
||
4397 | test bh, 040h ; Do a bitwise check |
||
4398 | lahf |
||
4399 | and ah, 0c0h ; Only care about Z and S |
||
4400 | or ah, 10h ; Set half carry to 1 |
||
4401 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4402 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4403 | sub edi, byte 8 |
||
4404 | js near noMoreExec |
||
4405 | mov dl, byte [esi] ; Get our next instruction |
||
4406 | inc esi ; Increment PC |
||
4407 | jmp dword [z80regular+edx*4] |
||
4408 | |||
4409 | |||
4410 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4411 | |||
4412 | CBInst75: |
||
4413 | mov byte [_z80af], ah ; Store F |
||
4414 | sahf |
||
4415 | test bl, 040h ; Do a bitwise check |
||
4416 | lahf |
||
4417 | and ah, 0c0h ; Only care about Z and S |
||
4418 | or ah, 10h ; Set half carry to 1 |
||
4419 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4420 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4421 | sub edi, byte 8 |
||
4422 | js near noMoreExec |
||
4423 | mov dl, byte [esi] ; Get our next instruction |
||
4424 | inc esi ; Increment PC |
||
4425 | jmp dword [z80regular+edx*4] |
||
4426 | |||
4427 | |||
4428 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4429 | |||
4430 | CBInst76: |
||
4431 | mov [cyclesRemaining], edi |
||
4432 | mov edi, [_z80MemRead] ; Point to the read array |
||
4433 | |||
4434 | checkLoop22: |
||
4435 | cmp [edi], word 0ffffh ; End of the list? |
||
4436 | je memoryRead22 |
||
4437 | cmp ebx, [edi] ; Are we smaller? |
||
4438 | jb nextAddr22 ; Yes, go to the next address |
||
4439 | cmp ebx, [edi+4] ; Are we bigger? |
||
4440 | jbe callRoutine22 |
||
4441 | |||
4442 | nextAddr22: |
||
4443 | add edi, 10h ; Next structure! |
||
4444 | jmp short checkLoop22 |
||
4445 | |||
4446 | callRoutine22: |
||
4447 | mov dx, bx ; Get our address |
||
4448 | call ReadMemoryByte ; Standard read routine |
||
4449 | mov dl, al ; Put our returned value here |
||
4450 | mov ax, [_z80af] ; Get our AF back |
||
4451 | jmp short readExit22 |
||
4452 | |||
4453 | memoryRead22: |
||
4454 | mov dl, [ebp + ebx] ; Get our data |
||
4455 | |||
4456 | readExit22: |
||
4457 | mov edi, [cyclesRemaining] |
||
4458 | mov byte [_z80af], ah ; Store F |
||
4459 | sahf |
||
4460 | test dl, 040h ; Do a bitwise check |
||
4461 | lahf |
||
4462 | and ah, 0c0h ; Only care about Z and S |
||
4463 | or ah, 10h ; Set half carry to 1 |
||
4464 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4465 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4466 | xor edx, edx |
||
4467 | sub edi, byte 12 |
||
4468 | js near noMoreExec |
||
4469 | mov dl, byte [esi] ; Get our next instruction |
||
4470 | inc esi ; Increment PC |
||
4471 | jmp dword [z80regular+edx*4] |
||
4472 | |||
4473 | |||
4474 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4475 | |||
4476 | CBInst77: |
||
4477 | mov byte [_z80af], ah ; Store F |
||
4478 | sahf |
||
4479 | test al, 040h ; Do a bitwise check |
||
4480 | lahf |
||
4481 | and ah, 0c0h ; Only care about Z and S |
||
4482 | or ah, 10h ; Set half carry to 1 |
||
4483 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4484 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4485 | sub edi, byte 8 |
||
4486 | js near noMoreExec |
||
4487 | mov dl, byte [esi] ; Get our next instruction |
||
4488 | inc esi ; Increment PC |
||
4489 | jmp dword [z80regular+edx*4] |
||
4490 | |||
4491 | |||
4492 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4493 | |||
4494 | CBInst78: |
||
4495 | mov byte [_z80af], ah ; Store F |
||
4496 | sahf |
||
4497 | test ch, 080h ; Do a bitwise check |
||
4498 | lahf |
||
4499 | and ah, 0c0h ; Only care about Z and S |
||
4500 | or ah, 10h ; Set half carry to 1 |
||
4501 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4502 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4503 | sub edi, byte 8 |
||
4504 | js near noMoreExec |
||
4505 | mov dl, byte [esi] ; Get our next instruction |
||
4506 | inc esi ; Increment PC |
||
4507 | jmp dword [z80regular+edx*4] |
||
4508 | |||
4509 | |||
4510 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4511 | |||
4512 | CBInst79: |
||
4513 | mov byte [_z80af], ah ; Store F |
||
4514 | sahf |
||
4515 | test cl, 080h ; Do a bitwise check |
||
4516 | lahf |
||
4517 | and ah, 0c0h ; Only care about Z and S |
||
4518 | or ah, 10h ; Set half carry to 1 |
||
4519 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4520 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4521 | sub edi, byte 8 |
||
4522 | js near noMoreExec |
||
4523 | mov dl, byte [esi] ; Get our next instruction |
||
4524 | inc esi ; Increment PC |
||
4525 | jmp dword [z80regular+edx*4] |
||
4526 | |||
4527 | |||
4528 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4529 | |||
4530 | CBInst7a: |
||
4531 | mov byte [_z80af], ah ; Store F |
||
4532 | sahf |
||
4533 | test byte [_z80de + 1], 080h ; Do a bitwise check |
||
4534 | lahf |
||
4535 | and ah, 0c0h ; Only care about Z and S |
||
4536 | or ah, 10h ; Set half carry to 1 |
||
4537 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4538 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4539 | sub edi, byte 8 |
||
4540 | js near noMoreExec |
||
4541 | mov dl, byte [esi] ; Get our next instruction |
||
4542 | inc esi ; Increment PC |
||
4543 | jmp dword [z80regular+edx*4] |
||
4544 | |||
4545 | |||
4546 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4547 | |||
4548 | CBInst7b: |
||
4549 | mov byte [_z80af], ah ; Store F |
||
4550 | sahf |
||
4551 | test byte [_z80de], 080h ; Do a bitwise check |
||
4552 | lahf |
||
4553 | and ah, 0c0h ; Only care about Z and S |
||
4554 | or ah, 10h ; Set half carry to 1 |
||
4555 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4556 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4557 | sub edi, byte 8 |
||
4558 | js near noMoreExec |
||
4559 | mov dl, byte [esi] ; Get our next instruction |
||
4560 | inc esi ; Increment PC |
||
4561 | jmp dword [z80regular+edx*4] |
||
4562 | |||
4563 | |||
4564 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4565 | |||
4566 | CBInst7c: |
||
4567 | mov byte [_z80af], ah ; Store F |
||
4568 | sahf |
||
4569 | test bh, 080h ; Do a bitwise check |
||
4570 | lahf |
||
4571 | and ah, 0c0h ; Only care about Z and S |
||
4572 | or ah, 10h ; Set half carry to 1 |
||
4573 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4574 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4575 | sub edi, byte 8 |
||
4576 | js near noMoreExec |
||
4577 | mov dl, byte [esi] ; Get our next instruction |
||
4578 | inc esi ; Increment PC |
||
4579 | jmp dword [z80regular+edx*4] |
||
4580 | |||
4581 | |||
4582 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4583 | |||
4584 | CBInst7d: |
||
4585 | mov byte [_z80af], ah ; Store F |
||
4586 | sahf |
||
4587 | test bl, 080h ; Do a bitwise check |
||
4588 | lahf |
||
4589 | and ah, 0c0h ; Only care about Z and S |
||
4590 | or ah, 10h ; Set half carry to 1 |
||
4591 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4592 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4593 | sub edi, byte 8 |
||
4594 | js near noMoreExec |
||
4595 | mov dl, byte [esi] ; Get our next instruction |
||
4596 | inc esi ; Increment PC |
||
4597 | jmp dword [z80regular+edx*4] |
||
4598 | |||
4599 | |||
4600 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4601 | |||
4602 | CBInst7e: |
||
4603 | mov [cyclesRemaining], edi |
||
4604 | mov edi, [_z80MemRead] ; Point to the read array |
||
4605 | |||
4606 | checkLoop23: |
||
4607 | cmp [edi], word 0ffffh ; End of the list? |
||
4608 | je memoryRead23 |
||
4609 | cmp ebx, [edi] ; Are we smaller? |
||
4610 | jb nextAddr23 ; Yes, go to the next address |
||
4611 | cmp ebx, [edi+4] ; Are we bigger? |
||
4612 | jbe callRoutine23 |
||
4613 | |||
4614 | nextAddr23: |
||
4615 | add edi, 10h ; Next structure! |
||
4616 | jmp short checkLoop23 |
||
4617 | |||
4618 | callRoutine23: |
||
4619 | mov dx, bx ; Get our address |
||
4620 | call ReadMemoryByte ; Standard read routine |
||
4621 | mov dl, al ; Put our returned value here |
||
4622 | mov ax, [_z80af] ; Get our AF back |
||
4623 | jmp short readExit23 |
||
4624 | |||
4625 | memoryRead23: |
||
4626 | mov dl, [ebp + ebx] ; Get our data |
||
4627 | |||
4628 | readExit23: |
||
4629 | mov edi, [cyclesRemaining] |
||
4630 | mov byte [_z80af], ah ; Store F |
||
4631 | sahf |
||
4632 | test dl, 080h ; Do a bitwise check |
||
4633 | lahf |
||
4634 | and ah, 0c0h ; Only care about Z and S |
||
4635 | or ah, 10h ; Set half carry to 1 |
||
4636 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4637 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4638 | xor edx, edx |
||
4639 | sub edi, byte 12 |
||
4640 | js near noMoreExec |
||
4641 | mov dl, byte [esi] ; Get our next instruction |
||
4642 | inc esi ; Increment PC |
||
4643 | jmp dword [z80regular+edx*4] |
||
4644 | |||
4645 | |||
4646 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4647 | |||
4648 | CBInst7f: |
||
4649 | mov byte [_z80af], ah ; Store F |
||
4650 | sahf |
||
4651 | test al, 080h ; Do a bitwise check |
||
4652 | lahf |
||
4653 | and ah, 0c0h ; Only care about Z and S |
||
4654 | or ah, 10h ; Set half carry to 1 |
||
4655 | and byte [_z80af], 029h ; Only zero/non-zero! |
||
4656 | or ah, byte [_z80af] ; Put it in with the real flags |
||
4657 | sub edi, byte 8 |
||
4658 | js near noMoreExec |
||
4659 | mov dl, byte [esi] ; Get our next instruction |
||
4660 | inc esi ; Increment PC |
||
4661 | jmp dword [z80regular+edx*4] |
||
4662 | |||
4663 | |||
4664 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4665 | |||
4666 | CBInst80: |
||
4667 | and ch, 0feh ; Reset a bit |
||
4668 | sub edi, byte 8 |
||
4669 | js near noMoreExec |
||
4670 | mov dl, byte [esi] ; Get our next instruction |
||
4671 | inc esi ; Increment PC |
||
4672 | jmp dword [z80regular+edx*4] |
||
4673 | |||
4674 | |||
4675 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4676 | |||
4677 | CBInst81: |
||
4678 | and cl, 0feh ; Reset a bit |
||
4679 | sub edi, byte 8 |
||
4680 | js near noMoreExec |
||
4681 | mov dl, byte [esi] ; Get our next instruction |
||
4682 | inc esi ; Increment PC |
||
4683 | jmp dword [z80regular+edx*4] |
||
4684 | |||
4685 | |||
4686 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4687 | |||
4688 | CBInst82: |
||
4689 | mov dx, [_z80de] ; Move DE into something half usable |
||
4690 | and dh, 0feh ; Reset a bit |
||
4691 | mov [_z80de], dx ; Once modified, put it back |
||
4692 | xor edx, edx |
||
4693 | sub edi, byte 8 |
||
4694 | js near noMoreExec |
||
4695 | mov dl, byte [esi] ; Get our next instruction |
||
4696 | inc esi ; Increment PC |
||
4697 | jmp dword [z80regular+edx*4] |
||
4698 | |||
4699 | |||
4700 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4701 | |||
4702 | CBInst83: |
||
4703 | mov dx, [_z80de] ; Move DE into something half usable |
||
4704 | and dl, 0feh ; Reset a bit |
||
4705 | mov [_z80de], dx ; Once modified, put it back |
||
4706 | xor edx, edx |
||
4707 | sub edi, byte 8 |
||
4708 | js near noMoreExec |
||
4709 | mov dl, byte [esi] ; Get our next instruction |
||
4710 | inc esi ; Increment PC |
||
4711 | jmp dword [z80regular+edx*4] |
||
4712 | |||
4713 | |||
4714 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4715 | |||
4716 | CBInst84: |
||
4717 | and bh, 0feh ; Reset a bit |
||
4718 | sub edi, byte 8 |
||
4719 | js near noMoreExec |
||
4720 | mov dl, byte [esi] ; Get our next instruction |
||
4721 | inc esi ; Increment PC |
||
4722 | jmp dword [z80regular+edx*4] |
||
4723 | |||
4724 | |||
4725 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4726 | |||
4727 | CBInst85: |
||
4728 | and bl, 0feh ; Reset a bit |
||
4729 | sub edi, byte 8 |
||
4730 | js near noMoreExec |
||
4731 | mov dl, byte [esi] ; Get our next instruction |
||
4732 | inc esi ; Increment PC |
||
4733 | jmp dword [z80regular+edx*4] |
||
4734 | |||
4735 | |||
4736 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4737 | |||
4738 | CBInst86: |
||
4739 | mov [cyclesRemaining], edi |
||
4740 | mov edi, [_z80MemRead] ; Point to the read array |
||
4741 | |||
4742 | checkLoop24: |
||
4743 | cmp [edi], word 0ffffh ; End of the list? |
||
4744 | je memoryRead24 |
||
4745 | cmp ebx, [edi] ; Are we smaller? |
||
4746 | jb nextAddr24 ; Yes, go to the next address |
||
4747 | cmp ebx, [edi+4] ; Are we bigger? |
||
4748 | jbe callRoutine24 |
||
4749 | |||
4750 | nextAddr24: |
||
4751 | add edi, 10h ; Next structure! |
||
4752 | jmp short checkLoop24 |
||
4753 | |||
4754 | callRoutine24: |
||
4755 | mov dx, bx ; Get our address |
||
4756 | call ReadMemoryByte ; Standard read routine |
||
4757 | mov dl, al ; Put our returned value here |
||
4758 | mov ax, [_z80af] ; Get our AF back |
||
4759 | jmp short readExit24 |
||
4760 | |||
4761 | memoryRead24: |
||
4762 | mov dl, [ebp + ebx] ; Get our data |
||
4763 | |||
4764 | readExit24: |
||
4765 | mov edi, [cyclesRemaining] |
||
4766 | and dl, 0feh ; Reset a bit |
||
4767 | mov [cyclesRemaining], edi |
||
4768 | mov [_z80af], ax ; Store AF |
||
4769 | mov al, dl ; And our data to write |
||
4770 | mov edi, [_z80MemWrite] ; Point to the write array |
||
4771 | |||
4772 | checkLoop25: |
||
4773 | cmp [edi], word 0ffffh ; End of our list? |
||
4774 | je memoryWrite25 ; Yes - go write it! |
||
4775 | cmp bx, [edi] ; Are we smaller? |
||
4776 | jb nextAddr25 ; Yes... go to the next addr |
||
4777 | cmp bx, [edi+4] ; Are we smaller? |
||
4778 | jbe callRoutine25 ; If not, go call it! |
||
4779 | |||
4780 | nextAddr25: |
||
4781 | add edi, 10h ; Next structure, please |
||
4782 | jmp short checkLoop25 |
||
4783 | |||
4784 | callRoutine25: |
||
4785 | mov dx, bx ; Get our address to target |
||
4786 | call WriteMemoryByte ; Go write the data! |
||
4787 | jmp short WriteMacroExit25 |
||
4788 | memoryWrite25: |
||
4789 | mov [ebp + ebx], dl |
||
4790 | mov ax, [_z80af] ; Get our accumulator and flags |
||
4791 | WriteMacroExit25: |
||
4792 | mov edi, [cyclesRemaining] |
||
4793 | xor edx, edx |
||
4794 | sub edi, byte 15 |
||
4795 | js near noMoreExec |
||
4796 | mov dl, byte [esi] ; Get our next instruction |
||
4797 | inc esi ; Increment PC |
||
4798 | jmp dword [z80regular+edx*4] |
||
4799 | |||
4800 | |||
4801 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4802 | |||
4803 | CBInst87: |
||
4804 | and al, 0feh ; Reset a bit |
||
4805 | sub edi, byte 8 |
||
4806 | js near noMoreExec |
||
4807 | mov dl, byte [esi] ; Get our next instruction |
||
4808 | inc esi ; Increment PC |
||
4809 | jmp dword [z80regular+edx*4] |
||
4810 | |||
4811 | |||
4812 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4813 | |||
4814 | CBInst88: |
||
4815 | and ch, 0fdh ; Reset a bit |
||
4816 | sub edi, byte 8 |
||
4817 | js near noMoreExec |
||
4818 | mov dl, byte [esi] ; Get our next instruction |
||
4819 | inc esi ; Increment PC |
||
4820 | jmp dword [z80regular+edx*4] |
||
4821 | |||
4822 | |||
4823 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4824 | |||
4825 | CBInst89: |
||
4826 | and cl, 0fdh ; Reset a bit |
||
4827 | sub edi, byte 8 |
||
4828 | js near noMoreExec |
||
4829 | mov dl, byte [esi] ; Get our next instruction |
||
4830 | inc esi ; Increment PC |
||
4831 | jmp dword [z80regular+edx*4] |
||
4832 | |||
4833 | |||
4834 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4835 | |||
4836 | CBInst8a: |
||
4837 | mov dx, [_z80de] ; Move DE into something half usable |
||
4838 | and dh, 0fdh ; Reset a bit |
||
4839 | mov [_z80de], dx ; Once modified, put it back |
||
4840 | xor edx, edx |
||
4841 | sub edi, byte 8 |
||
4842 | js near noMoreExec |
||
4843 | mov dl, byte [esi] ; Get our next instruction |
||
4844 | inc esi ; Increment PC |
||
4845 | jmp dword [z80regular+edx*4] |
||
4846 | |||
4847 | |||
4848 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4849 | |||
4850 | CBInst8b: |
||
4851 | mov dx, [_z80de] ; Move DE into something half usable |
||
4852 | and dl, 0fdh ; Reset a bit |
||
4853 | mov [_z80de], dx ; Once modified, put it back |
||
4854 | xor edx, edx |
||
4855 | sub edi, byte 8 |
||
4856 | js near noMoreExec |
||
4857 | mov dl, byte [esi] ; Get our next instruction |
||
4858 | inc esi ; Increment PC |
||
4859 | jmp dword [z80regular+edx*4] |
||
4860 | |||
4861 | |||
4862 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4863 | |||
4864 | CBInst8c: |
||
4865 | and bh, 0fdh ; Reset a bit |
||
4866 | sub edi, byte 8 |
||
4867 | js near noMoreExec |
||
4868 | mov dl, byte [esi] ; Get our next instruction |
||
4869 | inc esi ; Increment PC |
||
4870 | jmp dword [z80regular+edx*4] |
||
4871 | |||
4872 | |||
4873 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4874 | |||
4875 | CBInst8d: |
||
4876 | and bl, 0fdh ; Reset a bit |
||
4877 | sub edi, byte 8 |
||
4878 | js near noMoreExec |
||
4879 | mov dl, byte [esi] ; Get our next instruction |
||
4880 | inc esi ; Increment PC |
||
4881 | jmp dword [z80regular+edx*4] |
||
4882 | |||
4883 | |||
4884 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4885 | |||
4886 | CBInst8e: |
||
4887 | mov [cyclesRemaining], edi |
||
4888 | mov edi, [_z80MemRead] ; Point to the read array |
||
4889 | |||
4890 | checkLoop26: |
||
4891 | cmp [edi], word 0ffffh ; End of the list? |
||
4892 | je memoryRead26 |
||
4893 | cmp ebx, [edi] ; Are we smaller? |
||
4894 | jb nextAddr26 ; Yes, go to the next address |
||
4895 | cmp ebx, [edi+4] ; Are we bigger? |
||
4896 | jbe callRoutine26 |
||
4897 | |||
4898 | nextAddr26: |
||
4899 | add edi, 10h ; Next structure! |
||
4900 | jmp short checkLoop26 |
||
4901 | |||
4902 | callRoutine26: |
||
4903 | mov dx, bx ; Get our address |
||
4904 | call ReadMemoryByte ; Standard read routine |
||
4905 | mov dl, al ; Put our returned value here |
||
4906 | mov ax, [_z80af] ; Get our AF back |
||
4907 | jmp short readExit26 |
||
4908 | |||
4909 | memoryRead26: |
||
4910 | mov dl, [ebp + ebx] ; Get our data |
||
4911 | |||
4912 | readExit26: |
||
4913 | mov edi, [cyclesRemaining] |
||
4914 | and dl, 0fdh ; Reset a bit |
||
4915 | mov [cyclesRemaining], edi |
||
4916 | mov [_z80af], ax ; Store AF |
||
4917 | mov al, dl ; And our data to write |
||
4918 | mov edi, [_z80MemWrite] ; Point to the write array |
||
4919 | |||
4920 | checkLoop27: |
||
4921 | cmp [edi], word 0ffffh ; End of our list? |
||
4922 | je memoryWrite27 ; Yes - go write it! |
||
4923 | cmp bx, [edi] ; Are we smaller? |
||
4924 | jb nextAddr27 ; Yes... go to the next addr |
||
4925 | cmp bx, [edi+4] ; Are we smaller? |
||
4926 | jbe callRoutine27 ; If not, go call it! |
||
4927 | |||
4928 | nextAddr27: |
||
4929 | add edi, 10h ; Next structure, please |
||
4930 | jmp short checkLoop27 |
||
4931 | |||
4932 | callRoutine27: |
||
4933 | mov dx, bx ; Get our address to target |
||
4934 | call WriteMemoryByte ; Go write the data! |
||
4935 | jmp short WriteMacroExit27 |
||
4936 | memoryWrite27: |
||
4937 | mov [ebp + ebx], dl |
||
4938 | mov ax, [_z80af] ; Get our accumulator and flags |
||
4939 | WriteMacroExit27: |
||
4940 | mov edi, [cyclesRemaining] |
||
4941 | xor edx, edx |
||
4942 | sub edi, byte 15 |
||
4943 | js near noMoreExec |
||
4944 | mov dl, byte [esi] ; Get our next instruction |
||
4945 | inc esi ; Increment PC |
||
4946 | jmp dword [z80regular+edx*4] |
||
4947 | |||
4948 | |||
4949 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4950 | |||
4951 | CBInst8f: |
||
4952 | and al, 0fdh ; Reset a bit |
||
4953 | sub edi, byte 8 |
||
4954 | js near noMoreExec |
||
4955 | mov dl, byte [esi] ; Get our next instruction |
||
4956 | inc esi ; Increment PC |
||
4957 | jmp dword [z80regular+edx*4] |
||
4958 | |||
4959 | |||
4960 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4961 | |||
4962 | CBInst90: |
||
4963 | and ch, 0fbh ; Reset a bit |
||
4964 | sub edi, byte 8 |
||
4965 | js near noMoreExec |
||
4966 | mov dl, byte [esi] ; Get our next instruction |
||
4967 | inc esi ; Increment PC |
||
4968 | jmp dword [z80regular+edx*4] |
||
4969 | |||
4970 | |||
4971 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4972 | |||
4973 | CBInst91: |
||
4974 | and cl, 0fbh ; Reset a bit |
||
4975 | sub edi, byte 8 |
||
4976 | js near noMoreExec |
||
4977 | mov dl, byte [esi] ; Get our next instruction |
||
4978 | inc esi ; Increment PC |
||
4979 | jmp dword [z80regular+edx*4] |
||
4980 | |||
4981 | |||
4982 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4983 | |||
4984 | CBInst92: |
||
4985 | mov dx, [_z80de] ; Move DE into something half usable |
||
4986 | and dh, 0fbh ; Reset a bit |
||
4987 | mov [_z80de], dx ; Once modified, put it back |
||
4988 | xor edx, edx |
||
4989 | sub edi, byte 8 |
||
4990 | js near noMoreExec |
||
4991 | mov dl, byte [esi] ; Get our next instruction |
||
4992 | inc esi ; Increment PC |
||
4993 | jmp dword [z80regular+edx*4] |
||
4994 | |||
4995 | |||
4996 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
4997 | |||
4998 | CBInst93: |
||
4999 | mov dx, [_z80de] ; Move DE into something half usable |
||
5000 | and dl, 0fbh ; Reset a bit |
||
5001 | mov [_z80de], dx ; Once modified, put it back |
||
5002 | xor edx, edx |
||
5003 | sub edi, byte 8 |
||
5004 | js near noMoreExec |
||
5005 | mov dl, byte [esi] ; Get our next instruction |
||
5006 | inc esi ; Increment PC |
||
5007 | jmp dword [z80regular+edx*4] |
||
5008 | |||
5009 | |||
5010 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5011 | |||
5012 | CBInst94: |
||
5013 | and bh, 0fbh ; Reset a bit |
||
5014 | sub edi, byte 8 |
||
5015 | js near noMoreExec |
||
5016 | mov dl, byte [esi] ; Get our next instruction |
||
5017 | inc esi ; Increment PC |
||
5018 | jmp dword [z80regular+edx*4] |
||
5019 | |||
5020 | |||
5021 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5022 | |||
5023 | CBInst95: |
||
5024 | and bl, 0fbh ; Reset a bit |
||
5025 | sub edi, byte 8 |
||
5026 | js near noMoreExec |
||
5027 | mov dl, byte [esi] ; Get our next instruction |
||
5028 | inc esi ; Increment PC |
||
5029 | jmp dword [z80regular+edx*4] |
||
5030 | |||
5031 | |||
5032 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5033 | |||
5034 | CBInst96: |
||
5035 | mov [cyclesRemaining], edi |
||
5036 | mov edi, [_z80MemRead] ; Point to the read array |
||
5037 | |||
5038 | checkLoop28: |
||
5039 | cmp [edi], word 0ffffh ; End of the list? |
||
5040 | je memoryRead28 |
||
5041 | cmp ebx, [edi] ; Are we smaller? |
||
5042 | jb nextAddr28 ; Yes, go to the next address |
||
5043 | cmp ebx, [edi+4] ; Are we bigger? |
||
5044 | jbe callRoutine28 |
||
5045 | |||
5046 | nextAddr28: |
||
5047 | add edi, 10h ; Next structure! |
||
5048 | jmp short checkLoop28 |
||
5049 | |||
5050 | callRoutine28: |
||
5051 | mov dx, bx ; Get our address |
||
5052 | call ReadMemoryByte ; Standard read routine |
||
5053 | mov dl, al ; Put our returned value here |
||
5054 | mov ax, [_z80af] ; Get our AF back |
||
5055 | jmp short readExit28 |
||
5056 | |||
5057 | memoryRead28: |
||
5058 | mov dl, [ebp + ebx] ; Get our data |
||
5059 | |||
5060 | readExit28: |
||
5061 | mov edi, [cyclesRemaining] |
||
5062 | and dl, 0fbh ; Reset a bit |
||
5063 | mov [cyclesRemaining], edi |
||
5064 | mov [_z80af], ax ; Store AF |
||
5065 | mov al, dl ; And our data to write |
||
5066 | mov edi, [_z80MemWrite] ; Point to the write array |
||
5067 | |||
5068 | checkLoop29: |
||
5069 | cmp [edi], word 0ffffh ; End of our list? |
||
5070 | je memoryWrite29 ; Yes - go write it! |
||
5071 | cmp bx, [edi] ; Are we smaller? |
||
5072 | jb nextAddr29 ; Yes... go to the next addr |
||
5073 | cmp bx, [edi+4] ; Are we smaller? |
||
5074 | jbe callRoutine29 ; If not, go call it! |
||
5075 | |||
5076 | nextAddr29: |
||
5077 | add edi, 10h ; Next structure, please |
||
5078 | jmp short checkLoop29 |
||
5079 | |||
5080 | callRoutine29: |
||
5081 | mov dx, bx ; Get our address to target |
||
5082 | call WriteMemoryByte ; Go write the data! |
||
5083 | jmp short WriteMacroExit29 |
||
5084 | memoryWrite29: |
||
5085 | mov [ebp + ebx], dl |
||
5086 | mov ax, [_z80af] ; Get our accumulator and flags |
||
5087 | WriteMacroExit29: |
||
5088 | mov edi, [cyclesRemaining] |
||
5089 | xor edx, edx |
||
5090 | sub edi, byte 15 |
||
5091 | js near noMoreExec |
||
5092 | mov dl, byte [esi] ; Get our next instruction |
||
5093 | inc esi ; Increment PC |
||
5094 | jmp dword [z80regular+edx*4] |
||
5095 | |||
5096 | |||
5097 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5098 | |||
5099 | CBInst97: |
||
5100 | and al, 0fbh ; Reset a bit |
||
5101 | sub edi, byte 8 |
||
5102 | js near noMoreExec |
||
5103 | mov dl, byte [esi] ; Get our next instruction |
||
5104 | inc esi ; Increment PC |
||
5105 | jmp dword [z80regular+edx*4] |
||
5106 | |||
5107 | |||
5108 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5109 | |||
5110 | CBInst98: |
||
5111 | and ch, 0f7h ; Reset a bit |
||
5112 | sub edi, byte 8 |
||
5113 | js near noMoreExec |
||
5114 | mov dl, byte [esi] ; Get our next instruction |
||
5115 | inc esi ; Increment PC |
||
5116 | jmp dword [z80regular+edx*4] |
||
5117 | |||
5118 | |||
5119 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5120 | |||
5121 | CBInst99: |
||
5122 | and cl, 0f7h ; Reset a bit |
||
5123 | sub edi, byte 8 |
||
5124 | js near noMoreExec |
||
5125 | mov dl, byte [esi] ; Get our next instruction |
||
5126 | inc esi ; Increment PC |
||
5127 | jmp dword [z80regular+edx*4] |
||
5128 | |||
5129 | |||
5130 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5131 | |||
5132 | CBInst9a: |
||
5133 | mov dx, [_z80de] ; Move DE into something half usable |
||
5134 | and dh, 0f7h ; Reset a bit |
||
5135 | mov [_z80de], dx ; Once modified, put it back |
||
5136 | xor edx, edx |
||
5137 | sub edi, byte 8 |
||
5138 | js near noMoreExec |
||
5139 | mov dl, byte [esi] ; Get our next instruction |
||
5140 | inc esi ; Increment PC |
||
5141 | jmp dword [z80regular+edx*4] |
||
5142 | |||
5143 | |||
5144 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5145 | |||
5146 | CBInst9b: |
||
5147 | mov dx, [_z80de] ; Move DE into something half usable |
||
5148 | and dl, 0f7h ; Reset a bit |
||
5149 | mov [_z80de], dx ; Once modified, put it back |
||
5150 | xor edx, edx |
||
5151 | sub edi, byte 8 |
||
5152 | js near noMoreExec |
||
5153 | mov dl, byte [esi] ; Get our next instruction |
||
5154 | inc esi ; Increment PC |
||
5155 | jmp dword [z80regular+edx*4] |
||
5156 | |||
5157 | |||
5158 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5159 | |||
5160 | CBInst9c: |
||
5161 | and bh, 0f7h ; Reset a bit |
||
5162 | sub edi, byte 8 |
||
5163 | js near noMoreExec |
||
5164 | mov dl, byte [esi] ; Get our next instruction |
||
5165 | inc esi ; Increment PC |
||
5166 | jmp dword [z80regular+edx*4] |
||
5167 | |||
5168 | |||
5169 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5170 | |||
5171 | CBInst9d: |
||
5172 | and bl, 0f7h ; Reset a bit |
||
5173 | sub edi, byte 8 |
||
5174 | js near noMoreExec |
||
5175 | mov dl, byte [esi] ; Get our next instruction |
||
5176 | inc esi ; Increment PC |
||
5177 | jmp dword [z80regular+edx*4] |
||
5178 | |||
5179 | |||
5180 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5181 | |||
5182 | CBInst9e: |
||
5183 | mov [cyclesRemaining], edi |
||
5184 | mov edi, [_z80MemRead] ; Point to the read array |
||
5185 | |||
5186 | checkLoop30: |
||
5187 | cmp [edi], word 0ffffh ; End of the list? |
||
5188 | je memoryRead30 |
||
5189 | cmp ebx, [edi] ; Are we smaller? |
||
5190 | jb nextAddr30 ; Yes, go to the next address |
||
5191 | cmp ebx, [edi+4] ; Are we bigger? |
||
5192 | jbe callRoutine30 |
||
5193 | |||
5194 | nextAddr30: |
||
5195 | add edi, 10h ; Next structure! |
||
5196 | jmp short checkLoop30 |
||
5197 | |||
5198 | callRoutine30: |
||
5199 | mov dx, bx ; Get our address |
||
5200 | call ReadMemoryByte ; Standard read routine |
||
5201 | mov dl, al ; Put our returned value here |
||
5202 | mov ax, [_z80af] ; Get our AF back |
||
5203 | jmp short readExit30 |
||
5204 | |||
5205 | memoryRead30: |
||
5206 | mov dl, [ebp + ebx] ; Get our data |
||
5207 | |||
5208 | readExit30: |
||
5209 | mov edi, [cyclesRemaining] |
||
5210 | and dl, 0f7h ; Reset a bit |
||
5211 | mov [cyclesRemaining], edi |
||
5212 | mov [_z80af], ax ; Store AF |
||
5213 | mov al, dl ; And our data to write |
||
5214 | mov edi, [_z80MemWrite] ; Point to the write array |
||
5215 | |||
5216 | checkLoop31: |
||
5217 | cmp [edi], word 0ffffh ; End of our list? |
||
5218 | je memoryWrite31 ; Yes - go write it! |
||
5219 | cmp bx, [edi] ; Are we smaller? |
||
5220 | jb nextAddr31 ; Yes... go to the next addr |
||
5221 | cmp bx, [edi+4] ; Are we smaller? |
||
5222 | jbe callRoutine31 ; If not, go call it! |
||
5223 | |||
5224 | nextAddr31: |
||
5225 | add edi, 10h ; Next structure, please |
||
5226 | jmp short checkLoop31 |
||
5227 | |||
5228 | callRoutine31: |
||
5229 | mov dx, bx ; Get our address to target |
||
5230 | call WriteMemoryByte ; Go write the data! |
||
5231 | jmp short WriteMacroExit31 |
||
5232 | memoryWrite31: |
||
5233 | mov [ebp + ebx], dl |
||
5234 | mov ax, [_z80af] ; Get our accumulator and flags |
||
5235 | WriteMacroExit31: |
||
5236 | mov edi, [cyclesRemaining] |
||
5237 | xor edx, edx |
||
5238 | sub edi, byte 15 |
||
5239 | js near noMoreExec |
||
5240 | mov dl, byte [esi] ; Get our next instruction |
||
5241 | inc esi ; Increment PC |
||
5242 | jmp dword [z80regular+edx*4] |
||
5243 | |||
5244 | |||
5245 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5246 | |||
5247 | CBInst9f: |
||
5248 | and al, 0f7h ; Reset a bit |
||
5249 | sub edi, byte 8 |
||
5250 | js near noMoreExec |
||
5251 | mov dl, byte [esi] ; Get our next instruction |
||
5252 | inc esi ; Increment PC |
||
5253 | jmp dword [z80regular+edx*4] |
||
5254 | |||
5255 | |||
5256 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5257 | |||
5258 | CBInsta0: |
||
5259 | and ch, 0efh ; Reset a bit |
||
5260 | sub edi, byte 8 |
||
5261 | js near noMoreExec |
||
5262 | mov dl, byte [esi] ; Get our next instruction |
||
5263 | inc esi ; Increment PC |
||
5264 | jmp dword [z80regular+edx*4] |
||
5265 | |||
5266 | |||
5267 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5268 | |||
5269 | CBInsta1: |
||
5270 | and cl, 0efh ; Reset a bit |
||
5271 | sub edi, byte 8 |
||
5272 | js near noMoreExec |
||
5273 | mov dl, byte [esi] ; Get our next instruction |
||
5274 | inc esi ; Increment PC |
||
5275 | jmp dword [z80regular+edx*4] |
||
5276 | |||
5277 | |||
5278 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5279 | |||
5280 | CBInsta2: |
||
5281 | mov dx, [_z80de] ; Move DE into something half usable |
||
5282 | and dh, 0efh ; Reset a bit |
||
5283 | mov [_z80de], dx ; Once modified, put it back |
||
5284 | xor edx, edx |
||
5285 | sub edi, byte 8 |
||
5286 | js near noMoreExec |
||
5287 | mov dl, byte [esi] ; Get our next instruction |
||
5288 | inc esi ; Increment PC |
||
5289 | jmp dword [z80regular+edx*4] |
||
5290 | |||
5291 | |||
5292 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5293 | |||
5294 | CBInsta3: |
||
5295 | mov dx, [_z80de] ; Move DE into something half usable |
||
5296 | and dl, 0efh ; Reset a bit |
||
5297 | mov [_z80de], dx ; Once modified, put it back |
||
5298 | xor edx, edx |
||
5299 | sub edi, byte 8 |
||
5300 | js near noMoreExec |
||
5301 | mov dl, byte [esi] ; Get our next instruction |
||
5302 | inc esi ; Increment PC |
||
5303 | jmp dword [z80regular+edx*4] |
||
5304 | |||
5305 | |||
5306 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5307 | |||
5308 | CBInsta4: |
||
5309 | and bh, 0efh ; Reset a bit |
||
5310 | sub edi, byte 8 |
||
5311 | js near noMoreExec |
||
5312 | mov dl, byte [esi] ; Get our next instruction |
||
5313 | inc esi ; Increment PC |
||
5314 | jmp dword [z80regular+edx*4] |
||
5315 | |||
5316 | |||
5317 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5318 | |||
5319 | CBInsta5: |
||
5320 | and bl, 0efh ; Reset a bit |
||
5321 | sub edi, byte 8 |
||
5322 | js near noMoreExec |
||
5323 | mov dl, byte [esi] ; Get our next instruction |
||
5324 | inc esi ; Increment PC |
||
5325 | jmp dword [z80regular+edx*4] |
||
5326 | |||
5327 | |||
5328 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5329 | |||
5330 | CBInsta6: |
||
5331 | mov [cyclesRemaining], edi |
||
5332 | mov edi, [_z80MemRead] ; Point to the read array |
||
5333 | |||
5334 | checkLoop32: |
||
5335 | cmp [edi], word 0ffffh ; End of the list? |
||
5336 | je memoryRead32 |
||
5337 | cmp ebx, [edi] ; Are we smaller? |
||
5338 | jb nextAddr32 ; Yes, go to the next address |
||
5339 | cmp ebx, [edi+4] ; Are we bigger? |
||
5340 | jbe callRoutine32 |
||
5341 | |||
5342 | nextAddr32: |
||
5343 | add edi, 10h ; Next structure! |
||
5344 | jmp short checkLoop32 |
||
5345 | |||
5346 | callRoutine32: |
||
5347 | mov dx, bx ; Get our address |
||
5348 | call ReadMemoryByte ; Standard read routine |
||
5349 | mov dl, al ; Put our returned value here |
||
5350 | mov ax, [_z80af] ; Get our AF back |
||
5351 | jmp short readExit32 |
||
5352 | |||
5353 | memoryRead32: |
||
5354 | mov dl, [ebp + ebx] ; Get our data |
||
5355 | |||
5356 | readExit32: |
||
5357 | mov edi, [cyclesRemaining] |
||
5358 | and dl, 0efh ; Reset a bit |
||
5359 | mov [cyclesRemaining], edi |
||
5360 | mov [_z80af], ax ; Store AF |
||
5361 | mov al, dl ; And our data to write |
||
5362 | mov edi, [_z80MemWrite] ; Point to the write array |
||
5363 | |||
5364 | checkLoop33: |
||
5365 | cmp [edi], word 0ffffh ; End of our list? |
||
5366 | je memoryWrite33 ; Yes - go write it! |
||
5367 | cmp bx, [edi] ; Are we smaller? |
||
5368 | jb nextAddr33 ; Yes... go to the next addr |
||
5369 | cmp bx, [edi+4] ; Are we smaller? |
||
5370 | jbe callRoutine33 ; If not, go call it! |
||
5371 | |||
5372 | nextAddr33: |
||
5373 | add edi, 10h ; Next structure, please |
||
5374 | jmp short checkLoop33 |
||
5375 | |||
5376 | callRoutine33: |
||
5377 | mov dx, bx ; Get our address to target |
||
5378 | call WriteMemoryByte ; Go write the data! |
||
5379 | jmp short WriteMacroExit33 |
||
5380 | memoryWrite33: |
||
5381 | mov [ebp + ebx], dl |
||
5382 | mov ax, [_z80af] ; Get our accumulator and flags |
||
5383 | WriteMacroExit33: |
||
5384 | mov edi, [cyclesRemaining] |
||
5385 | xor edx, edx |
||
5386 | sub edi, byte 15 |
||
5387 | js near noMoreExec |
||
5388 | mov dl, byte [esi] ; Get our next instruction |
||
5389 | inc esi ; Increment PC |
||
5390 | jmp dword [z80regular+edx*4] |
||
5391 | |||
5392 | |||
5393 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5394 | |||
5395 | CBInsta7: |
||
5396 | and al, 0efh ; Reset a bit |
||
5397 | sub edi, byte 8 |
||
5398 | js near noMoreExec |
||
5399 | mov dl, byte [esi] ; Get our next instruction |
||
5400 | inc esi ; Increment PC |
||
5401 | jmp dword [z80regular+edx*4] |
||
5402 | |||
5403 | |||
5404 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5405 | |||
5406 | CBInsta8: |
||
5407 | and ch, 0dfh ; Reset a bit |
||
5408 | sub edi, byte 8 |
||
5409 | js near noMoreExec |
||
5410 | mov dl, byte [esi] ; Get our next instruction |
||
5411 | inc esi ; Increment PC |
||
5412 | jmp dword [z80regular+edx*4] |
||
5413 | |||
5414 | |||
5415 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5416 | |||
5417 | CBInsta9: |
||
5418 | and cl, 0dfh ; Reset a bit |
||
5419 | sub edi, byte 8 |
||
5420 | js near noMoreExec |
||
5421 | mov dl, byte [esi] ; Get our next instruction |
||
5422 | inc esi ; Increment PC |
||
5423 | jmp dword [z80regular+edx*4] |
||
5424 | |||
5425 | |||
5426 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5427 | |||
5428 | CBInstaa: |
||
5429 | mov dx, [_z80de] ; Move DE into something half usable |
||
5430 | and dh, 0dfh ; Reset a bit |
||
5431 | mov [_z80de], dx ; Once modified, put it back |
||
5432 | xor edx, edx |
||
5433 | sub edi, byte 8 |
||
5434 | js near noMoreExec |
||
5435 | mov dl, byte [esi] ; Get our next instruction |
||
5436 | inc esi ; Increment PC |
||
5437 | jmp dword [z80regular+edx*4] |
||
5438 | |||
5439 | |||
5440 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5441 | |||
5442 | CBInstab: |
||
5443 | mov dx, [_z80de] ; Move DE into something half usable |
||
5444 | and dl, 0dfh ; Reset a bit |
||
5445 | mov [_z80de], dx ; Once modified, put it back |
||
5446 | xor edx, edx |
||
5447 | sub edi, byte 8 |
||
5448 | js near noMoreExec |
||
5449 | mov dl, byte [esi] ; Get our next instruction |
||
5450 | inc esi ; Increment PC |
||
5451 | jmp dword [z80regular+edx*4] |
||
5452 | |||
5453 | |||
5454 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5455 | |||
5456 | CBInstac: |
||
5457 | and bh, 0dfh ; Reset a bit |
||
5458 | sub edi, byte 8 |
||
5459 | js near noMoreExec |
||
5460 | mov dl, byte [esi] ; Get our next instruction |
||
5461 | inc esi ; Increment PC |
||
5462 | jmp dword [z80regular+edx*4] |
||
5463 | |||
5464 | |||
5465 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5466 | |||
5467 | CBInstad: |
||
5468 | and bl, 0dfh ; Reset a bit |
||
5469 | sub edi, byte 8 |
||
5470 | js near noMoreExec |
||
5471 | mov dl, byte [esi] ; Get our next instruction |
||
5472 | inc esi ; Increment PC |
||
5473 | jmp dword [z80regular+edx*4] |
||
5474 | |||
5475 | |||
5476 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5477 | |||
5478 | CBInstae: |
||
5479 | mov [cyclesRemaining], edi |
||
5480 | mov edi, [_z80MemRead] ; Point to the read array |
||
5481 | |||
5482 | checkLoop34: |
||
5483 | cmp [edi], word 0ffffh ; End of the list? |
||
5484 | je memoryRead34 |
||
5485 | cmp ebx, [edi] ; Are we smaller? |
||
5486 | jb nextAddr34 ; Yes, go to the next address |
||
5487 | cmp ebx, [edi+4] ; Are we bigger? |
||
5488 | jbe callRoutine34 |
||
5489 | |||
5490 | nextAddr34: |
||
5491 | add edi, 10h ; Next structure! |
||
5492 | jmp short checkLoop34 |
||
5493 | |||
5494 | callRoutine34: |
||
5495 | mov dx, bx ; Get our address |
||
5496 | call ReadMemoryByte ; Standard read routine |
||
5497 | mov dl, al ; Put our returned value here |
||
5498 | mov ax, [_z80af] ; Get our AF back |
||
5499 | jmp short readExit34 |
||
5500 | |||
5501 | memoryRead34: |
||
5502 | mov dl, [ebp + ebx] ; Get our data |
||
5503 | |||
5504 | readExit34: |
||
5505 | mov edi, [cyclesRemaining] |
||
5506 | and dl, 0dfh ; Reset a bit |
||
5507 | mov [cyclesRemaining], edi |
||
5508 | mov [_z80af], ax ; Store AF |
||
5509 | mov al, dl ; And our data to write |
||
5510 | mov edi, [_z80MemWrite] ; Point to the write array |
||
5511 | |||
5512 | checkLoop35: |
||
5513 | cmp [edi], word 0ffffh ; End of our list? |
||
5514 | je memoryWrite35 ; Yes - go write it! |
||
5515 | cmp bx, [edi] ; Are we smaller? |
||
5516 | jb nextAddr35 ; Yes... go to the next addr |
||
5517 | cmp bx, [edi+4] ; Are we smaller? |
||
5518 | jbe callRoutine35 ; If not, go call it! |
||
5519 | |||
5520 | nextAddr35: |
||
5521 | add edi, 10h ; Next structure, please |
||
5522 | jmp short checkLoop35 |
||
5523 | |||
5524 | callRoutine35: |
||
5525 | mov dx, bx ; Get our address to target |
||
5526 | call WriteMemoryByte ; Go write the data! |
||
5527 | jmp short WriteMacroExit35 |
||
5528 | memoryWrite35: |
||
5529 | mov [ebp + ebx], dl |
||
5530 | mov ax, [_z80af] ; Get our accumulator and flags |
||
5531 | WriteMacroExit35: |
||
5532 | mov edi, [cyclesRemaining] |
||
5533 | xor edx, edx |
||
5534 | sub edi, byte 15 |
||
5535 | js near noMoreExec |
||
5536 | mov dl, byte [esi] ; Get our next instruction |
||
5537 | inc esi ; Increment PC |
||
5538 | jmp dword [z80regular+edx*4] |
||
5539 | |||
5540 | |||
5541 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5542 | |||
5543 | CBInstaf: |
||
5544 | and al, 0dfh ; Reset a bit |
||
5545 | sub edi, byte 8 |
||
5546 | js near noMoreExec |
||
5547 | mov dl, byte [esi] ; Get our next instruction |
||
5548 | inc esi ; Increment PC |
||
5549 | jmp dword [z80regular+edx*4] |
||
5550 | |||
5551 | |||
5552 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5553 | |||
5554 | CBInstb0: |
||
5555 | and ch, 0bfh ; Reset a bit |
||
5556 | sub edi, byte 8 |
||
5557 | js near noMoreExec |
||
5558 | mov dl, byte [esi] ; Get our next instruction |
||
5559 | inc esi ; Increment PC |
||
5560 | jmp dword [z80regular+edx*4] |
||
5561 | |||
5562 | |||
5563 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5564 | |||
5565 | CBInstb1: |
||
5566 | and cl, 0bfh ; Reset a bit |
||
5567 | sub edi, byte 8 |
||
5568 | js near noMoreExec |
||
5569 | mov dl, byte [esi] ; Get our next instruction |
||
5570 | inc esi ; Increment PC |
||
5571 | jmp dword [z80regular+edx*4] |
||
5572 | |||
5573 | |||
5574 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5575 | |||
5576 | CBInstb2: |
||
5577 | mov dx, [_z80de] ; Move DE into something half usable |
||
5578 | and dh, 0bfh ; Reset a bit |
||
5579 | mov [_z80de], dx ; Once modified, put it back |
||
5580 | xor edx, edx |
||
5581 | sub edi, byte 8 |
||
5582 | js near noMoreExec |
||
5583 | mov dl, byte [esi] ; Get our next instruction |
||
5584 | inc esi ; Increment PC |
||
5585 | jmp dword [z80regular+edx*4] |
||
5586 | |||
5587 | |||
5588 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5589 | |||
5590 | CBInstb3: |
||
5591 | mov dx, [_z80de] ; Move DE into something half usable |
||
5592 | and dl, 0bfh ; Reset a bit |
||
5593 | mov [_z80de], dx ; Once modified, put it back |
||
5594 | xor edx, edx |
||
5595 | sub edi, byte 8 |
||
5596 | js near noMoreExec |
||
5597 | mov dl, byte [esi] ; Get our next instruction |
||
5598 | inc esi ; Increment PC |
||
5599 | jmp dword [z80regular+edx*4] |
||
5600 | |||
5601 | |||
5602 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5603 | |||
5604 | CBInstb4: |
||
5605 | and bh, 0bfh ; Reset a bit |
||
5606 | sub edi, byte 8 |
||
5607 | js near noMoreExec |
||
5608 | mov dl, byte [esi] ; Get our next instruction |
||
5609 | inc esi ; Increment PC |
||
5610 | jmp dword [z80regular+edx*4] |
||
5611 | |||
5612 | |||
5613 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5614 | |||
5615 | CBInstb5: |
||
5616 | and bl, 0bfh ; Reset a bit |
||
5617 | sub edi, byte 8 |
||
5618 | js near noMoreExec |
||
5619 | mov dl, byte [esi] ; Get our next instruction |
||
5620 | inc esi ; Increment PC |
||
5621 | jmp dword [z80regular+edx*4] |
||
5622 | |||
5623 | |||
5624 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5625 | |||
5626 | CBInstb6: |
||
5627 | mov [cyclesRemaining], edi |
||
5628 | mov edi, [_z80MemRead] ; Point to the read array |
||
5629 | |||
5630 | checkLoop36: |
||
5631 | cmp [edi], word 0ffffh ; End of the list? |
||
5632 | je memoryRead36 |
||
5633 | cmp ebx, [edi] ; Are we smaller? |
||
5634 | jb nextAddr36 ; Yes, go to the next address |
||
5635 | cmp ebx, [edi+4] ; Are we bigger? |
||
5636 | jbe callRoutine36 |
||
5637 | |||
5638 | nextAddr36: |
||
5639 | add edi, 10h ; Next structure! |
||
5640 | jmp short checkLoop36 |
||
5641 | |||
5642 | callRoutine36: |
||
5643 | mov dx, bx ; Get our address |
||
5644 | call ReadMemoryByte ; Standard read routine |
||
5645 | mov dl, al ; Put our returned value here |
||
5646 | mov ax, [_z80af] ; Get our AF back |
||
5647 | jmp short readExit36 |
||
5648 | |||
5649 | memoryRead36: |
||
5650 | mov dl, [ebp + ebx] ; Get our data |
||
5651 | |||
5652 | readExit36: |
||
5653 | mov edi, [cyclesRemaining] |
||
5654 | and dl, 0bfh ; Reset a bit |
||
5655 | mov [cyclesRemaining], edi |
||
5656 | mov [_z80af], ax ; Store AF |
||
5657 | mov al, dl ; And our data to write |
||
5658 | mov edi, [_z80MemWrite] ; Point to the write array |
||
5659 | |||
5660 | checkLoop37: |
||
5661 | cmp [edi], word 0ffffh ; End of our list? |
||
5662 | je memoryWrite37 ; Yes - go write it! |
||
5663 | cmp bx, [edi] ; Are we smaller? |
||
5664 | jb nextAddr37 ; Yes... go to the next addr |
||
5665 | cmp bx, [edi+4] ; Are we smaller? |
||
5666 | jbe callRoutine37 ; If not, go call it! |
||
5667 | |||
5668 | nextAddr37: |
||
5669 | add edi, 10h ; Next structure, please |
||
5670 | jmp short checkLoop37 |
||
5671 | |||
5672 | callRoutine37: |
||
5673 | mov dx, bx ; Get our address to target |
||
5674 | call WriteMemoryByte ; Go write the data! |
||
5675 | jmp short WriteMacroExit37 |
||
5676 | memoryWrite37: |
||
5677 | mov [ebp + ebx], dl |
||
5678 | mov ax, [_z80af] ; Get our accumulator and flags |
||
5679 | WriteMacroExit37: |
||
5680 | mov edi, [cyclesRemaining] |
||
5681 | xor edx, edx |
||
5682 | sub edi, byte 15 |
||
5683 | js near noMoreExec |
||
5684 | mov dl, byte [esi] ; Get our next instruction |
||
5685 | inc esi ; Increment PC |
||
5686 | jmp dword [z80regular+edx*4] |
||
5687 | |||
5688 | |||
5689 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5690 | |||
5691 | CBInstb7: |
||
5692 | and al, 0bfh ; Reset a bit |
||
5693 | sub edi, byte 8 |
||
5694 | js near noMoreExec |
||
5695 | mov dl, byte [esi] ; Get our next instruction |
||
5696 | inc esi ; Increment PC |
||
5697 | jmp dword [z80regular+edx*4] |
||
5698 | |||
5699 | |||
5700 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5701 | |||
5702 | CBInstb8: |
||
5703 | and ch, 07fh ; Reset a bit |
||
5704 | sub edi, byte 8 |
||
5705 | js near noMoreExec |
||
5706 | mov dl, byte [esi] ; Get our next instruction |
||
5707 | inc esi ; Increment PC |
||
5708 | jmp dword [z80regular+edx*4] |
||
5709 | |||
5710 | |||
5711 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5712 | |||
5713 | CBInstb9: |
||
5714 | and cl, 07fh ; Reset a bit |
||
5715 | sub edi, byte 8 |
||
5716 | js near noMoreExec |
||
5717 | mov dl, byte [esi] ; Get our next instruction |
||
5718 | inc esi ; Increment PC |
||
5719 | jmp dword [z80regular+edx*4] |
||
5720 | |||
5721 | |||
5722 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5723 | |||
5724 | CBInstba: |
||
5725 | mov dx, [_z80de] ; Move DE into something half usable |
||
5726 | and dh, 07fh ; Reset a bit |
||
5727 | mov [_z80de], dx ; Once modified, put it back |
||
5728 | xor edx, edx |
||
5729 | sub edi, byte 8 |
||
5730 | js near noMoreExec |
||
5731 | mov dl, byte [esi] ; Get our next instruction |
||
5732 | inc esi ; Increment PC |
||
5733 | jmp dword [z80regular+edx*4] |
||
5734 | |||
5735 | |||
5736 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5737 | |||
5738 | CBInstbb: |
||
5739 | mov dx, [_z80de] ; Move DE into something half usable |
||
5740 | and dl, 07fh ; Reset a bit |
||
5741 | mov [_z80de], dx ; Once modified, put it back |
||
5742 | xor edx, edx |
||
5743 | sub edi, byte 8 |
||
5744 | js near noMoreExec |
||
5745 | mov dl, byte [esi] ; Get our next instruction |
||
5746 | inc esi ; Increment PC |
||
5747 | jmp dword [z80regular+edx*4] |
||
5748 | |||
5749 | |||
5750 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5751 | |||
5752 | CBInstbc: |
||
5753 | and bh, 07fh ; Reset a bit |
||
5754 | sub edi, byte 8 |
||
5755 | js near noMoreExec |
||
5756 | mov dl, byte [esi] ; Get our next instruction |
||
5757 | inc esi ; Increment PC |
||
5758 | jmp dword [z80regular+edx*4] |
||
5759 | |||
5760 | |||
5761 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5762 | |||
5763 | CBInstbd: |
||
5764 | and bl, 07fh ; Reset a bit |
||
5765 | sub edi, byte 8 |
||
5766 | js near noMoreExec |
||
5767 | mov dl, byte [esi] ; Get our next instruction |
||
5768 | inc esi ; Increment PC |
||
5769 | jmp dword [z80regular+edx*4] |
||
5770 | |||
5771 | |||
5772 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5773 | |||
5774 | CBInstbe: |
||
5775 | mov [cyclesRemaining], edi |
||
5776 | mov edi, [_z80MemRead] ; Point to the read array |
||
5777 | |||
5778 | checkLoop38: |
||
5779 | cmp [edi], word 0ffffh ; End of the list? |
||
5780 | je memoryRead38 |
||
5781 | cmp ebx, [edi] ; Are we smaller? |
||
5782 | jb nextAddr38 ; Yes, go to the next address |
||
5783 | cmp ebx, [edi+4] ; Are we bigger? |
||
5784 | jbe callRoutine38 |
||
5785 | |||
5786 | nextAddr38: |
||
5787 | add edi, 10h ; Next structure! |
||
5788 | jmp short checkLoop38 |
||
5789 | |||
5790 | callRoutine38: |
||
5791 | mov dx, bx ; Get our address |
||
5792 | call ReadMemoryByte ; Standard read routine |
||
5793 | mov dl, al ; Put our returned value here |
||
5794 | mov ax, [_z80af] ; Get our AF back |
||
5795 | jmp short readExit38 |
||
5796 | |||
5797 | memoryRead38: |
||
5798 | mov dl, [ebp + ebx] ; Get our data |
||
5799 | |||
5800 | readExit38: |
||
5801 | mov edi, [cyclesRemaining] |
||
5802 | and dl, 07fh ; Reset a bit |
||
5803 | mov [cyclesRemaining], edi |
||
5804 | mov [_z80af], ax ; Store AF |
||
5805 | mov al, dl ; And our data to write |
||
5806 | mov edi, [_z80MemWrite] ; Point to the write array |
||
5807 | |||
5808 | checkLoop39: |
||
5809 | cmp [edi], word 0ffffh ; End of our list? |
||
5810 | je memoryWrite39 ; Yes - go write it! |
||
5811 | cmp bx, [edi] ; Are we smaller? |
||
5812 | jb nextAddr39 ; Yes... go to the next addr |
||
5813 | cmp bx, [edi+4] ; Are we smaller? |
||
5814 | jbe callRoutine39 ; If not, go call it! |
||
5815 | |||
5816 | nextAddr39: |
||
5817 | add edi, 10h ; Next structure, please |
||
5818 | jmp short checkLoop39 |
||
5819 | |||
5820 | callRoutine39: |
||
5821 | mov dx, bx ; Get our address to target |
||
5822 | call WriteMemoryByte ; Go write the data! |
||
5823 | jmp short WriteMacroExit39 |
||
5824 | memoryWrite39: |
||
5825 | mov [ebp + ebx], dl |
||
5826 | mov ax, [_z80af] ; Get our accumulator and flags |
||
5827 | WriteMacroExit39: |
||
5828 | mov edi, [cyclesRemaining] |
||
5829 | xor edx, edx |
||
5830 | sub edi, byte 15 |
||
5831 | js near noMoreExec |
||
5832 | mov dl, byte [esi] ; Get our next instruction |
||
5833 | inc esi ; Increment PC |
||
5834 | jmp dword [z80regular+edx*4] |
||
5835 | |||
5836 | |||
5837 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5838 | |||
5839 | CBInstbf: |
||
5840 | and al, 07fh ; Reset a bit |
||
5841 | sub edi, byte 8 |
||
5842 | js near noMoreExec |
||
5843 | mov dl, byte [esi] ; Get our next instruction |
||
5844 | inc esi ; Increment PC |
||
5845 | jmp dword [z80regular+edx*4] |
||
5846 | |||
5847 | |||
5848 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5849 | |||
5850 | CBInstc0: |
||
5851 | or ch, 001h ; Set a bit |
||
5852 | sub edi, byte 8 |
||
5853 | js near noMoreExec |
||
5854 | mov dl, byte [esi] ; Get our next instruction |
||
5855 | inc esi ; Increment PC |
||
5856 | jmp dword [z80regular+edx*4] |
||
5857 | |||
5858 | |||
5859 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5860 | |||
5861 | CBInstc1: |
||
5862 | or cl, 001h ; Set a bit |
||
5863 | sub edi, byte 8 |
||
5864 | js near noMoreExec |
||
5865 | mov dl, byte [esi] ; Get our next instruction |
||
5866 | inc esi ; Increment PC |
||
5867 | jmp dword [z80regular+edx*4] |
||
5868 | |||
5869 | |||
5870 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5871 | |||
5872 | CBInstc2: |
||
5873 | mov dx, [_z80de] ; Move DE into something half usable |
||
5874 | or dh, 001h ; Set a bit |
||
5875 | mov [_z80de], dx ; Once modified, put it back |
||
5876 | xor edx, edx |
||
5877 | sub edi, byte 8 |
||
5878 | js near noMoreExec |
||
5879 | mov dl, byte [esi] ; Get our next instruction |
||
5880 | inc esi ; Increment PC |
||
5881 | jmp dword [z80regular+edx*4] |
||
5882 | |||
5883 | |||
5884 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5885 | |||
5886 | CBInstc3: |
||
5887 | mov dx, [_z80de] ; Move DE into something half usable |
||
5888 | or dl, 001h ; Set a bit |
||
5889 | mov [_z80de], dx ; Once modified, put it back |
||
5890 | xor edx, edx |
||
5891 | sub edi, byte 8 |
||
5892 | js near noMoreExec |
||
5893 | mov dl, byte [esi] ; Get our next instruction |
||
5894 | inc esi ; Increment PC |
||
5895 | jmp dword [z80regular+edx*4] |
||
5896 | |||
5897 | |||
5898 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5899 | |||
5900 | CBInstc4: |
||
5901 | or bh, 001h ; Set a bit |
||
5902 | sub edi, byte 8 |
||
5903 | js near noMoreExec |
||
5904 | mov dl, byte [esi] ; Get our next instruction |
||
5905 | inc esi ; Increment PC |
||
5906 | jmp dword [z80regular+edx*4] |
||
5907 | |||
5908 | |||
5909 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5910 | |||
5911 | CBInstc5: |
||
5912 | or bl, 001h ; Set a bit |
||
5913 | sub edi, byte 8 |
||
5914 | js near noMoreExec |
||
5915 | mov dl, byte [esi] ; Get our next instruction |
||
5916 | inc esi ; Increment PC |
||
5917 | jmp dword [z80regular+edx*4] |
||
5918 | |||
5919 | |||
5920 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5921 | |||
5922 | CBInstc6: |
||
5923 | mov [cyclesRemaining], edi |
||
5924 | mov edi, [_z80MemRead] ; Point to the read array |
||
5925 | |||
5926 | checkLoop40: |
||
5927 | cmp [edi], word 0ffffh ; End of the list? |
||
5928 | je memoryRead40 |
||
5929 | cmp ebx, [edi] ; Are we smaller? |
||
5930 | jb nextAddr40 ; Yes, go to the next address |
||
5931 | cmp ebx, [edi+4] ; Are we bigger? |
||
5932 | jbe callRoutine40 |
||
5933 | |||
5934 | nextAddr40: |
||
5935 | add edi, 10h ; Next structure! |
||
5936 | jmp short checkLoop40 |
||
5937 | |||
5938 | callRoutine40: |
||
5939 | mov dx, bx ; Get our address |
||
5940 | call ReadMemoryByte ; Standard read routine |
||
5941 | mov dl, al ; Put our returned value here |
||
5942 | mov ax, [_z80af] ; Get our AF back |
||
5943 | jmp short readExit40 |
||
5944 | |||
5945 | memoryRead40: |
||
5946 | mov dl, [ebp + ebx] ; Get our data |
||
5947 | |||
5948 | readExit40: |
||
5949 | mov edi, [cyclesRemaining] |
||
5950 | or dl, 001h ; Set a bit |
||
5951 | mov [cyclesRemaining], edi |
||
5952 | mov [_z80af], ax ; Store AF |
||
5953 | mov al, dl ; And our data to write |
||
5954 | mov edi, [_z80MemWrite] ; Point to the write array |
||
5955 | |||
5956 | checkLoop41: |
||
5957 | cmp [edi], word 0ffffh ; End of our list? |
||
5958 | je memoryWrite41 ; Yes - go write it! |
||
5959 | cmp bx, [edi] ; Are we smaller? |
||
5960 | jb nextAddr41 ; Yes... go to the next addr |
||
5961 | cmp bx, [edi+4] ; Are we smaller? |
||
5962 | jbe callRoutine41 ; If not, go call it! |
||
5963 | |||
5964 | nextAddr41: |
||
5965 | add edi, 10h ; Next structure, please |
||
5966 | jmp short checkLoop41 |
||
5967 | |||
5968 | callRoutine41: |
||
5969 | mov dx, bx ; Get our address to target |
||
5970 | call WriteMemoryByte ; Go write the data! |
||
5971 | jmp short WriteMacroExit41 |
||
5972 | memoryWrite41: |
||
5973 | mov [ebp + ebx], dl |
||
5974 | mov ax, [_z80af] ; Get our accumulator and flags |
||
5975 | WriteMacroExit41: |
||
5976 | mov edi, [cyclesRemaining] |
||
5977 | xor edx, edx |
||
5978 | sub edi, byte 15 |
||
5979 | js near noMoreExec |
||
5980 | mov dl, byte [esi] ; Get our next instruction |
||
5981 | inc esi ; Increment PC |
||
5982 | jmp dword [z80regular+edx*4] |
||
5983 | |||
5984 | |||
5985 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5986 | |||
5987 | CBInstc7: |
||
5988 | or al, 001h ; Set a bit |
||
5989 | sub edi, byte 8 |
||
5990 | js near noMoreExec |
||
5991 | mov dl, byte [esi] ; Get our next instruction |
||
5992 | inc esi ; Increment PC |
||
5993 | jmp dword [z80regular+edx*4] |
||
5994 | |||
5995 | |||
5996 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
5997 | |||
5998 | CBInstc8: |
||
5999 | or ch, 002h ; Set a bit |
||
6000 | sub edi, byte 8 |
||
6001 | js near noMoreExec |
||
6002 | mov dl, byte [esi] ; Get our next instruction |
||
6003 | inc esi ; Increment PC |
||
6004 | jmp dword [z80regular+edx*4] |
||
6005 | |||
6006 | |||
6007 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6008 | |||
6009 | CBInstc9: |
||
6010 | or cl, 002h ; Set a bit |
||
6011 | sub edi, byte 8 |
||
6012 | js near noMoreExec |
||
6013 | mov dl, byte [esi] ; Get our next instruction |
||
6014 | inc esi ; Increment PC |
||
6015 | jmp dword [z80regular+edx*4] |
||
6016 | |||
6017 | |||
6018 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6019 | |||
6020 | CBInstca: |
||
6021 | mov dx, [_z80de] ; Move DE into something half usable |
||
6022 | or dh, 002h ; Set a bit |
||
6023 | mov [_z80de], dx ; Once modified, put it back |
||
6024 | xor edx, edx |
||
6025 | sub edi, byte 8 |
||
6026 | js near noMoreExec |
||
6027 | mov dl, byte [esi] ; Get our next instruction |
||
6028 | inc esi ; Increment PC |
||
6029 | jmp dword [z80regular+edx*4] |
||
6030 | |||
6031 | |||
6032 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6033 | |||
6034 | CBInstcb: |
||
6035 | mov dx, [_z80de] ; Move DE into something half usable |
||
6036 | or dl, 002h ; Set a bit |
||
6037 | mov [_z80de], dx ; Once modified, put it back |
||
6038 | xor edx, edx |
||
6039 | sub edi, byte 8 |
||
6040 | js near noMoreExec |
||
6041 | mov dl, byte [esi] ; Get our next instruction |
||
6042 | inc esi ; Increment PC |
||
6043 | jmp dword [z80regular+edx*4] |
||
6044 | |||
6045 | |||
6046 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6047 | |||
6048 | CBInstcc: |
||
6049 | or bh, 002h ; Set a bit |
||
6050 | sub edi, byte 8 |
||
6051 | js near noMoreExec |
||
6052 | mov dl, byte [esi] ; Get our next instruction |
||
6053 | inc esi ; Increment PC |
||
6054 | jmp dword [z80regular+edx*4] |
||
6055 | |||
6056 | |||
6057 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6058 | |||
6059 | CBInstcd: |
||
6060 | or bl, 002h ; Set a bit |
||
6061 | sub edi, byte 8 |
||
6062 | js near noMoreExec |
||
6063 | mov dl, byte [esi] ; Get our next instruction |
||
6064 | inc esi ; Increment PC |
||
6065 | jmp dword [z80regular+edx*4] |
||
6066 | |||
6067 | |||
6068 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6069 | |||
6070 | CBInstce: |
||
6071 | mov [cyclesRemaining], edi |
||
6072 | mov edi, [_z80MemRead] ; Point to the read array |
||
6073 | |||
6074 | checkLoop42: |
||
6075 | cmp [edi], word 0ffffh ; End of the list? |
||
6076 | je memoryRead42 |
||
6077 | cmp ebx, [edi] ; Are we smaller? |
||
6078 | jb nextAddr42 ; Yes, go to the next address |
||
6079 | cmp ebx, [edi+4] ; Are we bigger? |
||
6080 | jbe callRoutine42 |
||
6081 | |||
6082 | nextAddr42: |
||
6083 | add edi, 10h ; Next structure! |
||
6084 | jmp short checkLoop42 |
||
6085 | |||
6086 | callRoutine42: |
||
6087 | mov dx, bx ; Get our address |
||
6088 | call ReadMemoryByte ; Standard read routine |
||
6089 | mov dl, al ; Put our returned value here |
||
6090 | mov ax, [_z80af] ; Get our AF back |
||
6091 | jmp short readExit42 |
||
6092 | |||
6093 | memoryRead42: |
||
6094 | mov dl, [ebp + ebx] ; Get our data |
||
6095 | |||
6096 | readExit42: |
||
6097 | mov edi, [cyclesRemaining] |
||
6098 | or dl, 002h ; Set a bit |
||
6099 | mov [cyclesRemaining], edi |
||
6100 | mov [_z80af], ax ; Store AF |
||
6101 | mov al, dl ; And our data to write |
||
6102 | mov edi, [_z80MemWrite] ; Point to the write array |
||
6103 | |||
6104 | checkLoop43: |
||
6105 | cmp [edi], word 0ffffh ; End of our list? |
||
6106 | je memoryWrite43 ; Yes - go write it! |
||
6107 | cmp bx, [edi] ; Are we smaller? |
||
6108 | jb nextAddr43 ; Yes... go to the next addr |
||
6109 | cmp bx, [edi+4] ; Are we smaller? |
||
6110 | jbe callRoutine43 ; If not, go call it! |
||
6111 | |||
6112 | nextAddr43: |
||
6113 | add edi, 10h ; Next structure, please |
||
6114 | jmp short checkLoop43 |
||
6115 | |||
6116 | callRoutine43: |
||
6117 | mov dx, bx ; Get our address to target |
||
6118 | call WriteMemoryByte ; Go write the data! |
||
6119 | jmp short WriteMacroExit43 |
||
6120 | memoryWrite43: |
||
6121 | mov [ebp + ebx], dl |
||
6122 | mov ax, [_z80af] ; Get our accumulator and flags |
||
6123 | WriteMacroExit43: |
||
6124 | mov edi, [cyclesRemaining] |
||
6125 | xor edx, edx |
||
6126 | sub edi, byte 15 |
||
6127 | js near noMoreExec |
||
6128 | mov dl, byte [esi] ; Get our next instruction |
||
6129 | inc esi ; Increment PC |
||
6130 | jmp dword [z80regular+edx*4] |
||
6131 | |||
6132 | |||
6133 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6134 | |||
6135 | CBInstcf: |
||
6136 | or al, 002h ; Set a bit |
||
6137 | sub edi, byte 8 |
||
6138 | js near noMoreExec |
||
6139 | mov dl, byte [esi] ; Get our next instruction |
||
6140 | inc esi ; Increment PC |
||
6141 | jmp dword [z80regular+edx*4] |
||
6142 | |||
6143 | |||
6144 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6145 | |||
6146 | CBInstd0: |
||
6147 | or ch, 004h ; Set a bit |
||
6148 | sub edi, byte 8 |
||
6149 | js near noMoreExec |
||
6150 | mov dl, byte [esi] ; Get our next instruction |
||
6151 | inc esi ; Increment PC |
||
6152 | jmp dword [z80regular+edx*4] |
||
6153 | |||
6154 | |||
6155 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6156 | |||
6157 | CBInstd1: |
||
6158 | or cl, 004h ; Set a bit |
||
6159 | sub edi, byte 8 |
||
6160 | js near noMoreExec |
||
6161 | mov dl, byte [esi] ; Get our next instruction |
||
6162 | inc esi ; Increment PC |
||
6163 | jmp dword [z80regular+edx*4] |
||
6164 | |||
6165 | |||
6166 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6167 | |||
6168 | CBInstd2: |
||
6169 | mov dx, [_z80de] ; Move DE into something half usable |
||
6170 | or dh, 004h ; Set a bit |
||
6171 | mov [_z80de], dx ; Once modified, put it back |
||
6172 | xor edx, edx |
||
6173 | sub edi, byte 8 |
||
6174 | js near noMoreExec |
||
6175 | mov dl, byte [esi] ; Get our next instruction |
||
6176 | inc esi ; Increment PC |
||
6177 | jmp dword [z80regular+edx*4] |
||
6178 | |||
6179 | |||
6180 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6181 | |||
6182 | CBInstd3: |
||
6183 | mov dx, [_z80de] ; Move DE into something half usable |
||
6184 | or dl, 004h ; Set a bit |
||
6185 | mov [_z80de], dx ; Once modified, put it back |
||
6186 | xor edx, edx |
||
6187 | sub edi, byte 8 |
||
6188 | js near noMoreExec |
||
6189 | mov dl, byte [esi] ; Get our next instruction |
||
6190 | inc esi ; Increment PC |
||
6191 | jmp dword [z80regular+edx*4] |
||
6192 | |||
6193 | |||
6194 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6195 | |||
6196 | CBInstd4: |
||
6197 | or bh, 004h ; Set a bit |
||
6198 | sub edi, byte 8 |
||
6199 | js near noMoreExec |
||
6200 | mov dl, byte [esi] ; Get our next instruction |
||
6201 | inc esi ; Increment PC |
||
6202 | jmp dword [z80regular+edx*4] |
||
6203 | |||
6204 | |||
6205 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6206 | |||
6207 | CBInstd5: |
||
6208 | or bl, 004h ; Set a bit |
||
6209 | sub edi, byte 8 |
||
6210 | js near noMoreExec |
||
6211 | mov dl, byte [esi] ; Get our next instruction |
||
6212 | inc esi ; Increment PC |
||
6213 | jmp dword [z80regular+edx*4] |
||
6214 | |||
6215 | |||
6216 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6217 | |||
6218 | CBInstd6: |
||
6219 | mov [cyclesRemaining], edi |
||
6220 | mov edi, [_z80MemRead] ; Point to the read array |
||
6221 | |||
6222 | checkLoop44: |
||
6223 | cmp [edi], word 0ffffh ; End of the list? |
||
6224 | je memoryRead44 |
||
6225 | cmp ebx, [edi] ; Are we smaller? |
||
6226 | jb nextAddr44 ; Yes, go to the next address |
||
6227 | cmp ebx, [edi+4] ; Are we bigger? |
||
6228 | jbe callRoutine44 |
||
6229 | |||
6230 | nextAddr44: |
||
6231 | add edi, 10h ; Next structure! |
||
6232 | jmp short checkLoop44 |
||
6233 | |||
6234 | callRoutine44: |
||
6235 | mov dx, bx ; Get our address |
||
6236 | call ReadMemoryByte ; Standard read routine |
||
6237 | mov dl, al ; Put our returned value here |
||
6238 | mov ax, [_z80af] ; Get our AF back |
||
6239 | jmp short readExit44 |
||
6240 | |||
6241 | memoryRead44: |
||
6242 | mov dl, [ebp + ebx] ; Get our data |
||
6243 | |||
6244 | readExit44: |
||
6245 | mov edi, [cyclesRemaining] |
||
6246 | or dl, 004h ; Set a bit |
||
6247 | mov [cyclesRemaining], edi |
||
6248 | mov [_z80af], ax ; Store AF |
||
6249 | mov al, dl ; And our data to write |
||
6250 | mov edi, [_z80MemWrite] ; Point to the write array |
||
6251 | |||
6252 | checkLoop45: |
||
6253 | cmp [edi], word 0ffffh ; End of our list? |
||
6254 | je memoryWrite45 ; Yes - go write it! |
||
6255 | cmp bx, [edi] ; Are we smaller? |
||
6256 | jb nextAddr45 ; Yes... go to the next addr |
||
6257 | cmp bx, [edi+4] ; Are we smaller? |
||
6258 | jbe callRoutine45 ; If not, go call it! |
||
6259 | |||
6260 | nextAddr45: |
||
6261 | add edi, 10h ; Next structure, please |
||
6262 | jmp short checkLoop45 |
||
6263 | |||
6264 | callRoutine45: |
||
6265 | mov dx, bx ; Get our address to target |
||
6266 | call WriteMemoryByte ; Go write the data! |
||
6267 | jmp short WriteMacroExit45 |
||
6268 | memoryWrite45: |
||
6269 | mov [ebp + ebx], dl |
||
6270 | mov ax, [_z80af] ; Get our accumulator and flags |
||
6271 | WriteMacroExit45: |
||
6272 | mov edi, [cyclesRemaining] |
||
6273 | xor edx, edx |
||
6274 | sub edi, byte 15 |
||
6275 | js near noMoreExec |
||
6276 | mov dl, byte [esi] ; Get our next instruction |
||
6277 | inc esi ; Increment PC |
||
6278 | jmp dword [z80regular+edx*4] |
||
6279 | |||
6280 | |||
6281 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6282 | |||
6283 | CBInstd7: |
||
6284 | or al, 004h ; Set a bit |
||
6285 | sub edi, byte 8 |
||
6286 | js near noMoreExec |
||
6287 | mov dl, byte [esi] ; Get our next instruction |
||
6288 | inc esi ; Increment PC |
||
6289 | jmp dword [z80regular+edx*4] |
||
6290 | |||
6291 | |||
6292 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6293 | |||
6294 | CBInstd8: |
||
6295 | or ch, 008h ; Set a bit |
||
6296 | sub edi, byte 8 |
||
6297 | js near noMoreExec |
||
6298 | mov dl, byte [esi] ; Get our next instruction |
||
6299 | inc esi ; Increment PC |
||
6300 | jmp dword [z80regular+edx*4] |
||
6301 | |||
6302 | |||
6303 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6304 | |||
6305 | CBInstd9: |
||
6306 | or cl, 008h ; Set a bit |
||
6307 | sub edi, byte 8 |
||
6308 | js near noMoreExec |
||
6309 | mov dl, byte [esi] ; Get our next instruction |
||
6310 | inc esi ; Increment PC |
||
6311 | jmp dword [z80regular+edx*4] |
||
6312 | |||
6313 | |||
6314 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6315 | |||
6316 | CBInstda: |
||
6317 | mov dx, [_z80de] ; Move DE into something half usable |
||
6318 | or dh, 008h ; Set a bit |
||
6319 | mov [_z80de], dx ; Once modified, put it back |
||
6320 | xor edx, edx |
||
6321 | sub edi, byte 8 |
||
6322 | js near noMoreExec |
||
6323 | mov dl, byte [esi] ; Get our next instruction |
||
6324 | inc esi ; Increment PC |
||
6325 | jmp dword [z80regular+edx*4] |
||
6326 | |||
6327 | |||
6328 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6329 | |||
6330 | CBInstdb: |
||
6331 | mov dx, [_z80de] ; Move DE into something half usable |
||
6332 | or dl, 008h ; Set a bit |
||
6333 | mov [_z80de], dx ; Once modified, put it back |
||
6334 | xor edx, edx |
||
6335 | sub edi, byte 8 |
||
6336 | js near noMoreExec |
||
6337 | mov dl, byte [esi] ; Get our next instruction |
||
6338 | inc esi ; Increment PC |
||
6339 | jmp dword [z80regular+edx*4] |
||
6340 | |||
6341 | |||
6342 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6343 | |||
6344 | CBInstdc: |
||
6345 | or bh, 008h ; Set a bit |
||
6346 | sub edi, byte 8 |
||
6347 | js near noMoreExec |
||
6348 | mov dl, byte [esi] ; Get our next instruction |
||
6349 | inc esi ; Increment PC |
||
6350 | jmp dword [z80regular+edx*4] |
||
6351 | |||
6352 | |||
6353 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6354 | |||
6355 | CBInstdd: |
||
6356 | or bl, 008h ; Set a bit |
||
6357 | sub edi, byte 8 |
||
6358 | js near noMoreExec |
||
6359 | mov dl, byte [esi] ; Get our next instruction |
||
6360 | inc esi ; Increment PC |
||
6361 | jmp dword [z80regular+edx*4] |
||
6362 | |||
6363 | |||
6364 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6365 | |||
6366 | CBInstde: |
||
6367 | mov [cyclesRemaining], edi |
||
6368 | mov edi, [_z80MemRead] ; Point to the read array |
||
6369 | |||
6370 | checkLoop46: |
||
6371 | cmp [edi], word 0ffffh ; End of the list? |
||
6372 | je memoryRead46 |
||
6373 | cmp ebx, [edi] ; Are we smaller? |
||
6374 | jb nextAddr46 ; Yes, go to the next address |
||
6375 | cmp ebx, [edi+4] ; Are we bigger? |
||
6376 | jbe callRoutine46 |
||
6377 | |||
6378 | nextAddr46: |
||
6379 | add edi, 10h ; Next structure! |
||
6380 | jmp short checkLoop46 |
||
6381 | |||
6382 | callRoutine46: |
||
6383 | mov dx, bx ; Get our address |
||
6384 | call ReadMemoryByte ; Standard read routine |
||
6385 | mov dl, al ; Put our returned value here |
||
6386 | mov ax, [_z80af] ; Get our AF back |
||
6387 | jmp short readExit46 |
||
6388 | |||
6389 | memoryRead46: |
||
6390 | mov dl, [ebp + ebx] ; Get our data |
||
6391 | |||
6392 | readExit46: |
||
6393 | mov edi, [cyclesRemaining] |
||
6394 | or dl, 008h ; Set a bit |
||
6395 | mov [cyclesRemaining], edi |
||
6396 | mov [_z80af], ax ; Store AF |
||
6397 | mov al, dl ; And our data to write |
||
6398 | mov edi, [_z80MemWrite] ; Point to the write array |
||
6399 | |||
6400 | checkLoop47: |
||
6401 | cmp [edi], word 0ffffh ; End of our list? |
||
6402 | je memoryWrite47 ; Yes - go write it! |
||
6403 | cmp bx, [edi] ; Are we smaller? |
||
6404 | jb nextAddr47 ; Yes... go to the next addr |
||
6405 | cmp bx, [edi+4] ; Are we smaller? |
||
6406 | jbe callRoutine47 ; If not, go call it! |
||
6407 | |||
6408 | nextAddr47: |
||
6409 | add edi, 10h ; Next structure, please |
||
6410 | jmp short checkLoop47 |
||
6411 | |||
6412 | callRoutine47: |
||
6413 | mov dx, bx ; Get our address to target |
||
6414 | call WriteMemoryByte ; Go write the data! |
||
6415 | jmp short WriteMacroExit47 |
||
6416 | memoryWrite47: |
||
6417 | mov [ebp + ebx], dl |
||
6418 | mov ax, [_z80af] ; Get our accumulator and flags |
||
6419 | WriteMacroExit47: |
||
6420 | mov edi, [cyclesRemaining] |
||
6421 | xor edx, edx |
||
6422 | sub edi, byte 15 |
||
6423 | js near noMoreExec |
||
6424 | mov dl, byte [esi] ; Get our next instruction |
||
6425 | inc esi ; Increment PC |
||
6426 | jmp dword [z80regular+edx*4] |
||
6427 | |||
6428 | |||
6429 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6430 | |||
6431 | CBInstdf: |
||
6432 | or al, 008h ; Set a bit |
||
6433 | sub edi, byte 8 |
||
6434 | js near noMoreExec |
||
6435 | mov dl, byte [esi] ; Get our next instruction |
||
6436 | inc esi ; Increment PC |
||
6437 | jmp dword [z80regular+edx*4] |
||
6438 | |||
6439 | |||
6440 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6441 | |||
6442 | CBInste0: |
||
6443 | or ch, 010h ; Set a bit |
||
6444 | sub edi, byte 8 |
||
6445 | js near noMoreExec |
||
6446 | mov dl, byte [esi] ; Get our next instruction |
||
6447 | inc esi ; Increment PC |
||
6448 | jmp dword [z80regular+edx*4] |
||
6449 | |||
6450 | |||
6451 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6452 | |||
6453 | CBInste1: |
||
6454 | or cl, 010h ; Set a bit |
||
6455 | sub edi, byte 8 |
||
6456 | js near noMoreExec |
||
6457 | mov dl, byte [esi] ; Get our next instruction |
||
6458 | inc esi ; Increment PC |
||
6459 | jmp dword [z80regular+edx*4] |
||
6460 | |||
6461 | |||
6462 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6463 | |||
6464 | CBInste2: |
||
6465 | mov dx, [_z80de] ; Move DE into something half usable |
||
6466 | or dh, 010h ; Set a bit |
||
6467 | mov [_z80de], dx ; Once modified, put it back |
||
6468 | xor edx, edx |
||
6469 | sub edi, byte 8 |
||
6470 | js near noMoreExec |
||
6471 | mov dl, byte [esi] ; Get our next instruction |
||
6472 | inc esi ; Increment PC |
||
6473 | jmp dword [z80regular+edx*4] |
||
6474 | |||
6475 | |||
6476 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6477 | |||
6478 | CBInste3: |
||
6479 | mov dx, [_z80de] ; Move DE into something half usable |
||
6480 | or dl, 010h ; Set a bit |
||
6481 | mov [_z80de], dx ; Once modified, put it back |
||
6482 | xor edx, edx |
||
6483 | sub edi, byte 8 |
||
6484 | js near noMoreExec |
||
6485 | mov dl, byte [esi] ; Get our next instruction |
||
6486 | inc esi ; Increment PC |
||
6487 | jmp dword [z80regular+edx*4] |
||
6488 | |||
6489 | |||
6490 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6491 | |||
6492 | CBInste4: |
||
6493 | or bh, 010h ; Set a bit |
||
6494 | sub edi, byte 8 |
||
6495 | js near noMoreExec |
||
6496 | mov dl, byte [esi] ; Get our next instruction |
||
6497 | inc esi ; Increment PC |
||
6498 | jmp dword [z80regular+edx*4] |
||
6499 | |||
6500 | |||
6501 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6502 | |||
6503 | CBInste5: |
||
6504 | or bl, 010h ; Set a bit |
||
6505 | sub edi, byte 8 |
||
6506 | js near noMoreExec |
||
6507 | mov dl, byte [esi] ; Get our next instruction |
||
6508 | inc esi ; Increment PC |
||
6509 | jmp dword [z80regular+edx*4] |
||
6510 | |||
6511 | |||
6512 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6513 | |||
6514 | CBInste6: |
||
6515 | mov [cyclesRemaining], edi |
||
6516 | mov edi, [_z80MemRead] ; Point to the read array |
||
6517 | |||
6518 | checkLoop48: |
||
6519 | cmp [edi], word 0ffffh ; End of the list? |
||
6520 | je memoryRead48 |
||
6521 | cmp ebx, [edi] ; Are we smaller? |
||
6522 | jb nextAddr48 ; Yes, go to the next address |
||
6523 | cmp ebx, [edi+4] ; Are we bigger? |
||
6524 | jbe callRoutine48 |
||
6525 | |||
6526 | nextAddr48: |
||
6527 | add edi, 10h ; Next structure! |
||
6528 | jmp short checkLoop48 |
||
6529 | |||
6530 | callRoutine48: |
||
6531 | mov dx, bx ; Get our address |
||
6532 | call ReadMemoryByte ; Standard read routine |
||
6533 | mov dl, al ; Put our returned value here |
||
6534 | mov ax, [_z80af] ; Get our AF back |
||
6535 | jmp short readExit48 |
||
6536 | |||
6537 | memoryRead48: |
||
6538 | mov dl, [ebp + ebx] ; Get our data |
||
6539 | |||
6540 | readExit48: |
||
6541 | mov edi, [cyclesRemaining] |
||
6542 | or dl, 010h ; Set a bit |
||
6543 | mov [cyclesRemaining], edi |
||
6544 | mov [_z80af], ax ; Store AF |
||
6545 | mov al, dl ; And our data to write |
||
6546 | mov edi, [_z80MemWrite] ; Point to the write array |
||
6547 | |||
6548 | checkLoop49: |
||
6549 | cmp [edi], word 0ffffh ; End of our list? |
||
6550 | je memoryWrite49 ; Yes - go write it! |
||
6551 | cmp bx, [edi] ; Are we smaller? |
||
6552 | jb nextAddr49 ; Yes... go to the next addr |
||
6553 | cmp bx, [edi+4] ; Are we smaller? |
||
6554 | jbe callRoutine49 ; If not, go call it! |
||
6555 | |||
6556 | nextAddr49: |
||
6557 | add edi, 10h ; Next structure, please |
||
6558 | jmp short checkLoop49 |
||
6559 | |||
6560 | callRoutine49: |
||
6561 | mov dx, bx ; Get our address to target |
||
6562 | call WriteMemoryByte ; Go write the data! |
||
6563 | jmp short WriteMacroExit49 |
||
6564 | memoryWrite49: |
||
6565 | mov [ebp + ebx], dl |
||
6566 | mov ax, [_z80af] ; Get our accumulator and flags |
||
6567 | WriteMacroExit49: |
||
6568 | mov edi, [cyclesRemaining] |
||
6569 | xor edx, edx |
||
6570 | sub edi, byte 15 |
||
6571 | js near noMoreExec |
||
6572 | mov dl, byte [esi] ; Get our next instruction |
||
6573 | inc esi ; Increment PC |
||
6574 | jmp dword [z80regular+edx*4] |
||
6575 | |||
6576 | |||
6577 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6578 | |||
6579 | CBInste7: |
||
6580 | or al, 010h ; Set a bit |
||
6581 | sub edi, byte 8 |
||
6582 | js near noMoreExec |
||
6583 | mov dl, byte [esi] ; Get our next instruction |
||
6584 | inc esi ; Increment PC |
||
6585 | jmp dword [z80regular+edx*4] |
||
6586 | |||
6587 | |||
6588 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6589 | |||
6590 | CBInste8: |
||
6591 | or ch, 020h ; Set a bit |
||
6592 | sub edi, byte 8 |
||
6593 | js near noMoreExec |
||
6594 | mov dl, byte [esi] ; Get our next instruction |
||
6595 | inc esi ; Increment PC |
||
6596 | jmp dword [z80regular+edx*4] |
||
6597 | |||
6598 | |||
6599 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6600 | |||
6601 | CBInste9: |
||
6602 | or cl, 020h ; Set a bit |
||
6603 | sub edi, byte 8 |
||
6604 | js near noMoreExec |
||
6605 | mov dl, byte [esi] ; Get our next instruction |
||
6606 | inc esi ; Increment PC |
||
6607 | jmp dword [z80regular+edx*4] |
||
6608 | |||
6609 | |||
6610 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6611 | |||
6612 | CBInstea: |
||
6613 | mov dx, [_z80de] ; Move DE into something half usable |
||
6614 | or dh, 020h ; Set a bit |
||
6615 | mov [_z80de], dx ; Once modified, put it back |
||
6616 | xor edx, edx |
||
6617 | sub edi, byte 8 |
||
6618 | js near noMoreExec |
||
6619 | mov dl, byte [esi] ; Get our next instruction |
||
6620 | inc esi ; Increment PC |
||
6621 | jmp dword [z80regular+edx*4] |
||
6622 | |||
6623 | |||
6624 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6625 | |||
6626 | CBInsteb: |
||
6627 | mov dx, [_z80de] ; Move DE into something half usable |
||
6628 | or dl, 020h ; Set a bit |
||
6629 | mov [_z80de], dx ; Once modified, put it back |
||
6630 | xor edx, edx |
||
6631 | sub edi, byte 8 |
||
6632 | js near noMoreExec |
||
6633 | mov dl, byte [esi] ; Get our next instruction |
||
6634 | inc esi ; Increment PC |
||
6635 | jmp dword [z80regular+edx*4] |
||
6636 | |||
6637 | |||
6638 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6639 | |||
6640 | CBInstec: |
||
6641 | or bh, 020h ; Set a bit |
||
6642 | sub edi, byte 8 |
||
6643 | js near noMoreExec |
||
6644 | mov dl, byte [esi] ; Get our next instruction |
||
6645 | inc esi ; Increment PC |
||
6646 | jmp dword [z80regular+edx*4] |
||
6647 | |||
6648 | |||
6649 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6650 | |||
6651 | CBInsted: |
||
6652 | or bl, 020h ; Set a bit |
||
6653 | sub edi, byte 8 |
||
6654 | js near noMoreExec |
||
6655 | mov dl, byte [esi] ; Get our next instruction |
||
6656 | inc esi ; Increment PC |
||
6657 | jmp dword [z80regular+edx*4] |
||
6658 | |||
6659 | |||
6660 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6661 | |||
6662 | CBInstee: |
||
6663 | mov [cyclesRemaining], edi |
||
6664 | mov edi, [_z80MemRead] ; Point to the read array |
||
6665 | |||
6666 | checkLoop50: |
||
6667 | cmp [edi], word 0ffffh ; End of the list? |
||
6668 | je memoryRead50 |
||
6669 | cmp ebx, [edi] ; Are we smaller? |
||
6670 | jb nextAddr50 ; Yes, go to the next address |
||
6671 | cmp ebx, [edi+4] ; Are we bigger? |
||
6672 | jbe callRoutine50 |
||
6673 | |||
6674 | nextAddr50: |
||
6675 | add edi, 10h ; Next structure! |
||
6676 | jmp short checkLoop50 |
||
6677 | |||
6678 | callRoutine50: |
||
6679 | mov dx, bx ; Get our address |
||
6680 | call ReadMemoryByte ; Standard read routine |
||
6681 | mov dl, al ; Put our returned value here |
||
6682 | mov ax, [_z80af] ; Get our AF back |
||
6683 | jmp short readExit50 |
||
6684 | |||
6685 | memoryRead50: |
||
6686 | mov dl, [ebp + ebx] ; Get our data |
||
6687 | |||
6688 | readExit50: |
||
6689 | mov edi, [cyclesRemaining] |
||
6690 | or dl, 020h ; Set a bit |
||
6691 | mov [cyclesRemaining], edi |
||
6692 | mov [_z80af], ax ; Store AF |
||
6693 | mov al, dl ; And our data to write |
||
6694 | mov edi, [_z80MemWrite] ; Point to the write array |
||
6695 | |||
6696 | checkLoop51: |
||
6697 | cmp [edi], word 0ffffh ; End of our list? |
||
6698 | je memoryWrite51 ; Yes - go write it! |
||
6699 | cmp bx, [edi] ; Are we smaller? |
||
6700 | jb nextAddr51 ; Yes... go to the next addr |
||
6701 | cmp bx, [edi+4] ; Are we smaller? |
||
6702 | jbe callRoutine51 ; If not, go call it! |
||
6703 | |||
6704 | nextAddr51: |
||
6705 | add edi, 10h ; Next structure, please |
||
6706 | jmp short checkLoop51 |
||
6707 | |||
6708 | callRoutine51: |
||
6709 | mov dx, bx ; Get our address to target |
||
6710 | call WriteMemoryByte ; Go write the data! |
||
6711 | jmp short WriteMacroExit51 |
||
6712 | memoryWrite51: |
||
6713 | mov [ebp + ebx], dl |
||
6714 | mov ax, [_z80af] ; Get our accumulator and flags |
||
6715 | WriteMacroExit51: |
||
6716 | mov edi, [cyclesRemaining] |
||
6717 | xor edx, edx |
||
6718 | sub edi, byte 15 |
||
6719 | js near noMoreExec |
||
6720 | mov dl, byte [esi] ; Get our next instruction |
||
6721 | inc esi ; Increment PC |
||
6722 | jmp dword [z80regular+edx*4] |
||
6723 | |||
6724 | |||
6725 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6726 | |||
6727 | CBInstef: |
||
6728 | or al, 020h ; Set a bit |
||
6729 | sub edi, byte 8 |
||
6730 | js near noMoreExec |
||
6731 | mov dl, byte [esi] ; Get our next instruction |
||
6732 | inc esi ; Increment PC |
||
6733 | jmp dword [z80regular+edx*4] |
||
6734 | |||
6735 | |||
6736 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6737 | |||
6738 | CBInstf0: |
||
6739 | or ch, 040h ; Set a bit |
||
6740 | sub edi, byte 8 |
||
6741 | js near noMoreExec |
||
6742 | mov dl, byte [esi] ; Get our next instruction |
||
6743 | inc esi ; Increment PC |
||
6744 | jmp dword [z80regular+edx*4] |
||
6745 | |||
6746 | |||
6747 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6748 | |||
6749 | CBInstf1: |
||
6750 | or cl, 040h ; Set a bit |
||
6751 | sub edi, byte 8 |
||
6752 | js near noMoreExec |
||
6753 | mov dl, byte [esi] ; Get our next instruction |
||
6754 | inc esi ; Increment PC |
||
6755 | jmp dword [z80regular+edx*4] |
||
6756 | |||
6757 | |||
6758 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6759 | |||
6760 | CBInstf2: |
||
6761 | mov dx, [_z80de] ; Move DE into something half usable |
||
6762 | or dh, 040h ; Set a bit |
||
6763 | mov [_z80de], dx ; Once modified, put it back |
||
6764 | xor edx, edx |
||
6765 | sub edi, byte 8 |
||
6766 | js near noMoreExec |
||
6767 | mov dl, byte [esi] ; Get our next instruction |
||
6768 | inc esi ; Increment PC |
||
6769 | jmp dword [z80regular+edx*4] |
||
6770 | |||
6771 | |||
6772 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6773 | |||
6774 | CBInstf3: |
||
6775 | mov dx, [_z80de] ; Move DE into something half usable |
||
6776 | or dl, 040h ; Set a bit |
||
6777 | mov [_z80de], dx ; Once modified, put it back |
||
6778 | xor edx, edx |
||
6779 | sub edi, byte 8 |
||
6780 | js near noMoreExec |
||
6781 | mov dl, byte [esi] ; Get our next instruction |
||
6782 | inc esi ; Increment PC |
||
6783 | jmp dword [z80regular+edx*4] |
||
6784 | |||
6785 | |||
6786 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6787 | |||
6788 | CBInstf4: |
||
6789 | or bh, 040h ; Set a bit |
||
6790 | sub edi, byte 8 |
||
6791 | js near noMoreExec |
||
6792 | mov dl, byte [esi] ; Get our next instruction |
||
6793 | inc esi ; Increment PC |
||
6794 | jmp dword [z80regular+edx*4] |
||
6795 | |||
6796 | |||
6797 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6798 | |||
6799 | CBInstf5: |
||
6800 | or bl, 040h ; Set a bit |
||
6801 | sub edi, byte 8 |
||
6802 | js near noMoreExec |
||
6803 | mov dl, byte [esi] ; Get our next instruction |
||
6804 | inc esi ; Increment PC |
||
6805 | jmp dword [z80regular+edx*4] |
||
6806 | |||
6807 | |||
6808 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6809 | |||
6810 | CBInstf6: |
||
6811 | mov [cyclesRemaining], edi |
||
6812 | mov edi, [_z80MemRead] ; Point to the read array |
||
6813 | |||
6814 | checkLoop52: |
||
6815 | cmp [edi], word 0ffffh ; End of the list? |
||
6816 | je memoryRead52 |
||
6817 | cmp ebx, [edi] ; Are we smaller? |
||
6818 | jb nextAddr52 ; Yes, go to the next address |
||
6819 | cmp ebx, [edi+4] ; Are we bigger? |
||
6820 | jbe callRoutine52 |
||
6821 | |||
6822 | nextAddr52: |
||
6823 | add edi, 10h ; Next structure! |
||
6824 | jmp short checkLoop52 |
||
6825 | |||
6826 | callRoutine52: |
||
6827 | mov dx, bx ; Get our address |
||
6828 | call ReadMemoryByte ; Standard read routine |
||
6829 | mov dl, al ; Put our returned value here |
||
6830 | mov ax, [_z80af] ; Get our AF back |
||
6831 | jmp short readExit52 |
||
6832 | |||
6833 | memoryRead52: |
||
6834 | mov dl, [ebp + ebx] ; Get our data |
||
6835 | |||
6836 | readExit52: |
||
6837 | mov edi, [cyclesRemaining] |
||
6838 | or dl, 040h ; Set a bit |
||
6839 | mov [cyclesRemaining], edi |
||
6840 | mov [_z80af], ax ; Store AF |
||
6841 | mov al, dl ; And our data to write |
||
6842 | mov edi, [_z80MemWrite] ; Point to the write array |
||
6843 | |||
6844 | checkLoop53: |
||
6845 | cmp [edi], word 0ffffh ; End of our list? |
||
6846 | je memoryWrite53 ; Yes - go write it! |
||
6847 | cmp bx, [edi] ; Are we smaller? |
||
6848 | jb nextAddr53 ; Yes... go to the next addr |
||
6849 | cmp bx, [edi+4] ; Are we smaller? |
||
6850 | jbe callRoutine53 ; If not, go call it! |
||
6851 | |||
6852 | nextAddr53: |
||
6853 | add edi, 10h ; Next structure, please |
||
6854 | jmp short checkLoop53 |
||
6855 | |||
6856 | callRoutine53: |
||
6857 | mov dx, bx ; Get our address to target |
||
6858 | call WriteMemoryByte ; Go write the data! |
||
6859 | jmp short WriteMacroExit53 |
||
6860 | memoryWrite53: |
||
6861 | mov [ebp + ebx], dl |
||
6862 | mov ax, [_z80af] ; Get our accumulator and flags |
||
6863 | WriteMacroExit53: |
||
6864 | mov edi, [cyclesRemaining] |
||
6865 | xor edx, edx |
||
6866 | sub edi, byte 15 |
||
6867 | js near noMoreExec |
||
6868 | mov dl, byte [esi] ; Get our next instruction |
||
6869 | inc esi ; Increment PC |
||
6870 | jmp dword [z80regular+edx*4] |
||
6871 | |||
6872 | |||
6873 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6874 | |||
6875 | CBInstf7: |
||
6876 | or al, 040h ; Set a bit |
||
6877 | sub edi, byte 8 |
||
6878 | js near noMoreExec |
||
6879 | mov dl, byte [esi] ; Get our next instruction |
||
6880 | inc esi ; Increment PC |
||
6881 | jmp dword [z80regular+edx*4] |
||
6882 | |||
6883 | |||
6884 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6885 | |||
6886 | CBInstf8: |
||
6887 | or ch, 080h ; Set a bit |
||
6888 | sub edi, byte 8 |
||
6889 | js near noMoreExec |
||
6890 | mov dl, byte [esi] ; Get our next instruction |
||
6891 | inc esi ; Increment PC |
||
6892 | jmp dword [z80regular+edx*4] |
||
6893 | |||
6894 | |||
6895 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6896 | |||
6897 | CBInstf9: |
||
6898 | or cl, 080h ; Set a bit |
||
6899 | sub edi, byte 8 |
||
6900 | js near noMoreExec |
||
6901 | mov dl, byte [esi] ; Get our next instruction |
||
6902 | inc esi ; Increment PC |
||
6903 | jmp dword [z80regular+edx*4] |
||
6904 | |||
6905 | |||
6906 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6907 | |||
6908 | CBInstfa: |
||
6909 | mov dx, [_z80de] ; Move DE into something half usable |
||
6910 | or dh, 080h ; Set a bit |
||
6911 | mov [_z80de], dx ; Once modified, put it back |
||
6912 | xor edx, edx |
||
6913 | sub edi, byte 8 |
||
6914 | js near noMoreExec |
||
6915 | mov dl, byte [esi] ; Get our next instruction |
||
6916 | inc esi ; Increment PC |
||
6917 | jmp dword [z80regular+edx*4] |
||
6918 | |||
6919 | |||
6920 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6921 | |||
6922 | CBInstfb: |
||
6923 | mov dx, [_z80de] ; Move DE into something half usable |
||
6924 | or dl, 080h ; Set a bit |
||
6925 | mov [_z80de], dx ; Once modified, put it back |
||
6926 | xor edx, edx |
||
6927 | sub edi, byte 8 |
||
6928 | js near noMoreExec |
||
6929 | mov dl, byte [esi] ; Get our next instruction |
||
6930 | inc esi ; Increment PC |
||
6931 | jmp dword [z80regular+edx*4] |
||
6932 | |||
6933 | |||
6934 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6935 | |||
6936 | CBInstfc: |
||
6937 | or bh, 080h ; Set a bit |
||
6938 | sub edi, byte 8 |
||
6939 | js near noMoreExec |
||
6940 | mov dl, byte [esi] ; Get our next instruction |
||
6941 | inc esi ; Increment PC |
||
6942 | jmp dword [z80regular+edx*4] |
||
6943 | |||
6944 | |||
6945 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6946 | |||
6947 | CBInstfd: |
||
6948 | or bl, 080h ; Set a bit |
||
6949 | sub edi, byte 8 |
||
6950 | js near noMoreExec |
||
6951 | mov dl, byte [esi] ; Get our next instruction |
||
6952 | inc esi ; Increment PC |
||
6953 | jmp dword [z80regular+edx*4] |
||
6954 | |||
6955 | |||
6956 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
6957 | |||
6958 | CBInstfe: |
||
6959 | mov [cyclesRemaining], edi |
||
6960 | mov edi, [_z80MemRead] ; Point to the read array |
||
6961 | |||
6962 | checkLoop54: |
||
6963 | cmp [edi], word 0ffffh ; End of the list? |
||
6964 | je memoryRead54 |
||
6965 | cmp ebx, [edi] ; Are we smaller? |
||
6966 | jb nextAddr54 ; Yes, go to the next address |
||
6967 | cmp ebx, [edi+4] ; Are we bigger? |
||
6968 | jbe callRoutine54 |
||
6969 | |||
6970 | nextAddr54: |
||
6971 | add edi, 10h ; Next structure! |
||
6972 | jmp short checkLoop54 |
||
6973 | |||
6974 | callRoutine54: |
||
6975 | mov dx, bx ; Get our address |
||
6976 | call ReadMemoryByte ; Standard read routine |
||
6977 | mov dl, al ; Put our returned value here |
||
6978 | mov ax, [_z80af] ; Get our AF back |
||
6979 | jmp short readExit54 |
||
6980 | |||
6981 | memoryRead54: |
||
6982 | mov dl, [ebp + ebx] ; Get our data |
||
6983 | |||
6984 | readExit54: |
||
6985 | mov edi, [cyclesRemaining] |
||
6986 | or dl, 080h ; Set a bit |
||
6987 | mov [cyclesRemaining], edi |
||
6988 | mov [_z80af], ax ; Store AF |
||
6989 | mov al, dl ; And our data to write |
||
6990 | mov edi, [_z80MemWrite] ; Point to the write array |
||
6991 | |||
6992 | checkLoop55: |
||
6993 | cmp [edi], word 0ffffh ; End of our list? |
||
6994 | je memoryWrite55 ; Yes - go write it! |
||
6995 | cmp bx, [edi] ; Are we smaller? |
||
6996 | jb nextAddr55 ; Yes... go to the next addr |
||
6997 | cmp bx, [edi+4] ; Are we smaller? |
||
6998 | jbe callRoutine55 ; If not, go call it! |
||
6999 | |||
7000 | nextAddr55: |
||
7001 | add edi, 10h ; Next structure, please |
||
7002 | jmp short checkLoop55 |
||
7003 | |||
7004 | callRoutine55: |
||
7005 | mov dx, bx ; Get our address to target |
||
7006 | call WriteMemoryByte ; Go write the data! |
||
7007 | jmp short WriteMacroExit55 |
||
7008 | memoryWrite55: |
||
7009 | mov [ebp + ebx], dl |
||
7010 | mov ax, [_z80af] ; Get our accumulator and flags |
||
7011 | WriteMacroExit55: |
||
7012 | mov edi, [cyclesRemaining] |
||
7013 | xor edx, edx |
||
7014 | sub edi, byte 15 |
||
7015 | js near noMoreExec |
||
7016 | mov dl, byte [esi] ; Get our next instruction |
||
7017 | inc esi ; Increment PC |
||
7018 | jmp dword [z80regular+edx*4] |
||
7019 | |||
7020 | |||
7021 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7022 | |||
7023 | CBInstff: |
||
7024 | or al, 080h ; Set a bit |
||
7025 | sub edi, byte 8 |
||
7026 | js near noMoreExec |
||
7027 | mov dl, byte [esi] ; Get our next instruction |
||
7028 | inc esi ; Increment PC |
||
7029 | jmp dword [z80regular+edx*4] |
||
7030 | |||
7031 | |||
7032 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7033 | |||
7034 | EDInst40: |
||
7035 | mov dl, cl ; Address in DX... (C) |
||
7036 | mov [cyclesRemaining], edi |
||
7037 | mov edi, [_z80IoRead] ; Point to the read array |
||
7038 | |||
7039 | checkLoop56: |
||
7040 | cmp [edi], word 0ffffh ; End of the list? |
||
7041 | je ioRead56 |
||
7042 | cmp dx, [edi] ; Are we smaller? |
||
7043 | jb nextAddr56 ; Yes, go to the next address |
||
7044 | cmp dx, [edi+2] ; Are we bigger? |
||
7045 | jbe callRoutine56 |
||
7046 | |||
7047 | nextAddr56: |
||
7048 | add edi, 0ch ; Next structure! |
||
7049 | jmp short checkLoop56 |
||
7050 | |||
7051 | callRoutine56: |
||
7052 | call ReadIOByte ; Standard read routine |
||
7053 | mov ch, al ; Put our returned value here |
||
7054 | mov ax, [_z80af] ; Get our AF back |
||
7055 | jmp short readExit56 |
||
7056 | |||
7057 | ioRead56: |
||
7058 | mov ch, 0ffh ; An unreferenced read |
||
7059 | readExit56: |
||
7060 | mov edi, [cyclesRemaining] |
||
7061 | ; |
||
7062 | ; Remember, this variant of the IN instruction modifies the flags |
||
7063 | ; |
||
7064 | |||
7065 | sahf ; Restore our flags |
||
7066 | mov dh, ah ; Save flags for later |
||
7067 | or ch, ch; |
||
7068 | lahf |
||
7069 | and dh, 029h ; Only keep carry and two unused flags |
||
7070 | and ah, 0d4h |
||
7071 | or ah, dh |
||
7072 | xor edx, edx |
||
7073 | sub edi, byte 12 |
||
7074 | js near noMoreExec |
||
7075 | mov dl, byte [esi] ; Get our next instruction |
||
7076 | inc esi ; Increment PC |
||
7077 | jmp dword [z80regular+edx*4] |
||
7078 | |||
7079 | |||
7080 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7081 | |||
7082 | EDInst41: |
||
7083 | mov dl, cl ; Address in DX... (C) |
||
7084 | mov [cyclesRemaining], edi |
||
7085 | mov [_z80af], ax ; Store AF |
||
7086 | mov al, ch ; And our data to write |
||
7087 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
7088 | |||
7089 | checkLoop57: |
||
7090 | cmp [edi], word 0ffffh ; End of our list? |
||
7091 | je WriteMacroExit57 ; Yes - ignore it! |
||
7092 | cmp dx, [edi] ; Are we smaller? |
||
7093 | jb nextAddr57 ; Yes... go to the next addr |
||
7094 | cmp dx, [edi+2] ; Are we bigger? |
||
7095 | jbe callRoutine57 ; If not, go call it! |
||
7096 | |||
7097 | nextAddr57: |
||
7098 | add edi, 0ch ; Next structure, please |
||
7099 | jmp short checkLoop57 |
||
7100 | |||
7101 | callRoutine57: |
||
7102 | call WriteIOByte ; Go write the data! |
||
7103 | WriteMacroExit57: |
||
7104 | mov edi, [cyclesRemaining] |
||
7105 | xor edx, edx |
||
7106 | sub edi, byte 12 |
||
7107 | js near noMoreExec |
||
7108 | mov dl, byte [esi] ; Get our next instruction |
||
7109 | inc esi ; Increment PC |
||
7110 | jmp dword [z80regular+edx*4] |
||
7111 | |||
7112 | |||
7113 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7114 | |||
7115 | EDInst42: |
||
7116 | mov dx, cx ; Get our original register |
||
7117 | mov [_orgval], dx ; Store this for later half carry computation |
||
7118 | mov [_orgval2], bx ; Store this, too |
||
7119 | sahf ; Restore our flags |
||
7120 | sbb bx, dx ; Do the operation! |
||
7121 | lahf ; Get our new flags |
||
7122 | seto dl |
||
7123 | and ah, 0fbh ; Knock out parity/overflow |
||
7124 | shl dl, 2 |
||
7125 | or ah, dl |
||
7126 | and ah, 0edh ; Knock out negative & half carry flags |
||
7127 | or ah, 02h ; Negative! |
||
7128 | mov [_z80hl], bx |
||
7129 | xor bx, [_orgval] |
||
7130 | xor bx, [_orgval2] |
||
7131 | and bh, 10h ; Half carry? |
||
7132 | or ah, bh ; OR It in if so |
||
7133 | mov bx, [_z80hl] |
||
7134 | xor edx, edx ; Make sure we don't hose things |
||
7135 | sub edi, byte 15 |
||
7136 | js near noMoreExec |
||
7137 | mov dl, byte [esi] ; Get our next instruction |
||
7138 | inc esi ; Increment PC |
||
7139 | jmp dword [z80regular+edx*4] |
||
7140 | |||
7141 | |||
7142 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7143 | |||
7144 | EDInst43: |
||
7145 | mov dx, [esi] ; Get our address to write to |
||
7146 | add esi, 2 ; Next address, please... |
||
7147 | mov [cyclesRemaining], edi |
||
7148 | mov [_z80af], ax ; Store AF |
||
7149 | mov al, cl ; And our data to write |
||
7150 | mov edi, [_z80MemWrite] ; Point to the write array |
||
7151 | |||
7152 | checkLoop58: |
||
7153 | cmp [edi], word 0ffffh ; End of our list? |
||
7154 | je memoryWrite58 ; Yes - go write it! |
||
7155 | cmp dx, [edi] ; Are we smaller? |
||
7156 | jb nextAddr58 ; Yes... go to the next addr |
||
7157 | cmp dx, [edi+4] ; Are we smaller? |
||
7158 | jbe callRoutine58 ; If not, go call it! |
||
7159 | |||
7160 | nextAddr58: |
||
7161 | add edi, 10h ; Next structure, please |
||
7162 | jmp short checkLoop58 |
||
7163 | |||
7164 | callRoutine58: |
||
7165 | call WriteMemoryByte ; Go write the data! |
||
7166 | jmp short WriteMacroExit58 |
||
7167 | memoryWrite58: |
||
7168 | mov [ebp + edx], cl |
||
7169 | mov ax, [_z80af] ; Get our accumulator and flags |
||
7170 | WriteMacroExit58: |
||
7171 | mov edi, [cyclesRemaining] |
||
7172 | inc dx |
||
7173 | mov [cyclesRemaining], edi |
||
7174 | mov [_z80af], ax ; Store AF |
||
7175 | mov al, ch ; And our data to write |
||
7176 | mov edi, [_z80MemWrite] ; Point to the write array |
||
7177 | |||
7178 | checkLoop59: |
||
7179 | cmp [edi], word 0ffffh ; End of our list? |
||
7180 | je memoryWrite59 ; Yes - go write it! |
||
7181 | cmp dx, [edi] ; Are we smaller? |
||
7182 | jb nextAddr59 ; Yes... go to the next addr |
||
7183 | cmp dx, [edi+4] ; Are we smaller? |
||
7184 | jbe callRoutine59 ; If not, go call it! |
||
7185 | |||
7186 | nextAddr59: |
||
7187 | add edi, 10h ; Next structure, please |
||
7188 | jmp short checkLoop59 |
||
7189 | |||
7190 | callRoutine59: |
||
7191 | call WriteMemoryByte ; Go write the data! |
||
7192 | jmp short WriteMacroExit59 |
||
7193 | memoryWrite59: |
||
7194 | mov [ebp + edx], ch |
||
7195 | mov ax, [_z80af] ; Get our accumulator and flags |
||
7196 | WriteMacroExit59: |
||
7197 | mov edi, [cyclesRemaining] |
||
7198 | xor edx, edx ; Zero our upper word |
||
7199 | sub edi, byte 20 |
||
7200 | js near noMoreExec |
||
7201 | mov dl, byte [esi] ; Get our next instruction |
||
7202 | inc esi ; Increment PC |
||
7203 | jmp dword [z80regular+edx*4] |
||
7204 | |||
7205 | |||
7206 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7207 | |||
7208 | EDInst44: |
||
7209 | sahf |
||
7210 | sub dh, al |
||
7211 | lahf |
||
7212 | mov al, dh |
||
7213 | seto dl |
||
7214 | and ah, 0fbh ; Knock out parity/overflow |
||
7215 | shl dl, 2 |
||
7216 | or ah, dl |
||
7217 | or ah, 02h |
||
7218 | xor edx, edx |
||
7219 | sub edi, byte 8 |
||
7220 | js near noMoreExec |
||
7221 | mov dl, byte [esi] ; Get our next instruction |
||
7222 | inc esi ; Increment PC |
||
7223 | jmp dword [z80regular+edx*4] |
||
7224 | |||
7225 | |||
7226 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7227 | |||
7228 | EDInst45: |
||
7229 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
7230 | mov si, [edx+ebp] ; Get our return address |
||
7231 | and esi, 0ffffh ; Only within 64K! |
||
7232 | add esi, ebp ; Add in our base address |
||
7233 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
7234 | xor edx, edx |
||
7235 | mov dl, [_z80iff] ; Get interrupt flags |
||
7236 | shr dl, 1 ; Move IFF2->IFF1 |
||
7237 | and [_z80iff], dword (~IFF1) ; Get rid of IFF 1 |
||
7238 | and dl, IFF1 ; Just want the IFF 1 value now |
||
7239 | or dword [_z80iff], edx |
||
7240 | xor edx, edx ; Make sure we don't hose things |
||
7241 | sub edi, byte 14 |
||
7242 | js near noMoreExec |
||
7243 | mov dl, byte [esi] ; Get our next instruction |
||
7244 | inc esi ; Increment PC |
||
7245 | jmp dword [z80regular+edx*4] |
||
7246 | |||
7247 | |||
7248 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7249 | |||
7250 | EDInst46: |
||
7251 | mov dword [_z80interruptMode], 0 ; IM 0 |
||
7252 | sub edi, byte 8 |
||
7253 | js near noMoreExec |
||
7254 | mov dl, byte [esi] ; Get our next instruction |
||
7255 | inc esi ; Increment PC |
||
7256 | jmp dword [z80regular+edx*4] |
||
7257 | |||
7258 | |||
7259 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7260 | |||
7261 | EDInst47: |
||
7262 | mov [_z80i], al |
||
7263 | sub edi, byte 9 |
||
7264 | js near noMoreExec |
||
7265 | mov dl, byte [esi] ; Get our next instruction |
||
7266 | inc esi ; Increment PC |
||
7267 | jmp dword [z80regular+edx*4] |
||
7268 | |||
7269 | |||
7270 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7271 | |||
7272 | EDInst48: |
||
7273 | mov dl, cl ; Address in DX... (C) |
||
7274 | mov [cyclesRemaining], edi |
||
7275 | mov edi, [_z80IoRead] ; Point to the read array |
||
7276 | |||
7277 | checkLoop60: |
||
7278 | cmp [edi], word 0ffffh ; End of the list? |
||
7279 | je ioRead60 |
||
7280 | cmp dx, [edi] ; Are we smaller? |
||
7281 | jb nextAddr60 ; Yes, go to the next address |
||
7282 | cmp dx, [edi+2] ; Are we bigger? |
||
7283 | jbe callRoutine60 |
||
7284 | |||
7285 | nextAddr60: |
||
7286 | add edi, 0ch ; Next structure! |
||
7287 | jmp short checkLoop60 |
||
7288 | |||
7289 | callRoutine60: |
||
7290 | call ReadIOByte ; Standard read routine |
||
7291 | mov cl, al ; Put our returned value here |
||
7292 | mov ax, [_z80af] ; Get our AF back |
||
7293 | jmp short readExit60 |
||
7294 | |||
7295 | ioRead60: |
||
7296 | mov cl, 0ffh ; An unreferenced read |
||
7297 | readExit60: |
||
7298 | mov edi, [cyclesRemaining] |
||
7299 | ; |
||
7300 | ; Remember, this variant of the IN instruction modifies the flags |
||
7301 | ; |
||
7302 | |||
7303 | sahf ; Restore our flags |
||
7304 | mov dh, ah ; Save flags for later |
||
7305 | or cl, cl; |
||
7306 | lahf |
||
7307 | and dh, 029h ; Only keep carry and two unused flags |
||
7308 | and ah, 0d4h |
||
7309 | or ah, dh |
||
7310 | xor edx, edx |
||
7311 | sub edi, byte 12 |
||
7312 | js near noMoreExec |
||
7313 | mov dl, byte [esi] ; Get our next instruction |
||
7314 | inc esi ; Increment PC |
||
7315 | jmp dword [z80regular+edx*4] |
||
7316 | |||
7317 | |||
7318 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7319 | |||
7320 | EDInst49: |
||
7321 | mov dl, cl ; Address in DX... (C) |
||
7322 | mov [cyclesRemaining], edi |
||
7323 | mov [_z80af], ax ; Store AF |
||
7324 | mov al, cl ; And our data to write |
||
7325 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
7326 | |||
7327 | checkLoop61: |
||
7328 | cmp [edi], word 0ffffh ; End of our list? |
||
7329 | je WriteMacroExit61 ; Yes - ignore it! |
||
7330 | cmp dx, [edi] ; Are we smaller? |
||
7331 | jb nextAddr61 ; Yes... go to the next addr |
||
7332 | cmp dx, [edi+2] ; Are we bigger? |
||
7333 | jbe callRoutine61 ; If not, go call it! |
||
7334 | |||
7335 | nextAddr61: |
||
7336 | add edi, 0ch ; Next structure, please |
||
7337 | jmp short checkLoop61 |
||
7338 | |||
7339 | callRoutine61: |
||
7340 | call WriteIOByte ; Go write the data! |
||
7341 | WriteMacroExit61: |
||
7342 | mov edi, [cyclesRemaining] |
||
7343 | xor edx, edx |
||
7344 | sub edi, byte 12 |
||
7345 | js near noMoreExec |
||
7346 | mov dl, byte [esi] ; Get our next instruction |
||
7347 | inc esi ; Increment PC |
||
7348 | jmp dword [z80regular+edx*4] |
||
7349 | |||
7350 | |||
7351 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7352 | |||
7353 | EDInst4a: |
||
7354 | mov dx, cx ; Get our original register |
||
7355 | mov [_orgval], dx ; Store this for later half carry computation |
||
7356 | mov [_orgval2], bx ; Store this, too |
||
7357 | sahf ; Restore our flags |
||
7358 | adc bx, dx ; Do the operation! |
||
7359 | lahf ; Get our new flags |
||
7360 | seto dl |
||
7361 | and ah, 0fbh ; Knock out parity/overflow |
||
7362 | shl dl, 2 |
||
7363 | or ah, dl |
||
7364 | and ah, 0edh ; Knock out negative & half carry flags |
||
7365 | mov [_z80hl], bx |
||
7366 | xor bx, [_orgval] |
||
7367 | xor bx, [_orgval2] |
||
7368 | and bh, 10h ; Half carry? |
||
7369 | or ah, bh ; OR It in if so |
||
7370 | mov bx, [_z80hl] |
||
7371 | xor edx, edx ; Make sure we don't hose things |
||
7372 | sub edi, byte 15 |
||
7373 | js near noMoreExec |
||
7374 | mov dl, byte [esi] ; Get our next instruction |
||
7375 | inc esi ; Increment PC |
||
7376 | jmp dword [z80regular+edx*4] |
||
7377 | |||
7378 | |||
7379 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7380 | |||
7381 | EDInst4b: |
||
7382 | mov dx, [esi] ; Get address to load |
||
7383 | add esi, 2 ; Skip over it so we don't execute it |
||
7384 | mov [cyclesRemaining], edi |
||
7385 | mov edi, [_z80MemRead] ; Point to the read array |
||
7386 | |||
7387 | checkLoop62: |
||
7388 | cmp [edi], word 0ffffh ; End of the list? |
||
7389 | je memoryRead62 |
||
7390 | cmp edx, [edi] ; Are we smaller? |
||
7391 | jb nextAddr62 ; Yes, go to the next address |
||
7392 | cmp edx, [edi+4] ; Are we bigger? |
||
7393 | jbe callRoutine62 |
||
7394 | |||
7395 | nextAddr62: |
||
7396 | add edi, 10h ; Next structure! |
||
7397 | jmp short checkLoop62 |
||
7398 | |||
7399 | callRoutine62: |
||
7400 | call ReadMemoryByte ; Standard read routine |
||
7401 | mov cl, al ; Put our returned value here |
||
7402 | mov ax, [_z80af] ; Get our AF back |
||
7403 | jmp short readExit62 |
||
7404 | |||
7405 | memoryRead62: |
||
7406 | mov cl, [ebp + edx] ; Get our data |
||
7407 | |||
7408 | readExit62: |
||
7409 | mov edi, [cyclesRemaining] |
||
7410 | inc dx |
||
7411 | mov [cyclesRemaining], edi |
||
7412 | mov edi, [_z80MemRead] ; Point to the read array |
||
7413 | |||
7414 | checkLoop63: |
||
7415 | cmp [edi], word 0ffffh ; End of the list? |
||
7416 | je memoryRead63 |
||
7417 | cmp edx, [edi] ; Are we smaller? |
||
7418 | jb nextAddr63 ; Yes, go to the next address |
||
7419 | cmp edx, [edi+4] ; Are we bigger? |
||
7420 | jbe callRoutine63 |
||
7421 | |||
7422 | nextAddr63: |
||
7423 | add edi, 10h ; Next structure! |
||
7424 | jmp short checkLoop63 |
||
7425 | |||
7426 | callRoutine63: |
||
7427 | call ReadMemoryByte ; Standard read routine |
||
7428 | mov ch, al ; Put our returned value here |
||
7429 | mov ax, [_z80af] ; Get our AF back |
||
7430 | jmp short readExit63 |
||
7431 | |||
7432 | memoryRead63: |
||
7433 | mov ch, [ebp + edx] ; Get our data |
||
7434 | |||
7435 | readExit63: |
||
7436 | mov edi, [cyclesRemaining] |
||
7437 | xor edx, edx |
||
7438 | sub edi, byte 20 |
||
7439 | js near noMoreExec |
||
7440 | mov dl, byte [esi] ; Get our next instruction |
||
7441 | inc esi ; Increment PC |
||
7442 | jmp dword [z80regular+edx*4] |
||
7443 | |||
7444 | |||
7445 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7446 | |||
7447 | EDInst4d: |
||
7448 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
7449 | mov si, [edx+ebp] ; Get our return address |
||
7450 | and esi, 0ffffh ; Only within 64K! |
||
7451 | add esi, ebp ; Add in our base address |
||
7452 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
7453 | xor edx, edx ; Make sure we don't hose things |
||
7454 | sub edi, byte 14 |
||
7455 | js near noMoreExec |
||
7456 | mov dl, byte [esi] ; Get our next instruction |
||
7457 | inc esi ; Increment PC |
||
7458 | jmp dword [z80regular+edx*4] |
||
7459 | |||
7460 | |||
7461 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7462 | |||
7463 | EDInst4f: |
||
7464 | mov [_z80r], al |
||
7465 | sub edi, byte 9 |
||
7466 | js near noMoreExec |
||
7467 | mov dl, byte [esi] ; Get our next instruction |
||
7468 | inc esi ; Increment PC |
||
7469 | jmp dword [z80regular+edx*4] |
||
7470 | |||
7471 | |||
7472 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7473 | |||
7474 | EDInst50: |
||
7475 | mov dl, cl ; Address in DX... (C) |
||
7476 | mov [cyclesRemaining], edi |
||
7477 | mov edi, [_z80IoRead] ; Point to the read array |
||
7478 | |||
7479 | checkLoop64: |
||
7480 | cmp [edi], word 0ffffh ; End of the list? |
||
7481 | je ioRead64 |
||
7482 | cmp dx, [edi] ; Are we smaller? |
||
7483 | jb nextAddr64 ; Yes, go to the next address |
||
7484 | cmp dx, [edi+2] ; Are we bigger? |
||
7485 | jbe callRoutine64 |
||
7486 | |||
7487 | nextAddr64: |
||
7488 | add edi, 0ch ; Next structure! |
||
7489 | jmp short checkLoop64 |
||
7490 | |||
7491 | callRoutine64: |
||
7492 | call ReadIOByte ; Standard read routine |
||
7493 | mov byte [_z80de + 1], al ; Put our returned value here |
||
7494 | mov ax, [_z80af] ; Get our AF back |
||
7495 | jmp short readExit64 |
||
7496 | |||
7497 | ioRead64: |
||
7498 | mov byte [_z80de + 1], 0ffh ; An unreferenced read |
||
7499 | readExit64: |
||
7500 | mov edi, [cyclesRemaining] |
||
7501 | ; |
||
7502 | ; Remember, this variant of the IN instruction modifies the flags |
||
7503 | ; |
||
7504 | |||
7505 | sahf ; Restore our flags |
||
7506 | mov dh, ah ; Save flags for later |
||
7507 | mov dl, byte [_z80de + 1] |
||
7508 | or dl, dl |
||
7509 | lahf |
||
7510 | and dh, 029h ; Only keep carry and two unused flags |
||
7511 | and ah, 0d4h |
||
7512 | or ah, dh |
||
7513 | xor edx, edx |
||
7514 | sub edi, byte 12 |
||
7515 | js near noMoreExec |
||
7516 | mov dl, byte [esi] ; Get our next instruction |
||
7517 | inc esi ; Increment PC |
||
7518 | jmp dword [z80regular+edx*4] |
||
7519 | |||
7520 | |||
7521 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7522 | |||
7523 | EDInst51: |
||
7524 | mov dl, cl ; Address in DX... (C) |
||
7525 | mov [cyclesRemaining], edi |
||
7526 | mov [_z80af], ax ; Store AF |
||
7527 | mov al, byte [_z80de + 1] ; And our data to write |
||
7528 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
7529 | |||
7530 | checkLoop65: |
||
7531 | cmp [edi], word 0ffffh ; End of our list? |
||
7532 | je WriteMacroExit65 ; Yes - ignore it! |
||
7533 | cmp dx, [edi] ; Are we smaller? |
||
7534 | jb nextAddr65 ; Yes... go to the next addr |
||
7535 | cmp dx, [edi+2] ; Are we bigger? |
||
7536 | jbe callRoutine65 ; If not, go call it! |
||
7537 | |||
7538 | nextAddr65: |
||
7539 | add edi, 0ch ; Next structure, please |
||
7540 | jmp short checkLoop65 |
||
7541 | |||
7542 | callRoutine65: |
||
7543 | call WriteIOByte ; Go write the data! |
||
7544 | WriteMacroExit65: |
||
7545 | mov edi, [cyclesRemaining] |
||
7546 | xor edx, edx |
||
7547 | sub edi, byte 12 |
||
7548 | js near noMoreExec |
||
7549 | mov dl, byte [esi] ; Get our next instruction |
||
7550 | inc esi ; Increment PC |
||
7551 | jmp dword [z80regular+edx*4] |
||
7552 | |||
7553 | |||
7554 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7555 | |||
7556 | EDInst52: |
||
7557 | mov dx, word [_z80de] ; Get our original register |
||
7558 | mov [_orgval], dx ; Store this for later half carry computation |
||
7559 | mov [_orgval2], bx ; Store this, too |
||
7560 | sahf ; Restore our flags |
||
7561 | sbb bx, dx ; Do the operation! |
||
7562 | lahf ; Get our new flags |
||
7563 | seto dl |
||
7564 | and ah, 0fbh ; Knock out parity/overflow |
||
7565 | shl dl, 2 |
||
7566 | or ah, dl |
||
7567 | and ah, 0edh ; Knock out negative & half carry flags |
||
7568 | or ah, 02h ; Negative! |
||
7569 | mov [_z80hl], bx |
||
7570 | xor bx, [_orgval] |
||
7571 | xor bx, [_orgval2] |
||
7572 | and bh, 10h ; Half carry? |
||
7573 | or ah, bh ; OR It in if so |
||
7574 | mov bx, [_z80hl] |
||
7575 | xor edx, edx ; Make sure we don't hose things |
||
7576 | sub edi, byte 15 |
||
7577 | js near noMoreExec |
||
7578 | mov dl, byte [esi] ; Get our next instruction |
||
7579 | inc esi ; Increment PC |
||
7580 | jmp dword [z80regular+edx*4] |
||
7581 | |||
7582 | |||
7583 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7584 | |||
7585 | EDInst53: |
||
7586 | mov dx, [esi] ; Get our address to write to |
||
7587 | add esi, 2 ; Next address, please... |
||
7588 | mov [cyclesRemaining], edi |
||
7589 | mov [_z80af], ax ; Store AF |
||
7590 | mov al, byte [_z80de] ; And our data to write |
||
7591 | mov edi, [_z80MemWrite] ; Point to the write array |
||
7592 | |||
7593 | checkLoop66: |
||
7594 | cmp [edi], word 0ffffh ; End of our list? |
||
7595 | je memoryWrite66 ; Yes - go write it! |
||
7596 | cmp dx, [edi] ; Are we smaller? |
||
7597 | jb nextAddr66 ; Yes... go to the next addr |
||
7598 | cmp dx, [edi+4] ; Are we smaller? |
||
7599 | jbe callRoutine66 ; If not, go call it! |
||
7600 | |||
7601 | nextAddr66: |
||
7602 | add edi, 10h ; Next structure, please |
||
7603 | jmp short checkLoop66 |
||
7604 | |||
7605 | callRoutine66: |
||
7606 | call WriteMemoryByte ; Go write the data! |
||
7607 | jmp short WriteMacroExit66 |
||
7608 | memoryWrite66: |
||
7609 | mov edi, edx |
||
7610 | mov dl, byte [_z80de] |
||
7611 | mov [ebp + edi], dl |
||
7612 | mov edx, edi |
||
7613 | mov ax, [_z80af] ; Get our accumulator and flags |
||
7614 | WriteMacroExit66: |
||
7615 | mov edi, [cyclesRemaining] |
||
7616 | inc dx |
||
7617 | mov [cyclesRemaining], edi |
||
7618 | mov [_z80af], ax ; Store AF |
||
7619 | mov al, byte [_z80de + 1] ; And our data to write |
||
7620 | mov edi, [_z80MemWrite] ; Point to the write array |
||
7621 | |||
7622 | checkLoop67: |
||
7623 | cmp [edi], word 0ffffh ; End of our list? |
||
7624 | je memoryWrite67 ; Yes - go write it! |
||
7625 | cmp dx, [edi] ; Are we smaller? |
||
7626 | jb nextAddr67 ; Yes... go to the next addr |
||
7627 | cmp dx, [edi+4] ; Are we smaller? |
||
7628 | jbe callRoutine67 ; If not, go call it! |
||
7629 | |||
7630 | nextAddr67: |
||
7631 | add edi, 10h ; Next structure, please |
||
7632 | jmp short checkLoop67 |
||
7633 | |||
7634 | callRoutine67: |
||
7635 | call WriteMemoryByte ; Go write the data! |
||
7636 | jmp short WriteMacroExit67 |
||
7637 | memoryWrite67: |
||
7638 | mov edi, edx |
||
7639 | mov dl, byte [_z80de + 1] |
||
7640 | mov [ebp + edi], dl |
||
7641 | mov edx, edi |
||
7642 | mov ax, [_z80af] ; Get our accumulator and flags |
||
7643 | WriteMacroExit67: |
||
7644 | mov edi, [cyclesRemaining] |
||
7645 | xor edx, edx ; Zero our upper word |
||
7646 | sub edi, byte 20 |
||
7647 | js near noMoreExec |
||
7648 | mov dl, byte [esi] ; Get our next instruction |
||
7649 | inc esi ; Increment PC |
||
7650 | jmp dword [z80regular+edx*4] |
||
7651 | |||
7652 | |||
7653 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7654 | |||
7655 | EDInst56: |
||
7656 | mov dword [_z80interruptMode], 1 ; Interrupt mode 1 |
||
7657 | mov word [_z80intAddr], 038h ; Interrupt mode 1 cmd! |
||
7658 | sub edi, byte 8 |
||
7659 | js near noMoreExec |
||
7660 | mov dl, byte [esi] ; Get our next instruction |
||
7661 | inc esi ; Increment PC |
||
7662 | jmp dword [z80regular+edx*4] |
||
7663 | |||
7664 | |||
7665 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7666 | |||
7667 | EDInst57: |
||
7668 | mov al, [_z80i] |
||
7669 | sub edi, byte 9 |
||
7670 | js near noMoreExec |
||
7671 | mov dl, byte [esi] ; Get our next instruction |
||
7672 | inc esi ; Increment PC |
||
7673 | jmp dword [z80regular+edx*4] |
||
7674 | |||
7675 | |||
7676 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7677 | |||
7678 | EDInst58: |
||
7679 | mov dl, cl ; Address in DX... (C) |
||
7680 | mov [cyclesRemaining], edi |
||
7681 | mov edi, [_z80IoRead] ; Point to the read array |
||
7682 | |||
7683 | checkLoop68: |
||
7684 | cmp [edi], word 0ffffh ; End of the list? |
||
7685 | je ioRead68 |
||
7686 | cmp dx, [edi] ; Are we smaller? |
||
7687 | jb nextAddr68 ; Yes, go to the next address |
||
7688 | cmp dx, [edi+2] ; Are we bigger? |
||
7689 | jbe callRoutine68 |
||
7690 | |||
7691 | nextAddr68: |
||
7692 | add edi, 0ch ; Next structure! |
||
7693 | jmp short checkLoop68 |
||
7694 | |||
7695 | callRoutine68: |
||
7696 | call ReadIOByte ; Standard read routine |
||
7697 | mov byte [_z80de], al ; Put our returned value here |
||
7698 | mov ax, [_z80af] ; Get our AF back |
||
7699 | jmp short readExit68 |
||
7700 | |||
7701 | ioRead68: |
||
7702 | mov byte [_z80de], 0ffh ; An unreferenced read |
||
7703 | readExit68: |
||
7704 | mov edi, [cyclesRemaining] |
||
7705 | ; |
||
7706 | ; Remember, this variant of the IN instruction modifies the flags |
||
7707 | ; |
||
7708 | |||
7709 | sahf ; Restore our flags |
||
7710 | mov dh, ah ; Save flags for later |
||
7711 | mov dl, byte [_z80de] |
||
7712 | or dl, dl |
||
7713 | lahf |
||
7714 | and dh, 029h ; Only keep carry and two unused flags |
||
7715 | and ah, 0d4h |
||
7716 | or ah, dh |
||
7717 | xor edx, edx |
||
7718 | sub edi, byte 12 |
||
7719 | js near noMoreExec |
||
7720 | mov dl, byte [esi] ; Get our next instruction |
||
7721 | inc esi ; Increment PC |
||
7722 | jmp dword [z80regular+edx*4] |
||
7723 | |||
7724 | |||
7725 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7726 | |||
7727 | EDInst59: |
||
7728 | mov dl, cl ; Address in DX... (C) |
||
7729 | mov [cyclesRemaining], edi |
||
7730 | mov [_z80af], ax ; Store AF |
||
7731 | mov al, byte [_z80de] ; And our data to write |
||
7732 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
7733 | |||
7734 | checkLoop69: |
||
7735 | cmp [edi], word 0ffffh ; End of our list? |
||
7736 | je WriteMacroExit69 ; Yes - ignore it! |
||
7737 | cmp dx, [edi] ; Are we smaller? |
||
7738 | jb nextAddr69 ; Yes... go to the next addr |
||
7739 | cmp dx, [edi+2] ; Are we bigger? |
||
7740 | jbe callRoutine69 ; If not, go call it! |
||
7741 | |||
7742 | nextAddr69: |
||
7743 | add edi, 0ch ; Next structure, please |
||
7744 | jmp short checkLoop69 |
||
7745 | |||
7746 | callRoutine69: |
||
7747 | call WriteIOByte ; Go write the data! |
||
7748 | WriteMacroExit69: |
||
7749 | mov edi, [cyclesRemaining] |
||
7750 | xor edx, edx |
||
7751 | sub edi, byte 12 |
||
7752 | js near noMoreExec |
||
7753 | mov dl, byte [esi] ; Get our next instruction |
||
7754 | inc esi ; Increment PC |
||
7755 | jmp dword [z80regular+edx*4] |
||
7756 | |||
7757 | |||
7758 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7759 | |||
7760 | EDInst5a: |
||
7761 | mov dx, word [_z80de] ; Get our original register |
||
7762 | mov [_orgval], dx ; Store this for later half carry computation |
||
7763 | mov [_orgval2], bx ; Store this, too |
||
7764 | sahf ; Restore our flags |
||
7765 | adc bx, dx ; Do the operation! |
||
7766 | lahf ; Get our new flags |
||
7767 | seto dl |
||
7768 | and ah, 0fbh ; Knock out parity/overflow |
||
7769 | shl dl, 2 |
||
7770 | or ah, dl |
||
7771 | and ah, 0edh ; Knock out negative & half carry flags |
||
7772 | mov [_z80hl], bx |
||
7773 | xor bx, [_orgval] |
||
7774 | xor bx, [_orgval2] |
||
7775 | and bh, 10h ; Half carry? |
||
7776 | or ah, bh ; OR It in if so |
||
7777 | mov bx, [_z80hl] |
||
7778 | xor edx, edx ; Make sure we don't hose things |
||
7779 | sub edi, byte 15 |
||
7780 | js near noMoreExec |
||
7781 | mov dl, byte [esi] ; Get our next instruction |
||
7782 | inc esi ; Increment PC |
||
7783 | jmp dword [z80regular+edx*4] |
||
7784 | |||
7785 | |||
7786 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7787 | |||
7788 | EDInst5b: |
||
7789 | mov dx, [esi] ; Get address to load |
||
7790 | add esi, 2 ; Skip over it so we don't execute it |
||
7791 | mov [cyclesRemaining], edi |
||
7792 | mov edi, [_z80MemRead] ; Point to the read array |
||
7793 | |||
7794 | checkLoop70: |
||
7795 | cmp [edi], word 0ffffh ; End of the list? |
||
7796 | je memoryRead70 |
||
7797 | cmp edx, [edi] ; Are we smaller? |
||
7798 | jb nextAddr70 ; Yes, go to the next address |
||
7799 | cmp edx, [edi+4] ; Are we bigger? |
||
7800 | jbe callRoutine70 |
||
7801 | |||
7802 | nextAddr70: |
||
7803 | add edi, 10h ; Next structure! |
||
7804 | jmp short checkLoop70 |
||
7805 | |||
7806 | callRoutine70: |
||
7807 | call ReadMemoryByte ; Standard read routine |
||
7808 | mov byte [_z80de], al ; Put our returned value here |
||
7809 | mov ax, [_z80af] ; Get our AF back |
||
7810 | jmp short readExit70 |
||
7811 | |||
7812 | memoryRead70: |
||
7813 | mov di, dx |
||
7814 | mov dl, [ebp + edx] |
||
7815 | mov byte [_z80de], dl |
||
7816 | mov dx, di |
||
7817 | readExit70: |
||
7818 | mov edi, [cyclesRemaining] |
||
7819 | inc dx |
||
7820 | mov [cyclesRemaining], edi |
||
7821 | mov edi, [_z80MemRead] ; Point to the read array |
||
7822 | |||
7823 | checkLoop71: |
||
7824 | cmp [edi], word 0ffffh ; End of the list? |
||
7825 | je memoryRead71 |
||
7826 | cmp edx, [edi] ; Are we smaller? |
||
7827 | jb nextAddr71 ; Yes, go to the next address |
||
7828 | cmp edx, [edi+4] ; Are we bigger? |
||
7829 | jbe callRoutine71 |
||
7830 | |||
7831 | nextAddr71: |
||
7832 | add edi, 10h ; Next structure! |
||
7833 | jmp short checkLoop71 |
||
7834 | |||
7835 | callRoutine71: |
||
7836 | call ReadMemoryByte ; Standard read routine |
||
7837 | mov byte [_z80de + 1], al ; Put our returned value here |
||
7838 | mov ax, [_z80af] ; Get our AF back |
||
7839 | jmp short readExit71 |
||
7840 | |||
7841 | memoryRead71: |
||
7842 | mov di, dx |
||
7843 | mov dl, [ebp + edx] |
||
7844 | mov byte [_z80de + 1], dl |
||
7845 | mov dx, di |
||
7846 | readExit71: |
||
7847 | mov edi, [cyclesRemaining] |
||
7848 | xor edx, edx |
||
7849 | sub edi, byte 20 |
||
7850 | js near noMoreExec |
||
7851 | mov dl, byte [esi] ; Get our next instruction |
||
7852 | inc esi ; Increment PC |
||
7853 | jmp dword [z80regular+edx*4] |
||
7854 | |||
7855 | |||
7856 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7857 | |||
7858 | EDInst5e: |
||
7859 | mov dword [_z80interruptMode], 2 ; IM 2 |
||
7860 | sub edi, byte 8 |
||
7861 | js near noMoreExec |
||
7862 | mov dl, byte [esi] ; Get our next instruction |
||
7863 | inc esi ; Increment PC |
||
7864 | jmp dword [z80regular+edx*4] |
||
7865 | |||
7866 | |||
7867 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7868 | |||
7869 | EDInst5f: |
||
7870 | mov al, [_z80r] |
||
7871 | and ah, 029h ; No N, H, Z, or S! |
||
7872 | or al,al ; Get appropriate flags |
||
7873 | o16 pushf |
||
7874 | pop dx |
||
7875 | and dl, 0c0h |
||
7876 | or ah, dl ; OR In our S & Z flags |
||
7877 | mov dl, [_z80iff] |
||
7878 | and dl, IFF2 |
||
7879 | shl dl, 1 |
||
7880 | or ah, dl |
||
7881 | mov edx, [dwLastRSample] |
||
7882 | sub edx, edi |
||
7883 | add edx, [_z80rCounter] |
||
7884 | shr edx, 2 |
||
7885 | and edx, 07fh |
||
7886 | and byte [_z80r], 80h |
||
7887 | or byte [_z80r], dl |
||
7888 | xor edx, edx |
||
7889 | mov [dwLastRSample], edi |
||
7890 | sub edi, byte 9 |
||
7891 | js near noMoreExec |
||
7892 | mov dl, byte [esi] ; Get our next instruction |
||
7893 | inc esi ; Increment PC |
||
7894 | jmp dword [z80regular+edx*4] |
||
7895 | |||
7896 | |||
7897 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7898 | |||
7899 | EDInst60: |
||
7900 | mov dl, cl ; Address in DX... (C) |
||
7901 | mov [cyclesRemaining], edi |
||
7902 | mov edi, [_z80IoRead] ; Point to the read array |
||
7903 | |||
7904 | checkLoop72: |
||
7905 | cmp [edi], word 0ffffh ; End of the list? |
||
7906 | je ioRead72 |
||
7907 | cmp dx, [edi] ; Are we smaller? |
||
7908 | jb nextAddr72 ; Yes, go to the next address |
||
7909 | cmp dx, [edi+2] ; Are we bigger? |
||
7910 | jbe callRoutine72 |
||
7911 | |||
7912 | nextAddr72: |
||
7913 | add edi, 0ch ; Next structure! |
||
7914 | jmp short checkLoop72 |
||
7915 | |||
7916 | callRoutine72: |
||
7917 | call ReadIOByte ; Standard read routine |
||
7918 | mov bh, al ; Put our returned value here |
||
7919 | mov ax, [_z80af] ; Get our AF back |
||
7920 | jmp short readExit72 |
||
7921 | |||
7922 | ioRead72: |
||
7923 | mov bh, 0ffh ; An unreferenced read |
||
7924 | readExit72: |
||
7925 | mov edi, [cyclesRemaining] |
||
7926 | ; |
||
7927 | ; Remember, this variant of the IN instruction modifies the flags |
||
7928 | ; |
||
7929 | |||
7930 | sahf ; Restore our flags |
||
7931 | mov dh, ah ; Save flags for later |
||
7932 | or bh, bh; |
||
7933 | lahf |
||
7934 | and dh, 029h ; Only keep carry and two unused flags |
||
7935 | and ah, 0d4h |
||
7936 | or ah, dh |
||
7937 | xor edx, edx |
||
7938 | sub edi, byte 12 |
||
7939 | js near noMoreExec |
||
7940 | mov dl, byte [esi] ; Get our next instruction |
||
7941 | inc esi ; Increment PC |
||
7942 | jmp dword [z80regular+edx*4] |
||
7943 | |||
7944 | |||
7945 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7946 | |||
7947 | EDInst61: |
||
7948 | mov dl, cl ; Address in DX... (C) |
||
7949 | mov [cyclesRemaining], edi |
||
7950 | mov [_z80af], ax ; Store AF |
||
7951 | mov al, bh ; And our data to write |
||
7952 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
7953 | |||
7954 | checkLoop73: |
||
7955 | cmp [edi], word 0ffffh ; End of our list? |
||
7956 | je WriteMacroExit73 ; Yes - ignore it! |
||
7957 | cmp dx, [edi] ; Are we smaller? |
||
7958 | jb nextAddr73 ; Yes... go to the next addr |
||
7959 | cmp dx, [edi+2] ; Are we bigger? |
||
7960 | jbe callRoutine73 ; If not, go call it! |
||
7961 | |||
7962 | nextAddr73: |
||
7963 | add edi, 0ch ; Next structure, please |
||
7964 | jmp short checkLoop73 |
||
7965 | |||
7966 | callRoutine73: |
||
7967 | call WriteIOByte ; Go write the data! |
||
7968 | WriteMacroExit73: |
||
7969 | mov edi, [cyclesRemaining] |
||
7970 | xor edx, edx |
||
7971 | sub edi, byte 12 |
||
7972 | js near noMoreExec |
||
7973 | mov dl, byte [esi] ; Get our next instruction |
||
7974 | inc esi ; Increment PC |
||
7975 | jmp dword [z80regular+edx*4] |
||
7976 | |||
7977 | |||
7978 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
7979 | |||
7980 | EDInst62: |
||
7981 | mov dx, bx ; Get our original register |
||
7982 | mov [_orgval], dx ; Store this for later half carry computation |
||
7983 | mov [_orgval2], bx ; Store this, too |
||
7984 | sahf ; Restore our flags |
||
7985 | sbb bx, dx ; Do the operation! |
||
7986 | lahf ; Get our new flags |
||
7987 | seto dl |
||
7988 | and ah, 0fbh ; Knock out parity/overflow |
||
7989 | shl dl, 2 |
||
7990 | or ah, dl |
||
7991 | and ah, 0edh ; Knock out negative & half carry flags |
||
7992 | or ah, 02h ; Negative! |
||
7993 | mov [_z80hl], bx |
||
7994 | xor bx, [_orgval] |
||
7995 | xor bx, [_orgval2] |
||
7996 | and bh, 10h ; Half carry? |
||
7997 | or ah, bh ; OR It in if so |
||
7998 | mov bx, [_z80hl] |
||
7999 | xor edx, edx ; Make sure we don't hose things |
||
8000 | sub edi, byte 15 |
||
8001 | js near noMoreExec |
||
8002 | mov dl, byte [esi] ; Get our next instruction |
||
8003 | inc esi ; Increment PC |
||
8004 | jmp dword [z80regular+edx*4] |
||
8005 | |||
8006 | |||
8007 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8008 | |||
8009 | EDInst63: |
||
8010 | mov dx, [esi] ; Get our address to write to |
||
8011 | add esi, 2 ; Next address, please... |
||
8012 | mov [cyclesRemaining], edi |
||
8013 | mov [_z80af], ax ; Store AF |
||
8014 | mov al, bl ; And our data to write |
||
8015 | mov edi, [_z80MemWrite] ; Point to the write array |
||
8016 | |||
8017 | checkLoop74: |
||
8018 | cmp [edi], word 0ffffh ; End of our list? |
||
8019 | je memoryWrite74 ; Yes - go write it! |
||
8020 | cmp dx, [edi] ; Are we smaller? |
||
8021 | jb nextAddr74 ; Yes... go to the next addr |
||
8022 | cmp dx, [edi+4] ; Are we smaller? |
||
8023 | jbe callRoutine74 ; If not, go call it! |
||
8024 | |||
8025 | nextAddr74: |
||
8026 | add edi, 10h ; Next structure, please |
||
8027 | jmp short checkLoop74 |
||
8028 | |||
8029 | callRoutine74: |
||
8030 | call WriteMemoryByte ; Go write the data! |
||
8031 | jmp short WriteMacroExit74 |
||
8032 | memoryWrite74: |
||
8033 | mov [ebp + edx], bl |
||
8034 | mov ax, [_z80af] ; Get our accumulator and flags |
||
8035 | WriteMacroExit74: |
||
8036 | mov edi, [cyclesRemaining] |
||
8037 | inc dx |
||
8038 | mov [cyclesRemaining], edi |
||
8039 | mov [_z80af], ax ; Store AF |
||
8040 | mov al, bh ; And our data to write |
||
8041 | mov edi, [_z80MemWrite] ; Point to the write array |
||
8042 | |||
8043 | checkLoop75: |
||
8044 | cmp [edi], word 0ffffh ; End of our list? |
||
8045 | je memoryWrite75 ; Yes - go write it! |
||
8046 | cmp dx, [edi] ; Are we smaller? |
||
8047 | jb nextAddr75 ; Yes... go to the next addr |
||
8048 | cmp dx, [edi+4] ; Are we smaller? |
||
8049 | jbe callRoutine75 ; If not, go call it! |
||
8050 | |||
8051 | nextAddr75: |
||
8052 | add edi, 10h ; Next structure, please |
||
8053 | jmp short checkLoop75 |
||
8054 | |||
8055 | callRoutine75: |
||
8056 | call WriteMemoryByte ; Go write the data! |
||
8057 | jmp short WriteMacroExit75 |
||
8058 | memoryWrite75: |
||
8059 | mov [ebp + edx], bh |
||
8060 | mov ax, [_z80af] ; Get our accumulator and flags |
||
8061 | WriteMacroExit75: |
||
8062 | mov edi, [cyclesRemaining] |
||
8063 | xor edx, edx ; Zero our upper word |
||
8064 | sub edi, byte 20 |
||
8065 | js near noMoreExec |
||
8066 | mov dl, byte [esi] ; Get our next instruction |
||
8067 | inc esi ; Increment PC |
||
8068 | jmp dword [z80regular+edx*4] |
||
8069 | |||
8070 | |||
8071 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8072 | |||
8073 | EDInst67: |
||
8074 | mov [cyclesRemaining], edi |
||
8075 | mov edi, [_z80MemRead] ; Point to the read array |
||
8076 | |||
8077 | checkLoop76: |
||
8078 | cmp [edi], word 0ffffh ; End of the list? |
||
8079 | je memoryRead76 |
||
8080 | cmp ebx, [edi] ; Are we smaller? |
||
8081 | jb nextAddr76 ; Yes, go to the next address |
||
8082 | cmp ebx, [edi+4] ; Are we bigger? |
||
8083 | jbe callRoutine76 |
||
8084 | |||
8085 | nextAddr76: |
||
8086 | add edi, 10h ; Next structure! |
||
8087 | jmp short checkLoop76 |
||
8088 | |||
8089 | callRoutine76: |
||
8090 | mov dx, bx ; Get our address |
||
8091 | call ReadMemoryByte ; Standard read routine |
||
8092 | mov dl, al ; Put our returned value here |
||
8093 | mov ax, [_z80af] ; Get our AF back |
||
8094 | jmp short readExit76 |
||
8095 | |||
8096 | memoryRead76: |
||
8097 | mov dl, [ebp + ebx] ; Get our data |
||
8098 | |||
8099 | readExit76: |
||
8100 | mov edi, [cyclesRemaining] |
||
8101 | mov dh, dl ; Put a copy in DH |
||
8102 | shr dl, 4 ; Upper nibble to lower nibble |
||
8103 | shl ecx, 16 ; Save this |
||
8104 | mov cl, al |
||
8105 | shl cl, 4 |
||
8106 | or dl, cl ; OR In what was in A |
||
8107 | and al, 0f0h ; Knock out lower part |
||
8108 | and dh, 0fh ; Only the lower nibble |
||
8109 | or al, dh ; OR In our nibble |
||
8110 | shr ecx, 16 ; Restore this |
||
8111 | and ah, 29h ; Retain carry & two undefined bits |
||
8112 | mov dh, ah ; Store our flags away for later |
||
8113 | or al, al ; Get our flags |
||
8114 | lahf |
||
8115 | and ah,0c4h ; Only partiy, zero, and sign |
||
8116 | or ah, dh ; OR In our old flags |
||
8117 | mov [cyclesRemaining], edi |
||
8118 | mov [_z80af], ax ; Store AF |
||
8119 | mov al, dl ; And our data to write |
||
8120 | mov edi, [_z80MemWrite] ; Point to the write array |
||
8121 | |||
8122 | checkLoop77: |
||
8123 | cmp [edi], word 0ffffh ; End of our list? |
||
8124 | je memoryWrite77 ; Yes - go write it! |
||
8125 | cmp bx, [edi] ; Are we smaller? |
||
8126 | jb nextAddr77 ; Yes... go to the next addr |
||
8127 | cmp bx, [edi+4] ; Are we smaller? |
||
8128 | jbe callRoutine77 ; If not, go call it! |
||
8129 | |||
8130 | nextAddr77: |
||
8131 | add edi, 10h ; Next structure, please |
||
8132 | jmp short checkLoop77 |
||
8133 | |||
8134 | callRoutine77: |
||
8135 | mov dx, bx ; Get our address to target |
||
8136 | call WriteMemoryByte ; Go write the data! |
||
8137 | jmp short WriteMacroExit77 |
||
8138 | memoryWrite77: |
||
8139 | mov [ebp + ebx], dl |
||
8140 | mov ax, [_z80af] ; Get our accumulator and flags |
||
8141 | WriteMacroExit77: |
||
8142 | mov edi, [cyclesRemaining] |
||
8143 | xor edx, edx ; Zero out this for later |
||
8144 | sub edi, byte 18 |
||
8145 | js near noMoreExec |
||
8146 | mov dl, byte [esi] ; Get our next instruction |
||
8147 | inc esi ; Increment PC |
||
8148 | jmp dword [z80regular+edx*4] |
||
8149 | |||
8150 | |||
8151 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8152 | |||
8153 | EDInst68: |
||
8154 | mov dl, cl ; Address in DX... (C) |
||
8155 | mov [cyclesRemaining], edi |
||
8156 | mov edi, [_z80IoRead] ; Point to the read array |
||
8157 | |||
8158 | checkLoop78: |
||
8159 | cmp [edi], word 0ffffh ; End of the list? |
||
8160 | je ioRead78 |
||
8161 | cmp dx, [edi] ; Are we smaller? |
||
8162 | jb nextAddr78 ; Yes, go to the next address |
||
8163 | cmp dx, [edi+2] ; Are we bigger? |
||
8164 | jbe callRoutine78 |
||
8165 | |||
8166 | nextAddr78: |
||
8167 | add edi, 0ch ; Next structure! |
||
8168 | jmp short checkLoop78 |
||
8169 | |||
8170 | callRoutine78: |
||
8171 | call ReadIOByte ; Standard read routine |
||
8172 | mov bl, al ; Put our returned value here |
||
8173 | mov ax, [_z80af] ; Get our AF back |
||
8174 | jmp short readExit78 |
||
8175 | |||
8176 | ioRead78: |
||
8177 | mov bl, 0ffh ; An unreferenced read |
||
8178 | readExit78: |
||
8179 | mov edi, [cyclesRemaining] |
||
8180 | ; |
||
8181 | ; Remember, this variant of the IN instruction modifies the flags |
||
8182 | ; |
||
8183 | |||
8184 | sahf ; Restore our flags |
||
8185 | mov dh, ah ; Save flags for later |
||
8186 | or bl, bl; |
||
8187 | lahf |
||
8188 | and dh, 029h ; Only keep carry and two unused flags |
||
8189 | and ah, 0d4h |
||
8190 | or ah, dh |
||
8191 | xor edx, edx |
||
8192 | sub edi, byte 12 |
||
8193 | js near noMoreExec |
||
8194 | mov dl, byte [esi] ; Get our next instruction |
||
8195 | inc esi ; Increment PC |
||
8196 | jmp dword [z80regular+edx*4] |
||
8197 | |||
8198 | |||
8199 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8200 | |||
8201 | EDInst69: |
||
8202 | mov dl, cl ; Address in DX... (C) |
||
8203 | mov [cyclesRemaining], edi |
||
8204 | mov [_z80af], ax ; Store AF |
||
8205 | mov al, bl ; And our data to write |
||
8206 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
8207 | |||
8208 | checkLoop79: |
||
8209 | cmp [edi], word 0ffffh ; End of our list? |
||
8210 | je WriteMacroExit79 ; Yes - ignore it! |
||
8211 | cmp dx, [edi] ; Are we smaller? |
||
8212 | jb nextAddr79 ; Yes... go to the next addr |
||
8213 | cmp dx, [edi+2] ; Are we bigger? |
||
8214 | jbe callRoutine79 ; If not, go call it! |
||
8215 | |||
8216 | nextAddr79: |
||
8217 | add edi, 0ch ; Next structure, please |
||
8218 | jmp short checkLoop79 |
||
8219 | |||
8220 | callRoutine79: |
||
8221 | call WriteIOByte ; Go write the data! |
||
8222 | WriteMacroExit79: |
||
8223 | mov edi, [cyclesRemaining] |
||
8224 | xor edx, edx |
||
8225 | sub edi, byte 12 |
||
8226 | js near noMoreExec |
||
8227 | mov dl, byte [esi] ; Get our next instruction |
||
8228 | inc esi ; Increment PC |
||
8229 | jmp dword [z80regular+edx*4] |
||
8230 | |||
8231 | |||
8232 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8233 | |||
8234 | EDInst6a: |
||
8235 | mov dx, bx ; Get our original register |
||
8236 | mov [_orgval], dx ; Store this for later half carry computation |
||
8237 | mov [_orgval2], bx ; Store this, too |
||
8238 | sahf ; Restore our flags |
||
8239 | adc bx, dx ; Do the operation! |
||
8240 | lahf ; Get our new flags |
||
8241 | seto dl |
||
8242 | and ah, 0fbh ; Knock out parity/overflow |
||
8243 | shl dl, 2 |
||
8244 | or ah, dl |
||
8245 | and ah, 0edh ; Knock out negative & half carry flags |
||
8246 | mov [_z80hl], bx |
||
8247 | xor bx, [_orgval] |
||
8248 | xor bx, [_orgval2] |
||
8249 | and bh, 10h ; Half carry? |
||
8250 | or ah, bh ; OR It in if so |
||
8251 | mov bx, [_z80hl] |
||
8252 | xor edx, edx ; Make sure we don't hose things |
||
8253 | sub edi, byte 15 |
||
8254 | js near noMoreExec |
||
8255 | mov dl, byte [esi] ; Get our next instruction |
||
8256 | inc esi ; Increment PC |
||
8257 | jmp dword [z80regular+edx*4] |
||
8258 | |||
8259 | |||
8260 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8261 | |||
8262 | EDInst6f: |
||
8263 | mov [cyclesRemaining], edi |
||
8264 | mov edi, [_z80MemRead] ; Point to the read array |
||
8265 | |||
8266 | checkLoop80: |
||
8267 | cmp [edi], word 0ffffh ; End of the list? |
||
8268 | je memoryRead80 |
||
8269 | cmp ebx, [edi] ; Are we smaller? |
||
8270 | jb nextAddr80 ; Yes, go to the next address |
||
8271 | cmp ebx, [edi+4] ; Are we bigger? |
||
8272 | jbe callRoutine80 |
||
8273 | |||
8274 | nextAddr80: |
||
8275 | add edi, 10h ; Next structure! |
||
8276 | jmp short checkLoop80 |
||
8277 | |||
8278 | callRoutine80: |
||
8279 | mov dx, bx ; Get our address |
||
8280 | call ReadMemoryByte ; Standard read routine |
||
8281 | mov dl, al ; Put our returned value here |
||
8282 | mov ax, [_z80af] ; Get our AF back |
||
8283 | jmp short readExit80 |
||
8284 | |||
8285 | memoryRead80: |
||
8286 | mov dl, [ebp + ebx] ; Get our data |
||
8287 | |||
8288 | readExit80: |
||
8289 | mov edi, [cyclesRemaining] |
||
8290 | mov dh, dl ; Put a copy in DH |
||
8291 | shr dh, 4 ; Get our upper nibble in position |
||
8292 | shl dl, 4 ; Get our lower nibble into the higher position |
||
8293 | shl ecx, 16 ; Save this for later |
||
8294 | mov cl, al |
||
8295 | and cl, 0fh |
||
8296 | ; Only the lower nibble |
||
8297 | or dl, cl ; OR In A->(HL) transfer |
||
8298 | and al, 0f0h ; Only the upper 4 bits remain |
||
8299 | or al, dh ; OR It in to our accumulator |
||
8300 | shr ecx, 16 ; Restore this |
||
8301 | and ah, 29h ; Retain carry & two undefined bits |
||
8302 | mov dh, ah ; Store our flags away for later |
||
8303 | or al, al ; Get our flags |
||
8304 | lahf |
||
8305 | and ah,0c4h ; Only partiy, zero, and sign |
||
8306 | or ah, dh ; OR In our old flags |
||
8307 | mov [cyclesRemaining], edi |
||
8308 | mov [_z80af], ax ; Store AF |
||
8309 | mov al, dl ; And our data to write |
||
8310 | mov edi, [_z80MemWrite] ; Point to the write array |
||
8311 | |||
8312 | checkLoop81: |
||
8313 | cmp [edi], word 0ffffh ; End of our list? |
||
8314 | je memoryWrite81 ; Yes - go write it! |
||
8315 | cmp bx, [edi] ; Are we smaller? |
||
8316 | jb nextAddr81 ; Yes... go to the next addr |
||
8317 | cmp bx, [edi+4] ; Are we smaller? |
||
8318 | jbe callRoutine81 ; If not, go call it! |
||
8319 | |||
8320 | nextAddr81: |
||
8321 | add edi, 10h ; Next structure, please |
||
8322 | jmp short checkLoop81 |
||
8323 | |||
8324 | callRoutine81: |
||
8325 | mov dx, bx ; Get our address to target |
||
8326 | call WriteMemoryByte ; Go write the data! |
||
8327 | jmp short WriteMacroExit81 |
||
8328 | memoryWrite81: |
||
8329 | mov [ebp + ebx], dl |
||
8330 | mov ax, [_z80af] ; Get our accumulator and flags |
||
8331 | WriteMacroExit81: |
||
8332 | mov edi, [cyclesRemaining] |
||
8333 | xor edx, edx ; Zero out this for later |
||
8334 | sub edi, byte 18 |
||
8335 | js near noMoreExec |
||
8336 | mov dl, byte [esi] ; Get our next instruction |
||
8337 | inc esi ; Increment PC |
||
8338 | jmp dword [z80regular+edx*4] |
||
8339 | |||
8340 | |||
8341 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8342 | |||
8343 | EDInst72: |
||
8344 | mov dx, word [_z80sp] ; Get our original register |
||
8345 | mov [_orgval], dx ; Store this for later half carry computation |
||
8346 | mov [_orgval2], bx ; Store this, too |
||
8347 | sahf ; Restore our flags |
||
8348 | sbb bx, dx ; Do the operation! |
||
8349 | lahf ; Get our new flags |
||
8350 | seto dl |
||
8351 | and ah, 0fbh ; Knock out parity/overflow |
||
8352 | shl dl, 2 |
||
8353 | or ah, dl |
||
8354 | and ah, 0edh ; Knock out negative & half carry flags |
||
8355 | or ah, 02h ; Negative! |
||
8356 | mov [_z80hl], bx |
||
8357 | xor bx, [_orgval] |
||
8358 | xor bx, [_orgval2] |
||
8359 | and bh, 10h ; Half carry? |
||
8360 | or ah, bh ; OR It in if so |
||
8361 | mov bx, [_z80hl] |
||
8362 | xor edx, edx ; Make sure we don't hose things |
||
8363 | sub edi, byte 15 |
||
8364 | js near noMoreExec |
||
8365 | mov dl, byte [esi] ; Get our next instruction |
||
8366 | inc esi ; Increment PC |
||
8367 | jmp dword [z80regular+edx*4] |
||
8368 | |||
8369 | |||
8370 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8371 | |||
8372 | EDInst73: |
||
8373 | mov dx, [esi] ; Get our address to write to |
||
8374 | add esi, 2 ; Next address, please... |
||
8375 | mov [cyclesRemaining], edi |
||
8376 | mov [_z80af], ax ; Store AF |
||
8377 | mov al, byte [_z80sp] ; And our data to write |
||
8378 | mov edi, [_z80MemWrite] ; Point to the write array |
||
8379 | |||
8380 | checkLoop82: |
||
8381 | cmp [edi], word 0ffffh ; End of our list? |
||
8382 | je memoryWrite82 ; Yes - go write it! |
||
8383 | cmp dx, [edi] ; Are we smaller? |
||
8384 | jb nextAddr82 ; Yes... go to the next addr |
||
8385 | cmp dx, [edi+4] ; Are we smaller? |
||
8386 | jbe callRoutine82 ; If not, go call it! |
||
8387 | |||
8388 | nextAddr82: |
||
8389 | add edi, 10h ; Next structure, please |
||
8390 | jmp short checkLoop82 |
||
8391 | |||
8392 | callRoutine82: |
||
8393 | call WriteMemoryByte ; Go write the data! |
||
8394 | jmp short WriteMacroExit82 |
||
8395 | memoryWrite82: |
||
8396 | mov edi, edx |
||
8397 | mov dl, byte [_z80sp] |
||
8398 | mov [ebp + edi], dl |
||
8399 | mov edx, edi |
||
8400 | mov ax, [_z80af] ; Get our accumulator and flags |
||
8401 | WriteMacroExit82: |
||
8402 | mov edi, [cyclesRemaining] |
||
8403 | inc dx |
||
8404 | mov [cyclesRemaining], edi |
||
8405 | mov [_z80af], ax ; Store AF |
||
8406 | mov al, byte [_z80sp + 1] ; And our data to write |
||
8407 | mov edi, [_z80MemWrite] ; Point to the write array |
||
8408 | |||
8409 | checkLoop83: |
||
8410 | cmp [edi], word 0ffffh ; End of our list? |
||
8411 | je memoryWrite83 ; Yes - go write it! |
||
8412 | cmp dx, [edi] ; Are we smaller? |
||
8413 | jb nextAddr83 ; Yes... go to the next addr |
||
8414 | cmp dx, [edi+4] ; Are we smaller? |
||
8415 | jbe callRoutine83 ; If not, go call it! |
||
8416 | |||
8417 | nextAddr83: |
||
8418 | add edi, 10h ; Next structure, please |
||
8419 | jmp short checkLoop83 |
||
8420 | |||
8421 | callRoutine83: |
||
8422 | call WriteMemoryByte ; Go write the data! |
||
8423 | jmp short WriteMacroExit83 |
||
8424 | memoryWrite83: |
||
8425 | mov edi, edx |
||
8426 | mov dl, byte [_z80sp + 1] |
||
8427 | mov [ebp + edi], dl |
||
8428 | mov edx, edi |
||
8429 | mov ax, [_z80af] ; Get our accumulator and flags |
||
8430 | WriteMacroExit83: |
||
8431 | mov edi, [cyclesRemaining] |
||
8432 | xor edx, edx ; Zero our upper word |
||
8433 | sub edi, byte 20 |
||
8434 | js near noMoreExec |
||
8435 | mov dl, byte [esi] ; Get our next instruction |
||
8436 | inc esi ; Increment PC |
||
8437 | jmp dword [z80regular+edx*4] |
||
8438 | |||
8439 | |||
8440 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8441 | |||
8442 | EDInst78: |
||
8443 | mov dl, cl ; Address in DX... (C) |
||
8444 | mov [cyclesRemaining], edi |
||
8445 | mov edi, [_z80IoRead] ; Point to the read array |
||
8446 | |||
8447 | checkLoop84: |
||
8448 | cmp [edi], word 0ffffh ; End of the list? |
||
8449 | je ioRead84 |
||
8450 | cmp dx, [edi] ; Are we smaller? |
||
8451 | jb nextAddr84 ; Yes, go to the next address |
||
8452 | cmp dx, [edi+2] ; Are we bigger? |
||
8453 | jbe callRoutine84 |
||
8454 | |||
8455 | nextAddr84: |
||
8456 | add edi, 0ch ; Next structure! |
||
8457 | jmp short checkLoop84 |
||
8458 | |||
8459 | callRoutine84: |
||
8460 | call ReadIOByte ; Standard read routine |
||
8461 | mov [_z80af], al ; Save our new accumulator |
||
8462 | mov ax, [_z80af] ; Get our AF back |
||
8463 | jmp short readExit84 |
||
8464 | |||
8465 | ioRead84: |
||
8466 | mov al, 0ffh ; An unreferenced read |
||
8467 | readExit84: |
||
8468 | mov edi, [cyclesRemaining] |
||
8469 | ; |
||
8470 | ; Remember, this variant of the IN instruction modifies the flags |
||
8471 | ; |
||
8472 | |||
8473 | sahf ; Restore our flags |
||
8474 | mov dh, ah ; Save flags for later |
||
8475 | or al, al; |
||
8476 | lahf |
||
8477 | and dh, 029h ; Only keep carry and two unused flags |
||
8478 | and ah, 0d4h |
||
8479 | or ah, dh |
||
8480 | xor edx, edx |
||
8481 | sub edi, byte 12 |
||
8482 | js near noMoreExec |
||
8483 | mov dl, byte [esi] ; Get our next instruction |
||
8484 | inc esi ; Increment PC |
||
8485 | jmp dword [z80regular+edx*4] |
||
8486 | |||
8487 | |||
8488 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8489 | |||
8490 | EDInst79: |
||
8491 | mov dl, cl ; Address in DX... (C) |
||
8492 | mov [cyclesRemaining], edi |
||
8493 | mov [_z80af], ax ; Store AF |
||
8494 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
8495 | |||
8496 | checkLoop85: |
||
8497 | cmp [edi], word 0ffffh ; End of our list? |
||
8498 | je WriteMacroExit85 ; Yes - ignore it! |
||
8499 | cmp dx, [edi] ; Are we smaller? |
||
8500 | jb nextAddr85 ; Yes... go to the next addr |
||
8501 | cmp dx, [edi+2] ; Are we bigger? |
||
8502 | jbe callRoutine85 ; If not, go call it! |
||
8503 | |||
8504 | nextAddr85: |
||
8505 | add edi, 0ch ; Next structure, please |
||
8506 | jmp short checkLoop85 |
||
8507 | |||
8508 | callRoutine85: |
||
8509 | call WriteIOByte ; Go write the data! |
||
8510 | WriteMacroExit85: |
||
8511 | mov edi, [cyclesRemaining] |
||
8512 | xor edx, edx |
||
8513 | sub edi, byte 12 |
||
8514 | js near noMoreExec |
||
8515 | mov dl, byte [esi] ; Get our next instruction |
||
8516 | inc esi ; Increment PC |
||
8517 | jmp dword [z80regular+edx*4] |
||
8518 | |||
8519 | |||
8520 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8521 | |||
8522 | EDInst7a: |
||
8523 | mov dx, word [_z80sp] ; Get our original register |
||
8524 | mov [_orgval], dx ; Store this for later half carry computation |
||
8525 | mov [_orgval2], bx ; Store this, too |
||
8526 | sahf ; Restore our flags |
||
8527 | adc bx, dx ; Do the operation! |
||
8528 | lahf ; Get our new flags |
||
8529 | seto dl |
||
8530 | and ah, 0fbh ; Knock out parity/overflow |
||
8531 | shl dl, 2 |
||
8532 | or ah, dl |
||
8533 | and ah, 0edh ; Knock out negative & half carry flags |
||
8534 | mov [_z80hl], bx |
||
8535 | xor bx, [_orgval] |
||
8536 | xor bx, [_orgval2] |
||
8537 | and bh, 10h ; Half carry? |
||
8538 | or ah, bh ; OR It in if so |
||
8539 | mov bx, [_z80hl] |
||
8540 | xor edx, edx ; Make sure we don't hose things |
||
8541 | sub edi, byte 15 |
||
8542 | js near noMoreExec |
||
8543 | mov dl, byte [esi] ; Get our next instruction |
||
8544 | inc esi ; Increment PC |
||
8545 | jmp dword [z80regular+edx*4] |
||
8546 | |||
8547 | |||
8548 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8549 | |||
8550 | EDInst7b: |
||
8551 | mov dx, [esi] ; Get address to load |
||
8552 | add esi, 2 ; Skip over it so we don't execute it |
||
8553 | mov [cyclesRemaining], edi |
||
8554 | mov edi, [_z80MemRead] ; Point to the read array |
||
8555 | |||
8556 | checkLoop86: |
||
8557 | cmp [edi], word 0ffffh ; End of the list? |
||
8558 | je memoryRead86 |
||
8559 | cmp edx, [edi] ; Are we smaller? |
||
8560 | jb nextAddr86 ; Yes, go to the next address |
||
8561 | cmp edx, [edi+4] ; Are we bigger? |
||
8562 | jbe callRoutine86 |
||
8563 | |||
8564 | nextAddr86: |
||
8565 | add edi, 10h ; Next structure! |
||
8566 | jmp short checkLoop86 |
||
8567 | |||
8568 | callRoutine86: |
||
8569 | call ReadMemoryByte ; Standard read routine |
||
8570 | mov byte [_z80sp], al ; Put our returned value here |
||
8571 | mov ax, [_z80af] ; Get our AF back |
||
8572 | jmp short readExit86 |
||
8573 | |||
8574 | memoryRead86: |
||
8575 | mov di, dx |
||
8576 | mov dl, [ebp + edx] |
||
8577 | mov byte [_z80sp], dl |
||
8578 | mov dx, di |
||
8579 | readExit86: |
||
8580 | mov edi, [cyclesRemaining] |
||
8581 | inc dx |
||
8582 | mov [cyclesRemaining], edi |
||
8583 | mov edi, [_z80MemRead] ; Point to the read array |
||
8584 | |||
8585 | checkLoop87: |
||
8586 | cmp [edi], word 0ffffh ; End of the list? |
||
8587 | je memoryRead87 |
||
8588 | cmp edx, [edi] ; Are we smaller? |
||
8589 | jb nextAddr87 ; Yes, go to the next address |
||
8590 | cmp edx, [edi+4] ; Are we bigger? |
||
8591 | jbe callRoutine87 |
||
8592 | |||
8593 | nextAddr87: |
||
8594 | add edi, 10h ; Next structure! |
||
8595 | jmp short checkLoop87 |
||
8596 | |||
8597 | callRoutine87: |
||
8598 | call ReadMemoryByte ; Standard read routine |
||
8599 | mov byte [_z80sp + 1], al ; Put our returned value here |
||
8600 | mov ax, [_z80af] ; Get our AF back |
||
8601 | jmp short readExit87 |
||
8602 | |||
8603 | memoryRead87: |
||
8604 | mov di, dx |
||
8605 | mov dl, [ebp + edx] |
||
8606 | mov byte [_z80sp + 1], dl |
||
8607 | mov dx, di |
||
8608 | readExit87: |
||
8609 | mov edi, [cyclesRemaining] |
||
8610 | xor edx, edx |
||
8611 | sub edi, byte 20 |
||
8612 | js near noMoreExec |
||
8613 | mov dl, byte [esi] ; Get our next instruction |
||
8614 | inc esi ; Increment PC |
||
8615 | jmp dword [z80regular+edx*4] |
||
8616 | |||
8617 | |||
8618 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8619 | |||
8620 | EDInsta0: |
||
8621 | mov [cyclesRemaining], edi |
||
8622 | mov edi, [_z80MemRead] ; Point to the read array |
||
8623 | |||
8624 | checkLoop88: |
||
8625 | cmp [edi], word 0ffffh ; End of the list? |
||
8626 | je memoryRead88 |
||
8627 | cmp ebx, [edi] ; Are we smaller? |
||
8628 | jb nextAddr88 ; Yes, go to the next address |
||
8629 | cmp ebx, [edi+4] ; Are we bigger? |
||
8630 | jbe callRoutine88 |
||
8631 | |||
8632 | nextAddr88: |
||
8633 | add edi, 10h ; Next structure! |
||
8634 | jmp short checkLoop88 |
||
8635 | |||
8636 | callRoutine88: |
||
8637 | mov dx, bx ; Get our address |
||
8638 | call ReadMemoryByte ; Standard read routine |
||
8639 | mov dl, al ; Put our returned value here |
||
8640 | mov ax, [_z80af] ; Get our AF back |
||
8641 | jmp short readExit88 |
||
8642 | |||
8643 | memoryRead88: |
||
8644 | mov dl, [ebp + ebx] ; Get our data |
||
8645 | |||
8646 | readExit88: |
||
8647 | mov edi, [cyclesRemaining] |
||
8648 | mov [cyclesRemaining], edi |
||
8649 | mov [_z80af], ax ; Store AF |
||
8650 | mov al, dl ; And our data to write |
||
8651 | mov dx, [_z80de] |
||
8652 | mov edi, [_z80MemWrite] ; Point to the write array |
||
8653 | |||
8654 | checkLoop89: |
||
8655 | cmp [edi], word 0ffffh ; End of our list? |
||
8656 | je memoryWrite89 ; Yes - go write it! |
||
8657 | cmp dx, [edi] ; Are we smaller? |
||
8658 | jb nextAddr89 ; Yes... go to the next addr |
||
8659 | cmp dx, [edi+4] ; Are we smaller? |
||
8660 | jbe callRoutine89 ; If not, go call it! |
||
8661 | |||
8662 | nextAddr89: |
||
8663 | add edi, 10h ; Next structure, please |
||
8664 | jmp short checkLoop89 |
||
8665 | |||
8666 | callRoutine89: |
||
8667 | call WriteMemoryByte ; Go write the data! |
||
8668 | jmp short WriteMacroExit89 |
||
8669 | memoryWrite89: |
||
8670 | mov [ebp + edx], al |
||
8671 | mov ax, [_z80af] ; Get our accumulator and flags |
||
8672 | WriteMacroExit89: |
||
8673 | mov edi, [cyclesRemaining] |
||
8674 | inc bx ; Increment HL |
||
8675 | inc word [_z80de] ; Increment DE |
||
8676 | dec cx ; Decrement BC |
||
8677 | and ah, 0e9h ; Knock out H & N and P/V |
||
8678 | or cx, cx ; Flag BC |
||
8679 | jz atZero90 ; We're done! |
||
8680 | or ah, 04h ; Non-zero - we're still going! |
||
8681 | atZero90: |
||
8682 | xor edx, edx ; Make sure we don't hose things |
||
8683 | sub edi, byte 16 |
||
8684 | js near noMoreExec |
||
8685 | mov dl, byte [esi] ; Get our next instruction |
||
8686 | inc esi ; Increment PC |
||
8687 | jmp dword [z80regular+edx*4] |
||
8688 | |||
8689 | |||
8690 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8691 | |||
8692 | EDInsta1: |
||
8693 | mov [cyclesRemaining], edi |
||
8694 | mov edi, [_z80MemRead] ; Point to the read array |
||
8695 | |||
8696 | checkLoop91: |
||
8697 | cmp [edi], word 0ffffh ; End of the list? |
||
8698 | je memoryRead91 |
||
8699 | cmp ebx, [edi] ; Are we smaller? |
||
8700 | jb nextAddr91 ; Yes, go to the next address |
||
8701 | cmp ebx, [edi+4] ; Are we bigger? |
||
8702 | jbe callRoutine91 |
||
8703 | |||
8704 | nextAddr91: |
||
8705 | add edi, 10h ; Next structure! |
||
8706 | jmp short checkLoop91 |
||
8707 | |||
8708 | callRoutine91: |
||
8709 | mov dx, bx ; Get our address |
||
8710 | call ReadMemoryByte ; Standard read routine |
||
8711 | mov dl, al ; Put our returned value here |
||
8712 | mov ax, [_z80af] ; Get our AF back |
||
8713 | jmp short readExit91 |
||
8714 | |||
8715 | memoryRead91: |
||
8716 | mov dl, [ebp + ebx] ; Get our data |
||
8717 | |||
8718 | readExit91: |
||
8719 | mov edi, [cyclesRemaining] |
||
8720 | mov byte [_z80af], ah |
||
8721 | sahf |
||
8722 | cmp al, dl ; Do our comparison |
||
8723 | lahf |
||
8724 | and ah, 0fah ; No P/V or carry! |
||
8725 | dec cx ; Dec BC |
||
8726 | jz notBcZero92 |
||
8727 | or ah, 04h ; P/V set when BC not zero |
||
8728 | notBcZero92: |
||
8729 | or ah, 02h ; N Gets set when we do compares |
||
8730 | mov dl, byte [_z80af] |
||
8731 | and dl, 01h |
||
8732 | or ah, dl ; Preserve carry! |
||
8733 | inc bx ; Increment! |
||
8734 | xor edx, edx |
||
8735 | sub edi, byte 16 |
||
8736 | js near noMoreExec |
||
8737 | mov dl, byte [esi] ; Get our next instruction |
||
8738 | inc esi ; Increment PC |
||
8739 | jmp dword [z80regular+edx*4] |
||
8740 | |||
8741 | |||
8742 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8743 | |||
8744 | EDInsta2: |
||
8745 | push cx ; Save BC |
||
8746 | xor ch, ch ; We want 8 bit ports |
||
8747 | mov [cyclesRemaining], edi |
||
8748 | mov edi, [_z80IoRead] ; Point to the read array |
||
8749 | |||
8750 | checkLoop93: |
||
8751 | cmp [edi], word 0ffffh ; End of the list? |
||
8752 | je ioRead93 |
||
8753 | cmp cx, [edi] ; Are we smaller? |
||
8754 | jb nextAddr93 ; Yes, go to the next address |
||
8755 | cmp cx, [edi+2] ; Are we bigger? |
||
8756 | jbe callRoutine93 |
||
8757 | |||
8758 | nextAddr93: |
||
8759 | add edi, 0ch ; Next structure! |
||
8760 | jmp short checkLoop93 |
||
8761 | |||
8762 | callRoutine93: |
||
8763 | mov dx, cx ; Get our address |
||
8764 | call ReadIOByte ; Standard read routine |
||
8765 | mov dl, al ; Put it in DL for later consumption |
||
8766 | mov ax, [_z80af] ; Get our AF back |
||
8767 | jmp short readExit93 |
||
8768 | |||
8769 | ioRead93: |
||
8770 | mov dl, 0ffh ; An unreferenced read |
||
8771 | readExit93: |
||
8772 | mov edi, [cyclesRemaining] |
||
8773 | pop cx ; Restore BC |
||
8774 | mov [cyclesRemaining], edi |
||
8775 | mov [_z80af], ax ; Store AF |
||
8776 | mov al, dl ; And our data to write |
||
8777 | mov edi, [_z80MemWrite] ; Point to the write array |
||
8778 | |||
8779 | checkLoop94: |
||
8780 | cmp [edi], word 0ffffh ; End of our list? |
||
8781 | je memoryWrite94 ; Yes - go write it! |
||
8782 | cmp bx, [edi] ; Are we smaller? |
||
8783 | jb nextAddr94 ; Yes... go to the next addr |
||
8784 | cmp bx, [edi+4] ; Are we smaller? |
||
8785 | jbe callRoutine94 ; If not, go call it! |
||
8786 | |||
8787 | nextAddr94: |
||
8788 | add edi, 10h ; Next structure, please |
||
8789 | jmp short checkLoop94 |
||
8790 | |||
8791 | callRoutine94: |
||
8792 | mov dx, bx ; Get our address to target |
||
8793 | call WriteMemoryByte ; Go write the data! |
||
8794 | jmp short WriteMacroExit94 |
||
8795 | memoryWrite94: |
||
8796 | mov [ebp + ebx], dl |
||
8797 | mov ax, [_z80af] ; Get our accumulator and flags |
||
8798 | WriteMacroExit94: |
||
8799 | mov edi, [cyclesRemaining] |
||
8800 | inc bx ; Increment HL |
||
8801 | dec ch ; Decrement B (of C) |
||
8802 | finalExit92: |
||
8803 | jnz clearFlag92 |
||
8804 | or ah, 040h ; Set the Zero flag! |
||
8805 | jmp short continue92 |
||
8806 | clearFlag92: |
||
8807 | and ah, 0bfh ; Clear the zero flag |
||
8808 | continue92: |
||
8809 | or ah, 02h ; Set negative! |
||
8810 | xor edx, edx |
||
8811 | sub edi, byte 16 |
||
8812 | js near noMoreExec |
||
8813 | mov dl, byte [esi] ; Get our next instruction |
||
8814 | inc esi ; Increment PC |
||
8815 | jmp dword [z80regular+edx*4] |
||
8816 | |||
8817 | |||
8818 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8819 | |||
8820 | EDInsta3: |
||
8821 | mov [cyclesRemaining], edi |
||
8822 | mov edi, [_z80MemRead] ; Point to the read array |
||
8823 | |||
8824 | checkLoop96: |
||
8825 | cmp [edi], word 0ffffh ; End of the list? |
||
8826 | je memoryRead96 |
||
8827 | cmp ebx, [edi] ; Are we smaller? |
||
8828 | jb nextAddr96 ; Yes, go to the next address |
||
8829 | cmp ebx, [edi+4] ; Are we bigger? |
||
8830 | jbe callRoutine96 |
||
8831 | |||
8832 | nextAddr96: |
||
8833 | add edi, 10h ; Next structure! |
||
8834 | jmp short checkLoop96 |
||
8835 | |||
8836 | callRoutine96: |
||
8837 | mov dx, bx ; Get our address |
||
8838 | call ReadMemoryByte ; Standard read routine |
||
8839 | mov dl, al ; Put our returned value here |
||
8840 | mov ax, [_z80af] ; Get our AF back |
||
8841 | jmp short readExit96 |
||
8842 | |||
8843 | memoryRead96: |
||
8844 | mov dl, [ebp + ebx] ; Get our data |
||
8845 | |||
8846 | readExit96: |
||
8847 | mov edi, [cyclesRemaining] |
||
8848 | push cx ; Save BC |
||
8849 | xor ch, ch ; No 16 bit for this instruction! |
||
8850 | mov [cyclesRemaining], edi |
||
8851 | mov [_z80af], ax ; Store AF |
||
8852 | mov al, dl ; And our data to write |
||
8853 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
8854 | |||
8855 | checkLoop97: |
||
8856 | cmp [edi], word 0ffffh ; End of our list? |
||
8857 | je WriteMacroExit97 ; Yes - ignore it! |
||
8858 | cmp cx, [edi] ; Are we smaller? |
||
8859 | jb nextAddr97 ; Yes... go to the next addr |
||
8860 | cmp cx, [edi+2] ; Are we bigger? |
||
8861 | jbe callRoutine97 ; If not, go call it! |
||
8862 | |||
8863 | nextAddr97: |
||
8864 | add edi, 0ch ; Next structure, please |
||
8865 | jmp short checkLoop97 |
||
8866 | |||
8867 | callRoutine97: |
||
8868 | mov dx, cx ; Get our address to target |
||
8869 | call WriteIOByte ; Go write the data! |
||
8870 | WriteMacroExit97: |
||
8871 | mov edi, [cyclesRemaining] |
||
8872 | pop cx ; Restore BC now that it has been "OUT"ed |
||
8873 | inc bx ; Increment HL |
||
8874 | dec ch ; Decrement B (of C) |
||
8875 | finalExit95: |
||
8876 | jnz clearFlag95 |
||
8877 | or ah, 040h ; Set the Zero flag! |
||
8878 | jmp short continue95 |
||
8879 | clearFlag95: |
||
8880 | and ah, 0bfh ; Clear the zero flag |
||
8881 | continue95: |
||
8882 | or ah, 02h ; Set negative! |
||
8883 | xor edx, edx |
||
8884 | sub edi, byte 16 |
||
8885 | js near noMoreExec |
||
8886 | mov dl, byte [esi] ; Get our next instruction |
||
8887 | inc esi ; Increment PC |
||
8888 | jmp dword [z80regular+edx*4] |
||
8889 | |||
8890 | |||
8891 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8892 | |||
8893 | EDInsta8: |
||
8894 | mov [cyclesRemaining], edi |
||
8895 | mov edi, [_z80MemRead] ; Point to the read array |
||
8896 | |||
8897 | checkLoop98: |
||
8898 | cmp [edi], word 0ffffh ; End of the list? |
||
8899 | je memoryRead98 |
||
8900 | cmp ebx, [edi] ; Are we smaller? |
||
8901 | jb nextAddr98 ; Yes, go to the next address |
||
8902 | cmp ebx, [edi+4] ; Are we bigger? |
||
8903 | jbe callRoutine98 |
||
8904 | |||
8905 | nextAddr98: |
||
8906 | add edi, 10h ; Next structure! |
||
8907 | jmp short checkLoop98 |
||
8908 | |||
8909 | callRoutine98: |
||
8910 | mov dx, bx ; Get our address |
||
8911 | call ReadMemoryByte ; Standard read routine |
||
8912 | mov dl, al ; Put our returned value here |
||
8913 | mov ax, [_z80af] ; Get our AF back |
||
8914 | jmp short readExit98 |
||
8915 | |||
8916 | memoryRead98: |
||
8917 | mov dl, [ebp + ebx] ; Get our data |
||
8918 | |||
8919 | readExit98: |
||
8920 | mov edi, [cyclesRemaining] |
||
8921 | mov [cyclesRemaining], edi |
||
8922 | mov [_z80af], ax ; Store AF |
||
8923 | mov al, dl ; And our data to write |
||
8924 | mov dx, [_z80de] |
||
8925 | mov edi, [_z80MemWrite] ; Point to the write array |
||
8926 | |||
8927 | checkLoop99: |
||
8928 | cmp [edi], word 0ffffh ; End of our list? |
||
8929 | je memoryWrite99 ; Yes - go write it! |
||
8930 | cmp dx, [edi] ; Are we smaller? |
||
8931 | jb nextAddr99 ; Yes... go to the next addr |
||
8932 | cmp dx, [edi+4] ; Are we smaller? |
||
8933 | jbe callRoutine99 ; If not, go call it! |
||
8934 | |||
8935 | nextAddr99: |
||
8936 | add edi, 10h ; Next structure, please |
||
8937 | jmp short checkLoop99 |
||
8938 | |||
8939 | callRoutine99: |
||
8940 | call WriteMemoryByte ; Go write the data! |
||
8941 | jmp short WriteMacroExit99 |
||
8942 | memoryWrite99: |
||
8943 | mov [ebp + edx], al |
||
8944 | mov ax, [_z80af] ; Get our accumulator and flags |
||
8945 | WriteMacroExit99: |
||
8946 | mov edi, [cyclesRemaining] |
||
8947 | dec bx ; Decrement HL |
||
8948 | dec word [_z80de] ; Decrement DE |
||
8949 | dec cx ; Decrement BC |
||
8950 | and ah, 0e9h ; Knock out H & N and P/V |
||
8951 | or cx, cx ; Flag BC |
||
8952 | jz atZero100 ; We're done! |
||
8953 | or ah, 04h ; Non-zero - we're still going! |
||
8954 | atZero100: |
||
8955 | xor edx, edx ; Make sure we don't hose things |
||
8956 | sub edi, byte 16 |
||
8957 | js near noMoreExec |
||
8958 | mov dl, byte [esi] ; Get our next instruction |
||
8959 | inc esi ; Increment PC |
||
8960 | jmp dword [z80regular+edx*4] |
||
8961 | |||
8962 | |||
8963 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
8964 | |||
8965 | EDInsta9: |
||
8966 | mov [cyclesRemaining], edi |
||
8967 | mov edi, [_z80MemRead] ; Point to the read array |
||
8968 | |||
8969 | checkLoop101: |
||
8970 | cmp [edi], word 0ffffh ; End of the list? |
||
8971 | je memoryRead101 |
||
8972 | cmp ebx, [edi] ; Are we smaller? |
||
8973 | jb nextAddr101 ; Yes, go to the next address |
||
8974 | cmp ebx, [edi+4] ; Are we bigger? |
||
8975 | jbe callRoutine101 |
||
8976 | |||
8977 | nextAddr101: |
||
8978 | add edi, 10h ; Next structure! |
||
8979 | jmp short checkLoop101 |
||
8980 | |||
8981 | callRoutine101: |
||
8982 | mov dx, bx ; Get our address |
||
8983 | call ReadMemoryByte ; Standard read routine |
||
8984 | mov dl, al ; Put our returned value here |
||
8985 | mov ax, [_z80af] ; Get our AF back |
||
8986 | jmp short readExit101 |
||
8987 | |||
8988 | memoryRead101: |
||
8989 | mov dl, [ebp + ebx] ; Get our data |
||
8990 | |||
8991 | readExit101: |
||
8992 | mov edi, [cyclesRemaining] |
||
8993 | mov byte [_z80af], ah |
||
8994 | sahf |
||
8995 | cmp al, dl ; Do our comparison |
||
8996 | lahf |
||
8997 | and ah, 0fah ; No P/V or carry! |
||
8998 | dec cx ; Dec BC |
||
8999 | jz notBcZero102 |
||
9000 | or ah, 04h ; P/V set when BC not zero |
||
9001 | notBcZero102: |
||
9002 | or ah, 02h ; N Gets set when we do compares |
||
9003 | mov dl, byte [_z80af] |
||
9004 | and dl, 01h |
||
9005 | or ah, dl ; Preserve carry! |
||
9006 | dec bx ; Decrement! |
||
9007 | xor edx, edx |
||
9008 | sub edi, byte 16 |
||
9009 | js near noMoreExec |
||
9010 | mov dl, byte [esi] ; Get our next instruction |
||
9011 | inc esi ; Increment PC |
||
9012 | jmp dword [z80regular+edx*4] |
||
9013 | |||
9014 | |||
9015 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9016 | |||
9017 | EDInstaa: |
||
9018 | push cx ; Save BC |
||
9019 | xor ch, ch ; We want 8 bit ports |
||
9020 | mov [cyclesRemaining], edi |
||
9021 | mov edi, [_z80IoRead] ; Point to the read array |
||
9022 | |||
9023 | checkLoop103: |
||
9024 | cmp [edi], word 0ffffh ; End of the list? |
||
9025 | je ioRead103 |
||
9026 | cmp cx, [edi] ; Are we smaller? |
||
9027 | jb nextAddr103 ; Yes, go to the next address |
||
9028 | cmp cx, [edi+2] ; Are we bigger? |
||
9029 | jbe callRoutine103 |
||
9030 | |||
9031 | nextAddr103: |
||
9032 | add edi, 0ch ; Next structure! |
||
9033 | jmp short checkLoop103 |
||
9034 | |||
9035 | callRoutine103: |
||
9036 | mov dx, cx ; Get our address |
||
9037 | call ReadIOByte ; Standard read routine |
||
9038 | mov dl, al ; Put it in DL for later consumption |
||
9039 | mov ax, [_z80af] ; Get our AF back |
||
9040 | jmp short readExit103 |
||
9041 | |||
9042 | ioRead103: |
||
9043 | mov dl, 0ffh ; An unreferenced read |
||
9044 | readExit103: |
||
9045 | mov edi, [cyclesRemaining] |
||
9046 | pop cx ; Restore BC |
||
9047 | mov [cyclesRemaining], edi |
||
9048 | mov [_z80af], ax ; Store AF |
||
9049 | mov al, dl ; And our data to write |
||
9050 | mov edi, [_z80MemWrite] ; Point to the write array |
||
9051 | |||
9052 | checkLoop104: |
||
9053 | cmp [edi], word 0ffffh ; End of our list? |
||
9054 | je memoryWrite104 ; Yes - go write it! |
||
9055 | cmp bx, [edi] ; Are we smaller? |
||
9056 | jb nextAddr104 ; Yes... go to the next addr |
||
9057 | cmp bx, [edi+4] ; Are we smaller? |
||
9058 | jbe callRoutine104 ; If not, go call it! |
||
9059 | |||
9060 | nextAddr104: |
||
9061 | add edi, 10h ; Next structure, please |
||
9062 | jmp short checkLoop104 |
||
9063 | |||
9064 | callRoutine104: |
||
9065 | mov dx, bx ; Get our address to target |
||
9066 | call WriteMemoryByte ; Go write the data! |
||
9067 | jmp short WriteMacroExit104 |
||
9068 | memoryWrite104: |
||
9069 | mov [ebp + ebx], dl |
||
9070 | mov ax, [_z80af] ; Get our accumulator and flags |
||
9071 | WriteMacroExit104: |
||
9072 | mov edi, [cyclesRemaining] |
||
9073 | dec bx ; Decrement HL |
||
9074 | dec ch ; Decrement B (of C) |
||
9075 | finalExit102: |
||
9076 | jnz clearFlag102 |
||
9077 | or ah, 040h ; Set the Zero flag! |
||
9078 | jmp short continue102 |
||
9079 | clearFlag102: |
||
9080 | and ah, 0bfh ; Clear the zero flag |
||
9081 | continue102: |
||
9082 | or ah, 02h ; Set negative! |
||
9083 | xor edx, edx |
||
9084 | sub edi, byte 16 |
||
9085 | js near noMoreExec |
||
9086 | mov dl, byte [esi] ; Get our next instruction |
||
9087 | inc esi ; Increment PC |
||
9088 | jmp dword [z80regular+edx*4] |
||
9089 | |||
9090 | |||
9091 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9092 | |||
9093 | EDInstab: |
||
9094 | mov [cyclesRemaining], edi |
||
9095 | mov edi, [_z80MemRead] ; Point to the read array |
||
9096 | |||
9097 | checkLoop106: |
||
9098 | cmp [edi], word 0ffffh ; End of the list? |
||
9099 | je memoryRead106 |
||
9100 | cmp ebx, [edi] ; Are we smaller? |
||
9101 | jb nextAddr106 ; Yes, go to the next address |
||
9102 | cmp ebx, [edi+4] ; Are we bigger? |
||
9103 | jbe callRoutine106 |
||
9104 | |||
9105 | nextAddr106: |
||
9106 | add edi, 10h ; Next structure! |
||
9107 | jmp short checkLoop106 |
||
9108 | |||
9109 | callRoutine106: |
||
9110 | mov dx, bx ; Get our address |
||
9111 | call ReadMemoryByte ; Standard read routine |
||
9112 | mov dl, al ; Put our returned value here |
||
9113 | mov ax, [_z80af] ; Get our AF back |
||
9114 | jmp short readExit106 |
||
9115 | |||
9116 | memoryRead106: |
||
9117 | mov dl, [ebp + ebx] ; Get our data |
||
9118 | |||
9119 | readExit106: |
||
9120 | mov edi, [cyclesRemaining] |
||
9121 | push cx ; Save BC |
||
9122 | xor ch, ch ; No 16 bit for this instruction! |
||
9123 | mov [cyclesRemaining], edi |
||
9124 | mov [_z80af], ax ; Store AF |
||
9125 | mov al, dl ; And our data to write |
||
9126 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
9127 | |||
9128 | checkLoop107: |
||
9129 | cmp [edi], word 0ffffh ; End of our list? |
||
9130 | je WriteMacroExit107 ; Yes - ignore it! |
||
9131 | cmp cx, [edi] ; Are we smaller? |
||
9132 | jb nextAddr107 ; Yes... go to the next addr |
||
9133 | cmp cx, [edi+2] ; Are we bigger? |
||
9134 | jbe callRoutine107 ; If not, go call it! |
||
9135 | |||
9136 | nextAddr107: |
||
9137 | add edi, 0ch ; Next structure, please |
||
9138 | jmp short checkLoop107 |
||
9139 | |||
9140 | callRoutine107: |
||
9141 | mov dx, cx ; Get our address to target |
||
9142 | call WriteIOByte ; Go write the data! |
||
9143 | WriteMacroExit107: |
||
9144 | mov edi, [cyclesRemaining] |
||
9145 | pop cx ; Restore BC now that it has been "OUT"ed |
||
9146 | dec bx ; Decrement HL |
||
9147 | dec ch ; Decrement B (of C) |
||
9148 | finalExit105: |
||
9149 | jnz clearFlag105 |
||
9150 | or ah, 040h ; Set the Zero flag! |
||
9151 | jmp short continue105 |
||
9152 | clearFlag105: |
||
9153 | and ah, 0bfh ; Clear the zero flag |
||
9154 | continue105: |
||
9155 | or ah, 02h ; Set negative! |
||
9156 | xor edx, edx |
||
9157 | sub edi, byte 16 |
||
9158 | js near noMoreExec |
||
9159 | mov dl, byte [esi] ; Get our next instruction |
||
9160 | inc esi ; Increment PC |
||
9161 | jmp dword [z80regular+edx*4] |
||
9162 | |||
9163 | |||
9164 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9165 | |||
9166 | EDInstb0: |
||
9167 | ldRepeat108: |
||
9168 | mov [cyclesRemaining], edi |
||
9169 | mov edi, [_z80MemRead] ; Point to the read array |
||
9170 | |||
9171 | checkLoop108: |
||
9172 | cmp [edi], word 0ffffh ; End of the list? |
||
9173 | je memoryRead108 |
||
9174 | cmp ebx, [edi] ; Are we smaller? |
||
9175 | jb nextAddr108 ; Yes, go to the next address |
||
9176 | cmp ebx, [edi+4] ; Are we bigger? |
||
9177 | jbe callRoutine108 |
||
9178 | |||
9179 | nextAddr108: |
||
9180 | add edi, 10h ; Next structure! |
||
9181 | jmp short checkLoop108 |
||
9182 | |||
9183 | callRoutine108: |
||
9184 | mov dx, bx ; Get our address |
||
9185 | call ReadMemoryByte ; Standard read routine |
||
9186 | mov dl, al ; Put our returned value here |
||
9187 | mov ax, [_z80af] ; Get our AF back |
||
9188 | jmp short readExit108 |
||
9189 | |||
9190 | memoryRead108: |
||
9191 | mov dl, [ebp + ebx] ; Get our data |
||
9192 | |||
9193 | readExit108: |
||
9194 | mov edi, [cyclesRemaining] |
||
9195 | mov [cyclesRemaining], edi |
||
9196 | mov [_z80af], ax ; Store AF |
||
9197 | mov al, dl ; And our data to write |
||
9198 | mov dx, [_z80de] |
||
9199 | mov edi, [_z80MemWrite] ; Point to the write array |
||
9200 | |||
9201 | checkLoop109: |
||
9202 | cmp [edi], word 0ffffh ; End of our list? |
||
9203 | je memoryWrite109 ; Yes - go write it! |
||
9204 | cmp dx, [edi] ; Are we smaller? |
||
9205 | jb nextAddr109 ; Yes... go to the next addr |
||
9206 | cmp dx, [edi+4] ; Are we smaller? |
||
9207 | jbe callRoutine109 ; If not, go call it! |
||
9208 | |||
9209 | nextAddr109: |
||
9210 | add edi, 10h ; Next structure, please |
||
9211 | jmp short checkLoop109 |
||
9212 | |||
9213 | callRoutine109: |
||
9214 | call WriteMemoryByte ; Go write the data! |
||
9215 | jmp short WriteMacroExit109 |
||
9216 | memoryWrite109: |
||
9217 | mov [ebp + edx], al |
||
9218 | mov ax, [_z80af] ; Get our accumulator and flags |
||
9219 | WriteMacroExit109: |
||
9220 | mov edi, [cyclesRemaining] |
||
9221 | inc bx ; Increment HL |
||
9222 | inc word [_z80de] ; Increment DE |
||
9223 | dec cx ; Decrement BC |
||
9224 | jz noMore110 |
||
9225 | sub edi, dword 16 ; 16 T-States per iteration |
||
9226 | js noMore110 |
||
9227 | jmp ldRepeat108 ; Loop until we're done! |
||
9228 | noMore110: |
||
9229 | and ah, 0e9h ; Knock out H & N and P/V |
||
9230 | or cx, cx ; Flag BC |
||
9231 | jz atZero110 ; We're done! |
||
9232 | or ah, 04h ; Non-zero - we're still going! |
||
9233 | sub esi, 2 ; Adjust back to the beginning of the instruction |
||
9234 | jmp noMoreExec |
||
9235 | |||
9236 | atZero110: |
||
9237 | xor edx, edx ; Make sure we don't hose things |
||
9238 | sub edi, byte 16 |
||
9239 | js near noMoreExec |
||
9240 | mov dl, byte [esi] ; Get our next instruction |
||
9241 | inc esi ; Increment PC |
||
9242 | jmp dword [z80regular+edx*4] |
||
9243 | |||
9244 | |||
9245 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9246 | |||
9247 | EDInstb1: |
||
9248 | cpRepeat111: |
||
9249 | mov [cyclesRemaining], edi |
||
9250 | mov edi, [_z80MemRead] ; Point to the read array |
||
9251 | |||
9252 | checkLoop112: |
||
9253 | cmp [edi], word 0ffffh ; End of the list? |
||
9254 | je memoryRead112 |
||
9255 | cmp ebx, [edi] ; Are we smaller? |
||
9256 | jb nextAddr112 ; Yes, go to the next address |
||
9257 | cmp ebx, [edi+4] ; Are we bigger? |
||
9258 | jbe callRoutine112 |
||
9259 | |||
9260 | nextAddr112: |
||
9261 | add edi, 10h ; Next structure! |
||
9262 | jmp short checkLoop112 |
||
9263 | |||
9264 | callRoutine112: |
||
9265 | mov dx, bx ; Get our address |
||
9266 | call ReadMemoryByte ; Standard read routine |
||
9267 | mov dl, al ; Put our returned value here |
||
9268 | mov ax, [_z80af] ; Get our AF back |
||
9269 | jmp short readExit112 |
||
9270 | |||
9271 | memoryRead112: |
||
9272 | mov dl, [ebp + ebx] ; Get our data |
||
9273 | |||
9274 | readExit112: |
||
9275 | mov edi, [cyclesRemaining] |
||
9276 | mov byte [_z80af], ah |
||
9277 | sahf |
||
9278 | cmp al, dl ; Do our comparison |
||
9279 | lahf |
||
9280 | and ah, 0fah ; No P/V or carry! |
||
9281 | dec cx ; Dec BC |
||
9282 | jz notBcZero113 |
||
9283 | or ah, 04h ; P/V set when BC not zero |
||
9284 | notBcZero113: |
||
9285 | or ah, 02h ; N Gets set when we do compares |
||
9286 | mov dl, byte [_z80af] |
||
9287 | and dl, 01h |
||
9288 | or ah, dl ; Preserve carry! |
||
9289 | inc bx ; Increment! |
||
9290 | sahf |
||
9291 | jz BCDone111 |
||
9292 | jnp BCDone111 |
||
9293 | sub edi, dword 21 |
||
9294 | js BCDoneExit111 |
||
9295 | jmp cpRepeat111 |
||
9296 | BCDoneExit111: |
||
9297 | sub esi, 2 ; Back up to the instruction again |
||
9298 | jmp noMoreExec |
||
9299 | |||
9300 | BCDone111: |
||
9301 | xor edx, edx |
||
9302 | sub edi, byte 16 |
||
9303 | js near noMoreExec |
||
9304 | mov dl, byte [esi] ; Get our next instruction |
||
9305 | inc esi ; Increment PC |
||
9306 | jmp dword [z80regular+edx*4] |
||
9307 | |||
9308 | |||
9309 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9310 | |||
9311 | EDInstb2: |
||
9312 | loopIt113: |
||
9313 | push cx ; Save BC |
||
9314 | xor ch, ch ; We want 8 bit ports |
||
9315 | mov [cyclesRemaining], edi |
||
9316 | mov edi, [_z80IoRead] ; Point to the read array |
||
9317 | |||
9318 | checkLoop114: |
||
9319 | cmp [edi], word 0ffffh ; End of the list? |
||
9320 | je ioRead114 |
||
9321 | cmp cx, [edi] ; Are we smaller? |
||
9322 | jb nextAddr114 ; Yes, go to the next address |
||
9323 | cmp cx, [edi+2] ; Are we bigger? |
||
9324 | jbe callRoutine114 |
||
9325 | |||
9326 | nextAddr114: |
||
9327 | add edi, 0ch ; Next structure! |
||
9328 | jmp short checkLoop114 |
||
9329 | |||
9330 | callRoutine114: |
||
9331 | mov dx, cx ; Get our address |
||
9332 | call ReadIOByte ; Standard read routine |
||
9333 | mov dl, al ; Put it in DL for later consumption |
||
9334 | mov ax, [_z80af] ; Get our AF back |
||
9335 | jmp short readExit114 |
||
9336 | |||
9337 | ioRead114: |
||
9338 | mov dl, 0ffh ; An unreferenced read |
||
9339 | readExit114: |
||
9340 | mov edi, [cyclesRemaining] |
||
9341 | pop cx ; Restore BC |
||
9342 | mov [cyclesRemaining], edi |
||
9343 | mov [_z80af], ax ; Store AF |
||
9344 | mov al, dl ; And our data to write |
||
9345 | mov edi, [_z80MemWrite] ; Point to the write array |
||
9346 | |||
9347 | checkLoop115: |
||
9348 | cmp [edi], word 0ffffh ; End of our list? |
||
9349 | je memoryWrite115 ; Yes - go write it! |
||
9350 | cmp bx, [edi] ; Are we smaller? |
||
9351 | jb nextAddr115 ; Yes... go to the next addr |
||
9352 | cmp bx, [edi+4] ; Are we smaller? |
||
9353 | jbe callRoutine115 ; If not, go call it! |
||
9354 | |||
9355 | nextAddr115: |
||
9356 | add edi, 10h ; Next structure, please |
||
9357 | jmp short checkLoop115 |
||
9358 | |||
9359 | callRoutine115: |
||
9360 | mov dx, bx ; Get our address to target |
||
9361 | call WriteMemoryByte ; Go write the data! |
||
9362 | jmp short WriteMacroExit115 |
||
9363 | memoryWrite115: |
||
9364 | mov [ebp + ebx], dl |
||
9365 | mov ax, [_z80af] ; Get our accumulator and flags |
||
9366 | WriteMacroExit115: |
||
9367 | mov edi, [cyclesRemaining] |
||
9368 | inc bx ; Increment HL |
||
9369 | dec ch ; Decrement B (of C) |
||
9370 | jz near finalExit113 |
||
9371 | sub edi, dword 21 |
||
9372 | js loopExit113 |
||
9373 | jmp loopIt113 |
||
9374 | |||
9375 | loopExit113: |
||
9376 | sub esi, 2 |
||
9377 | jmp noMoreExec |
||
9378 | |||
9379 | finalExit113: |
||
9380 | jnz clearFlag113 |
||
9381 | or ah, 040h ; Set the Zero flag! |
||
9382 | jmp short continue113 |
||
9383 | clearFlag113: |
||
9384 | and ah, 0bfh ; Clear the zero flag |
||
9385 | continue113: |
||
9386 | or ah, 02h ; Set negative! |
||
9387 | xor edx, edx |
||
9388 | sub edi, byte 16 |
||
9389 | js near noMoreExec |
||
9390 | mov dl, byte [esi] ; Get our next instruction |
||
9391 | inc esi ; Increment PC |
||
9392 | jmp dword [z80regular+edx*4] |
||
9393 | |||
9394 | |||
9395 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9396 | |||
9397 | EDInstb3: |
||
9398 | loopIt116: |
||
9399 | mov [cyclesRemaining], edi |
||
9400 | mov edi, [_z80MemRead] ; Point to the read array |
||
9401 | |||
9402 | checkLoop117: |
||
9403 | cmp [edi], word 0ffffh ; End of the list? |
||
9404 | je memoryRead117 |
||
9405 | cmp ebx, [edi] ; Are we smaller? |
||
9406 | jb nextAddr117 ; Yes, go to the next address |
||
9407 | cmp ebx, [edi+4] ; Are we bigger? |
||
9408 | jbe callRoutine117 |
||
9409 | |||
9410 | nextAddr117: |
||
9411 | add edi, 10h ; Next structure! |
||
9412 | jmp short checkLoop117 |
||
9413 | |||
9414 | callRoutine117: |
||
9415 | mov dx, bx ; Get our address |
||
9416 | call ReadMemoryByte ; Standard read routine |
||
9417 | mov dl, al ; Put our returned value here |
||
9418 | mov ax, [_z80af] ; Get our AF back |
||
9419 | jmp short readExit117 |
||
9420 | |||
9421 | memoryRead117: |
||
9422 | mov dl, [ebp + ebx] ; Get our data |
||
9423 | |||
9424 | readExit117: |
||
9425 | mov edi, [cyclesRemaining] |
||
9426 | push cx ; Save BC |
||
9427 | xor ch, ch ; No 16 bit for this instruction! |
||
9428 | mov [cyclesRemaining], edi |
||
9429 | mov [_z80af], ax ; Store AF |
||
9430 | mov al, dl ; And our data to write |
||
9431 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
9432 | |||
9433 | checkLoop118: |
||
9434 | cmp [edi], word 0ffffh ; End of our list? |
||
9435 | je WriteMacroExit118 ; Yes - ignore it! |
||
9436 | cmp cx, [edi] ; Are we smaller? |
||
9437 | jb nextAddr118 ; Yes... go to the next addr |
||
9438 | cmp cx, [edi+2] ; Are we bigger? |
||
9439 | jbe callRoutine118 ; If not, go call it! |
||
9440 | |||
9441 | nextAddr118: |
||
9442 | add edi, 0ch ; Next structure, please |
||
9443 | jmp short checkLoop118 |
||
9444 | |||
9445 | callRoutine118: |
||
9446 | mov dx, cx ; Get our address to target |
||
9447 | call WriteIOByte ; Go write the data! |
||
9448 | WriteMacroExit118: |
||
9449 | mov edi, [cyclesRemaining] |
||
9450 | pop cx ; Restore BC now that it has been "OUT"ed |
||
9451 | inc bx ; Increment HL |
||
9452 | dec ch ; Decrement B (of C) |
||
9453 | jz near finalExit116 |
||
9454 | sub edi, dword 21 |
||
9455 | js loopExit116 |
||
9456 | jmp loopIt116 |
||
9457 | |||
9458 | loopExit116: |
||
9459 | sub esi, 2 |
||
9460 | jmp noMoreExec |
||
9461 | |||
9462 | finalExit116: |
||
9463 | jnz clearFlag116 |
||
9464 | or ah, 040h ; Set the Zero flag! |
||
9465 | jmp short continue116 |
||
9466 | clearFlag116: |
||
9467 | and ah, 0bfh ; Clear the zero flag |
||
9468 | continue116: |
||
9469 | or ah, 02h ; Set negative! |
||
9470 | xor edx, edx |
||
9471 | sub edi, byte 16 |
||
9472 | js near noMoreExec |
||
9473 | mov dl, byte [esi] ; Get our next instruction |
||
9474 | inc esi ; Increment PC |
||
9475 | jmp dword [z80regular+edx*4] |
||
9476 | |||
9477 | |||
9478 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9479 | |||
9480 | EDInstb8: |
||
9481 | ldRepeat119: |
||
9482 | mov [cyclesRemaining], edi |
||
9483 | mov edi, [_z80MemRead] ; Point to the read array |
||
9484 | |||
9485 | checkLoop119: |
||
9486 | cmp [edi], word 0ffffh ; End of the list? |
||
9487 | je memoryRead119 |
||
9488 | cmp ebx, [edi] ; Are we smaller? |
||
9489 | jb nextAddr119 ; Yes, go to the next address |
||
9490 | cmp ebx, [edi+4] ; Are we bigger? |
||
9491 | jbe callRoutine119 |
||
9492 | |||
9493 | nextAddr119: |
||
9494 | add edi, 10h ; Next structure! |
||
9495 | jmp short checkLoop119 |
||
9496 | |||
9497 | callRoutine119: |
||
9498 | mov dx, bx ; Get our address |
||
9499 | call ReadMemoryByte ; Standard read routine |
||
9500 | mov dl, al ; Put our returned value here |
||
9501 | mov ax, [_z80af] ; Get our AF back |
||
9502 | jmp short readExit119 |
||
9503 | |||
9504 | memoryRead119: |
||
9505 | mov dl, [ebp + ebx] ; Get our data |
||
9506 | |||
9507 | readExit119: |
||
9508 | mov edi, [cyclesRemaining] |
||
9509 | mov [cyclesRemaining], edi |
||
9510 | mov [_z80af], ax ; Store AF |
||
9511 | mov al, dl ; And our data to write |
||
9512 | mov dx, [_z80de] |
||
9513 | mov edi, [_z80MemWrite] ; Point to the write array |
||
9514 | |||
9515 | checkLoop120: |
||
9516 | cmp [edi], word 0ffffh ; End of our list? |
||
9517 | je memoryWrite120 ; Yes - go write it! |
||
9518 | cmp dx, [edi] ; Are we smaller? |
||
9519 | jb nextAddr120 ; Yes... go to the next addr |
||
9520 | cmp dx, [edi+4] ; Are we smaller? |
||
9521 | jbe callRoutine120 ; If not, go call it! |
||
9522 | |||
9523 | nextAddr120: |
||
9524 | add edi, 10h ; Next structure, please |
||
9525 | jmp short checkLoop120 |
||
9526 | |||
9527 | callRoutine120: |
||
9528 | call WriteMemoryByte ; Go write the data! |
||
9529 | jmp short WriteMacroExit120 |
||
9530 | memoryWrite120: |
||
9531 | mov [ebp + edx], al |
||
9532 | mov ax, [_z80af] ; Get our accumulator and flags |
||
9533 | WriteMacroExit120: |
||
9534 | mov edi, [cyclesRemaining] |
||
9535 | dec bx ; Decrement HL |
||
9536 | dec word [_z80de] ; Decrement DE |
||
9537 | dec cx ; Decrement BC |
||
9538 | jz noMore121 |
||
9539 | sub edi, dword 16 ; 16 T-States per iteration |
||
9540 | js noMore121 |
||
9541 | jmp ldRepeat119 ; Loop until we're done! |
||
9542 | noMore121: |
||
9543 | and ah, 0e9h ; Knock out H & N and P/V |
||
9544 | or cx, cx ; Flag BC |
||
9545 | jz atZero121 ; We're done! |
||
9546 | or ah, 04h ; Non-zero - we're still going! |
||
9547 | sub esi, 2 ; Adjust back to the beginning of the instruction |
||
9548 | jmp noMoreExec |
||
9549 | |||
9550 | atZero121: |
||
9551 | xor edx, edx ; Make sure we don't hose things |
||
9552 | sub edi, byte 16 |
||
9553 | js near noMoreExec |
||
9554 | mov dl, byte [esi] ; Get our next instruction |
||
9555 | inc esi ; Increment PC |
||
9556 | jmp dword [z80regular+edx*4] |
||
9557 | |||
9558 | |||
9559 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9560 | |||
9561 | EDInstb9: |
||
9562 | cpRepeat122: |
||
9563 | mov [cyclesRemaining], edi |
||
9564 | mov edi, [_z80MemRead] ; Point to the read array |
||
9565 | |||
9566 | checkLoop123: |
||
9567 | cmp [edi], word 0ffffh ; End of the list? |
||
9568 | je memoryRead123 |
||
9569 | cmp ebx, [edi] ; Are we smaller? |
||
9570 | jb nextAddr123 ; Yes, go to the next address |
||
9571 | cmp ebx, [edi+4] ; Are we bigger? |
||
9572 | jbe callRoutine123 |
||
9573 | |||
9574 | nextAddr123: |
||
9575 | add edi, 10h ; Next structure! |
||
9576 | jmp short checkLoop123 |
||
9577 | |||
9578 | callRoutine123: |
||
9579 | mov dx, bx ; Get our address |
||
9580 | call ReadMemoryByte ; Standard read routine |
||
9581 | mov dl, al ; Put our returned value here |
||
9582 | mov ax, [_z80af] ; Get our AF back |
||
9583 | jmp short readExit123 |
||
9584 | |||
9585 | memoryRead123: |
||
9586 | mov dl, [ebp + ebx] ; Get our data |
||
9587 | |||
9588 | readExit123: |
||
9589 | mov edi, [cyclesRemaining] |
||
9590 | mov byte [_z80af], ah |
||
9591 | sahf |
||
9592 | cmp al, dl ; Do our comparison |
||
9593 | lahf |
||
9594 | and ah, 0fah ; No P/V or carry! |
||
9595 | dec cx ; Dec BC |
||
9596 | jz notBcZero124 |
||
9597 | or ah, 04h ; P/V set when BC not zero |
||
9598 | notBcZero124: |
||
9599 | or ah, 02h ; N Gets set when we do compares |
||
9600 | mov dl, byte [_z80af] |
||
9601 | and dl, 01h |
||
9602 | or ah, dl ; Preserve carry! |
||
9603 | dec bx ; Decrement! |
||
9604 | sahf |
||
9605 | jz BCDone122 |
||
9606 | jnp BCDone122 |
||
9607 | sub edi, dword 21 |
||
9608 | js BCDoneExit122 |
||
9609 | jmp cpRepeat122 |
||
9610 | BCDoneExit122: |
||
9611 | sub esi, 2 ; Back up to the instruction again |
||
9612 | jmp noMoreExec |
||
9613 | |||
9614 | BCDone122: |
||
9615 | xor edx, edx |
||
9616 | sub edi, byte 16 |
||
9617 | js near noMoreExec |
||
9618 | mov dl, byte [esi] ; Get our next instruction |
||
9619 | inc esi ; Increment PC |
||
9620 | jmp dword [z80regular+edx*4] |
||
9621 | |||
9622 | |||
9623 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9624 | |||
9625 | EDInstba: |
||
9626 | loopIt124: |
||
9627 | push cx ; Save BC |
||
9628 | xor ch, ch ; We want 8 bit ports |
||
9629 | mov [cyclesRemaining], edi |
||
9630 | mov edi, [_z80IoRead] ; Point to the read array |
||
9631 | |||
9632 | checkLoop125: |
||
9633 | cmp [edi], word 0ffffh ; End of the list? |
||
9634 | je ioRead125 |
||
9635 | cmp cx, [edi] ; Are we smaller? |
||
9636 | jb nextAddr125 ; Yes, go to the next address |
||
9637 | cmp cx, [edi+2] ; Are we bigger? |
||
9638 | jbe callRoutine125 |
||
9639 | |||
9640 | nextAddr125: |
||
9641 | add edi, 0ch ; Next structure! |
||
9642 | jmp short checkLoop125 |
||
9643 | |||
9644 | callRoutine125: |
||
9645 | mov dx, cx ; Get our address |
||
9646 | call ReadIOByte ; Standard read routine |
||
9647 | mov dl, al ; Put it in DL for later consumption |
||
9648 | mov ax, [_z80af] ; Get our AF back |
||
9649 | jmp short readExit125 |
||
9650 | |||
9651 | ioRead125: |
||
9652 | mov dl, 0ffh ; An unreferenced read |
||
9653 | readExit125: |
||
9654 | mov edi, [cyclesRemaining] |
||
9655 | pop cx ; Restore BC |
||
9656 | mov [cyclesRemaining], edi |
||
9657 | mov [_z80af], ax ; Store AF |
||
9658 | mov al, dl ; And our data to write |
||
9659 | mov edi, [_z80MemWrite] ; Point to the write array |
||
9660 | |||
9661 | checkLoop126: |
||
9662 | cmp [edi], word 0ffffh ; End of our list? |
||
9663 | je memoryWrite126 ; Yes - go write it! |
||
9664 | cmp bx, [edi] ; Are we smaller? |
||
9665 | jb nextAddr126 ; Yes... go to the next addr |
||
9666 | cmp bx, [edi+4] ; Are we smaller? |
||
9667 | jbe callRoutine126 ; If not, go call it! |
||
9668 | |||
9669 | nextAddr126: |
||
9670 | add edi, 10h ; Next structure, please |
||
9671 | jmp short checkLoop126 |
||
9672 | |||
9673 | callRoutine126: |
||
9674 | mov dx, bx ; Get our address to target |
||
9675 | call WriteMemoryByte ; Go write the data! |
||
9676 | jmp short WriteMacroExit126 |
||
9677 | memoryWrite126: |
||
9678 | mov [ebp + ebx], dl |
||
9679 | mov ax, [_z80af] ; Get our accumulator and flags |
||
9680 | WriteMacroExit126: |
||
9681 | mov edi, [cyclesRemaining] |
||
9682 | dec bx ; Decrement HL |
||
9683 | dec ch ; Decrement B (of C) |
||
9684 | jz near finalExit124 |
||
9685 | sub edi, dword 21 |
||
9686 | js loopExit124 |
||
9687 | jmp loopIt124 |
||
9688 | |||
9689 | loopExit124: |
||
9690 | sub esi, 2 |
||
9691 | jmp noMoreExec |
||
9692 | |||
9693 | finalExit124: |
||
9694 | jnz clearFlag124 |
||
9695 | or ah, 040h ; Set the Zero flag! |
||
9696 | jmp short continue124 |
||
9697 | clearFlag124: |
||
9698 | and ah, 0bfh ; Clear the zero flag |
||
9699 | continue124: |
||
9700 | or ah, 02h ; Set negative! |
||
9701 | xor edx, edx |
||
9702 | sub edi, byte 16 |
||
9703 | js near noMoreExec |
||
9704 | mov dl, byte [esi] ; Get our next instruction |
||
9705 | inc esi ; Increment PC |
||
9706 | jmp dword [z80regular+edx*4] |
||
9707 | |||
9708 | |||
9709 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9710 | |||
9711 | EDInstbb: |
||
9712 | loopIt127: |
||
9713 | mov [cyclesRemaining], edi |
||
9714 | mov edi, [_z80MemRead] ; Point to the read array |
||
9715 | |||
9716 | checkLoop128: |
||
9717 | cmp [edi], word 0ffffh ; End of the list? |
||
9718 | je memoryRead128 |
||
9719 | cmp ebx, [edi] ; Are we smaller? |
||
9720 | jb nextAddr128 ; Yes, go to the next address |
||
9721 | cmp ebx, [edi+4] ; Are we bigger? |
||
9722 | jbe callRoutine128 |
||
9723 | |||
9724 | nextAddr128: |
||
9725 | add edi, 10h ; Next structure! |
||
9726 | jmp short checkLoop128 |
||
9727 | |||
9728 | callRoutine128: |
||
9729 | mov dx, bx ; Get our address |
||
9730 | call ReadMemoryByte ; Standard read routine |
||
9731 | mov dl, al ; Put our returned value here |
||
9732 | mov ax, [_z80af] ; Get our AF back |
||
9733 | jmp short readExit128 |
||
9734 | |||
9735 | memoryRead128: |
||
9736 | mov dl, [ebp + ebx] ; Get our data |
||
9737 | |||
9738 | readExit128: |
||
9739 | mov edi, [cyclesRemaining] |
||
9740 | push cx ; Save BC |
||
9741 | xor ch, ch ; No 16 bit for this instruction! |
||
9742 | mov [cyclesRemaining], edi |
||
9743 | mov [_z80af], ax ; Store AF |
||
9744 | mov al, dl ; And our data to write |
||
9745 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
9746 | |||
9747 | checkLoop129: |
||
9748 | cmp [edi], word 0ffffh ; End of our list? |
||
9749 | je WriteMacroExit129 ; Yes - ignore it! |
||
9750 | cmp cx, [edi] ; Are we smaller? |
||
9751 | jb nextAddr129 ; Yes... go to the next addr |
||
9752 | cmp cx, [edi+2] ; Are we bigger? |
||
9753 | jbe callRoutine129 ; If not, go call it! |
||
9754 | |||
9755 | nextAddr129: |
||
9756 | add edi, 0ch ; Next structure, please |
||
9757 | jmp short checkLoop129 |
||
9758 | |||
9759 | callRoutine129: |
||
9760 | mov dx, cx ; Get our address to target |
||
9761 | call WriteIOByte ; Go write the data! |
||
9762 | WriteMacroExit129: |
||
9763 | mov edi, [cyclesRemaining] |
||
9764 | pop cx ; Restore BC now that it has been "OUT"ed |
||
9765 | dec bx ; Decrement HL |
||
9766 | dec ch ; Decrement B (of C) |
||
9767 | jz near finalExit127 |
||
9768 | sub edi, dword 21 |
||
9769 | js loopExit127 |
||
9770 | jmp loopIt127 |
||
9771 | |||
9772 | loopExit127: |
||
9773 | sub esi, 2 |
||
9774 | jmp noMoreExec |
||
9775 | |||
9776 | finalExit127: |
||
9777 | jnz clearFlag127 |
||
9778 | or ah, 040h ; Set the Zero flag! |
||
9779 | jmp short continue127 |
||
9780 | clearFlag127: |
||
9781 | and ah, 0bfh ; Clear the zero flag |
||
9782 | continue127: |
||
9783 | or ah, 02h ; Set negative! |
||
9784 | xor edx, edx |
||
9785 | sub edi, byte 16 |
||
9786 | js near noMoreExec |
||
9787 | mov dl, byte [esi] ; Get our next instruction |
||
9788 | inc esi ; Increment PC |
||
9789 | jmp dword [z80regular+edx*4] |
||
9790 | |||
9791 | |||
9792 | |||
9793 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9794 | |||
9795 | DDInst09: |
||
9796 | mov dh, ah ; Get our flags |
||
9797 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
9798 | mov [cyclesRemaining], edi |
||
9799 | mov di, [_z80ix] ; Get our value |
||
9800 | mov [_orgval], di ; Store our original value |
||
9801 | add di, cx |
||
9802 | lahf |
||
9803 | mov [_z80ix], di ; Store our register back |
||
9804 | mov di, [_orgval] ; Get original |
||
9805 | xor di, word [_z80ix] ; XOR It with our computed value |
||
9806 | xor di, cx |
||
9807 | and di, 1000h ; Just our half carry |
||
9808 | or dx, di ; Or in our flags |
||
9809 | and ah, 01h ; Just carry |
||
9810 | or ah, dh |
||
9811 | mov edi, [cyclesRemaining] |
||
9812 | xor edx, edx |
||
9813 | sub edi, byte 15 |
||
9814 | js near noMoreExec |
||
9815 | mov dl, byte [esi] ; Get our next instruction |
||
9816 | inc esi ; Increment PC |
||
9817 | jmp dword [z80regular+edx*4] |
||
9818 | |||
9819 | |||
9820 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9821 | |||
9822 | DDInst19: |
||
9823 | mov dh, ah ; Get our flags |
||
9824 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
9825 | mov [cyclesRemaining], edi |
||
9826 | mov di, [_z80ix] ; Get our value |
||
9827 | mov [_orgval], di ; Store our original value |
||
9828 | add di, word [_z80de] |
||
9829 | lahf |
||
9830 | mov [_z80ix], di ; Store our register back |
||
9831 | mov di, [_orgval] ; Get original |
||
9832 | xor di, word [_z80ix] ; XOR It with our computed value |
||
9833 | xor di, word [_z80de] |
||
9834 | and di, 1000h ; Just our half carry |
||
9835 | or dx, di ; Or in our flags |
||
9836 | and ah, 01h ; Just carry |
||
9837 | or ah, dh |
||
9838 | mov edi, [cyclesRemaining] |
||
9839 | xor edx, edx |
||
9840 | sub edi, byte 15 |
||
9841 | js near noMoreExec |
||
9842 | mov dl, byte [esi] ; Get our next instruction |
||
9843 | inc esi ; Increment PC |
||
9844 | jmp dword [z80regular+edx*4] |
||
9845 | |||
9846 | |||
9847 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9848 | |||
9849 | DDInst21: |
||
9850 | mov dx, [esi] ; Get our word to load |
||
9851 | add esi, 2 ; Advance past the word |
||
9852 | mov [_z80ix], dx ; Store our new value |
||
9853 | xor edx, edx |
||
9854 | sub edi, byte 14 |
||
9855 | js near noMoreExec |
||
9856 | mov dl, byte [esi] ; Get our next instruction |
||
9857 | inc esi ; Increment PC |
||
9858 | jmp dword [z80regular+edx*4] |
||
9859 | |||
9860 | |||
9861 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9862 | |||
9863 | DDInst22: |
||
9864 | mov dx, [esi] ; Get our address to store |
||
9865 | add esi, 2 |
||
9866 | mov [_orgval], dx |
||
9867 | mov dl, [_z80ix] |
||
9868 | mov [cyclesRemaining], edi |
||
9869 | mov [_z80af], ax ; Store AF |
||
9870 | mov al, dl ; And our data to write |
||
9871 | mov dx, [_orgval] |
||
9872 | mov edi, [_z80MemWrite] ; Point to the write array |
||
9873 | |||
9874 | checkLoop130: |
||
9875 | cmp [edi], word 0ffffh ; End of our list? |
||
9876 | je memoryWrite130 ; Yes - go write it! |
||
9877 | cmp dx, [edi] ; Are we smaller? |
||
9878 | jb nextAddr130 ; Yes... go to the next addr |
||
9879 | cmp dx, [edi+4] ; Are we smaller? |
||
9880 | jbe callRoutine130 ; If not, go call it! |
||
9881 | |||
9882 | nextAddr130: |
||
9883 | add edi, 10h ; Next structure, please |
||
9884 | jmp short checkLoop130 |
||
9885 | |||
9886 | callRoutine130: |
||
9887 | call WriteMemoryByte ; Go write the data! |
||
9888 | jmp short WriteMacroExit130 |
||
9889 | memoryWrite130: |
||
9890 | mov [ebp + edx], al |
||
9891 | mov ax, [_z80af] ; Get our accumulator and flags |
||
9892 | WriteMacroExit130: |
||
9893 | mov edi, [cyclesRemaining] |
||
9894 | inc word [_orgval] |
||
9895 | mov dl, [_z80ix + 1] |
||
9896 | mov [cyclesRemaining], edi |
||
9897 | mov [_z80af], ax ; Store AF |
||
9898 | mov al, dl ; And our data to write |
||
9899 | mov dx, [_orgval] |
||
9900 | mov edi, [_z80MemWrite] ; Point to the write array |
||
9901 | |||
9902 | checkLoop131: |
||
9903 | cmp [edi], word 0ffffh ; End of our list? |
||
9904 | je memoryWrite131 ; Yes - go write it! |
||
9905 | cmp dx, [edi] ; Are we smaller? |
||
9906 | jb nextAddr131 ; Yes... go to the next addr |
||
9907 | cmp dx, [edi+4] ; Are we smaller? |
||
9908 | jbe callRoutine131 ; If not, go call it! |
||
9909 | |||
9910 | nextAddr131: |
||
9911 | add edi, 10h ; Next structure, please |
||
9912 | jmp short checkLoop131 |
||
9913 | |||
9914 | callRoutine131: |
||
9915 | call WriteMemoryByte ; Go write the data! |
||
9916 | jmp short WriteMacroExit131 |
||
9917 | memoryWrite131: |
||
9918 | mov [ebp + edx], al |
||
9919 | mov ax, [_z80af] ; Get our accumulator and flags |
||
9920 | WriteMacroExit131: |
||
9921 | mov edi, [cyclesRemaining] |
||
9922 | xor edx, edx |
||
9923 | sub edi, byte 20 |
||
9924 | js near noMoreExec |
||
9925 | mov dl, byte [esi] ; Get our next instruction |
||
9926 | inc esi ; Increment PC |
||
9927 | jmp dword [z80regular+edx*4] |
||
9928 | |||
9929 | |||
9930 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9931 | |||
9932 | DDInst23: |
||
9933 | inc word [_z80ix] ; Increment our mz80Index register |
||
9934 | sub edi, byte 10 |
||
9935 | js near noMoreExec |
||
9936 | mov dl, byte [esi] ; Get our next instruction |
||
9937 | inc esi ; Increment PC |
||
9938 | jmp dword [z80regular+edx*4] |
||
9939 | |||
9940 | |||
9941 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9942 | |||
9943 | DDInst24: |
||
9944 | sahf |
||
9945 | inc byte [_z80ix + 1] |
||
9946 | lahf |
||
9947 | seto dl |
||
9948 | and ah, 0fbh ; Knock out parity/overflow |
||
9949 | shl dl, 2 |
||
9950 | or ah, dl |
||
9951 | and ah, 0fdh ; Knock out N! |
||
9952 | sub edi, byte 9 |
||
9953 | js near noMoreExec |
||
9954 | mov dl, byte [esi] ; Get our next instruction |
||
9955 | inc esi ; Increment PC |
||
9956 | jmp dword [z80regular+edx*4] |
||
9957 | |||
9958 | |||
9959 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9960 | |||
9961 | DDInst25: |
||
9962 | sahf |
||
9963 | dec byte [_z80ix + 1] |
||
9964 | lahf |
||
9965 | seto dl |
||
9966 | and ah, 0fbh ; Knock out parity/overflow |
||
9967 | shl dl, 2 |
||
9968 | or ah, dl |
||
9969 | or ah, 02h ; Set negative! |
||
9970 | sub edi, byte 9 |
||
9971 | js near noMoreExec |
||
9972 | mov dl, byte [esi] ; Get our next instruction |
||
9973 | inc esi ; Increment PC |
||
9974 | jmp dword [z80regular+edx*4] |
||
9975 | |||
9976 | |||
9977 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9978 | |||
9979 | DDInst26: |
||
9980 | mov dl, [esi] ; Get immediate byte to load |
||
9981 | inc esi ; Next byte |
||
9982 | mov byte [_z80ix + 1], dl |
||
9983 | sub edi, byte 9 |
||
9984 | js near noMoreExec |
||
9985 | mov dl, byte [esi] ; Get our next instruction |
||
9986 | inc esi ; Increment PC |
||
9987 | jmp dword [z80regular+edx*4] |
||
9988 | |||
9989 | |||
9990 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
9991 | |||
9992 | DDInst29: |
||
9993 | mov dh, ah ; Get our flags |
||
9994 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
9995 | mov [cyclesRemaining], edi |
||
9996 | mov di, [_z80ix] ; Get our value |
||
9997 | mov [_orgval], di ; Store our original value |
||
9998 | add di, di |
||
9999 | lahf |
||
10000 | mov [_z80ix], di ; Store our register back |
||
10001 | mov di, [_orgval] ; Get original |
||
10002 | xor di, word [_z80ix] ; XOR It with our computed value |
||
10003 | xor di, di |
||
10004 | and di, 1000h ; Just our half carry |
||
10005 | or dx, di ; Or in our flags |
||
10006 | and ah, 01h ; Just carry |
||
10007 | or ah, dh |
||
10008 | mov edi, [cyclesRemaining] |
||
10009 | xor edx, edx |
||
10010 | sub edi, byte 15 |
||
10011 | js near noMoreExec |
||
10012 | mov dl, byte [esi] ; Get our next instruction |
||
10013 | inc esi ; Increment PC |
||
10014 | jmp dword [z80regular+edx*4] |
||
10015 | |||
10016 | |||
10017 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10018 | |||
10019 | DDInst2a: |
||
10020 | mov dx, [esi] ; Get our address to store |
||
10021 | add esi, 2 |
||
10022 | mov [cyclesRemaining], edi |
||
10023 | mov edi, [_z80MemRead] ; Point to the read array |
||
10024 | |||
10025 | checkLoop132: |
||
10026 | cmp [edi], word 0ffffh ; End of the list? |
||
10027 | je memoryRead132 |
||
10028 | cmp dx, [edi] ; Are we smaller? |
||
10029 | jb nextAddr132 ; Yes, go to the next address |
||
10030 | cmp dx, [edi+4] ; Are we bigger? |
||
10031 | jbe callRoutine132 |
||
10032 | |||
10033 | nextAddr132: |
||
10034 | add edi, 10h ; Next structure! |
||
10035 | jmp short checkLoop132 |
||
10036 | |||
10037 | callRoutine132: |
||
10038 | push ax ; Save this for later |
||
10039 | push dx ; Save address |
||
10040 | call ReadMemoryByte ; Standard read routine |
||
10041 | pop dx ; Restore our address |
||
10042 | inc dx ; Next byte, please |
||
10043 | push ax ; Save returned byte |
||
10044 | call ReadMemoryByte ; Standard read routine |
||
10045 | xchg ah, al ; Swap for endian's sake |
||
10046 | pop dx ; Restore LSB |
||
10047 | mov dh, ah ; Our word is now in DX |
||
10048 | pop ax ; Restore this |
||
10049 | mov [_z80ix], dx ; Store our word |
||
10050 | jmp readExit132 |
||
10051 | |||
10052 | memoryRead132: |
||
10053 | mov dx, [ebp + edx] |
||
10054 | mov [_z80ix], dx |
||
10055 | readExit132: |
||
10056 | mov edi, [cyclesRemaining] |
||
10057 | xor edx, edx |
||
10058 | sub edi, byte 20 |
||
10059 | js near noMoreExec |
||
10060 | mov dl, byte [esi] ; Get our next instruction |
||
10061 | inc esi ; Increment PC |
||
10062 | jmp dword [z80regular+edx*4] |
||
10063 | |||
10064 | |||
10065 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10066 | |||
10067 | DDInst2b: |
||
10068 | dec word [_z80ix] ; Increment our mz80Index register |
||
10069 | sub edi, byte 10 |
||
10070 | js near noMoreExec |
||
10071 | mov dl, byte [esi] ; Get our next instruction |
||
10072 | inc esi ; Increment PC |
||
10073 | jmp dword [z80regular+edx*4] |
||
10074 | |||
10075 | |||
10076 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10077 | |||
10078 | DDInst2c: |
||
10079 | sahf |
||
10080 | inc byte [_z80ix] |
||
10081 | lahf |
||
10082 | seto dl |
||
10083 | and ah, 0fbh ; Knock out parity/overflow |
||
10084 | shl dl, 2 |
||
10085 | or ah, dl |
||
10086 | and ah, 0fdh ; Knock out N! |
||
10087 | sub edi, byte 9 |
||
10088 | js near noMoreExec |
||
10089 | mov dl, byte [esi] ; Get our next instruction |
||
10090 | inc esi ; Increment PC |
||
10091 | jmp dword [z80regular+edx*4] |
||
10092 | |||
10093 | |||
10094 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10095 | |||
10096 | DDInst2d: |
||
10097 | sahf |
||
10098 | dec byte [_z80ix] |
||
10099 | lahf |
||
10100 | seto dl |
||
10101 | and ah, 0fbh ; Knock out parity/overflow |
||
10102 | shl dl, 2 |
||
10103 | or ah, dl |
||
10104 | or ah, 02h ; Set negative! |
||
10105 | sub edi, byte 9 |
||
10106 | js near noMoreExec |
||
10107 | mov dl, byte [esi] ; Get our next instruction |
||
10108 | inc esi ; Increment PC |
||
10109 | jmp dword [z80regular+edx*4] |
||
10110 | |||
10111 | |||
10112 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10113 | |||
10114 | DDInst2e: |
||
10115 | mov dl, [esi] ; Get immediate byte to load |
||
10116 | inc esi ; Next byte |
||
10117 | mov byte [_z80ix], dl |
||
10118 | sub edi, byte 9 |
||
10119 | js near noMoreExec |
||
10120 | mov dl, byte [esi] ; Get our next instruction |
||
10121 | inc esi ; Increment PC |
||
10122 | jmp dword [z80regular+edx*4] |
||
10123 | |||
10124 | |||
10125 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10126 | |||
10127 | DDInst34: |
||
10128 | mov dl, [esi] ; Fetch our offset |
||
10129 | inc esi ; Move past the offset |
||
10130 | or dl, dl ; Is this bad boy signed? |
||
10131 | jns notSigned133 ; Nope! |
||
10132 | dec dh ; Make it FFable |
||
10133 | notSigned133: |
||
10134 | add dx, [_z80ix] ; Our offset! |
||
10135 | mov [_orgval], dx |
||
10136 | mov [cyclesRemaining], edi |
||
10137 | mov edi, [_z80MemRead] ; Point to the read array |
||
10138 | |||
10139 | checkLoop134: |
||
10140 | cmp [edi], word 0ffffh ; End of the list? |
||
10141 | je memoryRead134 |
||
10142 | cmp edx, [edi] ; Are we smaller? |
||
10143 | jb nextAddr134 ; Yes, go to the next address |
||
10144 | cmp edx, [edi+4] ; Are we bigger? |
||
10145 | jbe callRoutine134 |
||
10146 | |||
10147 | nextAddr134: |
||
10148 | add edi, 10h ; Next structure! |
||
10149 | jmp short checkLoop134 |
||
10150 | |||
10151 | callRoutine134: |
||
10152 | call ReadMemoryByte ; Standard read routine |
||
10153 | mov dl, al ; Put our returned value here |
||
10154 | mov ax, [_z80af] ; Get our AF back |
||
10155 | jmp short readExit134 |
||
10156 | |||
10157 | memoryRead134: |
||
10158 | mov dl, [ebp + edx] ; Get our data |
||
10159 | |||
10160 | readExit134: |
||
10161 | mov edi, [cyclesRemaining] |
||
10162 | sahf |
||
10163 | inc dl |
||
10164 | lahf |
||
10165 | o16 pushf |
||
10166 | shl edx, 16 |
||
10167 | and ah, 0fbh ; Knock out parity/overflow |
||
10168 | pop dx |
||
10169 | and dh, 08h ; Just the overflow |
||
10170 | shr dh, 1 ; Shift it into position |
||
10171 | or ah, dh ; OR It in with the real flags |
||
10172 | shr edx, 16 |
||
10173 | and ah, 0fdh ; Knock out N! |
||
10174 | mov [cyclesRemaining], edi |
||
10175 | mov [_z80af], ax ; Store AF |
||
10176 | mov al, dl ; And our data to write |
||
10177 | mov dx, [_orgval] |
||
10178 | mov edi, [_z80MemWrite] ; Point to the write array |
||
10179 | |||
10180 | checkLoop135: |
||
10181 | cmp [edi], word 0ffffh ; End of our list? |
||
10182 | je memoryWrite135 ; Yes - go write it! |
||
10183 | cmp dx, [edi] ; Are we smaller? |
||
10184 | jb nextAddr135 ; Yes... go to the next addr |
||
10185 | cmp dx, [edi+4] ; Are we smaller? |
||
10186 | jbe callRoutine135 ; If not, go call it! |
||
10187 | |||
10188 | nextAddr135: |
||
10189 | add edi, 10h ; Next structure, please |
||
10190 | jmp short checkLoop135 |
||
10191 | |||
10192 | callRoutine135: |
||
10193 | call WriteMemoryByte ; Go write the data! |
||
10194 | jmp short WriteMacroExit135 |
||
10195 | memoryWrite135: |
||
10196 | mov [ebp + edx], al |
||
10197 | mov ax, [_z80af] ; Get our accumulator and flags |
||
10198 | WriteMacroExit135: |
||
10199 | mov edi, [cyclesRemaining] |
||
10200 | xor edx, edx |
||
10201 | sub edi, byte 23 |
||
10202 | js near noMoreExec |
||
10203 | mov dl, byte [esi] ; Get our next instruction |
||
10204 | inc esi ; Increment PC |
||
10205 | jmp dword [z80regular+edx*4] |
||
10206 | |||
10207 | |||
10208 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10209 | |||
10210 | DDInst35: |
||
10211 | mov dl, [esi] ; Fetch our offset |
||
10212 | inc esi ; Move past the offset |
||
10213 | or dl, dl ; Is this bad boy signed? |
||
10214 | jns notSigned136 ; Nope! |
||
10215 | dec dh ; Make it FFable |
||
10216 | notSigned136: |
||
10217 | add dx, [_z80ix] ; Our offset! |
||
10218 | mov [_orgval], dx |
||
10219 | mov [cyclesRemaining], edi |
||
10220 | mov edi, [_z80MemRead] ; Point to the read array |
||
10221 | |||
10222 | checkLoop137: |
||
10223 | cmp [edi], word 0ffffh ; End of the list? |
||
10224 | je memoryRead137 |
||
10225 | cmp edx, [edi] ; Are we smaller? |
||
10226 | jb nextAddr137 ; Yes, go to the next address |
||
10227 | cmp edx, [edi+4] ; Are we bigger? |
||
10228 | jbe callRoutine137 |
||
10229 | |||
10230 | nextAddr137: |
||
10231 | add edi, 10h ; Next structure! |
||
10232 | jmp short checkLoop137 |
||
10233 | |||
10234 | callRoutine137: |
||
10235 | call ReadMemoryByte ; Standard read routine |
||
10236 | mov dl, al ; Put our returned value here |
||
10237 | mov ax, [_z80af] ; Get our AF back |
||
10238 | jmp short readExit137 |
||
10239 | |||
10240 | memoryRead137: |
||
10241 | mov dl, [ebp + edx] ; Get our data |
||
10242 | |||
10243 | readExit137: |
||
10244 | mov edi, [cyclesRemaining] |
||
10245 | sahf |
||
10246 | dec dl |
||
10247 | lahf |
||
10248 | o16 pushf |
||
10249 | shl edx, 16 |
||
10250 | and ah, 0fbh ; Knock out parity/overflow |
||
10251 | pop dx |
||
10252 | and dh, 08h ; Just the overflow |
||
10253 | shr dh, 1 ; Shift it into position |
||
10254 | or ah, dh ; OR It in with the real flags |
||
10255 | shr edx, 16 |
||
10256 | or ah, 02h ; Make it N! |
||
10257 | mov [cyclesRemaining], edi |
||
10258 | mov [_z80af], ax ; Store AF |
||
10259 | mov al, dl ; And our data to write |
||
10260 | mov dx, [_orgval] |
||
10261 | mov edi, [_z80MemWrite] ; Point to the write array |
||
10262 | |||
10263 | checkLoop138: |
||
10264 | cmp [edi], word 0ffffh ; End of our list? |
||
10265 | je memoryWrite138 ; Yes - go write it! |
||
10266 | cmp dx, [edi] ; Are we smaller? |
||
10267 | jb nextAddr138 ; Yes... go to the next addr |
||
10268 | cmp dx, [edi+4] ; Are we smaller? |
||
10269 | jbe callRoutine138 ; If not, go call it! |
||
10270 | |||
10271 | nextAddr138: |
||
10272 | add edi, 10h ; Next structure, please |
||
10273 | jmp short checkLoop138 |
||
10274 | |||
10275 | callRoutine138: |
||
10276 | call WriteMemoryByte ; Go write the data! |
||
10277 | jmp short WriteMacroExit138 |
||
10278 | memoryWrite138: |
||
10279 | mov [ebp + edx], al |
||
10280 | mov ax, [_z80af] ; Get our accumulator and flags |
||
10281 | WriteMacroExit138: |
||
10282 | mov edi, [cyclesRemaining] |
||
10283 | xor edx, edx |
||
10284 | sub edi, byte 23 |
||
10285 | js near noMoreExec |
||
10286 | mov dl, byte [esi] ; Get our next instruction |
||
10287 | inc esi ; Increment PC |
||
10288 | jmp dword [z80regular+edx*4] |
||
10289 | |||
10290 | |||
10291 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10292 | |||
10293 | DDInst36: |
||
10294 | mov dx, [esi] ; Get our address |
||
10295 | add esi, 2 ; Skip over our storage bytes |
||
10296 | mov [cyclesRemaining], edi |
||
10297 | mov di, dx ; Store it here for later |
||
10298 | xor dh, dh |
||
10299 | or dl, dl |
||
10300 | jns noNegate139 |
||
10301 | dec dh |
||
10302 | noNegate139: |
||
10303 | add dx, [_z80ix] ; Add in our index |
||
10304 | mov [_orgval], dx ; Store our address to write to |
||
10305 | mov dx, di |
||
10306 | xchg dh, dl |
||
10307 | mov edi, [cyclesRemaining] |
||
10308 | mov [cyclesRemaining], edi |
||
10309 | mov [_z80af], ax ; Store AF |
||
10310 | mov al, dl ; And our data to write |
||
10311 | mov dx, [_orgval] |
||
10312 | mov edi, [_z80MemWrite] ; Point to the write array |
||
10313 | |||
10314 | checkLoop139: |
||
10315 | cmp [edi], word 0ffffh ; End of our list? |
||
10316 | je memoryWrite139 ; Yes - go write it! |
||
10317 | cmp dx, [edi] ; Are we smaller? |
||
10318 | jb nextAddr139 ; Yes... go to the next addr |
||
10319 | cmp dx, [edi+4] ; Are we smaller? |
||
10320 | jbe callRoutine139 ; If not, go call it! |
||
10321 | |||
10322 | nextAddr139: |
||
10323 | add edi, 10h ; Next structure, please |
||
10324 | jmp short checkLoop139 |
||
10325 | |||
10326 | callRoutine139: |
||
10327 | call WriteMemoryByte ; Go write the data! |
||
10328 | jmp short WriteMacroExit139 |
||
10329 | memoryWrite139: |
||
10330 | mov [ebp + edx], al |
||
10331 | mov ax, [_z80af] ; Get our accumulator and flags |
||
10332 | WriteMacroExit139: |
||
10333 | mov edi, [cyclesRemaining] |
||
10334 | xor edx, edx |
||
10335 | sub edi, byte 19 |
||
10336 | js near noMoreExec |
||
10337 | mov dl, byte [esi] ; Get our next instruction |
||
10338 | inc esi ; Increment PC |
||
10339 | jmp dword [z80regular+edx*4] |
||
10340 | |||
10341 | |||
10342 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10343 | |||
10344 | DDInst39: |
||
10345 | mov dh, ah ; Get our flags |
||
10346 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
10347 | mov [cyclesRemaining], edi |
||
10348 | mov di, [_z80ix] ; Get our value |
||
10349 | mov [_orgval], di ; Store our original value |
||
10350 | add di, word [_z80sp] |
||
10351 | lahf |
||
10352 | mov [_z80ix], di ; Store our register back |
||
10353 | mov di, [_orgval] ; Get original |
||
10354 | xor di, word [_z80ix] ; XOR It with our computed value |
||
10355 | xor di, word [_z80sp] |
||
10356 | and di, 1000h ; Just our half carry |
||
10357 | or dx, di ; Or in our flags |
||
10358 | and ah, 01h ; Just carry |
||
10359 | or ah, dh |
||
10360 | mov edi, [cyclesRemaining] |
||
10361 | xor edx, edx |
||
10362 | sub edi, byte 15 |
||
10363 | js near noMoreExec |
||
10364 | mov dl, byte [esi] ; Get our next instruction |
||
10365 | inc esi ; Increment PC |
||
10366 | jmp dword [z80regular+edx*4] |
||
10367 | |||
10368 | |||
10369 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10370 | |||
10371 | DDInst44: |
||
10372 | mov ch, byte [_z80ix + 1] |
||
10373 | xor edx, edx |
||
10374 | sub edi, byte 9 |
||
10375 | js near noMoreExec |
||
10376 | mov dl, byte [esi] ; Get our next instruction |
||
10377 | inc esi ; Increment PC |
||
10378 | jmp dword [z80regular+edx*4] |
||
10379 | |||
10380 | |||
10381 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10382 | |||
10383 | DDInst45: |
||
10384 | mov ch, byte [_z80ix + 0] |
||
10385 | xor edx, edx |
||
10386 | sub edi, byte 9 |
||
10387 | js near noMoreExec |
||
10388 | mov dl, byte [esi] ; Get our next instruction |
||
10389 | inc esi ; Increment PC |
||
10390 | jmp dword [z80regular+edx*4] |
||
10391 | |||
10392 | |||
10393 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10394 | |||
10395 | DDInst46: |
||
10396 | mov dl, [esi] ; Fetch our offset |
||
10397 | inc esi ; Move past the offset |
||
10398 | or dl, dl ; Is this bad boy signed? |
||
10399 | jns notSigned141 ; Nope! |
||
10400 | dec dh ; Make it FFable |
||
10401 | notSigned141: |
||
10402 | add dx, [_z80ix] ; Our offset! |
||
10403 | mov [cyclesRemaining], edi |
||
10404 | mov edi, [_z80MemRead] ; Point to the read array |
||
10405 | |||
10406 | checkLoop142: |
||
10407 | cmp [edi], word 0ffffh ; End of the list? |
||
10408 | je memoryRead142 |
||
10409 | cmp edx, [edi] ; Are we smaller? |
||
10410 | jb nextAddr142 ; Yes, go to the next address |
||
10411 | cmp edx, [edi+4] ; Are we bigger? |
||
10412 | jbe callRoutine142 |
||
10413 | |||
10414 | nextAddr142: |
||
10415 | add edi, 10h ; Next structure! |
||
10416 | jmp short checkLoop142 |
||
10417 | |||
10418 | callRoutine142: |
||
10419 | call ReadMemoryByte ; Standard read routine |
||
10420 | mov ch, al ; Put our returned value here |
||
10421 | mov ax, [_z80af] ; Get our AF back |
||
10422 | jmp short readExit142 |
||
10423 | |||
10424 | memoryRead142: |
||
10425 | mov ch, [ebp + edx] ; Get our data |
||
10426 | |||
10427 | readExit142: |
||
10428 | mov edi, [cyclesRemaining] |
||
10429 | xor edx, edx ; Make sure we don't hose things |
||
10430 | sub edi, byte 19 |
||
10431 | js near noMoreExec |
||
10432 | mov dl, byte [esi] ; Get our next instruction |
||
10433 | inc esi ; Increment PC |
||
10434 | jmp dword [z80regular+edx*4] |
||
10435 | |||
10436 | |||
10437 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10438 | |||
10439 | DDInst4c: |
||
10440 | mov cl, byte [_z80ix + 1] |
||
10441 | xor edx, edx |
||
10442 | sub edi, byte 9 |
||
10443 | js near noMoreExec |
||
10444 | mov dl, byte [esi] ; Get our next instruction |
||
10445 | inc esi ; Increment PC |
||
10446 | jmp dword [z80regular+edx*4] |
||
10447 | |||
10448 | |||
10449 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10450 | |||
10451 | DDInst4d: |
||
10452 | mov cl, byte [_z80ix + 0] |
||
10453 | xor edx, edx |
||
10454 | sub edi, byte 9 |
||
10455 | js near noMoreExec |
||
10456 | mov dl, byte [esi] ; Get our next instruction |
||
10457 | inc esi ; Increment PC |
||
10458 | jmp dword [z80regular+edx*4] |
||
10459 | |||
10460 | |||
10461 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10462 | |||
10463 | DDInst4e: |
||
10464 | mov dl, [esi] ; Fetch our offset |
||
10465 | inc esi ; Move past the offset |
||
10466 | or dl, dl ; Is this bad boy signed? |
||
10467 | jns notSigned144 ; Nope! |
||
10468 | dec dh ; Make it FFable |
||
10469 | notSigned144: |
||
10470 | add dx, [_z80ix] ; Our offset! |
||
10471 | mov [cyclesRemaining], edi |
||
10472 | mov edi, [_z80MemRead] ; Point to the read array |
||
10473 | |||
10474 | checkLoop145: |
||
10475 | cmp [edi], word 0ffffh ; End of the list? |
||
10476 | je memoryRead145 |
||
10477 | cmp edx, [edi] ; Are we smaller? |
||
10478 | jb nextAddr145 ; Yes, go to the next address |
||
10479 | cmp edx, [edi+4] ; Are we bigger? |
||
10480 | jbe callRoutine145 |
||
10481 | |||
10482 | nextAddr145: |
||
10483 | add edi, 10h ; Next structure! |
||
10484 | jmp short checkLoop145 |
||
10485 | |||
10486 | callRoutine145: |
||
10487 | call ReadMemoryByte ; Standard read routine |
||
10488 | mov cl, al ; Put our returned value here |
||
10489 | mov ax, [_z80af] ; Get our AF back |
||
10490 | jmp short readExit145 |
||
10491 | |||
10492 | memoryRead145: |
||
10493 | mov cl, [ebp + edx] ; Get our data |
||
10494 | |||
10495 | readExit145: |
||
10496 | mov edi, [cyclesRemaining] |
||
10497 | xor edx, edx ; Make sure we don't hose things |
||
10498 | sub edi, byte 19 |
||
10499 | js near noMoreExec |
||
10500 | mov dl, byte [esi] ; Get our next instruction |
||
10501 | inc esi ; Increment PC |
||
10502 | jmp dword [z80regular+edx*4] |
||
10503 | |||
10504 | |||
10505 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10506 | |||
10507 | DDInst54: |
||
10508 | mov dx, [_z80de] ; Get a usable copy of DE here |
||
10509 | mov dh, byte [_z80ix + 1] |
||
10510 | mov [_z80de], dx ; Put it back! |
||
10511 | xor edx, edx |
||
10512 | sub edi, byte 9 |
||
10513 | js near noMoreExec |
||
10514 | mov dl, byte [esi] ; Get our next instruction |
||
10515 | inc esi ; Increment PC |
||
10516 | jmp dword [z80regular+edx*4] |
||
10517 | |||
10518 | |||
10519 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10520 | |||
10521 | DDInst55: |
||
10522 | mov dx, [_z80de] ; Get a usable copy of DE here |
||
10523 | mov dh, byte [_z80ix + 0] |
||
10524 | mov [_z80de], dx ; Put it back! |
||
10525 | xor edx, edx |
||
10526 | sub edi, byte 9 |
||
10527 | js near noMoreExec |
||
10528 | mov dl, byte [esi] ; Get our next instruction |
||
10529 | inc esi ; Increment PC |
||
10530 | jmp dword [z80regular+edx*4] |
||
10531 | |||
10532 | |||
10533 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10534 | |||
10535 | DDInst56: |
||
10536 | mov dl, [esi] ; Fetch our offset |
||
10537 | inc esi ; Move past the offset |
||
10538 | or dl, dl ; Is this bad boy signed? |
||
10539 | jns notSigned147 ; Nope! |
||
10540 | dec dh ; Make it FFable |
||
10541 | notSigned147: |
||
10542 | add dx, [_z80ix] ; Our offset! |
||
10543 | mov [cyclesRemaining], edi |
||
10544 | mov edi, [_z80MemRead] ; Point to the read array |
||
10545 | |||
10546 | checkLoop148: |
||
10547 | cmp [edi], word 0ffffh ; End of the list? |
||
10548 | je memoryRead148 |
||
10549 | cmp edx, [edi] ; Are we smaller? |
||
10550 | jb nextAddr148 ; Yes, go to the next address |
||
10551 | cmp edx, [edi+4] ; Are we bigger? |
||
10552 | jbe callRoutine148 |
||
10553 | |||
10554 | nextAddr148: |
||
10555 | add edi, 10h ; Next structure! |
||
10556 | jmp short checkLoop148 |
||
10557 | |||
10558 | callRoutine148: |
||
10559 | call ReadMemoryByte ; Standard read routine |
||
10560 | mov byte [_z80de + 1], al ; Put our returned value here |
||
10561 | mov ax, [_z80af] ; Get our AF back |
||
10562 | jmp short readExit148 |
||
10563 | |||
10564 | memoryRead148: |
||
10565 | mov di, dx |
||
10566 | mov dl, [ebp + edx] |
||
10567 | mov byte [_z80de + 1], dl |
||
10568 | mov dx, di |
||
10569 | readExit148: |
||
10570 | mov edi, [cyclesRemaining] |
||
10571 | xor edx, edx ; Make sure we don't hose things |
||
10572 | sub edi, byte 19 |
||
10573 | js near noMoreExec |
||
10574 | mov dl, byte [esi] ; Get our next instruction |
||
10575 | inc esi ; Increment PC |
||
10576 | jmp dword [z80regular+edx*4] |
||
10577 | |||
10578 | |||
10579 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10580 | |||
10581 | DDInst5c: |
||
10582 | mov dx, [_z80de] ; Get a usable copy of DE here |
||
10583 | mov dl, byte [_z80ix + 1] |
||
10584 | mov [_z80de], dx ; Put it back! |
||
10585 | xor edx, edx |
||
10586 | sub edi, byte 9 |
||
10587 | js near noMoreExec |
||
10588 | mov dl, byte [esi] ; Get our next instruction |
||
10589 | inc esi ; Increment PC |
||
10590 | jmp dword [z80regular+edx*4] |
||
10591 | |||
10592 | |||
10593 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10594 | |||
10595 | DDInst5d: |
||
10596 | mov dx, [_z80de] ; Get a usable copy of DE here |
||
10597 | mov dl, byte [_z80ix + 0] |
||
10598 | mov [_z80de], dx ; Put it back! |
||
10599 | xor edx, edx |
||
10600 | sub edi, byte 9 |
||
10601 | js near noMoreExec |
||
10602 | mov dl, byte [esi] ; Get our next instruction |
||
10603 | inc esi ; Increment PC |
||
10604 | jmp dword [z80regular+edx*4] |
||
10605 | |||
10606 | |||
10607 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10608 | |||
10609 | DDInst5e: |
||
10610 | mov dl, [esi] ; Fetch our offset |
||
10611 | inc esi ; Move past the offset |
||
10612 | or dl, dl ; Is this bad boy signed? |
||
10613 | jns notSigned150 ; Nope! |
||
10614 | dec dh ; Make it FFable |
||
10615 | notSigned150: |
||
10616 | add dx, [_z80ix] ; Our offset! |
||
10617 | mov [cyclesRemaining], edi |
||
10618 | mov edi, [_z80MemRead] ; Point to the read array |
||
10619 | |||
10620 | checkLoop151: |
||
10621 | cmp [edi], word 0ffffh ; End of the list? |
||
10622 | je memoryRead151 |
||
10623 | cmp edx, [edi] ; Are we smaller? |
||
10624 | jb nextAddr151 ; Yes, go to the next address |
||
10625 | cmp edx, [edi+4] ; Are we bigger? |
||
10626 | jbe callRoutine151 |
||
10627 | |||
10628 | nextAddr151: |
||
10629 | add edi, 10h ; Next structure! |
||
10630 | jmp short checkLoop151 |
||
10631 | |||
10632 | callRoutine151: |
||
10633 | call ReadMemoryByte ; Standard read routine |
||
10634 | mov byte [_z80de], al ; Put our returned value here |
||
10635 | mov ax, [_z80af] ; Get our AF back |
||
10636 | jmp short readExit151 |
||
10637 | |||
10638 | memoryRead151: |
||
10639 | mov di, dx |
||
10640 | mov dl, [ebp + edx] |
||
10641 | mov byte [_z80de], dl |
||
10642 | mov dx, di |
||
10643 | readExit151: |
||
10644 | mov edi, [cyclesRemaining] |
||
10645 | xor edx, edx ; Make sure we don't hose things |
||
10646 | sub edi, byte 19 |
||
10647 | js near noMoreExec |
||
10648 | mov dl, byte [esi] ; Get our next instruction |
||
10649 | inc esi ; Increment PC |
||
10650 | jmp dword [z80regular+edx*4] |
||
10651 | |||
10652 | |||
10653 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10654 | |||
10655 | DDInst60: |
||
10656 | mov byte [_z80ix + 1], ch |
||
10657 | xor edx, edx |
||
10658 | sub edi, byte 9 |
||
10659 | js near noMoreExec |
||
10660 | mov dl, byte [esi] ; Get our next instruction |
||
10661 | inc esi ; Increment PC |
||
10662 | jmp dword [z80regular+edx*4] |
||
10663 | |||
10664 | |||
10665 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10666 | |||
10667 | DDInst61: |
||
10668 | mov byte [_z80ix + 1], cl |
||
10669 | xor edx, edx |
||
10670 | sub edi, byte 9 |
||
10671 | js near noMoreExec |
||
10672 | mov dl, byte [esi] ; Get our next instruction |
||
10673 | inc esi ; Increment PC |
||
10674 | jmp dword [z80regular+edx*4] |
||
10675 | |||
10676 | |||
10677 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10678 | |||
10679 | DDInst62: |
||
10680 | mov dx, [_z80de] ; Get DE |
||
10681 | mov byte [_z80ix + 1], dh |
||
10682 | xor edx, edx |
||
10683 | sub edi, byte 9 |
||
10684 | js near noMoreExec |
||
10685 | mov dl, byte [esi] ; Get our next instruction |
||
10686 | inc esi ; Increment PC |
||
10687 | jmp dword [z80regular+edx*4] |
||
10688 | |||
10689 | |||
10690 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10691 | |||
10692 | DDInst63: |
||
10693 | mov dx, [_z80de] ; Get DE |
||
10694 | mov byte [_z80ix + 1], dl |
||
10695 | xor edx, edx |
||
10696 | sub edi, byte 9 |
||
10697 | js near noMoreExec |
||
10698 | mov dl, byte [esi] ; Get our next instruction |
||
10699 | inc esi ; Increment PC |
||
10700 | jmp dword [z80regular+edx*4] |
||
10701 | |||
10702 | |||
10703 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10704 | |||
10705 | DDInst64: |
||
10706 | mov dh, byte [_z80ix + 1] |
||
10707 | mov byte [_z80ix + 1], bh |
||
10708 | xor edx, edx |
||
10709 | sub edi, byte 9 |
||
10710 | js near noMoreExec |
||
10711 | mov dl, byte [esi] ; Get our next instruction |
||
10712 | inc esi ; Increment PC |
||
10713 | jmp dword [z80regular+edx*4] |
||
10714 | |||
10715 | |||
10716 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10717 | |||
10718 | DDInst65: |
||
10719 | mov dl, byte [_z80ix] |
||
10720 | mov byte [_z80ix + 1], bl |
||
10721 | xor edx, edx |
||
10722 | sub edi, byte 9 |
||
10723 | js near noMoreExec |
||
10724 | mov dl, byte [esi] ; Get our next instruction |
||
10725 | inc esi ; Increment PC |
||
10726 | jmp dword [z80regular+edx*4] |
||
10727 | |||
10728 | |||
10729 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10730 | |||
10731 | DDInst66: |
||
10732 | mov dl, [esi] ; Fetch our offset |
||
10733 | inc esi ; Move past the offset |
||
10734 | or dl, dl ; Is this bad boy signed? |
||
10735 | jns notSigned153 ; Nope! |
||
10736 | dec dh ; Make it FFable |
||
10737 | notSigned153: |
||
10738 | add dx, [_z80ix] ; Our offset! |
||
10739 | mov [cyclesRemaining], edi |
||
10740 | mov edi, [_z80MemRead] ; Point to the read array |
||
10741 | |||
10742 | checkLoop154: |
||
10743 | cmp [edi], word 0ffffh ; End of the list? |
||
10744 | je memoryRead154 |
||
10745 | cmp edx, [edi] ; Are we smaller? |
||
10746 | jb nextAddr154 ; Yes, go to the next address |
||
10747 | cmp edx, [edi+4] ; Are we bigger? |
||
10748 | jbe callRoutine154 |
||
10749 | |||
10750 | nextAddr154: |
||
10751 | add edi, 10h ; Next structure! |
||
10752 | jmp short checkLoop154 |
||
10753 | |||
10754 | callRoutine154: |
||
10755 | call ReadMemoryByte ; Standard read routine |
||
10756 | mov bh, al ; Put our returned value here |
||
10757 | mov ax, [_z80af] ; Get our AF back |
||
10758 | jmp short readExit154 |
||
10759 | |||
10760 | memoryRead154: |
||
10761 | mov bh, [ebp + edx] ; Get our data |
||
10762 | |||
10763 | readExit154: |
||
10764 | mov edi, [cyclesRemaining] |
||
10765 | xor edx, edx ; Make sure we don't hose things |
||
10766 | sub edi, byte 19 |
||
10767 | js near noMoreExec |
||
10768 | mov dl, byte [esi] ; Get our next instruction |
||
10769 | inc esi ; Increment PC |
||
10770 | jmp dword [z80regular+edx*4] |
||
10771 | |||
10772 | |||
10773 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10774 | |||
10775 | DDInst67: |
||
10776 | mov byte [_z80ix + 1], al |
||
10777 | xor edx, edx |
||
10778 | sub edi, byte 9 |
||
10779 | js near noMoreExec |
||
10780 | mov dl, byte [esi] ; Get our next instruction |
||
10781 | inc esi ; Increment PC |
||
10782 | jmp dword [z80regular+edx*4] |
||
10783 | |||
10784 | |||
10785 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10786 | |||
10787 | DDInst68: |
||
10788 | mov byte [_z80ix + 0], ch |
||
10789 | xor edx, edx |
||
10790 | sub edi, byte 9 |
||
10791 | js near noMoreExec |
||
10792 | mov dl, byte [esi] ; Get our next instruction |
||
10793 | inc esi ; Increment PC |
||
10794 | jmp dword [z80regular+edx*4] |
||
10795 | |||
10796 | |||
10797 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10798 | |||
10799 | DDInst69: |
||
10800 | mov byte [_z80ix + 0], cl |
||
10801 | xor edx, edx |
||
10802 | sub edi, byte 9 |
||
10803 | js near noMoreExec |
||
10804 | mov dl, byte [esi] ; Get our next instruction |
||
10805 | inc esi ; Increment PC |
||
10806 | jmp dword [z80regular+edx*4] |
||
10807 | |||
10808 | |||
10809 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10810 | |||
10811 | DDInst6a: |
||
10812 | mov dx, [_z80de] ; Get DE |
||
10813 | mov byte [_z80ix + 0], dh |
||
10814 | xor edx, edx |
||
10815 | sub edi, byte 9 |
||
10816 | js near noMoreExec |
||
10817 | mov dl, byte [esi] ; Get our next instruction |
||
10818 | inc esi ; Increment PC |
||
10819 | jmp dword [z80regular+edx*4] |
||
10820 | |||
10821 | |||
10822 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10823 | |||
10824 | DDInst6b: |
||
10825 | mov dx, [_z80de] ; Get DE |
||
10826 | mov byte [_z80ix + 0], dl |
||
10827 | xor edx, edx |
||
10828 | sub edi, byte 9 |
||
10829 | js near noMoreExec |
||
10830 | mov dl, byte [esi] ; Get our next instruction |
||
10831 | inc esi ; Increment PC |
||
10832 | jmp dword [z80regular+edx*4] |
||
10833 | |||
10834 | |||
10835 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10836 | |||
10837 | DDInst6c: |
||
10838 | mov dh, byte [_z80ix + 1] |
||
10839 | mov byte [_z80ix + 0], bh |
||
10840 | xor edx, edx |
||
10841 | sub edi, byte 9 |
||
10842 | js near noMoreExec |
||
10843 | mov dl, byte [esi] ; Get our next instruction |
||
10844 | inc esi ; Increment PC |
||
10845 | jmp dword [z80regular+edx*4] |
||
10846 | |||
10847 | |||
10848 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10849 | |||
10850 | DDInst6d: |
||
10851 | mov dl, byte [_z80ix] |
||
10852 | mov byte [_z80ix + 0], bl |
||
10853 | xor edx, edx |
||
10854 | sub edi, byte 9 |
||
10855 | js near noMoreExec |
||
10856 | mov dl, byte [esi] ; Get our next instruction |
||
10857 | inc esi ; Increment PC |
||
10858 | jmp dword [z80regular+edx*4] |
||
10859 | |||
10860 | |||
10861 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10862 | |||
10863 | DDInst6e: |
||
10864 | mov dl, [esi] ; Fetch our offset |
||
10865 | inc esi ; Move past the offset |
||
10866 | or dl, dl ; Is this bad boy signed? |
||
10867 | jns notSigned156 ; Nope! |
||
10868 | dec dh ; Make it FFable |
||
10869 | notSigned156: |
||
10870 | add dx, [_z80ix] ; Our offset! |
||
10871 | mov [cyclesRemaining], edi |
||
10872 | mov edi, [_z80MemRead] ; Point to the read array |
||
10873 | |||
10874 | checkLoop157: |
||
10875 | cmp [edi], word 0ffffh ; End of the list? |
||
10876 | je memoryRead157 |
||
10877 | cmp edx, [edi] ; Are we smaller? |
||
10878 | jb nextAddr157 ; Yes, go to the next address |
||
10879 | cmp edx, [edi+4] ; Are we bigger? |
||
10880 | jbe callRoutine157 |
||
10881 | |||
10882 | nextAddr157: |
||
10883 | add edi, 10h ; Next structure! |
||
10884 | jmp short checkLoop157 |
||
10885 | |||
10886 | callRoutine157: |
||
10887 | call ReadMemoryByte ; Standard read routine |
||
10888 | mov bl, al ; Put our returned value here |
||
10889 | mov ax, [_z80af] ; Get our AF back |
||
10890 | jmp short readExit157 |
||
10891 | |||
10892 | memoryRead157: |
||
10893 | mov bl, [ebp + edx] ; Get our data |
||
10894 | |||
10895 | readExit157: |
||
10896 | mov edi, [cyclesRemaining] |
||
10897 | xor edx, edx ; Make sure we don't hose things |
||
10898 | sub edi, byte 19 |
||
10899 | js near noMoreExec |
||
10900 | mov dl, byte [esi] ; Get our next instruction |
||
10901 | inc esi ; Increment PC |
||
10902 | jmp dword [z80regular+edx*4] |
||
10903 | |||
10904 | |||
10905 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10906 | |||
10907 | DDInst6f: |
||
10908 | mov byte [_z80ix + 0], al |
||
10909 | xor edx, edx |
||
10910 | sub edi, byte 9 |
||
10911 | js near noMoreExec |
||
10912 | mov dl, byte [esi] ; Get our next instruction |
||
10913 | inc esi ; Increment PC |
||
10914 | jmp dword [z80regular+edx*4] |
||
10915 | |||
10916 | |||
10917 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10918 | |||
10919 | DDInst70: |
||
10920 | mov dl, [esi] ; Fetch our offset |
||
10921 | inc esi ; Move past the offset |
||
10922 | or dl, dl ; Is this bad boy signed? |
||
10923 | jns notSigned159 ; Nope! |
||
10924 | dec dh ; Make it FFable |
||
10925 | notSigned159: |
||
10926 | add dx, [_z80ix] ; Our offset! |
||
10927 | mov [cyclesRemaining], edi |
||
10928 | mov [_z80af], ax ; Store AF |
||
10929 | mov al, ch ; And our data to write |
||
10930 | mov edi, [_z80MemWrite] ; Point to the write array |
||
10931 | |||
10932 | checkLoop160: |
||
10933 | cmp [edi], word 0ffffh ; End of our list? |
||
10934 | je memoryWrite160 ; Yes - go write it! |
||
10935 | cmp dx, [edi] ; Are we smaller? |
||
10936 | jb nextAddr160 ; Yes... go to the next addr |
||
10937 | cmp dx, [edi+4] ; Are we smaller? |
||
10938 | jbe callRoutine160 ; If not, go call it! |
||
10939 | |||
10940 | nextAddr160: |
||
10941 | add edi, 10h ; Next structure, please |
||
10942 | jmp short checkLoop160 |
||
10943 | |||
10944 | callRoutine160: |
||
10945 | call WriteMemoryByte ; Go write the data! |
||
10946 | jmp short WriteMacroExit160 |
||
10947 | memoryWrite160: |
||
10948 | mov [ebp + edx], ch |
||
10949 | mov ax, [_z80af] ; Get our accumulator and flags |
||
10950 | WriteMacroExit160: |
||
10951 | mov edi, [cyclesRemaining] |
||
10952 | xor edx, edx |
||
10953 | sub edi, byte 19 |
||
10954 | js near noMoreExec |
||
10955 | mov dl, byte [esi] ; Get our next instruction |
||
10956 | inc esi ; Increment PC |
||
10957 | jmp dword [z80regular+edx*4] |
||
10958 | |||
10959 | |||
10960 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
10961 | |||
10962 | DDInst71: |
||
10963 | mov dl, [esi] ; Fetch our offset |
||
10964 | inc esi ; Move past the offset |
||
10965 | or dl, dl ; Is this bad boy signed? |
||
10966 | jns notSigned161 ; Nope! |
||
10967 | dec dh ; Make it FFable |
||
10968 | notSigned161: |
||
10969 | add dx, [_z80ix] ; Our offset! |
||
10970 | mov [cyclesRemaining], edi |
||
10971 | mov [_z80af], ax ; Store AF |
||
10972 | mov al, cl ; And our data to write |
||
10973 | mov edi, [_z80MemWrite] ; Point to the write array |
||
10974 | |||
10975 | checkLoop162: |
||
10976 | cmp [edi], word 0ffffh ; End of our list? |
||
10977 | je memoryWrite162 ; Yes - go write it! |
||
10978 | cmp dx, [edi] ; Are we smaller? |
||
10979 | jb nextAddr162 ; Yes... go to the next addr |
||
10980 | cmp dx, [edi+4] ; Are we smaller? |
||
10981 | jbe callRoutine162 ; If not, go call it! |
||
10982 | |||
10983 | nextAddr162: |
||
10984 | add edi, 10h ; Next structure, please |
||
10985 | jmp short checkLoop162 |
||
10986 | |||
10987 | callRoutine162: |
||
10988 | call WriteMemoryByte ; Go write the data! |
||
10989 | jmp short WriteMacroExit162 |
||
10990 | memoryWrite162: |
||
10991 | mov [ebp + edx], cl |
||
10992 | mov ax, [_z80af] ; Get our accumulator and flags |
||
10993 | WriteMacroExit162: |
||
10994 | mov edi, [cyclesRemaining] |
||
10995 | xor edx, edx |
||
10996 | sub edi, byte 19 |
||
10997 | js near noMoreExec |
||
10998 | mov dl, byte [esi] ; Get our next instruction |
||
10999 | inc esi ; Increment PC |
||
11000 | jmp dword [z80regular+edx*4] |
||
11001 | |||
11002 | |||
11003 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11004 | |||
11005 | DDInst72: |
||
11006 | mov dl, [esi] ; Fetch our offset |
||
11007 | inc esi ; Move past the offset |
||
11008 | or dl, dl ; Is this bad boy signed? |
||
11009 | jns notSigned163 ; Nope! |
||
11010 | dec dh ; Make it FFable |
||
11011 | notSigned163: |
||
11012 | add dx, [_z80ix] ; Our offset! |
||
11013 | mov [cyclesRemaining], edi |
||
11014 | mov [_z80af], ax ; Store AF |
||
11015 | mov al, byte [_z80de + 1] ; And our data to write |
||
11016 | mov edi, [_z80MemWrite] ; Point to the write array |
||
11017 | |||
11018 | checkLoop164: |
||
11019 | cmp [edi], word 0ffffh ; End of our list? |
||
11020 | je memoryWrite164 ; Yes - go write it! |
||
11021 | cmp dx, [edi] ; Are we smaller? |
||
11022 | jb nextAddr164 ; Yes... go to the next addr |
||
11023 | cmp dx, [edi+4] ; Are we smaller? |
||
11024 | jbe callRoutine164 ; If not, go call it! |
||
11025 | |||
11026 | nextAddr164: |
||
11027 | add edi, 10h ; Next structure, please |
||
11028 | jmp short checkLoop164 |
||
11029 | |||
11030 | callRoutine164: |
||
11031 | call WriteMemoryByte ; Go write the data! |
||
11032 | jmp short WriteMacroExit164 |
||
11033 | memoryWrite164: |
||
11034 | mov edi, edx |
||
11035 | mov dl, byte [_z80de + 1] |
||
11036 | mov [ebp + edi], dl |
||
11037 | mov edx, edi |
||
11038 | mov ax, [_z80af] ; Get our accumulator and flags |
||
11039 | WriteMacroExit164: |
||
11040 | mov edi, [cyclesRemaining] |
||
11041 | xor edx, edx |
||
11042 | sub edi, byte 19 |
||
11043 | js near noMoreExec |
||
11044 | mov dl, byte [esi] ; Get our next instruction |
||
11045 | inc esi ; Increment PC |
||
11046 | jmp dword [z80regular+edx*4] |
||
11047 | |||
11048 | |||
11049 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11050 | |||
11051 | DDInst73: |
||
11052 | mov dl, [esi] ; Fetch our offset |
||
11053 | inc esi ; Move past the offset |
||
11054 | or dl, dl ; Is this bad boy signed? |
||
11055 | jns notSigned165 ; Nope! |
||
11056 | dec dh ; Make it FFable |
||
11057 | notSigned165: |
||
11058 | add dx, [_z80ix] ; Our offset! |
||
11059 | mov [cyclesRemaining], edi |
||
11060 | mov [_z80af], ax ; Store AF |
||
11061 | mov al, byte [_z80de] ; And our data to write |
||
11062 | mov edi, [_z80MemWrite] ; Point to the write array |
||
11063 | |||
11064 | checkLoop166: |
||
11065 | cmp [edi], word 0ffffh ; End of our list? |
||
11066 | je memoryWrite166 ; Yes - go write it! |
||
11067 | cmp dx, [edi] ; Are we smaller? |
||
11068 | jb nextAddr166 ; Yes... go to the next addr |
||
11069 | cmp dx, [edi+4] ; Are we smaller? |
||
11070 | jbe callRoutine166 ; If not, go call it! |
||
11071 | |||
11072 | nextAddr166: |
||
11073 | add edi, 10h ; Next structure, please |
||
11074 | jmp short checkLoop166 |
||
11075 | |||
11076 | callRoutine166: |
||
11077 | call WriteMemoryByte ; Go write the data! |
||
11078 | jmp short WriteMacroExit166 |
||
11079 | memoryWrite166: |
||
11080 | mov edi, edx |
||
11081 | mov dl, byte [_z80de] |
||
11082 | mov [ebp + edi], dl |
||
11083 | mov edx, edi |
||
11084 | mov ax, [_z80af] ; Get our accumulator and flags |
||
11085 | WriteMacroExit166: |
||
11086 | mov edi, [cyclesRemaining] |
||
11087 | xor edx, edx |
||
11088 | sub edi, byte 19 |
||
11089 | js near noMoreExec |
||
11090 | mov dl, byte [esi] ; Get our next instruction |
||
11091 | inc esi ; Increment PC |
||
11092 | jmp dword [z80regular+edx*4] |
||
11093 | |||
11094 | |||
11095 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11096 | |||
11097 | DDInst74: |
||
11098 | mov dl, [esi] ; Fetch our offset |
||
11099 | inc esi ; Move past the offset |
||
11100 | or dl, dl ; Is this bad boy signed? |
||
11101 | jns notSigned167 ; Nope! |
||
11102 | dec dh ; Make it FFable |
||
11103 | notSigned167: |
||
11104 | add dx, [_z80ix] ; Our offset! |
||
11105 | mov [cyclesRemaining], edi |
||
11106 | mov [_z80af], ax ; Store AF |
||
11107 | mov al, bh ; And our data to write |
||
11108 | mov edi, [_z80MemWrite] ; Point to the write array |
||
11109 | |||
11110 | checkLoop168: |
||
11111 | cmp [edi], word 0ffffh ; End of our list? |
||
11112 | je memoryWrite168 ; Yes - go write it! |
||
11113 | cmp dx, [edi] ; Are we smaller? |
||
11114 | jb nextAddr168 ; Yes... go to the next addr |
||
11115 | cmp dx, [edi+4] ; Are we smaller? |
||
11116 | jbe callRoutine168 ; If not, go call it! |
||
11117 | |||
11118 | nextAddr168: |
||
11119 | add edi, 10h ; Next structure, please |
||
11120 | jmp short checkLoop168 |
||
11121 | |||
11122 | callRoutine168: |
||
11123 | call WriteMemoryByte ; Go write the data! |
||
11124 | jmp short WriteMacroExit168 |
||
11125 | memoryWrite168: |
||
11126 | mov [ebp + edx], bh |
||
11127 | mov ax, [_z80af] ; Get our accumulator and flags |
||
11128 | WriteMacroExit168: |
||
11129 | mov edi, [cyclesRemaining] |
||
11130 | xor edx, edx |
||
11131 | sub edi, byte 19 |
||
11132 | js near noMoreExec |
||
11133 | mov dl, byte [esi] ; Get our next instruction |
||
11134 | inc esi ; Increment PC |
||
11135 | jmp dword [z80regular+edx*4] |
||
11136 | |||
11137 | |||
11138 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11139 | |||
11140 | DDInst75: |
||
11141 | mov dl, [esi] ; Fetch our offset |
||
11142 | inc esi ; Move past the offset |
||
11143 | or dl, dl ; Is this bad boy signed? |
||
11144 | jns notSigned169 ; Nope! |
||
11145 | dec dh ; Make it FFable |
||
11146 | notSigned169: |
||
11147 | add dx, [_z80ix] ; Our offset! |
||
11148 | mov [cyclesRemaining], edi |
||
11149 | mov [_z80af], ax ; Store AF |
||
11150 | mov al, bl ; And our data to write |
||
11151 | mov edi, [_z80MemWrite] ; Point to the write array |
||
11152 | |||
11153 | checkLoop170: |
||
11154 | cmp [edi], word 0ffffh ; End of our list? |
||
11155 | je memoryWrite170 ; Yes - go write it! |
||
11156 | cmp dx, [edi] ; Are we smaller? |
||
11157 | jb nextAddr170 ; Yes... go to the next addr |
||
11158 | cmp dx, [edi+4] ; Are we smaller? |
||
11159 | jbe callRoutine170 ; If not, go call it! |
||
11160 | |||
11161 | nextAddr170: |
||
11162 | add edi, 10h ; Next structure, please |
||
11163 | jmp short checkLoop170 |
||
11164 | |||
11165 | callRoutine170: |
||
11166 | call WriteMemoryByte ; Go write the data! |
||
11167 | jmp short WriteMacroExit170 |
||
11168 | memoryWrite170: |
||
11169 | mov [ebp + edx], bl |
||
11170 | mov ax, [_z80af] ; Get our accumulator and flags |
||
11171 | WriteMacroExit170: |
||
11172 | mov edi, [cyclesRemaining] |
||
11173 | xor edx, edx |
||
11174 | sub edi, byte 19 |
||
11175 | js near noMoreExec |
||
11176 | mov dl, byte [esi] ; Get our next instruction |
||
11177 | inc esi ; Increment PC |
||
11178 | jmp dword [z80regular+edx*4] |
||
11179 | |||
11180 | |||
11181 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11182 | |||
11183 | DDInst77: |
||
11184 | mov dl, [esi] ; Fetch our offset |
||
11185 | inc esi ; Move past the offset |
||
11186 | or dl, dl ; Is this bad boy signed? |
||
11187 | jns notSigned171 ; Nope! |
||
11188 | dec dh ; Make it FFable |
||
11189 | notSigned171: |
||
11190 | add dx, [_z80ix] ; Our offset! |
||
11191 | mov [cyclesRemaining], edi |
||
11192 | mov [_z80af], ax ; Store AF |
||
11193 | mov edi, [_z80MemWrite] ; Point to the write array |
||
11194 | |||
11195 | checkLoop172: |
||
11196 | cmp [edi], word 0ffffh ; End of our list? |
||
11197 | je memoryWrite172 ; Yes - go write it! |
||
11198 | cmp dx, [edi] ; Are we smaller? |
||
11199 | jb nextAddr172 ; Yes... go to the next addr |
||
11200 | cmp dx, [edi+4] ; Are we smaller? |
||
11201 | jbe callRoutine172 ; If not, go call it! |
||
11202 | |||
11203 | nextAddr172: |
||
11204 | add edi, 10h ; Next structure, please |
||
11205 | jmp short checkLoop172 |
||
11206 | |||
11207 | callRoutine172: |
||
11208 | call WriteMemoryByte ; Go write the data! |
||
11209 | jmp short WriteMacroExit172 |
||
11210 | memoryWrite172: |
||
11211 | mov [ebp + edx], al |
||
11212 | mov ax, [_z80af] ; Get our accumulator and flags |
||
11213 | WriteMacroExit172: |
||
11214 | mov edi, [cyclesRemaining] |
||
11215 | xor edx, edx |
||
11216 | sub edi, byte 19 |
||
11217 | js near noMoreExec |
||
11218 | mov dl, byte [esi] ; Get our next instruction |
||
11219 | inc esi ; Increment PC |
||
11220 | jmp dword [z80regular+edx*4] |
||
11221 | |||
11222 | |||
11223 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11224 | |||
11225 | DDInst7c: |
||
11226 | mov al, byte [_z80ix + 1] |
||
11227 | xor edx, edx |
||
11228 | sub edi, byte 9 |
||
11229 | js near noMoreExec |
||
11230 | mov dl, byte [esi] ; Get our next instruction |
||
11231 | inc esi ; Increment PC |
||
11232 | jmp dword [z80regular+edx*4] |
||
11233 | |||
11234 | |||
11235 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11236 | |||
11237 | DDInst7d: |
||
11238 | mov al, byte [_z80ix + 0] |
||
11239 | xor edx, edx |
||
11240 | sub edi, byte 9 |
||
11241 | js near noMoreExec |
||
11242 | mov dl, byte [esi] ; Get our next instruction |
||
11243 | inc esi ; Increment PC |
||
11244 | jmp dword [z80regular+edx*4] |
||
11245 | |||
11246 | |||
11247 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11248 | |||
11249 | DDInst7e: |
||
11250 | mov dl, [esi] ; Fetch our offset |
||
11251 | inc esi ; Move past the offset |
||
11252 | or dl, dl ; Is this bad boy signed? |
||
11253 | jns notSigned173 ; Nope! |
||
11254 | dec dh ; Make it FFable |
||
11255 | notSigned173: |
||
11256 | add dx, [_z80ix] ; Our offset! |
||
11257 | mov [cyclesRemaining], edi |
||
11258 | mov edi, [_z80MemRead] ; Point to the read array |
||
11259 | |||
11260 | checkLoop174: |
||
11261 | cmp [edi], word 0ffffh ; End of the list? |
||
11262 | je memoryRead174 |
||
11263 | cmp edx, [edi] ; Are we smaller? |
||
11264 | jb nextAddr174 ; Yes, go to the next address |
||
11265 | cmp edx, [edi+4] ; Are we bigger? |
||
11266 | jbe callRoutine174 |
||
11267 | |||
11268 | nextAddr174: |
||
11269 | add edi, 10h ; Next structure! |
||
11270 | jmp short checkLoop174 |
||
11271 | |||
11272 | callRoutine174: |
||
11273 | call ReadMemoryByte ; Standard read routine |
||
11274 | mov [_z80af], al ; Save our new accumulator |
||
11275 | mov ax, [_z80af] ; Get our AF back |
||
11276 | jmp short readExit174 |
||
11277 | |||
11278 | memoryRead174: |
||
11279 | mov al, [ebp + edx] ; Get our data |
||
11280 | |||
11281 | readExit174: |
||
11282 | mov edi, [cyclesRemaining] |
||
11283 | xor edx, edx ; Make sure we don't hose things |
||
11284 | sub edi, byte 19 |
||
11285 | js near noMoreExec |
||
11286 | mov dl, byte [esi] ; Get our next instruction |
||
11287 | inc esi ; Increment PC |
||
11288 | jmp dword [z80regular+edx*4] |
||
11289 | |||
11290 | |||
11291 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11292 | |||
11293 | DDInst84: |
||
11294 | mov dl, byte [_z80ix + 1] |
||
11295 | sahf ; Store our flags in x86 flag reg |
||
11296 | add al, dl |
||
11297 | lahf ; Get flags back into AH |
||
11298 | seto dl |
||
11299 | and ah, 0fbh ; Knock out parity/overflow |
||
11300 | shl dl, 2 |
||
11301 | or ah, dl |
||
11302 | and ah, 0fdh ; No N! |
||
11303 | sub edi, byte 9 |
||
11304 | js near noMoreExec |
||
11305 | mov dl, byte [esi] ; Get our next instruction |
||
11306 | inc esi ; Increment PC |
||
11307 | jmp dword [z80regular+edx*4] |
||
11308 | |||
11309 | |||
11310 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11311 | |||
11312 | DDInst85: |
||
11313 | mov dl, byte [_z80ix] |
||
11314 | sahf ; Store our flags in x86 flag reg |
||
11315 | add al, dl |
||
11316 | lahf ; Get flags back into AH |
||
11317 | seto dl |
||
11318 | and ah, 0fbh ; Knock out parity/overflow |
||
11319 | shl dl, 2 |
||
11320 | or ah, dl |
||
11321 | and ah, 0fdh ; No N! |
||
11322 | sub edi, byte 9 |
||
11323 | js near noMoreExec |
||
11324 | mov dl, byte [esi] ; Get our next instruction |
||
11325 | inc esi ; Increment PC |
||
11326 | jmp dword [z80regular+edx*4] |
||
11327 | |||
11328 | |||
11329 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11330 | |||
11331 | DDInst86: |
||
11332 | mov dl, [esi] ; Fetch our offset |
||
11333 | inc esi ; Move past the offset |
||
11334 | or dl, dl ; Is this bad boy signed? |
||
11335 | jns notSigned176 ; Nope! |
||
11336 | dec dh ; Make it FFable |
||
11337 | notSigned176: |
||
11338 | add dx, [_z80ix] ; Our offset! |
||
11339 | mov [cyclesRemaining], edi |
||
11340 | mov edi, [_z80MemRead] ; Point to the read array |
||
11341 | |||
11342 | checkLoop177: |
||
11343 | cmp [edi], word 0ffffh ; End of the list? |
||
11344 | je memoryRead177 |
||
11345 | cmp edx, [edi] ; Are we smaller? |
||
11346 | jb nextAddr177 ; Yes, go to the next address |
||
11347 | cmp edx, [edi+4] ; Are we bigger? |
||
11348 | jbe callRoutine177 |
||
11349 | |||
11350 | nextAddr177: |
||
11351 | add edi, 10h ; Next structure! |
||
11352 | jmp short checkLoop177 |
||
11353 | |||
11354 | callRoutine177: |
||
11355 | call ReadMemoryByte ; Standard read routine |
||
11356 | mov dl, al ; Put our returned value here |
||
11357 | mov ax, [_z80af] ; Get our AF back |
||
11358 | jmp short readExit177 |
||
11359 | |||
11360 | memoryRead177: |
||
11361 | mov dl, [ebp + edx] ; Get our data |
||
11362 | |||
11363 | readExit177: |
||
11364 | mov edi, [cyclesRemaining] |
||
11365 | sahf |
||
11366 | add al, dl |
||
11367 | lahf |
||
11368 | seto dl |
||
11369 | and ah, 0fbh ; Knock out parity/overflow |
||
11370 | shl dl, 2 |
||
11371 | or ah, dl |
||
11372 | and ah, 0fdh ; Knock out negative |
||
11373 | xor edx, edx |
||
11374 | sub edi, byte 19 |
||
11375 | js near noMoreExec |
||
11376 | mov dl, byte [esi] ; Get our next instruction |
||
11377 | inc esi ; Increment PC |
||
11378 | jmp dword [z80regular+edx*4] |
||
11379 | |||
11380 | |||
11381 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11382 | |||
11383 | DDInst8c: |
||
11384 | mov dl, byte [_z80ix + 1] |
||
11385 | sahf ; Store our flags in x86 flag reg |
||
11386 | adc al, dl |
||
11387 | lahf ; Get flags back into AH |
||
11388 | seto dl |
||
11389 | and ah, 0fbh ; Knock out parity/overflow |
||
11390 | shl dl, 2 |
||
11391 | or ah, dl |
||
11392 | and ah, 0fdh ; No N! |
||
11393 | sub edi, byte 9 |
||
11394 | js near noMoreExec |
||
11395 | mov dl, byte [esi] ; Get our next instruction |
||
11396 | inc esi ; Increment PC |
||
11397 | jmp dword [z80regular+edx*4] |
||
11398 | |||
11399 | |||
11400 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11401 | |||
11402 | DDInst8d: |
||
11403 | mov dl, byte [_z80ix] |
||
11404 | sahf ; Store our flags in x86 flag reg |
||
11405 | adc al, dl |
||
11406 | lahf ; Get flags back into AH |
||
11407 | seto dl |
||
11408 | and ah, 0fbh ; Knock out parity/overflow |
||
11409 | shl dl, 2 |
||
11410 | or ah, dl |
||
11411 | and ah, 0fdh ; No N! |
||
11412 | sub edi, byte 9 |
||
11413 | js near noMoreExec |
||
11414 | mov dl, byte [esi] ; Get our next instruction |
||
11415 | inc esi ; Increment PC |
||
11416 | jmp dword [z80regular+edx*4] |
||
11417 | |||
11418 | |||
11419 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11420 | |||
11421 | DDInst8e: |
||
11422 | mov dl, [esi] ; Fetch our offset |
||
11423 | inc esi ; Move past the offset |
||
11424 | or dl, dl ; Is this bad boy signed? |
||
11425 | jns notSigned178 ; Nope! |
||
11426 | dec dh ; Make it FFable |
||
11427 | notSigned178: |
||
11428 | add dx, [_z80ix] ; Our offset! |
||
11429 | mov [cyclesRemaining], edi |
||
11430 | mov edi, [_z80MemRead] ; Point to the read array |
||
11431 | |||
11432 | checkLoop179: |
||
11433 | cmp [edi], word 0ffffh ; End of the list? |
||
11434 | je memoryRead179 |
||
11435 | cmp edx, [edi] ; Are we smaller? |
||
11436 | jb nextAddr179 ; Yes, go to the next address |
||
11437 | cmp edx, [edi+4] ; Are we bigger? |
||
11438 | jbe callRoutine179 |
||
11439 | |||
11440 | nextAddr179: |
||
11441 | add edi, 10h ; Next structure! |
||
11442 | jmp short checkLoop179 |
||
11443 | |||
11444 | callRoutine179: |
||
11445 | call ReadMemoryByte ; Standard read routine |
||
11446 | mov dl, al ; Put our returned value here |
||
11447 | mov ax, [_z80af] ; Get our AF back |
||
11448 | jmp short readExit179 |
||
11449 | |||
11450 | memoryRead179: |
||
11451 | mov dl, [ebp + edx] ; Get our data |
||
11452 | |||
11453 | readExit179: |
||
11454 | mov edi, [cyclesRemaining] |
||
11455 | sahf |
||
11456 | adc al, dl |
||
11457 | lahf |
||
11458 | seto dl |
||
11459 | and ah, 0fbh ; Knock out parity/overflow |
||
11460 | shl dl, 2 |
||
11461 | or ah, dl |
||
11462 | and ah, 0fdh ; Knock out negative |
||
11463 | xor edx, edx |
||
11464 | sub edi, byte 19 |
||
11465 | js near noMoreExec |
||
11466 | mov dl, byte [esi] ; Get our next instruction |
||
11467 | inc esi ; Increment PC |
||
11468 | jmp dword [z80regular+edx*4] |
||
11469 | |||
11470 | |||
11471 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11472 | |||
11473 | DDInst94: |
||
11474 | mov dl, byte [_z80ix + 1] |
||
11475 | sahf ; Store our flags in x86 flag reg |
||
11476 | sub al, dl |
||
11477 | lahf ; Get flags back into AH |
||
11478 | seto dl |
||
11479 | and ah, 0fbh ; Knock out parity/overflow |
||
11480 | shl dl, 2 |
||
11481 | or ah, dl |
||
11482 | or ah, 02h ; N Gets set! |
||
11483 | sub edi, byte 9 |
||
11484 | js near noMoreExec |
||
11485 | mov dl, byte [esi] ; Get our next instruction |
||
11486 | inc esi ; Increment PC |
||
11487 | jmp dword [z80regular+edx*4] |
||
11488 | |||
11489 | |||
11490 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11491 | |||
11492 | DDInst95: |
||
11493 | mov dl, byte [_z80ix] |
||
11494 | sahf ; Store our flags in x86 flag reg |
||
11495 | sub al, dl |
||
11496 | lahf ; Get flags back into AH |
||
11497 | seto dl |
||
11498 | and ah, 0fbh ; Knock out parity/overflow |
||
11499 | shl dl, 2 |
||
11500 | or ah, dl |
||
11501 | or ah, 02h ; N Gets set! |
||
11502 | sub edi, byte 9 |
||
11503 | js near noMoreExec |
||
11504 | mov dl, byte [esi] ; Get our next instruction |
||
11505 | inc esi ; Increment PC |
||
11506 | jmp dword [z80regular+edx*4] |
||
11507 | |||
11508 | |||
11509 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11510 | |||
11511 | DDInst96: |
||
11512 | mov dl, [esi] ; Fetch our offset |
||
11513 | inc esi ; Move past the offset |
||
11514 | or dl, dl ; Is this bad boy signed? |
||
11515 | jns notSigned180 ; Nope! |
||
11516 | dec dh ; Make it FFable |
||
11517 | notSigned180: |
||
11518 | add dx, [_z80ix] ; Our offset! |
||
11519 | mov [cyclesRemaining], edi |
||
11520 | mov edi, [_z80MemRead] ; Point to the read array |
||
11521 | |||
11522 | checkLoop181: |
||
11523 | cmp [edi], word 0ffffh ; End of the list? |
||
11524 | je memoryRead181 |
||
11525 | cmp edx, [edi] ; Are we smaller? |
||
11526 | jb nextAddr181 ; Yes, go to the next address |
||
11527 | cmp edx, [edi+4] ; Are we bigger? |
||
11528 | jbe callRoutine181 |
||
11529 | |||
11530 | nextAddr181: |
||
11531 | add edi, 10h ; Next structure! |
||
11532 | jmp short checkLoop181 |
||
11533 | |||
11534 | callRoutine181: |
||
11535 | call ReadMemoryByte ; Standard read routine |
||
11536 | mov dl, al ; Put our returned value here |
||
11537 | mov ax, [_z80af] ; Get our AF back |
||
11538 | jmp short readExit181 |
||
11539 | |||
11540 | memoryRead181: |
||
11541 | mov dl, [ebp + edx] ; Get our data |
||
11542 | |||
11543 | readExit181: |
||
11544 | mov edi, [cyclesRemaining] |
||
11545 | sahf |
||
11546 | sub al, dl |
||
11547 | lahf |
||
11548 | seto dl |
||
11549 | and ah, 0fbh ; Knock out parity/overflow |
||
11550 | shl dl, 2 |
||
11551 | or ah, dl |
||
11552 | or ah, 02h ; Set negative |
||
11553 | xor edx, edx |
||
11554 | sub edi, byte 19 |
||
11555 | js near noMoreExec |
||
11556 | mov dl, byte [esi] ; Get our next instruction |
||
11557 | inc esi ; Increment PC |
||
11558 | jmp dword [z80regular+edx*4] |
||
11559 | |||
11560 | |||
11561 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11562 | |||
11563 | DDInst9c: |
||
11564 | mov dl, byte [_z80ix + 1] |
||
11565 | sahf ; Store our flags in x86 flag reg |
||
11566 | sbb al, dl |
||
11567 | lahf ; Get flags back into AH |
||
11568 | seto dl |
||
11569 | and ah, 0fbh ; Knock out parity/overflow |
||
11570 | shl dl, 2 |
||
11571 | or ah, dl |
||
11572 | or ah, 02h ; N Gets set! |
||
11573 | sub edi, byte 9 |
||
11574 | js near noMoreExec |
||
11575 | mov dl, byte [esi] ; Get our next instruction |
||
11576 | inc esi ; Increment PC |
||
11577 | jmp dword [z80regular+edx*4] |
||
11578 | |||
11579 | |||
11580 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11581 | |||
11582 | DDInst9d: |
||
11583 | mov dl, byte [_z80ix] |
||
11584 | sahf ; Store our flags in x86 flag reg |
||
11585 | sbb al, dl |
||
11586 | lahf ; Get flags back into AH |
||
11587 | seto dl |
||
11588 | and ah, 0fbh ; Knock out parity/overflow |
||
11589 | shl dl, 2 |
||
11590 | or ah, dl |
||
11591 | or ah, 02h ; N Gets set! |
||
11592 | sub edi, byte 9 |
||
11593 | js near noMoreExec |
||
11594 | mov dl, byte [esi] ; Get our next instruction |
||
11595 | inc esi ; Increment PC |
||
11596 | jmp dword [z80regular+edx*4] |
||
11597 | |||
11598 | |||
11599 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11600 | |||
11601 | DDInst9e: |
||
11602 | mov dl, [esi] ; Fetch our offset |
||
11603 | inc esi ; Move past the offset |
||
11604 | or dl, dl ; Is this bad boy signed? |
||
11605 | jns notSigned182 ; Nope! |
||
11606 | dec dh ; Make it FFable |
||
11607 | notSigned182: |
||
11608 | add dx, [_z80ix] ; Our offset! |
||
11609 | mov [cyclesRemaining], edi |
||
11610 | mov edi, [_z80MemRead] ; Point to the read array |
||
11611 | |||
11612 | checkLoop183: |
||
11613 | cmp [edi], word 0ffffh ; End of the list? |
||
11614 | je memoryRead183 |
||
11615 | cmp edx, [edi] ; Are we smaller? |
||
11616 | jb nextAddr183 ; Yes, go to the next address |
||
11617 | cmp edx, [edi+4] ; Are we bigger? |
||
11618 | jbe callRoutine183 |
||
11619 | |||
11620 | nextAddr183: |
||
11621 | add edi, 10h ; Next structure! |
||
11622 | jmp short checkLoop183 |
||
11623 | |||
11624 | callRoutine183: |
||
11625 | call ReadMemoryByte ; Standard read routine |
||
11626 | mov dl, al ; Put our returned value here |
||
11627 | mov ax, [_z80af] ; Get our AF back |
||
11628 | jmp short readExit183 |
||
11629 | |||
11630 | memoryRead183: |
||
11631 | mov dl, [ebp + edx] ; Get our data |
||
11632 | |||
11633 | readExit183: |
||
11634 | mov edi, [cyclesRemaining] |
||
11635 | sahf |
||
11636 | sbb al, dl |
||
11637 | lahf |
||
11638 | seto dl |
||
11639 | and ah, 0fbh ; Knock out parity/overflow |
||
11640 | shl dl, 2 |
||
11641 | or ah, dl |
||
11642 | or ah, 02h ; Set negative |
||
11643 | xor edx, edx |
||
11644 | sub edi, byte 19 |
||
11645 | js near noMoreExec |
||
11646 | mov dl, byte [esi] ; Get our next instruction |
||
11647 | inc esi ; Increment PC |
||
11648 | jmp dword [z80regular+edx*4] |
||
11649 | |||
11650 | |||
11651 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11652 | |||
11653 | DDInsta4: |
||
11654 | mov dl, byte [_z80ix + 1] |
||
11655 | sahf ; Store our flags in x86 flag reg |
||
11656 | and al, dl |
||
11657 | lahf ; Get flags back into AH |
||
11658 | and ah, 0ech ; Only these flags matter! |
||
11659 | or ah, 010h ; Half carry gets set |
||
11660 | sub edi, byte 9 |
||
11661 | js near noMoreExec |
||
11662 | mov dl, byte [esi] ; Get our next instruction |
||
11663 | inc esi ; Increment PC |
||
11664 | jmp dword [z80regular+edx*4] |
||
11665 | |||
11666 | |||
11667 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11668 | |||
11669 | DDInsta5: |
||
11670 | mov dl, byte [_z80ix] |
||
11671 | sahf ; Store our flags in x86 flag reg |
||
11672 | and al, dl |
||
11673 | lahf ; Get flags back into AH |
||
11674 | and ah, 0ech ; Only these flags matter! |
||
11675 | or ah, 010h ; Half carry gets set |
||
11676 | sub edi, byte 9 |
||
11677 | js near noMoreExec |
||
11678 | mov dl, byte [esi] ; Get our next instruction |
||
11679 | inc esi ; Increment PC |
||
11680 | jmp dword [z80regular+edx*4] |
||
11681 | |||
11682 | |||
11683 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11684 | |||
11685 | DDInsta6: |
||
11686 | mov dl, [esi] ; Fetch our offset |
||
11687 | inc esi ; Move past the offset |
||
11688 | or dl, dl ; Is this bad boy signed? |
||
11689 | jns notSigned184 ; Nope! |
||
11690 | dec dh ; Make it FFable |
||
11691 | notSigned184: |
||
11692 | add dx, [_z80ix] ; Our offset! |
||
11693 | mov [cyclesRemaining], edi |
||
11694 | mov edi, [_z80MemRead] ; Point to the read array |
||
11695 | |||
11696 | checkLoop185: |
||
11697 | cmp [edi], word 0ffffh ; End of the list? |
||
11698 | je memoryRead185 |
||
11699 | cmp edx, [edi] ; Are we smaller? |
||
11700 | jb nextAddr185 ; Yes, go to the next address |
||
11701 | cmp edx, [edi+4] ; Are we bigger? |
||
11702 | jbe callRoutine185 |
||
11703 | |||
11704 | nextAddr185: |
||
11705 | add edi, 10h ; Next structure! |
||
11706 | jmp short checkLoop185 |
||
11707 | |||
11708 | callRoutine185: |
||
11709 | call ReadMemoryByte ; Standard read routine |
||
11710 | mov dl, al ; Put our returned value here |
||
11711 | mov ax, [_z80af] ; Get our AF back |
||
11712 | jmp short readExit185 |
||
11713 | |||
11714 | memoryRead185: |
||
11715 | mov dl, [ebp + edx] ; Get our data |
||
11716 | |||
11717 | readExit185: |
||
11718 | mov edi, [cyclesRemaining] |
||
11719 | sahf |
||
11720 | and al, dl |
||
11721 | lahf |
||
11722 | and ah,0fch ; Knock out N & C |
||
11723 | or ah, 10h ; Set half carry |
||
11724 | xor edx, edx |
||
11725 | sub edi, byte 19 |
||
11726 | js near noMoreExec |
||
11727 | mov dl, byte [esi] ; Get our next instruction |
||
11728 | inc esi ; Increment PC |
||
11729 | jmp dword [z80regular+edx*4] |
||
11730 | |||
11731 | |||
11732 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11733 | |||
11734 | DDInstac: |
||
11735 | mov dl, byte [_z80ix + 1] |
||
11736 | sahf ; Store our flags in x86 flag reg |
||
11737 | xor al, dl |
||
11738 | lahf ; Get flags back into AH |
||
11739 | and ah, 0ech ; Only these flags matter! |
||
11740 | sub edi, byte 9 |
||
11741 | js near noMoreExec |
||
11742 | mov dl, byte [esi] ; Get our next instruction |
||
11743 | inc esi ; Increment PC |
||
11744 | jmp dword [z80regular+edx*4] |
||
11745 | |||
11746 | |||
11747 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11748 | |||
11749 | DDInstad: |
||
11750 | mov dl, byte [_z80ix] |
||
11751 | sahf ; Store our flags in x86 flag reg |
||
11752 | xor al, dl |
||
11753 | lahf ; Get flags back into AH |
||
11754 | and ah, 0ech ; Only these flags matter! |
||
11755 | sub edi, byte 9 |
||
11756 | js near noMoreExec |
||
11757 | mov dl, byte [esi] ; Get our next instruction |
||
11758 | inc esi ; Increment PC |
||
11759 | jmp dword [z80regular+edx*4] |
||
11760 | |||
11761 | |||
11762 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11763 | |||
11764 | DDInstae: |
||
11765 | mov dl, [esi] ; Fetch our offset |
||
11766 | inc esi ; Move past the offset |
||
11767 | or dl, dl ; Is this bad boy signed? |
||
11768 | jns notSigned186 ; Nope! |
||
11769 | dec dh ; Make it FFable |
||
11770 | notSigned186: |
||
11771 | add dx, [_z80ix] ; Our offset! |
||
11772 | mov [cyclesRemaining], edi |
||
11773 | mov edi, [_z80MemRead] ; Point to the read array |
||
11774 | |||
11775 | checkLoop187: |
||
11776 | cmp [edi], word 0ffffh ; End of the list? |
||
11777 | je memoryRead187 |
||
11778 | cmp edx, [edi] ; Are we smaller? |
||
11779 | jb nextAddr187 ; Yes, go to the next address |
||
11780 | cmp edx, [edi+4] ; Are we bigger? |
||
11781 | jbe callRoutine187 |
||
11782 | |||
11783 | nextAddr187: |
||
11784 | add edi, 10h ; Next structure! |
||
11785 | jmp short checkLoop187 |
||
11786 | |||
11787 | callRoutine187: |
||
11788 | call ReadMemoryByte ; Standard read routine |
||
11789 | mov dl, al ; Put our returned value here |
||
11790 | mov ax, [_z80af] ; Get our AF back |
||
11791 | jmp short readExit187 |
||
11792 | |||
11793 | memoryRead187: |
||
11794 | mov dl, [ebp + edx] ; Get our data |
||
11795 | |||
11796 | readExit187: |
||
11797 | mov edi, [cyclesRemaining] |
||
11798 | sahf |
||
11799 | xor al, dl |
||
11800 | lahf |
||
11801 | and ah, 0ech ; Knock out H, N, and C |
||
11802 | xor edx, edx |
||
11803 | sub edi, byte 19 |
||
11804 | js near noMoreExec |
||
11805 | mov dl, byte [esi] ; Get our next instruction |
||
11806 | inc esi ; Increment PC |
||
11807 | jmp dword [z80regular+edx*4] |
||
11808 | |||
11809 | |||
11810 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11811 | |||
11812 | DDInstb4: |
||
11813 | mov dl, byte [_z80ix + 1] |
||
11814 | sahf ; Store our flags in x86 flag reg |
||
11815 | or al, dl |
||
11816 | lahf ; Get flags back into AH |
||
11817 | and ah, 0ech ; No H, N, or C |
||
11818 | and ah, 0ech ; No H, N, or C |
||
11819 | sub edi, byte 9 |
||
11820 | js near noMoreExec |
||
11821 | mov dl, byte [esi] ; Get our next instruction |
||
11822 | inc esi ; Increment PC |
||
11823 | jmp dword [z80regular+edx*4] |
||
11824 | |||
11825 | |||
11826 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11827 | |||
11828 | DDInstb5: |
||
11829 | mov dl, byte [_z80ix] |
||
11830 | sahf ; Store our flags in x86 flag reg |
||
11831 | or al, dl |
||
11832 | lahf ; Get flags back into AH |
||
11833 | and ah, 0ech ; No H, N, or C |
||
11834 | and ah, 0ech ; No H, N, or C |
||
11835 | sub edi, byte 9 |
||
11836 | js near noMoreExec |
||
11837 | mov dl, byte [esi] ; Get our next instruction |
||
11838 | inc esi ; Increment PC |
||
11839 | jmp dword [z80regular+edx*4] |
||
11840 | |||
11841 | |||
11842 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11843 | |||
11844 | DDInstb6: |
||
11845 | mov dl, [esi] ; Fetch our offset |
||
11846 | inc esi ; Move past the offset |
||
11847 | or dl, dl ; Is this bad boy signed? |
||
11848 | jns notSigned188 ; Nope! |
||
11849 | dec dh ; Make it FFable |
||
11850 | notSigned188: |
||
11851 | add dx, [_z80ix] ; Our offset! |
||
11852 | mov [cyclesRemaining], edi |
||
11853 | mov edi, [_z80MemRead] ; Point to the read array |
||
11854 | |||
11855 | checkLoop189: |
||
11856 | cmp [edi], word 0ffffh ; End of the list? |
||
11857 | je memoryRead189 |
||
11858 | cmp edx, [edi] ; Are we smaller? |
||
11859 | jb nextAddr189 ; Yes, go to the next address |
||
11860 | cmp edx, [edi+4] ; Are we bigger? |
||
11861 | jbe callRoutine189 |
||
11862 | |||
11863 | nextAddr189: |
||
11864 | add edi, 10h ; Next structure! |
||
11865 | jmp short checkLoop189 |
||
11866 | |||
11867 | callRoutine189: |
||
11868 | call ReadMemoryByte ; Standard read routine |
||
11869 | mov dl, al ; Put our returned value here |
||
11870 | mov ax, [_z80af] ; Get our AF back |
||
11871 | jmp short readExit189 |
||
11872 | |||
11873 | memoryRead189: |
||
11874 | mov dl, [ebp + edx] ; Get our data |
||
11875 | |||
11876 | readExit189: |
||
11877 | mov edi, [cyclesRemaining] |
||
11878 | sahf |
||
11879 | or al, dl |
||
11880 | lahf |
||
11881 | and ah, 0ech ; Knock out H, N, and C |
||
11882 | xor edx, edx |
||
11883 | sub edi, byte 19 |
||
11884 | js near noMoreExec |
||
11885 | mov dl, byte [esi] ; Get our next instruction |
||
11886 | inc esi ; Increment PC |
||
11887 | jmp dword [z80regular+edx*4] |
||
11888 | |||
11889 | |||
11890 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11891 | |||
11892 | DDInstbc: |
||
11893 | mov dl, byte [_z80ix + 1] |
||
11894 | sahf ; Store our flags in x86 flag reg |
||
11895 | cmp al, dl |
||
11896 | lahf ; Get flags back into AH |
||
11897 | seto dl |
||
11898 | and ah, 0fbh ; Knock out parity/overflow |
||
11899 | shl dl, 2 |
||
11900 | or ah, dl |
||
11901 | or ah, 02h ; Negative gets set on a compare |
||
11902 | sub edi, byte 9 |
||
11903 | js near noMoreExec |
||
11904 | mov dl, byte [esi] ; Get our next instruction |
||
11905 | inc esi ; Increment PC |
||
11906 | jmp dword [z80regular+edx*4] |
||
11907 | |||
11908 | |||
11909 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11910 | |||
11911 | DDInstbd: |
||
11912 | mov dl, byte [_z80ix] |
||
11913 | sahf ; Store our flags in x86 flag reg |
||
11914 | cmp al, dl |
||
11915 | lahf ; Get flags back into AH |
||
11916 | seto dl |
||
11917 | and ah, 0fbh ; Knock out parity/overflow |
||
11918 | shl dl, 2 |
||
11919 | or ah, dl |
||
11920 | or ah, 02h ; Negative gets set on a compare |
||
11921 | sub edi, byte 9 |
||
11922 | js near noMoreExec |
||
11923 | mov dl, byte [esi] ; Get our next instruction |
||
11924 | inc esi ; Increment PC |
||
11925 | jmp dword [z80regular+edx*4] |
||
11926 | |||
11927 | |||
11928 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
11929 | |||
11930 | DDInstbe: |
||
11931 | mov dl, [esi] ; Fetch our offset |
||
11932 | inc esi ; Move past the offset |
||
11933 | or dl, dl ; Is this bad boy signed? |
||
11934 | jns notSigned190 ; Nope! |
||
11935 | dec dh ; Make it FFable |
||
11936 | notSigned190: |
||
11937 | add dx, [_z80ix] ; Our offset! |
||
11938 | mov [cyclesRemaining], edi |
||
11939 | mov edi, [_z80MemRead] ; Point to the read array |
||
11940 | |||
11941 | checkLoop191: |
||
11942 | cmp [edi], word 0ffffh ; End of the list? |
||
11943 | je memoryRead191 |
||
11944 | cmp edx, [edi] ; Are we smaller? |
||
11945 | jb nextAddr191 ; Yes, go to the next address |
||
11946 | cmp edx, [edi+4] ; Are we bigger? |
||
11947 | jbe callRoutine191 |
||
11948 | |||
11949 | nextAddr191: |
||
11950 | add edi, 10h ; Next structure! |
||
11951 | jmp short checkLoop191 |
||
11952 | |||
11953 | callRoutine191: |
||
11954 | call ReadMemoryByte ; Standard read routine |
||
11955 | mov dl, al ; Put our returned value here |
||
11956 | mov ax, [_z80af] ; Get our AF back |
||
11957 | jmp short readExit191 |
||
11958 | |||
11959 | memoryRead191: |
||
11960 | mov dl, [ebp + edx] ; Get our data |
||
11961 | |||
11962 | readExit191: |
||
11963 | mov edi, [cyclesRemaining] |
||
11964 | sahf |
||
11965 | cmp al, dl |
||
11966 | lahf |
||
11967 | seto dl |
||
11968 | and ah, 0fbh ; Knock out parity/overflow |
||
11969 | shl dl, 2 |
||
11970 | or ah, dl |
||
11971 | or ah, 02h ; Set negative |
||
11972 | xor edx, edx |
||
11973 | sub edi, byte 19 |
||
11974 | js near noMoreExec |
||
11975 | mov dl, byte [esi] ; Get our next instruction |
||
11976 | inc esi ; Increment PC |
||
11977 | jmp dword [z80regular+edx*4] |
||
11978 | |||
11979 | DDInstcb: |
||
11980 | mov dx, [esi] ; Get our instruction (and offset) |
||
11981 | add esi, 2 ; Increment our PC |
||
11982 | mov byte [_orgval], dl ; Store our value |
||
11983 | or dl, dl |
||
11984 | js notNeg192 |
||
11985 | mov byte [_orgval + 1], 00h; |
||
11986 | jmp short jumpHandler192 |
||
11987 | notNeg192: |
||
11988 | mov byte [_orgval + 1], 0ffh; It's negative |
||
11989 | jumpHandler192: |
||
11990 | shl ebx, 16 ; Save BX away |
||
11991 | mov bx, [_z80ix] |
||
11992 | add [_orgval], bx |
||
11993 | shr ebx, 16 ; Restore BX |
||
11994 | mov dl, dh ; Get our instruction |
||
11995 | xor dh, dh ; Zero this |
||
11996 | jmp dword [z80ddfdcbInstructions+edx*4] |
||
11997 | |||
11998 | |||
11999 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12000 | |||
12001 | DDInste1: |
||
12002 | mov dx, [_z80sp] |
||
12003 | mov [cyclesRemaining], edi |
||
12004 | mov edi, [_z80MemRead] ; Point to the read array |
||
12005 | |||
12006 | checkLoop193: |
||
12007 | cmp [edi], word 0ffffh ; End of the list? |
||
12008 | je memoryRead193 |
||
12009 | cmp dx, [edi] ; Are we smaller? |
||
12010 | jb nextAddr193 ; Yes, go to the next address |
||
12011 | cmp dx, [edi+4] ; Are we bigger? |
||
12012 | jbe callRoutine193 |
||
12013 | |||
12014 | nextAddr193: |
||
12015 | add edi, 10h ; Next structure! |
||
12016 | jmp short checkLoop193 |
||
12017 | |||
12018 | callRoutine193: |
||
12019 | push ax ; Save this for later |
||
12020 | push dx ; Save address |
||
12021 | call ReadMemoryByte ; Standard read routine |
||
12022 | pop dx ; Restore our address |
||
12023 | inc dx ; Next byte, please |
||
12024 | push ax ; Save returned byte |
||
12025 | call ReadMemoryByte ; Standard read routine |
||
12026 | xchg ah, al ; Swap for endian's sake |
||
12027 | pop dx ; Restore LSB |
||
12028 | mov dh, ah ; Our word is now in DX |
||
12029 | pop ax ; Restore this |
||
12030 | mov [_z80ix], dx ; Store our word |
||
12031 | jmp readExit193 |
||
12032 | |||
12033 | memoryRead193: |
||
12034 | mov dx, [ebp + edx] |
||
12035 | mov [_z80ix], dx |
||
12036 | readExit193: |
||
12037 | mov edi, [cyclesRemaining] |
||
12038 | add word [_z80sp], 2 |
||
12039 | xor edx, edx |
||
12040 | sub edi, byte 14 |
||
12041 | js near noMoreExec |
||
12042 | mov dl, byte [esi] ; Get our next instruction |
||
12043 | inc esi ; Increment PC |
||
12044 | jmp dword [z80regular+edx*4] |
||
12045 | |||
12046 | |||
12047 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12048 | |||
12049 | DDInste3: |
||
12050 | mov [cyclesRemaining], edi |
||
12051 | mov dx, word [_z80sp] |
||
12052 | xor edi, edi |
||
12053 | mov di, [_z80ix] |
||
12054 | xchg di, [ebp+edx] |
||
12055 | mov [_z80ix], di |
||
12056 | xor edx, edx |
||
12057 | mov edi, [cyclesRemaining] |
||
12058 | sub edi, byte 23 |
||
12059 | js near noMoreExec |
||
12060 | mov dl, byte [esi] ; Get our next instruction |
||
12061 | inc esi ; Increment PC |
||
12062 | jmp dword [z80regular+edx*4] |
||
12063 | |||
12064 | |||
12065 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12066 | |||
12067 | DDInste5: |
||
12068 | sub word [_z80sp], 2 |
||
12069 | mov dx, [_z80sp] |
||
12070 | mov [cyclesRemaining], edi |
||
12071 | mov edi, [_z80MemWrite] ; Point to the write array |
||
12072 | |||
12073 | checkLoop194: |
||
12074 | cmp [edi], word 0ffffh ; End of the list? |
||
12075 | je memoryWrite194 |
||
12076 | cmp dx, [edi] ; Are we smaller? |
||
12077 | jb nextAddr194 ; Yes, go to the next address |
||
12078 | cmp dx, [edi+4] ; Are we bigger? |
||
12079 | jbe callRoutine194 |
||
12080 | |||
12081 | nextAddr194: |
||
12082 | add edi, 10h ; Next structure! |
||
12083 | jmp short checkLoop194 |
||
12084 | |||
12085 | callRoutine194: |
||
12086 | push ax ; Save this for later |
||
12087 | push dx |
||
12088 | mov ax, [_z80ix] |
||
12089 | call WriteMemoryByte |
||
12090 | pop dx |
||
12091 | pop ax |
||
12092 | inc dx |
||
12093 | |||
12094 | push ax |
||
12095 | push dx |
||
12096 | mov ax, [_z80ix] |
||
12097 | xchg ah, al |
||
12098 | call WriteMemoryByte |
||
12099 | pop dx |
||
12100 | pop ax ; Restore us! |
||
12101 | jmp writeExit194 |
||
12102 | |||
12103 | memoryWrite194: |
||
12104 | mov di, [_z80ix] |
||
12105 | mov [ebp + edx], di ; Store our word |
||
12106 | writeExit194: |
||
12107 | mov edi, [cyclesRemaining] |
||
12108 | xor edx, edx |
||
12109 | sub edi, byte 15 |
||
12110 | js near noMoreExec |
||
12111 | mov dl, byte [esi] ; Get our next instruction |
||
12112 | inc esi ; Increment PC |
||
12113 | jmp dword [z80regular+edx*4] |
||
12114 | |||
12115 | |||
12116 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12117 | |||
12118 | DDInste9: |
||
12119 | mov dx, [_z80ix] ; Get our value |
||
12120 | mov esi, edx ; New PC! |
||
12121 | add esi, ebp ; Add in our base |
||
12122 | xor edx, edx |
||
12123 | sub edi, byte 8 |
||
12124 | js near noMoreExec |
||
12125 | mov dl, byte [esi] ; Get our next instruction |
||
12126 | inc esi ; Increment PC |
||
12127 | jmp dword [z80regular+edx*4] |
||
12128 | |||
12129 | |||
12130 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12131 | |||
12132 | DDInstf9: |
||
12133 | mov dx, [_z80ix] ; Get our source register |
||
12134 | mov word [_z80sp], dx ; Store our new SP |
||
12135 | xor edx, edx |
||
12136 | sub edi, byte 10 |
||
12137 | js near noMoreExec |
||
12138 | mov dl, byte [esi] ; Get our next instruction |
||
12139 | inc esi ; Increment PC |
||
12140 | jmp dword [z80regular+edx*4] |
||
12141 | |||
12142 | |||
12143 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12144 | |||
12145 | DDFDCBInst06: |
||
12146 | mov dx, [_orgval] ; Get our target address |
||
12147 | mov [cyclesRemaining], edi |
||
12148 | mov edi, [_z80MemRead] ; Point to the read array |
||
12149 | |||
12150 | checkLoop195: |
||
12151 | cmp [edi], word 0ffffh ; End of the list? |
||
12152 | je memoryRead195 |
||
12153 | cmp edx, [edi] ; Are we smaller? |
||
12154 | jb nextAddr195 ; Yes, go to the next address |
||
12155 | cmp edx, [edi+4] ; Are we bigger? |
||
12156 | jbe callRoutine195 |
||
12157 | |||
12158 | nextAddr195: |
||
12159 | add edi, 10h ; Next structure! |
||
12160 | jmp short checkLoop195 |
||
12161 | |||
12162 | callRoutine195: |
||
12163 | call ReadMemoryByte ; Standard read routine |
||
12164 | mov dl, al ; Put our returned value here |
||
12165 | mov ax, [_z80af] ; Get our AF back |
||
12166 | jmp short readExit195 |
||
12167 | |||
12168 | memoryRead195: |
||
12169 | mov dl, [ebp + edx] ; Get our data |
||
12170 | |||
12171 | readExit195: |
||
12172 | mov edi, [cyclesRemaining] |
||
12173 | sahf ; Restore our flags |
||
12174 | rol dl, 1 |
||
12175 | lahf ; Get our flags back |
||
12176 | and ah, 0edh ; Knock out H & N |
||
12177 | mov [cyclesRemaining], edi |
||
12178 | mov [_z80af], ax ; Store AF |
||
12179 | mov al, dl ; And our data to write |
||
12180 | mov dx, [_orgval] |
||
12181 | mov edi, [_z80MemWrite] ; Point to the write array |
||
12182 | |||
12183 | checkLoop196: |
||
12184 | cmp [edi], word 0ffffh ; End of our list? |
||
12185 | je memoryWrite196 ; Yes - go write it! |
||
12186 | cmp dx, [edi] ; Are we smaller? |
||
12187 | jb nextAddr196 ; Yes... go to the next addr |
||
12188 | cmp dx, [edi+4] ; Are we smaller? |
||
12189 | jbe callRoutine196 ; If not, go call it! |
||
12190 | |||
12191 | nextAddr196: |
||
12192 | add edi, 10h ; Next structure, please |
||
12193 | jmp short checkLoop196 |
||
12194 | |||
12195 | callRoutine196: |
||
12196 | call WriteMemoryByte ; Go write the data! |
||
12197 | jmp short WriteMacroExit196 |
||
12198 | memoryWrite196: |
||
12199 | mov [ebp + edx], al |
||
12200 | mov ax, [_z80af] ; Get our accumulator and flags |
||
12201 | WriteMacroExit196: |
||
12202 | mov edi, [cyclesRemaining] |
||
12203 | xor edx, edx |
||
12204 | sub edi, byte 23 |
||
12205 | js near noMoreExec |
||
12206 | mov dl, byte [esi] ; Get our next instruction |
||
12207 | inc esi ; Increment PC |
||
12208 | jmp dword [z80regular+edx*4] |
||
12209 | |||
12210 | |||
12211 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12212 | |||
12213 | DDFDCBInst0e: |
||
12214 | mov dx, [_orgval] ; Get our target address |
||
12215 | mov [cyclesRemaining], edi |
||
12216 | mov edi, [_z80MemRead] ; Point to the read array |
||
12217 | |||
12218 | checkLoop197: |
||
12219 | cmp [edi], word 0ffffh ; End of the list? |
||
12220 | je memoryRead197 |
||
12221 | cmp edx, [edi] ; Are we smaller? |
||
12222 | jb nextAddr197 ; Yes, go to the next address |
||
12223 | cmp edx, [edi+4] ; Are we bigger? |
||
12224 | jbe callRoutine197 |
||
12225 | |||
12226 | nextAddr197: |
||
12227 | add edi, 10h ; Next structure! |
||
12228 | jmp short checkLoop197 |
||
12229 | |||
12230 | callRoutine197: |
||
12231 | call ReadMemoryByte ; Standard read routine |
||
12232 | mov dl, al ; Put our returned value here |
||
12233 | mov ax, [_z80af] ; Get our AF back |
||
12234 | jmp short readExit197 |
||
12235 | |||
12236 | memoryRead197: |
||
12237 | mov dl, [ebp + edx] ; Get our data |
||
12238 | |||
12239 | readExit197: |
||
12240 | mov edi, [cyclesRemaining] |
||
12241 | sahf ; Restore our flags |
||
12242 | ror dl, 1 |
||
12243 | lahf ; Get our flags back |
||
12244 | and ah, 0edh ; Knock out H & N |
||
12245 | mov [cyclesRemaining], edi |
||
12246 | mov [_z80af], ax ; Store AF |
||
12247 | mov al, dl ; And our data to write |
||
12248 | mov dx, [_orgval] |
||
12249 | mov edi, [_z80MemWrite] ; Point to the write array |
||
12250 | |||
12251 | checkLoop198: |
||
12252 | cmp [edi], word 0ffffh ; End of our list? |
||
12253 | je memoryWrite198 ; Yes - go write it! |
||
12254 | cmp dx, [edi] ; Are we smaller? |
||
12255 | jb nextAddr198 ; Yes... go to the next addr |
||
12256 | cmp dx, [edi+4] ; Are we smaller? |
||
12257 | jbe callRoutine198 ; If not, go call it! |
||
12258 | |||
12259 | nextAddr198: |
||
12260 | add edi, 10h ; Next structure, please |
||
12261 | jmp short checkLoop198 |
||
12262 | |||
12263 | callRoutine198: |
||
12264 | call WriteMemoryByte ; Go write the data! |
||
12265 | jmp short WriteMacroExit198 |
||
12266 | memoryWrite198: |
||
12267 | mov [ebp + edx], al |
||
12268 | mov ax, [_z80af] ; Get our accumulator and flags |
||
12269 | WriteMacroExit198: |
||
12270 | mov edi, [cyclesRemaining] |
||
12271 | xor edx, edx |
||
12272 | sub edi, byte 23 |
||
12273 | js near noMoreExec |
||
12274 | mov dl, byte [esi] ; Get our next instruction |
||
12275 | inc esi ; Increment PC |
||
12276 | jmp dword [z80regular+edx*4] |
||
12277 | |||
12278 | |||
12279 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12280 | |||
12281 | DDFDCBInst16: |
||
12282 | mov dx, [_orgval] ; Get our target address |
||
12283 | mov [cyclesRemaining], edi |
||
12284 | mov edi, [_z80MemRead] ; Point to the read array |
||
12285 | |||
12286 | checkLoop199: |
||
12287 | cmp [edi], word 0ffffh ; End of the list? |
||
12288 | je memoryRead199 |
||
12289 | cmp edx, [edi] ; Are we smaller? |
||
12290 | jb nextAddr199 ; Yes, go to the next address |
||
12291 | cmp edx, [edi+4] ; Are we bigger? |
||
12292 | jbe callRoutine199 |
||
12293 | |||
12294 | nextAddr199: |
||
12295 | add edi, 10h ; Next structure! |
||
12296 | jmp short checkLoop199 |
||
12297 | |||
12298 | callRoutine199: |
||
12299 | call ReadMemoryByte ; Standard read routine |
||
12300 | mov dl, al ; Put our returned value here |
||
12301 | mov ax, [_z80af] ; Get our AF back |
||
12302 | jmp short readExit199 |
||
12303 | |||
12304 | memoryRead199: |
||
12305 | mov dl, [ebp + edx] ; Get our data |
||
12306 | |||
12307 | readExit199: |
||
12308 | mov edi, [cyclesRemaining] |
||
12309 | sahf ; Restore our flags |
||
12310 | rcl dl, 1 |
||
12311 | lahf ; Get our flags back |
||
12312 | and ah, 0edh ; Knock out H & N |
||
12313 | mov [cyclesRemaining], edi |
||
12314 | mov [_z80af], ax ; Store AF |
||
12315 | mov al, dl ; And our data to write |
||
12316 | mov dx, [_orgval] |
||
12317 | mov edi, [_z80MemWrite] ; Point to the write array |
||
12318 | |||
12319 | checkLoop200: |
||
12320 | cmp [edi], word 0ffffh ; End of our list? |
||
12321 | je memoryWrite200 ; Yes - go write it! |
||
12322 | cmp dx, [edi] ; Are we smaller? |
||
12323 | jb nextAddr200 ; Yes... go to the next addr |
||
12324 | cmp dx, [edi+4] ; Are we smaller? |
||
12325 | jbe callRoutine200 ; If not, go call it! |
||
12326 | |||
12327 | nextAddr200: |
||
12328 | add edi, 10h ; Next structure, please |
||
12329 | jmp short checkLoop200 |
||
12330 | |||
12331 | callRoutine200: |
||
12332 | call WriteMemoryByte ; Go write the data! |
||
12333 | jmp short WriteMacroExit200 |
||
12334 | memoryWrite200: |
||
12335 | mov [ebp + edx], al |
||
12336 | mov ax, [_z80af] ; Get our accumulator and flags |
||
12337 | WriteMacroExit200: |
||
12338 | mov edi, [cyclesRemaining] |
||
12339 | xor edx, edx |
||
12340 | sub edi, byte 23 |
||
12341 | js near noMoreExec |
||
12342 | mov dl, byte [esi] ; Get our next instruction |
||
12343 | inc esi ; Increment PC |
||
12344 | jmp dword [z80regular+edx*4] |
||
12345 | |||
12346 | |||
12347 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12348 | |||
12349 | DDFDCBInst1e: |
||
12350 | mov dx, [_orgval] ; Get our target address |
||
12351 | mov [cyclesRemaining], edi |
||
12352 | mov edi, [_z80MemRead] ; Point to the read array |
||
12353 | |||
12354 | checkLoop201: |
||
12355 | cmp [edi], word 0ffffh ; End of the list? |
||
12356 | je memoryRead201 |
||
12357 | cmp edx, [edi] ; Are we smaller? |
||
12358 | jb nextAddr201 ; Yes, go to the next address |
||
12359 | cmp edx, [edi+4] ; Are we bigger? |
||
12360 | jbe callRoutine201 |
||
12361 | |||
12362 | nextAddr201: |
||
12363 | add edi, 10h ; Next structure! |
||
12364 | jmp short checkLoop201 |
||
12365 | |||
12366 | callRoutine201: |
||
12367 | call ReadMemoryByte ; Standard read routine |
||
12368 | mov dl, al ; Put our returned value here |
||
12369 | mov ax, [_z80af] ; Get our AF back |
||
12370 | jmp short readExit201 |
||
12371 | |||
12372 | memoryRead201: |
||
12373 | mov dl, [ebp + edx] ; Get our data |
||
12374 | |||
12375 | readExit201: |
||
12376 | mov edi, [cyclesRemaining] |
||
12377 | sahf ; Restore our flags |
||
12378 | rcr dl, 1 |
||
12379 | lahf ; Get our flags back |
||
12380 | and ah, 0edh ; Knock out H & N |
||
12381 | mov [cyclesRemaining], edi |
||
12382 | mov [_z80af], ax ; Store AF |
||
12383 | mov al, dl ; And our data to write |
||
12384 | mov dx, [_orgval] |
||
12385 | mov edi, [_z80MemWrite] ; Point to the write array |
||
12386 | |||
12387 | checkLoop202: |
||
12388 | cmp [edi], word 0ffffh ; End of our list? |
||
12389 | je memoryWrite202 ; Yes - go write it! |
||
12390 | cmp dx, [edi] ; Are we smaller? |
||
12391 | jb nextAddr202 ; Yes... go to the next addr |
||
12392 | cmp dx, [edi+4] ; Are we smaller? |
||
12393 | jbe callRoutine202 ; If not, go call it! |
||
12394 | |||
12395 | nextAddr202: |
||
12396 | add edi, 10h ; Next structure, please |
||
12397 | jmp short checkLoop202 |
||
12398 | |||
12399 | callRoutine202: |
||
12400 | call WriteMemoryByte ; Go write the data! |
||
12401 | jmp short WriteMacroExit202 |
||
12402 | memoryWrite202: |
||
12403 | mov [ebp + edx], al |
||
12404 | mov ax, [_z80af] ; Get our accumulator and flags |
||
12405 | WriteMacroExit202: |
||
12406 | mov edi, [cyclesRemaining] |
||
12407 | xor edx, edx |
||
12408 | sub edi, byte 23 |
||
12409 | js near noMoreExec |
||
12410 | mov dl, byte [esi] ; Get our next instruction |
||
12411 | inc esi ; Increment PC |
||
12412 | jmp dword [z80regular+edx*4] |
||
12413 | |||
12414 | |||
12415 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12416 | |||
12417 | DDFDCBInst26: |
||
12418 | mov dx, [_orgval] ; Get our target address |
||
12419 | mov [cyclesRemaining], edi |
||
12420 | mov edi, [_z80MemRead] ; Point to the read array |
||
12421 | |||
12422 | checkLoop203: |
||
12423 | cmp [edi], word 0ffffh ; End of the list? |
||
12424 | je memoryRead203 |
||
12425 | cmp edx, [edi] ; Are we smaller? |
||
12426 | jb nextAddr203 ; Yes, go to the next address |
||
12427 | cmp edx, [edi+4] ; Are we bigger? |
||
12428 | jbe callRoutine203 |
||
12429 | |||
12430 | nextAddr203: |
||
12431 | add edi, 10h ; Next structure! |
||
12432 | jmp short checkLoop203 |
||
12433 | |||
12434 | callRoutine203: |
||
12435 | call ReadMemoryByte ; Standard read routine |
||
12436 | mov dl, al ; Put our returned value here |
||
12437 | mov ax, [_z80af] ; Get our AF back |
||
12438 | jmp short readExit203 |
||
12439 | |||
12440 | memoryRead203: |
||
12441 | mov dl, [ebp + edx] ; Get our data |
||
12442 | |||
12443 | readExit203: |
||
12444 | mov edi, [cyclesRemaining] |
||
12445 | sahf ; Restore our flags |
||
12446 | shl dl, 1 |
||
12447 | lahf ; Get our flags back |
||
12448 | and ah, 0edh ; No Half carry or negative! |
||
12449 | mov [cyclesRemaining], edi |
||
12450 | mov [_z80af], ax ; Store AF |
||
12451 | mov al, dl ; And our data to write |
||
12452 | mov dx, [_orgval] |
||
12453 | mov edi, [_z80MemWrite] ; Point to the write array |
||
12454 | |||
12455 | checkLoop204: |
||
12456 | cmp [edi], word 0ffffh ; End of our list? |
||
12457 | je memoryWrite204 ; Yes - go write it! |
||
12458 | cmp dx, [edi] ; Are we smaller? |
||
12459 | jb nextAddr204 ; Yes... go to the next addr |
||
12460 | cmp dx, [edi+4] ; Are we smaller? |
||
12461 | jbe callRoutine204 ; If not, go call it! |
||
12462 | |||
12463 | nextAddr204: |
||
12464 | add edi, 10h ; Next structure, please |
||
12465 | jmp short checkLoop204 |
||
12466 | |||
12467 | callRoutine204: |
||
12468 | call WriteMemoryByte ; Go write the data! |
||
12469 | jmp short WriteMacroExit204 |
||
12470 | memoryWrite204: |
||
12471 | mov [ebp + edx], al |
||
12472 | mov ax, [_z80af] ; Get our accumulator and flags |
||
12473 | WriteMacroExit204: |
||
12474 | mov edi, [cyclesRemaining] |
||
12475 | xor edx, edx |
||
12476 | sub edi, byte 23 |
||
12477 | js near noMoreExec |
||
12478 | mov dl, byte [esi] ; Get our next instruction |
||
12479 | inc esi ; Increment PC |
||
12480 | jmp dword [z80regular+edx*4] |
||
12481 | |||
12482 | |||
12483 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12484 | |||
12485 | DDFDCBInst2e: |
||
12486 | mov dx, [_orgval] ; Get our target address |
||
12487 | mov [cyclesRemaining], edi |
||
12488 | mov edi, [_z80MemRead] ; Point to the read array |
||
12489 | |||
12490 | checkLoop205: |
||
12491 | cmp [edi], word 0ffffh ; End of the list? |
||
12492 | je memoryRead205 |
||
12493 | cmp edx, [edi] ; Are we smaller? |
||
12494 | jb nextAddr205 ; Yes, go to the next address |
||
12495 | cmp edx, [edi+4] ; Are we bigger? |
||
12496 | jbe callRoutine205 |
||
12497 | |||
12498 | nextAddr205: |
||
12499 | add edi, 10h ; Next structure! |
||
12500 | jmp short checkLoop205 |
||
12501 | |||
12502 | callRoutine205: |
||
12503 | call ReadMemoryByte ; Standard read routine |
||
12504 | mov dl, al ; Put our returned value here |
||
12505 | mov ax, [_z80af] ; Get our AF back |
||
12506 | jmp short readExit205 |
||
12507 | |||
12508 | memoryRead205: |
||
12509 | mov dl, [ebp + edx] ; Get our data |
||
12510 | |||
12511 | readExit205: |
||
12512 | mov edi, [cyclesRemaining] |
||
12513 | sahf ; Restore our flags |
||
12514 | sar dl, 1 |
||
12515 | lahf ; Get our flags back |
||
12516 | and ah, 0edh ; No Half carry or negative! |
||
12517 | mov [cyclesRemaining], edi |
||
12518 | mov [_z80af], ax ; Store AF |
||
12519 | mov al, dl ; And our data to write |
||
12520 | mov dx, [_orgval] |
||
12521 | mov edi, [_z80MemWrite] ; Point to the write array |
||
12522 | |||
12523 | checkLoop206: |
||
12524 | cmp [edi], word 0ffffh ; End of our list? |
||
12525 | je memoryWrite206 ; Yes - go write it! |
||
12526 | cmp dx, [edi] ; Are we smaller? |
||
12527 | jb nextAddr206 ; Yes... go to the next addr |
||
12528 | cmp dx, [edi+4] ; Are we smaller? |
||
12529 | jbe callRoutine206 ; If not, go call it! |
||
12530 | |||
12531 | nextAddr206: |
||
12532 | add edi, 10h ; Next structure, please |
||
12533 | jmp short checkLoop206 |
||
12534 | |||
12535 | callRoutine206: |
||
12536 | call WriteMemoryByte ; Go write the data! |
||
12537 | jmp short WriteMacroExit206 |
||
12538 | memoryWrite206: |
||
12539 | mov [ebp + edx], al |
||
12540 | mov ax, [_z80af] ; Get our accumulator and flags |
||
12541 | WriteMacroExit206: |
||
12542 | mov edi, [cyclesRemaining] |
||
12543 | xor edx, edx |
||
12544 | sub edi, byte 23 |
||
12545 | js near noMoreExec |
||
12546 | mov dl, byte [esi] ; Get our next instruction |
||
12547 | inc esi ; Increment PC |
||
12548 | jmp dword [z80regular+edx*4] |
||
12549 | |||
12550 | |||
12551 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12552 | |||
12553 | DDFDCBInst3e: |
||
12554 | mov dx, [_orgval] ; Get our target address |
||
12555 | mov [cyclesRemaining], edi |
||
12556 | mov edi, [_z80MemRead] ; Point to the read array |
||
12557 | |||
12558 | checkLoop207: |
||
12559 | cmp [edi], word 0ffffh ; End of the list? |
||
12560 | je memoryRead207 |
||
12561 | cmp edx, [edi] ; Are we smaller? |
||
12562 | jb nextAddr207 ; Yes, go to the next address |
||
12563 | cmp edx, [edi+4] ; Are we bigger? |
||
12564 | jbe callRoutine207 |
||
12565 | |||
12566 | nextAddr207: |
||
12567 | add edi, 10h ; Next structure! |
||
12568 | jmp short checkLoop207 |
||
12569 | |||
12570 | callRoutine207: |
||
12571 | call ReadMemoryByte ; Standard read routine |
||
12572 | mov dl, al ; Put our returned value here |
||
12573 | mov ax, [_z80af] ; Get our AF back |
||
12574 | jmp short readExit207 |
||
12575 | |||
12576 | memoryRead207: |
||
12577 | mov dl, [ebp + edx] ; Get our data |
||
12578 | |||
12579 | readExit207: |
||
12580 | mov edi, [cyclesRemaining] |
||
12581 | sahf ; Restore our flags |
||
12582 | shr dl, 1 |
||
12583 | lahf ; Get our flags back |
||
12584 | and ah, 0edh ; Knock out H & N |
||
12585 | mov [cyclesRemaining], edi |
||
12586 | mov [_z80af], ax ; Store AF |
||
12587 | mov al, dl ; And our data to write |
||
12588 | mov dx, [_orgval] |
||
12589 | mov edi, [_z80MemWrite] ; Point to the write array |
||
12590 | |||
12591 | checkLoop208: |
||
12592 | cmp [edi], word 0ffffh ; End of our list? |
||
12593 | je memoryWrite208 ; Yes - go write it! |
||
12594 | cmp dx, [edi] ; Are we smaller? |
||
12595 | jb nextAddr208 ; Yes... go to the next addr |
||
12596 | cmp dx, [edi+4] ; Are we smaller? |
||
12597 | jbe callRoutine208 ; If not, go call it! |
||
12598 | |||
12599 | nextAddr208: |
||
12600 | add edi, 10h ; Next structure, please |
||
12601 | jmp short checkLoop208 |
||
12602 | |||
12603 | callRoutine208: |
||
12604 | call WriteMemoryByte ; Go write the data! |
||
12605 | jmp short WriteMacroExit208 |
||
12606 | memoryWrite208: |
||
12607 | mov [ebp + edx], al |
||
12608 | mov ax, [_z80af] ; Get our accumulator and flags |
||
12609 | WriteMacroExit208: |
||
12610 | mov edi, [cyclesRemaining] |
||
12611 | xor edx, edx |
||
12612 | sub edi, byte 23 |
||
12613 | js near noMoreExec |
||
12614 | mov dl, byte [esi] ; Get our next instruction |
||
12615 | inc esi ; Increment PC |
||
12616 | jmp dword [z80regular+edx*4] |
||
12617 | |||
12618 | |||
12619 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12620 | |||
12621 | DDFDCBInst46: |
||
12622 | mov dx, [_orgval] ; Get our target address |
||
12623 | mov [cyclesRemaining], edi |
||
12624 | mov edi, [_z80MemRead] ; Point to the read array |
||
12625 | |||
12626 | checkLoop209: |
||
12627 | cmp [edi], word 0ffffh ; End of the list? |
||
12628 | je memoryRead209 |
||
12629 | cmp edx, [edi] ; Are we smaller? |
||
12630 | jb nextAddr209 ; Yes, go to the next address |
||
12631 | cmp edx, [edi+4] ; Are we bigger? |
||
12632 | jbe callRoutine209 |
||
12633 | |||
12634 | nextAddr209: |
||
12635 | add edi, 10h ; Next structure! |
||
12636 | jmp short checkLoop209 |
||
12637 | |||
12638 | callRoutine209: |
||
12639 | call ReadMemoryByte ; Standard read routine |
||
12640 | mov dl, al ; Put our returned value here |
||
12641 | mov ax, [_z80af] ; Get our AF back |
||
12642 | jmp short readExit209 |
||
12643 | |||
12644 | memoryRead209: |
||
12645 | mov dl, [ebp + edx] ; Get our data |
||
12646 | |||
12647 | readExit209: |
||
12648 | mov edi, [cyclesRemaining] |
||
12649 | mov dh, ah ; Store our original flags |
||
12650 | and dh, 29h ; Keep our old flags |
||
12651 | sahf ; Restore our flags |
||
12652 | test dl, 001h ; Is it set? |
||
12653 | lahf ; Get our flags back |
||
12654 | and ah, 0edh ; No Half carry or negative! |
||
12655 | or ah, 10h ; OR In our half carry |
||
12656 | and ah, 0d0h ; New flags |
||
12657 | or ah, dh ; OR In our old flags |
||
12658 | xor edx, edx |
||
12659 | sub edi, byte 20 |
||
12660 | js near noMoreExec |
||
12661 | mov dl, byte [esi] ; Get our next instruction |
||
12662 | inc esi ; Increment PC |
||
12663 | jmp dword [z80regular+edx*4] |
||
12664 | |||
12665 | |||
12666 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12667 | |||
12668 | DDFDCBInst4e: |
||
12669 | mov dx, [_orgval] ; Get our target address |
||
12670 | mov [cyclesRemaining], edi |
||
12671 | mov edi, [_z80MemRead] ; Point to the read array |
||
12672 | |||
12673 | checkLoop210: |
||
12674 | cmp [edi], word 0ffffh ; End of the list? |
||
12675 | je memoryRead210 |
||
12676 | cmp edx, [edi] ; Are we smaller? |
||
12677 | jb nextAddr210 ; Yes, go to the next address |
||
12678 | cmp edx, [edi+4] ; Are we bigger? |
||
12679 | jbe callRoutine210 |
||
12680 | |||
12681 | nextAddr210: |
||
12682 | add edi, 10h ; Next structure! |
||
12683 | jmp short checkLoop210 |
||
12684 | |||
12685 | callRoutine210: |
||
12686 | call ReadMemoryByte ; Standard read routine |
||
12687 | mov dl, al ; Put our returned value here |
||
12688 | mov ax, [_z80af] ; Get our AF back |
||
12689 | jmp short readExit210 |
||
12690 | |||
12691 | memoryRead210: |
||
12692 | mov dl, [ebp + edx] ; Get our data |
||
12693 | |||
12694 | readExit210: |
||
12695 | mov edi, [cyclesRemaining] |
||
12696 | mov dh, ah ; Store our original flags |
||
12697 | and dh, 29h ; Keep our old flags |
||
12698 | sahf ; Restore our flags |
||
12699 | test dl, 002h ; Is it set? |
||
12700 | lahf ; Get our flags back |
||
12701 | and ah, 0edh ; No Half carry or negative! |
||
12702 | or ah, 10h ; OR In our half carry |
||
12703 | and ah, 0d0h ; New flags |
||
12704 | or ah, dh ; OR In our old flags |
||
12705 | xor edx, edx |
||
12706 | sub edi, byte 20 |
||
12707 | js near noMoreExec |
||
12708 | mov dl, byte [esi] ; Get our next instruction |
||
12709 | inc esi ; Increment PC |
||
12710 | jmp dword [z80regular+edx*4] |
||
12711 | |||
12712 | |||
12713 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12714 | |||
12715 | DDFDCBInst56: |
||
12716 | mov dx, [_orgval] ; Get our target address |
||
12717 | mov [cyclesRemaining], edi |
||
12718 | mov edi, [_z80MemRead] ; Point to the read array |
||
12719 | |||
12720 | checkLoop211: |
||
12721 | cmp [edi], word 0ffffh ; End of the list? |
||
12722 | je memoryRead211 |
||
12723 | cmp edx, [edi] ; Are we smaller? |
||
12724 | jb nextAddr211 ; Yes, go to the next address |
||
12725 | cmp edx, [edi+4] ; Are we bigger? |
||
12726 | jbe callRoutine211 |
||
12727 | |||
12728 | nextAddr211: |
||
12729 | add edi, 10h ; Next structure! |
||
12730 | jmp short checkLoop211 |
||
12731 | |||
12732 | callRoutine211: |
||
12733 | call ReadMemoryByte ; Standard read routine |
||
12734 | mov dl, al ; Put our returned value here |
||
12735 | mov ax, [_z80af] ; Get our AF back |
||
12736 | jmp short readExit211 |
||
12737 | |||
12738 | memoryRead211: |
||
12739 | mov dl, [ebp + edx] ; Get our data |
||
12740 | |||
12741 | readExit211: |
||
12742 | mov edi, [cyclesRemaining] |
||
12743 | mov dh, ah ; Store our original flags |
||
12744 | and dh, 29h ; Keep our old flags |
||
12745 | sahf ; Restore our flags |
||
12746 | test dl, 004h ; Is it set? |
||
12747 | lahf ; Get our flags back |
||
12748 | and ah, 0edh ; No Half carry or negative! |
||
12749 | or ah, 10h ; OR In our half carry |
||
12750 | and ah, 0d0h ; New flags |
||
12751 | or ah, dh ; OR In our old flags |
||
12752 | xor edx, edx |
||
12753 | sub edi, byte 20 |
||
12754 | js near noMoreExec |
||
12755 | mov dl, byte [esi] ; Get our next instruction |
||
12756 | inc esi ; Increment PC |
||
12757 | jmp dword [z80regular+edx*4] |
||
12758 | |||
12759 | |||
12760 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12761 | |||
12762 | DDFDCBInst5e: |
||
12763 | mov dx, [_orgval] ; Get our target address |
||
12764 | mov [cyclesRemaining], edi |
||
12765 | mov edi, [_z80MemRead] ; Point to the read array |
||
12766 | |||
12767 | checkLoop212: |
||
12768 | cmp [edi], word 0ffffh ; End of the list? |
||
12769 | je memoryRead212 |
||
12770 | cmp edx, [edi] ; Are we smaller? |
||
12771 | jb nextAddr212 ; Yes, go to the next address |
||
12772 | cmp edx, [edi+4] ; Are we bigger? |
||
12773 | jbe callRoutine212 |
||
12774 | |||
12775 | nextAddr212: |
||
12776 | add edi, 10h ; Next structure! |
||
12777 | jmp short checkLoop212 |
||
12778 | |||
12779 | callRoutine212: |
||
12780 | call ReadMemoryByte ; Standard read routine |
||
12781 | mov dl, al ; Put our returned value here |
||
12782 | mov ax, [_z80af] ; Get our AF back |
||
12783 | jmp short readExit212 |
||
12784 | |||
12785 | memoryRead212: |
||
12786 | mov dl, [ebp + edx] ; Get our data |
||
12787 | |||
12788 | readExit212: |
||
12789 | mov edi, [cyclesRemaining] |
||
12790 | mov dh, ah ; Store our original flags |
||
12791 | and dh, 29h ; Keep our old flags |
||
12792 | sahf ; Restore our flags |
||
12793 | test dl, 008h ; Is it set? |
||
12794 | lahf ; Get our flags back |
||
12795 | and ah, 0edh ; No Half carry or negative! |
||
12796 | or ah, 10h ; OR In our half carry |
||
12797 | and ah, 0d0h ; New flags |
||
12798 | or ah, dh ; OR In our old flags |
||
12799 | xor edx, edx |
||
12800 | sub edi, byte 20 |
||
12801 | js near noMoreExec |
||
12802 | mov dl, byte [esi] ; Get our next instruction |
||
12803 | inc esi ; Increment PC |
||
12804 | jmp dword [z80regular+edx*4] |
||
12805 | |||
12806 | |||
12807 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12808 | |||
12809 | DDFDCBInst66: |
||
12810 | mov dx, [_orgval] ; Get our target address |
||
12811 | mov [cyclesRemaining], edi |
||
12812 | mov edi, [_z80MemRead] ; Point to the read array |
||
12813 | |||
12814 | checkLoop213: |
||
12815 | cmp [edi], word 0ffffh ; End of the list? |
||
12816 | je memoryRead213 |
||
12817 | cmp edx, [edi] ; Are we smaller? |
||
12818 | jb nextAddr213 ; Yes, go to the next address |
||
12819 | cmp edx, [edi+4] ; Are we bigger? |
||
12820 | jbe callRoutine213 |
||
12821 | |||
12822 | nextAddr213: |
||
12823 | add edi, 10h ; Next structure! |
||
12824 | jmp short checkLoop213 |
||
12825 | |||
12826 | callRoutine213: |
||
12827 | call ReadMemoryByte ; Standard read routine |
||
12828 | mov dl, al ; Put our returned value here |
||
12829 | mov ax, [_z80af] ; Get our AF back |
||
12830 | jmp short readExit213 |
||
12831 | |||
12832 | memoryRead213: |
||
12833 | mov dl, [ebp + edx] ; Get our data |
||
12834 | |||
12835 | readExit213: |
||
12836 | mov edi, [cyclesRemaining] |
||
12837 | mov dh, ah ; Store our original flags |
||
12838 | and dh, 29h ; Keep our old flags |
||
12839 | sahf ; Restore our flags |
||
12840 | test dl, 010h ; Is it set? |
||
12841 | lahf ; Get our flags back |
||
12842 | and ah, 0edh ; No Half carry or negative! |
||
12843 | or ah, 10h ; OR In our half carry |
||
12844 | and ah, 0d0h ; New flags |
||
12845 | or ah, dh ; OR In our old flags |
||
12846 | xor edx, edx |
||
12847 | sub edi, byte 20 |
||
12848 | js near noMoreExec |
||
12849 | mov dl, byte [esi] ; Get our next instruction |
||
12850 | inc esi ; Increment PC |
||
12851 | jmp dword [z80regular+edx*4] |
||
12852 | |||
12853 | |||
12854 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12855 | |||
12856 | DDFDCBInst6e: |
||
12857 | mov dx, [_orgval] ; Get our target address |
||
12858 | mov [cyclesRemaining], edi |
||
12859 | mov edi, [_z80MemRead] ; Point to the read array |
||
12860 | |||
12861 | checkLoop214: |
||
12862 | cmp [edi], word 0ffffh ; End of the list? |
||
12863 | je memoryRead214 |
||
12864 | cmp edx, [edi] ; Are we smaller? |
||
12865 | jb nextAddr214 ; Yes, go to the next address |
||
12866 | cmp edx, [edi+4] ; Are we bigger? |
||
12867 | jbe callRoutine214 |
||
12868 | |||
12869 | nextAddr214: |
||
12870 | add edi, 10h ; Next structure! |
||
12871 | jmp short checkLoop214 |
||
12872 | |||
12873 | callRoutine214: |
||
12874 | call ReadMemoryByte ; Standard read routine |
||
12875 | mov dl, al ; Put our returned value here |
||
12876 | mov ax, [_z80af] ; Get our AF back |
||
12877 | jmp short readExit214 |
||
12878 | |||
12879 | memoryRead214: |
||
12880 | mov dl, [ebp + edx] ; Get our data |
||
12881 | |||
12882 | readExit214: |
||
12883 | mov edi, [cyclesRemaining] |
||
12884 | mov dh, ah ; Store our original flags |
||
12885 | and dh, 29h ; Keep our old flags |
||
12886 | sahf ; Restore our flags |
||
12887 | test dl, 020h ; Is it set? |
||
12888 | lahf ; Get our flags back |
||
12889 | and ah, 0edh ; No Half carry or negative! |
||
12890 | or ah, 10h ; OR In our half carry |
||
12891 | and ah, 0d0h ; New flags |
||
12892 | or ah, dh ; OR In our old flags |
||
12893 | xor edx, edx |
||
12894 | sub edi, byte 20 |
||
12895 | js near noMoreExec |
||
12896 | mov dl, byte [esi] ; Get our next instruction |
||
12897 | inc esi ; Increment PC |
||
12898 | jmp dword [z80regular+edx*4] |
||
12899 | |||
12900 | |||
12901 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12902 | |||
12903 | DDFDCBInst76: |
||
12904 | mov dx, [_orgval] ; Get our target address |
||
12905 | mov [cyclesRemaining], edi |
||
12906 | mov edi, [_z80MemRead] ; Point to the read array |
||
12907 | |||
12908 | checkLoop215: |
||
12909 | cmp [edi], word 0ffffh ; End of the list? |
||
12910 | je memoryRead215 |
||
12911 | cmp edx, [edi] ; Are we smaller? |
||
12912 | jb nextAddr215 ; Yes, go to the next address |
||
12913 | cmp edx, [edi+4] ; Are we bigger? |
||
12914 | jbe callRoutine215 |
||
12915 | |||
12916 | nextAddr215: |
||
12917 | add edi, 10h ; Next structure! |
||
12918 | jmp short checkLoop215 |
||
12919 | |||
12920 | callRoutine215: |
||
12921 | call ReadMemoryByte ; Standard read routine |
||
12922 | mov dl, al ; Put our returned value here |
||
12923 | mov ax, [_z80af] ; Get our AF back |
||
12924 | jmp short readExit215 |
||
12925 | |||
12926 | memoryRead215: |
||
12927 | mov dl, [ebp + edx] ; Get our data |
||
12928 | |||
12929 | readExit215: |
||
12930 | mov edi, [cyclesRemaining] |
||
12931 | mov dh, ah ; Store our original flags |
||
12932 | and dh, 29h ; Keep our old flags |
||
12933 | sahf ; Restore our flags |
||
12934 | test dl, 040h ; Is it set? |
||
12935 | lahf ; Get our flags back |
||
12936 | and ah, 0edh ; No Half carry or negative! |
||
12937 | or ah, 10h ; OR In our half carry |
||
12938 | and ah, 0d0h ; New flags |
||
12939 | or ah, dh ; OR In our old flags |
||
12940 | xor edx, edx |
||
12941 | sub edi, byte 20 |
||
12942 | js near noMoreExec |
||
12943 | mov dl, byte [esi] ; Get our next instruction |
||
12944 | inc esi ; Increment PC |
||
12945 | jmp dword [z80regular+edx*4] |
||
12946 | |||
12947 | |||
12948 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12949 | |||
12950 | DDFDCBInst7e: |
||
12951 | mov dx, [_orgval] ; Get our target address |
||
12952 | mov [cyclesRemaining], edi |
||
12953 | mov edi, [_z80MemRead] ; Point to the read array |
||
12954 | |||
12955 | checkLoop216: |
||
12956 | cmp [edi], word 0ffffh ; End of the list? |
||
12957 | je memoryRead216 |
||
12958 | cmp edx, [edi] ; Are we smaller? |
||
12959 | jb nextAddr216 ; Yes, go to the next address |
||
12960 | cmp edx, [edi+4] ; Are we bigger? |
||
12961 | jbe callRoutine216 |
||
12962 | |||
12963 | nextAddr216: |
||
12964 | add edi, 10h ; Next structure! |
||
12965 | jmp short checkLoop216 |
||
12966 | |||
12967 | callRoutine216: |
||
12968 | call ReadMemoryByte ; Standard read routine |
||
12969 | mov dl, al ; Put our returned value here |
||
12970 | mov ax, [_z80af] ; Get our AF back |
||
12971 | jmp short readExit216 |
||
12972 | |||
12973 | memoryRead216: |
||
12974 | mov dl, [ebp + edx] ; Get our data |
||
12975 | |||
12976 | readExit216: |
||
12977 | mov edi, [cyclesRemaining] |
||
12978 | mov dh, ah ; Store our original flags |
||
12979 | and dh, 29h ; Keep our old flags |
||
12980 | sahf ; Restore our flags |
||
12981 | test dl, 080h ; Is it set? |
||
12982 | lahf ; Get our flags back |
||
12983 | and ah, 0edh ; No Half carry or negative! |
||
12984 | or ah, 10h ; OR In our half carry |
||
12985 | and ah, 0d0h ; New flags |
||
12986 | or ah, dh ; OR In our old flags |
||
12987 | xor edx, edx |
||
12988 | sub edi, byte 20 |
||
12989 | js near noMoreExec |
||
12990 | mov dl, byte [esi] ; Get our next instruction |
||
12991 | inc esi ; Increment PC |
||
12992 | jmp dword [z80regular+edx*4] |
||
12993 | |||
12994 | |||
12995 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
12996 | |||
12997 | DDFDCBInst86: |
||
12998 | mov dx, [_orgval] ; Get our target address |
||
12999 | mov [cyclesRemaining], edi |
||
13000 | mov edi, [_z80MemRead] ; Point to the read array |
||
13001 | |||
13002 | checkLoop217: |
||
13003 | cmp [edi], word 0ffffh ; End of the list? |
||
13004 | je memoryRead217 |
||
13005 | cmp edx, [edi] ; Are we smaller? |
||
13006 | jb nextAddr217 ; Yes, go to the next address |
||
13007 | cmp edx, [edi+4] ; Are we bigger? |
||
13008 | jbe callRoutine217 |
||
13009 | |||
13010 | nextAddr217: |
||
13011 | add edi, 10h ; Next structure! |
||
13012 | jmp short checkLoop217 |
||
13013 | |||
13014 | callRoutine217: |
||
13015 | call ReadMemoryByte ; Standard read routine |
||
13016 | mov dl, al ; Put our returned value here |
||
13017 | mov ax, [_z80af] ; Get our AF back |
||
13018 | jmp short readExit217 |
||
13019 | |||
13020 | memoryRead217: |
||
13021 | mov dl, [ebp + edx] ; Get our data |
||
13022 | |||
13023 | readExit217: |
||
13024 | mov edi, [cyclesRemaining] |
||
13025 | and dl, 0feh ; Reset the bit |
||
13026 | mov [cyclesRemaining], edi |
||
13027 | mov [_z80af], ax ; Store AF |
||
13028 | mov al, dl ; And our data to write |
||
13029 | mov dx, [_orgval] |
||
13030 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13031 | |||
13032 | checkLoop218: |
||
13033 | cmp [edi], word 0ffffh ; End of our list? |
||
13034 | je memoryWrite218 ; Yes - go write it! |
||
13035 | cmp dx, [edi] ; Are we smaller? |
||
13036 | jb nextAddr218 ; Yes... go to the next addr |
||
13037 | cmp dx, [edi+4] ; Are we smaller? |
||
13038 | jbe callRoutine218 ; If not, go call it! |
||
13039 | |||
13040 | nextAddr218: |
||
13041 | add edi, 10h ; Next structure, please |
||
13042 | jmp short checkLoop218 |
||
13043 | |||
13044 | callRoutine218: |
||
13045 | call WriteMemoryByte ; Go write the data! |
||
13046 | jmp short WriteMacroExit218 |
||
13047 | memoryWrite218: |
||
13048 | mov [ebp + edx], al |
||
13049 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13050 | WriteMacroExit218: |
||
13051 | mov edi, [cyclesRemaining] |
||
13052 | xor edx, edx |
||
13053 | sub edi, byte 23 |
||
13054 | js near noMoreExec |
||
13055 | mov dl, byte [esi] ; Get our next instruction |
||
13056 | inc esi ; Increment PC |
||
13057 | jmp dword [z80regular+edx*4] |
||
13058 | |||
13059 | |||
13060 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13061 | |||
13062 | DDFDCBInst8e: |
||
13063 | mov dx, [_orgval] ; Get our target address |
||
13064 | mov [cyclesRemaining], edi |
||
13065 | mov edi, [_z80MemRead] ; Point to the read array |
||
13066 | |||
13067 | checkLoop219: |
||
13068 | cmp [edi], word 0ffffh ; End of the list? |
||
13069 | je memoryRead219 |
||
13070 | cmp edx, [edi] ; Are we smaller? |
||
13071 | jb nextAddr219 ; Yes, go to the next address |
||
13072 | cmp edx, [edi+4] ; Are we bigger? |
||
13073 | jbe callRoutine219 |
||
13074 | |||
13075 | nextAddr219: |
||
13076 | add edi, 10h ; Next structure! |
||
13077 | jmp short checkLoop219 |
||
13078 | |||
13079 | callRoutine219: |
||
13080 | call ReadMemoryByte ; Standard read routine |
||
13081 | mov dl, al ; Put our returned value here |
||
13082 | mov ax, [_z80af] ; Get our AF back |
||
13083 | jmp short readExit219 |
||
13084 | |||
13085 | memoryRead219: |
||
13086 | mov dl, [ebp + edx] ; Get our data |
||
13087 | |||
13088 | readExit219: |
||
13089 | mov edi, [cyclesRemaining] |
||
13090 | and dl, 0fdh ; Reset the bit |
||
13091 | mov [cyclesRemaining], edi |
||
13092 | mov [_z80af], ax ; Store AF |
||
13093 | mov al, dl ; And our data to write |
||
13094 | mov dx, [_orgval] |
||
13095 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13096 | |||
13097 | checkLoop220: |
||
13098 | cmp [edi], word 0ffffh ; End of our list? |
||
13099 | je memoryWrite220 ; Yes - go write it! |
||
13100 | cmp dx, [edi] ; Are we smaller? |
||
13101 | jb nextAddr220 ; Yes... go to the next addr |
||
13102 | cmp dx, [edi+4] ; Are we smaller? |
||
13103 | jbe callRoutine220 ; If not, go call it! |
||
13104 | |||
13105 | nextAddr220: |
||
13106 | add edi, 10h ; Next structure, please |
||
13107 | jmp short checkLoop220 |
||
13108 | |||
13109 | callRoutine220: |
||
13110 | call WriteMemoryByte ; Go write the data! |
||
13111 | jmp short WriteMacroExit220 |
||
13112 | memoryWrite220: |
||
13113 | mov [ebp + edx], al |
||
13114 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13115 | WriteMacroExit220: |
||
13116 | mov edi, [cyclesRemaining] |
||
13117 | xor edx, edx |
||
13118 | sub edi, byte 23 |
||
13119 | js near noMoreExec |
||
13120 | mov dl, byte [esi] ; Get our next instruction |
||
13121 | inc esi ; Increment PC |
||
13122 | jmp dword [z80regular+edx*4] |
||
13123 | |||
13124 | |||
13125 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13126 | |||
13127 | DDFDCBInst96: |
||
13128 | mov dx, [_orgval] ; Get our target address |
||
13129 | mov [cyclesRemaining], edi |
||
13130 | mov edi, [_z80MemRead] ; Point to the read array |
||
13131 | |||
13132 | checkLoop221: |
||
13133 | cmp [edi], word 0ffffh ; End of the list? |
||
13134 | je memoryRead221 |
||
13135 | cmp edx, [edi] ; Are we smaller? |
||
13136 | jb nextAddr221 ; Yes, go to the next address |
||
13137 | cmp edx, [edi+4] ; Are we bigger? |
||
13138 | jbe callRoutine221 |
||
13139 | |||
13140 | nextAddr221: |
||
13141 | add edi, 10h ; Next structure! |
||
13142 | jmp short checkLoop221 |
||
13143 | |||
13144 | callRoutine221: |
||
13145 | call ReadMemoryByte ; Standard read routine |
||
13146 | mov dl, al ; Put our returned value here |
||
13147 | mov ax, [_z80af] ; Get our AF back |
||
13148 | jmp short readExit221 |
||
13149 | |||
13150 | memoryRead221: |
||
13151 | mov dl, [ebp + edx] ; Get our data |
||
13152 | |||
13153 | readExit221: |
||
13154 | mov edi, [cyclesRemaining] |
||
13155 | and dl, 0fbh ; Reset the bit |
||
13156 | mov [cyclesRemaining], edi |
||
13157 | mov [_z80af], ax ; Store AF |
||
13158 | mov al, dl ; And our data to write |
||
13159 | mov dx, [_orgval] |
||
13160 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13161 | |||
13162 | checkLoop222: |
||
13163 | cmp [edi], word 0ffffh ; End of our list? |
||
13164 | je memoryWrite222 ; Yes - go write it! |
||
13165 | cmp dx, [edi] ; Are we smaller? |
||
13166 | jb nextAddr222 ; Yes... go to the next addr |
||
13167 | cmp dx, [edi+4] ; Are we smaller? |
||
13168 | jbe callRoutine222 ; If not, go call it! |
||
13169 | |||
13170 | nextAddr222: |
||
13171 | add edi, 10h ; Next structure, please |
||
13172 | jmp short checkLoop222 |
||
13173 | |||
13174 | callRoutine222: |
||
13175 | call WriteMemoryByte ; Go write the data! |
||
13176 | jmp short WriteMacroExit222 |
||
13177 | memoryWrite222: |
||
13178 | mov [ebp + edx], al |
||
13179 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13180 | WriteMacroExit222: |
||
13181 | mov edi, [cyclesRemaining] |
||
13182 | xor edx, edx |
||
13183 | sub edi, byte 23 |
||
13184 | js near noMoreExec |
||
13185 | mov dl, byte [esi] ; Get our next instruction |
||
13186 | inc esi ; Increment PC |
||
13187 | jmp dword [z80regular+edx*4] |
||
13188 | |||
13189 | |||
13190 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13191 | |||
13192 | DDFDCBInst9e: |
||
13193 | mov dx, [_orgval] ; Get our target address |
||
13194 | mov [cyclesRemaining], edi |
||
13195 | mov edi, [_z80MemRead] ; Point to the read array |
||
13196 | |||
13197 | checkLoop223: |
||
13198 | cmp [edi], word 0ffffh ; End of the list? |
||
13199 | je memoryRead223 |
||
13200 | cmp edx, [edi] ; Are we smaller? |
||
13201 | jb nextAddr223 ; Yes, go to the next address |
||
13202 | cmp edx, [edi+4] ; Are we bigger? |
||
13203 | jbe callRoutine223 |
||
13204 | |||
13205 | nextAddr223: |
||
13206 | add edi, 10h ; Next structure! |
||
13207 | jmp short checkLoop223 |
||
13208 | |||
13209 | callRoutine223: |
||
13210 | call ReadMemoryByte ; Standard read routine |
||
13211 | mov dl, al ; Put our returned value here |
||
13212 | mov ax, [_z80af] ; Get our AF back |
||
13213 | jmp short readExit223 |
||
13214 | |||
13215 | memoryRead223: |
||
13216 | mov dl, [ebp + edx] ; Get our data |
||
13217 | |||
13218 | readExit223: |
||
13219 | mov edi, [cyclesRemaining] |
||
13220 | and dl, 0f7h ; Reset the bit |
||
13221 | mov [cyclesRemaining], edi |
||
13222 | mov [_z80af], ax ; Store AF |
||
13223 | mov al, dl ; And our data to write |
||
13224 | mov dx, [_orgval] |
||
13225 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13226 | |||
13227 | checkLoop224: |
||
13228 | cmp [edi], word 0ffffh ; End of our list? |
||
13229 | je memoryWrite224 ; Yes - go write it! |
||
13230 | cmp dx, [edi] ; Are we smaller? |
||
13231 | jb nextAddr224 ; Yes... go to the next addr |
||
13232 | cmp dx, [edi+4] ; Are we smaller? |
||
13233 | jbe callRoutine224 ; If not, go call it! |
||
13234 | |||
13235 | nextAddr224: |
||
13236 | add edi, 10h ; Next structure, please |
||
13237 | jmp short checkLoop224 |
||
13238 | |||
13239 | callRoutine224: |
||
13240 | call WriteMemoryByte ; Go write the data! |
||
13241 | jmp short WriteMacroExit224 |
||
13242 | memoryWrite224: |
||
13243 | mov [ebp + edx], al |
||
13244 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13245 | WriteMacroExit224: |
||
13246 | mov edi, [cyclesRemaining] |
||
13247 | xor edx, edx |
||
13248 | sub edi, byte 23 |
||
13249 | js near noMoreExec |
||
13250 | mov dl, byte [esi] ; Get our next instruction |
||
13251 | inc esi ; Increment PC |
||
13252 | jmp dword [z80regular+edx*4] |
||
13253 | |||
13254 | |||
13255 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13256 | |||
13257 | DDFDCBInsta6: |
||
13258 | mov dx, [_orgval] ; Get our target address |
||
13259 | mov [cyclesRemaining], edi |
||
13260 | mov edi, [_z80MemRead] ; Point to the read array |
||
13261 | |||
13262 | checkLoop225: |
||
13263 | cmp [edi], word 0ffffh ; End of the list? |
||
13264 | je memoryRead225 |
||
13265 | cmp edx, [edi] ; Are we smaller? |
||
13266 | jb nextAddr225 ; Yes, go to the next address |
||
13267 | cmp edx, [edi+4] ; Are we bigger? |
||
13268 | jbe callRoutine225 |
||
13269 | |||
13270 | nextAddr225: |
||
13271 | add edi, 10h ; Next structure! |
||
13272 | jmp short checkLoop225 |
||
13273 | |||
13274 | callRoutine225: |
||
13275 | call ReadMemoryByte ; Standard read routine |
||
13276 | mov dl, al ; Put our returned value here |
||
13277 | mov ax, [_z80af] ; Get our AF back |
||
13278 | jmp short readExit225 |
||
13279 | |||
13280 | memoryRead225: |
||
13281 | mov dl, [ebp + edx] ; Get our data |
||
13282 | |||
13283 | readExit225: |
||
13284 | mov edi, [cyclesRemaining] |
||
13285 | and dl, 0efh ; Reset the bit |
||
13286 | mov [cyclesRemaining], edi |
||
13287 | mov [_z80af], ax ; Store AF |
||
13288 | mov al, dl ; And our data to write |
||
13289 | mov dx, [_orgval] |
||
13290 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13291 | |||
13292 | checkLoop226: |
||
13293 | cmp [edi], word 0ffffh ; End of our list? |
||
13294 | je memoryWrite226 ; Yes - go write it! |
||
13295 | cmp dx, [edi] ; Are we smaller? |
||
13296 | jb nextAddr226 ; Yes... go to the next addr |
||
13297 | cmp dx, [edi+4] ; Are we smaller? |
||
13298 | jbe callRoutine226 ; If not, go call it! |
||
13299 | |||
13300 | nextAddr226: |
||
13301 | add edi, 10h ; Next structure, please |
||
13302 | jmp short checkLoop226 |
||
13303 | |||
13304 | callRoutine226: |
||
13305 | call WriteMemoryByte ; Go write the data! |
||
13306 | jmp short WriteMacroExit226 |
||
13307 | memoryWrite226: |
||
13308 | mov [ebp + edx], al |
||
13309 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13310 | WriteMacroExit226: |
||
13311 | mov edi, [cyclesRemaining] |
||
13312 | xor edx, edx |
||
13313 | sub edi, byte 23 |
||
13314 | js near noMoreExec |
||
13315 | mov dl, byte [esi] ; Get our next instruction |
||
13316 | inc esi ; Increment PC |
||
13317 | jmp dword [z80regular+edx*4] |
||
13318 | |||
13319 | |||
13320 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13321 | |||
13322 | DDFDCBInstae: |
||
13323 | mov dx, [_orgval] ; Get our target address |
||
13324 | mov [cyclesRemaining], edi |
||
13325 | mov edi, [_z80MemRead] ; Point to the read array |
||
13326 | |||
13327 | checkLoop227: |
||
13328 | cmp [edi], word 0ffffh ; End of the list? |
||
13329 | je memoryRead227 |
||
13330 | cmp edx, [edi] ; Are we smaller? |
||
13331 | jb nextAddr227 ; Yes, go to the next address |
||
13332 | cmp edx, [edi+4] ; Are we bigger? |
||
13333 | jbe callRoutine227 |
||
13334 | |||
13335 | nextAddr227: |
||
13336 | add edi, 10h ; Next structure! |
||
13337 | jmp short checkLoop227 |
||
13338 | |||
13339 | callRoutine227: |
||
13340 | call ReadMemoryByte ; Standard read routine |
||
13341 | mov dl, al ; Put our returned value here |
||
13342 | mov ax, [_z80af] ; Get our AF back |
||
13343 | jmp short readExit227 |
||
13344 | |||
13345 | memoryRead227: |
||
13346 | mov dl, [ebp + edx] ; Get our data |
||
13347 | |||
13348 | readExit227: |
||
13349 | mov edi, [cyclesRemaining] |
||
13350 | and dl, 0dfh ; Reset the bit |
||
13351 | mov [cyclesRemaining], edi |
||
13352 | mov [_z80af], ax ; Store AF |
||
13353 | mov al, dl ; And our data to write |
||
13354 | mov dx, [_orgval] |
||
13355 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13356 | |||
13357 | checkLoop228: |
||
13358 | cmp [edi], word 0ffffh ; End of our list? |
||
13359 | je memoryWrite228 ; Yes - go write it! |
||
13360 | cmp dx, [edi] ; Are we smaller? |
||
13361 | jb nextAddr228 ; Yes... go to the next addr |
||
13362 | cmp dx, [edi+4] ; Are we smaller? |
||
13363 | jbe callRoutine228 ; If not, go call it! |
||
13364 | |||
13365 | nextAddr228: |
||
13366 | add edi, 10h ; Next structure, please |
||
13367 | jmp short checkLoop228 |
||
13368 | |||
13369 | callRoutine228: |
||
13370 | call WriteMemoryByte ; Go write the data! |
||
13371 | jmp short WriteMacroExit228 |
||
13372 | memoryWrite228: |
||
13373 | mov [ebp + edx], al |
||
13374 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13375 | WriteMacroExit228: |
||
13376 | mov edi, [cyclesRemaining] |
||
13377 | xor edx, edx |
||
13378 | sub edi, byte 23 |
||
13379 | js near noMoreExec |
||
13380 | mov dl, byte [esi] ; Get our next instruction |
||
13381 | inc esi ; Increment PC |
||
13382 | jmp dword [z80regular+edx*4] |
||
13383 | |||
13384 | |||
13385 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13386 | |||
13387 | DDFDCBInstb6: |
||
13388 | mov dx, [_orgval] ; Get our target address |
||
13389 | mov [cyclesRemaining], edi |
||
13390 | mov edi, [_z80MemRead] ; Point to the read array |
||
13391 | |||
13392 | checkLoop229: |
||
13393 | cmp [edi], word 0ffffh ; End of the list? |
||
13394 | je memoryRead229 |
||
13395 | cmp edx, [edi] ; Are we smaller? |
||
13396 | jb nextAddr229 ; Yes, go to the next address |
||
13397 | cmp edx, [edi+4] ; Are we bigger? |
||
13398 | jbe callRoutine229 |
||
13399 | |||
13400 | nextAddr229: |
||
13401 | add edi, 10h ; Next structure! |
||
13402 | jmp short checkLoop229 |
||
13403 | |||
13404 | callRoutine229: |
||
13405 | call ReadMemoryByte ; Standard read routine |
||
13406 | mov dl, al ; Put our returned value here |
||
13407 | mov ax, [_z80af] ; Get our AF back |
||
13408 | jmp short readExit229 |
||
13409 | |||
13410 | memoryRead229: |
||
13411 | mov dl, [ebp + edx] ; Get our data |
||
13412 | |||
13413 | readExit229: |
||
13414 | mov edi, [cyclesRemaining] |
||
13415 | and dl, 0bfh ; Reset the bit |
||
13416 | mov [cyclesRemaining], edi |
||
13417 | mov [_z80af], ax ; Store AF |
||
13418 | mov al, dl ; And our data to write |
||
13419 | mov dx, [_orgval] |
||
13420 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13421 | |||
13422 | checkLoop230: |
||
13423 | cmp [edi], word 0ffffh ; End of our list? |
||
13424 | je memoryWrite230 ; Yes - go write it! |
||
13425 | cmp dx, [edi] ; Are we smaller? |
||
13426 | jb nextAddr230 ; Yes... go to the next addr |
||
13427 | cmp dx, [edi+4] ; Are we smaller? |
||
13428 | jbe callRoutine230 ; If not, go call it! |
||
13429 | |||
13430 | nextAddr230: |
||
13431 | add edi, 10h ; Next structure, please |
||
13432 | jmp short checkLoop230 |
||
13433 | |||
13434 | callRoutine230: |
||
13435 | call WriteMemoryByte ; Go write the data! |
||
13436 | jmp short WriteMacroExit230 |
||
13437 | memoryWrite230: |
||
13438 | mov [ebp + edx], al |
||
13439 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13440 | WriteMacroExit230: |
||
13441 | mov edi, [cyclesRemaining] |
||
13442 | xor edx, edx |
||
13443 | sub edi, byte 23 |
||
13444 | js near noMoreExec |
||
13445 | mov dl, byte [esi] ; Get our next instruction |
||
13446 | inc esi ; Increment PC |
||
13447 | jmp dword [z80regular+edx*4] |
||
13448 | |||
13449 | |||
13450 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13451 | |||
13452 | DDFDCBInstbe: |
||
13453 | mov dx, [_orgval] ; Get our target address |
||
13454 | mov [cyclesRemaining], edi |
||
13455 | mov edi, [_z80MemRead] ; Point to the read array |
||
13456 | |||
13457 | checkLoop231: |
||
13458 | cmp [edi], word 0ffffh ; End of the list? |
||
13459 | je memoryRead231 |
||
13460 | cmp edx, [edi] ; Are we smaller? |
||
13461 | jb nextAddr231 ; Yes, go to the next address |
||
13462 | cmp edx, [edi+4] ; Are we bigger? |
||
13463 | jbe callRoutine231 |
||
13464 | |||
13465 | nextAddr231: |
||
13466 | add edi, 10h ; Next structure! |
||
13467 | jmp short checkLoop231 |
||
13468 | |||
13469 | callRoutine231: |
||
13470 | call ReadMemoryByte ; Standard read routine |
||
13471 | mov dl, al ; Put our returned value here |
||
13472 | mov ax, [_z80af] ; Get our AF back |
||
13473 | jmp short readExit231 |
||
13474 | |||
13475 | memoryRead231: |
||
13476 | mov dl, [ebp + edx] ; Get our data |
||
13477 | |||
13478 | readExit231: |
||
13479 | mov edi, [cyclesRemaining] |
||
13480 | and dl, 07fh ; Reset the bit |
||
13481 | mov [cyclesRemaining], edi |
||
13482 | mov [_z80af], ax ; Store AF |
||
13483 | mov al, dl ; And our data to write |
||
13484 | mov dx, [_orgval] |
||
13485 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13486 | |||
13487 | checkLoop232: |
||
13488 | cmp [edi], word 0ffffh ; End of our list? |
||
13489 | je memoryWrite232 ; Yes - go write it! |
||
13490 | cmp dx, [edi] ; Are we smaller? |
||
13491 | jb nextAddr232 ; Yes... go to the next addr |
||
13492 | cmp dx, [edi+4] ; Are we smaller? |
||
13493 | jbe callRoutine232 ; If not, go call it! |
||
13494 | |||
13495 | nextAddr232: |
||
13496 | add edi, 10h ; Next structure, please |
||
13497 | jmp short checkLoop232 |
||
13498 | |||
13499 | callRoutine232: |
||
13500 | call WriteMemoryByte ; Go write the data! |
||
13501 | jmp short WriteMacroExit232 |
||
13502 | memoryWrite232: |
||
13503 | mov [ebp + edx], al |
||
13504 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13505 | WriteMacroExit232: |
||
13506 | mov edi, [cyclesRemaining] |
||
13507 | xor edx, edx |
||
13508 | sub edi, byte 23 |
||
13509 | js near noMoreExec |
||
13510 | mov dl, byte [esi] ; Get our next instruction |
||
13511 | inc esi ; Increment PC |
||
13512 | jmp dword [z80regular+edx*4] |
||
13513 | |||
13514 | |||
13515 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13516 | |||
13517 | DDFDCBInstc6: |
||
13518 | mov dx, [_orgval] ; Get our target address |
||
13519 | mov [cyclesRemaining], edi |
||
13520 | mov edi, [_z80MemRead] ; Point to the read array |
||
13521 | |||
13522 | checkLoop233: |
||
13523 | cmp [edi], word 0ffffh ; End of the list? |
||
13524 | je memoryRead233 |
||
13525 | cmp edx, [edi] ; Are we smaller? |
||
13526 | jb nextAddr233 ; Yes, go to the next address |
||
13527 | cmp edx, [edi+4] ; Are we bigger? |
||
13528 | jbe callRoutine233 |
||
13529 | |||
13530 | nextAddr233: |
||
13531 | add edi, 10h ; Next structure! |
||
13532 | jmp short checkLoop233 |
||
13533 | |||
13534 | callRoutine233: |
||
13535 | call ReadMemoryByte ; Standard read routine |
||
13536 | mov dl, al ; Put our returned value here |
||
13537 | mov ax, [_z80af] ; Get our AF back |
||
13538 | jmp short readExit233 |
||
13539 | |||
13540 | memoryRead233: |
||
13541 | mov dl, [ebp + edx] ; Get our data |
||
13542 | |||
13543 | readExit233: |
||
13544 | mov edi, [cyclesRemaining] |
||
13545 | or dl, 001h ; Set the bit |
||
13546 | mov [cyclesRemaining], edi |
||
13547 | mov [_z80af], ax ; Store AF |
||
13548 | mov al, dl ; And our data to write |
||
13549 | mov dx, [_orgval] |
||
13550 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13551 | |||
13552 | checkLoop234: |
||
13553 | cmp [edi], word 0ffffh ; End of our list? |
||
13554 | je memoryWrite234 ; Yes - go write it! |
||
13555 | cmp dx, [edi] ; Are we smaller? |
||
13556 | jb nextAddr234 ; Yes... go to the next addr |
||
13557 | cmp dx, [edi+4] ; Are we smaller? |
||
13558 | jbe callRoutine234 ; If not, go call it! |
||
13559 | |||
13560 | nextAddr234: |
||
13561 | add edi, 10h ; Next structure, please |
||
13562 | jmp short checkLoop234 |
||
13563 | |||
13564 | callRoutine234: |
||
13565 | call WriteMemoryByte ; Go write the data! |
||
13566 | jmp short WriteMacroExit234 |
||
13567 | memoryWrite234: |
||
13568 | mov [ebp + edx], al |
||
13569 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13570 | WriteMacroExit234: |
||
13571 | mov edi, [cyclesRemaining] |
||
13572 | xor edx, edx |
||
13573 | sub edi, byte 23 |
||
13574 | js near noMoreExec |
||
13575 | mov dl, byte [esi] ; Get our next instruction |
||
13576 | inc esi ; Increment PC |
||
13577 | jmp dword [z80regular+edx*4] |
||
13578 | |||
13579 | |||
13580 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13581 | |||
13582 | DDFDCBInstce: |
||
13583 | mov dx, [_orgval] ; Get our target address |
||
13584 | mov [cyclesRemaining], edi |
||
13585 | mov edi, [_z80MemRead] ; Point to the read array |
||
13586 | |||
13587 | checkLoop235: |
||
13588 | cmp [edi], word 0ffffh ; End of the list? |
||
13589 | je memoryRead235 |
||
13590 | cmp edx, [edi] ; Are we smaller? |
||
13591 | jb nextAddr235 ; Yes, go to the next address |
||
13592 | cmp edx, [edi+4] ; Are we bigger? |
||
13593 | jbe callRoutine235 |
||
13594 | |||
13595 | nextAddr235: |
||
13596 | add edi, 10h ; Next structure! |
||
13597 | jmp short checkLoop235 |
||
13598 | |||
13599 | callRoutine235: |
||
13600 | call ReadMemoryByte ; Standard read routine |
||
13601 | mov dl, al ; Put our returned value here |
||
13602 | mov ax, [_z80af] ; Get our AF back |
||
13603 | jmp short readExit235 |
||
13604 | |||
13605 | memoryRead235: |
||
13606 | mov dl, [ebp + edx] ; Get our data |
||
13607 | |||
13608 | readExit235: |
||
13609 | mov edi, [cyclesRemaining] |
||
13610 | or dl, 002h ; Set the bit |
||
13611 | mov [cyclesRemaining], edi |
||
13612 | mov [_z80af], ax ; Store AF |
||
13613 | mov al, dl ; And our data to write |
||
13614 | mov dx, [_orgval] |
||
13615 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13616 | |||
13617 | checkLoop236: |
||
13618 | cmp [edi], word 0ffffh ; End of our list? |
||
13619 | je memoryWrite236 ; Yes - go write it! |
||
13620 | cmp dx, [edi] ; Are we smaller? |
||
13621 | jb nextAddr236 ; Yes... go to the next addr |
||
13622 | cmp dx, [edi+4] ; Are we smaller? |
||
13623 | jbe callRoutine236 ; If not, go call it! |
||
13624 | |||
13625 | nextAddr236: |
||
13626 | add edi, 10h ; Next structure, please |
||
13627 | jmp short checkLoop236 |
||
13628 | |||
13629 | callRoutine236: |
||
13630 | call WriteMemoryByte ; Go write the data! |
||
13631 | jmp short WriteMacroExit236 |
||
13632 | memoryWrite236: |
||
13633 | mov [ebp + edx], al |
||
13634 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13635 | WriteMacroExit236: |
||
13636 | mov edi, [cyclesRemaining] |
||
13637 | xor edx, edx |
||
13638 | sub edi, byte 23 |
||
13639 | js near noMoreExec |
||
13640 | mov dl, byte [esi] ; Get our next instruction |
||
13641 | inc esi ; Increment PC |
||
13642 | jmp dword [z80regular+edx*4] |
||
13643 | |||
13644 | |||
13645 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13646 | |||
13647 | DDFDCBInstd6: |
||
13648 | mov dx, [_orgval] ; Get our target address |
||
13649 | mov [cyclesRemaining], edi |
||
13650 | mov edi, [_z80MemRead] ; Point to the read array |
||
13651 | |||
13652 | checkLoop237: |
||
13653 | cmp [edi], word 0ffffh ; End of the list? |
||
13654 | je memoryRead237 |
||
13655 | cmp edx, [edi] ; Are we smaller? |
||
13656 | jb nextAddr237 ; Yes, go to the next address |
||
13657 | cmp edx, [edi+4] ; Are we bigger? |
||
13658 | jbe callRoutine237 |
||
13659 | |||
13660 | nextAddr237: |
||
13661 | add edi, 10h ; Next structure! |
||
13662 | jmp short checkLoop237 |
||
13663 | |||
13664 | callRoutine237: |
||
13665 | call ReadMemoryByte ; Standard read routine |
||
13666 | mov dl, al ; Put our returned value here |
||
13667 | mov ax, [_z80af] ; Get our AF back |
||
13668 | jmp short readExit237 |
||
13669 | |||
13670 | memoryRead237: |
||
13671 | mov dl, [ebp + edx] ; Get our data |
||
13672 | |||
13673 | readExit237: |
||
13674 | mov edi, [cyclesRemaining] |
||
13675 | or dl, 004h ; Set the bit |
||
13676 | mov [cyclesRemaining], edi |
||
13677 | mov [_z80af], ax ; Store AF |
||
13678 | mov al, dl ; And our data to write |
||
13679 | mov dx, [_orgval] |
||
13680 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13681 | |||
13682 | checkLoop238: |
||
13683 | cmp [edi], word 0ffffh ; End of our list? |
||
13684 | je memoryWrite238 ; Yes - go write it! |
||
13685 | cmp dx, [edi] ; Are we smaller? |
||
13686 | jb nextAddr238 ; Yes... go to the next addr |
||
13687 | cmp dx, [edi+4] ; Are we smaller? |
||
13688 | jbe callRoutine238 ; If not, go call it! |
||
13689 | |||
13690 | nextAddr238: |
||
13691 | add edi, 10h ; Next structure, please |
||
13692 | jmp short checkLoop238 |
||
13693 | |||
13694 | callRoutine238: |
||
13695 | call WriteMemoryByte ; Go write the data! |
||
13696 | jmp short WriteMacroExit238 |
||
13697 | memoryWrite238: |
||
13698 | mov [ebp + edx], al |
||
13699 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13700 | WriteMacroExit238: |
||
13701 | mov edi, [cyclesRemaining] |
||
13702 | xor edx, edx |
||
13703 | sub edi, byte 23 |
||
13704 | js near noMoreExec |
||
13705 | mov dl, byte [esi] ; Get our next instruction |
||
13706 | inc esi ; Increment PC |
||
13707 | jmp dword [z80regular+edx*4] |
||
13708 | |||
13709 | |||
13710 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13711 | |||
13712 | DDFDCBInstde: |
||
13713 | mov dx, [_orgval] ; Get our target address |
||
13714 | mov [cyclesRemaining], edi |
||
13715 | mov edi, [_z80MemRead] ; Point to the read array |
||
13716 | |||
13717 | checkLoop239: |
||
13718 | cmp [edi], word 0ffffh ; End of the list? |
||
13719 | je memoryRead239 |
||
13720 | cmp edx, [edi] ; Are we smaller? |
||
13721 | jb nextAddr239 ; Yes, go to the next address |
||
13722 | cmp edx, [edi+4] ; Are we bigger? |
||
13723 | jbe callRoutine239 |
||
13724 | |||
13725 | nextAddr239: |
||
13726 | add edi, 10h ; Next structure! |
||
13727 | jmp short checkLoop239 |
||
13728 | |||
13729 | callRoutine239: |
||
13730 | call ReadMemoryByte ; Standard read routine |
||
13731 | mov dl, al ; Put our returned value here |
||
13732 | mov ax, [_z80af] ; Get our AF back |
||
13733 | jmp short readExit239 |
||
13734 | |||
13735 | memoryRead239: |
||
13736 | mov dl, [ebp + edx] ; Get our data |
||
13737 | |||
13738 | readExit239: |
||
13739 | mov edi, [cyclesRemaining] |
||
13740 | or dl, 008h ; Set the bit |
||
13741 | mov [cyclesRemaining], edi |
||
13742 | mov [_z80af], ax ; Store AF |
||
13743 | mov al, dl ; And our data to write |
||
13744 | mov dx, [_orgval] |
||
13745 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13746 | |||
13747 | checkLoop240: |
||
13748 | cmp [edi], word 0ffffh ; End of our list? |
||
13749 | je memoryWrite240 ; Yes - go write it! |
||
13750 | cmp dx, [edi] ; Are we smaller? |
||
13751 | jb nextAddr240 ; Yes... go to the next addr |
||
13752 | cmp dx, [edi+4] ; Are we smaller? |
||
13753 | jbe callRoutine240 ; If not, go call it! |
||
13754 | |||
13755 | nextAddr240: |
||
13756 | add edi, 10h ; Next structure, please |
||
13757 | jmp short checkLoop240 |
||
13758 | |||
13759 | callRoutine240: |
||
13760 | call WriteMemoryByte ; Go write the data! |
||
13761 | jmp short WriteMacroExit240 |
||
13762 | memoryWrite240: |
||
13763 | mov [ebp + edx], al |
||
13764 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13765 | WriteMacroExit240: |
||
13766 | mov edi, [cyclesRemaining] |
||
13767 | xor edx, edx |
||
13768 | sub edi, byte 23 |
||
13769 | js near noMoreExec |
||
13770 | mov dl, byte [esi] ; Get our next instruction |
||
13771 | inc esi ; Increment PC |
||
13772 | jmp dword [z80regular+edx*4] |
||
13773 | |||
13774 | |||
13775 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13776 | |||
13777 | DDFDCBInste6: |
||
13778 | mov dx, [_orgval] ; Get our target address |
||
13779 | mov [cyclesRemaining], edi |
||
13780 | mov edi, [_z80MemRead] ; Point to the read array |
||
13781 | |||
13782 | checkLoop241: |
||
13783 | cmp [edi], word 0ffffh ; End of the list? |
||
13784 | je memoryRead241 |
||
13785 | cmp edx, [edi] ; Are we smaller? |
||
13786 | jb nextAddr241 ; Yes, go to the next address |
||
13787 | cmp edx, [edi+4] ; Are we bigger? |
||
13788 | jbe callRoutine241 |
||
13789 | |||
13790 | nextAddr241: |
||
13791 | add edi, 10h ; Next structure! |
||
13792 | jmp short checkLoop241 |
||
13793 | |||
13794 | callRoutine241: |
||
13795 | call ReadMemoryByte ; Standard read routine |
||
13796 | mov dl, al ; Put our returned value here |
||
13797 | mov ax, [_z80af] ; Get our AF back |
||
13798 | jmp short readExit241 |
||
13799 | |||
13800 | memoryRead241: |
||
13801 | mov dl, [ebp + edx] ; Get our data |
||
13802 | |||
13803 | readExit241: |
||
13804 | mov edi, [cyclesRemaining] |
||
13805 | or dl, 010h ; Set the bit |
||
13806 | mov [cyclesRemaining], edi |
||
13807 | mov [_z80af], ax ; Store AF |
||
13808 | mov al, dl ; And our data to write |
||
13809 | mov dx, [_orgval] |
||
13810 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13811 | |||
13812 | checkLoop242: |
||
13813 | cmp [edi], word 0ffffh ; End of our list? |
||
13814 | je memoryWrite242 ; Yes - go write it! |
||
13815 | cmp dx, [edi] ; Are we smaller? |
||
13816 | jb nextAddr242 ; Yes... go to the next addr |
||
13817 | cmp dx, [edi+4] ; Are we smaller? |
||
13818 | jbe callRoutine242 ; If not, go call it! |
||
13819 | |||
13820 | nextAddr242: |
||
13821 | add edi, 10h ; Next structure, please |
||
13822 | jmp short checkLoop242 |
||
13823 | |||
13824 | callRoutine242: |
||
13825 | call WriteMemoryByte ; Go write the data! |
||
13826 | jmp short WriteMacroExit242 |
||
13827 | memoryWrite242: |
||
13828 | mov [ebp + edx], al |
||
13829 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13830 | WriteMacroExit242: |
||
13831 | mov edi, [cyclesRemaining] |
||
13832 | xor edx, edx |
||
13833 | sub edi, byte 23 |
||
13834 | js near noMoreExec |
||
13835 | mov dl, byte [esi] ; Get our next instruction |
||
13836 | inc esi ; Increment PC |
||
13837 | jmp dword [z80regular+edx*4] |
||
13838 | |||
13839 | |||
13840 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13841 | |||
13842 | DDFDCBInstee: |
||
13843 | mov dx, [_orgval] ; Get our target address |
||
13844 | mov [cyclesRemaining], edi |
||
13845 | mov edi, [_z80MemRead] ; Point to the read array |
||
13846 | |||
13847 | checkLoop243: |
||
13848 | cmp [edi], word 0ffffh ; End of the list? |
||
13849 | je memoryRead243 |
||
13850 | cmp edx, [edi] ; Are we smaller? |
||
13851 | jb nextAddr243 ; Yes, go to the next address |
||
13852 | cmp edx, [edi+4] ; Are we bigger? |
||
13853 | jbe callRoutine243 |
||
13854 | |||
13855 | nextAddr243: |
||
13856 | add edi, 10h ; Next structure! |
||
13857 | jmp short checkLoop243 |
||
13858 | |||
13859 | callRoutine243: |
||
13860 | call ReadMemoryByte ; Standard read routine |
||
13861 | mov dl, al ; Put our returned value here |
||
13862 | mov ax, [_z80af] ; Get our AF back |
||
13863 | jmp short readExit243 |
||
13864 | |||
13865 | memoryRead243: |
||
13866 | mov dl, [ebp + edx] ; Get our data |
||
13867 | |||
13868 | readExit243: |
||
13869 | mov edi, [cyclesRemaining] |
||
13870 | or dl, 020h ; Set the bit |
||
13871 | mov [cyclesRemaining], edi |
||
13872 | mov [_z80af], ax ; Store AF |
||
13873 | mov al, dl ; And our data to write |
||
13874 | mov dx, [_orgval] |
||
13875 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13876 | |||
13877 | checkLoop244: |
||
13878 | cmp [edi], word 0ffffh ; End of our list? |
||
13879 | je memoryWrite244 ; Yes - go write it! |
||
13880 | cmp dx, [edi] ; Are we smaller? |
||
13881 | jb nextAddr244 ; Yes... go to the next addr |
||
13882 | cmp dx, [edi+4] ; Are we smaller? |
||
13883 | jbe callRoutine244 ; If not, go call it! |
||
13884 | |||
13885 | nextAddr244: |
||
13886 | add edi, 10h ; Next structure, please |
||
13887 | jmp short checkLoop244 |
||
13888 | |||
13889 | callRoutine244: |
||
13890 | call WriteMemoryByte ; Go write the data! |
||
13891 | jmp short WriteMacroExit244 |
||
13892 | memoryWrite244: |
||
13893 | mov [ebp + edx], al |
||
13894 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13895 | WriteMacroExit244: |
||
13896 | mov edi, [cyclesRemaining] |
||
13897 | xor edx, edx |
||
13898 | sub edi, byte 23 |
||
13899 | js near noMoreExec |
||
13900 | mov dl, byte [esi] ; Get our next instruction |
||
13901 | inc esi ; Increment PC |
||
13902 | jmp dword [z80regular+edx*4] |
||
13903 | |||
13904 | |||
13905 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13906 | |||
13907 | DDFDCBInstf6: |
||
13908 | mov dx, [_orgval] ; Get our target address |
||
13909 | mov [cyclesRemaining], edi |
||
13910 | mov edi, [_z80MemRead] ; Point to the read array |
||
13911 | |||
13912 | checkLoop245: |
||
13913 | cmp [edi], word 0ffffh ; End of the list? |
||
13914 | je memoryRead245 |
||
13915 | cmp edx, [edi] ; Are we smaller? |
||
13916 | jb nextAddr245 ; Yes, go to the next address |
||
13917 | cmp edx, [edi+4] ; Are we bigger? |
||
13918 | jbe callRoutine245 |
||
13919 | |||
13920 | nextAddr245: |
||
13921 | add edi, 10h ; Next structure! |
||
13922 | jmp short checkLoop245 |
||
13923 | |||
13924 | callRoutine245: |
||
13925 | call ReadMemoryByte ; Standard read routine |
||
13926 | mov dl, al ; Put our returned value here |
||
13927 | mov ax, [_z80af] ; Get our AF back |
||
13928 | jmp short readExit245 |
||
13929 | |||
13930 | memoryRead245: |
||
13931 | mov dl, [ebp + edx] ; Get our data |
||
13932 | |||
13933 | readExit245: |
||
13934 | mov edi, [cyclesRemaining] |
||
13935 | or dl, 040h ; Set the bit |
||
13936 | mov [cyclesRemaining], edi |
||
13937 | mov [_z80af], ax ; Store AF |
||
13938 | mov al, dl ; And our data to write |
||
13939 | mov dx, [_orgval] |
||
13940 | mov edi, [_z80MemWrite] ; Point to the write array |
||
13941 | |||
13942 | checkLoop246: |
||
13943 | cmp [edi], word 0ffffh ; End of our list? |
||
13944 | je memoryWrite246 ; Yes - go write it! |
||
13945 | cmp dx, [edi] ; Are we smaller? |
||
13946 | jb nextAddr246 ; Yes... go to the next addr |
||
13947 | cmp dx, [edi+4] ; Are we smaller? |
||
13948 | jbe callRoutine246 ; If not, go call it! |
||
13949 | |||
13950 | nextAddr246: |
||
13951 | add edi, 10h ; Next structure, please |
||
13952 | jmp short checkLoop246 |
||
13953 | |||
13954 | callRoutine246: |
||
13955 | call WriteMemoryByte ; Go write the data! |
||
13956 | jmp short WriteMacroExit246 |
||
13957 | memoryWrite246: |
||
13958 | mov [ebp + edx], al |
||
13959 | mov ax, [_z80af] ; Get our accumulator and flags |
||
13960 | WriteMacroExit246: |
||
13961 | mov edi, [cyclesRemaining] |
||
13962 | xor edx, edx |
||
13963 | sub edi, byte 23 |
||
13964 | js near noMoreExec |
||
13965 | mov dl, byte [esi] ; Get our next instruction |
||
13966 | inc esi ; Increment PC |
||
13967 | jmp dword [z80regular+edx*4] |
||
13968 | |||
13969 | |||
13970 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
13971 | |||
13972 | DDFDCBInstfe: |
||
13973 | mov dx, [_orgval] ; Get our target address |
||
13974 | mov [cyclesRemaining], edi |
||
13975 | mov edi, [_z80MemRead] ; Point to the read array |
||
13976 | |||
13977 | checkLoop247: |
||
13978 | cmp [edi], word 0ffffh ; End of the list? |
||
13979 | je memoryRead247 |
||
13980 | cmp edx, [edi] ; Are we smaller? |
||
13981 | jb nextAddr247 ; Yes, go to the next address |
||
13982 | cmp edx, [edi+4] ; Are we bigger? |
||
13983 | jbe callRoutine247 |
||
13984 | |||
13985 | nextAddr247: |
||
13986 | add edi, 10h ; Next structure! |
||
13987 | jmp short checkLoop247 |
||
13988 | |||
13989 | callRoutine247: |
||
13990 | call ReadMemoryByte ; Standard read routine |
||
13991 | mov dl, al ; Put our returned value here |
||
13992 | mov ax, [_z80af] ; Get our AF back |
||
13993 | jmp short readExit247 |
||
13994 | |||
13995 | memoryRead247: |
||
13996 | mov dl, [ebp + edx] ; Get our data |
||
13997 | |||
13998 | readExit247: |
||
13999 | mov edi, [cyclesRemaining] |
||
14000 | or dl, 080h ; Set the bit |
||
14001 | mov [cyclesRemaining], edi |
||
14002 | mov [_z80af], ax ; Store AF |
||
14003 | mov al, dl ; And our data to write |
||
14004 | mov dx, [_orgval] |
||
14005 | mov edi, [_z80MemWrite] ; Point to the write array |
||
14006 | |||
14007 | checkLoop248: |
||
14008 | cmp [edi], word 0ffffh ; End of our list? |
||
14009 | je memoryWrite248 ; Yes - go write it! |
||
14010 | cmp dx, [edi] ; Are we smaller? |
||
14011 | jb nextAddr248 ; Yes... go to the next addr |
||
14012 | cmp dx, [edi+4] ; Are we smaller? |
||
14013 | jbe callRoutine248 ; If not, go call it! |
||
14014 | |||
14015 | nextAddr248: |
||
14016 | add edi, 10h ; Next structure, please |
||
14017 | jmp short checkLoop248 |
||
14018 | |||
14019 | callRoutine248: |
||
14020 | call WriteMemoryByte ; Go write the data! |
||
14021 | jmp short WriteMacroExit248 |
||
14022 | memoryWrite248: |
||
14023 | mov [ebp + edx], al |
||
14024 | mov ax, [_z80af] ; Get our accumulator and flags |
||
14025 | WriteMacroExit248: |
||
14026 | mov edi, [cyclesRemaining] |
||
14027 | xor edx, edx |
||
14028 | sub edi, byte 23 |
||
14029 | js near noMoreExec |
||
14030 | mov dl, byte [esi] ; Get our next instruction |
||
14031 | inc esi ; Increment PC |
||
14032 | jmp dword [z80regular+edx*4] |
||
14033 | |||
14034 | |||
14035 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14036 | |||
14037 | FDInst09: |
||
14038 | mov dh, ah ; Get our flags |
||
14039 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
14040 | mov [cyclesRemaining], edi |
||
14041 | mov di, [_z80iy] ; Get our value |
||
14042 | mov [_orgval], di ; Store our original value |
||
14043 | add di, cx |
||
14044 | lahf |
||
14045 | mov [_z80iy], di ; Store our register back |
||
14046 | mov di, [_orgval] ; Get original |
||
14047 | xor di, word [_z80iy] ; XOR It with our computed value |
||
14048 | xor di, cx |
||
14049 | and di, 1000h ; Just our half carry |
||
14050 | or dx, di ; Or in our flags |
||
14051 | and ah, 01h ; Just carry |
||
14052 | or ah, dh |
||
14053 | mov edi, [cyclesRemaining] |
||
14054 | xor edx, edx |
||
14055 | sub edi, byte 15 |
||
14056 | js near noMoreExec |
||
14057 | mov dl, byte [esi] ; Get our next instruction |
||
14058 | inc esi ; Increment PC |
||
14059 | jmp dword [z80regular+edx*4] |
||
14060 | |||
14061 | |||
14062 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14063 | |||
14064 | FDInst19: |
||
14065 | mov dh, ah ; Get our flags |
||
14066 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
14067 | mov [cyclesRemaining], edi |
||
14068 | mov di, [_z80iy] ; Get our value |
||
14069 | mov [_orgval], di ; Store our original value |
||
14070 | add di, word [_z80de] |
||
14071 | lahf |
||
14072 | mov [_z80iy], di ; Store our register back |
||
14073 | mov di, [_orgval] ; Get original |
||
14074 | xor di, word [_z80iy] ; XOR It with our computed value |
||
14075 | xor di, word [_z80de] |
||
14076 | and di, 1000h ; Just our half carry |
||
14077 | or dx, di ; Or in our flags |
||
14078 | and ah, 01h ; Just carry |
||
14079 | or ah, dh |
||
14080 | mov edi, [cyclesRemaining] |
||
14081 | xor edx, edx |
||
14082 | sub edi, byte 15 |
||
14083 | js near noMoreExec |
||
14084 | mov dl, byte [esi] ; Get our next instruction |
||
14085 | inc esi ; Increment PC |
||
14086 | jmp dword [z80regular+edx*4] |
||
14087 | |||
14088 | |||
14089 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14090 | |||
14091 | FDInst21: |
||
14092 | mov dx, [esi] ; Get our word to load |
||
14093 | add esi, 2 ; Advance past the word |
||
14094 | mov [_z80iy], dx ; Store our new value |
||
14095 | xor edx, edx |
||
14096 | sub edi, byte 14 |
||
14097 | js near noMoreExec |
||
14098 | mov dl, byte [esi] ; Get our next instruction |
||
14099 | inc esi ; Increment PC |
||
14100 | jmp dword [z80regular+edx*4] |
||
14101 | |||
14102 | |||
14103 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14104 | |||
14105 | FDInst22: |
||
14106 | mov dx, [esi] ; Get our address to store |
||
14107 | add esi, 2 |
||
14108 | mov [_orgval], dx |
||
14109 | mov dl, [_z80iy] |
||
14110 | mov [cyclesRemaining], edi |
||
14111 | mov [_z80af], ax ; Store AF |
||
14112 | mov al, dl ; And our data to write |
||
14113 | mov dx, [_orgval] |
||
14114 | mov edi, [_z80MemWrite] ; Point to the write array |
||
14115 | |||
14116 | checkLoop249: |
||
14117 | cmp [edi], word 0ffffh ; End of our list? |
||
14118 | je memoryWrite249 ; Yes - go write it! |
||
14119 | cmp dx, [edi] ; Are we smaller? |
||
14120 | jb nextAddr249 ; Yes... go to the next addr |
||
14121 | cmp dx, [edi+4] ; Are we smaller? |
||
14122 | jbe callRoutine249 ; If not, go call it! |
||
14123 | |||
14124 | nextAddr249: |
||
14125 | add edi, 10h ; Next structure, please |
||
14126 | jmp short checkLoop249 |
||
14127 | |||
14128 | callRoutine249: |
||
14129 | call WriteMemoryByte ; Go write the data! |
||
14130 | jmp short WriteMacroExit249 |
||
14131 | memoryWrite249: |
||
14132 | mov [ebp + edx], al |
||
14133 | mov ax, [_z80af] ; Get our accumulator and flags |
||
14134 | WriteMacroExit249: |
||
14135 | mov edi, [cyclesRemaining] |
||
14136 | inc word [_orgval] |
||
14137 | mov dl, [_z80iy + 1] |
||
14138 | mov [cyclesRemaining], edi |
||
14139 | mov [_z80af], ax ; Store AF |
||
14140 | mov al, dl ; And our data to write |
||
14141 | mov dx, [_orgval] |
||
14142 | mov edi, [_z80MemWrite] ; Point to the write array |
||
14143 | |||
14144 | checkLoop250: |
||
14145 | cmp [edi], word 0ffffh ; End of our list? |
||
14146 | je memoryWrite250 ; Yes - go write it! |
||
14147 | cmp dx, [edi] ; Are we smaller? |
||
14148 | jb nextAddr250 ; Yes... go to the next addr |
||
14149 | cmp dx, [edi+4] ; Are we smaller? |
||
14150 | jbe callRoutine250 ; If not, go call it! |
||
14151 | |||
14152 | nextAddr250: |
||
14153 | add edi, 10h ; Next structure, please |
||
14154 | jmp short checkLoop250 |
||
14155 | |||
14156 | callRoutine250: |
||
14157 | call WriteMemoryByte ; Go write the data! |
||
14158 | jmp short WriteMacroExit250 |
||
14159 | memoryWrite250: |
||
14160 | mov [ebp + edx], al |
||
14161 | mov ax, [_z80af] ; Get our accumulator and flags |
||
14162 | WriteMacroExit250: |
||
14163 | mov edi, [cyclesRemaining] |
||
14164 | xor edx, edx |
||
14165 | sub edi, byte 20 |
||
14166 | js near noMoreExec |
||
14167 | mov dl, byte [esi] ; Get our next instruction |
||
14168 | inc esi ; Increment PC |
||
14169 | jmp dword [z80regular+edx*4] |
||
14170 | |||
14171 | |||
14172 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14173 | |||
14174 | FDInst23: |
||
14175 | inc word [_z80iy] ; Increment our mz80Index register |
||
14176 | sub edi, byte 10 |
||
14177 | js near noMoreExec |
||
14178 | mov dl, byte [esi] ; Get our next instruction |
||
14179 | inc esi ; Increment PC |
||
14180 | jmp dword [z80regular+edx*4] |
||
14181 | |||
14182 | |||
14183 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14184 | |||
14185 | FDInst24: |
||
14186 | sahf |
||
14187 | inc byte [_z80iy + 1] |
||
14188 | lahf |
||
14189 | seto dl |
||
14190 | and ah, 0fbh ; Knock out parity/overflow |
||
14191 | shl dl, 2 |
||
14192 | or ah, dl |
||
14193 | and ah, 0fdh ; Knock out N! |
||
14194 | sub edi, byte 9 |
||
14195 | js near noMoreExec |
||
14196 | mov dl, byte [esi] ; Get our next instruction |
||
14197 | inc esi ; Increment PC |
||
14198 | jmp dword [z80regular+edx*4] |
||
14199 | |||
14200 | |||
14201 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14202 | |||
14203 | FDInst25: |
||
14204 | sahf |
||
14205 | dec byte [_z80iy + 1] |
||
14206 | lahf |
||
14207 | seto dl |
||
14208 | and ah, 0fbh ; Knock out parity/overflow |
||
14209 | shl dl, 2 |
||
14210 | or ah, dl |
||
14211 | or ah, 02h ; Set negative! |
||
14212 | sub edi, byte 9 |
||
14213 | js near noMoreExec |
||
14214 | mov dl, byte [esi] ; Get our next instruction |
||
14215 | inc esi ; Increment PC |
||
14216 | jmp dword [z80regular+edx*4] |
||
14217 | |||
14218 | |||
14219 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14220 | |||
14221 | FDInst26: |
||
14222 | mov dl, [esi] ; Get immediate byte to load |
||
14223 | inc esi ; Next byte |
||
14224 | mov byte [_z80iy + 1], dl |
||
14225 | sub edi, byte 9 |
||
14226 | js near noMoreExec |
||
14227 | mov dl, byte [esi] ; Get our next instruction |
||
14228 | inc esi ; Increment PC |
||
14229 | jmp dword [z80regular+edx*4] |
||
14230 | |||
14231 | |||
14232 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14233 | |||
14234 | FDInst29: |
||
14235 | mov dh, ah ; Get our flags |
||
14236 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
14237 | mov [cyclesRemaining], edi |
||
14238 | mov di, [_z80iy] ; Get our value |
||
14239 | mov [_orgval], di ; Store our original value |
||
14240 | add di, di |
||
14241 | lahf |
||
14242 | mov [_z80iy], di ; Store our register back |
||
14243 | mov di, [_orgval] ; Get original |
||
14244 | xor di, word [_z80iy] ; XOR It with our computed value |
||
14245 | xor di, di |
||
14246 | and di, 1000h ; Just our half carry |
||
14247 | or dx, di ; Or in our flags |
||
14248 | and ah, 01h ; Just carry |
||
14249 | or ah, dh |
||
14250 | mov edi, [cyclesRemaining] |
||
14251 | xor edx, edx |
||
14252 | sub edi, byte 15 |
||
14253 | js near noMoreExec |
||
14254 | mov dl, byte [esi] ; Get our next instruction |
||
14255 | inc esi ; Increment PC |
||
14256 | jmp dword [z80regular+edx*4] |
||
14257 | |||
14258 | |||
14259 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14260 | |||
14261 | FDInst2a: |
||
14262 | mov dx, [esi] ; Get our address to store |
||
14263 | add esi, 2 |
||
14264 | mov [cyclesRemaining], edi |
||
14265 | mov edi, [_z80MemRead] ; Point to the read array |
||
14266 | |||
14267 | checkLoop251: |
||
14268 | cmp [edi], word 0ffffh ; End of the list? |
||
14269 | je memoryRead251 |
||
14270 | cmp dx, [edi] ; Are we smaller? |
||
14271 | jb nextAddr251 ; Yes, go to the next address |
||
14272 | cmp dx, [edi+4] ; Are we bigger? |
||
14273 | jbe callRoutine251 |
||
14274 | |||
14275 | nextAddr251: |
||
14276 | add edi, 10h ; Next structure! |
||
14277 | jmp short checkLoop251 |
||
14278 | |||
14279 | callRoutine251: |
||
14280 | push ax ; Save this for later |
||
14281 | push dx ; Save address |
||
14282 | call ReadMemoryByte ; Standard read routine |
||
14283 | pop dx ; Restore our address |
||
14284 | inc dx ; Next byte, please |
||
14285 | push ax ; Save returned byte |
||
14286 | call ReadMemoryByte ; Standard read routine |
||
14287 | xchg ah, al ; Swap for endian's sake |
||
14288 | pop dx ; Restore LSB |
||
14289 | mov dh, ah ; Our word is now in DX |
||
14290 | pop ax ; Restore this |
||
14291 | mov [_z80iy], dx ; Store our word |
||
14292 | jmp readExit251 |
||
14293 | |||
14294 | memoryRead251: |
||
14295 | mov dx, [ebp + edx] |
||
14296 | mov [_z80iy], dx |
||
14297 | readExit251: |
||
14298 | mov edi, [cyclesRemaining] |
||
14299 | xor edx, edx |
||
14300 | sub edi, byte 20 |
||
14301 | js near noMoreExec |
||
14302 | mov dl, byte [esi] ; Get our next instruction |
||
14303 | inc esi ; Increment PC |
||
14304 | jmp dword [z80regular+edx*4] |
||
14305 | |||
14306 | |||
14307 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14308 | |||
14309 | FDInst2b: |
||
14310 | dec word [_z80iy] ; Increment our mz80Index register |
||
14311 | sub edi, byte 10 |
||
14312 | js near noMoreExec |
||
14313 | mov dl, byte [esi] ; Get our next instruction |
||
14314 | inc esi ; Increment PC |
||
14315 | jmp dword [z80regular+edx*4] |
||
14316 | |||
14317 | |||
14318 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14319 | |||
14320 | FDInst2c: |
||
14321 | sahf |
||
14322 | inc byte [_z80iy] |
||
14323 | lahf |
||
14324 | seto dl |
||
14325 | and ah, 0fbh ; Knock out parity/overflow |
||
14326 | shl dl, 2 |
||
14327 | or ah, dl |
||
14328 | and ah, 0fdh ; Knock out N! |
||
14329 | sub edi, byte 9 |
||
14330 | js near noMoreExec |
||
14331 | mov dl, byte [esi] ; Get our next instruction |
||
14332 | inc esi ; Increment PC |
||
14333 | jmp dword [z80regular+edx*4] |
||
14334 | |||
14335 | |||
14336 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14337 | |||
14338 | FDInst2d: |
||
14339 | sahf |
||
14340 | dec byte [_z80iy] |
||
14341 | lahf |
||
14342 | seto dl |
||
14343 | and ah, 0fbh ; Knock out parity/overflow |
||
14344 | shl dl, 2 |
||
14345 | or ah, dl |
||
14346 | or ah, 02h ; Set negative! |
||
14347 | sub edi, byte 9 |
||
14348 | js near noMoreExec |
||
14349 | mov dl, byte [esi] ; Get our next instruction |
||
14350 | inc esi ; Increment PC |
||
14351 | jmp dword [z80regular+edx*4] |
||
14352 | |||
14353 | |||
14354 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14355 | |||
14356 | FDInst2e: |
||
14357 | mov dl, [esi] ; Get immediate byte to load |
||
14358 | inc esi ; Next byte |
||
14359 | mov byte [_z80iy], dl |
||
14360 | sub edi, byte 9 |
||
14361 | js near noMoreExec |
||
14362 | mov dl, byte [esi] ; Get our next instruction |
||
14363 | inc esi ; Increment PC |
||
14364 | jmp dword [z80regular+edx*4] |
||
14365 | |||
14366 | |||
14367 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14368 | |||
14369 | FDInst34: |
||
14370 | mov dl, [esi] ; Fetch our offset |
||
14371 | inc esi ; Move past the offset |
||
14372 | or dl, dl ; Is this bad boy signed? |
||
14373 | jns notSigned252 ; Nope! |
||
14374 | dec dh ; Make it FFable |
||
14375 | notSigned252: |
||
14376 | add dx, [_z80iy] ; Our offset! |
||
14377 | mov [_orgval], dx |
||
14378 | mov [cyclesRemaining], edi |
||
14379 | mov edi, [_z80MemRead] ; Point to the read array |
||
14380 | |||
14381 | checkLoop253: |
||
14382 | cmp [edi], word 0ffffh ; End of the list? |
||
14383 | je memoryRead253 |
||
14384 | cmp edx, [edi] ; Are we smaller? |
||
14385 | jb nextAddr253 ; Yes, go to the next address |
||
14386 | cmp edx, [edi+4] ; Are we bigger? |
||
14387 | jbe callRoutine253 |
||
14388 | |||
14389 | nextAddr253: |
||
14390 | add edi, 10h ; Next structure! |
||
14391 | jmp short checkLoop253 |
||
14392 | |||
14393 | callRoutine253: |
||
14394 | call ReadMemoryByte ; Standard read routine |
||
14395 | mov dl, al ; Put our returned value here |
||
14396 | mov ax, [_z80af] ; Get our AF back |
||
14397 | jmp short readExit253 |
||
14398 | |||
14399 | memoryRead253: |
||
14400 | mov dl, [ebp + edx] ; Get our data |
||
14401 | |||
14402 | readExit253: |
||
14403 | mov edi, [cyclesRemaining] |
||
14404 | sahf |
||
14405 | inc dl |
||
14406 | lahf |
||
14407 | o16 pushf |
||
14408 | shl edx, 16 |
||
14409 | and ah, 0fbh ; Knock out parity/overflow |
||
14410 | pop dx |
||
14411 | and dh, 08h ; Just the overflow |
||
14412 | shr dh, 1 ; Shift it into position |
||
14413 | or ah, dh ; OR It in with the real flags |
||
14414 | shr edx, 16 |
||
14415 | and ah, 0fdh ; Knock out N! |
||
14416 | mov [cyclesRemaining], edi |
||
14417 | mov [_z80af], ax ; Store AF |
||
14418 | mov al, dl ; And our data to write |
||
14419 | mov dx, [_orgval] |
||
14420 | mov edi, [_z80MemWrite] ; Point to the write array |
||
14421 | |||
14422 | checkLoop254: |
||
14423 | cmp [edi], word 0ffffh ; End of our list? |
||
14424 | je memoryWrite254 ; Yes - go write it! |
||
14425 | cmp dx, [edi] ; Are we smaller? |
||
14426 | jb nextAddr254 ; Yes... go to the next addr |
||
14427 | cmp dx, [edi+4] ; Are we smaller? |
||
14428 | jbe callRoutine254 ; If not, go call it! |
||
14429 | |||
14430 | nextAddr254: |
||
14431 | add edi, 10h ; Next structure, please |
||
14432 | jmp short checkLoop254 |
||
14433 | |||
14434 | callRoutine254: |
||
14435 | call WriteMemoryByte ; Go write the data! |
||
14436 | jmp short WriteMacroExit254 |
||
14437 | memoryWrite254: |
||
14438 | mov [ebp + edx], al |
||
14439 | mov ax, [_z80af] ; Get our accumulator and flags |
||
14440 | WriteMacroExit254: |
||
14441 | mov edi, [cyclesRemaining] |
||
14442 | xor edx, edx |
||
14443 | sub edi, byte 23 |
||
14444 | js near noMoreExec |
||
14445 | mov dl, byte [esi] ; Get our next instruction |
||
14446 | inc esi ; Increment PC |
||
14447 | jmp dword [z80regular+edx*4] |
||
14448 | |||
14449 | |||
14450 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14451 | |||
14452 | FDInst35: |
||
14453 | mov dl, [esi] ; Fetch our offset |
||
14454 | inc esi ; Move past the offset |
||
14455 | or dl, dl ; Is this bad boy signed? |
||
14456 | jns notSigned255 ; Nope! |
||
14457 | dec dh ; Make it FFable |
||
14458 | notSigned255: |
||
14459 | add dx, [_z80iy] ; Our offset! |
||
14460 | mov [_orgval], dx |
||
14461 | mov [cyclesRemaining], edi |
||
14462 | mov edi, [_z80MemRead] ; Point to the read array |
||
14463 | |||
14464 | checkLoop256: |
||
14465 | cmp [edi], word 0ffffh ; End of the list? |
||
14466 | je memoryRead256 |
||
14467 | cmp edx, [edi] ; Are we smaller? |
||
14468 | jb nextAddr256 ; Yes, go to the next address |
||
14469 | cmp edx, [edi+4] ; Are we bigger? |
||
14470 | jbe callRoutine256 |
||
14471 | |||
14472 | nextAddr256: |
||
14473 | add edi, 10h ; Next structure! |
||
14474 | jmp short checkLoop256 |
||
14475 | |||
14476 | callRoutine256: |
||
14477 | call ReadMemoryByte ; Standard read routine |
||
14478 | mov dl, al ; Put our returned value here |
||
14479 | mov ax, [_z80af] ; Get our AF back |
||
14480 | jmp short readExit256 |
||
14481 | |||
14482 | memoryRead256: |
||
14483 | mov dl, [ebp + edx] ; Get our data |
||
14484 | |||
14485 | readExit256: |
||
14486 | mov edi, [cyclesRemaining] |
||
14487 | sahf |
||
14488 | dec dl |
||
14489 | lahf |
||
14490 | o16 pushf |
||
14491 | shl edx, 16 |
||
14492 | and ah, 0fbh ; Knock out parity/overflow |
||
14493 | pop dx |
||
14494 | and dh, 08h ; Just the overflow |
||
14495 | shr dh, 1 ; Shift it into position |
||
14496 | or ah, dh ; OR It in with the real flags |
||
14497 | shr edx, 16 |
||
14498 | or ah, 02h ; Make it N! |
||
14499 | mov [cyclesRemaining], edi |
||
14500 | mov [_z80af], ax ; Store AF |
||
14501 | mov al, dl ; And our data to write |
||
14502 | mov dx, [_orgval] |
||
14503 | mov edi, [_z80MemWrite] ; Point to the write array |
||
14504 | |||
14505 | checkLoop257: |
||
14506 | cmp [edi], word 0ffffh ; End of our list? |
||
14507 | je memoryWrite257 ; Yes - go write it! |
||
14508 | cmp dx, [edi] ; Are we smaller? |
||
14509 | jb nextAddr257 ; Yes... go to the next addr |
||
14510 | cmp dx, [edi+4] ; Are we smaller? |
||
14511 | jbe callRoutine257 ; If not, go call it! |
||
14512 | |||
14513 | nextAddr257: |
||
14514 | add edi, 10h ; Next structure, please |
||
14515 | jmp short checkLoop257 |
||
14516 | |||
14517 | callRoutine257: |
||
14518 | call WriteMemoryByte ; Go write the data! |
||
14519 | jmp short WriteMacroExit257 |
||
14520 | memoryWrite257: |
||
14521 | mov [ebp + edx], al |
||
14522 | mov ax, [_z80af] ; Get our accumulator and flags |
||
14523 | WriteMacroExit257: |
||
14524 | mov edi, [cyclesRemaining] |
||
14525 | xor edx, edx |
||
14526 | sub edi, byte 23 |
||
14527 | js near noMoreExec |
||
14528 | mov dl, byte [esi] ; Get our next instruction |
||
14529 | inc esi ; Increment PC |
||
14530 | jmp dword [z80regular+edx*4] |
||
14531 | |||
14532 | |||
14533 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14534 | |||
14535 | FDInst36: |
||
14536 | mov dx, [esi] ; Get our address |
||
14537 | add esi, 2 ; Skip over our storage bytes |
||
14538 | mov [cyclesRemaining], edi |
||
14539 | mov di, dx ; Store it here for later |
||
14540 | xor dh, dh |
||
14541 | or dl, dl |
||
14542 | jns noNegate258 |
||
14543 | dec dh |
||
14544 | noNegate258: |
||
14545 | add dx, [_z80iy] ; Add in our index |
||
14546 | mov [_orgval], dx ; Store our address to write to |
||
14547 | mov dx, di |
||
14548 | xchg dh, dl |
||
14549 | mov edi, [cyclesRemaining] |
||
14550 | mov [cyclesRemaining], edi |
||
14551 | mov [_z80af], ax ; Store AF |
||
14552 | mov al, dl ; And our data to write |
||
14553 | mov dx, [_orgval] |
||
14554 | mov edi, [_z80MemWrite] ; Point to the write array |
||
14555 | |||
14556 | checkLoop258: |
||
14557 | cmp [edi], word 0ffffh ; End of our list? |
||
14558 | je memoryWrite258 ; Yes - go write it! |
||
14559 | cmp dx, [edi] ; Are we smaller? |
||
14560 | jb nextAddr258 ; Yes... go to the next addr |
||
14561 | cmp dx, [edi+4] ; Are we smaller? |
||
14562 | jbe callRoutine258 ; If not, go call it! |
||
14563 | |||
14564 | nextAddr258: |
||
14565 | add edi, 10h ; Next structure, please |
||
14566 | jmp short checkLoop258 |
||
14567 | |||
14568 | callRoutine258: |
||
14569 | call WriteMemoryByte ; Go write the data! |
||
14570 | jmp short WriteMacroExit258 |
||
14571 | memoryWrite258: |
||
14572 | mov [ebp + edx], al |
||
14573 | mov ax, [_z80af] ; Get our accumulator and flags |
||
14574 | WriteMacroExit258: |
||
14575 | mov edi, [cyclesRemaining] |
||
14576 | xor edx, edx |
||
14577 | sub edi, byte 19 |
||
14578 | js near noMoreExec |
||
14579 | mov dl, byte [esi] ; Get our next instruction |
||
14580 | inc esi ; Increment PC |
||
14581 | jmp dword [z80regular+edx*4] |
||
14582 | |||
14583 | |||
14584 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14585 | |||
14586 | FDInst39: |
||
14587 | mov dh, ah ; Get our flags |
||
14588 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
14589 | mov [cyclesRemaining], edi |
||
14590 | mov di, [_z80iy] ; Get our value |
||
14591 | mov [_orgval], di ; Store our original value |
||
14592 | add di, word [_z80sp] |
||
14593 | lahf |
||
14594 | mov [_z80iy], di ; Store our register back |
||
14595 | mov di, [_orgval] ; Get original |
||
14596 | xor di, word [_z80iy] ; XOR It with our computed value |
||
14597 | xor di, word [_z80sp] |
||
14598 | and di, 1000h ; Just our half carry |
||
14599 | or dx, di ; Or in our flags |
||
14600 | and ah, 01h ; Just carry |
||
14601 | or ah, dh |
||
14602 | mov edi, [cyclesRemaining] |
||
14603 | xor edx, edx |
||
14604 | sub edi, byte 15 |
||
14605 | js near noMoreExec |
||
14606 | mov dl, byte [esi] ; Get our next instruction |
||
14607 | inc esi ; Increment PC |
||
14608 | jmp dword [z80regular+edx*4] |
||
14609 | |||
14610 | |||
14611 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14612 | |||
14613 | FDInst44: |
||
14614 | mov ch, byte [_z80iy + 1] |
||
14615 | xor edx, edx |
||
14616 | sub edi, byte 9 |
||
14617 | js near noMoreExec |
||
14618 | mov dl, byte [esi] ; Get our next instruction |
||
14619 | inc esi ; Increment PC |
||
14620 | jmp dword [z80regular+edx*4] |
||
14621 | |||
14622 | |||
14623 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14624 | |||
14625 | FDInst45: |
||
14626 | mov ch, byte [_z80iy + 0] |
||
14627 | xor edx, edx |
||
14628 | sub edi, byte 9 |
||
14629 | js near noMoreExec |
||
14630 | mov dl, byte [esi] ; Get our next instruction |
||
14631 | inc esi ; Increment PC |
||
14632 | jmp dword [z80regular+edx*4] |
||
14633 | |||
14634 | |||
14635 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14636 | |||
14637 | FDInst46: |
||
14638 | mov dl, [esi] ; Fetch our offset |
||
14639 | inc esi ; Move past the offset |
||
14640 | or dl, dl ; Is this bad boy signed? |
||
14641 | jns notSigned260 ; Nope! |
||
14642 | dec dh ; Make it FFable |
||
14643 | notSigned260: |
||
14644 | add dx, [_z80iy] ; Our offset! |
||
14645 | mov [cyclesRemaining], edi |
||
14646 | mov edi, [_z80MemRead] ; Point to the read array |
||
14647 | |||
14648 | checkLoop261: |
||
14649 | cmp [edi], word 0ffffh ; End of the list? |
||
14650 | je memoryRead261 |
||
14651 | cmp edx, [edi] ; Are we smaller? |
||
14652 | jb nextAddr261 ; Yes, go to the next address |
||
14653 | cmp edx, [edi+4] ; Are we bigger? |
||
14654 | jbe callRoutine261 |
||
14655 | |||
14656 | nextAddr261: |
||
14657 | add edi, 10h ; Next structure! |
||
14658 | jmp short checkLoop261 |
||
14659 | |||
14660 | callRoutine261: |
||
14661 | call ReadMemoryByte ; Standard read routine |
||
14662 | mov ch, al ; Put our returned value here |
||
14663 | mov ax, [_z80af] ; Get our AF back |
||
14664 | jmp short readExit261 |
||
14665 | |||
14666 | memoryRead261: |
||
14667 | mov ch, [ebp + edx] ; Get our data |
||
14668 | |||
14669 | readExit261: |
||
14670 | mov edi, [cyclesRemaining] |
||
14671 | xor edx, edx ; Make sure we don't hose things |
||
14672 | sub edi, byte 19 |
||
14673 | js near noMoreExec |
||
14674 | mov dl, byte [esi] ; Get our next instruction |
||
14675 | inc esi ; Increment PC |
||
14676 | jmp dword [z80regular+edx*4] |
||
14677 | |||
14678 | |||
14679 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14680 | |||
14681 | FDInst4c: |
||
14682 | mov cl, byte [_z80iy + 1] |
||
14683 | xor edx, edx |
||
14684 | sub edi, byte 9 |
||
14685 | js near noMoreExec |
||
14686 | mov dl, byte [esi] ; Get our next instruction |
||
14687 | inc esi ; Increment PC |
||
14688 | jmp dword [z80regular+edx*4] |
||
14689 | |||
14690 | |||
14691 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14692 | |||
14693 | FDInst4d: |
||
14694 | mov cl, byte [_z80iy + 0] |
||
14695 | xor edx, edx |
||
14696 | sub edi, byte 9 |
||
14697 | js near noMoreExec |
||
14698 | mov dl, byte [esi] ; Get our next instruction |
||
14699 | inc esi ; Increment PC |
||
14700 | jmp dword [z80regular+edx*4] |
||
14701 | |||
14702 | |||
14703 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14704 | |||
14705 | FDInst4e: |
||
14706 | mov dl, [esi] ; Fetch our offset |
||
14707 | inc esi ; Move past the offset |
||
14708 | or dl, dl ; Is this bad boy signed? |
||
14709 | jns notSigned263 ; Nope! |
||
14710 | dec dh ; Make it FFable |
||
14711 | notSigned263: |
||
14712 | add dx, [_z80iy] ; Our offset! |
||
14713 | mov [cyclesRemaining], edi |
||
14714 | mov edi, [_z80MemRead] ; Point to the read array |
||
14715 | |||
14716 | checkLoop264: |
||
14717 | cmp [edi], word 0ffffh ; End of the list? |
||
14718 | je memoryRead264 |
||
14719 | cmp edx, [edi] ; Are we smaller? |
||
14720 | jb nextAddr264 ; Yes, go to the next address |
||
14721 | cmp edx, [edi+4] ; Are we bigger? |
||
14722 | jbe callRoutine264 |
||
14723 | |||
14724 | nextAddr264: |
||
14725 | add edi, 10h ; Next structure! |
||
14726 | jmp short checkLoop264 |
||
14727 | |||
14728 | callRoutine264: |
||
14729 | call ReadMemoryByte ; Standard read routine |
||
14730 | mov cl, al ; Put our returned value here |
||
14731 | mov ax, [_z80af] ; Get our AF back |
||
14732 | jmp short readExit264 |
||
14733 | |||
14734 | memoryRead264: |
||
14735 | mov cl, [ebp + edx] ; Get our data |
||
14736 | |||
14737 | readExit264: |
||
14738 | mov edi, [cyclesRemaining] |
||
14739 | xor edx, edx ; Make sure we don't hose things |
||
14740 | sub edi, byte 19 |
||
14741 | js near noMoreExec |
||
14742 | mov dl, byte [esi] ; Get our next instruction |
||
14743 | inc esi ; Increment PC |
||
14744 | jmp dword [z80regular+edx*4] |
||
14745 | |||
14746 | |||
14747 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14748 | |||
14749 | FDInst54: |
||
14750 | mov dx, [_z80de] ; Get a usable copy of DE here |
||
14751 | mov dh, byte [_z80iy + 1] |
||
14752 | mov [_z80de], dx ; Put it back! |
||
14753 | xor edx, edx |
||
14754 | sub edi, byte 9 |
||
14755 | js near noMoreExec |
||
14756 | mov dl, byte [esi] ; Get our next instruction |
||
14757 | inc esi ; Increment PC |
||
14758 | jmp dword [z80regular+edx*4] |
||
14759 | |||
14760 | |||
14761 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14762 | |||
14763 | FDInst55: |
||
14764 | mov dx, [_z80de] ; Get a usable copy of DE here |
||
14765 | mov dh, byte [_z80iy + 0] |
||
14766 | mov [_z80de], dx ; Put it back! |
||
14767 | xor edx, edx |
||
14768 | sub edi, byte 9 |
||
14769 | js near noMoreExec |
||
14770 | mov dl, byte [esi] ; Get our next instruction |
||
14771 | inc esi ; Increment PC |
||
14772 | jmp dword [z80regular+edx*4] |
||
14773 | |||
14774 | |||
14775 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14776 | |||
14777 | FDInst56: |
||
14778 | mov dl, [esi] ; Fetch our offset |
||
14779 | inc esi ; Move past the offset |
||
14780 | or dl, dl ; Is this bad boy signed? |
||
14781 | jns notSigned266 ; Nope! |
||
14782 | dec dh ; Make it FFable |
||
14783 | notSigned266: |
||
14784 | add dx, [_z80iy] ; Our offset! |
||
14785 | mov [cyclesRemaining], edi |
||
14786 | mov edi, [_z80MemRead] ; Point to the read array |
||
14787 | |||
14788 | checkLoop267: |
||
14789 | cmp [edi], word 0ffffh ; End of the list? |
||
14790 | je memoryRead267 |
||
14791 | cmp edx, [edi] ; Are we smaller? |
||
14792 | jb nextAddr267 ; Yes, go to the next address |
||
14793 | cmp edx, [edi+4] ; Are we bigger? |
||
14794 | jbe callRoutine267 |
||
14795 | |||
14796 | nextAddr267: |
||
14797 | add edi, 10h ; Next structure! |
||
14798 | jmp short checkLoop267 |
||
14799 | |||
14800 | callRoutine267: |
||
14801 | call ReadMemoryByte ; Standard read routine |
||
14802 | mov byte [_z80de + 1], al ; Put our returned value here |
||
14803 | mov ax, [_z80af] ; Get our AF back |
||
14804 | jmp short readExit267 |
||
14805 | |||
14806 | memoryRead267: |
||
14807 | mov di, dx |
||
14808 | mov dl, [ebp + edx] |
||
14809 | mov byte [_z80de + 1], dl |
||
14810 | mov dx, di |
||
14811 | readExit267: |
||
14812 | mov edi, [cyclesRemaining] |
||
14813 | xor edx, edx ; Make sure we don't hose things |
||
14814 | sub edi, byte 19 |
||
14815 | js near noMoreExec |
||
14816 | mov dl, byte [esi] ; Get our next instruction |
||
14817 | inc esi ; Increment PC |
||
14818 | jmp dword [z80regular+edx*4] |
||
14819 | |||
14820 | |||
14821 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14822 | |||
14823 | FDInst5c: |
||
14824 | mov dx, [_z80de] ; Get a usable copy of DE here |
||
14825 | mov dl, byte [_z80iy + 1] |
||
14826 | mov [_z80de], dx ; Put it back! |
||
14827 | xor edx, edx |
||
14828 | sub edi, byte 9 |
||
14829 | js near noMoreExec |
||
14830 | mov dl, byte [esi] ; Get our next instruction |
||
14831 | inc esi ; Increment PC |
||
14832 | jmp dword [z80regular+edx*4] |
||
14833 | |||
14834 | |||
14835 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14836 | |||
14837 | FDInst5d: |
||
14838 | mov dx, [_z80de] ; Get a usable copy of DE here |
||
14839 | mov dl, byte [_z80iy + 0] |
||
14840 | mov [_z80de], dx ; Put it back! |
||
14841 | xor edx, edx |
||
14842 | sub edi, byte 9 |
||
14843 | js near noMoreExec |
||
14844 | mov dl, byte [esi] ; Get our next instruction |
||
14845 | inc esi ; Increment PC |
||
14846 | jmp dword [z80regular+edx*4] |
||
14847 | |||
14848 | |||
14849 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14850 | |||
14851 | FDInst5e: |
||
14852 | mov dl, [esi] ; Fetch our offset |
||
14853 | inc esi ; Move past the offset |
||
14854 | or dl, dl ; Is this bad boy signed? |
||
14855 | jns notSigned269 ; Nope! |
||
14856 | dec dh ; Make it FFable |
||
14857 | notSigned269: |
||
14858 | add dx, [_z80iy] ; Our offset! |
||
14859 | mov [cyclesRemaining], edi |
||
14860 | mov edi, [_z80MemRead] ; Point to the read array |
||
14861 | |||
14862 | checkLoop270: |
||
14863 | cmp [edi], word 0ffffh ; End of the list? |
||
14864 | je memoryRead270 |
||
14865 | cmp edx, [edi] ; Are we smaller? |
||
14866 | jb nextAddr270 ; Yes, go to the next address |
||
14867 | cmp edx, [edi+4] ; Are we bigger? |
||
14868 | jbe callRoutine270 |
||
14869 | |||
14870 | nextAddr270: |
||
14871 | add edi, 10h ; Next structure! |
||
14872 | jmp short checkLoop270 |
||
14873 | |||
14874 | callRoutine270: |
||
14875 | call ReadMemoryByte ; Standard read routine |
||
14876 | mov byte [_z80de], al ; Put our returned value here |
||
14877 | mov ax, [_z80af] ; Get our AF back |
||
14878 | jmp short readExit270 |
||
14879 | |||
14880 | memoryRead270: |
||
14881 | mov di, dx |
||
14882 | mov dl, [ebp + edx] |
||
14883 | mov byte [_z80de], dl |
||
14884 | mov dx, di |
||
14885 | readExit270: |
||
14886 | mov edi, [cyclesRemaining] |
||
14887 | xor edx, edx ; Make sure we don't hose things |
||
14888 | sub edi, byte 19 |
||
14889 | js near noMoreExec |
||
14890 | mov dl, byte [esi] ; Get our next instruction |
||
14891 | inc esi ; Increment PC |
||
14892 | jmp dword [z80regular+edx*4] |
||
14893 | |||
14894 | |||
14895 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14896 | |||
14897 | FDInst60: |
||
14898 | mov byte [_z80iy + 1], ch |
||
14899 | xor edx, edx |
||
14900 | sub edi, byte 9 |
||
14901 | js near noMoreExec |
||
14902 | mov dl, byte [esi] ; Get our next instruction |
||
14903 | inc esi ; Increment PC |
||
14904 | jmp dword [z80regular+edx*4] |
||
14905 | |||
14906 | |||
14907 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14908 | |||
14909 | FDInst61: |
||
14910 | mov byte [_z80iy + 1], cl |
||
14911 | xor edx, edx |
||
14912 | sub edi, byte 9 |
||
14913 | js near noMoreExec |
||
14914 | mov dl, byte [esi] ; Get our next instruction |
||
14915 | inc esi ; Increment PC |
||
14916 | jmp dword [z80regular+edx*4] |
||
14917 | |||
14918 | |||
14919 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14920 | |||
14921 | FDInst62: |
||
14922 | mov dx, [_z80de] ; Get DE |
||
14923 | mov byte [_z80iy + 1], dh |
||
14924 | xor edx, edx |
||
14925 | sub edi, byte 9 |
||
14926 | js near noMoreExec |
||
14927 | mov dl, byte [esi] ; Get our next instruction |
||
14928 | inc esi ; Increment PC |
||
14929 | jmp dword [z80regular+edx*4] |
||
14930 | |||
14931 | |||
14932 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14933 | |||
14934 | FDInst63: |
||
14935 | mov dx, [_z80de] ; Get DE |
||
14936 | mov byte [_z80iy + 1], dl |
||
14937 | xor edx, edx |
||
14938 | sub edi, byte 9 |
||
14939 | js near noMoreExec |
||
14940 | mov dl, byte [esi] ; Get our next instruction |
||
14941 | inc esi ; Increment PC |
||
14942 | jmp dword [z80regular+edx*4] |
||
14943 | |||
14944 | |||
14945 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14946 | |||
14947 | FDInst64: |
||
14948 | mov dh, byte [_z80iy + 1] |
||
14949 | mov byte [_z80iy + 1], bh |
||
14950 | xor edx, edx |
||
14951 | sub edi, byte 9 |
||
14952 | js near noMoreExec |
||
14953 | mov dl, byte [esi] ; Get our next instruction |
||
14954 | inc esi ; Increment PC |
||
14955 | jmp dword [z80regular+edx*4] |
||
14956 | |||
14957 | |||
14958 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14959 | |||
14960 | FDInst65: |
||
14961 | mov dl, byte [_z80iy] |
||
14962 | mov byte [_z80iy + 1], bl |
||
14963 | xor edx, edx |
||
14964 | sub edi, byte 9 |
||
14965 | js near noMoreExec |
||
14966 | mov dl, byte [esi] ; Get our next instruction |
||
14967 | inc esi ; Increment PC |
||
14968 | jmp dword [z80regular+edx*4] |
||
14969 | |||
14970 | |||
14971 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
14972 | |||
14973 | FDInst66: |
||
14974 | mov dl, [esi] ; Fetch our offset |
||
14975 | inc esi ; Move past the offset |
||
14976 | or dl, dl ; Is this bad boy signed? |
||
14977 | jns notSigned272 ; Nope! |
||
14978 | dec dh ; Make it FFable |
||
14979 | notSigned272: |
||
14980 | add dx, [_z80iy] ; Our offset! |
||
14981 | mov [cyclesRemaining], edi |
||
14982 | mov edi, [_z80MemRead] ; Point to the read array |
||
14983 | |||
14984 | checkLoop273: |
||
14985 | cmp [edi], word 0ffffh ; End of the list? |
||
14986 | je memoryRead273 |
||
14987 | cmp edx, [edi] ; Are we smaller? |
||
14988 | jb nextAddr273 ; Yes, go to the next address |
||
14989 | cmp edx, [edi+4] ; Are we bigger? |
||
14990 | jbe callRoutine273 |
||
14991 | |||
14992 | nextAddr273: |
||
14993 | add edi, 10h ; Next structure! |
||
14994 | jmp short checkLoop273 |
||
14995 | |||
14996 | callRoutine273: |
||
14997 | call ReadMemoryByte ; Standard read routine |
||
14998 | mov bh, al ; Put our returned value here |
||
14999 | mov ax, [_z80af] ; Get our AF back |
||
15000 | jmp short readExit273 |
||
15001 | |||
15002 | memoryRead273: |
||
15003 | mov bh, [ebp + edx] ; Get our data |
||
15004 | |||
15005 | readExit273: |
||
15006 | mov edi, [cyclesRemaining] |
||
15007 | xor edx, edx ; Make sure we don't hose things |
||
15008 | sub edi, byte 19 |
||
15009 | js near noMoreExec |
||
15010 | mov dl, byte [esi] ; Get our next instruction |
||
15011 | inc esi ; Increment PC |
||
15012 | jmp dword [z80regular+edx*4] |
||
15013 | |||
15014 | |||
15015 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15016 | |||
15017 | FDInst67: |
||
15018 | mov byte [_z80iy + 1], al |
||
15019 | xor edx, edx |
||
15020 | sub edi, byte 9 |
||
15021 | js near noMoreExec |
||
15022 | mov dl, byte [esi] ; Get our next instruction |
||
15023 | inc esi ; Increment PC |
||
15024 | jmp dword [z80regular+edx*4] |
||
15025 | |||
15026 | |||
15027 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15028 | |||
15029 | FDInst68: |
||
15030 | mov byte [_z80iy + 0], ch |
||
15031 | xor edx, edx |
||
15032 | sub edi, byte 9 |
||
15033 | js near noMoreExec |
||
15034 | mov dl, byte [esi] ; Get our next instruction |
||
15035 | inc esi ; Increment PC |
||
15036 | jmp dword [z80regular+edx*4] |
||
15037 | |||
15038 | |||
15039 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15040 | |||
15041 | FDInst69: |
||
15042 | mov byte [_z80iy + 0], cl |
||
15043 | xor edx, edx |
||
15044 | sub edi, byte 9 |
||
15045 | js near noMoreExec |
||
15046 | mov dl, byte [esi] ; Get our next instruction |
||
15047 | inc esi ; Increment PC |
||
15048 | jmp dword [z80regular+edx*4] |
||
15049 | |||
15050 | |||
15051 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15052 | |||
15053 | FDInst6a: |
||
15054 | mov dx, [_z80de] ; Get DE |
||
15055 | mov byte [_z80iy + 0], dh |
||
15056 | xor edx, edx |
||
15057 | sub edi, byte 9 |
||
15058 | js near noMoreExec |
||
15059 | mov dl, byte [esi] ; Get our next instruction |
||
15060 | inc esi ; Increment PC |
||
15061 | jmp dword [z80regular+edx*4] |
||
15062 | |||
15063 | |||
15064 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15065 | |||
15066 | FDInst6b: |
||
15067 | mov dx, [_z80de] ; Get DE |
||
15068 | mov byte [_z80iy + 0], dl |
||
15069 | xor edx, edx |
||
15070 | sub edi, byte 9 |
||
15071 | js near noMoreExec |
||
15072 | mov dl, byte [esi] ; Get our next instruction |
||
15073 | inc esi ; Increment PC |
||
15074 | jmp dword [z80regular+edx*4] |
||
15075 | |||
15076 | |||
15077 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15078 | |||
15079 | FDInst6c: |
||
15080 | mov dh, byte [_z80iy + 1] |
||
15081 | mov byte [_z80iy + 0], bh |
||
15082 | xor edx, edx |
||
15083 | sub edi, byte 9 |
||
15084 | js near noMoreExec |
||
15085 | mov dl, byte [esi] ; Get our next instruction |
||
15086 | inc esi ; Increment PC |
||
15087 | jmp dword [z80regular+edx*4] |
||
15088 | |||
15089 | |||
15090 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15091 | |||
15092 | FDInst6d: |
||
15093 | mov dl, byte [_z80iy] |
||
15094 | mov byte [_z80iy + 0], bl |
||
15095 | xor edx, edx |
||
15096 | sub edi, byte 9 |
||
15097 | js near noMoreExec |
||
15098 | mov dl, byte [esi] ; Get our next instruction |
||
15099 | inc esi ; Increment PC |
||
15100 | jmp dword [z80regular+edx*4] |
||
15101 | |||
15102 | |||
15103 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15104 | |||
15105 | FDInst6e: |
||
15106 | mov dl, [esi] ; Fetch our offset |
||
15107 | inc esi ; Move past the offset |
||
15108 | or dl, dl ; Is this bad boy signed? |
||
15109 | jns notSigned275 ; Nope! |
||
15110 | dec dh ; Make it FFable |
||
15111 | notSigned275: |
||
15112 | add dx, [_z80iy] ; Our offset! |
||
15113 | mov [cyclesRemaining], edi |
||
15114 | mov edi, [_z80MemRead] ; Point to the read array |
||
15115 | |||
15116 | checkLoop276: |
||
15117 | cmp [edi], word 0ffffh ; End of the list? |
||
15118 | je memoryRead276 |
||
15119 | cmp edx, [edi] ; Are we smaller? |
||
15120 | jb nextAddr276 ; Yes, go to the next address |
||
15121 | cmp edx, [edi+4] ; Are we bigger? |
||
15122 | jbe callRoutine276 |
||
15123 | |||
15124 | nextAddr276: |
||
15125 | add edi, 10h ; Next structure! |
||
15126 | jmp short checkLoop276 |
||
15127 | |||
15128 | callRoutine276: |
||
15129 | call ReadMemoryByte ; Standard read routine |
||
15130 | mov bl, al ; Put our returned value here |
||
15131 | mov ax, [_z80af] ; Get our AF back |
||
15132 | jmp short readExit276 |
||
15133 | |||
15134 | memoryRead276: |
||
15135 | mov bl, [ebp + edx] ; Get our data |
||
15136 | |||
15137 | readExit276: |
||
15138 | mov edi, [cyclesRemaining] |
||
15139 | xor edx, edx ; Make sure we don't hose things |
||
15140 | sub edi, byte 19 |
||
15141 | js near noMoreExec |
||
15142 | mov dl, byte [esi] ; Get our next instruction |
||
15143 | inc esi ; Increment PC |
||
15144 | jmp dword [z80regular+edx*4] |
||
15145 | |||
15146 | |||
15147 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15148 | |||
15149 | FDInst6f: |
||
15150 | mov byte [_z80iy + 0], al |
||
15151 | xor edx, edx |
||
15152 | sub edi, byte 9 |
||
15153 | js near noMoreExec |
||
15154 | mov dl, byte [esi] ; Get our next instruction |
||
15155 | inc esi ; Increment PC |
||
15156 | jmp dword [z80regular+edx*4] |
||
15157 | |||
15158 | |||
15159 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15160 | |||
15161 | FDInst70: |
||
15162 | mov dl, [esi] ; Fetch our offset |
||
15163 | inc esi ; Move past the offset |
||
15164 | or dl, dl ; Is this bad boy signed? |
||
15165 | jns notSigned278 ; Nope! |
||
15166 | dec dh ; Make it FFable |
||
15167 | notSigned278: |
||
15168 | add dx, [_z80iy] ; Our offset! |
||
15169 | mov [cyclesRemaining], edi |
||
15170 | mov [_z80af], ax ; Store AF |
||
15171 | mov al, ch ; And our data to write |
||
15172 | mov edi, [_z80MemWrite] ; Point to the write array |
||
15173 | |||
15174 | checkLoop279: |
||
15175 | cmp [edi], word 0ffffh ; End of our list? |
||
15176 | je memoryWrite279 ; Yes - go write it! |
||
15177 | cmp dx, [edi] ; Are we smaller? |
||
15178 | jb nextAddr279 ; Yes... go to the next addr |
||
15179 | cmp dx, [edi+4] ; Are we smaller? |
||
15180 | jbe callRoutine279 ; If not, go call it! |
||
15181 | |||
15182 | nextAddr279: |
||
15183 | add edi, 10h ; Next structure, please |
||
15184 | jmp short checkLoop279 |
||
15185 | |||
15186 | callRoutine279: |
||
15187 | call WriteMemoryByte ; Go write the data! |
||
15188 | jmp short WriteMacroExit279 |
||
15189 | memoryWrite279: |
||
15190 | mov [ebp + edx], ch |
||
15191 | mov ax, [_z80af] ; Get our accumulator and flags |
||
15192 | WriteMacroExit279: |
||
15193 | mov edi, [cyclesRemaining] |
||
15194 | xor edx, edx |
||
15195 | sub edi, byte 19 |
||
15196 | js near noMoreExec |
||
15197 | mov dl, byte [esi] ; Get our next instruction |
||
15198 | inc esi ; Increment PC |
||
15199 | jmp dword [z80regular+edx*4] |
||
15200 | |||
15201 | |||
15202 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15203 | |||
15204 | FDInst71: |
||
15205 | mov dl, [esi] ; Fetch our offset |
||
15206 | inc esi ; Move past the offset |
||
15207 | or dl, dl ; Is this bad boy signed? |
||
15208 | jns notSigned280 ; Nope! |
||
15209 | dec dh ; Make it FFable |
||
15210 | notSigned280: |
||
15211 | add dx, [_z80iy] ; Our offset! |
||
15212 | mov [cyclesRemaining], edi |
||
15213 | mov [_z80af], ax ; Store AF |
||
15214 | mov al, cl ; And our data to write |
||
15215 | mov edi, [_z80MemWrite] ; Point to the write array |
||
15216 | |||
15217 | checkLoop281: |
||
15218 | cmp [edi], word 0ffffh ; End of our list? |
||
15219 | je memoryWrite281 ; Yes - go write it! |
||
15220 | cmp dx, [edi] ; Are we smaller? |
||
15221 | jb nextAddr281 ; Yes... go to the next addr |
||
15222 | cmp dx, [edi+4] ; Are we smaller? |
||
15223 | jbe callRoutine281 ; If not, go call it! |
||
15224 | |||
15225 | nextAddr281: |
||
15226 | add edi, 10h ; Next structure, please |
||
15227 | jmp short checkLoop281 |
||
15228 | |||
15229 | callRoutine281: |
||
15230 | call WriteMemoryByte ; Go write the data! |
||
15231 | jmp short WriteMacroExit281 |
||
15232 | memoryWrite281: |
||
15233 | mov [ebp + edx], cl |
||
15234 | mov ax, [_z80af] ; Get our accumulator and flags |
||
15235 | WriteMacroExit281: |
||
15236 | mov edi, [cyclesRemaining] |
||
15237 | xor edx, edx |
||
15238 | sub edi, byte 19 |
||
15239 | js near noMoreExec |
||
15240 | mov dl, byte [esi] ; Get our next instruction |
||
15241 | inc esi ; Increment PC |
||
15242 | jmp dword [z80regular+edx*4] |
||
15243 | |||
15244 | |||
15245 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15246 | |||
15247 | FDInst72: |
||
15248 | mov dl, [esi] ; Fetch our offset |
||
15249 | inc esi ; Move past the offset |
||
15250 | or dl, dl ; Is this bad boy signed? |
||
15251 | jns notSigned282 ; Nope! |
||
15252 | dec dh ; Make it FFable |
||
15253 | notSigned282: |
||
15254 | add dx, [_z80iy] ; Our offset! |
||
15255 | mov [cyclesRemaining], edi |
||
15256 | mov [_z80af], ax ; Store AF |
||
15257 | mov al, byte [_z80de + 1] ; And our data to write |
||
15258 | mov edi, [_z80MemWrite] ; Point to the write array |
||
15259 | |||
15260 | checkLoop283: |
||
15261 | cmp [edi], word 0ffffh ; End of our list? |
||
15262 | je memoryWrite283 ; Yes - go write it! |
||
15263 | cmp dx, [edi] ; Are we smaller? |
||
15264 | jb nextAddr283 ; Yes... go to the next addr |
||
15265 | cmp dx, [edi+4] ; Are we smaller? |
||
15266 | jbe callRoutine283 ; If not, go call it! |
||
15267 | |||
15268 | nextAddr283: |
||
15269 | add edi, 10h ; Next structure, please |
||
15270 | jmp short checkLoop283 |
||
15271 | |||
15272 | callRoutine283: |
||
15273 | call WriteMemoryByte ; Go write the data! |
||
15274 | jmp short WriteMacroExit283 |
||
15275 | memoryWrite283: |
||
15276 | mov edi, edx |
||
15277 | mov dl, byte [_z80de + 1] |
||
15278 | mov [ebp + edi], dl |
||
15279 | mov edx, edi |
||
15280 | mov ax, [_z80af] ; Get our accumulator and flags |
||
15281 | WriteMacroExit283: |
||
15282 | mov edi, [cyclesRemaining] |
||
15283 | xor edx, edx |
||
15284 | sub edi, byte 19 |
||
15285 | js near noMoreExec |
||
15286 | mov dl, byte [esi] ; Get our next instruction |
||
15287 | inc esi ; Increment PC |
||
15288 | jmp dword [z80regular+edx*4] |
||
15289 | |||
15290 | |||
15291 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15292 | |||
15293 | FDInst73: |
||
15294 | mov dl, [esi] ; Fetch our offset |
||
15295 | inc esi ; Move past the offset |
||
15296 | or dl, dl ; Is this bad boy signed? |
||
15297 | jns notSigned284 ; Nope! |
||
15298 | dec dh ; Make it FFable |
||
15299 | notSigned284: |
||
15300 | add dx, [_z80iy] ; Our offset! |
||
15301 | mov [cyclesRemaining], edi |
||
15302 | mov [_z80af], ax ; Store AF |
||
15303 | mov al, byte [_z80de] ; And our data to write |
||
15304 | mov edi, [_z80MemWrite] ; Point to the write array |
||
15305 | |||
15306 | checkLoop285: |
||
15307 | cmp [edi], word 0ffffh ; End of our list? |
||
15308 | je memoryWrite285 ; Yes - go write it! |
||
15309 | cmp dx, [edi] ; Are we smaller? |
||
15310 | jb nextAddr285 ; Yes... go to the next addr |
||
15311 | cmp dx, [edi+4] ; Are we smaller? |
||
15312 | jbe callRoutine285 ; If not, go call it! |
||
15313 | |||
15314 | nextAddr285: |
||
15315 | add edi, 10h ; Next structure, please |
||
15316 | jmp short checkLoop285 |
||
15317 | |||
15318 | callRoutine285: |
||
15319 | call WriteMemoryByte ; Go write the data! |
||
15320 | jmp short WriteMacroExit285 |
||
15321 | memoryWrite285: |
||
15322 | mov edi, edx |
||
15323 | mov dl, byte [_z80de] |
||
15324 | mov [ebp + edi], dl |
||
15325 | mov edx, edi |
||
15326 | mov ax, [_z80af] ; Get our accumulator and flags |
||
15327 | WriteMacroExit285: |
||
15328 | mov edi, [cyclesRemaining] |
||
15329 | xor edx, edx |
||
15330 | sub edi, byte 19 |
||
15331 | js near noMoreExec |
||
15332 | mov dl, byte [esi] ; Get our next instruction |
||
15333 | inc esi ; Increment PC |
||
15334 | jmp dword [z80regular+edx*4] |
||
15335 | |||
15336 | |||
15337 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15338 | |||
15339 | FDInst74: |
||
15340 | mov dl, [esi] ; Fetch our offset |
||
15341 | inc esi ; Move past the offset |
||
15342 | or dl, dl ; Is this bad boy signed? |
||
15343 | jns notSigned286 ; Nope! |
||
15344 | dec dh ; Make it FFable |
||
15345 | notSigned286: |
||
15346 | add dx, [_z80iy] ; Our offset! |
||
15347 | mov [cyclesRemaining], edi |
||
15348 | mov [_z80af], ax ; Store AF |
||
15349 | mov al, bh ; And our data to write |
||
15350 | mov edi, [_z80MemWrite] ; Point to the write array |
||
15351 | |||
15352 | checkLoop287: |
||
15353 | cmp [edi], word 0ffffh ; End of our list? |
||
15354 | je memoryWrite287 ; Yes - go write it! |
||
15355 | cmp dx, [edi] ; Are we smaller? |
||
15356 | jb nextAddr287 ; Yes... go to the next addr |
||
15357 | cmp dx, [edi+4] ; Are we smaller? |
||
15358 | jbe callRoutine287 ; If not, go call it! |
||
15359 | |||
15360 | nextAddr287: |
||
15361 | add edi, 10h ; Next structure, please |
||
15362 | jmp short checkLoop287 |
||
15363 | |||
15364 | callRoutine287: |
||
15365 | call WriteMemoryByte ; Go write the data! |
||
15366 | jmp short WriteMacroExit287 |
||
15367 | memoryWrite287: |
||
15368 | mov [ebp + edx], bh |
||
15369 | mov ax, [_z80af] ; Get our accumulator and flags |
||
15370 | WriteMacroExit287: |
||
15371 | mov edi, [cyclesRemaining] |
||
15372 | xor edx, edx |
||
15373 | sub edi, byte 19 |
||
15374 | js near noMoreExec |
||
15375 | mov dl, byte [esi] ; Get our next instruction |
||
15376 | inc esi ; Increment PC |
||
15377 | jmp dword [z80regular+edx*4] |
||
15378 | |||
15379 | |||
15380 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15381 | |||
15382 | FDInst75: |
||
15383 | mov dl, [esi] ; Fetch our offset |
||
15384 | inc esi ; Move past the offset |
||
15385 | or dl, dl ; Is this bad boy signed? |
||
15386 | jns notSigned288 ; Nope! |
||
15387 | dec dh ; Make it FFable |
||
15388 | notSigned288: |
||
15389 | add dx, [_z80iy] ; Our offset! |
||
15390 | mov [cyclesRemaining], edi |
||
15391 | mov [_z80af], ax ; Store AF |
||
15392 | mov al, bl ; And our data to write |
||
15393 | mov edi, [_z80MemWrite] ; Point to the write array |
||
15394 | |||
15395 | checkLoop289: |
||
15396 | cmp [edi], word 0ffffh ; End of our list? |
||
15397 | je memoryWrite289 ; Yes - go write it! |
||
15398 | cmp dx, [edi] ; Are we smaller? |
||
15399 | jb nextAddr289 ; Yes... go to the next addr |
||
15400 | cmp dx, [edi+4] ; Are we smaller? |
||
15401 | jbe callRoutine289 ; If not, go call it! |
||
15402 | |||
15403 | nextAddr289: |
||
15404 | add edi, 10h ; Next structure, please |
||
15405 | jmp short checkLoop289 |
||
15406 | |||
15407 | callRoutine289: |
||
15408 | call WriteMemoryByte ; Go write the data! |
||
15409 | jmp short WriteMacroExit289 |
||
15410 | memoryWrite289: |
||
15411 | mov [ebp + edx], bl |
||
15412 | mov ax, [_z80af] ; Get our accumulator and flags |
||
15413 | WriteMacroExit289: |
||
15414 | mov edi, [cyclesRemaining] |
||
15415 | xor edx, edx |
||
15416 | sub edi, byte 19 |
||
15417 | js near noMoreExec |
||
15418 | mov dl, byte [esi] ; Get our next instruction |
||
15419 | inc esi ; Increment PC |
||
15420 | jmp dword [z80regular+edx*4] |
||
15421 | |||
15422 | |||
15423 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15424 | |||
15425 | FDInst77: |
||
15426 | mov dl, [esi] ; Fetch our offset |
||
15427 | inc esi ; Move past the offset |
||
15428 | or dl, dl ; Is this bad boy signed? |
||
15429 | jns notSigned290 ; Nope! |
||
15430 | dec dh ; Make it FFable |
||
15431 | notSigned290: |
||
15432 | add dx, [_z80iy] ; Our offset! |
||
15433 | mov [cyclesRemaining], edi |
||
15434 | mov [_z80af], ax ; Store AF |
||
15435 | mov edi, [_z80MemWrite] ; Point to the write array |
||
15436 | |||
15437 | checkLoop291: |
||
15438 | cmp [edi], word 0ffffh ; End of our list? |
||
15439 | je memoryWrite291 ; Yes - go write it! |
||
15440 | cmp dx, [edi] ; Are we smaller? |
||
15441 | jb nextAddr291 ; Yes... go to the next addr |
||
15442 | cmp dx, [edi+4] ; Are we smaller? |
||
15443 | jbe callRoutine291 ; If not, go call it! |
||
15444 | |||
15445 | nextAddr291: |
||
15446 | add edi, 10h ; Next structure, please |
||
15447 | jmp short checkLoop291 |
||
15448 | |||
15449 | callRoutine291: |
||
15450 | call WriteMemoryByte ; Go write the data! |
||
15451 | jmp short WriteMacroExit291 |
||
15452 | memoryWrite291: |
||
15453 | mov [ebp + edx], al |
||
15454 | mov ax, [_z80af] ; Get our accumulator and flags |
||
15455 | WriteMacroExit291: |
||
15456 | mov edi, [cyclesRemaining] |
||
15457 | xor edx, edx |
||
15458 | sub edi, byte 19 |
||
15459 | js near noMoreExec |
||
15460 | mov dl, byte [esi] ; Get our next instruction |
||
15461 | inc esi ; Increment PC |
||
15462 | jmp dword [z80regular+edx*4] |
||
15463 | |||
15464 | |||
15465 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15466 | |||
15467 | FDInst7c: |
||
15468 | mov al, byte [_z80iy + 1] |
||
15469 | xor edx, edx |
||
15470 | sub edi, byte 9 |
||
15471 | js near noMoreExec |
||
15472 | mov dl, byte [esi] ; Get our next instruction |
||
15473 | inc esi ; Increment PC |
||
15474 | jmp dword [z80regular+edx*4] |
||
15475 | |||
15476 | |||
15477 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15478 | |||
15479 | FDInst7d: |
||
15480 | mov al, byte [_z80iy + 0] |
||
15481 | xor edx, edx |
||
15482 | sub edi, byte 9 |
||
15483 | js near noMoreExec |
||
15484 | mov dl, byte [esi] ; Get our next instruction |
||
15485 | inc esi ; Increment PC |
||
15486 | jmp dword [z80regular+edx*4] |
||
15487 | |||
15488 | |||
15489 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15490 | |||
15491 | FDInst7e: |
||
15492 | mov dl, [esi] ; Fetch our offset |
||
15493 | inc esi ; Move past the offset |
||
15494 | or dl, dl ; Is this bad boy signed? |
||
15495 | jns notSigned292 ; Nope! |
||
15496 | dec dh ; Make it FFable |
||
15497 | notSigned292: |
||
15498 | add dx, [_z80iy] ; Our offset! |
||
15499 | mov [cyclesRemaining], edi |
||
15500 | mov edi, [_z80MemRead] ; Point to the read array |
||
15501 | |||
15502 | checkLoop293: |
||
15503 | cmp [edi], word 0ffffh ; End of the list? |
||
15504 | je memoryRead293 |
||
15505 | cmp edx, [edi] ; Are we smaller? |
||
15506 | jb nextAddr293 ; Yes, go to the next address |
||
15507 | cmp edx, [edi+4] ; Are we bigger? |
||
15508 | jbe callRoutine293 |
||
15509 | |||
15510 | nextAddr293: |
||
15511 | add edi, 10h ; Next structure! |
||
15512 | jmp short checkLoop293 |
||
15513 | |||
15514 | callRoutine293: |
||
15515 | call ReadMemoryByte ; Standard read routine |
||
15516 | mov [_z80af], al ; Save our new accumulator |
||
15517 | mov ax, [_z80af] ; Get our AF back |
||
15518 | jmp short readExit293 |
||
15519 | |||
15520 | memoryRead293: |
||
15521 | mov al, [ebp + edx] ; Get our data |
||
15522 | |||
15523 | readExit293: |
||
15524 | mov edi, [cyclesRemaining] |
||
15525 | xor edx, edx ; Make sure we don't hose things |
||
15526 | sub edi, byte 19 |
||
15527 | js near noMoreExec |
||
15528 | mov dl, byte [esi] ; Get our next instruction |
||
15529 | inc esi ; Increment PC |
||
15530 | jmp dword [z80regular+edx*4] |
||
15531 | |||
15532 | |||
15533 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15534 | |||
15535 | FDInst84: |
||
15536 | mov dl, byte [_z80iy + 1] |
||
15537 | sahf ; Store our flags in x86 flag reg |
||
15538 | add al, dl |
||
15539 | lahf ; Get flags back into AH |
||
15540 | seto dl |
||
15541 | and ah, 0fbh ; Knock out parity/overflow |
||
15542 | shl dl, 2 |
||
15543 | or ah, dl |
||
15544 | and ah, 0fdh ; No N! |
||
15545 | sub edi, byte 9 |
||
15546 | js near noMoreExec |
||
15547 | mov dl, byte [esi] ; Get our next instruction |
||
15548 | inc esi ; Increment PC |
||
15549 | jmp dword [z80regular+edx*4] |
||
15550 | |||
15551 | |||
15552 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15553 | |||
15554 | FDInst85: |
||
15555 | mov dl, byte [_z80iy] |
||
15556 | sahf ; Store our flags in x86 flag reg |
||
15557 | add al, dl |
||
15558 | lahf ; Get flags back into AH |
||
15559 | seto dl |
||
15560 | and ah, 0fbh ; Knock out parity/overflow |
||
15561 | shl dl, 2 |
||
15562 | or ah, dl |
||
15563 | and ah, 0fdh ; No N! |
||
15564 | sub edi, byte 9 |
||
15565 | js near noMoreExec |
||
15566 | mov dl, byte [esi] ; Get our next instruction |
||
15567 | inc esi ; Increment PC |
||
15568 | jmp dword [z80regular+edx*4] |
||
15569 | |||
15570 | |||
15571 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15572 | |||
15573 | FDInst86: |
||
15574 | mov dl, [esi] ; Fetch our offset |
||
15575 | inc esi ; Move past the offset |
||
15576 | or dl, dl ; Is this bad boy signed? |
||
15577 | jns notSigned295 ; Nope! |
||
15578 | dec dh ; Make it FFable |
||
15579 | notSigned295: |
||
15580 | add dx, [_z80iy] ; Our offset! |
||
15581 | mov [cyclesRemaining], edi |
||
15582 | mov edi, [_z80MemRead] ; Point to the read array |
||
15583 | |||
15584 | checkLoop296: |
||
15585 | cmp [edi], word 0ffffh ; End of the list? |
||
15586 | je memoryRead296 |
||
15587 | cmp edx, [edi] ; Are we smaller? |
||
15588 | jb nextAddr296 ; Yes, go to the next address |
||
15589 | cmp edx, [edi+4] ; Are we bigger? |
||
15590 | jbe callRoutine296 |
||
15591 | |||
15592 | nextAddr296: |
||
15593 | add edi, 10h ; Next structure! |
||
15594 | jmp short checkLoop296 |
||
15595 | |||
15596 | callRoutine296: |
||
15597 | call ReadMemoryByte ; Standard read routine |
||
15598 | mov dl, al ; Put our returned value here |
||
15599 | mov ax, [_z80af] ; Get our AF back |
||
15600 | jmp short readExit296 |
||
15601 | |||
15602 | memoryRead296: |
||
15603 | mov dl, [ebp + edx] ; Get our data |
||
15604 | |||
15605 | readExit296: |
||
15606 | mov edi, [cyclesRemaining] |
||
15607 | sahf |
||
15608 | add al, dl |
||
15609 | lahf |
||
15610 | seto dl |
||
15611 | and ah, 0fbh ; Knock out parity/overflow |
||
15612 | shl dl, 2 |
||
15613 | or ah, dl |
||
15614 | and ah, 0fdh ; Knock out negative |
||
15615 | xor edx, edx |
||
15616 | sub edi, byte 19 |
||
15617 | js near noMoreExec |
||
15618 | mov dl, byte [esi] ; Get our next instruction |
||
15619 | inc esi ; Increment PC |
||
15620 | jmp dword [z80regular+edx*4] |
||
15621 | |||
15622 | |||
15623 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15624 | |||
15625 | FDInst8c: |
||
15626 | mov dl, byte [_z80iy + 1] |
||
15627 | sahf ; Store our flags in x86 flag reg |
||
15628 | adc al, dl |
||
15629 | lahf ; Get flags back into AH |
||
15630 | seto dl |
||
15631 | and ah, 0fbh ; Knock out parity/overflow |
||
15632 | shl dl, 2 |
||
15633 | or ah, dl |
||
15634 | and ah, 0fdh ; No N! |
||
15635 | sub edi, byte 9 |
||
15636 | js near noMoreExec |
||
15637 | mov dl, byte [esi] ; Get our next instruction |
||
15638 | inc esi ; Increment PC |
||
15639 | jmp dword [z80regular+edx*4] |
||
15640 | |||
15641 | |||
15642 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15643 | |||
15644 | FDInst8d: |
||
15645 | mov dl, byte [_z80iy] |
||
15646 | sahf ; Store our flags in x86 flag reg |
||
15647 | adc al, dl |
||
15648 | lahf ; Get flags back into AH |
||
15649 | seto dl |
||
15650 | and ah, 0fbh ; Knock out parity/overflow |
||
15651 | shl dl, 2 |
||
15652 | or ah, dl |
||
15653 | and ah, 0fdh ; No N! |
||
15654 | sub edi, byte 9 |
||
15655 | js near noMoreExec |
||
15656 | mov dl, byte [esi] ; Get our next instruction |
||
15657 | inc esi ; Increment PC |
||
15658 | jmp dword [z80regular+edx*4] |
||
15659 | |||
15660 | |||
15661 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15662 | |||
15663 | FDInst8e: |
||
15664 | mov dl, [esi] ; Fetch our offset |
||
15665 | inc esi ; Move past the offset |
||
15666 | or dl, dl ; Is this bad boy signed? |
||
15667 | jns notSigned297 ; Nope! |
||
15668 | dec dh ; Make it FFable |
||
15669 | notSigned297: |
||
15670 | add dx, [_z80iy] ; Our offset! |
||
15671 | mov [cyclesRemaining], edi |
||
15672 | mov edi, [_z80MemRead] ; Point to the read array |
||
15673 | |||
15674 | checkLoop298: |
||
15675 | cmp [edi], word 0ffffh ; End of the list? |
||
15676 | je memoryRead298 |
||
15677 | cmp edx, [edi] ; Are we smaller? |
||
15678 | jb nextAddr298 ; Yes, go to the next address |
||
15679 | cmp edx, [edi+4] ; Are we bigger? |
||
15680 | jbe callRoutine298 |
||
15681 | |||
15682 | nextAddr298: |
||
15683 | add edi, 10h ; Next structure! |
||
15684 | jmp short checkLoop298 |
||
15685 | |||
15686 | callRoutine298: |
||
15687 | call ReadMemoryByte ; Standard read routine |
||
15688 | mov dl, al ; Put our returned value here |
||
15689 | mov ax, [_z80af] ; Get our AF back |
||
15690 | jmp short readExit298 |
||
15691 | |||
15692 | memoryRead298: |
||
15693 | mov dl, [ebp + edx] ; Get our data |
||
15694 | |||
15695 | readExit298: |
||
15696 | mov edi, [cyclesRemaining] |
||
15697 | sahf |
||
15698 | adc al, dl |
||
15699 | lahf |
||
15700 | seto dl |
||
15701 | and ah, 0fbh ; Knock out parity/overflow |
||
15702 | shl dl, 2 |
||
15703 | or ah, dl |
||
15704 | and ah, 0fdh ; Knock out negative |
||
15705 | xor edx, edx |
||
15706 | sub edi, byte 19 |
||
15707 | js near noMoreExec |
||
15708 | mov dl, byte [esi] ; Get our next instruction |
||
15709 | inc esi ; Increment PC |
||
15710 | jmp dword [z80regular+edx*4] |
||
15711 | |||
15712 | |||
15713 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15714 | |||
15715 | FDInst94: |
||
15716 | mov dl, byte [_z80iy + 1] |
||
15717 | sahf ; Store our flags in x86 flag reg |
||
15718 | sub al, dl |
||
15719 | lahf ; Get flags back into AH |
||
15720 | seto dl |
||
15721 | and ah, 0fbh ; Knock out parity/overflow |
||
15722 | shl dl, 2 |
||
15723 | or ah, dl |
||
15724 | or ah, 02h ; N Gets set! |
||
15725 | sub edi, byte 9 |
||
15726 | js near noMoreExec |
||
15727 | mov dl, byte [esi] ; Get our next instruction |
||
15728 | inc esi ; Increment PC |
||
15729 | jmp dword [z80regular+edx*4] |
||
15730 | |||
15731 | |||
15732 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15733 | |||
15734 | FDInst95: |
||
15735 | mov dl, byte [_z80iy] |
||
15736 | sahf ; Store our flags in x86 flag reg |
||
15737 | sub al, dl |
||
15738 | lahf ; Get flags back into AH |
||
15739 | seto dl |
||
15740 | and ah, 0fbh ; Knock out parity/overflow |
||
15741 | shl dl, 2 |
||
15742 | or ah, dl |
||
15743 | or ah, 02h ; N Gets set! |
||
15744 | sub edi, byte 9 |
||
15745 | js near noMoreExec |
||
15746 | mov dl, byte [esi] ; Get our next instruction |
||
15747 | inc esi ; Increment PC |
||
15748 | jmp dword [z80regular+edx*4] |
||
15749 | |||
15750 | |||
15751 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15752 | |||
15753 | FDInst96: |
||
15754 | mov dl, [esi] ; Fetch our offset |
||
15755 | inc esi ; Move past the offset |
||
15756 | or dl, dl ; Is this bad boy signed? |
||
15757 | jns notSigned299 ; Nope! |
||
15758 | dec dh ; Make it FFable |
||
15759 | notSigned299: |
||
15760 | add dx, [_z80iy] ; Our offset! |
||
15761 | mov [cyclesRemaining], edi |
||
15762 | mov edi, [_z80MemRead] ; Point to the read array |
||
15763 | |||
15764 | checkLoop300: |
||
15765 | cmp [edi], word 0ffffh ; End of the list? |
||
15766 | je memoryRead300 |
||
15767 | cmp edx, [edi] ; Are we smaller? |
||
15768 | jb nextAddr300 ; Yes, go to the next address |
||
15769 | cmp edx, [edi+4] ; Are we bigger? |
||
15770 | jbe callRoutine300 |
||
15771 | |||
15772 | nextAddr300: |
||
15773 | add edi, 10h ; Next structure! |
||
15774 | jmp short checkLoop300 |
||
15775 | |||
15776 | callRoutine300: |
||
15777 | call ReadMemoryByte ; Standard read routine |
||
15778 | mov dl, al ; Put our returned value here |
||
15779 | mov ax, [_z80af] ; Get our AF back |
||
15780 | jmp short readExit300 |
||
15781 | |||
15782 | memoryRead300: |
||
15783 | mov dl, [ebp + edx] ; Get our data |
||
15784 | |||
15785 | readExit300: |
||
15786 | mov edi, [cyclesRemaining] |
||
15787 | sahf |
||
15788 | sub al, dl |
||
15789 | lahf |
||
15790 | seto dl |
||
15791 | and ah, 0fbh ; Knock out parity/overflow |
||
15792 | shl dl, 2 |
||
15793 | or ah, dl |
||
15794 | or ah, 02h ; Set negative |
||
15795 | xor edx, edx |
||
15796 | sub edi, byte 19 |
||
15797 | js near noMoreExec |
||
15798 | mov dl, byte [esi] ; Get our next instruction |
||
15799 | inc esi ; Increment PC |
||
15800 | jmp dword [z80regular+edx*4] |
||
15801 | |||
15802 | |||
15803 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15804 | |||
15805 | FDInst9c: |
||
15806 | mov dl, byte [_z80iy + 1] |
||
15807 | sahf ; Store our flags in x86 flag reg |
||
15808 | sbb al, dl |
||
15809 | lahf ; Get flags back into AH |
||
15810 | seto dl |
||
15811 | and ah, 0fbh ; Knock out parity/overflow |
||
15812 | shl dl, 2 |
||
15813 | or ah, dl |
||
15814 | or ah, 02h ; N Gets set! |
||
15815 | sub edi, byte 9 |
||
15816 | js near noMoreExec |
||
15817 | mov dl, byte [esi] ; Get our next instruction |
||
15818 | inc esi ; Increment PC |
||
15819 | jmp dword [z80regular+edx*4] |
||
15820 | |||
15821 | |||
15822 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15823 | |||
15824 | FDInst9d: |
||
15825 | mov dl, byte [_z80iy] |
||
15826 | sahf ; Store our flags in x86 flag reg |
||
15827 | sbb al, dl |
||
15828 | lahf ; Get flags back into AH |
||
15829 | seto dl |
||
15830 | and ah, 0fbh ; Knock out parity/overflow |
||
15831 | shl dl, 2 |
||
15832 | or ah, dl |
||
15833 | or ah, 02h ; N Gets set! |
||
15834 | sub edi, byte 9 |
||
15835 | js near noMoreExec |
||
15836 | mov dl, byte [esi] ; Get our next instruction |
||
15837 | inc esi ; Increment PC |
||
15838 | jmp dword [z80regular+edx*4] |
||
15839 | |||
15840 | |||
15841 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15842 | |||
15843 | FDInst9e: |
||
15844 | mov dl, [esi] ; Fetch our offset |
||
15845 | inc esi ; Move past the offset |
||
15846 | or dl, dl ; Is this bad boy signed? |
||
15847 | jns notSigned301 ; Nope! |
||
15848 | dec dh ; Make it FFable |
||
15849 | notSigned301: |
||
15850 | add dx, [_z80iy] ; Our offset! |
||
15851 | mov [cyclesRemaining], edi |
||
15852 | mov edi, [_z80MemRead] ; Point to the read array |
||
15853 | |||
15854 | checkLoop302: |
||
15855 | cmp [edi], word 0ffffh ; End of the list? |
||
15856 | je memoryRead302 |
||
15857 | cmp edx, [edi] ; Are we smaller? |
||
15858 | jb nextAddr302 ; Yes, go to the next address |
||
15859 | cmp edx, [edi+4] ; Are we bigger? |
||
15860 | jbe callRoutine302 |
||
15861 | |||
15862 | nextAddr302: |
||
15863 | add edi, 10h ; Next structure! |
||
15864 | jmp short checkLoop302 |
||
15865 | |||
15866 | callRoutine302: |
||
15867 | call ReadMemoryByte ; Standard read routine |
||
15868 | mov dl, al ; Put our returned value here |
||
15869 | mov ax, [_z80af] ; Get our AF back |
||
15870 | jmp short readExit302 |
||
15871 | |||
15872 | memoryRead302: |
||
15873 | mov dl, [ebp + edx] ; Get our data |
||
15874 | |||
15875 | readExit302: |
||
15876 | mov edi, [cyclesRemaining] |
||
15877 | sahf |
||
15878 | sbb al, dl |
||
15879 | lahf |
||
15880 | seto dl |
||
15881 | and ah, 0fbh ; Knock out parity/overflow |
||
15882 | shl dl, 2 |
||
15883 | or ah, dl |
||
15884 | or ah, 02h ; Set negative |
||
15885 | xor edx, edx |
||
15886 | sub edi, byte 19 |
||
15887 | js near noMoreExec |
||
15888 | mov dl, byte [esi] ; Get our next instruction |
||
15889 | inc esi ; Increment PC |
||
15890 | jmp dword [z80regular+edx*4] |
||
15891 | |||
15892 | |||
15893 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15894 | |||
15895 | FDInsta4: |
||
15896 | mov dl, byte [_z80iy + 1] |
||
15897 | sahf ; Store our flags in x86 flag reg |
||
15898 | and al, dl |
||
15899 | lahf ; Get flags back into AH |
||
15900 | and ah, 0ech ; Only these flags matter! |
||
15901 | or ah, 010h ; Half carry gets set |
||
15902 | sub edi, byte 9 |
||
15903 | js near noMoreExec |
||
15904 | mov dl, byte [esi] ; Get our next instruction |
||
15905 | inc esi ; Increment PC |
||
15906 | jmp dword [z80regular+edx*4] |
||
15907 | |||
15908 | |||
15909 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15910 | |||
15911 | FDInsta5: |
||
15912 | mov dl, byte [_z80iy] |
||
15913 | sahf ; Store our flags in x86 flag reg |
||
15914 | and al, dl |
||
15915 | lahf ; Get flags back into AH |
||
15916 | and ah, 0ech ; Only these flags matter! |
||
15917 | or ah, 010h ; Half carry gets set |
||
15918 | sub edi, byte 9 |
||
15919 | js near noMoreExec |
||
15920 | mov dl, byte [esi] ; Get our next instruction |
||
15921 | inc esi ; Increment PC |
||
15922 | jmp dword [z80regular+edx*4] |
||
15923 | |||
15924 | |||
15925 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15926 | |||
15927 | FDInsta6: |
||
15928 | mov dl, [esi] ; Fetch our offset |
||
15929 | inc esi ; Move past the offset |
||
15930 | or dl, dl ; Is this bad boy signed? |
||
15931 | jns notSigned303 ; Nope! |
||
15932 | dec dh ; Make it FFable |
||
15933 | notSigned303: |
||
15934 | add dx, [_z80iy] ; Our offset! |
||
15935 | mov [cyclesRemaining], edi |
||
15936 | mov edi, [_z80MemRead] ; Point to the read array |
||
15937 | |||
15938 | checkLoop304: |
||
15939 | cmp [edi], word 0ffffh ; End of the list? |
||
15940 | je memoryRead304 |
||
15941 | cmp edx, [edi] ; Are we smaller? |
||
15942 | jb nextAddr304 ; Yes, go to the next address |
||
15943 | cmp edx, [edi+4] ; Are we bigger? |
||
15944 | jbe callRoutine304 |
||
15945 | |||
15946 | nextAddr304: |
||
15947 | add edi, 10h ; Next structure! |
||
15948 | jmp short checkLoop304 |
||
15949 | |||
15950 | callRoutine304: |
||
15951 | call ReadMemoryByte ; Standard read routine |
||
15952 | mov dl, al ; Put our returned value here |
||
15953 | mov ax, [_z80af] ; Get our AF back |
||
15954 | jmp short readExit304 |
||
15955 | |||
15956 | memoryRead304: |
||
15957 | mov dl, [ebp + edx] ; Get our data |
||
15958 | |||
15959 | readExit304: |
||
15960 | mov edi, [cyclesRemaining] |
||
15961 | sahf |
||
15962 | and al, dl |
||
15963 | lahf |
||
15964 | and ah,0fch ; Knock out N & C |
||
15965 | or ah, 10h ; Set half carry |
||
15966 | xor edx, edx |
||
15967 | sub edi, byte 19 |
||
15968 | js near noMoreExec |
||
15969 | mov dl, byte [esi] ; Get our next instruction |
||
15970 | inc esi ; Increment PC |
||
15971 | jmp dword [z80regular+edx*4] |
||
15972 | |||
15973 | |||
15974 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15975 | |||
15976 | FDInstac: |
||
15977 | mov dl, byte [_z80iy + 1] |
||
15978 | sahf ; Store our flags in x86 flag reg |
||
15979 | xor al, dl |
||
15980 | lahf ; Get flags back into AH |
||
15981 | and ah, 0ech ; Only these flags matter! |
||
15982 | sub edi, byte 9 |
||
15983 | js near noMoreExec |
||
15984 | mov dl, byte [esi] ; Get our next instruction |
||
15985 | inc esi ; Increment PC |
||
15986 | jmp dword [z80regular+edx*4] |
||
15987 | |||
15988 | |||
15989 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
15990 | |||
15991 | FDInstad: |
||
15992 | mov dl, byte [_z80iy] |
||
15993 | sahf ; Store our flags in x86 flag reg |
||
15994 | xor al, dl |
||
15995 | lahf ; Get flags back into AH |
||
15996 | and ah, 0ech ; Only these flags matter! |
||
15997 | sub edi, byte 9 |
||
15998 | js near noMoreExec |
||
15999 | mov dl, byte [esi] ; Get our next instruction |
||
16000 | inc esi ; Increment PC |
||
16001 | jmp dword [z80regular+edx*4] |
||
16002 | |||
16003 | |||
16004 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16005 | |||
16006 | FDInstae: |
||
16007 | mov dl, [esi] ; Fetch our offset |
||
16008 | inc esi ; Move past the offset |
||
16009 | or dl, dl ; Is this bad boy signed? |
||
16010 | jns notSigned305 ; Nope! |
||
16011 | dec dh ; Make it FFable |
||
16012 | notSigned305: |
||
16013 | add dx, [_z80iy] ; Our offset! |
||
16014 | mov [cyclesRemaining], edi |
||
16015 | mov edi, [_z80MemRead] ; Point to the read array |
||
16016 | |||
16017 | checkLoop306: |
||
16018 | cmp [edi], word 0ffffh ; End of the list? |
||
16019 | je memoryRead306 |
||
16020 | cmp edx, [edi] ; Are we smaller? |
||
16021 | jb nextAddr306 ; Yes, go to the next address |
||
16022 | cmp edx, [edi+4] ; Are we bigger? |
||
16023 | jbe callRoutine306 |
||
16024 | |||
16025 | nextAddr306: |
||
16026 | add edi, 10h ; Next structure! |
||
16027 | jmp short checkLoop306 |
||
16028 | |||
16029 | callRoutine306: |
||
16030 | call ReadMemoryByte ; Standard read routine |
||
16031 | mov dl, al ; Put our returned value here |
||
16032 | mov ax, [_z80af] ; Get our AF back |
||
16033 | jmp short readExit306 |
||
16034 | |||
16035 | memoryRead306: |
||
16036 | mov dl, [ebp + edx] ; Get our data |
||
16037 | |||
16038 | readExit306: |
||
16039 | mov edi, [cyclesRemaining] |
||
16040 | sahf |
||
16041 | xor al, dl |
||
16042 | lahf |
||
16043 | and ah, 0ech ; Knock out H, N, and C |
||
16044 | xor edx, edx |
||
16045 | sub edi, byte 19 |
||
16046 | js near noMoreExec |
||
16047 | mov dl, byte [esi] ; Get our next instruction |
||
16048 | inc esi ; Increment PC |
||
16049 | jmp dword [z80regular+edx*4] |
||
16050 | |||
16051 | |||
16052 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16053 | |||
16054 | FDInstb4: |
||
16055 | mov dl, byte [_z80iy + 1] |
||
16056 | sahf ; Store our flags in x86 flag reg |
||
16057 | or al, dl |
||
16058 | lahf ; Get flags back into AH |
||
16059 | and ah, 0ech ; No H, N, or C |
||
16060 | and ah, 0ech ; No H, N, or C |
||
16061 | sub edi, byte 9 |
||
16062 | js near noMoreExec |
||
16063 | mov dl, byte [esi] ; Get our next instruction |
||
16064 | inc esi ; Increment PC |
||
16065 | jmp dword [z80regular+edx*4] |
||
16066 | |||
16067 | |||
16068 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16069 | |||
16070 | FDInstb5: |
||
16071 | mov dl, byte [_z80iy] |
||
16072 | sahf ; Store our flags in x86 flag reg |
||
16073 | or al, dl |
||
16074 | lahf ; Get flags back into AH |
||
16075 | and ah, 0ech ; No H, N, or C |
||
16076 | and ah, 0ech ; No H, N, or C |
||
16077 | sub edi, byte 9 |
||
16078 | js near noMoreExec |
||
16079 | mov dl, byte [esi] ; Get our next instruction |
||
16080 | inc esi ; Increment PC |
||
16081 | jmp dword [z80regular+edx*4] |
||
16082 | |||
16083 | |||
16084 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16085 | |||
16086 | FDInstb6: |
||
16087 | mov dl, [esi] ; Fetch our offset |
||
16088 | inc esi ; Move past the offset |
||
16089 | or dl, dl ; Is this bad boy signed? |
||
16090 | jns notSigned307 ; Nope! |
||
16091 | dec dh ; Make it FFable |
||
16092 | notSigned307: |
||
16093 | add dx, [_z80iy] ; Our offset! |
||
16094 | mov [cyclesRemaining], edi |
||
16095 | mov edi, [_z80MemRead] ; Point to the read array |
||
16096 | |||
16097 | checkLoop308: |
||
16098 | cmp [edi], word 0ffffh ; End of the list? |
||
16099 | je memoryRead308 |
||
16100 | cmp edx, [edi] ; Are we smaller? |
||
16101 | jb nextAddr308 ; Yes, go to the next address |
||
16102 | cmp edx, [edi+4] ; Are we bigger? |
||
16103 | jbe callRoutine308 |
||
16104 | |||
16105 | nextAddr308: |
||
16106 | add edi, 10h ; Next structure! |
||
16107 | jmp short checkLoop308 |
||
16108 | |||
16109 | callRoutine308: |
||
16110 | call ReadMemoryByte ; Standard read routine |
||
16111 | mov dl, al ; Put our returned value here |
||
16112 | mov ax, [_z80af] ; Get our AF back |
||
16113 | jmp short readExit308 |
||
16114 | |||
16115 | memoryRead308: |
||
16116 | mov dl, [ebp + edx] ; Get our data |
||
16117 | |||
16118 | readExit308: |
||
16119 | mov edi, [cyclesRemaining] |
||
16120 | sahf |
||
16121 | or al, dl |
||
16122 | lahf |
||
16123 | and ah, 0ech ; Knock out H, N, and C |
||
16124 | xor edx, edx |
||
16125 | sub edi, byte 19 |
||
16126 | js near noMoreExec |
||
16127 | mov dl, byte [esi] ; Get our next instruction |
||
16128 | inc esi ; Increment PC |
||
16129 | jmp dword [z80regular+edx*4] |
||
16130 | |||
16131 | |||
16132 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16133 | |||
16134 | FDInstbc: |
||
16135 | mov dl, byte [_z80iy + 1] |
||
16136 | sahf ; Store our flags in x86 flag reg |
||
16137 | cmp al, dl |
||
16138 | lahf ; Get flags back into AH |
||
16139 | seto dl |
||
16140 | and ah, 0fbh ; Knock out parity/overflow |
||
16141 | shl dl, 2 |
||
16142 | or ah, dl |
||
16143 | or ah, 02h ; Negative gets set on a compare |
||
16144 | sub edi, byte 9 |
||
16145 | js near noMoreExec |
||
16146 | mov dl, byte [esi] ; Get our next instruction |
||
16147 | inc esi ; Increment PC |
||
16148 | jmp dword [z80regular+edx*4] |
||
16149 | |||
16150 | |||
16151 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16152 | |||
16153 | FDInstbd: |
||
16154 | mov dl, byte [_z80iy] |
||
16155 | sahf ; Store our flags in x86 flag reg |
||
16156 | cmp al, dl |
||
16157 | lahf ; Get flags back into AH |
||
16158 | seto dl |
||
16159 | and ah, 0fbh ; Knock out parity/overflow |
||
16160 | shl dl, 2 |
||
16161 | or ah, dl |
||
16162 | or ah, 02h ; Negative gets set on a compare |
||
16163 | sub edi, byte 9 |
||
16164 | js near noMoreExec |
||
16165 | mov dl, byte [esi] ; Get our next instruction |
||
16166 | inc esi ; Increment PC |
||
16167 | jmp dword [z80regular+edx*4] |
||
16168 | |||
16169 | |||
16170 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16171 | |||
16172 | FDInstbe: |
||
16173 | mov dl, [esi] ; Fetch our offset |
||
16174 | inc esi ; Move past the offset |
||
16175 | or dl, dl ; Is this bad boy signed? |
||
16176 | jns notSigned309 ; Nope! |
||
16177 | dec dh ; Make it FFable |
||
16178 | notSigned309: |
||
16179 | add dx, [_z80iy] ; Our offset! |
||
16180 | mov [cyclesRemaining], edi |
||
16181 | mov edi, [_z80MemRead] ; Point to the read array |
||
16182 | |||
16183 | checkLoop310: |
||
16184 | cmp [edi], word 0ffffh ; End of the list? |
||
16185 | je memoryRead310 |
||
16186 | cmp edx, [edi] ; Are we smaller? |
||
16187 | jb nextAddr310 ; Yes, go to the next address |
||
16188 | cmp edx, [edi+4] ; Are we bigger? |
||
16189 | jbe callRoutine310 |
||
16190 | |||
16191 | nextAddr310: |
||
16192 | add edi, 10h ; Next structure! |
||
16193 | jmp short checkLoop310 |
||
16194 | |||
16195 | callRoutine310: |
||
16196 | call ReadMemoryByte ; Standard read routine |
||
16197 | mov dl, al ; Put our returned value here |
||
16198 | mov ax, [_z80af] ; Get our AF back |
||
16199 | jmp short readExit310 |
||
16200 | |||
16201 | memoryRead310: |
||
16202 | mov dl, [ebp + edx] ; Get our data |
||
16203 | |||
16204 | readExit310: |
||
16205 | mov edi, [cyclesRemaining] |
||
16206 | sahf |
||
16207 | cmp al, dl |
||
16208 | lahf |
||
16209 | seto dl |
||
16210 | and ah, 0fbh ; Knock out parity/overflow |
||
16211 | shl dl, 2 |
||
16212 | or ah, dl |
||
16213 | or ah, 02h ; Set negative |
||
16214 | xor edx, edx |
||
16215 | sub edi, byte 19 |
||
16216 | js near noMoreExec |
||
16217 | mov dl, byte [esi] ; Get our next instruction |
||
16218 | inc esi ; Increment PC |
||
16219 | jmp dword [z80regular+edx*4] |
||
16220 | |||
16221 | FDInstcb: |
||
16222 | mov dx, [esi] ; Get our instruction (and offset) |
||
16223 | add esi, 2 ; Increment our PC |
||
16224 | mov byte [_orgval], dl ; Store our value |
||
16225 | or dl, dl |
||
16226 | js notNeg311 |
||
16227 | mov byte [_orgval + 1], 00h; |
||
16228 | jmp short jumpHandler311 |
||
16229 | notNeg311: |
||
16230 | mov byte [_orgval + 1], 0ffh; It's negative |
||
16231 | jumpHandler311: |
||
16232 | shl ebx, 16 ; Save BX away |
||
16233 | mov bx, [_z80iy] |
||
16234 | add [_orgval], bx |
||
16235 | shr ebx, 16 ; Restore BX |
||
16236 | mov dl, dh ; Get our instruction |
||
16237 | xor dh, dh ; Zero this |
||
16238 | jmp dword [z80ddfdcbInstructions+edx*4] |
||
16239 | |||
16240 | |||
16241 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16242 | |||
16243 | FDInste1: |
||
16244 | mov dx, [_z80sp] |
||
16245 | mov [cyclesRemaining], edi |
||
16246 | mov edi, [_z80MemRead] ; Point to the read array |
||
16247 | |||
16248 | checkLoop312: |
||
16249 | cmp [edi], word 0ffffh ; End of the list? |
||
16250 | je memoryRead312 |
||
16251 | cmp dx, [edi] ; Are we smaller? |
||
16252 | jb nextAddr312 ; Yes, go to the next address |
||
16253 | cmp dx, [edi+4] ; Are we bigger? |
||
16254 | jbe callRoutine312 |
||
16255 | |||
16256 | nextAddr312: |
||
16257 | add edi, 10h ; Next structure! |
||
16258 | jmp short checkLoop312 |
||
16259 | |||
16260 | callRoutine312: |
||
16261 | push ax ; Save this for later |
||
16262 | push dx ; Save address |
||
16263 | call ReadMemoryByte ; Standard read routine |
||
16264 | pop dx ; Restore our address |
||
16265 | inc dx ; Next byte, please |
||
16266 | push ax ; Save returned byte |
||
16267 | call ReadMemoryByte ; Standard read routine |
||
16268 | xchg ah, al ; Swap for endian's sake |
||
16269 | pop dx ; Restore LSB |
||
16270 | mov dh, ah ; Our word is now in DX |
||
16271 | pop ax ; Restore this |
||
16272 | mov [_z80iy], dx ; Store our word |
||
16273 | jmp readExit312 |
||
16274 | |||
16275 | memoryRead312: |
||
16276 | mov dx, [ebp + edx] |
||
16277 | mov [_z80iy], dx |
||
16278 | readExit312: |
||
16279 | mov edi, [cyclesRemaining] |
||
16280 | add word [_z80sp], 2 |
||
16281 | xor edx, edx |
||
16282 | sub edi, byte 14 |
||
16283 | js near noMoreExec |
||
16284 | mov dl, byte [esi] ; Get our next instruction |
||
16285 | inc esi ; Increment PC |
||
16286 | jmp dword [z80regular+edx*4] |
||
16287 | |||
16288 | |||
16289 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16290 | |||
16291 | FDInste3: |
||
16292 | mov [cyclesRemaining], edi |
||
16293 | mov dx, word [_z80sp] |
||
16294 | xor edi, edi |
||
16295 | mov di, [_z80iy] |
||
16296 | xchg di, [ebp+edx] |
||
16297 | mov [_z80iy], di |
||
16298 | xor edx, edx |
||
16299 | mov edi, [cyclesRemaining] |
||
16300 | sub edi, byte 23 |
||
16301 | js near noMoreExec |
||
16302 | mov dl, byte [esi] ; Get our next instruction |
||
16303 | inc esi ; Increment PC |
||
16304 | jmp dword [z80regular+edx*4] |
||
16305 | |||
16306 | |||
16307 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16308 | |||
16309 | FDInste5: |
||
16310 | sub word [_z80sp], 2 |
||
16311 | mov dx, [_z80sp] |
||
16312 | mov [cyclesRemaining], edi |
||
16313 | mov edi, [_z80MemWrite] ; Point to the write array |
||
16314 | |||
16315 | checkLoop313: |
||
16316 | cmp [edi], word 0ffffh ; End of the list? |
||
16317 | je memoryWrite313 |
||
16318 | cmp dx, [edi] ; Are we smaller? |
||
16319 | jb nextAddr313 ; Yes, go to the next address |
||
16320 | cmp dx, [edi+4] ; Are we bigger? |
||
16321 | jbe callRoutine313 |
||
16322 | |||
16323 | nextAddr313: |
||
16324 | add edi, 10h ; Next structure! |
||
16325 | jmp short checkLoop313 |
||
16326 | |||
16327 | callRoutine313: |
||
16328 | push ax ; Save this for later |
||
16329 | push dx |
||
16330 | mov ax, [_z80iy] |
||
16331 | call WriteMemoryByte |
||
16332 | pop dx |
||
16333 | pop ax |
||
16334 | inc dx |
||
16335 | |||
16336 | push ax |
||
16337 | push dx |
||
16338 | mov ax, [_z80iy] |
||
16339 | xchg ah, al |
||
16340 | call WriteMemoryByte |
||
16341 | pop dx |
||
16342 | pop ax ; Restore us! |
||
16343 | jmp writeExit313 |
||
16344 | |||
16345 | memoryWrite313: |
||
16346 | mov di, [_z80iy] |
||
16347 | mov [ebp + edx], di ; Store our word |
||
16348 | writeExit313: |
||
16349 | mov edi, [cyclesRemaining] |
||
16350 | xor edx, edx |
||
16351 | sub edi, byte 15 |
||
16352 | js near noMoreExec |
||
16353 | mov dl, byte [esi] ; Get our next instruction |
||
16354 | inc esi ; Increment PC |
||
16355 | jmp dword [z80regular+edx*4] |
||
16356 | |||
16357 | |||
16358 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16359 | |||
16360 | FDInste9: |
||
16361 | mov dx, [_z80iy] ; Get our value |
||
16362 | mov esi, edx ; New PC! |
||
16363 | add esi, ebp ; Add in our base |
||
16364 | xor edx, edx |
||
16365 | sub edi, byte 8 |
||
16366 | js near noMoreExec |
||
16367 | mov dl, byte [esi] ; Get our next instruction |
||
16368 | inc esi ; Increment PC |
||
16369 | jmp dword [z80regular+edx*4] |
||
16370 | |||
16371 | |||
16372 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16373 | |||
16374 | FDInstf9: |
||
16375 | mov dx, [_z80iy] ; Get our source register |
||
16376 | mov word [_z80sp], dx ; Store our new SP |
||
16377 | xor edx, edx |
||
16378 | sub edi, byte 10 |
||
16379 | js near noMoreExec |
||
16380 | mov dl, byte [esi] ; Get our next instruction |
||
16381 | inc esi ; Increment PC |
||
16382 | jmp dword [z80regular+edx*4] |
||
16383 | |||
16384 | |||
16385 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16386 | |||
16387 | RegInst00: |
||
16388 | sub edi, byte 4 |
||
16389 | js near noMoreExec |
||
16390 | mov dl, byte [esi] ; Get our next instruction |
||
16391 | inc esi ; Increment PC |
||
16392 | jmp dword [z80regular+edx*4] |
||
16393 | |||
16394 | |||
16395 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16396 | |||
16397 | RegInst01: |
||
16398 | mov cx, [esi] ; Get our immediate value of BC |
||
16399 | add esi, 2 |
||
16400 | sub edi, byte 10 |
||
16401 | js near noMoreExec |
||
16402 | mov dl, byte [esi] ; Get our next instruction |
||
16403 | inc esi ; Increment PC |
||
16404 | jmp dword [z80regular+edx*4] |
||
16405 | |||
16406 | |||
16407 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16408 | |||
16409 | RegInst02: |
||
16410 | mov [cyclesRemaining], edi |
||
16411 | mov [_z80af], ax ; Store AF |
||
16412 | mov edi, [_z80MemWrite] ; Point to the write array |
||
16413 | |||
16414 | checkLoop314: |
||
16415 | cmp [edi], word 0ffffh ; End of our list? |
||
16416 | je memoryWrite314 ; Yes - go write it! |
||
16417 | cmp cx, [edi] ; Are we smaller? |
||
16418 | jb nextAddr314 ; Yes... go to the next addr |
||
16419 | cmp cx, [edi+4] ; Are we smaller? |
||
16420 | jbe callRoutine314 ; If not, go call it! |
||
16421 | |||
16422 | nextAddr314: |
||
16423 | add edi, 10h ; Next structure, please |
||
16424 | jmp short checkLoop314 |
||
16425 | |||
16426 | callRoutine314: |
||
16427 | mov dx, cx ; Get our address to target |
||
16428 | call WriteMemoryByte ; Go write the data! |
||
16429 | jmp short WriteMacroExit314 |
||
16430 | memoryWrite314: |
||
16431 | mov [ebp + ecx], al |
||
16432 | mov ax, [_z80af] ; Get our accumulator and flags |
||
16433 | WriteMacroExit314: |
||
16434 | mov edi, [cyclesRemaining] |
||
16435 | xor edx, edx |
||
16436 | sub edi, byte 7 |
||
16437 | js near noMoreExec |
||
16438 | mov dl, byte [esi] ; Get our next instruction |
||
16439 | inc esi ; Increment PC |
||
16440 | jmp dword [z80regular+edx*4] |
||
16441 | |||
16442 | |||
16443 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16444 | |||
16445 | RegInst03: |
||
16446 | inc cx |
||
16447 | sub edi, byte 6 |
||
16448 | js near noMoreExec |
||
16449 | mov dl, byte [esi] ; Get our next instruction |
||
16450 | inc esi ; Increment PC |
||
16451 | jmp dword [z80regular+edx*4] |
||
16452 | |||
16453 | |||
16454 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16455 | |||
16456 | RegInst04: |
||
16457 | sahf |
||
16458 | inc ch |
||
16459 | lahf |
||
16460 | seto dl |
||
16461 | and ah, 0fbh ; Knock out parity/overflow |
||
16462 | shl dl, 2 |
||
16463 | or ah, dl |
||
16464 | and ah, 0fdh ; Knock out N! |
||
16465 | sub edi, byte 4 |
||
16466 | js near noMoreExec |
||
16467 | mov dl, byte [esi] ; Get our next instruction |
||
16468 | inc esi ; Increment PC |
||
16469 | jmp dword [z80regular+edx*4] |
||
16470 | |||
16471 | |||
16472 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16473 | |||
16474 | RegInst05: |
||
16475 | sahf |
||
16476 | dec ch |
||
16477 | lahf |
||
16478 | seto dl |
||
16479 | and ah, 0fbh ; Knock out parity/overflow |
||
16480 | shl dl, 2 |
||
16481 | or ah, dl |
||
16482 | or ah, 02h ; Set negative! |
||
16483 | sub edi, byte 4 |
||
16484 | js near noMoreExec |
||
16485 | mov dl, byte [esi] ; Get our next instruction |
||
16486 | inc esi ; Increment PC |
||
16487 | jmp dword [z80regular+edx*4] |
||
16488 | |||
16489 | |||
16490 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16491 | |||
16492 | RegInst06: |
||
16493 | mov ch, [esi] ; Get our immediate value |
||
16494 | inc esi |
||
16495 | sub edi, byte 7 |
||
16496 | js near noMoreExec |
||
16497 | mov dl, byte [esi] ; Get our next instruction |
||
16498 | inc esi ; Increment PC |
||
16499 | jmp dword [z80regular+edx*4] |
||
16500 | |||
16501 | |||
16502 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16503 | |||
16504 | RegInst07: |
||
16505 | sahf |
||
16506 | rol al, 1 |
||
16507 | lahf |
||
16508 | and ah, 0edh |
||
16509 | sub edi, byte 4 |
||
16510 | js near noMoreExec |
||
16511 | mov dl, byte [esi] ; Get our next instruction |
||
16512 | inc esi ; Increment PC |
||
16513 | jmp dword [z80regular+edx*4] |
||
16514 | |||
16515 | |||
16516 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16517 | |||
16518 | RegInst08: |
||
16519 | xchg ah, al |
||
16520 | xchg ax, [_z80afprime] |
||
16521 | xchg ah, al |
||
16522 | sub edi, byte 4 |
||
16523 | js near noMoreExec |
||
16524 | mov dl, byte [esi] ; Get our next instruction |
||
16525 | inc esi ; Increment PC |
||
16526 | jmp dword [z80regular+edx*4] |
||
16527 | |||
16528 | |||
16529 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16530 | |||
16531 | RegInst09: |
||
16532 | mov dh, ah ; Get our flags |
||
16533 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
16534 | mov [_orgval], bx ; Store our original value |
||
16535 | add bx, cx |
||
16536 | lahf |
||
16537 | mov [cyclesRemaining], edi |
||
16538 | mov di, [_orgval] ; Get original |
||
16539 | xor di, bx ; XOR It with our computed value |
||
16540 | xor di, cx |
||
16541 | and di, 1000h ; Just our half carry |
||
16542 | or dx, di ; Or in our flags |
||
16543 | and ah, 01h ; Just carry |
||
16544 | or ah, dh |
||
16545 | mov edi, [cyclesRemaining] |
||
16546 | xor edx, edx |
||
16547 | sub edi, byte 11 |
||
16548 | js near noMoreExec |
||
16549 | mov dl, byte [esi] ; Get our next instruction |
||
16550 | inc esi ; Increment PC |
||
16551 | jmp dword [z80regular+edx*4] |
||
16552 | |||
16553 | |||
16554 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16555 | |||
16556 | RegInst0a: |
||
16557 | mov [cyclesRemaining], edi |
||
16558 | mov edi, [_z80MemRead] ; Point to the read array |
||
16559 | |||
16560 | checkLoop315: |
||
16561 | cmp [edi], word 0ffffh ; End of the list? |
||
16562 | je memoryRead315 |
||
16563 | cmp ecx, [edi] ; Are we smaller? |
||
16564 | jb nextAddr315 ; Yes, go to the next address |
||
16565 | cmp ecx, [edi+4] ; Are we bigger? |
||
16566 | jbe callRoutine315 |
||
16567 | |||
16568 | nextAddr315: |
||
16569 | add edi, 10h ; Next structure! |
||
16570 | jmp short checkLoop315 |
||
16571 | |||
16572 | callRoutine315: |
||
16573 | mov dx, cx ; Get our address |
||
16574 | call ReadMemoryByte ; Standard read routine |
||
16575 | mov [_z80af], al ; Save our new accumulator |
||
16576 | mov ax, [_z80af] ; Get our AF back |
||
16577 | jmp short readExit315 |
||
16578 | |||
16579 | memoryRead315: |
||
16580 | mov al, [ebp + ecx] ; Get our data |
||
16581 | |||
16582 | readExit315: |
||
16583 | mov edi, [cyclesRemaining] |
||
16584 | xor edx, edx |
||
16585 | sub edi, byte 7 |
||
16586 | js near noMoreExec |
||
16587 | mov dl, byte [esi] ; Get our next instruction |
||
16588 | inc esi ; Increment PC |
||
16589 | jmp dword [z80regular+edx*4] |
||
16590 | |||
16591 | |||
16592 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16593 | |||
16594 | RegInst0b: |
||
16595 | dec cx |
||
16596 | sub edi, byte 6 |
||
16597 | js near noMoreExec |
||
16598 | mov dl, byte [esi] ; Get our next instruction |
||
16599 | inc esi ; Increment PC |
||
16600 | jmp dword [z80regular+edx*4] |
||
16601 | |||
16602 | |||
16603 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16604 | |||
16605 | RegInst0c: |
||
16606 | sahf |
||
16607 | inc cl |
||
16608 | lahf |
||
16609 | seto dl |
||
16610 | and ah, 0fbh ; Knock out parity/overflow |
||
16611 | shl dl, 2 |
||
16612 | or ah, dl |
||
16613 | and ah, 0fdh ; Knock out N! |
||
16614 | sub edi, byte 4 |
||
16615 | js near noMoreExec |
||
16616 | mov dl, byte [esi] ; Get our next instruction |
||
16617 | inc esi ; Increment PC |
||
16618 | jmp dword [z80regular+edx*4] |
||
16619 | |||
16620 | |||
16621 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16622 | |||
16623 | RegInst0d: |
||
16624 | sahf |
||
16625 | dec cl |
||
16626 | lahf |
||
16627 | seto dl |
||
16628 | and ah, 0fbh ; Knock out parity/overflow |
||
16629 | shl dl, 2 |
||
16630 | or ah, dl |
||
16631 | or ah, 02h ; Set negative! |
||
16632 | sub edi, byte 4 |
||
16633 | js near noMoreExec |
||
16634 | mov dl, byte [esi] ; Get our next instruction |
||
16635 | inc esi ; Increment PC |
||
16636 | jmp dword [z80regular+edx*4] |
||
16637 | |||
16638 | |||
16639 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16640 | |||
16641 | RegInst0e: |
||
16642 | mov cl, [esi] ; Get our immediate value |
||
16643 | inc esi |
||
16644 | sub edi, byte 7 |
||
16645 | js near noMoreExec |
||
16646 | mov dl, byte [esi] ; Get our next instruction |
||
16647 | inc esi ; Increment PC |
||
16648 | jmp dword [z80regular+edx*4] |
||
16649 | |||
16650 | |||
16651 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16652 | |||
16653 | RegInst0f: |
||
16654 | sahf |
||
16655 | ror al, 1 |
||
16656 | lahf |
||
16657 | and ah, 0edh |
||
16658 | sub edi, byte 4 |
||
16659 | js near noMoreExec |
||
16660 | mov dl, byte [esi] ; Get our next instruction |
||
16661 | inc esi ; Increment PC |
||
16662 | jmp dword [z80regular+edx*4] |
||
16663 | |||
16664 | |||
16665 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16666 | |||
16667 | RegInst10: |
||
16668 | mov dl, [esi] ; Get our relative offset |
||
16669 | inc esi ; Next instruction, please! |
||
16670 | dec ch ; Decrement B |
||
16671 | jz noJump ; Don't take the jump if it's done! |
||
16672 | ; Otherwise, take the jump |
||
16673 | sub edi, 5 |
||
16674 | xchg eax, edx |
||
16675 | cbw |
||
16676 | xchg eax, edx |
||
16677 | sub esi, ebp |
||
16678 | add si, dx |
||
16679 | add esi, ebp |
||
16680 | noJump: |
||
16681 | xor edx, edx |
||
16682 | sub edi, byte 8 |
||
16683 | js near noMoreExec |
||
16684 | mov dl, byte [esi] ; Get our next instruction |
||
16685 | inc esi ; Increment PC |
||
16686 | jmp dword [z80regular+edx*4] |
||
16687 | |||
16688 | |||
16689 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16690 | |||
16691 | RegInst11: |
||
16692 | mov dx, [esi] ; Get our immediate value of DE |
||
16693 | mov word [_z80de], dx ; Store DE |
||
16694 | xor edx, edx |
||
16695 | add esi, 2 |
||
16696 | sub edi, byte 10 |
||
16697 | js near noMoreExec |
||
16698 | mov dl, byte [esi] ; Get our next instruction |
||
16699 | inc esi ; Increment PC |
||
16700 | jmp dword [z80regular+edx*4] |
||
16701 | |||
16702 | |||
16703 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16704 | |||
16705 | RegInst12: |
||
16706 | mov [cyclesRemaining], edi |
||
16707 | mov [_z80af], ax ; Store AF |
||
16708 | mov dx, [_z80de] |
||
16709 | mov edi, [_z80MemWrite] ; Point to the write array |
||
16710 | |||
16711 | checkLoop316: |
||
16712 | cmp [edi], word 0ffffh ; End of our list? |
||
16713 | je memoryWrite316 ; Yes - go write it! |
||
16714 | cmp dx, [edi] ; Are we smaller? |
||
16715 | jb nextAddr316 ; Yes... go to the next addr |
||
16716 | cmp dx, [edi+4] ; Are we smaller? |
||
16717 | jbe callRoutine316 ; If not, go call it! |
||
16718 | |||
16719 | nextAddr316: |
||
16720 | add edi, 10h ; Next structure, please |
||
16721 | jmp short checkLoop316 |
||
16722 | |||
16723 | callRoutine316: |
||
16724 | call WriteMemoryByte ; Go write the data! |
||
16725 | jmp short WriteMacroExit316 |
||
16726 | memoryWrite316: |
||
16727 | mov [ebp + edx], al |
||
16728 | mov ax, [_z80af] ; Get our accumulator and flags |
||
16729 | WriteMacroExit316: |
||
16730 | mov edi, [cyclesRemaining] |
||
16731 | xor edx, edx |
||
16732 | sub edi, byte 7 |
||
16733 | js near noMoreExec |
||
16734 | mov dl, byte [esi] ; Get our next instruction |
||
16735 | inc esi ; Increment PC |
||
16736 | jmp dword [z80regular+edx*4] |
||
16737 | |||
16738 | |||
16739 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16740 | |||
16741 | RegInst13: |
||
16742 | inc word [_z80de] |
||
16743 | sub edi, byte 6 |
||
16744 | js near noMoreExec |
||
16745 | mov dl, byte [esi] ; Get our next instruction |
||
16746 | inc esi ; Increment PC |
||
16747 | jmp dword [z80regular+edx*4] |
||
16748 | |||
16749 | |||
16750 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16751 | |||
16752 | RegInst14: |
||
16753 | sahf |
||
16754 | inc byte [_z80de + 1] |
||
16755 | lahf |
||
16756 | seto dl |
||
16757 | and ah, 0fbh ; Knock out parity/overflow |
||
16758 | shl dl, 2 |
||
16759 | or ah, dl |
||
16760 | and ah, 0fdh ; Knock out N! |
||
16761 | sub edi, byte 4 |
||
16762 | js near noMoreExec |
||
16763 | mov dl, byte [esi] ; Get our next instruction |
||
16764 | inc esi ; Increment PC |
||
16765 | jmp dword [z80regular+edx*4] |
||
16766 | |||
16767 | |||
16768 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16769 | |||
16770 | RegInst15: |
||
16771 | sahf |
||
16772 | dec byte [_z80de + 1] |
||
16773 | lahf |
||
16774 | seto dl |
||
16775 | and ah, 0fbh ; Knock out parity/overflow |
||
16776 | shl dl, 2 |
||
16777 | or ah, dl |
||
16778 | or ah, 02h ; Set negative! |
||
16779 | sub edi, byte 4 |
||
16780 | js near noMoreExec |
||
16781 | mov dl, byte [esi] ; Get our next instruction |
||
16782 | inc esi ; Increment PC |
||
16783 | jmp dword [z80regular+edx*4] |
||
16784 | |||
16785 | |||
16786 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16787 | |||
16788 | RegInst16: |
||
16789 | mov dl, [esi] ; Get our immediate value |
||
16790 | mov byte [_z80de + 1], dl ; Store our new value |
||
16791 | inc esi |
||
16792 | sub edi, byte 7 |
||
16793 | js near noMoreExec |
||
16794 | mov dl, byte [esi] ; Get our next instruction |
||
16795 | inc esi ; Increment PC |
||
16796 | jmp dword [z80regular+edx*4] |
||
16797 | |||
16798 | |||
16799 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16800 | |||
16801 | RegInst17: |
||
16802 | sahf |
||
16803 | rcl al, 1 |
||
16804 | lahf |
||
16805 | and ah, 0edh |
||
16806 | sub edi, byte 4 |
||
16807 | js near noMoreExec |
||
16808 | mov dl, byte [esi] ; Get our next instruction |
||
16809 | inc esi ; Increment PC |
||
16810 | jmp dword [z80regular+edx*4] |
||
16811 | |||
16812 | |||
16813 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16814 | |||
16815 | RegInst18: |
||
16816 | sub esi, ebp |
||
16817 | and esi, 0ffffh |
||
16818 | add esi, ebp |
||
16819 | mov dl, [esi] ; Get our relative offset |
||
16820 | inc esi ; Next instruction, please! |
||
16821 | cmp dl, 0feh ; Jump to self? |
||
16822 | je yesJrMan ; Yup! Bail out! |
||
16823 | xchg eax, edx |
||
16824 | cbw |
||
16825 | xchg eax, edx |
||
16826 | sub esi, ebp |
||
16827 | add si, dx |
||
16828 | and esi, 0ffffh ; Only the lower 16 bits |
||
16829 | add esi, ebp |
||
16830 | xor dh, dh |
||
16831 | noJumpMan317: |
||
16832 | sub edi, byte 12 |
||
16833 | js near noMoreExec |
||
16834 | mov dl, byte [esi] ; Get our next instruction |
||
16835 | inc esi ; Increment PC |
||
16836 | jmp dword [z80regular+edx*4] |
||
16837 | |||
16838 | yesJrMan: |
||
16839 | xor edx, edx ; Zero me for later |
||
16840 | mov edi, edx |
||
16841 | mov [cyclesRemaining], edx |
||
16842 | sub esi, 2 ; Back to the instruction again |
||
16843 | jmp noMoreExec |
||
16844 | |||
16845 | |||
16846 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16847 | |||
16848 | RegInst19: |
||
16849 | mov dh, ah ; Get our flags |
||
16850 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
16851 | mov [_orgval], bx ; Store our original value |
||
16852 | add bx, word [_z80de] |
||
16853 | lahf |
||
16854 | mov [cyclesRemaining], edi |
||
16855 | mov di, [_orgval] ; Get original |
||
16856 | xor di, bx ; XOR It with our computed value |
||
16857 | xor di, word [_z80de] |
||
16858 | and di, 1000h ; Just our half carry |
||
16859 | or dx, di ; Or in our flags |
||
16860 | and ah, 01h ; Just carry |
||
16861 | or ah, dh |
||
16862 | mov edi, [cyclesRemaining] |
||
16863 | xor edx, edx |
||
16864 | sub edi, byte 11 |
||
16865 | js near noMoreExec |
||
16866 | mov dl, byte [esi] ; Get our next instruction |
||
16867 | inc esi ; Increment PC |
||
16868 | jmp dword [z80regular+edx*4] |
||
16869 | |||
16870 | |||
16871 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16872 | |||
16873 | RegInst1a: |
||
16874 | mov dx, [_z80de] |
||
16875 | mov [cyclesRemaining], edi |
||
16876 | mov edi, [_z80MemRead] ; Point to the read array |
||
16877 | |||
16878 | checkLoop318: |
||
16879 | cmp [edi], word 0ffffh ; End of the list? |
||
16880 | je memoryRead318 |
||
16881 | cmp edx, [edi] ; Are we smaller? |
||
16882 | jb nextAddr318 ; Yes, go to the next address |
||
16883 | cmp edx, [edi+4] ; Are we bigger? |
||
16884 | jbe callRoutine318 |
||
16885 | |||
16886 | nextAddr318: |
||
16887 | add edi, 10h ; Next structure! |
||
16888 | jmp short checkLoop318 |
||
16889 | |||
16890 | callRoutine318: |
||
16891 | call ReadMemoryByte ; Standard read routine |
||
16892 | mov [_z80af], al ; Save our new accumulator |
||
16893 | mov ax, [_z80af] ; Get our AF back |
||
16894 | jmp short readExit318 |
||
16895 | |||
16896 | memoryRead318: |
||
16897 | mov al, [ebp + edx] ; Get our data |
||
16898 | |||
16899 | readExit318: |
||
16900 | mov edi, [cyclesRemaining] |
||
16901 | xor edx, edx |
||
16902 | sub edi, byte 7 |
||
16903 | js near noMoreExec |
||
16904 | mov dl, byte [esi] ; Get our next instruction |
||
16905 | inc esi ; Increment PC |
||
16906 | jmp dword [z80regular+edx*4] |
||
16907 | |||
16908 | |||
16909 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16910 | |||
16911 | RegInst1b: |
||
16912 | dec word [_z80de] |
||
16913 | sub edi, byte 6 |
||
16914 | js near noMoreExec |
||
16915 | mov dl, byte [esi] ; Get our next instruction |
||
16916 | inc esi ; Increment PC |
||
16917 | jmp dword [z80regular+edx*4] |
||
16918 | |||
16919 | |||
16920 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16921 | |||
16922 | RegInst1c: |
||
16923 | sahf |
||
16924 | inc byte [_z80de] |
||
16925 | lahf |
||
16926 | seto dl |
||
16927 | and ah, 0fbh ; Knock out parity/overflow |
||
16928 | shl dl, 2 |
||
16929 | or ah, dl |
||
16930 | and ah, 0fdh ; Knock out N! |
||
16931 | sub edi, byte 4 |
||
16932 | js near noMoreExec |
||
16933 | mov dl, byte [esi] ; Get our next instruction |
||
16934 | inc esi ; Increment PC |
||
16935 | jmp dword [z80regular+edx*4] |
||
16936 | |||
16937 | |||
16938 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16939 | |||
16940 | RegInst1d: |
||
16941 | sahf |
||
16942 | dec byte [_z80de] |
||
16943 | lahf |
||
16944 | seto dl |
||
16945 | and ah, 0fbh ; Knock out parity/overflow |
||
16946 | shl dl, 2 |
||
16947 | or ah, dl |
||
16948 | or ah, 02h ; Set negative! |
||
16949 | sub edi, byte 4 |
||
16950 | js near noMoreExec |
||
16951 | mov dl, byte [esi] ; Get our next instruction |
||
16952 | inc esi ; Increment PC |
||
16953 | jmp dword [z80regular+edx*4] |
||
16954 | |||
16955 | |||
16956 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16957 | |||
16958 | RegInst1e: |
||
16959 | mov dl, [esi] ; Get our immediate value |
||
16960 | mov byte [_z80de], dl ; Store our new value |
||
16961 | inc esi |
||
16962 | sub edi, byte 7 |
||
16963 | js near noMoreExec |
||
16964 | mov dl, byte [esi] ; Get our next instruction |
||
16965 | inc esi ; Increment PC |
||
16966 | jmp dword [z80regular+edx*4] |
||
16967 | |||
16968 | |||
16969 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16970 | |||
16971 | RegInst1f: |
||
16972 | sahf |
||
16973 | rcr al, 1 |
||
16974 | lahf |
||
16975 | and ah, 0edh |
||
16976 | sub edi, byte 4 |
||
16977 | js near noMoreExec |
||
16978 | mov dl, byte [esi] ; Get our next instruction |
||
16979 | inc esi ; Increment PC |
||
16980 | jmp dword [z80regular+edx*4] |
||
16981 | |||
16982 | |||
16983 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
16984 | |||
16985 | RegInst20: |
||
16986 | sub esi, ebp |
||
16987 | and esi, 0ffffh |
||
16988 | add esi, ebp |
||
16989 | mov dl, [esi] ; Get our relative offset |
||
16990 | inc esi ; Next instruction, please! |
||
16991 | sahf |
||
16992 | jnz takeJump319 |
||
16993 | jmp short noJumpMan319 |
||
16994 | takeJump319: |
||
16995 | sub edi, 5 |
||
16996 | xchg eax, edx |
||
16997 | cbw |
||
16998 | xchg eax, edx |
||
16999 | sub esi, ebp |
||
17000 | add si, dx |
||
17001 | and esi, 0ffffh ; Only the lower 16 bits |
||
17002 | add esi, ebp |
||
17003 | xor dh, dh |
||
17004 | noJumpMan319: |
||
17005 | sub edi, byte 7 |
||
17006 | js near noMoreExec |
||
17007 | mov dl, byte [esi] ; Get our next instruction |
||
17008 | inc esi ; Increment PC |
||
17009 | jmp dword [z80regular+edx*4] |
||
17010 | |||
17011 | |||
17012 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17013 | |||
17014 | RegInst21: |
||
17015 | mov bx, [esi] ; Get our immediate value of HL |
||
17016 | add esi, 2 |
||
17017 | sub edi, byte 10 |
||
17018 | js near noMoreExec |
||
17019 | mov dl, byte [esi] ; Get our next instruction |
||
17020 | inc esi ; Increment PC |
||
17021 | jmp dword [z80regular+edx*4] |
||
17022 | |||
17023 | |||
17024 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17025 | |||
17026 | RegInst22: |
||
17027 | mov dx, [esi] ; Get our address to write to |
||
17028 | add esi, 2 ; Next address, please... |
||
17029 | mov [cyclesRemaining], edi |
||
17030 | mov edi, [_z80MemWrite] ; Point to the write array |
||
17031 | |||
17032 | checkLoop320: |
||
17033 | cmp [edi], word 0ffffh ; End of the list? |
||
17034 | je memoryWrite320 |
||
17035 | cmp dx, [edi] ; Are we smaller? |
||
17036 | jb nextAddr320 ; Yes, go to the next address |
||
17037 | cmp dx, [edi+4] ; Are we bigger? |
||
17038 | jbe callRoutine320 |
||
17039 | |||
17040 | nextAddr320: |
||
17041 | add edi, 10h ; Next structure! |
||
17042 | jmp short checkLoop320 |
||
17043 | |||
17044 | callRoutine320: |
||
17045 | push ax ; Save this for later |
||
17046 | push dx |
||
17047 | mov ax, bx |
||
17048 | call WriteMemoryByte |
||
17049 | pop dx |
||
17050 | pop ax |
||
17051 | inc dx |
||
17052 | |||
17053 | push ax |
||
17054 | push dx |
||
17055 | mov ax, bx |
||
17056 | xchg ah, al |
||
17057 | call WriteMemoryByte |
||
17058 | pop dx |
||
17059 | pop ax ; Restore us! |
||
17060 | jmp writeExit320 |
||
17061 | |||
17062 | memoryWrite320: |
||
17063 | mov [ebp + edx], bx ; Store our word |
||
17064 | writeExit320: |
||
17065 | mov edi, [cyclesRemaining] |
||
17066 | xor edx, edx ; Zero our upper byte |
||
17067 | sub edi, byte 16 |
||
17068 | js near noMoreExec |
||
17069 | mov dl, byte [esi] ; Get our next instruction |
||
17070 | inc esi ; Increment PC |
||
17071 | jmp dword [z80regular+edx*4] |
||
17072 | |||
17073 | |||
17074 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17075 | |||
17076 | RegInst23: |
||
17077 | inc bx |
||
17078 | sub edi, byte 6 |
||
17079 | js near noMoreExec |
||
17080 | mov dl, byte [esi] ; Get our next instruction |
||
17081 | inc esi ; Increment PC |
||
17082 | jmp dword [z80regular+edx*4] |
||
17083 | |||
17084 | |||
17085 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17086 | |||
17087 | RegInst24: |
||
17088 | sahf |
||
17089 | inc bh |
||
17090 | lahf |
||
17091 | seto dl |
||
17092 | and ah, 0fbh ; Knock out parity/overflow |
||
17093 | shl dl, 2 |
||
17094 | or ah, dl |
||
17095 | and ah, 0fdh ; Knock out N! |
||
17096 | sub edi, byte 4 |
||
17097 | js near noMoreExec |
||
17098 | mov dl, byte [esi] ; Get our next instruction |
||
17099 | inc esi ; Increment PC |
||
17100 | jmp dword [z80regular+edx*4] |
||
17101 | |||
17102 | |||
17103 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17104 | |||
17105 | RegInst25: |
||
17106 | sahf |
||
17107 | dec bh |
||
17108 | lahf |
||
17109 | seto dl |
||
17110 | and ah, 0fbh ; Knock out parity/overflow |
||
17111 | shl dl, 2 |
||
17112 | or ah, dl |
||
17113 | or ah, 02h ; Set negative! |
||
17114 | sub edi, byte 4 |
||
17115 | js near noMoreExec |
||
17116 | mov dl, byte [esi] ; Get our next instruction |
||
17117 | inc esi ; Increment PC |
||
17118 | jmp dword [z80regular+edx*4] |
||
17119 | |||
17120 | |||
17121 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17122 | |||
17123 | RegInst26: |
||
17124 | mov bh, [esi] ; Get our immediate value |
||
17125 | inc esi |
||
17126 | sub edi, byte 7 |
||
17127 | js near noMoreExec |
||
17128 | mov dl, byte [esi] ; Get our next instruction |
||
17129 | inc esi ; Increment PC |
||
17130 | jmp dword [z80regular+edx*4] |
||
17131 | |||
17132 | |||
17133 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17134 | |||
17135 | RegInst27: |
||
17136 | mov dh, ah |
||
17137 | and dh, 02ah |
||
17138 | test ah, 02h ; Were we doing a subtraction? |
||
17139 | jnz handleNeg ; Nope! |
||
17140 | sahf |
||
17141 | daa |
||
17142 | lahf |
||
17143 | jmp short endDaa |
||
17144 | handleNeg: |
||
17145 | sahf |
||
17146 | das |
||
17147 | lahf |
||
17148 | endDaa: |
||
17149 | and ah, 0d5h |
||
17150 | or ah, dh |
||
17151 | xor edx, edx |
||
17152 | sub edi, byte 4 |
||
17153 | js near noMoreExec |
||
17154 | mov dl, byte [esi] ; Get our next instruction |
||
17155 | inc esi ; Increment PC |
||
17156 | jmp dword [z80regular+edx*4] |
||
17157 | |||
17158 | |||
17159 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17160 | |||
17161 | RegInst28: |
||
17162 | sub esi, ebp |
||
17163 | and esi, 0ffffh |
||
17164 | add esi, ebp |
||
17165 | mov dl, [esi] ; Get our relative offset |
||
17166 | inc esi ; Next instruction, please! |
||
17167 | sahf |
||
17168 | jz takeJump321 |
||
17169 | jmp short noJumpMan321 |
||
17170 | takeJump321: |
||
17171 | sub edi, 5 |
||
17172 | xchg eax, edx |
||
17173 | cbw |
||
17174 | xchg eax, edx |
||
17175 | sub esi, ebp |
||
17176 | add si, dx |
||
17177 | and esi, 0ffffh ; Only the lower 16 bits |
||
17178 | add esi, ebp |
||
17179 | xor dh, dh |
||
17180 | noJumpMan321: |
||
17181 | sub edi, byte 7 |
||
17182 | js near noMoreExec |
||
17183 | mov dl, byte [esi] ; Get our next instruction |
||
17184 | inc esi ; Increment PC |
||
17185 | jmp dword [z80regular+edx*4] |
||
17186 | |||
17187 | |||
17188 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17189 | |||
17190 | RegInst29: |
||
17191 | mov dh, ah ; Get our flags |
||
17192 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
17193 | mov [_orgval], bx ; Store our original value |
||
17194 | add bx, bx |
||
17195 | lahf |
||
17196 | mov [cyclesRemaining], edi |
||
17197 | mov di, [_orgval] ; Get original |
||
17198 | xor di, bx ; XOR It with our computed value |
||
17199 | xor di, bx |
||
17200 | and di, 1000h ; Just our half carry |
||
17201 | or dx, di ; Or in our flags |
||
17202 | and ah, 01h ; Just carry |
||
17203 | or ah, dh |
||
17204 | mov edi, [cyclesRemaining] |
||
17205 | xor edx, edx |
||
17206 | sub edi, byte 11 |
||
17207 | js near noMoreExec |
||
17208 | mov dl, byte [esi] ; Get our next instruction |
||
17209 | inc esi ; Increment PC |
||
17210 | jmp dword [z80regular+edx*4] |
||
17211 | |||
17212 | |||
17213 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17214 | |||
17215 | RegInst2a: |
||
17216 | mov dx, [esi] ; Get address to load |
||
17217 | add esi, 2 ; Skip over it so we don't execute it |
||
17218 | mov [cyclesRemaining], edi |
||
17219 | mov edi, [_z80MemRead] ; Point to the read array |
||
17220 | |||
17221 | checkLoop322: |
||
17222 | cmp [edi], word 0ffffh ; End of the list? |
||
17223 | je memoryRead322 |
||
17224 | cmp dx, [edi] ; Are we smaller? |
||
17225 | jb nextAddr322 ; Yes, go to the next address |
||
17226 | cmp dx, [edi+4] ; Are we bigger? |
||
17227 | jbe callRoutine322 |
||
17228 | |||
17229 | nextAddr322: |
||
17230 | add edi, 10h ; Next structure! |
||
17231 | jmp short checkLoop322 |
||
17232 | |||
17233 | callRoutine322: |
||
17234 | push ax ; Save this for later |
||
17235 | push dx ; Save address |
||
17236 | call ReadMemoryByte ; Standard read routine |
||
17237 | pop dx ; Restore our address |
||
17238 | inc dx ; Next byte, please |
||
17239 | push ax ; Save returned byte |
||
17240 | call ReadMemoryByte ; Standard read routine |
||
17241 | xchg ah, al ; Swap for endian's sake |
||
17242 | pop dx ; Restore LSB |
||
17243 | mov dh, ah ; Our word is now in DX |
||
17244 | pop ax ; Restore this |
||
17245 | mov bx, dx ; Store our word |
||
17246 | jmp readExit322 |
||
17247 | |||
17248 | memoryRead322: |
||
17249 | mov bx, [ebp + edx] |
||
17250 | readExit322: |
||
17251 | mov edi, [cyclesRemaining] |
||
17252 | xor edx, edx |
||
17253 | sub edi, byte 16 |
||
17254 | js near noMoreExec |
||
17255 | mov dl, byte [esi] ; Get our next instruction |
||
17256 | inc esi ; Increment PC |
||
17257 | jmp dword [z80regular+edx*4] |
||
17258 | |||
17259 | |||
17260 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17261 | |||
17262 | RegInst2b: |
||
17263 | dec bx |
||
17264 | sub edi, byte 6 |
||
17265 | js near noMoreExec |
||
17266 | mov dl, byte [esi] ; Get our next instruction |
||
17267 | inc esi ; Increment PC |
||
17268 | jmp dword [z80regular+edx*4] |
||
17269 | |||
17270 | |||
17271 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17272 | |||
17273 | RegInst2c: |
||
17274 | sahf |
||
17275 | inc bl |
||
17276 | lahf |
||
17277 | seto dl |
||
17278 | and ah, 0fbh ; Knock out parity/overflow |
||
17279 | shl dl, 2 |
||
17280 | or ah, dl |
||
17281 | and ah, 0fdh ; Knock out N! |
||
17282 | sub edi, byte 4 |
||
17283 | js near noMoreExec |
||
17284 | mov dl, byte [esi] ; Get our next instruction |
||
17285 | inc esi ; Increment PC |
||
17286 | jmp dword [z80regular+edx*4] |
||
17287 | |||
17288 | |||
17289 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17290 | |||
17291 | RegInst2d: |
||
17292 | sahf |
||
17293 | dec bl |
||
17294 | lahf |
||
17295 | seto dl |
||
17296 | and ah, 0fbh ; Knock out parity/overflow |
||
17297 | shl dl, 2 |
||
17298 | or ah, dl |
||
17299 | or ah, 02h ; Set negative! |
||
17300 | sub edi, byte 4 |
||
17301 | js near noMoreExec |
||
17302 | mov dl, byte [esi] ; Get our next instruction |
||
17303 | inc esi ; Increment PC |
||
17304 | jmp dword [z80regular+edx*4] |
||
17305 | |||
17306 | |||
17307 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17308 | |||
17309 | RegInst2e: |
||
17310 | mov bl, [esi] ; Get our immediate value |
||
17311 | inc esi |
||
17312 | sub edi, byte 7 |
||
17313 | js near noMoreExec |
||
17314 | mov dl, byte [esi] ; Get our next instruction |
||
17315 | inc esi ; Increment PC |
||
17316 | jmp dword [z80regular+edx*4] |
||
17317 | |||
17318 | |||
17319 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17320 | |||
17321 | RegInst2f: |
||
17322 | not al |
||
17323 | or ah, 012h ; N And H are now on! |
||
17324 | sub edi, byte 4 |
||
17325 | js near noMoreExec |
||
17326 | mov dl, byte [esi] ; Get our next instruction |
||
17327 | inc esi ; Increment PC |
||
17328 | jmp dword [z80regular+edx*4] |
||
17329 | |||
17330 | |||
17331 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17332 | |||
17333 | RegInst30: |
||
17334 | sub esi, ebp |
||
17335 | and esi, 0ffffh |
||
17336 | add esi, ebp |
||
17337 | mov dl, [esi] ; Get our relative offset |
||
17338 | inc esi ; Next instruction, please! |
||
17339 | sahf |
||
17340 | jnc takeJump323 |
||
17341 | jmp short noJumpMan323 |
||
17342 | takeJump323: |
||
17343 | sub edi, 5 |
||
17344 | xchg eax, edx |
||
17345 | cbw |
||
17346 | xchg eax, edx |
||
17347 | sub esi, ebp |
||
17348 | add si, dx |
||
17349 | and esi, 0ffffh ; Only the lower 16 bits |
||
17350 | add esi, ebp |
||
17351 | xor dh, dh |
||
17352 | noJumpMan323: |
||
17353 | sub edi, byte 7 |
||
17354 | js near noMoreExec |
||
17355 | mov dl, byte [esi] ; Get our next instruction |
||
17356 | inc esi ; Increment PC |
||
17357 | jmp dword [z80regular+edx*4] |
||
17358 | |||
17359 | |||
17360 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17361 | |||
17362 | RegInst31: |
||
17363 | mov dx, [esi] ; Get our immediate value of SP |
||
17364 | mov word [_z80sp], dx ; Store it! |
||
17365 | xor edx, edx |
||
17366 | add esi, 2 |
||
17367 | sub edi, byte 10 |
||
17368 | js near noMoreExec |
||
17369 | mov dl, byte [esi] ; Get our next instruction |
||
17370 | inc esi ; Increment PC |
||
17371 | jmp dword [z80regular+edx*4] |
||
17372 | |||
17373 | |||
17374 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17375 | |||
17376 | RegInst32: |
||
17377 | mov dx, [esi] ; Get our address to write to |
||
17378 | add esi, 2 ; Next address, please... |
||
17379 | mov [cyclesRemaining], edi |
||
17380 | mov [_z80af], ax ; Store AF |
||
17381 | mov edi, [_z80MemWrite] ; Point to the write array |
||
17382 | |||
17383 | checkLoop324: |
||
17384 | cmp [edi], word 0ffffh ; End of our list? |
||
17385 | je memoryWrite324 ; Yes - go write it! |
||
17386 | cmp dx, [edi] ; Are we smaller? |
||
17387 | jb nextAddr324 ; Yes... go to the next addr |
||
17388 | cmp dx, [edi+4] ; Are we smaller? |
||
17389 | jbe callRoutine324 ; If not, go call it! |
||
17390 | |||
17391 | nextAddr324: |
||
17392 | add edi, 10h ; Next structure, please |
||
17393 | jmp short checkLoop324 |
||
17394 | |||
17395 | callRoutine324: |
||
17396 | call WriteMemoryByte ; Go write the data! |
||
17397 | jmp short WriteMacroExit324 |
||
17398 | memoryWrite324: |
||
17399 | mov [ebp + edx], al |
||
17400 | mov ax, [_z80af] ; Get our accumulator and flags |
||
17401 | WriteMacroExit324: |
||
17402 | mov edi, [cyclesRemaining] |
||
17403 | xor edx, edx ; Zero our upper byte |
||
17404 | sub edi, byte 13 |
||
17405 | js near noMoreExec |
||
17406 | mov dl, byte [esi] ; Get our next instruction |
||
17407 | inc esi ; Increment PC |
||
17408 | jmp dword [z80regular+edx*4] |
||
17409 | |||
17410 | |||
17411 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17412 | |||
17413 | RegInst33: |
||
17414 | inc word [_z80sp] |
||
17415 | sub edi, byte 6 |
||
17416 | js near noMoreExec |
||
17417 | mov dl, byte [esi] ; Get our next instruction |
||
17418 | inc esi ; Increment PC |
||
17419 | jmp dword [z80regular+edx*4] |
||
17420 | |||
17421 | |||
17422 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17423 | |||
17424 | RegInst34: |
||
17425 | mov [cyclesRemaining], edi |
||
17426 | mov edi, [_z80MemRead] ; Point to the read array |
||
17427 | |||
17428 | checkLoop325: |
||
17429 | cmp [edi], word 0ffffh ; End of the list? |
||
17430 | je memoryRead325 |
||
17431 | cmp ebx, [edi] ; Are we smaller? |
||
17432 | jb nextAddr325 ; Yes, go to the next address |
||
17433 | cmp ebx, [edi+4] ; Are we bigger? |
||
17434 | jbe callRoutine325 |
||
17435 | |||
17436 | nextAddr325: |
||
17437 | add edi, 10h ; Next structure! |
||
17438 | jmp short checkLoop325 |
||
17439 | |||
17440 | callRoutine325: |
||
17441 | mov dx, bx ; Get our address |
||
17442 | call ReadMemoryByte ; Standard read routine |
||
17443 | mov dl, al ; Put our returned value here |
||
17444 | mov ax, [_z80af] ; Get our AF back |
||
17445 | jmp short readExit325 |
||
17446 | |||
17447 | memoryRead325: |
||
17448 | mov dl, [ebp + ebx] ; Get our data |
||
17449 | |||
17450 | readExit325: |
||
17451 | mov edi, [cyclesRemaining] |
||
17452 | sahf |
||
17453 | inc dl |
||
17454 | lahf |
||
17455 | o16 pushf |
||
17456 | shl edx, 16 |
||
17457 | and ah, 0fbh ; Knock out parity/overflow |
||
17458 | pop dx |
||
17459 | and dh, 08h ; Just the overflow |
||
17460 | shr dh, 1 ; Shift it into position |
||
17461 | or ah, dh ; OR It in with the real flags |
||
17462 | shr edx, 16 |
||
17463 | and ah, 0fdh ; Knock out N! |
||
17464 | mov [cyclesRemaining], edi |
||
17465 | mov [_z80af], ax ; Store AF |
||
17466 | mov al, dl ; And our data to write |
||
17467 | mov edi, [_z80MemWrite] ; Point to the write array |
||
17468 | |||
17469 | checkLoop326: |
||
17470 | cmp [edi], word 0ffffh ; End of our list? |
||
17471 | je memoryWrite326 ; Yes - go write it! |
||
17472 | cmp bx, [edi] ; Are we smaller? |
||
17473 | jb nextAddr326 ; Yes... go to the next addr |
||
17474 | cmp bx, [edi+4] ; Are we smaller? |
||
17475 | jbe callRoutine326 ; If not, go call it! |
||
17476 | |||
17477 | nextAddr326: |
||
17478 | add edi, 10h ; Next structure, please |
||
17479 | jmp short checkLoop326 |
||
17480 | |||
17481 | callRoutine326: |
||
17482 | mov dx, bx ; Get our address to target |
||
17483 | call WriteMemoryByte ; Go write the data! |
||
17484 | jmp short WriteMacroExit326 |
||
17485 | memoryWrite326: |
||
17486 | mov [ebp + ebx], dl |
||
17487 | mov ax, [_z80af] ; Get our accumulator and flags |
||
17488 | WriteMacroExit326: |
||
17489 | mov edi, [cyclesRemaining] |
||
17490 | xor edx, edx |
||
17491 | sub edi, byte 11 |
||
17492 | js near noMoreExec |
||
17493 | mov dl, byte [esi] ; Get our next instruction |
||
17494 | inc esi ; Increment PC |
||
17495 | jmp dword [z80regular+edx*4] |
||
17496 | |||
17497 | |||
17498 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17499 | |||
17500 | RegInst35: |
||
17501 | mov [cyclesRemaining], edi |
||
17502 | mov edi, [_z80MemRead] ; Point to the read array |
||
17503 | |||
17504 | checkLoop327: |
||
17505 | cmp [edi], word 0ffffh ; End of the list? |
||
17506 | je memoryRead327 |
||
17507 | cmp ebx, [edi] ; Are we smaller? |
||
17508 | jb nextAddr327 ; Yes, go to the next address |
||
17509 | cmp ebx, [edi+4] ; Are we bigger? |
||
17510 | jbe callRoutine327 |
||
17511 | |||
17512 | nextAddr327: |
||
17513 | add edi, 10h ; Next structure! |
||
17514 | jmp short checkLoop327 |
||
17515 | |||
17516 | callRoutine327: |
||
17517 | mov dx, bx ; Get our address |
||
17518 | call ReadMemoryByte ; Standard read routine |
||
17519 | mov dl, al ; Put our returned value here |
||
17520 | mov ax, [_z80af] ; Get our AF back |
||
17521 | jmp short readExit327 |
||
17522 | |||
17523 | memoryRead327: |
||
17524 | mov dl, [ebp + ebx] ; Get our data |
||
17525 | |||
17526 | readExit327: |
||
17527 | mov edi, [cyclesRemaining] |
||
17528 | sahf |
||
17529 | dec dl |
||
17530 | lahf |
||
17531 | o16 pushf |
||
17532 | shl edx, 16 |
||
17533 | and ah, 0fbh ; Knock out parity/overflow |
||
17534 | pop dx |
||
17535 | and dh, 08h ; Just the overflow |
||
17536 | shr dh, 1 ; Shift it into position |
||
17537 | or ah, dh ; OR It in with the real flags |
||
17538 | shr edx, 16 |
||
17539 | or ah, 02h ; Make it N! |
||
17540 | mov [cyclesRemaining], edi |
||
17541 | mov [_z80af], ax ; Store AF |
||
17542 | mov al, dl ; And our data to write |
||
17543 | mov edi, [_z80MemWrite] ; Point to the write array |
||
17544 | |||
17545 | checkLoop328: |
||
17546 | cmp [edi], word 0ffffh ; End of our list? |
||
17547 | je memoryWrite328 ; Yes - go write it! |
||
17548 | cmp bx, [edi] ; Are we smaller? |
||
17549 | jb nextAddr328 ; Yes... go to the next addr |
||
17550 | cmp bx, [edi+4] ; Are we smaller? |
||
17551 | jbe callRoutine328 ; If not, go call it! |
||
17552 | |||
17553 | nextAddr328: |
||
17554 | add edi, 10h ; Next structure, please |
||
17555 | jmp short checkLoop328 |
||
17556 | |||
17557 | callRoutine328: |
||
17558 | mov dx, bx ; Get our address to target |
||
17559 | call WriteMemoryByte ; Go write the data! |
||
17560 | jmp short WriteMacroExit328 |
||
17561 | memoryWrite328: |
||
17562 | mov [ebp + ebx], dl |
||
17563 | mov ax, [_z80af] ; Get our accumulator and flags |
||
17564 | WriteMacroExit328: |
||
17565 | mov edi, [cyclesRemaining] |
||
17566 | xor edx, edx |
||
17567 | sub edi, byte 11 |
||
17568 | js near noMoreExec |
||
17569 | mov dl, byte [esi] ; Get our next instruction |
||
17570 | inc esi ; Increment PC |
||
17571 | jmp dword [z80regular+edx*4] |
||
17572 | |||
17573 | |||
17574 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17575 | |||
17576 | RegInst36: |
||
17577 | mov [cyclesRemaining], edi |
||
17578 | mov [_z80af], ax ; Store AF |
||
17579 | mov al, [esi] ; And our data to write |
||
17580 | inc esi ; Increment our program counter |
||
17581 | mov edi, [_z80MemWrite] ; Point to the write array |
||
17582 | |||
17583 | checkLoop329: |
||
17584 | cmp [edi], word 0ffffh ; End of our list? |
||
17585 | je memoryWrite329 ; Yes - go write it! |
||
17586 | cmp bx, [edi] ; Are we smaller? |
||
17587 | jb nextAddr329 ; Yes... go to the next addr |
||
17588 | cmp bx, [edi+4] ; Are we smaller? |
||
17589 | jbe callRoutine329 ; If not, go call it! |
||
17590 | |||
17591 | nextAddr329: |
||
17592 | add edi, 10h ; Next structure, please |
||
17593 | jmp short checkLoop329 |
||
17594 | |||
17595 | callRoutine329: |
||
17596 | mov dx, bx ; Get our address to target |
||
17597 | call WriteMemoryByte ; Go write the data! |
||
17598 | jmp short WriteMacroExit329 |
||
17599 | memoryWrite329: |
||
17600 | mov [ebp + ebx], al ; Store our direct value |
||
17601 | mov ax, [_z80af] ; Get our accumulator and flags |
||
17602 | WriteMacroExit329: |
||
17603 | mov edi, [cyclesRemaining] |
||
17604 | xor edx, edx |
||
17605 | sub edi, byte 10 |
||
17606 | js near noMoreExec |
||
17607 | mov dl, byte [esi] ; Get our next instruction |
||
17608 | inc esi ; Increment PC |
||
17609 | jmp dword [z80regular+edx*4] |
||
17610 | |||
17611 | |||
17612 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17613 | |||
17614 | RegInst37: |
||
17615 | or ah, 1 |
||
17616 | and ah,0edh |
||
17617 | sub edi, byte 4 |
||
17618 | js near noMoreExec |
||
17619 | mov dl, byte [esi] ; Get our next instruction |
||
17620 | inc esi ; Increment PC |
||
17621 | jmp dword [z80regular+edx*4] |
||
17622 | |||
17623 | |||
17624 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17625 | |||
17626 | RegInst38: |
||
17627 | sub esi, ebp |
||
17628 | and esi, 0ffffh |
||
17629 | add esi, ebp |
||
17630 | mov dl, [esi] ; Get our relative offset |
||
17631 | inc esi ; Next instruction, please! |
||
17632 | sahf |
||
17633 | jc takeJump330 |
||
17634 | jmp short noJumpMan330 |
||
17635 | takeJump330: |
||
17636 | sub edi, 5 |
||
17637 | xchg eax, edx |
||
17638 | cbw |
||
17639 | xchg eax, edx |
||
17640 | sub esi, ebp |
||
17641 | add si, dx |
||
17642 | and esi, 0ffffh ; Only the lower 16 bits |
||
17643 | add esi, ebp |
||
17644 | xor dh, dh |
||
17645 | noJumpMan330: |
||
17646 | sub edi, byte 7 |
||
17647 | js near noMoreExec |
||
17648 | mov dl, byte [esi] ; Get our next instruction |
||
17649 | inc esi ; Increment PC |
||
17650 | jmp dword [z80regular+edx*4] |
||
17651 | |||
17652 | |||
17653 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17654 | |||
17655 | RegInst39: |
||
17656 | mov dh, ah ; Get our flags |
||
17657 | and dh, 0ech ; Preserve the top three and bits 2 & 3 |
||
17658 | mov [_orgval], bx ; Store our original value |
||
17659 | add bx, word [_z80sp] |
||
17660 | lahf |
||
17661 | mov [cyclesRemaining], edi |
||
17662 | mov di, [_orgval] ; Get original |
||
17663 | xor di, bx ; XOR It with our computed value |
||
17664 | xor di, word [_z80sp] |
||
17665 | and di, 1000h ; Just our half carry |
||
17666 | or dx, di ; Or in our flags |
||
17667 | and ah, 01h ; Just carry |
||
17668 | or ah, dh |
||
17669 | mov edi, [cyclesRemaining] |
||
17670 | xor edx, edx |
||
17671 | sub edi, byte 11 |
||
17672 | js near noMoreExec |
||
17673 | mov dl, byte [esi] ; Get our next instruction |
||
17674 | inc esi ; Increment PC |
||
17675 | jmp dword [z80regular+edx*4] |
||
17676 | |||
17677 | |||
17678 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17679 | |||
17680 | RegInst3a: |
||
17681 | mov dx, [esi] ; Get our address |
||
17682 | add esi, 2 ; Skip past the address |
||
17683 | mov [cyclesRemaining], edi |
||
17684 | mov edi, [_z80MemRead] ; Point to the read array |
||
17685 | |||
17686 | checkLoop331: |
||
17687 | cmp [edi], word 0ffffh ; End of the list? |
||
17688 | je memoryRead331 |
||
17689 | cmp edx, [edi] ; Are we smaller? |
||
17690 | jb nextAddr331 ; Yes, go to the next address |
||
17691 | cmp edx, [edi+4] ; Are we bigger? |
||
17692 | jbe callRoutine331 |
||
17693 | |||
17694 | nextAddr331: |
||
17695 | add edi, 10h ; Next structure! |
||
17696 | jmp short checkLoop331 |
||
17697 | |||
17698 | callRoutine331: |
||
17699 | call ReadMemoryByte ; Standard read routine |
||
17700 | mov [_z80af], al ; Save our new accumulator |
||
17701 | mov ax, [_z80af] ; Get our AF back |
||
17702 | jmp short readExit331 |
||
17703 | |||
17704 | memoryRead331: |
||
17705 | mov al, [ebp + edx] ; Get our data |
||
17706 | |||
17707 | readExit331: |
||
17708 | mov edi, [cyclesRemaining] |
||
17709 | xor edx, edx ; Make sure we don't hose things |
||
17710 | sub edi, byte 13 |
||
17711 | js near noMoreExec |
||
17712 | mov dl, byte [esi] ; Get our next instruction |
||
17713 | inc esi ; Increment PC |
||
17714 | jmp dword [z80regular+edx*4] |
||
17715 | |||
17716 | |||
17717 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17718 | |||
17719 | RegInst3b: |
||
17720 | dec word [_z80sp] |
||
17721 | sub edi, byte 6 |
||
17722 | js near noMoreExec |
||
17723 | mov dl, byte [esi] ; Get our next instruction |
||
17724 | inc esi ; Increment PC |
||
17725 | jmp dword [z80regular+edx*4] |
||
17726 | |||
17727 | |||
17728 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17729 | |||
17730 | RegInst3c: |
||
17731 | sahf |
||
17732 | inc al |
||
17733 | lahf |
||
17734 | seto dl |
||
17735 | and ah, 0fbh ; Knock out parity/overflow |
||
17736 | shl dl, 2 |
||
17737 | or ah, dl |
||
17738 | and ah, 0fdh ; Knock out N! |
||
17739 | sub edi, byte 4 |
||
17740 | js near noMoreExec |
||
17741 | mov dl, byte [esi] ; Get our next instruction |
||
17742 | inc esi ; Increment PC |
||
17743 | jmp dword [z80regular+edx*4] |
||
17744 | |||
17745 | |||
17746 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17747 | |||
17748 | RegInst3d: |
||
17749 | sahf |
||
17750 | dec al |
||
17751 | lahf |
||
17752 | seto dl |
||
17753 | and ah, 0fbh ; Knock out parity/overflow |
||
17754 | shl dl, 2 |
||
17755 | or ah, dl |
||
17756 | or ah, 02h ; Set negative! |
||
17757 | sub edi, byte 4 |
||
17758 | js near noMoreExec |
||
17759 | mov dl, byte [esi] ; Get our next instruction |
||
17760 | inc esi ; Increment PC |
||
17761 | jmp dword [z80regular+edx*4] |
||
17762 | |||
17763 | |||
17764 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17765 | |||
17766 | RegInst3e: |
||
17767 | mov al, [esi] ; Get our immediate value |
||
17768 | inc esi |
||
17769 | sub edi, byte 7 |
||
17770 | js near noMoreExec |
||
17771 | mov dl, byte [esi] ; Get our next instruction |
||
17772 | inc esi ; Increment PC |
||
17773 | jmp dword [z80regular+edx*4] |
||
17774 | |||
17775 | |||
17776 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17777 | |||
17778 | RegInst3f: |
||
17779 | mov dl, ah |
||
17780 | and dl, 01h |
||
17781 | shl dl, 4 |
||
17782 | xor ah, 01h |
||
17783 | and ah, 0edh |
||
17784 | or ah, dl |
||
17785 | sub edi, byte 4 |
||
17786 | js near noMoreExec |
||
17787 | mov dl, byte [esi] ; Get our next instruction |
||
17788 | inc esi ; Increment PC |
||
17789 | jmp dword [z80regular+edx*4] |
||
17790 | |||
17791 | |||
17792 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17793 | |||
17794 | RegInst40: |
||
17795 | sub edi, byte 4 |
||
17796 | js near noMoreExec |
||
17797 | mov dl, byte [esi] ; Get our next instruction |
||
17798 | inc esi ; Increment PC |
||
17799 | jmp dword [z80regular+edx*4] |
||
17800 | |||
17801 | |||
17802 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17803 | |||
17804 | RegInst41: |
||
17805 | mov ch, cl |
||
17806 | sub edi, byte 4 |
||
17807 | js near noMoreExec |
||
17808 | mov dl, byte [esi] ; Get our next instruction |
||
17809 | inc esi ; Increment PC |
||
17810 | jmp dword [z80regular+edx*4] |
||
17811 | |||
17812 | |||
17813 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17814 | |||
17815 | RegInst42: |
||
17816 | mov ch, byte [_z80de + 1] |
||
17817 | sub edi, byte 4 |
||
17818 | js near noMoreExec |
||
17819 | mov dl, byte [esi] ; Get our next instruction |
||
17820 | inc esi ; Increment PC |
||
17821 | jmp dword [z80regular+edx*4] |
||
17822 | |||
17823 | |||
17824 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17825 | |||
17826 | RegInst43: |
||
17827 | mov ch, byte [_z80de] |
||
17828 | sub edi, byte 4 |
||
17829 | js near noMoreExec |
||
17830 | mov dl, byte [esi] ; Get our next instruction |
||
17831 | inc esi ; Increment PC |
||
17832 | jmp dword [z80regular+edx*4] |
||
17833 | |||
17834 | |||
17835 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17836 | |||
17837 | RegInst44: |
||
17838 | mov ch, bh |
||
17839 | sub edi, byte 4 |
||
17840 | js near noMoreExec |
||
17841 | mov dl, byte [esi] ; Get our next instruction |
||
17842 | inc esi ; Increment PC |
||
17843 | jmp dword [z80regular+edx*4] |
||
17844 | |||
17845 | |||
17846 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17847 | |||
17848 | RegInst45: |
||
17849 | mov ch, bl |
||
17850 | sub edi, byte 4 |
||
17851 | js near noMoreExec |
||
17852 | mov dl, byte [esi] ; Get our next instruction |
||
17853 | inc esi ; Increment PC |
||
17854 | jmp dword [z80regular+edx*4] |
||
17855 | |||
17856 | |||
17857 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17858 | |||
17859 | RegInst46: |
||
17860 | mov [cyclesRemaining], edi |
||
17861 | mov edi, [_z80MemRead] ; Point to the read array |
||
17862 | |||
17863 | checkLoop332: |
||
17864 | cmp [edi], word 0ffffh ; End of the list? |
||
17865 | je memoryRead332 |
||
17866 | cmp ebx, [edi] ; Are we smaller? |
||
17867 | jb nextAddr332 ; Yes, go to the next address |
||
17868 | cmp ebx, [edi+4] ; Are we bigger? |
||
17869 | jbe callRoutine332 |
||
17870 | |||
17871 | nextAddr332: |
||
17872 | add edi, 10h ; Next structure! |
||
17873 | jmp short checkLoop332 |
||
17874 | |||
17875 | callRoutine332: |
||
17876 | mov dx, bx ; Get our address |
||
17877 | call ReadMemoryByte ; Standard read routine |
||
17878 | mov ch, al ; Put our returned value here |
||
17879 | mov ax, [_z80af] ; Get our AF back |
||
17880 | jmp short readExit332 |
||
17881 | |||
17882 | memoryRead332: |
||
17883 | mov ch, [ebp + ebx] ; Get our data |
||
17884 | |||
17885 | readExit332: |
||
17886 | mov edi, [cyclesRemaining] |
||
17887 | xor edx, edx |
||
17888 | sub edi, byte 7 |
||
17889 | js near noMoreExec |
||
17890 | mov dl, byte [esi] ; Get our next instruction |
||
17891 | inc esi ; Increment PC |
||
17892 | jmp dword [z80regular+edx*4] |
||
17893 | |||
17894 | |||
17895 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17896 | |||
17897 | RegInst47: |
||
17898 | mov ch, al |
||
17899 | sub edi, byte 4 |
||
17900 | js near noMoreExec |
||
17901 | mov dl, byte [esi] ; Get our next instruction |
||
17902 | inc esi ; Increment PC |
||
17903 | jmp dword [z80regular+edx*4] |
||
17904 | |||
17905 | |||
17906 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17907 | |||
17908 | RegInst48: |
||
17909 | mov cl, ch |
||
17910 | sub edi, byte 4 |
||
17911 | js near noMoreExec |
||
17912 | mov dl, byte [esi] ; Get our next instruction |
||
17913 | inc esi ; Increment PC |
||
17914 | jmp dword [z80regular+edx*4] |
||
17915 | |||
17916 | |||
17917 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17918 | |||
17919 | RegInst49: |
||
17920 | sub edi, byte 4 |
||
17921 | js near noMoreExec |
||
17922 | mov dl, byte [esi] ; Get our next instruction |
||
17923 | inc esi ; Increment PC |
||
17924 | jmp dword [z80regular+edx*4] |
||
17925 | |||
17926 | |||
17927 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17928 | |||
17929 | RegInst4a: |
||
17930 | mov cl, byte [_z80de + 1] |
||
17931 | sub edi, byte 4 |
||
17932 | js near noMoreExec |
||
17933 | mov dl, byte [esi] ; Get our next instruction |
||
17934 | inc esi ; Increment PC |
||
17935 | jmp dword [z80regular+edx*4] |
||
17936 | |||
17937 | |||
17938 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17939 | |||
17940 | RegInst4b: |
||
17941 | mov cl, byte [_z80de] |
||
17942 | sub edi, byte 4 |
||
17943 | js near noMoreExec |
||
17944 | mov dl, byte [esi] ; Get our next instruction |
||
17945 | inc esi ; Increment PC |
||
17946 | jmp dword [z80regular+edx*4] |
||
17947 | |||
17948 | |||
17949 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17950 | |||
17951 | RegInst4c: |
||
17952 | mov cl, bh |
||
17953 | sub edi, byte 4 |
||
17954 | js near noMoreExec |
||
17955 | mov dl, byte [esi] ; Get our next instruction |
||
17956 | inc esi ; Increment PC |
||
17957 | jmp dword [z80regular+edx*4] |
||
17958 | |||
17959 | |||
17960 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17961 | |||
17962 | RegInst4d: |
||
17963 | mov cl, bl |
||
17964 | sub edi, byte 4 |
||
17965 | js near noMoreExec |
||
17966 | mov dl, byte [esi] ; Get our next instruction |
||
17967 | inc esi ; Increment PC |
||
17968 | jmp dword [z80regular+edx*4] |
||
17969 | |||
17970 | |||
17971 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
17972 | |||
17973 | RegInst4e: |
||
17974 | mov [cyclesRemaining], edi |
||
17975 | mov edi, [_z80MemRead] ; Point to the read array |
||
17976 | |||
17977 | checkLoop333: |
||
17978 | cmp [edi], word 0ffffh ; End of the list? |
||
17979 | je memoryRead333 |
||
17980 | cmp ebx, [edi] ; Are we smaller? |
||
17981 | jb nextAddr333 ; Yes, go to the next address |
||
17982 | cmp ebx, [edi+4] ; Are we bigger? |
||
17983 | jbe callRoutine333 |
||
17984 | |||
17985 | nextAddr333: |
||
17986 | add edi, 10h ; Next structure! |
||
17987 | jmp short checkLoop333 |
||
17988 | |||
17989 | callRoutine333: |
||
17990 | mov dx, bx ; Get our address |
||
17991 | call ReadMemoryByte ; Standard read routine |
||
17992 | mov cl, al ; Put our returned value here |
||
17993 | mov ax, [_z80af] ; Get our AF back |
||
17994 | jmp short readExit333 |
||
17995 | |||
17996 | memoryRead333: |
||
17997 | mov cl, [ebp + ebx] ; Get our data |
||
17998 | |||
17999 | readExit333: |
||
18000 | mov edi, [cyclesRemaining] |
||
18001 | xor edx, edx |
||
18002 | sub edi, byte 7 |
||
18003 | js near noMoreExec |
||
18004 | mov dl, byte [esi] ; Get our next instruction |
||
18005 | inc esi ; Increment PC |
||
18006 | jmp dword [z80regular+edx*4] |
||
18007 | |||
18008 | |||
18009 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18010 | |||
18011 | RegInst4f: |
||
18012 | mov cl, al |
||
18013 | sub edi, byte 4 |
||
18014 | js near noMoreExec |
||
18015 | mov dl, byte [esi] ; Get our next instruction |
||
18016 | inc esi ; Increment PC |
||
18017 | jmp dword [z80regular+edx*4] |
||
18018 | |||
18019 | |||
18020 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18021 | |||
18022 | RegInst50: |
||
18023 | mov byte [_z80de + 1], ch |
||
18024 | sub edi, byte 4 |
||
18025 | js near noMoreExec |
||
18026 | mov dl, byte [esi] ; Get our next instruction |
||
18027 | inc esi ; Increment PC |
||
18028 | jmp dword [z80regular+edx*4] |
||
18029 | |||
18030 | |||
18031 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18032 | |||
18033 | RegInst51: |
||
18034 | mov byte [_z80de + 1], cl |
||
18035 | sub edi, byte 4 |
||
18036 | js near noMoreExec |
||
18037 | mov dl, byte [esi] ; Get our next instruction |
||
18038 | inc esi ; Increment PC |
||
18039 | jmp dword [z80regular+edx*4] |
||
18040 | |||
18041 | |||
18042 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18043 | |||
18044 | RegInst52: |
||
18045 | sub edi, byte 4 |
||
18046 | js near noMoreExec |
||
18047 | mov dl, byte [esi] ; Get our next instruction |
||
18048 | inc esi ; Increment PC |
||
18049 | jmp dword [z80regular+edx*4] |
||
18050 | |||
18051 | |||
18052 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18053 | |||
18054 | RegInst53: |
||
18055 | mov dl, byte [_z80de] |
||
18056 | mov [_z80de + 1], dl |
||
18057 | sub edi, byte 4 |
||
18058 | js near noMoreExec |
||
18059 | mov dl, byte [esi] ; Get our next instruction |
||
18060 | inc esi ; Increment PC |
||
18061 | jmp dword [z80regular+edx*4] |
||
18062 | |||
18063 | |||
18064 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18065 | |||
18066 | RegInst54: |
||
18067 | mov byte [_z80de + 1], bh |
||
18068 | sub edi, byte 4 |
||
18069 | js near noMoreExec |
||
18070 | mov dl, byte [esi] ; Get our next instruction |
||
18071 | inc esi ; Increment PC |
||
18072 | jmp dword [z80regular+edx*4] |
||
18073 | |||
18074 | |||
18075 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18076 | |||
18077 | RegInst55: |
||
18078 | mov byte [_z80de + 1], bl |
||
18079 | sub edi, byte 4 |
||
18080 | js near noMoreExec |
||
18081 | mov dl, byte [esi] ; Get our next instruction |
||
18082 | inc esi ; Increment PC |
||
18083 | jmp dword [z80regular+edx*4] |
||
18084 | |||
18085 | |||
18086 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18087 | |||
18088 | RegInst56: |
||
18089 | mov [cyclesRemaining], edi |
||
18090 | mov edi, [_z80MemRead] ; Point to the read array |
||
18091 | |||
18092 | checkLoop334: |
||
18093 | cmp [edi], word 0ffffh ; End of the list? |
||
18094 | je memoryRead334 |
||
18095 | cmp ebx, [edi] ; Are we smaller? |
||
18096 | jb nextAddr334 ; Yes, go to the next address |
||
18097 | cmp ebx, [edi+4] ; Are we bigger? |
||
18098 | jbe callRoutine334 |
||
18099 | |||
18100 | nextAddr334: |
||
18101 | add edi, 10h ; Next structure! |
||
18102 | jmp short checkLoop334 |
||
18103 | |||
18104 | callRoutine334: |
||
18105 | mov dx, bx ; Get our address |
||
18106 | call ReadMemoryByte ; Standard read routine |
||
18107 | mov dh, al ; Put our returned value here |
||
18108 | mov ax, [_z80af] ; Get our AF back |
||
18109 | jmp short readExit334 |
||
18110 | |||
18111 | memoryRead334: |
||
18112 | mov dh, [ebp + ebx] ; Get our data |
||
18113 | |||
18114 | readExit334: |
||
18115 | mov edi, [cyclesRemaining] |
||
18116 | mov byte [_z80de + 1], dh |
||
18117 | xor edx, edx |
||
18118 | sub edi, byte 7 |
||
18119 | js near noMoreExec |
||
18120 | mov dl, byte [esi] ; Get our next instruction |
||
18121 | inc esi ; Increment PC |
||
18122 | jmp dword [z80regular+edx*4] |
||
18123 | |||
18124 | |||
18125 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18126 | |||
18127 | RegInst57: |
||
18128 | mov byte [_z80de + 1], al |
||
18129 | sub edi, byte 4 |
||
18130 | js near noMoreExec |
||
18131 | mov dl, byte [esi] ; Get our next instruction |
||
18132 | inc esi ; Increment PC |
||
18133 | jmp dword [z80regular+edx*4] |
||
18134 | |||
18135 | |||
18136 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18137 | |||
18138 | RegInst58: |
||
18139 | mov byte [_z80de], ch |
||
18140 | sub edi, byte 4 |
||
18141 | js near noMoreExec |
||
18142 | mov dl, byte [esi] ; Get our next instruction |
||
18143 | inc esi ; Increment PC |
||
18144 | jmp dword [z80regular+edx*4] |
||
18145 | |||
18146 | |||
18147 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18148 | |||
18149 | RegInst59: |
||
18150 | mov byte [_z80de], cl |
||
18151 | sub edi, byte 4 |
||
18152 | js near noMoreExec |
||
18153 | mov dl, byte [esi] ; Get our next instruction |
||
18154 | inc esi ; Increment PC |
||
18155 | jmp dword [z80regular+edx*4] |
||
18156 | |||
18157 | |||
18158 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18159 | |||
18160 | RegInst5a: |
||
18161 | mov dl, byte [_z80de + 1] |
||
18162 | mov [_z80de], dl |
||
18163 | sub edi, byte 4 |
||
18164 | js near noMoreExec |
||
18165 | mov dl, byte [esi] ; Get our next instruction |
||
18166 | inc esi ; Increment PC |
||
18167 | jmp dword [z80regular+edx*4] |
||
18168 | |||
18169 | |||
18170 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18171 | |||
18172 | RegInst5b: |
||
18173 | sub edi, byte 4 |
||
18174 | js near noMoreExec |
||
18175 | mov dl, byte [esi] ; Get our next instruction |
||
18176 | inc esi ; Increment PC |
||
18177 | jmp dword [z80regular+edx*4] |
||
18178 | |||
18179 | |||
18180 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18181 | |||
18182 | RegInst5c: |
||
18183 | mov byte [_z80de], bh |
||
18184 | sub edi, byte 4 |
||
18185 | js near noMoreExec |
||
18186 | mov dl, byte [esi] ; Get our next instruction |
||
18187 | inc esi ; Increment PC |
||
18188 | jmp dword [z80regular+edx*4] |
||
18189 | |||
18190 | |||
18191 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18192 | |||
18193 | RegInst5d: |
||
18194 | mov byte [_z80de], bl |
||
18195 | sub edi, byte 4 |
||
18196 | js near noMoreExec |
||
18197 | mov dl, byte [esi] ; Get our next instruction |
||
18198 | inc esi ; Increment PC |
||
18199 | jmp dword [z80regular+edx*4] |
||
18200 | |||
18201 | |||
18202 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18203 | |||
18204 | RegInst5e: |
||
18205 | mov [cyclesRemaining], edi |
||
18206 | mov edi, [_z80MemRead] ; Point to the read array |
||
18207 | |||
18208 | checkLoop335: |
||
18209 | cmp [edi], word 0ffffh ; End of the list? |
||
18210 | je memoryRead335 |
||
18211 | cmp ebx, [edi] ; Are we smaller? |
||
18212 | jb nextAddr335 ; Yes, go to the next address |
||
18213 | cmp ebx, [edi+4] ; Are we bigger? |
||
18214 | jbe callRoutine335 |
||
18215 | |||
18216 | nextAddr335: |
||
18217 | add edi, 10h ; Next structure! |
||
18218 | jmp short checkLoop335 |
||
18219 | |||
18220 | callRoutine335: |
||
18221 | mov dx, bx ; Get our address |
||
18222 | call ReadMemoryByte ; Standard read routine |
||
18223 | mov dl, al ; Put our returned value here |
||
18224 | mov ax, [_z80af] ; Get our AF back |
||
18225 | jmp short readExit335 |
||
18226 | |||
18227 | memoryRead335: |
||
18228 | mov dl, [ebp + ebx] ; Get our data |
||
18229 | |||
18230 | readExit335: |
||
18231 | mov edi, [cyclesRemaining] |
||
18232 | mov byte [_z80de], dl |
||
18233 | xor edx, edx |
||
18234 | sub edi, byte 7 |
||
18235 | js near noMoreExec |
||
18236 | mov dl, byte [esi] ; Get our next instruction |
||
18237 | inc esi ; Increment PC |
||
18238 | jmp dword [z80regular+edx*4] |
||
18239 | |||
18240 | |||
18241 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18242 | |||
18243 | RegInst5f: |
||
18244 | mov byte [_z80de], al |
||
18245 | sub edi, byte 4 |
||
18246 | js near noMoreExec |
||
18247 | mov dl, byte [esi] ; Get our next instruction |
||
18248 | inc esi ; Increment PC |
||
18249 | jmp dword [z80regular+edx*4] |
||
18250 | |||
18251 | |||
18252 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18253 | |||
18254 | RegInst60: |
||
18255 | mov bh, ch |
||
18256 | sub edi, byte 4 |
||
18257 | js near noMoreExec |
||
18258 | mov dl, byte [esi] ; Get our next instruction |
||
18259 | inc esi ; Increment PC |
||
18260 | jmp dword [z80regular+edx*4] |
||
18261 | |||
18262 | |||
18263 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18264 | |||
18265 | RegInst61: |
||
18266 | mov bh, cl |
||
18267 | sub edi, byte 4 |
||
18268 | js near noMoreExec |
||
18269 | mov dl, byte [esi] ; Get our next instruction |
||
18270 | inc esi ; Increment PC |
||
18271 | jmp dword [z80regular+edx*4] |
||
18272 | |||
18273 | |||
18274 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18275 | |||
18276 | RegInst62: |
||
18277 | mov bh, byte [_z80de + 1] |
||
18278 | sub edi, byte 4 |
||
18279 | js near noMoreExec |
||
18280 | mov dl, byte [esi] ; Get our next instruction |
||
18281 | inc esi ; Increment PC |
||
18282 | jmp dword [z80regular+edx*4] |
||
18283 | |||
18284 | |||
18285 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18286 | |||
18287 | RegInst63: |
||
18288 | mov bh, byte [_z80de] |
||
18289 | sub edi, byte 4 |
||
18290 | js near noMoreExec |
||
18291 | mov dl, byte [esi] ; Get our next instruction |
||
18292 | inc esi ; Increment PC |
||
18293 | jmp dword [z80regular+edx*4] |
||
18294 | |||
18295 | |||
18296 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18297 | |||
18298 | RegInst64: |
||
18299 | sub edi, byte 4 |
||
18300 | js near noMoreExec |
||
18301 | mov dl, byte [esi] ; Get our next instruction |
||
18302 | inc esi ; Increment PC |
||
18303 | jmp dword [z80regular+edx*4] |
||
18304 | |||
18305 | |||
18306 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18307 | |||
18308 | RegInst65: |
||
18309 | mov bh, bl |
||
18310 | sub edi, byte 4 |
||
18311 | js near noMoreExec |
||
18312 | mov dl, byte [esi] ; Get our next instruction |
||
18313 | inc esi ; Increment PC |
||
18314 | jmp dword [z80regular+edx*4] |
||
18315 | |||
18316 | |||
18317 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18318 | |||
18319 | RegInst66: |
||
18320 | mov [cyclesRemaining], edi |
||
18321 | mov edi, [_z80MemRead] ; Point to the read array |
||
18322 | |||
18323 | checkLoop336: |
||
18324 | cmp [edi], word 0ffffh ; End of the list? |
||
18325 | je memoryRead336 |
||
18326 | cmp ebx, [edi] ; Are we smaller? |
||
18327 | jb nextAddr336 ; Yes, go to the next address |
||
18328 | cmp ebx, [edi+4] ; Are we bigger? |
||
18329 | jbe callRoutine336 |
||
18330 | |||
18331 | nextAddr336: |
||
18332 | add edi, 10h ; Next structure! |
||
18333 | jmp short checkLoop336 |
||
18334 | |||
18335 | callRoutine336: |
||
18336 | mov dx, bx ; Get our address |
||
18337 | call ReadMemoryByte ; Standard read routine |
||
18338 | mov bh, al ; Put our returned value here |
||
18339 | mov ax, [_z80af] ; Get our AF back |
||
18340 | jmp short readExit336 |
||
18341 | |||
18342 | memoryRead336: |
||
18343 | mov bh, [ebp + ebx] ; Get our data |
||
18344 | |||
18345 | readExit336: |
||
18346 | mov edi, [cyclesRemaining] |
||
18347 | xor edx, edx |
||
18348 | sub edi, byte 7 |
||
18349 | js near noMoreExec |
||
18350 | mov dl, byte [esi] ; Get our next instruction |
||
18351 | inc esi ; Increment PC |
||
18352 | jmp dword [z80regular+edx*4] |
||
18353 | |||
18354 | |||
18355 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18356 | |||
18357 | RegInst67: |
||
18358 | mov bh, al |
||
18359 | sub edi, byte 4 |
||
18360 | js near noMoreExec |
||
18361 | mov dl, byte [esi] ; Get our next instruction |
||
18362 | inc esi ; Increment PC |
||
18363 | jmp dword [z80regular+edx*4] |
||
18364 | |||
18365 | |||
18366 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18367 | |||
18368 | RegInst68: |
||
18369 | mov bl, ch |
||
18370 | sub edi, byte 4 |
||
18371 | js near noMoreExec |
||
18372 | mov dl, byte [esi] ; Get our next instruction |
||
18373 | inc esi ; Increment PC |
||
18374 | jmp dword [z80regular+edx*4] |
||
18375 | |||
18376 | |||
18377 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18378 | |||
18379 | RegInst69: |
||
18380 | mov bl, cl |
||
18381 | sub edi, byte 4 |
||
18382 | js near noMoreExec |
||
18383 | mov dl, byte [esi] ; Get our next instruction |
||
18384 | inc esi ; Increment PC |
||
18385 | jmp dword [z80regular+edx*4] |
||
18386 | |||
18387 | |||
18388 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18389 | |||
18390 | RegInst6a: |
||
18391 | mov bl, byte [_z80de + 1] |
||
18392 | sub edi, byte 4 |
||
18393 | js near noMoreExec |
||
18394 | mov dl, byte [esi] ; Get our next instruction |
||
18395 | inc esi ; Increment PC |
||
18396 | jmp dword [z80regular+edx*4] |
||
18397 | |||
18398 | |||
18399 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18400 | |||
18401 | RegInst6b: |
||
18402 | mov bl, byte [_z80de] |
||
18403 | sub edi, byte 4 |
||
18404 | js near noMoreExec |
||
18405 | mov dl, byte [esi] ; Get our next instruction |
||
18406 | inc esi ; Increment PC |
||
18407 | jmp dword [z80regular+edx*4] |
||
18408 | |||
18409 | |||
18410 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18411 | |||
18412 | RegInst6c: |
||
18413 | mov bl, bh |
||
18414 | sub edi, byte 4 |
||
18415 | js near noMoreExec |
||
18416 | mov dl, byte [esi] ; Get our next instruction |
||
18417 | inc esi ; Increment PC |
||
18418 | jmp dword [z80regular+edx*4] |
||
18419 | |||
18420 | |||
18421 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18422 | |||
18423 | RegInst6d: |
||
18424 | sub edi, byte 4 |
||
18425 | js near noMoreExec |
||
18426 | mov dl, byte [esi] ; Get our next instruction |
||
18427 | inc esi ; Increment PC |
||
18428 | jmp dword [z80regular+edx*4] |
||
18429 | |||
18430 | |||
18431 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18432 | |||
18433 | RegInst6e: |
||
18434 | mov [cyclesRemaining], edi |
||
18435 | mov edi, [_z80MemRead] ; Point to the read array |
||
18436 | |||
18437 | checkLoop337: |
||
18438 | cmp [edi], word 0ffffh ; End of the list? |
||
18439 | je memoryRead337 |
||
18440 | cmp ebx, [edi] ; Are we smaller? |
||
18441 | jb nextAddr337 ; Yes, go to the next address |
||
18442 | cmp ebx, [edi+4] ; Are we bigger? |
||
18443 | jbe callRoutine337 |
||
18444 | |||
18445 | nextAddr337: |
||
18446 | add edi, 10h ; Next structure! |
||
18447 | jmp short checkLoop337 |
||
18448 | |||
18449 | callRoutine337: |
||
18450 | mov dx, bx ; Get our address |
||
18451 | call ReadMemoryByte ; Standard read routine |
||
18452 | mov bl, al ; Put our returned value here |
||
18453 | mov ax, [_z80af] ; Get our AF back |
||
18454 | jmp short readExit337 |
||
18455 | |||
18456 | memoryRead337: |
||
18457 | mov bl, [ebp + ebx] ; Get our data |
||
18458 | |||
18459 | readExit337: |
||
18460 | mov edi, [cyclesRemaining] |
||
18461 | xor edx, edx |
||
18462 | sub edi, byte 7 |
||
18463 | js near noMoreExec |
||
18464 | mov dl, byte [esi] ; Get our next instruction |
||
18465 | inc esi ; Increment PC |
||
18466 | jmp dword [z80regular+edx*4] |
||
18467 | |||
18468 | |||
18469 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18470 | |||
18471 | RegInst6f: |
||
18472 | mov bl, al |
||
18473 | sub edi, byte 4 |
||
18474 | js near noMoreExec |
||
18475 | mov dl, byte [esi] ; Get our next instruction |
||
18476 | inc esi ; Increment PC |
||
18477 | jmp dword [z80regular+edx*4] |
||
18478 | |||
18479 | |||
18480 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18481 | |||
18482 | RegInst70: |
||
18483 | mov [cyclesRemaining], edi |
||
18484 | mov [_z80af], ax ; Store AF |
||
18485 | mov al, ch ; And our data to write |
||
18486 | mov edi, [_z80MemWrite] ; Point to the write array |
||
18487 | |||
18488 | checkLoop338: |
||
18489 | cmp [edi], word 0ffffh ; End of our list? |
||
18490 | je memoryWrite338 ; Yes - go write it! |
||
18491 | cmp bx, [edi] ; Are we smaller? |
||
18492 | jb nextAddr338 ; Yes... go to the next addr |
||
18493 | cmp bx, [edi+4] ; Are we smaller? |
||
18494 | jbe callRoutine338 ; If not, go call it! |
||
18495 | |||
18496 | nextAddr338: |
||
18497 | add edi, 10h ; Next structure, please |
||
18498 | jmp short checkLoop338 |
||
18499 | |||
18500 | callRoutine338: |
||
18501 | mov dx, bx ; Get our address to target |
||
18502 | call WriteMemoryByte ; Go write the data! |
||
18503 | jmp short WriteMacroExit338 |
||
18504 | memoryWrite338: |
||
18505 | mov [ebp + ebx], ch |
||
18506 | mov ax, [_z80af] ; Get our accumulator and flags |
||
18507 | WriteMacroExit338: |
||
18508 | mov edi, [cyclesRemaining] |
||
18509 | xor edx, edx |
||
18510 | sub edi, byte 7 |
||
18511 | js near noMoreExec |
||
18512 | mov dl, byte [esi] ; Get our next instruction |
||
18513 | inc esi ; Increment PC |
||
18514 | jmp dword [z80regular+edx*4] |
||
18515 | |||
18516 | |||
18517 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18518 | |||
18519 | RegInst71: |
||
18520 | mov [cyclesRemaining], edi |
||
18521 | mov [_z80af], ax ; Store AF |
||
18522 | mov al, cl ; And our data to write |
||
18523 | mov edi, [_z80MemWrite] ; Point to the write array |
||
18524 | |||
18525 | checkLoop339: |
||
18526 | cmp [edi], word 0ffffh ; End of our list? |
||
18527 | je memoryWrite339 ; Yes - go write it! |
||
18528 | cmp bx, [edi] ; Are we smaller? |
||
18529 | jb nextAddr339 ; Yes... go to the next addr |
||
18530 | cmp bx, [edi+4] ; Are we smaller? |
||
18531 | jbe callRoutine339 ; If not, go call it! |
||
18532 | |||
18533 | nextAddr339: |
||
18534 | add edi, 10h ; Next structure, please |
||
18535 | jmp short checkLoop339 |
||
18536 | |||
18537 | callRoutine339: |
||
18538 | mov dx, bx ; Get our address to target |
||
18539 | call WriteMemoryByte ; Go write the data! |
||
18540 | jmp short WriteMacroExit339 |
||
18541 | memoryWrite339: |
||
18542 | mov [ebp + ebx], cl |
||
18543 | mov ax, [_z80af] ; Get our accumulator and flags |
||
18544 | WriteMacroExit339: |
||
18545 | mov edi, [cyclesRemaining] |
||
18546 | xor edx, edx |
||
18547 | sub edi, byte 7 |
||
18548 | js near noMoreExec |
||
18549 | mov dl, byte [esi] ; Get our next instruction |
||
18550 | inc esi ; Increment PC |
||
18551 | jmp dword [z80regular+edx*4] |
||
18552 | |||
18553 | |||
18554 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18555 | |||
18556 | RegInst72: |
||
18557 | mov [cyclesRemaining], edi |
||
18558 | mov [_z80af], ax ; Store AF |
||
18559 | mov al, byte [_z80de + 1] ; And our data to write |
||
18560 | mov edi, [_z80MemWrite] ; Point to the write array |
||
18561 | |||
18562 | checkLoop340: |
||
18563 | cmp [edi], word 0ffffh ; End of our list? |
||
18564 | je memoryWrite340 ; Yes - go write it! |
||
18565 | cmp bx, [edi] ; Are we smaller? |
||
18566 | jb nextAddr340 ; Yes... go to the next addr |
||
18567 | cmp bx, [edi+4] ; Are we smaller? |
||
18568 | jbe callRoutine340 ; If not, go call it! |
||
18569 | |||
18570 | nextAddr340: |
||
18571 | add edi, 10h ; Next structure, please |
||
18572 | jmp short checkLoop340 |
||
18573 | |||
18574 | callRoutine340: |
||
18575 | mov dx, bx ; Get our address to target |
||
18576 | call WriteMemoryByte ; Go write the data! |
||
18577 | jmp short WriteMacroExit340 |
||
18578 | memoryWrite340: |
||
18579 | mov edi, edx |
||
18580 | mov dl, byte [_z80de + 1] |
||
18581 | mov [ebp + ebx], dl |
||
18582 | mov edx, edi |
||
18583 | mov ax, [_z80af] ; Get our accumulator and flags |
||
18584 | WriteMacroExit340: |
||
18585 | mov edi, [cyclesRemaining] |
||
18586 | xor edx, edx |
||
18587 | sub edi, byte 7 |
||
18588 | js near noMoreExec |
||
18589 | mov dl, byte [esi] ; Get our next instruction |
||
18590 | inc esi ; Increment PC |
||
18591 | jmp dword [z80regular+edx*4] |
||
18592 | |||
18593 | |||
18594 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18595 | |||
18596 | RegInst73: |
||
18597 | mov [cyclesRemaining], edi |
||
18598 | mov [_z80af], ax ; Store AF |
||
18599 | mov al, byte [_z80de] ; And our data to write |
||
18600 | mov edi, [_z80MemWrite] ; Point to the write array |
||
18601 | |||
18602 | checkLoop341: |
||
18603 | cmp [edi], word 0ffffh ; End of our list? |
||
18604 | je memoryWrite341 ; Yes - go write it! |
||
18605 | cmp bx, [edi] ; Are we smaller? |
||
18606 | jb nextAddr341 ; Yes... go to the next addr |
||
18607 | cmp bx, [edi+4] ; Are we smaller? |
||
18608 | jbe callRoutine341 ; If not, go call it! |
||
18609 | |||
18610 | nextAddr341: |
||
18611 | add edi, 10h ; Next structure, please |
||
18612 | jmp short checkLoop341 |
||
18613 | |||
18614 | callRoutine341: |
||
18615 | mov dx, bx ; Get our address to target |
||
18616 | call WriteMemoryByte ; Go write the data! |
||
18617 | jmp short WriteMacroExit341 |
||
18618 | memoryWrite341: |
||
18619 | mov edi, edx |
||
18620 | mov dl, byte [_z80de] |
||
18621 | mov [ebp + ebx], dl |
||
18622 | mov edx, edi |
||
18623 | mov ax, [_z80af] ; Get our accumulator and flags |
||
18624 | WriteMacroExit341: |
||
18625 | mov edi, [cyclesRemaining] |
||
18626 | xor edx, edx |
||
18627 | sub edi, byte 7 |
||
18628 | js near noMoreExec |
||
18629 | mov dl, byte [esi] ; Get our next instruction |
||
18630 | inc esi ; Increment PC |
||
18631 | jmp dword [z80regular+edx*4] |
||
18632 | |||
18633 | |||
18634 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18635 | |||
18636 | RegInst74: |
||
18637 | mov [cyclesRemaining], edi |
||
18638 | mov [_z80af], ax ; Store AF |
||
18639 | mov al, bh ; And our data to write |
||
18640 | mov edi, [_z80MemWrite] ; Point to the write array |
||
18641 | |||
18642 | checkLoop342: |
||
18643 | cmp [edi], word 0ffffh ; End of our list? |
||
18644 | je memoryWrite342 ; Yes - go write it! |
||
18645 | cmp bx, [edi] ; Are we smaller? |
||
18646 | jb nextAddr342 ; Yes... go to the next addr |
||
18647 | cmp bx, [edi+4] ; Are we smaller? |
||
18648 | jbe callRoutine342 ; If not, go call it! |
||
18649 | |||
18650 | nextAddr342: |
||
18651 | add edi, 10h ; Next structure, please |
||
18652 | jmp short checkLoop342 |
||
18653 | |||
18654 | callRoutine342: |
||
18655 | mov dx, bx ; Get our address to target |
||
18656 | call WriteMemoryByte ; Go write the data! |
||
18657 | jmp short WriteMacroExit342 |
||
18658 | memoryWrite342: |
||
18659 | mov [ebp + ebx], bh |
||
18660 | mov ax, [_z80af] ; Get our accumulator and flags |
||
18661 | WriteMacroExit342: |
||
18662 | mov edi, [cyclesRemaining] |
||
18663 | xor edx, edx |
||
18664 | sub edi, byte 7 |
||
18665 | js near noMoreExec |
||
18666 | mov dl, byte [esi] ; Get our next instruction |
||
18667 | inc esi ; Increment PC |
||
18668 | jmp dword [z80regular+edx*4] |
||
18669 | |||
18670 | |||
18671 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18672 | |||
18673 | RegInst75: |
||
18674 | mov [cyclesRemaining], edi |
||
18675 | mov [_z80af], ax ; Store AF |
||
18676 | mov al, bl ; And our data to write |
||
18677 | mov edi, [_z80MemWrite] ; Point to the write array |
||
18678 | |||
18679 | checkLoop343: |
||
18680 | cmp [edi], word 0ffffh ; End of our list? |
||
18681 | je memoryWrite343 ; Yes - go write it! |
||
18682 | cmp bx, [edi] ; Are we smaller? |
||
18683 | jb nextAddr343 ; Yes... go to the next addr |
||
18684 | cmp bx, [edi+4] ; Are we smaller? |
||
18685 | jbe callRoutine343 ; If not, go call it! |
||
18686 | |||
18687 | nextAddr343: |
||
18688 | add edi, 10h ; Next structure, please |
||
18689 | jmp short checkLoop343 |
||
18690 | |||
18691 | callRoutine343: |
||
18692 | mov dx, bx ; Get our address to target |
||
18693 | call WriteMemoryByte ; Go write the data! |
||
18694 | jmp short WriteMacroExit343 |
||
18695 | memoryWrite343: |
||
18696 | mov [ebp + ebx], bl |
||
18697 | mov ax, [_z80af] ; Get our accumulator and flags |
||
18698 | WriteMacroExit343: |
||
18699 | mov edi, [cyclesRemaining] |
||
18700 | xor edx, edx |
||
18701 | sub edi, byte 7 |
||
18702 | js near noMoreExec |
||
18703 | mov dl, byte [esi] ; Get our next instruction |
||
18704 | inc esi ; Increment PC |
||
18705 | jmp dword [z80regular+edx*4] |
||
18706 | |||
18707 | |||
18708 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18709 | |||
18710 | RegInst76: |
||
18711 | mov dword [_z80halted], 1 ; We've halted the chip! |
||
18712 | xor edi, edi |
||
18713 | mov [cyclesRemaining], edi |
||
18714 | jmp noMoreExec |
||
18715 | |||
18716 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18717 | |||
18718 | RegInst77: |
||
18719 | mov [cyclesRemaining], edi |
||
18720 | mov [_z80af], ax ; Store AF |
||
18721 | mov edi, [_z80MemWrite] ; Point to the write array |
||
18722 | |||
18723 | checkLoop344: |
||
18724 | cmp [edi], word 0ffffh ; End of our list? |
||
18725 | je memoryWrite344 ; Yes - go write it! |
||
18726 | cmp bx, [edi] ; Are we smaller? |
||
18727 | jb nextAddr344 ; Yes... go to the next addr |
||
18728 | cmp bx, [edi+4] ; Are we smaller? |
||
18729 | jbe callRoutine344 ; If not, go call it! |
||
18730 | |||
18731 | nextAddr344: |
||
18732 | add edi, 10h ; Next structure, please |
||
18733 | jmp short checkLoop344 |
||
18734 | |||
18735 | callRoutine344: |
||
18736 | mov dx, bx ; Get our address to target |
||
18737 | call WriteMemoryByte ; Go write the data! |
||
18738 | jmp short WriteMacroExit344 |
||
18739 | memoryWrite344: |
||
18740 | mov [ebp + ebx], al |
||
18741 | mov ax, [_z80af] ; Get our accumulator and flags |
||
18742 | WriteMacroExit344: |
||
18743 | mov edi, [cyclesRemaining] |
||
18744 | xor edx, edx |
||
18745 | sub edi, byte 7 |
||
18746 | js near noMoreExec |
||
18747 | mov dl, byte [esi] ; Get our next instruction |
||
18748 | inc esi ; Increment PC |
||
18749 | jmp dword [z80regular+edx*4] |
||
18750 | |||
18751 | |||
18752 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18753 | |||
18754 | RegInst78: |
||
18755 | mov al, ch |
||
18756 | sub edi, byte 4 |
||
18757 | js near noMoreExec |
||
18758 | mov dl, byte [esi] ; Get our next instruction |
||
18759 | inc esi ; Increment PC |
||
18760 | jmp dword [z80regular+edx*4] |
||
18761 | |||
18762 | |||
18763 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18764 | |||
18765 | RegInst79: |
||
18766 | mov al, cl |
||
18767 | sub edi, byte 4 |
||
18768 | js near noMoreExec |
||
18769 | mov dl, byte [esi] ; Get our next instruction |
||
18770 | inc esi ; Increment PC |
||
18771 | jmp dword [z80regular+edx*4] |
||
18772 | |||
18773 | |||
18774 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18775 | |||
18776 | RegInst7a: |
||
18777 | mov al, byte [_z80de + 1] |
||
18778 | sub edi, byte 4 |
||
18779 | js near noMoreExec |
||
18780 | mov dl, byte [esi] ; Get our next instruction |
||
18781 | inc esi ; Increment PC |
||
18782 | jmp dword [z80regular+edx*4] |
||
18783 | |||
18784 | |||
18785 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18786 | |||
18787 | RegInst7b: |
||
18788 | mov al, byte [_z80de] |
||
18789 | sub edi, byte 4 |
||
18790 | js near noMoreExec |
||
18791 | mov dl, byte [esi] ; Get our next instruction |
||
18792 | inc esi ; Increment PC |
||
18793 | jmp dword [z80regular+edx*4] |
||
18794 | |||
18795 | |||
18796 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18797 | |||
18798 | RegInst7c: |
||
18799 | mov al, bh |
||
18800 | sub edi, byte 4 |
||
18801 | js near noMoreExec |
||
18802 | mov dl, byte [esi] ; Get our next instruction |
||
18803 | inc esi ; Increment PC |
||
18804 | jmp dword [z80regular+edx*4] |
||
18805 | |||
18806 | |||
18807 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18808 | |||
18809 | RegInst7d: |
||
18810 | mov al, bl |
||
18811 | sub edi, byte 4 |
||
18812 | js near noMoreExec |
||
18813 | mov dl, byte [esi] ; Get our next instruction |
||
18814 | inc esi ; Increment PC |
||
18815 | jmp dword [z80regular+edx*4] |
||
18816 | |||
18817 | |||
18818 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18819 | |||
18820 | RegInst7e: |
||
18821 | mov [cyclesRemaining], edi |
||
18822 | mov edi, [_z80MemRead] ; Point to the read array |
||
18823 | |||
18824 | checkLoop345: |
||
18825 | cmp [edi], word 0ffffh ; End of the list? |
||
18826 | je memoryRead345 |
||
18827 | cmp ebx, [edi] ; Are we smaller? |
||
18828 | jb nextAddr345 ; Yes, go to the next address |
||
18829 | cmp ebx, [edi+4] ; Are we bigger? |
||
18830 | jbe callRoutine345 |
||
18831 | |||
18832 | nextAddr345: |
||
18833 | add edi, 10h ; Next structure! |
||
18834 | jmp short checkLoop345 |
||
18835 | |||
18836 | callRoutine345: |
||
18837 | mov dx, bx ; Get our address |
||
18838 | call ReadMemoryByte ; Standard read routine |
||
18839 | mov [_z80af], al ; Save our new accumulator |
||
18840 | mov ax, [_z80af] ; Get our AF back |
||
18841 | jmp short readExit345 |
||
18842 | |||
18843 | memoryRead345: |
||
18844 | mov al, [ebp + ebx] ; Get our data |
||
18845 | |||
18846 | readExit345: |
||
18847 | mov edi, [cyclesRemaining] |
||
18848 | xor edx, edx |
||
18849 | sub edi, byte 7 |
||
18850 | js near noMoreExec |
||
18851 | mov dl, byte [esi] ; Get our next instruction |
||
18852 | inc esi ; Increment PC |
||
18853 | jmp dword [z80regular+edx*4] |
||
18854 | |||
18855 | |||
18856 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18857 | |||
18858 | RegInst7f: |
||
18859 | sub edi, byte 4 |
||
18860 | js near noMoreExec |
||
18861 | mov dl, byte [esi] ; Get our next instruction |
||
18862 | inc esi ; Increment PC |
||
18863 | jmp dword [z80regular+edx*4] |
||
18864 | |||
18865 | |||
18866 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18867 | |||
18868 | RegInst80: |
||
18869 | sahf |
||
18870 | add al, ch |
||
18871 | lahf |
||
18872 | seto dl |
||
18873 | and ah, 0fbh ; Knock out parity/overflow |
||
18874 | shl dl, 2 |
||
18875 | or ah, dl |
||
18876 | and ah, 0fdh ; No N! |
||
18877 | sub edi, byte 4 |
||
18878 | js near noMoreExec |
||
18879 | mov dl, byte [esi] ; Get our next instruction |
||
18880 | inc esi ; Increment PC |
||
18881 | jmp dword [z80regular+edx*4] |
||
18882 | |||
18883 | |||
18884 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18885 | |||
18886 | RegInst81: |
||
18887 | sahf |
||
18888 | add al, cl |
||
18889 | lahf |
||
18890 | seto dl |
||
18891 | and ah, 0fbh ; Knock out parity/overflow |
||
18892 | shl dl, 2 |
||
18893 | or ah, dl |
||
18894 | and ah, 0fdh ; No N! |
||
18895 | sub edi, byte 4 |
||
18896 | js near noMoreExec |
||
18897 | mov dl, byte [esi] ; Get our next instruction |
||
18898 | inc esi ; Increment PC |
||
18899 | jmp dword [z80regular+edx*4] |
||
18900 | |||
18901 | |||
18902 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18903 | |||
18904 | RegInst82: |
||
18905 | sahf |
||
18906 | add al, byte [_z80de + 1] |
||
18907 | lahf |
||
18908 | seto dl |
||
18909 | and ah, 0fbh ; Knock out parity/overflow |
||
18910 | shl dl, 2 |
||
18911 | or ah, dl |
||
18912 | and ah, 0fdh ; No N! |
||
18913 | sub edi, byte 4 |
||
18914 | js near noMoreExec |
||
18915 | mov dl, byte [esi] ; Get our next instruction |
||
18916 | inc esi ; Increment PC |
||
18917 | jmp dword [z80regular+edx*4] |
||
18918 | |||
18919 | |||
18920 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18921 | |||
18922 | RegInst83: |
||
18923 | sahf |
||
18924 | add al, byte [_z80de] |
||
18925 | lahf |
||
18926 | seto dl |
||
18927 | and ah, 0fbh ; Knock out parity/overflow |
||
18928 | shl dl, 2 |
||
18929 | or ah, dl |
||
18930 | and ah, 0fdh ; No N! |
||
18931 | sub edi, byte 4 |
||
18932 | js near noMoreExec |
||
18933 | mov dl, byte [esi] ; Get our next instruction |
||
18934 | inc esi ; Increment PC |
||
18935 | jmp dword [z80regular+edx*4] |
||
18936 | |||
18937 | |||
18938 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18939 | |||
18940 | RegInst84: |
||
18941 | sahf |
||
18942 | add al, bh |
||
18943 | lahf |
||
18944 | seto dl |
||
18945 | and ah, 0fbh ; Knock out parity/overflow |
||
18946 | shl dl, 2 |
||
18947 | or ah, dl |
||
18948 | and ah, 0fdh ; No N! |
||
18949 | sub edi, byte 4 |
||
18950 | js near noMoreExec |
||
18951 | mov dl, byte [esi] ; Get our next instruction |
||
18952 | inc esi ; Increment PC |
||
18953 | jmp dword [z80regular+edx*4] |
||
18954 | |||
18955 | |||
18956 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18957 | |||
18958 | RegInst85: |
||
18959 | sahf |
||
18960 | add al, bl |
||
18961 | lahf |
||
18962 | seto dl |
||
18963 | and ah, 0fbh ; Knock out parity/overflow |
||
18964 | shl dl, 2 |
||
18965 | or ah, dl |
||
18966 | and ah, 0fdh ; No N! |
||
18967 | sub edi, byte 4 |
||
18968 | js near noMoreExec |
||
18969 | mov dl, byte [esi] ; Get our next instruction |
||
18970 | inc esi ; Increment PC |
||
18971 | jmp dword [z80regular+edx*4] |
||
18972 | |||
18973 | |||
18974 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
18975 | |||
18976 | RegInst86: |
||
18977 | mov [cyclesRemaining], edi |
||
18978 | mov edi, [_z80MemRead] ; Point to the read array |
||
18979 | |||
18980 | checkLoop346: |
||
18981 | cmp [edi], word 0ffffh ; End of the list? |
||
18982 | je memoryRead346 |
||
18983 | cmp ebx, [edi] ; Are we smaller? |
||
18984 | jb nextAddr346 ; Yes, go to the next address |
||
18985 | cmp ebx, [edi+4] ; Are we bigger? |
||
18986 | jbe callRoutine346 |
||
18987 | |||
18988 | nextAddr346: |
||
18989 | add edi, 10h ; Next structure! |
||
18990 | jmp short checkLoop346 |
||
18991 | |||
18992 | callRoutine346: |
||
18993 | mov dx, bx ; Get our address |
||
18994 | call ReadMemoryByte ; Standard read routine |
||
18995 | mov dl, al ; Put our returned value here |
||
18996 | mov ax, [_z80af] ; Get our AF back |
||
18997 | jmp short readExit346 |
||
18998 | |||
18999 | memoryRead346: |
||
19000 | mov dl, [ebp + ebx] ; Get our data |
||
19001 | |||
19002 | readExit346: |
||
19003 | mov edi, [cyclesRemaining] |
||
19004 | sahf |
||
19005 | add al, dl |
||
19006 | lahf |
||
19007 | seto dl |
||
19008 | and ah, 0fbh ; Knock out parity/overflow |
||
19009 | shl dl, 2 |
||
19010 | or ah, dl |
||
19011 | and ah, 0fdh ; No N! |
||
19012 | xor edx, edx ; Zero this... |
||
19013 | sub edi, byte 7 |
||
19014 | js near noMoreExec |
||
19015 | mov dl, byte [esi] ; Get our next instruction |
||
19016 | inc esi ; Increment PC |
||
19017 | jmp dword [z80regular+edx*4] |
||
19018 | |||
19019 | |||
19020 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19021 | |||
19022 | RegInst87: |
||
19023 | sahf |
||
19024 | add al, al |
||
19025 | lahf |
||
19026 | seto dl |
||
19027 | and ah, 0fbh ; Knock out parity/overflow |
||
19028 | shl dl, 2 |
||
19029 | or ah, dl |
||
19030 | and ah, 0fdh ; No N! |
||
19031 | sub edi, byte 4 |
||
19032 | js near noMoreExec |
||
19033 | mov dl, byte [esi] ; Get our next instruction |
||
19034 | inc esi ; Increment PC |
||
19035 | jmp dword [z80regular+edx*4] |
||
19036 | |||
19037 | |||
19038 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19039 | |||
19040 | RegInst88: |
||
19041 | sahf |
||
19042 | adc al, ch |
||
19043 | lahf |
||
19044 | seto dl |
||
19045 | and ah, 0fbh ; Knock out parity/overflow |
||
19046 | shl dl, 2 |
||
19047 | or ah, dl |
||
19048 | and ah, 0fdh ; No N! |
||
19049 | sub edi, byte 4 |
||
19050 | js near noMoreExec |
||
19051 | mov dl, byte [esi] ; Get our next instruction |
||
19052 | inc esi ; Increment PC |
||
19053 | jmp dword [z80regular+edx*4] |
||
19054 | |||
19055 | |||
19056 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19057 | |||
19058 | RegInst89: |
||
19059 | sahf |
||
19060 | adc al, cl |
||
19061 | lahf |
||
19062 | seto dl |
||
19063 | and ah, 0fbh ; Knock out parity/overflow |
||
19064 | shl dl, 2 |
||
19065 | or ah, dl |
||
19066 | and ah, 0fdh ; No N! |
||
19067 | sub edi, byte 4 |
||
19068 | js near noMoreExec |
||
19069 | mov dl, byte [esi] ; Get our next instruction |
||
19070 | inc esi ; Increment PC |
||
19071 | jmp dword [z80regular+edx*4] |
||
19072 | |||
19073 | |||
19074 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19075 | |||
19076 | RegInst8a: |
||
19077 | sahf |
||
19078 | adc al, byte [_z80de + 1] |
||
19079 | lahf |
||
19080 | seto dl |
||
19081 | and ah, 0fbh ; Knock out parity/overflow |
||
19082 | shl dl, 2 |
||
19083 | or ah, dl |
||
19084 | and ah, 0fdh ; No N! |
||
19085 | sub edi, byte 4 |
||
19086 | js near noMoreExec |
||
19087 | mov dl, byte [esi] ; Get our next instruction |
||
19088 | inc esi ; Increment PC |
||
19089 | jmp dword [z80regular+edx*4] |
||
19090 | |||
19091 | |||
19092 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19093 | |||
19094 | RegInst8b: |
||
19095 | sahf |
||
19096 | adc al, byte [_z80de] |
||
19097 | lahf |
||
19098 | seto dl |
||
19099 | and ah, 0fbh ; Knock out parity/overflow |
||
19100 | shl dl, 2 |
||
19101 | or ah, dl |
||
19102 | and ah, 0fdh ; No N! |
||
19103 | sub edi, byte 4 |
||
19104 | js near noMoreExec |
||
19105 | mov dl, byte [esi] ; Get our next instruction |
||
19106 | inc esi ; Increment PC |
||
19107 | jmp dword [z80regular+edx*4] |
||
19108 | |||
19109 | |||
19110 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19111 | |||
19112 | RegInst8c: |
||
19113 | sahf |
||
19114 | adc al, bh |
||
19115 | lahf |
||
19116 | seto dl |
||
19117 | and ah, 0fbh ; Knock out parity/overflow |
||
19118 | shl dl, 2 |
||
19119 | or ah, dl |
||
19120 | and ah, 0fdh ; No N! |
||
19121 | sub edi, byte 4 |
||
19122 | js near noMoreExec |
||
19123 | mov dl, byte [esi] ; Get our next instruction |
||
19124 | inc esi ; Increment PC |
||
19125 | jmp dword [z80regular+edx*4] |
||
19126 | |||
19127 | |||
19128 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19129 | |||
19130 | RegInst8d: |
||
19131 | sahf |
||
19132 | adc al, bl |
||
19133 | lahf |
||
19134 | seto dl |
||
19135 | and ah, 0fbh ; Knock out parity/overflow |
||
19136 | shl dl, 2 |
||
19137 | or ah, dl |
||
19138 | and ah, 0fdh ; No N! |
||
19139 | sub edi, byte 4 |
||
19140 | js near noMoreExec |
||
19141 | mov dl, byte [esi] ; Get our next instruction |
||
19142 | inc esi ; Increment PC |
||
19143 | jmp dword [z80regular+edx*4] |
||
19144 | |||
19145 | |||
19146 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19147 | |||
19148 | RegInst8e: |
||
19149 | mov [cyclesRemaining], edi |
||
19150 | mov edi, [_z80MemRead] ; Point to the read array |
||
19151 | |||
19152 | checkLoop347: |
||
19153 | cmp [edi], word 0ffffh ; End of the list? |
||
19154 | je memoryRead347 |
||
19155 | cmp ebx, [edi] ; Are we smaller? |
||
19156 | jb nextAddr347 ; Yes, go to the next address |
||
19157 | cmp ebx, [edi+4] ; Are we bigger? |
||
19158 | jbe callRoutine347 |
||
19159 | |||
19160 | nextAddr347: |
||
19161 | add edi, 10h ; Next structure! |
||
19162 | jmp short checkLoop347 |
||
19163 | |||
19164 | callRoutine347: |
||
19165 | mov dx, bx ; Get our address |
||
19166 | call ReadMemoryByte ; Standard read routine |
||
19167 | mov dl, al ; Put our returned value here |
||
19168 | mov ax, [_z80af] ; Get our AF back |
||
19169 | jmp short readExit347 |
||
19170 | |||
19171 | memoryRead347: |
||
19172 | mov dl, [ebp + ebx] ; Get our data |
||
19173 | |||
19174 | readExit347: |
||
19175 | mov edi, [cyclesRemaining] |
||
19176 | sahf |
||
19177 | adc al, dl |
||
19178 | lahf |
||
19179 | seto dl |
||
19180 | and ah, 0fbh ; Knock out parity/overflow |
||
19181 | shl dl, 2 |
||
19182 | or ah, dl |
||
19183 | and ah, 0fdh ; No N! |
||
19184 | xor edx, edx ; Zero this... |
||
19185 | sub edi, byte 7 |
||
19186 | js near noMoreExec |
||
19187 | mov dl, byte [esi] ; Get our next instruction |
||
19188 | inc esi ; Increment PC |
||
19189 | jmp dword [z80regular+edx*4] |
||
19190 | |||
19191 | |||
19192 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19193 | |||
19194 | RegInst8f: |
||
19195 | sahf |
||
19196 | adc al, al |
||
19197 | lahf |
||
19198 | seto dl |
||
19199 | and ah, 0fbh ; Knock out parity/overflow |
||
19200 | shl dl, 2 |
||
19201 | or ah, dl |
||
19202 | and ah, 0fdh ; No N! |
||
19203 | sub edi, byte 4 |
||
19204 | js near noMoreExec |
||
19205 | mov dl, byte [esi] ; Get our next instruction |
||
19206 | inc esi ; Increment PC |
||
19207 | jmp dword [z80regular+edx*4] |
||
19208 | |||
19209 | |||
19210 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19211 | |||
19212 | RegInst90: |
||
19213 | sahf |
||
19214 | sub al, ch |
||
19215 | lahf |
||
19216 | seto dl |
||
19217 | and ah, 0fbh ; Knock out parity/overflow |
||
19218 | shl dl, 2 |
||
19219 | or ah, dl |
||
19220 | or ah, 02h ; N Gets set! |
||
19221 | sub edi, byte 4 |
||
19222 | js near noMoreExec |
||
19223 | mov dl, byte [esi] ; Get our next instruction |
||
19224 | inc esi ; Increment PC |
||
19225 | jmp dword [z80regular+edx*4] |
||
19226 | |||
19227 | |||
19228 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19229 | |||
19230 | RegInst91: |
||
19231 | sahf |
||
19232 | sub al, cl |
||
19233 | lahf |
||
19234 | seto dl |
||
19235 | and ah, 0fbh ; Knock out parity/overflow |
||
19236 | shl dl, 2 |
||
19237 | or ah, dl |
||
19238 | or ah, 02h ; N Gets set! |
||
19239 | sub edi, byte 4 |
||
19240 | js near noMoreExec |
||
19241 | mov dl, byte [esi] ; Get our next instruction |
||
19242 | inc esi ; Increment PC |
||
19243 | jmp dword [z80regular+edx*4] |
||
19244 | |||
19245 | |||
19246 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19247 | |||
19248 | RegInst92: |
||
19249 | sahf |
||
19250 | sub al, byte [_z80de + 1] |
||
19251 | lahf |
||
19252 | seto dl |
||
19253 | and ah, 0fbh ; Knock out parity/overflow |
||
19254 | shl dl, 2 |
||
19255 | or ah, dl |
||
19256 | or ah, 02h ; N Gets set! |
||
19257 | sub edi, byte 4 |
||
19258 | js near noMoreExec |
||
19259 | mov dl, byte [esi] ; Get our next instruction |
||
19260 | inc esi ; Increment PC |
||
19261 | jmp dword [z80regular+edx*4] |
||
19262 | |||
19263 | |||
19264 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19265 | |||
19266 | RegInst93: |
||
19267 | sahf |
||
19268 | sub al, byte [_z80de] |
||
19269 | lahf |
||
19270 | seto dl |
||
19271 | and ah, 0fbh ; Knock out parity/overflow |
||
19272 | shl dl, 2 |
||
19273 | or ah, dl |
||
19274 | or ah, 02h ; N Gets set! |
||
19275 | sub edi, byte 4 |
||
19276 | js near noMoreExec |
||
19277 | mov dl, byte [esi] ; Get our next instruction |
||
19278 | inc esi ; Increment PC |
||
19279 | jmp dword [z80regular+edx*4] |
||
19280 | |||
19281 | |||
19282 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19283 | |||
19284 | RegInst94: |
||
19285 | sahf |
||
19286 | sub al, bh |
||
19287 | lahf |
||
19288 | seto dl |
||
19289 | and ah, 0fbh ; Knock out parity/overflow |
||
19290 | shl dl, 2 |
||
19291 | or ah, dl |
||
19292 | or ah, 02h ; N Gets set! |
||
19293 | sub edi, byte 4 |
||
19294 | js near noMoreExec |
||
19295 | mov dl, byte [esi] ; Get our next instruction |
||
19296 | inc esi ; Increment PC |
||
19297 | jmp dword [z80regular+edx*4] |
||
19298 | |||
19299 | |||
19300 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19301 | |||
19302 | RegInst95: |
||
19303 | sahf |
||
19304 | sub al, bl |
||
19305 | lahf |
||
19306 | seto dl |
||
19307 | and ah, 0fbh ; Knock out parity/overflow |
||
19308 | shl dl, 2 |
||
19309 | or ah, dl |
||
19310 | or ah, 02h ; N Gets set! |
||
19311 | sub edi, byte 4 |
||
19312 | js near noMoreExec |
||
19313 | mov dl, byte [esi] ; Get our next instruction |
||
19314 | inc esi ; Increment PC |
||
19315 | jmp dword [z80regular+edx*4] |
||
19316 | |||
19317 | |||
19318 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19319 | |||
19320 | RegInst96: |
||
19321 | mov [cyclesRemaining], edi |
||
19322 | mov edi, [_z80MemRead] ; Point to the read array |
||
19323 | |||
19324 | checkLoop348: |
||
19325 | cmp [edi], word 0ffffh ; End of the list? |
||
19326 | je memoryRead348 |
||
19327 | cmp ebx, [edi] ; Are we smaller? |
||
19328 | jb nextAddr348 ; Yes, go to the next address |
||
19329 | cmp ebx, [edi+4] ; Are we bigger? |
||
19330 | jbe callRoutine348 |
||
19331 | |||
19332 | nextAddr348: |
||
19333 | add edi, 10h ; Next structure! |
||
19334 | jmp short checkLoop348 |
||
19335 | |||
19336 | callRoutine348: |
||
19337 | mov dx, bx ; Get our address |
||
19338 | call ReadMemoryByte ; Standard read routine |
||
19339 | mov dl, al ; Put our returned value here |
||
19340 | mov ax, [_z80af] ; Get our AF back |
||
19341 | jmp short readExit348 |
||
19342 | |||
19343 | memoryRead348: |
||
19344 | mov dl, [ebp + ebx] ; Get our data |
||
19345 | |||
19346 | readExit348: |
||
19347 | mov edi, [cyclesRemaining] |
||
19348 | sahf |
||
19349 | sub al, dl |
||
19350 | lahf |
||
19351 | seto dl |
||
19352 | and ah, 0fbh ; Knock out parity/overflow |
||
19353 | shl dl, 2 |
||
19354 | or ah, dl |
||
19355 | or ah, 02h ; N Gets set! |
||
19356 | xor edx, edx ; Zero this... |
||
19357 | sub edi, byte 7 |
||
19358 | js near noMoreExec |
||
19359 | mov dl, byte [esi] ; Get our next instruction |
||
19360 | inc esi ; Increment PC |
||
19361 | jmp dword [z80regular+edx*4] |
||
19362 | |||
19363 | |||
19364 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19365 | |||
19366 | RegInst97: |
||
19367 | sahf |
||
19368 | sub al, al |
||
19369 | lahf |
||
19370 | seto dl |
||
19371 | and ah, 0fbh ; Knock out parity/overflow |
||
19372 | shl dl, 2 |
||
19373 | or ah, dl |
||
19374 | or ah, 02h ; N Gets set! |
||
19375 | sub edi, byte 4 |
||
19376 | js near noMoreExec |
||
19377 | mov dl, byte [esi] ; Get our next instruction |
||
19378 | inc esi ; Increment PC |
||
19379 | jmp dword [z80regular+edx*4] |
||
19380 | |||
19381 | |||
19382 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19383 | |||
19384 | RegInst98: |
||
19385 | sahf |
||
19386 | sbb al, ch |
||
19387 | lahf |
||
19388 | seto dl |
||
19389 | and ah, 0fbh ; Knock out parity/overflow |
||
19390 | shl dl, 2 |
||
19391 | or ah, dl |
||
19392 | or ah, 02h ; N Gets set! |
||
19393 | sub edi, byte 4 |
||
19394 | js near noMoreExec |
||
19395 | mov dl, byte [esi] ; Get our next instruction |
||
19396 | inc esi ; Increment PC |
||
19397 | jmp dword [z80regular+edx*4] |
||
19398 | |||
19399 | |||
19400 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19401 | |||
19402 | RegInst99: |
||
19403 | sahf |
||
19404 | sbb al, cl |
||
19405 | lahf |
||
19406 | seto dl |
||
19407 | and ah, 0fbh ; Knock out parity/overflow |
||
19408 | shl dl, 2 |
||
19409 | or ah, dl |
||
19410 | or ah, 02h ; N Gets set! |
||
19411 | sub edi, byte 4 |
||
19412 | js near noMoreExec |
||
19413 | mov dl, byte [esi] ; Get our next instruction |
||
19414 | inc esi ; Increment PC |
||
19415 | jmp dword [z80regular+edx*4] |
||
19416 | |||
19417 | |||
19418 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19419 | |||
19420 | RegInst9a: |
||
19421 | sahf |
||
19422 | sbb al, byte [_z80de + 1] |
||
19423 | lahf |
||
19424 | seto dl |
||
19425 | and ah, 0fbh ; Knock out parity/overflow |
||
19426 | shl dl, 2 |
||
19427 | or ah, dl |
||
19428 | or ah, 02h ; N Gets set! |
||
19429 | sub edi, byte 4 |
||
19430 | js near noMoreExec |
||
19431 | mov dl, byte [esi] ; Get our next instruction |
||
19432 | inc esi ; Increment PC |
||
19433 | jmp dword [z80regular+edx*4] |
||
19434 | |||
19435 | |||
19436 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19437 | |||
19438 | RegInst9b: |
||
19439 | sahf |
||
19440 | sbb al, byte [_z80de] |
||
19441 | lahf |
||
19442 | seto dl |
||
19443 | and ah, 0fbh ; Knock out parity/overflow |
||
19444 | shl dl, 2 |
||
19445 | or ah, dl |
||
19446 | or ah, 02h ; N Gets set! |
||
19447 | sub edi, byte 4 |
||
19448 | js near noMoreExec |
||
19449 | mov dl, byte [esi] ; Get our next instruction |
||
19450 | inc esi ; Increment PC |
||
19451 | jmp dword [z80regular+edx*4] |
||
19452 | |||
19453 | |||
19454 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19455 | |||
19456 | RegInst9c: |
||
19457 | sahf |
||
19458 | sbb al, bh |
||
19459 | lahf |
||
19460 | seto dl |
||
19461 | and ah, 0fbh ; Knock out parity/overflow |
||
19462 | shl dl, 2 |
||
19463 | or ah, dl |
||
19464 | or ah, 02h ; N Gets set! |
||
19465 | sub edi, byte 4 |
||
19466 | js near noMoreExec |
||
19467 | mov dl, byte [esi] ; Get our next instruction |
||
19468 | inc esi ; Increment PC |
||
19469 | jmp dword [z80regular+edx*4] |
||
19470 | |||
19471 | |||
19472 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19473 | |||
19474 | RegInst9d: |
||
19475 | sahf |
||
19476 | sbb al, bl |
||
19477 | lahf |
||
19478 | seto dl |
||
19479 | and ah, 0fbh ; Knock out parity/overflow |
||
19480 | shl dl, 2 |
||
19481 | or ah, dl |
||
19482 | or ah, 02h ; N Gets set! |
||
19483 | sub edi, byte 4 |
||
19484 | js near noMoreExec |
||
19485 | mov dl, byte [esi] ; Get our next instruction |
||
19486 | inc esi ; Increment PC |
||
19487 | jmp dword [z80regular+edx*4] |
||
19488 | |||
19489 | |||
19490 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19491 | |||
19492 | RegInst9e: |
||
19493 | mov [cyclesRemaining], edi |
||
19494 | mov edi, [_z80MemRead] ; Point to the read array |
||
19495 | |||
19496 | checkLoop349: |
||
19497 | cmp [edi], word 0ffffh ; End of the list? |
||
19498 | je memoryRead349 |
||
19499 | cmp ebx, [edi] ; Are we smaller? |
||
19500 | jb nextAddr349 ; Yes, go to the next address |
||
19501 | cmp ebx, [edi+4] ; Are we bigger? |
||
19502 | jbe callRoutine349 |
||
19503 | |||
19504 | nextAddr349: |
||
19505 | add edi, 10h ; Next structure! |
||
19506 | jmp short checkLoop349 |
||
19507 | |||
19508 | callRoutine349: |
||
19509 | mov dx, bx ; Get our address |
||
19510 | call ReadMemoryByte ; Standard read routine |
||
19511 | mov dl, al ; Put our returned value here |
||
19512 | mov ax, [_z80af] ; Get our AF back |
||
19513 | jmp short readExit349 |
||
19514 | |||
19515 | memoryRead349: |
||
19516 | mov dl, [ebp + ebx] ; Get our data |
||
19517 | |||
19518 | readExit349: |
||
19519 | mov edi, [cyclesRemaining] |
||
19520 | sahf |
||
19521 | sbb al, dl |
||
19522 | lahf |
||
19523 | seto dl |
||
19524 | and ah, 0fbh ; Knock out parity/overflow |
||
19525 | shl dl, 2 |
||
19526 | or ah, dl |
||
19527 | or ah, 02h ; N Gets set! |
||
19528 | xor edx, edx ; Zero this... |
||
19529 | sub edi, byte 7 |
||
19530 | js near noMoreExec |
||
19531 | mov dl, byte [esi] ; Get our next instruction |
||
19532 | inc esi ; Increment PC |
||
19533 | jmp dword [z80regular+edx*4] |
||
19534 | |||
19535 | |||
19536 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19537 | |||
19538 | RegInst9f: |
||
19539 | sahf |
||
19540 | sbb al, al |
||
19541 | lahf |
||
19542 | seto dl |
||
19543 | and ah, 0fbh ; Knock out parity/overflow |
||
19544 | shl dl, 2 |
||
19545 | or ah, dl |
||
19546 | or ah, 02h ; N Gets set! |
||
19547 | sub edi, byte 4 |
||
19548 | js near noMoreExec |
||
19549 | mov dl, byte [esi] ; Get our next instruction |
||
19550 | inc esi ; Increment PC |
||
19551 | jmp dword [z80regular+edx*4] |
||
19552 | |||
19553 | |||
19554 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19555 | |||
19556 | RegInsta0: |
||
19557 | sahf |
||
19558 | and al, ch |
||
19559 | lahf |
||
19560 | and ah, 0ech ; Only these flags matter! |
||
19561 | or ah, 010h ; Half carry gets set |
||
19562 | sub edi, byte 4 |
||
19563 | js near noMoreExec |
||
19564 | mov dl, byte [esi] ; Get our next instruction |
||
19565 | inc esi ; Increment PC |
||
19566 | jmp dword [z80regular+edx*4] |
||
19567 | |||
19568 | |||
19569 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19570 | |||
19571 | RegInsta1: |
||
19572 | sahf |
||
19573 | and al, cl |
||
19574 | lahf |
||
19575 | and ah, 0ech ; Only these flags matter! |
||
19576 | or ah, 010h ; Half carry gets set |
||
19577 | sub edi, byte 4 |
||
19578 | js near noMoreExec |
||
19579 | mov dl, byte [esi] ; Get our next instruction |
||
19580 | inc esi ; Increment PC |
||
19581 | jmp dword [z80regular+edx*4] |
||
19582 | |||
19583 | |||
19584 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19585 | |||
19586 | RegInsta2: |
||
19587 | sahf |
||
19588 | and al, byte [_z80de + 1] |
||
19589 | lahf |
||
19590 | and ah, 0ech ; Only these flags matter! |
||
19591 | or ah, 010h ; Half carry gets set |
||
19592 | sub edi, byte 4 |
||
19593 | js near noMoreExec |
||
19594 | mov dl, byte [esi] ; Get our next instruction |
||
19595 | inc esi ; Increment PC |
||
19596 | jmp dword [z80regular+edx*4] |
||
19597 | |||
19598 | |||
19599 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19600 | |||
19601 | RegInsta3: |
||
19602 | sahf |
||
19603 | and al, byte [_z80de] |
||
19604 | lahf |
||
19605 | and ah, 0ech ; Only these flags matter! |
||
19606 | or ah, 010h ; Half carry gets set |
||
19607 | sub edi, byte 4 |
||
19608 | js near noMoreExec |
||
19609 | mov dl, byte [esi] ; Get our next instruction |
||
19610 | inc esi ; Increment PC |
||
19611 | jmp dword [z80regular+edx*4] |
||
19612 | |||
19613 | |||
19614 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19615 | |||
19616 | RegInsta4: |
||
19617 | sahf |
||
19618 | and al, bh |
||
19619 | lahf |
||
19620 | and ah, 0ech ; Only these flags matter! |
||
19621 | or ah, 010h ; Half carry gets set |
||
19622 | sub edi, byte 4 |
||
19623 | js near noMoreExec |
||
19624 | mov dl, byte [esi] ; Get our next instruction |
||
19625 | inc esi ; Increment PC |
||
19626 | jmp dword [z80regular+edx*4] |
||
19627 | |||
19628 | |||
19629 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19630 | |||
19631 | RegInsta5: |
||
19632 | sahf |
||
19633 | and al, bl |
||
19634 | lahf |
||
19635 | and ah, 0ech ; Only these flags matter! |
||
19636 | or ah, 010h ; Half carry gets set |
||
19637 | sub edi, byte 4 |
||
19638 | js near noMoreExec |
||
19639 | mov dl, byte [esi] ; Get our next instruction |
||
19640 | inc esi ; Increment PC |
||
19641 | jmp dword [z80regular+edx*4] |
||
19642 | |||
19643 | |||
19644 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19645 | |||
19646 | RegInsta6: |
||
19647 | mov [cyclesRemaining], edi |
||
19648 | mov edi, [_z80MemRead] ; Point to the read array |
||
19649 | |||
19650 | checkLoop350: |
||
19651 | cmp [edi], word 0ffffh ; End of the list? |
||
19652 | je memoryRead350 |
||
19653 | cmp ebx, [edi] ; Are we smaller? |
||
19654 | jb nextAddr350 ; Yes, go to the next address |
||
19655 | cmp ebx, [edi+4] ; Are we bigger? |
||
19656 | jbe callRoutine350 |
||
19657 | |||
19658 | nextAddr350: |
||
19659 | add edi, 10h ; Next structure! |
||
19660 | jmp short checkLoop350 |
||
19661 | |||
19662 | callRoutine350: |
||
19663 | mov dx, bx ; Get our address |
||
19664 | call ReadMemoryByte ; Standard read routine |
||
19665 | mov dl, al ; Put our returned value here |
||
19666 | mov ax, [_z80af] ; Get our AF back |
||
19667 | jmp short readExit350 |
||
19668 | |||
19669 | memoryRead350: |
||
19670 | mov dl, [ebp + ebx] ; Get our data |
||
19671 | |||
19672 | readExit350: |
||
19673 | mov edi, [cyclesRemaining] |
||
19674 | sahf |
||
19675 | and al, dl |
||
19676 | lahf |
||
19677 | and ah, 0ech ; Only these flags matter! |
||
19678 | or ah, 010h ; Half carry gets set |
||
19679 | xor edx, edx ; Zero this... |
||
19680 | sub edi, byte 7 |
||
19681 | js near noMoreExec |
||
19682 | mov dl, byte [esi] ; Get our next instruction |
||
19683 | inc esi ; Increment PC |
||
19684 | jmp dword [z80regular+edx*4] |
||
19685 | |||
19686 | |||
19687 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19688 | |||
19689 | RegInsta7: |
||
19690 | sahf |
||
19691 | and al, al |
||
19692 | lahf |
||
19693 | and ah, 0ech ; Only these flags matter! |
||
19694 | or ah, 010h ; Half carry gets set |
||
19695 | sub edi, byte 4 |
||
19696 | js near noMoreExec |
||
19697 | mov dl, byte [esi] ; Get our next instruction |
||
19698 | inc esi ; Increment PC |
||
19699 | jmp dword [z80regular+edx*4] |
||
19700 | |||
19701 | |||
19702 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19703 | |||
19704 | RegInsta8: |
||
19705 | sahf |
||
19706 | xor al, ch |
||
19707 | lahf |
||
19708 | and ah, 0ech ; Only these flags matter! |
||
19709 | sub edi, byte 4 |
||
19710 | js near noMoreExec |
||
19711 | mov dl, byte [esi] ; Get our next instruction |
||
19712 | inc esi ; Increment PC |
||
19713 | jmp dword [z80regular+edx*4] |
||
19714 | |||
19715 | |||
19716 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19717 | |||
19718 | RegInsta9: |
||
19719 | sahf |
||
19720 | xor al, cl |
||
19721 | lahf |
||
19722 | and ah, 0ech ; Only these flags matter! |
||
19723 | sub edi, byte 4 |
||
19724 | js near noMoreExec |
||
19725 | mov dl, byte [esi] ; Get our next instruction |
||
19726 | inc esi ; Increment PC |
||
19727 | jmp dword [z80regular+edx*4] |
||
19728 | |||
19729 | |||
19730 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19731 | |||
19732 | RegInstaa: |
||
19733 | sahf |
||
19734 | xor al, byte [_z80de + 1] |
||
19735 | lahf |
||
19736 | and ah, 0ech ; Only these flags matter! |
||
19737 | sub edi, byte 4 |
||
19738 | js near noMoreExec |
||
19739 | mov dl, byte [esi] ; Get our next instruction |
||
19740 | inc esi ; Increment PC |
||
19741 | jmp dword [z80regular+edx*4] |
||
19742 | |||
19743 | |||
19744 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19745 | |||
19746 | RegInstab: |
||
19747 | sahf |
||
19748 | xor al, byte [_z80de] |
||
19749 | lahf |
||
19750 | and ah, 0ech ; Only these flags matter! |
||
19751 | sub edi, byte 4 |
||
19752 | js near noMoreExec |
||
19753 | mov dl, byte [esi] ; Get our next instruction |
||
19754 | inc esi ; Increment PC |
||
19755 | jmp dword [z80regular+edx*4] |
||
19756 | |||
19757 | |||
19758 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19759 | |||
19760 | RegInstac: |
||
19761 | sahf |
||
19762 | xor al, bh |
||
19763 | lahf |
||
19764 | and ah, 0ech ; Only these flags matter! |
||
19765 | sub edi, byte 4 |
||
19766 | js near noMoreExec |
||
19767 | mov dl, byte [esi] ; Get our next instruction |
||
19768 | inc esi ; Increment PC |
||
19769 | jmp dword [z80regular+edx*4] |
||
19770 | |||
19771 | |||
19772 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19773 | |||
19774 | RegInstad: |
||
19775 | sahf |
||
19776 | xor al, bl |
||
19777 | lahf |
||
19778 | and ah, 0ech ; Only these flags matter! |
||
19779 | sub edi, byte 4 |
||
19780 | js near noMoreExec |
||
19781 | mov dl, byte [esi] ; Get our next instruction |
||
19782 | inc esi ; Increment PC |
||
19783 | jmp dword [z80regular+edx*4] |
||
19784 | |||
19785 | |||
19786 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19787 | |||
19788 | RegInstae: |
||
19789 | mov [cyclesRemaining], edi |
||
19790 | mov edi, [_z80MemRead] ; Point to the read array |
||
19791 | |||
19792 | checkLoop351: |
||
19793 | cmp [edi], word 0ffffh ; End of the list? |
||
19794 | je memoryRead351 |
||
19795 | cmp ebx, [edi] ; Are we smaller? |
||
19796 | jb nextAddr351 ; Yes, go to the next address |
||
19797 | cmp ebx, [edi+4] ; Are we bigger? |
||
19798 | jbe callRoutine351 |
||
19799 | |||
19800 | nextAddr351: |
||
19801 | add edi, 10h ; Next structure! |
||
19802 | jmp short checkLoop351 |
||
19803 | |||
19804 | callRoutine351: |
||
19805 | mov dx, bx ; Get our address |
||
19806 | call ReadMemoryByte ; Standard read routine |
||
19807 | mov dl, al ; Put our returned value here |
||
19808 | mov ax, [_z80af] ; Get our AF back |
||
19809 | jmp short readExit351 |
||
19810 | |||
19811 | memoryRead351: |
||
19812 | mov dl, [ebp + ebx] ; Get our data |
||
19813 | |||
19814 | readExit351: |
||
19815 | mov edi, [cyclesRemaining] |
||
19816 | sahf |
||
19817 | xor al, dl |
||
19818 | lahf |
||
19819 | and ah, 0ech ; Only these flags matter! |
||
19820 | xor edx, edx ; Zero this... |
||
19821 | sub edi, byte 7 |
||
19822 | js near noMoreExec |
||
19823 | mov dl, byte [esi] ; Get our next instruction |
||
19824 | inc esi ; Increment PC |
||
19825 | jmp dword [z80regular+edx*4] |
||
19826 | |||
19827 | |||
19828 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19829 | |||
19830 | RegInstaf: |
||
19831 | sahf |
||
19832 | xor al, al |
||
19833 | lahf |
||
19834 | and ah, 0ech ; Only these flags matter! |
||
19835 | sub edi, byte 4 |
||
19836 | js near noMoreExec |
||
19837 | mov dl, byte [esi] ; Get our next instruction |
||
19838 | inc esi ; Increment PC |
||
19839 | jmp dword [z80regular+edx*4] |
||
19840 | |||
19841 | |||
19842 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19843 | |||
19844 | RegInstb0: |
||
19845 | sahf |
||
19846 | or al, ch |
||
19847 | lahf |
||
19848 | and ah, 0ech ; No H, N, or C |
||
19849 | sub edi, byte 4 |
||
19850 | js near noMoreExec |
||
19851 | mov dl, byte [esi] ; Get our next instruction |
||
19852 | inc esi ; Increment PC |
||
19853 | jmp dword [z80regular+edx*4] |
||
19854 | |||
19855 | |||
19856 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19857 | |||
19858 | RegInstb1: |
||
19859 | sahf |
||
19860 | or al, cl |
||
19861 | lahf |
||
19862 | and ah, 0ech ; No H, N, or C |
||
19863 | sub edi, byte 4 |
||
19864 | js near noMoreExec |
||
19865 | mov dl, byte [esi] ; Get our next instruction |
||
19866 | inc esi ; Increment PC |
||
19867 | jmp dword [z80regular+edx*4] |
||
19868 | |||
19869 | |||
19870 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19871 | |||
19872 | RegInstb2: |
||
19873 | sahf |
||
19874 | or al, byte [_z80de + 1] |
||
19875 | lahf |
||
19876 | and ah, 0ech ; No H, N, or C |
||
19877 | sub edi, byte 4 |
||
19878 | js near noMoreExec |
||
19879 | mov dl, byte [esi] ; Get our next instruction |
||
19880 | inc esi ; Increment PC |
||
19881 | jmp dword [z80regular+edx*4] |
||
19882 | |||
19883 | |||
19884 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19885 | |||
19886 | RegInstb3: |
||
19887 | sahf |
||
19888 | or al, byte [_z80de] |
||
19889 | lahf |
||
19890 | and ah, 0ech ; No H, N, or C |
||
19891 | sub edi, byte 4 |
||
19892 | js near noMoreExec |
||
19893 | mov dl, byte [esi] ; Get our next instruction |
||
19894 | inc esi ; Increment PC |
||
19895 | jmp dword [z80regular+edx*4] |
||
19896 | |||
19897 | |||
19898 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19899 | |||
19900 | RegInstb4: |
||
19901 | sahf |
||
19902 | or al, bh |
||
19903 | lahf |
||
19904 | and ah, 0ech ; No H, N, or C |
||
19905 | sub edi, byte 4 |
||
19906 | js near noMoreExec |
||
19907 | mov dl, byte [esi] ; Get our next instruction |
||
19908 | inc esi ; Increment PC |
||
19909 | jmp dword [z80regular+edx*4] |
||
19910 | |||
19911 | |||
19912 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19913 | |||
19914 | RegInstb5: |
||
19915 | sahf |
||
19916 | or al, bl |
||
19917 | lahf |
||
19918 | and ah, 0ech ; No H, N, or C |
||
19919 | sub edi, byte 4 |
||
19920 | js near noMoreExec |
||
19921 | mov dl, byte [esi] ; Get our next instruction |
||
19922 | inc esi ; Increment PC |
||
19923 | jmp dword [z80regular+edx*4] |
||
19924 | |||
19925 | |||
19926 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19927 | |||
19928 | RegInstb6: |
||
19929 | mov [cyclesRemaining], edi |
||
19930 | mov edi, [_z80MemRead] ; Point to the read array |
||
19931 | |||
19932 | checkLoop352: |
||
19933 | cmp [edi], word 0ffffh ; End of the list? |
||
19934 | je memoryRead352 |
||
19935 | cmp ebx, [edi] ; Are we smaller? |
||
19936 | jb nextAddr352 ; Yes, go to the next address |
||
19937 | cmp ebx, [edi+4] ; Are we bigger? |
||
19938 | jbe callRoutine352 |
||
19939 | |||
19940 | nextAddr352: |
||
19941 | add edi, 10h ; Next structure! |
||
19942 | jmp short checkLoop352 |
||
19943 | |||
19944 | callRoutine352: |
||
19945 | mov dx, bx ; Get our address |
||
19946 | call ReadMemoryByte ; Standard read routine |
||
19947 | mov dl, al ; Put our returned value here |
||
19948 | mov ax, [_z80af] ; Get our AF back |
||
19949 | jmp short readExit352 |
||
19950 | |||
19951 | memoryRead352: |
||
19952 | mov dl, [ebp + ebx] ; Get our data |
||
19953 | |||
19954 | readExit352: |
||
19955 | mov edi, [cyclesRemaining] |
||
19956 | sahf |
||
19957 | or al, dl |
||
19958 | lahf |
||
19959 | and ah, 0ech ; No H, N, or C |
||
19960 | xor edx, edx ; Zero this... |
||
19961 | sub edi, byte 7 |
||
19962 | js near noMoreExec |
||
19963 | mov dl, byte [esi] ; Get our next instruction |
||
19964 | inc esi ; Increment PC |
||
19965 | jmp dword [z80regular+edx*4] |
||
19966 | |||
19967 | |||
19968 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19969 | |||
19970 | RegInstb7: |
||
19971 | sahf |
||
19972 | or al, al |
||
19973 | lahf |
||
19974 | and ah, 0ech ; No H, N, or C |
||
19975 | sub edi, byte 4 |
||
19976 | js near noMoreExec |
||
19977 | mov dl, byte [esi] ; Get our next instruction |
||
19978 | inc esi ; Increment PC |
||
19979 | jmp dword [z80regular+edx*4] |
||
19980 | |||
19981 | |||
19982 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
19983 | |||
19984 | RegInstb8: |
||
19985 | sahf |
||
19986 | cmp al, ch |
||
19987 | lahf |
||
19988 | seto dl |
||
19989 | and ah, 0fbh ; Knock out parity/overflow |
||
19990 | shl dl, 2 |
||
19991 | or ah, dl |
||
19992 | or ah, 02h ; Set N for compare! |
||
19993 | sub edi, byte 4 |
||
19994 | js near noMoreExec |
||
19995 | mov dl, byte [esi] ; Get our next instruction |
||
19996 | inc esi ; Increment PC |
||
19997 | jmp dword [z80regular+edx*4] |
||
19998 | |||
19999 | |||
20000 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20001 | |||
20002 | RegInstb9: |
||
20003 | sahf |
||
20004 | cmp al, cl |
||
20005 | lahf |
||
20006 | seto dl |
||
20007 | and ah, 0fbh ; Knock out parity/overflow |
||
20008 | shl dl, 2 |
||
20009 | or ah, dl |
||
20010 | or ah, 02h ; Set N for compare! |
||
20011 | sub edi, byte 4 |
||
20012 | js near noMoreExec |
||
20013 | mov dl, byte [esi] ; Get our next instruction |
||
20014 | inc esi ; Increment PC |
||
20015 | jmp dword [z80regular+edx*4] |
||
20016 | |||
20017 | |||
20018 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20019 | |||
20020 | RegInstba: |
||
20021 | sahf |
||
20022 | cmp al, byte [_z80de + 1] |
||
20023 | lahf |
||
20024 | seto dl |
||
20025 | and ah, 0fbh ; Knock out parity/overflow |
||
20026 | shl dl, 2 |
||
20027 | or ah, dl |
||
20028 | or ah, 02h ; Set N for compare! |
||
20029 | sub edi, byte 4 |
||
20030 | js near noMoreExec |
||
20031 | mov dl, byte [esi] ; Get our next instruction |
||
20032 | inc esi ; Increment PC |
||
20033 | jmp dword [z80regular+edx*4] |
||
20034 | |||
20035 | |||
20036 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20037 | |||
20038 | RegInstbb: |
||
20039 | sahf |
||
20040 | cmp al, byte [_z80de] |
||
20041 | lahf |
||
20042 | seto dl |
||
20043 | and ah, 0fbh ; Knock out parity/overflow |
||
20044 | shl dl, 2 |
||
20045 | or ah, dl |
||
20046 | or ah, 02h ; Set N for compare! |
||
20047 | sub edi, byte 4 |
||
20048 | js near noMoreExec |
||
20049 | mov dl, byte [esi] ; Get our next instruction |
||
20050 | inc esi ; Increment PC |
||
20051 | jmp dword [z80regular+edx*4] |
||
20052 | |||
20053 | |||
20054 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20055 | |||
20056 | RegInstbc: |
||
20057 | sahf |
||
20058 | cmp al, bh |
||
20059 | lahf |
||
20060 | seto dl |
||
20061 | and ah, 0fbh ; Knock out parity/overflow |
||
20062 | shl dl, 2 |
||
20063 | or ah, dl |
||
20064 | or ah, 02h ; Set N for compare! |
||
20065 | sub edi, byte 4 |
||
20066 | js near noMoreExec |
||
20067 | mov dl, byte [esi] ; Get our next instruction |
||
20068 | inc esi ; Increment PC |
||
20069 | jmp dword [z80regular+edx*4] |
||
20070 | |||
20071 | |||
20072 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20073 | |||
20074 | RegInstbd: |
||
20075 | sahf |
||
20076 | cmp al, bl |
||
20077 | lahf |
||
20078 | seto dl |
||
20079 | and ah, 0fbh ; Knock out parity/overflow |
||
20080 | shl dl, 2 |
||
20081 | or ah, dl |
||
20082 | or ah, 02h ; Set N for compare! |
||
20083 | sub edi, byte 4 |
||
20084 | js near noMoreExec |
||
20085 | mov dl, byte [esi] ; Get our next instruction |
||
20086 | inc esi ; Increment PC |
||
20087 | jmp dword [z80regular+edx*4] |
||
20088 | |||
20089 | |||
20090 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20091 | |||
20092 | RegInstbe: |
||
20093 | mov [cyclesRemaining], edi |
||
20094 | mov edi, [_z80MemRead] ; Point to the read array |
||
20095 | |||
20096 | checkLoop353: |
||
20097 | cmp [edi], word 0ffffh ; End of the list? |
||
20098 | je memoryRead353 |
||
20099 | cmp ebx, [edi] ; Are we smaller? |
||
20100 | jb nextAddr353 ; Yes, go to the next address |
||
20101 | cmp ebx, [edi+4] ; Are we bigger? |
||
20102 | jbe callRoutine353 |
||
20103 | |||
20104 | nextAddr353: |
||
20105 | add edi, 10h ; Next structure! |
||
20106 | jmp short checkLoop353 |
||
20107 | |||
20108 | callRoutine353: |
||
20109 | mov dx, bx ; Get our address |
||
20110 | call ReadMemoryByte ; Standard read routine |
||
20111 | mov dl, al ; Put our returned value here |
||
20112 | mov ax, [_z80af] ; Get our AF back |
||
20113 | jmp short readExit353 |
||
20114 | |||
20115 | memoryRead353: |
||
20116 | mov dl, [ebp + ebx] ; Get our data |
||
20117 | |||
20118 | readExit353: |
||
20119 | mov edi, [cyclesRemaining] |
||
20120 | sahf |
||
20121 | cmp al, dl |
||
20122 | lahf |
||
20123 | seto dl |
||
20124 | and ah, 0fbh ; Knock out parity/overflow |
||
20125 | shl dl, 2 |
||
20126 | or ah, dl |
||
20127 | or ah, 02h ; Set N for compare! |
||
20128 | xor edx, edx ; Zero this... |
||
20129 | sub edi, byte 7 |
||
20130 | js near noMoreExec |
||
20131 | mov dl, byte [esi] ; Get our next instruction |
||
20132 | inc esi ; Increment PC |
||
20133 | jmp dword [z80regular+edx*4] |
||
20134 | |||
20135 | |||
20136 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20137 | |||
20138 | RegInstbf: |
||
20139 | sahf |
||
20140 | cmp al, al |
||
20141 | lahf |
||
20142 | seto dl |
||
20143 | and ah, 0fbh ; Knock out parity/overflow |
||
20144 | shl dl, 2 |
||
20145 | or ah, dl |
||
20146 | or ah, 02h ; Set N for compare! |
||
20147 | sub edi, byte 4 |
||
20148 | js near noMoreExec |
||
20149 | mov dl, byte [esi] ; Get our next instruction |
||
20150 | inc esi ; Increment PC |
||
20151 | jmp dword [z80regular+edx*4] |
||
20152 | |||
20153 | |||
20154 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20155 | |||
20156 | RegInstc0: |
||
20157 | sahf |
||
20158 | jnz takeReturn354 |
||
20159 | jmp short retNotTaken354 |
||
20160 | takeReturn354: |
||
20161 | sub edi, byte 6 |
||
20162 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
20163 | mov si, [edx+ebp] ; Get our return address |
||
20164 | and esi, 0ffffh ; Only within 64K! |
||
20165 | add esi, ebp ; Add in our base address |
||
20166 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
20167 | xor edx, edx |
||
20168 | retNotTaken354: |
||
20169 | sub edi, byte 5 |
||
20170 | js near noMoreExec |
||
20171 | mov dl, byte [esi] ; Get our next instruction |
||
20172 | inc esi ; Increment PC |
||
20173 | jmp dword [z80regular+edx*4] |
||
20174 | |||
20175 | |||
20176 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20177 | |||
20178 | RegInstc1: |
||
20179 | mov dx, [_z80sp] |
||
20180 | mov [cyclesRemaining], edi |
||
20181 | mov edi, [_z80MemRead] ; Point to the read array |
||
20182 | |||
20183 | checkLoop355: |
||
20184 | cmp [edi], word 0ffffh ; End of the list? |
||
20185 | je memoryRead355 |
||
20186 | cmp dx, [edi] ; Are we smaller? |
||
20187 | jb nextAddr355 ; Yes, go to the next address |
||
20188 | cmp dx, [edi+4] ; Are we bigger? |
||
20189 | jbe callRoutine355 |
||
20190 | |||
20191 | nextAddr355: |
||
20192 | add edi, 10h ; Next structure! |
||
20193 | jmp short checkLoop355 |
||
20194 | |||
20195 | callRoutine355: |
||
20196 | push ax ; Save this for later |
||
20197 | push dx ; Save address |
||
20198 | call ReadMemoryByte ; Standard read routine |
||
20199 | pop dx ; Restore our address |
||
20200 | inc dx ; Next byte, please |
||
20201 | push ax ; Save returned byte |
||
20202 | call ReadMemoryByte ; Standard read routine |
||
20203 | xchg ah, al ; Swap for endian's sake |
||
20204 | pop dx ; Restore LSB |
||
20205 | mov dh, ah ; Our word is now in DX |
||
20206 | pop ax ; Restore this |
||
20207 | mov cx, dx ; Store our word |
||
20208 | jmp readExit355 |
||
20209 | |||
20210 | memoryRead355: |
||
20211 | mov cx, [ebp + edx] |
||
20212 | readExit355: |
||
20213 | mov edi, [cyclesRemaining] |
||
20214 | add word [_z80sp], 2 |
||
20215 | xor edx, edx |
||
20216 | sub edi, byte 10 |
||
20217 | js near noMoreExec |
||
20218 | mov dl, byte [esi] ; Get our next instruction |
||
20219 | inc esi ; Increment PC |
||
20220 | jmp dword [z80regular+edx*4] |
||
20221 | |||
20222 | |||
20223 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20224 | |||
20225 | RegInstc2: |
||
20226 | sahf ; Restore our flags |
||
20227 | jnz takeJump356 ; We're going to take a jump |
||
20228 | add esi, 2 ; Skip past the address |
||
20229 | jmp short nextInst356 ; Go execute the next instruction |
||
20230 | takeJump356: |
||
20231 | mov si, [esi] ; Get our new offset |
||
20232 | and esi, 0ffffh ; Only the lower WORD is valid |
||
20233 | add esi, ebp ; Our new address! |
||
20234 | nextInst356: |
||
20235 | sub edi, byte 10 |
||
20236 | js near noMoreExec |
||
20237 | mov dl, byte [esi] ; Get our next instruction |
||
20238 | inc esi ; Increment PC |
||
20239 | jmp dword [z80regular+edx*4] |
||
20240 | |||
20241 | |||
20242 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20243 | |||
20244 | RegInstc3: |
||
20245 | mov si, [esi] ; Get our new address |
||
20246 | and esi, 0ffffh ; Only the lower 16 bits |
||
20247 | add esi, ebp ; Our new address! |
||
20248 | sub edi, byte 10 |
||
20249 | js near noMoreExec |
||
20250 | mov dl, byte [esi] ; Get our next instruction |
||
20251 | inc esi ; Increment PC |
||
20252 | jmp dword [z80regular+edx*4] |
||
20253 | |||
20254 | |||
20255 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20256 | |||
20257 | RegInstc4: |
||
20258 | sahf ; Restore our flags |
||
20259 | jnz takeJump357 ; We're going call in this case |
||
20260 | add esi, 2 ; Skip past the address |
||
20261 | jmp short noCallTaken357 ; Go execute the next instruction |
||
20262 | takeJump357: |
||
20263 | sub edi, 7 |
||
20264 | mov dx, [esi] ; Get our call to address |
||
20265 | mov [_z80pc], dx ; Store our new program counter |
||
20266 | add esi, 2 ; Skip to our new address to be pushed |
||
20267 | sub esi, ebp ; Value to push onto the "stack" |
||
20268 | mov dx, word [_z80sp] ; Get the current stack pointer |
||
20269 | sub dx, 2 ; Back up two bytes |
||
20270 | mov [ebp+edx], si ; PUSH It! |
||
20271 | mov word [_z80sp], dx ; Store our new stack pointer |
||
20272 | mov si, [_z80pc] ; Get our new program counter |
||
20273 | add esi, ebp ; Naturalize it! |
||
20274 | noCallTaken357: |
||
20275 | xor edx, edx |
||
20276 | sub edi, byte 10 |
||
20277 | js near noMoreExec |
||
20278 | mov dl, byte [esi] ; Get our next instruction |
||
20279 | inc esi ; Increment PC |
||
20280 | jmp dword [z80regular+edx*4] |
||
20281 | |||
20282 | |||
20283 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20284 | |||
20285 | RegInstc5: |
||
20286 | sub word [_z80sp], 2 |
||
20287 | mov dx, [_z80sp] |
||
20288 | mov [cyclesRemaining], edi |
||
20289 | mov edi, [_z80MemWrite] ; Point to the write array |
||
20290 | |||
20291 | checkLoop358: |
||
20292 | cmp [edi], word 0ffffh ; End of the list? |
||
20293 | je memoryWrite358 |
||
20294 | cmp dx, [edi] ; Are we smaller? |
||
20295 | jb nextAddr358 ; Yes, go to the next address |
||
20296 | cmp dx, [edi+4] ; Are we bigger? |
||
20297 | jbe callRoutine358 |
||
20298 | |||
20299 | nextAddr358: |
||
20300 | add edi, 10h ; Next structure! |
||
20301 | jmp short checkLoop358 |
||
20302 | |||
20303 | callRoutine358: |
||
20304 | push ax ; Save this for later |
||
20305 | push dx |
||
20306 | mov ax, cx |
||
20307 | call WriteMemoryByte |
||
20308 | pop dx |
||
20309 | pop ax |
||
20310 | inc dx |
||
20311 | |||
20312 | push ax |
||
20313 | push dx |
||
20314 | mov ax, cx |
||
20315 | xchg ah, al |
||
20316 | call WriteMemoryByte |
||
20317 | pop dx |
||
20318 | pop ax ; Restore us! |
||
20319 | jmp writeExit358 |
||
20320 | |||
20321 | memoryWrite358: |
||
20322 | mov [ebp + edx], cx ; Store our word |
||
20323 | writeExit358: |
||
20324 | mov edi, [cyclesRemaining] |
||
20325 | xor edx, edx |
||
20326 | sub edi, byte 11 |
||
20327 | js near noMoreExec |
||
20328 | mov dl, byte [esi] ; Get our next instruction |
||
20329 | inc esi ; Increment PC |
||
20330 | jmp dword [z80regular+edx*4] |
||
20331 | |||
20332 | |||
20333 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20334 | |||
20335 | RegInstc6: |
||
20336 | sahf |
||
20337 | add al, [esi] |
||
20338 | lahf |
||
20339 | seto dl |
||
20340 | and ah, 0fbh ; Knock out parity/overflow |
||
20341 | shl dl, 2 |
||
20342 | or ah, dl |
||
20343 | and ah, 0fdh ; Knock out N! |
||
20344 | inc esi |
||
20345 | sub edi, byte 7 |
||
20346 | js near noMoreExec |
||
20347 | mov dl, byte [esi] ; Get our next instruction |
||
20348 | inc esi ; Increment PC |
||
20349 | jmp dword [z80regular+edx*4] |
||
20350 | |||
20351 | |||
20352 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20353 | |||
20354 | RegInstc7: |
||
20355 | mov dx, word [_z80sp] ; Get our stack pointer |
||
20356 | sub dx, 2 ; Make room for the new value! |
||
20357 | mov word [_z80sp], dx ; Store our new stack pointer |
||
20358 | sub esi, ebp ; Get our real PC |
||
20359 | mov [ebp+edx], si ; Our return address |
||
20360 | mov si, 000h ; Our new call address |
||
20361 | add esi, ebp ; Back to the base! |
||
20362 | xor edx, edx |
||
20363 | sub edi, byte 11 |
||
20364 | js near noMoreExec |
||
20365 | mov dl, byte [esi] ; Get our next instruction |
||
20366 | inc esi ; Increment PC |
||
20367 | jmp dword [z80regular+edx*4] |
||
20368 | |||
20369 | |||
20370 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20371 | |||
20372 | RegInstc8: |
||
20373 | sahf |
||
20374 | jz takeReturn359 |
||
20375 | jmp short retNotTaken359 |
||
20376 | takeReturn359: |
||
20377 | sub edi, byte 6 |
||
20378 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
20379 | mov si, [edx+ebp] ; Get our return address |
||
20380 | and esi, 0ffffh ; Only within 64K! |
||
20381 | add esi, ebp ; Add in our base address |
||
20382 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
20383 | xor edx, edx |
||
20384 | retNotTaken359: |
||
20385 | sub edi, byte 5 |
||
20386 | js near noMoreExec |
||
20387 | mov dl, byte [esi] ; Get our next instruction |
||
20388 | inc esi ; Increment PC |
||
20389 | jmp dword [z80regular+edx*4] |
||
20390 | |||
20391 | |||
20392 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20393 | |||
20394 | RegInstc9: |
||
20395 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
20396 | mov si, [edx+ebp] ; Get our return address |
||
20397 | and esi, 0ffffh ; Only within 64K! |
||
20398 | add esi, ebp ; Add in our base address |
||
20399 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
20400 | xor edx, edx |
||
20401 | sub edi, byte 10 |
||
20402 | js near noMoreExec |
||
20403 | mov dl, byte [esi] ; Get our next instruction |
||
20404 | inc esi ; Increment PC |
||
20405 | jmp dword [z80regular+edx*4] |
||
20406 | |||
20407 | |||
20408 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20409 | |||
20410 | RegInstca: |
||
20411 | sahf ; Restore our flags |
||
20412 | jz takeJump360 ; We're going to take a jump |
||
20413 | add esi, 2 ; Skip past the address |
||
20414 | jmp short nextInst360 ; Go execute the next instruction |
||
20415 | takeJump360: |
||
20416 | mov si, [esi] ; Get our new offset |
||
20417 | and esi, 0ffffh ; Only the lower WORD is valid |
||
20418 | add esi, ebp ; Our new address! |
||
20419 | nextInst360: |
||
20420 | sub edi, byte 10 |
||
20421 | js near noMoreExec |
||
20422 | mov dl, byte [esi] ; Get our next instruction |
||
20423 | inc esi ; Increment PC |
||
20424 | jmp dword [z80regular+edx*4] |
||
20425 | |||
20426 | ; |
||
20427 | ; Handler for all CBxx instructions |
||
20428 | ; |
||
20429 | |||
20430 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20431 | |||
20432 | RegInstcb: |
||
20433 | mov dl, [esi] |
||
20434 | inc esi |
||
20435 | jmp dword [z80PrefixCB+edx*4] |
||
20436 | |||
20437 | |||
20438 | |||
20439 | |||
20440 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20441 | |||
20442 | RegInstcc: |
||
20443 | sahf ; Restore our flags |
||
20444 | jz takeJump361 ; We're going call in this case |
||
20445 | add esi, 2 ; Skip past the address |
||
20446 | jmp short noCallTaken361 ; Go execute the next instruction |
||
20447 | takeJump361: |
||
20448 | sub edi, 7 |
||
20449 | mov dx, [esi] ; Get our call to address |
||
20450 | mov [_z80pc], dx ; Store our new program counter |
||
20451 | add esi, 2 ; Skip to our new address to be pushed |
||
20452 | sub esi, ebp ; Value to push onto the "stack" |
||
20453 | mov dx, word [_z80sp] ; Get the current stack pointer |
||
20454 | sub dx, 2 ; Back up two bytes |
||
20455 | mov [ebp+edx], si ; PUSH It! |
||
20456 | mov word [_z80sp], dx ; Store our new stack pointer |
||
20457 | mov si, [_z80pc] ; Get our new program counter |
||
20458 | add esi, ebp ; Naturalize it! |
||
20459 | noCallTaken361: |
||
20460 | xor edx, edx |
||
20461 | sub edi, byte 10 |
||
20462 | js near noMoreExec |
||
20463 | mov dl, byte [esi] ; Get our next instruction |
||
20464 | inc esi ; Increment PC |
||
20465 | jmp dword [z80regular+edx*4] |
||
20466 | |||
20467 | |||
20468 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20469 | |||
20470 | RegInstcd: |
||
20471 | mov dx, [esi] ; Get our call to address |
||
20472 | mov [_z80pc], dx ; Store our new program counter |
||
20473 | add esi, 2 ; Skip to our new address to be pushed |
||
20474 | sub esi, ebp ; Value to push onto the "stack" |
||
20475 | mov dx, word [_z80sp] ; Get the current stack pointer |
||
20476 | sub dx, 2 ; Back up two bytes |
||
20477 | mov [ebp+edx], si ; PUSH It! |
||
20478 | mov word [_z80sp], dx ; Store our new stack pointer |
||
20479 | mov si, [_z80pc] ; Get our new program counter |
||
20480 | add esi, ebp ; Naturalize it! |
||
20481 | xor edx, edx |
||
20482 | sub edi, byte 17 |
||
20483 | js near noMoreExec |
||
20484 | mov dl, byte [esi] ; Get our next instruction |
||
20485 | inc esi ; Increment PC |
||
20486 | jmp dword [z80regular+edx*4] |
||
20487 | |||
20488 | |||
20489 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20490 | |||
20491 | RegInstce: |
||
20492 | sahf |
||
20493 | adc al, [esi] |
||
20494 | lahf |
||
20495 | seto dl |
||
20496 | and ah, 0fbh ; Knock out parity/overflow |
||
20497 | shl dl, 2 |
||
20498 | or ah, dl |
||
20499 | and ah, 0fdh ; Knock out N! |
||
20500 | inc esi |
||
20501 | sub edi, byte 7 |
||
20502 | js near noMoreExec |
||
20503 | mov dl, byte [esi] ; Get our next instruction |
||
20504 | inc esi ; Increment PC |
||
20505 | jmp dword [z80regular+edx*4] |
||
20506 | |||
20507 | |||
20508 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20509 | |||
20510 | RegInstcf: |
||
20511 | mov dx, word [_z80sp] ; Get our stack pointer |
||
20512 | sub dx, 2 ; Make room for the new value! |
||
20513 | mov word [_z80sp], dx ; Store our new stack pointer |
||
20514 | sub esi, ebp ; Get our real PC |
||
20515 | mov [ebp+edx], si ; Our return address |
||
20516 | mov si, 008h ; Our new call address |
||
20517 | add esi, ebp ; Back to the base! |
||
20518 | xor edx, edx |
||
20519 | sub edi, byte 11 |
||
20520 | js near noMoreExec |
||
20521 | mov dl, byte [esi] ; Get our next instruction |
||
20522 | inc esi ; Increment PC |
||
20523 | jmp dword [z80regular+edx*4] |
||
20524 | |||
20525 | |||
20526 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20527 | |||
20528 | RegInstd0: |
||
20529 | sahf |
||
20530 | jnc takeReturn362 |
||
20531 | jmp short retNotTaken362 |
||
20532 | takeReturn362: |
||
20533 | sub edi, byte 6 |
||
20534 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
20535 | mov si, [edx+ebp] ; Get our return address |
||
20536 | and esi, 0ffffh ; Only within 64K! |
||
20537 | add esi, ebp ; Add in our base address |
||
20538 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
20539 | xor edx, edx |
||
20540 | retNotTaken362: |
||
20541 | sub edi, byte 5 |
||
20542 | js near noMoreExec |
||
20543 | mov dl, byte [esi] ; Get our next instruction |
||
20544 | inc esi ; Increment PC |
||
20545 | jmp dword [z80regular+edx*4] |
||
20546 | |||
20547 | |||
20548 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20549 | |||
20550 | RegInstd1: |
||
20551 | mov dx, [_z80sp] |
||
20552 | mov [cyclesRemaining], edi |
||
20553 | mov edi, [_z80MemRead] ; Point to the read array |
||
20554 | |||
20555 | checkLoop363: |
||
20556 | cmp [edi], word 0ffffh ; End of the list? |
||
20557 | je memoryRead363 |
||
20558 | cmp dx, [edi] ; Are we smaller? |
||
20559 | jb nextAddr363 ; Yes, go to the next address |
||
20560 | cmp dx, [edi+4] ; Are we bigger? |
||
20561 | jbe callRoutine363 |
||
20562 | |||
20563 | nextAddr363: |
||
20564 | add edi, 10h ; Next structure! |
||
20565 | jmp short checkLoop363 |
||
20566 | |||
20567 | callRoutine363: |
||
20568 | push ax ; Save this for later |
||
20569 | push dx ; Save address |
||
20570 | call ReadMemoryByte ; Standard read routine |
||
20571 | pop dx ; Restore our address |
||
20572 | inc dx ; Next byte, please |
||
20573 | push ax ; Save returned byte |
||
20574 | call ReadMemoryByte ; Standard read routine |
||
20575 | xchg ah, al ; Swap for endian's sake |
||
20576 | pop dx ; Restore LSB |
||
20577 | mov dh, ah ; Our word is now in DX |
||
20578 | pop ax ; Restore this |
||
20579 | mov word [_z80de], dx ; Store our word |
||
20580 | jmp readExit363 |
||
20581 | |||
20582 | memoryRead363: |
||
20583 | mov dx, [ebp + edx] |
||
20584 | mov word [_z80de], dx |
||
20585 | readExit363: |
||
20586 | mov edi, [cyclesRemaining] |
||
20587 | add word [_z80sp], 2 |
||
20588 | xor edx, edx |
||
20589 | sub edi, byte 10 |
||
20590 | js near noMoreExec |
||
20591 | mov dl, byte [esi] ; Get our next instruction |
||
20592 | inc esi ; Increment PC |
||
20593 | jmp dword [z80regular+edx*4] |
||
20594 | |||
20595 | |||
20596 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20597 | |||
20598 | RegInstd2: |
||
20599 | sahf ; Restore our flags |
||
20600 | jnc takeJump364 ; We're going to take a jump |
||
20601 | add esi, 2 ; Skip past the address |
||
20602 | jmp short nextInst364 ; Go execute the next instruction |
||
20603 | takeJump364: |
||
20604 | mov si, [esi] ; Get our new offset |
||
20605 | and esi, 0ffffh ; Only the lower WORD is valid |
||
20606 | add esi, ebp ; Our new address! |
||
20607 | nextInst364: |
||
20608 | sub edi, byte 10 |
||
20609 | js near noMoreExec |
||
20610 | mov dl, byte [esi] ; Get our next instruction |
||
20611 | inc esi ; Increment PC |
||
20612 | jmp dword [z80regular+edx*4] |
||
20613 | |||
20614 | |||
20615 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20616 | |||
20617 | RegInstd3: |
||
20618 | mov dl, [esi] ; Get our address to 'out' to |
||
20619 | inc esi ; Next address |
||
20620 | mov [cyclesRemaining], edi |
||
20621 | mov [_z80af], ax ; Store AF |
||
20622 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
20623 | |||
20624 | checkLoop365: |
||
20625 | cmp [edi], word 0ffffh ; End of our list? |
||
20626 | je WriteMacroExit365 ; Yes - ignore it! |
||
20627 | cmp dx, [edi] ; Are we smaller? |
||
20628 | jb nextAddr365 ; Yes... go to the next addr |
||
20629 | cmp dx, [edi+2] ; Are we bigger? |
||
20630 | jbe callRoutine365 ; If not, go call it! |
||
20631 | |||
20632 | nextAddr365: |
||
20633 | add edi, 0ch ; Next structure, please |
||
20634 | jmp short checkLoop365 |
||
20635 | |||
20636 | callRoutine365: |
||
20637 | call WriteIOByte ; Go write the data! |
||
20638 | WriteMacroExit365: |
||
20639 | mov edi, [cyclesRemaining] |
||
20640 | xor edx, edx |
||
20641 | sub edi, byte 11 |
||
20642 | js near noMoreExec |
||
20643 | mov dl, byte [esi] ; Get our next instruction |
||
20644 | inc esi ; Increment PC |
||
20645 | jmp dword [z80regular+edx*4] |
||
20646 | |||
20647 | |||
20648 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20649 | |||
20650 | RegInstd4: |
||
20651 | sahf ; Restore our flags |
||
20652 | jnc takeJump366 ; We're going call in this case |
||
20653 | add esi, 2 ; Skip past the address |
||
20654 | jmp short noCallTaken366 ; Go execute the next instruction |
||
20655 | takeJump366: |
||
20656 | sub edi, 7 |
||
20657 | mov dx, [esi] ; Get our call to address |
||
20658 | mov [_z80pc], dx ; Store our new program counter |
||
20659 | add esi, 2 ; Skip to our new address to be pushed |
||
20660 | sub esi, ebp ; Value to push onto the "stack" |
||
20661 | mov dx, word [_z80sp] ; Get the current stack pointer |
||
20662 | sub dx, 2 ; Back up two bytes |
||
20663 | mov [ebp+edx], si ; PUSH It! |
||
20664 | mov word [_z80sp], dx ; Store our new stack pointer |
||
20665 | mov si, [_z80pc] ; Get our new program counter |
||
20666 | add esi, ebp ; Naturalize it! |
||
20667 | noCallTaken366: |
||
20668 | xor edx, edx |
||
20669 | sub edi, byte 10 |
||
20670 | js near noMoreExec |
||
20671 | mov dl, byte [esi] ; Get our next instruction |
||
20672 | inc esi ; Increment PC |
||
20673 | jmp dword [z80regular+edx*4] |
||
20674 | |||
20675 | |||
20676 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20677 | |||
20678 | RegInstd5: |
||
20679 | sub word [_z80sp], 2 |
||
20680 | mov dx, [_z80sp] |
||
20681 | mov [cyclesRemaining], edi |
||
20682 | mov edi, [_z80MemWrite] ; Point to the write array |
||
20683 | |||
20684 | checkLoop367: |
||
20685 | cmp [edi], word 0ffffh ; End of the list? |
||
20686 | je memoryWrite367 |
||
20687 | cmp dx, [edi] ; Are we smaller? |
||
20688 | jb nextAddr367 ; Yes, go to the next address |
||
20689 | cmp dx, [edi+4] ; Are we bigger? |
||
20690 | jbe callRoutine367 |
||
20691 | |||
20692 | nextAddr367: |
||
20693 | add edi, 10h ; Next structure! |
||
20694 | jmp short checkLoop367 |
||
20695 | |||
20696 | callRoutine367: |
||
20697 | push ax ; Save this for later |
||
20698 | push dx |
||
20699 | mov ax, word [_z80de] |
||
20700 | call WriteMemoryByte |
||
20701 | pop dx |
||
20702 | pop ax |
||
20703 | inc dx |
||
20704 | |||
20705 | push ax |
||
20706 | push dx |
||
20707 | mov ax, word [_z80de] |
||
20708 | xchg ah, al |
||
20709 | call WriteMemoryByte |
||
20710 | pop dx |
||
20711 | pop ax ; Restore us! |
||
20712 | jmp writeExit367 |
||
20713 | |||
20714 | memoryWrite367: |
||
20715 | mov di, word [_z80de] |
||
20716 | mov [ebp + edx], di ; Store our word |
||
20717 | writeExit367: |
||
20718 | mov edi, [cyclesRemaining] |
||
20719 | xor edx, edx |
||
20720 | sub edi, byte 11 |
||
20721 | js near noMoreExec |
||
20722 | mov dl, byte [esi] ; Get our next instruction |
||
20723 | inc esi ; Increment PC |
||
20724 | jmp dword [z80regular+edx*4] |
||
20725 | |||
20726 | |||
20727 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20728 | |||
20729 | RegInstd6: |
||
20730 | sahf |
||
20731 | sub al, [esi] |
||
20732 | lahf |
||
20733 | seto dl |
||
20734 | and ah, 0fbh ; Knock out parity/overflow |
||
20735 | shl dl, 2 |
||
20736 | or ah, dl |
||
20737 | or ah, 02h ; Set negative! |
||
20738 | inc esi |
||
20739 | sub edi, byte 7 |
||
20740 | js near noMoreExec |
||
20741 | mov dl, byte [esi] ; Get our next instruction |
||
20742 | inc esi ; Increment PC |
||
20743 | jmp dword [z80regular+edx*4] |
||
20744 | |||
20745 | |||
20746 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20747 | |||
20748 | RegInstd7: |
||
20749 | mov dx, word [_z80sp] ; Get our stack pointer |
||
20750 | sub dx, 2 ; Make room for the new value! |
||
20751 | mov word [_z80sp], dx ; Store our new stack pointer |
||
20752 | sub esi, ebp ; Get our real PC |
||
20753 | mov [ebp+edx], si ; Our return address |
||
20754 | mov si, 010h ; Our new call address |
||
20755 | add esi, ebp ; Back to the base! |
||
20756 | xor edx, edx |
||
20757 | sub edi, byte 11 |
||
20758 | js near noMoreExec |
||
20759 | mov dl, byte [esi] ; Get our next instruction |
||
20760 | inc esi ; Increment PC |
||
20761 | jmp dword [z80regular+edx*4] |
||
20762 | |||
20763 | |||
20764 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20765 | |||
20766 | RegInstd8: |
||
20767 | sahf |
||
20768 | jc takeReturn368 |
||
20769 | jmp short retNotTaken368 |
||
20770 | takeReturn368: |
||
20771 | sub edi, byte 6 |
||
20772 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
20773 | mov si, [edx+ebp] ; Get our return address |
||
20774 | and esi, 0ffffh ; Only within 64K! |
||
20775 | add esi, ebp ; Add in our base address |
||
20776 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
20777 | xor edx, edx |
||
20778 | retNotTaken368: |
||
20779 | sub edi, byte 5 |
||
20780 | js near noMoreExec |
||
20781 | mov dl, byte [esi] ; Get our next instruction |
||
20782 | inc esi ; Increment PC |
||
20783 | jmp dword [z80regular+edx*4] |
||
20784 | |||
20785 | |||
20786 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20787 | |||
20788 | RegInstd9: |
||
20789 | mov [cyclesRemaining], edi |
||
20790 | mov di, [_z80de] |
||
20791 | xchg cx, [_z80bcprime] |
||
20792 | xchg di, [_z80deprime] |
||
20793 | xchg bx, [_z80hlprime] |
||
20794 | mov [_z80de], di |
||
20795 | mov edi, [cyclesRemaining] |
||
20796 | sub edi, byte 4 |
||
20797 | js near noMoreExec |
||
20798 | mov dl, byte [esi] ; Get our next instruction |
||
20799 | inc esi ; Increment PC |
||
20800 | jmp dword [z80regular+edx*4] |
||
20801 | |||
20802 | |||
20803 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20804 | |||
20805 | RegInstda: |
||
20806 | sahf ; Restore our flags |
||
20807 | jc takeJump369 ; We're going to take a jump |
||
20808 | add esi, 2 ; Skip past the address |
||
20809 | jmp short nextInst369 ; Go execute the next instruction |
||
20810 | takeJump369: |
||
20811 | mov si, [esi] ; Get our new offset |
||
20812 | and esi, 0ffffh ; Only the lower WORD is valid |
||
20813 | add esi, ebp ; Our new address! |
||
20814 | nextInst369: |
||
20815 | sub edi, byte 10 |
||
20816 | js near noMoreExec |
||
20817 | mov dl, byte [esi] ; Get our next instruction |
||
20818 | inc esi ; Increment PC |
||
20819 | jmp dword [z80regular+edx*4] |
||
20820 | |||
20821 | |||
20822 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20823 | |||
20824 | RegInstdb: |
||
20825 | mov dl, [esi] ; Get our address to 'out' to |
||
20826 | inc esi ; Next address |
||
20827 | mov [cyclesRemaining], edi |
||
20828 | mov edi, [_z80IoRead] ; Point to the read array |
||
20829 | |||
20830 | checkLoop370: |
||
20831 | cmp [edi], word 0ffffh ; End of the list? |
||
20832 | je ioRead370 |
||
20833 | cmp dx, [edi] ; Are we smaller? |
||
20834 | jb nextAddr370 ; Yes, go to the next address |
||
20835 | cmp dx, [edi+2] ; Are we bigger? |
||
20836 | jbe callRoutine370 |
||
20837 | |||
20838 | nextAddr370: |
||
20839 | add edi, 0ch ; Next structure! |
||
20840 | jmp short checkLoop370 |
||
20841 | |||
20842 | callRoutine370: |
||
20843 | call ReadIOByte ; Standard read routine |
||
20844 | mov [_z80af], al ; Save our new accumulator |
||
20845 | mov ax, [_z80af] ; Get our AF back |
||
20846 | jmp short readExit370 |
||
20847 | |||
20848 | ioRead370: |
||
20849 | mov al, 0ffh ; An unreferenced read |
||
20850 | readExit370: |
||
20851 | mov edi, [cyclesRemaining] |
||
20852 | xor edx, edx |
||
20853 | sub edi, byte 11 |
||
20854 | js near noMoreExec |
||
20855 | mov dl, byte [esi] ; Get our next instruction |
||
20856 | inc esi ; Increment PC |
||
20857 | jmp dword [z80regular+edx*4] |
||
20858 | |||
20859 | |||
20860 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20861 | |||
20862 | RegInstdc: |
||
20863 | sahf ; Restore our flags |
||
20864 | jc takeJump371 ; We're going call in this case |
||
20865 | add esi, 2 ; Skip past the address |
||
20866 | jmp short noCallTaken371 ; Go execute the next instruction |
||
20867 | takeJump371: |
||
20868 | sub edi, 7 |
||
20869 | mov dx, [esi] ; Get our call to address |
||
20870 | mov [_z80pc], dx ; Store our new program counter |
||
20871 | add esi, 2 ; Skip to our new address to be pushed |
||
20872 | sub esi, ebp ; Value to push onto the "stack" |
||
20873 | mov dx, word [_z80sp] ; Get the current stack pointer |
||
20874 | sub dx, 2 ; Back up two bytes |
||
20875 | mov [ebp+edx], si ; PUSH It! |
||
20876 | mov word [_z80sp], dx ; Store our new stack pointer |
||
20877 | mov si, [_z80pc] ; Get our new program counter |
||
20878 | add esi, ebp ; Naturalize it! |
||
20879 | noCallTaken371: |
||
20880 | xor edx, edx |
||
20881 | sub edi, byte 10 |
||
20882 | js near noMoreExec |
||
20883 | mov dl, byte [esi] ; Get our next instruction |
||
20884 | inc esi ; Increment PC |
||
20885 | jmp dword [z80regular+edx*4] |
||
20886 | |||
20887 | ; |
||
20888 | ; Handler for all DDxx instructions |
||
20889 | ; |
||
20890 | |||
20891 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20892 | |||
20893 | RegInstdd: |
||
20894 | mov dl, [esi] |
||
20895 | inc esi |
||
20896 | jmp dword [z80PrefixDD+edx*4] |
||
20897 | |||
20898 | |||
20899 | |||
20900 | |||
20901 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20902 | |||
20903 | RegInstde: |
||
20904 | sahf |
||
20905 | sbb al, [esi] |
||
20906 | lahf |
||
20907 | seto dl |
||
20908 | and ah, 0fbh ; Knock out parity/overflow |
||
20909 | shl dl, 2 |
||
20910 | or ah, dl |
||
20911 | or ah, 02h ; Set negative! |
||
20912 | inc esi |
||
20913 | sub edi, byte 7 |
||
20914 | js near noMoreExec |
||
20915 | mov dl, byte [esi] ; Get our next instruction |
||
20916 | inc esi ; Increment PC |
||
20917 | jmp dword [z80regular+edx*4] |
||
20918 | |||
20919 | |||
20920 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20921 | |||
20922 | RegInstdf: |
||
20923 | mov dx, word [_z80sp] ; Get our stack pointer |
||
20924 | sub dx, 2 ; Make room for the new value! |
||
20925 | mov word [_z80sp], dx ; Store our new stack pointer |
||
20926 | sub esi, ebp ; Get our real PC |
||
20927 | mov [ebp+edx], si ; Our return address |
||
20928 | mov si, 018h ; Our new call address |
||
20929 | add esi, ebp ; Back to the base! |
||
20930 | xor edx, edx |
||
20931 | sub edi, byte 11 |
||
20932 | js near noMoreExec |
||
20933 | mov dl, byte [esi] ; Get our next instruction |
||
20934 | inc esi ; Increment PC |
||
20935 | jmp dword [z80regular+edx*4] |
||
20936 | |||
20937 | |||
20938 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20939 | |||
20940 | RegInste0: |
||
20941 | sahf |
||
20942 | jpo takeReturn372 |
||
20943 | jmp short retNotTaken372 |
||
20944 | takeReturn372: |
||
20945 | sub edi, byte 6 |
||
20946 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
20947 | mov si, [edx+ebp] ; Get our return address |
||
20948 | and esi, 0ffffh ; Only within 64K! |
||
20949 | add esi, ebp ; Add in our base address |
||
20950 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
20951 | xor edx, edx |
||
20952 | retNotTaken372: |
||
20953 | sub edi, byte 5 |
||
20954 | js near noMoreExec |
||
20955 | mov dl, byte [esi] ; Get our next instruction |
||
20956 | inc esi ; Increment PC |
||
20957 | jmp dword [z80regular+edx*4] |
||
20958 | |||
20959 | |||
20960 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
20961 | |||
20962 | RegInste1: |
||
20963 | mov dx, [_z80sp] |
||
20964 | mov [cyclesRemaining], edi |
||
20965 | mov edi, [_z80MemRead] ; Point to the read array |
||
20966 | |||
20967 | checkLoop373: |
||
20968 | cmp [edi], word 0ffffh ; End of the list? |
||
20969 | je memoryRead373 |
||
20970 | cmp dx, [edi] ; Are we smaller? |
||
20971 | jb nextAddr373 ; Yes, go to the next address |
||
20972 | cmp dx, [edi+4] ; Are we bigger? |
||
20973 | jbe callRoutine373 |
||
20974 | |||
20975 | nextAddr373: |
||
20976 | add edi, 10h ; Next structure! |
||
20977 | jmp short checkLoop373 |
||
20978 | |||
20979 | callRoutine373: |
||
20980 | push ax ; Save this for later |
||
20981 | push dx ; Save address |
||
20982 | call ReadMemoryByte ; Standard read routine |
||
20983 | pop dx ; Restore our address |
||
20984 | inc dx ; Next byte, please |
||
20985 | push ax ; Save returned byte |
||
20986 | call ReadMemoryByte ; Standard read routine |
||
20987 | xchg ah, al ; Swap for endian's sake |
||
20988 | pop dx ; Restore LSB |
||
20989 | mov dh, ah ; Our word is now in DX |
||
20990 | pop ax ; Restore this |
||
20991 | mov bx, dx ; Store our word |
||
20992 | jmp readExit373 |
||
20993 | |||
20994 | memoryRead373: |
||
20995 | mov bx, [ebp + edx] |
||
20996 | readExit373: |
||
20997 | mov edi, [cyclesRemaining] |
||
20998 | add word [_z80sp], 2 |
||
20999 | xor edx, edx |
||
21000 | sub edi, byte 10 |
||
21001 | js near noMoreExec |
||
21002 | mov dl, byte [esi] ; Get our next instruction |
||
21003 | inc esi ; Increment PC |
||
21004 | jmp dword [z80regular+edx*4] |
||
21005 | |||
21006 | |||
21007 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21008 | |||
21009 | RegInste2: |
||
21010 | sahf ; Restore our flags |
||
21011 | jpo takeJump374 ; We're going to take a jump |
||
21012 | add esi, 2 ; Skip past the address |
||
21013 | jmp short nextInst374 ; Go execute the next instruction |
||
21014 | takeJump374: |
||
21015 | mov si, [esi] ; Get our new offset |
||
21016 | and esi, 0ffffh ; Only the lower WORD is valid |
||
21017 | add esi, ebp ; Our new address! |
||
21018 | nextInst374: |
||
21019 | sub edi, byte 10 |
||
21020 | js near noMoreExec |
||
21021 | mov dl, byte [esi] ; Get our next instruction |
||
21022 | inc esi ; Increment PC |
||
21023 | jmp dword [z80regular+edx*4] |
||
21024 | |||
21025 | |||
21026 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21027 | |||
21028 | RegInste3: |
||
21029 | mov dx, word [_z80sp] |
||
21030 | xchg bx, [ebp+edx] |
||
21031 | xor edx, edx |
||
21032 | sub edi, byte 19 |
||
21033 | js near noMoreExec |
||
21034 | mov dl, byte [esi] ; Get our next instruction |
||
21035 | inc esi ; Increment PC |
||
21036 | jmp dword [z80regular+edx*4] |
||
21037 | |||
21038 | |||
21039 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21040 | |||
21041 | RegInste4: |
||
21042 | sahf ; Restore our flags |
||
21043 | jpo takeJump375 ; We're going call in this case |
||
21044 | add esi, 2 ; Skip past the address |
||
21045 | jmp short noCallTaken375 ; Go execute the next instruction |
||
21046 | takeJump375: |
||
21047 | sub edi, 7 |
||
21048 | mov dx, [esi] ; Get our call to address |
||
21049 | mov [_z80pc], dx ; Store our new program counter |
||
21050 | add esi, 2 ; Skip to our new address to be pushed |
||
21051 | sub esi, ebp ; Value to push onto the "stack" |
||
21052 | mov dx, word [_z80sp] ; Get the current stack pointer |
||
21053 | sub dx, 2 ; Back up two bytes |
||
21054 | mov [ebp+edx], si ; PUSH It! |
||
21055 | mov word [_z80sp], dx ; Store our new stack pointer |
||
21056 | mov si, [_z80pc] ; Get our new program counter |
||
21057 | add esi, ebp ; Naturalize it! |
||
21058 | noCallTaken375: |
||
21059 | xor edx, edx |
||
21060 | sub edi, byte 10 |
||
21061 | js near noMoreExec |
||
21062 | mov dl, byte [esi] ; Get our next instruction |
||
21063 | inc esi ; Increment PC |
||
21064 | jmp dword [z80regular+edx*4] |
||
21065 | |||
21066 | |||
21067 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21068 | |||
21069 | RegInste5: |
||
21070 | sub word [_z80sp], 2 |
||
21071 | mov dx, [_z80sp] |
||
21072 | mov [cyclesRemaining], edi |
||
21073 | mov edi, [_z80MemWrite] ; Point to the write array |
||
21074 | |||
21075 | checkLoop376: |
||
21076 | cmp [edi], word 0ffffh ; End of the list? |
||
21077 | je memoryWrite376 |
||
21078 | cmp dx, [edi] ; Are we smaller? |
||
21079 | jb nextAddr376 ; Yes, go to the next address |
||
21080 | cmp dx, [edi+4] ; Are we bigger? |
||
21081 | jbe callRoutine376 |
||
21082 | |||
21083 | nextAddr376: |
||
21084 | add edi, 10h ; Next structure! |
||
21085 | jmp short checkLoop376 |
||
21086 | |||
21087 | callRoutine376: |
||
21088 | push ax ; Save this for later |
||
21089 | push dx |
||
21090 | mov ax, bx |
||
21091 | call WriteMemoryByte |
||
21092 | pop dx |
||
21093 | pop ax |
||
21094 | inc dx |
||
21095 | |||
21096 | push ax |
||
21097 | push dx |
||
21098 | mov ax, bx |
||
21099 | xchg ah, al |
||
21100 | call WriteMemoryByte |
||
21101 | pop dx |
||
21102 | pop ax ; Restore us! |
||
21103 | jmp writeExit376 |
||
21104 | |||
21105 | memoryWrite376: |
||
21106 | mov [ebp + edx], bx ; Store our word |
||
21107 | writeExit376: |
||
21108 | mov edi, [cyclesRemaining] |
||
21109 | xor edx, edx |
||
21110 | sub edi, byte 11 |
||
21111 | js near noMoreExec |
||
21112 | mov dl, byte [esi] ; Get our next instruction |
||
21113 | inc esi ; Increment PC |
||
21114 | jmp dword [z80regular+edx*4] |
||
21115 | |||
21116 | |||
21117 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21118 | |||
21119 | RegInste6: |
||
21120 | sahf |
||
21121 | and al, [esi] |
||
21122 | lahf |
||
21123 | and ah, 0ech ; Only parity, half carry, sign, zero |
||
21124 | or ah, 10h ; Half carry |
||
21125 | inc esi |
||
21126 | sub edi, byte 7 |
||
21127 | js near noMoreExec |
||
21128 | mov dl, byte [esi] ; Get our next instruction |
||
21129 | inc esi ; Increment PC |
||
21130 | jmp dword [z80regular+edx*4] |
||
21131 | |||
21132 | |||
21133 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21134 | |||
21135 | RegInste7: |
||
21136 | mov dx, word [_z80sp] ; Get our stack pointer |
||
21137 | sub dx, 2 ; Make room for the new value! |
||
21138 | mov word [_z80sp], dx ; Store our new stack pointer |
||
21139 | sub esi, ebp ; Get our real PC |
||
21140 | mov [ebp+edx], si ; Our return address |
||
21141 | mov si, 020h ; Our new call address |
||
21142 | add esi, ebp ; Back to the base! |
||
21143 | xor edx, edx |
||
21144 | sub edi, byte 11 |
||
21145 | js near noMoreExec |
||
21146 | mov dl, byte [esi] ; Get our next instruction |
||
21147 | inc esi ; Increment PC |
||
21148 | jmp dword [z80regular+edx*4] |
||
21149 | |||
21150 | |||
21151 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21152 | |||
21153 | RegInste8: |
||
21154 | sahf |
||
21155 | jpe takeReturn377 |
||
21156 | jmp short retNotTaken377 |
||
21157 | takeReturn377: |
||
21158 | sub edi, byte 6 |
||
21159 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
21160 | mov si, [edx+ebp] ; Get our return address |
||
21161 | and esi, 0ffffh ; Only within 64K! |
||
21162 | add esi, ebp ; Add in our base address |
||
21163 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
21164 | xor edx, edx |
||
21165 | retNotTaken377: |
||
21166 | sub edi, byte 5 |
||
21167 | js near noMoreExec |
||
21168 | mov dl, byte [esi] ; Get our next instruction |
||
21169 | inc esi ; Increment PC |
||
21170 | jmp dword [z80regular+edx*4] |
||
21171 | |||
21172 | |||
21173 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21174 | |||
21175 | RegInste9: |
||
21176 | mov si, bx |
||
21177 | and esi, 0ffffh |
||
21178 | add esi, ebp |
||
21179 | sub edi, byte 4 |
||
21180 | js near noMoreExec |
||
21181 | mov dl, byte [esi] ; Get our next instruction |
||
21182 | inc esi ; Increment PC |
||
21183 | jmp dword [z80regular+edx*4] |
||
21184 | |||
21185 | |||
21186 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21187 | |||
21188 | RegInstea: |
||
21189 | sahf ; Restore our flags |
||
21190 | jpe takeJump378 ; We're going to take a jump |
||
21191 | add esi, 2 ; Skip past the address |
||
21192 | jmp short nextInst378 ; Go execute the next instruction |
||
21193 | takeJump378: |
||
21194 | mov si, [esi] ; Get our new offset |
||
21195 | and esi, 0ffffh ; Only the lower WORD is valid |
||
21196 | add esi, ebp ; Our new address! |
||
21197 | nextInst378: |
||
21198 | sub edi, byte 10 |
||
21199 | js near noMoreExec |
||
21200 | mov dl, byte [esi] ; Get our next instruction |
||
21201 | inc esi ; Increment PC |
||
21202 | jmp dword [z80regular+edx*4] |
||
21203 | |||
21204 | |||
21205 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21206 | |||
21207 | RegInsteb: |
||
21208 | xchg [_z80de], bx ; Exchange DE & HL |
||
21209 | sub edi, byte 4 |
||
21210 | js near noMoreExec |
||
21211 | mov dl, byte [esi] ; Get our next instruction |
||
21212 | inc esi ; Increment PC |
||
21213 | jmp dword [z80regular+edx*4] |
||
21214 | |||
21215 | |||
21216 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21217 | |||
21218 | RegInstec: |
||
21219 | sahf ; Restore our flags |
||
21220 | jpe takeJump379 ; We're going call in this case |
||
21221 | add esi, 2 ; Skip past the address |
||
21222 | jmp short noCallTaken379 ; Go execute the next instruction |
||
21223 | takeJump379: |
||
21224 | sub edi, 7 |
||
21225 | mov dx, [esi] ; Get our call to address |
||
21226 | mov [_z80pc], dx ; Store our new program counter |
||
21227 | add esi, 2 ; Skip to our new address to be pushed |
||
21228 | sub esi, ebp ; Value to push onto the "stack" |
||
21229 | mov dx, word [_z80sp] ; Get the current stack pointer |
||
21230 | sub dx, 2 ; Back up two bytes |
||
21231 | mov [ebp+edx], si ; PUSH It! |
||
21232 | mov word [_z80sp], dx ; Store our new stack pointer |
||
21233 | mov si, [_z80pc] ; Get our new program counter |
||
21234 | add esi, ebp ; Naturalize it! |
||
21235 | noCallTaken379: |
||
21236 | xor edx, edx |
||
21237 | sub edi, byte 10 |
||
21238 | js near noMoreExec |
||
21239 | mov dl, byte [esi] ; Get our next instruction |
||
21240 | inc esi ; Increment PC |
||
21241 | jmp dword [z80regular+edx*4] |
||
21242 | |||
21243 | ; |
||
21244 | ; Handler for all EDxx instructions |
||
21245 | ; |
||
21246 | |||
21247 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21248 | |||
21249 | RegInsted: |
||
21250 | mov dl, [esi] |
||
21251 | inc esi |
||
21252 | jmp dword [z80PrefixED+edx*4] |
||
21253 | |||
21254 | |||
21255 | |||
21256 | |||
21257 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21258 | |||
21259 | RegInstee: |
||
21260 | sahf |
||
21261 | xor al, [esi] |
||
21262 | lahf |
||
21263 | and ah, 0ech ; No H, N, or C |
||
21264 | inc esi |
||
21265 | sub edi, byte 7 |
||
21266 | js near noMoreExec |
||
21267 | mov dl, byte [esi] ; Get our next instruction |
||
21268 | inc esi ; Increment PC |
||
21269 | jmp dword [z80regular+edx*4] |
||
21270 | |||
21271 | |||
21272 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21273 | |||
21274 | RegInstef: |
||
21275 | mov dx, word [_z80sp] ; Get our stack pointer |
||
21276 | sub dx, 2 ; Make room for the new value! |
||
21277 | mov word [_z80sp], dx ; Store our new stack pointer |
||
21278 | sub esi, ebp ; Get our real PC |
||
21279 | mov [ebp+edx], si ; Our return address |
||
21280 | mov si, 028h ; Our new call address |
||
21281 | add esi, ebp ; Back to the base! |
||
21282 | xor edx, edx |
||
21283 | sub edi, byte 11 |
||
21284 | js near noMoreExec |
||
21285 | mov dl, byte [esi] ; Get our next instruction |
||
21286 | inc esi ; Increment PC |
||
21287 | jmp dword [z80regular+edx*4] |
||
21288 | |||
21289 | |||
21290 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21291 | |||
21292 | RegInstf0: |
||
21293 | sahf |
||
21294 | jns takeReturn380 |
||
21295 | jmp short retNotTaken380 |
||
21296 | takeReturn380: |
||
21297 | sub edi, byte 6 |
||
21298 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
21299 | mov si, [edx+ebp] ; Get our return address |
||
21300 | and esi, 0ffffh ; Only within 64K! |
||
21301 | add esi, ebp ; Add in our base address |
||
21302 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
21303 | xor edx, edx |
||
21304 | retNotTaken380: |
||
21305 | sub edi, byte 5 |
||
21306 | js near noMoreExec |
||
21307 | mov dl, byte [esi] ; Get our next instruction |
||
21308 | inc esi ; Increment PC |
||
21309 | jmp dword [z80regular+edx*4] |
||
21310 | |||
21311 | |||
21312 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21313 | |||
21314 | RegInstf1: |
||
21315 | mov dx, [_z80sp] |
||
21316 | mov [cyclesRemaining], edi |
||
21317 | mov edi, [_z80MemRead] ; Point to the read array |
||
21318 | |||
21319 | checkLoop381: |
||
21320 | cmp [edi], word 0ffffh ; End of the list? |
||
21321 | je memoryRead381 |
||
21322 | cmp dx, [edi] ; Are we smaller? |
||
21323 | jb nextAddr381 ; Yes, go to the next address |
||
21324 | cmp dx, [edi+4] ; Are we bigger? |
||
21325 | jbe callRoutine381 |
||
21326 | |||
21327 | nextAddr381: |
||
21328 | add edi, 10h ; Next structure! |
||
21329 | jmp short checkLoop381 |
||
21330 | |||
21331 | callRoutine381: |
||
21332 | push dx ; Save address |
||
21333 | call ReadMemoryByte ; Standard read routine |
||
21334 | pop dx ; Restore our address |
||
21335 | inc dx ; Next byte, please |
||
21336 | push ax ; Save returned byte |
||
21337 | call ReadMemoryByte ; Standard read routine |
||
21338 | xchg ah, al ; Swap for endian's sake |
||
21339 | pop dx ; Restore LSB |
||
21340 | mov dh, ah ; Our word is now in DX |
||
21341 | mov ax, dx |
||
21342 | xchg ah, al |
||
21343 | jmp readExit381 |
||
21344 | |||
21345 | memoryRead381: |
||
21346 | mov ax, [ebp + edx] |
||
21347 | xchg ah, al |
||
21348 | readExit381: |
||
21349 | mov edi, [cyclesRemaining] |
||
21350 | add word [_z80sp], 2 |
||
21351 | xor edx, edx |
||
21352 | sub edi, byte 10 |
||
21353 | js near noMoreExec |
||
21354 | mov dl, byte [esi] ; Get our next instruction |
||
21355 | inc esi ; Increment PC |
||
21356 | jmp dword [z80regular+edx*4] |
||
21357 | |||
21358 | |||
21359 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21360 | |||
21361 | RegInstf2: |
||
21362 | sahf ; Restore our flags |
||
21363 | jns takeJump382 ; We're going to take a jump |
||
21364 | add esi, 2 ; Skip past the address |
||
21365 | jmp short nextInst382 ; Go execute the next instruction |
||
21366 | takeJump382: |
||
21367 | mov si, [esi] ; Get our new offset |
||
21368 | and esi, 0ffffh ; Only the lower WORD is valid |
||
21369 | add esi, ebp ; Our new address! |
||
21370 | nextInst382: |
||
21371 | sub edi, byte 10 |
||
21372 | js near noMoreExec |
||
21373 | mov dl, byte [esi] ; Get our next instruction |
||
21374 | inc esi ; Increment PC |
||
21375 | jmp dword [z80regular+edx*4] |
||
21376 | |||
21377 | |||
21378 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21379 | |||
21380 | RegInstf3: |
||
21381 | and dword [_z80iff], (~IFF1) ; Not in an interrupt |
||
21382 | sub edi, byte 4 |
||
21383 | js near noMoreExec |
||
21384 | mov dl, byte [esi] ; Get our next instruction |
||
21385 | inc esi ; Increment PC |
||
21386 | jmp dword [z80regular+edx*4] |
||
21387 | |||
21388 | |||
21389 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21390 | |||
21391 | RegInstf4: |
||
21392 | sahf ; Restore our flags |
||
21393 | jns takeJump383 ; We're going call in this case |
||
21394 | add esi, 2 ; Skip past the address |
||
21395 | jmp short noCallTaken383 ; Go execute the next instruction |
||
21396 | takeJump383: |
||
21397 | sub edi, 7 |
||
21398 | mov dx, [esi] ; Get our call to address |
||
21399 | mov [_z80pc], dx ; Store our new program counter |
||
21400 | add esi, 2 ; Skip to our new address to be pushed |
||
21401 | sub esi, ebp ; Value to push onto the "stack" |
||
21402 | mov dx, word [_z80sp] ; Get the current stack pointer |
||
21403 | sub dx, 2 ; Back up two bytes |
||
21404 | mov [ebp+edx], si ; PUSH It! |
||
21405 | mov word [_z80sp], dx ; Store our new stack pointer |
||
21406 | mov si, [_z80pc] ; Get our new program counter |
||
21407 | add esi, ebp ; Naturalize it! |
||
21408 | noCallTaken383: |
||
21409 | xor edx, edx |
||
21410 | sub edi, byte 10 |
||
21411 | js near noMoreExec |
||
21412 | mov dl, byte [esi] ; Get our next instruction |
||
21413 | inc esi ; Increment PC |
||
21414 | jmp dword [z80regular+edx*4] |
||
21415 | |||
21416 | |||
21417 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21418 | |||
21419 | RegInstf5: |
||
21420 | sub word [_z80sp], 2 |
||
21421 | mov dx, [_z80sp] |
||
21422 | mov [cyclesRemaining], edi |
||
21423 | mov edi, [_z80MemWrite] ; Point to the write array |
||
21424 | |||
21425 | checkLoop384: |
||
21426 | cmp [edi], word 0ffffh ; End of the list? |
||
21427 | je memoryWrite384 |
||
21428 | cmp dx, [edi] ; Are we smaller? |
||
21429 | jb nextAddr384 ; Yes, go to the next address |
||
21430 | cmp dx, [edi+4] ; Are we bigger? |
||
21431 | jbe callRoutine384 |
||
21432 | |||
21433 | nextAddr384: |
||
21434 | add edi, 10h ; Next structure! |
||
21435 | jmp short checkLoop384 |
||
21436 | |||
21437 | callRoutine384: |
||
21438 | push ax ; Save this for later |
||
21439 | push dx |
||
21440 | xchg ah, al |
||
21441 | call WriteMemoryByte |
||
21442 | pop dx |
||
21443 | pop ax |
||
21444 | inc dx |
||
21445 | |||
21446 | push ax |
||
21447 | push dx |
||
21448 | call WriteMemoryByte |
||
21449 | pop dx |
||
21450 | pop ax ; Restore us! |
||
21451 | jmp writeExit384 |
||
21452 | |||
21453 | memoryWrite384: |
||
21454 | xchg ah, al ; Swap for later |
||
21455 | mov [ebp + edx], ax ; Store our word |
||
21456 | xchg ah, al ; Restore |
||
21457 | writeExit384: |
||
21458 | mov edi, [cyclesRemaining] |
||
21459 | xor edx, edx |
||
21460 | sub edi, byte 11 |
||
21461 | js near noMoreExec |
||
21462 | mov dl, byte [esi] ; Get our next instruction |
||
21463 | inc esi ; Increment PC |
||
21464 | jmp dword [z80regular+edx*4] |
||
21465 | |||
21466 | |||
21467 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21468 | |||
21469 | RegInstf6: |
||
21470 | sahf |
||
21471 | or al, [esi] |
||
21472 | lahf |
||
21473 | and ah, 0ech ; No H, N, or C |
||
21474 | inc esi |
||
21475 | sub edi, byte 7 |
||
21476 | js near noMoreExec |
||
21477 | mov dl, byte [esi] ; Get our next instruction |
||
21478 | inc esi ; Increment PC |
||
21479 | jmp dword [z80regular+edx*4] |
||
21480 | |||
21481 | |||
21482 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21483 | |||
21484 | RegInstf7: |
||
21485 | mov dx, word [_z80sp] ; Get our stack pointer |
||
21486 | sub dx, 2 ; Make room for the new value! |
||
21487 | mov word [_z80sp], dx ; Store our new stack pointer |
||
21488 | sub esi, ebp ; Get our real PC |
||
21489 | mov [ebp+edx], si ; Our return address |
||
21490 | mov si, 030h ; Our new call address |
||
21491 | add esi, ebp ; Back to the base! |
||
21492 | xor edx, edx |
||
21493 | sub edi, byte 11 |
||
21494 | js near noMoreExec |
||
21495 | mov dl, byte [esi] ; Get our next instruction |
||
21496 | inc esi ; Increment PC |
||
21497 | jmp dword [z80regular+edx*4] |
||
21498 | |||
21499 | |||
21500 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21501 | |||
21502 | RegInstf8: |
||
21503 | sahf |
||
21504 | js takeReturn385 |
||
21505 | jmp short retNotTaken385 |
||
21506 | takeReturn385: |
||
21507 | sub edi, byte 6 |
||
21508 | mov dx, word [_z80sp] ; Get our current stack pointer |
||
21509 | mov si, [edx+ebp] ; Get our return address |
||
21510 | and esi, 0ffffh ; Only within 64K! |
||
21511 | add esi, ebp ; Add in our base address |
||
21512 | add word [_z80sp], 02h ; Remove our two bytes from the stack |
||
21513 | xor edx, edx |
||
21514 | retNotTaken385: |
||
21515 | sub edi, byte 5 |
||
21516 | js near noMoreExec |
||
21517 | mov dl, byte [esi] ; Get our next instruction |
||
21518 | inc esi ; Increment PC |
||
21519 | jmp dword [z80regular+edx*4] |
||
21520 | |||
21521 | |||
21522 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21523 | |||
21524 | RegInstf9: |
||
21525 | mov word [_z80sp], bx |
||
21526 | sub edi, byte 6 |
||
21527 | js near noMoreExec |
||
21528 | mov dl, byte [esi] ; Get our next instruction |
||
21529 | inc esi ; Increment PC |
||
21530 | jmp dword [z80regular+edx*4] |
||
21531 | |||
21532 | |||
21533 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21534 | |||
21535 | RegInstfa: |
||
21536 | sahf ; Restore our flags |
||
21537 | js takeJump386 ; We're going to take a jump |
||
21538 | add esi, 2 ; Skip past the address |
||
21539 | jmp short nextInst386 ; Go execute the next instruction |
||
21540 | takeJump386: |
||
21541 | mov si, [esi] ; Get our new offset |
||
21542 | and esi, 0ffffh ; Only the lower WORD is valid |
||
21543 | add esi, ebp ; Our new address! |
||
21544 | nextInst386: |
||
21545 | sub edi, byte 10 |
||
21546 | js near noMoreExec |
||
21547 | mov dl, byte [esi] ; Get our next instruction |
||
21548 | inc esi ; Increment PC |
||
21549 | jmp dword [z80regular+edx*4] |
||
21550 | |||
21551 | |||
21552 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21553 | |||
21554 | RegInstfb: |
||
21555 | or dword [_z80iff], IFF1 ; Indicate interrupts are enabled now |
||
21556 | sub edi, 4 ; Takes 4 cycles! |
||
21557 | mov [dwEITiming], edi ; Snapshot our current timing |
||
21558 | mov [bEIExit], byte 1 ; Indicate we're exiting because of an EI |
||
21559 | xor edi, edi ; Force next instruction to exit |
||
21560 | mov dl, byte [esi] ; Get our next instruction |
||
21561 | inc esi ; Next PC |
||
21562 | jmp dword [z80regular+edx*4] |
||
21563 | |||
21564 | sub edi, byte 4 |
||
21565 | js near noMoreExec |
||
21566 | mov dl, byte [esi] ; Get our next instruction |
||
21567 | inc esi ; Increment PC |
||
21568 | jmp dword [z80regular+edx*4] |
||
21569 | |||
21570 | |||
21571 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21572 | |||
21573 | RegInstfc: |
||
21574 | sahf ; Restore our flags |
||
21575 | js takeJump387 ; We're going call in this case |
||
21576 | add esi, 2 ; Skip past the address |
||
21577 | jmp short noCallTaken387 ; Go execute the next instruction |
||
21578 | takeJump387: |
||
21579 | sub edi, 7 |
||
21580 | mov dx, [esi] ; Get our call to address |
||
21581 | mov [_z80pc], dx ; Store our new program counter |
||
21582 | add esi, 2 ; Skip to our new address to be pushed |
||
21583 | sub esi, ebp ; Value to push onto the "stack" |
||
21584 | mov dx, word [_z80sp] ; Get the current stack pointer |
||
21585 | sub dx, 2 ; Back up two bytes |
||
21586 | mov [ebp+edx], si ; PUSH It! |
||
21587 | mov word [_z80sp], dx ; Store our new stack pointer |
||
21588 | mov si, [_z80pc] ; Get our new program counter |
||
21589 | add esi, ebp ; Naturalize it! |
||
21590 | noCallTaken387: |
||
21591 | xor edx, edx |
||
21592 | sub edi, byte 10 |
||
21593 | js near noMoreExec |
||
21594 | mov dl, byte [esi] ; Get our next instruction |
||
21595 | inc esi ; Increment PC |
||
21596 | jmp dword [z80regular+edx*4] |
||
21597 | |||
21598 | ; |
||
21599 | ; Handler for all FDxx instructions |
||
21600 | ; |
||
21601 | |||
21602 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21603 | |||
21604 | RegInstfd: |
||
21605 | mov dl, [esi] |
||
21606 | inc esi |
||
21607 | jmp dword [z80PrefixFD+edx*4] |
||
21608 | |||
21609 | |||
21610 | |||
21611 | |||
21612 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21613 | |||
21614 | RegInstfe: |
||
21615 | sahf |
||
21616 | cmp al, [esi] |
||
21617 | lahf |
||
21618 | seto dl |
||
21619 | and ah, 0fbh ; Knock out parity/overflow |
||
21620 | shl dl, 2 |
||
21621 | or ah, dl |
||
21622 | or ah, 02h ; Set negative! |
||
21623 | inc esi |
||
21624 | sub edi, byte 7 |
||
21625 | js near noMoreExec |
||
21626 | mov dl, byte [esi] ; Get our next instruction |
||
21627 | inc esi ; Increment PC |
||
21628 | jmp dword [z80regular+edx*4] |
||
21629 | |||
21630 | |||
21631 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21632 | |||
21633 | RegInstff: |
||
21634 | mov dx, word [_z80sp] ; Get our stack pointer |
||
21635 | sub dx, 2 ; Make room for the new value! |
||
21636 | mov word [_z80sp], dx ; Store our new stack pointer |
||
21637 | sub esi, ebp ; Get our real PC |
||
21638 | mov [ebp+edx], si ; Our return address |
||
21639 | mov si, 038h ; Our new call address |
||
21640 | add esi, ebp ; Back to the base! |
||
21641 | xor edx, edx |
||
21642 | sub edi, byte 11 |
||
21643 | js near noMoreExec |
||
21644 | mov dl, byte [esi] ; Get our next instruction |
||
21645 | inc esi ; Increment PC |
||
21646 | jmp dword [z80regular+edx*4] |
||
21647 | |||
21648 | |||
21649 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21650 | |||
21651 | ; This is a generic read memory byte handler when a foreign |
||
21652 | ; handler is to be called |
||
21653 | |||
21654 | ; EDI=Handler address, EDX=Address |
||
21655 | ; On return, EDX & EDI are undisturbed and AL=Byte read |
||
21656 | |||
21657 | ReadMemoryByte: |
||
21658 | mov [_z80af], ax ; Save AF |
||
21659 | cmp [edi+8], dword 0 ; Null handler? |
||
21660 | je directReadHandler ; Yep! It's a direct read! |
||
21661 | |||
21662 | mov [_z80hl], bx ; Save HL |
||
21663 | mov [_z80bc], cx ; Save BC |
||
21664 | sub esi, ebp ; Our program counter |
||
21665 | mov [_z80pc], si ; Save our program counter |
||
21666 | mov esi, [dwOriginalExec] |
||
21667 | sub esi, [cyclesRemaining] |
||
21668 | add [dwElapsedTicks], esi |
||
21669 | add [_z80rCounter], esi |
||
21670 | sub [dwOriginalExec], esi |
||
21671 | push edi ; Save our structure address |
||
21672 | push edx ; And our desired address |
||
21673 | call dword [edi + 8] ; Go call our handler |
||
21674 | pop edx ; Restore our address |
||
21675 | pop edi ; Restore our handler's address |
||
21676 | xor ebx, ebx ; Zero our future HL |
||
21677 | xor esi, esi ; Zero it! |
||
21678 | mov ebp, [_z80Base] ; Base pointer comes back |
||
21679 | mov si, [_z80pc] ; Get our program counter back |
||
21680 | xor ecx, ecx ; Zero our future BC |
||
21681 | add esi, ebp ; Rebase it properly |
||
21682 | mov bx, [_z80hl] ; Get HL back |
||
21683 | mov cx, [_z80bc] ; Get BC back |
||
21684 | ret |
||
21685 | |||
21686 | directReadHandler: |
||
21687 | mov eax, [edi+12] ; Get our base address |
||
21688 | sub edx, [edi] ; Subtract our base (low) address |
||
21689 | mov al, [edx+eax] ; Get our data byte |
||
21690 | and eax, 0ffh ; Only the lower byte matters! |
||
21691 | add edx, [edi] ; Add our base back |
||
21692 | ret ; Return to caller! |
||
21693 | |||
21694 | |||
21695 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21696 | |||
21697 | ; This is a generic read memory byte handler when a foreign |
||
21698 | ; handler is to be called. |
||
21699 | ; EDI=Handler address, AL=Byte to write, EDX=Address |
||
21700 | ; EDI and EDX Are undisturbed on exit |
||
21701 | |||
21702 | WriteMemoryByte: |
||
21703 | cmp [edi+8], dword 0 ; Null handler? |
||
21704 | je directWriteHandler |
||
21705 | |||
21706 | mov [_z80hl], bx ; Save HL |
||
21707 | mov [_z80bc], cx ; Save BX |
||
21708 | sub esi, ebp ; Our program counter |
||
21709 | mov [_z80pc], si ; Save our program counter |
||
21710 | mov esi, [dwOriginalExec] |
||
21711 | sub esi, [cyclesRemaining] |
||
21712 | add [dwElapsedTicks], esi |
||
21713 | add [_z80rCounter], esi |
||
21714 | sub [dwOriginalExec], esi |
||
21715 | push edi ; Save our structure address |
||
21716 | push eax ; Data to write |
||
21717 | push edx ; And our desired address |
||
21718 | call dword [edi + 8] ; Go call our handler |
||
21719 | pop edx ; Restore our address |
||
21720 | pop eax ; Restore our data written |
||
21721 | pop edi ; Save our structure address |
||
21722 | xor ebx, ebx ; Zero our future HL |
||
21723 | xor ecx, ecx ; Zero our future BC |
||
21724 | mov bx, [_z80hl] ; Get HL back |
||
21725 | mov cx, [_z80bc] ; Get BC back |
||
21726 | mov ax, [_z80af] ; Get AF back |
||
21727 | xor esi, esi ; Zero it! |
||
21728 | mov si, [_z80pc] ; Get our program counter back |
||
21729 | mov ebp, [_z80Base] ; Base pointer comes back |
||
21730 | add esi, ebp ; Rebase it properly |
||
21731 | ret |
||
21732 | |||
21733 | directWriteHandler: |
||
21734 | sub edx, [edi] ; Subtract our offset |
||
21735 | add edx, [edi+12] ; Add in the base address |
||
21736 | mov [edx], al ; Store our byte |
||
21737 | sub edx, [edi+12] ; Restore our base address |
||
21738 | add edx, [edi] ; And put our offset back |
||
21739 | ret |
||
21740 | |||
21741 | |||
21742 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21743 | |||
21744 | ; This is a generic I/O read byte handler for when a foreign |
||
21745 | ; handler is to be called |
||
21746 | ; EDI=Handler address, EDX=I/O Address |
||
21747 | ; On return, EDX & EDI are undisturbed and AL=Byte read |
||
21748 | |||
21749 | ReadIOByte: |
||
21750 | mov [_z80af], ax ; Save AF |
||
21751 | mov [_z80hl], bx ; Save HL |
||
21752 | mov [_z80bc], cx ; Save BC |
||
21753 | sub esi, ebp ; Our program counter |
||
21754 | mov [_z80pc], si ; Save our program counter |
||
21755 | mov esi, [dwOriginalExec] |
||
21756 | sub esi, [cyclesRemaining] |
||
21757 | add [dwElapsedTicks], esi |
||
21758 | add [_z80rCounter], esi |
||
21759 | sub [dwOriginalExec], esi |
||
21760 | push edi ; Save our structure address |
||
21761 | push edx ; And our desired I/O port |
||
21762 | call dword [edi + 4] ; Go call our handler |
||
21763 | pop edx ; Restore our address |
||
21764 | pop edi ; Restore our handler's address |
||
21765 | xor ebx, ebx ; Zero our future HL |
||
21766 | xor ecx, ecx ; Zero our future BC |
||
21767 | xor esi, esi ; Zero it! |
||
21768 | mov si, [_z80pc] ; Get our program counter back |
||
21769 | mov ebp, [_z80Base] ; Base pointer comes back |
||
21770 | add esi, ebp ; Rebase it properly |
||
21771 | mov bx, [_z80hl] ; Get HL back |
||
21772 | mov cx, [_z80bc] ; Get BC back |
||
21773 | ret |
||
21774 | |||
21775 | |||
21776 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21777 | |||
21778 | ; This is a generic write I/O byte handler when a foreign handler is to |
||
21779 | ; be called |
||
21780 | ; EDI=Handler address, AL=Byte to write, EDX=I/O Address |
||
21781 | ; EDI and EDX Are undisturbed on exit |
||
21782 | |||
21783 | WriteIOByte: |
||
21784 | mov [_z80hl], bx ; Save HL |
||
21785 | mov [_z80bc], cx ; Save BX |
||
21786 | sub esi, ebp ; Our program counter |
||
21787 | mov [_z80pc], si ; Save our program counter |
||
21788 | mov esi, [dwOriginalExec] |
||
21789 | sub esi, [cyclesRemaining] |
||
21790 | add [dwElapsedTicks], esi |
||
21791 | add [_z80rCounter], esi |
||
21792 | sub [dwOriginalExec], esi |
||
21793 | push edi ; Save our structure address |
||
21794 | push eax ; Data to write |
||
21795 | push edx ; And our desired I/O address |
||
21796 | call dword [edi + 4] ; Go call our handler |
||
21797 | pop edx ; Restore our address |
||
21798 | pop eax ; Restore our data written |
||
21799 | pop edi ; Save our structure address |
||
21800 | xor ebx, ebx ; Zero our future HL |
||
21801 | xor ecx, ecx ; Zero our future BC |
||
21802 | mov bx, [_z80hl] ; Get HL back |
||
21803 | mov cx, [_z80bc] ; Get BC back |
||
21804 | mov ax, [_z80af] ; Get AF back |
||
21805 | xor esi, esi ; Zero it! |
||
21806 | mov si, [_z80pc] ; Get our program counter back |
||
21807 | mov ebp, [_z80Base] ; Base pointer comes back |
||
21808 | add esi, ebp ; Rebase it properly |
||
21809 | ret |
||
21810 | |||
21811 | global _mz80GetContext |
||
21812 | global mz80GetContext_ |
||
21813 | global mz80GetContext |
||
21814 | |||
21815 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21816 | |||
21817 | mz80GetContext_: |
||
21818 | _mz80GetContext: |
||
21819 | mz80GetContext: |
||
21820 | mov eax, [esp+4] ; Get our context address |
||
21821 | push esi ; Save registers we use |
||
21822 | push edi |
||
21823 | push ecx |
||
21824 | push es |
||
21825 | mov di, ds |
||
21826 | mov es, di |
||
21827 | mov esi, _mz80contextBegin |
||
21828 | mov edi, eax ; Source address in ESI |
||
21829 | mov ecx, (_mz80contextEnd - _mz80contextBegin) >> 2 |
||
21830 | rep movsd |
||
21831 | mov ecx, (_mz80contextEnd - _mz80contextBegin) & 0x03 |
||
21832 | rep movsb |
||
21833 | pop es |
||
21834 | pop ecx |
||
21835 | pop edi |
||
21836 | pop esi |
||
21837 | ret ; No return code |
||
21838 | global _mz80SetContext |
||
21839 | global mz80SetContext_ |
||
21840 | global mz80SetContext |
||
21841 | |||
21842 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21843 | |||
21844 | mz80SetContext_: |
||
21845 | _mz80SetContext: |
||
21846 | mz80SetContext: |
||
21847 | mov eax, [esp+4] ; Get our context address |
||
21848 | push esi ; Save registers we use |
||
21849 | push edi |
||
21850 | push ecx |
||
21851 | push es |
||
21852 | mov di, ds |
||
21853 | mov es, di |
||
21854 | mov edi, _mz80contextBegin |
||
21855 | mov esi, eax ; Source address in ESI |
||
21856 | mov ecx, (_mz80contextEnd - _mz80contextBegin) >> 2 |
||
21857 | rep movsd |
||
21858 | mov ecx, (_mz80contextEnd - _mz80contextBegin) & 0x03 |
||
21859 | rep movsb |
||
21860 | pop es |
||
21861 | pop ecx |
||
21862 | pop edi |
||
21863 | pop esi |
||
21864 | ret ; No return code |
||
21865 | global _mz80GetContextSize |
||
21866 | global mz80GetContextSize_ |
||
21867 | global mz80GetContextSize |
||
21868 | |||
21869 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21870 | |||
21871 | mz80GetContextSize_: |
||
21872 | _mz80GetContextSize: |
||
21873 | mz80GetContextSize: |
||
21874 | mov eax, _mz80contextEnd - _mz80contextBegin |
||
21875 | ret |
||
21876 | |||
21877 | global _mz80GetElapsedTicks |
||
21878 | global mz80GetElapsedTicks_ |
||
21879 | global mz80GetElapsedTicks |
||
21880 | |||
21881 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21882 | |||
21883 | |||
21884 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21885 | |||
21886 | mz80GetElapsedTicks_: |
||
21887 | _mz80GetElapsedTicks: |
||
21888 | mz80GetElapsedTicks: |
||
21889 | mov eax, [esp+4] ; Get our context address |
||
21890 | or eax, eax ; Should we clear it? |
||
21891 | jz getTicks |
||
21892 | xor eax, eax |
||
21893 | xchg eax, [dwElapsedTicks] |
||
21894 | ret |
||
21895 | getTicks: |
||
21896 | mov eax, [dwElapsedTicks] |
||
21897 | ret |
||
21898 | global _mz80ReleaseTimeslice |
||
21899 | global mz80ReleaseTimeslice_ |
||
21900 | global mz80ReleaseTimeslice |
||
21901 | |||
21902 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21903 | |||
21904 | |||
21905 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21906 | |||
21907 | mz80ReleaseTimeslice_: |
||
21908 | _mz80ReleaseTimeslice: |
||
21909 | mz80ReleaseTimeslice: |
||
21910 | mov eax, [cyclesRemaining] |
||
21911 | sub [dwOriginalExec], eax |
||
21912 | mov [cyclesRemaining], dword 0 |
||
21913 | ret |
||
21914 | |||
21915 | global _mz80reset |
||
21916 | global mz80reset_ |
||
21917 | global mz80reset |
||
21918 | |||
21919 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21920 | |||
21921 | mz80reset_: |
||
21922 | _mz80reset: |
||
21923 | mz80reset: |
||
21924 | xor eax, eax ; Zero AX |
||
21925 | |||
21926 | mov dword [_z80halted], eax ; We're not halted anymore! |
||
21927 | mov word [_z80af], 0040h ; Zero A & flags - zero flag set |
||
21928 | mov word [_z80bc], ax ; Zero BC |
||
21929 | mov word [_z80de], ax ; Zero DE |
||
21930 | mov word [_z80hl], ax ; Zero HL |
||
21931 | mov word [_z80afprime], ax ; Zero AF Prime |
||
21932 | mov word [_z80bcprime], ax ; Zero BC prime |
||
21933 | mov word [_z80deprime], ax ; Zero DE prime |
||
21934 | mov word [_z80hlprime], ax ; Zero HL prime |
||
21935 | mov byte [_z80i], al ; Zero Interrupt register |
||
21936 | mov byte [_z80r], al ; Zero refresh register |
||
21937 | mov word [_z80ix], 0ffffh ; Default mz80Index register |
||
21938 | mov word [_z80iy], 0ffffh ; Default mz80Index register |
||
21939 | mov word [_z80pc], ax ; Zero program counter |
||
21940 | mov word [_z80sp], ax ; And the stack pointer |
||
21941 | mov dword [_z80iff], eax ; IFF1/IFF2 disabled! |
||
21942 | mov dword [_z80interruptMode], eax ; Clear our interrupt mode (0) |
||
21943 | mov word [_z80intAddr], 38h ; Set default interrupt address |
||
21944 | mov word [_z80nmiAddr], 66h ; Set default nmi addr |
||
21945 | |||
21946 | ret |
||
21947 | |||
21948 | global _mz80int |
||
21949 | global mz80int_ |
||
21950 | global mz80int |
||
21951 | |||
21952 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
21953 | |||
21954 | mz80int_: |
||
21955 | _mz80int: |
||
21956 | mz80int: |
||
21957 | mov eax, [esp+4] ; Get our (potential) lower interrupt address |
||
21958 | mov dword [_z80halted], 0 ; We're not halted anymore! |
||
21959 | mov ah, IFF1 ; Is IFF1 enabled? |
||
21960 | and ah, [_z80iff] ; Well, is it? |
||
21961 | jz near interruptsDisabled |
||
21962 | |||
21963 | ; Interrupts enabled. Clear IFF1 and IFF2 |
||
21964 | |||
21965 | and dword [_z80iff], ~(IFF1 | IFF2); |
||
21966 | |||
21967 | mov [_z80intPending], byte 0 |
||
21968 | |||
21969 | push ebp |
||
21970 | push edi |
||
21971 | push edx |
||
21972 | mov ebp, [_z80Base] |
||
21973 | |||
21974 | mov dx, [_z80pc] |
||
21975 | xor edi, edi |
||
21976 | mov di, word [_z80sp] |
||
21977 | sub di, 2 |
||
21978 | mov word [_z80sp], di |
||
21979 | mov [ebp+edi], dx |
||
21980 | cmp dword [_z80interruptMode], 2 ; Are we lower than mode 2? |
||
21981 | jb justModeTwo |
||
21982 | mov ah, [_z80i] ; Get our high address here |
||
21983 | and eax, 0ffffh ; Only the lower part |
||
21984 | mov ax, [eax+ebp] ; Get our vector |
||
21985 | jmp short setNewVector ; Go set it! |
||
21986 | justModeTwo: |
||
21987 | mov ax, word [_z80intAddr] |
||
21988 | setNewVector: |
||
21989 | mov [_z80pc], ax |
||
21990 | |||
21991 | pop edx |
||
21992 | pop edi |
||
21993 | pop ebp |
||
21994 | |||
21995 | xor eax, eax ; Zero this so we can use it as an index |
||
21996 | mov al, [_z80interruptMode] |
||
21997 | mov al, [intModeTStates+eax] |
||
21998 | add [dwElapsedTicks], eax |
||
21999 | add [_z80rCounter], eax |
||
22000 | xor eax, eax ; Indicate we took the interrupt |
||
22001 | jmp short z80intExit |
||
22002 | |||
22003 | interruptsDisabled: |
||
22004 | mov [_z80intPending], byte 1 |
||
22005 | mov [_intData], al ; Save this info for later |
||
22006 | mov eax, 0ffffffffh ; Indicate we didn't take it |
||
22007 | |||
22008 | z80intExit: |
||
22009 | ret |
||
22010 | |||
22011 | global _mz80ClearPendingInterrupt |
||
22012 | global mz80ClearPendingInterrupt_ |
||
22013 | global mz80ClearPendingInterrupt |
||
22014 | |||
22015 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22016 | |||
22017 | mz80ClearPendingInterrupt_: |
||
22018 | _mz80ClearPendingInterrupt: |
||
22019 | mz80ClearPendingInterrupt: |
||
22020 | mov [_z80intPending], byte 0 |
||
22021 | ret |
||
22022 | |||
22023 | global _mz80nmi |
||
22024 | global mz80nmi_ |
||
22025 | global mz80nmi |
||
22026 | |||
22027 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22028 | |||
22029 | mz80nmi_: |
||
22030 | _mz80nmi: |
||
22031 | mz80nmi: |
||
22032 | mov dword [_z80halted], 0 ; We're not halted anymore! |
||
22033 | mov al, [_z80iff] ; Get our IFF setting |
||
22034 | and al, IFF1 ; Just IFF 1 |
||
22035 | shl al, 1 ; Makes IFF1->IFF2 and zeros IFF1 |
||
22036 | mov [_z80iff], al ; Store it back to the interrupt state! |
||
22037 | |||
22038 | push ebp |
||
22039 | push edi |
||
22040 | mov ebp, [_z80Base] |
||
22041 | |||
22042 | xor eax, eax |
||
22043 | mov ax, [_z80pc] |
||
22044 | xor edi, edi |
||
22045 | mov di, word [_z80sp] |
||
22046 | sub di, 2 |
||
22047 | mov word [_z80sp], di |
||
22048 | mov [ebp+edi], ax |
||
22049 | mov ax, [_z80nmiAddr] |
||
22050 | mov [_z80pc], ax |
||
22051 | |||
22052 | add [dwElapsedTicks], dword 11 ; 11 T-States for NMI |
||
22053 | add [_z80rCounter], dword 11 |
||
22054 | pop edi |
||
22055 | pop ebp |
||
22056 | |||
22057 | xor eax, eax ; Indicate we took the interrupt |
||
22058 | ret |
||
22059 | global _mz80exec |
||
22060 | global mz80exec_ |
||
22061 | global mz80exec |
||
22062 | |||
22063 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22064 | |||
22065 | mz80exec_: |
||
22066 | _mz80exec: |
||
22067 | mz80exec: |
||
22068 | mov eax, [esp+4] ; Get our execution cycle count |
||
22069 | push ebx ; Save all registers we use |
||
22070 | push ecx |
||
22071 | push edx |
||
22072 | push ebp |
||
22073 | push esi |
||
22074 | push edi |
||
22075 | |||
22076 | mov edi, eax |
||
22077 | mov dword [cyclesRemaining], eax ; Store # of instructions to |
||
22078 | mov [dwLastRSample], eax |
||
22079 | mov [dwOriginalExec], eax ; Store this! |
||
22080 | cmp dword [_z80halted], 0 |
||
22081 | je goCpu |
||
22082 | add [_z80rCounter], eax |
||
22083 | add dword [dwElapsedTicks], eax |
||
22084 | mov dword [cyclesRemaining], 0 ; Nothing left! |
||
22085 | mov eax, 80000000h ; Successful exection |
||
22086 | jmp popReg |
||
22087 | goCpu: |
||
22088 | cld ; Go forward! |
||
22089 | |||
22090 | xor eax, eax ; Zero EAX 'cause we use it! |
||
22091 | xor ebx, ebx ; Zero EBX, too |
||
22092 | xor ecx, ecx ; Zero ECX |
||
22093 | xor edx, edx ; And EDX |
||
22094 | xor esi, esi ; Zero our source address |
||
22095 | |||
22096 | mov ax, [_z80af] ; Accumulator & flags |
||
22097 | xchg ah, al ; Swap these for later |
||
22098 | mov bx, [_z80hl] ; Get our HL value |
||
22099 | mov cx, [_z80bc] ; And our BC value |
||
22100 | mov ebp, [_z80Base] ; Get the base address |
||
22101 | mov si, [_z80pc] ; Get our program counter |
||
22102 | add esi, ebp ; Add in our base address |
||
22103 | cmp [_z80intPending], byte 0 ; Interrupt pending? |
||
22104 | jz masterExecTarget |
||
22105 | |||
22106 | call causeInternalInterrupt |
||
22107 | |||
22108 | masterExecTarget: |
||
22109 | mov dl, [esi] |
||
22110 | inc esi |
||
22111 | jmp dword [z80regular+edx*4] |
||
22112 | |||
22113 | ; We get to invalidInsWord if it's a double byte invalid opcode |
||
22114 | |||
22115 | invalidInsWord: |
||
22116 | dec esi |
||
22117 | |||
22118 | ; We get to invalidInsByte if it's a single byte invalid opcode |
||
22119 | |||
22120 | invalidInsByte: |
||
22121 | xchg ah, al ; Swap them back so they look good |
||
22122 | mov [_z80af], ax ; Store A & flags |
||
22123 | dec esi ; Back up one instruction... |
||
22124 | mov edx, esi ; Get our address in EAX |
||
22125 | sub edx, ebp ; And subtract our base for |
||
22126 | ; an invalid instruction |
||
22127 | jmp short emulateEnd |
||
22128 | |||
22129 | noMoreExec: |
||
22130 | cmp [bEIExit], byte 0 ; Are we exiting because of an EI? |
||
22131 | jne checkEI |
||
22132 | noMoreExecNoEI: |
||
22133 | xchg ah, al ; Swap these for later |
||
22134 | mov [_z80af], ax ; Store A & flags |
||
22135 | mov edx, [dwOriginalExec] ; Original exec time |
||
22136 | sub edx, edi ; Subtract # of cycles remaining |
||
22137 | add [_z80rCounter], edx |
||
22138 | add [dwElapsedTicks], edx ; Add our executed time |
||
22139 | mov edx, 80000000h ; Indicate successful exec |
||
22140 | jmp short emulateEnd ; All finished! |
||
22141 | |||
22142 | ; Now let's tuck away the virtual registers for next time |
||
22143 | |||
22144 | storeFlags: |
||
22145 | xchg ah, al ; Swap these for later |
||
22146 | mov [_z80af], ax ; Store A & flags |
||
22147 | emulateEnd: |
||
22148 | mov [_z80hl], bx ; Store HL |
||
22149 | mov [_z80bc], cx ; Store BC |
||
22150 | sub esi, [_z80Base] ; Knock off physical address |
||
22151 | mov [_z80pc], si ; And store virtual address |
||
22152 | mov eax, edx ; Result code return |
||
22153 | |||
22154 | popReg: |
||
22155 | pop edi ; Restore registers |
||
22156 | pop esi |
||
22157 | pop ebp |
||
22158 | pop edx |
||
22159 | pop ecx |
||
22160 | pop ebx |
||
22161 | |||
22162 | ret |
||
22163 | |||
22164 | |||
22165 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22166 | |||
22167 | checkEI: |
||
22168 | xor edx, edx |
||
22169 | mov [bEIExit], byte 0 |
||
22170 | sub edx, edi ; Find out how much time has passed |
||
22171 | mov edi, [dwEITiming] |
||
22172 | sub edi, edx |
||
22173 | js noMoreExecNoEI |
||
22174 | xor edx, edx |
||
22175 | cmp [_z80intPending], byte 0 |
||
22176 | je near masterExecTarget |
||
22177 | call causeInternalInterrupt |
||
22178 | jmp masterExecTarget |
||
22179 | |||
22180 | |||
22181 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22182 | |||
22183 | causeInternalInterrupt: |
||
22184 | mov dword [_z80halted], 0 ; We're not halted anymore! |
||
22185 | test [_z80iff], byte IFF1 ; Interrupt enabled yet? |
||
22186 | jz near internalInterruptsDisabled |
||
22187 | |||
22188 | ; Interrupts enabled. Clear IFF1 and IFF2 |
||
22189 | |||
22190 | mov [_z80intPending], byte 0 |
||
22191 | |||
22192 | ; Save off our active register sets |
||
22193 | |||
22194 | xchg ah, al ; Swap these for later |
||
22195 | mov [_z80af], ax ; Store A & flags |
||
22196 | mov [_z80hl], bx ; Store HL |
||
22197 | mov [_z80bc], cx ; Store BC |
||
22198 | sub esi, ebp ; Knock off physical address |
||
22199 | mov [_z80pc], si ; And store virtual address |
||
22200 | xor eax, eax |
||
22201 | mov al, [_intData] |
||
22202 | |||
22203 | |||
22204 | push edi |
||
22205 | |||
22206 | mov dx, [_z80pc] |
||
22207 | xor edi, edi |
||
22208 | mov di, word [_z80sp] |
||
22209 | sub di, 2 |
||
22210 | mov word [_z80sp], di |
||
22211 | mov [ebp+edi], dx |
||
22212 | cmp dword [_z80interruptMode], 2 ; Are we lower than mode 2? |
||
22213 | jb internalJustModeTwo |
||
22214 | mov ah, [_z80i] ; Get our high address here |
||
22215 | and eax, 0ffffh ; Only the lower part |
||
22216 | mov ax, [eax+ebp] ; Get our vector |
||
22217 | jmp short internalSetNewVector ; Go set it! |
||
22218 | internalJustModeTwo: |
||
22219 | mov ax, word [_z80intAddr] |
||
22220 | internalSetNewVector: |
||
22221 | mov [_z80pc], ax |
||
22222 | |||
22223 | pop edi |
||
22224 | |||
22225 | xor eax, eax ; Zero this so we can use it as an index |
||
22226 | mov al, [_z80interruptMode] |
||
22227 | mov al, [intModeTStates+eax] |
||
22228 | sub edi, eax |
||
22229 | add [_z80rCounter], eax |
||
22230 | |||
22231 | ; Restore all the registers and whatnot |
||
22232 | |||
22233 | mov ax, [_z80af] ; Accumulator & flags |
||
22234 | xchg ah, al ; Swap these for later |
||
22235 | mov bx, [_z80hl] ; Get our HL value |
||
22236 | mov cx, [_z80bc] ; And our BC value |
||
22237 | mov ebp, [_z80Base] ; Get the base address |
||
22238 | mov si, [_z80pc] ; Get our program counter |
||
22239 | add esi, ebp ; Add in our base address |
||
22240 | internalInterruptsDisabled: |
||
22241 | xor edx, edx |
||
22242 | ret |
||
22243 | global _mz80init |
||
22244 | global mz80init_ |
||
22245 | global mz80init |
||
22246 | |||
22247 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22248 | |||
22249 | mz80init_: |
||
22250 | _mz80init: |
||
22251 | mz80init: |
||
22252 | ret |
||
22253 | |||
22254 | global _mz80shutdown |
||
22255 | global mz80shutdown_ |
||
22256 | global mz80shutdown |
||
22257 | |||
22258 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22259 | |||
22260 | mz80shutdown_: |
||
22261 | _mz80shutdown: |
||
22262 | mz80shutdown: |
||
22263 | ret |
||
22264 | |||
22265 | |||
22266 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22267 | |||
22268 | ; |
||
22269 | ; In : EAX=Reg #, ESI=Context address |
||
22270 | ; Out: EAX=Value of register |
||
22271 | ; |
||
22272 | getRegValueInternal: |
||
22273 | push ecx |
||
22274 | push edx |
||
22275 | |||
22276 | cmp eax, CPUREG_MAXINDEX |
||
22277 | jae badIndex2 |
||
22278 | |||
22279 | shl eax, 4 ; Times 16 for table entry size |
||
22280 | add eax, RegTable ; Now it's the memory location |
||
22281 | mov edx, [eax+4] ; Get the offset of the register |
||
22282 | mov edx, [edx + esi] ; Get our value |
||
22283 | mov ecx, [eax+8] ; Get our shift value |
||
22284 | shr edx, cl ; Shift it right by a value |
||
22285 | and edx, [eax+12] ; Mask off any unneeded bits |
||
22286 | mov eax, edx ; Put our value in EAX |
||
22287 | jmp short indexExit ; Index's exit! |
||
22288 | badIndex2: |
||
22289 | mov eax, 0ffffffffh |
||
22290 | |||
22291 | indexExit: |
||
22292 | pop edx |
||
22293 | pop ecx |
||
22294 | ret |
||
22295 | |||
22296 | |||
22297 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22298 | |||
22299 | ; |
||
22300 | ; In : EAX=Value, EDX=Reg #, ESI=Context address |
||
22301 | ; Out: EAX=Value of register |
||
22302 | ; |
||
22303 | convertValueToText: |
||
22304 | push ecx |
||
22305 | push edx |
||
22306 | |||
22307 | cmp edx, CPUREG_MAXINDEX |
||
22308 | jae badIndex3 |
||
22309 | |||
22310 | shl edx, 4 ; Times 16 for table entry size |
||
22311 | add edx, RegTable ; Now it's the memory location |
||
22312 | mov edx, [edx + 12] ; Shift mask |
||
22313 | xor ecx, ecx ; Zero our shift |
||
22314 | shiftLoop: |
||
22315 | test edx, 0f0000000h ; High nibble nonzero yet? |
||
22316 | jnz convertLoop ; Yup! |
||
22317 | shl edx, 4 ; Move over, bacon |
||
22318 | shl eax, 4 ; Move the value over, too |
||
22319 | jmp short shiftLoop ; Keep shiftin' |
||
22320 | |||
22321 | convertLoop: |
||
22322 | mov ecx, eax ; Get our value |
||
22323 | shr ecx, 28 ; Only the top nibble |
||
22324 | add cl, '0' ; Convert to ASCII |
||
22325 | cmp cl, '9' ; Greater than 9? |
||
22326 | jbe noAdd ; Nope! Don't add it |
||
22327 | add cl, 32+7 ; Convert from lowercase a-f |
||
22328 | noAdd: |
||
22329 | mov [edi], cl ; New value storage |
||
22330 | inc edi ; Next byte, please |
||
22331 | shl eax, 4 ; Move the mask over |
||
22332 | shl edx, 4 ; Move the mask over |
||
22333 | jnz convertLoop ; Keep convertin' |
||
22334 | |||
22335 | badIndex3: |
||
22336 | mov [edi], byte 0 ; Null terminate the sucker! |
||
22337 | pop edx |
||
22338 | pop ecx |
||
22339 | ret |
||
22340 | |||
22341 | global _mz80SetRegisterValue |
||
22342 | global mz80SetRegisterValue_ |
||
22343 | global mz80SetRegisterValue |
||
22344 | |||
22345 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22346 | |||
22347 | mz80SetRegisterValue_: |
||
22348 | _mz80SetRegisterValue: |
||
22349 | mz80SetRegisterValue: |
||
22350 | push esi |
||
22351 | push edi |
||
22352 | push edx |
||
22353 | push ecx |
||
22354 | mov eax, [esp+20] ; Get our register # |
||
22355 | mov esi, [esp+24] ; Get our context address |
||
22356 | mov edi, [esp+28] ; Value to assign |
||
22357 | or esi, esi ; Are we NULL? |
||
22358 | jnz userDefined |
||
22359 | mov esi, _mz80contextBegin |
||
22360 | userDefined: |
||
22361 | |||
22362 | shl eax, 4 ; Times 16 for reg entry size |
||
22363 | add eax, RegTable |
||
22364 | mov edx, [eax+12] ; Our mask |
||
22365 | not edx ; Invert EDX! |
||
22366 | test edi, edx ; Did we set any invalid bits? |
||
22367 | jnz rangeViolation |
||
22368 | |||
22369 | not edx ; Toggle it back to normal |
||
22370 | mov ecx, [eax+8] ; Get our shift value |
||
22371 | shl edx, cl ; Shift our mask |
||
22372 | shl eax, cl ; And our value to OR in |
||
22373 | not edx ; Make it the inverse of what we want |
||
22374 | mov eax, [eax+4] ; Get our offset into the context |
||
22375 | and [esi+eax], edx ; Mask off the bits we're changin |
||
22376 | or [esi+eax], edi ; Or in our new value |
||
22377 | |||
22378 | xor eax, eax |
||
22379 | jmp short setExit |
||
22380 | |||
22381 | rangeViolation: |
||
22382 | mov eax, 0ffffffffh |
||
22383 | |||
22384 | setExit: |
||
22385 | pop ecx |
||
22386 | pop edx |
||
22387 | pop edi |
||
22388 | pop esi |
||
22389 | |||
22390 | ret |
||
22391 | |||
22392 | |||
22393 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22394 | |||
22395 | global _mz80GetRegisterValue |
||
22396 | global mz80GetRegisterValue_ |
||
22397 | global mz80GetRegisterValue |
||
22398 | |||
22399 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22400 | |||
22401 | mz80GetRegisterValue_: |
||
22402 | _mz80GetRegisterValue: |
||
22403 | mz80GetRegisterValue: |
||
22404 | push esi |
||
22405 | mov eax, [esp+8] ; Get our register # |
||
22406 | mov esi, [esp+12] ; Get our context address |
||
22407 | or esi, esi ; Is context NULL? |
||
22408 | jnz getVal ; Nope - use it! |
||
22409 | mov esi, _mz80contextBegin |
||
22410 | |||
22411 | getVal: |
||
22412 | call getRegValueInternal |
||
22413 | |||
22414 | pop esi |
||
22415 | ret |
||
22416 | |||
22417 | |||
22418 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22419 | |||
22420 | global _mz80GetRegisterName |
||
22421 | global mz80GetRegisterName_ |
||
22422 | global mz80GetRegisterName |
||
22423 | |||
22424 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22425 | |||
22426 | mz80GetRegisterName_: |
||
22427 | _mz80GetRegisterName: |
||
22428 | mz80GetRegisterName: |
||
22429 | mov eax, [esp+4] ; Get our register # |
||
22430 | cmp eax, CPUREG_MAXINDEX |
||
22431 | jae badIndex |
||
22432 | shl eax, 4 ; Times 16 bytes for each entry |
||
22433 | mov eax, [eax+RegTable] |
||
22434 | jmp nameExit |
||
22435 | |||
22436 | badIndex: |
||
22437 | xor eax, eax |
||
22438 | |||
22439 | nameExit: |
||
22440 | ret |
||
22441 | |||
22442 | |||
22443 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22444 | |||
22445 | global _mz80GetRegisterTextValue |
||
22446 | global mz80GetRegisterTextValue_ |
||
22447 | global mz80GetRegisterTextValue |
||
22448 | |||
22449 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22450 | |||
22451 | mz80GetRegisterTextValue_: |
||
22452 | _mz80GetRegisterTextValue: |
||
22453 | mz80GetRegisterTextValue: |
||
22454 | push esi |
||
22455 | push edi |
||
22456 | push edx |
||
22457 | mov eax, [esp+16] ; Get our register # |
||
22458 | mov esi, [esp+20] ; Get our context address |
||
22459 | mov edi, [esp+24] ; Address to place text |
||
22460 | or esi, esi ; Is context NULL? |
||
22461 | jnz getVal2 ; Nope - use it! |
||
22462 | mov esi, _mz80contextBegin |
||
22463 | |||
22464 | getVal2: |
||
22465 | mov edx, eax ; Save off our index for later |
||
22466 | call getRegValueInternal |
||
22467 | |||
22468 | ; EAX Holds the value, EDX=Register #, and EDI=Destination! |
||
22469 | |||
22470 | call convertValueToText |
||
22471 | |||
22472 | pop edx |
||
22473 | pop esi |
||
22474 | pop edi |
||
22475 | ret |
||
22476 | |||
22477 | |||
22478 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22479 | |||
22480 | global _mz80WriteValue |
||
22481 | global mz80WriteValue_ |
||
22482 | global mz80WriteValue |
||
22483 | |||
22484 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22485 | |||
22486 | mz80WriteValue_: |
||
22487 | _mz80WriteValue: |
||
22488 | mz80WriteValue: |
||
22489 | push esi |
||
22490 | push edi |
||
22491 | push edx |
||
22492 | push ebx |
||
22493 | push ecx |
||
22494 | push ebp |
||
22495 | mov eax, [esp+28] ; What kind of write is this? |
||
22496 | mov ebx, [esp+32] ; Address |
||
22497 | mov edx, [esp+36] ; Value |
||
22498 | cmp eax, 1 ; Is it a word write? |
||
22499 | je near invalidWrite ; Yep - it's not valid |
||
22500 | cmp eax, 2 ; Is it a dword write? |
||
22501 | je near invalidWrite ; Yep - it's not valid |
||
22502 | |||
22503 | or eax, eax ; Is it a byte write? |
||
22504 | jnz itsIoDummy ; Nope... it's an I/O write |
||
22505 | |||
22506 | mov ebp, [_z80Base] ; Base pointer comes back |
||
22507 | mov edi, [_z80MemWrite] ; Point to the write array |
||
22508 | checkLoop: |
||
22509 | cmp [edi], word 0ffffh ; End of our list? |
||
22510 | je memoryWrite ; Yes - go write it! |
||
22511 | cmp bx, [edi] ; Are we smaller? |
||
22512 | jb nextAddr ; Yes... go to the next addr |
||
22513 | cmp bx, [edi+4] ; Are we smaller? |
||
22514 | jbe callRoutine ; If not, go call it! |
||
22515 | nextAddr: |
||
22516 | add edi, 10h ; Next structure, please |
||
22517 | jmp short checkLoop |
||
22518 | callRoutine: |
||
22519 | |||
22520 | ; |
||
22521 | ; EBX=Address to target, DL=Byte to write |
||
22522 | ; |
||
22523 | |||
22524 | cmp [edi+8], dword 0 ; Null handler? |
||
22525 | je directWriteHandler2 |
||
22526 | |||
22527 | push edi ; Handler |
||
22528 | push edx ; Byte |
||
22529 | push ebx ; Address |
||
22530 | call dword [edi + 8] ; Go call our handler |
||
22531 | add esp, 12 |
||
22532 | jmp short itsGood |
||
22533 | directWriteHandler2: |
||
22534 | sub ebx, [edi] ; Subtract our offset |
||
22535 | add ebx, [edi+12] ; Add in the base address |
||
22536 | mov [ebx], dl ; Store our byte |
||
22537 | jmp short itsGood |
||
22538 | memoryWrite: |
||
22539 | mov [ebp + ebx], dl |
||
22540 | |||
22541 | jmp short itsGood |
||
22542 | itsIoDummy: |
||
22543 | mov edi, [_z80IoWrite] ; Point to the I/O write array |
||
22544 | IOCheck: |
||
22545 | cmp [edi], word 0ffffh ; End of our list? |
||
22546 | je itsGood ; Yes - ignore it! |
||
22547 | cmp bx, [edi] ; Are we smaller? |
||
22548 | jb nextIOAddr ; Yes... go to the next addr |
||
22549 | cmp bx, [edi+2] ; Are we bigger? |
||
22550 | jbe callIOHandler ; If not, go call it! |
||
22551 | nextIOAddr: |
||
22552 | add edi, 0ch ; Next structure, please |
||
22553 | jmp short IOCheck |
||
22554 | callIOHandler: |
||
22555 | push edi ; Handler |
||
22556 | push edx ; Byte |
||
22557 | push ebx ; Address |
||
22558 | call dword [edi+4] ; Call the handler! |
||
22559 | add esp, 12 |
||
22560 | jmp short itsGood |
||
22561 | |||
22562 | invalidWrite: |
||
22563 | mov eax, 0ffffffffh |
||
22564 | jmp short writeValueExit |
||
22565 | |||
22566 | itsGood: |
||
22567 | xor eax, eax |
||
22568 | |||
22569 | writeValueExit: |
||
22570 | pop ebp |
||
22571 | pop ecx |
||
22572 | pop ebx |
||
22573 | pop edx |
||
22574 | pop esi |
||
22575 | pop edi |
||
22576 | ret |
||
22577 | |||
22578 | |||
22579 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22580 | |||
22581 | global _mz80ReadValue |
||
22582 | global mz80ReadValue_ |
||
22583 | global mz80ReadValue |
||
22584 | |||
22585 | times ($$-$) & 3 nop ; pad with NOPs to 4-byte boundary |
||
22586 | |||
22587 | mz80ReadValue_: |
||
22588 | _mz80ReadValue: |
||
22589 | mz80ReadValue: |
||
22590 | push esi |
||
22591 | push edi |
||
22592 | push edx |
||
22593 | push ebx |
||
22594 | push ecx |
||
22595 | push ebp |
||
22596 | mov eax, [esp+28] ; What kind of read is this? |
||
22597 | mov ebx, [esp+32] ; Address |
||
22598 | cmp eax, 1 ; Is it a word read? |
||
22599 | je near invalidRead ; Yep - it's not valid |
||
22600 | cmp eax, 2 ; Is it a dword read? |
||
22601 | je near invalidRead ; Yep - it's not valid |
||
22602 | |||
22603 | or eax, eax ; Is it a byte read? |
||
22604 | jnz itsIoDummyRead ; Nope... it's an I/O read |
||
22605 | |||
22606 | mov ebp, [_z80Base] ; Base pointer comes back |
||
22607 | mov edi, [_z80MemRead] ; Point to the read array |
||
22608 | checkLoopRead: |
||
22609 | cmp [edi], word 0ffffh ; End of our list? |
||
22610 | je memoryRead ; Yes - go read it! |
||
22611 | cmp bx, [edi] ; Are we smaller? |
||
22612 | jb nextAddrRead ; Yes... go to the next addr |
||
22613 | cmp bx, [edi+4] ; Are we smaller? |
||
22614 | jbe callRoutineRead ; If not, go call it! |
||
22615 | nextAddrRead: |
||
22616 | add edi, 10h ; Next structure, please |
||
22617 | jmp short checkLoopRead |
||
22618 | callRoutineRead: |
||
22619 | |||
22620 | ; |
||
22621 | ; EBX=Address to target |
||
22622 | ; |
||
22623 | |||
22624 | cmp [edi+8], dword 0 ; NULL HAndler? |
||
22625 | je handleSharedRead |
||
22626 | |||
22627 | push edi ; Handler |
||
22628 | push ebx ; Address |
||
22629 | call dword [edi + 8] ; Go call our handler |
||
22630 | mov dl, al ; Get our byte read |
||
22631 | add esp, 8 |
||
22632 | jmp short itsGoodRead |
||
22633 | |||
22634 | memoryRead: |
||
22635 | mov dl, [ebp+ebx] |
||
22636 | |||
22637 | jmp short itsGoodRead |
||
22638 | |||
22639 | handleSharedRead: |
||
22640 | sub ebx, [edi] |
||
22641 | add ebx, [edi+12] |
||
22642 | mov dl, [ebx] |
||
22643 | jmp short itsGoodRead |
||
22644 | |||
22645 | itsIoDummyRead: |
||
22646 | mov edi, [_z80IoRead] ; Point to the I/O read array |
||
22647 | mov dl, 0ffh ; Assume no handler |
||
22648 | IOCheckRead: |
||
22649 | cmp [edi], word 0ffffh ; End of our list? |
||
22650 | je itsGoodRead ; Yes - ignore it! |
||
22651 | cmp bx, [edi] ; Are we smaller? |
||
22652 | jb nextIOAddrRead ; Yes... go to the next addr |
||
22653 | cmp bx, [edi+2] ; Are we bigger? |
||
22654 | jbe callIOHandlerRead ; If not, go call it! |
||
22655 | nextIOAddrRead: |
||
22656 | add edi, 0ch ; Next structure, please |
||
22657 | jmp short IOCheckRead |
||
22658 | callIOHandlerRead: |
||
22659 | push edi ; Handler |
||
22660 | push ebx ; Address |
||
22661 | call dword [edi+4] ; Call the handler! |
||
22662 | mov dl, al ; Get our byte read |
||
22663 | add esp, 8 |
||
22664 | jmp short itsGoodRead |
||
22665 | |||
22666 | invalidRead: |
||
22667 | mov eax, 0ffffffffh |
||
22668 | jmp short ReadValueExit |
||
22669 | |||
22670 | itsGoodRead: |
||
22671 | xor eax, eax |
||
22672 | mov al, dl |
||
22673 | |||
22674 | ReadValueExit: |
||
22675 | pop ebp |
||
22676 | pop ecx |
||
22677 | pop ebx |
||
22678 | pop edx |
||
22679 | pop esi |
||
22680 | pop edi |
||
22681 | ret |
||
22682 | |||
22683 | |||
22684 | %ifdef NASM_STACK_NOEXEC |
||
22685 | section .note.GNU-stack noalloc noexec nowrite progbits |
||
22686 | %endif |