1
2;@ Cyclone 68000 Emulator v0.099 - Assembler Output
3
4;@ Copyright (c) 2004,2011 FinalDave (emudave (at) gmail.com)
5;@ Copyright (c) 2005-2011 Gražvydas "notaz" Ignotas (notasas (at) gmail.com)
6
7;@ This code is licensed under the GNU General Public License version 2.0 and the MAME License.
8;@ You can choose the license that has the most advantages for you.
9
10;@ SVN repository can be found at http://code.google.com/p/cyclone68000/
11
12  .arm
13
14  .text
15  .align 4
16
17  .global CycloneInit
18  .type CycloneInit, %function
19  .global CycloneReset
20  .type CycloneReset, %function
21  .global CycloneRun
22  .type CycloneRun, %function
23  .global CycloneSetSr
24  .type CycloneSetSr, %function
25  .global CycloneGetSr
26  .type CycloneGetSr, %function
27  .global CycloneFlushIrq
28  .type CycloneFlushIrq, %function
29  .global CyclonePack
30  .type CyclonePack, %function
31  .global CycloneUnpack
32  .type CycloneUnpack, %function
33  .global CycloneVer
34  .type CycloneVer, %function
35
36CycloneVer: .long 0x0099
37
38;@ --------------------------- Framework --------------------------
39CycloneRun:
40  stmdb sp!,{r4-r8,r10,r11,lr}
41  mov r7,r0          ;@ r7 = Pointer to Cpu Context
42                     ;@ r0-3 = Temporary registers
43  ldrb r10,[r7,#0x46]    ;@ r10 = Flags (NZCV)
44  ldr r6,=CycloneJumpTab ;@ r6 = Opcode Jump table
45  ldr r5,[r7,#0x5c]  ;@ r5 = Cycles
46  ldr r4,[r7,#0x40]  ;@ r4 = Current PC + Memory Base
47                     ;@ r8 = Current Opcode
48  ldr r1,[r7,#0x44]  ;@ Get SR high T_S__III and irq level
49  mov r10,r10,lsl #28;@ r10 = Flags 0xf0000000, cpsr format
50                     ;@ r11 = Source value / Memory Base
51  str r6,[r7,#0x54]  ;@ make a copy to avoid literal pools
52
53  mov r2,#0
54  str r2,[r7,#0x98]  ;@ clear custom CycloneEnd
55;@ CheckInterrupt:
56  movs r0,r1,lsr #24 ;@ Get IRQ level
57  beq NoInts0
58  cmp r0,#6 ;@ irq>6 ?
59  andle r1,r1,#7 ;@ Get interrupt mask
60  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
61  bgt CycloneDoInterrupt
62NoInts0:
63
64;@ Check if our processor is in special state
65;@ and jump to opcode handler if not
66  ldr r0,[r7,#0x58] ;@ state_flags
67  ldrh r8,[r4],#2 ;@ Fetch first opcode
68  tst r0,#0x03 ;@ special state?
69  ldreq pc,[r6,r8,asl #2] ;@ Jump to opcode handler
70
71CycloneSpecial:
72  tst r0,#2 ;@ tracing?
73  bne CycloneDoTrace
74;@ stopped or halted
75  mov r5,#0
76  str r5,[r7,#0x5C]  ;@ eat all cycles
77  ldmia sp!,{r4-r8,r10,r11,pc} ;@ we are stopped, do nothing!
78
79
80;@ We come back here after execution
81CycloneEnd:
82  sub r4,r4,#2
83CycloneEndNoBack:
84  ldr r1,[r7,#0x98]
85  mov r10,r10,lsr #28
86  tst r1,r1
87  bxne r1            ;@ jump to alternative CycloneEnd
88  str r4,[r7,#0x40]  ;@ Save Current PC + Memory Base
89  str r5,[r7,#0x5c]  ;@ Save Cycles
90  strb r10,[r7,#0x46] ;@ Save Flags (NZCV)
91  ldmia sp!,{r4-r8,r10,r11,pc}
92  .ltorg
93
94
95CycloneInit:
96;@ decompress jump table
97  ldr r12,=CycloneJumpTab
98  add r0,r12,#0xe000*4 ;@ ctrl code pointer
99  ldr r1,[r0,#-4]
100  tst r1,r1
101  movne pc,lr ;@ already uncompressed
102  add r3,r12,#0xa000*4 ;@ handler table pointer, r12=dest
103unc_loop:
104  ldrh r1,[r0],#2
105  and r2,r1,#0xf
106  bic r1,r1,#0xf
107  ldr r1,[r3,r1,lsr #2] ;@ r1=handler
108  cmp r2,#0xf
109  addeq r2,r2,#1 ;@ 0xf is really 0x10
110  tst r2,r2
111  ldreqh r2,[r0],#2 ;@ counter is in next word
112  tst r2,r2
113  beq unc_finish ;@ done decompressing
114  tst r1,r1
115  addeq r12,r12,r2,lsl #2 ;@ 0 handler means we should skip those bytes
116  beq unc_loop
117unc_loop_in:
118  subs r2,r2,#1
119  str r1,[r12],#4
120  bgt unc_loop_in
121  b unc_loop
122unc_finish:
123  ldr r12,=CycloneJumpTab
124  ;@ set a-line and f-line handlers
125  add r0,r12,#0xa000*4
126  ldr r1,[r0,#4] ;@ a-line handler
127  ldr r3,[r0,#8] ;@ f-line handler
128  mov r2,#0x1000
129unc_fill3:
130  subs r2,r2,#1
131  str r1,[r0],#4
132  bgt unc_fill3
133  add r0,r12,#0xf000*4
134  mov r2,#0x1000
135unc_fill4:
136  subs r2,r2,#1
137  str r3,[r0],#4
138  bgt unc_fill4
139  bx lr
140  .ltorg
141
142CycloneReset:
143  stmfd sp!,{r7,lr}
144  mov r7,r0
145  mov r0,#0
146  str r0,[r7,#0x58] ;@ state_flags
147  str r0,[r7,#0x48] ;@ OSP
148  mov r1,#0x27 ;@ Supervisor mode
149  strb r1,[r7,#0x44] ;@ set SR high
150  strb r0,[r7,#0x47] ;@ IRQ
151  bic r0,r0,#0xff000000
152  bl m68k_read32 ;@ Call read32(r0) handler
153  str r0,[r7,#0x3c] ;@ Stack pointer
154  mov r0,#0
155  str r0,[r7,#0x60] ;@ Membase
156  mov r0,#4
157  bic r0,r0,#0xff000000
158  bl m68k_read32 ;@ Call read32(r0) handler
159  bl m68k_checkpc ;@ Call checkpc()
160  str r0,[r7,#0x40] ;@ PC + base
161  ldmfd sp!,{r7,pc}
162
163CycloneSetSr:
164  mov r2,r1,lsr #8
165  and r2,r2,#0xa7 ;@ only defined bits
166  strb r2,[r0,#0x44] ;@ set SR high
167  mov r2,r1,lsl #25
168  str r2,[r0,#0x4c] ;@ the X flag
169  bic r2,r1,#0xf3
170  tst r1,#1
171  orrne r2,r2,#2
172  tst r1,#2
173  orrne r2,r2,#1
174  strb r2,[r0,#0x46] ;@ flags
175  bx lr
176
177CycloneGetSr:
178  ldrb r1,[r0,#0x46] ;@ flags
179  bic r2,r1,#0xf3
180  tst r1,#1
181  orrne r2,r2,#2
182  tst r1,#2
183  orrne r2,r2,#1
184  ldr r1,[r0,#0x4c] ;@ the X flag
185  tst r1,#0x20000000
186  orrne r2,r2,#0x10
187  ldrb r1,[r0,#0x44] ;@ the SR high
188  orr r0,r2,r1,lsl #8
189  bx lr
190
191CyclonePack:
192  stmfd sp!,{r4,r5,lr}
193  mov r4,r0
194  mov r5,r1
195  mov r3,#16
196;@ 0x00-0x3f: DA registers
197c_pack_loop:
198  ldr r1,[r0],#4
199  subs r3,r3,#1
200  str r1,[r5],#4
201  bne c_pack_loop
202;@ 0x40: PC
203  ldr r0,[r4,#0x40] ;@ PC + Memory Base
204  ldr r1,[r4,#0x60] ;@ Memory base
205  sub r0,r0,r1
206  str r0,[r5],#4
207;@ 0x44: SR
208  mov r0,r4
209  bl CycloneGetSr
210  strh r0,[r5],#2
211;@ 0x46: IRQ level
212  ldrb r0,[r4,#0x47]
213  strb r0,[r5],#2
214;@ 0x48: other SP
215  ldr r0,[r4,#0x48]
216  str r0,[r5],#4
217;@ 0x4c: CPU state flags
218  ldr r0,[r4,#0x58]
219  str r0,[r5],#4
220  ldmfd sp!,{r4,r5,pc}
221
222CycloneUnpack:
223  stmfd sp!,{r5,r7,lr}
224  mov r7,r0
225  movs r5,r1
226  beq c_unpack_do_pc
227  mov r3,#16
228;@ 0x00-0x3f: DA registers
229c_unpack_loop:
230  ldr r1,[r5],#4
231  subs r3,r3,#1
232  str r1,[r0],#4
233  bne c_unpack_loop
234;@ 0x40: PC
235  ldr r0,[r5],#4 ;@ PC
236  str r0,[r7,#0x40] ;@ handle later
237;@ 0x44: SR
238  ldrh r1,[r5],#2
239  mov r0,r7
240  bl CycloneSetSr
241;@ 0x46: IRQ level
242  ldrb r0,[r5],#2
243  strb r0,[r7,#0x47]
244;@ 0x48: other SP
245  ldr r0,[r5],#4
246  str r0,[r7,#0x48]
247;@ 0x4c: CPU state flags
248  ldr r0,[r5],#4
249  str r0,[r7,#0x58]
250c_unpack_do_pc:
251  ldr r0,[r7,#0x40] ;@ unbased PC
252  mov r1,#0
253  str r1,[r7,#0x60] ;@ Memory base
254  bl m68k_checkpc ;@ Call checkpc()
255  str r0,[r7,#0x40] ;@ PC + Memory Base
256  ldmfd sp!,{r5,r7,pc}
257
258CycloneFlushIrq:
259  ldr r1,[r0,#0x44]  ;@ Get SR high T_S__III and irq level
260  mov r2,r1,lsr #24 ;@ Get IRQ level
261  cmp r2,#6 ;@ irq>6 ?
262  andle r1,r1,#7 ;@ Get interrupt mask
263  cmple r2,r1 ;@ irq<=6: Is irq<=mask ?
264  movle r0,#0
265  bxle lr ;@ no ints
266
267  stmdb sp!,{r4,r5,r7,r8,r10,r11,lr}
268  mov r7,r0
269  mov r0,r2
270  ldrb r10,[r7,#0x46]  ;@ r10 = Flags (NZCV)
271  mov r5,#0
272  ldr r4,[r7,#0x40]    ;@ r4 = Current PC + Memory Base
273  mov r10,r10,lsl #28  ;@ r10 = Flags 0xf0000000, cpsr format
274  adr r2,CycloneFlushIrqEnd
275  str r2,[r7,#0x98]  ;@ set custom CycloneEnd
276  b CycloneDoInterrupt
277
278CycloneFlushIrqEnd:
279  rsb r0,r5,#0
280  str r4,[r7,#0x40]   ;@ Save Current PC + Memory Base
281  strb r10,[r7,#0x46] ;@ Save Flags (NZCV)
282  ldmia sp!,{r4,r5,r7,r8,r10,r11,lr}
283  bx lr
284
285
286CycloneSetRealTAS:
287  bx lr
288
289;@ DoInterrupt - r0=IRQ level
290CycloneDoInterruptGoBack:
291  sub r4,r4,#2
292CycloneDoInterrupt:
293  bic r8,r8,#0xff000000
294  orr r8,r8,r0,lsl #29 ;@ abuse r8
295  ldr r2,[r7,#0x58] ;@ state flags
296  and r0,r0,#7
297  orr r3,r0,#0x20 ;@ Supervisor mode + IRQ level
298  bic r2,r2,#3 ;@ clear stopped and trace states
299  orr r2,r2,#4 ;@ set activity bit: 'not processing instruction'
300  str r2,[r7,#0x58]
301  ldrb r6,[r7,#0x44] ;@ Get old SR high, abuse r6
302  strb r3,[r7,#0x44] ;@ Put new SR high
303
304  ldr r1,[r7,#0x60] ;@ Get Memory base
305  ldr r11,[r7,#0x3c] ;@ Get A7
306  tst r6,#0x20
307;@ get our SP:
308  ldreq r2,[r7,#0x48] ;@ ...or OSP as our stack pointer
309  streq r11,[r7,#0x48]
310  moveq r11,r2
311;@ Push old PC onto stack
312  sub r0,r11,#4 ;@ Predecremented A7
313  sub r1,r4,r1 ;@ r1 = Old PC
314  bic r0,r0,#0xff000000
315  bl m68k_write32 ;@ Call write32(r0,r1) handler
316;@ Push old SR:
317  ldr r0,[r7,#0x4c]   ;@ X bit
318  mov r1,r10,lsr #28  ;@ ____NZCV
319  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
320  tst r2,#1           ;@ 1 if C!=V
321  eorne r1,r1,#3      ;@ ____NZVC
322  and r0,r0,#0x20000000
323  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
324  orr r1,r1,r6,lsl #8 ;@ Include old SR high
325  sub r0,r11,#6 ;@ Predecrement A7
326  str r0,[r7,#0x3c] ;@ Save A7
327  bic r0,r0,#0xff000000
328  bl m68k_write16 ;@ Call write16(r0,r1) handler
329
330  mov r11,r8,lsr #29
331  mov r0,r11
332;@ call IrqCallback if it is defined
333  ldr r3,[r7,#0x8c] ;@ IrqCallback
334  add lr,pc,#4*3
335  tst r3,r3
336  streqb r3,[r7,#0x47] ;@ just clear IRQ if there is no callback
337  mvneq r0,#0 ;@ and simulate -1 return
338  bxne r3
339;@ get IRQ vector address:
340  cmn r0,#1 ;@ returned -1?
341  addeq r0,r11,#0x18 ;@ use autovector then
342  cmn r0,#2 ;@ returned -2?
343  moveq r0,#0x18 ;@ use spurious interrupt then
344  mov r0,r0,lsl #2 ;@ get vector address
345
346  ldr r11,[r7,#0x60] ;@ Get Memory base
347;@ Read IRQ Vector:
348  bic r0,r0,#0xff000000
349  bl m68k_read32 ;@ Call read32(r0) handler
350  tst r0,r0 ;@ uninitialized int vector?
351  moveq r0,#0x3c
352  bleq m68k_read32 ;@ Call read32(r0) handler
353  add lr,pc,#4
354  add r0,r0,r11 ;@ r0 = Memory Base + New PC
355  bl m68k_checkpc ;@ Call checkpc()
356  mov r4,r0
357
358  tst r4,#1
359  bne ExceptionAddressError_r_prg_r4
360  ldr r6,[r7,#0x54]
361  ldrh r8,[r4],#2 ;@ Fetch next opcode
362  subs r5,r5,#44 ;@ Subtract cycles
363  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
364  b CycloneEnd
365
366Exception:
367  ;@ Cause an Exception - Vector number in r0
368  mov r11,lr ;@ Preserve ARM return address
369  bic r8,r8,#0xff000000
370  orr r8,r8,r0,lsl #24 ;@ abuse r8
371  ldr r6,[r7,#0x44] ;@ Get old SR high, abuse r6
372  ldr r2,[r7,#0x58] ;@ state flags
373  and r3,r6,#0x27 ;@ clear trace and unused flags
374  orr r3,r3,#0x20 ;@ set supervisor mode
375  bic r2,r2,#3 ;@ clear stopped and trace states
376  str r2,[r7,#0x58]
377  strb r3,[r7,#0x44] ;@ Put new SR high
378
379  ldr r0,[r7,#0x3c] ;@ Get A7
380  tst r6,#0x20
381;@ get our SP:
382  ldreq r2,[r7,#0x48] ;@ ...or OSP as our stack pointer
383  streq r0,[r7,#0x48]
384  moveq r0,r2
385;@ Push old PC onto stack
386  ldr r1,[r7,#0x60] ;@ Get Memory base
387  sub r0,r0,#4 ;@ Predecremented A7
388  str r0,[r7,#0x3c] ;@ Save A7
389  sub r1,r4,r1 ;@ r1 = Old PC
390  bic r0,r0,#0xff000000
391  bl m68k_write32 ;@ Call write32(r0,r1) handler
392;@ Push old SR:
393  ldr r0,[r7,#0x4c]   ;@ X bit
394  mov r1,r10,lsr #28  ;@ ____NZCV
395  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
396  tst r2,#1           ;@ 1 if C!=V
397  eorne r1,r1,#3      ;@ ____NZVC
398  and r0,r0,#0x20000000
399  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
400  ldr r0,[r7,#0x3c] ;@ A7
401  orr r1,r1,r6,lsl #8 ;@ Include SR high
402  sub r0,r0,#2 ;@ Predecrement A7
403  str r0,[r7,#0x3c] ;@ Save A7
404  bic r0,r0,#0xff000000
405  bl m68k_write16 ;@ Call write16(r0,r1) handler
406
407;@ Read Exception Vector:
408  mov r0,r8,lsr #24
409  mov r0,r0,lsl #2
410  bic r0,r0,#0xff000000
411  bl m68k_read32 ;@ Call read32(r0) handler
412  ldr r3,[r7,#0x60] ;@ Get Memory base
413  add lr,pc,#4
414  add r0,r0,r3 ;@ r0 = Memory Base + New PC
415  bl m68k_checkpc ;@ Call checkpc()
416  mov r4,r0
417
418  tst r4,#1
419  bne ExceptionAddressError_r_prg_r4
420  ldr r6,[r7,#0x54]
421  bx r11 ;@ Return
422
423ExceptionAddressError_r_data:
424  ldr r1,[r7,#0x44]
425  mov r6,#0x11
426  mov r11,r0
427  tst r1,#0x20
428  orrne r6,r6,#4
429  b ExceptionAddressError
430
431ExceptionAddressError_r_prg:
432  ldr r1,[r7,#0x44]
433  mov r6,#0x12
434  mov r11,r0
435  tst r1,#0x20
436  orrne r6,r6,#4
437  b ExceptionAddressError
438
439ExceptionAddressError_w_data:
440  ldr r1,[r7,#0x44]
441  mov r6,#0x01
442  mov r11,r0
443  tst r1,#0x20
444  orrne r6,r6,#4
445  b ExceptionAddressError
446
447ExceptionAddressError_r_prg_r4:
448  ldr r1,[r7,#0x44]
449  ldr r3,[r7,#0x60] ;@ Get Memory base
450  mov r6,#0x12
451  sub r11,r4,r3
452  tst r1,#0x20
453  orrne r6,r6,#4
454
455ExceptionAddressError:
456;@ r6 - info word (without instruction/not bit), r11 - faulting address
457  ldrb r0,[r7,#0x44] ;@ Get old SR high
458  ldr r2,[r7,#0x58] ;@ state flags
459  and r3,r0,#0x27 ;@ clear trace and unused flags
460  orr r3,r3,#0x20 ;@ set supervisor mode
461  strb r3,[r7,#0x44] ;@ Put new SR high
462  bic r2,r2,#3 ;@ clear stopped and trace states
463  tst r2,#4
464  orrne r6,r6,#8 ;@ complete info word
465  orr r2,r2,#4 ;@ set activity bit: 'not processing instruction'
466  str r2,[r7,#0x58]
467  and r10,r10,#0xf0000000
468  orr r10,r10,r0,lsl #4 ;@ some preparations for SR push
469
470  ldr r0,[r7,#0x3c] ;@ Get A7
471  tst r10,#0x200
472;@ get our SP:
473  ldreq r2,[r7,#0x48] ;@ ...or OSP as our stack pointer
474  streq r0,[r7,#0x48]
475  moveq r0,r2
476;@ Push old PC onto stack
477  ldr r1,[r7,#0x60] ;@ Get Memory base
478  sub r0,r0,#4 ;@ Predecremented A7
479  sub r1,r4,r1 ;@ r1 = Old PC
480  str r0,[r7,#0x3c] ;@ Save A7
481  bic r0,r0,#0xff000000
482  bl m68k_write32 ;@ Call write32(r0,r1) handler
483;@ Push old SR:
484  ldr r0,[r7,#0x4c]   ;@ X bit
485  mov r1,r10,ror #28  ;@ ____NZCV
486  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
487  tst r2,#1           ;@ 1 if C!=V
488  eorne r1,r1,#3      ;@ ____NZVC
489  and r0,r0,#0x20000000
490  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
491  ldr r0,[r7,#0x3c] ;@ A7
492  and r10,r10,#0xf0000000
493  sub r0,r0,#2 ;@ Predecrement A7
494  str r0,[r7,#0x3c] ;@ Save A7
495  bic r0,r0,#0xff000000
496  bl m68k_write16 ;@ Call write16(r0,r1) handler
497;@ Push IR:
498  ldr r0,[r7,#0x3c] ;@ A7
499  mov r1,r8
500  sub r0,r0,#2 ;@ Predecrement A7
501  str r0,[r7,#0x3c] ;@ Save A7
502  bic r0,r0,#0xff000000
503  bl m68k_write16 ;@ Call write16(r0,r1) handler
504;@ Push address:
505  ldr r0,[r7,#0x3c] ;@ A7
506  mov r1,r11
507  sub r0,r0,#4 ;@ Predecrement A7
508  str r0,[r7,#0x3c] ;@ Save A7
509  bic r0,r0,#0xff000000
510  bl m68k_write32 ;@ Call write32(r0,r1) handler
511;@ Push info word:
512  ldr r0,[r7,#0x3c] ;@ A7
513  mov r1,r6
514  sub r0,r0,#2 ;@ Predecrement A7
515  str r0,[r7,#0x3c] ;@ Save A7
516  bic r0,r0,#0xff000000
517  bl m68k_write16 ;@ Call write16(r0,r1) handler
518
519;@ Read Exception Vector:
520  mov r0,#0x0c
521  bic r0,r0,#0xff000000
522  bl m68k_read32 ;@ Call read32(r0) handler
523  ldr r3,[r7,#0x60] ;@ Get Memory base
524  add lr,pc,#4
525  add r0,r0,r3 ;@ r0 = Memory Base + New PC
526  bl m68k_checkpc ;@ Call checkpc()
527  mov r4,r0
528
529  bic r4,r4,#1
530  ldr r6,[r7,#0x54]
531  ldrh r8,[r4],#2 ;@ Fetch next opcode
532  subs r5,r5,#50 ;@ Subtract cycles
533  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
534  b CycloneEnd
535
536CycloneDoTraceWithChecks:
537  ldr r0,[r7,#0x58]
538  cmp r5,#0
539  orr r0,r0,#2 ;@ go to trace mode
540  str r0,[r7,#0x58]
541  ble CycloneEnd
542;@ CheckInterrupt:
543  movs r0,r1,lsr #24 ;@ Get IRQ level
544  beq CycloneDoTrace
545  cmp r0,#6 ;@ irq>6 ?
546  andle r1,r1,#7 ;@ Get interrupt mask
547  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
548  bgt CycloneDoInterruptGoBack
549
550CycloneDoTrace:
551  str r5,[r7,#0x9c] ;@ save cycles
552  ldr r1,[r7,#0x98]
553  mov r5,#0
554  str r1,[r7,#0xa0]
555  adr r0,TraceEnd
556  str r0,[r7,#0x98] ;@ store TraceEnd as CycloneEnd hadler
557  ldr pc,[r6,r8,asl #2] ;@ Jump to opcode handler
558
559TraceEnd:
560  ldr r2,[r7,#0x58]
561  ldr r0,[r7,#0x9c] ;@ restore cycles
562  ldr r1,[r7,#0xa0] ;@ old CycloneEnd handler
563  mov r10,r10,lsl #28
564  add r5,r0,r5
565  str r1,[r7,#0x98]
566;@ still tracing?
567  tst r2,#2
568  beq TraceDisabled
569;@ trace exception
570  ldr r1,[r7,#0x58]
571  mov r0,#9
572  orr r1,r1,#4 ;@ set activity bit: 'not processing instruction'
573  str r1,[r7,#0x58]
574  bl Exception
575  ldrh r8,[r4],#2 ;@ Fetch next opcode
576  subs r5,r5,#34 ;@ Subtract cycles
577  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
578  b CycloneEnd
579
580TraceDisabled:
581  ldrh r8,[r4],#2 ;@ Fetch next opcode
582  cmp r5,#0
583  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
584  b CycloneEnd
585
586;@ ---------------------------- Opcodes ---------------------------
587Op____: ;@ Called if an opcode is not recognised
588  ldr r1,[r7,#0x58]
589  sub r4,r4,#2
590  orr r1,r1,#4 ;@ set activity bit: 'not processing instruction'
591  str r1,[r7,#0x58]
592  mov r0,#4
593  bl Exception
594
595  ldrh r8,[r4],#2 ;@ Fetch next opcode
596  subs r5,r5,#34 ;@ Subtract cycles
597  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
598  b CycloneEnd
599
600Op__al: ;@ Unrecognised a-line opcode
601  sub r4,r4,#2
602  mov r0,#0x0a
603  bl Exception
604
605  ldrh r8,[r4],#2 ;@ Fetch next opcode
606  subs r5,r5,#4 ;@ Subtract cycles
607  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
608  b CycloneEnd
609
610Op__fl: ;@ Unrecognised f-line opcode
611  sub r4,r4,#2
612  mov r0,#0x0b
613  bl Exception
614
615  ldrh r8,[r4],#2 ;@ Fetch next opcode
616  subs r5,r5,#4 ;@ Subtract cycles
617  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
618  b CycloneEnd
619
620;@ ---------- [6702] beq 4 uses Op6702 ----------
621Op6702:
622  tst r10,#0x40000000 ;@ eq: Z
623  beq BccDontBranch8
624
625  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
626
627;@ Branch taken - Add on r0 to PC
628  add r4,r4,r11,asr #24 ;@ r4 = New PC
629
630  ldrh r8,[r4],#2 ;@ Fetch next opcode
631  subs r5,r5,#10 ;@ Subtract cycles
632  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
633  b CycloneEnd
634
635BccDontBranch8:
636  ldrh r8,[r4],#2 ;@ Fetch next opcode
637  subs r5,r5,#8 ;@ Subtract cycles
638  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
639  b CycloneEnd
640
641;@ ---------- [6602] bne 4 uses Op6602 ----------
642Op6602:
643  tst r10,#0x40000000 ;@ ne: !Z
644  bne BccDontBranch8
645
646  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
647
648;@ Branch taken - Add on r0 to PC
649  add r4,r4,r11,asr #24 ;@ r4 = New PC
650
651  ldrh r8,[r4],#2 ;@ Fetch next opcode
652  subs r5,r5,#10 ;@ Subtract cycles
653  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
654  b CycloneEnd
655
656;@ ---------- [51c8] dbra d0, 3335 uses Op51c8 ----------
657Op51c8:
658;@ Decrement Dn.w
659  and r1,r8,#0x0007
660  mov r1,r1,lsl #2
661  ldrsh r0,[r7,r1]
662  strb r8,[r7,#0x45] ;@ not polling
663  sub r0,r0,#1
664  strh r0,[r7,r1]
665
666;@ Check if Dn.w is -1
667  cmn r0,#1
668  beq DbraMin1
669
670;@ Get Branch offset:
671  ldrsh r0,[r4]
672  add r0,r4,r0 ;@ r0 = New PC
673  bl m68k_checkpc ;@ Call checkpc()
674  mov r4,r0
675  tst r4,#1 ;@ address error?
676  bne ExceptionAddressError_r_prg_r4
677  ldrh r8,[r4],#2 ;@ Fetch next opcode
678  subs r5,r5,#10 ;@ Subtract cycles
679  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
680  b CycloneEnd
681
682;@ Dn.w is -1:
683DbraMin1:
684  add r4,r4,#2 ;@ Skip branch offset
685
686  ldrh r8,[r4],#2 ;@ Fetch next opcode
687  subs r5,r5,#14 ;@ Subtract cycles
688  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
689  b CycloneEnd
690
691;@ ---------- [4a38] tst.b $3333.w uses Op4a38 ----------
692Op4a38:
693  str r4,[r7,#0x50] ;@ Save prev PC + 2
694  str r5,[r7,#0x5c] ;@ Save Cycles
695
696;@ EaCalc : Get '$3333.w' into r0:
697  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
698;@ EaRead : Read '$3333.w' (address in r0) into r0:
699  str r4,[r7,#0x40] ;@ Save PC
700  bic r0,r0,#0xff000000
701  bl m68k_read8 ;@ Call read8(r0) handler
702  movs r0,r0,asl #24
703
704  and r10,r0,#0x80000000 ;@ r10=N_flag
705  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
706
707  ldr r5,[r7,#0x5c] ;@ Load Cycles
708  ldrh r8,[r4],#2 ;@ Fetch next opcode
709  subs r5,r5,#12 ;@ Subtract cycles
710  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
711  b CycloneEnd
712
713;@ ---------- [d040] add.w d0, d0 uses Opd040 ----------
714Opd040:
715;@ EaCalc : Get register index into r0:
716  and r0,r8,#0x000f
717;@ EaRead : Read register[r0] into r0:
718  ldr r0,[r7,r0,lsl #2]
719
720;@ EaCalc : Get register index into r11:
721  and r11,r8,#0x0e00
722  mov r11,r11,lsr #7
723;@ EaRead : Read register[r11] into r1:
724  ldr r1,[r7,r11]
725
726;@ Do arithmetic:
727  mov r0,r0,asl #16
728  adds r1,r0,r1,asl #16
729  mrs r10,cpsr ;@ r10=flags
730  str r10,[r7,#0x4c] ;@ Save X bit
731
732;@ Save result:
733  mov r1,r1,asr #16
734;@ EaWrite: r1 into register[r11]:
735  strh r1,[r7,r11]
736
737  ldrh r8,[r4],#2 ;@ Fetch next opcode
738  subs r5,r5,#4 ;@ Subtract cycles
739  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
740  b CycloneEnd
741
742;@ ---------- [4a79] tst.w $33333333.l uses Op4a79 ----------
743Op4a79:
744  str r4,[r7,#0x50] ;@ Save prev PC + 2
745  str r5,[r7,#0x5c] ;@ Save Cycles
746
747;@ EaCalc : Get '$33333333.l' into r0:
748  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
749  ldrh r0,[r4],#2
750  orr r0,r0,r2,lsl #16
751;@ EaRead : Read '$33333333.l' (address in r0) into r0:
752  str r4,[r7,#0x40] ;@ Save PC
753  bic r0,r0,#0xff000000
754  bl m68k_read16 ;@ Call read16(r0) handler
755  movs r0,r0,asl #16
756
757  and r10,r0,#0x80000000 ;@ r10=N_flag
758  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
759
760  ldr r5,[r7,#0x5c] ;@ Load Cycles
761  ldrh r8,[r4],#2 ;@ Fetch next opcode
762  subs r5,r5,#16 ;@ Subtract cycles
763  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
764  b CycloneEnd
765
766;@ ---------- [0240] andi.w #$3333, d0 uses Op0240 ----------
767Op0240:
768;@ EaCalc : Get '#$3333' into r10:
769  ldrsh r10,[r4],#2 ;@ Fetch immediate value
770;@ EaRead : Read '#$3333' (address in r10) into r10:
771
772;@ EaCalc : Get register index into r11:
773  and r11,r8,#0x000f
774  mov r11,r11,lsl #2
775;@ EaRead : Read register[r11] into r0:
776  ldr r0,[r7,r11]
777
778  mov r10,r10,asl #16
779;@ Do arithmetic:
780  ands r1,r10,r0,asl #16
781  and r10,r1,#0x80000000 ;@ r10=N_flag
782  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
783
784;@ EaWrite: r1 into register[r11]:
785  mov r1,r1,lsr #16
786  strh r1,[r7,r11]
787
788  ldrh r8,[r4],#2 ;@ Fetch next opcode
789  subs r5,r5,#8 ;@ Subtract cycles
790  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
791  b CycloneEnd
792
793;@ ---------- [2038] move.l $3333.w, d0 uses Op2038 ----------
794Op2038:
795  str r4,[r7,#0x50] ;@ Save prev PC + 2
796  str r5,[r7,#0x5c] ;@ Save Cycles
797
798;@ EaCalc : Get '$3333.w' into r0:
799  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
800;@ EaRead : Read '$3333.w' (address in r0) into r1:
801  str r4,[r7,#0x40] ;@ Save PC
802  bic r0,r0,#0xff000000
803  bl m68k_read32 ;@ Call read32(r0) handler
804  movs r1,r0
805
806  and r10,r1,#0x80000000 ;@ r10=N_flag
807  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
808
809;@ EaCalc : Get register index into r0:
810  and r0,r8,#0x0e00
811;@ EaWrite: r1 into register[r0]:
812  str r1,[r7,r0,lsr #7]
813
814  ldr r5,[r7,#0x5c] ;@ Load Cycles
815  ldrh r8,[r4],#2 ;@ Fetch next opcode
816  subs r5,r5,#16 ;@ Subtract cycles
817  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
818  b CycloneEnd
819
820;@ ---------- [b0b8] cmp.l $3333.w, d0 uses Opb0b8 ----------
821Opb0b8:
822  str r4,[r7,#0x50] ;@ Save prev PC + 2
823  str r5,[r7,#0x5c] ;@ Save Cycles
824
825;@ Get EA into r11 and value into r0:
826;@ EaCalc : Get '$3333.w' into r0:
827  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
828;@ EaRead : Read '$3333.w' (address in r0) into r0:
829  str r4,[r7,#0x40] ;@ Save PC
830  bic r0,r0,#0xff000000
831  bl m68k_read32 ;@ Call read32(r0) handler
832
833;@ Get register operand into r1:
834;@ EaCalc : Get register index into r1:
835  and r1,r8,#0x0e00
836;@ EaRead : Read register[r1] into r1:
837  ldr r1,[r7,r1,lsr #7]
838
839;@ Do arithmetic:
840  rsbs r1,r0,r1
841  mrs r10,cpsr ;@ r10=flags
842  eor r10,r10,#0x20000000 ;@ Invert carry
843
844  ldr r5,[r7,#0x5c] ;@ Load Cycles
845  ldrh r8,[r4],#2 ;@ Fetch next opcode
846  subs r5,r5,#18 ;@ Subtract cycles
847  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
848  b CycloneEnd
849
850;@ ---------- [6002] bra 4 uses Op6002 ----------
851Op6002:
852  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
853
854;@ Branch taken - Add on r0 to PC
855  add r4,r4,r11,asr #24 ;@ r4 = New PC
856
857  ldrh r8,[r4],#2 ;@ Fetch next opcode
858  subs r5,r5,#10 ;@ Subtract cycles
859  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
860  b CycloneEnd
861
862;@ ---------- [30c0] move.w d0, (a0)+ uses Op30c0 ----------
863Op30c0:
864  str r4,[r7,#0x50] ;@ Save prev PC + 2
865  str r5,[r7,#0x5c] ;@ Save Cycles
866
867;@ EaCalc : Get register index into r1:
868  and r1,r8,#0x000f
869  mov r1,r1,lsl #2
870;@ EaRead : Read register[r1] into r1:
871  ldrh r1,[r7,r1]
872
873  movs r2,r1,lsl #16
874  and r10,r2,#0x80000000 ;@ r10=N_flag
875  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
876
877;@ EaCalc : Get '(a0)+' into r0:
878  and r2,r8,#0x1e00
879  ldr r0,[r7,r2,lsr #7]
880  add r3,r0,#2 ;@ Post-increment An
881  str r3,[r7,r2,lsr #7]
882;@ EaWrite: Write r1 into '(a0)+' (address in r0):
883  str r4,[r7,#0x40] ;@ Save PC
884  bic r0,r0,#0xff000000
885  bl m68k_write16 ;@ Call write16(r0,r1) handler
886
887  ldr r5,[r7,#0x5c] ;@ Load Cycles
888  ldrh r8,[r4],#2 ;@ Fetch next opcode
889  subs r5,r5,#8 ;@ Subtract cycles
890  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
891  b CycloneEnd
892
893;@ ---------- [3028] move.w ($3333,a0), d0 uses Op3028 ----------
894Op3028:
895  str r4,[r7,#0x50] ;@ Save prev PC + 2
896  str r5,[r7,#0x5c] ;@ Save Cycles
897
898;@ EaCalc : Get '($3333,a0)' into r0:
899  ldrsh r0,[r4],#2 ;@ Fetch offset
900  and r2,r8,#0x000f
901  ldr r2,[r7,r2,lsl #2]
902  add r0,r0,r2 ;@ Add on offset
903;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
904  str r4,[r7,#0x40] ;@ Save PC
905  bic r0,r0,#0xff000000
906  bl m68k_read16 ;@ Call read16(r0) handler
907  movs r1,r0,asl #16
908
909  and r10,r1,#0x80000000 ;@ r10=N_flag
910  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
911
912;@ EaCalc : Get register index into r0:
913  and r0,r8,#0x0e00
914  mov r0,r0,lsr #7
915;@ EaWrite: r1 into register[r0]:
916  mov r1,r1,lsr #16
917  strh r1,[r7,r0]
918
919  ldr r5,[r7,#0x5c] ;@ Load Cycles
920  ldrh r8,[r4],#2 ;@ Fetch next opcode
921  subs r5,r5,#12 ;@ Subtract cycles
922  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
923  b CycloneEnd
924
925;@ ---------- [0c40] cmpi.w #$3333, d0 uses Op0c40 ----------
926Op0c40:
927;@ EaCalc : Get '#$3333' into r10:
928  ldrsh r10,[r4],#2 ;@ Fetch immediate value
929;@ EaRead : Read '#$3333' (address in r10) into r10:
930
931;@ EaCalc : Get register index into r0:
932  and r0,r8,#0x000f
933;@ EaRead : Read register[r0] into r0:
934  ldr r0,[r7,r0,lsl #2]
935
936  mov r10,r10,asl #16
937;@ Do arithmetic:
938  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
939  mrs r10,cpsr ;@ r10=flags
940  eor r10,r10,#0x20000000 ;@ Invert carry
941
942  ldrh r8,[r4],#2 ;@ Fetch next opcode
943  subs r5,r5,#8 ;@ Subtract cycles
944  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
945  b CycloneEnd
946
947;@ ---------- [0c79] cmpi.w #$3333, $33333333.l uses Op0c79 ----------
948Op0c79:
949  str r4,[r7,#0x50] ;@ Save prev PC + 2
950  str r5,[r7,#0x5c] ;@ Save Cycles
951
952;@ EaCalc : Get '#$3333' into r10:
953  ldrsh r10,[r4],#2 ;@ Fetch immediate value
954;@ EaRead : Read '#$3333' (address in r10) into r10:
955
956;@ EaCalc : Get '$33333333.l' into r0:
957  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
958  ldrh r0,[r4],#2
959  orr r0,r0,r2,lsl #16
960;@ EaRead : Read '$33333333.l' (address in r0) into r0:
961  str r4,[r7,#0x40] ;@ Save PC
962  bic r0,r0,#0xff000000
963  bl m68k_read16 ;@ Call read16(r0) handler
964
965  mov r10,r10,asl #16
966;@ Do arithmetic:
967  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
968  mrs r10,cpsr ;@ r10=flags
969  eor r10,r10,#0x20000000 ;@ Invert carry
970
971  ldr r5,[r7,#0x5c] ;@ Load Cycles
972  ldrh r8,[r4],#2 ;@ Fetch next opcode
973  subs r5,r5,#20 ;@ Subtract cycles
974  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
975  b CycloneEnd
976
977;@ ---------- [4e75] rts uses Op4e75 ----------
978Op4e75:
979  str r4,[r7,#0x50] ;@ Save prev PC + 2
980  str r5,[r7,#0x5c] ;@ Save Cycles
981
982;@ Pop PC:
983  ldr r0,[r7,#0x3c]
984  add r1,r0,#4 ;@ Postincrement A7
985  str r1,[r7,#0x3c] ;@ Save A7
986  str r4,[r7,#0x40] ;@ Save PC
987  bic r0,r0,#0xff000000
988  bl m68k_read32 ;@ Call read32(r0) handler
989  ldr r1,[r7,#0x60] ;@ Get Memory base
990  add r0,r0,r1 ;@ Memory Base+PC
991
992  bl m68k_checkpc ;@ Call checkpc()
993  mov r4,r0
994  tst r4,#1 ;@ address error?
995  bne ExceptionAddressError_r_prg_r4
996  ldr r5,[r7,#0x5c] ;@ Load Cycles
997  ldrh r8,[r4],#2 ;@ Fetch next opcode
998  subs r5,r5,#16 ;@ Subtract cycles
999  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1000  b CycloneEnd
1001
1002;@ ---------- [4e71] nop uses Op4e71 ----------
1003Op4e71:
1004  ldrh r8,[r4],#2 ;@ Fetch next opcode
1005  subs r5,r5,#4 ;@ Subtract cycles
1006  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1007  b CycloneEnd
1008
1009;@ ---------- [3000] move.w d0, d0 uses Op3000 ----------
1010Op3000:
1011;@ EaCalc : Get register index into r1:
1012  and r1,r8,#0x000f
1013  mov r1,r1,lsl #2
1014;@ EaRead : Read register[r1] into r1:
1015  ldrh r1,[r7,r1]
1016
1017  movs r2,r1,lsl #16
1018  and r10,r2,#0x80000000 ;@ r10=N_flag
1019  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1020
1021;@ EaCalc : Get register index into r0:
1022  and r0,r8,#0x0e00
1023  mov r0,r0,lsr #7
1024;@ EaWrite: r1 into register[r0]:
1025  strh r1,[r7,r0]
1026
1027  ldrh r8,[r4],#2 ;@ Fetch next opcode
1028  subs r5,r5,#4 ;@ Subtract cycles
1029  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1030  b CycloneEnd
1031
1032;@ ---------- [0839] btst #$33, $33333333.l uses Op0839 ----------
1033Op0839:
1034  str r4,[r7,#0x50] ;@ Save prev PC + 2
1035  str r5,[r7,#0x5c] ;@ Save Cycles
1036
1037
1038;@ EaCalc : Get '#$33' into r0:
1039  ldrsb r0,[r4],#2 ;@ Fetch immediate value
1040;@ EaRead : Read '#$33' (address in r0) into r0:
1041
1042  mov r11,#1
1043  bic r10,r10,#0x40000000 ;@ Blank Z flag
1044  and r0,r0,#7    ;@ mem - do mod 8
1045  mov r11,r11,lsl r0 ;@ Make bit mask
1046
1047;@ EaCalc : Get '$33333333.l' into r0:
1048  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
1049  ldrh r0,[r4],#2
1050  orr r0,r0,r2,lsl #16
1051;@ EaRead : Read '$33333333.l' (address in r0) into r0:
1052  str r4,[r7,#0x40] ;@ Save PC
1053  bic r0,r0,#0xff000000
1054  bl m68k_read8 ;@ Call read8(r0) handler
1055
1056  tst r0,r11 ;@ Do arithmetic
1057  orreq r10,r10,#0x40000000 ;@ Get Z flag
1058
1059  ldr r5,[r7,#0x5c] ;@ Load Cycles
1060  ldrh r8,[r4],#2 ;@ Fetch next opcode
1061  subs r5,r5,#20 ;@ Subtract cycles
1062  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1063  b CycloneEnd
1064
1065;@ ---------- [7000] moveq #$0, d0 uses Op7000 ----------
1066Op7000:
1067  movs r0,r8,asl #24
1068  and r1,r8,#0x0e00
1069  mov r0,r0,asr #24 ;@ Sign extended Quick value
1070  and r10,r0,#0x80000000 ;@ r10=N_flag
1071  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1072  str r0,[r7,r1,lsr #7] ;@ Store into Dn
1073
1074  ldrh r8,[r4],#2 ;@ Fetch next opcode
1075  subs r5,r5,#4 ;@ Subtract cycles
1076  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1077  b CycloneEnd
1078
1079;@ ---------- [3040] movea.w d0, a0 uses Op3040 ----------
1080Op3040:
1081;@ EaCalc : Get register index into r1:
1082  and r1,r8,#0x000f
1083  mov r1,r1,lsl #2
1084;@ EaRead : Read register[r1] into r1:
1085  ldrsh r1,[r7,r1]
1086
1087;@ EaCalc : Get register index into r0:
1088  and r0,r8,#0x1e00
1089;@ EaWrite: r1 into register[r0]:
1090  str r1,[r7,r0,lsr #7]
1091
1092  ldrh r8,[r4],#2 ;@ Fetch next opcode
1093  subs r5,r5,#4 ;@ Subtract cycles
1094  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1095  b CycloneEnd
1096
1097;@ ---------- [0838] btst #$33, $3333.w uses Op0838 ----------
1098Op0838:
1099  str r4,[r7,#0x50] ;@ Save prev PC + 2
1100  str r5,[r7,#0x5c] ;@ Save Cycles
1101
1102
1103;@ EaCalc : Get '#$33' into r0:
1104  ldrsb r0,[r4],#2 ;@ Fetch immediate value
1105;@ EaRead : Read '#$33' (address in r0) into r0:
1106
1107  mov r11,#1
1108  bic r10,r10,#0x40000000 ;@ Blank Z flag
1109  and r0,r0,#7    ;@ mem - do mod 8
1110  mov r11,r11,lsl r0 ;@ Make bit mask
1111
1112;@ EaCalc : Get '$3333.w' into r0:
1113  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
1114;@ EaRead : Read '$3333.w' (address in r0) into r0:
1115  str r4,[r7,#0x40] ;@ Save PC
1116  bic r0,r0,#0xff000000
1117  bl m68k_read8 ;@ Call read8(r0) handler
1118
1119  tst r0,r11 ;@ Do arithmetic
1120  orreq r10,r10,#0x40000000 ;@ Get Z flag
1121
1122  ldr r5,[r7,#0x5c] ;@ Load Cycles
1123  ldrh r8,[r4],#2 ;@ Fetch next opcode
1124  subs r5,r5,#16 ;@ Subtract cycles
1125  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1126  b CycloneEnd
1127
1128;@ ---------- [4a39] tst.b $33333333.l uses Op4a39 ----------
1129Op4a39:
1130  str r4,[r7,#0x50] ;@ Save prev PC + 2
1131  str r5,[r7,#0x5c] ;@ Save Cycles
1132
1133;@ EaCalc : Get '$33333333.l' into r0:
1134  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
1135  ldrh r0,[r4],#2
1136  orr r0,r0,r2,lsl #16
1137;@ EaRead : Read '$33333333.l' (address in r0) into r0:
1138  str r4,[r7,#0x40] ;@ Save PC
1139  bic r0,r0,#0xff000000
1140  bl m68k_read8 ;@ Call read8(r0) handler
1141  movs r0,r0,asl #24
1142
1143  and r10,r0,#0x80000000 ;@ r10=N_flag
1144  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1145
1146  ldr r5,[r7,#0x5c] ;@ Load Cycles
1147  ldrh r8,[r4],#2 ;@ Fetch next opcode
1148  subs r5,r5,#16 ;@ Subtract cycles
1149  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1150  b CycloneEnd
1151
1152;@ ---------- [33d8] move.w (a0)+, $33333333.l uses Op33d8 ----------
1153Op33d8:
1154  str r4,[r7,#0x50] ;@ Save prev PC + 2
1155  str r5,[r7,#0x5c] ;@ Save Cycles
1156
1157;@ EaCalc : Get '(a0)+' into r0:
1158  and r2,r8,#0x000f
1159  ldr r0,[r7,r2,lsl #2]
1160  add r3,r0,#2 ;@ Post-increment An
1161  str r3,[r7,r2,lsl #2]
1162;@ EaRead : Read '(a0)+' (address in r0) into r1:
1163  str r4,[r7,#0x40] ;@ Save PC
1164  bic r0,r0,#0xff000000
1165  bl m68k_read16 ;@ Call read16(r0) handler
1166  movs r1,r0,asl #16
1167
1168  and r10,r1,#0x80000000 ;@ r10=N_flag
1169  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1170
1171;@ EaCalc : Get '$33333333.l' into r0:
1172  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
1173  ldrh r0,[r4],#2
1174  orr r0,r0,r2,lsl #16
1175;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
1176  mov r1,r1,lsr #16
1177  str r4,[r7,#0x40] ;@ Save PC
1178  bic r0,r0,#0xff000000
1179  bl m68k_write16 ;@ Call write16(r0,r1) handler
1180
1181  ldr r5,[r7,#0x5c] ;@ Load Cycles
1182  ldrh r8,[r4],#2 ;@ Fetch next opcode
1183  subs r5,r5,#20 ;@ Subtract cycles
1184  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1185  b CycloneEnd
1186
1187;@ ---------- [6700] beq 3335 uses Op6700 ----------
1188Op6700:
1189  str r4,[r7,#0x50] ;@ Save prev PC + 2
1190  str r5,[r7,#0x5c] ;@ Save Cycles
1191
1192  tst r10,#0x40000000 ;@ eq: Z
1193  beq BccDontBranch16
1194
1195  ldrsh r11,[r4] ;@ Fetch Branch offset
1196;@ Branch taken - Add on r0 to PC
1197  add r0,r4,r11 ;@ New PC
1198  bl m68k_checkpc ;@ Call checkpc()
1199  mov r4,r0
1200  tst r4,#1 ;@ address error?
1201  bne ExceptionAddressError_r_prg_r4
1202
1203  ldr r5,[r7,#0x5c] ;@ Load Cycles
1204  ldrh r8,[r4],#2 ;@ Fetch next opcode
1205  subs r5,r5,#10 ;@ Subtract cycles
1206  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1207  b CycloneEnd
1208
1209BccDontBranch16:
1210  add r4,r4,#2
1211  ldrh r8,[r4],#2 ;@ Fetch next opcode
1212  subs r5,r5,#12 ;@ Subtract cycles
1213  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1214  b CycloneEnd
1215
1216;@ ---------- [b038] cmp.b $3333.w, d0 uses Opb038 ----------
1217Opb038:
1218  str r4,[r7,#0x50] ;@ Save prev PC + 2
1219  str r5,[r7,#0x5c] ;@ Save Cycles
1220
1221;@ Get EA into r11 and value into r0:
1222;@ EaCalc : Get '$3333.w' into r0:
1223  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
1224;@ EaRead : Read '$3333.w' (address in r0) into r0:
1225  str r4,[r7,#0x40] ;@ Save PC
1226  bic r0,r0,#0xff000000
1227  bl m68k_read8 ;@ Call read8(r0) handler
1228
1229;@ Get register operand into r1:
1230;@ EaCalc : Get register index into r1:
1231  and r1,r8,#0x0e00
1232;@ EaRead : Read register[r1] into r1:
1233  ldr r1,[r7,r1,lsr #7]
1234
1235  mov r0,r0,asl #24
1236
1237;@ Do arithmetic:
1238  rsbs r1,r0,r1,asl #24
1239  mrs r10,cpsr ;@ r10=flags
1240  eor r10,r10,#0x20000000 ;@ Invert carry
1241
1242  ldr r5,[r7,#0x5c] ;@ Load Cycles
1243  ldrh r8,[r4],#2 ;@ Fetch next opcode
1244  subs r5,r5,#12 ;@ Subtract cycles
1245  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1246  b CycloneEnd
1247
1248;@ ---------- [3039] move.w $33333333.l, d0 uses Op3039 ----------
1249Op3039:
1250  str r4,[r7,#0x50] ;@ Save prev PC + 2
1251  str r5,[r7,#0x5c] ;@ Save Cycles
1252
1253;@ EaCalc : Get '$33333333.l' into r0:
1254  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
1255  ldrh r0,[r4],#2
1256  orr r0,r0,r2,lsl #16
1257;@ EaRead : Read '$33333333.l' (address in r0) into r1:
1258  str r4,[r7,#0x40] ;@ Save PC
1259  bic r0,r0,#0xff000000
1260  bl m68k_read16 ;@ Call read16(r0) handler
1261  movs r1,r0,asl #16
1262
1263  and r10,r1,#0x80000000 ;@ r10=N_flag
1264  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1265
1266;@ EaCalc : Get register index into r0:
1267  and r0,r8,#0x0e00
1268  mov r0,r0,lsr #7
1269;@ EaWrite: r1 into register[r0]:
1270  mov r1,r1,lsr #16
1271  strh r1,[r7,r0]
1272
1273  ldr r5,[r7,#0x5c] ;@ Load Cycles
1274  ldrh r8,[r4],#2 ;@ Fetch next opcode
1275  subs r5,r5,#16 ;@ Subtract cycles
1276  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1277  b CycloneEnd
1278
1279;@ ---------- [4840] swap d0 uses Op4840 ----------
1280Op4840:
1281;@ EaCalc : Get register index into r11:
1282  and r11,r8,#0x0007
1283;@ EaRead : Read register[r11] into r0:
1284  ldr r0,[r7,r11,lsl #2]
1285
1286  movs r1,r0,ror #16
1287  and r10,r1,#0x80000000 ;@ r10=N_flag
1288  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1289;@ EaWrite: r1 into register[r11]:
1290  str r1,[r7,r11,lsl #2]
1291
1292  ldrh r8,[r4],#2 ;@ Fetch next opcode
1293  subs r5,r5,#4 ;@ Subtract cycles
1294  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1295  b CycloneEnd
1296
1297;@ ---------- [6102] bsr 4 uses Op6102 ----------
1298Op6102:
1299  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
1300
1301;@ Branch taken - Add on r0 to PC
1302;@ Bsr - remember old PC
1303  ldr r12,[r7,#0x60] ;@ Get Memory base
1304  ldr r2,[r7,#0x3c]
1305  sub r1,r4,r12 ;@ r1 = Old PC
1306
1307;@ Push r1 onto stack
1308  sub r0,r2,#4 ;@ Predecrement A7
1309  str r0,[r7,#0x3c] ;@ Save A7
1310  str r4,[r7,#0x40] ;@ Save PC
1311  bic r0,r0,#0xff000000
1312  bl m68k_write32 ;@ Call write32(r0,r1) handler
1313
1314  add r4,r4,r11,asr #24 ;@ r4 = New PC
1315
1316  ldrh r8,[r4],#2 ;@ Fetch next opcode
1317  subs r5,r5,#18 ;@ Subtract cycles
1318  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1319  b CycloneEnd
1320
1321;@ ---------- [6100] bsr 3335 uses Op6100 ----------
1322Op6100:
1323  str r4,[r7,#0x50] ;@ Save prev PC + 2
1324  str r5,[r7,#0x5c] ;@ Save Cycles
1325
1326  ldrsh r11,[r4] ;@ Fetch Branch offset
1327;@ Branch taken - Add on r0 to PC
1328;@ Bsr - remember old PC
1329  ldr r12,[r7,#0x60] ;@ Get Memory base
1330  ldr r2,[r7,#0x3c]
1331  sub r1,r4,r12 ;@ r1 = Old PC
1332  add r1,r1,#2
1333
1334;@ Push r1 onto stack
1335  sub r0,r2,#4 ;@ Predecrement A7
1336  str r0,[r7,#0x3c] ;@ Save A7
1337  str r4,[r7,#0x40] ;@ Save PC
1338  bic r0,r0,#0xff000000
1339  bl m68k_write32 ;@ Call write32(r0,r1) handler
1340
1341  add r0,r4,r11 ;@ New PC
1342  bl m68k_checkpc ;@ Call checkpc()
1343  mov r4,r0
1344  tst r4,#1 ;@ address error?
1345  bne ExceptionAddressError_r_prg_r4
1346
1347  ldr r5,[r7,#0x5c] ;@ Load Cycles
1348  ldrh r8,[r4],#2 ;@ Fetch next opcode
1349  subs r5,r5,#18 ;@ Subtract cycles
1350  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1351  b CycloneEnd
1352
1353;@ ---------- [5e40] addq.w #7, d0 uses Op5e40 ----------
1354Op5e40:
1355;@ EaCalc : Get register index into r11:
1356  and r11,r8,#0x000f
1357  mov r11,r11,lsl #2
1358;@ EaRead : Read register[r11] into r0:
1359  ldr r0,[r7,r11]
1360
1361  and r2,r8,#0x0e00 ;@ Get quick value
1362
1363  mov r0,r0,asl #16
1364
1365  adds r1,r0,r2,lsl #7
1366  mrs r10,cpsr ;@ r10=flags
1367  str r10,[r7,#0x4c] ;@ Save X bit
1368
1369;@ EaWrite: r1 into register[r11]:
1370  mov r1,r1,lsr #16
1371  strh r1,[r7,r11]
1372
1373  ldrh r8,[r4],#2 ;@ Fetch next opcode
1374  subs r5,r5,#4 ;@ Subtract cycles
1375  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1376  b CycloneEnd
1377
1378;@ ---------- [1039] move.b $33333333.l, d0 uses Op1039 ----------
1379Op1039:
1380  str r4,[r7,#0x50] ;@ Save prev PC + 2
1381  str r5,[r7,#0x5c] ;@ Save Cycles
1382
1383;@ EaCalc : Get '$33333333.l' into r0:
1384  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
1385  ldrh r0,[r4],#2
1386  orr r0,r0,r2,lsl #16
1387;@ EaRead : Read '$33333333.l' (address in r0) into r1:
1388  str r4,[r7,#0x40] ;@ Save PC
1389  bic r0,r0,#0xff000000
1390  bl m68k_read8 ;@ Call read8(r0) handler
1391  movs r1,r0,asl #24
1392
1393  and r10,r1,#0x80000000 ;@ r10=N_flag
1394  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1395
1396;@ EaCalc : Get register index into r0:
1397  and r0,r8,#0x0e00
1398;@ EaWrite: r1 into register[r0]:
1399  mov r1,r1,lsr #24
1400  strb r1,[r7,r0,lsr #7]
1401
1402  ldr r5,[r7,#0x5c] ;@ Load Cycles
1403  ldrh r8,[r4],#2 ;@ Fetch next opcode
1404  subs r5,r5,#16 ;@ Subtract cycles
1405  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1406  b CycloneEnd
1407
1408;@ ---------- [20c0] move.l d0, (a0)+ uses Op20c0 ----------
1409Op20c0:
1410  str r4,[r7,#0x50] ;@ Save prev PC + 2
1411  str r5,[r7,#0x5c] ;@ Save Cycles
1412
1413;@ EaCalc : Get register index into r1:
1414  and r1,r8,#0x000f
1415;@ EaRead : Read register[r1] into r1:
1416  ldr r1,[r7,r1,lsl #2]
1417  tst r1,r1
1418
1419  and r10,r1,#0x80000000 ;@ r10=N_flag
1420  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1421
1422;@ EaCalc : Get '(a0)+' into r0:
1423  and r2,r8,#0x0e00
1424  orr r2,r2,#0x1000 ;@ A0-7
1425  ldr r0,[r7,r2,lsr #7]
1426  add r3,r0,#4 ;@ Post-increment An
1427  str r3,[r7,r2,lsr #7]
1428;@ EaWrite: Write r1 into '(a0)+' (address in r0):
1429  str r4,[r7,#0x40] ;@ Save PC
1430  bic r0,r0,#0xff000000
1431  bl m68k_write32 ;@ Call write32(r0,r1) handler
1432
1433  ldr r5,[r7,#0x5c] ;@ Load Cycles
1434  ldrh r8,[r4],#2 ;@ Fetch next opcode
1435  subs r5,r5,#12 ;@ Subtract cycles
1436  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1437  b CycloneEnd
1438
1439;@ ---------- [1018] move.b (a0)+, d0 uses Op1018 ----------
1440Op1018:
1441  str r4,[r7,#0x50] ;@ Save prev PC + 2
1442  str r5,[r7,#0x5c] ;@ Save Cycles
1443
1444;@ EaCalc : Get '(a0)+' into r0:
1445  and r2,r8,#0x000f
1446  ldr r0,[r7,r2,lsl #2]
1447  add r3,r0,#1 ;@ Post-increment An
1448  str r3,[r7,r2,lsl #2]
1449;@ EaRead : Read '(a0)+' (address in r0) into r1:
1450  str r4,[r7,#0x40] ;@ Save PC
1451  bic r0,r0,#0xff000000
1452  bl m68k_read8 ;@ Call read8(r0) handler
1453  movs r1,r0,asl #24
1454
1455  and r10,r1,#0x80000000 ;@ r10=N_flag
1456  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1457
1458;@ EaCalc : Get register index into r0:
1459  and r0,r8,#0x0e00
1460;@ EaWrite: r1 into register[r0]:
1461  mov r1,r1,lsr #24
1462  strb r1,[r7,r0,lsr #7]
1463
1464  ldr r5,[r7,#0x5c] ;@ Load Cycles
1465  ldrh r8,[r4],#2 ;@ Fetch next opcode
1466  subs r5,r5,#8 ;@ Subtract cycles
1467  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1468  b CycloneEnd
1469
1470;@ ---------- [30d0] move.w (a0), (a0)+ uses Op30d0 ----------
1471Op30d0:
1472  str r4,[r7,#0x50] ;@ Save prev PC + 2
1473  str r5,[r7,#0x5c] ;@ Save Cycles
1474
1475;@ EaCalc : Get '(a0)' into r0:
1476  and r2,r8,#0x000f
1477  orr r2,r2,#0x8 ;@ A0-7
1478  ldr r0,[r7,r2,lsl #2]
1479;@ EaRead : Read '(a0)' (address in r0) into r1:
1480  str r4,[r7,#0x40] ;@ Save PC
1481  bic r0,r0,#0xff000000
1482  bl m68k_read16 ;@ Call read16(r0) handler
1483  movs r1,r0,asl #16
1484
1485  and r10,r1,#0x80000000 ;@ r10=N_flag
1486  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1487
1488;@ EaCalc : Get '(a0)+' into r0:
1489  and r2,r8,#0x1e00
1490  ldr r0,[r7,r2,lsr #7]
1491  add r3,r0,#2 ;@ Post-increment An
1492  str r3,[r7,r2,lsr #7]
1493;@ EaWrite: Write r1 into '(a0)+' (address in r0):
1494  mov r1,r1,lsr #16
1495  bic r0,r0,#0xff000000
1496  bl m68k_write16 ;@ Call write16(r0,r1) handler
1497
1498  ldr r5,[r7,#0x5c] ;@ Load Cycles
1499  ldrh r8,[r4],#2 ;@ Fetch next opcode
1500  subs r5,r5,#12 ;@ Subtract cycles
1501  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1502  b CycloneEnd
1503
1504;@ ---------- [3080] move.w d0, (a0) uses Op3080 ----------
1505Op3080:
1506  str r4,[r7,#0x50] ;@ Save prev PC + 2
1507  str r5,[r7,#0x5c] ;@ Save Cycles
1508
1509;@ EaCalc : Get register index into r1:
1510  and r1,r8,#0x000f
1511  mov r1,r1,lsl #2
1512;@ EaRead : Read register[r1] into r1:
1513  ldrh r1,[r7,r1]
1514
1515  movs r2,r1,lsl #16
1516  and r10,r2,#0x80000000 ;@ r10=N_flag
1517  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1518
1519;@ EaCalc : Get '(a0)' into r0:
1520  and r2,r8,#0x1e00
1521  ldr r0,[r7,r2,lsr #7]
1522;@ EaWrite: Write r1 into '(a0)' (address in r0):
1523  str r4,[r7,#0x40] ;@ Save PC
1524  bic r0,r0,#0xff000000
1525  bl m68k_write16 ;@ Call write16(r0,r1) handler
1526
1527  ldr r5,[r7,#0x5c] ;@ Load Cycles
1528  ldrh r8,[r4],#2 ;@ Fetch next opcode
1529  subs r5,r5,#8 ;@ Subtract cycles
1530  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1531  b CycloneEnd
1532
1533;@ ---------- [3018] move.w (a0)+, d0 uses Op3018 ----------
1534Op3018:
1535  str r4,[r7,#0x50] ;@ Save prev PC + 2
1536  str r5,[r7,#0x5c] ;@ Save Cycles
1537
1538;@ EaCalc : Get '(a0)+' into r0:
1539  and r2,r8,#0x000f
1540  ldr r0,[r7,r2,lsl #2]
1541  add r3,r0,#2 ;@ Post-increment An
1542  str r3,[r7,r2,lsl #2]
1543;@ EaRead : Read '(a0)+' (address in r0) into r1:
1544  str r4,[r7,#0x40] ;@ Save PC
1545  bic r0,r0,#0xff000000
1546  bl m68k_read16 ;@ Call read16(r0) handler
1547  movs r1,r0,asl #16
1548
1549  and r10,r1,#0x80000000 ;@ r10=N_flag
1550  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1551
1552;@ EaCalc : Get register index into r0:
1553  and r0,r8,#0x0e00
1554  mov r0,r0,lsr #7
1555;@ EaWrite: r1 into register[r0]:
1556  mov r1,r1,lsr #16
1557  strh r1,[r7,r0]
1558
1559  ldr r5,[r7,#0x5c] ;@ Load Cycles
1560  ldrh r8,[r4],#2 ;@ Fetch next opcode
1561  subs r5,r5,#8 ;@ Subtract cycles
1562  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1563  b CycloneEnd
1564
1565;@ ---------- [c040] and.w d0, d0 uses Opc040 ----------
1566Opc040:
1567;@ EaCalc : Get register index into r0:
1568  and r0,r8,#0x000f
1569;@ EaRead : Read register[r0] into r0:
1570  ldr r0,[r7,r0,lsl #2]
1571
1572;@ EaCalc : Get register index into r11:
1573  and r11,r8,#0x0e00
1574  mov r11,r11,lsr #7
1575;@ EaRead : Read register[r11] into r1:
1576  ldr r1,[r7,r11]
1577
1578;@ Do arithmetic:
1579  mov r0,r0,asl #16
1580  ands r1,r0,r1,asl #16
1581  and r10,r1,#0x80000000 ;@ r10=N_flag
1582  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1583
1584;@ Save result:
1585  mov r1,r1,asr #16
1586;@ EaWrite: r1 into register[r11]:
1587  strh r1,[r7,r11]
1588
1589  ldrh r8,[r4],#2 ;@ Fetch next opcode
1590  subs r5,r5,#4 ;@ Subtract cycles
1591  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1592  b CycloneEnd
1593
1594;@ ---------- [3180] move.w d0, ($33,a0,d3.w*2) uses Op3180 ----------
1595Op3180:
1596  str r4,[r7,#0x50] ;@ Save prev PC + 2
1597  str r5,[r7,#0x5c] ;@ Save Cycles
1598
1599;@ EaCalc : Get register index into r1:
1600  and r1,r8,#0x000f
1601  mov r1,r1,lsl #2
1602;@ EaRead : Read register[r1] into r1:
1603  ldrh r1,[r7,r1]
1604
1605  movs r2,r1,lsl #16
1606  and r10,r2,#0x80000000 ;@ r10=N_flag
1607  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1608
1609;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
1610;@ Get extension word into r3:
1611  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
1612  mov r2,r3,lsr #10
1613  tst r3,#0x0800 ;@ Is Rn Word or Long
1614  and r2,r2,#0x3c ;@ r2=Index of Rn
1615  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
1616  ldrne   r2,[r7,r2] ;@ r2=Rn.l
1617  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
1618  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
1619  and r2,r8,#0x1e00
1620  orr r2,r2,#0x1000 ;@ A0-7
1621  mov r2,r2,lsr #9
1622  ldr r2,[r7,r2,lsl #2]
1623  add r0,r2,r3 ;@ r0=Disp+An+Rn
1624;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
1625  str r4,[r7,#0x40] ;@ Save PC
1626  bic r0,r0,#0xff000000
1627  bl m68k_write16 ;@ Call write16(r0,r1) handler
1628
1629  ldr r5,[r7,#0x5c] ;@ Load Cycles
1630  ldrh r8,[r4],#2 ;@ Fetch next opcode
1631  subs r5,r5,#14 ;@ Subtract cycles
1632  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1633  b CycloneEnd
1634
1635;@ ---------- [1198] move.b (a0)+, ($33,a0,d3.w*2) uses Op1198 ----------
1636Op1198:
1637  str r4,[r7,#0x50] ;@ Save prev PC + 2
1638  str r5,[r7,#0x5c] ;@ Save Cycles
1639
1640;@ EaCalc : Get '(a0)+' into r0:
1641  and r2,r8,#0x000f
1642  ldr r0,[r7,r2,lsl #2]
1643  add r3,r0,#1 ;@ Post-increment An
1644  str r3,[r7,r2,lsl #2]
1645;@ EaRead : Read '(a0)+' (address in r0) into r1:
1646  str r4,[r7,#0x40] ;@ Save PC
1647  bic r0,r0,#0xff000000
1648  bl m68k_read8 ;@ Call read8(r0) handler
1649  movs r1,r0,asl #24
1650
1651  and r10,r1,#0x80000000 ;@ r10=N_flag
1652  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1653
1654;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
1655;@ Get extension word into r3:
1656  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
1657  mov r2,r3,lsr #10
1658  tst r3,#0x0800 ;@ Is Rn Word or Long
1659  and r2,r2,#0x3c ;@ r2=Index of Rn
1660  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
1661  ldrne   r2,[r7,r2] ;@ r2=Rn.l
1662  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
1663  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
1664  and r2,r8,#0x1e00
1665  orr r2,r2,#0x1000 ;@ A0-7
1666  mov r2,r2,lsr #9
1667  ldr r2,[r7,r2,lsl #2]
1668  add r0,r2,r3 ;@ r0=Disp+An+Rn
1669;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
1670  mov r1,r1,lsr #24
1671  str r4,[r7,#0x40] ;@ Save PC
1672  bic r0,r0,#0xff000000
1673  bl m68k_write8 ;@ Call write8(r0,r1) handler
1674
1675  ldr r5,[r7,#0x5c] ;@ Load Cycles
1676  ldrh r8,[r4],#2 ;@ Fetch next opcode
1677  subs r5,r5,#18 ;@ Subtract cycles
1678  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1679  b CycloneEnd
1680
1681;@ ---------- [6502] bcs 4 uses Op6502 ----------
1682Op6502:
1683  tst r10,#0x20000000 ;@ cs: C
1684  beq BccDontBranch8
1685
1686  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
1687
1688;@ Branch taken - Add on r0 to PC
1689  add r4,r4,r11,asr #24 ;@ r4 = New PC
1690
1691  ldrh r8,[r4],#2 ;@ Fetch next opcode
1692  subs r5,r5,#10 ;@ Subtract cycles
1693  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1694  b CycloneEnd
1695
1696;@ ---------- [6500] bcs 3335 uses Op6500 ----------
1697Op6500:
1698  str r4,[r7,#0x50] ;@ Save prev PC + 2
1699  str r5,[r7,#0x5c] ;@ Save Cycles
1700
1701  tst r10,#0x20000000 ;@ cs: C
1702  beq BccDontBranch16
1703
1704  ldrsh r11,[r4] ;@ Fetch Branch offset
1705;@ Branch taken - Add on r0 to PC
1706  add r0,r4,r11 ;@ New PC
1707  bl m68k_checkpc ;@ Call checkpc()
1708  mov r4,r0
1709  tst r4,#1 ;@ address error?
1710  bne ExceptionAddressError_r_prg_r4
1711
1712  ldr r5,[r7,#0x5c] ;@ Load Cycles
1713  ldrh r8,[r4],#2 ;@ Fetch next opcode
1714  subs r5,r5,#10 ;@ Subtract cycles
1715  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1716  b CycloneEnd
1717
1718;@ ---------- [6402] bcc 4 uses Op6402 ----------
1719Op6402:
1720  tst r10,#0x20000000 ;@ cc: !C
1721  bne BccDontBranch8
1722
1723  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
1724
1725;@ Branch taken - Add on r0 to PC
1726  add r4,r4,r11,asr #24 ;@ r4 = New PC
1727
1728  ldrh r8,[r4],#2 ;@ Fetch next opcode
1729  subs r5,r5,#10 ;@ Subtract cycles
1730  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1731  b CycloneEnd
1732
1733;@ ---------- [6a02] bpl 4 uses Op6a02 ----------
1734Op6a02:
1735  tst r10,r10 ;@ pl: !N
1736  bmi BccDontBranch8
1737
1738  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
1739
1740;@ Branch taken - Add on r0 to PC
1741  add r4,r4,r11,asr #24 ;@ r4 = New PC
1742
1743  ldrh r8,[r4],#2 ;@ Fetch next opcode
1744  subs r5,r5,#10 ;@ Subtract cycles
1745  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1746  b CycloneEnd
1747
1748;@ ---------- [41f0] lea ($33,a0,d3.w*2), a0 uses Op41f0 ----------
1749Op41f0:
1750  str r4,[r7,#0x50] ;@ Save prev PC + 2
1751  str r5,[r7,#0x5c] ;@ Save Cycles
1752
1753;@ EaCalc : Get '($33,a0,d3.w*2)' into r1:
1754;@ Get extension word into r3:
1755  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
1756  mov r2,r3,lsr #10
1757  tst r3,#0x0800 ;@ Is Rn Word or Long
1758  and r2,r2,#0x3c ;@ r2=Index of Rn
1759  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
1760  ldrne   r2,[r7,r2] ;@ r2=Rn.l
1761  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
1762  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
1763  and r2,r8,#0x000f
1764  orr r2,r2,#0x8 ;@ A0-7
1765  ldr r2,[r7,r2,lsl #2]
1766  add r1,r2,r3 ;@ r1=Disp+An+Rn
1767;@ EaCalc : Get register index into r0:
1768  and r0,r8,#0x0e00
1769  orr r0,r0,#0x1000 ;@ A0-7
1770;@ EaWrite: r1 into register[r0]:
1771  str r1,[r7,r0,lsr #7]
1772
1773  ldr r5,[r7,#0x5c] ;@ Load Cycles
1774  ldrh r8,[r4],#2 ;@ Fetch next opcode
1775  subs r5,r5,#12 ;@ Subtract cycles
1776  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1777  b CycloneEnd
1778
1779;@ ---------- [4a28] tst.b ($3333,a0) uses Op4a28 ----------
1780Op4a28:
1781  str r4,[r7,#0x50] ;@ Save prev PC + 2
1782  str r5,[r7,#0x5c] ;@ Save Cycles
1783
1784;@ EaCalc : Get '($3333,a0)' into r0:
1785  ldrsh r0,[r4],#2 ;@ Fetch offset
1786  and r2,r8,#0x000f
1787  ldr r2,[r7,r2,lsl #2]
1788  add r0,r0,r2 ;@ Add on offset
1789;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
1790  str r4,[r7,#0x40] ;@ Save PC
1791  bic r0,r0,#0xff000000
1792  bl m68k_read8 ;@ Call read8(r0) handler
1793  movs r0,r0,asl #24
1794
1795  and r10,r0,#0x80000000 ;@ r10=N_flag
1796  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1797
1798  ldr r5,[r7,#0x5c] ;@ Load Cycles
1799  ldrh r8,[r4],#2 ;@ Fetch next opcode
1800  subs r5,r5,#12 ;@ Subtract cycles
1801  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1802  b CycloneEnd
1803
1804;@ ---------- [0828] btst #$33, ($3333,a0) uses Op0828 ----------
1805Op0828:
1806  str r4,[r7,#0x50] ;@ Save prev PC + 2
1807  str r5,[r7,#0x5c] ;@ Save Cycles
1808
1809
1810;@ EaCalc : Get '#$33' into r0:
1811  ldrsb r0,[r4],#2 ;@ Fetch immediate value
1812;@ EaRead : Read '#$33' (address in r0) into r0:
1813
1814  mov r11,#1
1815  bic r10,r10,#0x40000000 ;@ Blank Z flag
1816  and r0,r0,#7    ;@ mem - do mod 8
1817  mov r11,r11,lsl r0 ;@ Make bit mask
1818
1819;@ EaCalc : Get '($3333,a0)' into r0:
1820  ldrsh r0,[r4],#2 ;@ Fetch offset
1821  and r2,r8,#0x000f
1822  ldr r2,[r7,r2,lsl #2]
1823  add r0,r0,r2 ;@ Add on offset
1824;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
1825  str r4,[r7,#0x40] ;@ Save PC
1826  bic r0,r0,#0xff000000
1827  bl m68k_read8 ;@ Call read8(r0) handler
1828
1829  tst r0,r11 ;@ Do arithmetic
1830  orreq r10,r10,#0x40000000 ;@ Get Z flag
1831
1832  ldr r5,[r7,#0x5c] ;@ Load Cycles
1833  ldrh r8,[r4],#2 ;@ Fetch next opcode
1834  subs r5,r5,#16 ;@ Subtract cycles
1835  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1836  b CycloneEnd
1837
1838;@ ---------- [0640] addi.w #$3333, d0 uses Op0640 ----------
1839Op0640:
1840;@ EaCalc : Get '#$3333' into r10:
1841  ldrsh r10,[r4],#2 ;@ Fetch immediate value
1842;@ EaRead : Read '#$3333' (address in r10) into r10:
1843
1844;@ EaCalc : Get register index into r11:
1845  and r11,r8,#0x000f
1846  mov r11,r11,lsl #2
1847;@ EaRead : Read register[r11] into r0:
1848  ldr r0,[r7,r11]
1849
1850  mov r10,r10,asl #16
1851;@ Do arithmetic:
1852  adds r1,r10,r0,asl #16 ;@ Defines NZCV
1853  mrs r10,cpsr ;@ r10=flags
1854  str r10,[r7,#0x4c] ;@ Save X bit
1855
1856;@ EaWrite: r1 into register[r11]:
1857  mov r1,r1,lsr #16
1858  strh r1,[r7,r11]
1859
1860  ldrh r8,[r4],#2 ;@ Fetch next opcode
1861  subs r5,r5,#8 ;@ Subtract cycles
1862  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1863  b CycloneEnd
1864
1865;@ ---------- [10c0] move.b d0, (a0)+ uses Op10c0 ----------
1866Op10c0:
1867  str r4,[r7,#0x50] ;@ Save prev PC + 2
1868  str r5,[r7,#0x5c] ;@ Save Cycles
1869
1870;@ EaCalc : Get register index into r1:
1871  and r1,r8,#0x000f
1872;@ EaRead : Read register[r1] into r1:
1873  ldrb r1,[r7,r1,lsl #2]
1874
1875  movs r2,r1,lsl #24
1876  and r10,r2,#0x80000000 ;@ r10=N_flag
1877  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1878
1879;@ EaCalc : Get '(a0)+' into r0:
1880  and r2,r8,#0x1e00
1881  ldr r0,[r7,r2,lsr #7]
1882  add r3,r0,#1 ;@ Post-increment An
1883  str r3,[r7,r2,lsr #7]
1884;@ EaWrite: Write r1 into '(a0)+' (address in r0):
1885  str r4,[r7,#0x40] ;@ Save PC
1886  bic r0,r0,#0xff000000
1887  bl m68k_write8 ;@ Call write8(r0,r1) handler
1888
1889  ldr r5,[r7,#0x5c] ;@ Load Cycles
1890  ldrh r8,[r4],#2 ;@ Fetch next opcode
1891  subs r5,r5,#8 ;@ Subtract cycles
1892  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1893  b CycloneEnd
1894
1895;@ ---------- [10d8] move.b (a0)+, (a0)+ uses Op10d8 ----------
1896Op10d8:
1897  str r4,[r7,#0x50] ;@ Save prev PC + 2
1898  str r5,[r7,#0x5c] ;@ Save Cycles
1899
1900;@ EaCalc : Get '(a0)+' into r0:
1901  and r2,r8,#0x000f
1902  ldr r0,[r7,r2,lsl #2]
1903  add r3,r0,#1 ;@ Post-increment An
1904  str r3,[r7,r2,lsl #2]
1905;@ EaRead : Read '(a0)+' (address in r0) into r1:
1906  str r4,[r7,#0x40] ;@ Save PC
1907  bic r0,r0,#0xff000000
1908  bl m68k_read8 ;@ Call read8(r0) handler
1909  movs r1,r0,asl #24
1910
1911  and r10,r1,#0x80000000 ;@ r10=N_flag
1912  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1913
1914;@ EaCalc : Get '(a0)+' into r0:
1915  and r2,r8,#0x1e00
1916  ldr r0,[r7,r2,lsr #7]
1917  add r3,r0,#1 ;@ Post-increment An
1918  str r3,[r7,r2,lsr #7]
1919;@ EaWrite: Write r1 into '(a0)+' (address in r0):
1920  mov r1,r1,lsr #24
1921  bic r0,r0,#0xff000000
1922  bl m68k_write8 ;@ Call write8(r0,r1) handler
1923
1924  ldr r5,[r7,#0x5c] ;@ Load Cycles
1925  ldrh r8,[r4],#2 ;@ Fetch next opcode
1926  subs r5,r5,#12 ;@ Subtract cycles
1927  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1928  b CycloneEnd
1929
1930;@ ---------- [0000] ori.b #$33, d0 uses Op0000 ----------
1931Op0000:
1932;@ EaCalc : Get '#$33' into r10:
1933  ldrsb r10,[r4],#2 ;@ Fetch immediate value
1934;@ EaRead : Read '#$33' (address in r10) into r10:
1935
1936;@ EaCalc : Get register index into r11:
1937  and r11,r8,#0x000f
1938;@ EaRead : Read register[r11] into r0:
1939  ldr r0,[r7,r11,lsl #2]
1940
1941  mov r10,r10,asl #24
1942;@ Do arithmetic:
1943  orrs r1,r10,r0,asl #24
1944  and r10,r1,#0x80000000 ;@ r10=N_flag
1945  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1946
1947;@ EaWrite: r1 into register[r11]:
1948  mov r1,r1,lsr #24
1949  strb r1,[r7,r11,lsl #2]
1950
1951  ldrh r8,[r4],#2 ;@ Fetch next opcode
1952  subs r5,r5,#8 ;@ Subtract cycles
1953  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1954  b CycloneEnd
1955
1956;@ ---------- [0010] ori.b #$33, (a0) uses Op0010 ----------
1957Op0010:
1958  str r4,[r7,#0x50] ;@ Save prev PC + 2
1959  str r5,[r7,#0x5c] ;@ Save Cycles
1960
1961;@ EaCalc : Get '#$33' into r10:
1962  ldrsb r10,[r4],#2 ;@ Fetch immediate value
1963;@ EaRead : Read '#$33' (address in r10) into r10:
1964
1965;@ EaCalc : Get '(a0)' into r11:
1966  and r2,r8,#0x000f
1967  orr r2,r2,#0x8 ;@ A0-7
1968  ldr r11,[r7,r2,lsl #2]
1969;@ EaRead : Read '(a0)' (address in r11) into r0:
1970  str r4,[r7,#0x40] ;@ Save PC
1971  bic r0,r11,#0xff000000
1972  bl m68k_read8 ;@ Call read8(r0) handler
1973
1974  mov r10,r10,asl #24
1975;@ Do arithmetic:
1976  orrs r1,r10,r0,asl #24
1977  and r10,r1,#0x80000000 ;@ r10=N_flag
1978  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1979
1980;@ EaWrite: Write r1 into '(a0)' (address in r11):
1981  mov r1,r1,lsr #24
1982  bic r0,r11,#0xff000000
1983  bl m68k_write8 ;@ Call write8(r0,r1) handler
1984
1985  ldr r5,[r7,#0x5c] ;@ Load Cycles
1986  ldrh r8,[r4],#2 ;@ Fetch next opcode
1987  subs r5,r5,#16 ;@ Subtract cycles
1988  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1989  b CycloneEnd
1990
1991;@ ---------- [0018] ori.b #$33, (a0)+ uses Op0018 ----------
1992Op0018:
1993  str r4,[r7,#0x50] ;@ Save prev PC + 2
1994  str r5,[r7,#0x5c] ;@ Save Cycles
1995
1996;@ EaCalc : Get '#$33' into r10:
1997  ldrsb r10,[r4],#2 ;@ Fetch immediate value
1998;@ EaRead : Read '#$33' (address in r10) into r10:
1999
2000;@ EaCalc : Get '(a0)+' into r11:
2001  and r2,r8,#0x000f
2002  ldr r11,[r7,r2,lsl #2]
2003  add r3,r11,#1 ;@ Post-increment An
2004  str r3,[r7,r2,lsl #2]
2005;@ EaRead : Read '(a0)+' (address in r11) into r0:
2006  str r4,[r7,#0x40] ;@ Save PC
2007  bic r0,r11,#0xff000000
2008  bl m68k_read8 ;@ Call read8(r0) handler
2009
2010  mov r10,r10,asl #24
2011;@ Do arithmetic:
2012  orrs r1,r10,r0,asl #24
2013  and r10,r1,#0x80000000 ;@ r10=N_flag
2014  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2015
2016;@ EaWrite: Write r1 into '(a0)+' (address in r11):
2017  mov r1,r1,lsr #24
2018  bic r0,r11,#0xff000000
2019  bl m68k_write8 ;@ Call write8(r0,r1) handler
2020
2021  ldr r5,[r7,#0x5c] ;@ Load Cycles
2022  ldrh r8,[r4],#2 ;@ Fetch next opcode
2023  subs r5,r5,#16 ;@ Subtract cycles
2024  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2025  b CycloneEnd
2026
2027;@ ---------- [001f] ori.b #$33, (a7)+ uses Op001f ----------
2028Op001f:
2029  str r4,[r7,#0x50] ;@ Save prev PC + 2
2030  str r5,[r7,#0x5c] ;@ Save Cycles
2031
2032;@ EaCalc : Get '#$33' into r10:
2033  ldrsb r10,[r4],#2 ;@ Fetch immediate value
2034;@ EaRead : Read '#$33' (address in r10) into r10:
2035
2036;@ EaCalc : Get '(a7)+' into r11:
2037  ldr r11,[r7,#0x3c] ;@ A7
2038  add r3,r11,#2 ;@ Post-increment An
2039  str r3,[r7,#0x3c] ;@ A7
2040;@ EaRead : Read '(a7)+' (address in r11) into r0:
2041  str r4,[r7,#0x40] ;@ Save PC
2042  bic r0,r11,#0xff000000
2043  bl m68k_read8 ;@ Call read8(r0) handler
2044
2045  mov r10,r10,asl #24
2046;@ Do arithmetic:
2047  orrs r1,r10,r0,asl #24
2048  and r10,r1,#0x80000000 ;@ r10=N_flag
2049  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2050
2051;@ EaWrite: Write r1 into '(a7)+' (address in r11):
2052  mov r1,r1,lsr #24
2053  bic r0,r11,#0xff000000
2054  bl m68k_write8 ;@ Call write8(r0,r1) handler
2055
2056  ldr r5,[r7,#0x5c] ;@ Load Cycles
2057  ldrh r8,[r4],#2 ;@ Fetch next opcode
2058  subs r5,r5,#16 ;@ Subtract cycles
2059  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2060  b CycloneEnd
2061
2062;@ ---------- [0020] ori.b #$33, -(a0) uses Op0020 ----------
2063Op0020:
2064  str r4,[r7,#0x50] ;@ Save prev PC + 2
2065  str r5,[r7,#0x5c] ;@ Save Cycles
2066
2067;@ EaCalc : Get '#$33' into r10:
2068  ldrsb r10,[r4],#2 ;@ Fetch immediate value
2069;@ EaRead : Read '#$33' (address in r10) into r10:
2070
2071;@ EaCalc : Get '-(a0)' into r11:
2072  and r2,r8,#0x000f
2073  orr r2,r2,#0x8 ;@ A0-7
2074  ldr r11,[r7,r2,lsl #2]
2075  sub r11,r11,#1 ;@ Pre-decrement An
2076  str r11,[r7,r2,lsl #2]
2077;@ EaRead : Read '-(a0)' (address in r11) into r0:
2078  str r4,[r7,#0x40] ;@ Save PC
2079  bic r0,r11,#0xff000000
2080  bl m68k_read8 ;@ Call read8(r0) handler
2081
2082  mov r10,r10,asl #24
2083;@ Do arithmetic:
2084  orrs r1,r10,r0,asl #24
2085  and r10,r1,#0x80000000 ;@ r10=N_flag
2086  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2087
2088;@ EaWrite: Write r1 into '-(a0)' (address in r11):
2089  mov r1,r1,lsr #24
2090  bic r0,r11,#0xff000000
2091  bl m68k_write8 ;@ Call write8(r0,r1) handler
2092
2093  ldr r5,[r7,#0x5c] ;@ Load Cycles
2094  ldrh r8,[r4],#2 ;@ Fetch next opcode
2095  subs r5,r5,#18 ;@ Subtract cycles
2096  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2097  b CycloneEnd
2098
2099;@ ---------- [0027] ori.b #$33, -(a7) uses Op0027 ----------
2100Op0027:
2101  str r4,[r7,#0x50] ;@ Save prev PC + 2
2102  str r5,[r7,#0x5c] ;@ Save Cycles
2103
2104;@ EaCalc : Get '#$33' into r10:
2105  ldrsb r10,[r4],#2 ;@ Fetch immediate value
2106;@ EaRead : Read '#$33' (address in r10) into r10:
2107
2108;@ EaCalc : Get '-(a7)' into r11:
2109  ldr r11,[r7,#0x3c] ;@ A7
2110  sub r11,r11,#2 ;@ Pre-decrement An
2111  str r11,[r7,#0x3c] ;@ A7
2112;@ EaRead : Read '-(a7)' (address in r11) into r0:
2113  str r4,[r7,#0x40] ;@ Save PC
2114  bic r0,r11,#0xff000000
2115  bl m68k_read8 ;@ Call read8(r0) handler
2116
2117  mov r10,r10,asl #24
2118;@ Do arithmetic:
2119  orrs r1,r10,r0,asl #24
2120  and r10,r1,#0x80000000 ;@ r10=N_flag
2121  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2122
2123;@ EaWrite: Write r1 into '-(a7)' (address in r11):
2124  mov r1,r1,lsr #24
2125  bic r0,r11,#0xff000000
2126  bl m68k_write8 ;@ Call write8(r0,r1) handler
2127
2128  ldr r5,[r7,#0x5c] ;@ Load Cycles
2129  ldrh r8,[r4],#2 ;@ Fetch next opcode
2130  subs r5,r5,#18 ;@ Subtract cycles
2131  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2132  b CycloneEnd
2133
2134;@ ---------- [0028] ori.b #$33, ($3333,a0) uses Op0028 ----------
2135Op0028:
2136  str r4,[r7,#0x50] ;@ Save prev PC + 2
2137  str r5,[r7,#0x5c] ;@ Save Cycles
2138
2139;@ EaCalc : Get '#$33' into r10:
2140  ldrsb r10,[r4],#2 ;@ Fetch immediate value
2141;@ EaRead : Read '#$33' (address in r10) into r10:
2142
2143;@ EaCalc : Get '($3333,a0)' into r11:
2144  ldrsh r0,[r4],#2 ;@ Fetch offset
2145  and r2,r8,#0x000f
2146  ldr r2,[r7,r2,lsl #2]
2147  add r11,r0,r2 ;@ Add on offset
2148;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
2149  str r4,[r7,#0x40] ;@ Save PC
2150  bic r0,r11,#0xff000000
2151  bl m68k_read8 ;@ Call read8(r0) handler
2152
2153  mov r10,r10,asl #24
2154;@ Do arithmetic:
2155  orrs r1,r10,r0,asl #24
2156  and r10,r1,#0x80000000 ;@ r10=N_flag
2157  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2158
2159;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
2160  mov r1,r1,lsr #24
2161  bic r0,r11,#0xff000000
2162  bl m68k_write8 ;@ Call write8(r0,r1) handler
2163
2164  ldr r5,[r7,#0x5c] ;@ Load Cycles
2165  ldrh r8,[r4],#2 ;@ Fetch next opcode
2166  subs r5,r5,#20 ;@ Subtract cycles
2167  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2168  b CycloneEnd
2169
2170;@ ---------- [0030] ori.b #$33, ($33,a0,d3.w*2) uses Op0030 ----------
2171Op0030:
2172  str r4,[r7,#0x50] ;@ Save prev PC + 2
2173  str r5,[r7,#0x5c] ;@ Save Cycles
2174
2175;@ EaCalc : Get '#$33' into r10:
2176  ldrsb r10,[r4],#2 ;@ Fetch immediate value
2177;@ EaRead : Read '#$33' (address in r10) into r10:
2178
2179;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
2180;@ Get extension word into r3:
2181  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
2182  mov r2,r3,lsr #10
2183  tst r3,#0x0800 ;@ Is Rn Word or Long
2184  and r2,r2,#0x3c ;@ r2=Index of Rn
2185  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
2186  ldrne   r2,[r7,r2] ;@ r2=Rn.l
2187  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
2188  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
2189  and r2,r8,#0x000f
2190  orr r2,r2,#0x8 ;@ A0-7
2191  ldr r2,[r7,r2,lsl #2]
2192  add r11,r2,r3 ;@ r11=Disp+An+Rn
2193;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
2194  str r4,[r7,#0x40] ;@ Save PC
2195  bic r0,r11,#0xff000000
2196  bl m68k_read8 ;@ Call read8(r0) handler
2197
2198  mov r10,r10,asl #24
2199;@ Do arithmetic:
2200  orrs r1,r10,r0,asl #24
2201  and r10,r1,#0x80000000 ;@ r10=N_flag
2202  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2203
2204;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
2205  mov r1,r1,lsr #24
2206  bic r0,r11,#0xff000000
2207  bl m68k_write8 ;@ Call write8(r0,r1) handler
2208
2209  ldr r5,[r7,#0x5c] ;@ Load Cycles
2210  ldrh r8,[r4],#2 ;@ Fetch next opcode
2211  subs r5,r5,#22 ;@ Subtract cycles
2212  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2213  b CycloneEnd
2214
2215;@ ---------- [0038] ori.b #$33, $3333.w uses Op0038 ----------
2216Op0038:
2217  str r4,[r7,#0x50] ;@ Save prev PC + 2
2218  str r5,[r7,#0x5c] ;@ Save Cycles
2219
2220;@ EaCalc : Get '#$33' into r10:
2221  ldrsb r10,[r4],#2 ;@ Fetch immediate value
2222;@ EaRead : Read '#$33' (address in r10) into r10:
2223
2224;@ EaCalc : Get '$3333.w' into r11:
2225  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
2226;@ EaRead : Read '$3333.w' (address in r11) into r0:
2227  str r4,[r7,#0x40] ;@ Save PC
2228  bic r0,r11,#0xff000000
2229  bl m68k_read8 ;@ Call read8(r0) handler
2230
2231  mov r10,r10,asl #24
2232;@ Do arithmetic:
2233  orrs r1,r10,r0,asl #24
2234  and r10,r1,#0x80000000 ;@ r10=N_flag
2235  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2236
2237;@ EaWrite: Write r1 into '$3333.w' (address in r11):
2238  mov r1,r1,lsr #24
2239  bic r0,r11,#0xff000000
2240  bl m68k_write8 ;@ Call write8(r0,r1) handler
2241
2242  ldr r5,[r7,#0x5c] ;@ Load Cycles
2243  ldrh r8,[r4],#2 ;@ Fetch next opcode
2244  subs r5,r5,#20 ;@ Subtract cycles
2245  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2246  b CycloneEnd
2247
2248;@ ---------- [0039] ori.b #$33, $33333333.l uses Op0039 ----------
2249Op0039:
2250  str r4,[r7,#0x50] ;@ Save prev PC + 2
2251  str r5,[r7,#0x5c] ;@ Save Cycles
2252
2253;@ EaCalc : Get '#$33' into r10:
2254  ldrsb r10,[r4],#2 ;@ Fetch immediate value
2255;@ EaRead : Read '#$33' (address in r10) into r10:
2256
2257;@ EaCalc : Get '$33333333.l' into r11:
2258  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
2259  ldrh r0,[r4],#2
2260  orr r11,r0,r2,lsl #16
2261;@ EaRead : Read '$33333333.l' (address in r11) into r0:
2262  str r4,[r7,#0x40] ;@ Save PC
2263  bic r0,r11,#0xff000000
2264  bl m68k_read8 ;@ Call read8(r0) handler
2265
2266  mov r10,r10,asl #24
2267;@ Do arithmetic:
2268  orrs r1,r10,r0,asl #24
2269  and r10,r1,#0x80000000 ;@ r10=N_flag
2270  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2271
2272;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
2273  mov r1,r1,lsr #24
2274  bic r0,r11,#0xff000000
2275  bl m68k_write8 ;@ Call write8(r0,r1) handler
2276
2277  ldr r5,[r7,#0x5c] ;@ Load Cycles
2278  ldrh r8,[r4],#2 ;@ Fetch next opcode
2279  subs r5,r5,#24 ;@ Subtract cycles
2280  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2281  b CycloneEnd
2282
2283;@ ---------- [003c] ori.b #$33, ccr uses Op003c ----------
2284Op003c:
2285;@ EaCalc : Get '#$33' into r0:
2286  ldrsb r0,[r4],#2 ;@ Fetch immediate value
2287;@ EaRead : Read '#$33' (address in r0) into r0:
2288
2289  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
2290  tst r1,#1           ;@ 1 if C!=V
2291  eorne r0,r0,#3      ;@ ___XNZCV
2292  ldr r2,[r7,#0x4c]   ;@ Load old X bit
2293  orr r10,r10,r0,lsl #28
2294  orr r2,r2,r0,lsl #25 ;@ X bit
2295  str r2,[r7,#0x4c]   ;@ Save X bit
2296
2297  ldrh r8,[r4],#2 ;@ Fetch next opcode
2298  subs r5,r5,#20 ;@ Subtract cycles
2299  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2300  b CycloneEnd
2301
2302;@ ---------- [0040] ori.w #$3333, d0 uses Op0040 ----------
2303Op0040:
2304;@ EaCalc : Get '#$3333' into r10:
2305  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2306;@ EaRead : Read '#$3333' (address in r10) into r10:
2307
2308;@ EaCalc : Get register index into r11:
2309  and r11,r8,#0x000f
2310  mov r11,r11,lsl #2
2311;@ EaRead : Read register[r11] into r0:
2312  ldr r0,[r7,r11]
2313
2314  mov r10,r10,asl #16
2315;@ Do arithmetic:
2316  orrs r1,r10,r0,asl #16
2317  and r10,r1,#0x80000000 ;@ r10=N_flag
2318  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2319
2320;@ EaWrite: r1 into register[r11]:
2321  mov r1,r1,lsr #16
2322  strh r1,[r7,r11]
2323
2324  ldrh r8,[r4],#2 ;@ Fetch next opcode
2325  subs r5,r5,#8 ;@ Subtract cycles
2326  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2327  b CycloneEnd
2328
2329;@ ---------- [0050] ori.w #$3333, (a0) uses Op0050 ----------
2330Op0050:
2331  str r4,[r7,#0x50] ;@ Save prev PC + 2
2332  str r5,[r7,#0x5c] ;@ Save Cycles
2333
2334;@ EaCalc : Get '#$3333' into r10:
2335  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2336;@ EaRead : Read '#$3333' (address in r10) into r10:
2337
2338;@ EaCalc : Get '(a0)' into r11:
2339  and r2,r8,#0x000f
2340  orr r2,r2,#0x8 ;@ A0-7
2341  ldr r11,[r7,r2,lsl #2]
2342;@ EaRead : Read '(a0)' (address in r11) into r0:
2343  str r4,[r7,#0x40] ;@ Save PC
2344  bic r0,r11,#0xff000000
2345  bl m68k_read16 ;@ Call read16(r0) handler
2346
2347  mov r10,r10,asl #16
2348;@ Do arithmetic:
2349  orrs r1,r10,r0,asl #16
2350  and r10,r1,#0x80000000 ;@ r10=N_flag
2351  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2352
2353;@ EaWrite: Write r1 into '(a0)' (address in r11):
2354  mov r1,r1,lsr #16
2355  bic r0,r11,#0xff000000
2356  bl m68k_write16 ;@ Call write16(r0,r1) handler
2357
2358  ldr r5,[r7,#0x5c] ;@ Load Cycles
2359  ldrh r8,[r4],#2 ;@ Fetch next opcode
2360  subs r5,r5,#16 ;@ Subtract cycles
2361  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2362  b CycloneEnd
2363
2364;@ ---------- [0058] ori.w #$3333, (a0)+ uses Op0058 ----------
2365Op0058:
2366  str r4,[r7,#0x50] ;@ Save prev PC + 2
2367  str r5,[r7,#0x5c] ;@ Save Cycles
2368
2369;@ EaCalc : Get '#$3333' into r10:
2370  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2371;@ EaRead : Read '#$3333' (address in r10) into r10:
2372
2373;@ EaCalc : Get '(a0)+' into r11:
2374  and r2,r8,#0x000f
2375  ldr r11,[r7,r2,lsl #2]
2376  add r3,r11,#2 ;@ Post-increment An
2377  str r3,[r7,r2,lsl #2]
2378;@ EaRead : Read '(a0)+' (address in r11) into r0:
2379  str r4,[r7,#0x40] ;@ Save PC
2380  bic r0,r11,#0xff000000
2381  bl m68k_read16 ;@ Call read16(r0) handler
2382
2383  mov r10,r10,asl #16
2384;@ Do arithmetic:
2385  orrs r1,r10,r0,asl #16
2386  and r10,r1,#0x80000000 ;@ r10=N_flag
2387  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2388
2389;@ EaWrite: Write r1 into '(a0)+' (address in r11):
2390  mov r1,r1,lsr #16
2391  bic r0,r11,#0xff000000
2392  bl m68k_write16 ;@ Call write16(r0,r1) handler
2393
2394  ldr r5,[r7,#0x5c] ;@ Load Cycles
2395  ldrh r8,[r4],#2 ;@ Fetch next opcode
2396  subs r5,r5,#16 ;@ Subtract cycles
2397  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2398  b CycloneEnd
2399
2400;@ ---------- [0060] ori.w #$3333, -(a0) uses Op0060 ----------
2401Op0060:
2402  str r4,[r7,#0x50] ;@ Save prev PC + 2
2403  str r5,[r7,#0x5c] ;@ Save Cycles
2404
2405;@ EaCalc : Get '#$3333' into r10:
2406  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2407;@ EaRead : Read '#$3333' (address in r10) into r10:
2408
2409;@ EaCalc : Get '-(a0)' into r11:
2410  and r2,r8,#0x000f
2411  orr r2,r2,#0x8 ;@ A0-7
2412  ldr r11,[r7,r2,lsl #2]
2413  sub r11,r11,#2 ;@ Pre-decrement An
2414  str r11,[r7,r2,lsl #2]
2415;@ EaRead : Read '-(a0)' (address in r11) into r0:
2416  str r4,[r7,#0x40] ;@ Save PC
2417  bic r0,r11,#0xff000000
2418  bl m68k_read16 ;@ Call read16(r0) handler
2419
2420  mov r10,r10,asl #16
2421;@ Do arithmetic:
2422  orrs r1,r10,r0,asl #16
2423  and r10,r1,#0x80000000 ;@ r10=N_flag
2424  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2425
2426;@ EaWrite: Write r1 into '-(a0)' (address in r11):
2427  mov r1,r1,lsr #16
2428  bic r0,r11,#0xff000000
2429  bl m68k_write16 ;@ Call write16(r0,r1) handler
2430
2431  ldr r5,[r7,#0x5c] ;@ Load Cycles
2432  ldrh r8,[r4],#2 ;@ Fetch next opcode
2433  subs r5,r5,#18 ;@ Subtract cycles
2434  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2435  b CycloneEnd
2436
2437;@ ---------- [0068] ori.w #$3333, ($3333,a0) uses Op0068 ----------
2438Op0068:
2439  str r4,[r7,#0x50] ;@ Save prev PC + 2
2440  str r5,[r7,#0x5c] ;@ Save Cycles
2441
2442;@ EaCalc : Get '#$3333' into r10:
2443  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2444;@ EaRead : Read '#$3333' (address in r10) into r10:
2445
2446;@ EaCalc : Get '($3333,a0)' into r11:
2447  ldrsh r0,[r4],#2 ;@ Fetch offset
2448  and r2,r8,#0x000f
2449  ldr r2,[r7,r2,lsl #2]
2450  add r11,r0,r2 ;@ Add on offset
2451;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
2452  str r4,[r7,#0x40] ;@ Save PC
2453  bic r0,r11,#0xff000000
2454  bl m68k_read16 ;@ Call read16(r0) handler
2455
2456  mov r10,r10,asl #16
2457;@ Do arithmetic:
2458  orrs r1,r10,r0,asl #16
2459  and r10,r1,#0x80000000 ;@ r10=N_flag
2460  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2461
2462;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
2463  mov r1,r1,lsr #16
2464  bic r0,r11,#0xff000000
2465  bl m68k_write16 ;@ Call write16(r0,r1) handler
2466
2467  ldr r5,[r7,#0x5c] ;@ Load Cycles
2468  ldrh r8,[r4],#2 ;@ Fetch next opcode
2469  subs r5,r5,#20 ;@ Subtract cycles
2470  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2471  b CycloneEnd
2472
2473;@ ---------- [0070] ori.w #$3333, ($33,a0,d3.w*2) uses Op0070 ----------
2474Op0070:
2475  str r4,[r7,#0x50] ;@ Save prev PC + 2
2476  str r5,[r7,#0x5c] ;@ Save Cycles
2477
2478;@ EaCalc : Get '#$3333' into r10:
2479  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2480;@ EaRead : Read '#$3333' (address in r10) into r10:
2481
2482;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
2483;@ Get extension word into r3:
2484  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
2485  mov r2,r3,lsr #10
2486  tst r3,#0x0800 ;@ Is Rn Word or Long
2487  and r2,r2,#0x3c ;@ r2=Index of Rn
2488  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
2489  ldrne   r2,[r7,r2] ;@ r2=Rn.l
2490  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
2491  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
2492  and r2,r8,#0x000f
2493  orr r2,r2,#0x8 ;@ A0-7
2494  ldr r2,[r7,r2,lsl #2]
2495  add r11,r2,r3 ;@ r11=Disp+An+Rn
2496;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
2497  str r4,[r7,#0x40] ;@ Save PC
2498  bic r0,r11,#0xff000000
2499  bl m68k_read16 ;@ Call read16(r0) handler
2500
2501  mov r10,r10,asl #16
2502;@ Do arithmetic:
2503  orrs r1,r10,r0,asl #16
2504  and r10,r1,#0x80000000 ;@ r10=N_flag
2505  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2506
2507;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
2508  mov r1,r1,lsr #16
2509  bic r0,r11,#0xff000000
2510  bl m68k_write16 ;@ Call write16(r0,r1) handler
2511
2512  ldr r5,[r7,#0x5c] ;@ Load Cycles
2513  ldrh r8,[r4],#2 ;@ Fetch next opcode
2514  subs r5,r5,#22 ;@ Subtract cycles
2515  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2516  b CycloneEnd
2517
2518;@ ---------- [0078] ori.w #$3333, $3333.w uses Op0078 ----------
2519Op0078:
2520  str r4,[r7,#0x50] ;@ Save prev PC + 2
2521  str r5,[r7,#0x5c] ;@ Save Cycles
2522
2523;@ EaCalc : Get '#$3333' into r10:
2524  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2525;@ EaRead : Read '#$3333' (address in r10) into r10:
2526
2527;@ EaCalc : Get '$3333.w' into r11:
2528  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
2529;@ EaRead : Read '$3333.w' (address in r11) into r0:
2530  str r4,[r7,#0x40] ;@ Save PC
2531  bic r0,r11,#0xff000000
2532  bl m68k_read16 ;@ Call read16(r0) handler
2533
2534  mov r10,r10,asl #16
2535;@ Do arithmetic:
2536  orrs r1,r10,r0,asl #16
2537  and r10,r1,#0x80000000 ;@ r10=N_flag
2538  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2539
2540;@ EaWrite: Write r1 into '$3333.w' (address in r11):
2541  mov r1,r1,lsr #16
2542  bic r0,r11,#0xff000000
2543  bl m68k_write16 ;@ Call write16(r0,r1) handler
2544
2545  ldr r5,[r7,#0x5c] ;@ Load Cycles
2546  ldrh r8,[r4],#2 ;@ Fetch next opcode
2547  subs r5,r5,#20 ;@ Subtract cycles
2548  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2549  b CycloneEnd
2550
2551;@ ---------- [0079] ori.w #$3333, $33333333.l uses Op0079 ----------
2552Op0079:
2553  str r4,[r7,#0x50] ;@ Save prev PC + 2
2554  str r5,[r7,#0x5c] ;@ Save Cycles
2555
2556;@ EaCalc : Get '#$3333' into r10:
2557  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2558;@ EaRead : Read '#$3333' (address in r10) into r10:
2559
2560;@ EaCalc : Get '$33333333.l' into r11:
2561  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
2562  ldrh r0,[r4],#2
2563  orr r11,r0,r2,lsl #16
2564;@ EaRead : Read '$33333333.l' (address in r11) into r0:
2565  str r4,[r7,#0x40] ;@ Save PC
2566  bic r0,r11,#0xff000000
2567  bl m68k_read16 ;@ Call read16(r0) handler
2568
2569  mov r10,r10,asl #16
2570;@ Do arithmetic:
2571  orrs r1,r10,r0,asl #16
2572  and r10,r1,#0x80000000 ;@ r10=N_flag
2573  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2574
2575;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
2576  mov r1,r1,lsr #16
2577  bic r0,r11,#0xff000000
2578  bl m68k_write16 ;@ Call write16(r0,r1) handler
2579
2580  ldr r5,[r7,#0x5c] ;@ Load Cycles
2581  ldrh r8,[r4],#2 ;@ Fetch next opcode
2582  subs r5,r5,#24 ;@ Subtract cycles
2583  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2584  b CycloneEnd
2585
2586;@ ---------- [007c] ori.w #$3333, sr uses Op007c ----------
2587Op007c:
2588  ldr r11,[r7,#0x44] ;@ Get SR high
2589  tst r11,#0x20 ;@ Check we are in supervisor mode
2590  beq WrongPrivilegeMode ;@ No
2591
2592;@ EaCalc : Get '#$3333' into r0:
2593  ldrsh r0,[r4],#2 ;@ Fetch immediate value
2594;@ EaRead : Read '#$3333' (address in r0) into r0:
2595
2596  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
2597  tst r1,#1           ;@ 1 if C!=V
2598  eorne r0,r0,#3      ;@ ___XNZCV
2599  ldr r2,[r7,#0x4c]   ;@ Load old X bit
2600  orr r10,r10,r0,lsl #28
2601  orr r2,r2,r0,lsl #25 ;@ X bit
2602  orr r1,r11,r0,lsr #8
2603  and r1,r1,#0xa7 ;@ mask-out unused bits
2604  str r2,[r7,#0x4c]   ;@ Save X bit
2605  strb r1,[r7,#0x44]
2606
2607  ldrh r8,[r4],#2 ;@ Fetch next opcode
2608  ldr r1,[r7,#0x44]
2609  subs r5,r5,#20 ;@ Subtract cycles
2610;@ CheckTrace:
2611  tst r1,#0x80
2612  bne CycloneDoTraceWithChecks
2613  cmp r5,#0
2614  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2615  b CycloneEnd
2616
2617;@ ---------- [0080] ori.l #$33333333, d0 uses Op0080 ----------
2618Op0080:
2619;@ EaCalc : Get '#$33333333' into r10:
2620  ldrh r2,[r4],#2 ;@ Fetch immediate value
2621  ldrh r3,[r4],#2
2622  orr r10,r3,r2,lsl #16
2623;@ EaRead : Read '#$33333333' (address in r10) into r10:
2624
2625;@ EaCalc : Get register index into r11:
2626  and r11,r8,#0x000f
2627;@ EaRead : Read register[r11] into r0:
2628  ldr r0,[r7,r11,lsl #2]
2629
2630;@ Do arithmetic:
2631  orrs r1,r10,r0
2632  and r10,r1,#0x80000000 ;@ r10=N_flag
2633  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2634
2635;@ EaWrite: r1 into register[r11]:
2636  str r1,[r7,r11,lsl #2]
2637
2638  ldrh r8,[r4],#2 ;@ Fetch next opcode
2639  subs r5,r5,#16 ;@ Subtract cycles
2640  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2641  b CycloneEnd
2642
2643;@ ---------- [0090] ori.l #$33333333, (a0) uses Op0090 ----------
2644Op0090:
2645  str r4,[r7,#0x50] ;@ Save prev PC + 2
2646  str r5,[r7,#0x5c] ;@ Save Cycles
2647
2648;@ EaCalc : Get '#$33333333' into r10:
2649  ldrh r2,[r4],#2 ;@ Fetch immediate value
2650  ldrh r3,[r4],#2
2651  orr r10,r3,r2,lsl #16
2652;@ EaRead : Read '#$33333333' (address in r10) into r10:
2653
2654;@ EaCalc : Get '(a0)' into r11:
2655  and r2,r8,#0x000f
2656  orr r2,r2,#0x8 ;@ A0-7
2657  ldr r11,[r7,r2,lsl #2]
2658;@ EaRead : Read '(a0)' (address in r11) into r0:
2659  str r4,[r7,#0x40] ;@ Save PC
2660  bic r0,r11,#0xff000000
2661  bl m68k_read32 ;@ Call read32(r0) handler
2662
2663;@ Do arithmetic:
2664  orrs r1,r10,r0
2665  and r10,r1,#0x80000000 ;@ r10=N_flag
2666  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2667
2668;@ EaWrite: Write r1 into '(a0)' (address in r11):
2669  bic r0,r11,#0xff000000
2670  bl m68k_write32 ;@ Call write32(r0,r1) handler
2671
2672  ldr r5,[r7,#0x5c] ;@ Load Cycles
2673  ldrh r8,[r4],#2 ;@ Fetch next opcode
2674  subs r5,r5,#28 ;@ Subtract cycles
2675  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2676  b CycloneEnd
2677
2678;@ ---------- [0098] ori.l #$33333333, (a0)+ uses Op0098 ----------
2679Op0098:
2680  str r4,[r7,#0x50] ;@ Save prev PC + 2
2681  str r5,[r7,#0x5c] ;@ Save Cycles
2682
2683;@ EaCalc : Get '#$33333333' into r10:
2684  ldrh r2,[r4],#2 ;@ Fetch immediate value
2685  ldrh r3,[r4],#2
2686  orr r10,r3,r2,lsl #16
2687;@ EaRead : Read '#$33333333' (address in r10) into r10:
2688
2689;@ EaCalc : Get '(a0)+' into r11:
2690  and r2,r8,#0x000f
2691  ldr r11,[r7,r2,lsl #2]
2692  add r3,r11,#4 ;@ Post-increment An
2693  str r3,[r7,r2,lsl #2]
2694;@ EaRead : Read '(a0)+' (address in r11) into r0:
2695  str r4,[r7,#0x40] ;@ Save PC
2696  bic r0,r11,#0xff000000
2697  bl m68k_read32 ;@ Call read32(r0) handler
2698
2699;@ Do arithmetic:
2700  orrs r1,r10,r0
2701  and r10,r1,#0x80000000 ;@ r10=N_flag
2702  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2703
2704;@ EaWrite: Write r1 into '(a0)+' (address in r11):
2705  bic r0,r11,#0xff000000
2706  bl m68k_write32 ;@ Call write32(r0,r1) handler
2707
2708  ldr r5,[r7,#0x5c] ;@ Load Cycles
2709  ldrh r8,[r4],#2 ;@ Fetch next opcode
2710  subs r5,r5,#28 ;@ Subtract cycles
2711  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2712  b CycloneEnd
2713
2714;@ ---------- [00a0] ori.l #$33333333, -(a0) uses Op00a0 ----------
2715Op00a0:
2716  str r4,[r7,#0x50] ;@ Save prev PC + 2
2717  str r5,[r7,#0x5c] ;@ Save Cycles
2718
2719;@ EaCalc : Get '#$33333333' into r10:
2720  ldrh r2,[r4],#2 ;@ Fetch immediate value
2721  ldrh r3,[r4],#2
2722  orr r10,r3,r2,lsl #16
2723;@ EaRead : Read '#$33333333' (address in r10) into r10:
2724
2725;@ EaCalc : Get '-(a0)' into r11:
2726  and r2,r8,#0x000f
2727  orr r2,r2,#0x8 ;@ A0-7
2728  ldr r11,[r7,r2,lsl #2]
2729  sub r11,r11,#4 ;@ Pre-decrement An
2730  str r11,[r7,r2,lsl #2]
2731;@ EaRead : Read '-(a0)' (address in r11) into r0:
2732  str r4,[r7,#0x40] ;@ Save PC
2733  bic r0,r11,#0xff000000
2734  bl m68k_read32 ;@ Call read32(r0) handler
2735
2736;@ Do arithmetic:
2737  orrs r1,r10,r0
2738  and r10,r1,#0x80000000 ;@ r10=N_flag
2739  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2740
2741;@ EaWrite: Write r1 into '-(a0)' (address in r11):
2742  bic r0,r11,#0xff000000
2743  bl m68k_write32 ;@ Call write32(r0,r1) handler
2744
2745  ldr r5,[r7,#0x5c] ;@ Load Cycles
2746  ldrh r8,[r4],#2 ;@ Fetch next opcode
2747  subs r5,r5,#30 ;@ Subtract cycles
2748  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2749  b CycloneEnd
2750
2751;@ ---------- [00a8] ori.l #$33333333, ($3333,a0) uses Op00a8 ----------
2752Op00a8:
2753  str r4,[r7,#0x50] ;@ Save prev PC + 2
2754  str r5,[r7,#0x5c] ;@ Save Cycles
2755
2756;@ EaCalc : Get '#$33333333' into r10:
2757  ldrh r2,[r4],#2 ;@ Fetch immediate value
2758  ldrh r3,[r4],#2
2759  orr r10,r3,r2,lsl #16
2760;@ EaRead : Read '#$33333333' (address in r10) into r10:
2761
2762;@ EaCalc : Get '($3333,a0)' into r11:
2763  ldrsh r0,[r4],#2 ;@ Fetch offset
2764  and r2,r8,#0x000f
2765  ldr r2,[r7,r2,lsl #2]
2766  add r11,r0,r2 ;@ Add on offset
2767;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
2768  str r4,[r7,#0x40] ;@ Save PC
2769  bic r0,r11,#0xff000000
2770  bl m68k_read32 ;@ Call read32(r0) handler
2771
2772;@ Do arithmetic:
2773  orrs r1,r10,r0
2774  and r10,r1,#0x80000000 ;@ r10=N_flag
2775  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2776
2777;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
2778  bic r0,r11,#0xff000000
2779  bl m68k_write32 ;@ Call write32(r0,r1) handler
2780
2781  ldr r5,[r7,#0x5c] ;@ Load Cycles
2782  ldrh r8,[r4],#2 ;@ Fetch next opcode
2783  subs r5,r5,#32 ;@ Subtract cycles
2784  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2785  b CycloneEnd
2786
2787;@ ---------- [00b0] ori.l #$33333333, ($33,a0,d3.w*2) uses Op00b0 ----------
2788Op00b0:
2789  str r4,[r7,#0x50] ;@ Save prev PC + 2
2790  str r5,[r7,#0x5c] ;@ Save Cycles
2791
2792;@ EaCalc : Get '#$33333333' into r10:
2793  ldrh r2,[r4],#2 ;@ Fetch immediate value
2794  ldrh r3,[r4],#2
2795  orr r10,r3,r2,lsl #16
2796;@ EaRead : Read '#$33333333' (address in r10) into r10:
2797
2798;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
2799;@ Get extension word into r3:
2800  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
2801  mov r2,r3,lsr #10
2802  tst r3,#0x0800 ;@ Is Rn Word or Long
2803  and r2,r2,#0x3c ;@ r2=Index of Rn
2804  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
2805  ldrne   r2,[r7,r2] ;@ r2=Rn.l
2806  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
2807  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
2808  and r2,r8,#0x000f
2809  orr r2,r2,#0x8 ;@ A0-7
2810  ldr r2,[r7,r2,lsl #2]
2811  add r11,r2,r3 ;@ r11=Disp+An+Rn
2812;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
2813  str r4,[r7,#0x40] ;@ Save PC
2814  bic r0,r11,#0xff000000
2815  bl m68k_read32 ;@ Call read32(r0) handler
2816
2817;@ Do arithmetic:
2818  orrs r1,r10,r0
2819  and r10,r1,#0x80000000 ;@ r10=N_flag
2820  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2821
2822;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
2823  bic r0,r11,#0xff000000
2824  bl m68k_write32 ;@ Call write32(r0,r1) handler
2825
2826  ldr r5,[r7,#0x5c] ;@ Load Cycles
2827  ldrh r8,[r4],#2 ;@ Fetch next opcode
2828  subs r5,r5,#34 ;@ Subtract cycles
2829  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2830  b CycloneEnd
2831
2832;@ ---------- [00b8] ori.l #$33333333, $3333.w uses Op00b8 ----------
2833Op00b8:
2834  str r4,[r7,#0x50] ;@ Save prev PC + 2
2835  str r5,[r7,#0x5c] ;@ Save Cycles
2836
2837;@ EaCalc : Get '#$33333333' into r10:
2838  ldrh r2,[r4],#2 ;@ Fetch immediate value
2839  ldrh r3,[r4],#2
2840  orr r10,r3,r2,lsl #16
2841;@ EaRead : Read '#$33333333' (address in r10) into r10:
2842
2843;@ EaCalc : Get '$3333.w' into r11:
2844  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
2845;@ EaRead : Read '$3333.w' (address in r11) into r0:
2846  str r4,[r7,#0x40] ;@ Save PC
2847  bic r0,r11,#0xff000000
2848  bl m68k_read32 ;@ Call read32(r0) handler
2849
2850;@ Do arithmetic:
2851  orrs r1,r10,r0
2852  and r10,r1,#0x80000000 ;@ r10=N_flag
2853  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2854
2855;@ EaWrite: Write r1 into '$3333.w' (address in r11):
2856  bic r0,r11,#0xff000000
2857  bl m68k_write32 ;@ Call write32(r0,r1) handler
2858
2859  ldr r5,[r7,#0x5c] ;@ Load Cycles
2860  ldrh r8,[r4],#2 ;@ Fetch next opcode
2861  subs r5,r5,#32 ;@ Subtract cycles
2862  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2863  b CycloneEnd
2864
2865;@ ---------- [00b9] ori.l #$33333333, $33333333.l uses Op00b9 ----------
2866Op00b9:
2867  str r4,[r7,#0x50] ;@ Save prev PC + 2
2868  str r5,[r7,#0x5c] ;@ Save Cycles
2869
2870;@ EaCalc : Get '#$33333333' into r10:
2871  ldrh r2,[r4],#2 ;@ Fetch immediate value
2872  ldrh r3,[r4],#2
2873  orr r10,r3,r2,lsl #16
2874;@ EaRead : Read '#$33333333' (address in r10) into r10:
2875
2876;@ EaCalc : Get '$33333333.l' into r11:
2877  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
2878  ldrh r0,[r4],#2
2879  orr r11,r0,r2,lsl #16
2880;@ EaRead : Read '$33333333.l' (address in r11) into r0:
2881  str r4,[r7,#0x40] ;@ Save PC
2882  bic r0,r11,#0xff000000
2883  bl m68k_read32 ;@ Call read32(r0) handler
2884
2885;@ Do arithmetic:
2886  orrs r1,r10,r0
2887  and r10,r1,#0x80000000 ;@ r10=N_flag
2888  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2889
2890;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
2891  bic r0,r11,#0xff000000
2892  bl m68k_write32 ;@ Call write32(r0,r1) handler
2893
2894  ldr r5,[r7,#0x5c] ;@ Load Cycles
2895  ldrh r8,[r4],#2 ;@ Fetch next opcode
2896  subs r5,r5,#36 ;@ Subtract cycles
2897  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2898  b CycloneEnd
2899
2900;@ ---------- [0100] btst d0, d0 uses Op0100 ----------
2901Op0100:
2902;@ EaCalc : Get register index into r11:
2903  and r11,r8,#0x0e00
2904;@ EaRead : Read register[r11] into r11:
2905  ldr r11,[r7,r11,lsr #7]
2906
2907;@ EaCalc : Get register index into r0:
2908  and r0,r8,#0x000f
2909;@ EaRead : Read register[r0] into r0:
2910  ldr r0,[r7,r0,lsl #2]
2911
2912  and r11,r11,#31 ;@ reg - do mod 32
2913
2914  mov r1,#1
2915  tst r0,r1,lsl r11 ;@ Do arithmetic
2916  bicne r10,r10,#0x40000000
2917  orreq r10,r10,#0x40000000 ;@ Get Z flag
2918
2919  ldrh r8,[r4],#2 ;@ Fetch next opcode
2920  subs r5,r5,#6 ;@ Subtract cycles
2921  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2922  b CycloneEnd
2923
2924;@ ---------- [0108] movep.w ($3333,a0), d0 uses Op0108 ----------
2925Op0108:
2926  str r4,[r7,#0x50] ;@ Save prev PC + 2
2927  str r5,[r7,#0x5c] ;@ Save Cycles
2928
2929;@ EaCalc : Get '($3333,a0)' into r6:
2930  ldrsh r0,[r4],#2 ;@ Fetch offset
2931  and r2,r8,#0x000f
2932  ldr r2,[r7,r2,lsl #2]
2933  add r6,r0,r2 ;@ Add on offset
2934;@ EaRead : Read '($3333,a0)' (address in r6) into r11:
2935  str r4,[r7,#0x40] ;@ Save PC
2936  bic r0,r6,#0xff000000
2937  bl m68k_read8 ;@ Call read8(r0) handler
2938  mov r11,r0,asl #24
2939
2940  add r0,r6,#2
2941;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
2942  bic r0,r0,#0xff000000
2943  bl m68k_read8 ;@ Call read8(r0) handler
2944  mov r1,r0,asl #24
2945
2946  orr r1,r11,r1,lsr #8 ;@ second byte
2947;@ EaCalc : Get register index into r0:
2948  and r0,r8,#0x0e00
2949  mov r0,r0,lsr #7
2950;@ EaWrite: r1 into register[r0]:
2951  mov r1,r1,lsr #16
2952  strh r1,[r7,r0]
2953
2954  ldr r6,[r7,#0x54]
2955  ldr r5,[r7,#0x5c] ;@ Load Cycles
2956  ldrh r8,[r4],#2 ;@ Fetch next opcode
2957  subs r5,r5,#16 ;@ Subtract cycles
2958  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2959  b CycloneEnd
2960
2961;@ ---------- [0110] btst d0, (a0) uses Op0110 ----------
2962Op0110:
2963  str r4,[r7,#0x50] ;@ Save prev PC + 2
2964  str r5,[r7,#0x5c] ;@ Save Cycles
2965
2966;@ EaCalc : Get register index into r11:
2967  and r11,r8,#0x0e00
2968;@ EaRead : Read register[r11] into r11:
2969  ldr r11,[r7,r11,lsr #7]
2970
2971;@ EaCalc : Get '(a0)' into r0:
2972  and r2,r8,#0x000f
2973  orr r2,r2,#0x8 ;@ A0-7
2974  ldr r0,[r7,r2,lsl #2]
2975;@ EaRead : Read '(a0)' (address in r0) into r0:
2976  str r4,[r7,#0x40] ;@ Save PC
2977  bic r0,r0,#0xff000000
2978  bl m68k_read8 ;@ Call read8(r0) handler
2979
2980  and r11,r11,#7  ;@ mem - do mod 8
2981
2982  mov r1,#1
2983  tst r0,r1,lsl r11 ;@ Do arithmetic
2984  bicne r10,r10,#0x40000000
2985  orreq r10,r10,#0x40000000 ;@ Get Z flag
2986
2987  ldr r5,[r7,#0x5c] ;@ Load Cycles
2988  ldrh r8,[r4],#2 ;@ Fetch next opcode
2989  subs r5,r5,#8 ;@ Subtract cycles
2990  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2991  b CycloneEnd
2992
2993;@ ---------- [0118] btst d0, (a0)+ uses Op0118 ----------
2994Op0118:
2995  str r4,[r7,#0x50] ;@ Save prev PC + 2
2996  str r5,[r7,#0x5c] ;@ Save Cycles
2997
2998;@ EaCalc : Get register index into r11:
2999  and r11,r8,#0x0e00
3000;@ EaRead : Read register[r11] into r11:
3001  ldr r11,[r7,r11,lsr #7]
3002
3003;@ EaCalc : Get '(a0)+' into r0:
3004  and r2,r8,#0x000f
3005  ldr r0,[r7,r2,lsl #2]
3006  add r3,r0,#1 ;@ Post-increment An
3007  str r3,[r7,r2,lsl #2]
3008;@ EaRead : Read '(a0)+' (address in r0) into r0:
3009  str r4,[r7,#0x40] ;@ Save PC
3010  bic r0,r0,#0xff000000
3011  bl m68k_read8 ;@ Call read8(r0) handler
3012
3013  and r11,r11,#7  ;@ mem - do mod 8
3014
3015  mov r1,#1
3016  tst r0,r1,lsl r11 ;@ Do arithmetic
3017  bicne r10,r10,#0x40000000
3018  orreq r10,r10,#0x40000000 ;@ Get Z flag
3019
3020  ldr r5,[r7,#0x5c] ;@ Load Cycles
3021  ldrh r8,[r4],#2 ;@ Fetch next opcode
3022  subs r5,r5,#8 ;@ Subtract cycles
3023  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3024  b CycloneEnd
3025
3026;@ ---------- [011f] btst d0, (a7)+ uses Op011f ----------
3027Op011f:
3028  str r4,[r7,#0x50] ;@ Save prev PC + 2
3029  str r5,[r7,#0x5c] ;@ Save Cycles
3030
3031;@ EaCalc : Get register index into r11:
3032  and r11,r8,#0x0e00
3033;@ EaRead : Read register[r11] into r11:
3034  ldr r11,[r7,r11,lsr #7]
3035
3036;@ EaCalc : Get '(a7)+' into r0:
3037  ldr r0,[r7,#0x3c] ;@ A7
3038  add r3,r0,#2 ;@ Post-increment An
3039  str r3,[r7,#0x3c] ;@ A7
3040;@ EaRead : Read '(a7)+' (address in r0) into r0:
3041  str r4,[r7,#0x40] ;@ Save PC
3042  bic r0,r0,#0xff000000
3043  bl m68k_read8 ;@ Call read8(r0) handler
3044
3045  and r11,r11,#7  ;@ mem - do mod 8
3046
3047  mov r1,#1
3048  tst r0,r1,lsl r11 ;@ Do arithmetic
3049  bicne r10,r10,#0x40000000
3050  orreq r10,r10,#0x40000000 ;@ Get Z flag
3051
3052  ldr r5,[r7,#0x5c] ;@ Load Cycles
3053  ldrh r8,[r4],#2 ;@ Fetch next opcode
3054  subs r5,r5,#8 ;@ Subtract cycles
3055  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3056  b CycloneEnd
3057
3058;@ ---------- [0120] btst d0, -(a0) uses Op0120 ----------
3059Op0120:
3060  str r4,[r7,#0x50] ;@ Save prev PC + 2
3061  str r5,[r7,#0x5c] ;@ Save Cycles
3062
3063;@ EaCalc : Get register index into r11:
3064  and r11,r8,#0x0e00
3065;@ EaRead : Read register[r11] into r11:
3066  ldr r11,[r7,r11,lsr #7]
3067
3068;@ EaCalc : Get '-(a0)' into r0:
3069  and r2,r8,#0x000f
3070  orr r2,r2,#0x8 ;@ A0-7
3071  ldr r0,[r7,r2,lsl #2]
3072  sub r0,r0,#1 ;@ Pre-decrement An
3073  str r0,[r7,r2,lsl #2]
3074;@ EaRead : Read '-(a0)' (address in r0) into r0:
3075  str r4,[r7,#0x40] ;@ Save PC
3076  bic r0,r0,#0xff000000
3077  bl m68k_read8 ;@ Call read8(r0) handler
3078
3079  and r11,r11,#7  ;@ mem - do mod 8
3080
3081  mov r1,#1
3082  tst r0,r1,lsl r11 ;@ Do arithmetic
3083  bicne r10,r10,#0x40000000
3084  orreq r10,r10,#0x40000000 ;@ Get Z flag
3085
3086  ldr r5,[r7,#0x5c] ;@ Load Cycles
3087  ldrh r8,[r4],#2 ;@ Fetch next opcode
3088  subs r5,r5,#10 ;@ Subtract cycles
3089  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3090  b CycloneEnd
3091
3092;@ ---------- [0127] btst d0, -(a7) uses Op0127 ----------
3093Op0127:
3094  str r4,[r7,#0x50] ;@ Save prev PC + 2
3095  str r5,[r7,#0x5c] ;@ Save Cycles
3096
3097;@ EaCalc : Get register index into r11:
3098  and r11,r8,#0x0e00
3099;@ EaRead : Read register[r11] into r11:
3100  ldr r11,[r7,r11,lsr #7]
3101
3102;@ EaCalc : Get '-(a7)' into r0:
3103  ldr r0,[r7,#0x3c] ;@ A7
3104  sub r0,r0,#2 ;@ Pre-decrement An
3105  str r0,[r7,#0x3c] ;@ A7
3106;@ EaRead : Read '-(a7)' (address in r0) into r0:
3107  str r4,[r7,#0x40] ;@ Save PC
3108  bic r0,r0,#0xff000000
3109  bl m68k_read8 ;@ Call read8(r0) handler
3110
3111  and r11,r11,#7  ;@ mem - do mod 8
3112
3113  mov r1,#1
3114  tst r0,r1,lsl r11 ;@ Do arithmetic
3115  bicne r10,r10,#0x40000000
3116  orreq r10,r10,#0x40000000 ;@ Get Z flag
3117
3118  ldr r5,[r7,#0x5c] ;@ Load Cycles
3119  ldrh r8,[r4],#2 ;@ Fetch next opcode
3120  subs r5,r5,#10 ;@ Subtract cycles
3121  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3122  b CycloneEnd
3123
3124;@ ---------- [0128] btst d0, ($3333,a0) uses Op0128 ----------
3125Op0128:
3126  str r4,[r7,#0x50] ;@ Save prev PC + 2
3127  str r5,[r7,#0x5c] ;@ Save Cycles
3128
3129;@ EaCalc : Get register index into r11:
3130  and r11,r8,#0x0e00
3131;@ EaRead : Read register[r11] into r11:
3132  ldr r11,[r7,r11,lsr #7]
3133
3134;@ EaCalc : Get '($3333,a0)' into r0:
3135  ldrsh r0,[r4],#2 ;@ Fetch offset
3136  and r2,r8,#0x000f
3137  ldr r2,[r7,r2,lsl #2]
3138  add r0,r0,r2 ;@ Add on offset
3139;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
3140  str r4,[r7,#0x40] ;@ Save PC
3141  bic r0,r0,#0xff000000
3142  bl m68k_read8 ;@ Call read8(r0) handler
3143
3144  and r11,r11,#7  ;@ mem - do mod 8
3145
3146  mov r1,#1
3147  tst r0,r1,lsl r11 ;@ Do arithmetic
3148  bicne r10,r10,#0x40000000
3149  orreq r10,r10,#0x40000000 ;@ Get Z flag
3150
3151  ldr r5,[r7,#0x5c] ;@ Load Cycles
3152  ldrh r8,[r4],#2 ;@ Fetch next opcode
3153  subs r5,r5,#12 ;@ Subtract cycles
3154  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3155  b CycloneEnd
3156
3157;@ ---------- [0130] btst d0, ($33,a0,d3.w*2) uses Op0130 ----------
3158Op0130:
3159  str r4,[r7,#0x50] ;@ Save prev PC + 2
3160  str r5,[r7,#0x5c] ;@ Save Cycles
3161
3162;@ EaCalc : Get register index into r11:
3163  and r11,r8,#0x0e00
3164;@ EaRead : Read register[r11] into r11:
3165  ldr r11,[r7,r11,lsr #7]
3166
3167;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
3168;@ Get extension word into r3:
3169  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
3170  mov r2,r3,lsr #10
3171  tst r3,#0x0800 ;@ Is Rn Word or Long
3172  and r2,r2,#0x3c ;@ r2=Index of Rn
3173  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
3174  ldrne   r2,[r7,r2] ;@ r2=Rn.l
3175  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
3176  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
3177  and r2,r8,#0x000f
3178  orr r2,r2,#0x8 ;@ A0-7
3179  ldr r2,[r7,r2,lsl #2]
3180  add r0,r2,r3 ;@ r0=Disp+An+Rn
3181;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
3182  str r4,[r7,#0x40] ;@ Save PC
3183  bic r0,r0,#0xff000000
3184  bl m68k_read8 ;@ Call read8(r0) handler
3185
3186  and r11,r11,#7  ;@ mem - do mod 8
3187
3188  mov r1,#1
3189  tst r0,r1,lsl r11 ;@ Do arithmetic
3190  bicne r10,r10,#0x40000000
3191  orreq r10,r10,#0x40000000 ;@ Get Z flag
3192
3193  ldr r5,[r7,#0x5c] ;@ Load Cycles
3194  ldrh r8,[r4],#2 ;@ Fetch next opcode
3195  subs r5,r5,#14 ;@ Subtract cycles
3196  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3197  b CycloneEnd
3198
3199;@ ---------- [0138] btst d0, $3333.w uses Op0138 ----------
3200Op0138:
3201  str r4,[r7,#0x50] ;@ Save prev PC + 2
3202  str r5,[r7,#0x5c] ;@ Save Cycles
3203
3204;@ EaCalc : Get register index into r11:
3205  and r11,r8,#0x0e00
3206;@ EaRead : Read register[r11] into r11:
3207  ldr r11,[r7,r11,lsr #7]
3208
3209;@ EaCalc : Get '$3333.w' into r0:
3210  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
3211;@ EaRead : Read '$3333.w' (address in r0) into r0:
3212  str r4,[r7,#0x40] ;@ Save PC
3213  bic r0,r0,#0xff000000
3214  bl m68k_read8 ;@ Call read8(r0) handler
3215
3216  and r11,r11,#7  ;@ mem - do mod 8
3217
3218  mov r1,#1
3219  tst r0,r1,lsl r11 ;@ Do arithmetic
3220  bicne r10,r10,#0x40000000
3221  orreq r10,r10,#0x40000000 ;@ Get Z flag
3222
3223  ldr r5,[r7,#0x5c] ;@ Load Cycles
3224  ldrh r8,[r4],#2 ;@ Fetch next opcode
3225  subs r5,r5,#12 ;@ Subtract cycles
3226  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3227  b CycloneEnd
3228
3229;@ ---------- [0139] btst d0, $33333333.l uses Op0139 ----------
3230Op0139:
3231  str r4,[r7,#0x50] ;@ Save prev PC + 2
3232  str r5,[r7,#0x5c] ;@ Save Cycles
3233
3234;@ EaCalc : Get register index into r11:
3235  and r11,r8,#0x0e00
3236;@ EaRead : Read register[r11] into r11:
3237  ldr r11,[r7,r11,lsr #7]
3238
3239;@ EaCalc : Get '$33333333.l' into r0:
3240  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
3241  ldrh r0,[r4],#2
3242  orr r0,r0,r2,lsl #16
3243;@ EaRead : Read '$33333333.l' (address in r0) into r0:
3244  str r4,[r7,#0x40] ;@ Save PC
3245  bic r0,r0,#0xff000000
3246  bl m68k_read8 ;@ Call read8(r0) handler
3247
3248  and r11,r11,#7  ;@ mem - do mod 8
3249
3250  mov r1,#1
3251  tst r0,r1,lsl r11 ;@ Do arithmetic
3252  bicne r10,r10,#0x40000000
3253  orreq r10,r10,#0x40000000 ;@ Get Z flag
3254
3255  ldr r5,[r7,#0x5c] ;@ Load Cycles
3256  ldrh r8,[r4],#2 ;@ Fetch next opcode
3257  subs r5,r5,#16 ;@ Subtract cycles
3258  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3259  b CycloneEnd
3260
3261;@ ---------- [013a] btst d0, ($3333,pc); =3335 uses Op013a ----------
3262Op013a:
3263  str r4,[r7,#0x50] ;@ Save prev PC + 2
3264  str r5,[r7,#0x5c] ;@ Save Cycles
3265
3266;@ EaCalc : Get register index into r11:
3267  and r11,r8,#0x0e00
3268;@ EaRead : Read register[r11] into r11:
3269  ldr r11,[r7,r11,lsr #7]
3270
3271;@ EaCalc : Get '($3333,pc)' into r0:
3272  ldr r0,[r7,#0x60] ;@ Get Memory base
3273  sub r0,r4,r0 ;@ Real PC
3274  ldrsh r2,[r4],#2 ;@ Fetch extension
3275  add r0,r2,r0 ;@ ($nn,PC)
3276;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
3277  str r4,[r7,#0x40] ;@ Save PC
3278  bic r0,r0,#0xff000000
3279  bl m68k_fetch8 ;@ Call fetch8(r0) handler
3280
3281  and r11,r11,#7  ;@ mem - do mod 8
3282
3283  mov r1,#1
3284  tst r0,r1,lsl r11 ;@ Do arithmetic
3285  bicne r10,r10,#0x40000000
3286  orreq r10,r10,#0x40000000 ;@ Get Z flag
3287
3288  ldr r5,[r7,#0x5c] ;@ Load Cycles
3289  ldrh r8,[r4],#2 ;@ Fetch next opcode
3290  subs r5,r5,#12 ;@ Subtract cycles
3291  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3292  b CycloneEnd
3293
3294;@ ---------- [013b] btst d0, ($33,pc,d3.w*2); =35 uses Op013b ----------
3295Op013b:
3296  str r4,[r7,#0x50] ;@ Save prev PC + 2
3297  str r5,[r7,#0x5c] ;@ Save Cycles
3298
3299;@ EaCalc : Get register index into r11:
3300  and r11,r8,#0x0e00
3301;@ EaRead : Read register[r11] into r11:
3302  ldr r11,[r7,r11,lsr #7]
3303
3304;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
3305  ldr r0,[r7,#0x60] ;@ Get Memory base
3306  ldrh r3,[r4] ;@ Get extension word
3307  sub r0,r4,r0 ;@ r0=PC
3308  add r4,r4,#2
3309  mov r2,r3,lsr #10
3310  tst r3,#0x0800 ;@ Is Rn Word or Long
3311  and r2,r2,#0x3c ;@ r2=Index of Rn
3312  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
3313  ldrne   r2,[r7,r2] ;@ r2=Rn.l
3314  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
3315  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
3316  add r0,r2,r0 ;@ r0=Disp+PC+Rn
3317;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
3318  str r4,[r7,#0x40] ;@ Save PC
3319  bic r0,r0,#0xff000000
3320  bl m68k_fetch8 ;@ Call fetch8(r0) handler
3321
3322  and r11,r11,#7  ;@ mem - do mod 8
3323
3324  mov r1,#1
3325  tst r0,r1,lsl r11 ;@ Do arithmetic
3326  bicne r10,r10,#0x40000000
3327  orreq r10,r10,#0x40000000 ;@ Get Z flag
3328
3329  ldr r5,[r7,#0x5c] ;@ Load Cycles
3330  ldrh r8,[r4],#2 ;@ Fetch next opcode
3331  subs r5,r5,#14 ;@ Subtract cycles
3332  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3333  b CycloneEnd
3334
3335;@ ---------- [013c] btst d0, #$33 uses Op013c ----------
3336Op013c:
3337;@ EaCalc : Get register index into r11:
3338  and r11,r8,#0x0e00
3339;@ EaRead : Read register[r11] into r11:
3340  ldr r11,[r7,r11,lsr #7]
3341
3342;@ EaCalc : Get '#$33' into r0:
3343  ldrsb r0,[r4],#2 ;@ Fetch immediate value
3344;@ EaRead : Read '#$33' (address in r0) into r0:
3345
3346  and r11,r11,#7  ;@ mem - do mod 8
3347
3348  mov r1,#1
3349  tst r0,r1,lsl r11 ;@ Do arithmetic
3350  bicne r10,r10,#0x40000000
3351  orreq r10,r10,#0x40000000 ;@ Get Z flag
3352
3353  ldrh r8,[r4],#2 ;@ Fetch next opcode
3354  subs r5,r5,#8 ;@ Subtract cycles
3355  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3356  b CycloneEnd
3357
3358;@ ---------- [0140] bchg d0, d0 uses Op0140 ----------
3359Op0140:
3360;@ EaCalc : Get register index into r11:
3361  and r11,r8,#0x0e00
3362;@ EaRead : Read register[r11] into r11:
3363  ldr r11,[r7,r11,lsr #7]
3364
3365;@ EaCalc : Get register index into r8:
3366  and r8,r8,#0x000f
3367;@ EaRead : Read register[r8] into r0:
3368  ldr r0,[r7,r8,lsl #2]
3369
3370  and r11,r11,#31 ;@ reg - do mod 32
3371
3372  mov r1,#1
3373  tst r0,r1,lsl r11 ;@ Do arithmetic
3374  bicne r10,r10,#0x40000000
3375  orreq r10,r10,#0x40000000 ;@ Get Z flag
3376
3377  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3378
3379;@ EaWrite: r1 into register[r8]:
3380  str r1,[r7,r8,lsl #2]
3381
3382  ldrh r8,[r4],#2 ;@ Fetch next opcode
3383  subs r5,r5,#8 ;@ Subtract cycles
3384  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3385  b CycloneEnd
3386
3387;@ ---------- [0148] movep.l ($3333,a0), d0 uses Op0148 ----------
3388Op0148:
3389  str r4,[r7,#0x50] ;@ Save prev PC + 2
3390  str r5,[r7,#0x5c] ;@ Save Cycles
3391
3392;@ EaCalc : Get '($3333,a0)' into r6:
3393  ldrsh r0,[r4],#2 ;@ Fetch offset
3394  and r2,r8,#0x000f
3395  ldr r2,[r7,r2,lsl #2]
3396  add r6,r0,r2 ;@ Add on offset
3397;@ EaRead : Read '($3333,a0)' (address in r6) into r11:
3398  str r4,[r7,#0x40] ;@ Save PC
3399  bic r0,r6,#0xff000000
3400  bl m68k_read8 ;@ Call read8(r0) handler
3401  mov r11,r0,asl #24
3402
3403  add r0,r6,#2
3404;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
3405  bic r0,r0,#0xff000000
3406  bl m68k_read8 ;@ Call read8(r0) handler
3407  mov r1,r0,asl #24
3408
3409  orr r11,r11,r1,lsr #8 ;@ second byte
3410  add r0,r6,#4
3411;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
3412  bic r0,r0,#0xff000000
3413  bl m68k_read8 ;@ Call read8(r0) handler
3414  mov r1,r0,asl #24
3415
3416  orr r11,r11,r1,lsr #16 ;@ third byte
3417  add r0,r6,#6
3418;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
3419  bic r0,r0,#0xff000000
3420  bl m68k_read8 ;@ Call read8(r0) handler
3421  mov r1,r0,asl #24
3422
3423  orr r1,r11,r1,lsr #24 ;@ fourth byte
3424;@ EaCalc : Get register index into r0:
3425  and r0,r8,#0x0e00
3426;@ EaWrite: r1 into register[r0]:
3427  str r1,[r7,r0,lsr #7]
3428
3429  ldr r6,[r7,#0x54]
3430  ldr r5,[r7,#0x5c] ;@ Load Cycles
3431  ldrh r8,[r4],#2 ;@ Fetch next opcode
3432  subs r5,r5,#24 ;@ Subtract cycles
3433  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3434  b CycloneEnd
3435
3436;@ ---------- [0150] bchg d0, (a0) uses Op0150 ----------
3437Op0150:
3438  str r4,[r7,#0x50] ;@ Save prev PC + 2
3439  str r5,[r7,#0x5c] ;@ Save Cycles
3440
3441;@ EaCalc : Get register index into r11:
3442  and r11,r8,#0x0e00
3443;@ EaRead : Read register[r11] into r11:
3444  ldr r11,[r7,r11,lsr #7]
3445
3446;@ EaCalc : Get '(a0)' into r8:
3447  and r2,r8,#0x000f
3448  orr r2,r2,#0x8 ;@ A0-7
3449  ldr r8,[r7,r2,lsl #2]
3450;@ EaRead : Read '(a0)' (address in r8) into r0:
3451  str r4,[r7,#0x40] ;@ Save PC
3452  bic r0,r8,#0xff000000
3453  bl m68k_read8 ;@ Call read8(r0) handler
3454
3455  and r11,r11,#7  ;@ mem - do mod 8
3456
3457  mov r1,#1
3458  tst r0,r1,lsl r11 ;@ Do arithmetic
3459  bicne r10,r10,#0x40000000
3460  orreq r10,r10,#0x40000000 ;@ Get Z flag
3461
3462  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3463
3464;@ EaWrite: Write r1 into '(a0)' (address in r8):
3465  and r1,r1,#0xff
3466  bic r0,r8,#0xff000000
3467  bl m68k_write8 ;@ Call write8(r0,r1) handler
3468
3469  ldr r5,[r7,#0x5c] ;@ Load Cycles
3470  ldrh r8,[r4],#2 ;@ Fetch next opcode
3471  subs r5,r5,#12 ;@ Subtract cycles
3472  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3473  b CycloneEnd
3474
3475;@ ---------- [0158] bchg d0, (a0)+ uses Op0158 ----------
3476Op0158:
3477  str r4,[r7,#0x50] ;@ Save prev PC + 2
3478  str r5,[r7,#0x5c] ;@ Save Cycles
3479
3480;@ EaCalc : Get register index into r11:
3481  and r11,r8,#0x0e00
3482;@ EaRead : Read register[r11] into r11:
3483  ldr r11,[r7,r11,lsr #7]
3484
3485;@ EaCalc : Get '(a0)+' into r8:
3486  and r2,r8,#0x000f
3487  ldr r8,[r7,r2,lsl #2]
3488  add r3,r8,#1 ;@ Post-increment An
3489  str r3,[r7,r2,lsl #2]
3490;@ EaRead : Read '(a0)+' (address in r8) into r0:
3491  str r4,[r7,#0x40] ;@ Save PC
3492  bic r0,r8,#0xff000000
3493  bl m68k_read8 ;@ Call read8(r0) handler
3494
3495  and r11,r11,#7  ;@ mem - do mod 8
3496
3497  mov r1,#1
3498  tst r0,r1,lsl r11 ;@ Do arithmetic
3499  bicne r10,r10,#0x40000000
3500  orreq r10,r10,#0x40000000 ;@ Get Z flag
3501
3502  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3503
3504;@ EaWrite: Write r1 into '(a0)+' (address in r8):
3505  and r1,r1,#0xff
3506  bic r0,r8,#0xff000000
3507  bl m68k_write8 ;@ Call write8(r0,r1) handler
3508
3509  ldr r5,[r7,#0x5c] ;@ Load Cycles
3510  ldrh r8,[r4],#2 ;@ Fetch next opcode
3511  subs r5,r5,#12 ;@ Subtract cycles
3512  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3513  b CycloneEnd
3514
3515;@ ---------- [015f] bchg d0, (a7)+ uses Op015f ----------
3516Op015f:
3517  str r4,[r7,#0x50] ;@ Save prev PC + 2
3518  str r5,[r7,#0x5c] ;@ Save Cycles
3519
3520;@ EaCalc : Get register index into r11:
3521  and r11,r8,#0x0e00
3522;@ EaRead : Read register[r11] into r11:
3523  ldr r11,[r7,r11,lsr #7]
3524
3525;@ EaCalc : Get '(a7)+' into r8:
3526  ldr r8,[r7,#0x3c] ;@ A7
3527  add r3,r8,#2 ;@ Post-increment An
3528  str r3,[r7,#0x3c] ;@ A7
3529;@ EaRead : Read '(a7)+' (address in r8) into r0:
3530  str r4,[r7,#0x40] ;@ Save PC
3531  bic r0,r8,#0xff000000
3532  bl m68k_read8 ;@ Call read8(r0) handler
3533
3534  and r11,r11,#7  ;@ mem - do mod 8
3535
3536  mov r1,#1
3537  tst r0,r1,lsl r11 ;@ Do arithmetic
3538  bicne r10,r10,#0x40000000
3539  orreq r10,r10,#0x40000000 ;@ Get Z flag
3540
3541  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3542
3543;@ EaWrite: Write r1 into '(a7)+' (address in r8):
3544  and r1,r1,#0xff
3545  bic r0,r8,#0xff000000
3546  bl m68k_write8 ;@ Call write8(r0,r1) handler
3547
3548  ldr r5,[r7,#0x5c] ;@ Load Cycles
3549  ldrh r8,[r4],#2 ;@ Fetch next opcode
3550  subs r5,r5,#12 ;@ Subtract cycles
3551  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3552  b CycloneEnd
3553
3554;@ ---------- [0160] bchg d0, -(a0) uses Op0160 ----------
3555Op0160:
3556  str r4,[r7,#0x50] ;@ Save prev PC + 2
3557  str r5,[r7,#0x5c] ;@ Save Cycles
3558
3559;@ EaCalc : Get register index into r11:
3560  and r11,r8,#0x0e00
3561;@ EaRead : Read register[r11] into r11:
3562  ldr r11,[r7,r11,lsr #7]
3563
3564;@ EaCalc : Get '-(a0)' into r8:
3565  and r2,r8,#0x000f
3566  orr r2,r2,#0x8 ;@ A0-7
3567  ldr r8,[r7,r2,lsl #2]
3568  sub r8,r8,#1 ;@ Pre-decrement An
3569  str r8,[r7,r2,lsl #2]
3570;@ EaRead : Read '-(a0)' (address in r8) into r0:
3571  str r4,[r7,#0x40] ;@ Save PC
3572  bic r0,r8,#0xff000000
3573  bl m68k_read8 ;@ Call read8(r0) handler
3574
3575  and r11,r11,#7  ;@ mem - do mod 8
3576
3577  mov r1,#1
3578  tst r0,r1,lsl r11 ;@ Do arithmetic
3579  bicne r10,r10,#0x40000000
3580  orreq r10,r10,#0x40000000 ;@ Get Z flag
3581
3582  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3583
3584;@ EaWrite: Write r1 into '-(a0)' (address in r8):
3585  and r1,r1,#0xff
3586  bic r0,r8,#0xff000000
3587  bl m68k_write8 ;@ Call write8(r0,r1) handler
3588
3589  ldr r5,[r7,#0x5c] ;@ Load Cycles
3590  ldrh r8,[r4],#2 ;@ Fetch next opcode
3591  subs r5,r5,#14 ;@ Subtract cycles
3592  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3593  b CycloneEnd
3594
3595;@ ---------- [0167] bchg d0, -(a7) uses Op0167 ----------
3596Op0167:
3597  str r4,[r7,#0x50] ;@ Save prev PC + 2
3598  str r5,[r7,#0x5c] ;@ Save Cycles
3599
3600;@ EaCalc : Get register index into r11:
3601  and r11,r8,#0x0e00
3602;@ EaRead : Read register[r11] into r11:
3603  ldr r11,[r7,r11,lsr #7]
3604
3605;@ EaCalc : Get '-(a7)' into r8:
3606  ldr r8,[r7,#0x3c] ;@ A7
3607  sub r8,r8,#2 ;@ Pre-decrement An
3608  str r8,[r7,#0x3c] ;@ A7
3609;@ EaRead : Read '-(a7)' (address in r8) into r0:
3610  str r4,[r7,#0x40] ;@ Save PC
3611  bic r0,r8,#0xff000000
3612  bl m68k_read8 ;@ Call read8(r0) handler
3613
3614  and r11,r11,#7  ;@ mem - do mod 8
3615
3616  mov r1,#1
3617  tst r0,r1,lsl r11 ;@ Do arithmetic
3618  bicne r10,r10,#0x40000000
3619  orreq r10,r10,#0x40000000 ;@ Get Z flag
3620
3621  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3622
3623;@ EaWrite: Write r1 into '-(a7)' (address in r8):
3624  and r1,r1,#0xff
3625  bic r0,r8,#0xff000000
3626  bl m68k_write8 ;@ Call write8(r0,r1) handler
3627
3628  ldr r5,[r7,#0x5c] ;@ Load Cycles
3629  ldrh r8,[r4],#2 ;@ Fetch next opcode
3630  subs r5,r5,#14 ;@ Subtract cycles
3631  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3632  b CycloneEnd
3633
3634;@ ---------- [0168] bchg d0, ($3333,a0) uses Op0168 ----------
3635Op0168:
3636  str r4,[r7,#0x50] ;@ Save prev PC + 2
3637  str r5,[r7,#0x5c] ;@ Save Cycles
3638
3639;@ EaCalc : Get register index into r11:
3640  and r11,r8,#0x0e00
3641;@ EaRead : Read register[r11] into r11:
3642  ldr r11,[r7,r11,lsr #7]
3643
3644;@ EaCalc : Get '($3333,a0)' into r8:
3645  ldrsh r0,[r4],#2 ;@ Fetch offset
3646  and r2,r8,#0x000f
3647  ldr r2,[r7,r2,lsl #2]
3648  add r8,r0,r2 ;@ Add on offset
3649;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
3650  str r4,[r7,#0x40] ;@ Save PC
3651  bic r0,r8,#0xff000000
3652  bl m68k_read8 ;@ Call read8(r0) handler
3653
3654  and r11,r11,#7  ;@ mem - do mod 8
3655
3656  mov r1,#1
3657  tst r0,r1,lsl r11 ;@ Do arithmetic
3658  bicne r10,r10,#0x40000000
3659  orreq r10,r10,#0x40000000 ;@ Get Z flag
3660
3661  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3662
3663;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
3664  and r1,r1,#0xff
3665  bic r0,r8,#0xff000000
3666  bl m68k_write8 ;@ Call write8(r0,r1) handler
3667
3668  ldr r5,[r7,#0x5c] ;@ Load Cycles
3669  ldrh r8,[r4],#2 ;@ Fetch next opcode
3670  subs r5,r5,#16 ;@ Subtract cycles
3671  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3672  b CycloneEnd
3673
3674;@ ---------- [0170] bchg d0, ($33,a0,d3.w*2) uses Op0170 ----------
3675Op0170:
3676  str r4,[r7,#0x50] ;@ Save prev PC + 2
3677  str r5,[r7,#0x5c] ;@ Save Cycles
3678
3679;@ EaCalc : Get register index into r11:
3680  and r11,r8,#0x0e00
3681;@ EaRead : Read register[r11] into r11:
3682  ldr r11,[r7,r11,lsr #7]
3683
3684;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
3685;@ Get extension word into r3:
3686  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
3687  mov r2,r3,lsr #10
3688  tst r3,#0x0800 ;@ Is Rn Word or Long
3689  and r2,r2,#0x3c ;@ r2=Index of Rn
3690  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
3691  ldrne   r2,[r7,r2] ;@ r2=Rn.l
3692  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
3693  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
3694  and r2,r8,#0x000f
3695  orr r2,r2,#0x8 ;@ A0-7
3696  ldr r2,[r7,r2,lsl #2]
3697  add r8,r2,r3 ;@ r8=Disp+An+Rn
3698;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
3699  str r4,[r7,#0x40] ;@ Save PC
3700  bic r0,r8,#0xff000000
3701  bl m68k_read8 ;@ Call read8(r0) handler
3702
3703  and r11,r11,#7  ;@ mem - do mod 8
3704
3705  mov r1,#1
3706  tst r0,r1,lsl r11 ;@ Do arithmetic
3707  bicne r10,r10,#0x40000000
3708  orreq r10,r10,#0x40000000 ;@ Get Z flag
3709
3710  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3711
3712;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
3713  and r1,r1,#0xff
3714  bic r0,r8,#0xff000000
3715  bl m68k_write8 ;@ Call write8(r0,r1) handler
3716
3717  ldr r5,[r7,#0x5c] ;@ Load Cycles
3718  ldrh r8,[r4],#2 ;@ Fetch next opcode
3719  subs r5,r5,#18 ;@ Subtract cycles
3720  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3721  b CycloneEnd
3722
3723;@ ---------- [0178] bchg d0, $3333.w uses Op0178 ----------
3724Op0178:
3725  str r4,[r7,#0x50] ;@ Save prev PC + 2
3726  str r5,[r7,#0x5c] ;@ Save Cycles
3727
3728;@ EaCalc : Get register index into r11:
3729  and r11,r8,#0x0e00
3730;@ EaRead : Read register[r11] into r11:
3731  ldr r11,[r7,r11,lsr #7]
3732
3733;@ EaCalc : Get '$3333.w' into r8:
3734  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
3735;@ EaRead : Read '$3333.w' (address in r8) into r0:
3736  str r4,[r7,#0x40] ;@ Save PC
3737  bic r0,r8,#0xff000000
3738  bl m68k_read8 ;@ Call read8(r0) handler
3739
3740  and r11,r11,#7  ;@ mem - do mod 8
3741
3742  mov r1,#1
3743  tst r0,r1,lsl r11 ;@ Do arithmetic
3744  bicne r10,r10,#0x40000000
3745  orreq r10,r10,#0x40000000 ;@ Get Z flag
3746
3747  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3748
3749;@ EaWrite: Write r1 into '$3333.w' (address in r8):
3750  and r1,r1,#0xff
3751  bic r0,r8,#0xff000000
3752  bl m68k_write8 ;@ Call write8(r0,r1) handler
3753
3754  ldr r5,[r7,#0x5c] ;@ Load Cycles
3755  ldrh r8,[r4],#2 ;@ Fetch next opcode
3756  subs r5,r5,#16 ;@ Subtract cycles
3757  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3758  b CycloneEnd
3759
3760;@ ---------- [0179] bchg d0, $33333333.l uses Op0179 ----------
3761Op0179:
3762  str r4,[r7,#0x50] ;@ Save prev PC + 2
3763  str r5,[r7,#0x5c] ;@ Save Cycles
3764
3765;@ EaCalc : Get register index into r11:
3766  and r11,r8,#0x0e00
3767;@ EaRead : Read register[r11] into r11:
3768  ldr r11,[r7,r11,lsr #7]
3769
3770;@ EaCalc : Get '$33333333.l' into r8:
3771  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
3772  ldrh r0,[r4],#2
3773  orr r8,r0,r2,lsl #16
3774;@ EaRead : Read '$33333333.l' (address in r8) into r0:
3775  str r4,[r7,#0x40] ;@ Save PC
3776  bic r0,r8,#0xff000000
3777  bl m68k_read8 ;@ Call read8(r0) handler
3778
3779  and r11,r11,#7  ;@ mem - do mod 8
3780
3781  mov r1,#1
3782  tst r0,r1,lsl r11 ;@ Do arithmetic
3783  bicne r10,r10,#0x40000000
3784  orreq r10,r10,#0x40000000 ;@ Get Z flag
3785
3786  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3787
3788;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
3789  and r1,r1,#0xff
3790  bic r0,r8,#0xff000000
3791  bl m68k_write8 ;@ Call write8(r0,r1) handler
3792
3793  ldr r5,[r7,#0x5c] ;@ Load Cycles
3794  ldrh r8,[r4],#2 ;@ Fetch next opcode
3795  subs r5,r5,#20 ;@ Subtract cycles
3796  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3797  b CycloneEnd
3798
3799;@ ---------- [0180] bclr d0, d0 uses Op0180 ----------
3800Op0180:
3801;@ EaCalc : Get register index into r11:
3802  and r11,r8,#0x0e00
3803;@ EaRead : Read register[r11] into r11:
3804  ldr r11,[r7,r11,lsr #7]
3805
3806;@ EaCalc : Get register index into r8:
3807  and r8,r8,#0x000f
3808;@ EaRead : Read register[r8] into r0:
3809  ldr r0,[r7,r8,lsl #2]
3810
3811  and r11,r11,#31 ;@ reg - do mod 32
3812
3813  mov r1,#1
3814  tst r0,r1,lsl r11 ;@ Do arithmetic
3815  bicne r10,r10,#0x40000000
3816  orreq r10,r10,#0x40000000 ;@ Get Z flag
3817
3818  bic r1,r0,r1,lsl r11 ;@ Clear bit
3819
3820;@ EaWrite: r1 into register[r8]:
3821  str r1,[r7,r8,lsl #2]
3822
3823  ldrh r8,[r4],#2 ;@ Fetch next opcode
3824  subs r5,r5,#10 ;@ Subtract cycles
3825  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3826  b CycloneEnd
3827
3828;@ ---------- [0188] movep.w d0, ($3333,a0) uses Op0188 ----------
3829Op0188:
3830  str r4,[r7,#0x50] ;@ Save prev PC + 2
3831  str r5,[r7,#0x5c] ;@ Save Cycles
3832
3833;@ EaCalc : Get register index into r11:
3834  and r11,r8,#0x0e00
3835;@ EaRead : Read register[r11] into r11:
3836  ldr r11,[r7,r11,lsr #7]
3837
3838;@ EaCalc : Get '($3333,a0)' into r8:
3839  ldrsh r0,[r4],#2 ;@ Fetch offset
3840  and r2,r8,#0x000f
3841  ldr r2,[r7,r2,lsl #2]
3842  add r8,r0,r2 ;@ Add on offset
3843  mov r0,r8
3844  mov r1,r11,lsr #8 ;@ first or third byte
3845;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
3846  and r1,r1,#0xff
3847  str r4,[r7,#0x40] ;@ Save PC
3848  bic r0,r0,#0xff000000
3849  bl m68k_write8 ;@ Call write8(r0,r1) handler
3850
3851  add r0,r8,#2
3852  and r1,r11,#0xff
3853;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
3854  and r1,r1,#0xff
3855  bic r0,r0,#0xff000000
3856  bl m68k_write8 ;@ Call write8(r0,r1) handler
3857
3858  ldr r5,[r7,#0x5c] ;@ Load Cycles
3859  ldrh r8,[r4],#2 ;@ Fetch next opcode
3860  subs r5,r5,#16 ;@ Subtract cycles
3861  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3862  b CycloneEnd
3863
3864;@ ---------- [0190] bclr d0, (a0) uses Op0190 ----------
3865Op0190:
3866  str r4,[r7,#0x50] ;@ Save prev PC + 2
3867  str r5,[r7,#0x5c] ;@ Save Cycles
3868
3869;@ EaCalc : Get register index into r11:
3870  and r11,r8,#0x0e00
3871;@ EaRead : Read register[r11] into r11:
3872  ldr r11,[r7,r11,lsr #7]
3873
3874;@ EaCalc : Get '(a0)' into r8:
3875  and r2,r8,#0x000f
3876  orr r2,r2,#0x8 ;@ A0-7
3877  ldr r8,[r7,r2,lsl #2]
3878;@ EaRead : Read '(a0)' (address in r8) into r0:
3879  str r4,[r7,#0x40] ;@ Save PC
3880  bic r0,r8,#0xff000000
3881  bl m68k_read8 ;@ Call read8(r0) handler
3882
3883  and r11,r11,#7  ;@ mem - do mod 8
3884
3885  mov r1,#1
3886  tst r0,r1,lsl r11 ;@ Do arithmetic
3887  bicne r10,r10,#0x40000000
3888  orreq r10,r10,#0x40000000 ;@ Get Z flag
3889
3890  bic r1,r0,r1,lsl r11 ;@ Clear bit
3891
3892;@ EaWrite: Write r1 into '(a0)' (address in r8):
3893  and r1,r1,#0xff
3894  bic r0,r8,#0xff000000
3895  bl m68k_write8 ;@ Call write8(r0,r1) handler
3896
3897  ldr r5,[r7,#0x5c] ;@ Load Cycles
3898  ldrh r8,[r4],#2 ;@ Fetch next opcode
3899  subs r5,r5,#12 ;@ Subtract cycles
3900  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3901  b CycloneEnd
3902
3903;@ ---------- [0198] bclr d0, (a0)+ uses Op0198 ----------
3904Op0198:
3905  str r4,[r7,#0x50] ;@ Save prev PC + 2
3906  str r5,[r7,#0x5c] ;@ Save Cycles
3907
3908;@ EaCalc : Get register index into r11:
3909  and r11,r8,#0x0e00
3910;@ EaRead : Read register[r11] into r11:
3911  ldr r11,[r7,r11,lsr #7]
3912
3913;@ EaCalc : Get '(a0)+' into r8:
3914  and r2,r8,#0x000f
3915  ldr r8,[r7,r2,lsl #2]
3916  add r3,r8,#1 ;@ Post-increment An
3917  str r3,[r7,r2,lsl #2]
3918;@ EaRead : Read '(a0)+' (address in r8) into r0:
3919  str r4,[r7,#0x40] ;@ Save PC
3920  bic r0,r8,#0xff000000
3921  bl m68k_read8 ;@ Call read8(r0) handler
3922
3923  and r11,r11,#7  ;@ mem - do mod 8
3924
3925  mov r1,#1
3926  tst r0,r1,lsl r11 ;@ Do arithmetic
3927  bicne r10,r10,#0x40000000
3928  orreq r10,r10,#0x40000000 ;@ Get Z flag
3929
3930  bic r1,r0,r1,lsl r11 ;@ Clear bit
3931
3932;@ EaWrite: Write r1 into '(a0)+' (address in r8):
3933  and r1,r1,#0xff
3934  bic r0,r8,#0xff000000
3935  bl m68k_write8 ;@ Call write8(r0,r1) handler
3936
3937  ldr r5,[r7,#0x5c] ;@ Load Cycles
3938  ldrh r8,[r4],#2 ;@ Fetch next opcode
3939  subs r5,r5,#12 ;@ Subtract cycles
3940  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3941  b CycloneEnd
3942
3943;@ ---------- [019f] bclr d0, (a7)+ uses Op019f ----------
3944Op019f:
3945  str r4,[r7,#0x50] ;@ Save prev PC + 2
3946  str r5,[r7,#0x5c] ;@ Save Cycles
3947
3948;@ EaCalc : Get register index into r11:
3949  and r11,r8,#0x0e00
3950;@ EaRead : Read register[r11] into r11:
3951  ldr r11,[r7,r11,lsr #7]
3952
3953;@ EaCalc : Get '(a7)+' into r8:
3954  ldr r8,[r7,#0x3c] ;@ A7
3955  add r3,r8,#2 ;@ Post-increment An
3956  str r3,[r7,#0x3c] ;@ A7
3957;@ EaRead : Read '(a7)+' (address in r8) into r0:
3958  str r4,[r7,#0x40] ;@ Save PC
3959  bic r0,r8,#0xff000000
3960  bl m68k_read8 ;@ Call read8(r0) handler
3961
3962  and r11,r11,#7  ;@ mem - do mod 8
3963
3964  mov r1,#1
3965  tst r0,r1,lsl r11 ;@ Do arithmetic
3966  bicne r10,r10,#0x40000000
3967  orreq r10,r10,#0x40000000 ;@ Get Z flag
3968
3969  bic r1,r0,r1,lsl r11 ;@ Clear bit
3970
3971;@ EaWrite: Write r1 into '(a7)+' (address in r8):
3972  and r1,r1,#0xff
3973  bic r0,r8,#0xff000000
3974  bl m68k_write8 ;@ Call write8(r0,r1) handler
3975
3976  ldr r5,[r7,#0x5c] ;@ Load Cycles
3977  ldrh r8,[r4],#2 ;@ Fetch next opcode
3978  subs r5,r5,#12 ;@ Subtract cycles
3979  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3980  b CycloneEnd
3981
3982;@ ---------- [01a0] bclr d0, -(a0) uses Op01a0 ----------
3983Op01a0:
3984  str r4,[r7,#0x50] ;@ Save prev PC + 2
3985  str r5,[r7,#0x5c] ;@ Save Cycles
3986
3987;@ EaCalc : Get register index into r11:
3988  and r11,r8,#0x0e00
3989;@ EaRead : Read register[r11] into r11:
3990  ldr r11,[r7,r11,lsr #7]
3991
3992;@ EaCalc : Get '-(a0)' into r8:
3993  and r2,r8,#0x000f
3994  orr r2,r2,#0x8 ;@ A0-7
3995  ldr r8,[r7,r2,lsl #2]
3996  sub r8,r8,#1 ;@ Pre-decrement An
3997  str r8,[r7,r2,lsl #2]
3998;@ EaRead : Read '-(a0)' (address in r8) into r0:
3999  str r4,[r7,#0x40] ;@ Save PC
4000  bic r0,r8,#0xff000000
4001  bl m68k_read8 ;@ Call read8(r0) handler
4002
4003  and r11,r11,#7  ;@ mem - do mod 8
4004
4005  mov r1,#1
4006  tst r0,r1,lsl r11 ;@ Do arithmetic
4007  bicne r10,r10,#0x40000000
4008  orreq r10,r10,#0x40000000 ;@ Get Z flag
4009
4010  bic r1,r0,r1,lsl r11 ;@ Clear bit
4011
4012;@ EaWrite: Write r1 into '-(a0)' (address in r8):
4013  and r1,r1,#0xff
4014  bic r0,r8,#0xff000000
4015  bl m68k_write8 ;@ Call write8(r0,r1) handler
4016
4017  ldr r5,[r7,#0x5c] ;@ Load Cycles
4018  ldrh r8,[r4],#2 ;@ Fetch next opcode
4019  subs r5,r5,#14 ;@ Subtract cycles
4020  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4021  b CycloneEnd
4022
4023;@ ---------- [01a7] bclr d0, -(a7) uses Op01a7 ----------
4024Op01a7:
4025  str r4,[r7,#0x50] ;@ Save prev PC + 2
4026  str r5,[r7,#0x5c] ;@ Save Cycles
4027
4028;@ EaCalc : Get register index into r11:
4029  and r11,r8,#0x0e00
4030;@ EaRead : Read register[r11] into r11:
4031  ldr r11,[r7,r11,lsr #7]
4032
4033;@ EaCalc : Get '-(a7)' into r8:
4034  ldr r8,[r7,#0x3c] ;@ A7
4035  sub r8,r8,#2 ;@ Pre-decrement An
4036  str r8,[r7,#0x3c] ;@ A7
4037;@ EaRead : Read '-(a7)' (address in r8) into r0:
4038  str r4,[r7,#0x40] ;@ Save PC
4039  bic r0,r8,#0xff000000
4040  bl m68k_read8 ;@ Call read8(r0) handler
4041
4042  and r11,r11,#7  ;@ mem - do mod 8
4043
4044  mov r1,#1
4045  tst r0,r1,lsl r11 ;@ Do arithmetic
4046  bicne r10,r10,#0x40000000
4047  orreq r10,r10,#0x40000000 ;@ Get Z flag
4048
4049  bic r1,r0,r1,lsl r11 ;@ Clear bit
4050
4051;@ EaWrite: Write r1 into '-(a7)' (address in r8):
4052  and r1,r1,#0xff
4053  bic r0,r8,#0xff000000
4054  bl m68k_write8 ;@ Call write8(r0,r1) handler
4055
4056  ldr r5,[r7,#0x5c] ;@ Load Cycles
4057  ldrh r8,[r4],#2 ;@ Fetch next opcode
4058  subs r5,r5,#14 ;@ Subtract cycles
4059  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4060  b CycloneEnd
4061
4062;@ ---------- [01a8] bclr d0, ($3333,a0) uses Op01a8 ----------
4063Op01a8:
4064  str r4,[r7,#0x50] ;@ Save prev PC + 2
4065  str r5,[r7,#0x5c] ;@ Save Cycles
4066
4067;@ EaCalc : Get register index into r11:
4068  and r11,r8,#0x0e00
4069;@ EaRead : Read register[r11] into r11:
4070  ldr r11,[r7,r11,lsr #7]
4071
4072;@ EaCalc : Get '($3333,a0)' into r8:
4073  ldrsh r0,[r4],#2 ;@ Fetch offset
4074  and r2,r8,#0x000f
4075  ldr r2,[r7,r2,lsl #2]
4076  add r8,r0,r2 ;@ Add on offset
4077;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
4078  str r4,[r7,#0x40] ;@ Save PC
4079  bic r0,r8,#0xff000000
4080  bl m68k_read8 ;@ Call read8(r0) handler
4081
4082  and r11,r11,#7  ;@ mem - do mod 8
4083
4084  mov r1,#1
4085  tst r0,r1,lsl r11 ;@ Do arithmetic
4086  bicne r10,r10,#0x40000000
4087  orreq r10,r10,#0x40000000 ;@ Get Z flag
4088
4089  bic r1,r0,r1,lsl r11 ;@ Clear bit
4090
4091;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
4092  and r1,r1,#0xff
4093  bic r0,r8,#0xff000000
4094  bl m68k_write8 ;@ Call write8(r0,r1) handler
4095
4096  ldr r5,[r7,#0x5c] ;@ Load Cycles
4097  ldrh r8,[r4],#2 ;@ Fetch next opcode
4098  subs r5,r5,#16 ;@ Subtract cycles
4099  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4100  b CycloneEnd
4101
4102;@ ---------- [01b0] bclr d0, ($33,a0,d3.w*2) uses Op01b0 ----------
4103Op01b0:
4104  str r4,[r7,#0x50] ;@ Save prev PC + 2
4105  str r5,[r7,#0x5c] ;@ Save Cycles
4106
4107;@ EaCalc : Get register index into r11:
4108  and r11,r8,#0x0e00
4109;@ EaRead : Read register[r11] into r11:
4110  ldr r11,[r7,r11,lsr #7]
4111
4112;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
4113;@ Get extension word into r3:
4114  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
4115  mov r2,r3,lsr #10
4116  tst r3,#0x0800 ;@ Is Rn Word or Long
4117  and r2,r2,#0x3c ;@ r2=Index of Rn
4118  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
4119  ldrne   r2,[r7,r2] ;@ r2=Rn.l
4120  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
4121  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
4122  and r2,r8,#0x000f
4123  orr r2,r2,#0x8 ;@ A0-7
4124  ldr r2,[r7,r2,lsl #2]
4125  add r8,r2,r3 ;@ r8=Disp+An+Rn
4126;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
4127  str r4,[r7,#0x40] ;@ Save PC
4128  bic r0,r8,#0xff000000
4129  bl m68k_read8 ;@ Call read8(r0) handler
4130
4131  and r11,r11,#7  ;@ mem - do mod 8
4132
4133  mov r1,#1
4134  tst r0,r1,lsl r11 ;@ Do arithmetic
4135  bicne r10,r10,#0x40000000
4136  orreq r10,r10,#0x40000000 ;@ Get Z flag
4137
4138  bic r1,r0,r1,lsl r11 ;@ Clear bit
4139
4140;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
4141  and r1,r1,#0xff
4142  bic r0,r8,#0xff000000
4143  bl m68k_write8 ;@ Call write8(r0,r1) handler
4144
4145  ldr r5,[r7,#0x5c] ;@ Load Cycles
4146  ldrh r8,[r4],#2 ;@ Fetch next opcode
4147  subs r5,r5,#18 ;@ Subtract cycles
4148  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4149  b CycloneEnd
4150
4151;@ ---------- [01b8] bclr d0, $3333.w uses Op01b8 ----------
4152Op01b8:
4153  str r4,[r7,#0x50] ;@ Save prev PC + 2
4154  str r5,[r7,#0x5c] ;@ Save Cycles
4155
4156;@ EaCalc : Get register index into r11:
4157  and r11,r8,#0x0e00
4158;@ EaRead : Read register[r11] into r11:
4159  ldr r11,[r7,r11,lsr #7]
4160
4161;@ EaCalc : Get '$3333.w' into r8:
4162  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
4163;@ EaRead : Read '$3333.w' (address in r8) into r0:
4164  str r4,[r7,#0x40] ;@ Save PC
4165  bic r0,r8,#0xff000000
4166  bl m68k_read8 ;@ Call read8(r0) handler
4167
4168  and r11,r11,#7  ;@ mem - do mod 8
4169
4170  mov r1,#1
4171  tst r0,r1,lsl r11 ;@ Do arithmetic
4172  bicne r10,r10,#0x40000000
4173  orreq r10,r10,#0x40000000 ;@ Get Z flag
4174
4175  bic r1,r0,r1,lsl r11 ;@ Clear bit
4176
4177;@ EaWrite: Write r1 into '$3333.w' (address in r8):
4178  and r1,r1,#0xff
4179  bic r0,r8,#0xff000000
4180  bl m68k_write8 ;@ Call write8(r0,r1) handler
4181
4182  ldr r5,[r7,#0x5c] ;@ Load Cycles
4183  ldrh r8,[r4],#2 ;@ Fetch next opcode
4184  subs r5,r5,#16 ;@ Subtract cycles
4185  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4186  b CycloneEnd
4187
4188;@ ---------- [01b9] bclr d0, $33333333.l uses Op01b9 ----------
4189Op01b9:
4190  str r4,[r7,#0x50] ;@ Save prev PC + 2
4191  str r5,[r7,#0x5c] ;@ Save Cycles
4192
4193;@ EaCalc : Get register index into r11:
4194  and r11,r8,#0x0e00
4195;@ EaRead : Read register[r11] into r11:
4196  ldr r11,[r7,r11,lsr #7]
4197
4198;@ EaCalc : Get '$33333333.l' into r8:
4199  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
4200  ldrh r0,[r4],#2
4201  orr r8,r0,r2,lsl #16
4202;@ EaRead : Read '$33333333.l' (address in r8) into r0:
4203  str r4,[r7,#0x40] ;@ Save PC
4204  bic r0,r8,#0xff000000
4205  bl m68k_read8 ;@ Call read8(r0) handler
4206
4207  and r11,r11,#7  ;@ mem - do mod 8
4208
4209  mov r1,#1
4210  tst r0,r1,lsl r11 ;@ Do arithmetic
4211  bicne r10,r10,#0x40000000
4212  orreq r10,r10,#0x40000000 ;@ Get Z flag
4213
4214  bic r1,r0,r1,lsl r11 ;@ Clear bit
4215
4216;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
4217  and r1,r1,#0xff
4218  bic r0,r8,#0xff000000
4219  bl m68k_write8 ;@ Call write8(r0,r1) handler
4220
4221  ldr r5,[r7,#0x5c] ;@ Load Cycles
4222  ldrh r8,[r4],#2 ;@ Fetch next opcode
4223  subs r5,r5,#20 ;@ Subtract cycles
4224  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4225  b CycloneEnd
4226
4227;@ ---------- [01c0] bset d0, d0 uses Op01c0 ----------
4228Op01c0:
4229;@ EaCalc : Get register index into r11:
4230  and r11,r8,#0x0e00
4231;@ EaRead : Read register[r11] into r11:
4232  ldr r11,[r7,r11,lsr #7]
4233
4234;@ EaCalc : Get register index into r8:
4235  and r8,r8,#0x000f
4236;@ EaRead : Read register[r8] into r0:
4237  ldr r0,[r7,r8,lsl #2]
4238
4239  and r11,r11,#31 ;@ reg - do mod 32
4240
4241  mov r1,#1
4242  tst r0,r1,lsl r11 ;@ Do arithmetic
4243  bicne r10,r10,#0x40000000
4244  orreq r10,r10,#0x40000000 ;@ Get Z flag
4245
4246  orr r1,r0,r1,lsl r11 ;@ Set bit
4247
4248;@ EaWrite: r1 into register[r8]:
4249  str r1,[r7,r8,lsl #2]
4250
4251  ldrh r8,[r4],#2 ;@ Fetch next opcode
4252  subs r5,r5,#8 ;@ Subtract cycles
4253  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4254  b CycloneEnd
4255
4256;@ ---------- [01c8] movep.l d0, ($3333,a0) uses Op01c8 ----------
4257Op01c8:
4258  str r4,[r7,#0x50] ;@ Save prev PC + 2
4259  str r5,[r7,#0x5c] ;@ Save Cycles
4260
4261;@ EaCalc : Get register index into r11:
4262  and r11,r8,#0x0e00
4263;@ EaRead : Read register[r11] into r11:
4264  ldr r11,[r7,r11,lsr #7]
4265
4266;@ EaCalc : Get '($3333,a0)' into r8:
4267  ldrsh r0,[r4],#2 ;@ Fetch offset
4268  and r2,r8,#0x000f
4269  ldr r2,[r7,r2,lsl #2]
4270  add r8,r0,r2 ;@ Add on offset
4271  mov r1,r11,lsr #24 ;@ first byte
4272;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
4273  and r1,r1,#0xff
4274  str r4,[r7,#0x40] ;@ Save PC
4275  bic r0,r8,#0xff000000
4276  bl m68k_write8 ;@ Call write8(r0,r1) handler
4277
4278  add r0,r8,#2
4279  mov r1,r11,lsr #16 ;@ second byte
4280;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
4281  and r1,r1,#0xff
4282  bic r0,r0,#0xff000000
4283  bl m68k_write8 ;@ Call write8(r0,r1) handler
4284
4285  add r0,r8,#4
4286  mov r1,r11,lsr #8 ;@ first or third byte
4287;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
4288  and r1,r1,#0xff
4289  bic r0,r0,#0xff000000
4290  bl m68k_write8 ;@ Call write8(r0,r1) handler
4291
4292  add r0,r8,#6
4293  and r1,r11,#0xff
4294;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
4295  and r1,r1,#0xff
4296  bic r0,r0,#0xff000000
4297  bl m68k_write8 ;@ Call write8(r0,r1) handler
4298
4299  ldr r5,[r7,#0x5c] ;@ Load Cycles
4300  ldrh r8,[r4],#2 ;@ Fetch next opcode
4301  subs r5,r5,#24 ;@ Subtract cycles
4302  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4303  b CycloneEnd
4304
4305;@ ---------- [01d0] bset d0, (a0) uses Op01d0 ----------
4306Op01d0:
4307  str r4,[r7,#0x50] ;@ Save prev PC + 2
4308  str r5,[r7,#0x5c] ;@ Save Cycles
4309
4310;@ EaCalc : Get register index into r11:
4311  and r11,r8,#0x0e00
4312;@ EaRead : Read register[r11] into r11:
4313  ldr r11,[r7,r11,lsr #7]
4314
4315;@ EaCalc : Get '(a0)' into r8:
4316  and r2,r8,#0x000f
4317  orr r2,r2,#0x8 ;@ A0-7
4318  ldr r8,[r7,r2,lsl #2]
4319;@ EaRead : Read '(a0)' (address in r8) into r0:
4320  str r4,[r7,#0x40] ;@ Save PC
4321  bic r0,r8,#0xff000000
4322  bl m68k_read8 ;@ Call read8(r0) handler
4323
4324  and r11,r11,#7  ;@ mem - do mod 8
4325
4326  mov r1,#1
4327  tst r0,r1,lsl r11 ;@ Do arithmetic
4328  bicne r10,r10,#0x40000000
4329  orreq r10,r10,#0x40000000 ;@ Get Z flag
4330
4331  orr r1,r0,r1,lsl r11 ;@ Set bit
4332
4333;@ EaWrite: Write r1 into '(a0)' (address in r8):
4334  and r1,r1,#0xff
4335  bic r0,r8,#0xff000000
4336  bl m68k_write8 ;@ Call write8(r0,r1) handler
4337
4338  ldr r5,[r7,#0x5c] ;@ Load Cycles
4339  ldrh r8,[r4],#2 ;@ Fetch next opcode
4340  subs r5,r5,#12 ;@ Subtract cycles
4341  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4342  b CycloneEnd
4343
4344;@ ---------- [01d8] bset d0, (a0)+ uses Op01d8 ----------
4345Op01d8:
4346  str r4,[r7,#0x50] ;@ Save prev PC + 2
4347  str r5,[r7,#0x5c] ;@ Save Cycles
4348
4349;@ EaCalc : Get register index into r11:
4350  and r11,r8,#0x0e00
4351;@ EaRead : Read register[r11] into r11:
4352  ldr r11,[r7,r11,lsr #7]
4353
4354;@ EaCalc : Get '(a0)+' into r8:
4355  and r2,r8,#0x000f
4356  ldr r8,[r7,r2,lsl #2]
4357  add r3,r8,#1 ;@ Post-increment An
4358  str r3,[r7,r2,lsl #2]
4359;@ EaRead : Read '(a0)+' (address in r8) into r0:
4360  str r4,[r7,#0x40] ;@ Save PC
4361  bic r0,r8,#0xff000000
4362  bl m68k_read8 ;@ Call read8(r0) handler
4363
4364  and r11,r11,#7  ;@ mem - do mod 8
4365
4366  mov r1,#1
4367  tst r0,r1,lsl r11 ;@ Do arithmetic
4368  bicne r10,r10,#0x40000000
4369  orreq r10,r10,#0x40000000 ;@ Get Z flag
4370
4371  orr r1,r0,r1,lsl r11 ;@ Set bit
4372
4373;@ EaWrite: Write r1 into '(a0)+' (address in r8):
4374  and r1,r1,#0xff
4375  bic r0,r8,#0xff000000
4376  bl m68k_write8 ;@ Call write8(r0,r1) handler
4377
4378  ldr r5,[r7,#0x5c] ;@ Load Cycles
4379  ldrh r8,[r4],#2 ;@ Fetch next opcode
4380  subs r5,r5,#12 ;@ Subtract cycles
4381  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4382  b CycloneEnd
4383
4384;@ ---------- [01df] bset d0, (a7)+ uses Op01df ----------
4385Op01df:
4386  str r4,[r7,#0x50] ;@ Save prev PC + 2
4387  str r5,[r7,#0x5c] ;@ Save Cycles
4388
4389;@ EaCalc : Get register index into r11:
4390  and r11,r8,#0x0e00
4391;@ EaRead : Read register[r11] into r11:
4392  ldr r11,[r7,r11,lsr #7]
4393
4394;@ EaCalc : Get '(a7)+' into r8:
4395  ldr r8,[r7,#0x3c] ;@ A7
4396  add r3,r8,#2 ;@ Post-increment An
4397  str r3,[r7,#0x3c] ;@ A7
4398;@ EaRead : Read '(a7)+' (address in r8) into r0:
4399  str r4,[r7,#0x40] ;@ Save PC
4400  bic r0,r8,#0xff000000
4401  bl m68k_read8 ;@ Call read8(r0) handler
4402
4403  and r11,r11,#7  ;@ mem - do mod 8
4404
4405  mov r1,#1
4406  tst r0,r1,lsl r11 ;@ Do arithmetic
4407  bicne r10,r10,#0x40000000
4408  orreq r10,r10,#0x40000000 ;@ Get Z flag
4409
4410  orr r1,r0,r1,lsl r11 ;@ Set bit
4411
4412;@ EaWrite: Write r1 into '(a7)+' (address in r8):
4413  and r1,r1,#0xff
4414  bic r0,r8,#0xff000000
4415  bl m68k_write8 ;@ Call write8(r0,r1) handler
4416
4417  ldr r5,[r7,#0x5c] ;@ Load Cycles
4418  ldrh r8,[r4],#2 ;@ Fetch next opcode
4419  subs r5,r5,#12 ;@ Subtract cycles
4420  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4421  b CycloneEnd
4422
4423;@ ---------- [01e0] bset d0, -(a0) uses Op01e0 ----------
4424Op01e0:
4425  str r4,[r7,#0x50] ;@ Save prev PC + 2
4426  str r5,[r7,#0x5c] ;@ Save Cycles
4427
4428;@ EaCalc : Get register index into r11:
4429  and r11,r8,#0x0e00
4430;@ EaRead : Read register[r11] into r11:
4431  ldr r11,[r7,r11,lsr #7]
4432
4433;@ EaCalc : Get '-(a0)' into r8:
4434  and r2,r8,#0x000f
4435  orr r2,r2,#0x8 ;@ A0-7
4436  ldr r8,[r7,r2,lsl #2]
4437  sub r8,r8,#1 ;@ Pre-decrement An
4438  str r8,[r7,r2,lsl #2]
4439;@ EaRead : Read '-(a0)' (address in r8) into r0:
4440  str r4,[r7,#0x40] ;@ Save PC
4441  bic r0,r8,#0xff000000
4442  bl m68k_read8 ;@ Call read8(r0) handler
4443
4444  and r11,r11,#7  ;@ mem - do mod 8
4445
4446  mov r1,#1
4447  tst r0,r1,lsl r11 ;@ Do arithmetic
4448  bicne r10,r10,#0x40000000
4449  orreq r10,r10,#0x40000000 ;@ Get Z flag
4450
4451  orr r1,r0,r1,lsl r11 ;@ Set bit
4452
4453;@ EaWrite: Write r1 into '-(a0)' (address in r8):
4454  and r1,r1,#0xff
4455  bic r0,r8,#0xff000000
4456  bl m68k_write8 ;@ Call write8(r0,r1) handler
4457
4458  ldr r5,[r7,#0x5c] ;@ Load Cycles
4459  ldrh r8,[r4],#2 ;@ Fetch next opcode
4460  subs r5,r5,#14 ;@ Subtract cycles
4461  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4462  b CycloneEnd
4463
4464;@ ---------- [01e7] bset d0, -(a7) uses Op01e7 ----------
4465Op01e7:
4466  str r4,[r7,#0x50] ;@ Save prev PC + 2
4467  str r5,[r7,#0x5c] ;@ Save Cycles
4468
4469;@ EaCalc : Get register index into r11:
4470  and r11,r8,#0x0e00
4471;@ EaRead : Read register[r11] into r11:
4472  ldr r11,[r7,r11,lsr #7]
4473
4474;@ EaCalc : Get '-(a7)' into r8:
4475  ldr r8,[r7,#0x3c] ;@ A7
4476  sub r8,r8,#2 ;@ Pre-decrement An
4477  str r8,[r7,#0x3c] ;@ A7
4478;@ EaRead : Read '-(a7)' (address in r8) into r0:
4479  str r4,[r7,#0x40] ;@ Save PC
4480  bic r0,r8,#0xff000000
4481  bl m68k_read8 ;@ Call read8(r0) handler
4482
4483  and r11,r11,#7  ;@ mem - do mod 8
4484
4485  mov r1,#1
4486  tst r0,r1,lsl r11 ;@ Do arithmetic
4487  bicne r10,r10,#0x40000000
4488  orreq r10,r10,#0x40000000 ;@ Get Z flag
4489
4490  orr r1,r0,r1,lsl r11 ;@ Set bit
4491
4492;@ EaWrite: Write r1 into '-(a7)' (address in r8):
4493  and r1,r1,#0xff
4494  bic r0,r8,#0xff000000
4495  bl m68k_write8 ;@ Call write8(r0,r1) handler
4496
4497  ldr r5,[r7,#0x5c] ;@ Load Cycles
4498  ldrh r8,[r4],#2 ;@ Fetch next opcode
4499  subs r5,r5,#14 ;@ Subtract cycles
4500  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4501  b CycloneEnd
4502
4503;@ ---------- [01e8] bset d0, ($3333,a0) uses Op01e8 ----------
4504Op01e8:
4505  str r4,[r7,#0x50] ;@ Save prev PC + 2
4506  str r5,[r7,#0x5c] ;@ Save Cycles
4507
4508;@ EaCalc : Get register index into r11:
4509  and r11,r8,#0x0e00
4510;@ EaRead : Read register[r11] into r11:
4511  ldr r11,[r7,r11,lsr #7]
4512
4513;@ EaCalc : Get '($3333,a0)' into r8:
4514  ldrsh r0,[r4],#2 ;@ Fetch offset
4515  and r2,r8,#0x000f
4516  ldr r2,[r7,r2,lsl #2]
4517  add r8,r0,r2 ;@ Add on offset
4518;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
4519  str r4,[r7,#0x40] ;@ Save PC
4520  bic r0,r8,#0xff000000
4521  bl m68k_read8 ;@ Call read8(r0) handler
4522
4523  and r11,r11,#7  ;@ mem - do mod 8
4524
4525  mov r1,#1
4526  tst r0,r1,lsl r11 ;@ Do arithmetic
4527  bicne r10,r10,#0x40000000
4528  orreq r10,r10,#0x40000000 ;@ Get Z flag
4529
4530  orr r1,r0,r1,lsl r11 ;@ Set bit
4531
4532;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
4533  and r1,r1,#0xff
4534  bic r0,r8,#0xff000000
4535  bl m68k_write8 ;@ Call write8(r0,r1) handler
4536
4537  ldr r5,[r7,#0x5c] ;@ Load Cycles
4538  ldrh r8,[r4],#2 ;@ Fetch next opcode
4539  subs r5,r5,#16 ;@ Subtract cycles
4540  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4541  b CycloneEnd
4542
4543;@ ---------- [01f0] bset d0, ($33,a0,d3.w*2) uses Op01f0 ----------
4544Op01f0:
4545  str r4,[r7,#0x50] ;@ Save prev PC + 2
4546  str r5,[r7,#0x5c] ;@ Save Cycles
4547
4548;@ EaCalc : Get register index into r11:
4549  and r11,r8,#0x0e00
4550;@ EaRead : Read register[r11] into r11:
4551  ldr r11,[r7,r11,lsr #7]
4552
4553;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
4554;@ Get extension word into r3:
4555  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
4556  mov r2,r3,lsr #10
4557  tst r3,#0x0800 ;@ Is Rn Word or Long
4558  and r2,r2,#0x3c ;@ r2=Index of Rn
4559  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
4560  ldrne   r2,[r7,r2] ;@ r2=Rn.l
4561  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
4562  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
4563  and r2,r8,#0x000f
4564  orr r2,r2,#0x8 ;@ A0-7
4565  ldr r2,[r7,r2,lsl #2]
4566  add r8,r2,r3 ;@ r8=Disp+An+Rn
4567;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
4568  str r4,[r7,#0x40] ;@ Save PC
4569  bic r0,r8,#0xff000000
4570  bl m68k_read8 ;@ Call read8(r0) handler
4571
4572  and r11,r11,#7  ;@ mem - do mod 8
4573
4574  mov r1,#1
4575  tst r0,r1,lsl r11 ;@ Do arithmetic
4576  bicne r10,r10,#0x40000000
4577  orreq r10,r10,#0x40000000 ;@ Get Z flag
4578
4579  orr r1,r0,r1,lsl r11 ;@ Set bit
4580
4581;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
4582  and r1,r1,#0xff
4583  bic r0,r8,#0xff000000
4584  bl m68k_write8 ;@ Call write8(r0,r1) handler
4585
4586  ldr r5,[r7,#0x5c] ;@ Load Cycles
4587  ldrh r8,[r4],#2 ;@ Fetch next opcode
4588  subs r5,r5,#18 ;@ Subtract cycles
4589  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4590  b CycloneEnd
4591
4592;@ ---------- [01f8] bset d0, $3333.w uses Op01f8 ----------
4593Op01f8:
4594  str r4,[r7,#0x50] ;@ Save prev PC + 2
4595  str r5,[r7,#0x5c] ;@ Save Cycles
4596
4597;@ EaCalc : Get register index into r11:
4598  and r11,r8,#0x0e00
4599;@ EaRead : Read register[r11] into r11:
4600  ldr r11,[r7,r11,lsr #7]
4601
4602;@ EaCalc : Get '$3333.w' into r8:
4603  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
4604;@ EaRead : Read '$3333.w' (address in r8) into r0:
4605  str r4,[r7,#0x40] ;@ Save PC
4606  bic r0,r8,#0xff000000
4607  bl m68k_read8 ;@ Call read8(r0) handler
4608
4609  and r11,r11,#7  ;@ mem - do mod 8
4610
4611  mov r1,#1
4612  tst r0,r1,lsl r11 ;@ Do arithmetic
4613  bicne r10,r10,#0x40000000
4614  orreq r10,r10,#0x40000000 ;@ Get Z flag
4615
4616  orr r1,r0,r1,lsl r11 ;@ Set bit
4617
4618;@ EaWrite: Write r1 into '$3333.w' (address in r8):
4619  and r1,r1,#0xff
4620  bic r0,r8,#0xff000000
4621  bl m68k_write8 ;@ Call write8(r0,r1) handler
4622
4623  ldr r5,[r7,#0x5c] ;@ Load Cycles
4624  ldrh r8,[r4],#2 ;@ Fetch next opcode
4625  subs r5,r5,#16 ;@ Subtract cycles
4626  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4627  b CycloneEnd
4628
4629;@ ---------- [01f9] bset d0, $33333333.l uses Op01f9 ----------
4630Op01f9:
4631  str r4,[r7,#0x50] ;@ Save prev PC + 2
4632  str r5,[r7,#0x5c] ;@ Save Cycles
4633
4634;@ EaCalc : Get register index into r11:
4635  and r11,r8,#0x0e00
4636;@ EaRead : Read register[r11] into r11:
4637  ldr r11,[r7,r11,lsr #7]
4638
4639;@ EaCalc : Get '$33333333.l' into r8:
4640  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
4641  ldrh r0,[r4],#2
4642  orr r8,r0,r2,lsl #16
4643;@ EaRead : Read '$33333333.l' (address in r8) into r0:
4644  str r4,[r7,#0x40] ;@ Save PC
4645  bic r0,r8,#0xff000000
4646  bl m68k_read8 ;@ Call read8(r0) handler
4647
4648  and r11,r11,#7  ;@ mem - do mod 8
4649
4650  mov r1,#1
4651  tst r0,r1,lsl r11 ;@ Do arithmetic
4652  bicne r10,r10,#0x40000000
4653  orreq r10,r10,#0x40000000 ;@ Get Z flag
4654
4655  orr r1,r0,r1,lsl r11 ;@ Set bit
4656
4657;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
4658  and r1,r1,#0xff
4659  bic r0,r8,#0xff000000
4660  bl m68k_write8 ;@ Call write8(r0,r1) handler
4661
4662  ldr r5,[r7,#0x5c] ;@ Load Cycles
4663  ldrh r8,[r4],#2 ;@ Fetch next opcode
4664  subs r5,r5,#20 ;@ Subtract cycles
4665  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4666  b CycloneEnd
4667
4668;@ ---------- [0200] andi.b #$33, d0 uses Op0200 ----------
4669Op0200:
4670;@ EaCalc : Get '#$33' into r10:
4671  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4672;@ EaRead : Read '#$33' (address in r10) into r10:
4673
4674;@ EaCalc : Get register index into r11:
4675  and r11,r8,#0x000f
4676;@ EaRead : Read register[r11] into r0:
4677  ldr r0,[r7,r11,lsl #2]
4678
4679  mov r10,r10,asl #24
4680;@ Do arithmetic:
4681  ands r1,r10,r0,asl #24
4682  and r10,r1,#0x80000000 ;@ r10=N_flag
4683  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4684
4685;@ EaWrite: r1 into register[r11]:
4686  mov r1,r1,lsr #24
4687  strb r1,[r7,r11,lsl #2]
4688
4689  ldrh r8,[r4],#2 ;@ Fetch next opcode
4690  subs r5,r5,#8 ;@ Subtract cycles
4691  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4692  b CycloneEnd
4693
4694;@ ---------- [0210] andi.b #$33, (a0) uses Op0210 ----------
4695Op0210:
4696  str r4,[r7,#0x50] ;@ Save prev PC + 2
4697  str r5,[r7,#0x5c] ;@ Save Cycles
4698
4699;@ EaCalc : Get '#$33' into r10:
4700  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4701;@ EaRead : Read '#$33' (address in r10) into r10:
4702
4703;@ EaCalc : Get '(a0)' into r11:
4704  and r2,r8,#0x000f
4705  orr r2,r2,#0x8 ;@ A0-7
4706  ldr r11,[r7,r2,lsl #2]
4707;@ EaRead : Read '(a0)' (address in r11) into r0:
4708  str r4,[r7,#0x40] ;@ Save PC
4709  bic r0,r11,#0xff000000
4710  bl m68k_read8 ;@ Call read8(r0) handler
4711
4712  mov r10,r10,asl #24
4713;@ Do arithmetic:
4714  ands r1,r10,r0,asl #24
4715  and r10,r1,#0x80000000 ;@ r10=N_flag
4716  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4717
4718;@ EaWrite: Write r1 into '(a0)' (address in r11):
4719  mov r1,r1,lsr #24
4720  bic r0,r11,#0xff000000
4721  bl m68k_write8 ;@ Call write8(r0,r1) handler
4722
4723  ldr r5,[r7,#0x5c] ;@ Load Cycles
4724  ldrh r8,[r4],#2 ;@ Fetch next opcode
4725  subs r5,r5,#16 ;@ Subtract cycles
4726  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4727  b CycloneEnd
4728
4729;@ ---------- [0218] andi.b #$33, (a0)+ uses Op0218 ----------
4730Op0218:
4731  str r4,[r7,#0x50] ;@ Save prev PC + 2
4732  str r5,[r7,#0x5c] ;@ Save Cycles
4733
4734;@ EaCalc : Get '#$33' into r10:
4735  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4736;@ EaRead : Read '#$33' (address in r10) into r10:
4737
4738;@ EaCalc : Get '(a0)+' into r11:
4739  and r2,r8,#0x000f
4740  ldr r11,[r7,r2,lsl #2]
4741  add r3,r11,#1 ;@ Post-increment An
4742  str r3,[r7,r2,lsl #2]
4743;@ EaRead : Read '(a0)+' (address in r11) into r0:
4744  str r4,[r7,#0x40] ;@ Save PC
4745  bic r0,r11,#0xff000000
4746  bl m68k_read8 ;@ Call read8(r0) handler
4747
4748  mov r10,r10,asl #24
4749;@ Do arithmetic:
4750  ands r1,r10,r0,asl #24
4751  and r10,r1,#0x80000000 ;@ r10=N_flag
4752  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4753
4754;@ EaWrite: Write r1 into '(a0)+' (address in r11):
4755  mov r1,r1,lsr #24
4756  bic r0,r11,#0xff000000
4757  bl m68k_write8 ;@ Call write8(r0,r1) handler
4758
4759  ldr r5,[r7,#0x5c] ;@ Load Cycles
4760  ldrh r8,[r4],#2 ;@ Fetch next opcode
4761  subs r5,r5,#16 ;@ Subtract cycles
4762  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4763  b CycloneEnd
4764
4765;@ ---------- [021f] andi.b #$33, (a7)+ uses Op021f ----------
4766Op021f:
4767  str r4,[r7,#0x50] ;@ Save prev PC + 2
4768  str r5,[r7,#0x5c] ;@ Save Cycles
4769
4770;@ EaCalc : Get '#$33' into r10:
4771  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4772;@ EaRead : Read '#$33' (address in r10) into r10:
4773
4774;@ EaCalc : Get '(a7)+' into r11:
4775  ldr r11,[r7,#0x3c] ;@ A7
4776  add r3,r11,#2 ;@ Post-increment An
4777  str r3,[r7,#0x3c] ;@ A7
4778;@ EaRead : Read '(a7)+' (address in r11) into r0:
4779  str r4,[r7,#0x40] ;@ Save PC
4780  bic r0,r11,#0xff000000
4781  bl m68k_read8 ;@ Call read8(r0) handler
4782
4783  mov r10,r10,asl #24
4784;@ Do arithmetic:
4785  ands r1,r10,r0,asl #24
4786  and r10,r1,#0x80000000 ;@ r10=N_flag
4787  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4788
4789;@ EaWrite: Write r1 into '(a7)+' (address in r11):
4790  mov r1,r1,lsr #24
4791  bic r0,r11,#0xff000000
4792  bl m68k_write8 ;@ Call write8(r0,r1) handler
4793
4794  ldr r5,[r7,#0x5c] ;@ Load Cycles
4795  ldrh r8,[r4],#2 ;@ Fetch next opcode
4796  subs r5,r5,#16 ;@ Subtract cycles
4797  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4798  b CycloneEnd
4799
4800;@ ---------- [0220] andi.b #$33, -(a0) uses Op0220 ----------
4801Op0220:
4802  str r4,[r7,#0x50] ;@ Save prev PC + 2
4803  str r5,[r7,#0x5c] ;@ Save Cycles
4804
4805;@ EaCalc : Get '#$33' into r10:
4806  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4807;@ EaRead : Read '#$33' (address in r10) into r10:
4808
4809;@ EaCalc : Get '-(a0)' into r11:
4810  and r2,r8,#0x000f
4811  orr r2,r2,#0x8 ;@ A0-7
4812  ldr r11,[r7,r2,lsl #2]
4813  sub r11,r11,#1 ;@ Pre-decrement An
4814  str r11,[r7,r2,lsl #2]
4815;@ EaRead : Read '-(a0)' (address in r11) into r0:
4816  str r4,[r7,#0x40] ;@ Save PC
4817  bic r0,r11,#0xff000000
4818  bl m68k_read8 ;@ Call read8(r0) handler
4819
4820  mov r10,r10,asl #24
4821;@ Do arithmetic:
4822  ands r1,r10,r0,asl #24
4823  and r10,r1,#0x80000000 ;@ r10=N_flag
4824  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4825
4826;@ EaWrite: Write r1 into '-(a0)' (address in r11):
4827  mov r1,r1,lsr #24
4828  bic r0,r11,#0xff000000
4829  bl m68k_write8 ;@ Call write8(r0,r1) handler
4830
4831  ldr r5,[r7,#0x5c] ;@ Load Cycles
4832  ldrh r8,[r4],#2 ;@ Fetch next opcode
4833  subs r5,r5,#18 ;@ Subtract cycles
4834  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4835  b CycloneEnd
4836
4837;@ ---------- [0227] andi.b #$33, -(a7) uses Op0227 ----------
4838Op0227:
4839  str r4,[r7,#0x50] ;@ Save prev PC + 2
4840  str r5,[r7,#0x5c] ;@ Save Cycles
4841
4842;@ EaCalc : Get '#$33' into r10:
4843  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4844;@ EaRead : Read '#$33' (address in r10) into r10:
4845
4846;@ EaCalc : Get '-(a7)' into r11:
4847  ldr r11,[r7,#0x3c] ;@ A7
4848  sub r11,r11,#2 ;@ Pre-decrement An
4849  str r11,[r7,#0x3c] ;@ A7
4850;@ EaRead : Read '-(a7)' (address in r11) into r0:
4851  str r4,[r7,#0x40] ;@ Save PC
4852  bic r0,r11,#0xff000000
4853  bl m68k_read8 ;@ Call read8(r0) handler
4854
4855  mov r10,r10,asl #24
4856;@ Do arithmetic:
4857  ands r1,r10,r0,asl #24
4858  and r10,r1,#0x80000000 ;@ r10=N_flag
4859  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4860
4861;@ EaWrite: Write r1 into '-(a7)' (address in r11):
4862  mov r1,r1,lsr #24
4863  bic r0,r11,#0xff000000
4864  bl m68k_write8 ;@ Call write8(r0,r1) handler
4865
4866  ldr r5,[r7,#0x5c] ;@ Load Cycles
4867  ldrh r8,[r4],#2 ;@ Fetch next opcode
4868  subs r5,r5,#18 ;@ Subtract cycles
4869  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4870  b CycloneEnd
4871
4872;@ ---------- [0228] andi.b #$33, ($3333,a0) uses Op0228 ----------
4873Op0228:
4874  str r4,[r7,#0x50] ;@ Save prev PC + 2
4875  str r5,[r7,#0x5c] ;@ Save Cycles
4876
4877;@ EaCalc : Get '#$33' into r10:
4878  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4879;@ EaRead : Read '#$33' (address in r10) into r10:
4880
4881;@ EaCalc : Get '($3333,a0)' into r11:
4882  ldrsh r0,[r4],#2 ;@ Fetch offset
4883  and r2,r8,#0x000f
4884  ldr r2,[r7,r2,lsl #2]
4885  add r11,r0,r2 ;@ Add on offset
4886;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
4887  str r4,[r7,#0x40] ;@ Save PC
4888  bic r0,r11,#0xff000000
4889  bl m68k_read8 ;@ Call read8(r0) handler
4890
4891  mov r10,r10,asl #24
4892;@ Do arithmetic:
4893  ands r1,r10,r0,asl #24
4894  and r10,r1,#0x80000000 ;@ r10=N_flag
4895  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4896
4897;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
4898  mov r1,r1,lsr #24
4899  bic r0,r11,#0xff000000
4900  bl m68k_write8 ;@ Call write8(r0,r1) handler
4901
4902  ldr r5,[r7,#0x5c] ;@ Load Cycles
4903  ldrh r8,[r4],#2 ;@ Fetch next opcode
4904  subs r5,r5,#20 ;@ Subtract cycles
4905  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4906  b CycloneEnd
4907
4908;@ ---------- [0230] andi.b #$33, ($33,a0,d3.w*2) uses Op0230 ----------
4909Op0230:
4910  str r4,[r7,#0x50] ;@ Save prev PC + 2
4911  str r5,[r7,#0x5c] ;@ Save Cycles
4912
4913;@ EaCalc : Get '#$33' into r10:
4914  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4915;@ EaRead : Read '#$33' (address in r10) into r10:
4916
4917;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
4918;@ Get extension word into r3:
4919  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
4920  mov r2,r3,lsr #10
4921  tst r3,#0x0800 ;@ Is Rn Word or Long
4922  and r2,r2,#0x3c ;@ r2=Index of Rn
4923  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
4924  ldrne   r2,[r7,r2] ;@ r2=Rn.l
4925  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
4926  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
4927  and r2,r8,#0x000f
4928  orr r2,r2,#0x8 ;@ A0-7
4929  ldr r2,[r7,r2,lsl #2]
4930  add r11,r2,r3 ;@ r11=Disp+An+Rn
4931;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
4932  str r4,[r7,#0x40] ;@ Save PC
4933  bic r0,r11,#0xff000000
4934  bl m68k_read8 ;@ Call read8(r0) handler
4935
4936  mov r10,r10,asl #24
4937;@ Do arithmetic:
4938  ands r1,r10,r0,asl #24
4939  and r10,r1,#0x80000000 ;@ r10=N_flag
4940  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4941
4942;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
4943  mov r1,r1,lsr #24
4944  bic r0,r11,#0xff000000
4945  bl m68k_write8 ;@ Call write8(r0,r1) handler
4946
4947  ldr r5,[r7,#0x5c] ;@ Load Cycles
4948  ldrh r8,[r4],#2 ;@ Fetch next opcode
4949  subs r5,r5,#22 ;@ Subtract cycles
4950  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4951  b CycloneEnd
4952
4953;@ ---------- [0238] andi.b #$33, $3333.w uses Op0238 ----------
4954Op0238:
4955  str r4,[r7,#0x50] ;@ Save prev PC + 2
4956  str r5,[r7,#0x5c] ;@ Save Cycles
4957
4958;@ EaCalc : Get '#$33' into r10:
4959  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4960;@ EaRead : Read '#$33' (address in r10) into r10:
4961
4962;@ EaCalc : Get '$3333.w' into r11:
4963  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
4964;@ EaRead : Read '$3333.w' (address in r11) into r0:
4965  str r4,[r7,#0x40] ;@ Save PC
4966  bic r0,r11,#0xff000000
4967  bl m68k_read8 ;@ Call read8(r0) handler
4968
4969  mov r10,r10,asl #24
4970;@ Do arithmetic:
4971  ands r1,r10,r0,asl #24
4972  and r10,r1,#0x80000000 ;@ r10=N_flag
4973  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4974
4975;@ EaWrite: Write r1 into '$3333.w' (address in r11):
4976  mov r1,r1,lsr #24
4977  bic r0,r11,#0xff000000
4978  bl m68k_write8 ;@ Call write8(r0,r1) handler
4979
4980  ldr r5,[r7,#0x5c] ;@ Load Cycles
4981  ldrh r8,[r4],#2 ;@ Fetch next opcode
4982  subs r5,r5,#20 ;@ Subtract cycles
4983  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4984  b CycloneEnd
4985
4986;@ ---------- [0239] andi.b #$33, $33333333.l uses Op0239 ----------
4987Op0239:
4988  str r4,[r7,#0x50] ;@ Save prev PC + 2
4989  str r5,[r7,#0x5c] ;@ Save Cycles
4990
4991;@ EaCalc : Get '#$33' into r10:
4992  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4993;@ EaRead : Read '#$33' (address in r10) into r10:
4994
4995;@ EaCalc : Get '$33333333.l' into r11:
4996  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
4997  ldrh r0,[r4],#2
4998  orr r11,r0,r2,lsl #16
4999;@ EaRead : Read '$33333333.l' (address in r11) into r0:
5000  str r4,[r7,#0x40] ;@ Save PC
5001  bic r0,r11,#0xff000000
5002  bl m68k_read8 ;@ Call read8(r0) handler
5003
5004  mov r10,r10,asl #24
5005;@ Do arithmetic:
5006  ands r1,r10,r0,asl #24
5007  and r10,r1,#0x80000000 ;@ r10=N_flag
5008  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5009
5010;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
5011  mov r1,r1,lsr #24
5012  bic r0,r11,#0xff000000
5013  bl m68k_write8 ;@ Call write8(r0,r1) handler
5014
5015  ldr r5,[r7,#0x5c] ;@ Load Cycles
5016  ldrh r8,[r4],#2 ;@ Fetch next opcode
5017  subs r5,r5,#24 ;@ Subtract cycles
5018  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5019  b CycloneEnd
5020
5021;@ ---------- [023c] andi.b #$33, ccr uses Op023c ----------
5022Op023c:
5023;@ EaCalc : Get '#$33' into r0:
5024  ldrsb r0,[r4],#2 ;@ Fetch immediate value
5025;@ EaRead : Read '#$33' (address in r0) into r0:
5026
5027  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
5028  tst r1,#1           ;@ 1 if C!=V
5029  eorne r0,r0,#3      ;@ ___XNZCV
5030  ldr r2,[r7,#0x4c]   ;@ Load old X bit
5031  and r10,r10,r0,lsl #28
5032  and r2,r2,r0,lsl #25 ;@ X bit
5033  str r2,[r7,#0x4c]   ;@ Save X bit
5034
5035  ldrh r8,[r4],#2 ;@ Fetch next opcode
5036  subs r5,r5,#20 ;@ Subtract cycles
5037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5038  b CycloneEnd
5039
5040;@ ---------- [0250] andi.w #$3333, (a0) uses Op0250 ----------
5041Op0250:
5042  str r4,[r7,#0x50] ;@ Save prev PC + 2
5043  str r5,[r7,#0x5c] ;@ Save Cycles
5044
5045;@ EaCalc : Get '#$3333' into r10:
5046  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5047;@ EaRead : Read '#$3333' (address in r10) into r10:
5048
5049;@ EaCalc : Get '(a0)' into r11:
5050  and r2,r8,#0x000f
5051  orr r2,r2,#0x8 ;@ A0-7
5052  ldr r11,[r7,r2,lsl #2]
5053;@ EaRead : Read '(a0)' (address in r11) into r0:
5054  str r4,[r7,#0x40] ;@ Save PC
5055  bic r0,r11,#0xff000000
5056  bl m68k_read16 ;@ Call read16(r0) handler
5057
5058  mov r10,r10,asl #16
5059;@ Do arithmetic:
5060  ands r1,r10,r0,asl #16
5061  and r10,r1,#0x80000000 ;@ r10=N_flag
5062  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5063
5064;@ EaWrite: Write r1 into '(a0)' (address in r11):
5065  mov r1,r1,lsr #16
5066  bic r0,r11,#0xff000000
5067  bl m68k_write16 ;@ Call write16(r0,r1) handler
5068
5069  ldr r5,[r7,#0x5c] ;@ Load Cycles
5070  ldrh r8,[r4],#2 ;@ Fetch next opcode
5071  subs r5,r5,#16 ;@ Subtract cycles
5072  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5073  b CycloneEnd
5074
5075;@ ---------- [0258] andi.w #$3333, (a0)+ uses Op0258 ----------
5076Op0258:
5077  str r4,[r7,#0x50] ;@ Save prev PC + 2
5078  str r5,[r7,#0x5c] ;@ Save Cycles
5079
5080;@ EaCalc : Get '#$3333' into r10:
5081  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5082;@ EaRead : Read '#$3333' (address in r10) into r10:
5083
5084;@ EaCalc : Get '(a0)+' into r11:
5085  and r2,r8,#0x000f
5086  ldr r11,[r7,r2,lsl #2]
5087  add r3,r11,#2 ;@ Post-increment An
5088  str r3,[r7,r2,lsl #2]
5089;@ EaRead : Read '(a0)+' (address in r11) into r0:
5090  str r4,[r7,#0x40] ;@ Save PC
5091  bic r0,r11,#0xff000000
5092  bl m68k_read16 ;@ Call read16(r0) handler
5093
5094  mov r10,r10,asl #16
5095;@ Do arithmetic:
5096  ands r1,r10,r0,asl #16
5097  and r10,r1,#0x80000000 ;@ r10=N_flag
5098  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5099
5100;@ EaWrite: Write r1 into '(a0)+' (address in r11):
5101  mov r1,r1,lsr #16
5102  bic r0,r11,#0xff000000
5103  bl m68k_write16 ;@ Call write16(r0,r1) handler
5104
5105  ldr r5,[r7,#0x5c] ;@ Load Cycles
5106  ldrh r8,[r4],#2 ;@ Fetch next opcode
5107  subs r5,r5,#16 ;@ Subtract cycles
5108  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5109  b CycloneEnd
5110
5111;@ ---------- [0260] andi.w #$3333, -(a0) uses Op0260 ----------
5112Op0260:
5113  str r4,[r7,#0x50] ;@ Save prev PC + 2
5114  str r5,[r7,#0x5c] ;@ Save Cycles
5115
5116;@ EaCalc : Get '#$3333' into r10:
5117  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5118;@ EaRead : Read '#$3333' (address in r10) into r10:
5119
5120;@ EaCalc : Get '-(a0)' into r11:
5121  and r2,r8,#0x000f
5122  orr r2,r2,#0x8 ;@ A0-7
5123  ldr r11,[r7,r2,lsl #2]
5124  sub r11,r11,#2 ;@ Pre-decrement An
5125  str r11,[r7,r2,lsl #2]
5126;@ EaRead : Read '-(a0)' (address in r11) into r0:
5127  str r4,[r7,#0x40] ;@ Save PC
5128  bic r0,r11,#0xff000000
5129  bl m68k_read16 ;@ Call read16(r0) handler
5130
5131  mov r10,r10,asl #16
5132;@ Do arithmetic:
5133  ands r1,r10,r0,asl #16
5134  and r10,r1,#0x80000000 ;@ r10=N_flag
5135  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5136
5137;@ EaWrite: Write r1 into '-(a0)' (address in r11):
5138  mov r1,r1,lsr #16
5139  bic r0,r11,#0xff000000
5140  bl m68k_write16 ;@ Call write16(r0,r1) handler
5141
5142  ldr r5,[r7,#0x5c] ;@ Load Cycles
5143  ldrh r8,[r4],#2 ;@ Fetch next opcode
5144  subs r5,r5,#18 ;@ Subtract cycles
5145  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5146  b CycloneEnd
5147
5148;@ ---------- [0268] andi.w #$3333, ($3333,a0) uses Op0268 ----------
5149Op0268:
5150  str r4,[r7,#0x50] ;@ Save prev PC + 2
5151  str r5,[r7,#0x5c] ;@ Save Cycles
5152
5153;@ EaCalc : Get '#$3333' into r10:
5154  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5155;@ EaRead : Read '#$3333' (address in r10) into r10:
5156
5157;@ EaCalc : Get '($3333,a0)' into r11:
5158  ldrsh r0,[r4],#2 ;@ Fetch offset
5159  and r2,r8,#0x000f
5160  ldr r2,[r7,r2,lsl #2]
5161  add r11,r0,r2 ;@ Add on offset
5162;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
5163  str r4,[r7,#0x40] ;@ Save PC
5164  bic r0,r11,#0xff000000
5165  bl m68k_read16 ;@ Call read16(r0) handler
5166
5167  mov r10,r10,asl #16
5168;@ Do arithmetic:
5169  ands r1,r10,r0,asl #16
5170  and r10,r1,#0x80000000 ;@ r10=N_flag
5171  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5172
5173;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
5174  mov r1,r1,lsr #16
5175  bic r0,r11,#0xff000000
5176  bl m68k_write16 ;@ Call write16(r0,r1) handler
5177
5178  ldr r5,[r7,#0x5c] ;@ Load Cycles
5179  ldrh r8,[r4],#2 ;@ Fetch next opcode
5180  subs r5,r5,#20 ;@ Subtract cycles
5181  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5182  b CycloneEnd
5183
5184;@ ---------- [0270] andi.w #$3333, ($33,a0,d3.w*2) uses Op0270 ----------
5185Op0270:
5186  str r4,[r7,#0x50] ;@ Save prev PC + 2
5187  str r5,[r7,#0x5c] ;@ Save Cycles
5188
5189;@ EaCalc : Get '#$3333' into r10:
5190  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5191;@ EaRead : Read '#$3333' (address in r10) into r10:
5192
5193;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
5194;@ Get extension word into r3:
5195  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
5196  mov r2,r3,lsr #10
5197  tst r3,#0x0800 ;@ Is Rn Word or Long
5198  and r2,r2,#0x3c ;@ r2=Index of Rn
5199  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
5200  ldrne   r2,[r7,r2] ;@ r2=Rn.l
5201  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
5202  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
5203  and r2,r8,#0x000f
5204  orr r2,r2,#0x8 ;@ A0-7
5205  ldr r2,[r7,r2,lsl #2]
5206  add r11,r2,r3 ;@ r11=Disp+An+Rn
5207;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
5208  str r4,[r7,#0x40] ;@ Save PC
5209  bic r0,r11,#0xff000000
5210  bl m68k_read16 ;@ Call read16(r0) handler
5211
5212  mov r10,r10,asl #16
5213;@ Do arithmetic:
5214  ands r1,r10,r0,asl #16
5215  and r10,r1,#0x80000000 ;@ r10=N_flag
5216  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5217
5218;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
5219  mov r1,r1,lsr #16
5220  bic r0,r11,#0xff000000
5221  bl m68k_write16 ;@ Call write16(r0,r1) handler
5222
5223  ldr r5,[r7,#0x5c] ;@ Load Cycles
5224  ldrh r8,[r4],#2 ;@ Fetch next opcode
5225  subs r5,r5,#22 ;@ Subtract cycles
5226  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5227  b CycloneEnd
5228
5229;@ ---------- [0278] andi.w #$3333, $3333.w uses Op0278 ----------
5230Op0278:
5231  str r4,[r7,#0x50] ;@ Save prev PC + 2
5232  str r5,[r7,#0x5c] ;@ Save Cycles
5233
5234;@ EaCalc : Get '#$3333' into r10:
5235  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5236;@ EaRead : Read '#$3333' (address in r10) into r10:
5237
5238;@ EaCalc : Get '$3333.w' into r11:
5239  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
5240;@ EaRead : Read '$3333.w' (address in r11) into r0:
5241  str r4,[r7,#0x40] ;@ Save PC
5242  bic r0,r11,#0xff000000
5243  bl m68k_read16 ;@ Call read16(r0) handler
5244
5245  mov r10,r10,asl #16
5246;@ Do arithmetic:
5247  ands r1,r10,r0,asl #16
5248  and r10,r1,#0x80000000 ;@ r10=N_flag
5249  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5250
5251;@ EaWrite: Write r1 into '$3333.w' (address in r11):
5252  mov r1,r1,lsr #16
5253  bic r0,r11,#0xff000000
5254  bl m68k_write16 ;@ Call write16(r0,r1) handler
5255
5256  ldr r5,[r7,#0x5c] ;@ Load Cycles
5257  ldrh r8,[r4],#2 ;@ Fetch next opcode
5258  subs r5,r5,#20 ;@ Subtract cycles
5259  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5260  b CycloneEnd
5261
5262;@ ---------- [0279] andi.w #$3333, $33333333.l uses Op0279 ----------
5263Op0279:
5264  str r4,[r7,#0x50] ;@ Save prev PC + 2
5265  str r5,[r7,#0x5c] ;@ Save Cycles
5266
5267;@ EaCalc : Get '#$3333' into r10:
5268  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5269;@ EaRead : Read '#$3333' (address in r10) into r10:
5270
5271;@ EaCalc : Get '$33333333.l' into r11:
5272  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
5273  ldrh r0,[r4],#2
5274  orr r11,r0,r2,lsl #16
5275;@ EaRead : Read '$33333333.l' (address in r11) into r0:
5276  str r4,[r7,#0x40] ;@ Save PC
5277  bic r0,r11,#0xff000000
5278  bl m68k_read16 ;@ Call read16(r0) handler
5279
5280  mov r10,r10,asl #16
5281;@ Do arithmetic:
5282  ands r1,r10,r0,asl #16
5283  and r10,r1,#0x80000000 ;@ r10=N_flag
5284  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5285
5286;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
5287  mov r1,r1,lsr #16
5288  bic r0,r11,#0xff000000
5289  bl m68k_write16 ;@ Call write16(r0,r1) handler
5290
5291  ldr r5,[r7,#0x5c] ;@ Load Cycles
5292  ldrh r8,[r4],#2 ;@ Fetch next opcode
5293  subs r5,r5,#24 ;@ Subtract cycles
5294  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5295  b CycloneEnd
5296
5297;@ ---------- [027c] andi.w #$3333, sr uses Op027c ----------
5298Op027c:
5299  ldr r11,[r7,#0x44] ;@ Get SR high
5300  tst r11,#0x20 ;@ Check we are in supervisor mode
5301  beq WrongPrivilegeMode ;@ No
5302
5303;@ EaCalc : Get '#$3333' into r0:
5304  ldrsh r0,[r4],#2 ;@ Fetch immediate value
5305;@ EaRead : Read '#$3333' (address in r0) into r0:
5306
5307  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
5308  tst r1,#1           ;@ 1 if C!=V
5309  eorne r0,r0,#3      ;@ ___XNZCV
5310  ldr r2,[r7,#0x4c]   ;@ Load old X bit
5311  and r10,r10,r0,lsl #28
5312  and r2,r2,r0,lsl #25 ;@ X bit
5313  and r1,r11,r0,lsr #8
5314  str r2,[r7,#0x4c]   ;@ Save X bit
5315  strb r1,[r7,#0x44]
5316
5317;@ A7 <-> OSP?
5318  eor r0,r1,r11
5319  tst r0,#0x20
5320  beq no_sp_swap027c
5321 ;@ swap OSP and A7:
5322  ldr r11,[r7,#0x3C] ;@ Get A7
5323  ldr r0, [r7,#0x48] ;@ Get OSP
5324  str r11,[r7,#0x48]
5325  str r0, [r7,#0x3C]
5326no_sp_swap027c:
5327
5328  ldrh r8,[r4],#2 ;@ Fetch next opcode
5329  subs r5,r5,#20 ;@ Subtract cycles
5330  ble CycloneEnd
5331;@ CheckInterrupt:
5332  ldr r1,[r7,#0x44]
5333  movs r0,r1,lsr #24 ;@ Get IRQ level
5334  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
5335  cmp r0,#6 ;@ irq>6 ?
5336  andle r1,r1,#7 ;@ Get interrupt mask
5337  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
5338  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
5339  b CycloneDoInterruptGoBack
5340
5341;@ ---------- [0280] andi.l #$33333333, d0 uses Op0280 ----------
5342Op0280:
5343;@ EaCalc : Get '#$33333333' into r10:
5344  ldrh r2,[r4],#2 ;@ Fetch immediate value
5345  ldrh r3,[r4],#2
5346  orr r10,r3,r2,lsl #16
5347;@ EaRead : Read '#$33333333' (address in r10) into r10:
5348
5349;@ EaCalc : Get register index into r11:
5350  and r11,r8,#0x000f
5351;@ EaRead : Read register[r11] into r0:
5352  ldr r0,[r7,r11,lsl #2]
5353
5354;@ Do arithmetic:
5355  ands r1,r10,r0
5356  and r10,r1,#0x80000000 ;@ r10=N_flag
5357  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5358
5359;@ EaWrite: r1 into register[r11]:
5360  str r1,[r7,r11,lsl #2]
5361
5362  ldrh r8,[r4],#2 ;@ Fetch next opcode
5363  subs r5,r5,#14 ;@ Subtract cycles
5364  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5365  b CycloneEnd
5366
5367;@ ---------- [0290] andi.l #$33333333, (a0) uses Op0290 ----------
5368Op0290:
5369  str r4,[r7,#0x50] ;@ Save prev PC + 2
5370  str r5,[r7,#0x5c] ;@ Save Cycles
5371
5372;@ EaCalc : Get '#$33333333' into r10:
5373  ldrh r2,[r4],#2 ;@ Fetch immediate value
5374  ldrh r3,[r4],#2
5375  orr r10,r3,r2,lsl #16
5376;@ EaRead : Read '#$33333333' (address in r10) into r10:
5377
5378;@ EaCalc : Get '(a0)' into r11:
5379  and r2,r8,#0x000f
5380  orr r2,r2,#0x8 ;@ A0-7
5381  ldr r11,[r7,r2,lsl #2]
5382;@ EaRead : Read '(a0)' (address in r11) into r0:
5383  str r4,[r7,#0x40] ;@ Save PC
5384  bic r0,r11,#0xff000000
5385  bl m68k_read32 ;@ Call read32(r0) handler
5386
5387;@ Do arithmetic:
5388  ands r1,r10,r0
5389  and r10,r1,#0x80000000 ;@ r10=N_flag
5390  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5391
5392;@ EaWrite: Write r1 into '(a0)' (address in r11):
5393  bic r0,r11,#0xff000000
5394  bl m68k_write32 ;@ Call write32(r0,r1) handler
5395
5396  ldr r5,[r7,#0x5c] ;@ Load Cycles
5397  ldrh r8,[r4],#2 ;@ Fetch next opcode
5398  subs r5,r5,#28 ;@ Subtract cycles
5399  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5400  b CycloneEnd
5401
5402;@ ---------- [0298] andi.l #$33333333, (a0)+ uses Op0298 ----------
5403Op0298:
5404  str r4,[r7,#0x50] ;@ Save prev PC + 2
5405  str r5,[r7,#0x5c] ;@ Save Cycles
5406
5407;@ EaCalc : Get '#$33333333' into r10:
5408  ldrh r2,[r4],#2 ;@ Fetch immediate value
5409  ldrh r3,[r4],#2
5410  orr r10,r3,r2,lsl #16
5411;@ EaRead : Read '#$33333333' (address in r10) into r10:
5412
5413;@ EaCalc : Get '(a0)+' into r11:
5414  and r2,r8,#0x000f
5415  ldr r11,[r7,r2,lsl #2]
5416  add r3,r11,#4 ;@ Post-increment An
5417  str r3,[r7,r2,lsl #2]
5418;@ EaRead : Read '(a0)+' (address in r11) into r0:
5419  str r4,[r7,#0x40] ;@ Save PC
5420  bic r0,r11,#0xff000000
5421  bl m68k_read32 ;@ Call read32(r0) handler
5422
5423;@ Do arithmetic:
5424  ands r1,r10,r0
5425  and r10,r1,#0x80000000 ;@ r10=N_flag
5426  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5427
5428;@ EaWrite: Write r1 into '(a0)+' (address in r11):
5429  bic r0,r11,#0xff000000
5430  bl m68k_write32 ;@ Call write32(r0,r1) handler
5431
5432  ldr r5,[r7,#0x5c] ;@ Load Cycles
5433  ldrh r8,[r4],#2 ;@ Fetch next opcode
5434  subs r5,r5,#28 ;@ Subtract cycles
5435  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5436  b CycloneEnd
5437
5438;@ ---------- [02a0] andi.l #$33333333, -(a0) uses Op02a0 ----------
5439Op02a0:
5440  str r4,[r7,#0x50] ;@ Save prev PC + 2
5441  str r5,[r7,#0x5c] ;@ Save Cycles
5442
5443;@ EaCalc : Get '#$33333333' into r10:
5444  ldrh r2,[r4],#2 ;@ Fetch immediate value
5445  ldrh r3,[r4],#2
5446  orr r10,r3,r2,lsl #16
5447;@ EaRead : Read '#$33333333' (address in r10) into r10:
5448
5449;@ EaCalc : Get '-(a0)' into r11:
5450  and r2,r8,#0x000f
5451  orr r2,r2,#0x8 ;@ A0-7
5452  ldr r11,[r7,r2,lsl #2]
5453  sub r11,r11,#4 ;@ Pre-decrement An
5454  str r11,[r7,r2,lsl #2]
5455;@ EaRead : Read '-(a0)' (address in r11) into r0:
5456  str r4,[r7,#0x40] ;@ Save PC
5457  bic r0,r11,#0xff000000
5458  bl m68k_read32 ;@ Call read32(r0) handler
5459
5460;@ Do arithmetic:
5461  ands r1,r10,r0
5462  and r10,r1,#0x80000000 ;@ r10=N_flag
5463  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5464
5465;@ EaWrite: Write r1 into '-(a0)' (address in r11):
5466  bic r0,r11,#0xff000000
5467  bl m68k_write32 ;@ Call write32(r0,r1) handler
5468
5469  ldr r5,[r7,#0x5c] ;@ Load Cycles
5470  ldrh r8,[r4],#2 ;@ Fetch next opcode
5471  subs r5,r5,#30 ;@ Subtract cycles
5472  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5473  b CycloneEnd
5474
5475;@ ---------- [02a8] andi.l #$33333333, ($3333,a0) uses Op02a8 ----------
5476Op02a8:
5477  str r4,[r7,#0x50] ;@ Save prev PC + 2
5478  str r5,[r7,#0x5c] ;@ Save Cycles
5479
5480;@ EaCalc : Get '#$33333333' into r10:
5481  ldrh r2,[r4],#2 ;@ Fetch immediate value
5482  ldrh r3,[r4],#2
5483  orr r10,r3,r2,lsl #16
5484;@ EaRead : Read '#$33333333' (address in r10) into r10:
5485
5486;@ EaCalc : Get '($3333,a0)' into r11:
5487  ldrsh r0,[r4],#2 ;@ Fetch offset
5488  and r2,r8,#0x000f
5489  ldr r2,[r7,r2,lsl #2]
5490  add r11,r0,r2 ;@ Add on offset
5491;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
5492  str r4,[r7,#0x40] ;@ Save PC
5493  bic r0,r11,#0xff000000
5494  bl m68k_read32 ;@ Call read32(r0) handler
5495
5496;@ Do arithmetic:
5497  ands r1,r10,r0
5498  and r10,r1,#0x80000000 ;@ r10=N_flag
5499  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5500
5501;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
5502  bic r0,r11,#0xff000000
5503  bl m68k_write32 ;@ Call write32(r0,r1) handler
5504
5505  ldr r5,[r7,#0x5c] ;@ Load Cycles
5506  ldrh r8,[r4],#2 ;@ Fetch next opcode
5507  subs r5,r5,#32 ;@ Subtract cycles
5508  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5509  b CycloneEnd
5510
5511;@ ---------- [02b0] andi.l #$33333333, ($33,a0,d3.w*2) uses Op02b0 ----------
5512Op02b0:
5513  str r4,[r7,#0x50] ;@ Save prev PC + 2
5514  str r5,[r7,#0x5c] ;@ Save Cycles
5515
5516;@ EaCalc : Get '#$33333333' into r10:
5517  ldrh r2,[r4],#2 ;@ Fetch immediate value
5518  ldrh r3,[r4],#2
5519  orr r10,r3,r2,lsl #16
5520;@ EaRead : Read '#$33333333' (address in r10) into r10:
5521
5522;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
5523;@ Get extension word into r3:
5524  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
5525  mov r2,r3,lsr #10
5526  tst r3,#0x0800 ;@ Is Rn Word or Long
5527  and r2,r2,#0x3c ;@ r2=Index of Rn
5528  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
5529  ldrne   r2,[r7,r2] ;@ r2=Rn.l
5530  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
5531  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
5532  and r2,r8,#0x000f
5533  orr r2,r2,#0x8 ;@ A0-7
5534  ldr r2,[r7,r2,lsl #2]
5535  add r11,r2,r3 ;@ r11=Disp+An+Rn
5536;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
5537  str r4,[r7,#0x40] ;@ Save PC
5538  bic r0,r11,#0xff000000
5539  bl m68k_read32 ;@ Call read32(r0) handler
5540
5541;@ Do arithmetic:
5542  ands r1,r10,r0
5543  and r10,r1,#0x80000000 ;@ r10=N_flag
5544  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5545
5546;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
5547  bic r0,r11,#0xff000000
5548  bl m68k_write32 ;@ Call write32(r0,r1) handler
5549
5550  ldr r5,[r7,#0x5c] ;@ Load Cycles
5551  ldrh r8,[r4],#2 ;@ Fetch next opcode
5552  subs r5,r5,#34 ;@ Subtract cycles
5553  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5554  b CycloneEnd
5555
5556;@ ---------- [02b8] andi.l #$33333333, $3333.w uses Op02b8 ----------
5557Op02b8:
5558  str r4,[r7,#0x50] ;@ Save prev PC + 2
5559  str r5,[r7,#0x5c] ;@ Save Cycles
5560
5561;@ EaCalc : Get '#$33333333' into r10:
5562  ldrh r2,[r4],#2 ;@ Fetch immediate value
5563  ldrh r3,[r4],#2
5564  orr r10,r3,r2,lsl #16
5565;@ EaRead : Read '#$33333333' (address in r10) into r10:
5566
5567;@ EaCalc : Get '$3333.w' into r11:
5568  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
5569;@ EaRead : Read '$3333.w' (address in r11) into r0:
5570  str r4,[r7,#0x40] ;@ Save PC
5571  bic r0,r11,#0xff000000
5572  bl m68k_read32 ;@ Call read32(r0) handler
5573
5574;@ Do arithmetic:
5575  ands r1,r10,r0
5576  and r10,r1,#0x80000000 ;@ r10=N_flag
5577  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5578
5579;@ EaWrite: Write r1 into '$3333.w' (address in r11):
5580  bic r0,r11,#0xff000000
5581  bl m68k_write32 ;@ Call write32(r0,r1) handler
5582
5583  ldr r5,[r7,#0x5c] ;@ Load Cycles
5584  ldrh r8,[r4],#2 ;@ Fetch next opcode
5585  subs r5,r5,#32 ;@ Subtract cycles
5586  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5587  b CycloneEnd
5588
5589;@ ---------- [02b9] andi.l #$33333333, $33333333.l uses Op02b9 ----------
5590Op02b9:
5591  str r4,[r7,#0x50] ;@ Save prev PC + 2
5592  str r5,[r7,#0x5c] ;@ Save Cycles
5593
5594;@ EaCalc : Get '#$33333333' into r10:
5595  ldrh r2,[r4],#2 ;@ Fetch immediate value
5596  ldrh r3,[r4],#2
5597  orr r10,r3,r2,lsl #16
5598;@ EaRead : Read '#$33333333' (address in r10) into r10:
5599
5600;@ EaCalc : Get '$33333333.l' into r11:
5601  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
5602  ldrh r0,[r4],#2
5603  orr r11,r0,r2,lsl #16
5604;@ EaRead : Read '$33333333.l' (address in r11) into r0:
5605  str r4,[r7,#0x40] ;@ Save PC
5606  bic r0,r11,#0xff000000
5607  bl m68k_read32 ;@ Call read32(r0) handler
5608
5609;@ Do arithmetic:
5610  ands r1,r10,r0
5611  and r10,r1,#0x80000000 ;@ r10=N_flag
5612  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5613
5614;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
5615  bic r0,r11,#0xff000000
5616  bl m68k_write32 ;@ Call write32(r0,r1) handler
5617
5618  ldr r5,[r7,#0x5c] ;@ Load Cycles
5619  ldrh r8,[r4],#2 ;@ Fetch next opcode
5620  subs r5,r5,#36 ;@ Subtract cycles
5621  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5622  b CycloneEnd
5623
5624;@ ---------- [0400] subi.b #$33, d0 uses Op0400 ----------
5625Op0400:
5626;@ EaCalc : Get '#$33' into r10:
5627  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5628;@ EaRead : Read '#$33' (address in r10) into r10:
5629
5630;@ EaCalc : Get register index into r11:
5631  and r11,r8,#0x000f
5632;@ EaRead : Read register[r11] into r0:
5633  ldr r0,[r7,r11,lsl #2]
5634
5635  mov r10,r10,asl #24
5636;@ Do arithmetic:
5637  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5638  mrs r10,cpsr ;@ r10=flags
5639  eor r10,r10,#0x20000000 ;@ Invert carry
5640  str r10,[r7,#0x4c] ;@ Save X bit
5641
5642;@ EaWrite: r1 into register[r11]:
5643  mov r1,r1,lsr #24
5644  strb r1,[r7,r11,lsl #2]
5645
5646  ldrh r8,[r4],#2 ;@ Fetch next opcode
5647  subs r5,r5,#8 ;@ Subtract cycles
5648  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5649  b CycloneEnd
5650
5651;@ ---------- [0410] subi.b #$33, (a0) uses Op0410 ----------
5652Op0410:
5653  str r4,[r7,#0x50] ;@ Save prev PC + 2
5654  str r5,[r7,#0x5c] ;@ Save Cycles
5655
5656;@ EaCalc : Get '#$33' into r10:
5657  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5658;@ EaRead : Read '#$33' (address in r10) into r10:
5659
5660;@ EaCalc : Get '(a0)' into r11:
5661  and r2,r8,#0x000f
5662  orr r2,r2,#0x8 ;@ A0-7
5663  ldr r11,[r7,r2,lsl #2]
5664;@ EaRead : Read '(a0)' (address in r11) into r0:
5665  str r4,[r7,#0x40] ;@ Save PC
5666  bic r0,r11,#0xff000000
5667  bl m68k_read8 ;@ Call read8(r0) handler
5668
5669  mov r10,r10,asl #24
5670;@ Do arithmetic:
5671  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5672  mrs r10,cpsr ;@ r10=flags
5673  eor r10,r10,#0x20000000 ;@ Invert carry
5674  str r10,[r7,#0x4c] ;@ Save X bit
5675
5676;@ EaWrite: Write r1 into '(a0)' (address in r11):
5677  mov r1,r1,lsr #24
5678  bic r0,r11,#0xff000000
5679  bl m68k_write8 ;@ Call write8(r0,r1) handler
5680
5681  ldr r5,[r7,#0x5c] ;@ Load Cycles
5682  ldrh r8,[r4],#2 ;@ Fetch next opcode
5683  subs r5,r5,#16 ;@ Subtract cycles
5684  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5685  b CycloneEnd
5686
5687;@ ---------- [0418] subi.b #$33, (a0)+ uses Op0418 ----------
5688Op0418:
5689  str r4,[r7,#0x50] ;@ Save prev PC + 2
5690  str r5,[r7,#0x5c] ;@ Save Cycles
5691
5692;@ EaCalc : Get '#$33' into r10:
5693  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5694;@ EaRead : Read '#$33' (address in r10) into r10:
5695
5696;@ EaCalc : Get '(a0)+' into r11:
5697  and r2,r8,#0x000f
5698  ldr r11,[r7,r2,lsl #2]
5699  add r3,r11,#1 ;@ Post-increment An
5700  str r3,[r7,r2,lsl #2]
5701;@ EaRead : Read '(a0)+' (address in r11) into r0:
5702  str r4,[r7,#0x40] ;@ Save PC
5703  bic r0,r11,#0xff000000
5704  bl m68k_read8 ;@ Call read8(r0) handler
5705
5706  mov r10,r10,asl #24
5707;@ Do arithmetic:
5708  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5709  mrs r10,cpsr ;@ r10=flags
5710  eor r10,r10,#0x20000000 ;@ Invert carry
5711  str r10,[r7,#0x4c] ;@ Save X bit
5712
5713;@ EaWrite: Write r1 into '(a0)+' (address in r11):
5714  mov r1,r1,lsr #24
5715  bic r0,r11,#0xff000000
5716  bl m68k_write8 ;@ Call write8(r0,r1) handler
5717
5718  ldr r5,[r7,#0x5c] ;@ Load Cycles
5719  ldrh r8,[r4],#2 ;@ Fetch next opcode
5720  subs r5,r5,#16 ;@ Subtract cycles
5721  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5722  b CycloneEnd
5723
5724;@ ---------- [041f] subi.b #$33, (a7)+ uses Op041f ----------
5725Op041f:
5726  str r4,[r7,#0x50] ;@ Save prev PC + 2
5727  str r5,[r7,#0x5c] ;@ Save Cycles
5728
5729;@ EaCalc : Get '#$33' into r10:
5730  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5731;@ EaRead : Read '#$33' (address in r10) into r10:
5732
5733;@ EaCalc : Get '(a7)+' into r11:
5734  ldr r11,[r7,#0x3c] ;@ A7
5735  add r3,r11,#2 ;@ Post-increment An
5736  str r3,[r7,#0x3c] ;@ A7
5737;@ EaRead : Read '(a7)+' (address in r11) into r0:
5738  str r4,[r7,#0x40] ;@ Save PC
5739  bic r0,r11,#0xff000000
5740  bl m68k_read8 ;@ Call read8(r0) handler
5741
5742  mov r10,r10,asl #24
5743;@ Do arithmetic:
5744  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5745  mrs r10,cpsr ;@ r10=flags
5746  eor r10,r10,#0x20000000 ;@ Invert carry
5747  str r10,[r7,#0x4c] ;@ Save X bit
5748
5749;@ EaWrite: Write r1 into '(a7)+' (address in r11):
5750  mov r1,r1,lsr #24
5751  bic r0,r11,#0xff000000
5752  bl m68k_write8 ;@ Call write8(r0,r1) handler
5753
5754  ldr r5,[r7,#0x5c] ;@ Load Cycles
5755  ldrh r8,[r4],#2 ;@ Fetch next opcode
5756  subs r5,r5,#16 ;@ Subtract cycles
5757  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5758  b CycloneEnd
5759
5760;@ ---------- [0420] subi.b #$33, -(a0) uses Op0420 ----------
5761Op0420:
5762  str r4,[r7,#0x50] ;@ Save prev PC + 2
5763  str r5,[r7,#0x5c] ;@ Save Cycles
5764
5765;@ EaCalc : Get '#$33' into r10:
5766  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5767;@ EaRead : Read '#$33' (address in r10) into r10:
5768
5769;@ EaCalc : Get '-(a0)' into r11:
5770  and r2,r8,#0x000f
5771  orr r2,r2,#0x8 ;@ A0-7
5772  ldr r11,[r7,r2,lsl #2]
5773  sub r11,r11,#1 ;@ Pre-decrement An
5774  str r11,[r7,r2,lsl #2]
5775;@ EaRead : Read '-(a0)' (address in r11) into r0:
5776  str r4,[r7,#0x40] ;@ Save PC
5777  bic r0,r11,#0xff000000
5778  bl m68k_read8 ;@ Call read8(r0) handler
5779
5780  mov r10,r10,asl #24
5781;@ Do arithmetic:
5782  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5783  mrs r10,cpsr ;@ r10=flags
5784  eor r10,r10,#0x20000000 ;@ Invert carry
5785  str r10,[r7,#0x4c] ;@ Save X bit
5786
5787;@ EaWrite: Write r1 into '-(a0)' (address in r11):
5788  mov r1,r1,lsr #24
5789  bic r0,r11,#0xff000000
5790  bl m68k_write8 ;@ Call write8(r0,r1) handler
5791
5792  ldr r5,[r7,#0x5c] ;@ Load Cycles
5793  ldrh r8,[r4],#2 ;@ Fetch next opcode
5794  subs r5,r5,#18 ;@ Subtract cycles
5795  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5796  b CycloneEnd
5797
5798;@ ---------- [0427] subi.b #$33, -(a7) uses Op0427 ----------
5799Op0427:
5800  str r4,[r7,#0x50] ;@ Save prev PC + 2
5801  str r5,[r7,#0x5c] ;@ Save Cycles
5802
5803;@ EaCalc : Get '#$33' into r10:
5804  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5805;@ EaRead : Read '#$33' (address in r10) into r10:
5806
5807;@ EaCalc : Get '-(a7)' into r11:
5808  ldr r11,[r7,#0x3c] ;@ A7
5809  sub r11,r11,#2 ;@ Pre-decrement An
5810  str r11,[r7,#0x3c] ;@ A7
5811;@ EaRead : Read '-(a7)' (address in r11) into r0:
5812  str r4,[r7,#0x40] ;@ Save PC
5813  bic r0,r11,#0xff000000
5814  bl m68k_read8 ;@ Call read8(r0) handler
5815
5816  mov r10,r10,asl #24
5817;@ Do arithmetic:
5818  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5819  mrs r10,cpsr ;@ r10=flags
5820  eor r10,r10,#0x20000000 ;@ Invert carry
5821  str r10,[r7,#0x4c] ;@ Save X bit
5822
5823;@ EaWrite: Write r1 into '-(a7)' (address in r11):
5824  mov r1,r1,lsr #24
5825  bic r0,r11,#0xff000000
5826  bl m68k_write8 ;@ Call write8(r0,r1) handler
5827
5828  ldr r5,[r7,#0x5c] ;@ Load Cycles
5829  ldrh r8,[r4],#2 ;@ Fetch next opcode
5830  subs r5,r5,#18 ;@ Subtract cycles
5831  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5832  b CycloneEnd
5833
5834;@ ---------- [0428] subi.b #$33, ($3333,a0) uses Op0428 ----------
5835Op0428:
5836  str r4,[r7,#0x50] ;@ Save prev PC + 2
5837  str r5,[r7,#0x5c] ;@ Save Cycles
5838
5839;@ EaCalc : Get '#$33' into r10:
5840  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5841;@ EaRead : Read '#$33' (address in r10) into r10:
5842
5843;@ EaCalc : Get '($3333,a0)' into r11:
5844  ldrsh r0,[r4],#2 ;@ Fetch offset
5845  and r2,r8,#0x000f
5846  ldr r2,[r7,r2,lsl #2]
5847  add r11,r0,r2 ;@ Add on offset
5848;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
5849  str r4,[r7,#0x40] ;@ Save PC
5850  bic r0,r11,#0xff000000
5851  bl m68k_read8 ;@ Call read8(r0) handler
5852
5853  mov r10,r10,asl #24
5854;@ Do arithmetic:
5855  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5856  mrs r10,cpsr ;@ r10=flags
5857  eor r10,r10,#0x20000000 ;@ Invert carry
5858  str r10,[r7,#0x4c] ;@ Save X bit
5859
5860;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
5861  mov r1,r1,lsr #24
5862  bic r0,r11,#0xff000000
5863  bl m68k_write8 ;@ Call write8(r0,r1) handler
5864
5865  ldr r5,[r7,#0x5c] ;@ Load Cycles
5866  ldrh r8,[r4],#2 ;@ Fetch next opcode
5867  subs r5,r5,#20 ;@ Subtract cycles
5868  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5869  b CycloneEnd
5870
5871;@ ---------- [0430] subi.b #$33, ($33,a0,d3.w*2) uses Op0430 ----------
5872Op0430:
5873  str r4,[r7,#0x50] ;@ Save prev PC + 2
5874  str r5,[r7,#0x5c] ;@ Save Cycles
5875
5876;@ EaCalc : Get '#$33' into r10:
5877  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5878;@ EaRead : Read '#$33' (address in r10) into r10:
5879
5880;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
5881;@ Get extension word into r3:
5882  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
5883  mov r2,r3,lsr #10
5884  tst r3,#0x0800 ;@ Is Rn Word or Long
5885  and r2,r2,#0x3c ;@ r2=Index of Rn
5886  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
5887  ldrne   r2,[r7,r2] ;@ r2=Rn.l
5888  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
5889  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
5890  and r2,r8,#0x000f
5891  orr r2,r2,#0x8 ;@ A0-7
5892  ldr r2,[r7,r2,lsl #2]
5893  add r11,r2,r3 ;@ r11=Disp+An+Rn
5894;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
5895  str r4,[r7,#0x40] ;@ Save PC
5896  bic r0,r11,#0xff000000
5897  bl m68k_read8 ;@ Call read8(r0) handler
5898
5899  mov r10,r10,asl #24
5900;@ Do arithmetic:
5901  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5902  mrs r10,cpsr ;@ r10=flags
5903  eor r10,r10,#0x20000000 ;@ Invert carry
5904  str r10,[r7,#0x4c] ;@ Save X bit
5905
5906;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
5907  mov r1,r1,lsr #24
5908  bic r0,r11,#0xff000000
5909  bl m68k_write8 ;@ Call write8(r0,r1) handler
5910
5911  ldr r5,[r7,#0x5c] ;@ Load Cycles
5912  ldrh r8,[r4],#2 ;@ Fetch next opcode
5913  subs r5,r5,#22 ;@ Subtract cycles
5914  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5915  b CycloneEnd
5916
5917;@ ---------- [0438] subi.b #$33, $3333.w uses Op0438 ----------
5918Op0438:
5919  str r4,[r7,#0x50] ;@ Save prev PC + 2
5920  str r5,[r7,#0x5c] ;@ Save Cycles
5921
5922;@ EaCalc : Get '#$33' into r10:
5923  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5924;@ EaRead : Read '#$33' (address in r10) into r10:
5925
5926;@ EaCalc : Get '$3333.w' into r11:
5927  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
5928;@ EaRead : Read '$3333.w' (address in r11) into r0:
5929  str r4,[r7,#0x40] ;@ Save PC
5930  bic r0,r11,#0xff000000
5931  bl m68k_read8 ;@ Call read8(r0) handler
5932
5933  mov r10,r10,asl #24
5934;@ Do arithmetic:
5935  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5936  mrs r10,cpsr ;@ r10=flags
5937  eor r10,r10,#0x20000000 ;@ Invert carry
5938  str r10,[r7,#0x4c] ;@ Save X bit
5939
5940;@ EaWrite: Write r1 into '$3333.w' (address in r11):
5941  mov r1,r1,lsr #24
5942  bic r0,r11,#0xff000000
5943  bl m68k_write8 ;@ Call write8(r0,r1) handler
5944
5945  ldr r5,[r7,#0x5c] ;@ Load Cycles
5946  ldrh r8,[r4],#2 ;@ Fetch next opcode
5947  subs r5,r5,#20 ;@ Subtract cycles
5948  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5949  b CycloneEnd
5950
5951;@ ---------- [0439] subi.b #$33, $33333333.l uses Op0439 ----------
5952Op0439:
5953  str r4,[r7,#0x50] ;@ Save prev PC + 2
5954  str r5,[r7,#0x5c] ;@ Save Cycles
5955
5956;@ EaCalc : Get '#$33' into r10:
5957  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5958;@ EaRead : Read '#$33' (address in r10) into r10:
5959
5960;@ EaCalc : Get '$33333333.l' into r11:
5961  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
5962  ldrh r0,[r4],#2
5963  orr r11,r0,r2,lsl #16
5964;@ EaRead : Read '$33333333.l' (address in r11) into r0:
5965  str r4,[r7,#0x40] ;@ Save PC
5966  bic r0,r11,#0xff000000
5967  bl m68k_read8 ;@ Call read8(r0) handler
5968
5969  mov r10,r10,asl #24
5970;@ Do arithmetic:
5971  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5972  mrs r10,cpsr ;@ r10=flags
5973  eor r10,r10,#0x20000000 ;@ Invert carry
5974  str r10,[r7,#0x4c] ;@ Save X bit
5975
5976;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
5977  mov r1,r1,lsr #24
5978  bic r0,r11,#0xff000000
5979  bl m68k_write8 ;@ Call write8(r0,r1) handler
5980
5981  ldr r5,[r7,#0x5c] ;@ Load Cycles
5982  ldrh r8,[r4],#2 ;@ Fetch next opcode
5983  subs r5,r5,#24 ;@ Subtract cycles
5984  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5985  b CycloneEnd
5986
5987;@ ---------- [0440] subi.w #$3333, d0 uses Op0440 ----------
5988Op0440:
5989;@ EaCalc : Get '#$3333' into r10:
5990  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5991;@ EaRead : Read '#$3333' (address in r10) into r10:
5992
5993;@ EaCalc : Get register index into r11:
5994  and r11,r8,#0x000f
5995  mov r11,r11,lsl #2
5996;@ EaRead : Read register[r11] into r0:
5997  ldr r0,[r7,r11]
5998
5999  mov r10,r10,asl #16
6000;@ Do arithmetic:
6001  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
6002  mrs r10,cpsr ;@ r10=flags
6003  eor r10,r10,#0x20000000 ;@ Invert carry
6004  str r10,[r7,#0x4c] ;@ Save X bit
6005
6006;@ EaWrite: r1 into register[r11]:
6007  mov r1,r1,lsr #16
6008  strh r1,[r7,r11]
6009
6010  ldrh r8,[r4],#2 ;@ Fetch next opcode
6011  subs r5,r5,#8 ;@ Subtract cycles
6012  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6013  b CycloneEnd
6014
6015;@ ---------- [0450] subi.w #$3333, (a0) uses Op0450 ----------
6016Op0450:
6017  str r4,[r7,#0x50] ;@ Save prev PC + 2
6018  str r5,[r7,#0x5c] ;@ Save Cycles
6019
6020;@ EaCalc : Get '#$3333' into r10:
6021  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6022;@ EaRead : Read '#$3333' (address in r10) into r10:
6023
6024;@ EaCalc : Get '(a0)' into r11:
6025  and r2,r8,#0x000f
6026  orr r2,r2,#0x8 ;@ A0-7
6027  ldr r11,[r7,r2,lsl #2]
6028;@ EaRead : Read '(a0)' (address in r11) into r0:
6029  str r4,[r7,#0x40] ;@ Save PC
6030  bic r0,r11,#0xff000000
6031  bl m68k_read16 ;@ Call read16(r0) handler
6032
6033  mov r10,r10,asl #16
6034;@ Do arithmetic:
6035  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
6036  mrs r10,cpsr ;@ r10=flags
6037  eor r10,r10,#0x20000000 ;@ Invert carry
6038  str r10,[r7,#0x4c] ;@ Save X bit
6039
6040;@ EaWrite: Write r1 into '(a0)' (address in r11):
6041  mov r1,r1,lsr #16
6042  bic r0,r11,#0xff000000
6043  bl m68k_write16 ;@ Call write16(r0,r1) handler
6044
6045  ldr r5,[r7,#0x5c] ;@ Load Cycles
6046  ldrh r8,[r4],#2 ;@ Fetch next opcode
6047  subs r5,r5,#16 ;@ Subtract cycles
6048  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6049  b CycloneEnd
6050
6051;@ ---------- [0458] subi.w #$3333, (a0)+ uses Op0458 ----------
6052Op0458:
6053  str r4,[r7,#0x50] ;@ Save prev PC + 2
6054  str r5,[r7,#0x5c] ;@ Save Cycles
6055
6056;@ EaCalc : Get '#$3333' into r10:
6057  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6058;@ EaRead : Read '#$3333' (address in r10) into r10:
6059
6060;@ EaCalc : Get '(a0)+' into r11:
6061  and r2,r8,#0x000f
6062  ldr r11,[r7,r2,lsl #2]
6063  add r3,r11,#2 ;@ Post-increment An
6064  str r3,[r7,r2,lsl #2]
6065;@ EaRead : Read '(a0)+' (address in r11) into r0:
6066  str r4,[r7,#0x40] ;@ Save PC
6067  bic r0,r11,#0xff000000
6068  bl m68k_read16 ;@ Call read16(r0) handler
6069
6070  mov r10,r10,asl #16
6071;@ Do arithmetic:
6072  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
6073  mrs r10,cpsr ;@ r10=flags
6074  eor r10,r10,#0x20000000 ;@ Invert carry
6075  str r10,[r7,#0x4c] ;@ Save X bit
6076
6077;@ EaWrite: Write r1 into '(a0)+' (address in r11):
6078  mov r1,r1,lsr #16
6079  bic r0,r11,#0xff000000
6080  bl m68k_write16 ;@ Call write16(r0,r1) handler
6081
6082  ldr r5,[r7,#0x5c] ;@ Load Cycles
6083  ldrh r8,[r4],#2 ;@ Fetch next opcode
6084  subs r5,r5,#16 ;@ Subtract cycles
6085  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6086  b CycloneEnd
6087
6088;@ ---------- [0460] subi.w #$3333, -(a0) uses Op0460 ----------
6089Op0460:
6090  str r4,[r7,#0x50] ;@ Save prev PC + 2
6091  str r5,[r7,#0x5c] ;@ Save Cycles
6092
6093;@ EaCalc : Get '#$3333' into r10:
6094  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6095;@ EaRead : Read '#$3333' (address in r10) into r10:
6096
6097;@ EaCalc : Get '-(a0)' into r11:
6098  and r2,r8,#0x000f
6099  orr r2,r2,#0x8 ;@ A0-7
6100  ldr r11,[r7,r2,lsl #2]
6101  sub r11,r11,#2 ;@ Pre-decrement An
6102  str r11,[r7,r2,lsl #2]
6103;@ EaRead : Read '-(a0)' (address in r11) into r0:
6104  str r4,[r7,#0x40] ;@ Save PC
6105  bic r0,r11,#0xff000000
6106  bl m68k_read16 ;@ Call read16(r0) handler
6107
6108  mov r10,r10,asl #16
6109;@ Do arithmetic:
6110  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
6111  mrs r10,cpsr ;@ r10=flags
6112  eor r10,r10,#0x20000000 ;@ Invert carry
6113  str r10,[r7,#0x4c] ;@ Save X bit
6114
6115;@ EaWrite: Write r1 into '-(a0)' (address in r11):
6116  mov r1,r1,lsr #16
6117  bic r0,r11,#0xff000000
6118  bl m68k_write16 ;@ Call write16(r0,r1) handler
6119
6120  ldr r5,[r7,#0x5c] ;@ Load Cycles
6121  ldrh r8,[r4],#2 ;@ Fetch next opcode
6122  subs r5,r5,#18 ;@ Subtract cycles
6123  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6124  b CycloneEnd
6125
6126;@ ---------- [0468] subi.w #$3333, ($3333,a0) uses Op0468 ----------
6127Op0468:
6128  str r4,[r7,#0x50] ;@ Save prev PC + 2
6129  str r5,[r7,#0x5c] ;@ Save Cycles
6130
6131;@ EaCalc : Get '#$3333' into r10:
6132  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6133;@ EaRead : Read '#$3333' (address in r10) into r10:
6134
6135;@ EaCalc : Get '($3333,a0)' into r11:
6136  ldrsh r0,[r4],#2 ;@ Fetch offset
6137  and r2,r8,#0x000f
6138  ldr r2,[r7,r2,lsl #2]
6139  add r11,r0,r2 ;@ Add on offset
6140;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
6141  str r4,[r7,#0x40] ;@ Save PC
6142  bic r0,r11,#0xff000000
6143  bl m68k_read16 ;@ Call read16(r0) handler
6144
6145  mov r10,r10,asl #16
6146;@ Do arithmetic:
6147  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
6148  mrs r10,cpsr ;@ r10=flags
6149  eor r10,r10,#0x20000000 ;@ Invert carry
6150  str r10,[r7,#0x4c] ;@ Save X bit
6151
6152;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
6153  mov r1,r1,lsr #16
6154  bic r0,r11,#0xff000000
6155  bl m68k_write16 ;@ Call write16(r0,r1) handler
6156
6157  ldr r5,[r7,#0x5c] ;@ Load Cycles
6158  ldrh r8,[r4],#2 ;@ Fetch next opcode
6159  subs r5,r5,#20 ;@ Subtract cycles
6160  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6161  b CycloneEnd
6162
6163;@ ---------- [0470] subi.w #$3333, ($33,a0,d3.w*2) uses Op0470 ----------
6164Op0470:
6165  str r4,[r7,#0x50] ;@ Save prev PC + 2
6166  str r5,[r7,#0x5c] ;@ Save Cycles
6167
6168;@ EaCalc : Get '#$3333' into r10:
6169  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6170;@ EaRead : Read '#$3333' (address in r10) into r10:
6171
6172;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
6173;@ Get extension word into r3:
6174  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
6175  mov r2,r3,lsr #10
6176  tst r3,#0x0800 ;@ Is Rn Word or Long
6177  and r2,r2,#0x3c ;@ r2=Index of Rn
6178  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
6179  ldrne   r2,[r7,r2] ;@ r2=Rn.l
6180  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
6181  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
6182  and r2,r8,#0x000f
6183  orr r2,r2,#0x8 ;@ A0-7
6184  ldr r2,[r7,r2,lsl #2]
6185  add r11,r2,r3 ;@ r11=Disp+An+Rn
6186;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
6187  str r4,[r7,#0x40] ;@ Save PC
6188  bic r0,r11,#0xff000000
6189  bl m68k_read16 ;@ Call read16(r0) handler
6190
6191  mov r10,r10,asl #16
6192;@ Do arithmetic:
6193  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
6194  mrs r10,cpsr ;@ r10=flags
6195  eor r10,r10,#0x20000000 ;@ Invert carry
6196  str r10,[r7,#0x4c] ;@ Save X bit
6197
6198;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
6199  mov r1,r1,lsr #16
6200  bic r0,r11,#0xff000000
6201  bl m68k_write16 ;@ Call write16(r0,r1) handler
6202
6203  ldr r5,[r7,#0x5c] ;@ Load Cycles
6204  ldrh r8,[r4],#2 ;@ Fetch next opcode
6205  subs r5,r5,#22 ;@ Subtract cycles
6206  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6207  b CycloneEnd
6208
6209;@ ---------- [0478] subi.w #$3333, $3333.w uses Op0478 ----------
6210Op0478:
6211  str r4,[r7,#0x50] ;@ Save prev PC + 2
6212  str r5,[r7,#0x5c] ;@ Save Cycles
6213
6214;@ EaCalc : Get '#$3333' into r10:
6215  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6216;@ EaRead : Read '#$3333' (address in r10) into r10:
6217
6218;@ EaCalc : Get '$3333.w' into r11:
6219  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
6220;@ EaRead : Read '$3333.w' (address in r11) into r0:
6221  str r4,[r7,#0x40] ;@ Save PC
6222  bic r0,r11,#0xff000000
6223  bl m68k_read16 ;@ Call read16(r0) handler
6224
6225  mov r10,r10,asl #16
6226;@ Do arithmetic:
6227  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
6228  mrs r10,cpsr ;@ r10=flags
6229  eor r10,r10,#0x20000000 ;@ Invert carry
6230  str r10,[r7,#0x4c] ;@ Save X bit
6231
6232;@ EaWrite: Write r1 into '$3333.w' (address in r11):
6233  mov r1,r1,lsr #16
6234  bic r0,r11,#0xff000000
6235  bl m68k_write16 ;@ Call write16(r0,r1) handler
6236
6237  ldr r5,[r7,#0x5c] ;@ Load Cycles
6238  ldrh r8,[r4],#2 ;@ Fetch next opcode
6239  subs r5,r5,#20 ;@ Subtract cycles
6240  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6241  b CycloneEnd
6242
6243;@ ---------- [0479] subi.w #$3333, $33333333.l uses Op0479 ----------
6244Op0479:
6245  str r4,[r7,#0x50] ;@ Save prev PC + 2
6246  str r5,[r7,#0x5c] ;@ Save Cycles
6247
6248;@ EaCalc : Get '#$3333' into r10:
6249  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6250;@ EaRead : Read '#$3333' (address in r10) into r10:
6251
6252;@ EaCalc : Get '$33333333.l' into r11:
6253  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
6254  ldrh r0,[r4],#2
6255  orr r11,r0,r2,lsl #16
6256;@ EaRead : Read '$33333333.l' (address in r11) into r0:
6257  str r4,[r7,#0x40] ;@ Save PC
6258  bic r0,r11,#0xff000000
6259  bl m68k_read16 ;@ Call read16(r0) handler
6260
6261  mov r10,r10,asl #16
6262;@ Do arithmetic:
6263  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
6264  mrs r10,cpsr ;@ r10=flags
6265  eor r10,r10,#0x20000000 ;@ Invert carry
6266  str r10,[r7,#0x4c] ;@ Save X bit
6267
6268;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
6269  mov r1,r1,lsr #16
6270  bic r0,r11,#0xff000000
6271  bl m68k_write16 ;@ Call write16(r0,r1) handler
6272
6273  ldr r5,[r7,#0x5c] ;@ Load Cycles
6274  ldrh r8,[r4],#2 ;@ Fetch next opcode
6275  subs r5,r5,#24 ;@ Subtract cycles
6276  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6277  b CycloneEnd
6278
6279;@ ---------- [0480] subi.l #$33333333, d0 uses Op0480 ----------
6280Op0480:
6281;@ EaCalc : Get '#$33333333' into r10:
6282  ldrh r2,[r4],#2 ;@ Fetch immediate value
6283  ldrh r3,[r4],#2
6284  orr r10,r3,r2,lsl #16
6285;@ EaRead : Read '#$33333333' (address in r10) into r10:
6286
6287;@ EaCalc : Get register index into r11:
6288  and r11,r8,#0x000f
6289;@ EaRead : Read register[r11] into r0:
6290  ldr r0,[r7,r11,lsl #2]
6291
6292;@ Do arithmetic:
6293  rsbs r1,r10,r0 ;@ Defines NZCV
6294  mrs r10,cpsr ;@ r10=flags
6295  eor r10,r10,#0x20000000 ;@ Invert carry
6296  str r10,[r7,#0x4c] ;@ Save X bit
6297
6298;@ EaWrite: r1 into register[r11]:
6299  str r1,[r7,r11,lsl #2]
6300
6301  ldrh r8,[r4],#2 ;@ Fetch next opcode
6302  subs r5,r5,#16 ;@ Subtract cycles
6303  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6304  b CycloneEnd
6305
6306;@ ---------- [0490] subi.l #$33333333, (a0) uses Op0490 ----------
6307Op0490:
6308  str r4,[r7,#0x50] ;@ Save prev PC + 2
6309  str r5,[r7,#0x5c] ;@ Save Cycles
6310
6311;@ EaCalc : Get '#$33333333' into r10:
6312  ldrh r2,[r4],#2 ;@ Fetch immediate value
6313  ldrh r3,[r4],#2
6314  orr r10,r3,r2,lsl #16
6315;@ EaRead : Read '#$33333333' (address in r10) into r10:
6316
6317;@ EaCalc : Get '(a0)' into r11:
6318  and r2,r8,#0x000f
6319  orr r2,r2,#0x8 ;@ A0-7
6320  ldr r11,[r7,r2,lsl #2]
6321;@ EaRead : Read '(a0)' (address in r11) into r0:
6322  str r4,[r7,#0x40] ;@ Save PC
6323  bic r0,r11,#0xff000000
6324  bl m68k_read32 ;@ Call read32(r0) handler
6325
6326;@ Do arithmetic:
6327  rsbs r1,r10,r0 ;@ Defines NZCV
6328  mrs r10,cpsr ;@ r10=flags
6329  eor r10,r10,#0x20000000 ;@ Invert carry
6330  str r10,[r7,#0x4c] ;@ Save X bit
6331
6332;@ EaWrite: Write r1 into '(a0)' (address in r11):
6333  bic r0,r11,#0xff000000
6334  bl m68k_write32 ;@ Call write32(r0,r1) handler
6335
6336  ldr r5,[r7,#0x5c] ;@ Load Cycles
6337  ldrh r8,[r4],#2 ;@ Fetch next opcode
6338  subs r5,r5,#28 ;@ Subtract cycles
6339  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6340  b CycloneEnd
6341
6342;@ ---------- [0498] subi.l #$33333333, (a0)+ uses Op0498 ----------
6343Op0498:
6344  str r4,[r7,#0x50] ;@ Save prev PC + 2
6345  str r5,[r7,#0x5c] ;@ Save Cycles
6346
6347;@ EaCalc : Get '#$33333333' into r10:
6348  ldrh r2,[r4],#2 ;@ Fetch immediate value
6349  ldrh r3,[r4],#2
6350  orr r10,r3,r2,lsl #16
6351;@ EaRead : Read '#$33333333' (address in r10) into r10:
6352
6353;@ EaCalc : Get '(a0)+' into r11:
6354  and r2,r8,#0x000f
6355  ldr r11,[r7,r2,lsl #2]
6356  add r3,r11,#4 ;@ Post-increment An
6357  str r3,[r7,r2,lsl #2]
6358;@ EaRead : Read '(a0)+' (address in r11) into r0:
6359  str r4,[r7,#0x40] ;@ Save PC
6360  bic r0,r11,#0xff000000
6361  bl m68k_read32 ;@ Call read32(r0) handler
6362
6363;@ Do arithmetic:
6364  rsbs r1,r10,r0 ;@ Defines NZCV
6365  mrs r10,cpsr ;@ r10=flags
6366  eor r10,r10,#0x20000000 ;@ Invert carry
6367  str r10,[r7,#0x4c] ;@ Save X bit
6368
6369;@ EaWrite: Write r1 into '(a0)+' (address in r11):
6370  bic r0,r11,#0xff000000
6371  bl m68k_write32 ;@ Call write32(r0,r1) handler
6372
6373  ldr r5,[r7,#0x5c] ;@ Load Cycles
6374  ldrh r8,[r4],#2 ;@ Fetch next opcode
6375  subs r5,r5,#28 ;@ Subtract cycles
6376  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6377  b CycloneEnd
6378
6379;@ ---------- [04a0] subi.l #$33333333, -(a0) uses Op04a0 ----------
6380Op04a0:
6381  str r4,[r7,#0x50] ;@ Save prev PC + 2
6382  str r5,[r7,#0x5c] ;@ Save Cycles
6383
6384;@ EaCalc : Get '#$33333333' into r10:
6385  ldrh r2,[r4],#2 ;@ Fetch immediate value
6386  ldrh r3,[r4],#2
6387  orr r10,r3,r2,lsl #16
6388;@ EaRead : Read '#$33333333' (address in r10) into r10:
6389
6390;@ EaCalc : Get '-(a0)' into r11:
6391  and r2,r8,#0x000f
6392  orr r2,r2,#0x8 ;@ A0-7
6393  ldr r11,[r7,r2,lsl #2]
6394  sub r11,r11,#4 ;@ Pre-decrement An
6395  str r11,[r7,r2,lsl #2]
6396;@ EaRead : Read '-(a0)' (address in r11) into r0:
6397  str r4,[r7,#0x40] ;@ Save PC
6398  bic r0,r11,#0xff000000
6399  bl m68k_read32 ;@ Call read32(r0) handler
6400
6401;@ Do arithmetic:
6402  rsbs r1,r10,r0 ;@ Defines NZCV
6403  mrs r10,cpsr ;@ r10=flags
6404  eor r10,r10,#0x20000000 ;@ Invert carry
6405  str r10,[r7,#0x4c] ;@ Save X bit
6406
6407;@ EaWrite: Write r1 into '-(a0)' (address in r11):
6408  bic r0,r11,#0xff000000
6409  bl m68k_write32 ;@ Call write32(r0,r1) handler
6410
6411  ldr r5,[r7,#0x5c] ;@ Load Cycles
6412  ldrh r8,[r4],#2 ;@ Fetch next opcode
6413  subs r5,r5,#30 ;@ Subtract cycles
6414  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6415  b CycloneEnd
6416
6417;@ ---------- [04a8] subi.l #$33333333, ($3333,a0) uses Op04a8 ----------
6418Op04a8:
6419  str r4,[r7,#0x50] ;@ Save prev PC + 2
6420  str r5,[r7,#0x5c] ;@ Save Cycles
6421
6422;@ EaCalc : Get '#$33333333' into r10:
6423  ldrh r2,[r4],#2 ;@ Fetch immediate value
6424  ldrh r3,[r4],#2
6425  orr r10,r3,r2,lsl #16
6426;@ EaRead : Read '#$33333333' (address in r10) into r10:
6427
6428;@ EaCalc : Get '($3333,a0)' into r11:
6429  ldrsh r0,[r4],#2 ;@ Fetch offset
6430  and r2,r8,#0x000f
6431  ldr r2,[r7,r2,lsl #2]
6432  add r11,r0,r2 ;@ Add on offset
6433;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
6434  str r4,[r7,#0x40] ;@ Save PC
6435  bic r0,r11,#0xff000000
6436  bl m68k_read32 ;@ Call read32(r0) handler
6437
6438;@ Do arithmetic:
6439  rsbs r1,r10,r0 ;@ Defines NZCV
6440  mrs r10,cpsr ;@ r10=flags
6441  eor r10,r10,#0x20000000 ;@ Invert carry
6442  str r10,[r7,#0x4c] ;@ Save X bit
6443
6444;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
6445  bic r0,r11,#0xff000000
6446  bl m68k_write32 ;@ Call write32(r0,r1) handler
6447
6448  ldr r5,[r7,#0x5c] ;@ Load Cycles
6449  ldrh r8,[r4],#2 ;@ Fetch next opcode
6450  subs r5,r5,#32 ;@ Subtract cycles
6451  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6452  b CycloneEnd
6453
6454;@ ---------- [04b0] subi.l #$33333333, ($33,a0,d3.w*2) uses Op04b0 ----------
6455Op04b0:
6456  str r4,[r7,#0x50] ;@ Save prev PC + 2
6457  str r5,[r7,#0x5c] ;@ Save Cycles
6458
6459;@ EaCalc : Get '#$33333333' into r10:
6460  ldrh r2,[r4],#2 ;@ Fetch immediate value
6461  ldrh r3,[r4],#2
6462  orr r10,r3,r2,lsl #16
6463;@ EaRead : Read '#$33333333' (address in r10) into r10:
6464
6465;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
6466;@ Get extension word into r3:
6467  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
6468  mov r2,r3,lsr #10
6469  tst r3,#0x0800 ;@ Is Rn Word or Long
6470  and r2,r2,#0x3c ;@ r2=Index of Rn
6471  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
6472  ldrne   r2,[r7,r2] ;@ r2=Rn.l
6473  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
6474  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
6475  and r2,r8,#0x000f
6476  orr r2,r2,#0x8 ;@ A0-7
6477  ldr r2,[r7,r2,lsl #2]
6478  add r11,r2,r3 ;@ r11=Disp+An+Rn
6479;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
6480  str r4,[r7,#0x40] ;@ Save PC
6481  bic r0,r11,#0xff000000
6482  bl m68k_read32 ;@ Call read32(r0) handler
6483
6484;@ Do arithmetic:
6485  rsbs r1,r10,r0 ;@ Defines NZCV
6486  mrs r10,cpsr ;@ r10=flags
6487  eor r10,r10,#0x20000000 ;@ Invert carry
6488  str r10,[r7,#0x4c] ;@ Save X bit
6489
6490;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
6491  bic r0,r11,#0xff000000
6492  bl m68k_write32 ;@ Call write32(r0,r1) handler
6493
6494  ldr r5,[r7,#0x5c] ;@ Load Cycles
6495  ldrh r8,[r4],#2 ;@ Fetch next opcode
6496  subs r5,r5,#34 ;@ Subtract cycles
6497  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6498  b CycloneEnd
6499
6500;@ ---------- [04b8] subi.l #$33333333, $3333.w uses Op04b8 ----------
6501Op04b8:
6502  str r4,[r7,#0x50] ;@ Save prev PC + 2
6503  str r5,[r7,#0x5c] ;@ Save Cycles
6504
6505;@ EaCalc : Get '#$33333333' into r10:
6506  ldrh r2,[r4],#2 ;@ Fetch immediate value
6507  ldrh r3,[r4],#2
6508  orr r10,r3,r2,lsl #16
6509;@ EaRead : Read '#$33333333' (address in r10) into r10:
6510
6511;@ EaCalc : Get '$3333.w' into r11:
6512  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
6513;@ EaRead : Read '$3333.w' (address in r11) into r0:
6514  str r4,[r7,#0x40] ;@ Save PC
6515  bic r0,r11,#0xff000000
6516  bl m68k_read32 ;@ Call read32(r0) handler
6517
6518;@ Do arithmetic:
6519  rsbs r1,r10,r0 ;@ Defines NZCV
6520  mrs r10,cpsr ;@ r10=flags
6521  eor r10,r10,#0x20000000 ;@ Invert carry
6522  str r10,[r7,#0x4c] ;@ Save X bit
6523
6524;@ EaWrite: Write r1 into '$3333.w' (address in r11):
6525  bic r0,r11,#0xff000000
6526  bl m68k_write32 ;@ Call write32(r0,r1) handler
6527
6528  ldr r5,[r7,#0x5c] ;@ Load Cycles
6529  ldrh r8,[r4],#2 ;@ Fetch next opcode
6530  subs r5,r5,#32 ;@ Subtract cycles
6531  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6532  b CycloneEnd
6533
6534;@ ---------- [04b9] subi.l #$33333333, $33333333.l uses Op04b9 ----------
6535Op04b9:
6536  str r4,[r7,#0x50] ;@ Save prev PC + 2
6537  str r5,[r7,#0x5c] ;@ Save Cycles
6538
6539;@ EaCalc : Get '#$33333333' into r10:
6540  ldrh r2,[r4],#2 ;@ Fetch immediate value
6541  ldrh r3,[r4],#2
6542  orr r10,r3,r2,lsl #16
6543;@ EaRead : Read '#$33333333' (address in r10) into r10:
6544
6545;@ EaCalc : Get '$33333333.l' into r11:
6546  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
6547  ldrh r0,[r4],#2
6548  orr r11,r0,r2,lsl #16
6549;@ EaRead : Read '$33333333.l' (address in r11) into r0:
6550  str r4,[r7,#0x40] ;@ Save PC
6551  bic r0,r11,#0xff000000
6552  bl m68k_read32 ;@ Call read32(r0) handler
6553
6554;@ Do arithmetic:
6555  rsbs r1,r10,r0 ;@ Defines NZCV
6556  mrs r10,cpsr ;@ r10=flags
6557  eor r10,r10,#0x20000000 ;@ Invert carry
6558  str r10,[r7,#0x4c] ;@ Save X bit
6559
6560;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
6561  bic r0,r11,#0xff000000
6562  bl m68k_write32 ;@ Call write32(r0,r1) handler
6563
6564  ldr r5,[r7,#0x5c] ;@ Load Cycles
6565  ldrh r8,[r4],#2 ;@ Fetch next opcode
6566  subs r5,r5,#36 ;@ Subtract cycles
6567  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6568  b CycloneEnd
6569
6570;@ ---------- [0600] addi.b #$33, d0 uses Op0600 ----------
6571Op0600:
6572;@ EaCalc : Get '#$33' into r10:
6573  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6574;@ EaRead : Read '#$33' (address in r10) into r10:
6575
6576;@ EaCalc : Get register index into r11:
6577  and r11,r8,#0x000f
6578;@ EaRead : Read register[r11] into r0:
6579  ldr r0,[r7,r11,lsl #2]
6580
6581  mov r10,r10,asl #24
6582;@ Do arithmetic:
6583  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6584  mrs r10,cpsr ;@ r10=flags
6585  str r10,[r7,#0x4c] ;@ Save X bit
6586
6587;@ EaWrite: r1 into register[r11]:
6588  mov r1,r1,lsr #24
6589  strb r1,[r7,r11,lsl #2]
6590
6591  ldrh r8,[r4],#2 ;@ Fetch next opcode
6592  subs r5,r5,#8 ;@ Subtract cycles
6593  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6594  b CycloneEnd
6595
6596;@ ---------- [0610] addi.b #$33, (a0) uses Op0610 ----------
6597Op0610:
6598  str r4,[r7,#0x50] ;@ Save prev PC + 2
6599  str r5,[r7,#0x5c] ;@ Save Cycles
6600
6601;@ EaCalc : Get '#$33' into r10:
6602  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6603;@ EaRead : Read '#$33' (address in r10) into r10:
6604
6605;@ EaCalc : Get '(a0)' into r11:
6606  and r2,r8,#0x000f
6607  orr r2,r2,#0x8 ;@ A0-7
6608  ldr r11,[r7,r2,lsl #2]
6609;@ EaRead : Read '(a0)' (address in r11) into r0:
6610  str r4,[r7,#0x40] ;@ Save PC
6611  bic r0,r11,#0xff000000
6612  bl m68k_read8 ;@ Call read8(r0) handler
6613
6614  mov r10,r10,asl #24
6615;@ Do arithmetic:
6616  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6617  mrs r10,cpsr ;@ r10=flags
6618  str r10,[r7,#0x4c] ;@ Save X bit
6619
6620;@ EaWrite: Write r1 into '(a0)' (address in r11):
6621  mov r1,r1,lsr #24
6622  bic r0,r11,#0xff000000
6623  bl m68k_write8 ;@ Call write8(r0,r1) handler
6624
6625  ldr r5,[r7,#0x5c] ;@ Load Cycles
6626  ldrh r8,[r4],#2 ;@ Fetch next opcode
6627  subs r5,r5,#16 ;@ Subtract cycles
6628  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6629  b CycloneEnd
6630
6631;@ ---------- [0618] addi.b #$33, (a0)+ uses Op0618 ----------
6632Op0618:
6633  str r4,[r7,#0x50] ;@ Save prev PC + 2
6634  str r5,[r7,#0x5c] ;@ Save Cycles
6635
6636;@ EaCalc : Get '#$33' into r10:
6637  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6638;@ EaRead : Read '#$33' (address in r10) into r10:
6639
6640;@ EaCalc : Get '(a0)+' into r11:
6641  and r2,r8,#0x000f
6642  ldr r11,[r7,r2,lsl #2]
6643  add r3,r11,#1 ;@ Post-increment An
6644  str r3,[r7,r2,lsl #2]
6645;@ EaRead : Read '(a0)+' (address in r11) into r0:
6646  str r4,[r7,#0x40] ;@ Save PC
6647  bic r0,r11,#0xff000000
6648  bl m68k_read8 ;@ Call read8(r0) handler
6649
6650  mov r10,r10,asl #24
6651;@ Do arithmetic:
6652  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6653  mrs r10,cpsr ;@ r10=flags
6654  str r10,[r7,#0x4c] ;@ Save X bit
6655
6656;@ EaWrite: Write r1 into '(a0)+' (address in r11):
6657  mov r1,r1,lsr #24
6658  bic r0,r11,#0xff000000
6659  bl m68k_write8 ;@ Call write8(r0,r1) handler
6660
6661  ldr r5,[r7,#0x5c] ;@ Load Cycles
6662  ldrh r8,[r4],#2 ;@ Fetch next opcode
6663  subs r5,r5,#16 ;@ Subtract cycles
6664  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6665  b CycloneEnd
6666
6667;@ ---------- [061f] addi.b #$33, (a7)+ uses Op061f ----------
6668Op061f:
6669  str r4,[r7,#0x50] ;@ Save prev PC + 2
6670  str r5,[r7,#0x5c] ;@ Save Cycles
6671
6672;@ EaCalc : Get '#$33' into r10:
6673  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6674;@ EaRead : Read '#$33' (address in r10) into r10:
6675
6676;@ EaCalc : Get '(a7)+' into r11:
6677  ldr r11,[r7,#0x3c] ;@ A7
6678  add r3,r11,#2 ;@ Post-increment An
6679  str r3,[r7,#0x3c] ;@ A7
6680;@ EaRead : Read '(a7)+' (address in r11) into r0:
6681  str r4,[r7,#0x40] ;@ Save PC
6682  bic r0,r11,#0xff000000
6683  bl m68k_read8 ;@ Call read8(r0) handler
6684
6685  mov r10,r10,asl #24
6686;@ Do arithmetic:
6687  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6688  mrs r10,cpsr ;@ r10=flags
6689  str r10,[r7,#0x4c] ;@ Save X bit
6690
6691;@ EaWrite: Write r1 into '(a7)+' (address in r11):
6692  mov r1,r1,lsr #24
6693  bic r0,r11,#0xff000000
6694  bl m68k_write8 ;@ Call write8(r0,r1) handler
6695
6696  ldr r5,[r7,#0x5c] ;@ Load Cycles
6697  ldrh r8,[r4],#2 ;@ Fetch next opcode
6698  subs r5,r5,#16 ;@ Subtract cycles
6699  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6700  b CycloneEnd
6701
6702;@ ---------- [0620] addi.b #$33, -(a0) uses Op0620 ----------
6703Op0620:
6704  str r4,[r7,#0x50] ;@ Save prev PC + 2
6705  str r5,[r7,#0x5c] ;@ Save Cycles
6706
6707;@ EaCalc : Get '#$33' into r10:
6708  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6709;@ EaRead : Read '#$33' (address in r10) into r10:
6710
6711;@ EaCalc : Get '-(a0)' into r11:
6712  and r2,r8,#0x000f
6713  orr r2,r2,#0x8 ;@ A0-7
6714  ldr r11,[r7,r2,lsl #2]
6715  sub r11,r11,#1 ;@ Pre-decrement An
6716  str r11,[r7,r2,lsl #2]
6717;@ EaRead : Read '-(a0)' (address in r11) into r0:
6718  str r4,[r7,#0x40] ;@ Save PC
6719  bic r0,r11,#0xff000000
6720  bl m68k_read8 ;@ Call read8(r0) handler
6721
6722  mov r10,r10,asl #24
6723;@ Do arithmetic:
6724  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6725  mrs r10,cpsr ;@ r10=flags
6726  str r10,[r7,#0x4c] ;@ Save X bit
6727
6728;@ EaWrite: Write r1 into '-(a0)' (address in r11):
6729  mov r1,r1,lsr #24
6730  bic r0,r11,#0xff000000
6731  bl m68k_write8 ;@ Call write8(r0,r1) handler
6732
6733  ldr r5,[r7,#0x5c] ;@ Load Cycles
6734  ldrh r8,[r4],#2 ;@ Fetch next opcode
6735  subs r5,r5,#18 ;@ Subtract cycles
6736  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6737  b CycloneEnd
6738
6739;@ ---------- [0627] addi.b #$33, -(a7) uses Op0627 ----------
6740Op0627:
6741  str r4,[r7,#0x50] ;@ Save prev PC + 2
6742  str r5,[r7,#0x5c] ;@ Save Cycles
6743
6744;@ EaCalc : Get '#$33' into r10:
6745  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6746;@ EaRead : Read '#$33' (address in r10) into r10:
6747
6748;@ EaCalc : Get '-(a7)' into r11:
6749  ldr r11,[r7,#0x3c] ;@ A7
6750  sub r11,r11,#2 ;@ Pre-decrement An
6751  str r11,[r7,#0x3c] ;@ A7
6752;@ EaRead : Read '-(a7)' (address in r11) into r0:
6753  str r4,[r7,#0x40] ;@ Save PC
6754  bic r0,r11,#0xff000000
6755  bl m68k_read8 ;@ Call read8(r0) handler
6756
6757  mov r10,r10,asl #24
6758;@ Do arithmetic:
6759  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6760  mrs r10,cpsr ;@ r10=flags
6761  str r10,[r7,#0x4c] ;@ Save X bit
6762
6763;@ EaWrite: Write r1 into '-(a7)' (address in r11):
6764  mov r1,r1,lsr #24
6765  bic r0,r11,#0xff000000
6766  bl m68k_write8 ;@ Call write8(r0,r1) handler
6767
6768  ldr r5,[r7,#0x5c] ;@ Load Cycles
6769  ldrh r8,[r4],#2 ;@ Fetch next opcode
6770  subs r5,r5,#18 ;@ Subtract cycles
6771  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6772  b CycloneEnd
6773
6774;@ ---------- [0628] addi.b #$33, ($3333,a0) uses Op0628 ----------
6775Op0628:
6776  str r4,[r7,#0x50] ;@ Save prev PC + 2
6777  str r5,[r7,#0x5c] ;@ Save Cycles
6778
6779;@ EaCalc : Get '#$33' into r10:
6780  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6781;@ EaRead : Read '#$33' (address in r10) into r10:
6782
6783;@ EaCalc : Get '($3333,a0)' into r11:
6784  ldrsh r0,[r4],#2 ;@ Fetch offset
6785  and r2,r8,#0x000f
6786  ldr r2,[r7,r2,lsl #2]
6787  add r11,r0,r2 ;@ Add on offset
6788;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
6789  str r4,[r7,#0x40] ;@ Save PC
6790  bic r0,r11,#0xff000000
6791  bl m68k_read8 ;@ Call read8(r0) handler
6792
6793  mov r10,r10,asl #24
6794;@ Do arithmetic:
6795  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6796  mrs r10,cpsr ;@ r10=flags
6797  str r10,[r7,#0x4c] ;@ Save X bit
6798
6799;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
6800  mov r1,r1,lsr #24
6801  bic r0,r11,#0xff000000
6802  bl m68k_write8 ;@ Call write8(r0,r1) handler
6803
6804  ldr r5,[r7,#0x5c] ;@ Load Cycles
6805  ldrh r8,[r4],#2 ;@ Fetch next opcode
6806  subs r5,r5,#20 ;@ Subtract cycles
6807  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6808  b CycloneEnd
6809
6810;@ ---------- [0630] addi.b #$33, ($33,a0,d3.w*2) uses Op0630 ----------
6811Op0630:
6812  str r4,[r7,#0x50] ;@ Save prev PC + 2
6813  str r5,[r7,#0x5c] ;@ Save Cycles
6814
6815;@ EaCalc : Get '#$33' into r10:
6816  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6817;@ EaRead : Read '#$33' (address in r10) into r10:
6818
6819;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
6820;@ Get extension word into r3:
6821  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
6822  mov r2,r3,lsr #10
6823  tst r3,#0x0800 ;@ Is Rn Word or Long
6824  and r2,r2,#0x3c ;@ r2=Index of Rn
6825  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
6826  ldrne   r2,[r7,r2] ;@ r2=Rn.l
6827  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
6828  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
6829  and r2,r8,#0x000f
6830  orr r2,r2,#0x8 ;@ A0-7
6831  ldr r2,[r7,r2,lsl #2]
6832  add r11,r2,r3 ;@ r11=Disp+An+Rn
6833;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
6834  str r4,[r7,#0x40] ;@ Save PC
6835  bic r0,r11,#0xff000000
6836  bl m68k_read8 ;@ Call read8(r0) handler
6837
6838  mov r10,r10,asl #24
6839;@ Do arithmetic:
6840  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6841  mrs r10,cpsr ;@ r10=flags
6842  str r10,[r7,#0x4c] ;@ Save X bit
6843
6844;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
6845  mov r1,r1,lsr #24
6846  bic r0,r11,#0xff000000
6847  bl m68k_write8 ;@ Call write8(r0,r1) handler
6848
6849  ldr r5,[r7,#0x5c] ;@ Load Cycles
6850  ldrh r8,[r4],#2 ;@ Fetch next opcode
6851  subs r5,r5,#22 ;@ Subtract cycles
6852  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6853  b CycloneEnd
6854
6855;@ ---------- [0638] addi.b #$33, $3333.w uses Op0638 ----------
6856Op0638:
6857  str r4,[r7,#0x50] ;@ Save prev PC + 2
6858  str r5,[r7,#0x5c] ;@ Save Cycles
6859
6860;@ EaCalc : Get '#$33' into r10:
6861  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6862;@ EaRead : Read '#$33' (address in r10) into r10:
6863
6864;@ EaCalc : Get '$3333.w' into r11:
6865  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
6866;@ EaRead : Read '$3333.w' (address in r11) into r0:
6867  str r4,[r7,#0x40] ;@ Save PC
6868  bic r0,r11,#0xff000000
6869  bl m68k_read8 ;@ Call read8(r0) handler
6870
6871  mov r10,r10,asl #24
6872;@ Do arithmetic:
6873  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6874  mrs r10,cpsr ;@ r10=flags
6875  str r10,[r7,#0x4c] ;@ Save X bit
6876
6877;@ EaWrite: Write r1 into '$3333.w' (address in r11):
6878  mov r1,r1,lsr #24
6879  bic r0,r11,#0xff000000
6880  bl m68k_write8 ;@ Call write8(r0,r1) handler
6881
6882  ldr r5,[r7,#0x5c] ;@ Load Cycles
6883  ldrh r8,[r4],#2 ;@ Fetch next opcode
6884  subs r5,r5,#20 ;@ Subtract cycles
6885  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6886  b CycloneEnd
6887
6888;@ ---------- [0639] addi.b #$33, $33333333.l uses Op0639 ----------
6889Op0639:
6890  str r4,[r7,#0x50] ;@ Save prev PC + 2
6891  str r5,[r7,#0x5c] ;@ Save Cycles
6892
6893;@ EaCalc : Get '#$33' into r10:
6894  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6895;@ EaRead : Read '#$33' (address in r10) into r10:
6896
6897;@ EaCalc : Get '$33333333.l' into r11:
6898  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
6899  ldrh r0,[r4],#2
6900  orr r11,r0,r2,lsl #16
6901;@ EaRead : Read '$33333333.l' (address in r11) into r0:
6902  str r4,[r7,#0x40] ;@ Save PC
6903  bic r0,r11,#0xff000000
6904  bl m68k_read8 ;@ Call read8(r0) handler
6905
6906  mov r10,r10,asl #24
6907;@ Do arithmetic:
6908  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6909  mrs r10,cpsr ;@ r10=flags
6910  str r10,[r7,#0x4c] ;@ Save X bit
6911
6912;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
6913  mov r1,r1,lsr #24
6914  bic r0,r11,#0xff000000
6915  bl m68k_write8 ;@ Call write8(r0,r1) handler
6916
6917  ldr r5,[r7,#0x5c] ;@ Load Cycles
6918  ldrh r8,[r4],#2 ;@ Fetch next opcode
6919  subs r5,r5,#24 ;@ Subtract cycles
6920  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6921  b CycloneEnd
6922
6923;@ ---------- [0650] addi.w #$3333, (a0) uses Op0650 ----------
6924Op0650:
6925  str r4,[r7,#0x50] ;@ Save prev PC + 2
6926  str r5,[r7,#0x5c] ;@ Save Cycles
6927
6928;@ EaCalc : Get '#$3333' into r10:
6929  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6930;@ EaRead : Read '#$3333' (address in r10) into r10:
6931
6932;@ EaCalc : Get '(a0)' into r11:
6933  and r2,r8,#0x000f
6934  orr r2,r2,#0x8 ;@ A0-7
6935  ldr r11,[r7,r2,lsl #2]
6936;@ EaRead : Read '(a0)' (address in r11) into r0:
6937  str r4,[r7,#0x40] ;@ Save PC
6938  bic r0,r11,#0xff000000
6939  bl m68k_read16 ;@ Call read16(r0) handler
6940
6941  mov r10,r10,asl #16
6942;@ Do arithmetic:
6943  adds r1,r10,r0,asl #16 ;@ Defines NZCV
6944  mrs r10,cpsr ;@ r10=flags
6945  str r10,[r7,#0x4c] ;@ Save X bit
6946
6947;@ EaWrite: Write r1 into '(a0)' (address in r11):
6948  mov r1,r1,lsr #16
6949  bic r0,r11,#0xff000000
6950  bl m68k_write16 ;@ Call write16(r0,r1) handler
6951
6952  ldr r5,[r7,#0x5c] ;@ Load Cycles
6953  ldrh r8,[r4],#2 ;@ Fetch next opcode
6954  subs r5,r5,#16 ;@ Subtract cycles
6955  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6956  b CycloneEnd
6957
6958;@ ---------- [0658] addi.w #$3333, (a0)+ uses Op0658 ----------
6959Op0658:
6960  str r4,[r7,#0x50] ;@ Save prev PC + 2
6961  str r5,[r7,#0x5c] ;@ Save Cycles
6962
6963;@ EaCalc : Get '#$3333' into r10:
6964  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6965;@ EaRead : Read '#$3333' (address in r10) into r10:
6966
6967;@ EaCalc : Get '(a0)+' into r11:
6968  and r2,r8,#0x000f
6969  ldr r11,[r7,r2,lsl #2]
6970  add r3,r11,#2 ;@ Post-increment An
6971  str r3,[r7,r2,lsl #2]
6972;@ EaRead : Read '(a0)+' (address in r11) into r0:
6973  str r4,[r7,#0x40] ;@ Save PC
6974  bic r0,r11,#0xff000000
6975  bl m68k_read16 ;@ Call read16(r0) handler
6976
6977  mov r10,r10,asl #16
6978;@ Do arithmetic:
6979  adds r1,r10,r0,asl #16 ;@ Defines NZCV
6980  mrs r10,cpsr ;@ r10=flags
6981  str r10,[r7,#0x4c] ;@ Save X bit
6982
6983;@ EaWrite: Write r1 into '(a0)+' (address in r11):
6984  mov r1,r1,lsr #16
6985  bic r0,r11,#0xff000000
6986  bl m68k_write16 ;@ Call write16(r0,r1) handler
6987
6988  ldr r5,[r7,#0x5c] ;@ Load Cycles
6989  ldrh r8,[r4],#2 ;@ Fetch next opcode
6990  subs r5,r5,#16 ;@ Subtract cycles
6991  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6992  b CycloneEnd
6993
6994;@ ---------- [0660] addi.w #$3333, -(a0) uses Op0660 ----------
6995Op0660:
6996  str r4,[r7,#0x50] ;@ Save prev PC + 2
6997  str r5,[r7,#0x5c] ;@ Save Cycles
6998
6999;@ EaCalc : Get '#$3333' into r10:
7000  ldrsh r10,[r4],#2 ;@ Fetch immediate value
7001;@ EaRead : Read '#$3333' (address in r10) into r10:
7002
7003;@ EaCalc : Get '-(a0)' into r11:
7004  and r2,r8,#0x000f
7005  orr r2,r2,#0x8 ;@ A0-7
7006  ldr r11,[r7,r2,lsl #2]
7007  sub r11,r11,#2 ;@ Pre-decrement An
7008  str r11,[r7,r2,lsl #2]
7009;@ EaRead : Read '-(a0)' (address in r11) into r0:
7010  str r4,[r7,#0x40] ;@ Save PC
7011  bic r0,r11,#0xff000000
7012  bl m68k_read16 ;@ Call read16(r0) handler
7013
7014  mov r10,r10,asl #16
7015;@ Do arithmetic:
7016  adds r1,r10,r0,asl #16 ;@ Defines NZCV
7017  mrs r10,cpsr ;@ r10=flags
7018  str r10,[r7,#0x4c] ;@ Save X bit
7019
7020;@ EaWrite: Write r1 into '-(a0)' (address in r11):
7021  mov r1,r1,lsr #16
7022  bic r0,r11,#0xff000000
7023  bl m68k_write16 ;@ Call write16(r0,r1) handler
7024
7025  ldr r5,[r7,#0x5c] ;@ Load Cycles
7026  ldrh r8,[r4],#2 ;@ Fetch next opcode
7027  subs r5,r5,#18 ;@ Subtract cycles
7028  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7029  b CycloneEnd
7030
7031;@ ---------- [0668] addi.w #$3333, ($3333,a0) uses Op0668 ----------
7032Op0668:
7033  str r4,[r7,#0x50] ;@ Save prev PC + 2
7034  str r5,[r7,#0x5c] ;@ Save Cycles
7035
7036;@ EaCalc : Get '#$3333' into r10:
7037  ldrsh r10,[r4],#2 ;@ Fetch immediate value
7038;@ EaRead : Read '#$3333' (address in r10) into r10:
7039
7040;@ EaCalc : Get '($3333,a0)' into r11:
7041  ldrsh r0,[r4],#2 ;@ Fetch offset
7042  and r2,r8,#0x000f
7043  ldr r2,[r7,r2,lsl #2]
7044  add r11,r0,r2 ;@ Add on offset
7045;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
7046  str r4,[r7,#0x40] ;@ Save PC
7047  bic r0,r11,#0xff000000
7048  bl m68k_read16 ;@ Call read16(r0) handler
7049
7050  mov r10,r10,asl #16
7051;@ Do arithmetic:
7052  adds r1,r10,r0,asl #16 ;@ Defines NZCV
7053  mrs r10,cpsr ;@ r10=flags
7054  str r10,[r7,#0x4c] ;@ Save X bit
7055
7056;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
7057  mov r1,r1,lsr #16
7058  bic r0,r11,#0xff000000
7059  bl m68k_write16 ;@ Call write16(r0,r1) handler
7060
7061  ldr r5,[r7,#0x5c] ;@ Load Cycles
7062  ldrh r8,[r4],#2 ;@ Fetch next opcode
7063  subs r5,r5,#20 ;@ Subtract cycles
7064  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7065  b CycloneEnd
7066
7067;@ ---------- [0670] addi.w #$3333, ($33,a0,d3.w*2) uses Op0670 ----------
7068Op0670:
7069  str r4,[r7,#0x50] ;@ Save prev PC + 2
7070  str r5,[r7,#0x5c] ;@ Save Cycles
7071
7072;@ EaCalc : Get '#$3333' into r10:
7073  ldrsh r10,[r4],#2 ;@ Fetch immediate value
7074;@ EaRead : Read '#$3333' (address in r10) into r10:
7075
7076;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
7077;@ Get extension word into r3:
7078  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
7079  mov r2,r3,lsr #10
7080  tst r3,#0x0800 ;@ Is Rn Word or Long
7081  and r2,r2,#0x3c ;@ r2=Index of Rn
7082  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
7083  ldrne   r2,[r7,r2] ;@ r2=Rn.l
7084  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
7085  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
7086  and r2,r8,#0x000f
7087  orr r2,r2,#0x8 ;@ A0-7
7088  ldr r2,[r7,r2,lsl #2]
7089  add r11,r2,r3 ;@ r11=Disp+An+Rn
7090;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
7091  str r4,[r7,#0x40] ;@ Save PC
7092  bic r0,r11,#0xff000000
7093  bl m68k_read16 ;@ Call read16(r0) handler
7094
7095  mov r10,r10,asl #16
7096;@ Do arithmetic:
7097  adds r1,r10,r0,asl #16 ;@ Defines NZCV
7098  mrs r10,cpsr ;@ r10=flags
7099  str r10,[r7,#0x4c] ;@ Save X bit
7100
7101;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
7102  mov r1,r1,lsr #16
7103  bic r0,r11,#0xff000000
7104  bl m68k_write16 ;@ Call write16(r0,r1) handler
7105
7106  ldr r5,[r7,#0x5c] ;@ Load Cycles
7107  ldrh r8,[r4],#2 ;@ Fetch next opcode
7108  subs r5,r5,#22 ;@ Subtract cycles
7109  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7110  b CycloneEnd
7111
7112;@ ---------- [0678] addi.w #$3333, $3333.w uses Op0678 ----------
7113Op0678:
7114  str r4,[r7,#0x50] ;@ Save prev PC + 2
7115  str r5,[r7,#0x5c] ;@ Save Cycles
7116
7117;@ EaCalc : Get '#$3333' into r10:
7118  ldrsh r10,[r4],#2 ;@ Fetch immediate value
7119;@ EaRead : Read '#$3333' (address in r10) into r10:
7120
7121;@ EaCalc : Get '$3333.w' into r11:
7122  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
7123;@ EaRead : Read '$3333.w' (address in r11) into r0:
7124  str r4,[r7,#0x40] ;@ Save PC
7125  bic r0,r11,#0xff000000
7126  bl m68k_read16 ;@ Call read16(r0) handler
7127
7128  mov r10,r10,asl #16
7129;@ Do arithmetic:
7130  adds r1,r10,r0,asl #16 ;@ Defines NZCV
7131  mrs r10,cpsr ;@ r10=flags
7132  str r10,[r7,#0x4c] ;@ Save X bit
7133
7134;@ EaWrite: Write r1 into '$3333.w' (address in r11):
7135  mov r1,r1,lsr #16
7136  bic r0,r11,#0xff000000
7137  bl m68k_write16 ;@ Call write16(r0,r1) handler
7138
7139  ldr r5,[r7,#0x5c] ;@ Load Cycles
7140  ldrh r8,[r4],#2 ;@ Fetch next opcode
7141  subs r5,r5,#20 ;@ Subtract cycles
7142  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7143  b CycloneEnd
7144
7145;@ ---------- [0679] addi.w #$3333, $33333333.l uses Op0679 ----------
7146Op0679:
7147  str r4,[r7,#0x50] ;@ Save prev PC + 2
7148  str r5,[r7,#0x5c] ;@ Save Cycles
7149
7150;@ EaCalc : Get '#$3333' into r10:
7151  ldrsh r10,[r4],#2 ;@ Fetch immediate value
7152;@ EaRead : Read '#$3333' (address in r10) into r10:
7153
7154;@ EaCalc : Get '$33333333.l' into r11:
7155  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
7156  ldrh r0,[r4],#2
7157  orr r11,r0,r2,lsl #16
7158;@ EaRead : Read '$33333333.l' (address in r11) into r0:
7159  str r4,[r7,#0x40] ;@ Save PC
7160  bic r0,r11,#0xff000000
7161  bl m68k_read16 ;@ Call read16(r0) handler
7162
7163  mov r10,r10,asl #16
7164;@ Do arithmetic:
7165  adds r1,r10,r0,asl #16 ;@ Defines NZCV
7166  mrs r10,cpsr ;@ r10=flags
7167  str r10,[r7,#0x4c] ;@ Save X bit
7168
7169;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
7170  mov r1,r1,lsr #16
7171  bic r0,r11,#0xff000000
7172  bl m68k_write16 ;@ Call write16(r0,r1) handler
7173
7174  ldr r5,[r7,#0x5c] ;@ Load Cycles
7175  ldrh r8,[r4],#2 ;@ Fetch next opcode
7176  subs r5,r5,#24 ;@ Subtract cycles
7177  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7178  b CycloneEnd
7179
7180;@ ---------- [0680] addi.l #$33333333, d0 uses Op0680 ----------
7181Op0680:
7182;@ EaCalc : Get '#$33333333' into r10:
7183  ldrh r2,[r4],#2 ;@ Fetch immediate value
7184  ldrh r3,[r4],#2
7185  orr r10,r3,r2,lsl #16
7186;@ EaRead : Read '#$33333333' (address in r10) into r10:
7187
7188;@ EaCalc : Get register index into r11:
7189  and r11,r8,#0x000f
7190;@ EaRead : Read register[r11] into r0:
7191  ldr r0,[r7,r11,lsl #2]
7192
7193;@ Do arithmetic:
7194  adds r1,r10,r0 ;@ Defines NZCV
7195  mrs r10,cpsr ;@ r10=flags
7196  str r10,[r7,#0x4c] ;@ Save X bit
7197
7198;@ EaWrite: r1 into register[r11]:
7199  str r1,[r7,r11,lsl #2]
7200
7201  ldrh r8,[r4],#2 ;@ Fetch next opcode
7202  subs r5,r5,#16 ;@ Subtract cycles
7203  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7204  b CycloneEnd
7205
7206;@ ---------- [0690] addi.l #$33333333, (a0) uses Op0690 ----------
7207Op0690:
7208  str r4,[r7,#0x50] ;@ Save prev PC + 2
7209  str r5,[r7,#0x5c] ;@ Save Cycles
7210
7211;@ EaCalc : Get '#$33333333' into r10:
7212  ldrh r2,[r4],#2 ;@ Fetch immediate value
7213  ldrh r3,[r4],#2
7214  orr r10,r3,r2,lsl #16
7215;@ EaRead : Read '#$33333333' (address in r10) into r10:
7216
7217;@ EaCalc : Get '(a0)' into r11:
7218  and r2,r8,#0x000f
7219  orr r2,r2,#0x8 ;@ A0-7
7220  ldr r11,[r7,r2,lsl #2]
7221;@ EaRead : Read '(a0)' (address in r11) into r0:
7222  str r4,[r7,#0x40] ;@ Save PC
7223  bic r0,r11,#0xff000000
7224  bl m68k_read32 ;@ Call read32(r0) handler
7225
7226;@ Do arithmetic:
7227  adds r1,r10,r0 ;@ Defines NZCV
7228  mrs r10,cpsr ;@ r10=flags
7229  str r10,[r7,#0x4c] ;@ Save X bit
7230
7231;@ EaWrite: Write r1 into '(a0)' (address in r11):
7232  bic r0,r11,#0xff000000
7233  bl m68k_write32 ;@ Call write32(r0,r1) handler
7234
7235  ldr r5,[r7,#0x5c] ;@ Load Cycles
7236  ldrh r8,[r4],#2 ;@ Fetch next opcode
7237  subs r5,r5,#28 ;@ Subtract cycles
7238  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7239  b CycloneEnd
7240
7241;@ ---------- [0698] addi.l #$33333333, (a0)+ uses Op0698 ----------
7242Op0698:
7243  str r4,[r7,#0x50] ;@ Save prev PC + 2
7244  str r5,[r7,#0x5c] ;@ Save Cycles
7245
7246;@ EaCalc : Get '#$33333333' into r10:
7247  ldrh r2,[r4],#2 ;@ Fetch immediate value
7248  ldrh r3,[r4],#2
7249  orr r10,r3,r2,lsl #16
7250;@ EaRead : Read '#$33333333' (address in r10) into r10:
7251
7252;@ EaCalc : Get '(a0)+' into r11:
7253  and r2,r8,#0x000f
7254  ldr r11,[r7,r2,lsl #2]
7255  add r3,r11,#4 ;@ Post-increment An
7256  str r3,[r7,r2,lsl #2]
7257;@ EaRead : Read '(a0)+' (address in r11) into r0:
7258  str r4,[r7,#0x40] ;@ Save PC
7259  bic r0,r11,#0xff000000
7260  bl m68k_read32 ;@ Call read32(r0) handler
7261
7262;@ Do arithmetic:
7263  adds r1,r10,r0 ;@ Defines NZCV
7264  mrs r10,cpsr ;@ r10=flags
7265  str r10,[r7,#0x4c] ;@ Save X bit
7266
7267;@ EaWrite: Write r1 into '(a0)+' (address in r11):
7268  bic r0,r11,#0xff000000
7269  bl m68k_write32 ;@ Call write32(r0,r1) handler
7270
7271  ldr r5,[r7,#0x5c] ;@ Load Cycles
7272  ldrh r8,[r4],#2 ;@ Fetch next opcode
7273  subs r5,r5,#28 ;@ Subtract cycles
7274  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7275  b CycloneEnd
7276
7277;@ ---------- [06a0] addi.l #$33333333, -(a0) uses Op06a0 ----------
7278Op06a0:
7279  str r4,[r7,#0x50] ;@ Save prev PC + 2
7280  str r5,[r7,#0x5c] ;@ Save Cycles
7281
7282;@ EaCalc : Get '#$33333333' into r10:
7283  ldrh r2,[r4],#2 ;@ Fetch immediate value
7284  ldrh r3,[r4],#2
7285  orr r10,r3,r2,lsl #16
7286;@ EaRead : Read '#$33333333' (address in r10) into r10:
7287
7288;@ EaCalc : Get '-(a0)' into r11:
7289  and r2,r8,#0x000f
7290  orr r2,r2,#0x8 ;@ A0-7
7291  ldr r11,[r7,r2,lsl #2]
7292  sub r11,r11,#4 ;@ Pre-decrement An
7293  str r11,[r7,r2,lsl #2]
7294;@ EaRead : Read '-(a0)' (address in r11) into r0:
7295  str r4,[r7,#0x40] ;@ Save PC
7296  bic r0,r11,#0xff000000
7297  bl m68k_read32 ;@ Call read32(r0) handler
7298
7299;@ Do arithmetic:
7300  adds r1,r10,r0 ;@ Defines NZCV
7301  mrs r10,cpsr ;@ r10=flags
7302  str r10,[r7,#0x4c] ;@ Save X bit
7303
7304;@ EaWrite: Write r1 into '-(a0)' (address in r11):
7305  bic r0,r11,#0xff000000
7306  bl m68k_write32 ;@ Call write32(r0,r1) handler
7307
7308  ldr r5,[r7,#0x5c] ;@ Load Cycles
7309  ldrh r8,[r4],#2 ;@ Fetch next opcode
7310  subs r5,r5,#30 ;@ Subtract cycles
7311  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7312  b CycloneEnd
7313
7314;@ ---------- [06a8] addi.l #$33333333, ($3333,a0) uses Op06a8 ----------
7315Op06a8:
7316  str r4,[r7,#0x50] ;@ Save prev PC + 2
7317  str r5,[r7,#0x5c] ;@ Save Cycles
7318
7319;@ EaCalc : Get '#$33333333' into r10:
7320  ldrh r2,[r4],#2 ;@ Fetch immediate value
7321  ldrh r3,[r4],#2
7322  orr r10,r3,r2,lsl #16
7323;@ EaRead : Read '#$33333333' (address in r10) into r10:
7324
7325;@ EaCalc : Get '($3333,a0)' into r11:
7326  ldrsh r0,[r4],#2 ;@ Fetch offset
7327  and r2,r8,#0x000f
7328  ldr r2,[r7,r2,lsl #2]
7329  add r11,r0,r2 ;@ Add on offset
7330;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
7331  str r4,[r7,#0x40] ;@ Save PC
7332  bic r0,r11,#0xff000000
7333  bl m68k_read32 ;@ Call read32(r0) handler
7334
7335;@ Do arithmetic:
7336  adds r1,r10,r0 ;@ Defines NZCV
7337  mrs r10,cpsr ;@ r10=flags
7338  str r10,[r7,#0x4c] ;@ Save X bit
7339
7340;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
7341  bic r0,r11,#0xff000000
7342  bl m68k_write32 ;@ Call write32(r0,r1) handler
7343
7344  ldr r5,[r7,#0x5c] ;@ Load Cycles
7345  ldrh r8,[r4],#2 ;@ Fetch next opcode
7346  subs r5,r5,#32 ;@ Subtract cycles
7347  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7348  b CycloneEnd
7349
7350;@ ---------- [06b0] addi.l #$33333333, ($33,a0,d3.w*2) uses Op06b0 ----------
7351Op06b0:
7352  str r4,[r7,#0x50] ;@ Save prev PC + 2
7353  str r5,[r7,#0x5c] ;@ Save Cycles
7354
7355;@ EaCalc : Get '#$33333333' into r10:
7356  ldrh r2,[r4],#2 ;@ Fetch immediate value
7357  ldrh r3,[r4],#2
7358  orr r10,r3,r2,lsl #16
7359;@ EaRead : Read '#$33333333' (address in r10) into r10:
7360
7361;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
7362;@ Get extension word into r3:
7363  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
7364  mov r2,r3,lsr #10
7365  tst r3,#0x0800 ;@ Is Rn Word or Long
7366  and r2,r2,#0x3c ;@ r2=Index of Rn
7367  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
7368  ldrne   r2,[r7,r2] ;@ r2=Rn.l
7369  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
7370  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
7371  and r2,r8,#0x000f
7372  orr r2,r2,#0x8 ;@ A0-7
7373  ldr r2,[r7,r2,lsl #2]
7374  add r11,r2,r3 ;@ r11=Disp+An+Rn
7375;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
7376  str r4,[r7,#0x40] ;@ Save PC
7377  bic r0,r11,#0xff000000
7378  bl m68k_read32 ;@ Call read32(r0) handler
7379
7380;@ Do arithmetic:
7381  adds r1,r10,r0 ;@ Defines NZCV
7382  mrs r10,cpsr ;@ r10=flags
7383  str r10,[r7,#0x4c] ;@ Save X bit
7384
7385;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
7386  bic r0,r11,#0xff000000
7387  bl m68k_write32 ;@ Call write32(r0,r1) handler
7388
7389  ldr r5,[r7,#0x5c] ;@ Load Cycles
7390  ldrh r8,[r4],#2 ;@ Fetch next opcode
7391  subs r5,r5,#34 ;@ Subtract cycles
7392  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7393  b CycloneEnd
7394
7395;@ ---------- [06b8] addi.l #$33333333, $3333.w uses Op06b8 ----------
7396Op06b8:
7397  str r4,[r7,#0x50] ;@ Save prev PC + 2
7398  str r5,[r7,#0x5c] ;@ Save Cycles
7399
7400;@ EaCalc : Get '#$33333333' into r10:
7401  ldrh r2,[r4],#2 ;@ Fetch immediate value
7402  ldrh r3,[r4],#2
7403  orr r10,r3,r2,lsl #16
7404;@ EaRead : Read '#$33333333' (address in r10) into r10:
7405
7406;@ EaCalc : Get '$3333.w' into r11:
7407  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
7408;@ EaRead : Read '$3333.w' (address in r11) into r0:
7409  str r4,[r7,#0x40] ;@ Save PC
7410  bic r0,r11,#0xff000000
7411  bl m68k_read32 ;@ Call read32(r0) handler
7412
7413;@ Do arithmetic:
7414  adds r1,r10,r0 ;@ Defines NZCV
7415  mrs r10,cpsr ;@ r10=flags
7416  str r10,[r7,#0x4c] ;@ Save X bit
7417
7418;@ EaWrite: Write r1 into '$3333.w' (address in r11):
7419  bic r0,r11,#0xff000000
7420  bl m68k_write32 ;@ Call write32(r0,r1) handler
7421
7422  ldr r5,[r7,#0x5c] ;@ Load Cycles
7423  ldrh r8,[r4],#2 ;@ Fetch next opcode
7424  subs r5,r5,#32 ;@ Subtract cycles
7425  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7426  b CycloneEnd
7427
7428;@ ---------- [06b9] addi.l #$33333333, $33333333.l uses Op06b9 ----------
7429Op06b9:
7430  str r4,[r7,#0x50] ;@ Save prev PC + 2
7431  str r5,[r7,#0x5c] ;@ Save Cycles
7432
7433;@ EaCalc : Get '#$33333333' into r10:
7434  ldrh r2,[r4],#2 ;@ Fetch immediate value
7435  ldrh r3,[r4],#2
7436  orr r10,r3,r2,lsl #16
7437;@ EaRead : Read '#$33333333' (address in r10) into r10:
7438
7439;@ EaCalc : Get '$33333333.l' into r11:
7440  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
7441  ldrh r0,[r4],#2
7442  orr r11,r0,r2,lsl #16
7443;@ EaRead : Read '$33333333.l' (address in r11) into r0:
7444  str r4,[r7,#0x40] ;@ Save PC
7445  bic r0,r11,#0xff000000
7446  bl m68k_read32 ;@ Call read32(r0) handler
7447
7448;@ Do arithmetic:
7449  adds r1,r10,r0 ;@ Defines NZCV
7450  mrs r10,cpsr ;@ r10=flags
7451  str r10,[r7,#0x4c] ;@ Save X bit
7452
7453;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
7454  bic r0,r11,#0xff000000
7455  bl m68k_write32 ;@ Call write32(r0,r1) handler
7456
7457  ldr r5,[r7,#0x5c] ;@ Load Cycles
7458  ldrh r8,[r4],#2 ;@ Fetch next opcode
7459  subs r5,r5,#36 ;@ Subtract cycles
7460  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7461  b CycloneEnd
7462
7463;@ ---------- [0800] btst #$33, d0 uses Op0800 ----------
7464Op0800:
7465
7466;@ EaCalc : Get '#$33' into r0:
7467  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7468;@ EaRead : Read '#$33' (address in r0) into r0:
7469
7470  mov r11,#1
7471  bic r10,r10,#0x40000000 ;@ Blank Z flag
7472  and r0,r0,#0x1F ;@ reg - do mod 32
7473  mov r11,r11,lsl r0 ;@ Make bit mask
7474
7475;@ EaCalc : Get register index into r0:
7476  and r0,r8,#0x000f
7477;@ EaRead : Read register[r0] into r0:
7478  ldr r0,[r7,r0,lsl #2]
7479
7480  tst r0,r11 ;@ Do arithmetic
7481  orreq r10,r10,#0x40000000 ;@ Get Z flag
7482
7483  ldrh r8,[r4],#2 ;@ Fetch next opcode
7484  subs r5,r5,#10 ;@ Subtract cycles
7485  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7486  b CycloneEnd
7487
7488;@ ---------- [0810] btst #$33, (a0) uses Op0810 ----------
7489Op0810:
7490  str r4,[r7,#0x50] ;@ Save prev PC + 2
7491  str r5,[r7,#0x5c] ;@ Save Cycles
7492
7493
7494;@ EaCalc : Get '#$33' into r0:
7495  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7496;@ EaRead : Read '#$33' (address in r0) into r0:
7497
7498  mov r11,#1
7499  bic r10,r10,#0x40000000 ;@ Blank Z flag
7500  and r0,r0,#7    ;@ mem - do mod 8
7501  mov r11,r11,lsl r0 ;@ Make bit mask
7502
7503;@ EaCalc : Get '(a0)' into r0:
7504  and r2,r8,#0x000f
7505  orr r2,r2,#0x8 ;@ A0-7
7506  ldr r0,[r7,r2,lsl #2]
7507;@ EaRead : Read '(a0)' (address in r0) into r0:
7508  str r4,[r7,#0x40] ;@ Save PC
7509  bic r0,r0,#0xff000000
7510  bl m68k_read8 ;@ Call read8(r0) handler
7511
7512  tst r0,r11 ;@ Do arithmetic
7513  orreq r10,r10,#0x40000000 ;@ Get Z flag
7514
7515  ldr r5,[r7,#0x5c] ;@ Load Cycles
7516  ldrh r8,[r4],#2 ;@ Fetch next opcode
7517  subs r5,r5,#12 ;@ Subtract cycles
7518  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7519  b CycloneEnd
7520
7521;@ ---------- [0818] btst #$33, (a0)+ uses Op0818 ----------
7522Op0818:
7523  str r4,[r7,#0x50] ;@ Save prev PC + 2
7524  str r5,[r7,#0x5c] ;@ Save Cycles
7525
7526
7527;@ EaCalc : Get '#$33' into r0:
7528  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7529;@ EaRead : Read '#$33' (address in r0) into r0:
7530
7531  mov r11,#1
7532  bic r10,r10,#0x40000000 ;@ Blank Z flag
7533  and r0,r0,#7    ;@ mem - do mod 8
7534  mov r11,r11,lsl r0 ;@ Make bit mask
7535
7536;@ EaCalc : Get '(a0)+' into r0:
7537  and r2,r8,#0x000f
7538  ldr r0,[r7,r2,lsl #2]
7539  add r3,r0,#1 ;@ Post-increment An
7540  str r3,[r7,r2,lsl #2]
7541;@ EaRead : Read '(a0)+' (address in r0) into r0:
7542  str r4,[r7,#0x40] ;@ Save PC
7543  bic r0,r0,#0xff000000
7544  bl m68k_read8 ;@ Call read8(r0) handler
7545
7546  tst r0,r11 ;@ Do arithmetic
7547  orreq r10,r10,#0x40000000 ;@ Get Z flag
7548
7549  ldr r5,[r7,#0x5c] ;@ Load Cycles
7550  ldrh r8,[r4],#2 ;@ Fetch next opcode
7551  subs r5,r5,#12 ;@ Subtract cycles
7552  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7553  b CycloneEnd
7554
7555;@ ---------- [081f] btst #$33, (a7)+ uses Op081f ----------
7556Op081f:
7557  str r4,[r7,#0x50] ;@ Save prev PC + 2
7558  str r5,[r7,#0x5c] ;@ Save Cycles
7559
7560
7561;@ EaCalc : Get '#$33' into r0:
7562  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7563;@ EaRead : Read '#$33' (address in r0) into r0:
7564
7565  mov r11,#1
7566  bic r10,r10,#0x40000000 ;@ Blank Z flag
7567  and r0,r0,#7    ;@ mem - do mod 8
7568  mov r11,r11,lsl r0 ;@ Make bit mask
7569
7570;@ EaCalc : Get '(a7)+' into r0:
7571  ldr r0,[r7,#0x3c] ;@ A7
7572  add r3,r0,#2 ;@ Post-increment An
7573  str r3,[r7,#0x3c] ;@ A7
7574;@ EaRead : Read '(a7)+' (address in r0) into r0:
7575  str r4,[r7,#0x40] ;@ Save PC
7576  bic r0,r0,#0xff000000
7577  bl m68k_read8 ;@ Call read8(r0) handler
7578
7579  tst r0,r11 ;@ Do arithmetic
7580  orreq r10,r10,#0x40000000 ;@ Get Z flag
7581
7582  ldr r5,[r7,#0x5c] ;@ Load Cycles
7583  ldrh r8,[r4],#2 ;@ Fetch next opcode
7584  subs r5,r5,#12 ;@ Subtract cycles
7585  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7586  b CycloneEnd
7587
7588;@ ---------- [0820] btst #$33, -(a0) uses Op0820 ----------
7589Op0820:
7590  str r4,[r7,#0x50] ;@ Save prev PC + 2
7591  str r5,[r7,#0x5c] ;@ Save Cycles
7592
7593
7594;@ EaCalc : Get '#$33' into r0:
7595  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7596;@ EaRead : Read '#$33' (address in r0) into r0:
7597
7598  mov r11,#1
7599  bic r10,r10,#0x40000000 ;@ Blank Z flag
7600  and r0,r0,#7    ;@ mem - do mod 8
7601  mov r11,r11,lsl r0 ;@ Make bit mask
7602
7603;@ EaCalc : Get '-(a0)' into r0:
7604  and r2,r8,#0x000f
7605  orr r2,r2,#0x8 ;@ A0-7
7606  ldr r0,[r7,r2,lsl #2]
7607  sub r0,r0,#1 ;@ Pre-decrement An
7608  str r0,[r7,r2,lsl #2]
7609;@ EaRead : Read '-(a0)' (address in r0) into r0:
7610  str r4,[r7,#0x40] ;@ Save PC
7611  bic r0,r0,#0xff000000
7612  bl m68k_read8 ;@ Call read8(r0) handler
7613
7614  tst r0,r11 ;@ Do arithmetic
7615  orreq r10,r10,#0x40000000 ;@ Get Z flag
7616
7617  ldr r5,[r7,#0x5c] ;@ Load Cycles
7618  ldrh r8,[r4],#2 ;@ Fetch next opcode
7619  subs r5,r5,#14 ;@ Subtract cycles
7620  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7621  b CycloneEnd
7622
7623;@ ---------- [0827] btst #$33, -(a7) uses Op0827 ----------
7624Op0827:
7625  str r4,[r7,#0x50] ;@ Save prev PC + 2
7626  str r5,[r7,#0x5c] ;@ Save Cycles
7627
7628
7629;@ EaCalc : Get '#$33' into r0:
7630  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7631;@ EaRead : Read '#$33' (address in r0) into r0:
7632
7633  mov r11,#1
7634  bic r10,r10,#0x40000000 ;@ Blank Z flag
7635  and r0,r0,#7    ;@ mem - do mod 8
7636  mov r11,r11,lsl r0 ;@ Make bit mask
7637
7638;@ EaCalc : Get '-(a7)' into r0:
7639  ldr r0,[r7,#0x3c] ;@ A7
7640  sub r0,r0,#2 ;@ Pre-decrement An
7641  str r0,[r7,#0x3c] ;@ A7
7642;@ EaRead : Read '-(a7)' (address in r0) into r0:
7643  str r4,[r7,#0x40] ;@ Save PC
7644  bic r0,r0,#0xff000000
7645  bl m68k_read8 ;@ Call read8(r0) handler
7646
7647  tst r0,r11 ;@ Do arithmetic
7648  orreq r10,r10,#0x40000000 ;@ Get Z flag
7649
7650  ldr r5,[r7,#0x5c] ;@ Load Cycles
7651  ldrh r8,[r4],#2 ;@ Fetch next opcode
7652  subs r5,r5,#14 ;@ Subtract cycles
7653  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7654  b CycloneEnd
7655
7656;@ ---------- [0830] btst #$33, ($33,a0,d3.w*2) uses Op0830 ----------
7657Op0830:
7658  str r4,[r7,#0x50] ;@ Save prev PC + 2
7659  str r5,[r7,#0x5c] ;@ Save Cycles
7660
7661
7662;@ EaCalc : Get '#$33' into r0:
7663  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7664;@ EaRead : Read '#$33' (address in r0) into r0:
7665
7666  mov r11,#1
7667  bic r10,r10,#0x40000000 ;@ Blank Z flag
7668  and r0,r0,#7    ;@ mem - do mod 8
7669  mov r11,r11,lsl r0 ;@ Make bit mask
7670
7671;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
7672;@ Get extension word into r3:
7673  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
7674  mov r2,r3,lsr #10
7675  tst r3,#0x0800 ;@ Is Rn Word or Long
7676  and r2,r2,#0x3c ;@ r2=Index of Rn
7677  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
7678  ldrne   r2,[r7,r2] ;@ r2=Rn.l
7679  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
7680  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
7681  and r2,r8,#0x000f
7682  orr r2,r2,#0x8 ;@ A0-7
7683  ldr r2,[r7,r2,lsl #2]
7684  add r0,r2,r3 ;@ r0=Disp+An+Rn
7685;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
7686  str r4,[r7,#0x40] ;@ Save PC
7687  bic r0,r0,#0xff000000
7688  bl m68k_read8 ;@ Call read8(r0) handler
7689
7690  tst r0,r11 ;@ Do arithmetic
7691  orreq r10,r10,#0x40000000 ;@ Get Z flag
7692
7693  ldr r5,[r7,#0x5c] ;@ Load Cycles
7694  ldrh r8,[r4],#2 ;@ Fetch next opcode
7695  subs r5,r5,#18 ;@ Subtract cycles
7696  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7697  b CycloneEnd
7698
7699;@ ---------- [083a] btst #$33, ($3333,pc); =3337 uses Op083a ----------
7700Op083a:
7701  str r4,[r7,#0x50] ;@ Save prev PC + 2
7702  str r5,[r7,#0x5c] ;@ Save Cycles
7703
7704
7705;@ EaCalc : Get '#$33' into r0:
7706  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7707;@ EaRead : Read '#$33' (address in r0) into r0:
7708
7709  mov r11,#1
7710  bic r10,r10,#0x40000000 ;@ Blank Z flag
7711  and r0,r0,#7    ;@ mem - do mod 8
7712  mov r11,r11,lsl r0 ;@ Make bit mask
7713
7714;@ EaCalc : Get '($3333,pc)' into r0:
7715  ldr r0,[r7,#0x60] ;@ Get Memory base
7716  sub r0,r4,r0 ;@ Real PC
7717  ldrsh r2,[r4],#2 ;@ Fetch extension
7718  add r0,r2,r0 ;@ ($nn,PC)
7719;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
7720  str r4,[r7,#0x40] ;@ Save PC
7721  bic r0,r0,#0xff000000
7722  bl m68k_fetch8 ;@ Call fetch8(r0) handler
7723
7724  tst r0,r11 ;@ Do arithmetic
7725  orreq r10,r10,#0x40000000 ;@ Get Z flag
7726
7727  ldr r5,[r7,#0x5c] ;@ Load Cycles
7728  ldrh r8,[r4],#2 ;@ Fetch next opcode
7729  subs r5,r5,#16 ;@ Subtract cycles
7730  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7731  b CycloneEnd
7732
7733;@ ---------- [083b] btst #$33, ($33,pc,d3.w*2); =37 uses Op083b ----------
7734Op083b:
7735  str r4,[r7,#0x50] ;@ Save prev PC + 2
7736  str r5,[r7,#0x5c] ;@ Save Cycles
7737
7738
7739;@ EaCalc : Get '#$33' into r0:
7740  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7741;@ EaRead : Read '#$33' (address in r0) into r0:
7742
7743  mov r11,#1
7744  bic r10,r10,#0x40000000 ;@ Blank Z flag
7745  and r0,r0,#7    ;@ mem - do mod 8
7746  mov r11,r11,lsl r0 ;@ Make bit mask
7747
7748;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
7749  ldr r0,[r7,#0x60] ;@ Get Memory base
7750  ldrh r3,[r4] ;@ Get extension word
7751  sub r0,r4,r0 ;@ r0=PC
7752  add r4,r4,#2
7753  mov r2,r3,lsr #10
7754  tst r3,#0x0800 ;@ Is Rn Word or Long
7755  and r2,r2,#0x3c ;@ r2=Index of Rn
7756  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
7757  ldrne   r2,[r7,r2] ;@ r2=Rn.l
7758  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
7759  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
7760  add r0,r2,r0 ;@ r0=Disp+PC+Rn
7761;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
7762  str r4,[r7,#0x40] ;@ Save PC
7763  bic r0,r0,#0xff000000
7764  bl m68k_fetch8 ;@ Call fetch8(r0) handler
7765
7766  tst r0,r11 ;@ Do arithmetic
7767  orreq r10,r10,#0x40000000 ;@ Get Z flag
7768
7769  ldr r5,[r7,#0x5c] ;@ Load Cycles
7770  ldrh r8,[r4],#2 ;@ Fetch next opcode
7771  subs r5,r5,#18 ;@ Subtract cycles
7772  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7773  b CycloneEnd
7774
7775;@ ---------- [0840] bchg #$33, d0 uses Op0840 ----------
7776Op0840:
7777
7778;@ EaCalc : Get '#$33' into r0:
7779  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7780;@ EaRead : Read '#$33' (address in r0) into r0:
7781
7782  mov r11,#1
7783  bic r10,r10,#0x40000000 ;@ Blank Z flag
7784  and r0,r0,#0x1F ;@ reg - do mod 32
7785  mov r11,r11,lsl r0 ;@ Make bit mask
7786
7787;@ EaCalc : Get register index into r8:
7788  and r8,r8,#0x000f
7789;@ EaRead : Read register[r8] into r0:
7790  ldr r0,[r7,r8,lsl #2]
7791
7792  tst r0,r11 ;@ Do arithmetic
7793  orreq r10,r10,#0x40000000 ;@ Get Z flag
7794
7795  eor r1,r0,r11 ;@ Toggle bit
7796
7797;@ EaWrite: r1 into register[r8]:
7798  str r1,[r7,r8,lsl #2]
7799
7800  ldrh r8,[r4],#2 ;@ Fetch next opcode
7801  subs r5,r5,#12 ;@ Subtract cycles
7802  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7803  b CycloneEnd
7804
7805;@ ---------- [0850] bchg #$33, (a0) uses Op0850 ----------
7806Op0850:
7807  str r4,[r7,#0x50] ;@ Save prev PC + 2
7808  str r5,[r7,#0x5c] ;@ Save Cycles
7809
7810
7811;@ EaCalc : Get '#$33' into r0:
7812  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7813;@ EaRead : Read '#$33' (address in r0) into r0:
7814
7815  mov r11,#1
7816  bic r10,r10,#0x40000000 ;@ Blank Z flag
7817  and r0,r0,#7    ;@ mem - do mod 8
7818  mov r11,r11,lsl r0 ;@ Make bit mask
7819
7820;@ EaCalc : Get '(a0)' into r8:
7821  and r2,r8,#0x000f
7822  orr r2,r2,#0x8 ;@ A0-7
7823  ldr r8,[r7,r2,lsl #2]
7824;@ EaRead : Read '(a0)' (address in r8) into r0:
7825  str r4,[r7,#0x40] ;@ Save PC
7826  bic r0,r8,#0xff000000
7827  bl m68k_read8 ;@ Call read8(r0) handler
7828
7829  tst r0,r11 ;@ Do arithmetic
7830  orreq r10,r10,#0x40000000 ;@ Get Z flag
7831
7832  eor r1,r0,r11 ;@ Toggle bit
7833
7834;@ EaWrite: Write r1 into '(a0)' (address in r8):
7835  and r1,r1,#0xff
7836  bic r0,r8,#0xff000000
7837  bl m68k_write8 ;@ Call write8(r0,r1) handler
7838
7839  ldr r5,[r7,#0x5c] ;@ Load Cycles
7840  ldrh r8,[r4],#2 ;@ Fetch next opcode
7841  subs r5,r5,#16 ;@ Subtract cycles
7842  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7843  b CycloneEnd
7844
7845;@ ---------- [0858] bchg #$33, (a0)+ uses Op0858 ----------
7846Op0858:
7847  str r4,[r7,#0x50] ;@ Save prev PC + 2
7848  str r5,[r7,#0x5c] ;@ Save Cycles
7849
7850
7851;@ EaCalc : Get '#$33' into r0:
7852  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7853;@ EaRead : Read '#$33' (address in r0) into r0:
7854
7855  mov r11,#1
7856  bic r10,r10,#0x40000000 ;@ Blank Z flag
7857  and r0,r0,#7    ;@ mem - do mod 8
7858  mov r11,r11,lsl r0 ;@ Make bit mask
7859
7860;@ EaCalc : Get '(a0)+' into r8:
7861  and r2,r8,#0x000f
7862  ldr r8,[r7,r2,lsl #2]
7863  add r3,r8,#1 ;@ Post-increment An
7864  str r3,[r7,r2,lsl #2]
7865;@ EaRead : Read '(a0)+' (address in r8) into r0:
7866  str r4,[r7,#0x40] ;@ Save PC
7867  bic r0,r8,#0xff000000
7868  bl m68k_read8 ;@ Call read8(r0) handler
7869
7870  tst r0,r11 ;@ Do arithmetic
7871  orreq r10,r10,#0x40000000 ;@ Get Z flag
7872
7873  eor r1,r0,r11 ;@ Toggle bit
7874
7875;@ EaWrite: Write r1 into '(a0)+' (address in r8):
7876  and r1,r1,#0xff
7877  bic r0,r8,#0xff000000
7878  bl m68k_write8 ;@ Call write8(r0,r1) handler
7879
7880  ldr r5,[r7,#0x5c] ;@ Load Cycles
7881  ldrh r8,[r4],#2 ;@ Fetch next opcode
7882  subs r5,r5,#16 ;@ Subtract cycles
7883  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7884  b CycloneEnd
7885
7886;@ ---------- [085f] bchg #$33, (a7)+ uses Op085f ----------
7887Op085f:
7888  str r4,[r7,#0x50] ;@ Save prev PC + 2
7889  str r5,[r7,#0x5c] ;@ Save Cycles
7890
7891
7892;@ EaCalc : Get '#$33' into r0:
7893  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7894;@ EaRead : Read '#$33' (address in r0) into r0:
7895
7896  mov r11,#1
7897  bic r10,r10,#0x40000000 ;@ Blank Z flag
7898  and r0,r0,#7    ;@ mem - do mod 8
7899  mov r11,r11,lsl r0 ;@ Make bit mask
7900
7901;@ EaCalc : Get '(a7)+' into r8:
7902  ldr r8,[r7,#0x3c] ;@ A7
7903  add r3,r8,#2 ;@ Post-increment An
7904  str r3,[r7,#0x3c] ;@ A7
7905;@ EaRead : Read '(a7)+' (address in r8) into r0:
7906  str r4,[r7,#0x40] ;@ Save PC
7907  bic r0,r8,#0xff000000
7908  bl m68k_read8 ;@ Call read8(r0) handler
7909
7910  tst r0,r11 ;@ Do arithmetic
7911  orreq r10,r10,#0x40000000 ;@ Get Z flag
7912
7913  eor r1,r0,r11 ;@ Toggle bit
7914
7915;@ EaWrite: Write r1 into '(a7)+' (address in r8):
7916  and r1,r1,#0xff
7917  bic r0,r8,#0xff000000
7918  bl m68k_write8 ;@ Call write8(r0,r1) handler
7919
7920  ldr r5,[r7,#0x5c] ;@ Load Cycles
7921  ldrh r8,[r4],#2 ;@ Fetch next opcode
7922  subs r5,r5,#16 ;@ Subtract cycles
7923  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7924  b CycloneEnd
7925
7926;@ ---------- [0860] bchg #$33, -(a0) uses Op0860 ----------
7927Op0860:
7928  str r4,[r7,#0x50] ;@ Save prev PC + 2
7929  str r5,[r7,#0x5c] ;@ Save Cycles
7930
7931
7932;@ EaCalc : Get '#$33' into r0:
7933  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7934;@ EaRead : Read '#$33' (address in r0) into r0:
7935
7936  mov r11,#1
7937  bic r10,r10,#0x40000000 ;@ Blank Z flag
7938  and r0,r0,#7    ;@ mem - do mod 8
7939  mov r11,r11,lsl r0 ;@ Make bit mask
7940
7941;@ EaCalc : Get '-(a0)' into r8:
7942  and r2,r8,#0x000f
7943  orr r2,r2,#0x8 ;@ A0-7
7944  ldr r8,[r7,r2,lsl #2]
7945  sub r8,r8,#1 ;@ Pre-decrement An
7946  str r8,[r7,r2,lsl #2]
7947;@ EaRead : Read '-(a0)' (address in r8) into r0:
7948  str r4,[r7,#0x40] ;@ Save PC
7949  bic r0,r8,#0xff000000
7950  bl m68k_read8 ;@ Call read8(r0) handler
7951
7952  tst r0,r11 ;@ Do arithmetic
7953  orreq r10,r10,#0x40000000 ;@ Get Z flag
7954
7955  eor r1,r0,r11 ;@ Toggle bit
7956
7957;@ EaWrite: Write r1 into '-(a0)' (address in r8):
7958  and r1,r1,#0xff
7959  bic r0,r8,#0xff000000
7960  bl m68k_write8 ;@ Call write8(r0,r1) handler
7961
7962  ldr r5,[r7,#0x5c] ;@ Load Cycles
7963  ldrh r8,[r4],#2 ;@ Fetch next opcode
7964  subs r5,r5,#18 ;@ Subtract cycles
7965  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7966  b CycloneEnd
7967
7968;@ ---------- [0867] bchg #$33, -(a7) uses Op0867 ----------
7969Op0867:
7970  str r4,[r7,#0x50] ;@ Save prev PC + 2
7971  str r5,[r7,#0x5c] ;@ Save Cycles
7972
7973
7974;@ EaCalc : Get '#$33' into r0:
7975  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7976;@ EaRead : Read '#$33' (address in r0) into r0:
7977
7978  mov r11,#1
7979  bic r10,r10,#0x40000000 ;@ Blank Z flag
7980  and r0,r0,#7    ;@ mem - do mod 8
7981  mov r11,r11,lsl r0 ;@ Make bit mask
7982
7983;@ EaCalc : Get '-(a7)' into r8:
7984  ldr r8,[r7,#0x3c] ;@ A7
7985  sub r8,r8,#2 ;@ Pre-decrement An
7986  str r8,[r7,#0x3c] ;@ A7
7987;@ EaRead : Read '-(a7)' (address in r8) into r0:
7988  str r4,[r7,#0x40] ;@ Save PC
7989  bic r0,r8,#0xff000000
7990  bl m68k_read8 ;@ Call read8(r0) handler
7991
7992  tst r0,r11 ;@ Do arithmetic
7993  orreq r10,r10,#0x40000000 ;@ Get Z flag
7994
7995  eor r1,r0,r11 ;@ Toggle bit
7996
7997;@ EaWrite: Write r1 into '-(a7)' (address in r8):
7998  and r1,r1,#0xff
7999  bic r0,r8,#0xff000000
8000  bl m68k_write8 ;@ Call write8(r0,r1) handler
8001
8002  ldr r5,[r7,#0x5c] ;@ Load Cycles
8003  ldrh r8,[r4],#2 ;@ Fetch next opcode
8004  subs r5,r5,#18 ;@ Subtract cycles
8005  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8006  b CycloneEnd
8007
8008;@ ---------- [0868] bchg #$33, ($3333,a0) uses Op0868 ----------
8009Op0868:
8010  str r4,[r7,#0x50] ;@ Save prev PC + 2
8011  str r5,[r7,#0x5c] ;@ Save Cycles
8012
8013
8014;@ EaCalc : Get '#$33' into r0:
8015  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8016;@ EaRead : Read '#$33' (address in r0) into r0:
8017
8018  mov r11,#1
8019  bic r10,r10,#0x40000000 ;@ Blank Z flag
8020  and r0,r0,#7    ;@ mem - do mod 8
8021  mov r11,r11,lsl r0 ;@ Make bit mask
8022
8023;@ EaCalc : Get '($3333,a0)' into r8:
8024  ldrsh r0,[r4],#2 ;@ Fetch offset
8025  and r2,r8,#0x000f
8026  ldr r2,[r7,r2,lsl #2]
8027  add r8,r0,r2 ;@ Add on offset
8028;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
8029  str r4,[r7,#0x40] ;@ Save PC
8030  bic r0,r8,#0xff000000
8031  bl m68k_read8 ;@ Call read8(r0) handler
8032
8033  tst r0,r11 ;@ Do arithmetic
8034  orreq r10,r10,#0x40000000 ;@ Get Z flag
8035
8036  eor r1,r0,r11 ;@ Toggle bit
8037
8038;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
8039  and r1,r1,#0xff
8040  bic r0,r8,#0xff000000
8041  bl m68k_write8 ;@ Call write8(r0,r1) handler
8042
8043  ldr r5,[r7,#0x5c] ;@ Load Cycles
8044  ldrh r8,[r4],#2 ;@ Fetch next opcode
8045  subs r5,r5,#20 ;@ Subtract cycles
8046  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8047  b CycloneEnd
8048
8049;@ ---------- [0870] bchg #$33, ($33,a0,d3.w*2) uses Op0870 ----------
8050Op0870:
8051  str r4,[r7,#0x50] ;@ Save prev PC + 2
8052  str r5,[r7,#0x5c] ;@ Save Cycles
8053
8054
8055;@ EaCalc : Get '#$33' into r0:
8056  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8057;@ EaRead : Read '#$33' (address in r0) into r0:
8058
8059  mov r11,#1
8060  bic r10,r10,#0x40000000 ;@ Blank Z flag
8061  and r0,r0,#7    ;@ mem - do mod 8
8062  mov r11,r11,lsl r0 ;@ Make bit mask
8063
8064;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
8065;@ Get extension word into r3:
8066  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
8067  mov r2,r3,lsr #10
8068  tst r3,#0x0800 ;@ Is Rn Word or Long
8069  and r2,r2,#0x3c ;@ r2=Index of Rn
8070  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
8071  ldrne   r2,[r7,r2] ;@ r2=Rn.l
8072  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
8073  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
8074  and r2,r8,#0x000f
8075  orr r2,r2,#0x8 ;@ A0-7
8076  ldr r2,[r7,r2,lsl #2]
8077  add r8,r2,r3 ;@ r8=Disp+An+Rn
8078;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
8079  str r4,[r7,#0x40] ;@ Save PC
8080  bic r0,r8,#0xff000000
8081  bl m68k_read8 ;@ Call read8(r0) handler
8082
8083  tst r0,r11 ;@ Do arithmetic
8084  orreq r10,r10,#0x40000000 ;@ Get Z flag
8085
8086  eor r1,r0,r11 ;@ Toggle bit
8087
8088;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
8089  and r1,r1,#0xff
8090  bic r0,r8,#0xff000000
8091  bl m68k_write8 ;@ Call write8(r0,r1) handler
8092
8093  ldr r5,[r7,#0x5c] ;@ Load Cycles
8094  ldrh r8,[r4],#2 ;@ Fetch next opcode
8095  subs r5,r5,#22 ;@ Subtract cycles
8096  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8097  b CycloneEnd
8098
8099;@ ---------- [0878] bchg #$33, $3333.w uses Op0878 ----------
8100Op0878:
8101  str r4,[r7,#0x50] ;@ Save prev PC + 2
8102  str r5,[r7,#0x5c] ;@ Save Cycles
8103
8104
8105;@ EaCalc : Get '#$33' into r0:
8106  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8107;@ EaRead : Read '#$33' (address in r0) into r0:
8108
8109  mov r11,#1
8110  bic r10,r10,#0x40000000 ;@ Blank Z flag
8111  and r0,r0,#7    ;@ mem - do mod 8
8112  mov r11,r11,lsl r0 ;@ Make bit mask
8113
8114;@ EaCalc : Get '$3333.w' into r8:
8115  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
8116;@ EaRead : Read '$3333.w' (address in r8) into r0:
8117  str r4,[r7,#0x40] ;@ Save PC
8118  bic r0,r8,#0xff000000
8119  bl m68k_read8 ;@ Call read8(r0) handler
8120
8121  tst r0,r11 ;@ Do arithmetic
8122  orreq r10,r10,#0x40000000 ;@ Get Z flag
8123
8124  eor r1,r0,r11 ;@ Toggle bit
8125
8126;@ EaWrite: Write r1 into '$3333.w' (address in r8):
8127  and r1,r1,#0xff
8128  bic r0,r8,#0xff000000
8129  bl m68k_write8 ;@ Call write8(r0,r1) handler
8130
8131  ldr r5,[r7,#0x5c] ;@ Load Cycles
8132  ldrh r8,[r4],#2 ;@ Fetch next opcode
8133  subs r5,r5,#20 ;@ Subtract cycles
8134  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8135  b CycloneEnd
8136
8137;@ ---------- [0879] bchg #$33, $33333333.l uses Op0879 ----------
8138Op0879:
8139  str r4,[r7,#0x50] ;@ Save prev PC + 2
8140  str r5,[r7,#0x5c] ;@ Save Cycles
8141
8142
8143;@ EaCalc : Get '#$33' into r0:
8144  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8145;@ EaRead : Read '#$33' (address in r0) into r0:
8146
8147  mov r11,#1
8148  bic r10,r10,#0x40000000 ;@ Blank Z flag
8149  and r0,r0,#7    ;@ mem - do mod 8
8150  mov r11,r11,lsl r0 ;@ Make bit mask
8151
8152;@ EaCalc : Get '$33333333.l' into r8:
8153  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
8154  ldrh r0,[r4],#2
8155  orr r8,r0,r2,lsl #16
8156;@ EaRead : Read '$33333333.l' (address in r8) into r0:
8157  str r4,[r7,#0x40] ;@ Save PC
8158  bic r0,r8,#0xff000000
8159  bl m68k_read8 ;@ Call read8(r0) handler
8160
8161  tst r0,r11 ;@ Do arithmetic
8162  orreq r10,r10,#0x40000000 ;@ Get Z flag
8163
8164  eor r1,r0,r11 ;@ Toggle bit
8165
8166;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
8167  and r1,r1,#0xff
8168  bic r0,r8,#0xff000000
8169  bl m68k_write8 ;@ Call write8(r0,r1) handler
8170
8171  ldr r5,[r7,#0x5c] ;@ Load Cycles
8172  ldrh r8,[r4],#2 ;@ Fetch next opcode
8173  subs r5,r5,#24 ;@ Subtract cycles
8174  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8175  b CycloneEnd
8176
8177;@ ---------- [0880] bclr #$33, d0 uses Op0880 ----------
8178Op0880:
8179
8180;@ EaCalc : Get '#$33' into r0:
8181  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8182;@ EaRead : Read '#$33' (address in r0) into r0:
8183
8184  mov r11,#1
8185  bic r10,r10,#0x40000000 ;@ Blank Z flag
8186  and r0,r0,#0x1F ;@ reg - do mod 32
8187  mov r11,r11,lsl r0 ;@ Make bit mask
8188
8189;@ EaCalc : Get register index into r8:
8190  and r8,r8,#0x000f
8191;@ EaRead : Read register[r8] into r0:
8192  ldr r0,[r7,r8,lsl #2]
8193
8194  tst r0,r11 ;@ Do arithmetic
8195  orreq r10,r10,#0x40000000 ;@ Get Z flag
8196
8197  bic r1,r0,r11 ;@ Clear bit
8198
8199;@ EaWrite: r1 into register[r8]:
8200  str r1,[r7,r8,lsl #2]
8201
8202  ldrh r8,[r4],#2 ;@ Fetch next opcode
8203  subs r5,r5,#14 ;@ Subtract cycles
8204  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8205  b CycloneEnd
8206
8207;@ ---------- [0890] bclr #$33, (a0) uses Op0890 ----------
8208Op0890:
8209  str r4,[r7,#0x50] ;@ Save prev PC + 2
8210  str r5,[r7,#0x5c] ;@ Save Cycles
8211
8212
8213;@ EaCalc : Get '#$33' into r0:
8214  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8215;@ EaRead : Read '#$33' (address in r0) into r0:
8216
8217  mov r11,#1
8218  bic r10,r10,#0x40000000 ;@ Blank Z flag
8219  and r0,r0,#7    ;@ mem - do mod 8
8220  mov r11,r11,lsl r0 ;@ Make bit mask
8221
8222;@ EaCalc : Get '(a0)' into r8:
8223  and r2,r8,#0x000f
8224  orr r2,r2,#0x8 ;@ A0-7
8225  ldr r8,[r7,r2,lsl #2]
8226;@ EaRead : Read '(a0)' (address in r8) into r0:
8227  str r4,[r7,#0x40] ;@ Save PC
8228  bic r0,r8,#0xff000000
8229  bl m68k_read8 ;@ Call read8(r0) handler
8230
8231  tst r0,r11 ;@ Do arithmetic
8232  orreq r10,r10,#0x40000000 ;@ Get Z flag
8233
8234  bic r1,r0,r11 ;@ Clear bit
8235
8236;@ EaWrite: Write r1 into '(a0)' (address in r8):
8237  and r1,r1,#0xff
8238  bic r0,r8,#0xff000000
8239  bl m68k_write8 ;@ Call write8(r0,r1) handler
8240
8241  ldr r5,[r7,#0x5c] ;@ Load Cycles
8242  ldrh r8,[r4],#2 ;@ Fetch next opcode
8243  subs r5,r5,#16 ;@ Subtract cycles
8244  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8245  b CycloneEnd
8246
8247;@ ---------- [0898] bclr #$33, (a0)+ uses Op0898 ----------
8248Op0898:
8249  str r4,[r7,#0x50] ;@ Save prev PC + 2
8250  str r5,[r7,#0x5c] ;@ Save Cycles
8251
8252
8253;@ EaCalc : Get '#$33' into r0:
8254  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8255;@ EaRead : Read '#$33' (address in r0) into r0:
8256
8257  mov r11,#1
8258  bic r10,r10,#0x40000000 ;@ Blank Z flag
8259  and r0,r0,#7    ;@ mem - do mod 8
8260  mov r11,r11,lsl r0 ;@ Make bit mask
8261
8262;@ EaCalc : Get '(a0)+' into r8:
8263  and r2,r8,#0x000f
8264  ldr r8,[r7,r2,lsl #2]
8265  add r3,r8,#1 ;@ Post-increment An
8266  str r3,[r7,r2,lsl #2]
8267;@ EaRead : Read '(a0)+' (address in r8) into r0:
8268  str r4,[r7,#0x40] ;@ Save PC
8269  bic r0,r8,#0xff000000
8270  bl m68k_read8 ;@ Call read8(r0) handler
8271
8272  tst r0,r11 ;@ Do arithmetic
8273  orreq r10,r10,#0x40000000 ;@ Get Z flag
8274
8275  bic r1,r0,r11 ;@ Clear bit
8276
8277;@ EaWrite: Write r1 into '(a0)+' (address in r8):
8278  and r1,r1,#0xff
8279  bic r0,r8,#0xff000000
8280  bl m68k_write8 ;@ Call write8(r0,r1) handler
8281
8282  ldr r5,[r7,#0x5c] ;@ Load Cycles
8283  ldrh r8,[r4],#2 ;@ Fetch next opcode
8284  subs r5,r5,#16 ;@ Subtract cycles
8285  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8286  b CycloneEnd
8287
8288;@ ---------- [089f] bclr #$33, (a7)+ uses Op089f ----------
8289Op089f:
8290  str r4,[r7,#0x50] ;@ Save prev PC + 2
8291  str r5,[r7,#0x5c] ;@ Save Cycles
8292
8293
8294;@ EaCalc : Get '#$33' into r0:
8295  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8296;@ EaRead : Read '#$33' (address in r0) into r0:
8297
8298  mov r11,#1
8299  bic r10,r10,#0x40000000 ;@ Blank Z flag
8300  and r0,r0,#7    ;@ mem - do mod 8
8301  mov r11,r11,lsl r0 ;@ Make bit mask
8302
8303;@ EaCalc : Get '(a7)+' into r8:
8304  ldr r8,[r7,#0x3c] ;@ A7
8305  add r3,r8,#2 ;@ Post-increment An
8306  str r3,[r7,#0x3c] ;@ A7
8307;@ EaRead : Read '(a7)+' (address in r8) into r0:
8308  str r4,[r7,#0x40] ;@ Save PC
8309  bic r0,r8,#0xff000000
8310  bl m68k_read8 ;@ Call read8(r0) handler
8311
8312  tst r0,r11 ;@ Do arithmetic
8313  orreq r10,r10,#0x40000000 ;@ Get Z flag
8314
8315  bic r1,r0,r11 ;@ Clear bit
8316
8317;@ EaWrite: Write r1 into '(a7)+' (address in r8):
8318  and r1,r1,#0xff
8319  bic r0,r8,#0xff000000
8320  bl m68k_write8 ;@ Call write8(r0,r1) handler
8321
8322  ldr r5,[r7,#0x5c] ;@ Load Cycles
8323  ldrh r8,[r4],#2 ;@ Fetch next opcode
8324  subs r5,r5,#16 ;@ Subtract cycles
8325  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8326  b CycloneEnd
8327
8328;@ ---------- [08a0] bclr #$33, -(a0) uses Op08a0 ----------
8329Op08a0:
8330  str r4,[r7,#0x50] ;@ Save prev PC + 2
8331  str r5,[r7,#0x5c] ;@ Save Cycles
8332
8333
8334;@ EaCalc : Get '#$33' into r0:
8335  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8336;@ EaRead : Read '#$33' (address in r0) into r0:
8337
8338  mov r11,#1
8339  bic r10,r10,#0x40000000 ;@ Blank Z flag
8340  and r0,r0,#7    ;@ mem - do mod 8
8341  mov r11,r11,lsl r0 ;@ Make bit mask
8342
8343;@ EaCalc : Get '-(a0)' into r8:
8344  and r2,r8,#0x000f
8345  orr r2,r2,#0x8 ;@ A0-7
8346  ldr r8,[r7,r2,lsl #2]
8347  sub r8,r8,#1 ;@ Pre-decrement An
8348  str r8,[r7,r2,lsl #2]
8349;@ EaRead : Read '-(a0)' (address in r8) into r0:
8350  str r4,[r7,#0x40] ;@ Save PC
8351  bic r0,r8,#0xff000000
8352  bl m68k_read8 ;@ Call read8(r0) handler
8353
8354  tst r0,r11 ;@ Do arithmetic
8355  orreq r10,r10,#0x40000000 ;@ Get Z flag
8356
8357  bic r1,r0,r11 ;@ Clear bit
8358
8359;@ EaWrite: Write r1 into '-(a0)' (address in r8):
8360  and r1,r1,#0xff
8361  bic r0,r8,#0xff000000
8362  bl m68k_write8 ;@ Call write8(r0,r1) handler
8363
8364  ldr r5,[r7,#0x5c] ;@ Load Cycles
8365  ldrh r8,[r4],#2 ;@ Fetch next opcode
8366  subs r5,r5,#18 ;@ Subtract cycles
8367  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8368  b CycloneEnd
8369
8370;@ ---------- [08a7] bclr #$33, -(a7) uses Op08a7 ----------
8371Op08a7:
8372  str r4,[r7,#0x50] ;@ Save prev PC + 2
8373  str r5,[r7,#0x5c] ;@ Save Cycles
8374
8375
8376;@ EaCalc : Get '#$33' into r0:
8377  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8378;@ EaRead : Read '#$33' (address in r0) into r0:
8379
8380  mov r11,#1
8381  bic r10,r10,#0x40000000 ;@ Blank Z flag
8382  and r0,r0,#7    ;@ mem - do mod 8
8383  mov r11,r11,lsl r0 ;@ Make bit mask
8384
8385;@ EaCalc : Get '-(a7)' into r8:
8386  ldr r8,[r7,#0x3c] ;@ A7
8387  sub r8,r8,#2 ;@ Pre-decrement An
8388  str r8,[r7,#0x3c] ;@ A7
8389;@ EaRead : Read '-(a7)' (address in r8) into r0:
8390  str r4,[r7,#0x40] ;@ Save PC
8391  bic r0,r8,#0xff000000
8392  bl m68k_read8 ;@ Call read8(r0) handler
8393
8394  tst r0,r11 ;@ Do arithmetic
8395  orreq r10,r10,#0x40000000 ;@ Get Z flag
8396
8397  bic r1,r0,r11 ;@ Clear bit
8398
8399;@ EaWrite: Write r1 into '-(a7)' (address in r8):
8400  and r1,r1,#0xff
8401  bic r0,r8,#0xff000000
8402  bl m68k_write8 ;@ Call write8(r0,r1) handler
8403
8404  ldr r5,[r7,#0x5c] ;@ Load Cycles
8405  ldrh r8,[r4],#2 ;@ Fetch next opcode
8406  subs r5,r5,#18 ;@ Subtract cycles
8407  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8408  b CycloneEnd
8409
8410;@ ---------- [08a8] bclr #$33, ($3333,a0) uses Op08a8 ----------
8411Op08a8:
8412  str r4,[r7,#0x50] ;@ Save prev PC + 2
8413  str r5,[r7,#0x5c] ;@ Save Cycles
8414
8415
8416;@ EaCalc : Get '#$33' into r0:
8417  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8418;@ EaRead : Read '#$33' (address in r0) into r0:
8419
8420  mov r11,#1
8421  bic r10,r10,#0x40000000 ;@ Blank Z flag
8422  and r0,r0,#7    ;@ mem - do mod 8
8423  mov r11,r11,lsl r0 ;@ Make bit mask
8424
8425;@ EaCalc : Get '($3333,a0)' into r8:
8426  ldrsh r0,[r4],#2 ;@ Fetch offset
8427  and r2,r8,#0x000f
8428  ldr r2,[r7,r2,lsl #2]
8429  add r8,r0,r2 ;@ Add on offset
8430;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
8431  str r4,[r7,#0x40] ;@ Save PC
8432  bic r0,r8,#0xff000000
8433  bl m68k_read8 ;@ Call read8(r0) handler
8434
8435  tst r0,r11 ;@ Do arithmetic
8436  orreq r10,r10,#0x40000000 ;@ Get Z flag
8437
8438  bic r1,r0,r11 ;@ Clear bit
8439
8440;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
8441  and r1,r1,#0xff
8442  bic r0,r8,#0xff000000
8443  bl m68k_write8 ;@ Call write8(r0,r1) handler
8444
8445  ldr r5,[r7,#0x5c] ;@ Load Cycles
8446  ldrh r8,[r4],#2 ;@ Fetch next opcode
8447  subs r5,r5,#20 ;@ Subtract cycles
8448  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8449  b CycloneEnd
8450
8451;@ ---------- [08b0] bclr #$33, ($33,a0,d3.w*2) uses Op08b0 ----------
8452Op08b0:
8453  str r4,[r7,#0x50] ;@ Save prev PC + 2
8454  str r5,[r7,#0x5c] ;@ Save Cycles
8455
8456
8457;@ EaCalc : Get '#$33' into r0:
8458  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8459;@ EaRead : Read '#$33' (address in r0) into r0:
8460
8461  mov r11,#1
8462  bic r10,r10,#0x40000000 ;@ Blank Z flag
8463  and r0,r0,#7    ;@ mem - do mod 8
8464  mov r11,r11,lsl r0 ;@ Make bit mask
8465
8466;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
8467;@ Get extension word into r3:
8468  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
8469  mov r2,r3,lsr #10
8470  tst r3,#0x0800 ;@ Is Rn Word or Long
8471  and r2,r2,#0x3c ;@ r2=Index of Rn
8472  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
8473  ldrne   r2,[r7,r2] ;@ r2=Rn.l
8474  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
8475  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
8476  and r2,r8,#0x000f
8477  orr r2,r2,#0x8 ;@ A0-7
8478  ldr r2,[r7,r2,lsl #2]
8479  add r8,r2,r3 ;@ r8=Disp+An+Rn
8480;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
8481  str r4,[r7,#0x40] ;@ Save PC
8482  bic r0,r8,#0xff000000
8483  bl m68k_read8 ;@ Call read8(r0) handler
8484
8485  tst r0,r11 ;@ Do arithmetic
8486  orreq r10,r10,#0x40000000 ;@ Get Z flag
8487
8488  bic r1,r0,r11 ;@ Clear bit
8489
8490;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
8491  and r1,r1,#0xff
8492  bic r0,r8,#0xff000000
8493  bl m68k_write8 ;@ Call write8(r0,r1) handler
8494
8495  ldr r5,[r7,#0x5c] ;@ Load Cycles
8496  ldrh r8,[r4],#2 ;@ Fetch next opcode
8497  subs r5,r5,#22 ;@ Subtract cycles
8498  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8499  b CycloneEnd
8500
8501;@ ---------- [08b8] bclr #$33, $3333.w uses Op08b8 ----------
8502Op08b8:
8503  str r4,[r7,#0x50] ;@ Save prev PC + 2
8504  str r5,[r7,#0x5c] ;@ Save Cycles
8505
8506
8507;@ EaCalc : Get '#$33' into r0:
8508  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8509;@ EaRead : Read '#$33' (address in r0) into r0:
8510
8511  mov r11,#1
8512  bic r10,r10,#0x40000000 ;@ Blank Z flag
8513  and r0,r0,#7    ;@ mem - do mod 8
8514  mov r11,r11,lsl r0 ;@ Make bit mask
8515
8516;@ EaCalc : Get '$3333.w' into r8:
8517  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
8518;@ EaRead : Read '$3333.w' (address in r8) into r0:
8519  str r4,[r7,#0x40] ;@ Save PC
8520  bic r0,r8,#0xff000000
8521  bl m68k_read8 ;@ Call read8(r0) handler
8522
8523  tst r0,r11 ;@ Do arithmetic
8524  orreq r10,r10,#0x40000000 ;@ Get Z flag
8525
8526  bic r1,r0,r11 ;@ Clear bit
8527
8528;@ EaWrite: Write r1 into '$3333.w' (address in r8):
8529  and r1,r1,#0xff
8530  bic r0,r8,#0xff000000
8531  bl m68k_write8 ;@ Call write8(r0,r1) handler
8532
8533  ldr r5,[r7,#0x5c] ;@ Load Cycles
8534  ldrh r8,[r4],#2 ;@ Fetch next opcode
8535  subs r5,r5,#20 ;@ Subtract cycles
8536  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8537  b CycloneEnd
8538
8539;@ ---------- [08b9] bclr #$33, $33333333.l uses Op08b9 ----------
8540Op08b9:
8541  str r4,[r7,#0x50] ;@ Save prev PC + 2
8542  str r5,[r7,#0x5c] ;@ Save Cycles
8543
8544
8545;@ EaCalc : Get '#$33' into r0:
8546  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8547;@ EaRead : Read '#$33' (address in r0) into r0:
8548
8549  mov r11,#1
8550  bic r10,r10,#0x40000000 ;@ Blank Z flag
8551  and r0,r0,#7    ;@ mem - do mod 8
8552  mov r11,r11,lsl r0 ;@ Make bit mask
8553
8554;@ EaCalc : Get '$33333333.l' into r8:
8555  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
8556  ldrh r0,[r4],#2
8557  orr r8,r0,r2,lsl #16
8558;@ EaRead : Read '$33333333.l' (address in r8) into r0:
8559  str r4,[r7,#0x40] ;@ Save PC
8560  bic r0,r8,#0xff000000
8561  bl m68k_read8 ;@ Call read8(r0) handler
8562
8563  tst r0,r11 ;@ Do arithmetic
8564  orreq r10,r10,#0x40000000 ;@ Get Z flag
8565
8566  bic r1,r0,r11 ;@ Clear bit
8567
8568;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
8569  and r1,r1,#0xff
8570  bic r0,r8,#0xff000000
8571  bl m68k_write8 ;@ Call write8(r0,r1) handler
8572
8573  ldr r5,[r7,#0x5c] ;@ Load Cycles
8574  ldrh r8,[r4],#2 ;@ Fetch next opcode
8575  subs r5,r5,#24 ;@ Subtract cycles
8576  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8577  b CycloneEnd
8578
8579;@ ---------- [08c0] bset #$33, d0 uses Op08c0 ----------
8580Op08c0:
8581
8582;@ EaCalc : Get '#$33' into r0:
8583  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8584;@ EaRead : Read '#$33' (address in r0) into r0:
8585
8586  mov r11,#1
8587  bic r10,r10,#0x40000000 ;@ Blank Z flag
8588  and r0,r0,#0x1F ;@ reg - do mod 32
8589  mov r11,r11,lsl r0 ;@ Make bit mask
8590
8591;@ EaCalc : Get register index into r8:
8592  and r8,r8,#0x000f
8593;@ EaRead : Read register[r8] into r0:
8594  ldr r0,[r7,r8,lsl #2]
8595
8596  tst r0,r11 ;@ Do arithmetic
8597  orreq r10,r10,#0x40000000 ;@ Get Z flag
8598
8599  orr r1,r0,r11 ;@ Set bit
8600
8601;@ EaWrite: r1 into register[r8]:
8602  str r1,[r7,r8,lsl #2]
8603
8604  ldrh r8,[r4],#2 ;@ Fetch next opcode
8605  subs r5,r5,#12 ;@ Subtract cycles
8606  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8607  b CycloneEnd
8608
8609;@ ---------- [08d0] bset #$33, (a0) uses Op08d0 ----------
8610Op08d0:
8611  str r4,[r7,#0x50] ;@ Save prev PC + 2
8612  str r5,[r7,#0x5c] ;@ Save Cycles
8613
8614
8615;@ EaCalc : Get '#$33' into r0:
8616  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8617;@ EaRead : Read '#$33' (address in r0) into r0:
8618
8619  mov r11,#1
8620  bic r10,r10,#0x40000000 ;@ Blank Z flag
8621  and r0,r0,#7    ;@ mem - do mod 8
8622  mov r11,r11,lsl r0 ;@ Make bit mask
8623
8624;@ EaCalc : Get '(a0)' into r8:
8625  and r2,r8,#0x000f
8626  orr r2,r2,#0x8 ;@ A0-7
8627  ldr r8,[r7,r2,lsl #2]
8628;@ EaRead : Read '(a0)' (address in r8) into r0:
8629  str r4,[r7,#0x40] ;@ Save PC
8630  bic r0,r8,#0xff000000
8631  bl m68k_read8 ;@ Call read8(r0) handler
8632
8633  tst r0,r11 ;@ Do arithmetic
8634  orreq r10,r10,#0x40000000 ;@ Get Z flag
8635
8636  orr r1,r0,r11 ;@ Set bit
8637
8638;@ EaWrite: Write r1 into '(a0)' (address in r8):
8639  and r1,r1,#0xff
8640  bic r0,r8,#0xff000000
8641  bl m68k_write8 ;@ Call write8(r0,r1) handler
8642
8643  ldr r5,[r7,#0x5c] ;@ Load Cycles
8644  ldrh r8,[r4],#2 ;@ Fetch next opcode
8645  subs r5,r5,#16 ;@ Subtract cycles
8646  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8647  b CycloneEnd
8648
8649;@ ---------- [08d8] bset #$33, (a0)+ uses Op08d8 ----------
8650Op08d8:
8651  str r4,[r7,#0x50] ;@ Save prev PC + 2
8652  str r5,[r7,#0x5c] ;@ Save Cycles
8653
8654
8655;@ EaCalc : Get '#$33' into r0:
8656  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8657;@ EaRead : Read '#$33' (address in r0) into r0:
8658
8659  mov r11,#1
8660  bic r10,r10,#0x40000000 ;@ Blank Z flag
8661  and r0,r0,#7    ;@ mem - do mod 8
8662  mov r11,r11,lsl r0 ;@ Make bit mask
8663
8664;@ EaCalc : Get '(a0)+' into r8:
8665  and r2,r8,#0x000f
8666  ldr r8,[r7,r2,lsl #2]
8667  add r3,r8,#1 ;@ Post-increment An
8668  str r3,[r7,r2,lsl #2]
8669;@ EaRead : Read '(a0)+' (address in r8) into r0:
8670  str r4,[r7,#0x40] ;@ Save PC
8671  bic r0,r8,#0xff000000
8672  bl m68k_read8 ;@ Call read8(r0) handler
8673
8674  tst r0,r11 ;@ Do arithmetic
8675  orreq r10,r10,#0x40000000 ;@ Get Z flag
8676
8677  orr r1,r0,r11 ;@ Set bit
8678
8679;@ EaWrite: Write r1 into '(a0)+' (address in r8):
8680  and r1,r1,#0xff
8681  bic r0,r8,#0xff000000
8682  bl m68k_write8 ;@ Call write8(r0,r1) handler
8683
8684  ldr r5,[r7,#0x5c] ;@ Load Cycles
8685  ldrh r8,[r4],#2 ;@ Fetch next opcode
8686  subs r5,r5,#16 ;@ Subtract cycles
8687  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8688  b CycloneEnd
8689
8690;@ ---------- [08df] bset #$33, (a7)+ uses Op08df ----------
8691Op08df:
8692  str r4,[r7,#0x50] ;@ Save prev PC + 2
8693  str r5,[r7,#0x5c] ;@ Save Cycles
8694
8695
8696;@ EaCalc : Get '#$33' into r0:
8697  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8698;@ EaRead : Read '#$33' (address in r0) into r0:
8699
8700  mov r11,#1
8701  bic r10,r10,#0x40000000 ;@ Blank Z flag
8702  and r0,r0,#7    ;@ mem - do mod 8
8703  mov r11,r11,lsl r0 ;@ Make bit mask
8704
8705;@ EaCalc : Get '(a7)+' into r8:
8706  ldr r8,[r7,#0x3c] ;@ A7
8707  add r3,r8,#2 ;@ Post-increment An
8708  str r3,[r7,#0x3c] ;@ A7
8709;@ EaRead : Read '(a7)+' (address in r8) into r0:
8710  str r4,[r7,#0x40] ;@ Save PC
8711  bic r0,r8,#0xff000000
8712  bl m68k_read8 ;@ Call read8(r0) handler
8713
8714  tst r0,r11 ;@ Do arithmetic
8715  orreq r10,r10,#0x40000000 ;@ Get Z flag
8716
8717  orr r1,r0,r11 ;@ Set bit
8718
8719;@ EaWrite: Write r1 into '(a7)+' (address in r8):
8720  and r1,r1,#0xff
8721  bic r0,r8,#0xff000000
8722  bl m68k_write8 ;@ Call write8(r0,r1) handler
8723
8724  ldr r5,[r7,#0x5c] ;@ Load Cycles
8725  ldrh r8,[r4],#2 ;@ Fetch next opcode
8726  subs r5,r5,#16 ;@ Subtract cycles
8727  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8728  b CycloneEnd
8729
8730;@ ---------- [08e0] bset #$33, -(a0) uses Op08e0 ----------
8731Op08e0:
8732  str r4,[r7,#0x50] ;@ Save prev PC + 2
8733  str r5,[r7,#0x5c] ;@ Save Cycles
8734
8735
8736;@ EaCalc : Get '#$33' into r0:
8737  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8738;@ EaRead : Read '#$33' (address in r0) into r0:
8739
8740  mov r11,#1
8741  bic r10,r10,#0x40000000 ;@ Blank Z flag
8742  and r0,r0,#7    ;@ mem - do mod 8
8743  mov r11,r11,lsl r0 ;@ Make bit mask
8744
8745;@ EaCalc : Get '-(a0)' into r8:
8746  and r2,r8,#0x000f
8747  orr r2,r2,#0x8 ;@ A0-7
8748  ldr r8,[r7,r2,lsl #2]
8749  sub r8,r8,#1 ;@ Pre-decrement An
8750  str r8,[r7,r2,lsl #2]
8751;@ EaRead : Read '-(a0)' (address in r8) into r0:
8752  str r4,[r7,#0x40] ;@ Save PC
8753  bic r0,r8,#0xff000000
8754  bl m68k_read8 ;@ Call read8(r0) handler
8755
8756  tst r0,r11 ;@ Do arithmetic
8757  orreq r10,r10,#0x40000000 ;@ Get Z flag
8758
8759  orr r1,r0,r11 ;@ Set bit
8760
8761;@ EaWrite: Write r1 into '-(a0)' (address in r8):
8762  and r1,r1,#0xff
8763  bic r0,r8,#0xff000000
8764  bl m68k_write8 ;@ Call write8(r0,r1) handler
8765
8766  ldr r5,[r7,#0x5c] ;@ Load Cycles
8767  ldrh r8,[r4],#2 ;@ Fetch next opcode
8768  subs r5,r5,#18 ;@ Subtract cycles
8769  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8770  b CycloneEnd
8771
8772;@ ---------- [08e7] bset #$33, -(a7) uses Op08e7 ----------
8773Op08e7:
8774  str r4,[r7,#0x50] ;@ Save prev PC + 2
8775  str r5,[r7,#0x5c] ;@ Save Cycles
8776
8777
8778;@ EaCalc : Get '#$33' into r0:
8779  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8780;@ EaRead : Read '#$33' (address in r0) into r0:
8781
8782  mov r11,#1
8783  bic r10,r10,#0x40000000 ;@ Blank Z flag
8784  and r0,r0,#7    ;@ mem - do mod 8
8785  mov r11,r11,lsl r0 ;@ Make bit mask
8786
8787;@ EaCalc : Get '-(a7)' into r8:
8788  ldr r8,[r7,#0x3c] ;@ A7
8789  sub r8,r8,#2 ;@ Pre-decrement An
8790  str r8,[r7,#0x3c] ;@ A7
8791;@ EaRead : Read '-(a7)' (address in r8) into r0:
8792  str r4,[r7,#0x40] ;@ Save PC
8793  bic r0,r8,#0xff000000
8794  bl m68k_read8 ;@ Call read8(r0) handler
8795
8796  tst r0,r11 ;@ Do arithmetic
8797  orreq r10,r10,#0x40000000 ;@ Get Z flag
8798
8799  orr r1,r0,r11 ;@ Set bit
8800
8801;@ EaWrite: Write r1 into '-(a7)' (address in r8):
8802  and r1,r1,#0xff
8803  bic r0,r8,#0xff000000
8804  bl m68k_write8 ;@ Call write8(r0,r1) handler
8805
8806  ldr r5,[r7,#0x5c] ;@ Load Cycles
8807  ldrh r8,[r4],#2 ;@ Fetch next opcode
8808  subs r5,r5,#18 ;@ Subtract cycles
8809  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8810  b CycloneEnd
8811
8812;@ ---------- [08e8] bset #$33, ($3333,a0) uses Op08e8 ----------
8813Op08e8:
8814  str r4,[r7,#0x50] ;@ Save prev PC + 2
8815  str r5,[r7,#0x5c] ;@ Save Cycles
8816
8817
8818;@ EaCalc : Get '#$33' into r0:
8819  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8820;@ EaRead : Read '#$33' (address in r0) into r0:
8821
8822  mov r11,#1
8823  bic r10,r10,#0x40000000 ;@ Blank Z flag
8824  and r0,r0,#7    ;@ mem - do mod 8
8825  mov r11,r11,lsl r0 ;@ Make bit mask
8826
8827;@ EaCalc : Get '($3333,a0)' into r8:
8828  ldrsh r0,[r4],#2 ;@ Fetch offset
8829  and r2,r8,#0x000f
8830  ldr r2,[r7,r2,lsl #2]
8831  add r8,r0,r2 ;@ Add on offset
8832;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
8833  str r4,[r7,#0x40] ;@ Save PC
8834  bic r0,r8,#0xff000000
8835  bl m68k_read8 ;@ Call read8(r0) handler
8836
8837  tst r0,r11 ;@ Do arithmetic
8838  orreq r10,r10,#0x40000000 ;@ Get Z flag
8839
8840  orr r1,r0,r11 ;@ Set bit
8841
8842;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
8843  and r1,r1,#0xff
8844  bic r0,r8,#0xff000000
8845  bl m68k_write8 ;@ Call write8(r0,r1) handler
8846
8847  ldr r5,[r7,#0x5c] ;@ Load Cycles
8848  ldrh r8,[r4],#2 ;@ Fetch next opcode
8849  subs r5,r5,#20 ;@ Subtract cycles
8850  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8851  b CycloneEnd
8852
8853;@ ---------- [08f0] bset #$33, ($33,a0,d3.w*2) uses Op08f0 ----------
8854Op08f0:
8855  str r4,[r7,#0x50] ;@ Save prev PC + 2
8856  str r5,[r7,#0x5c] ;@ Save Cycles
8857
8858
8859;@ EaCalc : Get '#$33' into r0:
8860  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8861;@ EaRead : Read '#$33' (address in r0) into r0:
8862
8863  mov r11,#1
8864  bic r10,r10,#0x40000000 ;@ Blank Z flag
8865  and r0,r0,#7    ;@ mem - do mod 8
8866  mov r11,r11,lsl r0 ;@ Make bit mask
8867
8868;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
8869;@ Get extension word into r3:
8870  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
8871  mov r2,r3,lsr #10
8872  tst r3,#0x0800 ;@ Is Rn Word or Long
8873  and r2,r2,#0x3c ;@ r2=Index of Rn
8874  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
8875  ldrne   r2,[r7,r2] ;@ r2=Rn.l
8876  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
8877  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
8878  and r2,r8,#0x000f
8879  orr r2,r2,#0x8 ;@ A0-7
8880  ldr r2,[r7,r2,lsl #2]
8881  add r8,r2,r3 ;@ r8=Disp+An+Rn
8882;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
8883  str r4,[r7,#0x40] ;@ Save PC
8884  bic r0,r8,#0xff000000
8885  bl m68k_read8 ;@ Call read8(r0) handler
8886
8887  tst r0,r11 ;@ Do arithmetic
8888  orreq r10,r10,#0x40000000 ;@ Get Z flag
8889
8890  orr r1,r0,r11 ;@ Set bit
8891
8892;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
8893  and r1,r1,#0xff
8894  bic r0,r8,#0xff000000
8895  bl m68k_write8 ;@ Call write8(r0,r1) handler
8896
8897  ldr r5,[r7,#0x5c] ;@ Load Cycles
8898  ldrh r8,[r4],#2 ;@ Fetch next opcode
8899  subs r5,r5,#22 ;@ Subtract cycles
8900  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8901  b CycloneEnd
8902
8903;@ ---------- [08f8] bset #$33, $3333.w uses Op08f8 ----------
8904Op08f8:
8905  str r4,[r7,#0x50] ;@ Save prev PC + 2
8906  str r5,[r7,#0x5c] ;@ Save Cycles
8907
8908
8909;@ EaCalc : Get '#$33' into r0:
8910  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8911;@ EaRead : Read '#$33' (address in r0) into r0:
8912
8913  mov r11,#1
8914  bic r10,r10,#0x40000000 ;@ Blank Z flag
8915  and r0,r0,#7    ;@ mem - do mod 8
8916  mov r11,r11,lsl r0 ;@ Make bit mask
8917
8918;@ EaCalc : Get '$3333.w' into r8:
8919  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
8920;@ EaRead : Read '$3333.w' (address in r8) into r0:
8921  str r4,[r7,#0x40] ;@ Save PC
8922  bic r0,r8,#0xff000000
8923  bl m68k_read8 ;@ Call read8(r0) handler
8924
8925  tst r0,r11 ;@ Do arithmetic
8926  orreq r10,r10,#0x40000000 ;@ Get Z flag
8927
8928  orr r1,r0,r11 ;@ Set bit
8929
8930;@ EaWrite: Write r1 into '$3333.w' (address in r8):
8931  and r1,r1,#0xff
8932  bic r0,r8,#0xff000000
8933  bl m68k_write8 ;@ Call write8(r0,r1) handler
8934
8935  ldr r5,[r7,#0x5c] ;@ Load Cycles
8936  ldrh r8,[r4],#2 ;@ Fetch next opcode
8937  subs r5,r5,#20 ;@ Subtract cycles
8938  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8939  b CycloneEnd
8940
8941;@ ---------- [08f9] bset #$33, $33333333.l uses Op08f9 ----------
8942Op08f9:
8943  str r4,[r7,#0x50] ;@ Save prev PC + 2
8944  str r5,[r7,#0x5c] ;@ Save Cycles
8945
8946
8947;@ EaCalc : Get '#$33' into r0:
8948  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8949;@ EaRead : Read '#$33' (address in r0) into r0:
8950
8951  mov r11,#1
8952  bic r10,r10,#0x40000000 ;@ Blank Z flag
8953  and r0,r0,#7    ;@ mem - do mod 8
8954  mov r11,r11,lsl r0 ;@ Make bit mask
8955
8956;@ EaCalc : Get '$33333333.l' into r8:
8957  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
8958  ldrh r0,[r4],#2
8959  orr r8,r0,r2,lsl #16
8960;@ EaRead : Read '$33333333.l' (address in r8) into r0:
8961  str r4,[r7,#0x40] ;@ Save PC
8962  bic r0,r8,#0xff000000
8963  bl m68k_read8 ;@ Call read8(r0) handler
8964
8965  tst r0,r11 ;@ Do arithmetic
8966  orreq r10,r10,#0x40000000 ;@ Get Z flag
8967
8968  orr r1,r0,r11 ;@ Set bit
8969
8970;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
8971  and r1,r1,#0xff
8972  bic r0,r8,#0xff000000
8973  bl m68k_write8 ;@ Call write8(r0,r1) handler
8974
8975  ldr r5,[r7,#0x5c] ;@ Load Cycles
8976  ldrh r8,[r4],#2 ;@ Fetch next opcode
8977  subs r5,r5,#24 ;@ Subtract cycles
8978  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8979  b CycloneEnd
8980
8981;@ ---------- [0a00] eori.b #$33, d0 uses Op0a00 ----------
8982Op0a00:
8983;@ EaCalc : Get '#$33' into r10:
8984  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8985;@ EaRead : Read '#$33' (address in r10) into r10:
8986
8987;@ EaCalc : Get register index into r11:
8988  and r11,r8,#0x000f
8989;@ EaRead : Read register[r11] into r0:
8990  ldr r0,[r7,r11,lsl #2]
8991
8992  mov r10,r10,asl #24
8993;@ Do arithmetic:
8994  eors r1,r10,r0,asl #24
8995  and r10,r1,#0x80000000 ;@ r10=N_flag
8996  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8997
8998;@ EaWrite: r1 into register[r11]:
8999  mov r1,r1,lsr #24
9000  strb r1,[r7,r11,lsl #2]
9001
9002  ldrh r8,[r4],#2 ;@ Fetch next opcode
9003  subs r5,r5,#8 ;@ Subtract cycles
9004  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9005  b CycloneEnd
9006
9007;@ ---------- [0a10] eori.b #$33, (a0) uses Op0a10 ----------
9008Op0a10:
9009  str r4,[r7,#0x50] ;@ Save prev PC + 2
9010  str r5,[r7,#0x5c] ;@ Save Cycles
9011
9012;@ EaCalc : Get '#$33' into r10:
9013  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9014;@ EaRead : Read '#$33' (address in r10) into r10:
9015
9016;@ EaCalc : Get '(a0)' into r11:
9017  and r2,r8,#0x000f
9018  orr r2,r2,#0x8 ;@ A0-7
9019  ldr r11,[r7,r2,lsl #2]
9020;@ EaRead : Read '(a0)' (address in r11) into r0:
9021  str r4,[r7,#0x40] ;@ Save PC
9022  bic r0,r11,#0xff000000
9023  bl m68k_read8 ;@ Call read8(r0) handler
9024
9025  mov r10,r10,asl #24
9026;@ Do arithmetic:
9027  eors r1,r10,r0,asl #24
9028  and r10,r1,#0x80000000 ;@ r10=N_flag
9029  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9030
9031;@ EaWrite: Write r1 into '(a0)' (address in r11):
9032  mov r1,r1,lsr #24
9033  bic r0,r11,#0xff000000
9034  bl m68k_write8 ;@ Call write8(r0,r1) handler
9035
9036  ldr r5,[r7,#0x5c] ;@ Load Cycles
9037  ldrh r8,[r4],#2 ;@ Fetch next opcode
9038  subs r5,r5,#16 ;@ Subtract cycles
9039  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9040  b CycloneEnd
9041
9042;@ ---------- [0a18] eori.b #$33, (a0)+ uses Op0a18 ----------
9043Op0a18:
9044  str r4,[r7,#0x50] ;@ Save prev PC + 2
9045  str r5,[r7,#0x5c] ;@ Save Cycles
9046
9047;@ EaCalc : Get '#$33' into r10:
9048  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9049;@ EaRead : Read '#$33' (address in r10) into r10:
9050
9051;@ EaCalc : Get '(a0)+' into r11:
9052  and r2,r8,#0x000f
9053  ldr r11,[r7,r2,lsl #2]
9054  add r3,r11,#1 ;@ Post-increment An
9055  str r3,[r7,r2,lsl #2]
9056;@ EaRead : Read '(a0)+' (address in r11) into r0:
9057  str r4,[r7,#0x40] ;@ Save PC
9058  bic r0,r11,#0xff000000
9059  bl m68k_read8 ;@ Call read8(r0) handler
9060
9061  mov r10,r10,asl #24
9062;@ Do arithmetic:
9063  eors r1,r10,r0,asl #24
9064  and r10,r1,#0x80000000 ;@ r10=N_flag
9065  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9066
9067;@ EaWrite: Write r1 into '(a0)+' (address in r11):
9068  mov r1,r1,lsr #24
9069  bic r0,r11,#0xff000000
9070  bl m68k_write8 ;@ Call write8(r0,r1) handler
9071
9072  ldr r5,[r7,#0x5c] ;@ Load Cycles
9073  ldrh r8,[r4],#2 ;@ Fetch next opcode
9074  subs r5,r5,#16 ;@ Subtract cycles
9075  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9076  b CycloneEnd
9077
9078;@ ---------- [0a1f] eori.b #$33, (a7)+ uses Op0a1f ----------
9079Op0a1f:
9080  str r4,[r7,#0x50] ;@ Save prev PC + 2
9081  str r5,[r7,#0x5c] ;@ Save Cycles
9082
9083;@ EaCalc : Get '#$33' into r10:
9084  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9085;@ EaRead : Read '#$33' (address in r10) into r10:
9086
9087;@ EaCalc : Get '(a7)+' into r11:
9088  ldr r11,[r7,#0x3c] ;@ A7
9089  add r3,r11,#2 ;@ Post-increment An
9090  str r3,[r7,#0x3c] ;@ A7
9091;@ EaRead : Read '(a7)+' (address in r11) into r0:
9092  str r4,[r7,#0x40] ;@ Save PC
9093  bic r0,r11,#0xff000000
9094  bl m68k_read8 ;@ Call read8(r0) handler
9095
9096  mov r10,r10,asl #24
9097;@ Do arithmetic:
9098  eors r1,r10,r0,asl #24
9099  and r10,r1,#0x80000000 ;@ r10=N_flag
9100  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9101
9102;@ EaWrite: Write r1 into '(a7)+' (address in r11):
9103  mov r1,r1,lsr #24
9104  bic r0,r11,#0xff000000
9105  bl m68k_write8 ;@ Call write8(r0,r1) handler
9106
9107  ldr r5,[r7,#0x5c] ;@ Load Cycles
9108  ldrh r8,[r4],#2 ;@ Fetch next opcode
9109  subs r5,r5,#16 ;@ Subtract cycles
9110  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9111  b CycloneEnd
9112
9113;@ ---------- [0a20] eori.b #$33, -(a0) uses Op0a20 ----------
9114Op0a20:
9115  str r4,[r7,#0x50] ;@ Save prev PC + 2
9116  str r5,[r7,#0x5c] ;@ Save Cycles
9117
9118;@ EaCalc : Get '#$33' into r10:
9119  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9120;@ EaRead : Read '#$33' (address in r10) into r10:
9121
9122;@ EaCalc : Get '-(a0)' into r11:
9123  and r2,r8,#0x000f
9124  orr r2,r2,#0x8 ;@ A0-7
9125  ldr r11,[r7,r2,lsl #2]
9126  sub r11,r11,#1 ;@ Pre-decrement An
9127  str r11,[r7,r2,lsl #2]
9128;@ EaRead : Read '-(a0)' (address in r11) into r0:
9129  str r4,[r7,#0x40] ;@ Save PC
9130  bic r0,r11,#0xff000000
9131  bl m68k_read8 ;@ Call read8(r0) handler
9132
9133  mov r10,r10,asl #24
9134;@ Do arithmetic:
9135  eors r1,r10,r0,asl #24
9136  and r10,r1,#0x80000000 ;@ r10=N_flag
9137  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9138
9139;@ EaWrite: Write r1 into '-(a0)' (address in r11):
9140  mov r1,r1,lsr #24
9141  bic r0,r11,#0xff000000
9142  bl m68k_write8 ;@ Call write8(r0,r1) handler
9143
9144  ldr r5,[r7,#0x5c] ;@ Load Cycles
9145  ldrh r8,[r4],#2 ;@ Fetch next opcode
9146  subs r5,r5,#18 ;@ Subtract cycles
9147  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9148  b CycloneEnd
9149
9150;@ ---------- [0a27] eori.b #$33, -(a7) uses Op0a27 ----------
9151Op0a27:
9152  str r4,[r7,#0x50] ;@ Save prev PC + 2
9153  str r5,[r7,#0x5c] ;@ Save Cycles
9154
9155;@ EaCalc : Get '#$33' into r10:
9156  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9157;@ EaRead : Read '#$33' (address in r10) into r10:
9158
9159;@ EaCalc : Get '-(a7)' into r11:
9160  ldr r11,[r7,#0x3c] ;@ A7
9161  sub r11,r11,#2 ;@ Pre-decrement An
9162  str r11,[r7,#0x3c] ;@ A7
9163;@ EaRead : Read '-(a7)' (address in r11) into r0:
9164  str r4,[r7,#0x40] ;@ Save PC
9165  bic r0,r11,#0xff000000
9166  bl m68k_read8 ;@ Call read8(r0) handler
9167
9168  mov r10,r10,asl #24
9169;@ Do arithmetic:
9170  eors r1,r10,r0,asl #24
9171  and r10,r1,#0x80000000 ;@ r10=N_flag
9172  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9173
9174;@ EaWrite: Write r1 into '-(a7)' (address in r11):
9175  mov r1,r1,lsr #24
9176  bic r0,r11,#0xff000000
9177  bl m68k_write8 ;@ Call write8(r0,r1) handler
9178
9179  ldr r5,[r7,#0x5c] ;@ Load Cycles
9180  ldrh r8,[r4],#2 ;@ Fetch next opcode
9181  subs r5,r5,#18 ;@ Subtract cycles
9182  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9183  b CycloneEnd
9184
9185;@ ---------- [0a28] eori.b #$33, ($3333,a0) uses Op0a28 ----------
9186Op0a28:
9187  str r4,[r7,#0x50] ;@ Save prev PC + 2
9188  str r5,[r7,#0x5c] ;@ Save Cycles
9189
9190;@ EaCalc : Get '#$33' into r10:
9191  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9192;@ EaRead : Read '#$33' (address in r10) into r10:
9193
9194;@ EaCalc : Get '($3333,a0)' into r11:
9195  ldrsh r0,[r4],#2 ;@ Fetch offset
9196  and r2,r8,#0x000f
9197  ldr r2,[r7,r2,lsl #2]
9198  add r11,r0,r2 ;@ Add on offset
9199;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
9200  str r4,[r7,#0x40] ;@ Save PC
9201  bic r0,r11,#0xff000000
9202  bl m68k_read8 ;@ Call read8(r0) handler
9203
9204  mov r10,r10,asl #24
9205;@ Do arithmetic:
9206  eors r1,r10,r0,asl #24
9207  and r10,r1,#0x80000000 ;@ r10=N_flag
9208  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9209
9210;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
9211  mov r1,r1,lsr #24
9212  bic r0,r11,#0xff000000
9213  bl m68k_write8 ;@ Call write8(r0,r1) handler
9214
9215  ldr r5,[r7,#0x5c] ;@ Load Cycles
9216  ldrh r8,[r4],#2 ;@ Fetch next opcode
9217  subs r5,r5,#20 ;@ Subtract cycles
9218  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9219  b CycloneEnd
9220
9221;@ ---------- [0a30] eori.b #$33, ($33,a0,d3.w*2) uses Op0a30 ----------
9222Op0a30:
9223  str r4,[r7,#0x50] ;@ Save prev PC + 2
9224  str r5,[r7,#0x5c] ;@ Save Cycles
9225
9226;@ EaCalc : Get '#$33' into r10:
9227  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9228;@ EaRead : Read '#$33' (address in r10) into r10:
9229
9230;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
9231;@ Get extension word into r3:
9232  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
9233  mov r2,r3,lsr #10
9234  tst r3,#0x0800 ;@ Is Rn Word or Long
9235  and r2,r2,#0x3c ;@ r2=Index of Rn
9236  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
9237  ldrne   r2,[r7,r2] ;@ r2=Rn.l
9238  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
9239  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
9240  and r2,r8,#0x000f
9241  orr r2,r2,#0x8 ;@ A0-7
9242  ldr r2,[r7,r2,lsl #2]
9243  add r11,r2,r3 ;@ r11=Disp+An+Rn
9244;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
9245  str r4,[r7,#0x40] ;@ Save PC
9246  bic r0,r11,#0xff000000
9247  bl m68k_read8 ;@ Call read8(r0) handler
9248
9249  mov r10,r10,asl #24
9250;@ Do arithmetic:
9251  eors r1,r10,r0,asl #24
9252  and r10,r1,#0x80000000 ;@ r10=N_flag
9253  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9254
9255;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
9256  mov r1,r1,lsr #24
9257  bic r0,r11,#0xff000000
9258  bl m68k_write8 ;@ Call write8(r0,r1) handler
9259
9260  ldr r5,[r7,#0x5c] ;@ Load Cycles
9261  ldrh r8,[r4],#2 ;@ Fetch next opcode
9262  subs r5,r5,#22 ;@ Subtract cycles
9263  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9264  b CycloneEnd
9265
9266;@ ---------- [0a38] eori.b #$33, $3333.w uses Op0a38 ----------
9267Op0a38:
9268  str r4,[r7,#0x50] ;@ Save prev PC + 2
9269  str r5,[r7,#0x5c] ;@ Save Cycles
9270
9271;@ EaCalc : Get '#$33' into r10:
9272  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9273;@ EaRead : Read '#$33' (address in r10) into r10:
9274
9275;@ EaCalc : Get '$3333.w' into r11:
9276  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
9277;@ EaRead : Read '$3333.w' (address in r11) into r0:
9278  str r4,[r7,#0x40] ;@ Save PC
9279  bic r0,r11,#0xff000000
9280  bl m68k_read8 ;@ Call read8(r0) handler
9281
9282  mov r10,r10,asl #24
9283;@ Do arithmetic:
9284  eors r1,r10,r0,asl #24
9285  and r10,r1,#0x80000000 ;@ r10=N_flag
9286  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9287
9288;@ EaWrite: Write r1 into '$3333.w' (address in r11):
9289  mov r1,r1,lsr #24
9290  bic r0,r11,#0xff000000
9291  bl m68k_write8 ;@ Call write8(r0,r1) handler
9292
9293  ldr r5,[r7,#0x5c] ;@ Load Cycles
9294  ldrh r8,[r4],#2 ;@ Fetch next opcode
9295  subs r5,r5,#20 ;@ Subtract cycles
9296  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9297  b CycloneEnd
9298
9299;@ ---------- [0a39] eori.b #$33, $33333333.l uses Op0a39 ----------
9300Op0a39:
9301  str r4,[r7,#0x50] ;@ Save prev PC + 2
9302  str r5,[r7,#0x5c] ;@ Save Cycles
9303
9304;@ EaCalc : Get '#$33' into r10:
9305  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9306;@ EaRead : Read '#$33' (address in r10) into r10:
9307
9308;@ EaCalc : Get '$33333333.l' into r11:
9309  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
9310  ldrh r0,[r4],#2
9311  orr r11,r0,r2,lsl #16
9312;@ EaRead : Read '$33333333.l' (address in r11) into r0:
9313  str r4,[r7,#0x40] ;@ Save PC
9314  bic r0,r11,#0xff000000
9315  bl m68k_read8 ;@ Call read8(r0) handler
9316
9317  mov r10,r10,asl #24
9318;@ Do arithmetic:
9319  eors r1,r10,r0,asl #24
9320  and r10,r1,#0x80000000 ;@ r10=N_flag
9321  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9322
9323;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
9324  mov r1,r1,lsr #24
9325  bic r0,r11,#0xff000000
9326  bl m68k_write8 ;@ Call write8(r0,r1) handler
9327
9328  ldr r5,[r7,#0x5c] ;@ Load Cycles
9329  ldrh r8,[r4],#2 ;@ Fetch next opcode
9330  subs r5,r5,#24 ;@ Subtract cycles
9331  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9332  b CycloneEnd
9333
9334;@ ---------- [0a3c] eori.b #$33, ccr uses Op0a3c ----------
9335Op0a3c:
9336;@ EaCalc : Get '#$33' into r0:
9337  ldrsb r0,[r4],#2 ;@ Fetch immediate value
9338;@ EaRead : Read '#$33' (address in r0) into r0:
9339
9340  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
9341  tst r1,#1           ;@ 1 if C!=V
9342  eorne r0,r0,#3      ;@ ___XNZCV
9343  ldr r2,[r7,#0x4c]   ;@ Load old X bit
9344  eor r10,r10,r0,lsl #28
9345  eor r2,r2,r0,lsl #25 ;@ X bit
9346  str r2,[r7,#0x4c]   ;@ Save X bit
9347
9348  ldrh r8,[r4],#2 ;@ Fetch next opcode
9349  subs r5,r5,#20 ;@ Subtract cycles
9350  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9351  b CycloneEnd
9352
9353;@ ---------- [0a40] eori.w #$3333, d0 uses Op0a40 ----------
9354Op0a40:
9355;@ EaCalc : Get '#$3333' into r10:
9356  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9357;@ EaRead : Read '#$3333' (address in r10) into r10:
9358
9359;@ EaCalc : Get register index into r11:
9360  and r11,r8,#0x000f
9361  mov r11,r11,lsl #2
9362;@ EaRead : Read register[r11] into r0:
9363  ldr r0,[r7,r11]
9364
9365  mov r10,r10,asl #16
9366;@ Do arithmetic:
9367  eors r1,r10,r0,asl #16
9368  and r10,r1,#0x80000000 ;@ r10=N_flag
9369  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9370
9371;@ EaWrite: r1 into register[r11]:
9372  mov r1,r1,lsr #16
9373  strh r1,[r7,r11]
9374
9375  ldrh r8,[r4],#2 ;@ Fetch next opcode
9376  subs r5,r5,#8 ;@ Subtract cycles
9377  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9378  b CycloneEnd
9379
9380;@ ---------- [0a50] eori.w #$3333, (a0) uses Op0a50 ----------
9381Op0a50:
9382  str r4,[r7,#0x50] ;@ Save prev PC + 2
9383  str r5,[r7,#0x5c] ;@ Save Cycles
9384
9385;@ EaCalc : Get '#$3333' into r10:
9386  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9387;@ EaRead : Read '#$3333' (address in r10) into r10:
9388
9389;@ EaCalc : Get '(a0)' into r11:
9390  and r2,r8,#0x000f
9391  orr r2,r2,#0x8 ;@ A0-7
9392  ldr r11,[r7,r2,lsl #2]
9393;@ EaRead : Read '(a0)' (address in r11) into r0:
9394  str r4,[r7,#0x40] ;@ Save PC
9395  bic r0,r11,#0xff000000
9396  bl m68k_read16 ;@ Call read16(r0) handler
9397
9398  mov r10,r10,asl #16
9399;@ Do arithmetic:
9400  eors r1,r10,r0,asl #16
9401  and r10,r1,#0x80000000 ;@ r10=N_flag
9402  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9403
9404;@ EaWrite: Write r1 into '(a0)' (address in r11):
9405  mov r1,r1,lsr #16
9406  bic r0,r11,#0xff000000
9407  bl m68k_write16 ;@ Call write16(r0,r1) handler
9408
9409  ldr r5,[r7,#0x5c] ;@ Load Cycles
9410  ldrh r8,[r4],#2 ;@ Fetch next opcode
9411  subs r5,r5,#16 ;@ Subtract cycles
9412  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9413  b CycloneEnd
9414
9415;@ ---------- [0a58] eori.w #$3333, (a0)+ uses Op0a58 ----------
9416Op0a58:
9417  str r4,[r7,#0x50] ;@ Save prev PC + 2
9418  str r5,[r7,#0x5c] ;@ Save Cycles
9419
9420;@ EaCalc : Get '#$3333' into r10:
9421  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9422;@ EaRead : Read '#$3333' (address in r10) into r10:
9423
9424;@ EaCalc : Get '(a0)+' into r11:
9425  and r2,r8,#0x000f
9426  ldr r11,[r7,r2,lsl #2]
9427  add r3,r11,#2 ;@ Post-increment An
9428  str r3,[r7,r2,lsl #2]
9429;@ EaRead : Read '(a0)+' (address in r11) into r0:
9430  str r4,[r7,#0x40] ;@ Save PC
9431  bic r0,r11,#0xff000000
9432  bl m68k_read16 ;@ Call read16(r0) handler
9433
9434  mov r10,r10,asl #16
9435;@ Do arithmetic:
9436  eors r1,r10,r0,asl #16
9437  and r10,r1,#0x80000000 ;@ r10=N_flag
9438  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9439
9440;@ EaWrite: Write r1 into '(a0)+' (address in r11):
9441  mov r1,r1,lsr #16
9442  bic r0,r11,#0xff000000
9443  bl m68k_write16 ;@ Call write16(r0,r1) handler
9444
9445  ldr r5,[r7,#0x5c] ;@ Load Cycles
9446  ldrh r8,[r4],#2 ;@ Fetch next opcode
9447  subs r5,r5,#16 ;@ Subtract cycles
9448  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9449  b CycloneEnd
9450
9451;@ ---------- [0a60] eori.w #$3333, -(a0) uses Op0a60 ----------
9452Op0a60:
9453  str r4,[r7,#0x50] ;@ Save prev PC + 2
9454  str r5,[r7,#0x5c] ;@ Save Cycles
9455
9456;@ EaCalc : Get '#$3333' into r10:
9457  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9458;@ EaRead : Read '#$3333' (address in r10) into r10:
9459
9460;@ EaCalc : Get '-(a0)' into r11:
9461  and r2,r8,#0x000f
9462  orr r2,r2,#0x8 ;@ A0-7
9463  ldr r11,[r7,r2,lsl #2]
9464  sub r11,r11,#2 ;@ Pre-decrement An
9465  str r11,[r7,r2,lsl #2]
9466;@ EaRead : Read '-(a0)' (address in r11) into r0:
9467  str r4,[r7,#0x40] ;@ Save PC
9468  bic r0,r11,#0xff000000
9469  bl m68k_read16 ;@ Call read16(r0) handler
9470
9471  mov r10,r10,asl #16
9472;@ Do arithmetic:
9473  eors r1,r10,r0,asl #16
9474  and r10,r1,#0x80000000 ;@ r10=N_flag
9475  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9476
9477;@ EaWrite: Write r1 into '-(a0)' (address in r11):
9478  mov r1,r1,lsr #16
9479  bic r0,r11,#0xff000000
9480  bl m68k_write16 ;@ Call write16(r0,r1) handler
9481
9482  ldr r5,[r7,#0x5c] ;@ Load Cycles
9483  ldrh r8,[r4],#2 ;@ Fetch next opcode
9484  subs r5,r5,#18 ;@ Subtract cycles
9485  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9486  b CycloneEnd
9487
9488;@ ---------- [0a68] eori.w #$3333, ($3333,a0) uses Op0a68 ----------
9489Op0a68:
9490  str r4,[r7,#0x50] ;@ Save prev PC + 2
9491  str r5,[r7,#0x5c] ;@ Save Cycles
9492
9493;@ EaCalc : Get '#$3333' into r10:
9494  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9495;@ EaRead : Read '#$3333' (address in r10) into r10:
9496
9497;@ EaCalc : Get '($3333,a0)' into r11:
9498  ldrsh r0,[r4],#2 ;@ Fetch offset
9499  and r2,r8,#0x000f
9500  ldr r2,[r7,r2,lsl #2]
9501  add r11,r0,r2 ;@ Add on offset
9502;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
9503  str r4,[r7,#0x40] ;@ Save PC
9504  bic r0,r11,#0xff000000
9505  bl m68k_read16 ;@ Call read16(r0) handler
9506
9507  mov r10,r10,asl #16
9508;@ Do arithmetic:
9509  eors r1,r10,r0,asl #16
9510  and r10,r1,#0x80000000 ;@ r10=N_flag
9511  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9512
9513;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
9514  mov r1,r1,lsr #16
9515  bic r0,r11,#0xff000000
9516  bl m68k_write16 ;@ Call write16(r0,r1) handler
9517
9518  ldr r5,[r7,#0x5c] ;@ Load Cycles
9519  ldrh r8,[r4],#2 ;@ Fetch next opcode
9520  subs r5,r5,#20 ;@ Subtract cycles
9521  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9522  b CycloneEnd
9523
9524;@ ---------- [0a70] eori.w #$3333, ($33,a0,d3.w*2) uses Op0a70 ----------
9525Op0a70:
9526  str r4,[r7,#0x50] ;@ Save prev PC + 2
9527  str r5,[r7,#0x5c] ;@ Save Cycles
9528
9529;@ EaCalc : Get '#$3333' into r10:
9530  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9531;@ EaRead : Read '#$3333' (address in r10) into r10:
9532
9533;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
9534;@ Get extension word into r3:
9535  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
9536  mov r2,r3,lsr #10
9537  tst r3,#0x0800 ;@ Is Rn Word or Long
9538  and r2,r2,#0x3c ;@ r2=Index of Rn
9539  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
9540  ldrne   r2,[r7,r2] ;@ r2=Rn.l
9541  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
9542  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
9543  and r2,r8,#0x000f
9544  orr r2,r2,#0x8 ;@ A0-7
9545  ldr r2,[r7,r2,lsl #2]
9546  add r11,r2,r3 ;@ r11=Disp+An+Rn
9547;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
9548  str r4,[r7,#0x40] ;@ Save PC
9549  bic r0,r11,#0xff000000
9550  bl m68k_read16 ;@ Call read16(r0) handler
9551
9552  mov r10,r10,asl #16
9553;@ Do arithmetic:
9554  eors r1,r10,r0,asl #16
9555  and r10,r1,#0x80000000 ;@ r10=N_flag
9556  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9557
9558;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
9559  mov r1,r1,lsr #16
9560  bic r0,r11,#0xff000000
9561  bl m68k_write16 ;@ Call write16(r0,r1) handler
9562
9563  ldr r5,[r7,#0x5c] ;@ Load Cycles
9564  ldrh r8,[r4],#2 ;@ Fetch next opcode
9565  subs r5,r5,#22 ;@ Subtract cycles
9566  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9567  b CycloneEnd
9568
9569;@ ---------- [0a78] eori.w #$3333, $3333.w uses Op0a78 ----------
9570Op0a78:
9571  str r4,[r7,#0x50] ;@ Save prev PC + 2
9572  str r5,[r7,#0x5c] ;@ Save Cycles
9573
9574;@ EaCalc : Get '#$3333' into r10:
9575  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9576;@ EaRead : Read '#$3333' (address in r10) into r10:
9577
9578;@ EaCalc : Get '$3333.w' into r11:
9579  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
9580;@ EaRead : Read '$3333.w' (address in r11) into r0:
9581  str r4,[r7,#0x40] ;@ Save PC
9582  bic r0,r11,#0xff000000
9583  bl m68k_read16 ;@ Call read16(r0) handler
9584
9585  mov r10,r10,asl #16
9586;@ Do arithmetic:
9587  eors r1,r10,r0,asl #16
9588  and r10,r1,#0x80000000 ;@ r10=N_flag
9589  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9590
9591;@ EaWrite: Write r1 into '$3333.w' (address in r11):
9592  mov r1,r1,lsr #16
9593  bic r0,r11,#0xff000000
9594  bl m68k_write16 ;@ Call write16(r0,r1) handler
9595
9596  ldr r5,[r7,#0x5c] ;@ Load Cycles
9597  ldrh r8,[r4],#2 ;@ Fetch next opcode
9598  subs r5,r5,#20 ;@ Subtract cycles
9599  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9600  b CycloneEnd
9601
9602;@ ---------- [0a79] eori.w #$3333, $33333333.l uses Op0a79 ----------
9603Op0a79:
9604  str r4,[r7,#0x50] ;@ Save prev PC + 2
9605  str r5,[r7,#0x5c] ;@ Save Cycles
9606
9607;@ EaCalc : Get '#$3333' into r10:
9608  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9609;@ EaRead : Read '#$3333' (address in r10) into r10:
9610
9611;@ EaCalc : Get '$33333333.l' into r11:
9612  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
9613  ldrh r0,[r4],#2
9614  orr r11,r0,r2,lsl #16
9615;@ EaRead : Read '$33333333.l' (address in r11) into r0:
9616  str r4,[r7,#0x40] ;@ Save PC
9617  bic r0,r11,#0xff000000
9618  bl m68k_read16 ;@ Call read16(r0) handler
9619
9620  mov r10,r10,asl #16
9621;@ Do arithmetic:
9622  eors r1,r10,r0,asl #16
9623  and r10,r1,#0x80000000 ;@ r10=N_flag
9624  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9625
9626;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
9627  mov r1,r1,lsr #16
9628  bic r0,r11,#0xff000000
9629  bl m68k_write16 ;@ Call write16(r0,r1) handler
9630
9631  ldr r5,[r7,#0x5c] ;@ Load Cycles
9632  ldrh r8,[r4],#2 ;@ Fetch next opcode
9633  subs r5,r5,#24 ;@ Subtract cycles
9634  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9635  b CycloneEnd
9636
9637;@ ---------- [0a7c] eori.w #$3333, sr uses Op0a7c ----------
9638Op0a7c:
9639  ldr r11,[r7,#0x44] ;@ Get SR high
9640  tst r11,#0x20 ;@ Check we are in supervisor mode
9641  beq WrongPrivilegeMode ;@ No
9642
9643;@ EaCalc : Get '#$3333' into r0:
9644  ldrsh r0,[r4],#2 ;@ Fetch immediate value
9645;@ EaRead : Read '#$3333' (address in r0) into r0:
9646
9647  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
9648  tst r1,#1           ;@ 1 if C!=V
9649  eorne r0,r0,#3      ;@ ___XNZCV
9650  ldr r2,[r7,#0x4c]   ;@ Load old X bit
9651  eor r10,r10,r0,lsl #28
9652  eor r2,r2,r0,lsl #25 ;@ X bit
9653  eor r1,r11,r0,lsr #8
9654  and r1,r1,#0xa7 ;@ mask-out unused bits
9655  str r2,[r7,#0x4c]   ;@ Save X bit
9656  strb r1,[r7,#0x44]
9657
9658;@ A7 <-> OSP?
9659  eor r0,r1,r11
9660  tst r0,#0x20
9661  beq no_sp_swap0a7c
9662 ;@ swap OSP and A7:
9663  ldr r11,[r7,#0x3C] ;@ Get A7
9664  ldr r0, [r7,#0x48] ;@ Get OSP
9665  str r11,[r7,#0x48]
9666  str r0, [r7,#0x3C]
9667no_sp_swap0a7c:
9668
9669  ldrh r8,[r4],#2 ;@ Fetch next opcode
9670  ldr r1,[r7,#0x44]
9671  subs r5,r5,#20 ;@ Subtract cycles
9672;@ CheckTrace:
9673  tst r1,#0x80
9674  bne CycloneDoTraceWithChecks
9675  cmp r5,#0
9676  ble CycloneEnd
9677;@ CheckInterrupt:
9678  movs r0,r1,lsr #24 ;@ Get IRQ level
9679  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
9680  cmp r0,#6 ;@ irq>6 ?
9681  andle r1,r1,#7 ;@ Get interrupt mask
9682  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
9683  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
9684  b CycloneDoInterruptGoBack
9685
9686;@ ---------- [0a80] eori.l #$33333333, d0 uses Op0a80 ----------
9687Op0a80:
9688;@ EaCalc : Get '#$33333333' into r10:
9689  ldrh r2,[r4],#2 ;@ Fetch immediate value
9690  ldrh r3,[r4],#2
9691  orr r10,r3,r2,lsl #16
9692;@ EaRead : Read '#$33333333' (address in r10) into r10:
9693
9694;@ EaCalc : Get register index into r11:
9695  and r11,r8,#0x000f
9696;@ EaRead : Read register[r11] into r0:
9697  ldr r0,[r7,r11,lsl #2]
9698
9699;@ Do arithmetic:
9700  eors r1,r10,r0
9701  and r10,r1,#0x80000000 ;@ r10=N_flag
9702  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9703
9704;@ EaWrite: r1 into register[r11]:
9705  str r1,[r7,r11,lsl #2]
9706
9707  ldrh r8,[r4],#2 ;@ Fetch next opcode
9708  subs r5,r5,#16 ;@ Subtract cycles
9709  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9710  b CycloneEnd
9711
9712;@ ---------- [0a90] eori.l #$33333333, (a0) uses Op0a90 ----------
9713Op0a90:
9714  str r4,[r7,#0x50] ;@ Save prev PC + 2
9715  str r5,[r7,#0x5c] ;@ Save Cycles
9716
9717;@ EaCalc : Get '#$33333333' into r10:
9718  ldrh r2,[r4],#2 ;@ Fetch immediate value
9719  ldrh r3,[r4],#2
9720  orr r10,r3,r2,lsl #16
9721;@ EaRead : Read '#$33333333' (address in r10) into r10:
9722
9723;@ EaCalc : Get '(a0)' into r11:
9724  and r2,r8,#0x000f
9725  orr r2,r2,#0x8 ;@ A0-7
9726  ldr r11,[r7,r2,lsl #2]
9727;@ EaRead : Read '(a0)' (address in r11) into r0:
9728  str r4,[r7,#0x40] ;@ Save PC
9729  bic r0,r11,#0xff000000
9730  bl m68k_read32 ;@ Call read32(r0) handler
9731
9732;@ Do arithmetic:
9733  eors r1,r10,r0
9734  and r10,r1,#0x80000000 ;@ r10=N_flag
9735  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9736
9737;@ EaWrite: Write r1 into '(a0)' (address in r11):
9738  bic r0,r11,#0xff000000
9739  bl m68k_write32 ;@ Call write32(r0,r1) handler
9740
9741  ldr r5,[r7,#0x5c] ;@ Load Cycles
9742  ldrh r8,[r4],#2 ;@ Fetch next opcode
9743  subs r5,r5,#28 ;@ Subtract cycles
9744  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9745  b CycloneEnd
9746
9747;@ ---------- [0a98] eori.l #$33333333, (a0)+ uses Op0a98 ----------
9748Op0a98:
9749  str r4,[r7,#0x50] ;@ Save prev PC + 2
9750  str r5,[r7,#0x5c] ;@ Save Cycles
9751
9752;@ EaCalc : Get '#$33333333' into r10:
9753  ldrh r2,[r4],#2 ;@ Fetch immediate value
9754  ldrh r3,[r4],#2
9755  orr r10,r3,r2,lsl #16
9756;@ EaRead : Read '#$33333333' (address in r10) into r10:
9757
9758;@ EaCalc : Get '(a0)+' into r11:
9759  and r2,r8,#0x000f
9760  ldr r11,[r7,r2,lsl #2]
9761  add r3,r11,#4 ;@ Post-increment An
9762  str r3,[r7,r2,lsl #2]
9763;@ EaRead : Read '(a0)+' (address in r11) into r0:
9764  str r4,[r7,#0x40] ;@ Save PC
9765  bic r0,r11,#0xff000000
9766  bl m68k_read32 ;@ Call read32(r0) handler
9767
9768;@ Do arithmetic:
9769  eors r1,r10,r0
9770  and r10,r1,#0x80000000 ;@ r10=N_flag
9771  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9772
9773;@ EaWrite: Write r1 into '(a0)+' (address in r11):
9774  bic r0,r11,#0xff000000
9775  bl m68k_write32 ;@ Call write32(r0,r1) handler
9776
9777  ldr r5,[r7,#0x5c] ;@ Load Cycles
9778  ldrh r8,[r4],#2 ;@ Fetch next opcode
9779  subs r5,r5,#28 ;@ Subtract cycles
9780  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9781  b CycloneEnd
9782
9783;@ ---------- [0aa0] eori.l #$33333333, -(a0) uses Op0aa0 ----------
9784Op0aa0:
9785  str r4,[r7,#0x50] ;@ Save prev PC + 2
9786  str r5,[r7,#0x5c] ;@ Save Cycles
9787
9788;@ EaCalc : Get '#$33333333' into r10:
9789  ldrh r2,[r4],#2 ;@ Fetch immediate value
9790  ldrh r3,[r4],#2
9791  orr r10,r3,r2,lsl #16
9792;@ EaRead : Read '#$33333333' (address in r10) into r10:
9793
9794;@ EaCalc : Get '-(a0)' into r11:
9795  and r2,r8,#0x000f
9796  orr r2,r2,#0x8 ;@ A0-7
9797  ldr r11,[r7,r2,lsl #2]
9798  sub r11,r11,#4 ;@ Pre-decrement An
9799  str r11,[r7,r2,lsl #2]
9800;@ EaRead : Read '-(a0)' (address in r11) into r0:
9801  str r4,[r7,#0x40] ;@ Save PC
9802  bic r0,r11,#0xff000000
9803  bl m68k_read32 ;@ Call read32(r0) handler
9804
9805;@ Do arithmetic:
9806  eors r1,r10,r0
9807  and r10,r1,#0x80000000 ;@ r10=N_flag
9808  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9809
9810;@ EaWrite: Write r1 into '-(a0)' (address in r11):
9811  bic r0,r11,#0xff000000
9812  bl m68k_write32 ;@ Call write32(r0,r1) handler
9813
9814  ldr r5,[r7,#0x5c] ;@ Load Cycles
9815  ldrh r8,[r4],#2 ;@ Fetch next opcode
9816  subs r5,r5,#30 ;@ Subtract cycles
9817  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9818  b CycloneEnd
9819
9820;@ ---------- [0aa8] eori.l #$33333333, ($3333,a0) uses Op0aa8 ----------
9821Op0aa8:
9822  str r4,[r7,#0x50] ;@ Save prev PC + 2
9823  str r5,[r7,#0x5c] ;@ Save Cycles
9824
9825;@ EaCalc : Get '#$33333333' into r10:
9826  ldrh r2,[r4],#2 ;@ Fetch immediate value
9827  ldrh r3,[r4],#2
9828  orr r10,r3,r2,lsl #16
9829;@ EaRead : Read '#$33333333' (address in r10) into r10:
9830
9831;@ EaCalc : Get '($3333,a0)' into r11:
9832  ldrsh r0,[r4],#2 ;@ Fetch offset
9833  and r2,r8,#0x000f
9834  ldr r2,[r7,r2,lsl #2]
9835  add r11,r0,r2 ;@ Add on offset
9836;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
9837  str r4,[r7,#0x40] ;@ Save PC
9838  bic r0,r11,#0xff000000
9839  bl m68k_read32 ;@ Call read32(r0) handler
9840
9841;@ Do arithmetic:
9842  eors r1,r10,r0
9843  and r10,r1,#0x80000000 ;@ r10=N_flag
9844  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9845
9846;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
9847  bic r0,r11,#0xff000000
9848  bl m68k_write32 ;@ Call write32(r0,r1) handler
9849
9850  ldr r5,[r7,#0x5c] ;@ Load Cycles
9851  ldrh r8,[r4],#2 ;@ Fetch next opcode
9852  subs r5,r5,#32 ;@ Subtract cycles
9853  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9854  b CycloneEnd
9855
9856;@ ---------- [0ab0] eori.l #$33333333, ($33,a0,d3.w*2) uses Op0ab0 ----------
9857Op0ab0:
9858  str r4,[r7,#0x50] ;@ Save prev PC + 2
9859  str r5,[r7,#0x5c] ;@ Save Cycles
9860
9861;@ EaCalc : Get '#$33333333' into r10:
9862  ldrh r2,[r4],#2 ;@ Fetch immediate value
9863  ldrh r3,[r4],#2
9864  orr r10,r3,r2,lsl #16
9865;@ EaRead : Read '#$33333333' (address in r10) into r10:
9866
9867;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
9868;@ Get extension word into r3:
9869  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
9870  mov r2,r3,lsr #10
9871  tst r3,#0x0800 ;@ Is Rn Word or Long
9872  and r2,r2,#0x3c ;@ r2=Index of Rn
9873  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
9874  ldrne   r2,[r7,r2] ;@ r2=Rn.l
9875  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
9876  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
9877  and r2,r8,#0x000f
9878  orr r2,r2,#0x8 ;@ A0-7
9879  ldr r2,[r7,r2,lsl #2]
9880  add r11,r2,r3 ;@ r11=Disp+An+Rn
9881;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
9882  str r4,[r7,#0x40] ;@ Save PC
9883  bic r0,r11,#0xff000000
9884  bl m68k_read32 ;@ Call read32(r0) handler
9885
9886;@ Do arithmetic:
9887  eors r1,r10,r0
9888  and r10,r1,#0x80000000 ;@ r10=N_flag
9889  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9890
9891;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
9892  bic r0,r11,#0xff000000
9893  bl m68k_write32 ;@ Call write32(r0,r1) handler
9894
9895  ldr r5,[r7,#0x5c] ;@ Load Cycles
9896  ldrh r8,[r4],#2 ;@ Fetch next opcode
9897  subs r5,r5,#34 ;@ Subtract cycles
9898  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9899  b CycloneEnd
9900
9901;@ ---------- [0ab8] eori.l #$33333333, $3333.w uses Op0ab8 ----------
9902Op0ab8:
9903  str r4,[r7,#0x50] ;@ Save prev PC + 2
9904  str r5,[r7,#0x5c] ;@ Save Cycles
9905
9906;@ EaCalc : Get '#$33333333' into r10:
9907  ldrh r2,[r4],#2 ;@ Fetch immediate value
9908  ldrh r3,[r4],#2
9909  orr r10,r3,r2,lsl #16
9910;@ EaRead : Read '#$33333333' (address in r10) into r10:
9911
9912;@ EaCalc : Get '$3333.w' into r11:
9913  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
9914;@ EaRead : Read '$3333.w' (address in r11) into r0:
9915  str r4,[r7,#0x40] ;@ Save PC
9916  bic r0,r11,#0xff000000
9917  bl m68k_read32 ;@ Call read32(r0) handler
9918
9919;@ Do arithmetic:
9920  eors r1,r10,r0
9921  and r10,r1,#0x80000000 ;@ r10=N_flag
9922  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9923
9924;@ EaWrite: Write r1 into '$3333.w' (address in r11):
9925  bic r0,r11,#0xff000000
9926  bl m68k_write32 ;@ Call write32(r0,r1) handler
9927
9928  ldr r5,[r7,#0x5c] ;@ Load Cycles
9929  ldrh r8,[r4],#2 ;@ Fetch next opcode
9930  subs r5,r5,#32 ;@ Subtract cycles
9931  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9932  b CycloneEnd
9933
9934;@ ---------- [0ab9] eori.l #$33333333, $33333333.l uses Op0ab9 ----------
9935Op0ab9:
9936  str r4,[r7,#0x50] ;@ Save prev PC + 2
9937  str r5,[r7,#0x5c] ;@ Save Cycles
9938
9939;@ EaCalc : Get '#$33333333' into r10:
9940  ldrh r2,[r4],#2 ;@ Fetch immediate value
9941  ldrh r3,[r4],#2
9942  orr r10,r3,r2,lsl #16
9943;@ EaRead : Read '#$33333333' (address in r10) into r10:
9944
9945;@ EaCalc : Get '$33333333.l' into r11:
9946  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
9947  ldrh r0,[r4],#2
9948  orr r11,r0,r2,lsl #16
9949;@ EaRead : Read '$33333333.l' (address in r11) into r0:
9950  str r4,[r7,#0x40] ;@ Save PC
9951  bic r0,r11,#0xff000000
9952  bl m68k_read32 ;@ Call read32(r0) handler
9953
9954;@ Do arithmetic:
9955  eors r1,r10,r0
9956  and r10,r1,#0x80000000 ;@ r10=N_flag
9957  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9958
9959;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
9960  bic r0,r11,#0xff000000
9961  bl m68k_write32 ;@ Call write32(r0,r1) handler
9962
9963  ldr r5,[r7,#0x5c] ;@ Load Cycles
9964  ldrh r8,[r4],#2 ;@ Fetch next opcode
9965  subs r5,r5,#36 ;@ Subtract cycles
9966  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9967  b CycloneEnd
9968
9969;@ ---------- [0c00] cmpi.b #$33, d0 uses Op0c00 ----------
9970Op0c00:
9971;@ EaCalc : Get '#$33' into r10:
9972  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9973;@ EaRead : Read '#$33' (address in r10) into r10:
9974
9975;@ EaCalc : Get register index into r0:
9976  and r0,r8,#0x000f
9977;@ EaRead : Read register[r0] into r0:
9978  ldr r0,[r7,r0,lsl #2]
9979
9980  mov r10,r10,asl #24
9981;@ Do arithmetic:
9982  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9983  mrs r10,cpsr ;@ r10=flags
9984  eor r10,r10,#0x20000000 ;@ Invert carry
9985
9986  ldrh r8,[r4],#2 ;@ Fetch next opcode
9987  subs r5,r5,#8 ;@ Subtract cycles
9988  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9989  b CycloneEnd
9990
9991;@ ---------- [0c10] cmpi.b #$33, (a0) uses Op0c10 ----------
9992Op0c10:
9993  str r4,[r7,#0x50] ;@ Save prev PC + 2
9994  str r5,[r7,#0x5c] ;@ Save Cycles
9995
9996;@ EaCalc : Get '#$33' into r10:
9997  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9998;@ EaRead : Read '#$33' (address in r10) into r10:
9999
10000;@ EaCalc : Get '(a0)' into r0:
10001  and r2,r8,#0x000f
10002  orr r2,r2,#0x8 ;@ A0-7
10003  ldr r0,[r7,r2,lsl #2]
10004;@ EaRead : Read '(a0)' (address in r0) into r0:
10005  str r4,[r7,#0x40] ;@ Save PC
10006  bic r0,r0,#0xff000000
10007  bl m68k_read8 ;@ Call read8(r0) handler
10008
10009  mov r10,r10,asl #24
10010;@ Do arithmetic:
10011  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
10012  mrs r10,cpsr ;@ r10=flags
10013  eor r10,r10,#0x20000000 ;@ Invert carry
10014
10015  ldr r5,[r7,#0x5c] ;@ Load Cycles
10016  ldrh r8,[r4],#2 ;@ Fetch next opcode
10017  subs r5,r5,#12 ;@ Subtract cycles
10018  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10019  b CycloneEnd
10020
10021;@ ---------- [0c18] cmpi.b #$33, (a0)+ uses Op0c18 ----------
10022Op0c18:
10023  str r4,[r7,#0x50] ;@ Save prev PC + 2
10024  str r5,[r7,#0x5c] ;@ Save Cycles
10025
10026;@ EaCalc : Get '#$33' into r10:
10027  ldrsb r10,[r4],#2 ;@ Fetch immediate value
10028;@ EaRead : Read '#$33' (address in r10) into r10:
10029
10030;@ EaCalc : Get '(a0)+' into r0:
10031  and r2,r8,#0x000f
10032  ldr r0,[r7,r2,lsl #2]
10033  add r3,r0,#1 ;@ Post-increment An
10034  str r3,[r7,r2,lsl #2]
10035;@ EaRead : Read '(a0)+' (address in r0) into r0:
10036  str r4,[r7,#0x40] ;@ Save PC
10037  bic r0,r0,#0xff000000
10038  bl m68k_read8 ;@ Call read8(r0) handler
10039
10040  mov r10,r10,asl #24
10041;@ Do arithmetic:
10042  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
10043  mrs r10,cpsr ;@ r10=flags
10044  eor r10,r10,#0x20000000 ;@ Invert carry
10045
10046  ldr r5,[r7,#0x5c] ;@ Load Cycles
10047  ldrh r8,[r4],#2 ;@ Fetch next opcode
10048  subs r5,r5,#12 ;@ Subtract cycles
10049  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10050  b CycloneEnd
10051
10052;@ ---------- [0c1f] cmpi.b #$33, (a7)+ uses Op0c1f ----------
10053Op0c1f:
10054  str r4,[r7,#0x50] ;@ Save prev PC + 2
10055  str r5,[r7,#0x5c] ;@ Save Cycles
10056
10057;@ EaCalc : Get '#$33' into r10:
10058  ldrsb r10,[r4],#2 ;@ Fetch immediate value
10059;@ EaRead : Read '#$33' (address in r10) into r10:
10060
10061;@ EaCalc : Get '(a7)+' into r0:
10062  ldr r0,[r7,#0x3c] ;@ A7
10063  add r3,r0,#2 ;@ Post-increment An
10064  str r3,[r7,#0x3c] ;@ A7
10065;@ EaRead : Read '(a7)+' (address in r0) into r0:
10066  str r4,[r7,#0x40] ;@ Save PC
10067  bic r0,r0,#0xff000000
10068  bl m68k_read8 ;@ Call read8(r0) handler
10069
10070  mov r10,r10,asl #24
10071;@ Do arithmetic:
10072  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
10073  mrs r10,cpsr ;@ r10=flags
10074  eor r10,r10,#0x20000000 ;@ Invert carry
10075
10076  ldr r5,[r7,#0x5c] ;@ Load Cycles
10077  ldrh r8,[r4],#2 ;@ Fetch next opcode
10078  subs r5,r5,#12 ;@ Subtract cycles
10079  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10080  b CycloneEnd
10081
10082;@ ---------- [0c20] cmpi.b #$33, -(a0) uses Op0c20 ----------
10083Op0c20:
10084  str r4,[r7,#0x50] ;@ Save prev PC + 2
10085  str r5,[r7,#0x5c] ;@ Save Cycles
10086
10087;@ EaCalc : Get '#$33' into r10:
10088  ldrsb r10,[r4],#2 ;@ Fetch immediate value
10089;@ EaRead : Read '#$33' (address in r10) into r10:
10090
10091;@ EaCalc : Get '-(a0)' into r0:
10092  and r2,r8,#0x000f
10093  orr r2,r2,#0x8 ;@ A0-7
10094  ldr r0,[r7,r2,lsl #2]
10095  sub r0,r0,#1 ;@ Pre-decrement An
10096  str r0,[r7,r2,lsl #2]
10097;@ EaRead : Read '-(a0)' (address in r0) into r0:
10098  str r4,[r7,#0x40] ;@ Save PC
10099  bic r0,r0,#0xff000000
10100  bl m68k_read8 ;@ Call read8(r0) handler
10101
10102  mov r10,r10,asl #24
10103;@ Do arithmetic:
10104  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
10105  mrs r10,cpsr ;@ r10=flags
10106  eor r10,r10,#0x20000000 ;@ Invert carry
10107
10108  ldr r5,[r7,#0x5c] ;@ Load Cycles
10109  ldrh r8,[r4],#2 ;@ Fetch next opcode
10110  subs r5,r5,#14 ;@ Subtract cycles
10111  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10112  b CycloneEnd
10113
10114;@ ---------- [0c27] cmpi.b #$33, -(a7) uses Op0c27 ----------
10115Op0c27:
10116  str r4,[r7,#0x50] ;@ Save prev PC + 2
10117  str r5,[r7,#0x5c] ;@ Save Cycles
10118
10119;@ EaCalc : Get '#$33' into r10:
10120  ldrsb r10,[r4],#2 ;@ Fetch immediate value
10121;@ EaRead : Read '#$33' (address in r10) into r10:
10122
10123;@ EaCalc : Get '-(a7)' into r0:
10124  ldr r0,[r7,#0x3c] ;@ A7
10125  sub r0,r0,#2 ;@ Pre-decrement An
10126  str r0,[r7,#0x3c] ;@ A7
10127;@ EaRead : Read '-(a7)' (address in r0) into r0:
10128  str r4,[r7,#0x40] ;@ Save PC
10129  bic r0,r0,#0xff000000
10130  bl m68k_read8 ;@ Call read8(r0) handler
10131
10132  mov r10,r10,asl #24
10133;@ Do arithmetic:
10134  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
10135  mrs r10,cpsr ;@ r10=flags
10136  eor r10,r10,#0x20000000 ;@ Invert carry
10137
10138  ldr r5,[r7,#0x5c] ;@ Load Cycles
10139  ldrh r8,[r4],#2 ;@ Fetch next opcode
10140  subs r5,r5,#14 ;@ Subtract cycles
10141  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10142  b CycloneEnd
10143
10144;@ ---------- [0c28] cmpi.b #$33, ($3333,a0) uses Op0c28 ----------
10145Op0c28:
10146  str r4,[r7,#0x50] ;@ Save prev PC + 2
10147  str r5,[r7,#0x5c] ;@ Save Cycles
10148
10149;@ EaCalc : Get '#$33' into r10:
10150  ldrsb r10,[r4],#2 ;@ Fetch immediate value
10151;@ EaRead : Read '#$33' (address in r10) into r10:
10152
10153;@ EaCalc : Get '($3333,a0)' into r0:
10154  ldrsh r0,[r4],#2 ;@ Fetch offset
10155  and r2,r8,#0x000f
10156  ldr r2,[r7,r2,lsl #2]
10157  add r0,r0,r2 ;@ Add on offset
10158;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
10159  str r4,[r7,#0x40] ;@ Save PC
10160  bic r0,r0,#0xff000000
10161  bl m68k_read8 ;@ Call read8(r0) handler
10162
10163  mov r10,r10,asl #24
10164;@ Do arithmetic:
10165  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
10166  mrs r10,cpsr ;@ r10=flags
10167  eor r10,r10,#0x20000000 ;@ Invert carry
10168
10169  ldr r5,[r7,#0x5c] ;@ Load Cycles
10170  ldrh r8,[r4],#2 ;@ Fetch next opcode
10171  subs r5,r5,#16 ;@ Subtract cycles
10172  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10173  b CycloneEnd
10174
10175;@ ---------- [0c30] cmpi.b #$33, ($33,a0,d3.w*2) uses Op0c30 ----------
10176Op0c30:
10177  str r4,[r7,#0x50] ;@ Save prev PC + 2
10178  str r5,[r7,#0x5c] ;@ Save Cycles
10179
10180;@ EaCalc : Get '#$33' into r10:
10181  ldrsb r10,[r4],#2 ;@ Fetch immediate value
10182;@ EaRead : Read '#$33' (address in r10) into r10:
10183
10184;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
10185;@ Get extension word into r3:
10186  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
10187  mov r2,r3,lsr #10
10188  tst r3,#0x0800 ;@ Is Rn Word or Long
10189  and r2,r2,#0x3c ;@ r2=Index of Rn
10190  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
10191  ldrne   r2,[r7,r2] ;@ r2=Rn.l
10192  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
10193  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
10194  and r2,r8,#0x000f
10195  orr r2,r2,#0x8 ;@ A0-7
10196  ldr r2,[r7,r2,lsl #2]
10197  add r0,r2,r3 ;@ r0=Disp+An+Rn
10198;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
10199  str r4,[r7,#0x40] ;@ Save PC
10200  bic r0,r0,#0xff000000
10201  bl m68k_read8 ;@ Call read8(r0) handler
10202
10203  mov r10,r10,asl #24
10204;@ Do arithmetic:
10205  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
10206  mrs r10,cpsr ;@ r10=flags
10207  eor r10,r10,#0x20000000 ;@ Invert carry
10208
10209  ldr r5,[r7,#0x5c] ;@ Load Cycles
10210  ldrh r8,[r4],#2 ;@ Fetch next opcode
10211  subs r5,r5,#18 ;@ Subtract cycles
10212  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10213  b CycloneEnd
10214
10215;@ ---------- [0c38] cmpi.b #$33, $3333.w uses Op0c38 ----------
10216Op0c38:
10217  str r4,[r7,#0x50] ;@ Save prev PC + 2
10218  str r5,[r7,#0x5c] ;@ Save Cycles
10219
10220;@ EaCalc : Get '#$33' into r10:
10221  ldrsb r10,[r4],#2 ;@ Fetch immediate value
10222;@ EaRead : Read '#$33' (address in r10) into r10:
10223
10224;@ EaCalc : Get '$3333.w' into r0:
10225  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
10226;@ EaRead : Read '$3333.w' (address in r0) into r0:
10227  str r4,[r7,#0x40] ;@ Save PC
10228  bic r0,r0,#0xff000000
10229  bl m68k_read8 ;@ Call read8(r0) handler
10230
10231  mov r10,r10,asl #24
10232;@ Do arithmetic:
10233  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
10234  mrs r10,cpsr ;@ r10=flags
10235  eor r10,r10,#0x20000000 ;@ Invert carry
10236
10237  ldr r5,[r7,#0x5c] ;@ Load Cycles
10238  ldrh r8,[r4],#2 ;@ Fetch next opcode
10239  subs r5,r5,#16 ;@ Subtract cycles
10240  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10241  b CycloneEnd
10242
10243;@ ---------- [0c39] cmpi.b #$33, $33333333.l uses Op0c39 ----------
10244Op0c39:
10245  str r4,[r7,#0x50] ;@ Save prev PC + 2
10246  str r5,[r7,#0x5c] ;@ Save Cycles
10247
10248;@ EaCalc : Get '#$33' into r10:
10249  ldrsb r10,[r4],#2 ;@ Fetch immediate value
10250;@ EaRead : Read '#$33' (address in r10) into r10:
10251
10252;@ EaCalc : Get '$33333333.l' into r0:
10253  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
10254  ldrh r0,[r4],#2
10255  orr r0,r0,r2,lsl #16
10256;@ EaRead : Read '$33333333.l' (address in r0) into r0:
10257  str r4,[r7,#0x40] ;@ Save PC
10258  bic r0,r0,#0xff000000
10259  bl m68k_read8 ;@ Call read8(r0) handler
10260
10261  mov r10,r10,asl #24
10262;@ Do arithmetic:
10263  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
10264  mrs r10,cpsr ;@ r10=flags
10265  eor r10,r10,#0x20000000 ;@ Invert carry
10266
10267  ldr r5,[r7,#0x5c] ;@ Load Cycles
10268  ldrh r8,[r4],#2 ;@ Fetch next opcode
10269  subs r5,r5,#20 ;@ Subtract cycles
10270  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10271  b CycloneEnd
10272
10273;@ ---------- [0c50] cmpi.w #$3333, (a0) uses Op0c50 ----------
10274Op0c50:
10275  str r4,[r7,#0x50] ;@ Save prev PC + 2
10276  str r5,[r7,#0x5c] ;@ Save Cycles
10277
10278;@ EaCalc : Get '#$3333' into r10:
10279  ldrsh r10,[r4],#2 ;@ Fetch immediate value
10280;@ EaRead : Read '#$3333' (address in r10) into r10:
10281
10282;@ EaCalc : Get '(a0)' into r0:
10283  and r2,r8,#0x000f
10284  orr r2,r2,#0x8 ;@ A0-7
10285  ldr r0,[r7,r2,lsl #2]
10286;@ EaRead : Read '(a0)' (address in r0) into r0:
10287  str r4,[r7,#0x40] ;@ Save PC
10288  bic r0,r0,#0xff000000
10289  bl m68k_read16 ;@ Call read16(r0) handler
10290
10291  mov r10,r10,asl #16
10292;@ Do arithmetic:
10293  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
10294  mrs r10,cpsr ;@ r10=flags
10295  eor r10,r10,#0x20000000 ;@ Invert carry
10296
10297  ldr r5,[r7,#0x5c] ;@ Load Cycles
10298  ldrh r8,[r4],#2 ;@ Fetch next opcode
10299  subs r5,r5,#12 ;@ Subtract cycles
10300  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10301  b CycloneEnd
10302
10303;@ ---------- [0c58] cmpi.w #$3333, (a0)+ uses Op0c58 ----------
10304Op0c58:
10305  str r4,[r7,#0x50] ;@ Save prev PC + 2
10306  str r5,[r7,#0x5c] ;@ Save Cycles
10307
10308;@ EaCalc : Get '#$3333' into r10:
10309  ldrsh r10,[r4],#2 ;@ Fetch immediate value
10310;@ EaRead : Read '#$3333' (address in r10) into r10:
10311
10312;@ EaCalc : Get '(a0)+' into r0:
10313  and r2,r8,#0x000f
10314  ldr r0,[r7,r2,lsl #2]
10315  add r3,r0,#2 ;@ Post-increment An
10316  str r3,[r7,r2,lsl #2]
10317;@ EaRead : Read '(a0)+' (address in r0) into r0:
10318  str r4,[r7,#0x40] ;@ Save PC
10319  bic r0,r0,#0xff000000
10320  bl m68k_read16 ;@ Call read16(r0) handler
10321
10322  mov r10,r10,asl #16
10323;@ Do arithmetic:
10324  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
10325  mrs r10,cpsr ;@ r10=flags
10326  eor r10,r10,#0x20000000 ;@ Invert carry
10327
10328  ldr r5,[r7,#0x5c] ;@ Load Cycles
10329  ldrh r8,[r4],#2 ;@ Fetch next opcode
10330  subs r5,r5,#12 ;@ Subtract cycles
10331  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10332  b CycloneEnd
10333
10334;@ ---------- [0c60] cmpi.w #$3333, -(a0) uses Op0c60 ----------
10335Op0c60:
10336  str r4,[r7,#0x50] ;@ Save prev PC + 2
10337  str r5,[r7,#0x5c] ;@ Save Cycles
10338
10339;@ EaCalc : Get '#$3333' into r10:
10340  ldrsh r10,[r4],#2 ;@ Fetch immediate value
10341;@ EaRead : Read '#$3333' (address in r10) into r10:
10342
10343;@ EaCalc : Get '-(a0)' into r0:
10344  and r2,r8,#0x000f
10345  orr r2,r2,#0x8 ;@ A0-7
10346  ldr r0,[r7,r2,lsl #2]
10347  sub r0,r0,#2 ;@ Pre-decrement An
10348  str r0,[r7,r2,lsl #2]
10349;@ EaRead : Read '-(a0)' (address in r0) into r0:
10350  str r4,[r7,#0x40] ;@ Save PC
10351  bic r0,r0,#0xff000000
10352  bl m68k_read16 ;@ Call read16(r0) handler
10353
10354  mov r10,r10,asl #16
10355;@ Do arithmetic:
10356  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
10357  mrs r10,cpsr ;@ r10=flags
10358  eor r10,r10,#0x20000000 ;@ Invert carry
10359
10360  ldr r5,[r7,#0x5c] ;@ Load Cycles
10361  ldrh r8,[r4],#2 ;@ Fetch next opcode
10362  subs r5,r5,#14 ;@ Subtract cycles
10363  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10364  b CycloneEnd
10365
10366;@ ---------- [0c68] cmpi.w #$3333, ($3333,a0) uses Op0c68 ----------
10367Op0c68:
10368  str r4,[r7,#0x50] ;@ Save prev PC + 2
10369  str r5,[r7,#0x5c] ;@ Save Cycles
10370
10371;@ EaCalc : Get '#$3333' into r10:
10372  ldrsh r10,[r4],#2 ;@ Fetch immediate value
10373;@ EaRead : Read '#$3333' (address in r10) into r10:
10374
10375;@ EaCalc : Get '($3333,a0)' into r0:
10376  ldrsh r0,[r4],#2 ;@ Fetch offset
10377  and r2,r8,#0x000f
10378  ldr r2,[r7,r2,lsl #2]
10379  add r0,r0,r2 ;@ Add on offset
10380;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
10381  str r4,[r7,#0x40] ;@ Save PC
10382  bic r0,r0,#0xff000000
10383  bl m68k_read16 ;@ Call read16(r0) handler
10384
10385  mov r10,r10,asl #16
10386;@ Do arithmetic:
10387  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
10388  mrs r10,cpsr ;@ r10=flags
10389  eor r10,r10,#0x20000000 ;@ Invert carry
10390
10391  ldr r5,[r7,#0x5c] ;@ Load Cycles
10392  ldrh r8,[r4],#2 ;@ Fetch next opcode
10393  subs r5,r5,#16 ;@ Subtract cycles
10394  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10395  b CycloneEnd
10396
10397;@ ---------- [0c70] cmpi.w #$3333, ($33,a0,d3.w*2) uses Op0c70 ----------
10398Op0c70:
10399  str r4,[r7,#0x50] ;@ Save prev PC + 2
10400  str r5,[r7,#0x5c] ;@ Save Cycles
10401
10402;@ EaCalc : Get '#$3333' into r10:
10403  ldrsh r10,[r4],#2 ;@ Fetch immediate value
10404;@ EaRead : Read '#$3333' (address in r10) into r10:
10405
10406;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
10407;@ Get extension word into r3:
10408  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
10409  mov r2,r3,lsr #10
10410  tst r3,#0x0800 ;@ Is Rn Word or Long
10411  and r2,r2,#0x3c ;@ r2=Index of Rn
10412  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
10413  ldrne   r2,[r7,r2] ;@ r2=Rn.l
10414  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
10415  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
10416  and r2,r8,#0x000f
10417  orr r2,r2,#0x8 ;@ A0-7
10418  ldr r2,[r7,r2,lsl #2]
10419  add r0,r2,r3 ;@ r0=Disp+An+Rn
10420;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
10421  str r4,[r7,#0x40] ;@ Save PC
10422  bic r0,r0,#0xff000000
10423  bl m68k_read16 ;@ Call read16(r0) handler
10424
10425  mov r10,r10,asl #16
10426;@ Do arithmetic:
10427  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
10428  mrs r10,cpsr ;@ r10=flags
10429  eor r10,r10,#0x20000000 ;@ Invert carry
10430
10431  ldr r5,[r7,#0x5c] ;@ Load Cycles
10432  ldrh r8,[r4],#2 ;@ Fetch next opcode
10433  subs r5,r5,#18 ;@ Subtract cycles
10434  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10435  b CycloneEnd
10436
10437;@ ---------- [0c78] cmpi.w #$3333, $3333.w uses Op0c78 ----------
10438Op0c78:
10439  str r4,[r7,#0x50] ;@ Save prev PC + 2
10440  str r5,[r7,#0x5c] ;@ Save Cycles
10441
10442;@ EaCalc : Get '#$3333' into r10:
10443  ldrsh r10,[r4],#2 ;@ Fetch immediate value
10444;@ EaRead : Read '#$3333' (address in r10) into r10:
10445
10446;@ EaCalc : Get '$3333.w' into r0:
10447  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
10448;@ EaRead : Read '$3333.w' (address in r0) into r0:
10449  str r4,[r7,#0x40] ;@ Save PC
10450  bic r0,r0,#0xff000000
10451  bl m68k_read16 ;@ Call read16(r0) handler
10452
10453  mov r10,r10,asl #16
10454;@ Do arithmetic:
10455  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
10456  mrs r10,cpsr ;@ r10=flags
10457  eor r10,r10,#0x20000000 ;@ Invert carry
10458
10459  ldr r5,[r7,#0x5c] ;@ Load Cycles
10460  ldrh r8,[r4],#2 ;@ Fetch next opcode
10461  subs r5,r5,#16 ;@ Subtract cycles
10462  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10463  b CycloneEnd
10464
10465;@ ---------- [0c80] cmpi.l #$33333333, d0 uses Op0c80 ----------
10466Op0c80:
10467;@ EaCalc : Get '#$33333333' into r10:
10468  ldrh r2,[r4],#2 ;@ Fetch immediate value
10469  ldrh r3,[r4],#2
10470  orr r10,r3,r2,lsl #16
10471;@ EaRead : Read '#$33333333' (address in r10) into r10:
10472
10473;@ EaCalc : Get register index into r0:
10474  and r0,r8,#0x000f
10475;@ EaRead : Read register[r0] into r0:
10476  ldr r0,[r7,r0,lsl #2]
10477
10478;@ Do arithmetic:
10479  rsbs r1,r10,r0 ;@ Defines NZCV
10480  mrs r10,cpsr ;@ r10=flags
10481  eor r10,r10,#0x20000000 ;@ Invert carry
10482
10483  ldrh r8,[r4],#2 ;@ Fetch next opcode
10484  subs r5,r5,#14 ;@ Subtract cycles
10485  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10486  b CycloneEnd
10487
10488;@ ---------- [0c90] cmpi.l #$33333333, (a0) uses Op0c90 ----------
10489Op0c90:
10490  str r4,[r7,#0x50] ;@ Save prev PC + 2
10491  str r5,[r7,#0x5c] ;@ Save Cycles
10492
10493;@ EaCalc : Get '#$33333333' into r10:
10494  ldrh r2,[r4],#2 ;@ Fetch immediate value
10495  ldrh r3,[r4],#2
10496  orr r10,r3,r2,lsl #16
10497;@ EaRead : Read '#$33333333' (address in r10) into r10:
10498
10499;@ EaCalc : Get '(a0)' into r0:
10500  and r2,r8,#0x000f
10501  orr r2,r2,#0x8 ;@ A0-7
10502  ldr r0,[r7,r2,lsl #2]
10503;@ EaRead : Read '(a0)' (address in r0) into r0:
10504  str r4,[r7,#0x40] ;@ Save PC
10505  bic r0,r0,#0xff000000
10506  bl m68k_read32 ;@ Call read32(r0) handler
10507
10508;@ Do arithmetic:
10509  rsbs r1,r10,r0 ;@ Defines NZCV
10510  mrs r10,cpsr ;@ r10=flags
10511  eor r10,r10,#0x20000000 ;@ Invert carry
10512
10513  ldr r5,[r7,#0x5c] ;@ Load Cycles
10514  ldrh r8,[r4],#2 ;@ Fetch next opcode
10515  subs r5,r5,#20 ;@ Subtract cycles
10516  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10517  b CycloneEnd
10518
10519;@ ---------- [0c98] cmpi.l #$33333333, (a0)+ uses Op0c98 ----------
10520Op0c98:
10521  str r4,[r7,#0x50] ;@ Save prev PC + 2
10522  str r5,[r7,#0x5c] ;@ Save Cycles
10523
10524;@ EaCalc : Get '#$33333333' into r10:
10525  ldrh r2,[r4],#2 ;@ Fetch immediate value
10526  ldrh r3,[r4],#2
10527  orr r10,r3,r2,lsl #16
10528;@ EaRead : Read '#$33333333' (address in r10) into r10:
10529
10530;@ EaCalc : Get '(a0)+' into r0:
10531  and r2,r8,#0x000f
10532  ldr r0,[r7,r2,lsl #2]
10533  add r3,r0,#4 ;@ Post-increment An
10534  str r3,[r7,r2,lsl #2]
10535;@ EaRead : Read '(a0)+' (address in r0) into r0:
10536  str r4,[r7,#0x40] ;@ Save PC
10537  bic r0,r0,#0xff000000
10538  bl m68k_read32 ;@ Call read32(r0) handler
10539
10540;@ Do arithmetic:
10541  rsbs r1,r10,r0 ;@ Defines NZCV
10542  mrs r10,cpsr ;@ r10=flags
10543  eor r10,r10,#0x20000000 ;@ Invert carry
10544
10545  ldr r5,[r7,#0x5c] ;@ Load Cycles
10546  ldrh r8,[r4],#2 ;@ Fetch next opcode
10547  subs r5,r5,#20 ;@ Subtract cycles
10548  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10549  b CycloneEnd
10550
10551;@ ---------- [0ca0] cmpi.l #$33333333, -(a0) uses Op0ca0 ----------
10552Op0ca0:
10553  str r4,[r7,#0x50] ;@ Save prev PC + 2
10554  str r5,[r7,#0x5c] ;@ Save Cycles
10555
10556;@ EaCalc : Get '#$33333333' into r10:
10557  ldrh r2,[r4],#2 ;@ Fetch immediate value
10558  ldrh r3,[r4],#2
10559  orr r10,r3,r2,lsl #16
10560;@ EaRead : Read '#$33333333' (address in r10) into r10:
10561
10562;@ EaCalc : Get '-(a0)' into r0:
10563  and r2,r8,#0x000f
10564  orr r2,r2,#0x8 ;@ A0-7
10565  ldr r0,[r7,r2,lsl #2]
10566  sub r0,r0,#4 ;@ Pre-decrement An
10567  str r0,[r7,r2,lsl #2]
10568;@ EaRead : Read '-(a0)' (address in r0) into r0:
10569  str r4,[r7,#0x40] ;@ Save PC
10570  bic r0,r0,#0xff000000
10571  bl m68k_read32 ;@ Call read32(r0) handler
10572
10573;@ Do arithmetic:
10574  rsbs r1,r10,r0 ;@ Defines NZCV
10575  mrs r10,cpsr ;@ r10=flags
10576  eor r10,r10,#0x20000000 ;@ Invert carry
10577
10578  ldr r5,[r7,#0x5c] ;@ Load Cycles
10579  ldrh r8,[r4],#2 ;@ Fetch next opcode
10580  subs r5,r5,#22 ;@ Subtract cycles
10581  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10582  b CycloneEnd
10583
10584;@ ---------- [0ca8] cmpi.l #$33333333, ($3333,a0) uses Op0ca8 ----------
10585Op0ca8:
10586  str r4,[r7,#0x50] ;@ Save prev PC + 2
10587  str r5,[r7,#0x5c] ;@ Save Cycles
10588
10589;@ EaCalc : Get '#$33333333' into r10:
10590  ldrh r2,[r4],#2 ;@ Fetch immediate value
10591  ldrh r3,[r4],#2
10592  orr r10,r3,r2,lsl #16
10593;@ EaRead : Read '#$33333333' (address in r10) into r10:
10594
10595;@ EaCalc : Get '($3333,a0)' into r0:
10596  ldrsh r0,[r4],#2 ;@ Fetch offset
10597  and r2,r8,#0x000f
10598  ldr r2,[r7,r2,lsl #2]
10599  add r0,r0,r2 ;@ Add on offset
10600;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
10601  str r4,[r7,#0x40] ;@ Save PC
10602  bic r0,r0,#0xff000000
10603  bl m68k_read32 ;@ Call read32(r0) handler
10604
10605;@ Do arithmetic:
10606  rsbs r1,r10,r0 ;@ Defines NZCV
10607  mrs r10,cpsr ;@ r10=flags
10608  eor r10,r10,#0x20000000 ;@ Invert carry
10609
10610  ldr r5,[r7,#0x5c] ;@ Load Cycles
10611  ldrh r8,[r4],#2 ;@ Fetch next opcode
10612  subs r5,r5,#24 ;@ Subtract cycles
10613  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10614  b CycloneEnd
10615
10616;@ ---------- [0cb0] cmpi.l #$33333333, ($33,a0,d3.w*2) uses Op0cb0 ----------
10617Op0cb0:
10618  str r4,[r7,#0x50] ;@ Save prev PC + 2
10619  str r5,[r7,#0x5c] ;@ Save Cycles
10620
10621;@ EaCalc : Get '#$33333333' into r10:
10622  ldrh r2,[r4],#2 ;@ Fetch immediate value
10623  ldrh r3,[r4],#2
10624  orr r10,r3,r2,lsl #16
10625;@ EaRead : Read '#$33333333' (address in r10) into r10:
10626
10627;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
10628;@ Get extension word into r3:
10629  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
10630  mov r2,r3,lsr #10
10631  tst r3,#0x0800 ;@ Is Rn Word or Long
10632  and r2,r2,#0x3c ;@ r2=Index of Rn
10633  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
10634  ldrne   r2,[r7,r2] ;@ r2=Rn.l
10635  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
10636  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
10637  and r2,r8,#0x000f
10638  orr r2,r2,#0x8 ;@ A0-7
10639  ldr r2,[r7,r2,lsl #2]
10640  add r0,r2,r3 ;@ r0=Disp+An+Rn
10641;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
10642  str r4,[r7,#0x40] ;@ Save PC
10643  bic r0,r0,#0xff000000
10644  bl m68k_read32 ;@ Call read32(r0) handler
10645
10646;@ Do arithmetic:
10647  rsbs r1,r10,r0 ;@ Defines NZCV
10648  mrs r10,cpsr ;@ r10=flags
10649  eor r10,r10,#0x20000000 ;@ Invert carry
10650
10651  ldr r5,[r7,#0x5c] ;@ Load Cycles
10652  ldrh r8,[r4],#2 ;@ Fetch next opcode
10653  subs r5,r5,#26 ;@ Subtract cycles
10654  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10655  b CycloneEnd
10656
10657;@ ---------- [0cb8] cmpi.l #$33333333, $3333.w uses Op0cb8 ----------
10658Op0cb8:
10659  str r4,[r7,#0x50] ;@ Save prev PC + 2
10660  str r5,[r7,#0x5c] ;@ Save Cycles
10661
10662;@ EaCalc : Get '#$33333333' into r10:
10663  ldrh r2,[r4],#2 ;@ Fetch immediate value
10664  ldrh r3,[r4],#2
10665  orr r10,r3,r2,lsl #16
10666;@ EaRead : Read '#$33333333' (address in r10) into r10:
10667
10668;@ EaCalc : Get '$3333.w' into r0:
10669  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
10670;@ EaRead : Read '$3333.w' (address in r0) into r0:
10671  str r4,[r7,#0x40] ;@ Save PC
10672  bic r0,r0,#0xff000000
10673  bl m68k_read32 ;@ Call read32(r0) handler
10674
10675;@ Do arithmetic:
10676  rsbs r1,r10,r0 ;@ Defines NZCV
10677  mrs r10,cpsr ;@ r10=flags
10678  eor r10,r10,#0x20000000 ;@ Invert carry
10679
10680  ldr r5,[r7,#0x5c] ;@ Load Cycles
10681  ldrh r8,[r4],#2 ;@ Fetch next opcode
10682  subs r5,r5,#24 ;@ Subtract cycles
10683  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10684  b CycloneEnd
10685
10686;@ ---------- [0cb9] cmpi.l #$33333333, $33333333.l uses Op0cb9 ----------
10687Op0cb9:
10688  str r4,[r7,#0x50] ;@ Save prev PC + 2
10689  str r5,[r7,#0x5c] ;@ Save Cycles
10690
10691;@ EaCalc : Get '#$33333333' into r10:
10692  ldrh r2,[r4],#2 ;@ Fetch immediate value
10693  ldrh r3,[r4],#2
10694  orr r10,r3,r2,lsl #16
10695;@ EaRead : Read '#$33333333' (address in r10) into r10:
10696
10697;@ EaCalc : Get '$33333333.l' into r0:
10698  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
10699  ldrh r0,[r4],#2
10700  orr r0,r0,r2,lsl #16
10701;@ EaRead : Read '$33333333.l' (address in r0) into r0:
10702  str r4,[r7,#0x40] ;@ Save PC
10703  bic r0,r0,#0xff000000
10704  bl m68k_read32 ;@ Call read32(r0) handler
10705
10706;@ Do arithmetic:
10707  rsbs r1,r10,r0 ;@ Defines NZCV
10708  mrs r10,cpsr ;@ r10=flags
10709  eor r10,r10,#0x20000000 ;@ Invert carry
10710
10711  ldr r5,[r7,#0x5c] ;@ Load Cycles
10712  ldrh r8,[r4],#2 ;@ Fetch next opcode
10713  subs r5,r5,#28 ;@ Subtract cycles
10714  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10715  b CycloneEnd
10716
10717;@ ---------- [1000] move.b d0, d0 uses Op1000 ----------
10718Op1000:
10719;@ EaCalc : Get register index into r1:
10720  and r1,r8,#0x000f
10721;@ EaRead : Read register[r1] into r1:
10722  ldrb r1,[r7,r1,lsl #2]
10723
10724  movs r2,r1,lsl #24
10725  and r10,r2,#0x80000000 ;@ r10=N_flag
10726  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10727
10728;@ EaCalc : Get register index into r0:
10729  and r0,r8,#0x0e00
10730;@ EaWrite: r1 into register[r0]:
10731  strb r1,[r7,r0,lsr #7]
10732
10733  ldrh r8,[r4],#2 ;@ Fetch next opcode
10734  subs r5,r5,#4 ;@ Subtract cycles
10735  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10736  b CycloneEnd
10737
10738;@ ---------- [1010] move.b (a0), d0 uses Op1010 ----------
10739Op1010:
10740  str r4,[r7,#0x50] ;@ Save prev PC + 2
10741  str r5,[r7,#0x5c] ;@ Save Cycles
10742
10743;@ EaCalc : Get '(a0)' into r0:
10744  and r2,r8,#0x000f
10745  orr r2,r2,#0x8 ;@ A0-7
10746  ldr r0,[r7,r2,lsl #2]
10747;@ EaRead : Read '(a0)' (address in r0) into r1:
10748  str r4,[r7,#0x40] ;@ Save PC
10749  bic r0,r0,#0xff000000
10750  bl m68k_read8 ;@ Call read8(r0) handler
10751  movs r1,r0,asl #24
10752
10753  and r10,r1,#0x80000000 ;@ r10=N_flag
10754  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10755
10756;@ EaCalc : Get register index into r0:
10757  and r0,r8,#0x0e00
10758;@ EaWrite: r1 into register[r0]:
10759  mov r1,r1,lsr #24
10760  strb r1,[r7,r0,lsr #7]
10761
10762  ldr r5,[r7,#0x5c] ;@ Load Cycles
10763  ldrh r8,[r4],#2 ;@ Fetch next opcode
10764  subs r5,r5,#8 ;@ Subtract cycles
10765  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10766  b CycloneEnd
10767
10768;@ ---------- [101f] move.b (a7)+, d0 uses Op101f ----------
10769Op101f:
10770  str r4,[r7,#0x50] ;@ Save prev PC + 2
10771  str r5,[r7,#0x5c] ;@ Save Cycles
10772
10773;@ EaCalc : Get '(a7)+' into r0:
10774  ldr r0,[r7,#0x3c] ;@ A7
10775  add r3,r0,#2 ;@ Post-increment An
10776  str r3,[r7,#0x3c] ;@ A7
10777;@ EaRead : Read '(a7)+' (address in r0) into r1:
10778  str r4,[r7,#0x40] ;@ Save PC
10779  bic r0,r0,#0xff000000
10780  bl m68k_read8 ;@ Call read8(r0) handler
10781  movs r1,r0,asl #24
10782
10783  and r10,r1,#0x80000000 ;@ r10=N_flag
10784  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10785
10786;@ EaCalc : Get register index into r0:
10787  and r0,r8,#0x0e00
10788;@ EaWrite: r1 into register[r0]:
10789  mov r1,r1,lsr #24
10790  strb r1,[r7,r0,lsr #7]
10791
10792  ldr r5,[r7,#0x5c] ;@ Load Cycles
10793  ldrh r8,[r4],#2 ;@ Fetch next opcode
10794  subs r5,r5,#8 ;@ Subtract cycles
10795  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10796  b CycloneEnd
10797
10798;@ ---------- [1020] move.b -(a0), d0 uses Op1020 ----------
10799Op1020:
10800  str r4,[r7,#0x50] ;@ Save prev PC + 2
10801  str r5,[r7,#0x5c] ;@ Save Cycles
10802
10803;@ EaCalc : Get '-(a0)' into r0:
10804  and r2,r8,#0x000f
10805  orr r2,r2,#0x8 ;@ A0-7
10806  ldr r0,[r7,r2,lsl #2]
10807  sub r0,r0,#1 ;@ Pre-decrement An
10808  str r0,[r7,r2,lsl #2]
10809;@ EaRead : Read '-(a0)' (address in r0) into r1:
10810  str r4,[r7,#0x40] ;@ Save PC
10811  bic r0,r0,#0xff000000
10812  bl m68k_read8 ;@ Call read8(r0) handler
10813  movs r1,r0,asl #24
10814
10815  and r10,r1,#0x80000000 ;@ r10=N_flag
10816  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10817
10818;@ EaCalc : Get register index into r0:
10819  and r0,r8,#0x0e00
10820;@ EaWrite: r1 into register[r0]:
10821  mov r1,r1,lsr #24
10822  strb r1,[r7,r0,lsr #7]
10823
10824  ldr r5,[r7,#0x5c] ;@ Load Cycles
10825  ldrh r8,[r4],#2 ;@ Fetch next opcode
10826  subs r5,r5,#10 ;@ Subtract cycles
10827  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10828  b CycloneEnd
10829
10830;@ ---------- [1027] move.b -(a7), d0 uses Op1027 ----------
10831Op1027:
10832  str r4,[r7,#0x50] ;@ Save prev PC + 2
10833  str r5,[r7,#0x5c] ;@ Save Cycles
10834
10835;@ EaCalc : Get '-(a7)' into r0:
10836  ldr r0,[r7,#0x3c] ;@ A7
10837  sub r0,r0,#2 ;@ Pre-decrement An
10838  str r0,[r7,#0x3c] ;@ A7
10839;@ EaRead : Read '-(a7)' (address in r0) into r1:
10840  str r4,[r7,#0x40] ;@ Save PC
10841  bic r0,r0,#0xff000000
10842  bl m68k_read8 ;@ Call read8(r0) handler
10843  movs r1,r0,asl #24
10844
10845  and r10,r1,#0x80000000 ;@ r10=N_flag
10846  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10847
10848;@ EaCalc : Get register index into r0:
10849  and r0,r8,#0x0e00
10850;@ EaWrite: r1 into register[r0]:
10851  mov r1,r1,lsr #24
10852  strb r1,[r7,r0,lsr #7]
10853
10854  ldr r5,[r7,#0x5c] ;@ Load Cycles
10855  ldrh r8,[r4],#2 ;@ Fetch next opcode
10856  subs r5,r5,#10 ;@ Subtract cycles
10857  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10858  b CycloneEnd
10859
10860;@ ---------- [1028] move.b ($3333,a0), d0 uses Op1028 ----------
10861Op1028:
10862  str r4,[r7,#0x50] ;@ Save prev PC + 2
10863  str r5,[r7,#0x5c] ;@ Save Cycles
10864
10865;@ EaCalc : Get '($3333,a0)' into r0:
10866  ldrsh r0,[r4],#2 ;@ Fetch offset
10867  and r2,r8,#0x000f
10868  ldr r2,[r7,r2,lsl #2]
10869  add r0,r0,r2 ;@ Add on offset
10870;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
10871  str r4,[r7,#0x40] ;@ Save PC
10872  bic r0,r0,#0xff000000
10873  bl m68k_read8 ;@ Call read8(r0) handler
10874  movs r1,r0,asl #24
10875
10876  and r10,r1,#0x80000000 ;@ r10=N_flag
10877  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10878
10879;@ EaCalc : Get register index into r0:
10880  and r0,r8,#0x0e00
10881;@ EaWrite: r1 into register[r0]:
10882  mov r1,r1,lsr #24
10883  strb r1,[r7,r0,lsr #7]
10884
10885  ldr r5,[r7,#0x5c] ;@ Load Cycles
10886  ldrh r8,[r4],#2 ;@ Fetch next opcode
10887  subs r5,r5,#12 ;@ Subtract cycles
10888  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10889  b CycloneEnd
10890
10891;@ ---------- [1030] move.b ($33,a0,d3.w*2), d0 uses Op1030 ----------
10892Op1030:
10893  str r4,[r7,#0x50] ;@ Save prev PC + 2
10894  str r5,[r7,#0x5c] ;@ Save Cycles
10895
10896;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
10897;@ Get extension word into r3:
10898  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
10899  mov r2,r3,lsr #10
10900  tst r3,#0x0800 ;@ Is Rn Word or Long
10901  and r2,r2,#0x3c ;@ r2=Index of Rn
10902  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
10903  ldrne   r2,[r7,r2] ;@ r2=Rn.l
10904  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
10905  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
10906  and r2,r8,#0x000f
10907  orr r2,r2,#0x8 ;@ A0-7
10908  ldr r2,[r7,r2,lsl #2]
10909  add r0,r2,r3 ;@ r0=Disp+An+Rn
10910;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
10911  str r4,[r7,#0x40] ;@ Save PC
10912  bic r0,r0,#0xff000000
10913  bl m68k_read8 ;@ Call read8(r0) handler
10914  movs r1,r0,asl #24
10915
10916  and r10,r1,#0x80000000 ;@ r10=N_flag
10917  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10918
10919;@ EaCalc : Get register index into r0:
10920  and r0,r8,#0x0e00
10921;@ EaWrite: r1 into register[r0]:
10922  mov r1,r1,lsr #24
10923  strb r1,[r7,r0,lsr #7]
10924
10925  ldr r5,[r7,#0x5c] ;@ Load Cycles
10926  ldrh r8,[r4],#2 ;@ Fetch next opcode
10927  subs r5,r5,#14 ;@ Subtract cycles
10928  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10929  b CycloneEnd
10930
10931;@ ---------- [1038] move.b $3333.w, d0 uses Op1038 ----------
10932Op1038:
10933  str r4,[r7,#0x50] ;@ Save prev PC + 2
10934  str r5,[r7,#0x5c] ;@ Save Cycles
10935
10936;@ EaCalc : Get '$3333.w' into r0:
10937  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
10938;@ EaRead : Read '$3333.w' (address in r0) into r1:
10939  str r4,[r7,#0x40] ;@ Save PC
10940  bic r0,r0,#0xff000000
10941  bl m68k_read8 ;@ Call read8(r0) handler
10942  movs r1,r0,asl #24
10943
10944  and r10,r1,#0x80000000 ;@ r10=N_flag
10945  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10946
10947;@ EaCalc : Get register index into r0:
10948  and r0,r8,#0x0e00
10949;@ EaWrite: r1 into register[r0]:
10950  mov r1,r1,lsr #24
10951  strb r1,[r7,r0,lsr #7]
10952
10953  ldr r5,[r7,#0x5c] ;@ Load Cycles
10954  ldrh r8,[r4],#2 ;@ Fetch next opcode
10955  subs r5,r5,#12 ;@ Subtract cycles
10956  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10957  b CycloneEnd
10958
10959;@ ---------- [103a] move.b ($3333,pc), d0; =3335 uses Op103a ----------
10960Op103a:
10961  str r4,[r7,#0x50] ;@ Save prev PC + 2
10962  str r5,[r7,#0x5c] ;@ Save Cycles
10963
10964;@ EaCalc : Get '($3333,pc)' into r0:
10965  ldr r0,[r7,#0x60] ;@ Get Memory base
10966  sub r0,r4,r0 ;@ Real PC
10967  ldrsh r2,[r4],#2 ;@ Fetch extension
10968  add r0,r2,r0 ;@ ($nn,PC)
10969;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
10970  str r4,[r7,#0x40] ;@ Save PC
10971  bic r0,r0,#0xff000000
10972  bl m68k_fetch8 ;@ Call fetch8(r0) handler
10973  movs r1,r0,asl #24
10974
10975  and r10,r1,#0x80000000 ;@ r10=N_flag
10976  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10977
10978;@ EaCalc : Get register index into r0:
10979  and r0,r8,#0x0e00
10980;@ EaWrite: r1 into register[r0]:
10981  mov r1,r1,lsr #24
10982  strb r1,[r7,r0,lsr #7]
10983
10984  ldr r5,[r7,#0x5c] ;@ Load Cycles
10985  ldrh r8,[r4],#2 ;@ Fetch next opcode
10986  subs r5,r5,#12 ;@ Subtract cycles
10987  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10988  b CycloneEnd
10989
10990;@ ---------- [103b] move.b ($33,pc,d3.w*2), d0; =35 uses Op103b ----------
10991Op103b:
10992  str r4,[r7,#0x50] ;@ Save prev PC + 2
10993  str r5,[r7,#0x5c] ;@ Save Cycles
10994
10995;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
10996  ldr r0,[r7,#0x60] ;@ Get Memory base
10997  ldrh r3,[r4] ;@ Get extension word
10998  sub r0,r4,r0 ;@ r0=PC
10999  add r4,r4,#2
11000  mov r2,r3,lsr #10
11001  tst r3,#0x0800 ;@ Is Rn Word or Long
11002  and r2,r2,#0x3c ;@ r2=Index of Rn
11003  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11004  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11005  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
11006  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
11007  add r0,r2,r0 ;@ r0=Disp+PC+Rn
11008;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
11009  str r4,[r7,#0x40] ;@ Save PC
11010  bic r0,r0,#0xff000000
11011  bl m68k_fetch8 ;@ Call fetch8(r0) handler
11012  movs r1,r0,asl #24
11013
11014  and r10,r1,#0x80000000 ;@ r10=N_flag
11015  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11016
11017;@ EaCalc : Get register index into r0:
11018  and r0,r8,#0x0e00
11019;@ EaWrite: r1 into register[r0]:
11020  mov r1,r1,lsr #24
11021  strb r1,[r7,r0,lsr #7]
11022
11023  ldr r5,[r7,#0x5c] ;@ Load Cycles
11024  ldrh r8,[r4],#2 ;@ Fetch next opcode
11025  subs r5,r5,#14 ;@ Subtract cycles
11026  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11027  b CycloneEnd
11028
11029;@ ---------- [103c] move.b #$33, d0 uses Op103c ----------
11030Op103c:
11031;@ EaCalc : Get '#$33' into r1:
11032  ldrsb r1,[r4],#2 ;@ Fetch immediate value
11033;@ EaRead : Read '#$33' (address in r1) into r1:
11034  movs r1,r1,asl #24
11035
11036  and r10,r1,#0x80000000 ;@ r10=N_flag
11037  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11038
11039;@ EaCalc : Get register index into r0:
11040  and r0,r8,#0x0e00
11041;@ EaWrite: r1 into register[r0]:
11042  mov r1,r1,lsr #24
11043  strb r1,[r7,r0,lsr #7]
11044
11045  ldrh r8,[r4],#2 ;@ Fetch next opcode
11046  subs r5,r5,#8 ;@ Subtract cycles
11047  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11048  b CycloneEnd
11049
11050;@ ---------- [1080] move.b d0, (a0) uses Op1080 ----------
11051Op1080:
11052  str r4,[r7,#0x50] ;@ Save prev PC + 2
11053  str r5,[r7,#0x5c] ;@ Save Cycles
11054
11055;@ EaCalc : Get register index into r1:
11056  and r1,r8,#0x000f
11057;@ EaRead : Read register[r1] into r1:
11058  ldrb r1,[r7,r1,lsl #2]
11059
11060  movs r2,r1,lsl #24
11061  and r10,r2,#0x80000000 ;@ r10=N_flag
11062  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11063
11064;@ EaCalc : Get '(a0)' into r0:
11065  and r2,r8,#0x1e00
11066  ldr r0,[r7,r2,lsr #7]
11067;@ EaWrite: Write r1 into '(a0)' (address in r0):
11068  str r4,[r7,#0x40] ;@ Save PC
11069  bic r0,r0,#0xff000000
11070  bl m68k_write8 ;@ Call write8(r0,r1) handler
11071
11072  ldr r5,[r7,#0x5c] ;@ Load Cycles
11073  ldrh r8,[r4],#2 ;@ Fetch next opcode
11074  subs r5,r5,#8 ;@ Subtract cycles
11075  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11076  b CycloneEnd
11077
11078;@ ---------- [1090] move.b (a0), (a0) uses Op1090 ----------
11079Op1090:
11080  str r4,[r7,#0x50] ;@ Save prev PC + 2
11081  str r5,[r7,#0x5c] ;@ Save Cycles
11082
11083;@ EaCalc : Get '(a0)' into r0:
11084  and r2,r8,#0x000f
11085  orr r2,r2,#0x8 ;@ A0-7
11086  ldr r0,[r7,r2,lsl #2]
11087;@ EaRead : Read '(a0)' (address in r0) into r1:
11088  str r4,[r7,#0x40] ;@ Save PC
11089  bic r0,r0,#0xff000000
11090  bl m68k_read8 ;@ Call read8(r0) handler
11091  movs r1,r0,asl #24
11092
11093  and r10,r1,#0x80000000 ;@ r10=N_flag
11094  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11095
11096;@ EaCalc : Get '(a0)' into r0:
11097  and r2,r8,#0x1e00
11098  ldr r0,[r7,r2,lsr #7]
11099;@ EaWrite: Write r1 into '(a0)' (address in r0):
11100  mov r1,r1,lsr #24
11101  bic r0,r0,#0xff000000
11102  bl m68k_write8 ;@ Call write8(r0,r1) handler
11103
11104  ldr r5,[r7,#0x5c] ;@ Load Cycles
11105  ldrh r8,[r4],#2 ;@ Fetch next opcode
11106  subs r5,r5,#12 ;@ Subtract cycles
11107  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11108  b CycloneEnd
11109
11110;@ ---------- [1098] move.b (a0)+, (a0) uses Op1098 ----------
11111Op1098:
11112  str r4,[r7,#0x50] ;@ Save prev PC + 2
11113  str r5,[r7,#0x5c] ;@ Save Cycles
11114
11115;@ EaCalc : Get '(a0)+' into r0:
11116  and r2,r8,#0x000f
11117  ldr r0,[r7,r2,lsl #2]
11118  add r3,r0,#1 ;@ Post-increment An
11119  str r3,[r7,r2,lsl #2]
11120;@ EaRead : Read '(a0)+' (address in r0) into r1:
11121  str r4,[r7,#0x40] ;@ Save PC
11122  bic r0,r0,#0xff000000
11123  bl m68k_read8 ;@ Call read8(r0) handler
11124  movs r1,r0,asl #24
11125
11126  and r10,r1,#0x80000000 ;@ r10=N_flag
11127  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11128
11129;@ EaCalc : Get '(a0)' into r0:
11130  and r2,r8,#0x1e00
11131  ldr r0,[r7,r2,lsr #7]
11132;@ EaWrite: Write r1 into '(a0)' (address in r0):
11133  mov r1,r1,lsr #24
11134  bic r0,r0,#0xff000000
11135  bl m68k_write8 ;@ Call write8(r0,r1) handler
11136
11137  ldr r5,[r7,#0x5c] ;@ Load Cycles
11138  ldrh r8,[r4],#2 ;@ Fetch next opcode
11139  subs r5,r5,#12 ;@ Subtract cycles
11140  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11141  b CycloneEnd
11142
11143;@ ---------- [109f] move.b (a7)+, (a0) uses Op109f ----------
11144Op109f:
11145  str r4,[r7,#0x50] ;@ Save prev PC + 2
11146  str r5,[r7,#0x5c] ;@ Save Cycles
11147
11148;@ EaCalc : Get '(a7)+' into r0:
11149  ldr r0,[r7,#0x3c] ;@ A7
11150  add r3,r0,#2 ;@ Post-increment An
11151  str r3,[r7,#0x3c] ;@ A7
11152;@ EaRead : Read '(a7)+' (address in r0) into r1:
11153  str r4,[r7,#0x40] ;@ Save PC
11154  bic r0,r0,#0xff000000
11155  bl m68k_read8 ;@ Call read8(r0) handler
11156  movs r1,r0,asl #24
11157
11158  and r10,r1,#0x80000000 ;@ r10=N_flag
11159  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11160
11161;@ EaCalc : Get '(a0)' into r0:
11162  and r2,r8,#0x1e00
11163  ldr r0,[r7,r2,lsr #7]
11164;@ EaWrite: Write r1 into '(a0)' (address in r0):
11165  mov r1,r1,lsr #24
11166  bic r0,r0,#0xff000000
11167  bl m68k_write8 ;@ Call write8(r0,r1) handler
11168
11169  ldr r5,[r7,#0x5c] ;@ Load Cycles
11170  ldrh r8,[r4],#2 ;@ Fetch next opcode
11171  subs r5,r5,#12 ;@ Subtract cycles
11172  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11173  b CycloneEnd
11174
11175;@ ---------- [10a0] move.b -(a0), (a0) uses Op10a0 ----------
11176Op10a0:
11177  str r4,[r7,#0x50] ;@ Save prev PC + 2
11178  str r5,[r7,#0x5c] ;@ Save Cycles
11179
11180;@ EaCalc : Get '-(a0)' into r0:
11181  and r2,r8,#0x000f
11182  orr r2,r2,#0x8 ;@ A0-7
11183  ldr r0,[r7,r2,lsl #2]
11184  sub r0,r0,#1 ;@ Pre-decrement An
11185  str r0,[r7,r2,lsl #2]
11186;@ EaRead : Read '-(a0)' (address in r0) into r1:
11187  str r4,[r7,#0x40] ;@ Save PC
11188  bic r0,r0,#0xff000000
11189  bl m68k_read8 ;@ Call read8(r0) handler
11190  movs r1,r0,asl #24
11191
11192  and r10,r1,#0x80000000 ;@ r10=N_flag
11193  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11194
11195;@ EaCalc : Get '(a0)' into r0:
11196  and r2,r8,#0x1e00
11197  ldr r0,[r7,r2,lsr #7]
11198;@ EaWrite: Write r1 into '(a0)' (address in r0):
11199  mov r1,r1,lsr #24
11200  bic r0,r0,#0xff000000
11201  bl m68k_write8 ;@ Call write8(r0,r1) handler
11202
11203  ldr r5,[r7,#0x5c] ;@ Load Cycles
11204  ldrh r8,[r4],#2 ;@ Fetch next opcode
11205  subs r5,r5,#14 ;@ Subtract cycles
11206  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11207  b CycloneEnd
11208
11209;@ ---------- [10a7] move.b -(a7), (a0) uses Op10a7 ----------
11210Op10a7:
11211  str r4,[r7,#0x50] ;@ Save prev PC + 2
11212  str r5,[r7,#0x5c] ;@ Save Cycles
11213
11214;@ EaCalc : Get '-(a7)' into r0:
11215  ldr r0,[r7,#0x3c] ;@ A7
11216  sub r0,r0,#2 ;@ Pre-decrement An
11217  str r0,[r7,#0x3c] ;@ A7
11218;@ EaRead : Read '-(a7)' (address in r0) into r1:
11219  str r4,[r7,#0x40] ;@ Save PC
11220  bic r0,r0,#0xff000000
11221  bl m68k_read8 ;@ Call read8(r0) handler
11222  movs r1,r0,asl #24
11223
11224  and r10,r1,#0x80000000 ;@ r10=N_flag
11225  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11226
11227;@ EaCalc : Get '(a0)' into r0:
11228  and r2,r8,#0x1e00
11229  ldr r0,[r7,r2,lsr #7]
11230;@ EaWrite: Write r1 into '(a0)' (address in r0):
11231  mov r1,r1,lsr #24
11232  bic r0,r0,#0xff000000
11233  bl m68k_write8 ;@ Call write8(r0,r1) handler
11234
11235  ldr r5,[r7,#0x5c] ;@ Load Cycles
11236  ldrh r8,[r4],#2 ;@ Fetch next opcode
11237  subs r5,r5,#14 ;@ Subtract cycles
11238  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11239  b CycloneEnd
11240
11241;@ ---------- [10a8] move.b ($3333,a0), (a0) uses Op10a8 ----------
11242Op10a8:
11243  str r4,[r7,#0x50] ;@ Save prev PC + 2
11244  str r5,[r7,#0x5c] ;@ Save Cycles
11245
11246;@ EaCalc : Get '($3333,a0)' into r0:
11247  ldrsh r0,[r4],#2 ;@ Fetch offset
11248  and r2,r8,#0x000f
11249  ldr r2,[r7,r2,lsl #2]
11250  add r0,r0,r2 ;@ Add on offset
11251;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
11252  str r4,[r7,#0x40] ;@ Save PC
11253  bic r0,r0,#0xff000000
11254  bl m68k_read8 ;@ Call read8(r0) handler
11255  movs r1,r0,asl #24
11256
11257  and r10,r1,#0x80000000 ;@ r10=N_flag
11258  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11259
11260;@ EaCalc : Get '(a0)' into r0:
11261  and r2,r8,#0x1e00
11262  ldr r0,[r7,r2,lsr #7]
11263;@ EaWrite: Write r1 into '(a0)' (address in r0):
11264  mov r1,r1,lsr #24
11265  bic r0,r0,#0xff000000
11266  bl m68k_write8 ;@ Call write8(r0,r1) handler
11267
11268  ldr r5,[r7,#0x5c] ;@ Load Cycles
11269  ldrh r8,[r4],#2 ;@ Fetch next opcode
11270  subs r5,r5,#16 ;@ Subtract cycles
11271  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11272  b CycloneEnd
11273
11274;@ ---------- [10b0] move.b ($33,a0,d3.w*2), (a0) uses Op10b0 ----------
11275Op10b0:
11276  str r4,[r7,#0x50] ;@ Save prev PC + 2
11277  str r5,[r7,#0x5c] ;@ Save Cycles
11278
11279;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11280;@ Get extension word into r3:
11281  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11282  mov r2,r3,lsr #10
11283  tst r3,#0x0800 ;@ Is Rn Word or Long
11284  and r2,r2,#0x3c ;@ r2=Index of Rn
11285  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11286  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11287  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11288  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11289  and r2,r8,#0x000f
11290  orr r2,r2,#0x8 ;@ A0-7
11291  ldr r2,[r7,r2,lsl #2]
11292  add r0,r2,r3 ;@ r0=Disp+An+Rn
11293;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
11294  str r4,[r7,#0x40] ;@ Save PC
11295  bic r0,r0,#0xff000000
11296  bl m68k_read8 ;@ Call read8(r0) handler
11297  movs r1,r0,asl #24
11298
11299  and r10,r1,#0x80000000 ;@ r10=N_flag
11300  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11301
11302;@ EaCalc : Get '(a0)' into r0:
11303  and r2,r8,#0x1e00
11304  ldr r0,[r7,r2,lsr #7]
11305;@ EaWrite: Write r1 into '(a0)' (address in r0):
11306  mov r1,r1,lsr #24
11307  bic r0,r0,#0xff000000
11308  bl m68k_write8 ;@ Call write8(r0,r1) handler
11309
11310  ldr r5,[r7,#0x5c] ;@ Load Cycles
11311  ldrh r8,[r4],#2 ;@ Fetch next opcode
11312  subs r5,r5,#18 ;@ Subtract cycles
11313  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11314  b CycloneEnd
11315
11316;@ ---------- [10b8] move.b $3333.w, (a0) uses Op10b8 ----------
11317Op10b8:
11318  str r4,[r7,#0x50] ;@ Save prev PC + 2
11319  str r5,[r7,#0x5c] ;@ Save Cycles
11320
11321;@ EaCalc : Get '$3333.w' into r0:
11322  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
11323;@ EaRead : Read '$3333.w' (address in r0) into r1:
11324  str r4,[r7,#0x40] ;@ Save PC
11325  bic r0,r0,#0xff000000
11326  bl m68k_read8 ;@ Call read8(r0) handler
11327  movs r1,r0,asl #24
11328
11329  and r10,r1,#0x80000000 ;@ r10=N_flag
11330  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11331
11332;@ EaCalc : Get '(a0)' into r0:
11333  and r2,r8,#0x1e00
11334  ldr r0,[r7,r2,lsr #7]
11335;@ EaWrite: Write r1 into '(a0)' (address in r0):
11336  mov r1,r1,lsr #24
11337  bic r0,r0,#0xff000000
11338  bl m68k_write8 ;@ Call write8(r0,r1) handler
11339
11340  ldr r5,[r7,#0x5c] ;@ Load Cycles
11341  ldrh r8,[r4],#2 ;@ Fetch next opcode
11342  subs r5,r5,#16 ;@ Subtract cycles
11343  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11344  b CycloneEnd
11345
11346;@ ---------- [10b9] move.b $33333333.l, (a0) uses Op10b9 ----------
11347Op10b9:
11348  str r4,[r7,#0x50] ;@ Save prev PC + 2
11349  str r5,[r7,#0x5c] ;@ Save Cycles
11350
11351;@ EaCalc : Get '$33333333.l' into r0:
11352  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
11353  ldrh r0,[r4],#2
11354  orr r0,r0,r2,lsl #16
11355;@ EaRead : Read '$33333333.l' (address in r0) into r1:
11356  str r4,[r7,#0x40] ;@ Save PC
11357  bic r0,r0,#0xff000000
11358  bl m68k_read8 ;@ Call read8(r0) handler
11359  movs r1,r0,asl #24
11360
11361  and r10,r1,#0x80000000 ;@ r10=N_flag
11362  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11363
11364;@ EaCalc : Get '(a0)' into r0:
11365  and r2,r8,#0x1e00
11366  ldr r0,[r7,r2,lsr #7]
11367;@ EaWrite: Write r1 into '(a0)' (address in r0):
11368  mov r1,r1,lsr #24
11369  bic r0,r0,#0xff000000
11370  bl m68k_write8 ;@ Call write8(r0,r1) handler
11371
11372  ldr r5,[r7,#0x5c] ;@ Load Cycles
11373  ldrh r8,[r4],#2 ;@ Fetch next opcode
11374  subs r5,r5,#20 ;@ Subtract cycles
11375  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11376  b CycloneEnd
11377
11378;@ ---------- [10ba] move.b ($3333,pc), (a0); =3335 uses Op10ba ----------
11379Op10ba:
11380  str r4,[r7,#0x50] ;@ Save prev PC + 2
11381  str r5,[r7,#0x5c] ;@ Save Cycles
11382
11383;@ EaCalc : Get '($3333,pc)' into r0:
11384  ldr r0,[r7,#0x60] ;@ Get Memory base
11385  sub r0,r4,r0 ;@ Real PC
11386  ldrsh r2,[r4],#2 ;@ Fetch extension
11387  add r0,r2,r0 ;@ ($nn,PC)
11388;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
11389  str r4,[r7,#0x40] ;@ Save PC
11390  bic r0,r0,#0xff000000
11391  bl m68k_fetch8 ;@ Call fetch8(r0) handler
11392  movs r1,r0,asl #24
11393
11394  and r10,r1,#0x80000000 ;@ r10=N_flag
11395  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11396
11397;@ EaCalc : Get '(a0)' into r0:
11398  and r2,r8,#0x1e00
11399  ldr r0,[r7,r2,lsr #7]
11400;@ EaWrite: Write r1 into '(a0)' (address in r0):
11401  mov r1,r1,lsr #24
11402  bic r0,r0,#0xff000000
11403  bl m68k_write8 ;@ Call write8(r0,r1) handler
11404
11405  ldr r5,[r7,#0x5c] ;@ Load Cycles
11406  ldrh r8,[r4],#2 ;@ Fetch next opcode
11407  subs r5,r5,#16 ;@ Subtract cycles
11408  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11409  b CycloneEnd
11410
11411;@ ---------- [10bb] move.b ($33,pc,d3.w*2), (a0); =35 uses Op10bb ----------
11412Op10bb:
11413  str r4,[r7,#0x50] ;@ Save prev PC + 2
11414  str r5,[r7,#0x5c] ;@ Save Cycles
11415
11416;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
11417  ldr r0,[r7,#0x60] ;@ Get Memory base
11418  ldrh r3,[r4] ;@ Get extension word
11419  sub r0,r4,r0 ;@ r0=PC
11420  add r4,r4,#2
11421  mov r2,r3,lsr #10
11422  tst r3,#0x0800 ;@ Is Rn Word or Long
11423  and r2,r2,#0x3c ;@ r2=Index of Rn
11424  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11425  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11426  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
11427  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
11428  add r0,r2,r0 ;@ r0=Disp+PC+Rn
11429;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
11430  str r4,[r7,#0x40] ;@ Save PC
11431  bic r0,r0,#0xff000000
11432  bl m68k_fetch8 ;@ Call fetch8(r0) handler
11433  movs r1,r0,asl #24
11434
11435  and r10,r1,#0x80000000 ;@ r10=N_flag
11436  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11437
11438;@ EaCalc : Get '(a0)' into r0:
11439  and r2,r8,#0x1e00
11440  ldr r0,[r7,r2,lsr #7]
11441;@ EaWrite: Write r1 into '(a0)' (address in r0):
11442  mov r1,r1,lsr #24
11443  bic r0,r0,#0xff000000
11444  bl m68k_write8 ;@ Call write8(r0,r1) handler
11445
11446  ldr r5,[r7,#0x5c] ;@ Load Cycles
11447  ldrh r8,[r4],#2 ;@ Fetch next opcode
11448  subs r5,r5,#18 ;@ Subtract cycles
11449  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11450  b CycloneEnd
11451
11452;@ ---------- [10bc] move.b #$33, (a0) uses Op10bc ----------
11453Op10bc:
11454  str r4,[r7,#0x50] ;@ Save prev PC + 2
11455  str r5,[r7,#0x5c] ;@ Save Cycles
11456
11457;@ EaCalc : Get '#$33' into r1:
11458  ldrsb r1,[r4],#2 ;@ Fetch immediate value
11459;@ EaRead : Read '#$33' (address in r1) into r1:
11460  movs r1,r1,asl #24
11461
11462  and r10,r1,#0x80000000 ;@ r10=N_flag
11463  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11464
11465;@ EaCalc : Get '(a0)' into r0:
11466  and r2,r8,#0x1e00
11467  ldr r0,[r7,r2,lsr #7]
11468;@ EaWrite: Write r1 into '(a0)' (address in r0):
11469  mov r1,r1,lsr #24
11470  str r4,[r7,#0x40] ;@ Save PC
11471  bic r0,r0,#0xff000000
11472  bl m68k_write8 ;@ Call write8(r0,r1) handler
11473
11474  ldr r5,[r7,#0x5c] ;@ Load Cycles
11475  ldrh r8,[r4],#2 ;@ Fetch next opcode
11476  subs r5,r5,#12 ;@ Subtract cycles
11477  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11478  b CycloneEnd
11479
11480;@ ---------- [10d0] move.b (a0), (a0)+ uses Op10d0 ----------
11481Op10d0:
11482  str r4,[r7,#0x50] ;@ Save prev PC + 2
11483  str r5,[r7,#0x5c] ;@ Save Cycles
11484
11485;@ EaCalc : Get '(a0)' into r0:
11486  and r2,r8,#0x000f
11487  orr r2,r2,#0x8 ;@ A0-7
11488  ldr r0,[r7,r2,lsl #2]
11489;@ EaRead : Read '(a0)' (address in r0) into r1:
11490  str r4,[r7,#0x40] ;@ Save PC
11491  bic r0,r0,#0xff000000
11492  bl m68k_read8 ;@ Call read8(r0) handler
11493  movs r1,r0,asl #24
11494
11495  and r10,r1,#0x80000000 ;@ r10=N_flag
11496  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11497
11498;@ EaCalc : Get '(a0)+' into r0:
11499  and r2,r8,#0x1e00
11500  ldr r0,[r7,r2,lsr #7]
11501  add r3,r0,#1 ;@ Post-increment An
11502  str r3,[r7,r2,lsr #7]
11503;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11504  mov r1,r1,lsr #24
11505  bic r0,r0,#0xff000000
11506  bl m68k_write8 ;@ Call write8(r0,r1) handler
11507
11508  ldr r5,[r7,#0x5c] ;@ Load Cycles
11509  ldrh r8,[r4],#2 ;@ Fetch next opcode
11510  subs r5,r5,#12 ;@ Subtract cycles
11511  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11512  b CycloneEnd
11513
11514;@ ---------- [10df] move.b (a7)+, (a0)+ uses Op10df ----------
11515Op10df:
11516  str r4,[r7,#0x50] ;@ Save prev PC + 2
11517  str r5,[r7,#0x5c] ;@ Save Cycles
11518
11519;@ EaCalc : Get '(a7)+' into r0:
11520  ldr r0,[r7,#0x3c] ;@ A7
11521  add r3,r0,#2 ;@ Post-increment An
11522  str r3,[r7,#0x3c] ;@ A7
11523;@ EaRead : Read '(a7)+' (address in r0) into r1:
11524  str r4,[r7,#0x40] ;@ Save PC
11525  bic r0,r0,#0xff000000
11526  bl m68k_read8 ;@ Call read8(r0) handler
11527  movs r1,r0,asl #24
11528
11529  and r10,r1,#0x80000000 ;@ r10=N_flag
11530  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11531
11532;@ EaCalc : Get '(a0)+' into r0:
11533  and r2,r8,#0x1e00
11534  ldr r0,[r7,r2,lsr #7]
11535  add r3,r0,#1 ;@ Post-increment An
11536  str r3,[r7,r2,lsr #7]
11537;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11538  mov r1,r1,lsr #24
11539  bic r0,r0,#0xff000000
11540  bl m68k_write8 ;@ Call write8(r0,r1) handler
11541
11542  ldr r5,[r7,#0x5c] ;@ Load Cycles
11543  ldrh r8,[r4],#2 ;@ Fetch next opcode
11544  subs r5,r5,#12 ;@ Subtract cycles
11545  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11546  b CycloneEnd
11547
11548;@ ---------- [10e0] move.b -(a0), (a0)+ uses Op10e0 ----------
11549Op10e0:
11550  str r4,[r7,#0x50] ;@ Save prev PC + 2
11551  str r5,[r7,#0x5c] ;@ Save Cycles
11552
11553;@ EaCalc : Get '-(a0)' into r0:
11554  and r2,r8,#0x000f
11555  orr r2,r2,#0x8 ;@ A0-7
11556  ldr r0,[r7,r2,lsl #2]
11557  sub r0,r0,#1 ;@ Pre-decrement An
11558  str r0,[r7,r2,lsl #2]
11559;@ EaRead : Read '-(a0)' (address in r0) into r1:
11560  str r4,[r7,#0x40] ;@ Save PC
11561  bic r0,r0,#0xff000000
11562  bl m68k_read8 ;@ Call read8(r0) handler
11563  movs r1,r0,asl #24
11564
11565  and r10,r1,#0x80000000 ;@ r10=N_flag
11566  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11567
11568;@ EaCalc : Get '(a0)+' into r0:
11569  and r2,r8,#0x1e00
11570  ldr r0,[r7,r2,lsr #7]
11571  add r3,r0,#1 ;@ Post-increment An
11572  str r3,[r7,r2,lsr #7]
11573;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11574  mov r1,r1,lsr #24
11575  bic r0,r0,#0xff000000
11576  bl m68k_write8 ;@ Call write8(r0,r1) handler
11577
11578  ldr r5,[r7,#0x5c] ;@ Load Cycles
11579  ldrh r8,[r4],#2 ;@ Fetch next opcode
11580  subs r5,r5,#14 ;@ Subtract cycles
11581  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11582  b CycloneEnd
11583
11584;@ ---------- [10e7] move.b -(a7), (a0)+ uses Op10e7 ----------
11585Op10e7:
11586  str r4,[r7,#0x50] ;@ Save prev PC + 2
11587  str r5,[r7,#0x5c] ;@ Save Cycles
11588
11589;@ EaCalc : Get '-(a7)' into r0:
11590  ldr r0,[r7,#0x3c] ;@ A7
11591  sub r0,r0,#2 ;@ Pre-decrement An
11592  str r0,[r7,#0x3c] ;@ A7
11593;@ EaRead : Read '-(a7)' (address in r0) into r1:
11594  str r4,[r7,#0x40] ;@ Save PC
11595  bic r0,r0,#0xff000000
11596  bl m68k_read8 ;@ Call read8(r0) handler
11597  movs r1,r0,asl #24
11598
11599  and r10,r1,#0x80000000 ;@ r10=N_flag
11600  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11601
11602;@ EaCalc : Get '(a0)+' into r0:
11603  and r2,r8,#0x1e00
11604  ldr r0,[r7,r2,lsr #7]
11605  add r3,r0,#1 ;@ Post-increment An
11606  str r3,[r7,r2,lsr #7]
11607;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11608  mov r1,r1,lsr #24
11609  bic r0,r0,#0xff000000
11610  bl m68k_write8 ;@ Call write8(r0,r1) handler
11611
11612  ldr r5,[r7,#0x5c] ;@ Load Cycles
11613  ldrh r8,[r4],#2 ;@ Fetch next opcode
11614  subs r5,r5,#14 ;@ Subtract cycles
11615  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11616  b CycloneEnd
11617
11618;@ ---------- [10e8] move.b ($3333,a0), (a0)+ uses Op10e8 ----------
11619Op10e8:
11620  str r4,[r7,#0x50] ;@ Save prev PC + 2
11621  str r5,[r7,#0x5c] ;@ Save Cycles
11622
11623;@ EaCalc : Get '($3333,a0)' into r0:
11624  ldrsh r0,[r4],#2 ;@ Fetch offset
11625  and r2,r8,#0x000f
11626  ldr r2,[r7,r2,lsl #2]
11627  add r0,r0,r2 ;@ Add on offset
11628;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
11629  str r4,[r7,#0x40] ;@ Save PC
11630  bic r0,r0,#0xff000000
11631  bl m68k_read8 ;@ Call read8(r0) handler
11632  movs r1,r0,asl #24
11633
11634  and r10,r1,#0x80000000 ;@ r10=N_flag
11635  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11636
11637;@ EaCalc : Get '(a0)+' into r0:
11638  and r2,r8,#0x1e00
11639  ldr r0,[r7,r2,lsr #7]
11640  add r3,r0,#1 ;@ Post-increment An
11641  str r3,[r7,r2,lsr #7]
11642;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11643  mov r1,r1,lsr #24
11644  bic r0,r0,#0xff000000
11645  bl m68k_write8 ;@ Call write8(r0,r1) handler
11646
11647  ldr r5,[r7,#0x5c] ;@ Load Cycles
11648  ldrh r8,[r4],#2 ;@ Fetch next opcode
11649  subs r5,r5,#16 ;@ Subtract cycles
11650  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11651  b CycloneEnd
11652
11653;@ ---------- [10f0] move.b ($33,a0,d3.w*2), (a0)+ uses Op10f0 ----------
11654Op10f0:
11655  str r4,[r7,#0x50] ;@ Save prev PC + 2
11656  str r5,[r7,#0x5c] ;@ Save Cycles
11657
11658;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11659;@ Get extension word into r3:
11660  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11661  mov r2,r3,lsr #10
11662  tst r3,#0x0800 ;@ Is Rn Word or Long
11663  and r2,r2,#0x3c ;@ r2=Index of Rn
11664  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11665  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11666  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11667  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11668  and r2,r8,#0x000f
11669  orr r2,r2,#0x8 ;@ A0-7
11670  ldr r2,[r7,r2,lsl #2]
11671  add r0,r2,r3 ;@ r0=Disp+An+Rn
11672;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
11673  str r4,[r7,#0x40] ;@ Save PC
11674  bic r0,r0,#0xff000000
11675  bl m68k_read8 ;@ Call read8(r0) handler
11676  movs r1,r0,asl #24
11677
11678  and r10,r1,#0x80000000 ;@ r10=N_flag
11679  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11680
11681;@ EaCalc : Get '(a0)+' into r0:
11682  and r2,r8,#0x1e00
11683  ldr r0,[r7,r2,lsr #7]
11684  add r3,r0,#1 ;@ Post-increment An
11685  str r3,[r7,r2,lsr #7]
11686;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11687  mov r1,r1,lsr #24
11688  bic r0,r0,#0xff000000
11689  bl m68k_write8 ;@ Call write8(r0,r1) handler
11690
11691  ldr r5,[r7,#0x5c] ;@ Load Cycles
11692  ldrh r8,[r4],#2 ;@ Fetch next opcode
11693  subs r5,r5,#18 ;@ Subtract cycles
11694  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11695  b CycloneEnd
11696
11697;@ ---------- [10f8] move.b $3333.w, (a0)+ uses Op10f8 ----------
11698Op10f8:
11699  str r4,[r7,#0x50] ;@ Save prev PC + 2
11700  str r5,[r7,#0x5c] ;@ Save Cycles
11701
11702;@ EaCalc : Get '$3333.w' into r0:
11703  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
11704;@ EaRead : Read '$3333.w' (address in r0) into r1:
11705  str r4,[r7,#0x40] ;@ Save PC
11706  bic r0,r0,#0xff000000
11707  bl m68k_read8 ;@ Call read8(r0) handler
11708  movs r1,r0,asl #24
11709
11710  and r10,r1,#0x80000000 ;@ r10=N_flag
11711  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11712
11713;@ EaCalc : Get '(a0)+' into r0:
11714  and r2,r8,#0x1e00
11715  ldr r0,[r7,r2,lsr #7]
11716  add r3,r0,#1 ;@ Post-increment An
11717  str r3,[r7,r2,lsr #7]
11718;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11719  mov r1,r1,lsr #24
11720  bic r0,r0,#0xff000000
11721  bl m68k_write8 ;@ Call write8(r0,r1) handler
11722
11723  ldr r5,[r7,#0x5c] ;@ Load Cycles
11724  ldrh r8,[r4],#2 ;@ Fetch next opcode
11725  subs r5,r5,#16 ;@ Subtract cycles
11726  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11727  b CycloneEnd
11728
11729;@ ---------- [10f9] move.b $33333333.l, (a0)+ uses Op10f9 ----------
11730Op10f9:
11731  str r4,[r7,#0x50] ;@ Save prev PC + 2
11732  str r5,[r7,#0x5c] ;@ Save Cycles
11733
11734;@ EaCalc : Get '$33333333.l' into r0:
11735  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
11736  ldrh r0,[r4],#2
11737  orr r0,r0,r2,lsl #16
11738;@ EaRead : Read '$33333333.l' (address in r0) into r1:
11739  str r4,[r7,#0x40] ;@ Save PC
11740  bic r0,r0,#0xff000000
11741  bl m68k_read8 ;@ Call read8(r0) handler
11742  movs r1,r0,asl #24
11743
11744  and r10,r1,#0x80000000 ;@ r10=N_flag
11745  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11746
11747;@ EaCalc : Get '(a0)+' into r0:
11748  and r2,r8,#0x1e00
11749  ldr r0,[r7,r2,lsr #7]
11750  add r3,r0,#1 ;@ Post-increment An
11751  str r3,[r7,r2,lsr #7]
11752;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11753  mov r1,r1,lsr #24
11754  bic r0,r0,#0xff000000
11755  bl m68k_write8 ;@ Call write8(r0,r1) handler
11756
11757  ldr r5,[r7,#0x5c] ;@ Load Cycles
11758  ldrh r8,[r4],#2 ;@ Fetch next opcode
11759  subs r5,r5,#20 ;@ Subtract cycles
11760  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11761  b CycloneEnd
11762
11763;@ ---------- [10fa] move.b ($3333,pc), (a0)+; =3335 uses Op10fa ----------
11764Op10fa:
11765  str r4,[r7,#0x50] ;@ Save prev PC + 2
11766  str r5,[r7,#0x5c] ;@ Save Cycles
11767
11768;@ EaCalc : Get '($3333,pc)' into r0:
11769  ldr r0,[r7,#0x60] ;@ Get Memory base
11770  sub r0,r4,r0 ;@ Real PC
11771  ldrsh r2,[r4],#2 ;@ Fetch extension
11772  add r0,r2,r0 ;@ ($nn,PC)
11773;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
11774  str r4,[r7,#0x40] ;@ Save PC
11775  bic r0,r0,#0xff000000
11776  bl m68k_fetch8 ;@ Call fetch8(r0) handler
11777  movs r1,r0,asl #24
11778
11779  and r10,r1,#0x80000000 ;@ r10=N_flag
11780  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11781
11782;@ EaCalc : Get '(a0)+' into r0:
11783  and r2,r8,#0x1e00
11784  ldr r0,[r7,r2,lsr #7]
11785  add r3,r0,#1 ;@ Post-increment An
11786  str r3,[r7,r2,lsr #7]
11787;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11788  mov r1,r1,lsr #24
11789  bic r0,r0,#0xff000000
11790  bl m68k_write8 ;@ Call write8(r0,r1) handler
11791
11792  ldr r5,[r7,#0x5c] ;@ Load Cycles
11793  ldrh r8,[r4],#2 ;@ Fetch next opcode
11794  subs r5,r5,#16 ;@ Subtract cycles
11795  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11796  b CycloneEnd
11797
11798;@ ---------- [10fb] move.b ($33,pc,d3.w*2), (a0)+; =35 uses Op10fb ----------
11799Op10fb:
11800  str r4,[r7,#0x50] ;@ Save prev PC + 2
11801  str r5,[r7,#0x5c] ;@ Save Cycles
11802
11803;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
11804  ldr r0,[r7,#0x60] ;@ Get Memory base
11805  ldrh r3,[r4] ;@ Get extension word
11806  sub r0,r4,r0 ;@ r0=PC
11807  add r4,r4,#2
11808  mov r2,r3,lsr #10
11809  tst r3,#0x0800 ;@ Is Rn Word or Long
11810  and r2,r2,#0x3c ;@ r2=Index of Rn
11811  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11812  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11813  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
11814  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
11815  add r0,r2,r0 ;@ r0=Disp+PC+Rn
11816;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
11817  str r4,[r7,#0x40] ;@ Save PC
11818  bic r0,r0,#0xff000000
11819  bl m68k_fetch8 ;@ Call fetch8(r0) handler
11820  movs r1,r0,asl #24
11821
11822  and r10,r1,#0x80000000 ;@ r10=N_flag
11823  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11824
11825;@ EaCalc : Get '(a0)+' into r0:
11826  and r2,r8,#0x1e00
11827  ldr r0,[r7,r2,lsr #7]
11828  add r3,r0,#1 ;@ Post-increment An
11829  str r3,[r7,r2,lsr #7]
11830;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11831  mov r1,r1,lsr #24
11832  bic r0,r0,#0xff000000
11833  bl m68k_write8 ;@ Call write8(r0,r1) handler
11834
11835  ldr r5,[r7,#0x5c] ;@ Load Cycles
11836  ldrh r8,[r4],#2 ;@ Fetch next opcode
11837  subs r5,r5,#18 ;@ Subtract cycles
11838  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11839  b CycloneEnd
11840
11841;@ ---------- [10fc] move.b #$33, (a0)+ uses Op10fc ----------
11842Op10fc:
11843  str r4,[r7,#0x50] ;@ Save prev PC + 2
11844  str r5,[r7,#0x5c] ;@ Save Cycles
11845
11846;@ EaCalc : Get '#$33' into r1:
11847  ldrsb r1,[r4],#2 ;@ Fetch immediate value
11848;@ EaRead : Read '#$33' (address in r1) into r1:
11849  movs r1,r1,asl #24
11850
11851  and r10,r1,#0x80000000 ;@ r10=N_flag
11852  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11853
11854;@ EaCalc : Get '(a0)+' into r0:
11855  and r2,r8,#0x1e00
11856  ldr r0,[r7,r2,lsr #7]
11857  add r3,r0,#1 ;@ Post-increment An
11858  str r3,[r7,r2,lsr #7]
11859;@ EaWrite: Write r1 into '(a0)+' (address in r0):
11860  mov r1,r1,lsr #24
11861  str r4,[r7,#0x40] ;@ Save PC
11862  bic r0,r0,#0xff000000
11863  bl m68k_write8 ;@ Call write8(r0,r1) handler
11864
11865  ldr r5,[r7,#0x5c] ;@ Load Cycles
11866  ldrh r8,[r4],#2 ;@ Fetch next opcode
11867  subs r5,r5,#12 ;@ Subtract cycles
11868  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11869  b CycloneEnd
11870
11871;@ ---------- [1100] move.b d0, -(a0) uses Op1100 ----------
11872Op1100:
11873  str r4,[r7,#0x50] ;@ Save prev PC + 2
11874  str r5,[r7,#0x5c] ;@ Save Cycles
11875
11876;@ EaCalc : Get register index into r1:
11877  and r1,r8,#0x000f
11878;@ EaRead : Read register[r1] into r1:
11879  ldrb r1,[r7,r1,lsl #2]
11880
11881  movs r2,r1,lsl #24
11882  and r10,r2,#0x80000000 ;@ r10=N_flag
11883  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11884
11885;@ EaCalc : Get '-(a0)' into r0:
11886  and r2,r8,#0x1e00
11887  ldr r0,[r7,r2,lsr #7]
11888  sub r0,r0,#1 ;@ Pre-decrement An
11889  str r0,[r7,r2,lsr #7]
11890;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11891  str r4,[r7,#0x40] ;@ Save PC
11892  bic r0,r0,#0xff000000
11893  bl m68k_write8 ;@ Call write8(r0,r1) handler
11894
11895  ldr r5,[r7,#0x5c] ;@ Load Cycles
11896  ldrh r8,[r4],#2 ;@ Fetch next opcode
11897  subs r5,r5,#8 ;@ Subtract cycles
11898  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11899  b CycloneEnd
11900
11901;@ ---------- [1110] move.b (a0), -(a0) uses Op1110 ----------
11902Op1110:
11903  str r4,[r7,#0x50] ;@ Save prev PC + 2
11904  str r5,[r7,#0x5c] ;@ Save Cycles
11905
11906;@ EaCalc : Get '(a0)' into r0:
11907  and r2,r8,#0x000f
11908  orr r2,r2,#0x8 ;@ A0-7
11909  ldr r0,[r7,r2,lsl #2]
11910;@ EaRead : Read '(a0)' (address in r0) into r1:
11911  str r4,[r7,#0x40] ;@ Save PC
11912  bic r0,r0,#0xff000000
11913  bl m68k_read8 ;@ Call read8(r0) handler
11914  movs r1,r0,asl #24
11915
11916  and r10,r1,#0x80000000 ;@ r10=N_flag
11917  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11918
11919;@ EaCalc : Get '-(a0)' into r0:
11920  and r2,r8,#0x1e00
11921  ldr r0,[r7,r2,lsr #7]
11922  sub r0,r0,#1 ;@ Pre-decrement An
11923  str r0,[r7,r2,lsr #7]
11924;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11925  mov r1,r1,lsr #24
11926  bic r0,r0,#0xff000000
11927  bl m68k_write8 ;@ Call write8(r0,r1) handler
11928
11929  ldr r5,[r7,#0x5c] ;@ Load Cycles
11930  ldrh r8,[r4],#2 ;@ Fetch next opcode
11931  subs r5,r5,#12 ;@ Subtract cycles
11932  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11933  b CycloneEnd
11934
11935;@ ---------- [1118] move.b (a0)+, -(a0) uses Op1118 ----------
11936Op1118:
11937  str r4,[r7,#0x50] ;@ Save prev PC + 2
11938  str r5,[r7,#0x5c] ;@ Save Cycles
11939
11940;@ EaCalc : Get '(a0)+' into r0:
11941  and r2,r8,#0x000f
11942  ldr r0,[r7,r2,lsl #2]
11943  add r3,r0,#1 ;@ Post-increment An
11944  str r3,[r7,r2,lsl #2]
11945;@ EaRead : Read '(a0)+' (address in r0) into r1:
11946  str r4,[r7,#0x40] ;@ Save PC
11947  bic r0,r0,#0xff000000
11948  bl m68k_read8 ;@ Call read8(r0) handler
11949  movs r1,r0,asl #24
11950
11951  and r10,r1,#0x80000000 ;@ r10=N_flag
11952  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11953
11954;@ EaCalc : Get '-(a0)' into r0:
11955  and r2,r8,#0x1e00
11956  ldr r0,[r7,r2,lsr #7]
11957  sub r0,r0,#1 ;@ Pre-decrement An
11958  str r0,[r7,r2,lsr #7]
11959;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11960  mov r1,r1,lsr #24
11961  bic r0,r0,#0xff000000
11962  bl m68k_write8 ;@ Call write8(r0,r1) handler
11963
11964  ldr r5,[r7,#0x5c] ;@ Load Cycles
11965  ldrh r8,[r4],#2 ;@ Fetch next opcode
11966  subs r5,r5,#12 ;@ Subtract cycles
11967  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11968  b CycloneEnd
11969
11970;@ ---------- [111f] move.b (a7)+, -(a0) uses Op111f ----------
11971Op111f:
11972  str r4,[r7,#0x50] ;@ Save prev PC + 2
11973  str r5,[r7,#0x5c] ;@ Save Cycles
11974
11975;@ EaCalc : Get '(a7)+' into r0:
11976  ldr r0,[r7,#0x3c] ;@ A7
11977  add r3,r0,#2 ;@ Post-increment An
11978  str r3,[r7,#0x3c] ;@ A7
11979;@ EaRead : Read '(a7)+' (address in r0) into r1:
11980  str r4,[r7,#0x40] ;@ Save PC
11981  bic r0,r0,#0xff000000
11982  bl m68k_read8 ;@ Call read8(r0) handler
11983  movs r1,r0,asl #24
11984
11985  and r10,r1,#0x80000000 ;@ r10=N_flag
11986  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11987
11988;@ EaCalc : Get '-(a0)' into r0:
11989  and r2,r8,#0x1e00
11990  ldr r0,[r7,r2,lsr #7]
11991  sub r0,r0,#1 ;@ Pre-decrement An
11992  str r0,[r7,r2,lsr #7]
11993;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11994  mov r1,r1,lsr #24
11995  bic r0,r0,#0xff000000
11996  bl m68k_write8 ;@ Call write8(r0,r1) handler
11997
11998  ldr r5,[r7,#0x5c] ;@ Load Cycles
11999  ldrh r8,[r4],#2 ;@ Fetch next opcode
12000  subs r5,r5,#12 ;@ Subtract cycles
12001  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12002  b CycloneEnd
12003
12004;@ ---------- [1120] move.b -(a0), -(a0) uses Op1120 ----------
12005Op1120:
12006  str r4,[r7,#0x50] ;@ Save prev PC + 2
12007  str r5,[r7,#0x5c] ;@ Save Cycles
12008
12009;@ EaCalc : Get '-(a0)' into r0:
12010  and r2,r8,#0x000f
12011  orr r2,r2,#0x8 ;@ A0-7
12012  ldr r0,[r7,r2,lsl #2]
12013  sub r0,r0,#1 ;@ Pre-decrement An
12014  str r0,[r7,r2,lsl #2]
12015;@ EaRead : Read '-(a0)' (address in r0) into r1:
12016  str r4,[r7,#0x40] ;@ Save PC
12017  bic r0,r0,#0xff000000
12018  bl m68k_read8 ;@ Call read8(r0) handler
12019  movs r1,r0,asl #24
12020
12021  and r10,r1,#0x80000000 ;@ r10=N_flag
12022  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12023
12024;@ EaCalc : Get '-(a0)' into r0:
12025  and r2,r8,#0x1e00
12026  ldr r0,[r7,r2,lsr #7]
12027  sub r0,r0,#1 ;@ Pre-decrement An
12028  str r0,[r7,r2,lsr #7]
12029;@ EaWrite: Write r1 into '-(a0)' (address in r0):
12030  mov r1,r1,lsr #24
12031  bic r0,r0,#0xff000000
12032  bl m68k_write8 ;@ Call write8(r0,r1) handler
12033
12034  ldr r5,[r7,#0x5c] ;@ Load Cycles
12035  ldrh r8,[r4],#2 ;@ Fetch next opcode
12036  subs r5,r5,#14 ;@ Subtract cycles
12037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12038  b CycloneEnd
12039
12040;@ ---------- [1127] move.b -(a7), -(a0) uses Op1127 ----------
12041Op1127:
12042  str r4,[r7,#0x50] ;@ Save prev PC + 2
12043  str r5,[r7,#0x5c] ;@ Save Cycles
12044
12045;@ EaCalc : Get '-(a7)' into r0:
12046  ldr r0,[r7,#0x3c] ;@ A7
12047  sub r0,r0,#2 ;@ Pre-decrement An
12048  str r0,[r7,#0x3c] ;@ A7
12049;@ EaRead : Read '-(a7)' (address in r0) into r1:
12050  str r4,[r7,#0x40] ;@ Save PC
12051  bic r0,r0,#0xff000000
12052  bl m68k_read8 ;@ Call read8(r0) handler
12053  movs r1,r0,asl #24
12054
12055  and r10,r1,#0x80000000 ;@ r10=N_flag
12056  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12057
12058;@ EaCalc : Get '-(a0)' into r0:
12059  and r2,r8,#0x1e00
12060  ldr r0,[r7,r2,lsr #7]
12061  sub r0,r0,#1 ;@ Pre-decrement An
12062  str r0,[r7,r2,lsr #7]
12063;@ EaWrite: Write r1 into '-(a0)' (address in r0):
12064  mov r1,r1,lsr #24
12065  bic r0,r0,#0xff000000
12066  bl m68k_write8 ;@ Call write8(r0,r1) handler
12067
12068  ldr r5,[r7,#0x5c] ;@ Load Cycles
12069  ldrh r8,[r4],#2 ;@ Fetch next opcode
12070  subs r5,r5,#14 ;@ Subtract cycles
12071  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12072  b CycloneEnd
12073
12074;@ ---------- [1128] move.b ($3333,a0), -(a0) uses Op1128 ----------
12075Op1128:
12076  str r4,[r7,#0x50] ;@ Save prev PC + 2
12077  str r5,[r7,#0x5c] ;@ Save Cycles
12078
12079;@ EaCalc : Get '($3333,a0)' into r0:
12080  ldrsh r0,[r4],#2 ;@ Fetch offset
12081  and r2,r8,#0x000f
12082  ldr r2,[r7,r2,lsl #2]
12083  add r0,r0,r2 ;@ Add on offset
12084;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
12085  str r4,[r7,#0x40] ;@ Save PC
12086  bic r0,r0,#0xff000000
12087  bl m68k_read8 ;@ Call read8(r0) handler
12088  movs r1,r0,asl #24
12089
12090  and r10,r1,#0x80000000 ;@ r10=N_flag
12091  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12092
12093;@ EaCalc : Get '-(a0)' into r0:
12094  and r2,r8,#0x1e00
12095  ldr r0,[r7,r2,lsr #7]
12096  sub r0,r0,#1 ;@ Pre-decrement An
12097  str r0,[r7,r2,lsr #7]
12098;@ EaWrite: Write r1 into '-(a0)' (address in r0):
12099  mov r1,r1,lsr #24
12100  bic r0,r0,#0xff000000
12101  bl m68k_write8 ;@ Call write8(r0,r1) handler
12102
12103  ldr r5,[r7,#0x5c] ;@ Load Cycles
12104  ldrh r8,[r4],#2 ;@ Fetch next opcode
12105  subs r5,r5,#16 ;@ Subtract cycles
12106  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12107  b CycloneEnd
12108
12109;@ ---------- [1130] move.b ($33,a0,d3.w*2), -(a0) uses Op1130 ----------
12110Op1130:
12111  str r4,[r7,#0x50] ;@ Save prev PC + 2
12112  str r5,[r7,#0x5c] ;@ Save Cycles
12113
12114;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
12115;@ Get extension word into r3:
12116  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
12117  mov r2,r3,lsr #10
12118  tst r3,#0x0800 ;@ Is Rn Word or Long
12119  and r2,r2,#0x3c ;@ r2=Index of Rn
12120  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12121  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12122  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
12123  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
12124  and r2,r8,#0x000f
12125  orr r2,r2,#0x8 ;@ A0-7
12126  ldr r2,[r7,r2,lsl #2]
12127  add r0,r2,r3 ;@ r0=Disp+An+Rn
12128;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
12129  str r4,[r7,#0x40] ;@ Save PC
12130  bic r0,r0,#0xff000000
12131  bl m68k_read8 ;@ Call read8(r0) handler
12132  movs r1,r0,asl #24
12133
12134  and r10,r1,#0x80000000 ;@ r10=N_flag
12135  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12136
12137;@ EaCalc : Get '-(a0)' into r0:
12138  and r2,r8,#0x1e00
12139  ldr r0,[r7,r2,lsr #7]
12140  sub r0,r0,#1 ;@ Pre-decrement An
12141  str r0,[r7,r2,lsr #7]
12142;@ EaWrite: Write r1 into '-(a0)' (address in r0):
12143  mov r1,r1,lsr #24
12144  bic r0,r0,#0xff000000
12145  bl m68k_write8 ;@ Call write8(r0,r1) handler
12146
12147  ldr r5,[r7,#0x5c] ;@ Load Cycles
12148  ldrh r8,[r4],#2 ;@ Fetch next opcode
12149  subs r5,r5,#18 ;@ Subtract cycles
12150  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12151  b CycloneEnd
12152
12153;@ ---------- [1138] move.b $3333.w, -(a0) uses Op1138 ----------
12154Op1138:
12155  str r4,[r7,#0x50] ;@ Save prev PC + 2
12156  str r5,[r7,#0x5c] ;@ Save Cycles
12157
12158;@ EaCalc : Get '$3333.w' into r0:
12159  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12160;@ EaRead : Read '$3333.w' (address in r0) into r1:
12161  str r4,[r7,#0x40] ;@ Save PC
12162  bic r0,r0,#0xff000000
12163  bl m68k_read8 ;@ Call read8(r0) handler
12164  movs r1,r0,asl #24
12165
12166  and r10,r1,#0x80000000 ;@ r10=N_flag
12167  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12168
12169;@ EaCalc : Get '-(a0)' into r0:
12170  and r2,r8,#0x1e00
12171  ldr r0,[r7,r2,lsr #7]
12172  sub r0,r0,#1 ;@ Pre-decrement An
12173  str r0,[r7,r2,lsr #7]
12174;@ EaWrite: Write r1 into '-(a0)' (address in r0):
12175  mov r1,r1,lsr #24
12176  bic r0,r0,#0xff000000
12177  bl m68k_write8 ;@ Call write8(r0,r1) handler
12178
12179  ldr r5,[r7,#0x5c] ;@ Load Cycles
12180  ldrh r8,[r4],#2 ;@ Fetch next opcode
12181  subs r5,r5,#16 ;@ Subtract cycles
12182  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12183  b CycloneEnd
12184
12185;@ ---------- [1139] move.b $33333333.l, -(a0) uses Op1139 ----------
12186Op1139:
12187  str r4,[r7,#0x50] ;@ Save prev PC + 2
12188  str r5,[r7,#0x5c] ;@ Save Cycles
12189
12190;@ EaCalc : Get '$33333333.l' into r0:
12191  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12192  ldrh r0,[r4],#2
12193  orr r0,r0,r2,lsl #16
12194;@ EaRead : Read '$33333333.l' (address in r0) into r1:
12195  str r4,[r7,#0x40] ;@ Save PC
12196  bic r0,r0,#0xff000000
12197  bl m68k_read8 ;@ Call read8(r0) handler
12198  movs r1,r0,asl #24
12199
12200  and r10,r1,#0x80000000 ;@ r10=N_flag
12201  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12202
12203;@ EaCalc : Get '-(a0)' into r0:
12204  and r2,r8,#0x1e00
12205  ldr r0,[r7,r2,lsr #7]
12206  sub r0,r0,#1 ;@ Pre-decrement An
12207  str r0,[r7,r2,lsr #7]
12208;@ EaWrite: Write r1 into '-(a0)' (address in r0):
12209  mov r1,r1,lsr #24
12210  bic r0,r0,#0xff000000
12211  bl m68k_write8 ;@ Call write8(r0,r1) handler
12212
12213  ldr r5,[r7,#0x5c] ;@ Load Cycles
12214  ldrh r8,[r4],#2 ;@ Fetch next opcode
12215  subs r5,r5,#20 ;@ Subtract cycles
12216  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12217  b CycloneEnd
12218
12219;@ ---------- [113a] move.b ($3333,pc), -(a0); =3335 uses Op113a ----------
12220Op113a:
12221  str r4,[r7,#0x50] ;@ Save prev PC + 2
12222  str r5,[r7,#0x5c] ;@ Save Cycles
12223
12224;@ EaCalc : Get '($3333,pc)' into r0:
12225  ldr r0,[r7,#0x60] ;@ Get Memory base
12226  sub r0,r4,r0 ;@ Real PC
12227  ldrsh r2,[r4],#2 ;@ Fetch extension
12228  add r0,r2,r0 ;@ ($nn,PC)
12229;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
12230  str r4,[r7,#0x40] ;@ Save PC
12231  bic r0,r0,#0xff000000
12232  bl m68k_fetch8 ;@ Call fetch8(r0) handler
12233  movs r1,r0,asl #24
12234
12235  and r10,r1,#0x80000000 ;@ r10=N_flag
12236  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12237
12238;@ EaCalc : Get '-(a0)' into r0:
12239  and r2,r8,#0x1e00
12240  ldr r0,[r7,r2,lsr #7]
12241  sub r0,r0,#1 ;@ Pre-decrement An
12242  str r0,[r7,r2,lsr #7]
12243;@ EaWrite: Write r1 into '-(a0)' (address in r0):
12244  mov r1,r1,lsr #24
12245  bic r0,r0,#0xff000000
12246  bl m68k_write8 ;@ Call write8(r0,r1) handler
12247
12248  ldr r5,[r7,#0x5c] ;@ Load Cycles
12249  ldrh r8,[r4],#2 ;@ Fetch next opcode
12250  subs r5,r5,#16 ;@ Subtract cycles
12251  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12252  b CycloneEnd
12253
12254;@ ---------- [113b] move.b ($33,pc,d3.w*2), -(a0); =35 uses Op113b ----------
12255Op113b:
12256  str r4,[r7,#0x50] ;@ Save prev PC + 2
12257  str r5,[r7,#0x5c] ;@ Save Cycles
12258
12259;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
12260  ldr r0,[r7,#0x60] ;@ Get Memory base
12261  ldrh r3,[r4] ;@ Get extension word
12262  sub r0,r4,r0 ;@ r0=PC
12263  add r4,r4,#2
12264  mov r2,r3,lsr #10
12265  tst r3,#0x0800 ;@ Is Rn Word or Long
12266  and r2,r2,#0x3c ;@ r2=Index of Rn
12267  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12268  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12269  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
12270  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
12271  add r0,r2,r0 ;@ r0=Disp+PC+Rn
12272;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
12273  str r4,[r7,#0x40] ;@ Save PC
12274  bic r0,r0,#0xff000000
12275  bl m68k_fetch8 ;@ Call fetch8(r0) handler
12276  movs r1,r0,asl #24
12277
12278  and r10,r1,#0x80000000 ;@ r10=N_flag
12279  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12280
12281;@ EaCalc : Get '-(a0)' into r0:
12282  and r2,r8,#0x1e00
12283  ldr r0,[r7,r2,lsr #7]
12284  sub r0,r0,#1 ;@ Pre-decrement An
12285  str r0,[r7,r2,lsr #7]
12286;@ EaWrite: Write r1 into '-(a0)' (address in r0):
12287  mov r1,r1,lsr #24
12288  bic r0,r0,#0xff000000
12289  bl m68k_write8 ;@ Call write8(r0,r1) handler
12290
12291  ldr r5,[r7,#0x5c] ;@ Load Cycles
12292  ldrh r8,[r4],#2 ;@ Fetch next opcode
12293  subs r5,r5,#18 ;@ Subtract cycles
12294  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12295  b CycloneEnd
12296
12297;@ ---------- [113c] move.b #$33, -(a0) uses Op113c ----------
12298Op113c:
12299  str r4,[r7,#0x50] ;@ Save prev PC + 2
12300  str r5,[r7,#0x5c] ;@ Save Cycles
12301
12302;@ EaCalc : Get '#$33' into r1:
12303  ldrsb r1,[r4],#2 ;@ Fetch immediate value
12304;@ EaRead : Read '#$33' (address in r1) into r1:
12305  movs r1,r1,asl #24
12306
12307  and r10,r1,#0x80000000 ;@ r10=N_flag
12308  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12309
12310;@ EaCalc : Get '-(a0)' into r0:
12311  and r2,r8,#0x1e00
12312  ldr r0,[r7,r2,lsr #7]
12313  sub r0,r0,#1 ;@ Pre-decrement An
12314  str r0,[r7,r2,lsr #7]
12315;@ EaWrite: Write r1 into '-(a0)' (address in r0):
12316  mov r1,r1,lsr #24
12317  str r4,[r7,#0x40] ;@ Save PC
12318  bic r0,r0,#0xff000000
12319  bl m68k_write8 ;@ Call write8(r0,r1) handler
12320
12321  ldr r5,[r7,#0x5c] ;@ Load Cycles
12322  ldrh r8,[r4],#2 ;@ Fetch next opcode
12323  subs r5,r5,#12 ;@ Subtract cycles
12324  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12325  b CycloneEnd
12326
12327;@ ---------- [1140] move.b d0, ($3333,a0) uses Op1140 ----------
12328Op1140:
12329  str r4,[r7,#0x50] ;@ Save prev PC + 2
12330  str r5,[r7,#0x5c] ;@ Save Cycles
12331
12332;@ EaCalc : Get register index into r1:
12333  and r1,r8,#0x000f
12334;@ EaRead : Read register[r1] into r1:
12335  ldrb r1,[r7,r1,lsl #2]
12336
12337  movs r2,r1,lsl #24
12338  and r10,r2,#0x80000000 ;@ r10=N_flag
12339  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12340
12341;@ EaCalc : Get '($3333,a0)' into r0:
12342  ldrsh r0,[r4],#2 ;@ Fetch offset
12343  and r2,r8,#0x1e00
12344  mov r2,r2,lsr #9
12345  ldr r2,[r7,r2,lsl #2]
12346  add r0,r0,r2 ;@ Add on offset
12347;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12348  str r4,[r7,#0x40] ;@ Save PC
12349  bic r0,r0,#0xff000000
12350  bl m68k_write8 ;@ Call write8(r0,r1) handler
12351
12352  ldr r5,[r7,#0x5c] ;@ Load Cycles
12353  ldrh r8,[r4],#2 ;@ Fetch next opcode
12354  subs r5,r5,#12 ;@ Subtract cycles
12355  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12356  b CycloneEnd
12357
12358;@ ---------- [1150] move.b (a0), ($3333,a0) uses Op1150 ----------
12359Op1150:
12360  str r4,[r7,#0x50] ;@ Save prev PC + 2
12361  str r5,[r7,#0x5c] ;@ Save Cycles
12362
12363;@ EaCalc : Get '(a0)' into r0:
12364  and r2,r8,#0x000f
12365  orr r2,r2,#0x8 ;@ A0-7
12366  ldr r0,[r7,r2,lsl #2]
12367;@ EaRead : Read '(a0)' (address in r0) into r1:
12368  str r4,[r7,#0x40] ;@ Save PC
12369  bic r0,r0,#0xff000000
12370  bl m68k_read8 ;@ Call read8(r0) handler
12371  movs r1,r0,asl #24
12372
12373  and r10,r1,#0x80000000 ;@ r10=N_flag
12374  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12375
12376;@ EaCalc : Get '($3333,a0)' into r0:
12377  ldrsh r0,[r4],#2 ;@ Fetch offset
12378  and r2,r8,#0x1e00
12379  mov r2,r2,lsr #9
12380  ldr r2,[r7,r2,lsl #2]
12381  add r0,r0,r2 ;@ Add on offset
12382;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12383  mov r1,r1,lsr #24
12384  str r4,[r7,#0x40] ;@ Save PC
12385  bic r0,r0,#0xff000000
12386  bl m68k_write8 ;@ Call write8(r0,r1) handler
12387
12388  ldr r5,[r7,#0x5c] ;@ Load Cycles
12389  ldrh r8,[r4],#2 ;@ Fetch next opcode
12390  subs r5,r5,#16 ;@ Subtract cycles
12391  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12392  b CycloneEnd
12393
12394;@ ---------- [1158] move.b (a0)+, ($3333,a0) uses Op1158 ----------
12395Op1158:
12396  str r4,[r7,#0x50] ;@ Save prev PC + 2
12397  str r5,[r7,#0x5c] ;@ Save Cycles
12398
12399;@ EaCalc : Get '(a0)+' into r0:
12400  and r2,r8,#0x000f
12401  ldr r0,[r7,r2,lsl #2]
12402  add r3,r0,#1 ;@ Post-increment An
12403  str r3,[r7,r2,lsl #2]
12404;@ EaRead : Read '(a0)+' (address in r0) into r1:
12405  str r4,[r7,#0x40] ;@ Save PC
12406  bic r0,r0,#0xff000000
12407  bl m68k_read8 ;@ Call read8(r0) handler
12408  movs r1,r0,asl #24
12409
12410  and r10,r1,#0x80000000 ;@ r10=N_flag
12411  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12412
12413;@ EaCalc : Get '($3333,a0)' into r0:
12414  ldrsh r0,[r4],#2 ;@ Fetch offset
12415  and r2,r8,#0x1e00
12416  mov r2,r2,lsr #9
12417  ldr r2,[r7,r2,lsl #2]
12418  add r0,r0,r2 ;@ Add on offset
12419;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12420  mov r1,r1,lsr #24
12421  str r4,[r7,#0x40] ;@ Save PC
12422  bic r0,r0,#0xff000000
12423  bl m68k_write8 ;@ Call write8(r0,r1) handler
12424
12425  ldr r5,[r7,#0x5c] ;@ Load Cycles
12426  ldrh r8,[r4],#2 ;@ Fetch next opcode
12427  subs r5,r5,#16 ;@ Subtract cycles
12428  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12429  b CycloneEnd
12430
12431;@ ---------- [115f] move.b (a7)+, ($3333,a0) uses Op115f ----------
12432Op115f:
12433  str r4,[r7,#0x50] ;@ Save prev PC + 2
12434  str r5,[r7,#0x5c] ;@ Save Cycles
12435
12436;@ EaCalc : Get '(a7)+' into r0:
12437  ldr r0,[r7,#0x3c] ;@ A7
12438  add r3,r0,#2 ;@ Post-increment An
12439  str r3,[r7,#0x3c] ;@ A7
12440;@ EaRead : Read '(a7)+' (address in r0) into r1:
12441  str r4,[r7,#0x40] ;@ Save PC
12442  bic r0,r0,#0xff000000
12443  bl m68k_read8 ;@ Call read8(r0) handler
12444  movs r1,r0,asl #24
12445
12446  and r10,r1,#0x80000000 ;@ r10=N_flag
12447  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12448
12449;@ EaCalc : Get '($3333,a0)' into r0:
12450  ldrsh r0,[r4],#2 ;@ Fetch offset
12451  and r2,r8,#0x1e00
12452  mov r2,r2,lsr #9
12453  ldr r2,[r7,r2,lsl #2]
12454  add r0,r0,r2 ;@ Add on offset
12455;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12456  mov r1,r1,lsr #24
12457  str r4,[r7,#0x40] ;@ Save PC
12458  bic r0,r0,#0xff000000
12459  bl m68k_write8 ;@ Call write8(r0,r1) handler
12460
12461  ldr r5,[r7,#0x5c] ;@ Load Cycles
12462  ldrh r8,[r4],#2 ;@ Fetch next opcode
12463  subs r5,r5,#16 ;@ Subtract cycles
12464  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12465  b CycloneEnd
12466
12467;@ ---------- [1160] move.b -(a0), ($3333,a0) uses Op1160 ----------
12468Op1160:
12469  str r4,[r7,#0x50] ;@ Save prev PC + 2
12470  str r5,[r7,#0x5c] ;@ Save Cycles
12471
12472;@ EaCalc : Get '-(a0)' into r0:
12473  and r2,r8,#0x000f
12474  orr r2,r2,#0x8 ;@ A0-7
12475  ldr r0,[r7,r2,lsl #2]
12476  sub r0,r0,#1 ;@ Pre-decrement An
12477  str r0,[r7,r2,lsl #2]
12478;@ EaRead : Read '-(a0)' (address in r0) into r1:
12479  str r4,[r7,#0x40] ;@ Save PC
12480  bic r0,r0,#0xff000000
12481  bl m68k_read8 ;@ Call read8(r0) handler
12482  movs r1,r0,asl #24
12483
12484  and r10,r1,#0x80000000 ;@ r10=N_flag
12485  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12486
12487;@ EaCalc : Get '($3333,a0)' into r0:
12488  ldrsh r0,[r4],#2 ;@ Fetch offset
12489  and r2,r8,#0x1e00
12490  mov r2,r2,lsr #9
12491  ldr r2,[r7,r2,lsl #2]
12492  add r0,r0,r2 ;@ Add on offset
12493;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12494  mov r1,r1,lsr #24
12495  str r4,[r7,#0x40] ;@ Save PC
12496  bic r0,r0,#0xff000000
12497  bl m68k_write8 ;@ Call write8(r0,r1) handler
12498
12499  ldr r5,[r7,#0x5c] ;@ Load Cycles
12500  ldrh r8,[r4],#2 ;@ Fetch next opcode
12501  subs r5,r5,#18 ;@ Subtract cycles
12502  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12503  b CycloneEnd
12504
12505;@ ---------- [1167] move.b -(a7), ($3333,a0) uses Op1167 ----------
12506Op1167:
12507  str r4,[r7,#0x50] ;@ Save prev PC + 2
12508  str r5,[r7,#0x5c] ;@ Save Cycles
12509
12510;@ EaCalc : Get '-(a7)' into r0:
12511  ldr r0,[r7,#0x3c] ;@ A7
12512  sub r0,r0,#2 ;@ Pre-decrement An
12513  str r0,[r7,#0x3c] ;@ A7
12514;@ EaRead : Read '-(a7)' (address in r0) into r1:
12515  str r4,[r7,#0x40] ;@ Save PC
12516  bic r0,r0,#0xff000000
12517  bl m68k_read8 ;@ Call read8(r0) handler
12518  movs r1,r0,asl #24
12519
12520  and r10,r1,#0x80000000 ;@ r10=N_flag
12521  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12522
12523;@ EaCalc : Get '($3333,a0)' into r0:
12524  ldrsh r0,[r4],#2 ;@ Fetch offset
12525  and r2,r8,#0x1e00
12526  mov r2,r2,lsr #9
12527  ldr r2,[r7,r2,lsl #2]
12528  add r0,r0,r2 ;@ Add on offset
12529;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12530  mov r1,r1,lsr #24
12531  str r4,[r7,#0x40] ;@ Save PC
12532  bic r0,r0,#0xff000000
12533  bl m68k_write8 ;@ Call write8(r0,r1) handler
12534
12535  ldr r5,[r7,#0x5c] ;@ Load Cycles
12536  ldrh r8,[r4],#2 ;@ Fetch next opcode
12537  subs r5,r5,#18 ;@ Subtract cycles
12538  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12539  b CycloneEnd
12540
12541;@ ---------- [1168] move.b ($3333,a0), ($3333,a0) uses Op1168 ----------
12542Op1168:
12543  str r4,[r7,#0x50] ;@ Save prev PC + 2
12544  str r5,[r7,#0x5c] ;@ Save Cycles
12545
12546;@ EaCalc : Get '($3333,a0)' into r0:
12547  ldrsh r0,[r4],#2 ;@ Fetch offset
12548  and r2,r8,#0x000f
12549  ldr r2,[r7,r2,lsl #2]
12550  add r0,r0,r2 ;@ Add on offset
12551;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
12552  str r4,[r7,#0x40] ;@ Save PC
12553  bic r0,r0,#0xff000000
12554  bl m68k_read8 ;@ Call read8(r0) handler
12555  movs r1,r0,asl #24
12556
12557  and r10,r1,#0x80000000 ;@ r10=N_flag
12558  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12559
12560;@ EaCalc : Get '($3333,a0)' into r0:
12561  ldrsh r0,[r4],#2 ;@ Fetch offset
12562  and r2,r8,#0x1e00
12563  mov r2,r2,lsr #9
12564  ldr r2,[r7,r2,lsl #2]
12565  add r0,r0,r2 ;@ Add on offset
12566;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12567  mov r1,r1,lsr #24
12568  str r4,[r7,#0x40] ;@ Save PC
12569  bic r0,r0,#0xff000000
12570  bl m68k_write8 ;@ Call write8(r0,r1) handler
12571
12572  ldr r5,[r7,#0x5c] ;@ Load Cycles
12573  ldrh r8,[r4],#2 ;@ Fetch next opcode
12574  subs r5,r5,#20 ;@ Subtract cycles
12575  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12576  b CycloneEnd
12577
12578;@ ---------- [1170] move.b ($33,a0,d3.w*2), ($3333,a0) uses Op1170 ----------
12579Op1170:
12580  str r4,[r7,#0x50] ;@ Save prev PC + 2
12581  str r5,[r7,#0x5c] ;@ Save Cycles
12582
12583;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
12584;@ Get extension word into r3:
12585  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
12586  mov r2,r3,lsr #10
12587  tst r3,#0x0800 ;@ Is Rn Word or Long
12588  and r2,r2,#0x3c ;@ r2=Index of Rn
12589  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12590  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12591  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
12592  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
12593  and r2,r8,#0x000f
12594  orr r2,r2,#0x8 ;@ A0-7
12595  ldr r2,[r7,r2,lsl #2]
12596  add r0,r2,r3 ;@ r0=Disp+An+Rn
12597;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
12598  str r4,[r7,#0x40] ;@ Save PC
12599  bic r0,r0,#0xff000000
12600  bl m68k_read8 ;@ Call read8(r0) handler
12601  movs r1,r0,asl #24
12602
12603  and r10,r1,#0x80000000 ;@ r10=N_flag
12604  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12605
12606;@ EaCalc : Get '($3333,a0)' into r0:
12607  ldrsh r0,[r4],#2 ;@ Fetch offset
12608  and r2,r8,#0x1e00
12609  mov r2,r2,lsr #9
12610  ldr r2,[r7,r2,lsl #2]
12611  add r0,r0,r2 ;@ Add on offset
12612;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12613  mov r1,r1,lsr #24
12614  str r4,[r7,#0x40] ;@ Save PC
12615  bic r0,r0,#0xff000000
12616  bl m68k_write8 ;@ Call write8(r0,r1) handler
12617
12618  ldr r5,[r7,#0x5c] ;@ Load Cycles
12619  ldrh r8,[r4],#2 ;@ Fetch next opcode
12620  subs r5,r5,#22 ;@ Subtract cycles
12621  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12622  b CycloneEnd
12623
12624;@ ---------- [1178] move.b $3333.w, ($3333,a0) uses Op1178 ----------
12625Op1178:
12626  str r4,[r7,#0x50] ;@ Save prev PC + 2
12627  str r5,[r7,#0x5c] ;@ Save Cycles
12628
12629;@ EaCalc : Get '$3333.w' into r0:
12630  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12631;@ EaRead : Read '$3333.w' (address in r0) into r1:
12632  str r4,[r7,#0x40] ;@ Save PC
12633  bic r0,r0,#0xff000000
12634  bl m68k_read8 ;@ Call read8(r0) handler
12635  movs r1,r0,asl #24
12636
12637  and r10,r1,#0x80000000 ;@ r10=N_flag
12638  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12639
12640;@ EaCalc : Get '($3333,a0)' into r0:
12641  ldrsh r0,[r4],#2 ;@ Fetch offset
12642  and r2,r8,#0x1e00
12643  mov r2,r2,lsr #9
12644  ldr r2,[r7,r2,lsl #2]
12645  add r0,r0,r2 ;@ Add on offset
12646;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12647  mov r1,r1,lsr #24
12648  str r4,[r7,#0x40] ;@ Save PC
12649  bic r0,r0,#0xff000000
12650  bl m68k_write8 ;@ Call write8(r0,r1) handler
12651
12652  ldr r5,[r7,#0x5c] ;@ Load Cycles
12653  ldrh r8,[r4],#2 ;@ Fetch next opcode
12654  subs r5,r5,#20 ;@ Subtract cycles
12655  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12656  b CycloneEnd
12657
12658;@ ---------- [1179] move.b $33333333.l, ($3333,a0) uses Op1179 ----------
12659Op1179:
12660  str r4,[r7,#0x50] ;@ Save prev PC + 2
12661  str r5,[r7,#0x5c] ;@ Save Cycles
12662
12663;@ EaCalc : Get '$33333333.l' into r0:
12664  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12665  ldrh r0,[r4],#2
12666  orr r0,r0,r2,lsl #16
12667;@ EaRead : Read '$33333333.l' (address in r0) into r1:
12668  str r4,[r7,#0x40] ;@ Save PC
12669  bic r0,r0,#0xff000000
12670  bl m68k_read8 ;@ Call read8(r0) handler
12671  movs r1,r0,asl #24
12672
12673  and r10,r1,#0x80000000 ;@ r10=N_flag
12674  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12675
12676;@ EaCalc : Get '($3333,a0)' into r0:
12677  ldrsh r0,[r4],#2 ;@ Fetch offset
12678  and r2,r8,#0x1e00
12679  mov r2,r2,lsr #9
12680  ldr r2,[r7,r2,lsl #2]
12681  add r0,r0,r2 ;@ Add on offset
12682;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12683  mov r1,r1,lsr #24
12684  str r4,[r7,#0x40] ;@ Save PC
12685  bic r0,r0,#0xff000000
12686  bl m68k_write8 ;@ Call write8(r0,r1) handler
12687
12688  ldr r5,[r7,#0x5c] ;@ Load Cycles
12689  ldrh r8,[r4],#2 ;@ Fetch next opcode
12690  subs r5,r5,#24 ;@ Subtract cycles
12691  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12692  b CycloneEnd
12693
12694;@ ---------- [117a] move.b ($3333,pc), ($3333,a0); =3335 uses Op117a ----------
12695Op117a:
12696  str r4,[r7,#0x50] ;@ Save prev PC + 2
12697  str r5,[r7,#0x5c] ;@ Save Cycles
12698
12699;@ EaCalc : Get '($3333,pc)' into r0:
12700  ldr r0,[r7,#0x60] ;@ Get Memory base
12701  sub r0,r4,r0 ;@ Real PC
12702  ldrsh r2,[r4],#2 ;@ Fetch extension
12703  add r0,r2,r0 ;@ ($nn,PC)
12704;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
12705  str r4,[r7,#0x40] ;@ Save PC
12706  bic r0,r0,#0xff000000
12707  bl m68k_fetch8 ;@ Call fetch8(r0) handler
12708  movs r1,r0,asl #24
12709
12710  and r10,r1,#0x80000000 ;@ r10=N_flag
12711  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12712
12713;@ EaCalc : Get '($3333,a0)' into r0:
12714  ldrsh r0,[r4],#2 ;@ Fetch offset
12715  and r2,r8,#0x1e00
12716  mov r2,r2,lsr #9
12717  ldr r2,[r7,r2,lsl #2]
12718  add r0,r0,r2 ;@ Add on offset
12719;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12720  mov r1,r1,lsr #24
12721  str r4,[r7,#0x40] ;@ Save PC
12722  bic r0,r0,#0xff000000
12723  bl m68k_write8 ;@ Call write8(r0,r1) handler
12724
12725  ldr r5,[r7,#0x5c] ;@ Load Cycles
12726  ldrh r8,[r4],#2 ;@ Fetch next opcode
12727  subs r5,r5,#20 ;@ Subtract cycles
12728  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12729  b CycloneEnd
12730
12731;@ ---------- [117b] move.b ($33,pc,d3.w*2), ($3333,a0); =35 uses Op117b ----------
12732Op117b:
12733  str r4,[r7,#0x50] ;@ Save prev PC + 2
12734  str r5,[r7,#0x5c] ;@ Save Cycles
12735
12736;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
12737  ldr r0,[r7,#0x60] ;@ Get Memory base
12738  ldrh r3,[r4] ;@ Get extension word
12739  sub r0,r4,r0 ;@ r0=PC
12740  add r4,r4,#2
12741  mov r2,r3,lsr #10
12742  tst r3,#0x0800 ;@ Is Rn Word or Long
12743  and r2,r2,#0x3c ;@ r2=Index of Rn
12744  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12745  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12746  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
12747  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
12748  add r0,r2,r0 ;@ r0=Disp+PC+Rn
12749;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
12750  str r4,[r7,#0x40] ;@ Save PC
12751  bic r0,r0,#0xff000000
12752  bl m68k_fetch8 ;@ Call fetch8(r0) handler
12753  movs r1,r0,asl #24
12754
12755  and r10,r1,#0x80000000 ;@ r10=N_flag
12756  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12757
12758;@ EaCalc : Get '($3333,a0)' into r0:
12759  ldrsh r0,[r4],#2 ;@ Fetch offset
12760  and r2,r8,#0x1e00
12761  mov r2,r2,lsr #9
12762  ldr r2,[r7,r2,lsl #2]
12763  add r0,r0,r2 ;@ Add on offset
12764;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12765  mov r1,r1,lsr #24
12766  str r4,[r7,#0x40] ;@ Save PC
12767  bic r0,r0,#0xff000000
12768  bl m68k_write8 ;@ Call write8(r0,r1) handler
12769
12770  ldr r5,[r7,#0x5c] ;@ Load Cycles
12771  ldrh r8,[r4],#2 ;@ Fetch next opcode
12772  subs r5,r5,#22 ;@ Subtract cycles
12773  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12774  b CycloneEnd
12775
12776;@ ---------- [117c] move.b #$33, ($3333,a0) uses Op117c ----------
12777Op117c:
12778  str r4,[r7,#0x50] ;@ Save prev PC + 2
12779  str r5,[r7,#0x5c] ;@ Save Cycles
12780
12781;@ EaCalc : Get '#$33' into r1:
12782  ldrsb r1,[r4],#2 ;@ Fetch immediate value
12783;@ EaRead : Read '#$33' (address in r1) into r1:
12784  movs r1,r1,asl #24
12785
12786  and r10,r1,#0x80000000 ;@ r10=N_flag
12787  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12788
12789;@ EaCalc : Get '($3333,a0)' into r0:
12790  ldrsh r0,[r4],#2 ;@ Fetch offset
12791  and r2,r8,#0x1e00
12792  mov r2,r2,lsr #9
12793  ldr r2,[r7,r2,lsl #2]
12794  add r0,r0,r2 ;@ Add on offset
12795;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
12796  mov r1,r1,lsr #24
12797  str r4,[r7,#0x40] ;@ Save PC
12798  bic r0,r0,#0xff000000
12799  bl m68k_write8 ;@ Call write8(r0,r1) handler
12800
12801  ldr r5,[r7,#0x5c] ;@ Load Cycles
12802  ldrh r8,[r4],#2 ;@ Fetch next opcode
12803  subs r5,r5,#16 ;@ Subtract cycles
12804  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12805  b CycloneEnd
12806
12807;@ ---------- [1180] move.b d0, ($33,a0,d3.w*2) uses Op1180 ----------
12808Op1180:
12809  str r4,[r7,#0x50] ;@ Save prev PC + 2
12810  str r5,[r7,#0x5c] ;@ Save Cycles
12811
12812;@ EaCalc : Get register index into r1:
12813  and r1,r8,#0x000f
12814;@ EaRead : Read register[r1] into r1:
12815  ldrb r1,[r7,r1,lsl #2]
12816
12817  movs r2,r1,lsl #24
12818  and r10,r2,#0x80000000 ;@ r10=N_flag
12819  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12820
12821;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
12822;@ Get extension word into r3:
12823  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
12824  mov r2,r3,lsr #10
12825  tst r3,#0x0800 ;@ Is Rn Word or Long
12826  and r2,r2,#0x3c ;@ r2=Index of Rn
12827  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12828  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12829  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
12830  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
12831  and r2,r8,#0x1e00
12832  orr r2,r2,#0x1000 ;@ A0-7
12833  mov r2,r2,lsr #9
12834  ldr r2,[r7,r2,lsl #2]
12835  add r0,r2,r3 ;@ r0=Disp+An+Rn
12836;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
12837  str r4,[r7,#0x40] ;@ Save PC
12838  bic r0,r0,#0xff000000
12839  bl m68k_write8 ;@ Call write8(r0,r1) handler
12840
12841  ldr r5,[r7,#0x5c] ;@ Load Cycles
12842  ldrh r8,[r4],#2 ;@ Fetch next opcode
12843  subs r5,r5,#14 ;@ Subtract cycles
12844  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12845  b CycloneEnd
12846
12847;@ ---------- [1190] move.b (a0), ($33,a0,d3.w*2) uses Op1190 ----------
12848Op1190:
12849  str r4,[r7,#0x50] ;@ Save prev PC + 2
12850  str r5,[r7,#0x5c] ;@ Save Cycles
12851
12852;@ EaCalc : Get '(a0)' into r0:
12853  and r2,r8,#0x000f
12854  orr r2,r2,#0x8 ;@ A0-7
12855  ldr r0,[r7,r2,lsl #2]
12856;@ EaRead : Read '(a0)' (address in r0) into r1:
12857  str r4,[r7,#0x40] ;@ Save PC
12858  bic r0,r0,#0xff000000
12859  bl m68k_read8 ;@ Call read8(r0) handler
12860  movs r1,r0,asl #24
12861
12862  and r10,r1,#0x80000000 ;@ r10=N_flag
12863  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12864
12865;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
12866;@ Get extension word into r3:
12867  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
12868  mov r2,r3,lsr #10
12869  tst r3,#0x0800 ;@ Is Rn Word or Long
12870  and r2,r2,#0x3c ;@ r2=Index of Rn
12871  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12872  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12873  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
12874  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
12875  and r2,r8,#0x1e00
12876  orr r2,r2,#0x1000 ;@ A0-7
12877  mov r2,r2,lsr #9
12878  ldr r2,[r7,r2,lsl #2]
12879  add r0,r2,r3 ;@ r0=Disp+An+Rn
12880;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
12881  mov r1,r1,lsr #24
12882  str r4,[r7,#0x40] ;@ Save PC
12883  bic r0,r0,#0xff000000
12884  bl m68k_write8 ;@ Call write8(r0,r1) handler
12885
12886  ldr r5,[r7,#0x5c] ;@ Load Cycles
12887  ldrh r8,[r4],#2 ;@ Fetch next opcode
12888  subs r5,r5,#18 ;@ Subtract cycles
12889  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12890  b CycloneEnd
12891
12892;@ ---------- [119f] move.b (a7)+, ($33,a0,d3.w*2) uses Op119f ----------
12893Op119f:
12894  str r4,[r7,#0x50] ;@ Save prev PC + 2
12895  str r5,[r7,#0x5c] ;@ Save Cycles
12896
12897;@ EaCalc : Get '(a7)+' into r0:
12898  ldr r0,[r7,#0x3c] ;@ A7
12899  add r3,r0,#2 ;@ Post-increment An
12900  str r3,[r7,#0x3c] ;@ A7
12901;@ EaRead : Read '(a7)+' (address in r0) into r1:
12902  str r4,[r7,#0x40] ;@ Save PC
12903  bic r0,r0,#0xff000000
12904  bl m68k_read8 ;@ Call read8(r0) handler
12905  movs r1,r0,asl #24
12906
12907  and r10,r1,#0x80000000 ;@ r10=N_flag
12908  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12909
12910;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
12911;@ Get extension word into r3:
12912  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
12913  mov r2,r3,lsr #10
12914  tst r3,#0x0800 ;@ Is Rn Word or Long
12915  and r2,r2,#0x3c ;@ r2=Index of Rn
12916  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12917  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12918  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
12919  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
12920  and r2,r8,#0x1e00
12921  orr r2,r2,#0x1000 ;@ A0-7
12922  mov r2,r2,lsr #9
12923  ldr r2,[r7,r2,lsl #2]
12924  add r0,r2,r3 ;@ r0=Disp+An+Rn
12925;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
12926  mov r1,r1,lsr #24
12927  str r4,[r7,#0x40] ;@ Save PC
12928  bic r0,r0,#0xff000000
12929  bl m68k_write8 ;@ Call write8(r0,r1) handler
12930
12931  ldr r5,[r7,#0x5c] ;@ Load Cycles
12932  ldrh r8,[r4],#2 ;@ Fetch next opcode
12933  subs r5,r5,#18 ;@ Subtract cycles
12934  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12935  b CycloneEnd
12936
12937;@ ---------- [11a0] move.b -(a0), ($33,a0,d3.w*2) uses Op11a0 ----------
12938Op11a0:
12939  str r4,[r7,#0x50] ;@ Save prev PC + 2
12940  str r5,[r7,#0x5c] ;@ Save Cycles
12941
12942;@ EaCalc : Get '-(a0)' into r0:
12943  and r2,r8,#0x000f
12944  orr r2,r2,#0x8 ;@ A0-7
12945  ldr r0,[r7,r2,lsl #2]
12946  sub r0,r0,#1 ;@ Pre-decrement An
12947  str r0,[r7,r2,lsl #2]
12948;@ EaRead : Read '-(a0)' (address in r0) into r1:
12949  str r4,[r7,#0x40] ;@ Save PC
12950  bic r0,r0,#0xff000000
12951  bl m68k_read8 ;@ Call read8(r0) handler
12952  movs r1,r0,asl #24
12953
12954  and r10,r1,#0x80000000 ;@ r10=N_flag
12955  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12956
12957;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
12958;@ Get extension word into r3:
12959  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
12960  mov r2,r3,lsr #10
12961  tst r3,#0x0800 ;@ Is Rn Word or Long
12962  and r2,r2,#0x3c ;@ r2=Index of Rn
12963  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12964  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12965  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
12966  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
12967  and r2,r8,#0x1e00
12968  orr r2,r2,#0x1000 ;@ A0-7
12969  mov r2,r2,lsr #9
12970  ldr r2,[r7,r2,lsl #2]
12971  add r0,r2,r3 ;@ r0=Disp+An+Rn
12972;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
12973  mov r1,r1,lsr #24
12974  str r4,[r7,#0x40] ;@ Save PC
12975  bic r0,r0,#0xff000000
12976  bl m68k_write8 ;@ Call write8(r0,r1) handler
12977
12978  ldr r5,[r7,#0x5c] ;@ Load Cycles
12979  ldrh r8,[r4],#2 ;@ Fetch next opcode
12980  subs r5,r5,#20 ;@ Subtract cycles
12981  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12982  b CycloneEnd
12983
12984;@ ---------- [11a7] move.b -(a7), ($33,a0,d3.w*2) uses Op11a7 ----------
12985Op11a7:
12986  str r4,[r7,#0x50] ;@ Save prev PC + 2
12987  str r5,[r7,#0x5c] ;@ Save Cycles
12988
12989;@ EaCalc : Get '-(a7)' into r0:
12990  ldr r0,[r7,#0x3c] ;@ A7
12991  sub r0,r0,#2 ;@ Pre-decrement An
12992  str r0,[r7,#0x3c] ;@ A7
12993;@ EaRead : Read '-(a7)' (address in r0) into r1:
12994  str r4,[r7,#0x40] ;@ Save PC
12995  bic r0,r0,#0xff000000
12996  bl m68k_read8 ;@ Call read8(r0) handler
12997  movs r1,r0,asl #24
12998
12999  and r10,r1,#0x80000000 ;@ r10=N_flag
13000  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13001
13002;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13003;@ Get extension word into r3:
13004  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13005  mov r2,r3,lsr #10
13006  tst r3,#0x0800 ;@ Is Rn Word or Long
13007  and r2,r2,#0x3c ;@ r2=Index of Rn
13008  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13009  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13010  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13011  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13012  and r2,r8,#0x1e00
13013  orr r2,r2,#0x1000 ;@ A0-7
13014  mov r2,r2,lsr #9
13015  ldr r2,[r7,r2,lsl #2]
13016  add r0,r2,r3 ;@ r0=Disp+An+Rn
13017;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
13018  mov r1,r1,lsr #24
13019  str r4,[r7,#0x40] ;@ Save PC
13020  bic r0,r0,#0xff000000
13021  bl m68k_write8 ;@ Call write8(r0,r1) handler
13022
13023  ldr r5,[r7,#0x5c] ;@ Load Cycles
13024  ldrh r8,[r4],#2 ;@ Fetch next opcode
13025  subs r5,r5,#20 ;@ Subtract cycles
13026  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13027  b CycloneEnd
13028
13029;@ ---------- [11a8] move.b ($3333,a0), ($33,a0,d3.w*2) uses Op11a8 ----------
13030Op11a8:
13031  str r4,[r7,#0x50] ;@ Save prev PC + 2
13032  str r5,[r7,#0x5c] ;@ Save Cycles
13033
13034;@ EaCalc : Get '($3333,a0)' into r0:
13035  ldrsh r0,[r4],#2 ;@ Fetch offset
13036  and r2,r8,#0x000f
13037  ldr r2,[r7,r2,lsl #2]
13038  add r0,r0,r2 ;@ Add on offset
13039;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
13040  str r4,[r7,#0x40] ;@ Save PC
13041  bic r0,r0,#0xff000000
13042  bl m68k_read8 ;@ Call read8(r0) handler
13043  movs r1,r0,asl #24
13044
13045  and r10,r1,#0x80000000 ;@ r10=N_flag
13046  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13047
13048;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13049;@ Get extension word into r3:
13050  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13051  mov r2,r3,lsr #10
13052  tst r3,#0x0800 ;@ Is Rn Word or Long
13053  and r2,r2,#0x3c ;@ r2=Index of Rn
13054  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13055  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13056  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13057  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13058  and r2,r8,#0x1e00
13059  orr r2,r2,#0x1000 ;@ A0-7
13060  mov r2,r2,lsr #9
13061  ldr r2,[r7,r2,lsl #2]
13062  add r0,r2,r3 ;@ r0=Disp+An+Rn
13063;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
13064  mov r1,r1,lsr #24
13065  str r4,[r7,#0x40] ;@ Save PC
13066  bic r0,r0,#0xff000000
13067  bl m68k_write8 ;@ Call write8(r0,r1) handler
13068
13069  ldr r5,[r7,#0x5c] ;@ Load Cycles
13070  ldrh r8,[r4],#2 ;@ Fetch next opcode
13071  subs r5,r5,#22 ;@ Subtract cycles
13072  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13073  b CycloneEnd
13074
13075;@ ---------- [11b0] move.b ($33,a0,d3.w*2), ($33,a0,d3.w*2) uses Op11b0 ----------
13076Op11b0:
13077  str r4,[r7,#0x50] ;@ Save prev PC + 2
13078  str r5,[r7,#0x5c] ;@ Save Cycles
13079
13080;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13081;@ Get extension word into r3:
13082  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13083  mov r2,r3,lsr #10
13084  tst r3,#0x0800 ;@ Is Rn Word or Long
13085  and r2,r2,#0x3c ;@ r2=Index of Rn
13086  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13087  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13088  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13089  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13090  and r2,r8,#0x000f
13091  orr r2,r2,#0x8 ;@ A0-7
13092  ldr r2,[r7,r2,lsl #2]
13093  add r0,r2,r3 ;@ r0=Disp+An+Rn
13094;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
13095  str r4,[r7,#0x40] ;@ Save PC
13096  bic r0,r0,#0xff000000
13097  bl m68k_read8 ;@ Call read8(r0) handler
13098  movs r1,r0,asl #24
13099
13100  and r10,r1,#0x80000000 ;@ r10=N_flag
13101  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13102
13103;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13104;@ Get extension word into r3:
13105  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13106  mov r2,r3,lsr #10
13107  tst r3,#0x0800 ;@ Is Rn Word or Long
13108  and r2,r2,#0x3c ;@ r2=Index of Rn
13109  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13110  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13111  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13112  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13113  and r2,r8,#0x1e00
13114  orr r2,r2,#0x1000 ;@ A0-7
13115  mov r2,r2,lsr #9
13116  ldr r2,[r7,r2,lsl #2]
13117  add r0,r2,r3 ;@ r0=Disp+An+Rn
13118;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
13119  mov r1,r1,lsr #24
13120  str r4,[r7,#0x40] ;@ Save PC
13121  bic r0,r0,#0xff000000
13122  bl m68k_write8 ;@ Call write8(r0,r1) handler
13123
13124  ldr r5,[r7,#0x5c] ;@ Load Cycles
13125  ldrh r8,[r4],#2 ;@ Fetch next opcode
13126  subs r5,r5,#24 ;@ Subtract cycles
13127  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13128  b CycloneEnd
13129
13130;@ ---------- [11b8] move.b $3333.w, ($33,a0,d3.w*2) uses Op11b8 ----------
13131Op11b8:
13132  str r4,[r7,#0x50] ;@ Save prev PC + 2
13133  str r5,[r7,#0x5c] ;@ Save Cycles
13134
13135;@ EaCalc : Get '$3333.w' into r0:
13136  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13137;@ EaRead : Read '$3333.w' (address in r0) into r1:
13138  str r4,[r7,#0x40] ;@ Save PC
13139  bic r0,r0,#0xff000000
13140  bl m68k_read8 ;@ Call read8(r0) handler
13141  movs r1,r0,asl #24
13142
13143  and r10,r1,#0x80000000 ;@ r10=N_flag
13144  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13145
13146;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13147;@ Get extension word into r3:
13148  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13149  mov r2,r3,lsr #10
13150  tst r3,#0x0800 ;@ Is Rn Word or Long
13151  and r2,r2,#0x3c ;@ r2=Index of Rn
13152  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13153  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13154  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13155  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13156  and r2,r8,#0x1e00
13157  orr r2,r2,#0x1000 ;@ A0-7
13158  mov r2,r2,lsr #9
13159  ldr r2,[r7,r2,lsl #2]
13160  add r0,r2,r3 ;@ r0=Disp+An+Rn
13161;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
13162  mov r1,r1,lsr #24
13163  str r4,[r7,#0x40] ;@ Save PC
13164  bic r0,r0,#0xff000000
13165  bl m68k_write8 ;@ Call write8(r0,r1) handler
13166
13167  ldr r5,[r7,#0x5c] ;@ Load Cycles
13168  ldrh r8,[r4],#2 ;@ Fetch next opcode
13169  subs r5,r5,#22 ;@ Subtract cycles
13170  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13171  b CycloneEnd
13172
13173;@ ---------- [11b9] move.b $33333333.l, ($33,a0,d3.w*2) uses Op11b9 ----------
13174Op11b9:
13175  str r4,[r7,#0x50] ;@ Save prev PC + 2
13176  str r5,[r7,#0x5c] ;@ Save Cycles
13177
13178;@ EaCalc : Get '$33333333.l' into r0:
13179  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13180  ldrh r0,[r4],#2
13181  orr r0,r0,r2,lsl #16
13182;@ EaRead : Read '$33333333.l' (address in r0) into r1:
13183  str r4,[r7,#0x40] ;@ Save PC
13184  bic r0,r0,#0xff000000
13185  bl m68k_read8 ;@ Call read8(r0) handler
13186  movs r1,r0,asl #24
13187
13188  and r10,r1,#0x80000000 ;@ r10=N_flag
13189  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13190
13191;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13192;@ Get extension word into r3:
13193  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13194  mov r2,r3,lsr #10
13195  tst r3,#0x0800 ;@ Is Rn Word or Long
13196  and r2,r2,#0x3c ;@ r2=Index of Rn
13197  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13198  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13199  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13200  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13201  and r2,r8,#0x1e00
13202  orr r2,r2,#0x1000 ;@ A0-7
13203  mov r2,r2,lsr #9
13204  ldr r2,[r7,r2,lsl #2]
13205  add r0,r2,r3 ;@ r0=Disp+An+Rn
13206;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
13207  mov r1,r1,lsr #24
13208  str r4,[r7,#0x40] ;@ Save PC
13209  bic r0,r0,#0xff000000
13210  bl m68k_write8 ;@ Call write8(r0,r1) handler
13211
13212  ldr r5,[r7,#0x5c] ;@ Load Cycles
13213  ldrh r8,[r4],#2 ;@ Fetch next opcode
13214  subs r5,r5,#26 ;@ Subtract cycles
13215  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13216  b CycloneEnd
13217
13218;@ ---------- [11ba] move.b ($3333,pc), ($33,a0,d3.w*2); =3335 uses Op11ba ----------
13219Op11ba:
13220  str r4,[r7,#0x50] ;@ Save prev PC + 2
13221  str r5,[r7,#0x5c] ;@ Save Cycles
13222
13223;@ EaCalc : Get '($3333,pc)' into r0:
13224  ldr r0,[r7,#0x60] ;@ Get Memory base
13225  sub r0,r4,r0 ;@ Real PC
13226  ldrsh r2,[r4],#2 ;@ Fetch extension
13227  add r0,r2,r0 ;@ ($nn,PC)
13228;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
13229  str r4,[r7,#0x40] ;@ Save PC
13230  bic r0,r0,#0xff000000
13231  bl m68k_fetch8 ;@ Call fetch8(r0) handler
13232  movs r1,r0,asl #24
13233
13234  and r10,r1,#0x80000000 ;@ r10=N_flag
13235  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13236
13237;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13238;@ Get extension word into r3:
13239  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13240  mov r2,r3,lsr #10
13241  tst r3,#0x0800 ;@ Is Rn Word or Long
13242  and r2,r2,#0x3c ;@ r2=Index of Rn
13243  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13244  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13245  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13246  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13247  and r2,r8,#0x1e00
13248  orr r2,r2,#0x1000 ;@ A0-7
13249  mov r2,r2,lsr #9
13250  ldr r2,[r7,r2,lsl #2]
13251  add r0,r2,r3 ;@ r0=Disp+An+Rn
13252;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
13253  mov r1,r1,lsr #24
13254  str r4,[r7,#0x40] ;@ Save PC
13255  bic r0,r0,#0xff000000
13256  bl m68k_write8 ;@ Call write8(r0,r1) handler
13257
13258  ldr r5,[r7,#0x5c] ;@ Load Cycles
13259  ldrh r8,[r4],#2 ;@ Fetch next opcode
13260  subs r5,r5,#22 ;@ Subtract cycles
13261  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13262  b CycloneEnd
13263
13264;@ ---------- [11bb] move.b ($33,pc,d3.w*2), ($33,a0,d3.w*2); =35 uses Op11bb ----------
13265Op11bb:
13266  str r4,[r7,#0x50] ;@ Save prev PC + 2
13267  str r5,[r7,#0x5c] ;@ Save Cycles
13268
13269;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
13270  ldr r0,[r7,#0x60] ;@ Get Memory base
13271  ldrh r3,[r4] ;@ Get extension word
13272  sub r0,r4,r0 ;@ r0=PC
13273  add r4,r4,#2
13274  mov r2,r3,lsr #10
13275  tst r3,#0x0800 ;@ Is Rn Word or Long
13276  and r2,r2,#0x3c ;@ r2=Index of Rn
13277  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13278  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13279  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
13280  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
13281  add r0,r2,r0 ;@ r0=Disp+PC+Rn
13282;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
13283  str r4,[r7,#0x40] ;@ Save PC
13284  bic r0,r0,#0xff000000
13285  bl m68k_fetch8 ;@ Call fetch8(r0) handler
13286  movs r1,r0,asl #24
13287
13288  and r10,r1,#0x80000000 ;@ r10=N_flag
13289  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13290
13291;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13292;@ Get extension word into r3:
13293  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13294  mov r2,r3,lsr #10
13295  tst r3,#0x0800 ;@ Is Rn Word or Long
13296  and r2,r2,#0x3c ;@ r2=Index of Rn
13297  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13298  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13299  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13300  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13301  and r2,r8,#0x1e00
13302  orr r2,r2,#0x1000 ;@ A0-7
13303  mov r2,r2,lsr #9
13304  ldr r2,[r7,r2,lsl #2]
13305  add r0,r2,r3 ;@ r0=Disp+An+Rn
13306;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
13307  mov r1,r1,lsr #24
13308  str r4,[r7,#0x40] ;@ Save PC
13309  bic r0,r0,#0xff000000
13310  bl m68k_write8 ;@ Call write8(r0,r1) handler
13311
13312  ldr r5,[r7,#0x5c] ;@ Load Cycles
13313  ldrh r8,[r4],#2 ;@ Fetch next opcode
13314  subs r5,r5,#24 ;@ Subtract cycles
13315  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13316  b CycloneEnd
13317
13318;@ ---------- [11bc] move.b #$33, ($33,a0,d3.w*2) uses Op11bc ----------
13319Op11bc:
13320  str r4,[r7,#0x50] ;@ Save prev PC + 2
13321  str r5,[r7,#0x5c] ;@ Save Cycles
13322
13323;@ EaCalc : Get '#$33' into r1:
13324  ldrsb r1,[r4],#2 ;@ Fetch immediate value
13325;@ EaRead : Read '#$33' (address in r1) into r1:
13326  movs r1,r1,asl #24
13327
13328  and r10,r1,#0x80000000 ;@ r10=N_flag
13329  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13330
13331;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13332;@ Get extension word into r3:
13333  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13334  mov r2,r3,lsr #10
13335  tst r3,#0x0800 ;@ Is Rn Word or Long
13336  and r2,r2,#0x3c ;@ r2=Index of Rn
13337  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13338  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13339  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13340  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13341  and r2,r8,#0x1e00
13342  orr r2,r2,#0x1000 ;@ A0-7
13343  mov r2,r2,lsr #9
13344  ldr r2,[r7,r2,lsl #2]
13345  add r0,r2,r3 ;@ r0=Disp+An+Rn
13346;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
13347  mov r1,r1,lsr #24
13348  str r4,[r7,#0x40] ;@ Save PC
13349  bic r0,r0,#0xff000000
13350  bl m68k_write8 ;@ Call write8(r0,r1) handler
13351
13352  ldr r5,[r7,#0x5c] ;@ Load Cycles
13353  ldrh r8,[r4],#2 ;@ Fetch next opcode
13354  subs r5,r5,#18 ;@ Subtract cycles
13355  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13356  b CycloneEnd
13357
13358;@ ---------- [11c0] move.b d0, $3333.w uses Op11c0 ----------
13359Op11c0:
13360  str r4,[r7,#0x50] ;@ Save prev PC + 2
13361  str r5,[r7,#0x5c] ;@ Save Cycles
13362
13363;@ EaCalc : Get register index into r1:
13364  and r1,r8,#0x000f
13365;@ EaRead : Read register[r1] into r1:
13366  ldrb r1,[r7,r1,lsl #2]
13367
13368  movs r2,r1,lsl #24
13369  and r10,r2,#0x80000000 ;@ r10=N_flag
13370  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13371
13372;@ EaCalc : Get '$3333.w' into r0:
13373  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13374;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13375  str r4,[r7,#0x40] ;@ Save PC
13376  bic r0,r0,#0xff000000
13377  bl m68k_write8 ;@ Call write8(r0,r1) handler
13378
13379  ldr r5,[r7,#0x5c] ;@ Load Cycles
13380  ldrh r8,[r4],#2 ;@ Fetch next opcode
13381  subs r5,r5,#12 ;@ Subtract cycles
13382  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13383  b CycloneEnd
13384
13385;@ ---------- [11d0] move.b (a0), $3333.w uses Op11d0 ----------
13386Op11d0:
13387  str r4,[r7,#0x50] ;@ Save prev PC + 2
13388  str r5,[r7,#0x5c] ;@ Save Cycles
13389
13390;@ EaCalc : Get '(a0)' into r0:
13391  and r2,r8,#0x000f
13392  orr r2,r2,#0x8 ;@ A0-7
13393  ldr r0,[r7,r2,lsl #2]
13394;@ EaRead : Read '(a0)' (address in r0) into r1:
13395  str r4,[r7,#0x40] ;@ Save PC
13396  bic r0,r0,#0xff000000
13397  bl m68k_read8 ;@ Call read8(r0) handler
13398  movs r1,r0,asl #24
13399
13400  and r10,r1,#0x80000000 ;@ r10=N_flag
13401  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13402
13403;@ EaCalc : Get '$3333.w' into r0:
13404  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13405;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13406  mov r1,r1,lsr #24
13407  str r4,[r7,#0x40] ;@ Save PC
13408  bic r0,r0,#0xff000000
13409  bl m68k_write8 ;@ Call write8(r0,r1) handler
13410
13411  ldr r5,[r7,#0x5c] ;@ Load Cycles
13412  ldrh r8,[r4],#2 ;@ Fetch next opcode
13413  subs r5,r5,#16 ;@ Subtract cycles
13414  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13415  b CycloneEnd
13416
13417;@ ---------- [11d8] move.b (a0)+, $3333.w uses Op11d8 ----------
13418Op11d8:
13419  str r4,[r7,#0x50] ;@ Save prev PC + 2
13420  str r5,[r7,#0x5c] ;@ Save Cycles
13421
13422;@ EaCalc : Get '(a0)+' into r0:
13423  and r2,r8,#0x000f
13424  ldr r0,[r7,r2,lsl #2]
13425  add r3,r0,#1 ;@ Post-increment An
13426  str r3,[r7,r2,lsl #2]
13427;@ EaRead : Read '(a0)+' (address in r0) into r1:
13428  str r4,[r7,#0x40] ;@ Save PC
13429  bic r0,r0,#0xff000000
13430  bl m68k_read8 ;@ Call read8(r0) handler
13431  movs r1,r0,asl #24
13432
13433  and r10,r1,#0x80000000 ;@ r10=N_flag
13434  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13435
13436;@ EaCalc : Get '$3333.w' into r0:
13437  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13438;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13439  mov r1,r1,lsr #24
13440  str r4,[r7,#0x40] ;@ Save PC
13441  bic r0,r0,#0xff000000
13442  bl m68k_write8 ;@ Call write8(r0,r1) handler
13443
13444  ldr r5,[r7,#0x5c] ;@ Load Cycles
13445  ldrh r8,[r4],#2 ;@ Fetch next opcode
13446  subs r5,r5,#16 ;@ Subtract cycles
13447  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13448  b CycloneEnd
13449
13450;@ ---------- [11df] move.b (a7)+, $3333.w uses Op11df ----------
13451Op11df:
13452  str r4,[r7,#0x50] ;@ Save prev PC + 2
13453  str r5,[r7,#0x5c] ;@ Save Cycles
13454
13455;@ EaCalc : Get '(a7)+' into r0:
13456  ldr r0,[r7,#0x3c] ;@ A7
13457  add r3,r0,#2 ;@ Post-increment An
13458  str r3,[r7,#0x3c] ;@ A7
13459;@ EaRead : Read '(a7)+' (address in r0) into r1:
13460  str r4,[r7,#0x40] ;@ Save PC
13461  bic r0,r0,#0xff000000
13462  bl m68k_read8 ;@ Call read8(r0) handler
13463  movs r1,r0,asl #24
13464
13465  and r10,r1,#0x80000000 ;@ r10=N_flag
13466  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13467
13468;@ EaCalc : Get '$3333.w' into r0:
13469  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13470;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13471  mov r1,r1,lsr #24
13472  str r4,[r7,#0x40] ;@ Save PC
13473  bic r0,r0,#0xff000000
13474  bl m68k_write8 ;@ Call write8(r0,r1) handler
13475
13476  ldr r5,[r7,#0x5c] ;@ Load Cycles
13477  ldrh r8,[r4],#2 ;@ Fetch next opcode
13478  subs r5,r5,#16 ;@ Subtract cycles
13479  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13480  b CycloneEnd
13481
13482;@ ---------- [11e0] move.b -(a0), $3333.w uses Op11e0 ----------
13483Op11e0:
13484  str r4,[r7,#0x50] ;@ Save prev PC + 2
13485  str r5,[r7,#0x5c] ;@ Save Cycles
13486
13487;@ EaCalc : Get '-(a0)' into r0:
13488  and r2,r8,#0x000f
13489  orr r2,r2,#0x8 ;@ A0-7
13490  ldr r0,[r7,r2,lsl #2]
13491  sub r0,r0,#1 ;@ Pre-decrement An
13492  str r0,[r7,r2,lsl #2]
13493;@ EaRead : Read '-(a0)' (address in r0) into r1:
13494  str r4,[r7,#0x40] ;@ Save PC
13495  bic r0,r0,#0xff000000
13496  bl m68k_read8 ;@ Call read8(r0) handler
13497  movs r1,r0,asl #24
13498
13499  and r10,r1,#0x80000000 ;@ r10=N_flag
13500  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13501
13502;@ EaCalc : Get '$3333.w' into r0:
13503  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13504;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13505  mov r1,r1,lsr #24
13506  str r4,[r7,#0x40] ;@ Save PC
13507  bic r0,r0,#0xff000000
13508  bl m68k_write8 ;@ Call write8(r0,r1) handler
13509
13510  ldr r5,[r7,#0x5c] ;@ Load Cycles
13511  ldrh r8,[r4],#2 ;@ Fetch next opcode
13512  subs r5,r5,#18 ;@ Subtract cycles
13513  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13514  b CycloneEnd
13515
13516;@ ---------- [11e7] move.b -(a7), $3333.w uses Op11e7 ----------
13517Op11e7:
13518  str r4,[r7,#0x50] ;@ Save prev PC + 2
13519  str r5,[r7,#0x5c] ;@ Save Cycles
13520
13521;@ EaCalc : Get '-(a7)' into r0:
13522  ldr r0,[r7,#0x3c] ;@ A7
13523  sub r0,r0,#2 ;@ Pre-decrement An
13524  str r0,[r7,#0x3c] ;@ A7
13525;@ EaRead : Read '-(a7)' (address in r0) into r1:
13526  str r4,[r7,#0x40] ;@ Save PC
13527  bic r0,r0,#0xff000000
13528  bl m68k_read8 ;@ Call read8(r0) handler
13529  movs r1,r0,asl #24
13530
13531  and r10,r1,#0x80000000 ;@ r10=N_flag
13532  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13533
13534;@ EaCalc : Get '$3333.w' into r0:
13535  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13536;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13537  mov r1,r1,lsr #24
13538  str r4,[r7,#0x40] ;@ Save PC
13539  bic r0,r0,#0xff000000
13540  bl m68k_write8 ;@ Call write8(r0,r1) handler
13541
13542  ldr r5,[r7,#0x5c] ;@ Load Cycles
13543  ldrh r8,[r4],#2 ;@ Fetch next opcode
13544  subs r5,r5,#18 ;@ Subtract cycles
13545  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13546  b CycloneEnd
13547
13548;@ ---------- [11e8] move.b ($3333,a0), $3333.w uses Op11e8 ----------
13549Op11e8:
13550  str r4,[r7,#0x50] ;@ Save prev PC + 2
13551  str r5,[r7,#0x5c] ;@ Save Cycles
13552
13553;@ EaCalc : Get '($3333,a0)' into r0:
13554  ldrsh r0,[r4],#2 ;@ Fetch offset
13555  and r2,r8,#0x000f
13556  ldr r2,[r7,r2,lsl #2]
13557  add r0,r0,r2 ;@ Add on offset
13558;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
13559  str r4,[r7,#0x40] ;@ Save PC
13560  bic r0,r0,#0xff000000
13561  bl m68k_read8 ;@ Call read8(r0) handler
13562  movs r1,r0,asl #24
13563
13564  and r10,r1,#0x80000000 ;@ r10=N_flag
13565  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13566
13567;@ EaCalc : Get '$3333.w' into r0:
13568  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13569;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13570  mov r1,r1,lsr #24
13571  str r4,[r7,#0x40] ;@ Save PC
13572  bic r0,r0,#0xff000000
13573  bl m68k_write8 ;@ Call write8(r0,r1) handler
13574
13575  ldr r5,[r7,#0x5c] ;@ Load Cycles
13576  ldrh r8,[r4],#2 ;@ Fetch next opcode
13577  subs r5,r5,#20 ;@ Subtract cycles
13578  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13579  b CycloneEnd
13580
13581;@ ---------- [11f0] move.b ($33,a0,d3.w*2), $3333.w uses Op11f0 ----------
13582Op11f0:
13583  str r4,[r7,#0x50] ;@ Save prev PC + 2
13584  str r5,[r7,#0x5c] ;@ Save Cycles
13585
13586;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13587;@ Get extension word into r3:
13588  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13589  mov r2,r3,lsr #10
13590  tst r3,#0x0800 ;@ Is Rn Word or Long
13591  and r2,r2,#0x3c ;@ r2=Index of Rn
13592  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13593  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13594  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13595  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13596  and r2,r8,#0x000f
13597  orr r2,r2,#0x8 ;@ A0-7
13598  ldr r2,[r7,r2,lsl #2]
13599  add r0,r2,r3 ;@ r0=Disp+An+Rn
13600;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
13601  str r4,[r7,#0x40] ;@ Save PC
13602  bic r0,r0,#0xff000000
13603  bl m68k_read8 ;@ Call read8(r0) handler
13604  movs r1,r0,asl #24
13605
13606  and r10,r1,#0x80000000 ;@ r10=N_flag
13607  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13608
13609;@ EaCalc : Get '$3333.w' into r0:
13610  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13611;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13612  mov r1,r1,lsr #24
13613  str r4,[r7,#0x40] ;@ Save PC
13614  bic r0,r0,#0xff000000
13615  bl m68k_write8 ;@ Call write8(r0,r1) handler
13616
13617  ldr r5,[r7,#0x5c] ;@ Load Cycles
13618  ldrh r8,[r4],#2 ;@ Fetch next opcode
13619  subs r5,r5,#22 ;@ Subtract cycles
13620  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13621  b CycloneEnd
13622
13623;@ ---------- [11f8] move.b $3333.w, $3333.w uses Op11f8 ----------
13624Op11f8:
13625  str r4,[r7,#0x50] ;@ Save prev PC + 2
13626  str r5,[r7,#0x5c] ;@ Save Cycles
13627
13628;@ EaCalc : Get '$3333.w' into r0:
13629  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13630;@ EaRead : Read '$3333.w' (address in r0) into r1:
13631  str r4,[r7,#0x40] ;@ Save PC
13632  bic r0,r0,#0xff000000
13633  bl m68k_read8 ;@ Call read8(r0) handler
13634  movs r1,r0,asl #24
13635
13636  and r10,r1,#0x80000000 ;@ r10=N_flag
13637  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13638
13639;@ EaCalc : Get '$3333.w' into r0:
13640  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13641;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13642  mov r1,r1,lsr #24
13643  str r4,[r7,#0x40] ;@ Save PC
13644  bic r0,r0,#0xff000000
13645  bl m68k_write8 ;@ Call write8(r0,r1) handler
13646
13647  ldr r5,[r7,#0x5c] ;@ Load Cycles
13648  ldrh r8,[r4],#2 ;@ Fetch next opcode
13649  subs r5,r5,#20 ;@ Subtract cycles
13650  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13651  b CycloneEnd
13652
13653;@ ---------- [11f9] move.b $33333333.l, $3333.w uses Op11f9 ----------
13654Op11f9:
13655  str r4,[r7,#0x50] ;@ Save prev PC + 2
13656  str r5,[r7,#0x5c] ;@ Save Cycles
13657
13658;@ EaCalc : Get '$33333333.l' into r0:
13659  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13660  ldrh r0,[r4],#2
13661  orr r0,r0,r2,lsl #16
13662;@ EaRead : Read '$33333333.l' (address in r0) into r1:
13663  str r4,[r7,#0x40] ;@ Save PC
13664  bic r0,r0,#0xff000000
13665  bl m68k_read8 ;@ Call read8(r0) handler
13666  movs r1,r0,asl #24
13667
13668  and r10,r1,#0x80000000 ;@ r10=N_flag
13669  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13670
13671;@ EaCalc : Get '$3333.w' into r0:
13672  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13673;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13674  mov r1,r1,lsr #24
13675  str r4,[r7,#0x40] ;@ Save PC
13676  bic r0,r0,#0xff000000
13677  bl m68k_write8 ;@ Call write8(r0,r1) handler
13678
13679  ldr r5,[r7,#0x5c] ;@ Load Cycles
13680  ldrh r8,[r4],#2 ;@ Fetch next opcode
13681  subs r5,r5,#24 ;@ Subtract cycles
13682  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13683  b CycloneEnd
13684
13685;@ ---------- [11fa] move.b ($3333,pc), $3333.w; =3335 uses Op11fa ----------
13686Op11fa:
13687  str r4,[r7,#0x50] ;@ Save prev PC + 2
13688  str r5,[r7,#0x5c] ;@ Save Cycles
13689
13690;@ EaCalc : Get '($3333,pc)' into r0:
13691  ldr r0,[r7,#0x60] ;@ Get Memory base
13692  sub r0,r4,r0 ;@ Real PC
13693  ldrsh r2,[r4],#2 ;@ Fetch extension
13694  add r0,r2,r0 ;@ ($nn,PC)
13695;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
13696  str r4,[r7,#0x40] ;@ Save PC
13697  bic r0,r0,#0xff000000
13698  bl m68k_fetch8 ;@ Call fetch8(r0) handler
13699  movs r1,r0,asl #24
13700
13701  and r10,r1,#0x80000000 ;@ r10=N_flag
13702  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13703
13704;@ EaCalc : Get '$3333.w' into r0:
13705  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13706;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13707  mov r1,r1,lsr #24
13708  str r4,[r7,#0x40] ;@ Save PC
13709  bic r0,r0,#0xff000000
13710  bl m68k_write8 ;@ Call write8(r0,r1) handler
13711
13712  ldr r5,[r7,#0x5c] ;@ Load Cycles
13713  ldrh r8,[r4],#2 ;@ Fetch next opcode
13714  subs r5,r5,#20 ;@ Subtract cycles
13715  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13716  b CycloneEnd
13717
13718;@ ---------- [11fb] move.b ($33,pc,d3.w*2), $3333.w; =35 uses Op11fb ----------
13719Op11fb:
13720  str r4,[r7,#0x50] ;@ Save prev PC + 2
13721  str r5,[r7,#0x5c] ;@ Save Cycles
13722
13723;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
13724  ldr r0,[r7,#0x60] ;@ Get Memory base
13725  ldrh r3,[r4] ;@ Get extension word
13726  sub r0,r4,r0 ;@ r0=PC
13727  add r4,r4,#2
13728  mov r2,r3,lsr #10
13729  tst r3,#0x0800 ;@ Is Rn Word or Long
13730  and r2,r2,#0x3c ;@ r2=Index of Rn
13731  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13732  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13733  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
13734  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
13735  add r0,r2,r0 ;@ r0=Disp+PC+Rn
13736;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
13737  str r4,[r7,#0x40] ;@ Save PC
13738  bic r0,r0,#0xff000000
13739  bl m68k_fetch8 ;@ Call fetch8(r0) handler
13740  movs r1,r0,asl #24
13741
13742  and r10,r1,#0x80000000 ;@ r10=N_flag
13743  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13744
13745;@ EaCalc : Get '$3333.w' into r0:
13746  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13747;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13748  mov r1,r1,lsr #24
13749  str r4,[r7,#0x40] ;@ Save PC
13750  bic r0,r0,#0xff000000
13751  bl m68k_write8 ;@ Call write8(r0,r1) handler
13752
13753  ldr r5,[r7,#0x5c] ;@ Load Cycles
13754  ldrh r8,[r4],#2 ;@ Fetch next opcode
13755  subs r5,r5,#22 ;@ Subtract cycles
13756  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13757  b CycloneEnd
13758
13759;@ ---------- [11fc] move.b #$33, $3333.w uses Op11fc ----------
13760Op11fc:
13761  str r4,[r7,#0x50] ;@ Save prev PC + 2
13762  str r5,[r7,#0x5c] ;@ Save Cycles
13763
13764;@ EaCalc : Get '#$33' into r1:
13765  ldrsb r1,[r4],#2 ;@ Fetch immediate value
13766;@ EaRead : Read '#$33' (address in r1) into r1:
13767  movs r1,r1,asl #24
13768
13769  and r10,r1,#0x80000000 ;@ r10=N_flag
13770  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13771
13772;@ EaCalc : Get '$3333.w' into r0:
13773  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13774;@ EaWrite: Write r1 into '$3333.w' (address in r0):
13775  mov r1,r1,lsr #24
13776  str r4,[r7,#0x40] ;@ Save PC
13777  bic r0,r0,#0xff000000
13778  bl m68k_write8 ;@ Call write8(r0,r1) handler
13779
13780  ldr r5,[r7,#0x5c] ;@ Load Cycles
13781  ldrh r8,[r4],#2 ;@ Fetch next opcode
13782  subs r5,r5,#16 ;@ Subtract cycles
13783  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13784  b CycloneEnd
13785
13786;@ ---------- [13c0] move.b d0, $33333333.l uses Op13c0 ----------
13787Op13c0:
13788  str r4,[r7,#0x50] ;@ Save prev PC + 2
13789  str r5,[r7,#0x5c] ;@ Save Cycles
13790
13791;@ EaCalc : Get register index into r1:
13792  and r1,r8,#0x000f
13793;@ EaRead : Read register[r1] into r1:
13794  ldrb r1,[r7,r1,lsl #2]
13795
13796  movs r2,r1,lsl #24
13797  and r10,r2,#0x80000000 ;@ r10=N_flag
13798  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13799
13800;@ EaCalc : Get '$33333333.l' into r0:
13801  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13802  ldrh r0,[r4],#2
13803  orr r0,r0,r2,lsl #16
13804;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
13805  str r4,[r7,#0x40] ;@ Save PC
13806  bic r0,r0,#0xff000000
13807  bl m68k_write8 ;@ Call write8(r0,r1) handler
13808
13809  ldr r5,[r7,#0x5c] ;@ Load Cycles
13810  ldrh r8,[r4],#2 ;@ Fetch next opcode
13811  subs r5,r5,#16 ;@ Subtract cycles
13812  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13813  b CycloneEnd
13814
13815;@ ---------- [13d0] move.b (a0), $33333333.l uses Op13d0 ----------
13816Op13d0:
13817  str r4,[r7,#0x50] ;@ Save prev PC + 2
13818  str r5,[r7,#0x5c] ;@ Save Cycles
13819
13820;@ EaCalc : Get '(a0)' into r0:
13821  and r2,r8,#0x000f
13822  orr r2,r2,#0x8 ;@ A0-7
13823  ldr r0,[r7,r2,lsl #2]
13824;@ EaRead : Read '(a0)' (address in r0) into r1:
13825  str r4,[r7,#0x40] ;@ Save PC
13826  bic r0,r0,#0xff000000
13827  bl m68k_read8 ;@ Call read8(r0) handler
13828  movs r1,r0,asl #24
13829
13830  and r10,r1,#0x80000000 ;@ r10=N_flag
13831  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13832
13833;@ EaCalc : Get '$33333333.l' into r0:
13834  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13835  ldrh r0,[r4],#2
13836  orr r0,r0,r2,lsl #16
13837;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
13838  mov r1,r1,lsr #24
13839  str r4,[r7,#0x40] ;@ Save PC
13840  bic r0,r0,#0xff000000
13841  bl m68k_write8 ;@ Call write8(r0,r1) handler
13842
13843  ldr r5,[r7,#0x5c] ;@ Load Cycles
13844  ldrh r8,[r4],#2 ;@ Fetch next opcode
13845  subs r5,r5,#20 ;@ Subtract cycles
13846  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13847  b CycloneEnd
13848
13849;@ ---------- [13d8] move.b (a0)+, $33333333.l uses Op13d8 ----------
13850Op13d8:
13851  str r4,[r7,#0x50] ;@ Save prev PC + 2
13852  str r5,[r7,#0x5c] ;@ Save Cycles
13853
13854;@ EaCalc : Get '(a0)+' into r0:
13855  and r2,r8,#0x000f
13856  ldr r0,[r7,r2,lsl #2]
13857  add r3,r0,#1 ;@ Post-increment An
13858  str r3,[r7,r2,lsl #2]
13859;@ EaRead : Read '(a0)+' (address in r0) into r1:
13860  str r4,[r7,#0x40] ;@ Save PC
13861  bic r0,r0,#0xff000000
13862  bl m68k_read8 ;@ Call read8(r0) handler
13863  movs r1,r0,asl #24
13864
13865  and r10,r1,#0x80000000 ;@ r10=N_flag
13866  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13867
13868;@ EaCalc : Get '$33333333.l' into r0:
13869  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13870  ldrh r0,[r4],#2
13871  orr r0,r0,r2,lsl #16
13872;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
13873  mov r1,r1,lsr #24
13874  str r4,[r7,#0x40] ;@ Save PC
13875  bic r0,r0,#0xff000000
13876  bl m68k_write8 ;@ Call write8(r0,r1) handler
13877
13878  ldr r5,[r7,#0x5c] ;@ Load Cycles
13879  ldrh r8,[r4],#2 ;@ Fetch next opcode
13880  subs r5,r5,#20 ;@ Subtract cycles
13881  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13882  b CycloneEnd
13883
13884;@ ---------- [13df] move.b (a7)+, $33333333.l uses Op13df ----------
13885Op13df:
13886  str r4,[r7,#0x50] ;@ Save prev PC + 2
13887  str r5,[r7,#0x5c] ;@ Save Cycles
13888
13889;@ EaCalc : Get '(a7)+' into r0:
13890  ldr r0,[r7,#0x3c] ;@ A7
13891  add r3,r0,#2 ;@ Post-increment An
13892  str r3,[r7,#0x3c] ;@ A7
13893;@ EaRead : Read '(a7)+' (address in r0) into r1:
13894  str r4,[r7,#0x40] ;@ Save PC
13895  bic r0,r0,#0xff000000
13896  bl m68k_read8 ;@ Call read8(r0) handler
13897  movs r1,r0,asl #24
13898
13899  and r10,r1,#0x80000000 ;@ r10=N_flag
13900  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13901
13902;@ EaCalc : Get '$33333333.l' into r0:
13903  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13904  ldrh r0,[r4],#2
13905  orr r0,r0,r2,lsl #16
13906;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
13907  mov r1,r1,lsr #24
13908  str r4,[r7,#0x40] ;@ Save PC
13909  bic r0,r0,#0xff000000
13910  bl m68k_write8 ;@ Call write8(r0,r1) handler
13911
13912  ldr r5,[r7,#0x5c] ;@ Load Cycles
13913  ldrh r8,[r4],#2 ;@ Fetch next opcode
13914  subs r5,r5,#20 ;@ Subtract cycles
13915  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13916  b CycloneEnd
13917
13918;@ ---------- [13e0] move.b -(a0), $33333333.l uses Op13e0 ----------
13919Op13e0:
13920  str r4,[r7,#0x50] ;@ Save prev PC + 2
13921  str r5,[r7,#0x5c] ;@ Save Cycles
13922
13923;@ EaCalc : Get '-(a0)' into r0:
13924  and r2,r8,#0x000f
13925  orr r2,r2,#0x8 ;@ A0-7
13926  ldr r0,[r7,r2,lsl #2]
13927  sub r0,r0,#1 ;@ Pre-decrement An
13928  str r0,[r7,r2,lsl #2]
13929;@ EaRead : Read '-(a0)' (address in r0) into r1:
13930  str r4,[r7,#0x40] ;@ Save PC
13931  bic r0,r0,#0xff000000
13932  bl m68k_read8 ;@ Call read8(r0) handler
13933  movs r1,r0,asl #24
13934
13935  and r10,r1,#0x80000000 ;@ r10=N_flag
13936  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13937
13938;@ EaCalc : Get '$33333333.l' into r0:
13939  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13940  ldrh r0,[r4],#2
13941  orr r0,r0,r2,lsl #16
13942;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
13943  mov r1,r1,lsr #24
13944  str r4,[r7,#0x40] ;@ Save PC
13945  bic r0,r0,#0xff000000
13946  bl m68k_write8 ;@ Call write8(r0,r1) handler
13947
13948  ldr r5,[r7,#0x5c] ;@ Load Cycles
13949  ldrh r8,[r4],#2 ;@ Fetch next opcode
13950  subs r5,r5,#22 ;@ Subtract cycles
13951  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13952  b CycloneEnd
13953
13954;@ ---------- [13e7] move.b -(a7), $33333333.l uses Op13e7 ----------
13955Op13e7:
13956  str r4,[r7,#0x50] ;@ Save prev PC + 2
13957  str r5,[r7,#0x5c] ;@ Save Cycles
13958
13959;@ EaCalc : Get '-(a7)' into r0:
13960  ldr r0,[r7,#0x3c] ;@ A7
13961  sub r0,r0,#2 ;@ Pre-decrement An
13962  str r0,[r7,#0x3c] ;@ A7
13963;@ EaRead : Read '-(a7)' (address in r0) into r1:
13964  str r4,[r7,#0x40] ;@ Save PC
13965  bic r0,r0,#0xff000000
13966  bl m68k_read8 ;@ Call read8(r0) handler
13967  movs r1,r0,asl #24
13968
13969  and r10,r1,#0x80000000 ;@ r10=N_flag
13970  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13971
13972;@ EaCalc : Get '$33333333.l' into r0:
13973  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13974  ldrh r0,[r4],#2
13975  orr r0,r0,r2,lsl #16
13976;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
13977  mov r1,r1,lsr #24
13978  str r4,[r7,#0x40] ;@ Save PC
13979  bic r0,r0,#0xff000000
13980  bl m68k_write8 ;@ Call write8(r0,r1) handler
13981
13982  ldr r5,[r7,#0x5c] ;@ Load Cycles
13983  ldrh r8,[r4],#2 ;@ Fetch next opcode
13984  subs r5,r5,#22 ;@ Subtract cycles
13985  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13986  b CycloneEnd
13987
13988;@ ---------- [13e8] move.b ($3333,a0), $33333333.l uses Op13e8 ----------
13989Op13e8:
13990  str r4,[r7,#0x50] ;@ Save prev PC + 2
13991  str r5,[r7,#0x5c] ;@ Save Cycles
13992
13993;@ EaCalc : Get '($3333,a0)' into r0:
13994  ldrsh r0,[r4],#2 ;@ Fetch offset
13995  and r2,r8,#0x000f
13996  ldr r2,[r7,r2,lsl #2]
13997  add r0,r0,r2 ;@ Add on offset
13998;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
13999  str r4,[r7,#0x40] ;@ Save PC
14000  bic r0,r0,#0xff000000
14001  bl m68k_read8 ;@ Call read8(r0) handler
14002  movs r1,r0,asl #24
14003
14004  and r10,r1,#0x80000000 ;@ r10=N_flag
14005  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14006
14007;@ EaCalc : Get '$33333333.l' into r0:
14008  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14009  ldrh r0,[r4],#2
14010  orr r0,r0,r2,lsl #16
14011;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
14012  mov r1,r1,lsr #24
14013  str r4,[r7,#0x40] ;@ Save PC
14014  bic r0,r0,#0xff000000
14015  bl m68k_write8 ;@ Call write8(r0,r1) handler
14016
14017  ldr r5,[r7,#0x5c] ;@ Load Cycles
14018  ldrh r8,[r4],#2 ;@ Fetch next opcode
14019  subs r5,r5,#24 ;@ Subtract cycles
14020  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14021  b CycloneEnd
14022
14023;@ ---------- [13f0] move.b ($33,a0,d3.w*2), $33333333.l uses Op13f0 ----------
14024Op13f0:
14025  str r4,[r7,#0x50] ;@ Save prev PC + 2
14026  str r5,[r7,#0x5c] ;@ Save Cycles
14027
14028;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
14029;@ Get extension word into r3:
14030  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
14031  mov r2,r3,lsr #10
14032  tst r3,#0x0800 ;@ Is Rn Word or Long
14033  and r2,r2,#0x3c ;@ r2=Index of Rn
14034  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14035  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14036  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
14037  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
14038  and r2,r8,#0x000f
14039  orr r2,r2,#0x8 ;@ A0-7
14040  ldr r2,[r7,r2,lsl #2]
14041  add r0,r2,r3 ;@ r0=Disp+An+Rn
14042;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
14043  str r4,[r7,#0x40] ;@ Save PC
14044  bic r0,r0,#0xff000000
14045  bl m68k_read8 ;@ Call read8(r0) handler
14046  movs r1,r0,asl #24
14047
14048  and r10,r1,#0x80000000 ;@ r10=N_flag
14049  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14050
14051;@ EaCalc : Get '$33333333.l' into r0:
14052  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14053  ldrh r0,[r4],#2
14054  orr r0,r0,r2,lsl #16
14055;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
14056  mov r1,r1,lsr #24
14057  str r4,[r7,#0x40] ;@ Save PC
14058  bic r0,r0,#0xff000000
14059  bl m68k_write8 ;@ Call write8(r0,r1) handler
14060
14061  ldr r5,[r7,#0x5c] ;@ Load Cycles
14062  ldrh r8,[r4],#2 ;@ Fetch next opcode
14063  subs r5,r5,#26 ;@ Subtract cycles
14064  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14065  b CycloneEnd
14066
14067;@ ---------- [13f8] move.b $3333.w, $33333333.l uses Op13f8 ----------
14068Op13f8:
14069  str r4,[r7,#0x50] ;@ Save prev PC + 2
14070  str r5,[r7,#0x5c] ;@ Save Cycles
14071
14072;@ EaCalc : Get '$3333.w' into r0:
14073  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
14074;@ EaRead : Read '$3333.w' (address in r0) into r1:
14075  str r4,[r7,#0x40] ;@ Save PC
14076  bic r0,r0,#0xff000000
14077  bl m68k_read8 ;@ Call read8(r0) handler
14078  movs r1,r0,asl #24
14079
14080  and r10,r1,#0x80000000 ;@ r10=N_flag
14081  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14082
14083;@ EaCalc : Get '$33333333.l' into r0:
14084  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14085  ldrh r0,[r4],#2
14086  orr r0,r0,r2,lsl #16
14087;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
14088  mov r1,r1,lsr #24
14089  str r4,[r7,#0x40] ;@ Save PC
14090  bic r0,r0,#0xff000000
14091  bl m68k_write8 ;@ Call write8(r0,r1) handler
14092
14093  ldr r5,[r7,#0x5c] ;@ Load Cycles
14094  ldrh r8,[r4],#2 ;@ Fetch next opcode
14095  subs r5,r5,#24 ;@ Subtract cycles
14096  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14097  b CycloneEnd
14098
14099;@ ---------- [13f9] move.b $33333333.l, $33333333.l uses Op13f9 ----------
14100Op13f9:
14101  str r4,[r7,#0x50] ;@ Save prev PC + 2
14102  str r5,[r7,#0x5c] ;@ Save Cycles
14103
14104;@ EaCalc : Get '$33333333.l' into r0:
14105  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14106  ldrh r0,[r4],#2
14107  orr r0,r0,r2,lsl #16
14108;@ EaRead : Read '$33333333.l' (address in r0) into r1:
14109  str r4,[r7,#0x40] ;@ Save PC
14110  bic r0,r0,#0xff000000
14111  bl m68k_read8 ;@ Call read8(r0) handler
14112  movs r1,r0,asl #24
14113
14114  and r10,r1,#0x80000000 ;@ r10=N_flag
14115  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14116
14117;@ EaCalc : Get '$33333333.l' into r0:
14118  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14119  ldrh r0,[r4],#2
14120  orr r0,r0,r2,lsl #16
14121;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
14122  mov r1,r1,lsr #24
14123  str r4,[r7,#0x40] ;@ Save PC
14124  bic r0,r0,#0xff000000
14125  bl m68k_write8 ;@ Call write8(r0,r1) handler
14126
14127  ldr r5,[r7,#0x5c] ;@ Load Cycles
14128  ldrh r8,[r4],#2 ;@ Fetch next opcode
14129  subs r5,r5,#28 ;@ Subtract cycles
14130  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14131  b CycloneEnd
14132
14133;@ ---------- [13fa] move.b ($3333,pc), $33333333.l; =3335 uses Op13fa ----------
14134Op13fa:
14135  str r4,[r7,#0x50] ;@ Save prev PC + 2
14136  str r5,[r7,#0x5c] ;@ Save Cycles
14137
14138;@ EaCalc : Get '($3333,pc)' into r0:
14139  ldr r0,[r7,#0x60] ;@ Get Memory base
14140  sub r0,r4,r0 ;@ Real PC
14141  ldrsh r2,[r4],#2 ;@ Fetch extension
14142  add r0,r2,r0 ;@ ($nn,PC)
14143;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
14144  str r4,[r7,#0x40] ;@ Save PC
14145  bic r0,r0,#0xff000000
14146  bl m68k_fetch8 ;@ Call fetch8(r0) handler
14147  movs r1,r0,asl #24
14148
14149  and r10,r1,#0x80000000 ;@ r10=N_flag
14150  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14151
14152;@ EaCalc : Get '$33333333.l' into r0:
14153  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14154  ldrh r0,[r4],#2
14155  orr r0,r0,r2,lsl #16
14156;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
14157  mov r1,r1,lsr #24
14158  str r4,[r7,#0x40] ;@ Save PC
14159  bic r0,r0,#0xff000000
14160  bl m68k_write8 ;@ Call write8(r0,r1) handler
14161
14162  ldr r5,[r7,#0x5c] ;@ Load Cycles
14163  ldrh r8,[r4],#2 ;@ Fetch next opcode
14164  subs r5,r5,#24 ;@ Subtract cycles
14165  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14166  b CycloneEnd
14167
14168;@ ---------- [13fb] move.b ($33,pc,d3.w*2), $33333333.l; =35 uses Op13fb ----------
14169Op13fb:
14170  str r4,[r7,#0x50] ;@ Save prev PC + 2
14171  str r5,[r7,#0x5c] ;@ Save Cycles
14172
14173;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
14174  ldr r0,[r7,#0x60] ;@ Get Memory base
14175  ldrh r3,[r4] ;@ Get extension word
14176  sub r0,r4,r0 ;@ r0=PC
14177  add r4,r4,#2
14178  mov r2,r3,lsr #10
14179  tst r3,#0x0800 ;@ Is Rn Word or Long
14180  and r2,r2,#0x3c ;@ r2=Index of Rn
14181  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14182  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14183  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
14184  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
14185  add r0,r2,r0 ;@ r0=Disp+PC+Rn
14186;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
14187  str r4,[r7,#0x40] ;@ Save PC
14188  bic r0,r0,#0xff000000
14189  bl m68k_fetch8 ;@ Call fetch8(r0) handler
14190  movs r1,r0,asl #24
14191
14192  and r10,r1,#0x80000000 ;@ r10=N_flag
14193  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14194
14195;@ EaCalc : Get '$33333333.l' into r0:
14196  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14197  ldrh r0,[r4],#2
14198  orr r0,r0,r2,lsl #16
14199;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
14200  mov r1,r1,lsr #24
14201  str r4,[r7,#0x40] ;@ Save PC
14202  bic r0,r0,#0xff000000
14203  bl m68k_write8 ;@ Call write8(r0,r1) handler
14204
14205  ldr r5,[r7,#0x5c] ;@ Load Cycles
14206  ldrh r8,[r4],#2 ;@ Fetch next opcode
14207  subs r5,r5,#26 ;@ Subtract cycles
14208  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14209  b CycloneEnd
14210
14211;@ ---------- [13fc] move.b #$33, $33333333.l uses Op13fc ----------
14212Op13fc:
14213  str r4,[r7,#0x50] ;@ Save prev PC + 2
14214  str r5,[r7,#0x5c] ;@ Save Cycles
14215
14216;@ EaCalc : Get '#$33' into r1:
14217  ldrsb r1,[r4],#2 ;@ Fetch immediate value
14218;@ EaRead : Read '#$33' (address in r1) into r1:
14219  movs r1,r1,asl #24
14220
14221  and r10,r1,#0x80000000 ;@ r10=N_flag
14222  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14223
14224;@ EaCalc : Get '$33333333.l' into r0:
14225  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14226  ldrh r0,[r4],#2
14227  orr r0,r0,r2,lsl #16
14228;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
14229  mov r1,r1,lsr #24
14230  str r4,[r7,#0x40] ;@ Save PC
14231  bic r0,r0,#0xff000000
14232  bl m68k_write8 ;@ Call write8(r0,r1) handler
14233
14234  ldr r5,[r7,#0x5c] ;@ Load Cycles
14235  ldrh r8,[r4],#2 ;@ Fetch next opcode
14236  subs r5,r5,#20 ;@ Subtract cycles
14237  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14238  b CycloneEnd
14239
14240;@ ---------- [1ec0] move.b d0, (a7)+ uses Op1ec0 ----------
14241Op1ec0:
14242  str r4,[r7,#0x50] ;@ Save prev PC + 2
14243  str r5,[r7,#0x5c] ;@ Save Cycles
14244
14245;@ EaCalc : Get register index into r1:
14246  and r1,r8,#0x000f
14247;@ EaRead : Read register[r1] into r1:
14248  ldrb r1,[r7,r1,lsl #2]
14249
14250  movs r2,r1,lsl #24
14251  and r10,r2,#0x80000000 ;@ r10=N_flag
14252  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14253
14254;@ EaCalc : Get '(a7)+' into r0:
14255  ldr r0,[r7,#0x3c] ;@ A7
14256  add r3,r0,#2 ;@ Post-increment An
14257  str r3,[r7,#0x3c] ;@ A7
14258;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14259  str r4,[r7,#0x40] ;@ Save PC
14260  bic r0,r0,#0xff000000
14261  bl m68k_write8 ;@ Call write8(r0,r1) handler
14262
14263  ldr r5,[r7,#0x5c] ;@ Load Cycles
14264  ldrh r8,[r4],#2 ;@ Fetch next opcode
14265  subs r5,r5,#8 ;@ Subtract cycles
14266  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14267  b CycloneEnd
14268
14269;@ ---------- [1ed0] move.b (a0), (a7)+ uses Op1ed0 ----------
14270Op1ed0:
14271  str r4,[r7,#0x50] ;@ Save prev PC + 2
14272  str r5,[r7,#0x5c] ;@ Save Cycles
14273
14274;@ EaCalc : Get '(a0)' into r0:
14275  and r2,r8,#0x000f
14276  orr r2,r2,#0x8 ;@ A0-7
14277  ldr r0,[r7,r2,lsl #2]
14278;@ EaRead : Read '(a0)' (address in r0) into r1:
14279  str r4,[r7,#0x40] ;@ Save PC
14280  bic r0,r0,#0xff000000
14281  bl m68k_read8 ;@ Call read8(r0) handler
14282  movs r1,r0,asl #24
14283
14284  and r10,r1,#0x80000000 ;@ r10=N_flag
14285  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14286
14287;@ EaCalc : Get '(a7)+' into r0:
14288  ldr r0,[r7,#0x3c] ;@ A7
14289  add r3,r0,#2 ;@ Post-increment An
14290  str r3,[r7,#0x3c] ;@ A7
14291;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14292  mov r1,r1,lsr #24
14293  bic r0,r0,#0xff000000
14294  bl m68k_write8 ;@ Call write8(r0,r1) handler
14295
14296  ldr r5,[r7,#0x5c] ;@ Load Cycles
14297  ldrh r8,[r4],#2 ;@ Fetch next opcode
14298  subs r5,r5,#12 ;@ Subtract cycles
14299  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14300  b CycloneEnd
14301
14302;@ ---------- [1ed8] move.b (a0)+, (a7)+ uses Op1ed8 ----------
14303Op1ed8:
14304  str r4,[r7,#0x50] ;@ Save prev PC + 2
14305  str r5,[r7,#0x5c] ;@ Save Cycles
14306
14307;@ EaCalc : Get '(a0)+' into r0:
14308  and r2,r8,#0x000f
14309  ldr r0,[r7,r2,lsl #2]
14310  add r3,r0,#1 ;@ Post-increment An
14311  str r3,[r7,r2,lsl #2]
14312;@ EaRead : Read '(a0)+' (address in r0) into r1:
14313  str r4,[r7,#0x40] ;@ Save PC
14314  bic r0,r0,#0xff000000
14315  bl m68k_read8 ;@ Call read8(r0) handler
14316  movs r1,r0,asl #24
14317
14318  and r10,r1,#0x80000000 ;@ r10=N_flag
14319  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14320
14321;@ EaCalc : Get '(a7)+' into r0:
14322  ldr r0,[r7,#0x3c] ;@ A7
14323  add r3,r0,#2 ;@ Post-increment An
14324  str r3,[r7,#0x3c] ;@ A7
14325;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14326  mov r1,r1,lsr #24
14327  bic r0,r0,#0xff000000
14328  bl m68k_write8 ;@ Call write8(r0,r1) handler
14329
14330  ldr r5,[r7,#0x5c] ;@ Load Cycles
14331  ldrh r8,[r4],#2 ;@ Fetch next opcode
14332  subs r5,r5,#12 ;@ Subtract cycles
14333  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14334  b CycloneEnd
14335
14336;@ ---------- [1edf] move.b (a7)+, (a7)+ uses Op1edf ----------
14337Op1edf:
14338  str r4,[r7,#0x50] ;@ Save prev PC + 2
14339  str r5,[r7,#0x5c] ;@ Save Cycles
14340
14341;@ EaCalc : Get '(a7)+' into r0:
14342  ldr r0,[r7,#0x3c] ;@ A7
14343  add r3,r0,#2 ;@ Post-increment An
14344  str r3,[r7,#0x3c] ;@ A7
14345;@ EaRead : Read '(a7)+' (address in r0) into r1:
14346  str r4,[r7,#0x40] ;@ Save PC
14347  bic r0,r0,#0xff000000
14348  bl m68k_read8 ;@ Call read8(r0) handler
14349  movs r1,r0,asl #24
14350
14351  and r10,r1,#0x80000000 ;@ r10=N_flag
14352  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14353
14354;@ EaCalc : Get '(a7)+' into r0:
14355  ldr r0,[r7,#0x3c] ;@ A7
14356  add r3,r0,#2 ;@ Post-increment An
14357  str r3,[r7,#0x3c] ;@ A7
14358;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14359  mov r1,r1,lsr #24
14360  bic r0,r0,#0xff000000
14361  bl m68k_write8 ;@ Call write8(r0,r1) handler
14362
14363  ldr r5,[r7,#0x5c] ;@ Load Cycles
14364  ldrh r8,[r4],#2 ;@ Fetch next opcode
14365  subs r5,r5,#12 ;@ Subtract cycles
14366  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14367  b CycloneEnd
14368
14369;@ ---------- [1ee0] move.b -(a0), (a7)+ uses Op1ee0 ----------
14370Op1ee0:
14371  str r4,[r7,#0x50] ;@ Save prev PC + 2
14372  str r5,[r7,#0x5c] ;@ Save Cycles
14373
14374;@ EaCalc : Get '-(a0)' into r0:
14375  and r2,r8,#0x000f
14376  orr r2,r2,#0x8 ;@ A0-7
14377  ldr r0,[r7,r2,lsl #2]
14378  sub r0,r0,#1 ;@ Pre-decrement An
14379  str r0,[r7,r2,lsl #2]
14380;@ EaRead : Read '-(a0)' (address in r0) into r1:
14381  str r4,[r7,#0x40] ;@ Save PC
14382  bic r0,r0,#0xff000000
14383  bl m68k_read8 ;@ Call read8(r0) handler
14384  movs r1,r0,asl #24
14385
14386  and r10,r1,#0x80000000 ;@ r10=N_flag
14387  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14388
14389;@ EaCalc : Get '(a7)+' into r0:
14390  ldr r0,[r7,#0x3c] ;@ A7
14391  add r3,r0,#2 ;@ Post-increment An
14392  str r3,[r7,#0x3c] ;@ A7
14393;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14394  mov r1,r1,lsr #24
14395  bic r0,r0,#0xff000000
14396  bl m68k_write8 ;@ Call write8(r0,r1) handler
14397
14398  ldr r5,[r7,#0x5c] ;@ Load Cycles
14399  ldrh r8,[r4],#2 ;@ Fetch next opcode
14400  subs r5,r5,#14 ;@ Subtract cycles
14401  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14402  b CycloneEnd
14403
14404;@ ---------- [1ee7] move.b -(a7), (a7)+ uses Op1ee7 ----------
14405Op1ee7:
14406  str r4,[r7,#0x50] ;@ Save prev PC + 2
14407  str r5,[r7,#0x5c] ;@ Save Cycles
14408
14409;@ EaCalc : Get '-(a7)' into r0:
14410  ldr r0,[r7,#0x3c] ;@ A7
14411  sub r0,r0,#2 ;@ Pre-decrement An
14412  str r0,[r7,#0x3c] ;@ A7
14413;@ EaRead : Read '-(a7)' (address in r0) into r1:
14414  str r4,[r7,#0x40] ;@ Save PC
14415  bic r0,r0,#0xff000000
14416  bl m68k_read8 ;@ Call read8(r0) handler
14417  movs r1,r0,asl #24
14418
14419  and r10,r1,#0x80000000 ;@ r10=N_flag
14420  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14421
14422;@ EaCalc : Get '(a7)+' into r0:
14423  ldr r0,[r7,#0x3c] ;@ A7
14424  add r3,r0,#2 ;@ Post-increment An
14425  str r3,[r7,#0x3c] ;@ A7
14426;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14427  mov r1,r1,lsr #24
14428  bic r0,r0,#0xff000000
14429  bl m68k_write8 ;@ Call write8(r0,r1) handler
14430
14431  ldr r5,[r7,#0x5c] ;@ Load Cycles
14432  ldrh r8,[r4],#2 ;@ Fetch next opcode
14433  subs r5,r5,#14 ;@ Subtract cycles
14434  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14435  b CycloneEnd
14436
14437;@ ---------- [1ee8] move.b ($3333,a0), (a7)+ uses Op1ee8 ----------
14438Op1ee8:
14439  str r4,[r7,#0x50] ;@ Save prev PC + 2
14440  str r5,[r7,#0x5c] ;@ Save Cycles
14441
14442;@ EaCalc : Get '($3333,a0)' into r0:
14443  ldrsh r0,[r4],#2 ;@ Fetch offset
14444  and r2,r8,#0x000f
14445  ldr r2,[r7,r2,lsl #2]
14446  add r0,r0,r2 ;@ Add on offset
14447;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
14448  str r4,[r7,#0x40] ;@ Save PC
14449  bic r0,r0,#0xff000000
14450  bl m68k_read8 ;@ Call read8(r0) handler
14451  movs r1,r0,asl #24
14452
14453  and r10,r1,#0x80000000 ;@ r10=N_flag
14454  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14455
14456;@ EaCalc : Get '(a7)+' into r0:
14457  ldr r0,[r7,#0x3c] ;@ A7
14458  add r3,r0,#2 ;@ Post-increment An
14459  str r3,[r7,#0x3c] ;@ A7
14460;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14461  mov r1,r1,lsr #24
14462  bic r0,r0,#0xff000000
14463  bl m68k_write8 ;@ Call write8(r0,r1) handler
14464
14465  ldr r5,[r7,#0x5c] ;@ Load Cycles
14466  ldrh r8,[r4],#2 ;@ Fetch next opcode
14467  subs r5,r5,#16 ;@ Subtract cycles
14468  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14469  b CycloneEnd
14470
14471;@ ---------- [1ef0] move.b ($33,a0,d3.w*2), (a7)+ uses Op1ef0 ----------
14472Op1ef0:
14473  str r4,[r7,#0x50] ;@ Save prev PC + 2
14474  str r5,[r7,#0x5c] ;@ Save Cycles
14475
14476;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
14477;@ Get extension word into r3:
14478  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
14479  mov r2,r3,lsr #10
14480  tst r3,#0x0800 ;@ Is Rn Word or Long
14481  and r2,r2,#0x3c ;@ r2=Index of Rn
14482  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14483  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14484  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
14485  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
14486  and r2,r8,#0x000f
14487  orr r2,r2,#0x8 ;@ A0-7
14488  ldr r2,[r7,r2,lsl #2]
14489  add r0,r2,r3 ;@ r0=Disp+An+Rn
14490;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
14491  str r4,[r7,#0x40] ;@ Save PC
14492  bic r0,r0,#0xff000000
14493  bl m68k_read8 ;@ Call read8(r0) handler
14494  movs r1,r0,asl #24
14495
14496  and r10,r1,#0x80000000 ;@ r10=N_flag
14497  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14498
14499;@ EaCalc : Get '(a7)+' into r0:
14500  ldr r0,[r7,#0x3c] ;@ A7
14501  add r3,r0,#2 ;@ Post-increment An
14502  str r3,[r7,#0x3c] ;@ A7
14503;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14504  mov r1,r1,lsr #24
14505  bic r0,r0,#0xff000000
14506  bl m68k_write8 ;@ Call write8(r0,r1) handler
14507
14508  ldr r5,[r7,#0x5c] ;@ Load Cycles
14509  ldrh r8,[r4],#2 ;@ Fetch next opcode
14510  subs r5,r5,#18 ;@ Subtract cycles
14511  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14512  b CycloneEnd
14513
14514;@ ---------- [1ef8] move.b $3333.w, (a7)+ uses Op1ef8 ----------
14515Op1ef8:
14516  str r4,[r7,#0x50] ;@ Save prev PC + 2
14517  str r5,[r7,#0x5c] ;@ Save Cycles
14518
14519;@ EaCalc : Get '$3333.w' into r0:
14520  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
14521;@ EaRead : Read '$3333.w' (address in r0) into r1:
14522  str r4,[r7,#0x40] ;@ Save PC
14523  bic r0,r0,#0xff000000
14524  bl m68k_read8 ;@ Call read8(r0) handler
14525  movs r1,r0,asl #24
14526
14527  and r10,r1,#0x80000000 ;@ r10=N_flag
14528  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14529
14530;@ EaCalc : Get '(a7)+' into r0:
14531  ldr r0,[r7,#0x3c] ;@ A7
14532  add r3,r0,#2 ;@ Post-increment An
14533  str r3,[r7,#0x3c] ;@ A7
14534;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14535  mov r1,r1,lsr #24
14536  bic r0,r0,#0xff000000
14537  bl m68k_write8 ;@ Call write8(r0,r1) handler
14538
14539  ldr r5,[r7,#0x5c] ;@ Load Cycles
14540  ldrh r8,[r4],#2 ;@ Fetch next opcode
14541  subs r5,r5,#16 ;@ Subtract cycles
14542  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14543  b CycloneEnd
14544
14545;@ ---------- [1ef9] move.b $33333333.l, (a7)+ uses Op1ef9 ----------
14546Op1ef9:
14547  str r4,[r7,#0x50] ;@ Save prev PC + 2
14548  str r5,[r7,#0x5c] ;@ Save Cycles
14549
14550;@ EaCalc : Get '$33333333.l' into r0:
14551  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14552  ldrh r0,[r4],#2
14553  orr r0,r0,r2,lsl #16
14554;@ EaRead : Read '$33333333.l' (address in r0) into r1:
14555  str r4,[r7,#0x40] ;@ Save PC
14556  bic r0,r0,#0xff000000
14557  bl m68k_read8 ;@ Call read8(r0) handler
14558  movs r1,r0,asl #24
14559
14560  and r10,r1,#0x80000000 ;@ r10=N_flag
14561  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14562
14563;@ EaCalc : Get '(a7)+' into r0:
14564  ldr r0,[r7,#0x3c] ;@ A7
14565  add r3,r0,#2 ;@ Post-increment An
14566  str r3,[r7,#0x3c] ;@ A7
14567;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14568  mov r1,r1,lsr #24
14569  bic r0,r0,#0xff000000
14570  bl m68k_write8 ;@ Call write8(r0,r1) handler
14571
14572  ldr r5,[r7,#0x5c] ;@ Load Cycles
14573  ldrh r8,[r4],#2 ;@ Fetch next opcode
14574  subs r5,r5,#20 ;@ Subtract cycles
14575  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14576  b CycloneEnd
14577
14578;@ ---------- [1efa] move.b ($3333,pc), (a7)+; =3335 uses Op1efa ----------
14579Op1efa:
14580  str r4,[r7,#0x50] ;@ Save prev PC + 2
14581  str r5,[r7,#0x5c] ;@ Save Cycles
14582
14583;@ EaCalc : Get '($3333,pc)' into r0:
14584  ldr r0,[r7,#0x60] ;@ Get Memory base
14585  sub r0,r4,r0 ;@ Real PC
14586  ldrsh r2,[r4],#2 ;@ Fetch extension
14587  add r0,r2,r0 ;@ ($nn,PC)
14588;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
14589  str r4,[r7,#0x40] ;@ Save PC
14590  bic r0,r0,#0xff000000
14591  bl m68k_fetch8 ;@ Call fetch8(r0) handler
14592  movs r1,r0,asl #24
14593
14594  and r10,r1,#0x80000000 ;@ r10=N_flag
14595  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14596
14597;@ EaCalc : Get '(a7)+' into r0:
14598  ldr r0,[r7,#0x3c] ;@ A7
14599  add r3,r0,#2 ;@ Post-increment An
14600  str r3,[r7,#0x3c] ;@ A7
14601;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14602  mov r1,r1,lsr #24
14603  bic r0,r0,#0xff000000
14604  bl m68k_write8 ;@ Call write8(r0,r1) handler
14605
14606  ldr r5,[r7,#0x5c] ;@ Load Cycles
14607  ldrh r8,[r4],#2 ;@ Fetch next opcode
14608  subs r5,r5,#16 ;@ Subtract cycles
14609  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14610  b CycloneEnd
14611
14612;@ ---------- [1efb] move.b ($33,pc,d3.w*2), (a7)+; =35 uses Op1efb ----------
14613Op1efb:
14614  str r4,[r7,#0x50] ;@ Save prev PC + 2
14615  str r5,[r7,#0x5c] ;@ Save Cycles
14616
14617;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
14618  ldr r0,[r7,#0x60] ;@ Get Memory base
14619  ldrh r3,[r4] ;@ Get extension word
14620  sub r0,r4,r0 ;@ r0=PC
14621  add r4,r4,#2
14622  mov r2,r3,lsr #10
14623  tst r3,#0x0800 ;@ Is Rn Word or Long
14624  and r2,r2,#0x3c ;@ r2=Index of Rn
14625  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14626  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14627  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
14628  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
14629  add r0,r2,r0 ;@ r0=Disp+PC+Rn
14630;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
14631  str r4,[r7,#0x40] ;@ Save PC
14632  bic r0,r0,#0xff000000
14633  bl m68k_fetch8 ;@ Call fetch8(r0) handler
14634  movs r1,r0,asl #24
14635
14636  and r10,r1,#0x80000000 ;@ r10=N_flag
14637  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14638
14639;@ EaCalc : Get '(a7)+' into r0:
14640  ldr r0,[r7,#0x3c] ;@ A7
14641  add r3,r0,#2 ;@ Post-increment An
14642  str r3,[r7,#0x3c] ;@ A7
14643;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14644  mov r1,r1,lsr #24
14645  bic r0,r0,#0xff000000
14646  bl m68k_write8 ;@ Call write8(r0,r1) handler
14647
14648  ldr r5,[r7,#0x5c] ;@ Load Cycles
14649  ldrh r8,[r4],#2 ;@ Fetch next opcode
14650  subs r5,r5,#18 ;@ Subtract cycles
14651  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14652  b CycloneEnd
14653
14654;@ ---------- [1efc] move.b #$33, (a7)+ uses Op1efc ----------
14655Op1efc:
14656  str r4,[r7,#0x50] ;@ Save prev PC + 2
14657  str r5,[r7,#0x5c] ;@ Save Cycles
14658
14659;@ EaCalc : Get '#$33' into r1:
14660  ldrsb r1,[r4],#2 ;@ Fetch immediate value
14661;@ EaRead : Read '#$33' (address in r1) into r1:
14662  movs r1,r1,asl #24
14663
14664  and r10,r1,#0x80000000 ;@ r10=N_flag
14665  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14666
14667;@ EaCalc : Get '(a7)+' into r0:
14668  ldr r0,[r7,#0x3c] ;@ A7
14669  add r3,r0,#2 ;@ Post-increment An
14670  str r3,[r7,#0x3c] ;@ A7
14671;@ EaWrite: Write r1 into '(a7)+' (address in r0):
14672  mov r1,r1,lsr #24
14673  str r4,[r7,#0x40] ;@ Save PC
14674  bic r0,r0,#0xff000000
14675  bl m68k_write8 ;@ Call write8(r0,r1) handler
14676
14677  ldr r5,[r7,#0x5c] ;@ Load Cycles
14678  ldrh r8,[r4],#2 ;@ Fetch next opcode
14679  subs r5,r5,#12 ;@ Subtract cycles
14680  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14681  b CycloneEnd
14682
14683;@ ---------- [1f00] move.b d0, -(a7) uses Op1f00 ----------
14684Op1f00:
14685  str r4,[r7,#0x50] ;@ Save prev PC + 2
14686  str r5,[r7,#0x5c] ;@ Save Cycles
14687
14688;@ EaCalc : Get register index into r1:
14689  and r1,r8,#0x000f
14690;@ EaRead : Read register[r1] into r1:
14691  ldrb r1,[r7,r1,lsl #2]
14692
14693  movs r2,r1,lsl #24
14694  and r10,r2,#0x80000000 ;@ r10=N_flag
14695  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14696
14697;@ EaCalc : Get '-(a7)' into r0:
14698  ldr r0,[r7,#0x3c] ;@ A7
14699  sub r0,r0,#2 ;@ Pre-decrement An
14700  str r0,[r7,#0x3c] ;@ A7
14701;@ EaWrite: Write r1 into '-(a7)' (address in r0):
14702  str r4,[r7,#0x40] ;@ Save PC
14703  bic r0,r0,#0xff000000
14704  bl m68k_write8 ;@ Call write8(r0,r1) handler
14705
14706  ldr r5,[r7,#0x5c] ;@ Load Cycles
14707  ldrh r8,[r4],#2 ;@ Fetch next opcode
14708  subs r5,r5,#8 ;@ Subtract cycles
14709  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14710  b CycloneEnd
14711
14712;@ ---------- [1f10] move.b (a0), -(a7) uses Op1f10 ----------
14713Op1f10:
14714  str r4,[r7,#0x50] ;@ Save prev PC + 2
14715  str r5,[r7,#0x5c] ;@ Save Cycles
14716
14717;@ EaCalc : Get '(a0)' into r0:
14718  and r2,r8,#0x000f
14719  orr r2,r2,#0x8 ;@ A0-7
14720  ldr r0,[r7,r2,lsl #2]
14721;@ EaRead : Read '(a0)' (address in r0) into r1:
14722  str r4,[r7,#0x40] ;@ Save PC
14723  bic r0,r0,#0xff000000
14724  bl m68k_read8 ;@ Call read8(r0) handler
14725  movs r1,r0,asl #24
14726
14727  and r10,r1,#0x80000000 ;@ r10=N_flag
14728  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14729
14730;@ EaCalc : Get '-(a7)' into r0:
14731  ldr r0,[r7,#0x3c] ;@ A7
14732  sub r0,r0,#2 ;@ Pre-decrement An
14733  str r0,[r7,#0x3c] ;@ A7
14734;@ EaWrite: Write r1 into '-(a7)' (address in r0):
14735  mov r1,r1,lsr #24
14736  bic r0,r0,#0xff000000
14737  bl m68k_write8 ;@ Call write8(r0,r1) handler
14738
14739  ldr r5,[r7,#0x5c] ;@ Load Cycles
14740  ldrh r8,[r4],#2 ;@ Fetch next opcode
14741  subs r5,r5,#12 ;@ Subtract cycles
14742  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14743  b CycloneEnd
14744
14745;@ ---------- [1f18] move.b (a0)+, -(a7) uses Op1f18 ----------
14746Op1f18:
14747  str r4,[r7,#0x50] ;@ Save prev PC + 2
14748  str r5,[r7,#0x5c] ;@ Save Cycles
14749
14750;@ EaCalc : Get '(a0)+' into r0:
14751  and r2,r8,#0x000f
14752  ldr r0,[r7,r2,lsl #2]
14753  add r3,r0,#1 ;@ Post-increment An
14754  str r3,[r7,r2,lsl #2]
14755;@ EaRead : Read '(a0)+' (address in r0) into r1:
14756  str r4,[r7,#0x40] ;@ Save PC
14757  bic r0,r0,#0xff000000
14758  bl m68k_read8 ;@ Call read8(r0) handler
14759  movs r1,r0,asl #24
14760
14761  and r10,r1,#0x80000000 ;@ r10=N_flag
14762  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14763
14764;@ EaCalc : Get '-(a7)' into r0:
14765  ldr r0,[r7,#0x3c] ;@ A7
14766  sub r0,r0,#2 ;@ Pre-decrement An
14767  str r0,[r7,#0x3c] ;@ A7
14768;@ EaWrite: Write r1 into '-(a7)' (address in r0):
14769  mov r1,r1,lsr #24
14770  bic r0,r0,#0xff000000
14771  bl m68k_write8 ;@ Call write8(r0,r1) handler
14772
14773  ldr r5,[r7,#0x5c] ;@ Load Cycles
14774  ldrh r8,[r4],#2 ;@ Fetch next opcode
14775  subs r5,r5,#12 ;@ Subtract cycles
14776  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14777  b CycloneEnd
14778
14779;@ ---------- [1f1f] move.b (a7)+, -(a7) uses Op1f1f ----------
14780Op1f1f:
14781  str r4,[r7,#0x50] ;@ Save prev PC + 2
14782  str r5,[r7,#0x5c] ;@ Save Cycles
14783
14784;@ EaCalc : Get '(a7)+' into r0:
14785  ldr r0,[r7,#0x3c] ;@ A7
14786  add r3,r0,#2 ;@ Post-increment An
14787  str r3,[r7,#0x3c] ;@ A7
14788;@ EaRead : Read '(a7)+' (address in r0) into r1:
14789  str r4,[r7,#0x40] ;@ Save PC
14790  bic r0,r0,#0xff000000
14791  bl m68k_read8 ;@ Call read8(r0) handler
14792  movs r1,r0,asl #24
14793
14794  and r10,r1,#0x80000000 ;@ r10=N_flag
14795  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14796
14797;@ EaCalc : Get '-(a7)' into r0:
14798  ldr r0,[r7,#0x3c] ;@ A7
14799  sub r0,r0,#2 ;@ Pre-decrement An
14800  str r0,[r7,#0x3c] ;@ A7
14801;@ EaWrite: Write r1 into '-(a7)' (address in r0):
14802  mov r1,r1,lsr #24
14803  bic r0,r0,#0xff000000
14804  bl m68k_write8 ;@ Call write8(r0,r1) handler
14805
14806  ldr r5,[r7,#0x5c] ;@ Load Cycles
14807  ldrh r8,[r4],#2 ;@ Fetch next opcode
14808  subs r5,r5,#12 ;@ Subtract cycles
14809  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14810  b CycloneEnd
14811
14812;@ ---------- [1f20] move.b -(a0), -(a7) uses Op1f20 ----------
14813Op1f20:
14814  str r4,[r7,#0x50] ;@ Save prev PC + 2
14815  str r5,[r7,#0x5c] ;@ Save Cycles
14816
14817;@ EaCalc : Get '-(a0)' into r0:
14818  and r2,r8,#0x000f
14819  orr r2,r2,#0x8 ;@ A0-7
14820  ldr r0,[r7,r2,lsl #2]
14821  sub r0,r0,#1 ;@ Pre-decrement An
14822  str r0,[r7,r2,lsl #2]
14823;@ EaRead : Read '-(a0)' (address in r0) into r1:
14824  str r4,[r7,#0x40] ;@ Save PC
14825  bic r0,r0,#0xff000000
14826  bl m68k_read8 ;@ Call read8(r0) handler
14827  movs r1,r0,asl #24
14828
14829  and r10,r1,#0x80000000 ;@ r10=N_flag
14830  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14831
14832;@ EaCalc : Get '-(a7)' into r0:
14833  ldr r0,[r7,#0x3c] ;@ A7
14834  sub r0,r0,#2 ;@ Pre-decrement An
14835  str r0,[r7,#0x3c] ;@ A7
14836;@ EaWrite: Write r1 into '-(a7)' (address in r0):
14837  mov r1,r1,lsr #24
14838  bic r0,r0,#0xff000000
14839  bl m68k_write8 ;@ Call write8(r0,r1) handler
14840
14841  ldr r5,[r7,#0x5c] ;@ Load Cycles
14842  ldrh r8,[r4],#2 ;@ Fetch next opcode
14843  subs r5,r5,#14 ;@ Subtract cycles
14844  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14845  b CycloneEnd
14846
14847;@ ---------- [1f27] move.b -(a7), -(a7) uses Op1f27 ----------
14848Op1f27:
14849  str r4,[r7,#0x50] ;@ Save prev PC + 2
14850  str r5,[r7,#0x5c] ;@ Save Cycles
14851
14852;@ EaCalc : Get '-(a7)' into r0:
14853  ldr r0,[r7,#0x3c] ;@ A7
14854  sub r0,r0,#2 ;@ Pre-decrement An
14855  str r0,[r7,#0x3c] ;@ A7
14856;@ EaRead : Read '-(a7)' (address in r0) into r1:
14857  str r4,[r7,#0x40] ;@ Save PC
14858  bic r0,r0,#0xff000000
14859  bl m68k_read8 ;@ Call read8(r0) handler
14860  movs r1,r0,asl #24
14861
14862  and r10,r1,#0x80000000 ;@ r10=N_flag
14863  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14864
14865;@ EaCalc : Get '-(a7)' into r0:
14866  ldr r0,[r7,#0x3c] ;@ A7
14867  sub r0,r0,#2 ;@ Pre-decrement An
14868  str r0,[r7,#0x3c] ;@ A7
14869;@ EaWrite: Write r1 into '-(a7)' (address in r0):
14870  mov r1,r1,lsr #24
14871  bic r0,r0,#0xff000000
14872  bl m68k_write8 ;@ Call write8(r0,r1) handler
14873
14874  ldr r5,[r7,#0x5c] ;@ Load Cycles
14875  ldrh r8,[r4],#2 ;@ Fetch next opcode
14876  subs r5,r5,#14 ;@ Subtract cycles
14877  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14878  b CycloneEnd
14879
14880;@ ---------- [1f28] move.b ($3333,a0), -(a7) uses Op1f28 ----------
14881Op1f28:
14882  str r4,[r7,#0x50] ;@ Save prev PC + 2
14883  str r5,[r7,#0x5c] ;@ Save Cycles
14884
14885;@ EaCalc : Get '($3333,a0)' into r0:
14886  ldrsh r0,[r4],#2 ;@ Fetch offset
14887  and r2,r8,#0x000f
14888  ldr r2,[r7,r2,lsl #2]
14889  add r0,r0,r2 ;@ Add on offset
14890;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
14891  str r4,[r7,#0x40] ;@ Save PC
14892  bic r0,r0,#0xff000000
14893  bl m68k_read8 ;@ Call read8(r0) handler
14894  movs r1,r0,asl #24
14895
14896  and r10,r1,#0x80000000 ;@ r10=N_flag
14897  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14898
14899;@ EaCalc : Get '-(a7)' into r0:
14900  ldr r0,[r7,#0x3c] ;@ A7
14901  sub r0,r0,#2 ;@ Pre-decrement An
14902  str r0,[r7,#0x3c] ;@ A7
14903;@ EaWrite: Write r1 into '-(a7)' (address in r0):
14904  mov r1,r1,lsr #24
14905  bic r0,r0,#0xff000000
14906  bl m68k_write8 ;@ Call write8(r0,r1) handler
14907
14908  ldr r5,[r7,#0x5c] ;@ Load Cycles
14909  ldrh r8,[r4],#2 ;@ Fetch next opcode
14910  subs r5,r5,#16 ;@ Subtract cycles
14911  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14912  b CycloneEnd
14913
14914;@ ---------- [1f30] move.b ($33,a0,d3.w*2), -(a7) uses Op1f30 ----------
14915Op1f30:
14916  str r4,[r7,#0x50] ;@ Save prev PC + 2
14917  str r5,[r7,#0x5c] ;@ Save Cycles
14918
14919;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
14920;@ Get extension word into r3:
14921  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
14922  mov r2,r3,lsr #10
14923  tst r3,#0x0800 ;@ Is Rn Word or Long
14924  and r2,r2,#0x3c ;@ r2=Index of Rn
14925  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14926  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14927  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
14928  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
14929  and r2,r8,#0x000f
14930  orr r2,r2,#0x8 ;@ A0-7
14931  ldr r2,[r7,r2,lsl #2]
14932  add r0,r2,r3 ;@ r0=Disp+An+Rn
14933;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
14934  str r4,[r7,#0x40] ;@ Save PC
14935  bic r0,r0,#0xff000000
14936  bl m68k_read8 ;@ Call read8(r0) handler
14937  movs r1,r0,asl #24
14938
14939  and r10,r1,#0x80000000 ;@ r10=N_flag
14940  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14941
14942;@ EaCalc : Get '-(a7)' into r0:
14943  ldr r0,[r7,#0x3c] ;@ A7
14944  sub r0,r0,#2 ;@ Pre-decrement An
14945  str r0,[r7,#0x3c] ;@ A7
14946;@ EaWrite: Write r1 into '-(a7)' (address in r0):
14947  mov r1,r1,lsr #24
14948  bic r0,r0,#0xff000000
14949  bl m68k_write8 ;@ Call write8(r0,r1) handler
14950
14951  ldr r5,[r7,#0x5c] ;@ Load Cycles
14952  ldrh r8,[r4],#2 ;@ Fetch next opcode
14953  subs r5,r5,#18 ;@ Subtract cycles
14954  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14955  b CycloneEnd
14956
14957;@ ---------- [1f38] move.b $3333.w, -(a7) uses Op1f38 ----------
14958Op1f38:
14959  str r4,[r7,#0x50] ;@ Save prev PC + 2
14960  str r5,[r7,#0x5c] ;@ Save Cycles
14961
14962;@ EaCalc : Get '$3333.w' into r0:
14963  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
14964;@ EaRead : Read '$3333.w' (address in r0) into r1:
14965  str r4,[r7,#0x40] ;@ Save PC
14966  bic r0,r0,#0xff000000
14967  bl m68k_read8 ;@ Call read8(r0) handler
14968  movs r1,r0,asl #24
14969
14970  and r10,r1,#0x80000000 ;@ r10=N_flag
14971  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14972
14973;@ EaCalc : Get '-(a7)' into r0:
14974  ldr r0,[r7,#0x3c] ;@ A7
14975  sub r0,r0,#2 ;@ Pre-decrement An
14976  str r0,[r7,#0x3c] ;@ A7
14977;@ EaWrite: Write r1 into '-(a7)' (address in r0):
14978  mov r1,r1,lsr #24
14979  bic r0,r0,#0xff000000
14980  bl m68k_write8 ;@ Call write8(r0,r1) handler
14981
14982  ldr r5,[r7,#0x5c] ;@ Load Cycles
14983  ldrh r8,[r4],#2 ;@ Fetch next opcode
14984  subs r5,r5,#16 ;@ Subtract cycles
14985  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14986  b CycloneEnd
14987
14988;@ ---------- [1f39] move.b $33333333.l, -(a7) uses Op1f39 ----------
14989Op1f39:
14990  str r4,[r7,#0x50] ;@ Save prev PC + 2
14991  str r5,[r7,#0x5c] ;@ Save Cycles
14992
14993;@ EaCalc : Get '$33333333.l' into r0:
14994  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14995  ldrh r0,[r4],#2
14996  orr r0,r0,r2,lsl #16
14997;@ EaRead : Read '$33333333.l' (address in r0) into r1:
14998  str r4,[r7,#0x40] ;@ Save PC
14999  bic r0,r0,#0xff000000
15000  bl m68k_read8 ;@ Call read8(r0) handler
15001  movs r1,r0,asl #24
15002
15003  and r10,r1,#0x80000000 ;@ r10=N_flag
15004  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15005
15006;@ EaCalc : Get '-(a7)' into r0:
15007  ldr r0,[r7,#0x3c] ;@ A7
15008  sub r0,r0,#2 ;@ Pre-decrement An
15009  str r0,[r7,#0x3c] ;@ A7
15010;@ EaWrite: Write r1 into '-(a7)' (address in r0):
15011  mov r1,r1,lsr #24
15012  bic r0,r0,#0xff000000
15013  bl m68k_write8 ;@ Call write8(r0,r1) handler
15014
15015  ldr r5,[r7,#0x5c] ;@ Load Cycles
15016  ldrh r8,[r4],#2 ;@ Fetch next opcode
15017  subs r5,r5,#20 ;@ Subtract cycles
15018  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15019  b CycloneEnd
15020
15021;@ ---------- [1f3a] move.b ($3333,pc), -(a7); =3335 uses Op1f3a ----------
15022Op1f3a:
15023  str r4,[r7,#0x50] ;@ Save prev PC + 2
15024  str r5,[r7,#0x5c] ;@ Save Cycles
15025
15026;@ EaCalc : Get '($3333,pc)' into r0:
15027  ldr r0,[r7,#0x60] ;@ Get Memory base
15028  sub r0,r4,r0 ;@ Real PC
15029  ldrsh r2,[r4],#2 ;@ Fetch extension
15030  add r0,r2,r0 ;@ ($nn,PC)
15031;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
15032  str r4,[r7,#0x40] ;@ Save PC
15033  bic r0,r0,#0xff000000
15034  bl m68k_fetch8 ;@ Call fetch8(r0) handler
15035  movs r1,r0,asl #24
15036
15037  and r10,r1,#0x80000000 ;@ r10=N_flag
15038  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15039
15040;@ EaCalc : Get '-(a7)' into r0:
15041  ldr r0,[r7,#0x3c] ;@ A7
15042  sub r0,r0,#2 ;@ Pre-decrement An
15043  str r0,[r7,#0x3c] ;@ A7
15044;@ EaWrite: Write r1 into '-(a7)' (address in r0):
15045  mov r1,r1,lsr #24
15046  bic r0,r0,#0xff000000
15047  bl m68k_write8 ;@ Call write8(r0,r1) handler
15048
15049  ldr r5,[r7,#0x5c] ;@ Load Cycles
15050  ldrh r8,[r4],#2 ;@ Fetch next opcode
15051  subs r5,r5,#16 ;@ Subtract cycles
15052  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15053  b CycloneEnd
15054
15055;@ ---------- [1f3b] move.b ($33,pc,d3.w*2), -(a7); =35 uses Op1f3b ----------
15056Op1f3b:
15057  str r4,[r7,#0x50] ;@ Save prev PC + 2
15058  str r5,[r7,#0x5c] ;@ Save Cycles
15059
15060;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
15061  ldr r0,[r7,#0x60] ;@ Get Memory base
15062  ldrh r3,[r4] ;@ Get extension word
15063  sub r0,r4,r0 ;@ r0=PC
15064  add r4,r4,#2
15065  mov r2,r3,lsr #10
15066  tst r3,#0x0800 ;@ Is Rn Word or Long
15067  and r2,r2,#0x3c ;@ r2=Index of Rn
15068  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15069  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15070  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
15071  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
15072  add r0,r2,r0 ;@ r0=Disp+PC+Rn
15073;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
15074  str r4,[r7,#0x40] ;@ Save PC
15075  bic r0,r0,#0xff000000
15076  bl m68k_fetch8 ;@ Call fetch8(r0) handler
15077  movs r1,r0,asl #24
15078
15079  and r10,r1,#0x80000000 ;@ r10=N_flag
15080  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15081
15082;@ EaCalc : Get '-(a7)' into r0:
15083  ldr r0,[r7,#0x3c] ;@ A7
15084  sub r0,r0,#2 ;@ Pre-decrement An
15085  str r0,[r7,#0x3c] ;@ A7
15086;@ EaWrite: Write r1 into '-(a7)' (address in r0):
15087  mov r1,r1,lsr #24
15088  bic r0,r0,#0xff000000
15089  bl m68k_write8 ;@ Call write8(r0,r1) handler
15090
15091  ldr r5,[r7,#0x5c] ;@ Load Cycles
15092  ldrh r8,[r4],#2 ;@ Fetch next opcode
15093  subs r5,r5,#18 ;@ Subtract cycles
15094  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15095  b CycloneEnd
15096
15097;@ ---------- [1f3c] move.b #$33, -(a7) uses Op1f3c ----------
15098Op1f3c:
15099  str r4,[r7,#0x50] ;@ Save prev PC + 2
15100  str r5,[r7,#0x5c] ;@ Save Cycles
15101
15102;@ EaCalc : Get '#$33' into r1:
15103  ldrsb r1,[r4],#2 ;@ Fetch immediate value
15104;@ EaRead : Read '#$33' (address in r1) into r1:
15105  movs r1,r1,asl #24
15106
15107  and r10,r1,#0x80000000 ;@ r10=N_flag
15108  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15109
15110;@ EaCalc : Get '-(a7)' into r0:
15111  ldr r0,[r7,#0x3c] ;@ A7
15112  sub r0,r0,#2 ;@ Pre-decrement An
15113  str r0,[r7,#0x3c] ;@ A7
15114;@ EaWrite: Write r1 into '-(a7)' (address in r0):
15115  mov r1,r1,lsr #24
15116  str r4,[r7,#0x40] ;@ Save PC
15117  bic r0,r0,#0xff000000
15118  bl m68k_write8 ;@ Call write8(r0,r1) handler
15119
15120  ldr r5,[r7,#0x5c] ;@ Load Cycles
15121  ldrh r8,[r4],#2 ;@ Fetch next opcode
15122  subs r5,r5,#12 ;@ Subtract cycles
15123  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15124  b CycloneEnd
15125
15126;@ ---------- [2000] move.l d0, d0 uses Op2000 ----------
15127Op2000:
15128;@ EaCalc : Get register index into r1:
15129  and r1,r8,#0x000f
15130;@ EaRead : Read register[r1] into r1:
15131  ldr r1,[r7,r1,lsl #2]
15132  tst r1,r1
15133
15134  and r10,r1,#0x80000000 ;@ r10=N_flag
15135  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15136
15137;@ EaCalc : Get register index into r0:
15138  and r0,r8,#0x0e00
15139;@ EaWrite: r1 into register[r0]:
15140  str r1,[r7,r0,lsr #7]
15141
15142  ldrh r8,[r4],#2 ;@ Fetch next opcode
15143  subs r5,r5,#4 ;@ Subtract cycles
15144  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15145  b CycloneEnd
15146
15147;@ ---------- [2010] move.l (a0), d0 uses Op2010 ----------
15148Op2010:
15149  str r4,[r7,#0x50] ;@ Save prev PC + 2
15150  str r5,[r7,#0x5c] ;@ Save Cycles
15151
15152;@ EaCalc : Get '(a0)' into r0:
15153  and r2,r8,#0x000f
15154  orr r2,r2,#0x8 ;@ A0-7
15155  ldr r0,[r7,r2,lsl #2]
15156;@ EaRead : Read '(a0)' (address in r0) into r1:
15157  str r4,[r7,#0x40] ;@ Save PC
15158  bic r0,r0,#0xff000000
15159  bl m68k_read32 ;@ Call read32(r0) handler
15160  movs r1,r0
15161
15162  and r10,r1,#0x80000000 ;@ r10=N_flag
15163  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15164
15165;@ EaCalc : Get register index into r0:
15166  and r0,r8,#0x0e00
15167;@ EaWrite: r1 into register[r0]:
15168  str r1,[r7,r0,lsr #7]
15169
15170  ldr r5,[r7,#0x5c] ;@ Load Cycles
15171  ldrh r8,[r4],#2 ;@ Fetch next opcode
15172  subs r5,r5,#12 ;@ Subtract cycles
15173  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15174  b CycloneEnd
15175
15176;@ ---------- [2018] move.l (a0)+, d0 uses Op2018 ----------
15177Op2018:
15178  str r4,[r7,#0x50] ;@ Save prev PC + 2
15179  str r5,[r7,#0x5c] ;@ Save Cycles
15180
15181;@ EaCalc : Get '(a0)+' into r0:
15182  and r2,r8,#0x000f
15183  ldr r0,[r7,r2,lsl #2]
15184  add r3,r0,#4 ;@ Post-increment An
15185  str r3,[r7,r2,lsl #2]
15186;@ EaRead : Read '(a0)+' (address in r0) into r1:
15187  str r4,[r7,#0x40] ;@ Save PC
15188  bic r0,r0,#0xff000000
15189  bl m68k_read32 ;@ Call read32(r0) handler
15190  movs r1,r0
15191
15192  and r10,r1,#0x80000000 ;@ r10=N_flag
15193  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15194
15195;@ EaCalc : Get register index into r0:
15196  and r0,r8,#0x0e00
15197;@ EaWrite: r1 into register[r0]:
15198  str r1,[r7,r0,lsr #7]
15199
15200  ldr r5,[r7,#0x5c] ;@ Load Cycles
15201  ldrh r8,[r4],#2 ;@ Fetch next opcode
15202  subs r5,r5,#12 ;@ Subtract cycles
15203  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15204  b CycloneEnd
15205
15206;@ ---------- [2020] move.l -(a0), d0 uses Op2020 ----------
15207Op2020:
15208  str r4,[r7,#0x50] ;@ Save prev PC + 2
15209  str r5,[r7,#0x5c] ;@ Save Cycles
15210
15211;@ EaCalc : Get '-(a0)' into r0:
15212  and r2,r8,#0x000f
15213  orr r2,r2,#0x8 ;@ A0-7
15214  ldr r0,[r7,r2,lsl #2]
15215  sub r0,r0,#4 ;@ Pre-decrement An
15216  str r0,[r7,r2,lsl #2]
15217;@ EaRead : Read '-(a0)' (address in r0) into r1:
15218  str r4,[r7,#0x40] ;@ Save PC
15219  bic r0,r0,#0xff000000
15220  bl m68k_read32 ;@ Call read32(r0) handler
15221  movs r1,r0
15222
15223  and r10,r1,#0x80000000 ;@ r10=N_flag
15224  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15225
15226;@ EaCalc : Get register index into r0:
15227  and r0,r8,#0x0e00
15228;@ EaWrite: r1 into register[r0]:
15229  str r1,[r7,r0,lsr #7]
15230
15231  ldr r5,[r7,#0x5c] ;@ Load Cycles
15232  ldrh r8,[r4],#2 ;@ Fetch next opcode
15233  subs r5,r5,#14 ;@ Subtract cycles
15234  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15235  b CycloneEnd
15236
15237;@ ---------- [2028] move.l ($3333,a0), d0 uses Op2028 ----------
15238Op2028:
15239  str r4,[r7,#0x50] ;@ Save prev PC + 2
15240  str r5,[r7,#0x5c] ;@ Save Cycles
15241
15242;@ EaCalc : Get '($3333,a0)' into r0:
15243  ldrsh r0,[r4],#2 ;@ Fetch offset
15244  and r2,r8,#0x000f
15245  ldr r2,[r7,r2,lsl #2]
15246  add r0,r0,r2 ;@ Add on offset
15247;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
15248  str r4,[r7,#0x40] ;@ Save PC
15249  bic r0,r0,#0xff000000
15250  bl m68k_read32 ;@ Call read32(r0) handler
15251  movs r1,r0
15252
15253  and r10,r1,#0x80000000 ;@ r10=N_flag
15254  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15255
15256;@ EaCalc : Get register index into r0:
15257  and r0,r8,#0x0e00
15258;@ EaWrite: r1 into register[r0]:
15259  str r1,[r7,r0,lsr #7]
15260
15261  ldr r5,[r7,#0x5c] ;@ Load Cycles
15262  ldrh r8,[r4],#2 ;@ Fetch next opcode
15263  subs r5,r5,#16 ;@ Subtract cycles
15264  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15265  b CycloneEnd
15266
15267;@ ---------- [2030] move.l ($33,a0,d3.w*2), d0 uses Op2030 ----------
15268Op2030:
15269  str r4,[r7,#0x50] ;@ Save prev PC + 2
15270  str r5,[r7,#0x5c] ;@ Save Cycles
15271
15272;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15273;@ Get extension word into r3:
15274  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15275  mov r2,r3,lsr #10
15276  tst r3,#0x0800 ;@ Is Rn Word or Long
15277  and r2,r2,#0x3c ;@ r2=Index of Rn
15278  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15279  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15280  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15281  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15282  and r2,r8,#0x000f
15283  orr r2,r2,#0x8 ;@ A0-7
15284  ldr r2,[r7,r2,lsl #2]
15285  add r0,r2,r3 ;@ r0=Disp+An+Rn
15286;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
15287  str r4,[r7,#0x40] ;@ Save PC
15288  bic r0,r0,#0xff000000
15289  bl m68k_read32 ;@ Call read32(r0) handler
15290  movs r1,r0
15291
15292  and r10,r1,#0x80000000 ;@ r10=N_flag
15293  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15294
15295;@ EaCalc : Get register index into r0:
15296  and r0,r8,#0x0e00
15297;@ EaWrite: r1 into register[r0]:
15298  str r1,[r7,r0,lsr #7]
15299
15300  ldr r5,[r7,#0x5c] ;@ Load Cycles
15301  ldrh r8,[r4],#2 ;@ Fetch next opcode
15302  subs r5,r5,#18 ;@ Subtract cycles
15303  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15304  b CycloneEnd
15305
15306;@ ---------- [2039] move.l $33333333.l, d0 uses Op2039 ----------
15307Op2039:
15308  str r4,[r7,#0x50] ;@ Save prev PC + 2
15309  str r5,[r7,#0x5c] ;@ Save Cycles
15310
15311;@ EaCalc : Get '$33333333.l' into r0:
15312  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
15313  ldrh r0,[r4],#2
15314  orr r0,r0,r2,lsl #16
15315;@ EaRead : Read '$33333333.l' (address in r0) into r1:
15316  str r4,[r7,#0x40] ;@ Save PC
15317  bic r0,r0,#0xff000000
15318  bl m68k_read32 ;@ Call read32(r0) handler
15319  movs r1,r0
15320
15321  and r10,r1,#0x80000000 ;@ r10=N_flag
15322  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15323
15324;@ EaCalc : Get register index into r0:
15325  and r0,r8,#0x0e00
15326;@ EaWrite: r1 into register[r0]:
15327  str r1,[r7,r0,lsr #7]
15328
15329  ldr r5,[r7,#0x5c] ;@ Load Cycles
15330  ldrh r8,[r4],#2 ;@ Fetch next opcode
15331  subs r5,r5,#20 ;@ Subtract cycles
15332  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15333  b CycloneEnd
15334
15335;@ ---------- [203a] move.l ($3333,pc), d0; =3335 uses Op203a ----------
15336Op203a:
15337  str r4,[r7,#0x50] ;@ Save prev PC + 2
15338  str r5,[r7,#0x5c] ;@ Save Cycles
15339
15340;@ EaCalc : Get '($3333,pc)' into r0:
15341  ldr r0,[r7,#0x60] ;@ Get Memory base
15342  sub r0,r4,r0 ;@ Real PC
15343  ldrsh r2,[r4],#2 ;@ Fetch extension
15344  add r0,r2,r0 ;@ ($nn,PC)
15345;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
15346  str r4,[r7,#0x40] ;@ Save PC
15347  bic r0,r0,#0xff000000
15348  bl m68k_fetch32 ;@ Call fetch32(r0) handler
15349  movs r1,r0
15350
15351  and r10,r1,#0x80000000 ;@ r10=N_flag
15352  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15353
15354;@ EaCalc : Get register index into r0:
15355  and r0,r8,#0x0e00
15356;@ EaWrite: r1 into register[r0]:
15357  str r1,[r7,r0,lsr #7]
15358
15359  ldr r5,[r7,#0x5c] ;@ Load Cycles
15360  ldrh r8,[r4],#2 ;@ Fetch next opcode
15361  subs r5,r5,#16 ;@ Subtract cycles
15362  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15363  b CycloneEnd
15364
15365;@ ---------- [203b] move.l ($33,pc,d3.w*2), d0; =35 uses Op203b ----------
15366Op203b:
15367  str r4,[r7,#0x50] ;@ Save prev PC + 2
15368  str r5,[r7,#0x5c] ;@ Save Cycles
15369
15370;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
15371  ldr r0,[r7,#0x60] ;@ Get Memory base
15372  ldrh r3,[r4] ;@ Get extension word
15373  sub r0,r4,r0 ;@ r0=PC
15374  add r4,r4,#2
15375  mov r2,r3,lsr #10
15376  tst r3,#0x0800 ;@ Is Rn Word or Long
15377  and r2,r2,#0x3c ;@ r2=Index of Rn
15378  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15379  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15380  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
15381  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
15382  add r0,r2,r0 ;@ r0=Disp+PC+Rn
15383;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
15384  str r4,[r7,#0x40] ;@ Save PC
15385  bic r0,r0,#0xff000000
15386  bl m68k_fetch32 ;@ Call fetch32(r0) handler
15387  movs r1,r0
15388
15389  and r10,r1,#0x80000000 ;@ r10=N_flag
15390  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15391
15392;@ EaCalc : Get register index into r0:
15393  and r0,r8,#0x0e00
15394;@ EaWrite: r1 into register[r0]:
15395  str r1,[r7,r0,lsr #7]
15396
15397  ldr r5,[r7,#0x5c] ;@ Load Cycles
15398  ldrh r8,[r4],#2 ;@ Fetch next opcode
15399  subs r5,r5,#18 ;@ Subtract cycles
15400  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15401  b CycloneEnd
15402
15403;@ ---------- [203c] move.l #$33333333, d0 uses Op203c ----------
15404Op203c:
15405;@ EaCalc : Get '#$33333333' into r1:
15406  ldrh r2,[r4],#2 ;@ Fetch immediate value
15407  ldrh r3,[r4],#2
15408  orr r1,r3,r2,lsl #16
15409;@ EaRead : Read '#$33333333' (address in r1) into r1:
15410  tst r1,r1
15411
15412  and r10,r1,#0x80000000 ;@ r10=N_flag
15413  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15414
15415;@ EaCalc : Get register index into r0:
15416  and r0,r8,#0x0e00
15417;@ EaWrite: r1 into register[r0]:
15418  str r1,[r7,r0,lsr #7]
15419
15420  ldrh r8,[r4],#2 ;@ Fetch next opcode
15421  subs r5,r5,#12 ;@ Subtract cycles
15422  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15423  b CycloneEnd
15424
15425;@ ---------- [2040] movea.l d0, a0 uses Op2040 ----------
15426Op2040:
15427;@ EaCalc : Get register index into r1:
15428  and r1,r8,#0x000f
15429;@ EaRead : Read register[r1] into r1:
15430  ldr r1,[r7,r1,lsl #2]
15431
15432;@ EaCalc : Get register index into r0:
15433  and r0,r8,#0x0e00
15434  orr r0,r0,#0x1000 ;@ A0-7
15435;@ EaWrite: r1 into register[r0]:
15436  str r1,[r7,r0,lsr #7]
15437
15438  ldrh r8,[r4],#2 ;@ Fetch next opcode
15439  subs r5,r5,#4 ;@ Subtract cycles
15440  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15441  b CycloneEnd
15442
15443;@ ---------- [2050] movea.l (a0), a0 uses Op2050 ----------
15444Op2050:
15445  str r4,[r7,#0x50] ;@ Save prev PC + 2
15446  str r5,[r7,#0x5c] ;@ Save Cycles
15447
15448;@ EaCalc : Get '(a0)' into r0:
15449  and r2,r8,#0x000f
15450  orr r2,r2,#0x8 ;@ A0-7
15451  ldr r0,[r7,r2,lsl #2]
15452;@ EaRead : Read '(a0)' (address in r0) into r1:
15453  str r4,[r7,#0x40] ;@ Save PC
15454  bic r0,r0,#0xff000000
15455  bl m68k_read32 ;@ Call read32(r0) handler
15456  mov r1,r0
15457
15458;@ EaCalc : Get register index into r0:
15459  and r0,r8,#0x0e00
15460  orr r0,r0,#0x1000 ;@ A0-7
15461;@ EaWrite: r1 into register[r0]:
15462  str r1,[r7,r0,lsr #7]
15463
15464  ldr r5,[r7,#0x5c] ;@ Load Cycles
15465  ldrh r8,[r4],#2 ;@ Fetch next opcode
15466  subs r5,r5,#12 ;@ Subtract cycles
15467  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15468  b CycloneEnd
15469
15470;@ ---------- [2058] movea.l (a0)+, a0 uses Op2058 ----------
15471Op2058:
15472  str r4,[r7,#0x50] ;@ Save prev PC + 2
15473  str r5,[r7,#0x5c] ;@ Save Cycles
15474
15475;@ EaCalc : Get '(a0)+' into r0:
15476  and r2,r8,#0x000f
15477  ldr r0,[r7,r2,lsl #2]
15478  add r3,r0,#4 ;@ Post-increment An
15479  str r3,[r7,r2,lsl #2]
15480;@ EaRead : Read '(a0)+' (address in r0) into r1:
15481  str r4,[r7,#0x40] ;@ Save PC
15482  bic r0,r0,#0xff000000
15483  bl m68k_read32 ;@ Call read32(r0) handler
15484  mov r1,r0
15485
15486;@ EaCalc : Get register index into r0:
15487  and r0,r8,#0x0e00
15488  orr r0,r0,#0x1000 ;@ A0-7
15489;@ EaWrite: r1 into register[r0]:
15490  str r1,[r7,r0,lsr #7]
15491
15492  ldr r5,[r7,#0x5c] ;@ Load Cycles
15493  ldrh r8,[r4],#2 ;@ Fetch next opcode
15494  subs r5,r5,#12 ;@ Subtract cycles
15495  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15496  b CycloneEnd
15497
15498;@ ---------- [2060] movea.l -(a0), a0 uses Op2060 ----------
15499Op2060:
15500  str r4,[r7,#0x50] ;@ Save prev PC + 2
15501  str r5,[r7,#0x5c] ;@ Save Cycles
15502
15503;@ EaCalc : Get '-(a0)' into r0:
15504  and r2,r8,#0x000f
15505  orr r2,r2,#0x8 ;@ A0-7
15506  ldr r0,[r7,r2,lsl #2]
15507  sub r0,r0,#4 ;@ Pre-decrement An
15508  str r0,[r7,r2,lsl #2]
15509;@ EaRead : Read '-(a0)' (address in r0) into r1:
15510  str r4,[r7,#0x40] ;@ Save PC
15511  bic r0,r0,#0xff000000
15512  bl m68k_read32 ;@ Call read32(r0) handler
15513  mov r1,r0
15514
15515;@ EaCalc : Get register index into r0:
15516  and r0,r8,#0x0e00
15517  orr r0,r0,#0x1000 ;@ A0-7
15518;@ EaWrite: r1 into register[r0]:
15519  str r1,[r7,r0,lsr #7]
15520
15521  ldr r5,[r7,#0x5c] ;@ Load Cycles
15522  ldrh r8,[r4],#2 ;@ Fetch next opcode
15523  subs r5,r5,#14 ;@ Subtract cycles
15524  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15525  b CycloneEnd
15526
15527;@ ---------- [2068] movea.l ($3333,a0), a0 uses Op2068 ----------
15528Op2068:
15529  str r4,[r7,#0x50] ;@ Save prev PC + 2
15530  str r5,[r7,#0x5c] ;@ Save Cycles
15531
15532;@ EaCalc : Get '($3333,a0)' into r0:
15533  ldrsh r0,[r4],#2 ;@ Fetch offset
15534  and r2,r8,#0x000f
15535  ldr r2,[r7,r2,lsl #2]
15536  add r0,r0,r2 ;@ Add on offset
15537;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
15538  str r4,[r7,#0x40] ;@ Save PC
15539  bic r0,r0,#0xff000000
15540  bl m68k_read32 ;@ Call read32(r0) handler
15541  mov r1,r0
15542
15543;@ EaCalc : Get register index into r0:
15544  and r0,r8,#0x0e00
15545  orr r0,r0,#0x1000 ;@ A0-7
15546;@ EaWrite: r1 into register[r0]:
15547  str r1,[r7,r0,lsr #7]
15548
15549  ldr r5,[r7,#0x5c] ;@ Load Cycles
15550  ldrh r8,[r4],#2 ;@ Fetch next opcode
15551  subs r5,r5,#16 ;@ Subtract cycles
15552  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15553  b CycloneEnd
15554
15555;@ ---------- [2070] movea.l ($33,a0,d3.w*2), a0 uses Op2070 ----------
15556Op2070:
15557  str r4,[r7,#0x50] ;@ Save prev PC + 2
15558  str r5,[r7,#0x5c] ;@ Save Cycles
15559
15560;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15561;@ Get extension word into r3:
15562  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15563  mov r2,r3,lsr #10
15564  tst r3,#0x0800 ;@ Is Rn Word or Long
15565  and r2,r2,#0x3c ;@ r2=Index of Rn
15566  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15567  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15568  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15569  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15570  and r2,r8,#0x000f
15571  orr r2,r2,#0x8 ;@ A0-7
15572  ldr r2,[r7,r2,lsl #2]
15573  add r0,r2,r3 ;@ r0=Disp+An+Rn
15574;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
15575  str r4,[r7,#0x40] ;@ Save PC
15576  bic r0,r0,#0xff000000
15577  bl m68k_read32 ;@ Call read32(r0) handler
15578  mov r1,r0
15579
15580;@ EaCalc : Get register index into r0:
15581  and r0,r8,#0x0e00
15582  orr r0,r0,#0x1000 ;@ A0-7
15583;@ EaWrite: r1 into register[r0]:
15584  str r1,[r7,r0,lsr #7]
15585
15586  ldr r5,[r7,#0x5c] ;@ Load Cycles
15587  ldrh r8,[r4],#2 ;@ Fetch next opcode
15588  subs r5,r5,#18 ;@ Subtract cycles
15589  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15590  b CycloneEnd
15591
15592;@ ---------- [2078] movea.l $3333.w, a0 uses Op2078 ----------
15593Op2078:
15594  str r4,[r7,#0x50] ;@ Save prev PC + 2
15595  str r5,[r7,#0x5c] ;@ Save Cycles
15596
15597;@ EaCalc : Get '$3333.w' into r0:
15598  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
15599;@ EaRead : Read '$3333.w' (address in r0) into r1:
15600  str r4,[r7,#0x40] ;@ Save PC
15601  bic r0,r0,#0xff000000
15602  bl m68k_read32 ;@ Call read32(r0) handler
15603  mov r1,r0
15604
15605;@ EaCalc : Get register index into r0:
15606  and r0,r8,#0x0e00
15607  orr r0,r0,#0x1000 ;@ A0-7
15608;@ EaWrite: r1 into register[r0]:
15609  str r1,[r7,r0,lsr #7]
15610
15611  ldr r5,[r7,#0x5c] ;@ Load Cycles
15612  ldrh r8,[r4],#2 ;@ Fetch next opcode
15613  subs r5,r5,#16 ;@ Subtract cycles
15614  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15615  b CycloneEnd
15616
15617;@ ---------- [2079] movea.l $33333333.l, a0 uses Op2079 ----------
15618Op2079:
15619  str r4,[r7,#0x50] ;@ Save prev PC + 2
15620  str r5,[r7,#0x5c] ;@ Save Cycles
15621
15622;@ EaCalc : Get '$33333333.l' into r0:
15623  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
15624  ldrh r0,[r4],#2
15625  orr r0,r0,r2,lsl #16
15626;@ EaRead : Read '$33333333.l' (address in r0) into r1:
15627  str r4,[r7,#0x40] ;@ Save PC
15628  bic r0,r0,#0xff000000
15629  bl m68k_read32 ;@ Call read32(r0) handler
15630  mov r1,r0
15631
15632;@ EaCalc : Get register index into r0:
15633  and r0,r8,#0x0e00
15634  orr r0,r0,#0x1000 ;@ A0-7
15635;@ EaWrite: r1 into register[r0]:
15636  str r1,[r7,r0,lsr #7]
15637
15638  ldr r5,[r7,#0x5c] ;@ Load Cycles
15639  ldrh r8,[r4],#2 ;@ Fetch next opcode
15640  subs r5,r5,#20 ;@ Subtract cycles
15641  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15642  b CycloneEnd
15643
15644;@ ---------- [207a] movea.l ($3333,pc), a0; =3335 uses Op207a ----------
15645Op207a:
15646  str r4,[r7,#0x50] ;@ Save prev PC + 2
15647  str r5,[r7,#0x5c] ;@ Save Cycles
15648
15649;@ EaCalc : Get '($3333,pc)' into r0:
15650  ldr r0,[r7,#0x60] ;@ Get Memory base
15651  sub r0,r4,r0 ;@ Real PC
15652  ldrsh r2,[r4],#2 ;@ Fetch extension
15653  add r0,r2,r0 ;@ ($nn,PC)
15654;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
15655  str r4,[r7,#0x40] ;@ Save PC
15656  bic r0,r0,#0xff000000
15657  bl m68k_fetch32 ;@ Call fetch32(r0) handler
15658  mov r1,r0
15659
15660;@ EaCalc : Get register index into r0:
15661  and r0,r8,#0x0e00
15662  orr r0,r0,#0x1000 ;@ A0-7
15663;@ EaWrite: r1 into register[r0]:
15664  str r1,[r7,r0,lsr #7]
15665
15666  ldr r5,[r7,#0x5c] ;@ Load Cycles
15667  ldrh r8,[r4],#2 ;@ Fetch next opcode
15668  subs r5,r5,#16 ;@ Subtract cycles
15669  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15670  b CycloneEnd
15671
15672;@ ---------- [207b] movea.l ($33,pc,d3.w*2), a0; =35 uses Op207b ----------
15673Op207b:
15674  str r4,[r7,#0x50] ;@ Save prev PC + 2
15675  str r5,[r7,#0x5c] ;@ Save Cycles
15676
15677;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
15678  ldr r0,[r7,#0x60] ;@ Get Memory base
15679  ldrh r3,[r4] ;@ Get extension word
15680  sub r0,r4,r0 ;@ r0=PC
15681  add r4,r4,#2
15682  mov r2,r3,lsr #10
15683  tst r3,#0x0800 ;@ Is Rn Word or Long
15684  and r2,r2,#0x3c ;@ r2=Index of Rn
15685  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15686  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15687  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
15688  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
15689  add r0,r2,r0 ;@ r0=Disp+PC+Rn
15690;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
15691  str r4,[r7,#0x40] ;@ Save PC
15692  bic r0,r0,#0xff000000
15693  bl m68k_fetch32 ;@ Call fetch32(r0) handler
15694  mov r1,r0
15695
15696;@ EaCalc : Get register index into r0:
15697  and r0,r8,#0x0e00
15698  orr r0,r0,#0x1000 ;@ A0-7
15699;@ EaWrite: r1 into register[r0]:
15700  str r1,[r7,r0,lsr #7]
15701
15702  ldr r5,[r7,#0x5c] ;@ Load Cycles
15703  ldrh r8,[r4],#2 ;@ Fetch next opcode
15704  subs r5,r5,#18 ;@ Subtract cycles
15705  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15706  b CycloneEnd
15707
15708;@ ---------- [207c] movea.l #$33333333, a0 uses Op207c ----------
15709Op207c:
15710;@ EaCalc : Get '#$33333333' into r1:
15711  ldrh r2,[r4],#2 ;@ Fetch immediate value
15712  ldrh r3,[r4],#2
15713  orr r1,r3,r2,lsl #16
15714;@ EaRead : Read '#$33333333' (address in r1) into r1:
15715
15716;@ EaCalc : Get register index into r0:
15717  and r0,r8,#0x0e00
15718  orr r0,r0,#0x1000 ;@ A0-7
15719;@ EaWrite: r1 into register[r0]:
15720  str r1,[r7,r0,lsr #7]
15721
15722  ldrh r8,[r4],#2 ;@ Fetch next opcode
15723  subs r5,r5,#12 ;@ Subtract cycles
15724  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15725  b CycloneEnd
15726
15727;@ ---------- [2080] move.l d0, (a0) uses Op2080 ----------
15728Op2080:
15729  str r4,[r7,#0x50] ;@ Save prev PC + 2
15730  str r5,[r7,#0x5c] ;@ Save Cycles
15731
15732;@ EaCalc : Get register index into r1:
15733  and r1,r8,#0x000f
15734;@ EaRead : Read register[r1] into r1:
15735  ldr r1,[r7,r1,lsl #2]
15736  tst r1,r1
15737
15738  and r10,r1,#0x80000000 ;@ r10=N_flag
15739  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15740
15741;@ EaCalc : Get '(a0)' into r0:
15742  and r2,r8,#0x0e00
15743  orr r2,r2,#0x1000 ;@ A0-7
15744  ldr r0,[r7,r2,lsr #7]
15745;@ EaWrite: Write r1 into '(a0)' (address in r0):
15746  str r4,[r7,#0x40] ;@ Save PC
15747  bic r0,r0,#0xff000000
15748  bl m68k_write32 ;@ Call write32(r0,r1) handler
15749
15750  ldr r5,[r7,#0x5c] ;@ Load Cycles
15751  ldrh r8,[r4],#2 ;@ Fetch next opcode
15752  subs r5,r5,#12 ;@ Subtract cycles
15753  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15754  b CycloneEnd
15755
15756;@ ---------- [2090] move.l (a0), (a0) uses Op2090 ----------
15757Op2090:
15758  str r4,[r7,#0x50] ;@ Save prev PC + 2
15759  str r5,[r7,#0x5c] ;@ Save Cycles
15760
15761;@ EaCalc : Get '(a0)' into r0:
15762  and r2,r8,#0x000f
15763  orr r2,r2,#0x8 ;@ A0-7
15764  ldr r0,[r7,r2,lsl #2]
15765;@ EaRead : Read '(a0)' (address in r0) into r1:
15766  str r4,[r7,#0x40] ;@ Save PC
15767  bic r0,r0,#0xff000000
15768  bl m68k_read32 ;@ Call read32(r0) handler
15769  movs r1,r0
15770
15771  and r10,r1,#0x80000000 ;@ r10=N_flag
15772  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15773
15774;@ EaCalc : Get '(a0)' into r0:
15775  and r2,r8,#0x0e00
15776  orr r2,r2,#0x1000 ;@ A0-7
15777  ldr r0,[r7,r2,lsr #7]
15778;@ EaWrite: Write r1 into '(a0)' (address in r0):
15779  bic r0,r0,#0xff000000
15780  bl m68k_write32 ;@ Call write32(r0,r1) handler
15781
15782  ldr r5,[r7,#0x5c] ;@ Load Cycles
15783  ldrh r8,[r4],#2 ;@ Fetch next opcode
15784  subs r5,r5,#20 ;@ Subtract cycles
15785  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15786  b CycloneEnd
15787
15788;@ ---------- [2098] move.l (a0)+, (a0) uses Op2098 ----------
15789Op2098:
15790  str r4,[r7,#0x50] ;@ Save prev PC + 2
15791  str r5,[r7,#0x5c] ;@ Save Cycles
15792
15793;@ EaCalc : Get '(a0)+' into r0:
15794  and r2,r8,#0x000f
15795  ldr r0,[r7,r2,lsl #2]
15796  add r3,r0,#4 ;@ Post-increment An
15797  str r3,[r7,r2,lsl #2]
15798;@ EaRead : Read '(a0)+' (address in r0) into r1:
15799  str r4,[r7,#0x40] ;@ Save PC
15800  bic r0,r0,#0xff000000
15801  bl m68k_read32 ;@ Call read32(r0) handler
15802  movs r1,r0
15803
15804  and r10,r1,#0x80000000 ;@ r10=N_flag
15805  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15806
15807;@ EaCalc : Get '(a0)' into r0:
15808  and r2,r8,#0x0e00
15809  orr r2,r2,#0x1000 ;@ A0-7
15810  ldr r0,[r7,r2,lsr #7]
15811;@ EaWrite: Write r1 into '(a0)' (address in r0):
15812  bic r0,r0,#0xff000000
15813  bl m68k_write32 ;@ Call write32(r0,r1) handler
15814
15815  ldr r5,[r7,#0x5c] ;@ Load Cycles
15816  ldrh r8,[r4],#2 ;@ Fetch next opcode
15817  subs r5,r5,#20 ;@ Subtract cycles
15818  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15819  b CycloneEnd
15820
15821;@ ---------- [20a0] move.l -(a0), (a0) uses Op20a0 ----------
15822Op20a0:
15823  str r4,[r7,#0x50] ;@ Save prev PC + 2
15824  str r5,[r7,#0x5c] ;@ Save Cycles
15825
15826;@ EaCalc : Get '-(a0)' into r0:
15827  and r2,r8,#0x000f
15828  orr r2,r2,#0x8 ;@ A0-7
15829  ldr r0,[r7,r2,lsl #2]
15830  sub r0,r0,#4 ;@ Pre-decrement An
15831  str r0,[r7,r2,lsl #2]
15832;@ EaRead : Read '-(a0)' (address in r0) into r1:
15833  str r4,[r7,#0x40] ;@ Save PC
15834  bic r0,r0,#0xff000000
15835  bl m68k_read32 ;@ Call read32(r0) handler
15836  movs r1,r0
15837
15838  and r10,r1,#0x80000000 ;@ r10=N_flag
15839  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15840
15841;@ EaCalc : Get '(a0)' into r0:
15842  and r2,r8,#0x0e00
15843  orr r2,r2,#0x1000 ;@ A0-7
15844  ldr r0,[r7,r2,lsr #7]
15845;@ EaWrite: Write r1 into '(a0)' (address in r0):
15846  bic r0,r0,#0xff000000
15847  bl m68k_write32 ;@ Call write32(r0,r1) handler
15848
15849  ldr r5,[r7,#0x5c] ;@ Load Cycles
15850  ldrh r8,[r4],#2 ;@ Fetch next opcode
15851  subs r5,r5,#22 ;@ Subtract cycles
15852  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15853  b CycloneEnd
15854
15855;@ ---------- [20a8] move.l ($3333,a0), (a0) uses Op20a8 ----------
15856Op20a8:
15857  str r4,[r7,#0x50] ;@ Save prev PC + 2
15858  str r5,[r7,#0x5c] ;@ Save Cycles
15859
15860;@ EaCalc : Get '($3333,a0)' into r0:
15861  ldrsh r0,[r4],#2 ;@ Fetch offset
15862  and r2,r8,#0x000f
15863  ldr r2,[r7,r2,lsl #2]
15864  add r0,r0,r2 ;@ Add on offset
15865;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
15866  str r4,[r7,#0x40] ;@ Save PC
15867  bic r0,r0,#0xff000000
15868  bl m68k_read32 ;@ Call read32(r0) handler
15869  movs r1,r0
15870
15871  and r10,r1,#0x80000000 ;@ r10=N_flag
15872  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15873
15874;@ EaCalc : Get '(a0)' into r0:
15875  and r2,r8,#0x0e00
15876  orr r2,r2,#0x1000 ;@ A0-7
15877  ldr r0,[r7,r2,lsr #7]
15878;@ EaWrite: Write r1 into '(a0)' (address in r0):
15879  bic r0,r0,#0xff000000
15880  bl m68k_write32 ;@ Call write32(r0,r1) handler
15881
15882  ldr r5,[r7,#0x5c] ;@ Load Cycles
15883  ldrh r8,[r4],#2 ;@ Fetch next opcode
15884  subs r5,r5,#24 ;@ Subtract cycles
15885  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15886  b CycloneEnd
15887
15888;@ ---------- [20b0] move.l ($33,a0,d3.w*2), (a0) uses Op20b0 ----------
15889Op20b0:
15890  str r4,[r7,#0x50] ;@ Save prev PC + 2
15891  str r5,[r7,#0x5c] ;@ Save Cycles
15892
15893;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15894;@ Get extension word into r3:
15895  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15896  mov r2,r3,lsr #10
15897  tst r3,#0x0800 ;@ Is Rn Word or Long
15898  and r2,r2,#0x3c ;@ r2=Index of Rn
15899  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15900  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15901  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15902  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15903  and r2,r8,#0x000f
15904  orr r2,r2,#0x8 ;@ A0-7
15905  ldr r2,[r7,r2,lsl #2]
15906  add r0,r2,r3 ;@ r0=Disp+An+Rn
15907;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
15908  str r4,[r7,#0x40] ;@ Save PC
15909  bic r0,r0,#0xff000000
15910  bl m68k_read32 ;@ Call read32(r0) handler
15911  movs r1,r0
15912
15913  and r10,r1,#0x80000000 ;@ r10=N_flag
15914  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15915
15916;@ EaCalc : Get '(a0)' into r0:
15917  and r2,r8,#0x0e00
15918  orr r2,r2,#0x1000 ;@ A0-7
15919  ldr r0,[r7,r2,lsr #7]
15920;@ EaWrite: Write r1 into '(a0)' (address in r0):
15921  bic r0,r0,#0xff000000
15922  bl m68k_write32 ;@ Call write32(r0,r1) handler
15923
15924  ldr r5,[r7,#0x5c] ;@ Load Cycles
15925  ldrh r8,[r4],#2 ;@ Fetch next opcode
15926  subs r5,r5,#26 ;@ Subtract cycles
15927  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15928  b CycloneEnd
15929
15930;@ ---------- [20b8] move.l $3333.w, (a0) uses Op20b8 ----------
15931Op20b8:
15932  str r4,[r7,#0x50] ;@ Save prev PC + 2
15933  str r5,[r7,#0x5c] ;@ Save Cycles
15934
15935;@ EaCalc : Get '$3333.w' into r0:
15936  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
15937;@ EaRead : Read '$3333.w' (address in r0) into r1:
15938  str r4,[r7,#0x40] ;@ Save PC
15939  bic r0,r0,#0xff000000
15940  bl m68k_read32 ;@ Call read32(r0) handler
15941  movs r1,r0
15942
15943  and r10,r1,#0x80000000 ;@ r10=N_flag
15944  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15945
15946;@ EaCalc : Get '(a0)' into r0:
15947  and r2,r8,#0x0e00
15948  orr r2,r2,#0x1000 ;@ A0-7
15949  ldr r0,[r7,r2,lsr #7]
15950;@ EaWrite: Write r1 into '(a0)' (address in r0):
15951  bic r0,r0,#0xff000000
15952  bl m68k_write32 ;@ Call write32(r0,r1) handler
15953
15954  ldr r5,[r7,#0x5c] ;@ Load Cycles
15955  ldrh r8,[r4],#2 ;@ Fetch next opcode
15956  subs r5,r5,#24 ;@ Subtract cycles
15957  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15958  b CycloneEnd
15959
15960;@ ---------- [20b9] move.l $33333333.l, (a0) uses Op20b9 ----------
15961Op20b9:
15962  str r4,[r7,#0x50] ;@ Save prev PC + 2
15963  str r5,[r7,#0x5c] ;@ Save Cycles
15964
15965;@ EaCalc : Get '$33333333.l' into r0:
15966  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
15967  ldrh r0,[r4],#2
15968  orr r0,r0,r2,lsl #16
15969;@ EaRead : Read '$33333333.l' (address in r0) into r1:
15970  str r4,[r7,#0x40] ;@ Save PC
15971  bic r0,r0,#0xff000000
15972  bl m68k_read32 ;@ Call read32(r0) handler
15973  movs r1,r0
15974
15975  and r10,r1,#0x80000000 ;@ r10=N_flag
15976  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15977
15978;@ EaCalc : Get '(a0)' into r0:
15979  and r2,r8,#0x0e00
15980  orr r2,r2,#0x1000 ;@ A0-7
15981  ldr r0,[r7,r2,lsr #7]
15982;@ EaWrite: Write r1 into '(a0)' (address in r0):
15983  bic r0,r0,#0xff000000
15984  bl m68k_write32 ;@ Call write32(r0,r1) handler
15985
15986  ldr r5,[r7,#0x5c] ;@ Load Cycles
15987  ldrh r8,[r4],#2 ;@ Fetch next opcode
15988  subs r5,r5,#28 ;@ Subtract cycles
15989  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15990  b CycloneEnd
15991
15992;@ ---------- [20ba] move.l ($3333,pc), (a0); =3335 uses Op20ba ----------
15993Op20ba:
15994  str r4,[r7,#0x50] ;@ Save prev PC + 2
15995  str r5,[r7,#0x5c] ;@ Save Cycles
15996
15997;@ EaCalc : Get '($3333,pc)' into r0:
15998  ldr r0,[r7,#0x60] ;@ Get Memory base
15999  sub r0,r4,r0 ;@ Real PC
16000  ldrsh r2,[r4],#2 ;@ Fetch extension
16001  add r0,r2,r0 ;@ ($nn,PC)
16002;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
16003  str r4,[r7,#0x40] ;@ Save PC
16004  bic r0,r0,#0xff000000
16005  bl m68k_fetch32 ;@ Call fetch32(r0) handler
16006  movs r1,r0
16007
16008  and r10,r1,#0x80000000 ;@ r10=N_flag
16009  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16010
16011;@ EaCalc : Get '(a0)' into r0:
16012  and r2,r8,#0x0e00
16013  orr r2,r2,#0x1000 ;@ A0-7
16014  ldr r0,[r7,r2,lsr #7]
16015;@ EaWrite: Write r1 into '(a0)' (address in r0):
16016  bic r0,r0,#0xff000000
16017  bl m68k_write32 ;@ Call write32(r0,r1) handler
16018
16019  ldr r5,[r7,#0x5c] ;@ Load Cycles
16020  ldrh r8,[r4],#2 ;@ Fetch next opcode
16021  subs r5,r5,#24 ;@ Subtract cycles
16022  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16023  b CycloneEnd
16024
16025;@ ---------- [20bb] move.l ($33,pc,d3.w*2), (a0); =35 uses Op20bb ----------
16026Op20bb:
16027  str r4,[r7,#0x50] ;@ Save prev PC + 2
16028  str r5,[r7,#0x5c] ;@ Save Cycles
16029
16030;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
16031  ldr r0,[r7,#0x60] ;@ Get Memory base
16032  ldrh r3,[r4] ;@ Get extension word
16033  sub r0,r4,r0 ;@ r0=PC
16034  add r4,r4,#2
16035  mov r2,r3,lsr #10
16036  tst r3,#0x0800 ;@ Is Rn Word or Long
16037  and r2,r2,#0x3c ;@ r2=Index of Rn
16038  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
16039  ldrne   r2,[r7,r2] ;@ r2=Rn.l
16040  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
16041  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
16042  add r0,r2,r0 ;@ r0=Disp+PC+Rn
16043;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
16044  str r4,[r7,#0x40] ;@ Save PC
16045  bic r0,r0,#0xff000000
16046  bl m68k_fetch32 ;@ Call fetch32(r0) handler
16047  movs r1,r0
16048
16049  and r10,r1,#0x80000000 ;@ r10=N_flag
16050  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16051
16052;@ EaCalc : Get '(a0)' into r0:
16053  and r2,r8,#0x0e00
16054  orr r2,r2,#0x1000 ;@ A0-7
16055  ldr r0,[r7,r2,lsr #7]
16056;@ EaWrite: Write r1 into '(a0)' (address in r0):
16057  bic r0,r0,#0xff000000
16058  bl m68k_write32 ;@ Call write32(r0,r1) handler
16059
16060  ldr r5,[r7,#0x5c] ;@ Load Cycles
16061  ldrh r8,[r4],#2 ;@ Fetch next opcode
16062  subs r5,r5,#26 ;@ Subtract cycles
16063  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16064  b CycloneEnd
16065
16066;@ ---------- [20bc] move.l #$33333333, (a0) uses Op20bc ----------
16067Op20bc:
16068  str r4,[r7,#0x50] ;@ Save prev PC + 2
16069  str r5,[r7,#0x5c] ;@ Save Cycles
16070
16071;@ EaCalc : Get '#$33333333' into r1:
16072  ldrh r2,[r4],#2 ;@ Fetch immediate value
16073  ldrh r3,[r4],#2
16074  orr r1,r3,r2,lsl #16
16075;@ EaRead : Read '#$33333333' (address in r1) into r1:
16076  tst r1,r1
16077
16078  and r10,r1,#0x80000000 ;@ r10=N_flag
16079  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16080
16081;@ EaCalc : Get '(a0)' into r0:
16082  and r2,r8,#0x0e00
16083  orr r2,r2,#0x1000 ;@ A0-7
16084  ldr r0,[r7,r2,lsr #7]
16085;@ EaWrite: Write r1 into '(a0)' (address in r0):
16086  str r4,[r7,#0x40] ;@ Save PC
16087  bic r0,r0,#0xff000000
16088  bl m68k_write32 ;@ Call write32(r0,r1) handler
16089
16090  ldr r5,[r7,#0x5c] ;@ Load Cycles
16091  ldrh r8,[r4],#2 ;@ Fetch next opcode
16092  subs r5,r5,#20 ;@ Subtract cycles
16093  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16094  b CycloneEnd
16095
16096;@ ---------- [20d0] move.l (a0), (a0)+ uses Op20d0 ----------
16097Op20d0:
16098  str r4,[r7,#0x50] ;@ Save prev PC + 2
16099  str r5,[r7,#0x5c] ;@ Save Cycles
16100
16101;@ EaCalc : Get '(a0)' into r0:
16102  and r2,r8,#0x000f
16103  orr r2,r2,#0x8 ;@ A0-7
16104  ldr r0,[r7,r2,lsl #2]
16105;@ EaRead : Read '(a0)' (address in r0) into r1:
16106  str r4,[r7,#0x40] ;@ Save PC
16107  bic r0,r0,#0xff000000
16108  bl m68k_read32 ;@ Call read32(r0) handler
16109  movs r1,r0
16110
16111  and r10,r1,#0x80000000 ;@ r10=N_flag
16112  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16113
16114;@ EaCalc : Get '(a0)+' into r0:
16115  and r2,r8,#0x0e00
16116  orr r2,r2,#0x1000 ;@ A0-7
16117  ldr r0,[r7,r2,lsr #7]
16118  add r3,r0,#4 ;@ Post-increment An
16119  str r3,[r7,r2,lsr #7]
16120;@ EaWrite: Write r1 into '(a0)+' (address in r0):
16121  bic r0,r0,#0xff000000
16122  bl m68k_write32 ;@ Call write32(r0,r1) handler
16123
16124  ldr r5,[r7,#0x5c] ;@ Load Cycles
16125  ldrh r8,[r4],#2 ;@ Fetch next opcode
16126  subs r5,r5,#20 ;@ Subtract cycles
16127  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16128  b CycloneEnd
16129
16130;@ ---------- [20d8] move.l (a0)+, (a0)+ uses Op20d8 ----------
16131Op20d8:
16132  str r4,[r7,#0x50] ;@ Save prev PC + 2
16133  str r5,[r7,#0x5c] ;@ Save Cycles
16134
16135;@ EaCalc : Get '(a0)+' into r0:
16136  and r2,r8,#0x000f
16137  ldr r0,[r7,r2,lsl #2]
16138  add r3,r0,#4 ;@ Post-increment An
16139  str r3,[r7,r2,lsl #2]
16140;@ EaRead : Read '(a0)+' (address in r0) into r1:
16141  str r4,[r7,#0x40] ;@ Save PC
16142  bic r0,r0,#0xff000000
16143  bl m68k_read32 ;@ Call read32(r0) handler
16144  movs r1,r0
16145
16146  and r10,r1,#0x80000000 ;@ r10=N_flag
16147  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16148
16149;@ EaCalc : Get '(a0)+' into r0:
16150  and r2,r8,#0x0e00
16151  orr r2,r2,#0x1000 ;@ A0-7
16152  ldr r0,[r7,r2,lsr #7]
16153  add r3,r0,#4 ;@ Post-increment An
16154  str r3,[r7,r2,lsr #7]
16155;@ EaWrite: Write r1 into '(a0)+' (address in r0):
16156  bic r0,r0,#0xff000000
16157  bl m68k_write32 ;@ Call write32(r0,r1) handler
16158
16159  ldr r5,[r7,#0x5c] ;@ Load Cycles
16160  ldrh r8,[r4],#2 ;@ Fetch next opcode
16161  subs r5,r5,#20 ;@ Subtract cycles
16162  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16163  b CycloneEnd
16164
16165;@ ---------- [20e0] move.l -(a0), (a0)+ uses Op20e0 ----------
16166Op20e0:
16167  str r4,[r7,#0x50] ;@ Save prev PC + 2
16168  str r5,[r7,#0x5c] ;@ Save Cycles
16169
16170;@ EaCalc : Get '-(a0)' into r0:
16171  and r2,r8,#0x000f
16172  orr r2,r2,#0x8 ;@ A0-7
16173  ldr r0,[r7,r2,lsl #2]
16174  sub r0,r0,#4 ;@ Pre-decrement An
16175  str r0,[r7,r2,lsl #2]
16176;@ EaRead : Read '-(a0)' (address in r0) into r1:
16177  str r4,[r7,#0x40] ;@ Save PC
16178  bic r0,r0,#0xff000000
16179  bl m68k_read32 ;@ Call read32(r0) handler
16180  movs r1,r0
16181
16182  and r10,r1,#0x80000000 ;@ r10=N_flag
16183  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16184
16185;@ EaCalc : Get '(a0)+' into r0:
16186  and r2,r8,#0x0e00
16187  orr r2,r2,#0x1000 ;@ A0-7
16188  ldr r0,[r7,r2,lsr #7]
16189  add r3,r0,#4 ;@ Post-increment An
16190  str r3,[r7,r2,lsr #7]
16191;@ EaWrite: Write r1 into '(a0)+' (address in r0):
16192  bic r0,r0,#0xff000000
16193  bl m68k_write32 ;@ Call write32(r0,r1) handler
16194
16195  ldr r5,[r7,#0x5c] ;@ Load Cycles
16196  ldrh r8,[r4],#2 ;@ Fetch next opcode
16197  subs r5,r5,#22 ;@ Subtract cycles
16198  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16199  b CycloneEnd
16200
16201;@ ---------- [20e8] move.l ($3333,a0), (a0)+ uses Op20e8 ----------
16202Op20e8:
16203  str r4,[r7,#0x50] ;@ Save prev PC + 2
16204  str r5,[r7,#0x5c] ;@ Save Cycles
16205
16206;@ EaCalc : Get '($3333,a0)' into r0:
16207  ldrsh r0,[r4],#2 ;@ Fetch offset
16208  and r2,r8,#0x000f
16209  ldr r2,[r7,r2,lsl #2]
16210  add r0,r0,r2 ;@ Add on offset
16211;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
16212  str r4,[r7,#0x40] ;@ Save PC
16213  bic r0,r0,#0xff000000
16214  bl m68k_read32 ;@ Call read32(r0) handler
16215  movs r1,r0
16216
16217  and r10,r1,#0x80000000 ;@ r10=N_flag
16218  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16219
16220;@ EaCalc : Get '(a0)+' into r0:
16221  and r2,r8,#0x0e00
16222  orr r2,r2,#0x1000 ;@ A0-7
16223  ldr r0,[r7,r2,lsr #7]
16224  add r3,r0,#4 ;@ Post-increment An
16225  str r3,[r7,r2,lsr #7]
16226;@ EaWrite: Write r1 into '(a0)+' (address in r0):
16227  bic r0,r0,#0xff000000
16228  bl m68k_write32 ;@ Call write32(r0,r1) handler
16229
16230  ldr r5,[r7,#0x5c] ;@ Load Cycles
16231  ldrh r8,[r4],#2 ;@ Fetch next opcode
16232  subs r5,r5,#24 ;@ Subtract cycles
16233  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16234  b CycloneEnd
16235
16236;@ ---------- [20f0] move.l ($33,a0,d3.w*2), (a0)+ uses Op20f0 ----------
16237Op20f0:
16238  str r4,[r7,#0x50] ;@ Save prev PC + 2
16239  str r5,[r7,#0x5c] ;@ Save Cycles
16240
16241;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
16242;@ Get extension word into r3:
16243  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
16244  mov r2,r3,lsr #10
16245  tst r3,#0x0800 ;@ Is Rn Word or Long
16246  and r2,r2,#0x3c ;@ r2=Index of Rn
16247  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
16248  ldrne   r2,[r7,r2] ;@ r2=Rn.l
16249  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
16250  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
16251  and r2,r8,#0x000f
16252  orr r2,r2,#0x8 ;@ A0-7
16253  ldr r2,[r7,r2,lsl #2]
16254  add r0,r2,r3 ;@ r0=Disp+An+Rn
16255;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
16256  str r4,[r7,#0x40] ;@ Save PC
16257  bic r0,r0,#0xff000000
16258  bl m68k_read32 ;@ Call read32(r0) handler
16259  movs r1,r0
16260
16261  and r10,r1,#0x80000000 ;@ r10=N_flag
16262  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16263
16264;@ EaCalc : Get '(a0)+' into r0:
16265  and r2,r8,#0x0e00
16266  orr r2,r2,#0x1000 ;@ A0-7
16267  ldr r0,[r7,r2,lsr #7]
16268  add r3,r0,#4 ;@ Post-increment An
16269  str r3,[r7,r2,lsr #7]
16270;@ EaWrite: Write r1 into '(a0)+' (address in r0):
16271  bic r0,r0,#0xff000000
16272  bl m68k_write32 ;@ Call write32(r0,r1) handler
16273
16274  ldr r5,[r7,#0x5c] ;@ Load Cycles
16275  ldrh r8,[r4],#2 ;@ Fetch next opcode
16276  subs r5,r5,#26 ;@ Subtract cycles
16277  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16278  b CycloneEnd
16279
16280;@ ---------- [20f8] move.l $3333.w, (a0)+ uses Op20f8 ----------
16281Op20f8:
16282  str r4,[r7,#0x50] ;@ Save prev PC + 2
16283  str r5,[r7,#0x5c] ;@ Save Cycles
16284
16285;@ EaCalc : Get '$3333.w' into r0:
16286  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16287;@ EaRead : Read '$3333.w' (address in r0) into r1:
16288  str r4,[r7,#0x40] ;@ Save PC
16289  bic r0,r0,#0xff000000
16290  bl m68k_read32 ;@ Call read32(r0) handler
16291  movs r1,r0
16292
16293  and r10,r1,#0x80000000 ;@ r10=N_flag
16294  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16295
16296;@ EaCalc : Get '(a0)+' into r0:
16297  and r2,r8,#0x0e00
16298  orr r2,r2,#0x1000 ;@ A0-7
16299  ldr r0,[r7,r2,lsr #7]
16300  add r3,r0,#4 ;@ Post-increment An
16301  str r3,[r7,r2,lsr #7]
16302;@ EaWrite: Write r1 into '(a0)+' (address in r0):
16303  bic r0,r0,#0xff000000
16304  bl m68k_write32 ;@ Call write32(r0,r1) handler
16305
16306  ldr r5,[r7,#0x5c] ;@ Load Cycles
16307  ldrh r8,[r4],#2 ;@ Fetch next opcode
16308  subs r5,r5,#24 ;@ Subtract cycles
16309  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16310  b CycloneEnd
16311
16312;@ ---------- [20f9] move.l $33333333.l, (a0)+ uses Op20f9 ----------
16313Op20f9:
16314  str r4,[r7,#0x50] ;@ Save prev PC + 2
16315  str r5,[r7,#0x5c] ;@ Save Cycles
16316
16317;@ EaCalc : Get '$33333333.l' into r0:
16318  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16319  ldrh r0,[r4],#2
16320  orr r0,r0,r2,lsl #16
16321;@ EaRead : Read '$33333333.l' (address in r0) into r1:
16322  str r4,[r7,#0x40] ;@ Save PC
16323  bic r0,r0,#0xff000000
16324  bl m68k_read32 ;@ Call read32(r0) handler
16325  movs r1,r0
16326
16327  and r10,r1,#0x80000000 ;@ r10=N_flag
16328  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16329
16330;@ EaCalc : Get '(a0)+' into r0:
16331  and r2,r8,#0x0e00
16332  orr r2,r2,#0x1000 ;@ A0-7
16333  ldr r0,[r7,r2,lsr #7]
16334  add r3,r0,#4 ;@ Post-increment An
16335  str r3,[r7,r2,lsr #7]
16336;@ EaWrite: Write r1 into '(a0)+' (address in r0):
16337  bic r0,r0,#0xff000000
16338  bl m68k_write32 ;@ Call write32(r0,r1) handler
16339
16340  ldr r5,[r7,#0x5c] ;@ Load Cycles
16341  ldrh r8,[r4],#2 ;@ Fetch next opcode
16342  subs r5,r5,#28 ;@ Subtract cycles
16343  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16344  b CycloneEnd
16345
16346;@ ---------- [20fa] move.l ($3333,pc), (a0)+; =3335 uses Op20fa ----------
16347Op20fa:
16348  str r4,[r7,#0x50] ;@ Save prev PC + 2
16349  str r5,[r7,#0x5c] ;@ Save Cycles
16350
16351;@ EaCalc : Get '($3333,pc)' into r0:
16352  ldr r0,[r7,#0x60] ;@ Get Memory base
16353  sub r0,r4,r0 ;@ Real PC
16354  ldrsh r2,[r4],#2 ;@ Fetch extension
16355  add r0,r2,r0 ;@ ($nn,PC)
16356;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
16357  str r4,[r7,#0x40] ;@ Save PC
16358  bic r0,r0,#0xff000000
16359  bl m68k_fetch32 ;@ Call fetch32(r0) handler
16360  movs r1,r0
16361
16362  and r10,r1,#0x80000000 ;@ r10=N_flag
16363  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16364
16365;@ EaCalc : Get '(a0)+' into r0:
16366  and r2,r8,#0x0e00
16367  orr r2,r2,#0x1000 ;@ A0-7
16368  ldr r0,[r7,r2,lsr #7]
16369  add r3,r0,#4 ;@ Post-increment An
16370  str r3,[r7,r2,lsr #7]
16371;@ EaWrite: Write r1 into '(a0)+' (address in r0):
16372  bic r0,r0,#0xff000000
16373  bl m68k_write32 ;@ Call write32(r0,r1) handler
16374
16375  ldr r5,[r7,#0x5c] ;@ Load Cycles
16376  ldrh r8,[r4],#2 ;@ Fetch next opcode
16377  subs r5,r5,#24 ;@ Subtract cycles
16378  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16379  b CycloneEnd
16380
16381;@ ---------- [20fb] move.l ($33,pc,d3.w*2), (a0)+; =35 uses Op20fb ----------
16382Op20fb:
16383  str r4,[r7,#0x50] ;@ Save prev PC + 2
16384  str r5,[r7,#0x5c] ;@ Save Cycles
16385
16386;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
16387  ldr r0,[r7,#0x60] ;@ Get Memory base
16388  ldrh r3,[r4] ;@ Get extension word
16389  sub r0,r4,r0 ;@ r0=PC
16390  add r4,r4,#2
16391  mov r2,r3,lsr #10
16392  tst r3,#0x0800 ;@ Is Rn Word or Long
16393  and r2,r2,#0x3c ;@ r2=Index of Rn
16394  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
16395  ldrne   r2,[r7,r2] ;@ r2=Rn.l
16396  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
16397  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
16398  add r0,r2,r0 ;@ r0=Disp+PC+Rn
16399;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
16400  str r4,[r7,#0x40] ;@ Save PC
16401  bic r0,r0,#0xff000000
16402  bl m68k_fetch32 ;@ Call fetch32(r0) handler
16403  movs r1,r0
16404
16405  and r10,r1,#0x80000000 ;@ r10=N_flag
16406  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16407
16408;@ EaCalc : Get '(a0)+' into r0:
16409  and r2,r8,#0x0e00
16410  orr r2,r2,#0x1000 ;@ A0-7
16411  ldr r0,[r7,r2,lsr #7]
16412  add r3,r0,#4 ;@ Post-increment An
16413  str r3,[r7,r2,lsr #7]
16414;@ EaWrite: Write r1 into '(a0)+' (address in r0):
16415  bic r0,r0,#0xff000000
16416  bl m68k_write32 ;@ Call write32(r0,r1) handler
16417
16418  ldr r5,[r7,#0x5c] ;@ Load Cycles
16419  ldrh r8,[r4],#2 ;@ Fetch next opcode
16420  subs r5,r5,#26 ;@ Subtract cycles
16421  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16422  b CycloneEnd
16423
16424;@ ---------- [20fc] move.l #$33333333, (a0)+ uses Op20fc ----------
16425Op20fc:
16426  str r4,[r7,#0x50] ;@ Save prev PC + 2
16427  str r5,[r7,#0x5c] ;@ Save Cycles
16428
16429;@ EaCalc : Get '#$33333333' into r1:
16430  ldrh r2,[r4],#2 ;@ Fetch immediate value
16431  ldrh r3,[r4],#2
16432  orr r1,r3,r2,lsl #16
16433;@ EaRead : Read '#$33333333' (address in r1) into r1:
16434  tst r1,r1
16435
16436  and r10,r1,#0x80000000 ;@ r10=N_flag
16437  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16438
16439;@ EaCalc : Get '(a0)+' into r0:
16440  and r2,r8,#0x0e00
16441  orr r2,r2,#0x1000 ;@ A0-7
16442  ldr r0,[r7,r2,lsr #7]
16443  add r3,r0,#4 ;@ Post-increment An
16444  str r3,[r7,r2,lsr #7]
16445;@ EaWrite: Write r1 into '(a0)+' (address in r0):
16446  str r4,[r7,#0x40] ;@ Save PC
16447  bic r0,r0,#0xff000000
16448  bl m68k_write32 ;@ Call write32(r0,r1) handler
16449
16450  ldr r5,[r7,#0x5c] ;@ Load Cycles
16451  ldrh r8,[r4],#2 ;@ Fetch next opcode
16452  subs r5,r5,#20 ;@ Subtract cycles
16453  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16454  b CycloneEnd
16455
16456;@ ---------- [2100] move.l d0, -(a0) uses Op2100 ----------
16457Op2100:
16458  str r4,[r7,#0x50] ;@ Save prev PC + 2
16459  str r5,[r7,#0x5c] ;@ Save Cycles
16460
16461;@ EaCalc : Get register index into r1:
16462  and r1,r8,#0x000f
16463;@ EaRead : Read register[r1] into r1:
16464  ldr r1,[r7,r1,lsl #2]
16465  tst r1,r1
16466
16467  and r10,r1,#0x80000000 ;@ r10=N_flag
16468  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16469
16470;@ EaCalc : Get '-(a0)' into r8:
16471  and r2,r8,#0x0e00
16472  orr r2,r2,#0x1000 ;@ A0-7
16473  ldr r8,[r7,r2,lsr #7]
16474  sub r8,r8,#4 ;@ Pre-decrement An
16475  str r8,[r7,r2,lsr #7]
16476  mov r11,r1
16477  add r0,r8,#2
16478;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16479  uxth r1,r1 ;@ zero extend
16480  str r4,[r7,#0x40] ;@ Save PC
16481  bic r0,r0,#0xff000000
16482  bl m68k_write16 ;@ Call write16(r0,r1) handler
16483
16484;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16485  mov r1,r11,lsr #16
16486  bic r0,r8,#0xff000000
16487  bl m68k_write16 ;@ Call write16(r0,r1) handler
16488
16489  ldr r5,[r7,#0x5c] ;@ Load Cycles
16490  ldrh r8,[r4],#2 ;@ Fetch next opcode
16491  subs r5,r5,#12 ;@ Subtract cycles
16492  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16493  b CycloneEnd
16494
16495;@ ---------- [2110] move.l (a0), -(a0) uses Op2110 ----------
16496Op2110:
16497  str r4,[r7,#0x50] ;@ Save prev PC + 2
16498  str r5,[r7,#0x5c] ;@ Save Cycles
16499
16500;@ EaCalc : Get '(a0)' into r0:
16501  and r2,r8,#0x000f
16502  orr r2,r2,#0x8 ;@ A0-7
16503  ldr r0,[r7,r2,lsl #2]
16504;@ EaRead : Read '(a0)' (address in r0) into r1:
16505  str r4,[r7,#0x40] ;@ Save PC
16506  bic r0,r0,#0xff000000
16507  bl m68k_read32 ;@ Call read32(r0) handler
16508  movs r1,r0
16509
16510  and r10,r1,#0x80000000 ;@ r10=N_flag
16511  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16512
16513;@ EaCalc : Get '-(a0)' into r8:
16514  and r2,r8,#0x0e00
16515  orr r2,r2,#0x1000 ;@ A0-7
16516  ldr r8,[r7,r2,lsr #7]
16517  sub r8,r8,#4 ;@ Pre-decrement An
16518  str r8,[r7,r2,lsr #7]
16519  mov r11,r1
16520  add r0,r8,#2
16521;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16522  uxth r1,r1 ;@ zero extend
16523  bic r0,r0,#0xff000000
16524  bl m68k_write16 ;@ Call write16(r0,r1) handler
16525
16526;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16527  mov r1,r11,lsr #16
16528  bic r0,r8,#0xff000000
16529  bl m68k_write16 ;@ Call write16(r0,r1) handler
16530
16531  ldr r5,[r7,#0x5c] ;@ Load Cycles
16532  ldrh r8,[r4],#2 ;@ Fetch next opcode
16533  subs r5,r5,#20 ;@ Subtract cycles
16534  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16535  b CycloneEnd
16536
16537;@ ---------- [2118] move.l (a0)+, -(a0) uses Op2118 ----------
16538Op2118:
16539  str r4,[r7,#0x50] ;@ Save prev PC + 2
16540  str r5,[r7,#0x5c] ;@ Save Cycles
16541
16542;@ EaCalc : Get '(a0)+' into r0:
16543  and r2,r8,#0x000f
16544  ldr r0,[r7,r2,lsl #2]
16545  add r3,r0,#4 ;@ Post-increment An
16546  str r3,[r7,r2,lsl #2]
16547;@ EaRead : Read '(a0)+' (address in r0) into r1:
16548  str r4,[r7,#0x40] ;@ Save PC
16549  bic r0,r0,#0xff000000
16550  bl m68k_read32 ;@ Call read32(r0) handler
16551  movs r1,r0
16552
16553  and r10,r1,#0x80000000 ;@ r10=N_flag
16554  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16555
16556;@ EaCalc : Get '-(a0)' into r8:
16557  and r2,r8,#0x0e00
16558  orr r2,r2,#0x1000 ;@ A0-7
16559  ldr r8,[r7,r2,lsr #7]
16560  sub r8,r8,#4 ;@ Pre-decrement An
16561  str r8,[r7,r2,lsr #7]
16562  mov r11,r1
16563  add r0,r8,#2
16564;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16565  uxth r1,r1 ;@ zero extend
16566  bic r0,r0,#0xff000000
16567  bl m68k_write16 ;@ Call write16(r0,r1) handler
16568
16569;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16570  mov r1,r11,lsr #16
16571  bic r0,r8,#0xff000000
16572  bl m68k_write16 ;@ Call write16(r0,r1) handler
16573
16574  ldr r5,[r7,#0x5c] ;@ Load Cycles
16575  ldrh r8,[r4],#2 ;@ Fetch next opcode
16576  subs r5,r5,#20 ;@ Subtract cycles
16577  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16578  b CycloneEnd
16579
16580;@ ---------- [2120] move.l -(a0), -(a0) uses Op2120 ----------
16581Op2120:
16582  str r4,[r7,#0x50] ;@ Save prev PC + 2
16583  str r5,[r7,#0x5c] ;@ Save Cycles
16584
16585;@ EaCalc : Get '-(a0)' into r0:
16586  and r2,r8,#0x000f
16587  orr r2,r2,#0x8 ;@ A0-7
16588  ldr r0,[r7,r2,lsl #2]
16589  sub r0,r0,#4 ;@ Pre-decrement An
16590  str r0,[r7,r2,lsl #2]
16591;@ EaRead : Read '-(a0)' (address in r0) into r1:
16592  str r4,[r7,#0x40] ;@ Save PC
16593  bic r0,r0,#0xff000000
16594  bl m68k_read32 ;@ Call read32(r0) handler
16595  movs r1,r0
16596
16597  and r10,r1,#0x80000000 ;@ r10=N_flag
16598  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16599
16600;@ EaCalc : Get '-(a0)' into r8:
16601  and r2,r8,#0x0e00
16602  orr r2,r2,#0x1000 ;@ A0-7
16603  ldr r8,[r7,r2,lsr #7]
16604  sub r8,r8,#4 ;@ Pre-decrement An
16605  str r8,[r7,r2,lsr #7]
16606  mov r11,r1
16607  add r0,r8,#2
16608;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16609  uxth r1,r1 ;@ zero extend
16610  bic r0,r0,#0xff000000
16611  bl m68k_write16 ;@ Call write16(r0,r1) handler
16612
16613;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16614  mov r1,r11,lsr #16
16615  bic r0,r8,#0xff000000
16616  bl m68k_write16 ;@ Call write16(r0,r1) handler
16617
16618  ldr r5,[r7,#0x5c] ;@ Load Cycles
16619  ldrh r8,[r4],#2 ;@ Fetch next opcode
16620  subs r5,r5,#22 ;@ Subtract cycles
16621  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16622  b CycloneEnd
16623
16624;@ ---------- [2128] move.l ($3333,a0), -(a0) uses Op2128 ----------
16625Op2128:
16626  str r4,[r7,#0x50] ;@ Save prev PC + 2
16627  str r5,[r7,#0x5c] ;@ Save Cycles
16628
16629;@ EaCalc : Get '($3333,a0)' into r0:
16630  ldrsh r0,[r4],#2 ;@ Fetch offset
16631  and r2,r8,#0x000f
16632  ldr r2,[r7,r2,lsl #2]
16633  add r0,r0,r2 ;@ Add on offset
16634;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
16635  str r4,[r7,#0x40] ;@ Save PC
16636  bic r0,r0,#0xff000000
16637  bl m68k_read32 ;@ Call read32(r0) handler
16638  movs r1,r0
16639
16640  and r10,r1,#0x80000000 ;@ r10=N_flag
16641  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16642
16643;@ EaCalc : Get '-(a0)' into r8:
16644  and r2,r8,#0x0e00
16645  orr r2,r2,#0x1000 ;@ A0-7
16646  ldr r8,[r7,r2,lsr #7]
16647  sub r8,r8,#4 ;@ Pre-decrement An
16648  str r8,[r7,r2,lsr #7]
16649  mov r11,r1
16650  add r0,r8,#2
16651;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16652  uxth r1,r1 ;@ zero extend
16653  bic r0,r0,#0xff000000
16654  bl m68k_write16 ;@ Call write16(r0,r1) handler
16655
16656;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16657  mov r1,r11,lsr #16
16658  bic r0,r8,#0xff000000
16659  bl m68k_write16 ;@ Call write16(r0,r1) handler
16660
16661  ldr r5,[r7,#0x5c] ;@ Load Cycles
16662  ldrh r8,[r4],#2 ;@ Fetch next opcode
16663  subs r5,r5,#24 ;@ Subtract cycles
16664  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16665  b CycloneEnd
16666
16667;@ ---------- [2130] move.l ($33,a0,d3.w*2), -(a0) uses Op2130 ----------
16668Op2130:
16669  str r4,[r7,#0x50] ;@ Save prev PC + 2
16670  str r5,[r7,#0x5c] ;@ Save Cycles
16671
16672;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
16673;@ Get extension word into r3:
16674  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
16675  mov r2,r3,lsr #10
16676  tst r3,#0x0800 ;@ Is Rn Word or Long
16677  and r2,r2,#0x3c ;@ r2=Index of Rn
16678  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
16679  ldrne   r2,[r7,r2] ;@ r2=Rn.l
16680  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
16681  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
16682  and r2,r8,#0x000f
16683  orr r2,r2,#0x8 ;@ A0-7
16684  ldr r2,[r7,r2,lsl #2]
16685  add r0,r2,r3 ;@ r0=Disp+An+Rn
16686;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
16687  str r4,[r7,#0x40] ;@ Save PC
16688  bic r0,r0,#0xff000000
16689  bl m68k_read32 ;@ Call read32(r0) handler
16690  movs r1,r0
16691
16692  and r10,r1,#0x80000000 ;@ r10=N_flag
16693  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16694
16695;@ EaCalc : Get '-(a0)' into r8:
16696  and r2,r8,#0x0e00
16697  orr r2,r2,#0x1000 ;@ A0-7
16698  ldr r8,[r7,r2,lsr #7]
16699  sub r8,r8,#4 ;@ Pre-decrement An
16700  str r8,[r7,r2,lsr #7]
16701  mov r11,r1
16702  add r0,r8,#2
16703;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16704  uxth r1,r1 ;@ zero extend
16705  bic r0,r0,#0xff000000
16706  bl m68k_write16 ;@ Call write16(r0,r1) handler
16707
16708;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16709  mov r1,r11,lsr #16
16710  bic r0,r8,#0xff000000
16711  bl m68k_write16 ;@ Call write16(r0,r1) handler
16712
16713  ldr r5,[r7,#0x5c] ;@ Load Cycles
16714  ldrh r8,[r4],#2 ;@ Fetch next opcode
16715  subs r5,r5,#26 ;@ Subtract cycles
16716  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16717  b CycloneEnd
16718
16719;@ ---------- [2138] move.l $3333.w, -(a0) uses Op2138 ----------
16720Op2138:
16721  str r4,[r7,#0x50] ;@ Save prev PC + 2
16722  str r5,[r7,#0x5c] ;@ Save Cycles
16723
16724;@ EaCalc : Get '$3333.w' into r0:
16725  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16726;@ EaRead : Read '$3333.w' (address in r0) into r1:
16727  str r4,[r7,#0x40] ;@ Save PC
16728  bic r0,r0,#0xff000000
16729  bl m68k_read32 ;@ Call read32(r0) handler
16730  movs r1,r0
16731
16732  and r10,r1,#0x80000000 ;@ r10=N_flag
16733  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16734
16735;@ EaCalc : Get '-(a0)' into r8:
16736  and r2,r8,#0x0e00
16737  orr r2,r2,#0x1000 ;@ A0-7
16738  ldr r8,[r7,r2,lsr #7]
16739  sub r8,r8,#4 ;@ Pre-decrement An
16740  str r8,[r7,r2,lsr #7]
16741  mov r11,r1
16742  add r0,r8,#2
16743;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16744  uxth r1,r1 ;@ zero extend
16745  bic r0,r0,#0xff000000
16746  bl m68k_write16 ;@ Call write16(r0,r1) handler
16747
16748;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16749  mov r1,r11,lsr #16
16750  bic r0,r8,#0xff000000
16751  bl m68k_write16 ;@ Call write16(r0,r1) handler
16752
16753  ldr r5,[r7,#0x5c] ;@ Load Cycles
16754  ldrh r8,[r4],#2 ;@ Fetch next opcode
16755  subs r5,r5,#24 ;@ Subtract cycles
16756  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16757  b CycloneEnd
16758
16759;@ ---------- [2139] move.l $33333333.l, -(a0) uses Op2139 ----------
16760Op2139:
16761  str r4,[r7,#0x50] ;@ Save prev PC + 2
16762  str r5,[r7,#0x5c] ;@ Save Cycles
16763
16764;@ EaCalc : Get '$33333333.l' into r0:
16765  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16766  ldrh r0,[r4],#2
16767  orr r0,r0,r2,lsl #16
16768;@ EaRead : Read '$33333333.l' (address in r0) into r1:
16769  str r4,[r7,#0x40] ;@ Save PC
16770  bic r0,r0,#0xff000000
16771  bl m68k_read32 ;@ Call read32(r0) handler
16772  movs r1,r0
16773
16774  and r10,r1,#0x80000000 ;@ r10=N_flag
16775  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16776
16777;@ EaCalc : Get '-(a0)' into r8:
16778  and r2,r8,#0x0e00
16779  orr r2,r2,#0x1000 ;@ A0-7
16780  ldr r8,[r7,r2,lsr #7]
16781  sub r8,r8,#4 ;@ Pre-decrement An
16782  str r8,[r7,r2,lsr #7]
16783  mov r11,r1
16784  add r0,r8,#2
16785;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16786  uxth r1,r1 ;@ zero extend
16787  bic r0,r0,#0xff000000
16788  bl m68k_write16 ;@ Call write16(r0,r1) handler
16789
16790;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16791  mov r1,r11,lsr #16
16792  bic r0,r8,#0xff000000
16793  bl m68k_write16 ;@ Call write16(r0,r1) handler
16794
16795  ldr r5,[r7,#0x5c] ;@ Load Cycles
16796  ldrh r8,[r4],#2 ;@ Fetch next opcode
16797  subs r5,r5,#28 ;@ Subtract cycles
16798  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16799  b CycloneEnd
16800
16801;@ ---------- [213a] move.l ($3333,pc), -(a0); =3335 uses Op213a ----------
16802Op213a:
16803  str r4,[r7,#0x50] ;@ Save prev PC + 2
16804  str r5,[r7,#0x5c] ;@ Save Cycles
16805
16806;@ EaCalc : Get '($3333,pc)' into r0:
16807  ldr r0,[r7,#0x60] ;@ Get Memory base
16808  sub r0,r4,r0 ;@ Real PC
16809  ldrsh r2,[r4],#2 ;@ Fetch extension
16810  add r0,r2,r0 ;@ ($nn,PC)
16811;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
16812  str r4,[r7,#0x40] ;@ Save PC
16813  bic r0,r0,#0xff000000
16814  bl m68k_fetch32 ;@ Call fetch32(r0) handler
16815  movs r1,r0
16816
16817  and r10,r1,#0x80000000 ;@ r10=N_flag
16818  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16819
16820;@ EaCalc : Get '-(a0)' into r8:
16821  and r2,r8,#0x0e00
16822  orr r2,r2,#0x1000 ;@ A0-7
16823  ldr r8,[r7,r2,lsr #7]
16824  sub r8,r8,#4 ;@ Pre-decrement An
16825  str r8,[r7,r2,lsr #7]
16826  mov r11,r1
16827  add r0,r8,#2
16828;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16829  uxth r1,r1 ;@ zero extend
16830  bic r0,r0,#0xff000000
16831  bl m68k_write16 ;@ Call write16(r0,r1) handler
16832
16833;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16834  mov r1,r11,lsr #16
16835  bic r0,r8,#0xff000000
16836  bl m68k_write16 ;@ Call write16(r0,r1) handler
16837
16838  ldr r5,[r7,#0x5c] ;@ Load Cycles
16839  ldrh r8,[r4],#2 ;@ Fetch next opcode
16840  subs r5,r5,#24 ;@ Subtract cycles
16841  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16842  b CycloneEnd
16843
16844;@ ---------- [213b] move.l ($33,pc,d3.w*2), -(a0); =35 uses Op213b ----------
16845Op213b:
16846  str r4,[r7,#0x50] ;@ Save prev PC + 2
16847  str r5,[r7,#0x5c] ;@ Save Cycles
16848
16849;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
16850  ldr r0,[r7,#0x60] ;@ Get Memory base
16851  ldrh r3,[r4] ;@ Get extension word
16852  sub r0,r4,r0 ;@ r0=PC
16853  add r4,r4,#2
16854  mov r2,r3,lsr #10
16855  tst r3,#0x0800 ;@ Is Rn Word or Long
16856  and r2,r2,#0x3c ;@ r2=Index of Rn
16857  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
16858  ldrne   r2,[r7,r2] ;@ r2=Rn.l
16859  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
16860  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
16861  add r0,r2,r0 ;@ r0=Disp+PC+Rn
16862;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
16863  str r4,[r7,#0x40] ;@ Save PC
16864  bic r0,r0,#0xff000000
16865  bl m68k_fetch32 ;@ Call fetch32(r0) handler
16866  movs r1,r0
16867
16868  and r10,r1,#0x80000000 ;@ r10=N_flag
16869  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16870
16871;@ EaCalc : Get '-(a0)' into r8:
16872  and r2,r8,#0x0e00
16873  orr r2,r2,#0x1000 ;@ A0-7
16874  ldr r8,[r7,r2,lsr #7]
16875  sub r8,r8,#4 ;@ Pre-decrement An
16876  str r8,[r7,r2,lsr #7]
16877  mov r11,r1
16878  add r0,r8,#2
16879;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16880  uxth r1,r1 ;@ zero extend
16881  bic r0,r0,#0xff000000
16882  bl m68k_write16 ;@ Call write16(r0,r1) handler
16883
16884;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16885  mov r1,r11,lsr #16
16886  bic r0,r8,#0xff000000
16887  bl m68k_write16 ;@ Call write16(r0,r1) handler
16888
16889  ldr r5,[r7,#0x5c] ;@ Load Cycles
16890  ldrh r8,[r4],#2 ;@ Fetch next opcode
16891  subs r5,r5,#26 ;@ Subtract cycles
16892  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16893  b CycloneEnd
16894
16895;@ ---------- [213c] move.l #$33333333, -(a0) uses Op213c ----------
16896Op213c:
16897  str r4,[r7,#0x50] ;@ Save prev PC + 2
16898  str r5,[r7,#0x5c] ;@ Save Cycles
16899
16900;@ EaCalc : Get '#$33333333' into r1:
16901  ldrh r2,[r4],#2 ;@ Fetch immediate value
16902  ldrh r3,[r4],#2
16903  orr r1,r3,r2,lsl #16
16904;@ EaRead : Read '#$33333333' (address in r1) into r1:
16905  tst r1,r1
16906
16907  and r10,r1,#0x80000000 ;@ r10=N_flag
16908  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16909
16910;@ EaCalc : Get '-(a0)' into r8:
16911  and r2,r8,#0x0e00
16912  orr r2,r2,#0x1000 ;@ A0-7
16913  ldr r8,[r7,r2,lsr #7]
16914  sub r8,r8,#4 ;@ Pre-decrement An
16915  str r8,[r7,r2,lsr #7]
16916  mov r11,r1
16917  add r0,r8,#2
16918;@ EaWrite: Write r1 into '-(a0)' (address in r0):
16919  uxth r1,r1 ;@ zero extend
16920  str r4,[r7,#0x40] ;@ Save PC
16921  bic r0,r0,#0xff000000
16922  bl m68k_write16 ;@ Call write16(r0,r1) handler
16923
16924;@ EaWrite: Write r11 into '-(a0)' (address in r8):
16925  mov r1,r11,lsr #16
16926  bic r0,r8,#0xff000000
16927  bl m68k_write16 ;@ Call write16(r0,r1) handler
16928
16929  ldr r5,[r7,#0x5c] ;@ Load Cycles
16930  ldrh r8,[r4],#2 ;@ Fetch next opcode
16931  subs r5,r5,#20 ;@ Subtract cycles
16932  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16933  b CycloneEnd
16934
16935;@ ---------- [2140] move.l d0, ($3333,a0) uses Op2140 ----------
16936Op2140:
16937  str r4,[r7,#0x50] ;@ Save prev PC + 2
16938  str r5,[r7,#0x5c] ;@ Save Cycles
16939
16940;@ EaCalc : Get register index into r1:
16941  and r1,r8,#0x000f
16942;@ EaRead : Read register[r1] into r1:
16943  ldr r1,[r7,r1,lsl #2]
16944  tst r1,r1
16945
16946  and r10,r1,#0x80000000 ;@ r10=N_flag
16947  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16948
16949;@ EaCalc : Get '($3333,a0)' into r0:
16950  ldrsh r0,[r4],#2 ;@ Fetch offset
16951  and r2,r8,#0x0e00
16952  orr r2,r2,#0x1000 ;@ A0-7
16953  mov r2,r2,lsr #9
16954  ldr r2,[r7,r2,lsl #2]
16955  add r0,r0,r2 ;@ Add on offset
16956;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
16957  str r4,[r7,#0x40] ;@ Save PC
16958  bic r0,r0,#0xff000000
16959  bl m68k_write32 ;@ Call write32(r0,r1) handler
16960
16961  ldr r5,[r7,#0x5c] ;@ Load Cycles
16962  ldrh r8,[r4],#2 ;@ Fetch next opcode
16963  subs r5,r5,#16 ;@ Subtract cycles
16964  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16965  b CycloneEnd
16966
16967;@ ---------- [2150] move.l (a0), ($3333,a0) uses Op2150 ----------
16968Op2150:
16969  str r4,[r7,#0x50] ;@ Save prev PC + 2
16970  str r5,[r7,#0x5c] ;@ Save Cycles
16971
16972;@ EaCalc : Get '(a0)' into r0:
16973  and r2,r8,#0x000f
16974  orr r2,r2,#0x8 ;@ A0-7
16975  ldr r0,[r7,r2,lsl #2]
16976;@ EaRead : Read '(a0)' (address in r0) into r1:
16977  str r4,[r7,#0x40] ;@ Save PC
16978  bic r0,r0,#0xff000000
16979  bl m68k_read32 ;@ Call read32(r0) handler
16980  movs r1,r0
16981
16982  and r10,r1,#0x80000000 ;@ r10=N_flag
16983  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16984
16985;@ EaCalc : Get '($3333,a0)' into r0:
16986  ldrsh r0,[r4],#2 ;@ Fetch offset
16987  and r2,r8,#0x0e00
16988  orr r2,r2,#0x1000 ;@ A0-7
16989  mov r2,r2,lsr #9
16990  ldr r2,[r7,r2,lsl #2]
16991  add r0,r0,r2 ;@ Add on offset
16992;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
16993  str r4,[r7,#0x40] ;@ Save PC
16994  bic r0,r0,#0xff000000
16995  bl m68k_write32 ;@ Call write32(r0,r1) handler
16996
16997  ldr r5,[r7,#0x5c] ;@ Load Cycles
16998  ldrh r8,[r4],#2 ;@ Fetch next opcode
16999  subs r5,r5,#24 ;@ Subtract cycles
17000  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17001  b CycloneEnd
17002
17003;@ ---------- [2158] move.l (a0)+, ($3333,a0) uses Op2158 ----------
17004Op2158:
17005  str r4,[r7,#0x50] ;@ Save prev PC + 2
17006  str r5,[r7,#0x5c] ;@ Save Cycles
17007
17008;@ EaCalc : Get '(a0)+' into r0:
17009  and r2,r8,#0x000f
17010  ldr r0,[r7,r2,lsl #2]
17011  add r3,r0,#4 ;@ Post-increment An
17012  str r3,[r7,r2,lsl #2]
17013;@ EaRead : Read '(a0)+' (address in r0) into r1:
17014  str r4,[r7,#0x40] ;@ Save PC
17015  bic r0,r0,#0xff000000
17016  bl m68k_read32 ;@ Call read32(r0) handler
17017  movs r1,r0
17018
17019  and r10,r1,#0x80000000 ;@ r10=N_flag
17020  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17021
17022;@ EaCalc : Get '($3333,a0)' into r0:
17023  ldrsh r0,[r4],#2 ;@ Fetch offset
17024  and r2,r8,#0x0e00
17025  orr r2,r2,#0x1000 ;@ A0-7
17026  mov r2,r2,lsr #9
17027  ldr r2,[r7,r2,lsl #2]
17028  add r0,r0,r2 ;@ Add on offset
17029;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
17030  str r4,[r7,#0x40] ;@ Save PC
17031  bic r0,r0,#0xff000000
17032  bl m68k_write32 ;@ Call write32(r0,r1) handler
17033
17034  ldr r5,[r7,#0x5c] ;@ Load Cycles
17035  ldrh r8,[r4],#2 ;@ Fetch next opcode
17036  subs r5,r5,#24 ;@ Subtract cycles
17037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17038  b CycloneEnd
17039
17040;@ ---------- [2160] move.l -(a0), ($3333,a0) uses Op2160 ----------
17041Op2160:
17042  str r4,[r7,#0x50] ;@ Save prev PC + 2
17043  str r5,[r7,#0x5c] ;@ Save Cycles
17044
17045;@ EaCalc : Get '-(a0)' into r0:
17046  and r2,r8,#0x000f
17047  orr r2,r2,#0x8 ;@ A0-7
17048  ldr r0,[r7,r2,lsl #2]
17049  sub r0,r0,#4 ;@ Pre-decrement An
17050  str r0,[r7,r2,lsl #2]
17051;@ EaRead : Read '-(a0)' (address in r0) into r1:
17052  str r4,[r7,#0x40] ;@ Save PC
17053  bic r0,r0,#0xff000000
17054  bl m68k_read32 ;@ Call read32(r0) handler
17055  movs r1,r0
17056
17057  and r10,r1,#0x80000000 ;@ r10=N_flag
17058  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17059
17060;@ EaCalc : Get '($3333,a0)' into r0:
17061  ldrsh r0,[r4],#2 ;@ Fetch offset
17062  and r2,r8,#0x0e00
17063  orr r2,r2,#0x1000 ;@ A0-7
17064  mov r2,r2,lsr #9
17065  ldr r2,[r7,r2,lsl #2]
17066  add r0,r0,r2 ;@ Add on offset
17067;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
17068  str r4,[r7,#0x40] ;@ Save PC
17069  bic r0,r0,#0xff000000
17070  bl m68k_write32 ;@ Call write32(r0,r1) handler
17071
17072  ldr r5,[r7,#0x5c] ;@ Load Cycles
17073  ldrh r8,[r4],#2 ;@ Fetch next opcode
17074  subs r5,r5,#26 ;@ Subtract cycles
17075  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17076  b CycloneEnd
17077
17078;@ ---------- [2168] move.l ($3333,a0), ($3333,a0) uses Op2168 ----------
17079Op2168:
17080  str r4,[r7,#0x50] ;@ Save prev PC + 2
17081  str r5,[r7,#0x5c] ;@ Save Cycles
17082
17083;@ EaCalc : Get '($3333,a0)' into r0:
17084  ldrsh r0,[r4],#2 ;@ Fetch offset
17085  and r2,r8,#0x000f
17086  ldr r2,[r7,r2,lsl #2]
17087  add r0,r0,r2 ;@ Add on offset
17088;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
17089  str r4,[r7,#0x40] ;@ Save PC
17090  bic r0,r0,#0xff000000
17091  bl m68k_read32 ;@ Call read32(r0) handler
17092  movs r1,r0
17093
17094  and r10,r1,#0x80000000 ;@ r10=N_flag
17095  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17096
17097;@ EaCalc : Get '($3333,a0)' into r0:
17098  ldrsh r0,[r4],#2 ;@ Fetch offset
17099  and r2,r8,#0x0e00
17100  orr r2,r2,#0x1000 ;@ A0-7
17101  mov r2,r2,lsr #9
17102  ldr r2,[r7,r2,lsl #2]
17103  add r0,r0,r2 ;@ Add on offset
17104;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
17105  str r4,[r7,#0x40] ;@ Save PC
17106  bic r0,r0,#0xff000000
17107  bl m68k_write32 ;@ Call write32(r0,r1) handler
17108
17109  ldr r5,[r7,#0x5c] ;@ Load Cycles
17110  ldrh r8,[r4],#2 ;@ Fetch next opcode
17111  subs r5,r5,#28 ;@ Subtract cycles
17112  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17113  b CycloneEnd
17114
17115;@ ---------- [2170] move.l ($33,a0,d3.w*2), ($3333,a0) uses Op2170 ----------
17116Op2170:
17117  str r4,[r7,#0x50] ;@ Save prev PC + 2
17118  str r5,[r7,#0x5c] ;@ Save Cycles
17119
17120;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17121;@ Get extension word into r3:
17122  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17123  mov r2,r3,lsr #10
17124  tst r3,#0x0800 ;@ Is Rn Word or Long
17125  and r2,r2,#0x3c ;@ r2=Index of Rn
17126  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17127  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17128  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17129  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17130  and r2,r8,#0x000f
17131  orr r2,r2,#0x8 ;@ A0-7
17132  ldr r2,[r7,r2,lsl #2]
17133  add r0,r2,r3 ;@ r0=Disp+An+Rn
17134;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
17135  str r4,[r7,#0x40] ;@ Save PC
17136  bic r0,r0,#0xff000000
17137  bl m68k_read32 ;@ Call read32(r0) handler
17138  movs r1,r0
17139
17140  and r10,r1,#0x80000000 ;@ r10=N_flag
17141  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17142
17143;@ EaCalc : Get '($3333,a0)' into r0:
17144  ldrsh r0,[r4],#2 ;@ Fetch offset
17145  and r2,r8,#0x0e00
17146  orr r2,r2,#0x1000 ;@ A0-7
17147  mov r2,r2,lsr #9
17148  ldr r2,[r7,r2,lsl #2]
17149  add r0,r0,r2 ;@ Add on offset
17150;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
17151  str r4,[r7,#0x40] ;@ Save PC
17152  bic r0,r0,#0xff000000
17153  bl m68k_write32 ;@ Call write32(r0,r1) handler
17154
17155  ldr r5,[r7,#0x5c] ;@ Load Cycles
17156  ldrh r8,[r4],#2 ;@ Fetch next opcode
17157  subs r5,r5,#30 ;@ Subtract cycles
17158  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17159  b CycloneEnd
17160
17161;@ ---------- [2178] move.l $3333.w, ($3333,a0) uses Op2178 ----------
17162Op2178:
17163  str r4,[r7,#0x50] ;@ Save prev PC + 2
17164  str r5,[r7,#0x5c] ;@ Save Cycles
17165
17166;@ EaCalc : Get '$3333.w' into r0:
17167  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17168;@ EaRead : Read '$3333.w' (address in r0) into r1:
17169  str r4,[r7,#0x40] ;@ Save PC
17170  bic r0,r0,#0xff000000
17171  bl m68k_read32 ;@ Call read32(r0) handler
17172  movs r1,r0
17173
17174  and r10,r1,#0x80000000 ;@ r10=N_flag
17175  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17176
17177;@ EaCalc : Get '($3333,a0)' into r0:
17178  ldrsh r0,[r4],#2 ;@ Fetch offset
17179  and r2,r8,#0x0e00
17180  orr r2,r2,#0x1000 ;@ A0-7
17181  mov r2,r2,lsr #9
17182  ldr r2,[r7,r2,lsl #2]
17183  add r0,r0,r2 ;@ Add on offset
17184;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
17185  str r4,[r7,#0x40] ;@ Save PC
17186  bic r0,r0,#0xff000000
17187  bl m68k_write32 ;@ Call write32(r0,r1) handler
17188
17189  ldr r5,[r7,#0x5c] ;@ Load Cycles
17190  ldrh r8,[r4],#2 ;@ Fetch next opcode
17191  subs r5,r5,#28 ;@ Subtract cycles
17192  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17193  b CycloneEnd
17194
17195;@ ---------- [2179] move.l $33333333.l, ($3333,a0) uses Op2179 ----------
17196Op2179:
17197  str r4,[r7,#0x50] ;@ Save prev PC + 2
17198  str r5,[r7,#0x5c] ;@ Save Cycles
17199
17200;@ EaCalc : Get '$33333333.l' into r0:
17201  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
17202  ldrh r0,[r4],#2
17203  orr r0,r0,r2,lsl #16
17204;@ EaRead : Read '$33333333.l' (address in r0) into r1:
17205  str r4,[r7,#0x40] ;@ Save PC
17206  bic r0,r0,#0xff000000
17207  bl m68k_read32 ;@ Call read32(r0) handler
17208  movs r1,r0
17209
17210  and r10,r1,#0x80000000 ;@ r10=N_flag
17211  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17212
17213;@ EaCalc : Get '($3333,a0)' into r0:
17214  ldrsh r0,[r4],#2 ;@ Fetch offset
17215  and r2,r8,#0x0e00
17216  orr r2,r2,#0x1000 ;@ A0-7
17217  mov r2,r2,lsr #9
17218  ldr r2,[r7,r2,lsl #2]
17219  add r0,r0,r2 ;@ Add on offset
17220;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
17221  str r4,[r7,#0x40] ;@ Save PC
17222  bic r0,r0,#0xff000000
17223  bl m68k_write32 ;@ Call write32(r0,r1) handler
17224
17225  ldr r5,[r7,#0x5c] ;@ Load Cycles
17226  ldrh r8,[r4],#2 ;@ Fetch next opcode
17227  subs r5,r5,#32 ;@ Subtract cycles
17228  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17229  b CycloneEnd
17230
17231;@ ---------- [217a] move.l ($3333,pc), ($3333,a0); =3335 uses Op217a ----------
17232Op217a:
17233  str r4,[r7,#0x50] ;@ Save prev PC + 2
17234  str r5,[r7,#0x5c] ;@ Save Cycles
17235
17236;@ EaCalc : Get '($3333,pc)' into r0:
17237  ldr r0,[r7,#0x60] ;@ Get Memory base
17238  sub r0,r4,r0 ;@ Real PC
17239  ldrsh r2,[r4],#2 ;@ Fetch extension
17240  add r0,r2,r0 ;@ ($nn,PC)
17241;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
17242  str r4,[r7,#0x40] ;@ Save PC
17243  bic r0,r0,#0xff000000
17244  bl m68k_fetch32 ;@ Call fetch32(r0) handler
17245  movs r1,r0
17246
17247  and r10,r1,#0x80000000 ;@ r10=N_flag
17248  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17249
17250;@ EaCalc : Get '($3333,a0)' into r0:
17251  ldrsh r0,[r4],#2 ;@ Fetch offset
17252  and r2,r8,#0x0e00
17253  orr r2,r2,#0x1000 ;@ A0-7
17254  mov r2,r2,lsr #9
17255  ldr r2,[r7,r2,lsl #2]
17256  add r0,r0,r2 ;@ Add on offset
17257;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
17258  str r4,[r7,#0x40] ;@ Save PC
17259  bic r0,r0,#0xff000000
17260  bl m68k_write32 ;@ Call write32(r0,r1) handler
17261
17262  ldr r5,[r7,#0x5c] ;@ Load Cycles
17263  ldrh r8,[r4],#2 ;@ Fetch next opcode
17264  subs r5,r5,#28 ;@ Subtract cycles
17265  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17266  b CycloneEnd
17267
17268;@ ---------- [217b] move.l ($33,pc,d3.w*2), ($3333,a0); =35 uses Op217b ----------
17269Op217b:
17270  str r4,[r7,#0x50] ;@ Save prev PC + 2
17271  str r5,[r7,#0x5c] ;@ Save Cycles
17272
17273;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
17274  ldr r0,[r7,#0x60] ;@ Get Memory base
17275  ldrh r3,[r4] ;@ Get extension word
17276  sub r0,r4,r0 ;@ r0=PC
17277  add r4,r4,#2
17278  mov r2,r3,lsr #10
17279  tst r3,#0x0800 ;@ Is Rn Word or Long
17280  and r2,r2,#0x3c ;@ r2=Index of Rn
17281  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17282  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17283  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
17284  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
17285  add r0,r2,r0 ;@ r0=Disp+PC+Rn
17286;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
17287  str r4,[r7,#0x40] ;@ Save PC
17288  bic r0,r0,#0xff000000
17289  bl m68k_fetch32 ;@ Call fetch32(r0) handler
17290  movs r1,r0
17291
17292  and r10,r1,#0x80000000 ;@ r10=N_flag
17293  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17294
17295;@ EaCalc : Get '($3333,a0)' into r0:
17296  ldrsh r0,[r4],#2 ;@ Fetch offset
17297  and r2,r8,#0x0e00
17298  orr r2,r2,#0x1000 ;@ A0-7
17299  mov r2,r2,lsr #9
17300  ldr r2,[r7,r2,lsl #2]
17301  add r0,r0,r2 ;@ Add on offset
17302;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
17303  str r4,[r7,#0x40] ;@ Save PC
17304  bic r0,r0,#0xff000000
17305  bl m68k_write32 ;@ Call write32(r0,r1) handler
17306
17307  ldr r5,[r7,#0x5c] ;@ Load Cycles
17308  ldrh r8,[r4],#2 ;@ Fetch next opcode
17309  subs r5,r5,#30 ;@ Subtract cycles
17310  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17311  b CycloneEnd
17312
17313;@ ---------- [217c] move.l #$33333333, ($3333,a0) uses Op217c ----------
17314Op217c:
17315  str r4,[r7,#0x50] ;@ Save prev PC + 2
17316  str r5,[r7,#0x5c] ;@ Save Cycles
17317
17318;@ EaCalc : Get '#$33333333' into r1:
17319  ldrh r2,[r4],#2 ;@ Fetch immediate value
17320  ldrh r3,[r4],#2
17321  orr r1,r3,r2,lsl #16
17322;@ EaRead : Read '#$33333333' (address in r1) into r1:
17323  tst r1,r1
17324
17325  and r10,r1,#0x80000000 ;@ r10=N_flag
17326  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17327
17328;@ EaCalc : Get '($3333,a0)' into r0:
17329  ldrsh r0,[r4],#2 ;@ Fetch offset
17330  and r2,r8,#0x0e00
17331  orr r2,r2,#0x1000 ;@ A0-7
17332  mov r2,r2,lsr #9
17333  ldr r2,[r7,r2,lsl #2]
17334  add r0,r0,r2 ;@ Add on offset
17335;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
17336  str r4,[r7,#0x40] ;@ Save PC
17337  bic r0,r0,#0xff000000
17338  bl m68k_write32 ;@ Call write32(r0,r1) handler
17339
17340  ldr r5,[r7,#0x5c] ;@ Load Cycles
17341  ldrh r8,[r4],#2 ;@ Fetch next opcode
17342  subs r5,r5,#24 ;@ Subtract cycles
17343  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17344  b CycloneEnd
17345
17346;@ ---------- [2180] move.l d0, ($33,a0,d3.w*2) uses Op2180 ----------
17347Op2180:
17348  str r4,[r7,#0x50] ;@ Save prev PC + 2
17349  str r5,[r7,#0x5c] ;@ Save Cycles
17350
17351;@ EaCalc : Get register index into r1:
17352  and r1,r8,#0x000f
17353;@ EaRead : Read register[r1] into r1:
17354  ldr r1,[r7,r1,lsl #2]
17355  tst r1,r1
17356
17357  and r10,r1,#0x80000000 ;@ r10=N_flag
17358  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17359
17360;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17361;@ Get extension word into r3:
17362  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17363  mov r2,r3,lsr #10
17364  tst r3,#0x0800 ;@ Is Rn Word or Long
17365  and r2,r2,#0x3c ;@ r2=Index of Rn
17366  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17367  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17368  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17369  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17370  and r2,r8,#0x0e00
17371  orr r2,r2,#0x1000 ;@ A0-7
17372  mov r2,r2,lsr #9
17373  ldr r2,[r7,r2,lsl #2]
17374  add r0,r2,r3 ;@ r0=Disp+An+Rn
17375;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17376  str r4,[r7,#0x40] ;@ Save PC
17377  bic r0,r0,#0xff000000
17378  bl m68k_write32 ;@ Call write32(r0,r1) handler
17379
17380  ldr r5,[r7,#0x5c] ;@ Load Cycles
17381  ldrh r8,[r4],#2 ;@ Fetch next opcode
17382  subs r5,r5,#18 ;@ Subtract cycles
17383  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17384  b CycloneEnd
17385
17386;@ ---------- [2190] move.l (a0), ($33,a0,d3.w*2) uses Op2190 ----------
17387Op2190:
17388  str r4,[r7,#0x50] ;@ Save prev PC + 2
17389  str r5,[r7,#0x5c] ;@ Save Cycles
17390
17391;@ EaCalc : Get '(a0)' into r0:
17392  and r2,r8,#0x000f
17393  orr r2,r2,#0x8 ;@ A0-7
17394  ldr r0,[r7,r2,lsl #2]
17395;@ EaRead : Read '(a0)' (address in r0) into r1:
17396  str r4,[r7,#0x40] ;@ Save PC
17397  bic r0,r0,#0xff000000
17398  bl m68k_read32 ;@ Call read32(r0) handler
17399  movs r1,r0
17400
17401  and r10,r1,#0x80000000 ;@ r10=N_flag
17402  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17403
17404;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17405;@ Get extension word into r3:
17406  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17407  mov r2,r3,lsr #10
17408  tst r3,#0x0800 ;@ Is Rn Word or Long
17409  and r2,r2,#0x3c ;@ r2=Index of Rn
17410  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17411  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17412  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17413  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17414  and r2,r8,#0x0e00
17415  orr r2,r2,#0x1000 ;@ A0-7
17416  mov r2,r2,lsr #9
17417  ldr r2,[r7,r2,lsl #2]
17418  add r0,r2,r3 ;@ r0=Disp+An+Rn
17419;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17420  str r4,[r7,#0x40] ;@ Save PC
17421  bic r0,r0,#0xff000000
17422  bl m68k_write32 ;@ Call write32(r0,r1) handler
17423
17424  ldr r5,[r7,#0x5c] ;@ Load Cycles
17425  ldrh r8,[r4],#2 ;@ Fetch next opcode
17426  subs r5,r5,#26 ;@ Subtract cycles
17427  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17428  b CycloneEnd
17429
17430;@ ---------- [2198] move.l (a0)+, ($33,a0,d3.w*2) uses Op2198 ----------
17431Op2198:
17432  str r4,[r7,#0x50] ;@ Save prev PC + 2
17433  str r5,[r7,#0x5c] ;@ Save Cycles
17434
17435;@ EaCalc : Get '(a0)+' into r0:
17436  and r2,r8,#0x000f
17437  ldr r0,[r7,r2,lsl #2]
17438  add r3,r0,#4 ;@ Post-increment An
17439  str r3,[r7,r2,lsl #2]
17440;@ EaRead : Read '(a0)+' (address in r0) into r1:
17441  str r4,[r7,#0x40] ;@ Save PC
17442  bic r0,r0,#0xff000000
17443  bl m68k_read32 ;@ Call read32(r0) handler
17444  movs r1,r0
17445
17446  and r10,r1,#0x80000000 ;@ r10=N_flag
17447  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17448
17449;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17450;@ Get extension word into r3:
17451  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17452  mov r2,r3,lsr #10
17453  tst r3,#0x0800 ;@ Is Rn Word or Long
17454  and r2,r2,#0x3c ;@ r2=Index of Rn
17455  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17456  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17457  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17458  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17459  and r2,r8,#0x0e00
17460  orr r2,r2,#0x1000 ;@ A0-7
17461  mov r2,r2,lsr #9
17462  ldr r2,[r7,r2,lsl #2]
17463  add r0,r2,r3 ;@ r0=Disp+An+Rn
17464;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17465  str r4,[r7,#0x40] ;@ Save PC
17466  bic r0,r0,#0xff000000
17467  bl m68k_write32 ;@ Call write32(r0,r1) handler
17468
17469  ldr r5,[r7,#0x5c] ;@ Load Cycles
17470  ldrh r8,[r4],#2 ;@ Fetch next opcode
17471  subs r5,r5,#26 ;@ Subtract cycles
17472  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17473  b CycloneEnd
17474
17475;@ ---------- [21a0] move.l -(a0), ($33,a0,d3.w*2) uses Op21a0 ----------
17476Op21a0:
17477  str r4,[r7,#0x50] ;@ Save prev PC + 2
17478  str r5,[r7,#0x5c] ;@ Save Cycles
17479
17480;@ EaCalc : Get '-(a0)' into r0:
17481  and r2,r8,#0x000f
17482  orr r2,r2,#0x8 ;@ A0-7
17483  ldr r0,[r7,r2,lsl #2]
17484  sub r0,r0,#4 ;@ Pre-decrement An
17485  str r0,[r7,r2,lsl #2]
17486;@ EaRead : Read '-(a0)' (address in r0) into r1:
17487  str r4,[r7,#0x40] ;@ Save PC
17488  bic r0,r0,#0xff000000
17489  bl m68k_read32 ;@ Call read32(r0) handler
17490  movs r1,r0
17491
17492  and r10,r1,#0x80000000 ;@ r10=N_flag
17493  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17494
17495;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17496;@ Get extension word into r3:
17497  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17498  mov r2,r3,lsr #10
17499  tst r3,#0x0800 ;@ Is Rn Word or Long
17500  and r2,r2,#0x3c ;@ r2=Index of Rn
17501  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17502  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17503  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17504  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17505  and r2,r8,#0x0e00
17506  orr r2,r2,#0x1000 ;@ A0-7
17507  mov r2,r2,lsr #9
17508  ldr r2,[r7,r2,lsl #2]
17509  add r0,r2,r3 ;@ r0=Disp+An+Rn
17510;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17511  str r4,[r7,#0x40] ;@ Save PC
17512  bic r0,r0,#0xff000000
17513  bl m68k_write32 ;@ Call write32(r0,r1) handler
17514
17515  ldr r5,[r7,#0x5c] ;@ Load Cycles
17516  ldrh r8,[r4],#2 ;@ Fetch next opcode
17517  subs r5,r5,#28 ;@ Subtract cycles
17518  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17519  b CycloneEnd
17520
17521;@ ---------- [21a8] move.l ($3333,a0), ($33,a0,d3.w*2) uses Op21a8 ----------
17522Op21a8:
17523  str r4,[r7,#0x50] ;@ Save prev PC + 2
17524  str r5,[r7,#0x5c] ;@ Save Cycles
17525
17526;@ EaCalc : Get '($3333,a0)' into r0:
17527  ldrsh r0,[r4],#2 ;@ Fetch offset
17528  and r2,r8,#0x000f
17529  ldr r2,[r7,r2,lsl #2]
17530  add r0,r0,r2 ;@ Add on offset
17531;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
17532  str r4,[r7,#0x40] ;@ Save PC
17533  bic r0,r0,#0xff000000
17534  bl m68k_read32 ;@ Call read32(r0) handler
17535  movs r1,r0
17536
17537  and r10,r1,#0x80000000 ;@ r10=N_flag
17538  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17539
17540;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17541;@ Get extension word into r3:
17542  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17543  mov r2,r3,lsr #10
17544  tst r3,#0x0800 ;@ Is Rn Word or Long
17545  and r2,r2,#0x3c ;@ r2=Index of Rn
17546  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17547  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17548  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17549  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17550  and r2,r8,#0x0e00
17551  orr r2,r2,#0x1000 ;@ A0-7
17552  mov r2,r2,lsr #9
17553  ldr r2,[r7,r2,lsl #2]
17554  add r0,r2,r3 ;@ r0=Disp+An+Rn
17555;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17556  str r4,[r7,#0x40] ;@ Save PC
17557  bic r0,r0,#0xff000000
17558  bl m68k_write32 ;@ Call write32(r0,r1) handler
17559
17560  ldr r5,[r7,#0x5c] ;@ Load Cycles
17561  ldrh r8,[r4],#2 ;@ Fetch next opcode
17562  subs r5,r5,#30 ;@ Subtract cycles
17563  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17564  b CycloneEnd
17565
17566;@ ---------- [21b0] move.l ($33,a0,d3.w*2), ($33,a0,d3.w*2) uses Op21b0 ----------
17567Op21b0:
17568  str r4,[r7,#0x50] ;@ Save prev PC + 2
17569  str r5,[r7,#0x5c] ;@ Save Cycles
17570
17571;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17572;@ Get extension word into r3:
17573  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17574  mov r2,r3,lsr #10
17575  tst r3,#0x0800 ;@ Is Rn Word or Long
17576  and r2,r2,#0x3c ;@ r2=Index of Rn
17577  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17578  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17579  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17580  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17581  and r2,r8,#0x000f
17582  orr r2,r2,#0x8 ;@ A0-7
17583  ldr r2,[r7,r2,lsl #2]
17584  add r0,r2,r3 ;@ r0=Disp+An+Rn
17585;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
17586  str r4,[r7,#0x40] ;@ Save PC
17587  bic r0,r0,#0xff000000
17588  bl m68k_read32 ;@ Call read32(r0) handler
17589  movs r1,r0
17590
17591  and r10,r1,#0x80000000 ;@ r10=N_flag
17592  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17593
17594;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17595;@ Get extension word into r3:
17596  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17597  mov r2,r3,lsr #10
17598  tst r3,#0x0800 ;@ Is Rn Word or Long
17599  and r2,r2,#0x3c ;@ r2=Index of Rn
17600  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17601  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17602  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17603  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17604  and r2,r8,#0x0e00
17605  orr r2,r2,#0x1000 ;@ A0-7
17606  mov r2,r2,lsr #9
17607  ldr r2,[r7,r2,lsl #2]
17608  add r0,r2,r3 ;@ r0=Disp+An+Rn
17609;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17610  str r4,[r7,#0x40] ;@ Save PC
17611  bic r0,r0,#0xff000000
17612  bl m68k_write32 ;@ Call write32(r0,r1) handler
17613
17614  ldr r5,[r7,#0x5c] ;@ Load Cycles
17615  ldrh r8,[r4],#2 ;@ Fetch next opcode
17616  subs r5,r5,#32 ;@ Subtract cycles
17617  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17618  b CycloneEnd
17619
17620;@ ---------- [21b8] move.l $3333.w, ($33,a0,d3.w*2) uses Op21b8 ----------
17621Op21b8:
17622  str r4,[r7,#0x50] ;@ Save prev PC + 2
17623  str r5,[r7,#0x5c] ;@ Save Cycles
17624
17625;@ EaCalc : Get '$3333.w' into r0:
17626  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17627;@ EaRead : Read '$3333.w' (address in r0) into r1:
17628  str r4,[r7,#0x40] ;@ Save PC
17629  bic r0,r0,#0xff000000
17630  bl m68k_read32 ;@ Call read32(r0) handler
17631  movs r1,r0
17632
17633  and r10,r1,#0x80000000 ;@ r10=N_flag
17634  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17635
17636;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17637;@ Get extension word into r3:
17638  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17639  mov r2,r3,lsr #10
17640  tst r3,#0x0800 ;@ Is Rn Word or Long
17641  and r2,r2,#0x3c ;@ r2=Index of Rn
17642  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17643  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17644  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17645  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17646  and r2,r8,#0x0e00
17647  orr r2,r2,#0x1000 ;@ A0-7
17648  mov r2,r2,lsr #9
17649  ldr r2,[r7,r2,lsl #2]
17650  add r0,r2,r3 ;@ r0=Disp+An+Rn
17651;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17652  str r4,[r7,#0x40] ;@ Save PC
17653  bic r0,r0,#0xff000000
17654  bl m68k_write32 ;@ Call write32(r0,r1) handler
17655
17656  ldr r5,[r7,#0x5c] ;@ Load Cycles
17657  ldrh r8,[r4],#2 ;@ Fetch next opcode
17658  subs r5,r5,#30 ;@ Subtract cycles
17659  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17660  b CycloneEnd
17661
17662;@ ---------- [21b9] move.l $33333333.l, ($33,a0,d3.w*2) uses Op21b9 ----------
17663Op21b9:
17664  str r4,[r7,#0x50] ;@ Save prev PC + 2
17665  str r5,[r7,#0x5c] ;@ Save Cycles
17666
17667;@ EaCalc : Get '$33333333.l' into r0:
17668  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
17669  ldrh r0,[r4],#2
17670  orr r0,r0,r2,lsl #16
17671;@ EaRead : Read '$33333333.l' (address in r0) into r1:
17672  str r4,[r7,#0x40] ;@ Save PC
17673  bic r0,r0,#0xff000000
17674  bl m68k_read32 ;@ Call read32(r0) handler
17675  movs r1,r0
17676
17677  and r10,r1,#0x80000000 ;@ r10=N_flag
17678  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17679
17680;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17681;@ Get extension word into r3:
17682  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17683  mov r2,r3,lsr #10
17684  tst r3,#0x0800 ;@ Is Rn Word or Long
17685  and r2,r2,#0x3c ;@ r2=Index of Rn
17686  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17687  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17688  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17689  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17690  and r2,r8,#0x0e00
17691  orr r2,r2,#0x1000 ;@ A0-7
17692  mov r2,r2,lsr #9
17693  ldr r2,[r7,r2,lsl #2]
17694  add r0,r2,r3 ;@ r0=Disp+An+Rn
17695;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17696  str r4,[r7,#0x40] ;@ Save PC
17697  bic r0,r0,#0xff000000
17698  bl m68k_write32 ;@ Call write32(r0,r1) handler
17699
17700  ldr r5,[r7,#0x5c] ;@ Load Cycles
17701  ldrh r8,[r4],#2 ;@ Fetch next opcode
17702  subs r5,r5,#34 ;@ Subtract cycles
17703  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17704  b CycloneEnd
17705
17706;@ ---------- [21ba] move.l ($3333,pc), ($33,a0,d3.w*2); =3335 uses Op21ba ----------
17707Op21ba:
17708  str r4,[r7,#0x50] ;@ Save prev PC + 2
17709  str r5,[r7,#0x5c] ;@ Save Cycles
17710
17711;@ EaCalc : Get '($3333,pc)' into r0:
17712  ldr r0,[r7,#0x60] ;@ Get Memory base
17713  sub r0,r4,r0 ;@ Real PC
17714  ldrsh r2,[r4],#2 ;@ Fetch extension
17715  add r0,r2,r0 ;@ ($nn,PC)
17716;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
17717  str r4,[r7,#0x40] ;@ Save PC
17718  bic r0,r0,#0xff000000
17719  bl m68k_fetch32 ;@ Call fetch32(r0) handler
17720  movs r1,r0
17721
17722  and r10,r1,#0x80000000 ;@ r10=N_flag
17723  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17724
17725;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17726;@ Get extension word into r3:
17727  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17728  mov r2,r3,lsr #10
17729  tst r3,#0x0800 ;@ Is Rn Word or Long
17730  and r2,r2,#0x3c ;@ r2=Index of Rn
17731  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17732  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17733  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17734  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17735  and r2,r8,#0x0e00
17736  orr r2,r2,#0x1000 ;@ A0-7
17737  mov r2,r2,lsr #9
17738  ldr r2,[r7,r2,lsl #2]
17739  add r0,r2,r3 ;@ r0=Disp+An+Rn
17740;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17741  str r4,[r7,#0x40] ;@ Save PC
17742  bic r0,r0,#0xff000000
17743  bl m68k_write32 ;@ Call write32(r0,r1) handler
17744
17745  ldr r5,[r7,#0x5c] ;@ Load Cycles
17746  ldrh r8,[r4],#2 ;@ Fetch next opcode
17747  subs r5,r5,#30 ;@ Subtract cycles
17748  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17749  b CycloneEnd
17750
17751;@ ---------- [21bb] move.l ($33,pc,d3.w*2), ($33,a0,d3.w*2); =35 uses Op21bb ----------
17752Op21bb:
17753  str r4,[r7,#0x50] ;@ Save prev PC + 2
17754  str r5,[r7,#0x5c] ;@ Save Cycles
17755
17756;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
17757  ldr r0,[r7,#0x60] ;@ Get Memory base
17758  ldrh r3,[r4] ;@ Get extension word
17759  sub r0,r4,r0 ;@ r0=PC
17760  add r4,r4,#2
17761  mov r2,r3,lsr #10
17762  tst r3,#0x0800 ;@ Is Rn Word or Long
17763  and r2,r2,#0x3c ;@ r2=Index of Rn
17764  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17765  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17766  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
17767  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
17768  add r0,r2,r0 ;@ r0=Disp+PC+Rn
17769;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
17770  str r4,[r7,#0x40] ;@ Save PC
17771  bic r0,r0,#0xff000000
17772  bl m68k_fetch32 ;@ Call fetch32(r0) handler
17773  movs r1,r0
17774
17775  and r10,r1,#0x80000000 ;@ r10=N_flag
17776  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17777
17778;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17779;@ Get extension word into r3:
17780  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17781  mov r2,r3,lsr #10
17782  tst r3,#0x0800 ;@ Is Rn Word or Long
17783  and r2,r2,#0x3c ;@ r2=Index of Rn
17784  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17785  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17786  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17787  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17788  and r2,r8,#0x0e00
17789  orr r2,r2,#0x1000 ;@ A0-7
17790  mov r2,r2,lsr #9
17791  ldr r2,[r7,r2,lsl #2]
17792  add r0,r2,r3 ;@ r0=Disp+An+Rn
17793;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17794  str r4,[r7,#0x40] ;@ Save PC
17795  bic r0,r0,#0xff000000
17796  bl m68k_write32 ;@ Call write32(r0,r1) handler
17797
17798  ldr r5,[r7,#0x5c] ;@ Load Cycles
17799  ldrh r8,[r4],#2 ;@ Fetch next opcode
17800  subs r5,r5,#32 ;@ Subtract cycles
17801  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17802  b CycloneEnd
17803
17804;@ ---------- [21bc] move.l #$33333333, ($33,a0,d3.w*2) uses Op21bc ----------
17805Op21bc:
17806  str r4,[r7,#0x50] ;@ Save prev PC + 2
17807  str r5,[r7,#0x5c] ;@ Save Cycles
17808
17809;@ EaCalc : Get '#$33333333' into r1:
17810  ldrh r2,[r4],#2 ;@ Fetch immediate value
17811  ldrh r3,[r4],#2
17812  orr r1,r3,r2,lsl #16
17813;@ EaRead : Read '#$33333333' (address in r1) into r1:
17814  tst r1,r1
17815
17816  and r10,r1,#0x80000000 ;@ r10=N_flag
17817  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17818
17819;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17820;@ Get extension word into r3:
17821  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17822  mov r2,r3,lsr #10
17823  tst r3,#0x0800 ;@ Is Rn Word or Long
17824  and r2,r2,#0x3c ;@ r2=Index of Rn
17825  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17826  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17827  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17828  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17829  and r2,r8,#0x0e00
17830  orr r2,r2,#0x1000 ;@ A0-7
17831  mov r2,r2,lsr #9
17832  ldr r2,[r7,r2,lsl #2]
17833  add r0,r2,r3 ;@ r0=Disp+An+Rn
17834;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
17835  str r4,[r7,#0x40] ;@ Save PC
17836  bic r0,r0,#0xff000000
17837  bl m68k_write32 ;@ Call write32(r0,r1) handler
17838
17839  ldr r5,[r7,#0x5c] ;@ Load Cycles
17840  ldrh r8,[r4],#2 ;@ Fetch next opcode
17841  subs r5,r5,#26 ;@ Subtract cycles
17842  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17843  b CycloneEnd
17844
17845;@ ---------- [21c0] move.l d0, $3333.w uses Op21c0 ----------
17846Op21c0:
17847  str r4,[r7,#0x50] ;@ Save prev PC + 2
17848  str r5,[r7,#0x5c] ;@ Save Cycles
17849
17850;@ EaCalc : Get register index into r1:
17851  and r1,r8,#0x000f
17852;@ EaRead : Read register[r1] into r1:
17853  ldr r1,[r7,r1,lsl #2]
17854  tst r1,r1
17855
17856  and r10,r1,#0x80000000 ;@ r10=N_flag
17857  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17858
17859;@ EaCalc : Get '$3333.w' into r0:
17860  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17861;@ EaWrite: Write r1 into '$3333.w' (address in r0):
17862  str r4,[r7,#0x40] ;@ Save PC
17863  bic r0,r0,#0xff000000
17864  bl m68k_write32 ;@ Call write32(r0,r1) handler
17865
17866  ldr r5,[r7,#0x5c] ;@ Load Cycles
17867  ldrh r8,[r4],#2 ;@ Fetch next opcode
17868  subs r5,r5,#16 ;@ Subtract cycles
17869  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17870  b CycloneEnd
17871
17872;@ ---------- [21d0] move.l (a0), $3333.w uses Op21d0 ----------
17873Op21d0:
17874  str r4,[r7,#0x50] ;@ Save prev PC + 2
17875  str r5,[r7,#0x5c] ;@ Save Cycles
17876
17877;@ EaCalc : Get '(a0)' into r0:
17878  and r2,r8,#0x000f
17879  orr r2,r2,#0x8 ;@ A0-7
17880  ldr r0,[r7,r2,lsl #2]
17881;@ EaRead : Read '(a0)' (address in r0) into r1:
17882  str r4,[r7,#0x40] ;@ Save PC
17883  bic r0,r0,#0xff000000
17884  bl m68k_read32 ;@ Call read32(r0) handler
17885  movs r1,r0
17886
17887  and r10,r1,#0x80000000 ;@ r10=N_flag
17888  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17889
17890;@ EaCalc : Get '$3333.w' into r0:
17891  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17892;@ EaWrite: Write r1 into '$3333.w' (address in r0):
17893  str r4,[r7,#0x40] ;@ Save PC
17894  bic r0,r0,#0xff000000
17895  bl m68k_write32 ;@ Call write32(r0,r1) handler
17896
17897  ldr r5,[r7,#0x5c] ;@ Load Cycles
17898  ldrh r8,[r4],#2 ;@ Fetch next opcode
17899  subs r5,r5,#24 ;@ Subtract cycles
17900  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17901  b CycloneEnd
17902
17903;@ ---------- [21d8] move.l (a0)+, $3333.w uses Op21d8 ----------
17904Op21d8:
17905  str r4,[r7,#0x50] ;@ Save prev PC + 2
17906  str r5,[r7,#0x5c] ;@ Save Cycles
17907
17908;@ EaCalc : Get '(a0)+' into r0:
17909  and r2,r8,#0x000f
17910  ldr r0,[r7,r2,lsl #2]
17911  add r3,r0,#4 ;@ Post-increment An
17912  str r3,[r7,r2,lsl #2]
17913;@ EaRead : Read '(a0)+' (address in r0) into r1:
17914  str r4,[r7,#0x40] ;@ Save PC
17915  bic r0,r0,#0xff000000
17916  bl m68k_read32 ;@ Call read32(r0) handler
17917  movs r1,r0
17918
17919  and r10,r1,#0x80000000 ;@ r10=N_flag
17920  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17921
17922;@ EaCalc : Get '$3333.w' into r0:
17923  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17924;@ EaWrite: Write r1 into '$3333.w' (address in r0):
17925  str r4,[r7,#0x40] ;@ Save PC
17926  bic r0,r0,#0xff000000
17927  bl m68k_write32 ;@ Call write32(r0,r1) handler
17928
17929  ldr r5,[r7,#0x5c] ;@ Load Cycles
17930  ldrh r8,[r4],#2 ;@ Fetch next opcode
17931  subs r5,r5,#24 ;@ Subtract cycles
17932  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17933  b CycloneEnd
17934
17935;@ ---------- [21e0] move.l -(a0), $3333.w uses Op21e0 ----------
17936Op21e0:
17937  str r4,[r7,#0x50] ;@ Save prev PC + 2
17938  str r5,[r7,#0x5c] ;@ Save Cycles
17939
17940;@ EaCalc : Get '-(a0)' into r0:
17941  and r2,r8,#0x000f
17942  orr r2,r2,#0x8 ;@ A0-7
17943  ldr r0,[r7,r2,lsl #2]
17944  sub r0,r0,#4 ;@ Pre-decrement An
17945  str r0,[r7,r2,lsl #2]
17946;@ EaRead : Read '-(a0)' (address in r0) into r1:
17947  str r4,[r7,#0x40] ;@ Save PC
17948  bic r0,r0,#0xff000000
17949  bl m68k_read32 ;@ Call read32(r0) handler
17950  movs r1,r0
17951
17952  and r10,r1,#0x80000000 ;@ r10=N_flag
17953  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17954
17955;@ EaCalc : Get '$3333.w' into r0:
17956  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17957;@ EaWrite: Write r1 into '$3333.w' (address in r0):
17958  str r4,[r7,#0x40] ;@ Save PC
17959  bic r0,r0,#0xff000000
17960  bl m68k_write32 ;@ Call write32(r0,r1) handler
17961
17962  ldr r5,[r7,#0x5c] ;@ Load Cycles
17963  ldrh r8,[r4],#2 ;@ Fetch next opcode
17964  subs r5,r5,#26 ;@ Subtract cycles
17965  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17966  b CycloneEnd
17967
17968;@ ---------- [21e8] move.l ($3333,a0), $3333.w uses Op21e8 ----------
17969Op21e8:
17970  str r4,[r7,#0x50] ;@ Save prev PC + 2
17971  str r5,[r7,#0x5c] ;@ Save Cycles
17972
17973;@ EaCalc : Get '($3333,a0)' into r0:
17974  ldrsh r0,[r4],#2 ;@ Fetch offset
17975  and r2,r8,#0x000f
17976  ldr r2,[r7,r2,lsl #2]
17977  add r0,r0,r2 ;@ Add on offset
17978;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
17979  str r4,[r7,#0x40] ;@ Save PC
17980  bic r0,r0,#0xff000000
17981  bl m68k_read32 ;@ Call read32(r0) handler
17982  movs r1,r0
17983
17984  and r10,r1,#0x80000000 ;@ r10=N_flag
17985  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17986
17987;@ EaCalc : Get '$3333.w' into r0:
17988  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17989;@ EaWrite: Write r1 into '$3333.w' (address in r0):
17990  str r4,[r7,#0x40] ;@ Save PC
17991  bic r0,r0,#0xff000000
17992  bl m68k_write32 ;@ Call write32(r0,r1) handler
17993
17994  ldr r5,[r7,#0x5c] ;@ Load Cycles
17995  ldrh r8,[r4],#2 ;@ Fetch next opcode
17996  subs r5,r5,#28 ;@ Subtract cycles
17997  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17998  b CycloneEnd
17999
18000;@ ---------- [21f0] move.l ($33,a0,d3.w*2), $3333.w uses Op21f0 ----------
18001Op21f0:
18002  str r4,[r7,#0x50] ;@ Save prev PC + 2
18003  str r5,[r7,#0x5c] ;@ Save Cycles
18004
18005;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18006;@ Get extension word into r3:
18007  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18008  mov r2,r3,lsr #10
18009  tst r3,#0x0800 ;@ Is Rn Word or Long
18010  and r2,r2,#0x3c ;@ r2=Index of Rn
18011  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18012  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18013  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18014  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18015  and r2,r8,#0x000f
18016  orr r2,r2,#0x8 ;@ A0-7
18017  ldr r2,[r7,r2,lsl #2]
18018  add r0,r2,r3 ;@ r0=Disp+An+Rn
18019;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
18020  str r4,[r7,#0x40] ;@ Save PC
18021  bic r0,r0,#0xff000000
18022  bl m68k_read32 ;@ Call read32(r0) handler
18023  movs r1,r0
18024
18025  and r10,r1,#0x80000000 ;@ r10=N_flag
18026  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18027
18028;@ EaCalc : Get '$3333.w' into r0:
18029  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18030;@ EaWrite: Write r1 into '$3333.w' (address in r0):
18031  str r4,[r7,#0x40] ;@ Save PC
18032  bic r0,r0,#0xff000000
18033  bl m68k_write32 ;@ Call write32(r0,r1) handler
18034
18035  ldr r5,[r7,#0x5c] ;@ Load Cycles
18036  ldrh r8,[r4],#2 ;@ Fetch next opcode
18037  subs r5,r5,#30 ;@ Subtract cycles
18038  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18039  b CycloneEnd
18040
18041;@ ---------- [21f8] move.l $3333.w, $3333.w uses Op21f8 ----------
18042Op21f8:
18043  str r4,[r7,#0x50] ;@ Save prev PC + 2
18044  str r5,[r7,#0x5c] ;@ Save Cycles
18045
18046;@ EaCalc : Get '$3333.w' into r0:
18047  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18048;@ EaRead : Read '$3333.w' (address in r0) into r1:
18049  str r4,[r7,#0x40] ;@ Save PC
18050  bic r0,r0,#0xff000000
18051  bl m68k_read32 ;@ Call read32(r0) handler
18052  movs r1,r0
18053
18054  and r10,r1,#0x80000000 ;@ r10=N_flag
18055  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18056
18057;@ EaCalc : Get '$3333.w' into r0:
18058  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18059;@ EaWrite: Write r1 into '$3333.w' (address in r0):
18060  str r4,[r7,#0x40] ;@ Save PC
18061  bic r0,r0,#0xff000000
18062  bl m68k_write32 ;@ Call write32(r0,r1) handler
18063
18064  ldr r5,[r7,#0x5c] ;@ Load Cycles
18065  ldrh r8,[r4],#2 ;@ Fetch next opcode
18066  subs r5,r5,#28 ;@ Subtract cycles
18067  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18068  b CycloneEnd
18069
18070;@ ---------- [21f9] move.l $33333333.l, $3333.w uses Op21f9 ----------
18071Op21f9:
18072  str r4,[r7,#0x50] ;@ Save prev PC + 2
18073  str r5,[r7,#0x5c] ;@ Save Cycles
18074
18075;@ EaCalc : Get '$33333333.l' into r0:
18076  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18077  ldrh r0,[r4],#2
18078  orr r0,r0,r2,lsl #16
18079;@ EaRead : Read '$33333333.l' (address in r0) into r1:
18080  str r4,[r7,#0x40] ;@ Save PC
18081  bic r0,r0,#0xff000000
18082  bl m68k_read32 ;@ Call read32(r0) handler
18083  movs r1,r0
18084
18085  and r10,r1,#0x80000000 ;@ r10=N_flag
18086  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18087
18088;@ EaCalc : Get '$3333.w' into r0:
18089  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18090;@ EaWrite: Write r1 into '$3333.w' (address in r0):
18091  str r4,[r7,#0x40] ;@ Save PC
18092  bic r0,r0,#0xff000000
18093  bl m68k_write32 ;@ Call write32(r0,r1) handler
18094
18095  ldr r5,[r7,#0x5c] ;@ Load Cycles
18096  ldrh r8,[r4],#2 ;@ Fetch next opcode
18097  subs r5,r5,#32 ;@ Subtract cycles
18098  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18099  b CycloneEnd
18100
18101;@ ---------- [21fa] move.l ($3333,pc), $3333.w; =3335 uses Op21fa ----------
18102Op21fa:
18103  str r4,[r7,#0x50] ;@ Save prev PC + 2
18104  str r5,[r7,#0x5c] ;@ Save Cycles
18105
18106;@ EaCalc : Get '($3333,pc)' into r0:
18107  ldr r0,[r7,#0x60] ;@ Get Memory base
18108  sub r0,r4,r0 ;@ Real PC
18109  ldrsh r2,[r4],#2 ;@ Fetch extension
18110  add r0,r2,r0 ;@ ($nn,PC)
18111;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
18112  str r4,[r7,#0x40] ;@ Save PC
18113  bic r0,r0,#0xff000000
18114  bl m68k_fetch32 ;@ Call fetch32(r0) handler
18115  movs r1,r0
18116
18117  and r10,r1,#0x80000000 ;@ r10=N_flag
18118  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18119
18120;@ EaCalc : Get '$3333.w' into r0:
18121  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18122;@ EaWrite: Write r1 into '$3333.w' (address in r0):
18123  str r4,[r7,#0x40] ;@ Save PC
18124  bic r0,r0,#0xff000000
18125  bl m68k_write32 ;@ Call write32(r0,r1) handler
18126
18127  ldr r5,[r7,#0x5c] ;@ Load Cycles
18128  ldrh r8,[r4],#2 ;@ Fetch next opcode
18129  subs r5,r5,#28 ;@ Subtract cycles
18130  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18131  b CycloneEnd
18132
18133;@ ---------- [21fb] move.l ($33,pc,d3.w*2), $3333.w; =35 uses Op21fb ----------
18134Op21fb:
18135  str r4,[r7,#0x50] ;@ Save prev PC + 2
18136  str r5,[r7,#0x5c] ;@ Save Cycles
18137
18138;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
18139  ldr r0,[r7,#0x60] ;@ Get Memory base
18140  ldrh r3,[r4] ;@ Get extension word
18141  sub r0,r4,r0 ;@ r0=PC
18142  add r4,r4,#2
18143  mov r2,r3,lsr #10
18144  tst r3,#0x0800 ;@ Is Rn Word or Long
18145  and r2,r2,#0x3c ;@ r2=Index of Rn
18146  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18147  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18148  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
18149  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
18150  add r0,r2,r0 ;@ r0=Disp+PC+Rn
18151;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
18152  str r4,[r7,#0x40] ;@ Save PC
18153  bic r0,r0,#0xff000000
18154  bl m68k_fetch32 ;@ Call fetch32(r0) handler
18155  movs r1,r0
18156
18157  and r10,r1,#0x80000000 ;@ r10=N_flag
18158  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18159
18160;@ EaCalc : Get '$3333.w' into r0:
18161  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18162;@ EaWrite: Write r1 into '$3333.w' (address in r0):
18163  str r4,[r7,#0x40] ;@ Save PC
18164  bic r0,r0,#0xff000000
18165  bl m68k_write32 ;@ Call write32(r0,r1) handler
18166
18167  ldr r5,[r7,#0x5c] ;@ Load Cycles
18168  ldrh r8,[r4],#2 ;@ Fetch next opcode
18169  subs r5,r5,#30 ;@ Subtract cycles
18170  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18171  b CycloneEnd
18172
18173;@ ---------- [21fc] move.l #$33333333, $3333.w uses Op21fc ----------
18174Op21fc:
18175  str r4,[r7,#0x50] ;@ Save prev PC + 2
18176  str r5,[r7,#0x5c] ;@ Save Cycles
18177
18178;@ EaCalc : Get '#$33333333' into r1:
18179  ldrh r2,[r4],#2 ;@ Fetch immediate value
18180  ldrh r3,[r4],#2
18181  orr r1,r3,r2,lsl #16
18182;@ EaRead : Read '#$33333333' (address in r1) into r1:
18183  tst r1,r1
18184
18185  and r10,r1,#0x80000000 ;@ r10=N_flag
18186  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18187
18188;@ EaCalc : Get '$3333.w' into r0:
18189  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18190;@ EaWrite: Write r1 into '$3333.w' (address in r0):
18191  str r4,[r7,#0x40] ;@ Save PC
18192  bic r0,r0,#0xff000000
18193  bl m68k_write32 ;@ Call write32(r0,r1) handler
18194
18195  ldr r5,[r7,#0x5c] ;@ Load Cycles
18196  ldrh r8,[r4],#2 ;@ Fetch next opcode
18197  subs r5,r5,#24 ;@ Subtract cycles
18198  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18199  b CycloneEnd
18200
18201;@ ---------- [23c0] move.l d0, $33333333.l uses Op23c0 ----------
18202Op23c0:
18203  str r4,[r7,#0x50] ;@ Save prev PC + 2
18204  str r5,[r7,#0x5c] ;@ Save Cycles
18205
18206;@ EaCalc : Get register index into r1:
18207  and r1,r8,#0x000f
18208;@ EaRead : Read register[r1] into r1:
18209  ldr r1,[r7,r1,lsl #2]
18210  tst r1,r1
18211
18212  and r10,r1,#0x80000000 ;@ r10=N_flag
18213  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18214
18215;@ EaCalc : Get '$33333333.l' into r0:
18216  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18217  ldrh r0,[r4],#2
18218  orr r0,r0,r2,lsl #16
18219;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18220  str r4,[r7,#0x40] ;@ Save PC
18221  bic r0,r0,#0xff000000
18222  bl m68k_write32 ;@ Call write32(r0,r1) handler
18223
18224  ldr r5,[r7,#0x5c] ;@ Load Cycles
18225  ldrh r8,[r4],#2 ;@ Fetch next opcode
18226  subs r5,r5,#20 ;@ Subtract cycles
18227  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18228  b CycloneEnd
18229
18230;@ ---------- [23d0] move.l (a0), $33333333.l uses Op23d0 ----------
18231Op23d0:
18232  str r4,[r7,#0x50] ;@ Save prev PC + 2
18233  str r5,[r7,#0x5c] ;@ Save Cycles
18234
18235;@ EaCalc : Get '(a0)' into r0:
18236  and r2,r8,#0x000f
18237  orr r2,r2,#0x8 ;@ A0-7
18238  ldr r0,[r7,r2,lsl #2]
18239;@ EaRead : Read '(a0)' (address in r0) into r1:
18240  str r4,[r7,#0x40] ;@ Save PC
18241  bic r0,r0,#0xff000000
18242  bl m68k_read32 ;@ Call read32(r0) handler
18243  movs r1,r0
18244
18245  and r10,r1,#0x80000000 ;@ r10=N_flag
18246  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18247
18248;@ EaCalc : Get '$33333333.l' into r0:
18249  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18250  ldrh r0,[r4],#2
18251  orr r0,r0,r2,lsl #16
18252;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18253  str r4,[r7,#0x40] ;@ Save PC
18254  bic r0,r0,#0xff000000
18255  bl m68k_write32 ;@ Call write32(r0,r1) handler
18256
18257  ldr r5,[r7,#0x5c] ;@ Load Cycles
18258  ldrh r8,[r4],#2 ;@ Fetch next opcode
18259  subs r5,r5,#28 ;@ Subtract cycles
18260  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18261  b CycloneEnd
18262
18263;@ ---------- [23d8] move.l (a0)+, $33333333.l uses Op23d8 ----------
18264Op23d8:
18265  str r4,[r7,#0x50] ;@ Save prev PC + 2
18266  str r5,[r7,#0x5c] ;@ Save Cycles
18267
18268;@ EaCalc : Get '(a0)+' into r0:
18269  and r2,r8,#0x000f
18270  ldr r0,[r7,r2,lsl #2]
18271  add r3,r0,#4 ;@ Post-increment An
18272  str r3,[r7,r2,lsl #2]
18273;@ EaRead : Read '(a0)+' (address in r0) into r1:
18274  str r4,[r7,#0x40] ;@ Save PC
18275  bic r0,r0,#0xff000000
18276  bl m68k_read32 ;@ Call read32(r0) handler
18277  movs r1,r0
18278
18279  and r10,r1,#0x80000000 ;@ r10=N_flag
18280  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18281
18282;@ EaCalc : Get '$33333333.l' into r0:
18283  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18284  ldrh r0,[r4],#2
18285  orr r0,r0,r2,lsl #16
18286;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18287  str r4,[r7,#0x40] ;@ Save PC
18288  bic r0,r0,#0xff000000
18289  bl m68k_write32 ;@ Call write32(r0,r1) handler
18290
18291  ldr r5,[r7,#0x5c] ;@ Load Cycles
18292  ldrh r8,[r4],#2 ;@ Fetch next opcode
18293  subs r5,r5,#28 ;@ Subtract cycles
18294  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18295  b CycloneEnd
18296
18297;@ ---------- [23e0] move.l -(a0), $33333333.l uses Op23e0 ----------
18298Op23e0:
18299  str r4,[r7,#0x50] ;@ Save prev PC + 2
18300  str r5,[r7,#0x5c] ;@ Save Cycles
18301
18302;@ EaCalc : Get '-(a0)' into r0:
18303  and r2,r8,#0x000f
18304  orr r2,r2,#0x8 ;@ A0-7
18305  ldr r0,[r7,r2,lsl #2]
18306  sub r0,r0,#4 ;@ Pre-decrement An
18307  str r0,[r7,r2,lsl #2]
18308;@ EaRead : Read '-(a0)' (address in r0) into r1:
18309  str r4,[r7,#0x40] ;@ Save PC
18310  bic r0,r0,#0xff000000
18311  bl m68k_read32 ;@ Call read32(r0) handler
18312  movs r1,r0
18313
18314  and r10,r1,#0x80000000 ;@ r10=N_flag
18315  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18316
18317;@ EaCalc : Get '$33333333.l' into r0:
18318  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18319  ldrh r0,[r4],#2
18320  orr r0,r0,r2,lsl #16
18321;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18322  str r4,[r7,#0x40] ;@ Save PC
18323  bic r0,r0,#0xff000000
18324  bl m68k_write32 ;@ Call write32(r0,r1) handler
18325
18326  ldr r5,[r7,#0x5c] ;@ Load Cycles
18327  ldrh r8,[r4],#2 ;@ Fetch next opcode
18328  subs r5,r5,#30 ;@ Subtract cycles
18329  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18330  b CycloneEnd
18331
18332;@ ---------- [23e8] move.l ($3333,a0), $33333333.l uses Op23e8 ----------
18333Op23e8:
18334  str r4,[r7,#0x50] ;@ Save prev PC + 2
18335  str r5,[r7,#0x5c] ;@ Save Cycles
18336
18337;@ EaCalc : Get '($3333,a0)' into r0:
18338  ldrsh r0,[r4],#2 ;@ Fetch offset
18339  and r2,r8,#0x000f
18340  ldr r2,[r7,r2,lsl #2]
18341  add r0,r0,r2 ;@ Add on offset
18342;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
18343  str r4,[r7,#0x40] ;@ Save PC
18344  bic r0,r0,#0xff000000
18345  bl m68k_read32 ;@ Call read32(r0) handler
18346  movs r1,r0
18347
18348  and r10,r1,#0x80000000 ;@ r10=N_flag
18349  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18350
18351;@ EaCalc : Get '$33333333.l' into r0:
18352  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18353  ldrh r0,[r4],#2
18354  orr r0,r0,r2,lsl #16
18355;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18356  str r4,[r7,#0x40] ;@ Save PC
18357  bic r0,r0,#0xff000000
18358  bl m68k_write32 ;@ Call write32(r0,r1) handler
18359
18360  ldr r5,[r7,#0x5c] ;@ Load Cycles
18361  ldrh r8,[r4],#2 ;@ Fetch next opcode
18362  subs r5,r5,#32 ;@ Subtract cycles
18363  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18364  b CycloneEnd
18365
18366;@ ---------- [23f0] move.l ($33,a0,d3.w*2), $33333333.l uses Op23f0 ----------
18367Op23f0:
18368  str r4,[r7,#0x50] ;@ Save prev PC + 2
18369  str r5,[r7,#0x5c] ;@ Save Cycles
18370
18371;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18372;@ Get extension word into r3:
18373  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18374  mov r2,r3,lsr #10
18375  tst r3,#0x0800 ;@ Is Rn Word or Long
18376  and r2,r2,#0x3c ;@ r2=Index of Rn
18377  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18378  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18379  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18380  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18381  and r2,r8,#0x000f
18382  orr r2,r2,#0x8 ;@ A0-7
18383  ldr r2,[r7,r2,lsl #2]
18384  add r0,r2,r3 ;@ r0=Disp+An+Rn
18385;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
18386  str r4,[r7,#0x40] ;@ Save PC
18387  bic r0,r0,#0xff000000
18388  bl m68k_read32 ;@ Call read32(r0) handler
18389  movs r1,r0
18390
18391  and r10,r1,#0x80000000 ;@ r10=N_flag
18392  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18393
18394;@ EaCalc : Get '$33333333.l' into r0:
18395  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18396  ldrh r0,[r4],#2
18397  orr r0,r0,r2,lsl #16
18398;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18399  str r4,[r7,#0x40] ;@ Save PC
18400  bic r0,r0,#0xff000000
18401  bl m68k_write32 ;@ Call write32(r0,r1) handler
18402
18403  ldr r5,[r7,#0x5c] ;@ Load Cycles
18404  ldrh r8,[r4],#2 ;@ Fetch next opcode
18405  subs r5,r5,#34 ;@ Subtract cycles
18406  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18407  b CycloneEnd
18408
18409;@ ---------- [23f8] move.l $3333.w, $33333333.l uses Op23f8 ----------
18410Op23f8:
18411  str r4,[r7,#0x50] ;@ Save prev PC + 2
18412  str r5,[r7,#0x5c] ;@ Save Cycles
18413
18414;@ EaCalc : Get '$3333.w' into r0:
18415  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18416;@ EaRead : Read '$3333.w' (address in r0) into r1:
18417  str r4,[r7,#0x40] ;@ Save PC
18418  bic r0,r0,#0xff000000
18419  bl m68k_read32 ;@ Call read32(r0) handler
18420  movs r1,r0
18421
18422  and r10,r1,#0x80000000 ;@ r10=N_flag
18423  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18424
18425;@ EaCalc : Get '$33333333.l' into r0:
18426  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18427  ldrh r0,[r4],#2
18428  orr r0,r0,r2,lsl #16
18429;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18430  str r4,[r7,#0x40] ;@ Save PC
18431  bic r0,r0,#0xff000000
18432  bl m68k_write32 ;@ Call write32(r0,r1) handler
18433
18434  ldr r5,[r7,#0x5c] ;@ Load Cycles
18435  ldrh r8,[r4],#2 ;@ Fetch next opcode
18436  subs r5,r5,#32 ;@ Subtract cycles
18437  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18438  b CycloneEnd
18439
18440;@ ---------- [23f9] move.l $33333333.l, $33333333.l uses Op23f9 ----------
18441Op23f9:
18442  str r4,[r7,#0x50] ;@ Save prev PC + 2
18443  str r5,[r7,#0x5c] ;@ Save Cycles
18444
18445;@ EaCalc : Get '$33333333.l' into r0:
18446  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18447  ldrh r0,[r4],#2
18448  orr r0,r0,r2,lsl #16
18449;@ EaRead : Read '$33333333.l' (address in r0) into r1:
18450  str r4,[r7,#0x40] ;@ Save PC
18451  bic r0,r0,#0xff000000
18452  bl m68k_read32 ;@ Call read32(r0) handler
18453  movs r1,r0
18454
18455  and r10,r1,#0x80000000 ;@ r10=N_flag
18456  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18457
18458;@ EaCalc : Get '$33333333.l' into r0:
18459  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18460  ldrh r0,[r4],#2
18461  orr r0,r0,r2,lsl #16
18462;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18463  str r4,[r7,#0x40] ;@ Save PC
18464  bic r0,r0,#0xff000000
18465  bl m68k_write32 ;@ Call write32(r0,r1) handler
18466
18467  ldr r5,[r7,#0x5c] ;@ Load Cycles
18468  ldrh r8,[r4],#2 ;@ Fetch next opcode
18469  subs r5,r5,#36 ;@ Subtract cycles
18470  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18471  b CycloneEnd
18472
18473;@ ---------- [23fa] move.l ($3333,pc), $33333333.l; =3335 uses Op23fa ----------
18474Op23fa:
18475  str r4,[r7,#0x50] ;@ Save prev PC + 2
18476  str r5,[r7,#0x5c] ;@ Save Cycles
18477
18478;@ EaCalc : Get '($3333,pc)' into r0:
18479  ldr r0,[r7,#0x60] ;@ Get Memory base
18480  sub r0,r4,r0 ;@ Real PC
18481  ldrsh r2,[r4],#2 ;@ Fetch extension
18482  add r0,r2,r0 ;@ ($nn,PC)
18483;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
18484  str r4,[r7,#0x40] ;@ Save PC
18485  bic r0,r0,#0xff000000
18486  bl m68k_fetch32 ;@ Call fetch32(r0) handler
18487  movs r1,r0
18488
18489  and r10,r1,#0x80000000 ;@ r10=N_flag
18490  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18491
18492;@ EaCalc : Get '$33333333.l' into r0:
18493  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18494  ldrh r0,[r4],#2
18495  orr r0,r0,r2,lsl #16
18496;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18497  str r4,[r7,#0x40] ;@ Save PC
18498  bic r0,r0,#0xff000000
18499  bl m68k_write32 ;@ Call write32(r0,r1) handler
18500
18501  ldr r5,[r7,#0x5c] ;@ Load Cycles
18502  ldrh r8,[r4],#2 ;@ Fetch next opcode
18503  subs r5,r5,#32 ;@ Subtract cycles
18504  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18505  b CycloneEnd
18506
18507;@ ---------- [23fb] move.l ($33,pc,d3.w*2), $33333333.l; =35 uses Op23fb ----------
18508Op23fb:
18509  str r4,[r7,#0x50] ;@ Save prev PC + 2
18510  str r5,[r7,#0x5c] ;@ Save Cycles
18511
18512;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
18513  ldr r0,[r7,#0x60] ;@ Get Memory base
18514  ldrh r3,[r4] ;@ Get extension word
18515  sub r0,r4,r0 ;@ r0=PC
18516  add r4,r4,#2
18517  mov r2,r3,lsr #10
18518  tst r3,#0x0800 ;@ Is Rn Word or Long
18519  and r2,r2,#0x3c ;@ r2=Index of Rn
18520  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18521  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18522  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
18523  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
18524  add r0,r2,r0 ;@ r0=Disp+PC+Rn
18525;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
18526  str r4,[r7,#0x40] ;@ Save PC
18527  bic r0,r0,#0xff000000
18528  bl m68k_fetch32 ;@ Call fetch32(r0) handler
18529  movs r1,r0
18530
18531  and r10,r1,#0x80000000 ;@ r10=N_flag
18532  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18533
18534;@ EaCalc : Get '$33333333.l' into r0:
18535  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18536  ldrh r0,[r4],#2
18537  orr r0,r0,r2,lsl #16
18538;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18539  str r4,[r7,#0x40] ;@ Save PC
18540  bic r0,r0,#0xff000000
18541  bl m68k_write32 ;@ Call write32(r0,r1) handler
18542
18543  ldr r5,[r7,#0x5c] ;@ Load Cycles
18544  ldrh r8,[r4],#2 ;@ Fetch next opcode
18545  subs r5,r5,#34 ;@ Subtract cycles
18546  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18547  b CycloneEnd
18548
18549;@ ---------- [23fc] move.l #$33333333, $33333333.l uses Op23fc ----------
18550Op23fc:
18551  str r4,[r7,#0x50] ;@ Save prev PC + 2
18552  str r5,[r7,#0x5c] ;@ Save Cycles
18553
18554;@ EaCalc : Get '#$33333333' into r1:
18555  ldrh r2,[r4],#2 ;@ Fetch immediate value
18556  ldrh r3,[r4],#2
18557  orr r1,r3,r2,lsl #16
18558;@ EaRead : Read '#$33333333' (address in r1) into r1:
18559  tst r1,r1
18560
18561  and r10,r1,#0x80000000 ;@ r10=N_flag
18562  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18563
18564;@ EaCalc : Get '$33333333.l' into r0:
18565  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18566  ldrh r0,[r4],#2
18567  orr r0,r0,r2,lsl #16
18568;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
18569  str r4,[r7,#0x40] ;@ Save PC
18570  bic r0,r0,#0xff000000
18571  bl m68k_write32 ;@ Call write32(r0,r1) handler
18572
18573  ldr r5,[r7,#0x5c] ;@ Load Cycles
18574  ldrh r8,[r4],#2 ;@ Fetch next opcode
18575  subs r5,r5,#28 ;@ Subtract cycles
18576  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18577  b CycloneEnd
18578
18579;@ ---------- [2ec0] move.l d0, (a7)+ uses Op2ec0 ----------
18580Op2ec0:
18581  str r4,[r7,#0x50] ;@ Save prev PC + 2
18582  str r5,[r7,#0x5c] ;@ Save Cycles
18583
18584;@ EaCalc : Get register index into r1:
18585  and r1,r8,#0x000f
18586;@ EaRead : Read register[r1] into r1:
18587  ldr r1,[r7,r1,lsl #2]
18588  tst r1,r1
18589
18590  and r10,r1,#0x80000000 ;@ r10=N_flag
18591  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18592
18593;@ EaCalc : Get '(a7)+' into r0:
18594  ldr r0,[r7,#0x3c] ;@ A7
18595  add r3,r0,#4 ;@ Post-increment An
18596  str r3,[r7,#0x3c] ;@ A7
18597;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18598  str r4,[r7,#0x40] ;@ Save PC
18599  bic r0,r0,#0xff000000
18600  bl m68k_write32 ;@ Call write32(r0,r1) handler
18601
18602  ldr r5,[r7,#0x5c] ;@ Load Cycles
18603  ldrh r8,[r4],#2 ;@ Fetch next opcode
18604  subs r5,r5,#12 ;@ Subtract cycles
18605  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18606  b CycloneEnd
18607
18608;@ ---------- [2ed0] move.l (a0), (a7)+ uses Op2ed0 ----------
18609Op2ed0:
18610  str r4,[r7,#0x50] ;@ Save prev PC + 2
18611  str r5,[r7,#0x5c] ;@ Save Cycles
18612
18613;@ EaCalc : Get '(a0)' into r0:
18614  and r2,r8,#0x000f
18615  orr r2,r2,#0x8 ;@ A0-7
18616  ldr r0,[r7,r2,lsl #2]
18617;@ EaRead : Read '(a0)' (address in r0) into r1:
18618  str r4,[r7,#0x40] ;@ Save PC
18619  bic r0,r0,#0xff000000
18620  bl m68k_read32 ;@ Call read32(r0) handler
18621  movs r1,r0
18622
18623  and r10,r1,#0x80000000 ;@ r10=N_flag
18624  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18625
18626;@ EaCalc : Get '(a7)+' into r0:
18627  ldr r0,[r7,#0x3c] ;@ A7
18628  add r3,r0,#4 ;@ Post-increment An
18629  str r3,[r7,#0x3c] ;@ A7
18630;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18631  bic r0,r0,#0xff000000
18632  bl m68k_write32 ;@ Call write32(r0,r1) handler
18633
18634  ldr r5,[r7,#0x5c] ;@ Load Cycles
18635  ldrh r8,[r4],#2 ;@ Fetch next opcode
18636  subs r5,r5,#20 ;@ Subtract cycles
18637  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18638  b CycloneEnd
18639
18640;@ ---------- [2ed8] move.l (a0)+, (a7)+ uses Op2ed8 ----------
18641Op2ed8:
18642  str r4,[r7,#0x50] ;@ Save prev PC + 2
18643  str r5,[r7,#0x5c] ;@ Save Cycles
18644
18645;@ EaCalc : Get '(a0)+' into r0:
18646  and r2,r8,#0x000f
18647  ldr r0,[r7,r2,lsl #2]
18648  add r3,r0,#4 ;@ Post-increment An
18649  str r3,[r7,r2,lsl #2]
18650;@ EaRead : Read '(a0)+' (address in r0) into r1:
18651  str r4,[r7,#0x40] ;@ Save PC
18652  bic r0,r0,#0xff000000
18653  bl m68k_read32 ;@ Call read32(r0) handler
18654  movs r1,r0
18655
18656  and r10,r1,#0x80000000 ;@ r10=N_flag
18657  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18658
18659;@ EaCalc : Get '(a7)+' into r0:
18660  ldr r0,[r7,#0x3c] ;@ A7
18661  add r3,r0,#4 ;@ Post-increment An
18662  str r3,[r7,#0x3c] ;@ A7
18663;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18664  bic r0,r0,#0xff000000
18665  bl m68k_write32 ;@ Call write32(r0,r1) handler
18666
18667  ldr r5,[r7,#0x5c] ;@ Load Cycles
18668  ldrh r8,[r4],#2 ;@ Fetch next opcode
18669  subs r5,r5,#20 ;@ Subtract cycles
18670  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18671  b CycloneEnd
18672
18673;@ ---------- [2ee0] move.l -(a0), (a7)+ uses Op2ee0 ----------
18674Op2ee0:
18675  str r4,[r7,#0x50] ;@ Save prev PC + 2
18676  str r5,[r7,#0x5c] ;@ Save Cycles
18677
18678;@ EaCalc : Get '-(a0)' into r0:
18679  and r2,r8,#0x000f
18680  orr r2,r2,#0x8 ;@ A0-7
18681  ldr r0,[r7,r2,lsl #2]
18682  sub r0,r0,#4 ;@ Pre-decrement An
18683  str r0,[r7,r2,lsl #2]
18684;@ EaRead : Read '-(a0)' (address in r0) into r1:
18685  str r4,[r7,#0x40] ;@ Save PC
18686  bic r0,r0,#0xff000000
18687  bl m68k_read32 ;@ Call read32(r0) handler
18688  movs r1,r0
18689
18690  and r10,r1,#0x80000000 ;@ r10=N_flag
18691  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18692
18693;@ EaCalc : Get '(a7)+' into r0:
18694  ldr r0,[r7,#0x3c] ;@ A7
18695  add r3,r0,#4 ;@ Post-increment An
18696  str r3,[r7,#0x3c] ;@ A7
18697;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18698  bic r0,r0,#0xff000000
18699  bl m68k_write32 ;@ Call write32(r0,r1) handler
18700
18701  ldr r5,[r7,#0x5c] ;@ Load Cycles
18702  ldrh r8,[r4],#2 ;@ Fetch next opcode
18703  subs r5,r5,#22 ;@ Subtract cycles
18704  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18705  b CycloneEnd
18706
18707;@ ---------- [2ee8] move.l ($3333,a0), (a7)+ uses Op2ee8 ----------
18708Op2ee8:
18709  str r4,[r7,#0x50] ;@ Save prev PC + 2
18710  str r5,[r7,#0x5c] ;@ Save Cycles
18711
18712;@ EaCalc : Get '($3333,a0)' into r0:
18713  ldrsh r0,[r4],#2 ;@ Fetch offset
18714  and r2,r8,#0x000f
18715  ldr r2,[r7,r2,lsl #2]
18716  add r0,r0,r2 ;@ Add on offset
18717;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
18718  str r4,[r7,#0x40] ;@ Save PC
18719  bic r0,r0,#0xff000000
18720  bl m68k_read32 ;@ Call read32(r0) handler
18721  movs r1,r0
18722
18723  and r10,r1,#0x80000000 ;@ r10=N_flag
18724  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18725
18726;@ EaCalc : Get '(a7)+' into r0:
18727  ldr r0,[r7,#0x3c] ;@ A7
18728  add r3,r0,#4 ;@ Post-increment An
18729  str r3,[r7,#0x3c] ;@ A7
18730;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18731  bic r0,r0,#0xff000000
18732  bl m68k_write32 ;@ Call write32(r0,r1) handler
18733
18734  ldr r5,[r7,#0x5c] ;@ Load Cycles
18735  ldrh r8,[r4],#2 ;@ Fetch next opcode
18736  subs r5,r5,#24 ;@ Subtract cycles
18737  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18738  b CycloneEnd
18739
18740;@ ---------- [2ef0] move.l ($33,a0,d3.w*2), (a7)+ uses Op2ef0 ----------
18741Op2ef0:
18742  str r4,[r7,#0x50] ;@ Save prev PC + 2
18743  str r5,[r7,#0x5c] ;@ Save Cycles
18744
18745;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18746;@ Get extension word into r3:
18747  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18748  mov r2,r3,lsr #10
18749  tst r3,#0x0800 ;@ Is Rn Word or Long
18750  and r2,r2,#0x3c ;@ r2=Index of Rn
18751  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18752  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18753  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18754  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18755  and r2,r8,#0x000f
18756  orr r2,r2,#0x8 ;@ A0-7
18757  ldr r2,[r7,r2,lsl #2]
18758  add r0,r2,r3 ;@ r0=Disp+An+Rn
18759;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
18760  str r4,[r7,#0x40] ;@ Save PC
18761  bic r0,r0,#0xff000000
18762  bl m68k_read32 ;@ Call read32(r0) handler
18763  movs r1,r0
18764
18765  and r10,r1,#0x80000000 ;@ r10=N_flag
18766  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18767
18768;@ EaCalc : Get '(a7)+' into r0:
18769  ldr r0,[r7,#0x3c] ;@ A7
18770  add r3,r0,#4 ;@ Post-increment An
18771  str r3,[r7,#0x3c] ;@ A7
18772;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18773  bic r0,r0,#0xff000000
18774  bl m68k_write32 ;@ Call write32(r0,r1) handler
18775
18776  ldr r5,[r7,#0x5c] ;@ Load Cycles
18777  ldrh r8,[r4],#2 ;@ Fetch next opcode
18778  subs r5,r5,#26 ;@ Subtract cycles
18779  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18780  b CycloneEnd
18781
18782;@ ---------- [2ef8] move.l $3333.w, (a7)+ uses Op2ef8 ----------
18783Op2ef8:
18784  str r4,[r7,#0x50] ;@ Save prev PC + 2
18785  str r5,[r7,#0x5c] ;@ Save Cycles
18786
18787;@ EaCalc : Get '$3333.w' into r0:
18788  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18789;@ EaRead : Read '$3333.w' (address in r0) into r1:
18790  str r4,[r7,#0x40] ;@ Save PC
18791  bic r0,r0,#0xff000000
18792  bl m68k_read32 ;@ Call read32(r0) handler
18793  movs r1,r0
18794
18795  and r10,r1,#0x80000000 ;@ r10=N_flag
18796  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18797
18798;@ EaCalc : Get '(a7)+' into r0:
18799  ldr r0,[r7,#0x3c] ;@ A7
18800  add r3,r0,#4 ;@ Post-increment An
18801  str r3,[r7,#0x3c] ;@ A7
18802;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18803  bic r0,r0,#0xff000000
18804  bl m68k_write32 ;@ Call write32(r0,r1) handler
18805
18806  ldr r5,[r7,#0x5c] ;@ Load Cycles
18807  ldrh r8,[r4],#2 ;@ Fetch next opcode
18808  subs r5,r5,#24 ;@ Subtract cycles
18809  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18810  b CycloneEnd
18811
18812;@ ---------- [2ef9] move.l $33333333.l, (a7)+ uses Op2ef9 ----------
18813Op2ef9:
18814  str r4,[r7,#0x50] ;@ Save prev PC + 2
18815  str r5,[r7,#0x5c] ;@ Save Cycles
18816
18817;@ EaCalc : Get '$33333333.l' into r0:
18818  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18819  ldrh r0,[r4],#2
18820  orr r0,r0,r2,lsl #16
18821;@ EaRead : Read '$33333333.l' (address in r0) into r1:
18822  str r4,[r7,#0x40] ;@ Save PC
18823  bic r0,r0,#0xff000000
18824  bl m68k_read32 ;@ Call read32(r0) handler
18825  movs r1,r0
18826
18827  and r10,r1,#0x80000000 ;@ r10=N_flag
18828  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18829
18830;@ EaCalc : Get '(a7)+' into r0:
18831  ldr r0,[r7,#0x3c] ;@ A7
18832  add r3,r0,#4 ;@ Post-increment An
18833  str r3,[r7,#0x3c] ;@ A7
18834;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18835  bic r0,r0,#0xff000000
18836  bl m68k_write32 ;@ Call write32(r0,r1) handler
18837
18838  ldr r5,[r7,#0x5c] ;@ Load Cycles
18839  ldrh r8,[r4],#2 ;@ Fetch next opcode
18840  subs r5,r5,#28 ;@ Subtract cycles
18841  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18842  b CycloneEnd
18843
18844;@ ---------- [2efa] move.l ($3333,pc), (a7)+; =3335 uses Op2efa ----------
18845Op2efa:
18846  str r4,[r7,#0x50] ;@ Save prev PC + 2
18847  str r5,[r7,#0x5c] ;@ Save Cycles
18848
18849;@ EaCalc : Get '($3333,pc)' into r0:
18850  ldr r0,[r7,#0x60] ;@ Get Memory base
18851  sub r0,r4,r0 ;@ Real PC
18852  ldrsh r2,[r4],#2 ;@ Fetch extension
18853  add r0,r2,r0 ;@ ($nn,PC)
18854;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
18855  str r4,[r7,#0x40] ;@ Save PC
18856  bic r0,r0,#0xff000000
18857  bl m68k_fetch32 ;@ Call fetch32(r0) handler
18858  movs r1,r0
18859
18860  and r10,r1,#0x80000000 ;@ r10=N_flag
18861  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18862
18863;@ EaCalc : Get '(a7)+' into r0:
18864  ldr r0,[r7,#0x3c] ;@ A7
18865  add r3,r0,#4 ;@ Post-increment An
18866  str r3,[r7,#0x3c] ;@ A7
18867;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18868  bic r0,r0,#0xff000000
18869  bl m68k_write32 ;@ Call write32(r0,r1) handler
18870
18871  ldr r5,[r7,#0x5c] ;@ Load Cycles
18872  ldrh r8,[r4],#2 ;@ Fetch next opcode
18873  subs r5,r5,#24 ;@ Subtract cycles
18874  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18875  b CycloneEnd
18876
18877;@ ---------- [2efb] move.l ($33,pc,d3.w*2), (a7)+; =35 uses Op2efb ----------
18878Op2efb:
18879  str r4,[r7,#0x50] ;@ Save prev PC + 2
18880  str r5,[r7,#0x5c] ;@ Save Cycles
18881
18882;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
18883  ldr r0,[r7,#0x60] ;@ Get Memory base
18884  ldrh r3,[r4] ;@ Get extension word
18885  sub r0,r4,r0 ;@ r0=PC
18886  add r4,r4,#2
18887  mov r2,r3,lsr #10
18888  tst r3,#0x0800 ;@ Is Rn Word or Long
18889  and r2,r2,#0x3c ;@ r2=Index of Rn
18890  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18891  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18892  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
18893  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
18894  add r0,r2,r0 ;@ r0=Disp+PC+Rn
18895;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
18896  str r4,[r7,#0x40] ;@ Save PC
18897  bic r0,r0,#0xff000000
18898  bl m68k_fetch32 ;@ Call fetch32(r0) handler
18899  movs r1,r0
18900
18901  and r10,r1,#0x80000000 ;@ r10=N_flag
18902  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18903
18904;@ EaCalc : Get '(a7)+' into r0:
18905  ldr r0,[r7,#0x3c] ;@ A7
18906  add r3,r0,#4 ;@ Post-increment An
18907  str r3,[r7,#0x3c] ;@ A7
18908;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18909  bic r0,r0,#0xff000000
18910  bl m68k_write32 ;@ Call write32(r0,r1) handler
18911
18912  ldr r5,[r7,#0x5c] ;@ Load Cycles
18913  ldrh r8,[r4],#2 ;@ Fetch next opcode
18914  subs r5,r5,#26 ;@ Subtract cycles
18915  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18916  b CycloneEnd
18917
18918;@ ---------- [2efc] move.l #$33333333, (a7)+ uses Op2efc ----------
18919Op2efc:
18920  str r4,[r7,#0x50] ;@ Save prev PC + 2
18921  str r5,[r7,#0x5c] ;@ Save Cycles
18922
18923;@ EaCalc : Get '#$33333333' into r1:
18924  ldrh r2,[r4],#2 ;@ Fetch immediate value
18925  ldrh r3,[r4],#2
18926  orr r1,r3,r2,lsl #16
18927;@ EaRead : Read '#$33333333' (address in r1) into r1:
18928  tst r1,r1
18929
18930  and r10,r1,#0x80000000 ;@ r10=N_flag
18931  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18932
18933;@ EaCalc : Get '(a7)+' into r0:
18934  ldr r0,[r7,#0x3c] ;@ A7
18935  add r3,r0,#4 ;@ Post-increment An
18936  str r3,[r7,#0x3c] ;@ A7
18937;@ EaWrite: Write r1 into '(a7)+' (address in r0):
18938  str r4,[r7,#0x40] ;@ Save PC
18939  bic r0,r0,#0xff000000
18940  bl m68k_write32 ;@ Call write32(r0,r1) handler
18941
18942  ldr r5,[r7,#0x5c] ;@ Load Cycles
18943  ldrh r8,[r4],#2 ;@ Fetch next opcode
18944  subs r5,r5,#20 ;@ Subtract cycles
18945  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18946  b CycloneEnd
18947
18948;@ ---------- [2f00] move.l d0, -(a7) uses Op2f00 ----------
18949Op2f00:
18950  str r4,[r7,#0x50] ;@ Save prev PC + 2
18951  str r5,[r7,#0x5c] ;@ Save Cycles
18952
18953;@ EaCalc : Get register index into r1:
18954  and r1,r8,#0x000f
18955;@ EaRead : Read register[r1] into r1:
18956  ldr r1,[r7,r1,lsl #2]
18957  tst r1,r1
18958
18959  and r10,r1,#0x80000000 ;@ r10=N_flag
18960  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18961
18962;@ EaCalc : Get '-(a7)' into r8:
18963  ldr r8,[r7,#0x3c] ;@ A7
18964  sub r8,r8,#4 ;@ Pre-decrement An
18965  str r8,[r7,#0x3c] ;@ A7
18966  mov r11,r1
18967  add r0,r8,#2
18968;@ EaWrite: Write r1 into '-(a7)' (address in r0):
18969  uxth r1,r1 ;@ zero extend
18970  str r4,[r7,#0x40] ;@ Save PC
18971  bic r0,r0,#0xff000000
18972  bl m68k_write16 ;@ Call write16(r0,r1) handler
18973
18974;@ EaWrite: Write r11 into '-(a7)' (address in r8):
18975  mov r1,r11,lsr #16
18976  bic r0,r8,#0xff000000
18977  bl m68k_write16 ;@ Call write16(r0,r1) handler
18978
18979  ldr r5,[r7,#0x5c] ;@ Load Cycles
18980  ldrh r8,[r4],#2 ;@ Fetch next opcode
18981  subs r5,r5,#12 ;@ Subtract cycles
18982  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18983  b CycloneEnd
18984
18985;@ ---------- [2f10] move.l (a0), -(a7) uses Op2f10 ----------
18986Op2f10:
18987  str r4,[r7,#0x50] ;@ Save prev PC + 2
18988  str r5,[r7,#0x5c] ;@ Save Cycles
18989
18990;@ EaCalc : Get '(a0)' into r0:
18991  and r2,r8,#0x000f
18992  orr r2,r2,#0x8 ;@ A0-7
18993  ldr r0,[r7,r2,lsl #2]
18994;@ EaRead : Read '(a0)' (address in r0) into r1:
18995  str r4,[r7,#0x40] ;@ Save PC
18996  bic r0,r0,#0xff000000
18997  bl m68k_read32 ;@ Call read32(r0) handler
18998  movs r1,r0
18999
19000  and r10,r1,#0x80000000 ;@ r10=N_flag
19001  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19002
19003;@ EaCalc : Get '-(a7)' into r8:
19004  ldr r8,[r7,#0x3c] ;@ A7
19005  sub r8,r8,#4 ;@ Pre-decrement An
19006  str r8,[r7,#0x3c] ;@ A7
19007  mov r11,r1
19008  add r0,r8,#2
19009;@ EaWrite: Write r1 into '-(a7)' (address in r0):
19010  uxth r1,r1 ;@ zero extend
19011  bic r0,r0,#0xff000000
19012  bl m68k_write16 ;@ Call write16(r0,r1) handler
19013
19014;@ EaWrite: Write r11 into '-(a7)' (address in r8):
19015  mov r1,r11,lsr #16
19016  bic r0,r8,#0xff000000
19017  bl m68k_write16 ;@ Call write16(r0,r1) handler
19018
19019  ldr r5,[r7,#0x5c] ;@ Load Cycles
19020  ldrh r8,[r4],#2 ;@ Fetch next opcode
19021  subs r5,r5,#20 ;@ Subtract cycles
19022  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19023  b CycloneEnd
19024
19025;@ ---------- [2f18] move.l (a0)+, -(a7) uses Op2f18 ----------
19026Op2f18:
19027  str r4,[r7,#0x50] ;@ Save prev PC + 2
19028  str r5,[r7,#0x5c] ;@ Save Cycles
19029
19030;@ EaCalc : Get '(a0)+' into r0:
19031  and r2,r8,#0x000f
19032  ldr r0,[r7,r2,lsl #2]
19033  add r3,r0,#4 ;@ Post-increment An
19034  str r3,[r7,r2,lsl #2]
19035;@ EaRead : Read '(a0)+' (address in r0) into r1:
19036  str r4,[r7,#0x40] ;@ Save PC
19037  bic r0,r0,#0xff000000
19038  bl m68k_read32 ;@ Call read32(r0) handler
19039  movs r1,r0
19040
19041  and r10,r1,#0x80000000 ;@ r10=N_flag
19042  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19043
19044;@ EaCalc : Get '-(a7)' into r8:
19045  ldr r8,[r7,#0x3c] ;@ A7
19046  sub r8,r8,#4 ;@ Pre-decrement An
19047  str r8,[r7,#0x3c] ;@ A7
19048  mov r11,r1
19049  add r0,r8,#2
19050;@ EaWrite: Write r1 into '-(a7)' (address in r0):
19051  uxth r1,r1 ;@ zero extend
19052  bic r0,r0,#0xff000000
19053  bl m68k_write16 ;@ Call write16(r0,r1) handler
19054
19055;@ EaWrite: Write r11 into '-(a7)' (address in r8):
19056  mov r1,r11,lsr #16
19057  bic r0,r8,#0xff000000
19058  bl m68k_write16 ;@ Call write16(r0,r1) handler
19059
19060  ldr r5,[r7,#0x5c] ;@ Load Cycles
19061  ldrh r8,[r4],#2 ;@ Fetch next opcode
19062  subs r5,r5,#20 ;@ Subtract cycles
19063  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19064  b CycloneEnd
19065
19066;@ ---------- [2f20] move.l -(a0), -(a7) uses Op2f20 ----------
19067Op2f20:
19068  str r4,[r7,#0x50] ;@ Save prev PC + 2
19069  str r5,[r7,#0x5c] ;@ Save Cycles
19070
19071;@ EaCalc : Get '-(a0)' into r0:
19072  and r2,r8,#0x000f
19073  orr r2,r2,#0x8 ;@ A0-7
19074  ldr r0,[r7,r2,lsl #2]
19075  sub r0,r0,#4 ;@ Pre-decrement An
19076  str r0,[r7,r2,lsl #2]
19077;@ EaRead : Read '-(a0)' (address in r0) into r1:
19078  str r4,[r7,#0x40] ;@ Save PC
19079  bic r0,r0,#0xff000000
19080  bl m68k_read32 ;@ Call read32(r0) handler
19081  movs r1,r0
19082
19083  and r10,r1,#0x80000000 ;@ r10=N_flag
19084  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19085
19086;@ EaCalc : Get '-(a7)' into r8:
19087  ldr r8,[r7,#0x3c] ;@ A7
19088  sub r8,r8,#4 ;@ Pre-decrement An
19089  str r8,[r7,#0x3c] ;@ A7
19090  mov r11,r1
19091  add r0,r8,#2
19092;@ EaWrite: Write r1 into '-(a7)' (address in r0):
19093  uxth r1,r1 ;@ zero extend
19094  bic r0,r0,#0xff000000
19095  bl m68k_write16 ;@ Call write16(r0,r1) handler
19096
19097;@ EaWrite: Write r11 into '-(a7)' (address in r8):
19098  mov r1,r11,lsr #16
19099  bic r0,r8,#0xff000000
19100  bl m68k_write16 ;@ Call write16(r0,r1) handler
19101
19102  ldr r5,[r7,#0x5c] ;@ Load Cycles
19103  ldrh r8,[r4],#2 ;@ Fetch next opcode
19104  subs r5,r5,#22 ;@ Subtract cycles
19105  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19106  b CycloneEnd
19107
19108;@ ---------- [2f28] move.l ($3333,a0), -(a7) uses Op2f28 ----------
19109Op2f28:
19110  str r4,[r7,#0x50] ;@ Save prev PC + 2
19111  str r5,[r7,#0x5c] ;@ Save Cycles
19112
19113;@ EaCalc : Get '($3333,a0)' into r0:
19114  ldrsh r0,[r4],#2 ;@ Fetch offset
19115  and r2,r8,#0x000f
19116  ldr r2,[r7,r2,lsl #2]
19117  add r0,r0,r2 ;@ Add on offset
19118;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
19119  str r4,[r7,#0x40] ;@ Save PC
19120  bic r0,r0,#0xff000000
19121  bl m68k_read32 ;@ Call read32(r0) handler
19122  movs r1,r0
19123
19124  and r10,r1,#0x80000000 ;@ r10=N_flag
19125  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19126
19127;@ EaCalc : Get '-(a7)' into r8:
19128  ldr r8,[r7,#0x3c] ;@ A7
19129  sub r8,r8,#4 ;@ Pre-decrement An
19130  str r8,[r7,#0x3c] ;@ A7
19131  mov r11,r1
19132  add r0,r8,#2
19133;@ EaWrite: Write r1 into '-(a7)' (address in r0):
19134  uxth r1,r1 ;@ zero extend
19135  bic r0,r0,#0xff000000
19136  bl m68k_write16 ;@ Call write16(r0,r1) handler
19137
19138;@ EaWrite: Write r11 into '-(a7)' (address in r8):
19139  mov r1,r11,lsr #16
19140  bic r0,r8,#0xff000000
19141  bl m68k_write16 ;@ Call write16(r0,r1) handler
19142
19143  ldr r5,[r7,#0x5c] ;@ Load Cycles
19144  ldrh r8,[r4],#2 ;@ Fetch next opcode
19145  subs r5,r5,#24 ;@ Subtract cycles
19146  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19147  b CycloneEnd
19148
19149;@ ---------- [2f30] move.l ($33,a0,d3.w*2), -(a7) uses Op2f30 ----------
19150Op2f30:
19151  str r4,[r7,#0x50] ;@ Save prev PC + 2
19152  str r5,[r7,#0x5c] ;@ Save Cycles
19153
19154;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
19155;@ Get extension word into r3:
19156  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
19157  mov r2,r3,lsr #10
19158  tst r3,#0x0800 ;@ Is Rn Word or Long
19159  and r2,r2,#0x3c ;@ r2=Index of Rn
19160  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19161  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19162  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
19163  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
19164  and r2,r8,#0x000f
19165  orr r2,r2,#0x8 ;@ A0-7
19166  ldr r2,[r7,r2,lsl #2]
19167  add r0,r2,r3 ;@ r0=Disp+An+Rn
19168;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
19169  str r4,[r7,#0x40] ;@ Save PC
19170  bic r0,r0,#0xff000000
19171  bl m68k_read32 ;@ Call read32(r0) handler
19172  movs r1,r0
19173
19174  and r10,r1,#0x80000000 ;@ r10=N_flag
19175  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19176
19177;@ EaCalc : Get '-(a7)' into r8:
19178  ldr r8,[r7,#0x3c] ;@ A7
19179  sub r8,r8,#4 ;@ Pre-decrement An
19180  str r8,[r7,#0x3c] ;@ A7
19181  mov r11,r1
19182  add r0,r8,#2
19183;@ EaWrite: Write r1 into '-(a7)' (address in r0):
19184  uxth r1,r1 ;@ zero extend
19185  bic r0,r0,#0xff000000
19186  bl m68k_write16 ;@ Call write16(r0,r1) handler
19187
19188;@ EaWrite: Write r11 into '-(a7)' (address in r8):
19189  mov r1,r11,lsr #16
19190  bic r0,r8,#0xff000000
19191  bl m68k_write16 ;@ Call write16(r0,r1) handler
19192
19193  ldr r5,[r7,#0x5c] ;@ Load Cycles
19194  ldrh r8,[r4],#2 ;@ Fetch next opcode
19195  subs r5,r5,#26 ;@ Subtract cycles
19196  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19197  b CycloneEnd
19198
19199;@ ---------- [2f38] move.l $3333.w, -(a7) uses Op2f38 ----------
19200Op2f38:
19201  str r4,[r7,#0x50] ;@ Save prev PC + 2
19202  str r5,[r7,#0x5c] ;@ Save Cycles
19203
19204;@ EaCalc : Get '$3333.w' into r0:
19205  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19206;@ EaRead : Read '$3333.w' (address in r0) into r1:
19207  str r4,[r7,#0x40] ;@ Save PC
19208  bic r0,r0,#0xff000000
19209  bl m68k_read32 ;@ Call read32(r0) handler
19210  movs r1,r0
19211
19212  and r10,r1,#0x80000000 ;@ r10=N_flag
19213  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19214
19215;@ EaCalc : Get '-(a7)' into r8:
19216  ldr r8,[r7,#0x3c] ;@ A7
19217  sub r8,r8,#4 ;@ Pre-decrement An
19218  str r8,[r7,#0x3c] ;@ A7
19219  mov r11,r1
19220  add r0,r8,#2
19221;@ EaWrite: Write r1 into '-(a7)' (address in r0):
19222  uxth r1,r1 ;@ zero extend
19223  bic r0,r0,#0xff000000
19224  bl m68k_write16 ;@ Call write16(r0,r1) handler
19225
19226;@ EaWrite: Write r11 into '-(a7)' (address in r8):
19227  mov r1,r11,lsr #16
19228  bic r0,r8,#0xff000000
19229  bl m68k_write16 ;@ Call write16(r0,r1) handler
19230
19231  ldr r5,[r7,#0x5c] ;@ Load Cycles
19232  ldrh r8,[r4],#2 ;@ Fetch next opcode
19233  subs r5,r5,#24 ;@ Subtract cycles
19234  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19235  b CycloneEnd
19236
19237;@ ---------- [2f39] move.l $33333333.l, -(a7) uses Op2f39 ----------
19238Op2f39:
19239  str r4,[r7,#0x50] ;@ Save prev PC + 2
19240  str r5,[r7,#0x5c] ;@ Save Cycles
19241
19242;@ EaCalc : Get '$33333333.l' into r0:
19243  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19244  ldrh r0,[r4],#2
19245  orr r0,r0,r2,lsl #16
19246;@ EaRead : Read '$33333333.l' (address in r0) into r1:
19247  str r4,[r7,#0x40] ;@ Save PC
19248  bic r0,r0,#0xff000000
19249  bl m68k_read32 ;@ Call read32(r0) handler
19250  movs r1,r0
19251
19252  and r10,r1,#0x80000000 ;@ r10=N_flag
19253  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19254
19255;@ EaCalc : Get '-(a7)' into r8:
19256  ldr r8,[r7,#0x3c] ;@ A7
19257  sub r8,r8,#4 ;@ Pre-decrement An
19258  str r8,[r7,#0x3c] ;@ A7
19259  mov r11,r1
19260  add r0,r8,#2
19261;@ EaWrite: Write r1 into '-(a7)' (address in r0):
19262  uxth r1,r1 ;@ zero extend
19263  bic r0,r0,#0xff000000
19264  bl m68k_write16 ;@ Call write16(r0,r1) handler
19265
19266;@ EaWrite: Write r11 into '-(a7)' (address in r8):
19267  mov r1,r11,lsr #16
19268  bic r0,r8,#0xff000000
19269  bl m68k_write16 ;@ Call write16(r0,r1) handler
19270
19271  ldr r5,[r7,#0x5c] ;@ Load Cycles
19272  ldrh r8,[r4],#2 ;@ Fetch next opcode
19273  subs r5,r5,#28 ;@ Subtract cycles
19274  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19275  b CycloneEnd
19276
19277;@ ---------- [2f3a] move.l ($3333,pc), -(a7); =3335 uses Op2f3a ----------
19278Op2f3a:
19279  str r4,[r7,#0x50] ;@ Save prev PC + 2
19280  str r5,[r7,#0x5c] ;@ Save Cycles
19281
19282;@ EaCalc : Get '($3333,pc)' into r0:
19283  ldr r0,[r7,#0x60] ;@ Get Memory base
19284  sub r0,r4,r0 ;@ Real PC
19285  ldrsh r2,[r4],#2 ;@ Fetch extension
19286  add r0,r2,r0 ;@ ($nn,PC)
19287;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
19288  str r4,[r7,#0x40] ;@ Save PC
19289  bic r0,r0,#0xff000000
19290  bl m68k_fetch32 ;@ Call fetch32(r0) handler
19291  movs r1,r0
19292
19293  and r10,r1,#0x80000000 ;@ r10=N_flag
19294  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19295
19296;@ EaCalc : Get '-(a7)' into r8:
19297  ldr r8,[r7,#0x3c] ;@ A7
19298  sub r8,r8,#4 ;@ Pre-decrement An
19299  str r8,[r7,#0x3c] ;@ A7
19300  mov r11,r1
19301  add r0,r8,#2
19302;@ EaWrite: Write r1 into '-(a7)' (address in r0):
19303  uxth r1,r1 ;@ zero extend
19304  bic r0,r0,#0xff000000
19305  bl m68k_write16 ;@ Call write16(r0,r1) handler
19306
19307;@ EaWrite: Write r11 into '-(a7)' (address in r8):
19308  mov r1,r11,lsr #16
19309  bic r0,r8,#0xff000000
19310  bl m68k_write16 ;@ Call write16(r0,r1) handler
19311
19312  ldr r5,[r7,#0x5c] ;@ Load Cycles
19313  ldrh r8,[r4],#2 ;@ Fetch next opcode
19314  subs r5,r5,#24 ;@ Subtract cycles
19315  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19316  b CycloneEnd
19317
19318;@ ---------- [2f3b] move.l ($33,pc,d3.w*2), -(a7); =35 uses Op2f3b ----------
19319Op2f3b:
19320  str r4,[r7,#0x50] ;@ Save prev PC + 2
19321  str r5,[r7,#0x5c] ;@ Save Cycles
19322
19323;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
19324  ldr r0,[r7,#0x60] ;@ Get Memory base
19325  ldrh r3,[r4] ;@ Get extension word
19326  sub r0,r4,r0 ;@ r0=PC
19327  add r4,r4,#2
19328  mov r2,r3,lsr #10
19329  tst r3,#0x0800 ;@ Is Rn Word or Long
19330  and r2,r2,#0x3c ;@ r2=Index of Rn
19331  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19332  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19333  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
19334  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
19335  add r0,r2,r0 ;@ r0=Disp+PC+Rn
19336;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
19337  str r4,[r7,#0x40] ;@ Save PC
19338  bic r0,r0,#0xff000000
19339  bl m68k_fetch32 ;@ Call fetch32(r0) handler
19340  movs r1,r0
19341
19342  and r10,r1,#0x80000000 ;@ r10=N_flag
19343  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19344
19345;@ EaCalc : Get '-(a7)' into r8:
19346  ldr r8,[r7,#0x3c] ;@ A7
19347  sub r8,r8,#4 ;@ Pre-decrement An
19348  str r8,[r7,#0x3c] ;@ A7
19349  mov r11,r1
19350  add r0,r8,#2
19351;@ EaWrite: Write r1 into '-(a7)' (address in r0):
19352  uxth r1,r1 ;@ zero extend
19353  bic r0,r0,#0xff000000
19354  bl m68k_write16 ;@ Call write16(r0,r1) handler
19355
19356;@ EaWrite: Write r11 into '-(a7)' (address in r8):
19357  mov r1,r11,lsr #16
19358  bic r0,r8,#0xff000000
19359  bl m68k_write16 ;@ Call write16(r0,r1) handler
19360
19361  ldr r5,[r7,#0x5c] ;@ Load Cycles
19362  ldrh r8,[r4],#2 ;@ Fetch next opcode
19363  subs r5,r5,#26 ;@ Subtract cycles
19364  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19365  b CycloneEnd
19366
19367;@ ---------- [2f3c] move.l #$33333333, -(a7) uses Op2f3c ----------
19368Op2f3c:
19369  str r4,[r7,#0x50] ;@ Save prev PC + 2
19370  str r5,[r7,#0x5c] ;@ Save Cycles
19371
19372;@ EaCalc : Get '#$33333333' into r1:
19373  ldrh r2,[r4],#2 ;@ Fetch immediate value
19374  ldrh r3,[r4],#2
19375  orr r1,r3,r2,lsl #16
19376;@ EaRead : Read '#$33333333' (address in r1) into r1:
19377  tst r1,r1
19378
19379  and r10,r1,#0x80000000 ;@ r10=N_flag
19380  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19381
19382;@ EaCalc : Get '-(a7)' into r8:
19383  ldr r8,[r7,#0x3c] ;@ A7
19384  sub r8,r8,#4 ;@ Pre-decrement An
19385  str r8,[r7,#0x3c] ;@ A7
19386  mov r11,r1
19387  add r0,r8,#2
19388;@ EaWrite: Write r1 into '-(a7)' (address in r0):
19389  uxth r1,r1 ;@ zero extend
19390  str r4,[r7,#0x40] ;@ Save PC
19391  bic r0,r0,#0xff000000
19392  bl m68k_write16 ;@ Call write16(r0,r1) handler
19393
19394;@ EaWrite: Write r11 into '-(a7)' (address in r8):
19395  mov r1,r11,lsr #16
19396  bic r0,r8,#0xff000000
19397  bl m68k_write16 ;@ Call write16(r0,r1) handler
19398
19399  ldr r5,[r7,#0x5c] ;@ Load Cycles
19400  ldrh r8,[r4],#2 ;@ Fetch next opcode
19401  subs r5,r5,#20 ;@ Subtract cycles
19402  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19403  b CycloneEnd
19404
19405;@ ---------- [3010] move.w (a0), d0 uses Op3010 ----------
19406Op3010:
19407  str r4,[r7,#0x50] ;@ Save prev PC + 2
19408  str r5,[r7,#0x5c] ;@ Save Cycles
19409
19410;@ EaCalc : Get '(a0)' into r0:
19411  and r2,r8,#0x000f
19412  orr r2,r2,#0x8 ;@ A0-7
19413  ldr r0,[r7,r2,lsl #2]
19414;@ EaRead : Read '(a0)' (address in r0) into r1:
19415  str r4,[r7,#0x40] ;@ Save PC
19416  bic r0,r0,#0xff000000
19417  bl m68k_read16 ;@ Call read16(r0) handler
19418  movs r1,r0,asl #16
19419
19420  and r10,r1,#0x80000000 ;@ r10=N_flag
19421  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19422
19423;@ EaCalc : Get register index into r0:
19424  and r0,r8,#0x0e00
19425  mov r0,r0,lsr #7
19426;@ EaWrite: r1 into register[r0]:
19427  mov r1,r1,lsr #16
19428  strh r1,[r7,r0]
19429
19430  ldr r5,[r7,#0x5c] ;@ Load Cycles
19431  ldrh r8,[r4],#2 ;@ Fetch next opcode
19432  subs r5,r5,#8 ;@ Subtract cycles
19433  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19434  b CycloneEnd
19435
19436;@ ---------- [3020] move.w -(a0), d0 uses Op3020 ----------
19437Op3020:
19438  str r4,[r7,#0x50] ;@ Save prev PC + 2
19439  str r5,[r7,#0x5c] ;@ Save Cycles
19440
19441;@ EaCalc : Get '-(a0)' into r0:
19442  and r2,r8,#0x000f
19443  orr r2,r2,#0x8 ;@ A0-7
19444  ldr r0,[r7,r2,lsl #2]
19445  sub r0,r0,#2 ;@ Pre-decrement An
19446  str r0,[r7,r2,lsl #2]
19447;@ EaRead : Read '-(a0)' (address in r0) into r1:
19448  str r4,[r7,#0x40] ;@ Save PC
19449  bic r0,r0,#0xff000000
19450  bl m68k_read16 ;@ Call read16(r0) handler
19451  movs r1,r0,asl #16
19452
19453  and r10,r1,#0x80000000 ;@ r10=N_flag
19454  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19455
19456;@ EaCalc : Get register index into r0:
19457  and r0,r8,#0x0e00
19458  mov r0,r0,lsr #7
19459;@ EaWrite: r1 into register[r0]:
19460  mov r1,r1,lsr #16
19461  strh r1,[r7,r0]
19462
19463  ldr r5,[r7,#0x5c] ;@ Load Cycles
19464  ldrh r8,[r4],#2 ;@ Fetch next opcode
19465  subs r5,r5,#10 ;@ Subtract cycles
19466  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19467  b CycloneEnd
19468
19469;@ ---------- [3030] move.w ($33,a0,d3.w*2), d0 uses Op3030 ----------
19470Op3030:
19471  str r4,[r7,#0x50] ;@ Save prev PC + 2
19472  str r5,[r7,#0x5c] ;@ Save Cycles
19473
19474;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
19475;@ Get extension word into r3:
19476  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
19477  mov r2,r3,lsr #10
19478  tst r3,#0x0800 ;@ Is Rn Word or Long
19479  and r2,r2,#0x3c ;@ r2=Index of Rn
19480  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19481  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19482  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
19483  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
19484  and r2,r8,#0x000f
19485  orr r2,r2,#0x8 ;@ A0-7
19486  ldr r2,[r7,r2,lsl #2]
19487  add r0,r2,r3 ;@ r0=Disp+An+Rn
19488;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
19489  str r4,[r7,#0x40] ;@ Save PC
19490  bic r0,r0,#0xff000000
19491  bl m68k_read16 ;@ Call read16(r0) handler
19492  movs r1,r0,asl #16
19493
19494  and r10,r1,#0x80000000 ;@ r10=N_flag
19495  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19496
19497;@ EaCalc : Get register index into r0:
19498  and r0,r8,#0x0e00
19499  mov r0,r0,lsr #7
19500;@ EaWrite: r1 into register[r0]:
19501  mov r1,r1,lsr #16
19502  strh r1,[r7,r0]
19503
19504  ldr r5,[r7,#0x5c] ;@ Load Cycles
19505  ldrh r8,[r4],#2 ;@ Fetch next opcode
19506  subs r5,r5,#14 ;@ Subtract cycles
19507  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19508  b CycloneEnd
19509
19510;@ ---------- [3038] move.w $3333.w, d0 uses Op3038 ----------
19511Op3038:
19512  str r4,[r7,#0x50] ;@ Save prev PC + 2
19513  str r5,[r7,#0x5c] ;@ Save Cycles
19514
19515;@ EaCalc : Get '$3333.w' into r0:
19516  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19517;@ EaRead : Read '$3333.w' (address in r0) into r1:
19518  str r4,[r7,#0x40] ;@ Save PC
19519  bic r0,r0,#0xff000000
19520  bl m68k_read16 ;@ Call read16(r0) handler
19521  movs r1,r0,asl #16
19522
19523  and r10,r1,#0x80000000 ;@ r10=N_flag
19524  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19525
19526;@ EaCalc : Get register index into r0:
19527  and r0,r8,#0x0e00
19528  mov r0,r0,lsr #7
19529;@ EaWrite: r1 into register[r0]:
19530  mov r1,r1,lsr #16
19531  strh r1,[r7,r0]
19532
19533  ldr r5,[r7,#0x5c] ;@ Load Cycles
19534  ldrh r8,[r4],#2 ;@ Fetch next opcode
19535  subs r5,r5,#12 ;@ Subtract cycles
19536  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19537  b CycloneEnd
19538
19539;@ ---------- [303a] move.w ($3333,pc), d0; =3335 uses Op303a ----------
19540Op303a:
19541  str r4,[r7,#0x50] ;@ Save prev PC + 2
19542  str r5,[r7,#0x5c] ;@ Save Cycles
19543
19544;@ EaCalc : Get '($3333,pc)' into r0:
19545  ldr r0,[r7,#0x60] ;@ Get Memory base
19546  sub r0,r4,r0 ;@ Real PC
19547  ldrsh r2,[r4],#2 ;@ Fetch extension
19548  add r0,r2,r0 ;@ ($nn,PC)
19549;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
19550  str r4,[r7,#0x40] ;@ Save PC
19551  bic r0,r0,#0xff000000
19552  bl m68k_fetch16 ;@ Call fetch16(r0) handler
19553  movs r1,r0,asl #16
19554
19555  and r10,r1,#0x80000000 ;@ r10=N_flag
19556  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19557
19558;@ EaCalc : Get register index into r0:
19559  and r0,r8,#0x0e00
19560  mov r0,r0,lsr #7
19561;@ EaWrite: r1 into register[r0]:
19562  mov r1,r1,lsr #16
19563  strh r1,[r7,r0]
19564
19565  ldr r5,[r7,#0x5c] ;@ Load Cycles
19566  ldrh r8,[r4],#2 ;@ Fetch next opcode
19567  subs r5,r5,#12 ;@ Subtract cycles
19568  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19569  b CycloneEnd
19570
19571;@ ---------- [303b] move.w ($33,pc,d3.w*2), d0; =35 uses Op303b ----------
19572Op303b:
19573  str r4,[r7,#0x50] ;@ Save prev PC + 2
19574  str r5,[r7,#0x5c] ;@ Save Cycles
19575
19576;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
19577  ldr r0,[r7,#0x60] ;@ Get Memory base
19578  ldrh r3,[r4] ;@ Get extension word
19579  sub r0,r4,r0 ;@ r0=PC
19580  add r4,r4,#2
19581  mov r2,r3,lsr #10
19582  tst r3,#0x0800 ;@ Is Rn Word or Long
19583  and r2,r2,#0x3c ;@ r2=Index of Rn
19584  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19585  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19586  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
19587  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
19588  add r0,r2,r0 ;@ r0=Disp+PC+Rn
19589;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
19590  str r4,[r7,#0x40] ;@ Save PC
19591  bic r0,r0,#0xff000000
19592  bl m68k_fetch16 ;@ Call fetch16(r0) handler
19593  movs r1,r0,asl #16
19594
19595  and r10,r1,#0x80000000 ;@ r10=N_flag
19596  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19597
19598;@ EaCalc : Get register index into r0:
19599  and r0,r8,#0x0e00
19600  mov r0,r0,lsr #7
19601;@ EaWrite: r1 into register[r0]:
19602  mov r1,r1,lsr #16
19603  strh r1,[r7,r0]
19604
19605  ldr r5,[r7,#0x5c] ;@ Load Cycles
19606  ldrh r8,[r4],#2 ;@ Fetch next opcode
19607  subs r5,r5,#14 ;@ Subtract cycles
19608  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19609  b CycloneEnd
19610
19611;@ ---------- [303c] move.w #$3333, d0 uses Op303c ----------
19612Op303c:
19613;@ EaCalc : Get '#$3333' into r1:
19614  ldrsh r1,[r4],#2 ;@ Fetch immediate value
19615;@ EaRead : Read '#$3333' (address in r1) into r1:
19616  movs r1,r1,asl #16
19617
19618  and r10,r1,#0x80000000 ;@ r10=N_flag
19619  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19620
19621;@ EaCalc : Get register index into r0:
19622  and r0,r8,#0x0e00
19623  mov r0,r0,lsr #7
19624;@ EaWrite: r1 into register[r0]:
19625  mov r1,r1,lsr #16
19626  strh r1,[r7,r0]
19627
19628  ldrh r8,[r4],#2 ;@ Fetch next opcode
19629  subs r5,r5,#8 ;@ Subtract cycles
19630  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19631  b CycloneEnd
19632
19633;@ ---------- [3050] movea.w (a0), a0 uses Op3050 ----------
19634Op3050:
19635  str r4,[r7,#0x50] ;@ Save prev PC + 2
19636  str r5,[r7,#0x5c] ;@ Save Cycles
19637
19638;@ EaCalc : Get '(a0)' into r0:
19639  and r2,r8,#0x000f
19640  orr r2,r2,#0x8 ;@ A0-7
19641  ldr r0,[r7,r2,lsl #2]
19642;@ EaRead : Read '(a0)' (address in r0) into r1:
19643  str r4,[r7,#0x40] ;@ Save PC
19644  bic r0,r0,#0xff000000
19645  bl m68k_read16 ;@ Call read16(r0) handler
19646  sxth r1,r0 ;@ sign extend
19647
19648;@ EaCalc : Get register index into r0:
19649  and r0,r8,#0x1e00
19650;@ EaWrite: r1 into register[r0]:
19651  str r1,[r7,r0,lsr #7]
19652
19653  ldr r5,[r7,#0x5c] ;@ Load Cycles
19654  ldrh r8,[r4],#2 ;@ Fetch next opcode
19655  subs r5,r5,#8 ;@ Subtract cycles
19656  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19657  b CycloneEnd
19658
19659;@ ---------- [3058] movea.w (a0)+, a0 uses Op3058 ----------
19660Op3058:
19661  str r4,[r7,#0x50] ;@ Save prev PC + 2
19662  str r5,[r7,#0x5c] ;@ Save Cycles
19663
19664;@ EaCalc : Get '(a0)+' into r0:
19665  and r2,r8,#0x000f
19666  ldr r0,[r7,r2,lsl #2]
19667  add r3,r0,#2 ;@ Post-increment An
19668  str r3,[r7,r2,lsl #2]
19669;@ EaRead : Read '(a0)+' (address in r0) into r1:
19670  str r4,[r7,#0x40] ;@ Save PC
19671  bic r0,r0,#0xff000000
19672  bl m68k_read16 ;@ Call read16(r0) handler
19673  sxth r1,r0 ;@ sign extend
19674
19675;@ EaCalc : Get register index into r0:
19676  and r0,r8,#0x1e00
19677;@ EaWrite: r1 into register[r0]:
19678  str r1,[r7,r0,lsr #7]
19679
19680  ldr r5,[r7,#0x5c] ;@ Load Cycles
19681  ldrh r8,[r4],#2 ;@ Fetch next opcode
19682  subs r5,r5,#8 ;@ Subtract cycles
19683  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19684  b CycloneEnd
19685
19686;@ ---------- [3060] movea.w -(a0), a0 uses Op3060 ----------
19687Op3060:
19688  str r4,[r7,#0x50] ;@ Save prev PC + 2
19689  str r5,[r7,#0x5c] ;@ Save Cycles
19690
19691;@ EaCalc : Get '-(a0)' into r0:
19692  and r2,r8,#0x000f
19693  orr r2,r2,#0x8 ;@ A0-7
19694  ldr r0,[r7,r2,lsl #2]
19695  sub r0,r0,#2 ;@ Pre-decrement An
19696  str r0,[r7,r2,lsl #2]
19697;@ EaRead : Read '-(a0)' (address in r0) into r1:
19698  str r4,[r7,#0x40] ;@ Save PC
19699  bic r0,r0,#0xff000000
19700  bl m68k_read16 ;@ Call read16(r0) handler
19701  sxth r1,r0 ;@ sign extend
19702
19703;@ EaCalc : Get register index into r0:
19704  and r0,r8,#0x1e00
19705;@ EaWrite: r1 into register[r0]:
19706  str r1,[r7,r0,lsr #7]
19707
19708  ldr r5,[r7,#0x5c] ;@ Load Cycles
19709  ldrh r8,[r4],#2 ;@ Fetch next opcode
19710  subs r5,r5,#10 ;@ Subtract cycles
19711  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19712  b CycloneEnd
19713
19714;@ ---------- [3068] movea.w ($3333,a0), a0 uses Op3068 ----------
19715Op3068:
19716  str r4,[r7,#0x50] ;@ Save prev PC + 2
19717  str r5,[r7,#0x5c] ;@ Save Cycles
19718
19719;@ EaCalc : Get '($3333,a0)' into r0:
19720  ldrsh r0,[r4],#2 ;@ Fetch offset
19721  and r2,r8,#0x000f
19722  ldr r2,[r7,r2,lsl #2]
19723  add r0,r0,r2 ;@ Add on offset
19724;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
19725  str r4,[r7,#0x40] ;@ Save PC
19726  bic r0,r0,#0xff000000
19727  bl m68k_read16 ;@ Call read16(r0) handler
19728  sxth r1,r0 ;@ sign extend
19729
19730;@ EaCalc : Get register index into r0:
19731  and r0,r8,#0x1e00
19732;@ EaWrite: r1 into register[r0]:
19733  str r1,[r7,r0,lsr #7]
19734
19735  ldr r5,[r7,#0x5c] ;@ Load Cycles
19736  ldrh r8,[r4],#2 ;@ Fetch next opcode
19737  subs r5,r5,#12 ;@ Subtract cycles
19738  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19739  b CycloneEnd
19740
19741;@ ---------- [3070] movea.w ($33,a0,d3.w*2), a0 uses Op3070 ----------
19742Op3070:
19743  str r4,[r7,#0x50] ;@ Save prev PC + 2
19744  str r5,[r7,#0x5c] ;@ Save Cycles
19745
19746;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
19747;@ Get extension word into r3:
19748  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
19749  mov r2,r3,lsr #10
19750  tst r3,#0x0800 ;@ Is Rn Word or Long
19751  and r2,r2,#0x3c ;@ r2=Index of Rn
19752  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19753  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19754  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
19755  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
19756  and r2,r8,#0x000f
19757  orr r2,r2,#0x8 ;@ A0-7
19758  ldr r2,[r7,r2,lsl #2]
19759  add r0,r2,r3 ;@ r0=Disp+An+Rn
19760;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
19761  str r4,[r7,#0x40] ;@ Save PC
19762  bic r0,r0,#0xff000000
19763  bl m68k_read16 ;@ Call read16(r0) handler
19764  sxth r1,r0 ;@ sign extend
19765
19766;@ EaCalc : Get register index into r0:
19767  and r0,r8,#0x1e00
19768;@ EaWrite: r1 into register[r0]:
19769  str r1,[r7,r0,lsr #7]
19770
19771  ldr r5,[r7,#0x5c] ;@ Load Cycles
19772  ldrh r8,[r4],#2 ;@ Fetch next opcode
19773  subs r5,r5,#14 ;@ Subtract cycles
19774  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19775  b CycloneEnd
19776
19777;@ ---------- [3078] movea.w $3333.w, a0 uses Op3078 ----------
19778Op3078:
19779  str r4,[r7,#0x50] ;@ Save prev PC + 2
19780  str r5,[r7,#0x5c] ;@ Save Cycles
19781
19782;@ EaCalc : Get '$3333.w' into r0:
19783  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19784;@ EaRead : Read '$3333.w' (address in r0) into r1:
19785  str r4,[r7,#0x40] ;@ Save PC
19786  bic r0,r0,#0xff000000
19787  bl m68k_read16 ;@ Call read16(r0) handler
19788  sxth r1,r0 ;@ sign extend
19789
19790;@ EaCalc : Get register index into r0:
19791  and r0,r8,#0x1e00
19792;@ EaWrite: r1 into register[r0]:
19793  str r1,[r7,r0,lsr #7]
19794
19795  ldr r5,[r7,#0x5c] ;@ Load Cycles
19796  ldrh r8,[r4],#2 ;@ Fetch next opcode
19797  subs r5,r5,#12 ;@ Subtract cycles
19798  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19799  b CycloneEnd
19800
19801;@ ---------- [3079] movea.w $33333333.l, a0 uses Op3079 ----------
19802Op3079:
19803  str r4,[r7,#0x50] ;@ Save prev PC + 2
19804  str r5,[r7,#0x5c] ;@ Save Cycles
19805
19806;@ EaCalc : Get '$33333333.l' into r0:
19807  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19808  ldrh r0,[r4],#2
19809  orr r0,r0,r2,lsl #16
19810;@ EaRead : Read '$33333333.l' (address in r0) into r1:
19811  str r4,[r7,#0x40] ;@ Save PC
19812  bic r0,r0,#0xff000000
19813  bl m68k_read16 ;@ Call read16(r0) handler
19814  sxth r1,r0 ;@ sign extend
19815
19816;@ EaCalc : Get register index into r0:
19817  and r0,r8,#0x1e00
19818;@ EaWrite: r1 into register[r0]:
19819  str r1,[r7,r0,lsr #7]
19820
19821  ldr r5,[r7,#0x5c] ;@ Load Cycles
19822  ldrh r8,[r4],#2 ;@ Fetch next opcode
19823  subs r5,r5,#16 ;@ Subtract cycles
19824  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19825  b CycloneEnd
19826
19827;@ ---------- [307a] movea.w ($3333,pc), a0; =3335 uses Op307a ----------
19828Op307a:
19829  str r4,[r7,#0x50] ;@ Save prev PC + 2
19830  str r5,[r7,#0x5c] ;@ Save Cycles
19831
19832;@ EaCalc : Get '($3333,pc)' into r0:
19833  ldr r0,[r7,#0x60] ;@ Get Memory base
19834  sub r0,r4,r0 ;@ Real PC
19835  ldrsh r2,[r4],#2 ;@ Fetch extension
19836  add r0,r2,r0 ;@ ($nn,PC)
19837;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
19838  str r4,[r7,#0x40] ;@ Save PC
19839  bic r0,r0,#0xff000000
19840  bl m68k_fetch16 ;@ Call fetch16(r0) handler
19841  sxth r1,r0 ;@ sign extend
19842
19843;@ EaCalc : Get register index into r0:
19844  and r0,r8,#0x1e00
19845;@ EaWrite: r1 into register[r0]:
19846  str r1,[r7,r0,lsr #7]
19847
19848  ldr r5,[r7,#0x5c] ;@ Load Cycles
19849  ldrh r8,[r4],#2 ;@ Fetch next opcode
19850  subs r5,r5,#12 ;@ Subtract cycles
19851  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19852  b CycloneEnd
19853
19854;@ ---------- [307b] movea.w ($33,pc,d3.w*2), a0; =35 uses Op307b ----------
19855Op307b:
19856  str r4,[r7,#0x50] ;@ Save prev PC + 2
19857  str r5,[r7,#0x5c] ;@ Save Cycles
19858
19859;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
19860  ldr r0,[r7,#0x60] ;@ Get Memory base
19861  ldrh r3,[r4] ;@ Get extension word
19862  sub r0,r4,r0 ;@ r0=PC
19863  add r4,r4,#2
19864  mov r2,r3,lsr #10
19865  tst r3,#0x0800 ;@ Is Rn Word or Long
19866  and r2,r2,#0x3c ;@ r2=Index of Rn
19867  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19868  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19869  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
19870  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
19871  add r0,r2,r0 ;@ r0=Disp+PC+Rn
19872;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
19873  str r4,[r7,#0x40] ;@ Save PC
19874  bic r0,r0,#0xff000000
19875  bl m68k_fetch16 ;@ Call fetch16(r0) handler
19876  sxth r1,r0 ;@ sign extend
19877
19878;@ EaCalc : Get register index into r0:
19879  and r0,r8,#0x1e00
19880;@ EaWrite: r1 into register[r0]:
19881  str r1,[r7,r0,lsr #7]
19882
19883  ldr r5,[r7,#0x5c] ;@ Load Cycles
19884  ldrh r8,[r4],#2 ;@ Fetch next opcode
19885  subs r5,r5,#14 ;@ Subtract cycles
19886  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19887  b CycloneEnd
19888
19889;@ ---------- [307c] movea.w #$3333, a0 uses Op307c ----------
19890Op307c:
19891;@ EaCalc : Get '#$3333' into r1:
19892  ldrsh r1,[r4],#2 ;@ Fetch immediate value
19893;@ EaRead : Read '#$3333' (address in r1) into r1:
19894
19895;@ EaCalc : Get register index into r0:
19896  and r0,r8,#0x1e00
19897;@ EaWrite: r1 into register[r0]:
19898  str r1,[r7,r0,lsr #7]
19899
19900  ldrh r8,[r4],#2 ;@ Fetch next opcode
19901  subs r5,r5,#8 ;@ Subtract cycles
19902  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19903  b CycloneEnd
19904
19905;@ ---------- [3090] move.w (a0), (a0) uses Op3090 ----------
19906Op3090:
19907  str r4,[r7,#0x50] ;@ Save prev PC + 2
19908  str r5,[r7,#0x5c] ;@ Save Cycles
19909
19910;@ EaCalc : Get '(a0)' into r0:
19911  and r2,r8,#0x000f
19912  orr r2,r2,#0x8 ;@ A0-7
19913  ldr r0,[r7,r2,lsl #2]
19914;@ EaRead : Read '(a0)' (address in r0) into r1:
19915  str r4,[r7,#0x40] ;@ Save PC
19916  bic r0,r0,#0xff000000
19917  bl m68k_read16 ;@ Call read16(r0) handler
19918  movs r1,r0,asl #16
19919
19920  and r10,r1,#0x80000000 ;@ r10=N_flag
19921  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19922
19923;@ EaCalc : Get '(a0)' into r0:
19924  and r2,r8,#0x1e00
19925  ldr r0,[r7,r2,lsr #7]
19926;@ EaWrite: Write r1 into '(a0)' (address in r0):
19927  mov r1,r1,lsr #16
19928  bic r0,r0,#0xff000000
19929  bl m68k_write16 ;@ Call write16(r0,r1) handler
19930
19931  ldr r5,[r7,#0x5c] ;@ Load Cycles
19932  ldrh r8,[r4],#2 ;@ Fetch next opcode
19933  subs r5,r5,#12 ;@ Subtract cycles
19934  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19935  b CycloneEnd
19936
19937;@ ---------- [3098] move.w (a0)+, (a0) uses Op3098 ----------
19938Op3098:
19939  str r4,[r7,#0x50] ;@ Save prev PC + 2
19940  str r5,[r7,#0x5c] ;@ Save Cycles
19941
19942;@ EaCalc : Get '(a0)+' into r0:
19943  and r2,r8,#0x000f
19944  ldr r0,[r7,r2,lsl #2]
19945  add r3,r0,#2 ;@ Post-increment An
19946  str r3,[r7,r2,lsl #2]
19947;@ EaRead : Read '(a0)+' (address in r0) into r1:
19948  str r4,[r7,#0x40] ;@ Save PC
19949  bic r0,r0,#0xff000000
19950  bl m68k_read16 ;@ Call read16(r0) handler
19951  movs r1,r0,asl #16
19952
19953  and r10,r1,#0x80000000 ;@ r10=N_flag
19954  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19955
19956;@ EaCalc : Get '(a0)' into r0:
19957  and r2,r8,#0x1e00
19958  ldr r0,[r7,r2,lsr #7]
19959;@ EaWrite: Write r1 into '(a0)' (address in r0):
19960  mov r1,r1,lsr #16
19961  bic r0,r0,#0xff000000
19962  bl m68k_write16 ;@ Call write16(r0,r1) handler
19963
19964  ldr r5,[r7,#0x5c] ;@ Load Cycles
19965  ldrh r8,[r4],#2 ;@ Fetch next opcode
19966  subs r5,r5,#12 ;@ Subtract cycles
19967  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19968  b CycloneEnd
19969
19970;@ ---------- [30a0] move.w -(a0), (a0) uses Op30a0 ----------
19971Op30a0:
19972  str r4,[r7,#0x50] ;@ Save prev PC + 2
19973  str r5,[r7,#0x5c] ;@ Save Cycles
19974
19975;@ EaCalc : Get '-(a0)' into r0:
19976  and r2,r8,#0x000f
19977  orr r2,r2,#0x8 ;@ A0-7
19978  ldr r0,[r7,r2,lsl #2]
19979  sub r0,r0,#2 ;@ Pre-decrement An
19980  str r0,[r7,r2,lsl #2]
19981;@ EaRead : Read '-(a0)' (address in r0) into r1:
19982  str r4,[r7,#0x40] ;@ Save PC
19983  bic r0,r0,#0xff000000
19984  bl m68k_read16 ;@ Call read16(r0) handler
19985  movs r1,r0,asl #16
19986
19987  and r10,r1,#0x80000000 ;@ r10=N_flag
19988  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19989
19990;@ EaCalc : Get '(a0)' into r0:
19991  and r2,r8,#0x1e00
19992  ldr r0,[r7,r2,lsr #7]
19993;@ EaWrite: Write r1 into '(a0)' (address in r0):
19994  mov r1,r1,lsr #16
19995  bic r0,r0,#0xff000000
19996  bl m68k_write16 ;@ Call write16(r0,r1) handler
19997
19998  ldr r5,[r7,#0x5c] ;@ Load Cycles
19999  ldrh r8,[r4],#2 ;@ Fetch next opcode
20000  subs r5,r5,#14 ;@ Subtract cycles
20001  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20002  b CycloneEnd
20003
20004;@ ---------- [30a8] move.w ($3333,a0), (a0) uses Op30a8 ----------
20005Op30a8:
20006  str r4,[r7,#0x50] ;@ Save prev PC + 2
20007  str r5,[r7,#0x5c] ;@ Save Cycles
20008
20009;@ EaCalc : Get '($3333,a0)' into r0:
20010  ldrsh r0,[r4],#2 ;@ Fetch offset
20011  and r2,r8,#0x000f
20012  ldr r2,[r7,r2,lsl #2]
20013  add r0,r0,r2 ;@ Add on offset
20014;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
20015  str r4,[r7,#0x40] ;@ Save PC
20016  bic r0,r0,#0xff000000
20017  bl m68k_read16 ;@ Call read16(r0) handler
20018  movs r1,r0,asl #16
20019
20020  and r10,r1,#0x80000000 ;@ r10=N_flag
20021  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20022
20023;@ EaCalc : Get '(a0)' into r0:
20024  and r2,r8,#0x1e00
20025  ldr r0,[r7,r2,lsr #7]
20026;@ EaWrite: Write r1 into '(a0)' (address in r0):
20027  mov r1,r1,lsr #16
20028  bic r0,r0,#0xff000000
20029  bl m68k_write16 ;@ Call write16(r0,r1) handler
20030
20031  ldr r5,[r7,#0x5c] ;@ Load Cycles
20032  ldrh r8,[r4],#2 ;@ Fetch next opcode
20033  subs r5,r5,#16 ;@ Subtract cycles
20034  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20035  b CycloneEnd
20036
20037;@ ---------- [30b0] move.w ($33,a0,d3.w*2), (a0) uses Op30b0 ----------
20038Op30b0:
20039  str r4,[r7,#0x50] ;@ Save prev PC + 2
20040  str r5,[r7,#0x5c] ;@ Save Cycles
20041
20042;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
20043;@ Get extension word into r3:
20044  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
20045  mov r2,r3,lsr #10
20046  tst r3,#0x0800 ;@ Is Rn Word or Long
20047  and r2,r2,#0x3c ;@ r2=Index of Rn
20048  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20049  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20050  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
20051  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
20052  and r2,r8,#0x000f
20053  orr r2,r2,#0x8 ;@ A0-7
20054  ldr r2,[r7,r2,lsl #2]
20055  add r0,r2,r3 ;@ r0=Disp+An+Rn
20056;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
20057  str r4,[r7,#0x40] ;@ Save PC
20058  bic r0,r0,#0xff000000
20059  bl m68k_read16 ;@ Call read16(r0) handler
20060  movs r1,r0,asl #16
20061
20062  and r10,r1,#0x80000000 ;@ r10=N_flag
20063  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20064
20065;@ EaCalc : Get '(a0)' into r0:
20066  and r2,r8,#0x1e00
20067  ldr r0,[r7,r2,lsr #7]
20068;@ EaWrite: Write r1 into '(a0)' (address in r0):
20069  mov r1,r1,lsr #16
20070  bic r0,r0,#0xff000000
20071  bl m68k_write16 ;@ Call write16(r0,r1) handler
20072
20073  ldr r5,[r7,#0x5c] ;@ Load Cycles
20074  ldrh r8,[r4],#2 ;@ Fetch next opcode
20075  subs r5,r5,#18 ;@ Subtract cycles
20076  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20077  b CycloneEnd
20078
20079;@ ---------- [30b8] move.w $3333.w, (a0) uses Op30b8 ----------
20080Op30b8:
20081  str r4,[r7,#0x50] ;@ Save prev PC + 2
20082  str r5,[r7,#0x5c] ;@ Save Cycles
20083
20084;@ EaCalc : Get '$3333.w' into r0:
20085  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
20086;@ EaRead : Read '$3333.w' (address in r0) into r1:
20087  str r4,[r7,#0x40] ;@ Save PC
20088  bic r0,r0,#0xff000000
20089  bl m68k_read16 ;@ Call read16(r0) handler
20090  movs r1,r0,asl #16
20091
20092  and r10,r1,#0x80000000 ;@ r10=N_flag
20093  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20094
20095;@ EaCalc : Get '(a0)' into r0:
20096  and r2,r8,#0x1e00
20097  ldr r0,[r7,r2,lsr #7]
20098;@ EaWrite: Write r1 into '(a0)' (address in r0):
20099  mov r1,r1,lsr #16
20100  bic r0,r0,#0xff000000
20101  bl m68k_write16 ;@ Call write16(r0,r1) handler
20102
20103  ldr r5,[r7,#0x5c] ;@ Load Cycles
20104  ldrh r8,[r4],#2 ;@ Fetch next opcode
20105  subs r5,r5,#16 ;@ Subtract cycles
20106  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20107  b CycloneEnd
20108
20109;@ ---------- [30b9] move.w $33333333.l, (a0) uses Op30b9 ----------
20110Op30b9:
20111  str r4,[r7,#0x50] ;@ Save prev PC + 2
20112  str r5,[r7,#0x5c] ;@ Save Cycles
20113
20114;@ EaCalc : Get '$33333333.l' into r0:
20115  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
20116  ldrh r0,[r4],#2
20117  orr r0,r0,r2,lsl #16
20118;@ EaRead : Read '$33333333.l' (address in r0) into r1:
20119  str r4,[r7,#0x40] ;@ Save PC
20120  bic r0,r0,#0xff000000
20121  bl m68k_read16 ;@ Call read16(r0) handler
20122  movs r1,r0,asl #16
20123
20124  and r10,r1,#0x80000000 ;@ r10=N_flag
20125  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20126
20127;@ EaCalc : Get '(a0)' into r0:
20128  and r2,r8,#0x1e00
20129  ldr r0,[r7,r2,lsr #7]
20130;@ EaWrite: Write r1 into '(a0)' (address in r0):
20131  mov r1,r1,lsr #16
20132  bic r0,r0,#0xff000000
20133  bl m68k_write16 ;@ Call write16(r0,r1) handler
20134
20135  ldr r5,[r7,#0x5c] ;@ Load Cycles
20136  ldrh r8,[r4],#2 ;@ Fetch next opcode
20137  subs r5,r5,#20 ;@ Subtract cycles
20138  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20139  b CycloneEnd
20140
20141;@ ---------- [30ba] move.w ($3333,pc), (a0); =3335 uses Op30ba ----------
20142Op30ba:
20143  str r4,[r7,#0x50] ;@ Save prev PC + 2
20144  str r5,[r7,#0x5c] ;@ Save Cycles
20145
20146;@ EaCalc : Get '($3333,pc)' into r0:
20147  ldr r0,[r7,#0x60] ;@ Get Memory base
20148  sub r0,r4,r0 ;@ Real PC
20149  ldrsh r2,[r4],#2 ;@ Fetch extension
20150  add r0,r2,r0 ;@ ($nn,PC)
20151;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
20152  str r4,[r7,#0x40] ;@ Save PC
20153  bic r0,r0,#0xff000000
20154  bl m68k_fetch16 ;@ Call fetch16(r0) handler
20155  movs r1,r0,asl #16
20156
20157  and r10,r1,#0x80000000 ;@ r10=N_flag
20158  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20159
20160;@ EaCalc : Get '(a0)' into r0:
20161  and r2,r8,#0x1e00
20162  ldr r0,[r7,r2,lsr #7]
20163;@ EaWrite: Write r1 into '(a0)' (address in r0):
20164  mov r1,r1,lsr #16
20165  bic r0,r0,#0xff000000
20166  bl m68k_write16 ;@ Call write16(r0,r1) handler
20167
20168  ldr r5,[r7,#0x5c] ;@ Load Cycles
20169  ldrh r8,[r4],#2 ;@ Fetch next opcode
20170  subs r5,r5,#16 ;@ Subtract cycles
20171  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20172  b CycloneEnd
20173
20174;@ ---------- [30bb] move.w ($33,pc,d3.w*2), (a0); =35 uses Op30bb ----------
20175Op30bb:
20176  str r4,[r7,#0x50] ;@ Save prev PC + 2
20177  str r5,[r7,#0x5c] ;@ Save Cycles
20178
20179;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
20180  ldr r0,[r7,#0x60] ;@ Get Memory base
20181  ldrh r3,[r4] ;@ Get extension word
20182  sub r0,r4,r0 ;@ r0=PC
20183  add r4,r4,#2
20184  mov r2,r3,lsr #10
20185  tst r3,#0x0800 ;@ Is Rn Word or Long
20186  and r2,r2,#0x3c ;@ r2=Index of Rn
20187  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20188  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20189  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
20190  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
20191  add r0,r2,r0 ;@ r0=Disp+PC+Rn
20192;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
20193  str r4,[r7,#0x40] ;@ Save PC
20194  bic r0,r0,#0xff000000
20195  bl m68k_fetch16 ;@ Call fetch16(r0) handler
20196  movs r1,r0,asl #16
20197
20198  and r10,r1,#0x80000000 ;@ r10=N_flag
20199  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20200
20201;@ EaCalc : Get '(a0)' into r0:
20202  and r2,r8,#0x1e00
20203  ldr r0,[r7,r2,lsr #7]
20204;@ EaWrite: Write r1 into '(a0)' (address in r0):
20205  mov r1,r1,lsr #16
20206  bic r0,r0,#0xff000000
20207  bl m68k_write16 ;@ Call write16(r0,r1) handler
20208
20209  ldr r5,[r7,#0x5c] ;@ Load Cycles
20210  ldrh r8,[r4],#2 ;@ Fetch next opcode
20211  subs r5,r5,#18 ;@ Subtract cycles
20212  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20213  b CycloneEnd
20214
20215;@ ---------- [30bc] move.w #$3333, (a0) uses Op30bc ----------
20216Op30bc:
20217  str r4,[r7,#0x50] ;@ Save prev PC + 2
20218  str r5,[r7,#0x5c] ;@ Save Cycles
20219
20220;@ EaCalc : Get '#$3333' into r1:
20221  ldrsh r1,[r4],#2 ;@ Fetch immediate value
20222;@ EaRead : Read '#$3333' (address in r1) into r1:
20223  movs r1,r1,asl #16
20224
20225  and r10,r1,#0x80000000 ;@ r10=N_flag
20226  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20227
20228;@ EaCalc : Get '(a0)' into r0:
20229  and r2,r8,#0x1e00
20230  ldr r0,[r7,r2,lsr #7]
20231;@ EaWrite: Write r1 into '(a0)' (address in r0):
20232  mov r1,r1,lsr #16
20233  str r4,[r7,#0x40] ;@ Save PC
20234  bic r0,r0,#0xff000000
20235  bl m68k_write16 ;@ Call write16(r0,r1) handler
20236
20237  ldr r5,[r7,#0x5c] ;@ Load Cycles
20238  ldrh r8,[r4],#2 ;@ Fetch next opcode
20239  subs r5,r5,#12 ;@ Subtract cycles
20240  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20241  b CycloneEnd
20242
20243;@ ---------- [30d8] move.w (a0)+, (a0)+ uses Op30d8 ----------
20244Op30d8:
20245  str r4,[r7,#0x50] ;@ Save prev PC + 2
20246  str r5,[r7,#0x5c] ;@ Save Cycles
20247
20248;@ EaCalc : Get '(a0)+' into r0:
20249  and r2,r8,#0x000f
20250  ldr r0,[r7,r2,lsl #2]
20251  add r3,r0,#2 ;@ Post-increment An
20252  str r3,[r7,r2,lsl #2]
20253;@ EaRead : Read '(a0)+' (address in r0) into r1:
20254  str r4,[r7,#0x40] ;@ Save PC
20255  bic r0,r0,#0xff000000
20256  bl m68k_read16 ;@ Call read16(r0) handler
20257  movs r1,r0,asl #16
20258
20259  and r10,r1,#0x80000000 ;@ r10=N_flag
20260  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20261
20262;@ EaCalc : Get '(a0)+' into r0:
20263  and r2,r8,#0x1e00
20264  ldr r0,[r7,r2,lsr #7]
20265  add r3,r0,#2 ;@ Post-increment An
20266  str r3,[r7,r2,lsr #7]
20267;@ EaWrite: Write r1 into '(a0)+' (address in r0):
20268  mov r1,r1,lsr #16
20269  bic r0,r0,#0xff000000
20270  bl m68k_write16 ;@ Call write16(r0,r1) handler
20271
20272  ldr r5,[r7,#0x5c] ;@ Load Cycles
20273  ldrh r8,[r4],#2 ;@ Fetch next opcode
20274  subs r5,r5,#12 ;@ Subtract cycles
20275  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20276  b CycloneEnd
20277
20278;@ ---------- [30e0] move.w -(a0), (a0)+ uses Op30e0 ----------
20279Op30e0:
20280  str r4,[r7,#0x50] ;@ Save prev PC + 2
20281  str r5,[r7,#0x5c] ;@ Save Cycles
20282
20283;@ EaCalc : Get '-(a0)' into r0:
20284  and r2,r8,#0x000f
20285  orr r2,r2,#0x8 ;@ A0-7
20286  ldr r0,[r7,r2,lsl #2]
20287  sub r0,r0,#2 ;@ Pre-decrement An
20288  str r0,[r7,r2,lsl #2]
20289;@ EaRead : Read '-(a0)' (address in r0) into r1:
20290  str r4,[r7,#0x40] ;@ Save PC
20291  bic r0,r0,#0xff000000
20292  bl m68k_read16 ;@ Call read16(r0) handler
20293  movs r1,r0,asl #16
20294
20295  and r10,r1,#0x80000000 ;@ r10=N_flag
20296  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20297
20298;@ EaCalc : Get '(a0)+' into r0:
20299  and r2,r8,#0x1e00
20300  ldr r0,[r7,r2,lsr #7]
20301  add r3,r0,#2 ;@ Post-increment An
20302  str r3,[r7,r2,lsr #7]
20303;@ EaWrite: Write r1 into '(a0)+' (address in r0):
20304  mov r1,r1,lsr #16
20305  bic r0,r0,#0xff000000
20306  bl m68k_write16 ;@ Call write16(r0,r1) handler
20307
20308  ldr r5,[r7,#0x5c] ;@ Load Cycles
20309  ldrh r8,[r4],#2 ;@ Fetch next opcode
20310  subs r5,r5,#14 ;@ Subtract cycles
20311  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20312  b CycloneEnd
20313
20314;@ ---------- [30e8] move.w ($3333,a0), (a0)+ uses Op30e8 ----------
20315Op30e8:
20316  str r4,[r7,#0x50] ;@ Save prev PC + 2
20317  str r5,[r7,#0x5c] ;@ Save Cycles
20318
20319;@ EaCalc : Get '($3333,a0)' into r0:
20320  ldrsh r0,[r4],#2 ;@ Fetch offset
20321  and r2,r8,#0x000f
20322  ldr r2,[r7,r2,lsl #2]
20323  add r0,r0,r2 ;@ Add on offset
20324;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
20325  str r4,[r7,#0x40] ;@ Save PC
20326  bic r0,r0,#0xff000000
20327  bl m68k_read16 ;@ Call read16(r0) handler
20328  movs r1,r0,asl #16
20329
20330  and r10,r1,#0x80000000 ;@ r10=N_flag
20331  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20332
20333;@ EaCalc : Get '(a0)+' into r0:
20334  and r2,r8,#0x1e00
20335  ldr r0,[r7,r2,lsr #7]
20336  add r3,r0,#2 ;@ Post-increment An
20337  str r3,[r7,r2,lsr #7]
20338;@ EaWrite: Write r1 into '(a0)+' (address in r0):
20339  mov r1,r1,lsr #16
20340  bic r0,r0,#0xff000000
20341  bl m68k_write16 ;@ Call write16(r0,r1) handler
20342
20343  ldr r5,[r7,#0x5c] ;@ Load Cycles
20344  ldrh r8,[r4],#2 ;@ Fetch next opcode
20345  subs r5,r5,#16 ;@ Subtract cycles
20346  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20347  b CycloneEnd
20348
20349;@ ---------- [30f0] move.w ($33,a0,d3.w*2), (a0)+ uses Op30f0 ----------
20350Op30f0:
20351  str r4,[r7,#0x50] ;@ Save prev PC + 2
20352  str r5,[r7,#0x5c] ;@ Save Cycles
20353
20354;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
20355;@ Get extension word into r3:
20356  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
20357  mov r2,r3,lsr #10
20358  tst r3,#0x0800 ;@ Is Rn Word or Long
20359  and r2,r2,#0x3c ;@ r2=Index of Rn
20360  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20361  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20362  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
20363  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
20364  and r2,r8,#0x000f
20365  orr r2,r2,#0x8 ;@ A0-7
20366  ldr r2,[r7,r2,lsl #2]
20367  add r0,r2,r3 ;@ r0=Disp+An+Rn
20368;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
20369  str r4,[r7,#0x40] ;@ Save PC
20370  bic r0,r0,#0xff000000
20371  bl m68k_read16 ;@ Call read16(r0) handler
20372  movs r1,r0,asl #16
20373
20374  and r10,r1,#0x80000000 ;@ r10=N_flag
20375  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20376
20377;@ EaCalc : Get '(a0)+' into r0:
20378  and r2,r8,#0x1e00
20379  ldr r0,[r7,r2,lsr #7]
20380  add r3,r0,#2 ;@ Post-increment An
20381  str r3,[r7,r2,lsr #7]
20382;@ EaWrite: Write r1 into '(a0)+' (address in r0):
20383  mov r1,r1,lsr #16
20384  bic r0,r0,#0xff000000
20385  bl m68k_write16 ;@ Call write16(r0,r1) handler
20386
20387  ldr r5,[r7,#0x5c] ;@ Load Cycles
20388  ldrh r8,[r4],#2 ;@ Fetch next opcode
20389  subs r5,r5,#18 ;@ Subtract cycles
20390  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20391  b CycloneEnd
20392
20393;@ ---------- [30f8] move.w $3333.w, (a0)+ uses Op30f8 ----------
20394Op30f8:
20395  str r4,[r7,#0x50] ;@ Save prev PC + 2
20396  str r5,[r7,#0x5c] ;@ Save Cycles
20397
20398;@ EaCalc : Get '$3333.w' into r0:
20399  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
20400;@ EaRead : Read '$3333.w' (address in r0) into r1:
20401  str r4,[r7,#0x40] ;@ Save PC
20402  bic r0,r0,#0xff000000
20403  bl m68k_read16 ;@ Call read16(r0) handler
20404  movs r1,r0,asl #16
20405
20406  and r10,r1,#0x80000000 ;@ r10=N_flag
20407  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20408
20409;@ EaCalc : Get '(a0)+' into r0:
20410  and r2,r8,#0x1e00
20411  ldr r0,[r7,r2,lsr #7]
20412  add r3,r0,#2 ;@ Post-increment An
20413  str r3,[r7,r2,lsr #7]
20414;@ EaWrite: Write r1 into '(a0)+' (address in r0):
20415  mov r1,r1,lsr #16
20416  bic r0,r0,#0xff000000
20417  bl m68k_write16 ;@ Call write16(r0,r1) handler
20418
20419  ldr r5,[r7,#0x5c] ;@ Load Cycles
20420  ldrh r8,[r4],#2 ;@ Fetch next opcode
20421  subs r5,r5,#16 ;@ Subtract cycles
20422  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20423  b CycloneEnd
20424
20425;@ ---------- [30f9] move.w $33333333.l, (a0)+ uses Op30f9 ----------
20426Op30f9:
20427  str r4,[r7,#0x50] ;@ Save prev PC + 2
20428  str r5,[r7,#0x5c] ;@ Save Cycles
20429
20430;@ EaCalc : Get '$33333333.l' into r0:
20431  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
20432  ldrh r0,[r4],#2
20433  orr r0,r0,r2,lsl #16
20434;@ EaRead : Read '$33333333.l' (address in r0) into r1:
20435  str r4,[r7,#0x40] ;@ Save PC
20436  bic r0,r0,#0xff000000
20437  bl m68k_read16 ;@ Call read16(r0) handler
20438  movs r1,r0,asl #16
20439
20440  and r10,r1,#0x80000000 ;@ r10=N_flag
20441  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20442
20443;@ EaCalc : Get '(a0)+' into r0:
20444  and r2,r8,#0x1e00
20445  ldr r0,[r7,r2,lsr #7]
20446  add r3,r0,#2 ;@ Post-increment An
20447  str r3,[r7,r2,lsr #7]
20448;@ EaWrite: Write r1 into '(a0)+' (address in r0):
20449  mov r1,r1,lsr #16
20450  bic r0,r0,#0xff000000
20451  bl m68k_write16 ;@ Call write16(r0,r1) handler
20452
20453  ldr r5,[r7,#0x5c] ;@ Load Cycles
20454  ldrh r8,[r4],#2 ;@ Fetch next opcode
20455  subs r5,r5,#20 ;@ Subtract cycles
20456  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20457  b CycloneEnd
20458
20459;@ ---------- [30fa] move.w ($3333,pc), (a0)+; =3335 uses Op30fa ----------
20460Op30fa:
20461  str r4,[r7,#0x50] ;@ Save prev PC + 2
20462  str r5,[r7,#0x5c] ;@ Save Cycles
20463
20464;@ EaCalc : Get '($3333,pc)' into r0:
20465  ldr r0,[r7,#0x60] ;@ Get Memory base
20466  sub r0,r4,r0 ;@ Real PC
20467  ldrsh r2,[r4],#2 ;@ Fetch extension
20468  add r0,r2,r0 ;@ ($nn,PC)
20469;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
20470  str r4,[r7,#0x40] ;@ Save PC
20471  bic r0,r0,#0xff000000
20472  bl m68k_fetch16 ;@ Call fetch16(r0) handler
20473  movs r1,r0,asl #16
20474
20475  and r10,r1,#0x80000000 ;@ r10=N_flag
20476  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20477
20478;@ EaCalc : Get '(a0)+' into r0:
20479  and r2,r8,#0x1e00
20480  ldr r0,[r7,r2,lsr #7]
20481  add r3,r0,#2 ;@ Post-increment An
20482  str r3,[r7,r2,lsr #7]
20483;@ EaWrite: Write r1 into '(a0)+' (address in r0):
20484  mov r1,r1,lsr #16
20485  bic r0,r0,#0xff000000
20486  bl m68k_write16 ;@ Call write16(r0,r1) handler
20487
20488  ldr r5,[r7,#0x5c] ;@ Load Cycles
20489  ldrh r8,[r4],#2 ;@ Fetch next opcode
20490  subs r5,r5,#16 ;@ Subtract cycles
20491  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20492  b CycloneEnd
20493
20494;@ ---------- [30fb] move.w ($33,pc,d3.w*2), (a0)+; =35 uses Op30fb ----------
20495Op30fb:
20496  str r4,[r7,#0x50] ;@ Save prev PC + 2
20497  str r5,[r7,#0x5c] ;@ Save Cycles
20498
20499;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
20500  ldr r0,[r7,#0x60] ;@ Get Memory base
20501  ldrh r3,[r4] ;@ Get extension word
20502  sub r0,r4,r0 ;@ r0=PC
20503  add r4,r4,#2
20504  mov r2,r3,lsr #10
20505  tst r3,#0x0800 ;@ Is Rn Word or Long
20506  and r2,r2,#0x3c ;@ r2=Index of Rn
20507  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20508  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20509  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
20510  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
20511  add r0,r2,r0 ;@ r0=Disp+PC+Rn
20512;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
20513  str r4,[r7,#0x40] ;@ Save PC
20514  bic r0,r0,#0xff000000
20515  bl m68k_fetch16 ;@ Call fetch16(r0) handler
20516  movs r1,r0,asl #16
20517
20518  and r10,r1,#0x80000000 ;@ r10=N_flag
20519  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20520
20521;@ EaCalc : Get '(a0)+' into r0:
20522  and r2,r8,#0x1e00
20523  ldr r0,[r7,r2,lsr #7]
20524  add r3,r0,#2 ;@ Post-increment An
20525  str r3,[r7,r2,lsr #7]
20526;@ EaWrite: Write r1 into '(a0)+' (address in r0):
20527  mov r1,r1,lsr #16
20528  bic r0,r0,#0xff000000
20529  bl m68k_write16 ;@ Call write16(r0,r1) handler
20530
20531  ldr r5,[r7,#0x5c] ;@ Load Cycles
20532  ldrh r8,[r4],#2 ;@ Fetch next opcode
20533  subs r5,r5,#18 ;@ Subtract cycles
20534  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20535  b CycloneEnd
20536
20537;@ ---------- [30fc] move.w #$3333, (a0)+ uses Op30fc ----------
20538Op30fc:
20539  str r4,[r7,#0x50] ;@ Save prev PC + 2
20540  str r5,[r7,#0x5c] ;@ Save Cycles
20541
20542;@ EaCalc : Get '#$3333' into r1:
20543  ldrsh r1,[r4],#2 ;@ Fetch immediate value
20544;@ EaRead : Read '#$3333' (address in r1) into r1:
20545  movs r1,r1,asl #16
20546
20547  and r10,r1,#0x80000000 ;@ r10=N_flag
20548  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20549
20550;@ EaCalc : Get '(a0)+' into r0:
20551  and r2,r8,#0x1e00
20552  ldr r0,[r7,r2,lsr #7]
20553  add r3,r0,#2 ;@ Post-increment An
20554  str r3,[r7,r2,lsr #7]
20555;@ EaWrite: Write r1 into '(a0)+' (address in r0):
20556  mov r1,r1,lsr #16
20557  str r4,[r7,#0x40] ;@ Save PC
20558  bic r0,r0,#0xff000000
20559  bl m68k_write16 ;@ Call write16(r0,r1) handler
20560
20561  ldr r5,[r7,#0x5c] ;@ Load Cycles
20562  ldrh r8,[r4],#2 ;@ Fetch next opcode
20563  subs r5,r5,#12 ;@ Subtract cycles
20564  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20565  b CycloneEnd
20566
20567;@ ---------- [3100] move.w d0, -(a0) uses Op3100 ----------
20568Op3100:
20569  str r4,[r7,#0x50] ;@ Save prev PC + 2
20570  str r5,[r7,#0x5c] ;@ Save Cycles
20571
20572;@ EaCalc : Get register index into r1:
20573  and r1,r8,#0x000f
20574  mov r1,r1,lsl #2
20575;@ EaRead : Read register[r1] into r1:
20576  ldrh r1,[r7,r1]
20577
20578  movs r2,r1,lsl #16
20579  and r10,r2,#0x80000000 ;@ r10=N_flag
20580  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20581
20582;@ EaCalc : Get '-(a0)' into r0:
20583  and r2,r8,#0x1e00
20584  ldr r0,[r7,r2,lsr #7]
20585  sub r0,r0,#2 ;@ Pre-decrement An
20586  str r0,[r7,r2,lsr #7]
20587;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20588  str r4,[r7,#0x40] ;@ Save PC
20589  bic r0,r0,#0xff000000
20590  bl m68k_write16 ;@ Call write16(r0,r1) handler
20591
20592  ldr r5,[r7,#0x5c] ;@ Load Cycles
20593  ldrh r8,[r4],#2 ;@ Fetch next opcode
20594  subs r5,r5,#8 ;@ Subtract cycles
20595  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20596  b CycloneEnd
20597
20598;@ ---------- [3110] move.w (a0), -(a0) uses Op3110 ----------
20599Op3110:
20600  str r4,[r7,#0x50] ;@ Save prev PC + 2
20601  str r5,[r7,#0x5c] ;@ Save Cycles
20602
20603;@ EaCalc : Get '(a0)' into r0:
20604  and r2,r8,#0x000f
20605  orr r2,r2,#0x8 ;@ A0-7
20606  ldr r0,[r7,r2,lsl #2]
20607;@ EaRead : Read '(a0)' (address in r0) into r1:
20608  str r4,[r7,#0x40] ;@ Save PC
20609  bic r0,r0,#0xff000000
20610  bl m68k_read16 ;@ Call read16(r0) handler
20611  movs r1,r0,asl #16
20612
20613  and r10,r1,#0x80000000 ;@ r10=N_flag
20614  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20615
20616;@ EaCalc : Get '-(a0)' into r0:
20617  and r2,r8,#0x1e00
20618  ldr r0,[r7,r2,lsr #7]
20619  sub r0,r0,#2 ;@ Pre-decrement An
20620  str r0,[r7,r2,lsr #7]
20621;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20622  mov r1,r1,lsr #16
20623  bic r0,r0,#0xff000000
20624  bl m68k_write16 ;@ Call write16(r0,r1) handler
20625
20626  ldr r5,[r7,#0x5c] ;@ Load Cycles
20627  ldrh r8,[r4],#2 ;@ Fetch next opcode
20628  subs r5,r5,#12 ;@ Subtract cycles
20629  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20630  b CycloneEnd
20631
20632;@ ---------- [3118] move.w (a0)+, -(a0) uses Op3118 ----------
20633Op3118:
20634  str r4,[r7,#0x50] ;@ Save prev PC + 2
20635  str r5,[r7,#0x5c] ;@ Save Cycles
20636
20637;@ EaCalc : Get '(a0)+' into r0:
20638  and r2,r8,#0x000f
20639  ldr r0,[r7,r2,lsl #2]
20640  add r3,r0,#2 ;@ Post-increment An
20641  str r3,[r7,r2,lsl #2]
20642;@ EaRead : Read '(a0)+' (address in r0) into r1:
20643  str r4,[r7,#0x40] ;@ Save PC
20644  bic r0,r0,#0xff000000
20645  bl m68k_read16 ;@ Call read16(r0) handler
20646  movs r1,r0,asl #16
20647
20648  and r10,r1,#0x80000000 ;@ r10=N_flag
20649  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20650
20651;@ EaCalc : Get '-(a0)' into r0:
20652  and r2,r8,#0x1e00
20653  ldr r0,[r7,r2,lsr #7]
20654  sub r0,r0,#2 ;@ Pre-decrement An
20655  str r0,[r7,r2,lsr #7]
20656;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20657  mov r1,r1,lsr #16
20658  bic r0,r0,#0xff000000
20659  bl m68k_write16 ;@ Call write16(r0,r1) handler
20660
20661  ldr r5,[r7,#0x5c] ;@ Load Cycles
20662  ldrh r8,[r4],#2 ;@ Fetch next opcode
20663  subs r5,r5,#12 ;@ Subtract cycles
20664  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20665  b CycloneEnd
20666
20667;@ ---------- [3120] move.w -(a0), -(a0) uses Op3120 ----------
20668Op3120:
20669  str r4,[r7,#0x50] ;@ Save prev PC + 2
20670  str r5,[r7,#0x5c] ;@ Save Cycles
20671
20672;@ EaCalc : Get '-(a0)' into r0:
20673  and r2,r8,#0x000f
20674  orr r2,r2,#0x8 ;@ A0-7
20675  ldr r0,[r7,r2,lsl #2]
20676  sub r0,r0,#2 ;@ Pre-decrement An
20677  str r0,[r7,r2,lsl #2]
20678;@ EaRead : Read '-(a0)' (address in r0) into r1:
20679  str r4,[r7,#0x40] ;@ Save PC
20680  bic r0,r0,#0xff000000
20681  bl m68k_read16 ;@ Call read16(r0) handler
20682  movs r1,r0,asl #16
20683
20684  and r10,r1,#0x80000000 ;@ r10=N_flag
20685  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20686
20687;@ EaCalc : Get '-(a0)' into r0:
20688  and r2,r8,#0x1e00
20689  ldr r0,[r7,r2,lsr #7]
20690  sub r0,r0,#2 ;@ Pre-decrement An
20691  str r0,[r7,r2,lsr #7]
20692;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20693  mov r1,r1,lsr #16
20694  bic r0,r0,#0xff000000
20695  bl m68k_write16 ;@ Call write16(r0,r1) handler
20696
20697  ldr r5,[r7,#0x5c] ;@ Load Cycles
20698  ldrh r8,[r4],#2 ;@ Fetch next opcode
20699  subs r5,r5,#14 ;@ Subtract cycles
20700  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20701  b CycloneEnd
20702
20703;@ ---------- [3128] move.w ($3333,a0), -(a0) uses Op3128 ----------
20704Op3128:
20705  str r4,[r7,#0x50] ;@ Save prev PC + 2
20706  str r5,[r7,#0x5c] ;@ Save Cycles
20707
20708;@ EaCalc : Get '($3333,a0)' into r0:
20709  ldrsh r0,[r4],#2 ;@ Fetch offset
20710  and r2,r8,#0x000f
20711  ldr r2,[r7,r2,lsl #2]
20712  add r0,r0,r2 ;@ Add on offset
20713;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
20714  str r4,[r7,#0x40] ;@ Save PC
20715  bic r0,r0,#0xff000000
20716  bl m68k_read16 ;@ Call read16(r0) handler
20717  movs r1,r0,asl #16
20718
20719  and r10,r1,#0x80000000 ;@ r10=N_flag
20720  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20721
20722;@ EaCalc : Get '-(a0)' into r0:
20723  and r2,r8,#0x1e00
20724  ldr r0,[r7,r2,lsr #7]
20725  sub r0,r0,#2 ;@ Pre-decrement An
20726  str r0,[r7,r2,lsr #7]
20727;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20728  mov r1,r1,lsr #16
20729  bic r0,r0,#0xff000000
20730  bl m68k_write16 ;@ Call write16(r0,r1) handler
20731
20732  ldr r5,[r7,#0x5c] ;@ Load Cycles
20733  ldrh r8,[r4],#2 ;@ Fetch next opcode
20734  subs r5,r5,#16 ;@ Subtract cycles
20735  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20736  b CycloneEnd
20737
20738;@ ---------- [3130] move.w ($33,a0,d3.w*2), -(a0) uses Op3130 ----------
20739Op3130:
20740  str r4,[r7,#0x50] ;@ Save prev PC + 2
20741  str r5,[r7,#0x5c] ;@ Save Cycles
20742
20743;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
20744;@ Get extension word into r3:
20745  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
20746  mov r2,r3,lsr #10
20747  tst r3,#0x0800 ;@ Is Rn Word or Long
20748  and r2,r2,#0x3c ;@ r2=Index of Rn
20749  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20750  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20751  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
20752  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
20753  and r2,r8,#0x000f
20754  orr r2,r2,#0x8 ;@ A0-7
20755  ldr r2,[r7,r2,lsl #2]
20756  add r0,r2,r3 ;@ r0=Disp+An+Rn
20757;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
20758  str r4,[r7,#0x40] ;@ Save PC
20759  bic r0,r0,#0xff000000
20760  bl m68k_read16 ;@ Call read16(r0) handler
20761  movs r1,r0,asl #16
20762
20763  and r10,r1,#0x80000000 ;@ r10=N_flag
20764  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20765
20766;@ EaCalc : Get '-(a0)' into r0:
20767  and r2,r8,#0x1e00
20768  ldr r0,[r7,r2,lsr #7]
20769  sub r0,r0,#2 ;@ Pre-decrement An
20770  str r0,[r7,r2,lsr #7]
20771;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20772  mov r1,r1,lsr #16
20773  bic r0,r0,#0xff000000
20774  bl m68k_write16 ;@ Call write16(r0,r1) handler
20775
20776  ldr r5,[r7,#0x5c] ;@ Load Cycles
20777  ldrh r8,[r4],#2 ;@ Fetch next opcode
20778  subs r5,r5,#18 ;@ Subtract cycles
20779  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20780  b CycloneEnd
20781
20782;@ ---------- [3138] move.w $3333.w, -(a0) uses Op3138 ----------
20783Op3138:
20784  str r4,[r7,#0x50] ;@ Save prev PC + 2
20785  str r5,[r7,#0x5c] ;@ Save Cycles
20786
20787;@ EaCalc : Get '$3333.w' into r0:
20788  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
20789;@ EaRead : Read '$3333.w' (address in r0) into r1:
20790  str r4,[r7,#0x40] ;@ Save PC
20791  bic r0,r0,#0xff000000
20792  bl m68k_read16 ;@ Call read16(r0) handler
20793  movs r1,r0,asl #16
20794
20795  and r10,r1,#0x80000000 ;@ r10=N_flag
20796  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20797
20798;@ EaCalc : Get '-(a0)' into r0:
20799  and r2,r8,#0x1e00
20800  ldr r0,[r7,r2,lsr #7]
20801  sub r0,r0,#2 ;@ Pre-decrement An
20802  str r0,[r7,r2,lsr #7]
20803;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20804  mov r1,r1,lsr #16
20805  bic r0,r0,#0xff000000
20806  bl m68k_write16 ;@ Call write16(r0,r1) handler
20807
20808  ldr r5,[r7,#0x5c] ;@ Load Cycles
20809  ldrh r8,[r4],#2 ;@ Fetch next opcode
20810  subs r5,r5,#16 ;@ Subtract cycles
20811  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20812  b CycloneEnd
20813
20814;@ ---------- [3139] move.w $33333333.l, -(a0) uses Op3139 ----------
20815Op3139:
20816  str r4,[r7,#0x50] ;@ Save prev PC + 2
20817  str r5,[r7,#0x5c] ;@ Save Cycles
20818
20819;@ EaCalc : Get '$33333333.l' into r0:
20820  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
20821  ldrh r0,[r4],#2
20822  orr r0,r0,r2,lsl #16
20823;@ EaRead : Read '$33333333.l' (address in r0) into r1:
20824  str r4,[r7,#0x40] ;@ Save PC
20825  bic r0,r0,#0xff000000
20826  bl m68k_read16 ;@ Call read16(r0) handler
20827  movs r1,r0,asl #16
20828
20829  and r10,r1,#0x80000000 ;@ r10=N_flag
20830  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20831
20832;@ EaCalc : Get '-(a0)' into r0:
20833  and r2,r8,#0x1e00
20834  ldr r0,[r7,r2,lsr #7]
20835  sub r0,r0,#2 ;@ Pre-decrement An
20836  str r0,[r7,r2,lsr #7]
20837;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20838  mov r1,r1,lsr #16
20839  bic r0,r0,#0xff000000
20840  bl m68k_write16 ;@ Call write16(r0,r1) handler
20841
20842  ldr r5,[r7,#0x5c] ;@ Load Cycles
20843  ldrh r8,[r4],#2 ;@ Fetch next opcode
20844  subs r5,r5,#20 ;@ Subtract cycles
20845  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20846  b CycloneEnd
20847
20848;@ ---------- [313a] move.w ($3333,pc), -(a0); =3335 uses Op313a ----------
20849Op313a:
20850  str r4,[r7,#0x50] ;@ Save prev PC + 2
20851  str r5,[r7,#0x5c] ;@ Save Cycles
20852
20853;@ EaCalc : Get '($3333,pc)' into r0:
20854  ldr r0,[r7,#0x60] ;@ Get Memory base
20855  sub r0,r4,r0 ;@ Real PC
20856  ldrsh r2,[r4],#2 ;@ Fetch extension
20857  add r0,r2,r0 ;@ ($nn,PC)
20858;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
20859  str r4,[r7,#0x40] ;@ Save PC
20860  bic r0,r0,#0xff000000
20861  bl m68k_fetch16 ;@ Call fetch16(r0) handler
20862  movs r1,r0,asl #16
20863
20864  and r10,r1,#0x80000000 ;@ r10=N_flag
20865  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20866
20867;@ EaCalc : Get '-(a0)' into r0:
20868  and r2,r8,#0x1e00
20869  ldr r0,[r7,r2,lsr #7]
20870  sub r0,r0,#2 ;@ Pre-decrement An
20871  str r0,[r7,r2,lsr #7]
20872;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20873  mov r1,r1,lsr #16
20874  bic r0,r0,#0xff000000
20875  bl m68k_write16 ;@ Call write16(r0,r1) handler
20876
20877  ldr r5,[r7,#0x5c] ;@ Load Cycles
20878  ldrh r8,[r4],#2 ;@ Fetch next opcode
20879  subs r5,r5,#16 ;@ Subtract cycles
20880  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20881  b CycloneEnd
20882
20883;@ ---------- [313b] move.w ($33,pc,d3.w*2), -(a0); =35 uses Op313b ----------
20884Op313b:
20885  str r4,[r7,#0x50] ;@ Save prev PC + 2
20886  str r5,[r7,#0x5c] ;@ Save Cycles
20887
20888;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
20889  ldr r0,[r7,#0x60] ;@ Get Memory base
20890  ldrh r3,[r4] ;@ Get extension word
20891  sub r0,r4,r0 ;@ r0=PC
20892  add r4,r4,#2
20893  mov r2,r3,lsr #10
20894  tst r3,#0x0800 ;@ Is Rn Word or Long
20895  and r2,r2,#0x3c ;@ r2=Index of Rn
20896  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20897  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20898  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
20899  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
20900  add r0,r2,r0 ;@ r0=Disp+PC+Rn
20901;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
20902  str r4,[r7,#0x40] ;@ Save PC
20903  bic r0,r0,#0xff000000
20904  bl m68k_fetch16 ;@ Call fetch16(r0) handler
20905  movs r1,r0,asl #16
20906
20907  and r10,r1,#0x80000000 ;@ r10=N_flag
20908  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20909
20910;@ EaCalc : Get '-(a0)' into r0:
20911  and r2,r8,#0x1e00
20912  ldr r0,[r7,r2,lsr #7]
20913  sub r0,r0,#2 ;@ Pre-decrement An
20914  str r0,[r7,r2,lsr #7]
20915;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20916  mov r1,r1,lsr #16
20917  bic r0,r0,#0xff000000
20918  bl m68k_write16 ;@ Call write16(r0,r1) handler
20919
20920  ldr r5,[r7,#0x5c] ;@ Load Cycles
20921  ldrh r8,[r4],#2 ;@ Fetch next opcode
20922  subs r5,r5,#18 ;@ Subtract cycles
20923  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20924  b CycloneEnd
20925
20926;@ ---------- [313c] move.w #$3333, -(a0) uses Op313c ----------
20927Op313c:
20928  str r4,[r7,#0x50] ;@ Save prev PC + 2
20929  str r5,[r7,#0x5c] ;@ Save Cycles
20930
20931;@ EaCalc : Get '#$3333' into r1:
20932  ldrsh r1,[r4],#2 ;@ Fetch immediate value
20933;@ EaRead : Read '#$3333' (address in r1) into r1:
20934  movs r1,r1,asl #16
20935
20936  and r10,r1,#0x80000000 ;@ r10=N_flag
20937  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20938
20939;@ EaCalc : Get '-(a0)' into r0:
20940  and r2,r8,#0x1e00
20941  ldr r0,[r7,r2,lsr #7]
20942  sub r0,r0,#2 ;@ Pre-decrement An
20943  str r0,[r7,r2,lsr #7]
20944;@ EaWrite: Write r1 into '-(a0)' (address in r0):
20945  mov r1,r1,lsr #16
20946  str r4,[r7,#0x40] ;@ Save PC
20947  bic r0,r0,#0xff000000
20948  bl m68k_write16 ;@ Call write16(r0,r1) handler
20949
20950  ldr r5,[r7,#0x5c] ;@ Load Cycles
20951  ldrh r8,[r4],#2 ;@ Fetch next opcode
20952  subs r5,r5,#12 ;@ Subtract cycles
20953  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20954  b CycloneEnd
20955
20956;@ ---------- [3140] move.w d0, ($3333,a0) uses Op3140 ----------
20957Op3140:
20958  str r4,[r7,#0x50] ;@ Save prev PC + 2
20959  str r5,[r7,#0x5c] ;@ Save Cycles
20960
20961;@ EaCalc : Get register index into r1:
20962  and r1,r8,#0x000f
20963  mov r1,r1,lsl #2
20964;@ EaRead : Read register[r1] into r1:
20965  ldrh r1,[r7,r1]
20966
20967  movs r2,r1,lsl #16
20968  and r10,r2,#0x80000000 ;@ r10=N_flag
20969  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20970
20971;@ EaCalc : Get '($3333,a0)' into r0:
20972  ldrsh r0,[r4],#2 ;@ Fetch offset
20973  and r2,r8,#0x1e00
20974  mov r2,r2,lsr #9
20975  ldr r2,[r7,r2,lsl #2]
20976  add r0,r0,r2 ;@ Add on offset
20977;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
20978  str r4,[r7,#0x40] ;@ Save PC
20979  bic r0,r0,#0xff000000
20980  bl m68k_write16 ;@ Call write16(r0,r1) handler
20981
20982  ldr r5,[r7,#0x5c] ;@ Load Cycles
20983  ldrh r8,[r4],#2 ;@ Fetch next opcode
20984  subs r5,r5,#12 ;@ Subtract cycles
20985  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20986  b CycloneEnd
20987
20988;@ ---------- [3150] move.w (a0), ($3333,a0) uses Op3150 ----------
20989Op3150:
20990  str r4,[r7,#0x50] ;@ Save prev PC + 2
20991  str r5,[r7,#0x5c] ;@ Save Cycles
20992
20993;@ EaCalc : Get '(a0)' into r0:
20994  and r2,r8,#0x000f
20995  orr r2,r2,#0x8 ;@ A0-7
20996  ldr r0,[r7,r2,lsl #2]
20997;@ EaRead : Read '(a0)' (address in r0) into r1:
20998  str r4,[r7,#0x40] ;@ Save PC
20999  bic r0,r0,#0xff000000
21000  bl m68k_read16 ;@ Call read16(r0) handler
21001  movs r1,r0,asl #16
21002
21003  and r10,r1,#0x80000000 ;@ r10=N_flag
21004  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21005
21006;@ EaCalc : Get '($3333,a0)' into r0:
21007  ldrsh r0,[r4],#2 ;@ Fetch offset
21008  and r2,r8,#0x1e00
21009  mov r2,r2,lsr #9
21010  ldr r2,[r7,r2,lsl #2]
21011  add r0,r0,r2 ;@ Add on offset
21012;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21013  mov r1,r1,lsr #16
21014  str r4,[r7,#0x40] ;@ Save PC
21015  bic r0,r0,#0xff000000
21016  bl m68k_write16 ;@ Call write16(r0,r1) handler
21017
21018  ldr r5,[r7,#0x5c] ;@ Load Cycles
21019  ldrh r8,[r4],#2 ;@ Fetch next opcode
21020  subs r5,r5,#16 ;@ Subtract cycles
21021  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21022  b CycloneEnd
21023
21024;@ ---------- [3158] move.w (a0)+, ($3333,a0) uses Op3158 ----------
21025Op3158:
21026  str r4,[r7,#0x50] ;@ Save prev PC + 2
21027  str r5,[r7,#0x5c] ;@ Save Cycles
21028
21029;@ EaCalc : Get '(a0)+' into r0:
21030  and r2,r8,#0x000f
21031  ldr r0,[r7,r2,lsl #2]
21032  add r3,r0,#2 ;@ Post-increment An
21033  str r3,[r7,r2,lsl #2]
21034;@ EaRead : Read '(a0)+' (address in r0) into r1:
21035  str r4,[r7,#0x40] ;@ Save PC
21036  bic r0,r0,#0xff000000
21037  bl m68k_read16 ;@ Call read16(r0) handler
21038  movs r1,r0,asl #16
21039
21040  and r10,r1,#0x80000000 ;@ r10=N_flag
21041  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21042
21043;@ EaCalc : Get '($3333,a0)' into r0:
21044  ldrsh r0,[r4],#2 ;@ Fetch offset
21045  and r2,r8,#0x1e00
21046  mov r2,r2,lsr #9
21047  ldr r2,[r7,r2,lsl #2]
21048  add r0,r0,r2 ;@ Add on offset
21049;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21050  mov r1,r1,lsr #16
21051  str r4,[r7,#0x40] ;@ Save PC
21052  bic r0,r0,#0xff000000
21053  bl m68k_write16 ;@ Call write16(r0,r1) handler
21054
21055  ldr r5,[r7,#0x5c] ;@ Load Cycles
21056  ldrh r8,[r4],#2 ;@ Fetch next opcode
21057  subs r5,r5,#16 ;@ Subtract cycles
21058  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21059  b CycloneEnd
21060
21061;@ ---------- [3160] move.w -(a0), ($3333,a0) uses Op3160 ----------
21062Op3160:
21063  str r4,[r7,#0x50] ;@ Save prev PC + 2
21064  str r5,[r7,#0x5c] ;@ Save Cycles
21065
21066;@ EaCalc : Get '-(a0)' into r0:
21067  and r2,r8,#0x000f
21068  orr r2,r2,#0x8 ;@ A0-7
21069  ldr r0,[r7,r2,lsl #2]
21070  sub r0,r0,#2 ;@ Pre-decrement An
21071  str r0,[r7,r2,lsl #2]
21072;@ EaRead : Read '-(a0)' (address in r0) into r1:
21073  str r4,[r7,#0x40] ;@ Save PC
21074  bic r0,r0,#0xff000000
21075  bl m68k_read16 ;@ Call read16(r0) handler
21076  movs r1,r0,asl #16
21077
21078  and r10,r1,#0x80000000 ;@ r10=N_flag
21079  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21080
21081;@ EaCalc : Get '($3333,a0)' into r0:
21082  ldrsh r0,[r4],#2 ;@ Fetch offset
21083  and r2,r8,#0x1e00
21084  mov r2,r2,lsr #9
21085  ldr r2,[r7,r2,lsl #2]
21086  add r0,r0,r2 ;@ Add on offset
21087;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21088  mov r1,r1,lsr #16
21089  str r4,[r7,#0x40] ;@ Save PC
21090  bic r0,r0,#0xff000000
21091  bl m68k_write16 ;@ Call write16(r0,r1) handler
21092
21093  ldr r5,[r7,#0x5c] ;@ Load Cycles
21094  ldrh r8,[r4],#2 ;@ Fetch next opcode
21095  subs r5,r5,#18 ;@ Subtract cycles
21096  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21097  b CycloneEnd
21098
21099;@ ---------- [3168] move.w ($3333,a0), ($3333,a0) uses Op3168 ----------
21100Op3168:
21101  str r4,[r7,#0x50] ;@ Save prev PC + 2
21102  str r5,[r7,#0x5c] ;@ Save Cycles
21103
21104;@ EaCalc : Get '($3333,a0)' into r0:
21105  ldrsh r0,[r4],#2 ;@ Fetch offset
21106  and r2,r8,#0x000f
21107  ldr r2,[r7,r2,lsl #2]
21108  add r0,r0,r2 ;@ Add on offset
21109;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
21110  str r4,[r7,#0x40] ;@ Save PC
21111  bic r0,r0,#0xff000000
21112  bl m68k_read16 ;@ Call read16(r0) handler
21113  movs r1,r0,asl #16
21114
21115  and r10,r1,#0x80000000 ;@ r10=N_flag
21116  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21117
21118;@ EaCalc : Get '($3333,a0)' into r0:
21119  ldrsh r0,[r4],#2 ;@ Fetch offset
21120  and r2,r8,#0x1e00
21121  mov r2,r2,lsr #9
21122  ldr r2,[r7,r2,lsl #2]
21123  add r0,r0,r2 ;@ Add on offset
21124;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21125  mov r1,r1,lsr #16
21126  str r4,[r7,#0x40] ;@ Save PC
21127  bic r0,r0,#0xff000000
21128  bl m68k_write16 ;@ Call write16(r0,r1) handler
21129
21130  ldr r5,[r7,#0x5c] ;@ Load Cycles
21131  ldrh r8,[r4],#2 ;@ Fetch next opcode
21132  subs r5,r5,#20 ;@ Subtract cycles
21133  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21134  b CycloneEnd
21135
21136;@ ---------- [3170] move.w ($33,a0,d3.w*2), ($3333,a0) uses Op3170 ----------
21137Op3170:
21138  str r4,[r7,#0x50] ;@ Save prev PC + 2
21139  str r5,[r7,#0x5c] ;@ Save Cycles
21140
21141;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21142;@ Get extension word into r3:
21143  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21144  mov r2,r3,lsr #10
21145  tst r3,#0x0800 ;@ Is Rn Word or Long
21146  and r2,r2,#0x3c ;@ r2=Index of Rn
21147  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21148  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21149  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21150  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21151  and r2,r8,#0x000f
21152  orr r2,r2,#0x8 ;@ A0-7
21153  ldr r2,[r7,r2,lsl #2]
21154  add r0,r2,r3 ;@ r0=Disp+An+Rn
21155;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
21156  str r4,[r7,#0x40] ;@ Save PC
21157  bic r0,r0,#0xff000000
21158  bl m68k_read16 ;@ Call read16(r0) handler
21159  movs r1,r0,asl #16
21160
21161  and r10,r1,#0x80000000 ;@ r10=N_flag
21162  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21163
21164;@ EaCalc : Get '($3333,a0)' into r0:
21165  ldrsh r0,[r4],#2 ;@ Fetch offset
21166  and r2,r8,#0x1e00
21167  mov r2,r2,lsr #9
21168  ldr r2,[r7,r2,lsl #2]
21169  add r0,r0,r2 ;@ Add on offset
21170;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21171  mov r1,r1,lsr #16
21172  str r4,[r7,#0x40] ;@ Save PC
21173  bic r0,r0,#0xff000000
21174  bl m68k_write16 ;@ Call write16(r0,r1) handler
21175
21176  ldr r5,[r7,#0x5c] ;@ Load Cycles
21177  ldrh r8,[r4],#2 ;@ Fetch next opcode
21178  subs r5,r5,#22 ;@ Subtract cycles
21179  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21180  b CycloneEnd
21181
21182;@ ---------- [3178] move.w $3333.w, ($3333,a0) uses Op3178 ----------
21183Op3178:
21184  str r4,[r7,#0x50] ;@ Save prev PC + 2
21185  str r5,[r7,#0x5c] ;@ Save Cycles
21186
21187;@ EaCalc : Get '$3333.w' into r0:
21188  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
21189;@ EaRead : Read '$3333.w' (address in r0) into r1:
21190  str r4,[r7,#0x40] ;@ Save PC
21191  bic r0,r0,#0xff000000
21192  bl m68k_read16 ;@ Call read16(r0) handler
21193  movs r1,r0,asl #16
21194
21195  and r10,r1,#0x80000000 ;@ r10=N_flag
21196  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21197
21198;@ EaCalc : Get '($3333,a0)' into r0:
21199  ldrsh r0,[r4],#2 ;@ Fetch offset
21200  and r2,r8,#0x1e00
21201  mov r2,r2,lsr #9
21202  ldr r2,[r7,r2,lsl #2]
21203  add r0,r0,r2 ;@ Add on offset
21204;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21205  mov r1,r1,lsr #16
21206  str r4,[r7,#0x40] ;@ Save PC
21207  bic r0,r0,#0xff000000
21208  bl m68k_write16 ;@ Call write16(r0,r1) handler
21209
21210  ldr r5,[r7,#0x5c] ;@ Load Cycles
21211  ldrh r8,[r4],#2 ;@ Fetch next opcode
21212  subs r5,r5,#20 ;@ Subtract cycles
21213  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21214  b CycloneEnd
21215
21216;@ ---------- [3179] move.w $33333333.l, ($3333,a0) uses Op3179 ----------
21217Op3179:
21218  str r4,[r7,#0x50] ;@ Save prev PC + 2
21219  str r5,[r7,#0x5c] ;@ Save Cycles
21220
21221;@ EaCalc : Get '$33333333.l' into r0:
21222  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
21223  ldrh r0,[r4],#2
21224  orr r0,r0,r2,lsl #16
21225;@ EaRead : Read '$33333333.l' (address in r0) into r1:
21226  str r4,[r7,#0x40] ;@ Save PC
21227  bic r0,r0,#0xff000000
21228  bl m68k_read16 ;@ Call read16(r0) handler
21229  movs r1,r0,asl #16
21230
21231  and r10,r1,#0x80000000 ;@ r10=N_flag
21232  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21233
21234;@ EaCalc : Get '($3333,a0)' into r0:
21235  ldrsh r0,[r4],#2 ;@ Fetch offset
21236  and r2,r8,#0x1e00
21237  mov r2,r2,lsr #9
21238  ldr r2,[r7,r2,lsl #2]
21239  add r0,r0,r2 ;@ Add on offset
21240;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21241  mov r1,r1,lsr #16
21242  str r4,[r7,#0x40] ;@ Save PC
21243  bic r0,r0,#0xff000000
21244  bl m68k_write16 ;@ Call write16(r0,r1) handler
21245
21246  ldr r5,[r7,#0x5c] ;@ Load Cycles
21247  ldrh r8,[r4],#2 ;@ Fetch next opcode
21248  subs r5,r5,#24 ;@ Subtract cycles
21249  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21250  b CycloneEnd
21251
21252;@ ---------- [317a] move.w ($3333,pc), ($3333,a0); =3335 uses Op317a ----------
21253Op317a:
21254  str r4,[r7,#0x50] ;@ Save prev PC + 2
21255  str r5,[r7,#0x5c] ;@ Save Cycles
21256
21257;@ EaCalc : Get '($3333,pc)' into r0:
21258  ldr r0,[r7,#0x60] ;@ Get Memory base
21259  sub r0,r4,r0 ;@ Real PC
21260  ldrsh r2,[r4],#2 ;@ Fetch extension
21261  add r0,r2,r0 ;@ ($nn,PC)
21262;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
21263  str r4,[r7,#0x40] ;@ Save PC
21264  bic r0,r0,#0xff000000
21265  bl m68k_fetch16 ;@ Call fetch16(r0) handler
21266  movs r1,r0,asl #16
21267
21268  and r10,r1,#0x80000000 ;@ r10=N_flag
21269  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21270
21271;@ EaCalc : Get '($3333,a0)' into r0:
21272  ldrsh r0,[r4],#2 ;@ Fetch offset
21273  and r2,r8,#0x1e00
21274  mov r2,r2,lsr #9
21275  ldr r2,[r7,r2,lsl #2]
21276  add r0,r0,r2 ;@ Add on offset
21277;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21278  mov r1,r1,lsr #16
21279  str r4,[r7,#0x40] ;@ Save PC
21280  bic r0,r0,#0xff000000
21281  bl m68k_write16 ;@ Call write16(r0,r1) handler
21282
21283  ldr r5,[r7,#0x5c] ;@ Load Cycles
21284  ldrh r8,[r4],#2 ;@ Fetch next opcode
21285  subs r5,r5,#20 ;@ Subtract cycles
21286  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21287  b CycloneEnd
21288
21289;@ ---------- [317b] move.w ($33,pc,d3.w*2), ($3333,a0); =35 uses Op317b ----------
21290Op317b:
21291  str r4,[r7,#0x50] ;@ Save prev PC + 2
21292  str r5,[r7,#0x5c] ;@ Save Cycles
21293
21294;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
21295  ldr r0,[r7,#0x60] ;@ Get Memory base
21296  ldrh r3,[r4] ;@ Get extension word
21297  sub r0,r4,r0 ;@ r0=PC
21298  add r4,r4,#2
21299  mov r2,r3,lsr #10
21300  tst r3,#0x0800 ;@ Is Rn Word or Long
21301  and r2,r2,#0x3c ;@ r2=Index of Rn
21302  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21303  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21304  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
21305  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
21306  add r0,r2,r0 ;@ r0=Disp+PC+Rn
21307;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
21308  str r4,[r7,#0x40] ;@ Save PC
21309  bic r0,r0,#0xff000000
21310  bl m68k_fetch16 ;@ Call fetch16(r0) handler
21311  movs r1,r0,asl #16
21312
21313  and r10,r1,#0x80000000 ;@ r10=N_flag
21314  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21315
21316;@ EaCalc : Get '($3333,a0)' into r0:
21317  ldrsh r0,[r4],#2 ;@ Fetch offset
21318  and r2,r8,#0x1e00
21319  mov r2,r2,lsr #9
21320  ldr r2,[r7,r2,lsl #2]
21321  add r0,r0,r2 ;@ Add on offset
21322;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21323  mov r1,r1,lsr #16
21324  str r4,[r7,#0x40] ;@ Save PC
21325  bic r0,r0,#0xff000000
21326  bl m68k_write16 ;@ Call write16(r0,r1) handler
21327
21328  ldr r5,[r7,#0x5c] ;@ Load Cycles
21329  ldrh r8,[r4],#2 ;@ Fetch next opcode
21330  subs r5,r5,#22 ;@ Subtract cycles
21331  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21332  b CycloneEnd
21333
21334;@ ---------- [317c] move.w #$3333, ($3333,a0) uses Op317c ----------
21335Op317c:
21336  str r4,[r7,#0x50] ;@ Save prev PC + 2
21337  str r5,[r7,#0x5c] ;@ Save Cycles
21338
21339;@ EaCalc : Get '#$3333' into r1:
21340  ldrsh r1,[r4],#2 ;@ Fetch immediate value
21341;@ EaRead : Read '#$3333' (address in r1) into r1:
21342  movs r1,r1,asl #16
21343
21344  and r10,r1,#0x80000000 ;@ r10=N_flag
21345  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21346
21347;@ EaCalc : Get '($3333,a0)' into r0:
21348  ldrsh r0,[r4],#2 ;@ Fetch offset
21349  and r2,r8,#0x1e00
21350  mov r2,r2,lsr #9
21351  ldr r2,[r7,r2,lsl #2]
21352  add r0,r0,r2 ;@ Add on offset
21353;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21354  mov r1,r1,lsr #16
21355  str r4,[r7,#0x40] ;@ Save PC
21356  bic r0,r0,#0xff000000
21357  bl m68k_write16 ;@ Call write16(r0,r1) handler
21358
21359  ldr r5,[r7,#0x5c] ;@ Load Cycles
21360  ldrh r8,[r4],#2 ;@ Fetch next opcode
21361  subs r5,r5,#16 ;@ Subtract cycles
21362  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21363  b CycloneEnd
21364
21365;@ ---------- [3190] move.w (a0), ($33,a0,d3.w*2) uses Op3190 ----------
21366Op3190:
21367  str r4,[r7,#0x50] ;@ Save prev PC + 2
21368  str r5,[r7,#0x5c] ;@ Save Cycles
21369
21370;@ EaCalc : Get '(a0)' into r0:
21371  and r2,r8,#0x000f
21372  orr r2,r2,#0x8 ;@ A0-7
21373  ldr r0,[r7,r2,lsl #2]
21374;@ EaRead : Read '(a0)' (address in r0) into r1:
21375  str r4,[r7,#0x40] ;@ Save PC
21376  bic r0,r0,#0xff000000
21377  bl m68k_read16 ;@ Call read16(r0) handler
21378  movs r1,r0,asl #16
21379
21380  and r10,r1,#0x80000000 ;@ r10=N_flag
21381  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21382
21383;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21384;@ Get extension word into r3:
21385  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21386  mov r2,r3,lsr #10
21387  tst r3,#0x0800 ;@ Is Rn Word or Long
21388  and r2,r2,#0x3c ;@ r2=Index of Rn
21389  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21390  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21391  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21392  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21393  and r2,r8,#0x1e00
21394  orr r2,r2,#0x1000 ;@ A0-7
21395  mov r2,r2,lsr #9
21396  ldr r2,[r7,r2,lsl #2]
21397  add r0,r2,r3 ;@ r0=Disp+An+Rn
21398;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21399  mov r1,r1,lsr #16
21400  str r4,[r7,#0x40] ;@ Save PC
21401  bic r0,r0,#0xff000000
21402  bl m68k_write16 ;@ Call write16(r0,r1) handler
21403
21404  ldr r5,[r7,#0x5c] ;@ Load Cycles
21405  ldrh r8,[r4],#2 ;@ Fetch next opcode
21406  subs r5,r5,#18 ;@ Subtract cycles
21407  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21408  b CycloneEnd
21409
21410;@ ---------- [3198] move.w (a0)+, ($33,a0,d3.w*2) uses Op3198 ----------
21411Op3198:
21412  str r4,[r7,#0x50] ;@ Save prev PC + 2
21413  str r5,[r7,#0x5c] ;@ Save Cycles
21414
21415;@ EaCalc : Get '(a0)+' into r0:
21416  and r2,r8,#0x000f
21417  ldr r0,[r7,r2,lsl #2]
21418  add r3,r0,#2 ;@ Post-increment An
21419  str r3,[r7,r2,lsl #2]
21420;@ EaRead : Read '(a0)+' (address in r0) into r1:
21421  str r4,[r7,#0x40] ;@ Save PC
21422  bic r0,r0,#0xff000000
21423  bl m68k_read16 ;@ Call read16(r0) handler
21424  movs r1,r0,asl #16
21425
21426  and r10,r1,#0x80000000 ;@ r10=N_flag
21427  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21428
21429;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21430;@ Get extension word into r3:
21431  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21432  mov r2,r3,lsr #10
21433  tst r3,#0x0800 ;@ Is Rn Word or Long
21434  and r2,r2,#0x3c ;@ r2=Index of Rn
21435  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21436  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21437  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21438  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21439  and r2,r8,#0x1e00
21440  orr r2,r2,#0x1000 ;@ A0-7
21441  mov r2,r2,lsr #9
21442  ldr r2,[r7,r2,lsl #2]
21443  add r0,r2,r3 ;@ r0=Disp+An+Rn
21444;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21445  mov r1,r1,lsr #16
21446  str r4,[r7,#0x40] ;@ Save PC
21447  bic r0,r0,#0xff000000
21448  bl m68k_write16 ;@ Call write16(r0,r1) handler
21449
21450  ldr r5,[r7,#0x5c] ;@ Load Cycles
21451  ldrh r8,[r4],#2 ;@ Fetch next opcode
21452  subs r5,r5,#18 ;@ Subtract cycles
21453  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21454  b CycloneEnd
21455
21456;@ ---------- [31a0] move.w -(a0), ($33,a0,d3.w*2) uses Op31a0 ----------
21457Op31a0:
21458  str r4,[r7,#0x50] ;@ Save prev PC + 2
21459  str r5,[r7,#0x5c] ;@ Save Cycles
21460
21461;@ EaCalc : Get '-(a0)' into r0:
21462  and r2,r8,#0x000f
21463  orr r2,r2,#0x8 ;@ A0-7
21464  ldr r0,[r7,r2,lsl #2]
21465  sub r0,r0,#2 ;@ Pre-decrement An
21466  str r0,[r7,r2,lsl #2]
21467;@ EaRead : Read '-(a0)' (address in r0) into r1:
21468  str r4,[r7,#0x40] ;@ Save PC
21469  bic r0,r0,#0xff000000
21470  bl m68k_read16 ;@ Call read16(r0) handler
21471  movs r1,r0,asl #16
21472
21473  and r10,r1,#0x80000000 ;@ r10=N_flag
21474  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21475
21476;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21477;@ Get extension word into r3:
21478  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21479  mov r2,r3,lsr #10
21480  tst r3,#0x0800 ;@ Is Rn Word or Long
21481  and r2,r2,#0x3c ;@ r2=Index of Rn
21482  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21483  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21484  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21485  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21486  and r2,r8,#0x1e00
21487  orr r2,r2,#0x1000 ;@ A0-7
21488  mov r2,r2,lsr #9
21489  ldr r2,[r7,r2,lsl #2]
21490  add r0,r2,r3 ;@ r0=Disp+An+Rn
21491;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21492  mov r1,r1,lsr #16
21493  str r4,[r7,#0x40] ;@ Save PC
21494  bic r0,r0,#0xff000000
21495  bl m68k_write16 ;@ Call write16(r0,r1) handler
21496
21497  ldr r5,[r7,#0x5c] ;@ Load Cycles
21498  ldrh r8,[r4],#2 ;@ Fetch next opcode
21499  subs r5,r5,#20 ;@ Subtract cycles
21500  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21501  b CycloneEnd
21502
21503;@ ---------- [31a8] move.w ($3333,a0), ($33,a0,d3.w*2) uses Op31a8 ----------
21504Op31a8:
21505  str r4,[r7,#0x50] ;@ Save prev PC + 2
21506  str r5,[r7,#0x5c] ;@ Save Cycles
21507
21508;@ EaCalc : Get '($3333,a0)' into r0:
21509  ldrsh r0,[r4],#2 ;@ Fetch offset
21510  and r2,r8,#0x000f
21511  ldr r2,[r7,r2,lsl #2]
21512  add r0,r0,r2 ;@ Add on offset
21513;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
21514  str r4,[r7,#0x40] ;@ Save PC
21515  bic r0,r0,#0xff000000
21516  bl m68k_read16 ;@ Call read16(r0) handler
21517  movs r1,r0,asl #16
21518
21519  and r10,r1,#0x80000000 ;@ r10=N_flag
21520  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21521
21522;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21523;@ Get extension word into r3:
21524  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21525  mov r2,r3,lsr #10
21526  tst r3,#0x0800 ;@ Is Rn Word or Long
21527  and r2,r2,#0x3c ;@ r2=Index of Rn
21528  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21529  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21530  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21531  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21532  and r2,r8,#0x1e00
21533  orr r2,r2,#0x1000 ;@ A0-7
21534  mov r2,r2,lsr #9
21535  ldr r2,[r7,r2,lsl #2]
21536  add r0,r2,r3 ;@ r0=Disp+An+Rn
21537;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21538  mov r1,r1,lsr #16
21539  str r4,[r7,#0x40] ;@ Save PC
21540  bic r0,r0,#0xff000000
21541  bl m68k_write16 ;@ Call write16(r0,r1) handler
21542
21543  ldr r5,[r7,#0x5c] ;@ Load Cycles
21544  ldrh r8,[r4],#2 ;@ Fetch next opcode
21545  subs r5,r5,#22 ;@ Subtract cycles
21546  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21547  b CycloneEnd
21548
21549;@ ---------- [31b0] move.w ($33,a0,d3.w*2), ($33,a0,d3.w*2) uses Op31b0 ----------
21550Op31b0:
21551  str r4,[r7,#0x50] ;@ Save prev PC + 2
21552  str r5,[r7,#0x5c] ;@ Save Cycles
21553
21554;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21555;@ Get extension word into r3:
21556  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21557  mov r2,r3,lsr #10
21558  tst r3,#0x0800 ;@ Is Rn Word or Long
21559  and r2,r2,#0x3c ;@ r2=Index of Rn
21560  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21561  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21562  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21563  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21564  and r2,r8,#0x000f
21565  orr r2,r2,#0x8 ;@ A0-7
21566  ldr r2,[r7,r2,lsl #2]
21567  add r0,r2,r3 ;@ r0=Disp+An+Rn
21568;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
21569  str r4,[r7,#0x40] ;@ Save PC
21570  bic r0,r0,#0xff000000
21571  bl m68k_read16 ;@ Call read16(r0) handler
21572  movs r1,r0,asl #16
21573
21574  and r10,r1,#0x80000000 ;@ r10=N_flag
21575  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21576
21577;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21578;@ Get extension word into r3:
21579  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21580  mov r2,r3,lsr #10
21581  tst r3,#0x0800 ;@ Is Rn Word or Long
21582  and r2,r2,#0x3c ;@ r2=Index of Rn
21583  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21584  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21585  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21586  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21587  and r2,r8,#0x1e00
21588  orr r2,r2,#0x1000 ;@ A0-7
21589  mov r2,r2,lsr #9
21590  ldr r2,[r7,r2,lsl #2]
21591  add r0,r2,r3 ;@ r0=Disp+An+Rn
21592;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21593  mov r1,r1,lsr #16
21594  str r4,[r7,#0x40] ;@ Save PC
21595  bic r0,r0,#0xff000000
21596  bl m68k_write16 ;@ Call write16(r0,r1) handler
21597
21598  ldr r5,[r7,#0x5c] ;@ Load Cycles
21599  ldrh r8,[r4],#2 ;@ Fetch next opcode
21600  subs r5,r5,#24 ;@ Subtract cycles
21601  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21602  b CycloneEnd
21603
21604;@ ---------- [31b8] move.w $3333.w, ($33,a0,d3.w*2) uses Op31b8 ----------
21605Op31b8:
21606  str r4,[r7,#0x50] ;@ Save prev PC + 2
21607  str r5,[r7,#0x5c] ;@ Save Cycles
21608
21609;@ EaCalc : Get '$3333.w' into r0:
21610  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
21611;@ EaRead : Read '$3333.w' (address in r0) into r1:
21612  str r4,[r7,#0x40] ;@ Save PC
21613  bic r0,r0,#0xff000000
21614  bl m68k_read16 ;@ Call read16(r0) handler
21615  movs r1,r0,asl #16
21616
21617  and r10,r1,#0x80000000 ;@ r10=N_flag
21618  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21619
21620;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21621;@ Get extension word into r3:
21622  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21623  mov r2,r3,lsr #10
21624  tst r3,#0x0800 ;@ Is Rn Word or Long
21625  and r2,r2,#0x3c ;@ r2=Index of Rn
21626  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21627  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21628  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21629  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21630  and r2,r8,#0x1e00
21631  orr r2,r2,#0x1000 ;@ A0-7
21632  mov r2,r2,lsr #9
21633  ldr r2,[r7,r2,lsl #2]
21634  add r0,r2,r3 ;@ r0=Disp+An+Rn
21635;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21636  mov r1,r1,lsr #16
21637  str r4,[r7,#0x40] ;@ Save PC
21638  bic r0,r0,#0xff000000
21639  bl m68k_write16 ;@ Call write16(r0,r1) handler
21640
21641  ldr r5,[r7,#0x5c] ;@ Load Cycles
21642  ldrh r8,[r4],#2 ;@ Fetch next opcode
21643  subs r5,r5,#22 ;@ Subtract cycles
21644  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21645  b CycloneEnd
21646
21647;@ ---------- [31b9] move.w $33333333.l, ($33,a0,d3.w*2) uses Op31b9 ----------
21648Op31b9:
21649  str r4,[r7,#0x50] ;@ Save prev PC + 2
21650  str r5,[r7,#0x5c] ;@ Save Cycles
21651
21652;@ EaCalc : Get '$33333333.l' into r0:
21653  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
21654  ldrh r0,[r4],#2
21655  orr r0,r0,r2,lsl #16
21656;@ EaRead : Read '$33333333.l' (address in r0) into r1:
21657  str r4,[r7,#0x40] ;@ Save PC
21658  bic r0,r0,#0xff000000
21659  bl m68k_read16 ;@ Call read16(r0) handler
21660  movs r1,r0,asl #16
21661
21662  and r10,r1,#0x80000000 ;@ r10=N_flag
21663  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21664
21665;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21666;@ Get extension word into r3:
21667  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21668  mov r2,r3,lsr #10
21669  tst r3,#0x0800 ;@ Is Rn Word or Long
21670  and r2,r2,#0x3c ;@ r2=Index of Rn
21671  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21672  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21673  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21674  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21675  and r2,r8,#0x1e00
21676  orr r2,r2,#0x1000 ;@ A0-7
21677  mov r2,r2,lsr #9
21678  ldr r2,[r7,r2,lsl #2]
21679  add r0,r2,r3 ;@ r0=Disp+An+Rn
21680;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21681  mov r1,r1,lsr #16
21682  str r4,[r7,#0x40] ;@ Save PC
21683  bic r0,r0,#0xff000000
21684  bl m68k_write16 ;@ Call write16(r0,r1) handler
21685
21686  ldr r5,[r7,#0x5c] ;@ Load Cycles
21687  ldrh r8,[r4],#2 ;@ Fetch next opcode
21688  subs r5,r5,#26 ;@ Subtract cycles
21689  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21690  b CycloneEnd
21691
21692;@ ---------- [31ba] move.w ($3333,pc), ($33,a0,d3.w*2); =3335 uses Op31ba ----------
21693Op31ba:
21694  str r4,[r7,#0x50] ;@ Save prev PC + 2
21695  str r5,[r7,#0x5c] ;@ Save Cycles
21696
21697;@ EaCalc : Get '($3333,pc)' into r0:
21698  ldr r0,[r7,#0x60] ;@ Get Memory base
21699  sub r0,r4,r0 ;@ Real PC
21700  ldrsh r2,[r4],#2 ;@ Fetch extension
21701  add r0,r2,r0 ;@ ($nn,PC)
21702;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
21703  str r4,[r7,#0x40] ;@ Save PC
21704  bic r0,r0,#0xff000000
21705  bl m68k_fetch16 ;@ Call fetch16(r0) handler
21706  movs r1,r0,asl #16
21707
21708  and r10,r1,#0x80000000 ;@ r10=N_flag
21709  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21710
21711;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21712;@ Get extension word into r3:
21713  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21714  mov r2,r3,lsr #10
21715  tst r3,#0x0800 ;@ Is Rn Word or Long
21716  and r2,r2,#0x3c ;@ r2=Index of Rn
21717  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21718  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21719  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21720  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21721  and r2,r8,#0x1e00
21722  orr r2,r2,#0x1000 ;@ A0-7
21723  mov r2,r2,lsr #9
21724  ldr r2,[r7,r2,lsl #2]
21725  add r0,r2,r3 ;@ r0=Disp+An+Rn
21726;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21727  mov r1,r1,lsr #16
21728  str r4,[r7,#0x40] ;@ Save PC
21729  bic r0,r0,#0xff000000
21730  bl m68k_write16 ;@ Call write16(r0,r1) handler
21731
21732  ldr r5,[r7,#0x5c] ;@ Load Cycles
21733  ldrh r8,[r4],#2 ;@ Fetch next opcode
21734  subs r5,r5,#22 ;@ Subtract cycles
21735  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21736  b CycloneEnd
21737
21738;@ ---------- [31bb] move.w ($33,pc,d3.w*2), ($33,a0,d3.w*2); =35 uses Op31bb ----------
21739Op31bb:
21740  str r4,[r7,#0x50] ;@ Save prev PC + 2
21741  str r5,[r7,#0x5c] ;@ Save Cycles
21742
21743;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
21744  ldr r0,[r7,#0x60] ;@ Get Memory base
21745  ldrh r3,[r4] ;@ Get extension word
21746  sub r0,r4,r0 ;@ r0=PC
21747  add r4,r4,#2
21748  mov r2,r3,lsr #10
21749  tst r3,#0x0800 ;@ Is Rn Word or Long
21750  and r2,r2,#0x3c ;@ r2=Index of Rn
21751  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21752  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21753  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
21754  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
21755  add r0,r2,r0 ;@ r0=Disp+PC+Rn
21756;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
21757  str r4,[r7,#0x40] ;@ Save PC
21758  bic r0,r0,#0xff000000
21759  bl m68k_fetch16 ;@ Call fetch16(r0) handler
21760  movs r1,r0,asl #16
21761
21762  and r10,r1,#0x80000000 ;@ r10=N_flag
21763  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21764
21765;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21766;@ Get extension word into r3:
21767  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21768  mov r2,r3,lsr #10
21769  tst r3,#0x0800 ;@ Is Rn Word or Long
21770  and r2,r2,#0x3c ;@ r2=Index of Rn
21771  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21772  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21773  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21774  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21775  and r2,r8,#0x1e00
21776  orr r2,r2,#0x1000 ;@ A0-7
21777  mov r2,r2,lsr #9
21778  ldr r2,[r7,r2,lsl #2]
21779  add r0,r2,r3 ;@ r0=Disp+An+Rn
21780;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21781  mov r1,r1,lsr #16
21782  str r4,[r7,#0x40] ;@ Save PC
21783  bic r0,r0,#0xff000000
21784  bl m68k_write16 ;@ Call write16(r0,r1) handler
21785
21786  ldr r5,[r7,#0x5c] ;@ Load Cycles
21787  ldrh r8,[r4],#2 ;@ Fetch next opcode
21788  subs r5,r5,#24 ;@ Subtract cycles
21789  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21790  b CycloneEnd
21791
21792;@ ---------- [31bc] move.w #$3333, ($33,a0,d3.w*2) uses Op31bc ----------
21793Op31bc:
21794  str r4,[r7,#0x50] ;@ Save prev PC + 2
21795  str r5,[r7,#0x5c] ;@ Save Cycles
21796
21797;@ EaCalc : Get '#$3333' into r1:
21798  ldrsh r1,[r4],#2 ;@ Fetch immediate value
21799;@ EaRead : Read '#$3333' (address in r1) into r1:
21800  movs r1,r1,asl #16
21801
21802  and r10,r1,#0x80000000 ;@ r10=N_flag
21803  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21804
21805;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21806;@ Get extension word into r3:
21807  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21808  mov r2,r3,lsr #10
21809  tst r3,#0x0800 ;@ Is Rn Word or Long
21810  and r2,r2,#0x3c ;@ r2=Index of Rn
21811  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21812  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21813  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21814  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21815  and r2,r8,#0x1e00
21816  orr r2,r2,#0x1000 ;@ A0-7
21817  mov r2,r2,lsr #9
21818  ldr r2,[r7,r2,lsl #2]
21819  add r0,r2,r3 ;@ r0=Disp+An+Rn
21820;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21821  mov r1,r1,lsr #16
21822  str r4,[r7,#0x40] ;@ Save PC
21823  bic r0,r0,#0xff000000
21824  bl m68k_write16 ;@ Call write16(r0,r1) handler
21825
21826  ldr r5,[r7,#0x5c] ;@ Load Cycles
21827  ldrh r8,[r4],#2 ;@ Fetch next opcode
21828  subs r5,r5,#18 ;@ Subtract cycles
21829  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21830  b CycloneEnd
21831
21832;@ ---------- [31c0] move.w d0, $3333.w uses Op31c0 ----------
21833Op31c0:
21834  str r4,[r7,#0x50] ;@ Save prev PC + 2
21835  str r5,[r7,#0x5c] ;@ Save Cycles
21836
21837;@ EaCalc : Get register index into r1:
21838  and r1,r8,#0x000f
21839  mov r1,r1,lsl #2
21840;@ EaRead : Read register[r1] into r1:
21841  ldrh r1,[r7,r1]
21842
21843  movs r2,r1,lsl #16
21844  and r10,r2,#0x80000000 ;@ r10=N_flag
21845  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21846
21847;@ EaCalc : Get '$3333.w' into r0:
21848  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
21849;@ EaWrite: Write r1 into '$3333.w' (address in r0):
21850  str r4,[r7,#0x40] ;@ Save PC
21851  bic r0,r0,#0xff000000
21852  bl m68k_write16 ;@ Call write16(r0,r1) handler
21853
21854  ldr r5,[r7,#0x5c] ;@ Load Cycles
21855  ldrh r8,[r4],#2 ;@ Fetch next opcode
21856  subs r5,r5,#12 ;@ Subtract cycles
21857  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21858  b CycloneEnd
21859
21860;@ ---------- [31d0] move.w (a0), $3333.w uses Op31d0 ----------
21861Op31d0:
21862  str r4,[r7,#0x50] ;@ Save prev PC + 2
21863  str r5,[r7,#0x5c] ;@ Save Cycles
21864
21865;@ EaCalc : Get '(a0)' into r0:
21866  and r2,r8,#0x000f
21867  orr r2,r2,#0x8 ;@ A0-7
21868  ldr r0,[r7,r2,lsl #2]
21869;@ EaRead : Read '(a0)' (address in r0) into r1:
21870  str r4,[r7,#0x40] ;@ Save PC
21871  bic r0,r0,#0xff000000
21872  bl m68k_read16 ;@ Call read16(r0) handler
21873  movs r1,r0,asl #16
21874
21875  and r10,r1,#0x80000000 ;@ r10=N_flag
21876  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21877
21878;@ EaCalc : Get '$3333.w' into r0:
21879  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
21880;@ EaWrite: Write r1 into '$3333.w' (address in r0):
21881  mov r1,r1,lsr #16
21882  str r4,[r7,#0x40] ;@ Save PC
21883  bic r0,r0,#0xff000000
21884  bl m68k_write16 ;@ Call write16(r0,r1) handler
21885
21886  ldr r5,[r7,#0x5c] ;@ Load Cycles
21887  ldrh r8,[r4],#2 ;@ Fetch next opcode
21888  subs r5,r5,#16 ;@ Subtract cycles
21889  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21890  b CycloneEnd
21891
21892;@ ---------- [31d8] move.w (a0)+, $3333.w uses Op31d8 ----------
21893Op31d8:
21894  str r4,[r7,#0x50] ;@ Save prev PC + 2
21895  str r5,[r7,#0x5c] ;@ Save Cycles
21896
21897;@ EaCalc : Get '(a0)+' into r0:
21898  and r2,r8,#0x000f
21899  ldr r0,[r7,r2,lsl #2]
21900  add r3,r0,#2 ;@ Post-increment An
21901  str r3,[r7,r2,lsl #2]
21902;@ EaRead : Read '(a0)+' (address in r0) into r1:
21903  str r4,[r7,#0x40] ;@ Save PC
21904  bic r0,r0,#0xff000000
21905  bl m68k_read16 ;@ Call read16(r0) handler
21906  movs r1,r0,asl #16
21907
21908  and r10,r1,#0x80000000 ;@ r10=N_flag
21909  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21910
21911;@ EaCalc : Get '$3333.w' into r0:
21912  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
21913;@ EaWrite: Write r1 into '$3333.w' (address in r0):
21914  mov r1,r1,lsr #16
21915  str r4,[r7,#0x40] ;@ Save PC
21916  bic r0,r0,#0xff000000
21917  bl m68k_write16 ;@ Call write16(r0,r1) handler
21918
21919  ldr r5,[r7,#0x5c] ;@ Load Cycles
21920  ldrh r8,[r4],#2 ;@ Fetch next opcode
21921  subs r5,r5,#16 ;@ Subtract cycles
21922  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21923  b CycloneEnd
21924
21925;@ ---------- [31e0] move.w -(a0), $3333.w uses Op31e0 ----------
21926Op31e0:
21927  str r4,[r7,#0x50] ;@ Save prev PC + 2
21928  str r5,[r7,#0x5c] ;@ Save Cycles
21929
21930;@ EaCalc : Get '-(a0)' into r0:
21931  and r2,r8,#0x000f
21932  orr r2,r2,#0x8 ;@ A0-7
21933  ldr r0,[r7,r2,lsl #2]
21934  sub r0,r0,#2 ;@ Pre-decrement An
21935  str r0,[r7,r2,lsl #2]
21936;@ EaRead : Read '-(a0)' (address in r0) into r1:
21937  str r4,[r7,#0x40] ;@ Save PC
21938  bic r0,r0,#0xff000000
21939  bl m68k_read16 ;@ Call read16(r0) handler
21940  movs r1,r0,asl #16
21941
21942  and r10,r1,#0x80000000 ;@ r10=N_flag
21943  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21944
21945;@ EaCalc : Get '$3333.w' into r0:
21946  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
21947;@ EaWrite: Write r1 into '$3333.w' (address in r0):
21948  mov r1,r1,lsr #16
21949  str r4,[r7,#0x40] ;@ Save PC
21950  bic r0,r0,#0xff000000
21951  bl m68k_write16 ;@ Call write16(r0,r1) handler
21952
21953  ldr r5,[r7,#0x5c] ;@ Load Cycles
21954  ldrh r8,[r4],#2 ;@ Fetch next opcode
21955  subs r5,r5,#18 ;@ Subtract cycles
21956  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21957  b CycloneEnd
21958
21959;@ ---------- [31e8] move.w ($3333,a0), $3333.w uses Op31e8 ----------
21960Op31e8:
21961  str r4,[r7,#0x50] ;@ Save prev PC + 2
21962  str r5,[r7,#0x5c] ;@ Save Cycles
21963
21964;@ EaCalc : Get '($3333,a0)' into r0:
21965  ldrsh r0,[r4],#2 ;@ Fetch offset
21966  and r2,r8,#0x000f
21967  ldr r2,[r7,r2,lsl #2]
21968  add r0,r0,r2 ;@ Add on offset
21969;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
21970  str r4,[r7,#0x40] ;@ Save PC
21971  bic r0,r0,#0xff000000
21972  bl m68k_read16 ;@ Call read16(r0) handler
21973  movs r1,r0,asl #16
21974
21975  and r10,r1,#0x80000000 ;@ r10=N_flag
21976  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21977
21978;@ EaCalc : Get '$3333.w' into r0:
21979  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
21980;@ EaWrite: Write r1 into '$3333.w' (address in r0):
21981  mov r1,r1,lsr #16
21982  str r4,[r7,#0x40] ;@ Save PC
21983  bic r0,r0,#0xff000000
21984  bl m68k_write16 ;@ Call write16(r0,r1) handler
21985
21986  ldr r5,[r7,#0x5c] ;@ Load Cycles
21987  ldrh r8,[r4],#2 ;@ Fetch next opcode
21988  subs r5,r5,#20 ;@ Subtract cycles
21989  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21990  b CycloneEnd
21991
21992;@ ---------- [31f0] move.w ($33,a0,d3.w*2), $3333.w uses Op31f0 ----------
21993Op31f0:
21994  str r4,[r7,#0x50] ;@ Save prev PC + 2
21995  str r5,[r7,#0x5c] ;@ Save Cycles
21996
21997;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21998;@ Get extension word into r3:
21999  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
22000  mov r2,r3,lsr #10
22001  tst r3,#0x0800 ;@ Is Rn Word or Long
22002  and r2,r2,#0x3c ;@ r2=Index of Rn
22003  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22004  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22005  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
22006  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
22007  and r2,r8,#0x000f
22008  orr r2,r2,#0x8 ;@ A0-7
22009  ldr r2,[r7,r2,lsl #2]
22010  add r0,r2,r3 ;@ r0=Disp+An+Rn
22011;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
22012  str r4,[r7,#0x40] ;@ Save PC
22013  bic r0,r0,#0xff000000
22014  bl m68k_read16 ;@ Call read16(r0) handler
22015  movs r1,r0,asl #16
22016
22017  and r10,r1,#0x80000000 ;@ r10=N_flag
22018  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22019
22020;@ EaCalc : Get '$3333.w' into r0:
22021  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
22022;@ EaWrite: Write r1 into '$3333.w' (address in r0):
22023  mov r1,r1,lsr #16
22024  str r4,[r7,#0x40] ;@ Save PC
22025  bic r0,r0,#0xff000000
22026  bl m68k_write16 ;@ Call write16(r0,r1) handler
22027
22028  ldr r5,[r7,#0x5c] ;@ Load Cycles
22029  ldrh r8,[r4],#2 ;@ Fetch next opcode
22030  subs r5,r5,#22 ;@ Subtract cycles
22031  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22032  b CycloneEnd
22033
22034;@ ---------- [31f8] move.w $3333.w, $3333.w uses Op31f8 ----------
22035Op31f8:
22036  str r4,[r7,#0x50] ;@ Save prev PC + 2
22037  str r5,[r7,#0x5c] ;@ Save Cycles
22038
22039;@ EaCalc : Get '$3333.w' into r0:
22040  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
22041;@ EaRead : Read '$3333.w' (address in r0) into r1:
22042  str r4,[r7,#0x40] ;@ Save PC
22043  bic r0,r0,#0xff000000
22044  bl m68k_read16 ;@ Call read16(r0) handler
22045  movs r1,r0,asl #16
22046
22047  and r10,r1,#0x80000000 ;@ r10=N_flag
22048  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22049
22050;@ EaCalc : Get '$3333.w' into r0:
22051  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
22052;@ EaWrite: Write r1 into '$3333.w' (address in r0):
22053  mov r1,r1,lsr #16
22054  str r4,[r7,#0x40] ;@ Save PC
22055  bic r0,r0,#0xff000000
22056  bl m68k_write16 ;@ Call write16(r0,r1) handler
22057
22058  ldr r5,[r7,#0x5c] ;@ Load Cycles
22059  ldrh r8,[r4],#2 ;@ Fetch next opcode
22060  subs r5,r5,#20 ;@ Subtract cycles
22061  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22062  b CycloneEnd
22063
22064;@ ---------- [31f9] move.w $33333333.l, $3333.w uses Op31f9 ----------
22065Op31f9:
22066  str r4,[r7,#0x50] ;@ Save prev PC + 2
22067  str r5,[r7,#0x5c] ;@ Save Cycles
22068
22069;@ EaCalc : Get '$33333333.l' into r0:
22070  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22071  ldrh r0,[r4],#2
22072  orr r0,r0,r2,lsl #16
22073;@ EaRead : Read '$33333333.l' (address in r0) into r1:
22074  str r4,[r7,#0x40] ;@ Save PC
22075  bic r0,r0,#0xff000000
22076  bl m68k_read16 ;@ Call read16(r0) handler
22077  movs r1,r0,asl #16
22078
22079  and r10,r1,#0x80000000 ;@ r10=N_flag
22080  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22081
22082;@ EaCalc : Get '$3333.w' into r0:
22083  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
22084;@ EaWrite: Write r1 into '$3333.w' (address in r0):
22085  mov r1,r1,lsr #16
22086  str r4,[r7,#0x40] ;@ Save PC
22087  bic r0,r0,#0xff000000
22088  bl m68k_write16 ;@ Call write16(r0,r1) handler
22089
22090  ldr r5,[r7,#0x5c] ;@ Load Cycles
22091  ldrh r8,[r4],#2 ;@ Fetch next opcode
22092  subs r5,r5,#24 ;@ Subtract cycles
22093  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22094  b CycloneEnd
22095
22096;@ ---------- [31fa] move.w ($3333,pc), $3333.w; =3335 uses Op31fa ----------
22097Op31fa:
22098  str r4,[r7,#0x50] ;@ Save prev PC + 2
22099  str r5,[r7,#0x5c] ;@ Save Cycles
22100
22101;@ EaCalc : Get '($3333,pc)' into r0:
22102  ldr r0,[r7,#0x60] ;@ Get Memory base
22103  sub r0,r4,r0 ;@ Real PC
22104  ldrsh r2,[r4],#2 ;@ Fetch extension
22105  add r0,r2,r0 ;@ ($nn,PC)
22106;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
22107  str r4,[r7,#0x40] ;@ Save PC
22108  bic r0,r0,#0xff000000
22109  bl m68k_fetch16 ;@ Call fetch16(r0) handler
22110  movs r1,r0,asl #16
22111
22112  and r10,r1,#0x80000000 ;@ r10=N_flag
22113  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22114
22115;@ EaCalc : Get '$3333.w' into r0:
22116  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
22117;@ EaWrite: Write r1 into '$3333.w' (address in r0):
22118  mov r1,r1,lsr #16
22119  str r4,[r7,#0x40] ;@ Save PC
22120  bic r0,r0,#0xff000000
22121  bl m68k_write16 ;@ Call write16(r0,r1) handler
22122
22123  ldr r5,[r7,#0x5c] ;@ Load Cycles
22124  ldrh r8,[r4],#2 ;@ Fetch next opcode
22125  subs r5,r5,#20 ;@ Subtract cycles
22126  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22127  b CycloneEnd
22128
22129;@ ---------- [31fb] move.w ($33,pc,d3.w*2), $3333.w; =35 uses Op31fb ----------
22130Op31fb:
22131  str r4,[r7,#0x50] ;@ Save prev PC + 2
22132  str r5,[r7,#0x5c] ;@ Save Cycles
22133
22134;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
22135  ldr r0,[r7,#0x60] ;@ Get Memory base
22136  ldrh r3,[r4] ;@ Get extension word
22137  sub r0,r4,r0 ;@ r0=PC
22138  add r4,r4,#2
22139  mov r2,r3,lsr #10
22140  tst r3,#0x0800 ;@ Is Rn Word or Long
22141  and r2,r2,#0x3c ;@ r2=Index of Rn
22142  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22143  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22144  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
22145  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
22146  add r0,r2,r0 ;@ r0=Disp+PC+Rn
22147;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
22148  str r4,[r7,#0x40] ;@ Save PC
22149  bic r0,r0,#0xff000000
22150  bl m68k_fetch16 ;@ Call fetch16(r0) handler
22151  movs r1,r0,asl #16
22152
22153  and r10,r1,#0x80000000 ;@ r10=N_flag
22154  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22155
22156;@ EaCalc : Get '$3333.w' into r0:
22157  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
22158;@ EaWrite: Write r1 into '$3333.w' (address in r0):
22159  mov r1,r1,lsr #16
22160  str r4,[r7,#0x40] ;@ Save PC
22161  bic r0,r0,#0xff000000
22162  bl m68k_write16 ;@ Call write16(r0,r1) handler
22163
22164  ldr r5,[r7,#0x5c] ;@ Load Cycles
22165  ldrh r8,[r4],#2 ;@ Fetch next opcode
22166  subs r5,r5,#22 ;@ Subtract cycles
22167  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22168  b CycloneEnd
22169
22170;@ ---------- [31fc] move.w #$3333, $3333.w uses Op31fc ----------
22171Op31fc:
22172  str r4,[r7,#0x50] ;@ Save prev PC + 2
22173  str r5,[r7,#0x5c] ;@ Save Cycles
22174
22175;@ EaCalc : Get '#$3333' into r1:
22176  ldrsh r1,[r4],#2 ;@ Fetch immediate value
22177;@ EaRead : Read '#$3333' (address in r1) into r1:
22178  movs r1,r1,asl #16
22179
22180  and r10,r1,#0x80000000 ;@ r10=N_flag
22181  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22182
22183;@ EaCalc : Get '$3333.w' into r0:
22184  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
22185;@ EaWrite: Write r1 into '$3333.w' (address in r0):
22186  mov r1,r1,lsr #16
22187  str r4,[r7,#0x40] ;@ Save PC
22188  bic r0,r0,#0xff000000
22189  bl m68k_write16 ;@ Call write16(r0,r1) handler
22190
22191  ldr r5,[r7,#0x5c] ;@ Load Cycles
22192  ldrh r8,[r4],#2 ;@ Fetch next opcode
22193  subs r5,r5,#16 ;@ Subtract cycles
22194  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22195  b CycloneEnd
22196
22197;@ ---------- [33c0] move.w d0, $33333333.l uses Op33c0 ----------
22198Op33c0:
22199  str r4,[r7,#0x50] ;@ Save prev PC + 2
22200  str r5,[r7,#0x5c] ;@ Save Cycles
22201
22202;@ EaCalc : Get register index into r1:
22203  and r1,r8,#0x000f
22204  mov r1,r1,lsl #2
22205;@ EaRead : Read register[r1] into r1:
22206  ldrh r1,[r7,r1]
22207
22208  movs r2,r1,lsl #16
22209  and r10,r2,#0x80000000 ;@ r10=N_flag
22210  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22211
22212;@ EaCalc : Get '$33333333.l' into r0:
22213  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22214  ldrh r0,[r4],#2
22215  orr r0,r0,r2,lsl #16
22216;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
22217  str r4,[r7,#0x40] ;@ Save PC
22218  bic r0,r0,#0xff000000
22219  bl m68k_write16 ;@ Call write16(r0,r1) handler
22220
22221  ldr r5,[r7,#0x5c] ;@ Load Cycles
22222  ldrh r8,[r4],#2 ;@ Fetch next opcode
22223  subs r5,r5,#16 ;@ Subtract cycles
22224  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22225  b CycloneEnd
22226
22227;@ ---------- [33d0] move.w (a0), $33333333.l uses Op33d0 ----------
22228Op33d0:
22229  str r4,[r7,#0x50] ;@ Save prev PC + 2
22230  str r5,[r7,#0x5c] ;@ Save Cycles
22231
22232;@ EaCalc : Get '(a0)' into r0:
22233  and r2,r8,#0x000f
22234  orr r2,r2,#0x8 ;@ A0-7
22235  ldr r0,[r7,r2,lsl #2]
22236;@ EaRead : Read '(a0)' (address in r0) into r1:
22237  str r4,[r7,#0x40] ;@ Save PC
22238  bic r0,r0,#0xff000000
22239  bl m68k_read16 ;@ Call read16(r0) handler
22240  movs r1,r0,asl #16
22241
22242  and r10,r1,#0x80000000 ;@ r10=N_flag
22243  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22244
22245;@ EaCalc : Get '$33333333.l' into r0:
22246  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22247  ldrh r0,[r4],#2
22248  orr r0,r0,r2,lsl #16
22249;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
22250  mov r1,r1,lsr #16
22251  str r4,[r7,#0x40] ;@ Save PC
22252  bic r0,r0,#0xff000000
22253  bl m68k_write16 ;@ Call write16(r0,r1) handler
22254
22255  ldr r5,[r7,#0x5c] ;@ Load Cycles
22256  ldrh r8,[r4],#2 ;@ Fetch next opcode
22257  subs r5,r5,#20 ;@ Subtract cycles
22258  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22259  b CycloneEnd
22260
22261;@ ---------- [33e0] move.w -(a0), $33333333.l uses Op33e0 ----------
22262Op33e0:
22263  str r4,[r7,#0x50] ;@ Save prev PC + 2
22264  str r5,[r7,#0x5c] ;@ Save Cycles
22265
22266;@ EaCalc : Get '-(a0)' into r0:
22267  and r2,r8,#0x000f
22268  orr r2,r2,#0x8 ;@ A0-7
22269  ldr r0,[r7,r2,lsl #2]
22270  sub r0,r0,#2 ;@ Pre-decrement An
22271  str r0,[r7,r2,lsl #2]
22272;@ EaRead : Read '-(a0)' (address in r0) into r1:
22273  str r4,[r7,#0x40] ;@ Save PC
22274  bic r0,r0,#0xff000000
22275  bl m68k_read16 ;@ Call read16(r0) handler
22276  movs r1,r0,asl #16
22277
22278  and r10,r1,#0x80000000 ;@ r10=N_flag
22279  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22280
22281;@ EaCalc : Get '$33333333.l' into r0:
22282  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22283  ldrh r0,[r4],#2
22284  orr r0,r0,r2,lsl #16
22285;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
22286  mov r1,r1,lsr #16
22287  str r4,[r7,#0x40] ;@ Save PC
22288  bic r0,r0,#0xff000000
22289  bl m68k_write16 ;@ Call write16(r0,r1) handler
22290
22291  ldr r5,[r7,#0x5c] ;@ Load Cycles
22292  ldrh r8,[r4],#2 ;@ Fetch next opcode
22293  subs r5,r5,#22 ;@ Subtract cycles
22294  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22295  b CycloneEnd
22296
22297;@ ---------- [33e8] move.w ($3333,a0), $33333333.l uses Op33e8 ----------
22298Op33e8:
22299  str r4,[r7,#0x50] ;@ Save prev PC + 2
22300  str r5,[r7,#0x5c] ;@ Save Cycles
22301
22302;@ EaCalc : Get '($3333,a0)' into r0:
22303  ldrsh r0,[r4],#2 ;@ Fetch offset
22304  and r2,r8,#0x000f
22305  ldr r2,[r7,r2,lsl #2]
22306  add r0,r0,r2 ;@ Add on offset
22307;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
22308  str r4,[r7,#0x40] ;@ Save PC
22309  bic r0,r0,#0xff000000
22310  bl m68k_read16 ;@ Call read16(r0) handler
22311  movs r1,r0,asl #16
22312
22313  and r10,r1,#0x80000000 ;@ r10=N_flag
22314  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22315
22316;@ EaCalc : Get '$33333333.l' into r0:
22317  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22318  ldrh r0,[r4],#2
22319  orr r0,r0,r2,lsl #16
22320;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
22321  mov r1,r1,lsr #16
22322  str r4,[r7,#0x40] ;@ Save PC
22323  bic r0,r0,#0xff000000
22324  bl m68k_write16 ;@ Call write16(r0,r1) handler
22325
22326  ldr r5,[r7,#0x5c] ;@ Load Cycles
22327  ldrh r8,[r4],#2 ;@ Fetch next opcode
22328  subs r5,r5,#24 ;@ Subtract cycles
22329  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22330  b CycloneEnd
22331
22332;@ ---------- [33f0] move.w ($33,a0,d3.w*2), $33333333.l uses Op33f0 ----------
22333Op33f0:
22334  str r4,[r7,#0x50] ;@ Save prev PC + 2
22335  str r5,[r7,#0x5c] ;@ Save Cycles
22336
22337;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
22338;@ Get extension word into r3:
22339  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
22340  mov r2,r3,lsr #10
22341  tst r3,#0x0800 ;@ Is Rn Word or Long
22342  and r2,r2,#0x3c ;@ r2=Index of Rn
22343  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22344  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22345  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
22346  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
22347  and r2,r8,#0x000f
22348  orr r2,r2,#0x8 ;@ A0-7
22349  ldr r2,[r7,r2,lsl #2]
22350  add r0,r2,r3 ;@ r0=Disp+An+Rn
22351;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
22352  str r4,[r7,#0x40] ;@ Save PC
22353  bic r0,r0,#0xff000000
22354  bl m68k_read16 ;@ Call read16(r0) handler
22355  movs r1,r0,asl #16
22356
22357  and r10,r1,#0x80000000 ;@ r10=N_flag
22358  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22359
22360;@ EaCalc : Get '$33333333.l' into r0:
22361  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22362  ldrh r0,[r4],#2
22363  orr r0,r0,r2,lsl #16
22364;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
22365  mov r1,r1,lsr #16
22366  str r4,[r7,#0x40] ;@ Save PC
22367  bic r0,r0,#0xff000000
22368  bl m68k_write16 ;@ Call write16(r0,r1) handler
22369
22370  ldr r5,[r7,#0x5c] ;@ Load Cycles
22371  ldrh r8,[r4],#2 ;@ Fetch next opcode
22372  subs r5,r5,#26 ;@ Subtract cycles
22373  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22374  b CycloneEnd
22375
22376;@ ---------- [33f8] move.w $3333.w, $33333333.l uses Op33f8 ----------
22377Op33f8:
22378  str r4,[r7,#0x50] ;@ Save prev PC + 2
22379  str r5,[r7,#0x5c] ;@ Save Cycles
22380
22381;@ EaCalc : Get '$3333.w' into r0:
22382  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
22383;@ EaRead : Read '$3333.w' (address in r0) into r1:
22384  str r4,[r7,#0x40] ;@ Save PC
22385  bic r0,r0,#0xff000000
22386  bl m68k_read16 ;@ Call read16(r0) handler
22387  movs r1,r0,asl #16
22388
22389  and r10,r1,#0x80000000 ;@ r10=N_flag
22390  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22391
22392;@ EaCalc : Get '$33333333.l' into r0:
22393  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22394  ldrh r0,[r4],#2
22395  orr r0,r0,r2,lsl #16
22396;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
22397  mov r1,r1,lsr #16
22398  str r4,[r7,#0x40] ;@ Save PC
22399  bic r0,r0,#0xff000000
22400  bl m68k_write16 ;@ Call write16(r0,r1) handler
22401
22402  ldr r5,[r7,#0x5c] ;@ Load Cycles
22403  ldrh r8,[r4],#2 ;@ Fetch next opcode
22404  subs r5,r5,#24 ;@ Subtract cycles
22405  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22406  b CycloneEnd
22407
22408;@ ---------- [33f9] move.w $33333333.l, $33333333.l uses Op33f9 ----------
22409Op33f9:
22410  str r4,[r7,#0x50] ;@ Save prev PC + 2
22411  str r5,[r7,#0x5c] ;@ Save Cycles
22412
22413;@ EaCalc : Get '$33333333.l' into r0:
22414  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22415  ldrh r0,[r4],#2
22416  orr r0,r0,r2,lsl #16
22417;@ EaRead : Read '$33333333.l' (address in r0) into r1:
22418  str r4,[r7,#0x40] ;@ Save PC
22419  bic r0,r0,#0xff000000
22420  bl m68k_read16 ;@ Call read16(r0) handler
22421  movs r1,r0,asl #16
22422
22423  and r10,r1,#0x80000000 ;@ r10=N_flag
22424  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22425
22426;@ EaCalc : Get '$33333333.l' into r0:
22427  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22428  ldrh r0,[r4],#2
22429  orr r0,r0,r2,lsl #16
22430;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
22431  mov r1,r1,lsr #16
22432  str r4,[r7,#0x40] ;@ Save PC
22433  bic r0,r0,#0xff000000
22434  bl m68k_write16 ;@ Call write16(r0,r1) handler
22435
22436  ldr r5,[r7,#0x5c] ;@ Load Cycles
22437  ldrh r8,[r4],#2 ;@ Fetch next opcode
22438  subs r5,r5,#28 ;@ Subtract cycles
22439  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22440  b CycloneEnd
22441
22442;@ ---------- [33fa] move.w ($3333,pc), $33333333.l; =3335 uses Op33fa ----------
22443Op33fa:
22444  str r4,[r7,#0x50] ;@ Save prev PC + 2
22445  str r5,[r7,#0x5c] ;@ Save Cycles
22446
22447;@ EaCalc : Get '($3333,pc)' into r0:
22448  ldr r0,[r7,#0x60] ;@ Get Memory base
22449  sub r0,r4,r0 ;@ Real PC
22450  ldrsh r2,[r4],#2 ;@ Fetch extension
22451  add r0,r2,r0 ;@ ($nn,PC)
22452;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
22453  str r4,[r7,#0x40] ;@ Save PC
22454  bic r0,r0,#0xff000000
22455  bl m68k_fetch16 ;@ Call fetch16(r0) handler
22456  movs r1,r0,asl #16
22457
22458  and r10,r1,#0x80000000 ;@ r10=N_flag
22459  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22460
22461;@ EaCalc : Get '$33333333.l' into r0:
22462  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22463  ldrh r0,[r4],#2
22464  orr r0,r0,r2,lsl #16
22465;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
22466  mov r1,r1,lsr #16
22467  str r4,[r7,#0x40] ;@ Save PC
22468  bic r0,r0,#0xff000000
22469  bl m68k_write16 ;@ Call write16(r0,r1) handler
22470
22471  ldr r5,[r7,#0x5c] ;@ Load Cycles
22472  ldrh r8,[r4],#2 ;@ Fetch next opcode
22473  subs r5,r5,#24 ;@ Subtract cycles
22474  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22475  b CycloneEnd
22476
22477;@ ---------- [33fb] move.w ($33,pc,d3.w*2), $33333333.l; =35 uses Op33fb ----------
22478Op33fb:
22479  str r4,[r7,#0x50] ;@ Save prev PC + 2
22480  str r5,[r7,#0x5c] ;@ Save Cycles
22481
22482;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
22483  ldr r0,[r7,#0x60] ;@ Get Memory base
22484  ldrh r3,[r4] ;@ Get extension word
22485  sub r0,r4,r0 ;@ r0=PC
22486  add r4,r4,#2
22487  mov r2,r3,lsr #10
22488  tst r3,#0x0800 ;@ Is Rn Word or Long
22489  and r2,r2,#0x3c ;@ r2=Index of Rn
22490  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22491  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22492  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
22493  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
22494  add r0,r2,r0 ;@ r0=Disp+PC+Rn
22495;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
22496  str r4,[r7,#0x40] ;@ Save PC
22497  bic r0,r0,#0xff000000
22498  bl m68k_fetch16 ;@ Call fetch16(r0) handler
22499  movs r1,r0,asl #16
22500
22501  and r10,r1,#0x80000000 ;@ r10=N_flag
22502  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22503
22504;@ EaCalc : Get '$33333333.l' into r0:
22505  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22506  ldrh r0,[r4],#2
22507  orr r0,r0,r2,lsl #16
22508;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
22509  mov r1,r1,lsr #16
22510  str r4,[r7,#0x40] ;@ Save PC
22511  bic r0,r0,#0xff000000
22512  bl m68k_write16 ;@ Call write16(r0,r1) handler
22513
22514  ldr r5,[r7,#0x5c] ;@ Load Cycles
22515  ldrh r8,[r4],#2 ;@ Fetch next opcode
22516  subs r5,r5,#26 ;@ Subtract cycles
22517  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22518  b CycloneEnd
22519
22520;@ ---------- [33fc] move.w #$3333, $33333333.l uses Op33fc ----------
22521Op33fc:
22522  str r4,[r7,#0x50] ;@ Save prev PC + 2
22523  str r5,[r7,#0x5c] ;@ Save Cycles
22524
22525;@ EaCalc : Get '#$3333' into r1:
22526  ldrsh r1,[r4],#2 ;@ Fetch immediate value
22527;@ EaRead : Read '#$3333' (address in r1) into r1:
22528  movs r1,r1,asl #16
22529
22530  and r10,r1,#0x80000000 ;@ r10=N_flag
22531  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22532
22533;@ EaCalc : Get '$33333333.l' into r0:
22534  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22535  ldrh r0,[r4],#2
22536  orr r0,r0,r2,lsl #16
22537;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
22538  mov r1,r1,lsr #16
22539  str r4,[r7,#0x40] ;@ Save PC
22540  bic r0,r0,#0xff000000
22541  bl m68k_write16 ;@ Call write16(r0,r1) handler
22542
22543  ldr r5,[r7,#0x5c] ;@ Load Cycles
22544  ldrh r8,[r4],#2 ;@ Fetch next opcode
22545  subs r5,r5,#20 ;@ Subtract cycles
22546  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22547  b CycloneEnd
22548
22549;@ ---------- [3ec0] move.w d0, (a7)+ uses Op3ec0 ----------
22550Op3ec0:
22551  str r4,[r7,#0x50] ;@ Save prev PC + 2
22552  str r5,[r7,#0x5c] ;@ Save Cycles
22553
22554;@ EaCalc : Get register index into r1:
22555  and r1,r8,#0x000f
22556  mov r1,r1,lsl #2
22557;@ EaRead : Read register[r1] into r1:
22558  ldrh r1,[r7,r1]
22559
22560  movs r2,r1,lsl #16
22561  and r10,r2,#0x80000000 ;@ r10=N_flag
22562  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22563
22564;@ EaCalc : Get '(a7)+' into r0:
22565  ldr r0,[r7,#0x3c] ;@ A7
22566  add r3,r0,#2 ;@ Post-increment An
22567  str r3,[r7,#0x3c] ;@ A7
22568;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22569  str r4,[r7,#0x40] ;@ Save PC
22570  bic r0,r0,#0xff000000
22571  bl m68k_write16 ;@ Call write16(r0,r1) handler
22572
22573  ldr r5,[r7,#0x5c] ;@ Load Cycles
22574  ldrh r8,[r4],#2 ;@ Fetch next opcode
22575  subs r5,r5,#8 ;@ Subtract cycles
22576  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22577  b CycloneEnd
22578
22579;@ ---------- [3ed0] move.w (a0), (a7)+ uses Op3ed0 ----------
22580Op3ed0:
22581  str r4,[r7,#0x50] ;@ Save prev PC + 2
22582  str r5,[r7,#0x5c] ;@ Save Cycles
22583
22584;@ EaCalc : Get '(a0)' into r0:
22585  and r2,r8,#0x000f
22586  orr r2,r2,#0x8 ;@ A0-7
22587  ldr r0,[r7,r2,lsl #2]
22588;@ EaRead : Read '(a0)' (address in r0) into r1:
22589  str r4,[r7,#0x40] ;@ Save PC
22590  bic r0,r0,#0xff000000
22591  bl m68k_read16 ;@ Call read16(r0) handler
22592  movs r1,r0,asl #16
22593
22594  and r10,r1,#0x80000000 ;@ r10=N_flag
22595  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22596
22597;@ EaCalc : Get '(a7)+' into r0:
22598  ldr r0,[r7,#0x3c] ;@ A7
22599  add r3,r0,#2 ;@ Post-increment An
22600  str r3,[r7,#0x3c] ;@ A7
22601;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22602  mov r1,r1,lsr #16
22603  bic r0,r0,#0xff000000
22604  bl m68k_write16 ;@ Call write16(r0,r1) handler
22605
22606  ldr r5,[r7,#0x5c] ;@ Load Cycles
22607  ldrh r8,[r4],#2 ;@ Fetch next opcode
22608  subs r5,r5,#12 ;@ Subtract cycles
22609  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22610  b CycloneEnd
22611
22612;@ ---------- [3ed8] move.w (a0)+, (a7)+ uses Op3ed8 ----------
22613Op3ed8:
22614  str r4,[r7,#0x50] ;@ Save prev PC + 2
22615  str r5,[r7,#0x5c] ;@ Save Cycles
22616
22617;@ EaCalc : Get '(a0)+' into r0:
22618  and r2,r8,#0x000f
22619  ldr r0,[r7,r2,lsl #2]
22620  add r3,r0,#2 ;@ Post-increment An
22621  str r3,[r7,r2,lsl #2]
22622;@ EaRead : Read '(a0)+' (address in r0) into r1:
22623  str r4,[r7,#0x40] ;@ Save PC
22624  bic r0,r0,#0xff000000
22625  bl m68k_read16 ;@ Call read16(r0) handler
22626  movs r1,r0,asl #16
22627
22628  and r10,r1,#0x80000000 ;@ r10=N_flag
22629  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22630
22631;@ EaCalc : Get '(a7)+' into r0:
22632  ldr r0,[r7,#0x3c] ;@ A7
22633  add r3,r0,#2 ;@ Post-increment An
22634  str r3,[r7,#0x3c] ;@ A7
22635;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22636  mov r1,r1,lsr #16
22637  bic r0,r0,#0xff000000
22638  bl m68k_write16 ;@ Call write16(r0,r1) handler
22639
22640  ldr r5,[r7,#0x5c] ;@ Load Cycles
22641  ldrh r8,[r4],#2 ;@ Fetch next opcode
22642  subs r5,r5,#12 ;@ Subtract cycles
22643  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22644  b CycloneEnd
22645
22646;@ ---------- [3ee0] move.w -(a0), (a7)+ uses Op3ee0 ----------
22647Op3ee0:
22648  str r4,[r7,#0x50] ;@ Save prev PC + 2
22649  str r5,[r7,#0x5c] ;@ Save Cycles
22650
22651;@ EaCalc : Get '-(a0)' into r0:
22652  and r2,r8,#0x000f
22653  orr r2,r2,#0x8 ;@ A0-7
22654  ldr r0,[r7,r2,lsl #2]
22655  sub r0,r0,#2 ;@ Pre-decrement An
22656  str r0,[r7,r2,lsl #2]
22657;@ EaRead : Read '-(a0)' (address in r0) into r1:
22658  str r4,[r7,#0x40] ;@ Save PC
22659  bic r0,r0,#0xff000000
22660  bl m68k_read16 ;@ Call read16(r0) handler
22661  movs r1,r0,asl #16
22662
22663  and r10,r1,#0x80000000 ;@ r10=N_flag
22664  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22665
22666;@ EaCalc : Get '(a7)+' into r0:
22667  ldr r0,[r7,#0x3c] ;@ A7
22668  add r3,r0,#2 ;@ Post-increment An
22669  str r3,[r7,#0x3c] ;@ A7
22670;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22671  mov r1,r1,lsr #16
22672  bic r0,r0,#0xff000000
22673  bl m68k_write16 ;@ Call write16(r0,r1) handler
22674
22675  ldr r5,[r7,#0x5c] ;@ Load Cycles
22676  ldrh r8,[r4],#2 ;@ Fetch next opcode
22677  subs r5,r5,#14 ;@ Subtract cycles
22678  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22679  b CycloneEnd
22680
22681;@ ---------- [3ee8] move.w ($3333,a0), (a7)+ uses Op3ee8 ----------
22682Op3ee8:
22683  str r4,[r7,#0x50] ;@ Save prev PC + 2
22684  str r5,[r7,#0x5c] ;@ Save Cycles
22685
22686;@ EaCalc : Get '($3333,a0)' into r0:
22687  ldrsh r0,[r4],#2 ;@ Fetch offset
22688  and r2,r8,#0x000f
22689  ldr r2,[r7,r2,lsl #2]
22690  add r0,r0,r2 ;@ Add on offset
22691;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
22692  str r4,[r7,#0x40] ;@ Save PC
22693  bic r0,r0,#0xff000000
22694  bl m68k_read16 ;@ Call read16(r0) handler
22695  movs r1,r0,asl #16
22696
22697  and r10,r1,#0x80000000 ;@ r10=N_flag
22698  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22699
22700;@ EaCalc : Get '(a7)+' into r0:
22701  ldr r0,[r7,#0x3c] ;@ A7
22702  add r3,r0,#2 ;@ Post-increment An
22703  str r3,[r7,#0x3c] ;@ A7
22704;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22705  mov r1,r1,lsr #16
22706  bic r0,r0,#0xff000000
22707  bl m68k_write16 ;@ Call write16(r0,r1) handler
22708
22709  ldr r5,[r7,#0x5c] ;@ Load Cycles
22710  ldrh r8,[r4],#2 ;@ Fetch next opcode
22711  subs r5,r5,#16 ;@ Subtract cycles
22712  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22713  b CycloneEnd
22714
22715;@ ---------- [3ef0] move.w ($33,a0,d3.w*2), (a7)+ uses Op3ef0 ----------
22716Op3ef0:
22717  str r4,[r7,#0x50] ;@ Save prev PC + 2
22718  str r5,[r7,#0x5c] ;@ Save Cycles
22719
22720;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
22721;@ Get extension word into r3:
22722  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
22723  mov r2,r3,lsr #10
22724  tst r3,#0x0800 ;@ Is Rn Word or Long
22725  and r2,r2,#0x3c ;@ r2=Index of Rn
22726  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22727  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22728  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
22729  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
22730  and r2,r8,#0x000f
22731  orr r2,r2,#0x8 ;@ A0-7
22732  ldr r2,[r7,r2,lsl #2]
22733  add r0,r2,r3 ;@ r0=Disp+An+Rn
22734;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
22735  str r4,[r7,#0x40] ;@ Save PC
22736  bic r0,r0,#0xff000000
22737  bl m68k_read16 ;@ Call read16(r0) handler
22738  movs r1,r0,asl #16
22739
22740  and r10,r1,#0x80000000 ;@ r10=N_flag
22741  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22742
22743;@ EaCalc : Get '(a7)+' into r0:
22744  ldr r0,[r7,#0x3c] ;@ A7
22745  add r3,r0,#2 ;@ Post-increment An
22746  str r3,[r7,#0x3c] ;@ A7
22747;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22748  mov r1,r1,lsr #16
22749  bic r0,r0,#0xff000000
22750  bl m68k_write16 ;@ Call write16(r0,r1) handler
22751
22752  ldr r5,[r7,#0x5c] ;@ Load Cycles
22753  ldrh r8,[r4],#2 ;@ Fetch next opcode
22754  subs r5,r5,#18 ;@ Subtract cycles
22755  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22756  b CycloneEnd
22757
22758;@ ---------- [3ef8] move.w $3333.w, (a7)+ uses Op3ef8 ----------
22759Op3ef8:
22760  str r4,[r7,#0x50] ;@ Save prev PC + 2
22761  str r5,[r7,#0x5c] ;@ Save Cycles
22762
22763;@ EaCalc : Get '$3333.w' into r0:
22764  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
22765;@ EaRead : Read '$3333.w' (address in r0) into r1:
22766  str r4,[r7,#0x40] ;@ Save PC
22767  bic r0,r0,#0xff000000
22768  bl m68k_read16 ;@ Call read16(r0) handler
22769  movs r1,r0,asl #16
22770
22771  and r10,r1,#0x80000000 ;@ r10=N_flag
22772  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22773
22774;@ EaCalc : Get '(a7)+' into r0:
22775  ldr r0,[r7,#0x3c] ;@ A7
22776  add r3,r0,#2 ;@ Post-increment An
22777  str r3,[r7,#0x3c] ;@ A7
22778;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22779  mov r1,r1,lsr #16
22780  bic r0,r0,#0xff000000
22781  bl m68k_write16 ;@ Call write16(r0,r1) handler
22782
22783  ldr r5,[r7,#0x5c] ;@ Load Cycles
22784  ldrh r8,[r4],#2 ;@ Fetch next opcode
22785  subs r5,r5,#16 ;@ Subtract cycles
22786  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22787  b CycloneEnd
22788
22789;@ ---------- [3ef9] move.w $33333333.l, (a7)+ uses Op3ef9 ----------
22790Op3ef9:
22791  str r4,[r7,#0x50] ;@ Save prev PC + 2
22792  str r5,[r7,#0x5c] ;@ Save Cycles
22793
22794;@ EaCalc : Get '$33333333.l' into r0:
22795  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22796  ldrh r0,[r4],#2
22797  orr r0,r0,r2,lsl #16
22798;@ EaRead : Read '$33333333.l' (address in r0) into r1:
22799  str r4,[r7,#0x40] ;@ Save PC
22800  bic r0,r0,#0xff000000
22801  bl m68k_read16 ;@ Call read16(r0) handler
22802  movs r1,r0,asl #16
22803
22804  and r10,r1,#0x80000000 ;@ r10=N_flag
22805  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22806
22807;@ EaCalc : Get '(a7)+' into r0:
22808  ldr r0,[r7,#0x3c] ;@ A7
22809  add r3,r0,#2 ;@ Post-increment An
22810  str r3,[r7,#0x3c] ;@ A7
22811;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22812  mov r1,r1,lsr #16
22813  bic r0,r0,#0xff000000
22814  bl m68k_write16 ;@ Call write16(r0,r1) handler
22815
22816  ldr r5,[r7,#0x5c] ;@ Load Cycles
22817  ldrh r8,[r4],#2 ;@ Fetch next opcode
22818  subs r5,r5,#20 ;@ Subtract cycles
22819  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22820  b CycloneEnd
22821
22822;@ ---------- [3efa] move.w ($3333,pc), (a7)+; =3335 uses Op3efa ----------
22823Op3efa:
22824  str r4,[r7,#0x50] ;@ Save prev PC + 2
22825  str r5,[r7,#0x5c] ;@ Save Cycles
22826
22827;@ EaCalc : Get '($3333,pc)' into r0:
22828  ldr r0,[r7,#0x60] ;@ Get Memory base
22829  sub r0,r4,r0 ;@ Real PC
22830  ldrsh r2,[r4],#2 ;@ Fetch extension
22831  add r0,r2,r0 ;@ ($nn,PC)
22832;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
22833  str r4,[r7,#0x40] ;@ Save PC
22834  bic r0,r0,#0xff000000
22835  bl m68k_fetch16 ;@ Call fetch16(r0) handler
22836  movs r1,r0,asl #16
22837
22838  and r10,r1,#0x80000000 ;@ r10=N_flag
22839  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22840
22841;@ EaCalc : Get '(a7)+' into r0:
22842  ldr r0,[r7,#0x3c] ;@ A7
22843  add r3,r0,#2 ;@ Post-increment An
22844  str r3,[r7,#0x3c] ;@ A7
22845;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22846  mov r1,r1,lsr #16
22847  bic r0,r0,#0xff000000
22848  bl m68k_write16 ;@ Call write16(r0,r1) handler
22849
22850  ldr r5,[r7,#0x5c] ;@ Load Cycles
22851  ldrh r8,[r4],#2 ;@ Fetch next opcode
22852  subs r5,r5,#16 ;@ Subtract cycles
22853  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22854  b CycloneEnd
22855
22856;@ ---------- [3efb] move.w ($33,pc,d3.w*2), (a7)+; =35 uses Op3efb ----------
22857Op3efb:
22858  str r4,[r7,#0x50] ;@ Save prev PC + 2
22859  str r5,[r7,#0x5c] ;@ Save Cycles
22860
22861;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
22862  ldr r0,[r7,#0x60] ;@ Get Memory base
22863  ldrh r3,[r4] ;@ Get extension word
22864  sub r0,r4,r0 ;@ r0=PC
22865  add r4,r4,#2
22866  mov r2,r3,lsr #10
22867  tst r3,#0x0800 ;@ Is Rn Word or Long
22868  and r2,r2,#0x3c ;@ r2=Index of Rn
22869  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22870  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22871  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
22872  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
22873  add r0,r2,r0 ;@ r0=Disp+PC+Rn
22874;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
22875  str r4,[r7,#0x40] ;@ Save PC
22876  bic r0,r0,#0xff000000
22877  bl m68k_fetch16 ;@ Call fetch16(r0) handler
22878  movs r1,r0,asl #16
22879
22880  and r10,r1,#0x80000000 ;@ r10=N_flag
22881  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22882
22883;@ EaCalc : Get '(a7)+' into r0:
22884  ldr r0,[r7,#0x3c] ;@ A7
22885  add r3,r0,#2 ;@ Post-increment An
22886  str r3,[r7,#0x3c] ;@ A7
22887;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22888  mov r1,r1,lsr #16
22889  bic r0,r0,#0xff000000
22890  bl m68k_write16 ;@ Call write16(r0,r1) handler
22891
22892  ldr r5,[r7,#0x5c] ;@ Load Cycles
22893  ldrh r8,[r4],#2 ;@ Fetch next opcode
22894  subs r5,r5,#18 ;@ Subtract cycles
22895  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22896  b CycloneEnd
22897
22898;@ ---------- [3efc] move.w #$3333, (a7)+ uses Op3efc ----------
22899Op3efc:
22900  str r4,[r7,#0x50] ;@ Save prev PC + 2
22901  str r5,[r7,#0x5c] ;@ Save Cycles
22902
22903;@ EaCalc : Get '#$3333' into r1:
22904  ldrsh r1,[r4],#2 ;@ Fetch immediate value
22905;@ EaRead : Read '#$3333' (address in r1) into r1:
22906  movs r1,r1,asl #16
22907
22908  and r10,r1,#0x80000000 ;@ r10=N_flag
22909  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22910
22911;@ EaCalc : Get '(a7)+' into r0:
22912  ldr r0,[r7,#0x3c] ;@ A7
22913  add r3,r0,#2 ;@ Post-increment An
22914  str r3,[r7,#0x3c] ;@ A7
22915;@ EaWrite: Write r1 into '(a7)+' (address in r0):
22916  mov r1,r1,lsr #16
22917  str r4,[r7,#0x40] ;@ Save PC
22918  bic r0,r0,#0xff000000
22919  bl m68k_write16 ;@ Call write16(r0,r1) handler
22920
22921  ldr r5,[r7,#0x5c] ;@ Load Cycles
22922  ldrh r8,[r4],#2 ;@ Fetch next opcode
22923  subs r5,r5,#12 ;@ Subtract cycles
22924  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22925  b CycloneEnd
22926
22927;@ ---------- [3f00] move.w d0, -(a7) uses Op3f00 ----------
22928Op3f00:
22929  str r4,[r7,#0x50] ;@ Save prev PC + 2
22930  str r5,[r7,#0x5c] ;@ Save Cycles
22931
22932;@ EaCalc : Get register index into r1:
22933  and r1,r8,#0x000f
22934  mov r1,r1,lsl #2
22935;@ EaRead : Read register[r1] into r1:
22936  ldrh r1,[r7,r1]
22937
22938  movs r2,r1,lsl #16
22939  and r10,r2,#0x80000000 ;@ r10=N_flag
22940  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22941
22942;@ EaCalc : Get '-(a7)' into r0:
22943  ldr r0,[r7,#0x3c] ;@ A7
22944  sub r0,r0,#2 ;@ Pre-decrement An
22945  str r0,[r7,#0x3c] ;@ A7
22946;@ EaWrite: Write r1 into '-(a7)' (address in r0):
22947  str r4,[r7,#0x40] ;@ Save PC
22948  bic r0,r0,#0xff000000
22949  bl m68k_write16 ;@ Call write16(r0,r1) handler
22950
22951  ldr r5,[r7,#0x5c] ;@ Load Cycles
22952  ldrh r8,[r4],#2 ;@ Fetch next opcode
22953  subs r5,r5,#8 ;@ Subtract cycles
22954  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22955  b CycloneEnd
22956
22957;@ ---------- [3f10] move.w (a0), -(a7) uses Op3f10 ----------
22958Op3f10:
22959  str r4,[r7,#0x50] ;@ Save prev PC + 2
22960  str r5,[r7,#0x5c] ;@ Save Cycles
22961
22962;@ EaCalc : Get '(a0)' into r0:
22963  and r2,r8,#0x000f
22964  orr r2,r2,#0x8 ;@ A0-7
22965  ldr r0,[r7,r2,lsl #2]
22966;@ EaRead : Read '(a0)' (address in r0) into r1:
22967  str r4,[r7,#0x40] ;@ Save PC
22968  bic r0,r0,#0xff000000
22969  bl m68k_read16 ;@ Call read16(r0) handler
22970  movs r1,r0,asl #16
22971
22972  and r10,r1,#0x80000000 ;@ r10=N_flag
22973  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22974
22975;@ EaCalc : Get '-(a7)' into r0:
22976  ldr r0,[r7,#0x3c] ;@ A7
22977  sub r0,r0,#2 ;@ Pre-decrement An
22978  str r0,[r7,#0x3c] ;@ A7
22979;@ EaWrite: Write r1 into '-(a7)' (address in r0):
22980  mov r1,r1,lsr #16
22981  bic r0,r0,#0xff000000
22982  bl m68k_write16 ;@ Call write16(r0,r1) handler
22983
22984  ldr r5,[r7,#0x5c] ;@ Load Cycles
22985  ldrh r8,[r4],#2 ;@ Fetch next opcode
22986  subs r5,r5,#12 ;@ Subtract cycles
22987  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22988  b CycloneEnd
22989
22990;@ ---------- [3f18] move.w (a0)+, -(a7) uses Op3f18 ----------
22991Op3f18:
22992  str r4,[r7,#0x50] ;@ Save prev PC + 2
22993  str r5,[r7,#0x5c] ;@ Save Cycles
22994
22995;@ EaCalc : Get '(a0)+' into r0:
22996  and r2,r8,#0x000f
22997  ldr r0,[r7,r2,lsl #2]
22998  add r3,r0,#2 ;@ Post-increment An
22999  str r3,[r7,r2,lsl #2]
23000;@ EaRead : Read '(a0)+' (address in r0) into r1:
23001  str r4,[r7,#0x40] ;@ Save PC
23002  bic r0,r0,#0xff000000
23003  bl m68k_read16 ;@ Call read16(r0) handler
23004  movs r1,r0,asl #16
23005
23006  and r10,r1,#0x80000000 ;@ r10=N_flag
23007  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23008
23009;@ EaCalc : Get '-(a7)' into r0:
23010  ldr r0,[r7,#0x3c] ;@ A7
23011  sub r0,r0,#2 ;@ Pre-decrement An
23012  str r0,[r7,#0x3c] ;@ A7
23013;@ EaWrite: Write r1 into '-(a7)' (address in r0):
23014  mov r1,r1,lsr #16
23015  bic r0,r0,#0xff000000
23016  bl m68k_write16 ;@ Call write16(r0,r1) handler
23017
23018  ldr r5,[r7,#0x5c] ;@ Load Cycles
23019  ldrh r8,[r4],#2 ;@ Fetch next opcode
23020  subs r5,r5,#12 ;@ Subtract cycles
23021  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23022  b CycloneEnd
23023
23024;@ ---------- [3f20] move.w -(a0), -(a7) uses Op3f20 ----------
23025Op3f20:
23026  str r4,[r7,#0x50] ;@ Save prev PC + 2
23027  str r5,[r7,#0x5c] ;@ Save Cycles
23028
23029;@ EaCalc : Get '-(a0)' into r0:
23030  and r2,r8,#0x000f
23031  orr r2,r2,#0x8 ;@ A0-7
23032  ldr r0,[r7,r2,lsl #2]
23033  sub r0,r0,#2 ;@ Pre-decrement An
23034  str r0,[r7,r2,lsl #2]
23035;@ EaRead : Read '-(a0)' (address in r0) into r1:
23036  str r4,[r7,#0x40] ;@ Save PC
23037  bic r0,r0,#0xff000000
23038  bl m68k_read16 ;@ Call read16(r0) handler
23039  movs r1,r0,asl #16
23040
23041  and r10,r1,#0x80000000 ;@ r10=N_flag
23042  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23043
23044;@ EaCalc : Get '-(a7)' into r0:
23045  ldr r0,[r7,#0x3c] ;@ A7
23046  sub r0,r0,#2 ;@ Pre-decrement An
23047  str r0,[r7,#0x3c] ;@ A7
23048;@ EaWrite: Write r1 into '-(a7)' (address in r0):
23049  mov r1,r1,lsr #16
23050  bic r0,r0,#0xff000000
23051  bl m68k_write16 ;@ Call write16(r0,r1) handler
23052
23053  ldr r5,[r7,#0x5c] ;@ Load Cycles
23054  ldrh r8,[r4],#2 ;@ Fetch next opcode
23055  subs r5,r5,#14 ;@ Subtract cycles
23056  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23057  b CycloneEnd
23058
23059;@ ---------- [3f28] move.w ($3333,a0), -(a7) uses Op3f28 ----------
23060Op3f28:
23061  str r4,[r7,#0x50] ;@ Save prev PC + 2
23062  str r5,[r7,#0x5c] ;@ Save Cycles
23063
23064;@ EaCalc : Get '($3333,a0)' into r0:
23065  ldrsh r0,[r4],#2 ;@ Fetch offset
23066  and r2,r8,#0x000f
23067  ldr r2,[r7,r2,lsl #2]
23068  add r0,r0,r2 ;@ Add on offset
23069;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
23070  str r4,[r7,#0x40] ;@ Save PC
23071  bic r0,r0,#0xff000000
23072  bl m68k_read16 ;@ Call read16(r0) handler
23073  movs r1,r0,asl #16
23074
23075  and r10,r1,#0x80000000 ;@ r10=N_flag
23076  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23077
23078;@ EaCalc : Get '-(a7)' into r0:
23079  ldr r0,[r7,#0x3c] ;@ A7
23080  sub r0,r0,#2 ;@ Pre-decrement An
23081  str r0,[r7,#0x3c] ;@ A7
23082;@ EaWrite: Write r1 into '-(a7)' (address in r0):
23083  mov r1,r1,lsr #16
23084  bic r0,r0,#0xff000000
23085  bl m68k_write16 ;@ Call write16(r0,r1) handler
23086
23087  ldr r5,[r7,#0x5c] ;@ Load Cycles
23088  ldrh r8,[r4],#2 ;@ Fetch next opcode
23089  subs r5,r5,#16 ;@ Subtract cycles
23090  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23091  b CycloneEnd
23092
23093;@ ---------- [3f30] move.w ($33,a0,d3.w*2), -(a7) uses Op3f30 ----------
23094Op3f30:
23095  str r4,[r7,#0x50] ;@ Save prev PC + 2
23096  str r5,[r7,#0x5c] ;@ Save Cycles
23097
23098;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
23099;@ Get extension word into r3:
23100  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
23101  mov r2,r3,lsr #10
23102  tst r3,#0x0800 ;@ Is Rn Word or Long
23103  and r2,r2,#0x3c ;@ r2=Index of Rn
23104  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
23105  ldrne   r2,[r7,r2] ;@ r2=Rn.l
23106  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
23107  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
23108  and r2,r8,#0x000f
23109  orr r2,r2,#0x8 ;@ A0-7
23110  ldr r2,[r7,r2,lsl #2]
23111  add r0,r2,r3 ;@ r0=Disp+An+Rn
23112;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
23113  str r4,[r7,#0x40] ;@ Save PC
23114  bic r0,r0,#0xff000000
23115  bl m68k_read16 ;@ Call read16(r0) handler
23116  movs r1,r0,asl #16
23117
23118  and r10,r1,#0x80000000 ;@ r10=N_flag
23119  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23120
23121;@ EaCalc : Get '-(a7)' into r0:
23122  ldr r0,[r7,#0x3c] ;@ A7
23123  sub r0,r0,#2 ;@ Pre-decrement An
23124  str r0,[r7,#0x3c] ;@ A7
23125;@ EaWrite: Write r1 into '-(a7)' (address in r0):
23126  mov r1,r1,lsr #16
23127  bic r0,r0,#0xff000000
23128  bl m68k_write16 ;@ Call write16(r0,r1) handler
23129
23130  ldr r5,[r7,#0x5c] ;@ Load Cycles
23131  ldrh r8,[r4],#2 ;@ Fetch next opcode
23132  subs r5,r5,#18 ;@ Subtract cycles
23133  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23134  b CycloneEnd
23135
23136;@ ---------- [3f38] move.w $3333.w, -(a7) uses Op3f38 ----------
23137Op3f38:
23138  str r4,[r7,#0x50] ;@ Save prev PC + 2
23139  str r5,[r7,#0x5c] ;@ Save Cycles
23140
23141;@ EaCalc : Get '$3333.w' into r0:
23142  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
23143;@ EaRead : Read '$3333.w' (address in r0) into r1:
23144  str r4,[r7,#0x40] ;@ Save PC
23145  bic r0,r0,#0xff000000
23146  bl m68k_read16 ;@ Call read16(r0) handler
23147  movs r1,r0,asl #16
23148
23149  and r10,r1,#0x80000000 ;@ r10=N_flag
23150  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23151
23152;@ EaCalc : Get '-(a7)' into r0:
23153  ldr r0,[r7,#0x3c] ;@ A7
23154  sub r0,r0,#2 ;@ Pre-decrement An
23155  str r0,[r7,#0x3c] ;@ A7
23156;@ EaWrite: Write r1 into '-(a7)' (address in r0):
23157  mov r1,r1,lsr #16
23158  bic r0,r0,#0xff000000
23159  bl m68k_write16 ;@ Call write16(r0,r1) handler
23160
23161  ldr r5,[r7,#0x5c] ;@ Load Cycles
23162  ldrh r8,[r4],#2 ;@ Fetch next opcode
23163  subs r5,r5,#16 ;@ Subtract cycles
23164  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23165  b CycloneEnd
23166
23167;@ ---------- [3f39] move.w $33333333.l, -(a7) uses Op3f39 ----------
23168Op3f39:
23169  str r4,[r7,#0x50] ;@ Save prev PC + 2
23170  str r5,[r7,#0x5c] ;@ Save Cycles
23171
23172;@ EaCalc : Get '$33333333.l' into r0:
23173  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
23174  ldrh r0,[r4],#2
23175  orr r0,r0,r2,lsl #16
23176;@ EaRead : Read '$33333333.l' (address in r0) into r1:
23177  str r4,[r7,#0x40] ;@ Save PC
23178  bic r0,r0,#0xff000000
23179  bl m68k_read16 ;@ Call read16(r0) handler
23180  movs r1,r0,asl #16
23181
23182  and r10,r1,#0x80000000 ;@ r10=N_flag
23183  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23184
23185;@ EaCalc : Get '-(a7)' into r0:
23186  ldr r0,[r7,#0x3c] ;@ A7
23187  sub r0,r0,#2 ;@ Pre-decrement An
23188  str r0,[r7,#0x3c] ;@ A7
23189;@ EaWrite: Write r1 into '-(a7)' (address in r0):
23190  mov r1,r1,lsr #16
23191  bic r0,r0,#0xff000000
23192  bl m68k_write16 ;@ Call write16(r0,r1) handler
23193
23194  ldr r5,[r7,#0x5c] ;@ Load Cycles
23195  ldrh r8,[r4],#2 ;@ Fetch next opcode
23196  subs r5,r5,#20 ;@ Subtract cycles
23197  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23198  b CycloneEnd
23199
23200;@ ---------- [3f3a] move.w ($3333,pc), -(a7); =3335 uses Op3f3a ----------
23201Op3f3a:
23202  str r4,[r7,#0x50] ;@ Save prev PC + 2
23203  str r5,[r7,#0x5c] ;@ Save Cycles
23204
23205;@ EaCalc : Get '($3333,pc)' into r0:
23206  ldr r0,[r7,#0x60] ;@ Get Memory base
23207  sub r0,r4,r0 ;@ Real PC
23208  ldrsh r2,[r4],#2 ;@ Fetch extension
23209  add r0,r2,r0 ;@ ($nn,PC)
23210;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
23211  str r4,[r7,#0x40] ;@ Save PC
23212  bic r0,r0,#0xff000000
23213  bl m68k_fetch16 ;@ Call fetch16(r0) handler
23214  movs r1,r0,asl #16
23215
23216  and r10,r1,#0x80000000 ;@ r10=N_flag
23217  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23218
23219;@ EaCalc : Get '-(a7)' into r0:
23220  ldr r0,[r7,#0x3c] ;@ A7
23221  sub r0,r0,#2 ;@ Pre-decrement An
23222  str r0,[r7,#0x3c] ;@ A7
23223;@ EaWrite: Write r1 into '-(a7)' (address in r0):
23224  mov r1,r1,lsr #16
23225  bic r0,r0,#0xff000000
23226  bl m68k_write16 ;@ Call write16(r0,r1) handler
23227
23228  ldr r5,[r7,#0x5c] ;@ Load Cycles
23229  ldrh r8,[r4],#2 ;@ Fetch next opcode
23230  subs r5,r5,#16 ;@ Subtract cycles
23231  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23232  b CycloneEnd
23233
23234;@ ---------- [3f3b] move.w ($33,pc,d3.w*2), -(a7); =35 uses Op3f3b ----------
23235Op3f3b:
23236  str r4,[r7,#0x50] ;@ Save prev PC + 2
23237  str r5,[r7,#0x5c] ;@ Save Cycles
23238
23239;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
23240  ldr r0,[r7,#0x60] ;@ Get Memory base
23241  ldrh r3,[r4] ;@ Get extension word
23242  sub r0,r4,r0 ;@ r0=PC
23243  add r4,r4,#2
23244  mov r2,r3,lsr #10
23245  tst r3,#0x0800 ;@ Is Rn Word or Long
23246  and r2,r2,#0x3c ;@ r2=Index of Rn
23247  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
23248  ldrne   r2,[r7,r2] ;@ r2=Rn.l
23249  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
23250  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
23251  add r0,r2,r0 ;@ r0=Disp+PC+Rn
23252;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
23253  str r4,[r7,#0x40] ;@ Save PC
23254  bic r0,r0,#0xff000000
23255  bl m68k_fetch16 ;@ Call fetch16(r0) handler
23256  movs r1,r0,asl #16
23257
23258  and r10,r1,#0x80000000 ;@ r10=N_flag
23259  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23260
23261;@ EaCalc : Get '-(a7)' into r0:
23262  ldr r0,[r7,#0x3c] ;@ A7
23263  sub r0,r0,#2 ;@ Pre-decrement An
23264  str r0,[r7,#0x3c] ;@ A7
23265;@ EaWrite: Write r1 into '-(a7)' (address in r0):
23266  mov r1,r1,lsr #16
23267  bic r0,r0,#0xff000000
23268  bl m68k_write16 ;@ Call write16(r0,r1) handler
23269
23270  ldr r5,[r7,#0x5c] ;@ Load Cycles
23271  ldrh r8,[r4],#2 ;@ Fetch next opcode
23272  subs r5,r5,#18 ;@ Subtract cycles
23273  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23274  b CycloneEnd
23275
23276;@ ---------- [3f3c] move.w #$3333, -(a7) uses Op3f3c ----------
23277Op3f3c:
23278  str r4,[r7,#0x50] ;@ Save prev PC + 2
23279  str r5,[r7,#0x5c] ;@ Save Cycles
23280
23281;@ EaCalc : Get '#$3333' into r1:
23282  ldrsh r1,[r4],#2 ;@ Fetch immediate value
23283;@ EaRead : Read '#$3333' (address in r1) into r1:
23284  movs r1,r1,asl #16
23285
23286  and r10,r1,#0x80000000 ;@ r10=N_flag
23287  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23288
23289;@ EaCalc : Get '-(a7)' into r0:
23290  ldr r0,[r7,#0x3c] ;@ A7
23291  sub r0,r0,#2 ;@ Pre-decrement An
23292  str r0,[r7,#0x3c] ;@ A7
23293;@ EaWrite: Write r1 into '-(a7)' (address in r0):
23294  mov r1,r1,lsr #16
23295  str r4,[r7,#0x40] ;@ Save PC
23296  bic r0,r0,#0xff000000
23297  bl m68k_write16 ;@ Call write16(r0,r1) handler
23298
23299  ldr r5,[r7,#0x5c] ;@ Load Cycles
23300  ldrh r8,[r4],#2 ;@ Fetch next opcode
23301  subs r5,r5,#12 ;@ Subtract cycles
23302  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23303  b CycloneEnd
23304
23305;@ ---------- [4000] negx.b d0 uses Op4000 ----------
23306Op4000:
23307;@ EaCalc : Get register index into r11:
23308  and r11,r8,#0x000f
23309;@ EaRead : Read register[r11] into r0:
23310  ldr r0,[r7,r11,lsl #2]
23311
23312;@ Negx:
23313;@ Get X bit:
23314  ldr r2,[r7,#0x4c]
23315  mvn r2,r2 ;@ Invert it
23316  tst r2,r2,lsl #3 ;@ Get into Carry
23317
23318  mov r0,r0,asl #24
23319  rscs r1,r0,#0 ;@ do arithmetic
23320  orr r3,r10,#0xb0000000 ;@ for old Z
23321  mrs r10,cpsr ;@ r10=flags
23322  eor r10,r10,#0x20000000 ;@ Invert carry
23323  str r10,[r7,#0x4c] ;@ Save X bit
23324  movs r1,r1,asr #24
23325  orreq r10,r10,#0x40000000 ;@ possily missed Z
23326  andeq r10,r10,r3 ;@ fix Z
23327
23328;@ EaWrite: r1 into register[r11]:
23329  strb r1,[r7,r11,lsl #2]
23330
23331  ldrh r8,[r4],#2 ;@ Fetch next opcode
23332  subs r5,r5,#4 ;@ Subtract cycles
23333  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23334  b CycloneEnd
23335
23336;@ ---------- [4010] negx.b (a0) uses Op4010 ----------
23337Op4010:
23338  str r4,[r7,#0x50] ;@ Save prev PC + 2
23339  str r5,[r7,#0x5c] ;@ Save Cycles
23340
23341;@ EaCalc : Get '(a0)' into r11:
23342  and r2,r8,#0x000f
23343  orr r2,r2,#0x8 ;@ A0-7
23344  ldr r11,[r7,r2,lsl #2]
23345;@ EaRead : Read '(a0)' (address in r11) into r0:
23346  str r4,[r7,#0x40] ;@ Save PC
23347  bic r0,r11,#0xff000000
23348  bl m68k_read8 ;@ Call read8(r0) handler
23349
23350;@ Negx:
23351;@ Get X bit:
23352  ldr r2,[r7,#0x4c]
23353  mvn r2,r2 ;@ Invert it
23354  tst r2,r2,lsl #3 ;@ Get into Carry
23355
23356  mov r0,r0,asl #24
23357  rscs r1,r0,#0 ;@ do arithmetic
23358  orr r3,r10,#0xb0000000 ;@ for old Z
23359  mrs r10,cpsr ;@ r10=flags
23360  eor r10,r10,#0x20000000 ;@ Invert carry
23361  str r10,[r7,#0x4c] ;@ Save X bit
23362  movs r1,r1,asr #24
23363  orreq r10,r10,#0x40000000 ;@ possily missed Z
23364  andeq r10,r10,r3 ;@ fix Z
23365
23366;@ EaWrite: Write r1 into '(a0)' (address in r11):
23367  and r1,r1,#0xff
23368  bic r0,r11,#0xff000000
23369  bl m68k_write8 ;@ Call write8(r0,r1) handler
23370
23371  ldr r5,[r7,#0x5c] ;@ Load Cycles
23372  ldrh r8,[r4],#2 ;@ Fetch next opcode
23373  subs r5,r5,#12 ;@ Subtract cycles
23374  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23375  b CycloneEnd
23376
23377;@ ---------- [4018] negx.b (a0)+ uses Op4018 ----------
23378Op4018:
23379  str r4,[r7,#0x50] ;@ Save prev PC + 2
23380  str r5,[r7,#0x5c] ;@ Save Cycles
23381
23382;@ EaCalc : Get '(a0)+' into r11:
23383  and r2,r8,#0x000f
23384  ldr r11,[r7,r2,lsl #2]
23385  add r3,r11,#1 ;@ Post-increment An
23386  str r3,[r7,r2,lsl #2]
23387;@ EaRead : Read '(a0)+' (address in r11) into r0:
23388  str r4,[r7,#0x40] ;@ Save PC
23389  bic r0,r11,#0xff000000
23390  bl m68k_read8 ;@ Call read8(r0) handler
23391
23392;@ Negx:
23393;@ Get X bit:
23394  ldr r2,[r7,#0x4c]
23395  mvn r2,r2 ;@ Invert it
23396  tst r2,r2,lsl #3 ;@ Get into Carry
23397
23398  mov r0,r0,asl #24
23399  rscs r1,r0,#0 ;@ do arithmetic
23400  orr r3,r10,#0xb0000000 ;@ for old Z
23401  mrs r10,cpsr ;@ r10=flags
23402  eor r10,r10,#0x20000000 ;@ Invert carry
23403  str r10,[r7,#0x4c] ;@ Save X bit
23404  movs r1,r1,asr #24
23405  orreq r10,r10,#0x40000000 ;@ possily missed Z
23406  andeq r10,r10,r3 ;@ fix Z
23407
23408;@ EaWrite: Write r1 into '(a0)+' (address in r11):
23409  and r1,r1,#0xff
23410  bic r0,r11,#0xff000000
23411  bl m68k_write8 ;@ Call write8(r0,r1) handler
23412
23413  ldr r5,[r7,#0x5c] ;@ Load Cycles
23414  ldrh r8,[r4],#2 ;@ Fetch next opcode
23415  subs r5,r5,#12 ;@ Subtract cycles
23416  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23417  b CycloneEnd
23418
23419;@ ---------- [401f] negx.b (a7)+ uses Op401f ----------
23420Op401f:
23421  str r4,[r7,#0x50] ;@ Save prev PC + 2
23422  str r5,[r7,#0x5c] ;@ Save Cycles
23423
23424;@ EaCalc : Get '(a7)+' into r11:
23425  ldr r11,[r7,#0x3c] ;@ A7
23426  add r3,r11,#2 ;@ Post-increment An
23427  str r3,[r7,#0x3c] ;@ A7
23428;@ EaRead : Read '(a7)+' (address in r11) into r0:
23429  str r4,[r7,#0x40] ;@ Save PC
23430  bic r0,r11,#0xff000000
23431  bl m68k_read8 ;@ Call read8(r0) handler
23432
23433;@ Negx:
23434;@ Get X bit:
23435  ldr r2,[r7,#0x4c]
23436  mvn r2,r2 ;@ Invert it
23437  tst r2,r2,lsl #3 ;@ Get into Carry
23438
23439  mov r0,r0,asl #24
23440  rscs r1,r0,#0 ;@ do arithmetic
23441  orr r3,r10,#0xb0000000 ;@ for old Z
23442  mrs r10,cpsr ;@ r10=flags
23443  eor r10,r10,#0x20000000 ;@ Invert carry
23444  str r10,[r7,#0x4c] ;@ Save X bit
23445  movs r1,r1,asr #24
23446  orreq r10,r10,#0x40000000 ;@ possily missed Z
23447  andeq r10,r10,r3 ;@ fix Z
23448
23449;@ EaWrite: Write r1 into '(a7)+' (address in r11):
23450  and r1,r1,#0xff
23451  bic r0,r11,#0xff000000
23452  bl m68k_write8 ;@ Call write8(r0,r1) handler
23453
23454  ldr r5,[r7,#0x5c] ;@ Load Cycles
23455  ldrh r8,[r4],#2 ;@ Fetch next opcode
23456  subs r5,r5,#12 ;@ Subtract cycles
23457  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23458  b CycloneEnd
23459
23460;@ ---------- [4020] negx.b -(a0) uses Op4020 ----------
23461Op4020:
23462  str r4,[r7,#0x50] ;@ Save prev PC + 2
23463  str r5,[r7,#0x5c] ;@ Save Cycles
23464
23465;@ EaCalc : Get '-(a0)' into r11:
23466  and r2,r8,#0x000f
23467  orr r2,r2,#0x8 ;@ A0-7
23468  ldr r11,[r7,r2,lsl #2]
23469  sub r11,r11,#1 ;@ Pre-decrement An
23470  str r11,[r7,r2,lsl #2]
23471;@ EaRead : Read '-(a0)' (address in r11) into r0:
23472  str r4,[r7,#0x40] ;@ Save PC
23473  bic r0,r11,#0xff000000
23474  bl m68k_read8 ;@ Call read8(r0) handler
23475
23476;@ Negx:
23477;@ Get X bit:
23478  ldr r2,[r7,#0x4c]
23479  mvn r2,r2 ;@ Invert it
23480  tst r2,r2,lsl #3 ;@ Get into Carry
23481
23482  mov r0,r0,asl #24
23483  rscs r1,r0,#0 ;@ do arithmetic
23484  orr r3,r10,#0xb0000000 ;@ for old Z
23485  mrs r10,cpsr ;@ r10=flags
23486  eor r10,r10,#0x20000000 ;@ Invert carry
23487  str r10,[r7,#0x4c] ;@ Save X bit
23488  movs r1,r1,asr #24
23489  orreq r10,r10,#0x40000000 ;@ possily missed Z
23490  andeq r10,r10,r3 ;@ fix Z
23491
23492;@ EaWrite: Write r1 into '-(a0)' (address in r11):
23493  and r1,r1,#0xff
23494  bic r0,r11,#0xff000000
23495  bl m68k_write8 ;@ Call write8(r0,r1) handler
23496
23497  ldr r5,[r7,#0x5c] ;@ Load Cycles
23498  ldrh r8,[r4],#2 ;@ Fetch next opcode
23499  subs r5,r5,#14 ;@ Subtract cycles
23500  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23501  b CycloneEnd
23502
23503;@ ---------- [4027] negx.b -(a7) uses Op4027 ----------
23504Op4027:
23505  str r4,[r7,#0x50] ;@ Save prev PC + 2
23506  str r5,[r7,#0x5c] ;@ Save Cycles
23507
23508;@ EaCalc : Get '-(a7)' into r11:
23509  ldr r11,[r7,#0x3c] ;@ A7
23510  sub r11,r11,#2 ;@ Pre-decrement An
23511  str r11,[r7,#0x3c] ;@ A7
23512;@ EaRead : Read '-(a7)' (address in r11) into r0:
23513  str r4,[r7,#0x40] ;@ Save PC
23514  bic r0,r11,#0xff000000
23515  bl m68k_read8 ;@ Call read8(r0) handler
23516
23517;@ Negx:
23518;@ Get X bit:
23519  ldr r2,[r7,#0x4c]
23520  mvn r2,r2 ;@ Invert it
23521  tst r2,r2,lsl #3 ;@ Get into Carry
23522
23523  mov r0,r0,asl #24
23524  rscs r1,r0,#0 ;@ do arithmetic
23525  orr r3,r10,#0xb0000000 ;@ for old Z
23526  mrs r10,cpsr ;@ r10=flags
23527  eor r10,r10,#0x20000000 ;@ Invert carry
23528  str r10,[r7,#0x4c] ;@ Save X bit
23529  movs r1,r1,asr #24
23530  orreq r10,r10,#0x40000000 ;@ possily missed Z
23531  andeq r10,r10,r3 ;@ fix Z
23532
23533;@ EaWrite: Write r1 into '-(a7)' (address in r11):
23534  and r1,r1,#0xff
23535  bic r0,r11,#0xff000000
23536  bl m68k_write8 ;@ Call write8(r0,r1) handler
23537
23538  ldr r5,[r7,#0x5c] ;@ Load Cycles
23539  ldrh r8,[r4],#2 ;@ Fetch next opcode
23540  subs r5,r5,#14 ;@ Subtract cycles
23541  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23542  b CycloneEnd
23543
23544;@ ---------- [4028] negx.b ($3333,a0) uses Op4028 ----------
23545Op4028:
23546  str r4,[r7,#0x50] ;@ Save prev PC + 2
23547  str r5,[r7,#0x5c] ;@ Save Cycles
23548
23549;@ EaCalc : Get '($3333,a0)' into r11:
23550  ldrsh r0,[r4],#2 ;@ Fetch offset
23551  and r2,r8,#0x000f
23552  ldr r2,[r7,r2,lsl #2]
23553  add r11,r0,r2 ;@ Add on offset
23554;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
23555  str r4,[r7,#0x40] ;@ Save PC
23556  bic r0,r11,#0xff000000
23557  bl m68k_read8 ;@ Call read8(r0) handler
23558
23559;@ Negx:
23560;@ Get X bit:
23561  ldr r2,[r7,#0x4c]
23562  mvn r2,r2 ;@ Invert it
23563  tst r2,r2,lsl #3 ;@ Get into Carry
23564
23565  mov r0,r0,asl #24
23566  rscs r1,r0,#0 ;@ do arithmetic
23567  orr r3,r10,#0xb0000000 ;@ for old Z
23568  mrs r10,cpsr ;@ r10=flags
23569  eor r10,r10,#0x20000000 ;@ Invert carry
23570  str r10,[r7,#0x4c] ;@ Save X bit
23571  movs r1,r1,asr #24
23572  orreq r10,r10,#0x40000000 ;@ possily missed Z
23573  andeq r10,r10,r3 ;@ fix Z
23574
23575;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
23576  and r1,r1,#0xff
23577  bic r0,r11,#0xff000000
23578  bl m68k_write8 ;@ Call write8(r0,r1) handler
23579
23580  ldr r5,[r7,#0x5c] ;@ Load Cycles
23581  ldrh r8,[r4],#2 ;@ Fetch next opcode
23582  subs r5,r5,#16 ;@ Subtract cycles
23583  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23584  b CycloneEnd
23585
23586;@ ---------- [4030] negx.b ($33,a0,d3.w*2) uses Op4030 ----------
23587Op4030:
23588  str r4,[r7,#0x50] ;@ Save prev PC + 2
23589  str r5,[r7,#0x5c] ;@ Save Cycles
23590
23591;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
23592;@ Get extension word into r3:
23593  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
23594  mov r2,r3,lsr #10
23595  tst r3,#0x0800 ;@ Is Rn Word or Long
23596  and r2,r2,#0x3c ;@ r2=Index of Rn
23597  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
23598  ldrne   r2,[r7,r2] ;@ r2=Rn.l
23599  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
23600  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
23601  and r2,r8,#0x000f
23602  orr r2,r2,#0x8 ;@ A0-7
23603  ldr r2,[r7,r2,lsl #2]
23604  add r11,r2,r3 ;@ r11=Disp+An+Rn
23605;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
23606  str r4,[r7,#0x40] ;@ Save PC
23607  bic r0,r11,#0xff000000
23608  bl m68k_read8 ;@ Call read8(r0) handler
23609
23610;@ Negx:
23611;@ Get X bit:
23612  ldr r2,[r7,#0x4c]
23613  mvn r2,r2 ;@ Invert it
23614  tst r2,r2,lsl #3 ;@ Get into Carry
23615
23616  mov r0,r0,asl #24
23617  rscs r1,r0,#0 ;@ do arithmetic
23618  orr r3,r10,#0xb0000000 ;@ for old Z
23619  mrs r10,cpsr ;@ r10=flags
23620  eor r10,r10,#0x20000000 ;@ Invert carry
23621  str r10,[r7,#0x4c] ;@ Save X bit
23622  movs r1,r1,asr #24
23623  orreq r10,r10,#0x40000000 ;@ possily missed Z
23624  andeq r10,r10,r3 ;@ fix Z
23625
23626;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
23627  and r1,r1,#0xff
23628  bic r0,r11,#0xff000000
23629  bl m68k_write8 ;@ Call write8(r0,r1) handler
23630
23631  ldr r5,[r7,#0x5c] ;@ Load Cycles
23632  ldrh r8,[r4],#2 ;@ Fetch next opcode
23633  subs r5,r5,#18 ;@ Subtract cycles
23634  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23635  b CycloneEnd
23636
23637;@ ---------- [4038] negx.b $3333.w uses Op4038 ----------
23638Op4038:
23639  str r4,[r7,#0x50] ;@ Save prev PC + 2
23640  str r5,[r7,#0x5c] ;@ Save Cycles
23641
23642;@ EaCalc : Get '$3333.w' into r11:
23643  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
23644;@ EaRead : Read '$3333.w' (address in r11) into r0:
23645  str r4,[r7,#0x40] ;@ Save PC
23646  bic r0,r11,#0xff000000
23647  bl m68k_read8 ;@ Call read8(r0) handler
23648
23649;@ Negx:
23650;@ Get X bit:
23651  ldr r2,[r7,#0x4c]
23652  mvn r2,r2 ;@ Invert it
23653  tst r2,r2,lsl #3 ;@ Get into Carry
23654
23655  mov r0,r0,asl #24
23656  rscs r1,r0,#0 ;@ do arithmetic
23657  orr r3,r10,#0xb0000000 ;@ for old Z
23658  mrs r10,cpsr ;@ r10=flags
23659  eor r10,r10,#0x20000000 ;@ Invert carry
23660  str r10,[r7,#0x4c] ;@ Save X bit
23661  movs r1,r1,asr #24
23662  orreq r10,r10,#0x40000000 ;@ possily missed Z
23663  andeq r10,r10,r3 ;@ fix Z
23664
23665;@ EaWrite: Write r1 into '$3333.w' (address in r11):
23666  and r1,r1,#0xff
23667  bic r0,r11,#0xff000000
23668  bl m68k_write8 ;@ Call write8(r0,r1) handler
23669
23670  ldr r5,[r7,#0x5c] ;@ Load Cycles
23671  ldrh r8,[r4],#2 ;@ Fetch next opcode
23672  subs r5,r5,#16 ;@ Subtract cycles
23673  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23674  b CycloneEnd
23675
23676;@ ---------- [4039] negx.b $33333333.l uses Op4039 ----------
23677Op4039:
23678  str r4,[r7,#0x50] ;@ Save prev PC + 2
23679  str r5,[r7,#0x5c] ;@ Save Cycles
23680
23681;@ EaCalc : Get '$33333333.l' into r11:
23682  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
23683  ldrh r0,[r4],#2
23684  orr r11,r0,r2,lsl #16
23685;@ EaRead : Read '$33333333.l' (address in r11) into r0:
23686  str r4,[r7,#0x40] ;@ Save PC
23687  bic r0,r11,#0xff000000
23688  bl m68k_read8 ;@ Call read8(r0) handler
23689
23690;@ Negx:
23691;@ Get X bit:
23692  ldr r2,[r7,#0x4c]
23693  mvn r2,r2 ;@ Invert it
23694  tst r2,r2,lsl #3 ;@ Get into Carry
23695
23696  mov r0,r0,asl #24
23697  rscs r1,r0,#0 ;@ do arithmetic
23698  orr r3,r10,#0xb0000000 ;@ for old Z
23699  mrs r10,cpsr ;@ r10=flags
23700  eor r10,r10,#0x20000000 ;@ Invert carry
23701  str r10,[r7,#0x4c] ;@ Save X bit
23702  movs r1,r1,asr #24
23703  orreq r10,r10,#0x40000000 ;@ possily missed Z
23704  andeq r10,r10,r3 ;@ fix Z
23705
23706;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
23707  and r1,r1,#0xff
23708  bic r0,r11,#0xff000000
23709  bl m68k_write8 ;@ Call write8(r0,r1) handler
23710
23711  ldr r5,[r7,#0x5c] ;@ Load Cycles
23712  ldrh r8,[r4],#2 ;@ Fetch next opcode
23713  subs r5,r5,#20 ;@ Subtract cycles
23714  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23715  b CycloneEnd
23716
23717;@ ---------- [4040] negx.w d0 uses Op4040 ----------
23718Op4040:
23719;@ EaCalc : Get register index into r11:
23720  and r11,r8,#0x000f
23721  mov r11,r11,lsl #2
23722;@ EaRead : Read register[r11] into r0:
23723  ldr r0,[r7,r11]
23724
23725;@ Negx:
23726;@ Get X bit:
23727  ldr r2,[r7,#0x4c]
23728  mvn r2,r2 ;@ Invert it
23729  tst r2,r2,lsl #3 ;@ Get into Carry
23730
23731  mov r0,r0,asl #16
23732  rscs r1,r0,#0 ;@ do arithmetic
23733  orr r3,r10,#0xb0000000 ;@ for old Z
23734  mrs r10,cpsr ;@ r10=flags
23735  eor r10,r10,#0x20000000 ;@ Invert carry
23736  str r10,[r7,#0x4c] ;@ Save X bit
23737  movs r1,r1,asr #16
23738  orreq r10,r10,#0x40000000 ;@ possily missed Z
23739  andeq r10,r10,r3 ;@ fix Z
23740
23741;@ EaWrite: r1 into register[r11]:
23742  strh r1,[r7,r11]
23743
23744  ldrh r8,[r4],#2 ;@ Fetch next opcode
23745  subs r5,r5,#4 ;@ Subtract cycles
23746  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23747  b CycloneEnd
23748
23749;@ ---------- [4050] negx.w (a0) uses Op4050 ----------
23750Op4050:
23751  str r4,[r7,#0x50] ;@ Save prev PC + 2
23752  str r5,[r7,#0x5c] ;@ Save Cycles
23753
23754;@ EaCalc : Get '(a0)' into r11:
23755  and r2,r8,#0x000f
23756  orr r2,r2,#0x8 ;@ A0-7
23757  ldr r11,[r7,r2,lsl #2]
23758;@ EaRead : Read '(a0)' (address in r11) into r0:
23759  str r4,[r7,#0x40] ;@ Save PC
23760  bic r0,r11,#0xff000000
23761  bl m68k_read16 ;@ Call read16(r0) handler
23762
23763;@ Negx:
23764;@ Get X bit:
23765  ldr r2,[r7,#0x4c]
23766  mvn r2,r2 ;@ Invert it
23767  tst r2,r2,lsl #3 ;@ Get into Carry
23768
23769  mov r0,r0,asl #16
23770  rscs r1,r0,#0 ;@ do arithmetic
23771  orr r3,r10,#0xb0000000 ;@ for old Z
23772  mrs r10,cpsr ;@ r10=flags
23773  eor r10,r10,#0x20000000 ;@ Invert carry
23774  str r10,[r7,#0x4c] ;@ Save X bit
23775  movs r1,r1,asr #16
23776  orreq r10,r10,#0x40000000 ;@ possily missed Z
23777  andeq r10,r10,r3 ;@ fix Z
23778
23779;@ EaWrite: Write r1 into '(a0)' (address in r11):
23780  uxth r1,r1 ;@ zero extend
23781  bic r0,r11,#0xff000000
23782  bl m68k_write16 ;@ Call write16(r0,r1) handler
23783
23784  ldr r5,[r7,#0x5c] ;@ Load Cycles
23785  ldrh r8,[r4],#2 ;@ Fetch next opcode
23786  subs r5,r5,#12 ;@ Subtract cycles
23787  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23788  b CycloneEnd
23789
23790;@ ---------- [4058] negx.w (a0)+ uses Op4058 ----------
23791Op4058:
23792  str r4,[r7,#0x50] ;@ Save prev PC + 2
23793  str r5,[r7,#0x5c] ;@ Save Cycles
23794
23795;@ EaCalc : Get '(a0)+' into r11:
23796  and r2,r8,#0x000f
23797  ldr r11,[r7,r2,lsl #2]
23798  add r3,r11,#2 ;@ Post-increment An
23799  str r3,[r7,r2,lsl #2]
23800;@ EaRead : Read '(a0)+' (address in r11) into r0:
23801  str r4,[r7,#0x40] ;@ Save PC
23802  bic r0,r11,#0xff000000
23803  bl m68k_read16 ;@ Call read16(r0) handler
23804
23805;@ Negx:
23806;@ Get X bit:
23807  ldr r2,[r7,#0x4c]
23808  mvn r2,r2 ;@ Invert it
23809  tst r2,r2,lsl #3 ;@ Get into Carry
23810
23811  mov r0,r0,asl #16
23812  rscs r1,r0,#0 ;@ do arithmetic
23813  orr r3,r10,#0xb0000000 ;@ for old Z
23814  mrs r10,cpsr ;@ r10=flags
23815  eor r10,r10,#0x20000000 ;@ Invert carry
23816  str r10,[r7,#0x4c] ;@ Save X bit
23817  movs r1,r1,asr #16
23818  orreq r10,r10,#0x40000000 ;@ possily missed Z
23819  andeq r10,r10,r3 ;@ fix Z
23820
23821;@ EaWrite: Write r1 into '(a0)+' (address in r11):
23822  uxth r1,r1 ;@ zero extend
23823  bic r0,r11,#0xff000000
23824  bl m68k_write16 ;@ Call write16(r0,r1) handler
23825
23826  ldr r5,[r7,#0x5c] ;@ Load Cycles
23827  ldrh r8,[r4],#2 ;@ Fetch next opcode
23828  subs r5,r5,#12 ;@ Subtract cycles
23829  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23830  b CycloneEnd
23831
23832;@ ---------- [4060] negx.w -(a0) uses Op4060 ----------
23833Op4060:
23834  str r4,[r7,#0x50] ;@ Save prev PC + 2
23835  str r5,[r7,#0x5c] ;@ Save Cycles
23836
23837;@ EaCalc : Get '-(a0)' into r11:
23838  and r2,r8,#0x000f
23839  orr r2,r2,#0x8 ;@ A0-7
23840  ldr r11,[r7,r2,lsl #2]
23841  sub r11,r11,#2 ;@ Pre-decrement An
23842  str r11,[r7,r2,lsl #2]
23843;@ EaRead : Read '-(a0)' (address in r11) into r0:
23844  str r4,[r7,#0x40] ;@ Save PC
23845  bic r0,r11,#0xff000000
23846  bl m68k_read16 ;@ Call read16(r0) handler
23847
23848;@ Negx:
23849;@ Get X bit:
23850  ldr r2,[r7,#0x4c]
23851  mvn r2,r2 ;@ Invert it
23852  tst r2,r2,lsl #3 ;@ Get into Carry
23853
23854  mov r0,r0,asl #16
23855  rscs r1,r0,#0 ;@ do arithmetic
23856  orr r3,r10,#0xb0000000 ;@ for old Z
23857  mrs r10,cpsr ;@ r10=flags
23858  eor r10,r10,#0x20000000 ;@ Invert carry
23859  str r10,[r7,#0x4c] ;@ Save X bit
23860  movs r1,r1,asr #16
23861  orreq r10,r10,#0x40000000 ;@ possily missed Z
23862  andeq r10,r10,r3 ;@ fix Z
23863
23864;@ EaWrite: Write r1 into '-(a0)' (address in r11):
23865  uxth r1,r1 ;@ zero extend
23866  bic r0,r11,#0xff000000
23867  bl m68k_write16 ;@ Call write16(r0,r1) handler
23868
23869  ldr r5,[r7,#0x5c] ;@ Load Cycles
23870  ldrh r8,[r4],#2 ;@ Fetch next opcode
23871  subs r5,r5,#14 ;@ Subtract cycles
23872  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23873  b CycloneEnd
23874
23875;@ ---------- [4068] negx.w ($3333,a0) uses Op4068 ----------
23876Op4068:
23877  str r4,[r7,#0x50] ;@ Save prev PC + 2
23878  str r5,[r7,#0x5c] ;@ Save Cycles
23879
23880;@ EaCalc : Get '($3333,a0)' into r11:
23881  ldrsh r0,[r4],#2 ;@ Fetch offset
23882  and r2,r8,#0x000f
23883  ldr r2,[r7,r2,lsl #2]
23884  add r11,r0,r2 ;@ Add on offset
23885;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
23886  str r4,[r7,#0x40] ;@ Save PC
23887  bic r0,r11,#0xff000000
23888  bl m68k_read16 ;@ Call read16(r0) handler
23889
23890;@ Negx:
23891;@ Get X bit:
23892  ldr r2,[r7,#0x4c]
23893  mvn r2,r2 ;@ Invert it
23894  tst r2,r2,lsl #3 ;@ Get into Carry
23895
23896  mov r0,r0,asl #16
23897  rscs r1,r0,#0 ;@ do arithmetic
23898  orr r3,r10,#0xb0000000 ;@ for old Z
23899  mrs r10,cpsr ;@ r10=flags
23900  eor r10,r10,#0x20000000 ;@ Invert carry
23901  str r10,[r7,#0x4c] ;@ Save X bit
23902  movs r1,r1,asr #16
23903  orreq r10,r10,#0x40000000 ;@ possily missed Z
23904  andeq r10,r10,r3 ;@ fix Z
23905
23906;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
23907  uxth r1,r1 ;@ zero extend
23908  bic r0,r11,#0xff000000
23909  bl m68k_write16 ;@ Call write16(r0,r1) handler
23910
23911  ldr r5,[r7,#0x5c] ;@ Load Cycles
23912  ldrh r8,[r4],#2 ;@ Fetch next opcode
23913  subs r5,r5,#16 ;@ Subtract cycles
23914  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23915  b CycloneEnd
23916
23917;@ ---------- [4070] negx.w ($33,a0,d3.w*2) uses Op4070 ----------
23918Op4070:
23919  str r4,[r7,#0x50] ;@ Save prev PC + 2
23920  str r5,[r7,#0x5c] ;@ Save Cycles
23921
23922;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
23923;@ Get extension word into r3:
23924  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
23925  mov r2,r3,lsr #10
23926  tst r3,#0x0800 ;@ Is Rn Word or Long
23927  and r2,r2,#0x3c ;@ r2=Index of Rn
23928  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
23929  ldrne   r2,[r7,r2] ;@ r2=Rn.l
23930  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
23931  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
23932  and r2,r8,#0x000f
23933  orr r2,r2,#0x8 ;@ A0-7
23934  ldr r2,[r7,r2,lsl #2]
23935  add r11,r2,r3 ;@ r11=Disp+An+Rn
23936;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
23937  str r4,[r7,#0x40] ;@ Save PC
23938  bic r0,r11,#0xff000000
23939  bl m68k_read16 ;@ Call read16(r0) handler
23940
23941;@ Negx:
23942;@ Get X bit:
23943  ldr r2,[r7,#0x4c]
23944  mvn r2,r2 ;@ Invert it
23945  tst r2,r2,lsl #3 ;@ Get into Carry
23946
23947  mov r0,r0,asl #16
23948  rscs r1,r0,#0 ;@ do arithmetic
23949  orr r3,r10,#0xb0000000 ;@ for old Z
23950  mrs r10,cpsr ;@ r10=flags
23951  eor r10,r10,#0x20000000 ;@ Invert carry
23952  str r10,[r7,#0x4c] ;@ Save X bit
23953  movs r1,r1,asr #16
23954  orreq r10,r10,#0x40000000 ;@ possily missed Z
23955  andeq r10,r10,r3 ;@ fix Z
23956
23957;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
23958  uxth r1,r1 ;@ zero extend
23959  bic r0,r11,#0xff000000
23960  bl m68k_write16 ;@ Call write16(r0,r1) handler
23961
23962  ldr r5,[r7,#0x5c] ;@ Load Cycles
23963  ldrh r8,[r4],#2 ;@ Fetch next opcode
23964  subs r5,r5,#18 ;@ Subtract cycles
23965  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23966  b CycloneEnd
23967
23968;@ ---------- [4078] negx.w $3333.w uses Op4078 ----------
23969Op4078:
23970  str r4,[r7,#0x50] ;@ Save prev PC + 2
23971  str r5,[r7,#0x5c] ;@ Save Cycles
23972
23973;@ EaCalc : Get '$3333.w' into r11:
23974  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
23975;@ EaRead : Read '$3333.w' (address in r11) into r0:
23976  str r4,[r7,#0x40] ;@ Save PC
23977  bic r0,r11,#0xff000000
23978  bl m68k_read16 ;@ Call read16(r0) handler
23979
23980;@ Negx:
23981;@ Get X bit:
23982  ldr r2,[r7,#0x4c]
23983  mvn r2,r2 ;@ Invert it
23984  tst r2,r2,lsl #3 ;@ Get into Carry
23985
23986  mov r0,r0,asl #16
23987  rscs r1,r0,#0 ;@ do arithmetic
23988  orr r3,r10,#0xb0000000 ;@ for old Z
23989  mrs r10,cpsr ;@ r10=flags
23990  eor r10,r10,#0x20000000 ;@ Invert carry
23991  str r10,[r7,#0x4c] ;@ Save X bit
23992  movs r1,r1,asr #16
23993  orreq r10,r10,#0x40000000 ;@ possily missed Z
23994  andeq r10,r10,r3 ;@ fix Z
23995
23996;@ EaWrite: Write r1 into '$3333.w' (address in r11):
23997  uxth r1,r1 ;@ zero extend
23998  bic r0,r11,#0xff000000
23999  bl m68k_write16 ;@ Call write16(r0,r1) handler
24000
24001  ldr r5,[r7,#0x5c] ;@ Load Cycles
24002  ldrh r8,[r4],#2 ;@ Fetch next opcode
24003  subs r5,r5,#16 ;@ Subtract cycles
24004  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24005  b CycloneEnd
24006
24007;@ ---------- [4079] negx.w $33333333.l uses Op4079 ----------
24008Op4079:
24009  str r4,[r7,#0x50] ;@ Save prev PC + 2
24010  str r5,[r7,#0x5c] ;@ Save Cycles
24011
24012;@ EaCalc : Get '$33333333.l' into r11:
24013  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
24014  ldrh r0,[r4],#2
24015  orr r11,r0,r2,lsl #16
24016;@ EaRead : Read '$33333333.l' (address in r11) into r0:
24017  str r4,[r7,#0x40] ;@ Save PC
24018  bic r0,r11,#0xff000000
24019  bl m68k_read16 ;@ Call read16(r0) handler
24020
24021;@ Negx:
24022;@ Get X bit:
24023  ldr r2,[r7,#0x4c]
24024  mvn r2,r2 ;@ Invert it
24025  tst r2,r2,lsl #3 ;@ Get into Carry
24026
24027  mov r0,r0,asl #16
24028  rscs r1,r0,#0 ;@ do arithmetic
24029  orr r3,r10,#0xb0000000 ;@ for old Z
24030  mrs r10,cpsr ;@ r10=flags
24031  eor r10,r10,#0x20000000 ;@ Invert carry
24032  str r10,[r7,#0x4c] ;@ Save X bit
24033  movs r1,r1,asr #16
24034  orreq r10,r10,#0x40000000 ;@ possily missed Z
24035  andeq r10,r10,r3 ;@ fix Z
24036
24037;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
24038  uxth r1,r1 ;@ zero extend
24039  bic r0,r11,#0xff000000
24040  bl m68k_write16 ;@ Call write16(r0,r1) handler
24041
24042  ldr r5,[r7,#0x5c] ;@ Load Cycles
24043  ldrh r8,[r4],#2 ;@ Fetch next opcode
24044  subs r5,r5,#20 ;@ Subtract cycles
24045  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24046  b CycloneEnd
24047
24048;@ ---------- [4080] negx.l d0 uses Op4080 ----------
24049Op4080:
24050;@ EaCalc : Get register index into r11:
24051  and r11,r8,#0x000f
24052;@ EaRead : Read register[r11] into r0:
24053  ldr r0,[r7,r11,lsl #2]
24054
24055;@ Negx:
24056;@ Get X bit:
24057  ldr r2,[r7,#0x4c]
24058  mvn r2,r2 ;@ Invert it
24059  tst r2,r2,lsl #3 ;@ Get into Carry
24060
24061  rscs r1,r0,#0 ;@ do arithmetic
24062  orr r3,r10,#0xb0000000 ;@ for old Z
24063  mrs r10,cpsr ;@ r10=flags
24064  eor r10,r10,#0x20000000 ;@ Invert carry
24065  str r10,[r7,#0x4c] ;@ Save X bit
24066  andeq r10,r10,r3 ;@ fix Z
24067
24068;@ EaWrite: r1 into register[r11]:
24069  str r1,[r7,r11,lsl #2]
24070
24071  ldrh r8,[r4],#2 ;@ Fetch next opcode
24072  subs r5,r5,#6 ;@ Subtract cycles
24073  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24074  b CycloneEnd
24075
24076;@ ---------- [4090] negx.l (a0) uses Op4090 ----------
24077Op4090:
24078  str r4,[r7,#0x50] ;@ Save prev PC + 2
24079  str r5,[r7,#0x5c] ;@ Save Cycles
24080
24081;@ EaCalc : Get '(a0)' into r11:
24082  and r2,r8,#0x000f
24083  orr r2,r2,#0x8 ;@ A0-7
24084  ldr r11,[r7,r2,lsl #2]
24085;@ EaRead : Read '(a0)' (address in r11) into r0:
24086  str r4,[r7,#0x40] ;@ Save PC
24087  bic r0,r11,#0xff000000
24088  bl m68k_read32 ;@ Call read32(r0) handler
24089
24090;@ Negx:
24091;@ Get X bit:
24092  ldr r2,[r7,#0x4c]
24093  mvn r2,r2 ;@ Invert it
24094  tst r2,r2,lsl #3 ;@ Get into Carry
24095
24096  rscs r1,r0,#0 ;@ do arithmetic
24097  orr r3,r10,#0xb0000000 ;@ for old Z
24098  mrs r10,cpsr ;@ r10=flags
24099  eor r10,r10,#0x20000000 ;@ Invert carry
24100  str r10,[r7,#0x4c] ;@ Save X bit
24101  andeq r10,r10,r3 ;@ fix Z
24102
24103;@ EaWrite: Write r1 into '(a0)' (address in r11):
24104  bic r0,r11,#0xff000000
24105  bl m68k_write32 ;@ Call write32(r0,r1) handler
24106
24107  ldr r5,[r7,#0x5c] ;@ Load Cycles
24108  ldrh r8,[r4],#2 ;@ Fetch next opcode
24109  subs r5,r5,#20 ;@ Subtract cycles
24110  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24111  b CycloneEnd
24112
24113;@ ---------- [4098] negx.l (a0)+ uses Op4098 ----------
24114Op4098:
24115  str r4,[r7,#0x50] ;@ Save prev PC + 2
24116  str r5,[r7,#0x5c] ;@ Save Cycles
24117
24118;@ EaCalc : Get '(a0)+' into r11:
24119  and r2,r8,#0x000f
24120  ldr r11,[r7,r2,lsl #2]
24121  add r3,r11,#4 ;@ Post-increment An
24122  str r3,[r7,r2,lsl #2]
24123;@ EaRead : Read '(a0)+' (address in r11) into r0:
24124  str r4,[r7,#0x40] ;@ Save PC
24125  bic r0,r11,#0xff000000
24126  bl m68k_read32 ;@ Call read32(r0) handler
24127
24128;@ Negx:
24129;@ Get X bit:
24130  ldr r2,[r7,#0x4c]
24131  mvn r2,r2 ;@ Invert it
24132  tst r2,r2,lsl #3 ;@ Get into Carry
24133
24134  rscs r1,r0,#0 ;@ do arithmetic
24135  orr r3,r10,#0xb0000000 ;@ for old Z
24136  mrs r10,cpsr ;@ r10=flags
24137  eor r10,r10,#0x20000000 ;@ Invert carry
24138  str r10,[r7,#0x4c] ;@ Save X bit
24139  andeq r10,r10,r3 ;@ fix Z
24140
24141;@ EaWrite: Write r1 into '(a0)+' (address in r11):
24142  bic r0,r11,#0xff000000
24143  bl m68k_write32 ;@ Call write32(r0,r1) handler
24144
24145  ldr r5,[r7,#0x5c] ;@ Load Cycles
24146  ldrh r8,[r4],#2 ;@ Fetch next opcode
24147  subs r5,r5,#20 ;@ Subtract cycles
24148  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24149  b CycloneEnd
24150
24151;@ ---------- [40a0] negx.l -(a0) uses Op40a0 ----------
24152Op40a0:
24153  str r4,[r7,#0x50] ;@ Save prev PC + 2
24154  str r5,[r7,#0x5c] ;@ Save Cycles
24155
24156;@ EaCalc : Get '-(a0)' into r11:
24157  and r2,r8,#0x000f
24158  orr r2,r2,#0x8 ;@ A0-7
24159  ldr r11,[r7,r2,lsl #2]
24160  sub r11,r11,#4 ;@ Pre-decrement An
24161  str r11,[r7,r2,lsl #2]
24162;@ EaRead : Read '-(a0)' (address in r11) into r0:
24163  str r4,[r7,#0x40] ;@ Save PC
24164  bic r0,r11,#0xff000000
24165  bl m68k_read32 ;@ Call read32(r0) handler
24166
24167;@ Negx:
24168;@ Get X bit:
24169  ldr r2,[r7,#0x4c]
24170  mvn r2,r2 ;@ Invert it
24171  tst r2,r2,lsl #3 ;@ Get into Carry
24172
24173  rscs r1,r0,#0 ;@ do arithmetic
24174  orr r3,r10,#0xb0000000 ;@ for old Z
24175  mrs r10,cpsr ;@ r10=flags
24176  eor r10,r10,#0x20000000 ;@ Invert carry
24177  str r10,[r7,#0x4c] ;@ Save X bit
24178  andeq r10,r10,r3 ;@ fix Z
24179
24180;@ EaWrite: Write r1 into '-(a0)' (address in r11):
24181  bic r0,r11,#0xff000000
24182  bl m68k_write32 ;@ Call write32(r0,r1) handler
24183
24184  ldr r5,[r7,#0x5c] ;@ Load Cycles
24185  ldrh r8,[r4],#2 ;@ Fetch next opcode
24186  subs r5,r5,#22 ;@ Subtract cycles
24187  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24188  b CycloneEnd
24189
24190;@ ---------- [40a8] negx.l ($3333,a0) uses Op40a8 ----------
24191Op40a8:
24192  str r4,[r7,#0x50] ;@ Save prev PC + 2
24193  str r5,[r7,#0x5c] ;@ Save Cycles
24194
24195;@ EaCalc : Get '($3333,a0)' into r11:
24196  ldrsh r0,[r4],#2 ;@ Fetch offset
24197  and r2,r8,#0x000f
24198  ldr r2,[r7,r2,lsl #2]
24199  add r11,r0,r2 ;@ Add on offset
24200;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
24201  str r4,[r7,#0x40] ;@ Save PC
24202  bic r0,r11,#0xff000000
24203  bl m68k_read32 ;@ Call read32(r0) handler
24204
24205;@ Negx:
24206;@ Get X bit:
24207  ldr r2,[r7,#0x4c]
24208  mvn r2,r2 ;@ Invert it
24209  tst r2,r2,lsl #3 ;@ Get into Carry
24210
24211  rscs r1,r0,#0 ;@ do arithmetic
24212  orr r3,r10,#0xb0000000 ;@ for old Z
24213  mrs r10,cpsr ;@ r10=flags
24214  eor r10,r10,#0x20000000 ;@ Invert carry
24215  str r10,[r7,#0x4c] ;@ Save X bit
24216  andeq r10,r10,r3 ;@ fix Z
24217
24218;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
24219  bic r0,r11,#0xff000000
24220  bl m68k_write32 ;@ Call write32(r0,r1) handler
24221
24222  ldr r5,[r7,#0x5c] ;@ Load Cycles
24223  ldrh r8,[r4],#2 ;@ Fetch next opcode
24224  subs r5,r5,#24 ;@ Subtract cycles
24225  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24226  b CycloneEnd
24227
24228;@ ---------- [40b0] negx.l ($33,a0,d3.w*2) uses Op40b0 ----------
24229Op40b0:
24230  str r4,[r7,#0x50] ;@ Save prev PC + 2
24231  str r5,[r7,#0x5c] ;@ Save Cycles
24232
24233;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
24234;@ Get extension word into r3:
24235  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
24236  mov r2,r3,lsr #10
24237  tst r3,#0x0800 ;@ Is Rn Word or Long
24238  and r2,r2,#0x3c ;@ r2=Index of Rn
24239  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
24240  ldrne   r2,[r7,r2] ;@ r2=Rn.l
24241  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
24242  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
24243  and r2,r8,#0x000f
24244  orr r2,r2,#0x8 ;@ A0-7
24245  ldr r2,[r7,r2,lsl #2]
24246  add r11,r2,r3 ;@ r11=Disp+An+Rn
24247;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
24248  str r4,[r7,#0x40] ;@ Save PC
24249  bic r0,r11,#0xff000000
24250  bl m68k_read32 ;@ Call read32(r0) handler
24251
24252;@ Negx:
24253;@ Get X bit:
24254  ldr r2,[r7,#0x4c]
24255  mvn r2,r2 ;@ Invert it
24256  tst r2,r2,lsl #3 ;@ Get into Carry
24257
24258  rscs r1,r0,#0 ;@ do arithmetic
24259  orr r3,r10,#0xb0000000 ;@ for old Z
24260  mrs r10,cpsr ;@ r10=flags
24261  eor r10,r10,#0x20000000 ;@ Invert carry
24262  str r10,[r7,#0x4c] ;@ Save X bit
24263  andeq r10,r10,r3 ;@ fix Z
24264
24265;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
24266  bic r0,r11,#0xff000000
24267  bl m68k_write32 ;@ Call write32(r0,r1) handler
24268
24269  ldr r5,[r7,#0x5c] ;@ Load Cycles
24270  ldrh r8,[r4],#2 ;@ Fetch next opcode
24271  subs r5,r5,#26 ;@ Subtract cycles
24272  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24273  b CycloneEnd
24274
24275;@ ---------- [40b8] negx.l $3333.w uses Op40b8 ----------
24276Op40b8:
24277  str r4,[r7,#0x50] ;@ Save prev PC + 2
24278  str r5,[r7,#0x5c] ;@ Save Cycles
24279
24280;@ EaCalc : Get '$3333.w' into r11:
24281  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
24282;@ EaRead : Read '$3333.w' (address in r11) into r0:
24283  str r4,[r7,#0x40] ;@ Save PC
24284  bic r0,r11,#0xff000000
24285  bl m68k_read32 ;@ Call read32(r0) handler
24286
24287;@ Negx:
24288;@ Get X bit:
24289  ldr r2,[r7,#0x4c]
24290  mvn r2,r2 ;@ Invert it
24291  tst r2,r2,lsl #3 ;@ Get into Carry
24292
24293  rscs r1,r0,#0 ;@ do arithmetic
24294  orr r3,r10,#0xb0000000 ;@ for old Z
24295  mrs r10,cpsr ;@ r10=flags
24296  eor r10,r10,#0x20000000 ;@ Invert carry
24297  str r10,[r7,#0x4c] ;@ Save X bit
24298  andeq r10,r10,r3 ;@ fix Z
24299
24300;@ EaWrite: Write r1 into '$3333.w' (address in r11):
24301  bic r0,r11,#0xff000000
24302  bl m68k_write32 ;@ Call write32(r0,r1) handler
24303
24304  ldr r5,[r7,#0x5c] ;@ Load Cycles
24305  ldrh r8,[r4],#2 ;@ Fetch next opcode
24306  subs r5,r5,#24 ;@ Subtract cycles
24307  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24308  b CycloneEnd
24309
24310;@ ---------- [40b9] negx.l $33333333.l uses Op40b9 ----------
24311Op40b9:
24312  str r4,[r7,#0x50] ;@ Save prev PC + 2
24313  str r5,[r7,#0x5c] ;@ Save Cycles
24314
24315;@ EaCalc : Get '$33333333.l' into r11:
24316  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
24317  ldrh r0,[r4],#2
24318  orr r11,r0,r2,lsl #16
24319;@ EaRead : Read '$33333333.l' (address in r11) into r0:
24320  str r4,[r7,#0x40] ;@ Save PC
24321  bic r0,r11,#0xff000000
24322  bl m68k_read32 ;@ Call read32(r0) handler
24323
24324;@ Negx:
24325;@ Get X bit:
24326  ldr r2,[r7,#0x4c]
24327  mvn r2,r2 ;@ Invert it
24328  tst r2,r2,lsl #3 ;@ Get into Carry
24329
24330  rscs r1,r0,#0 ;@ do arithmetic
24331  orr r3,r10,#0xb0000000 ;@ for old Z
24332  mrs r10,cpsr ;@ r10=flags
24333  eor r10,r10,#0x20000000 ;@ Invert carry
24334  str r10,[r7,#0x4c] ;@ Save X bit
24335  andeq r10,r10,r3 ;@ fix Z
24336
24337;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
24338  bic r0,r11,#0xff000000
24339  bl m68k_write32 ;@ Call write32(r0,r1) handler
24340
24341  ldr r5,[r7,#0x5c] ;@ Load Cycles
24342  ldrh r8,[r4],#2 ;@ Fetch next opcode
24343  subs r5,r5,#28 ;@ Subtract cycles
24344  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24345  b CycloneEnd
24346
24347;@ ---------- [40c0] move sr, d0 uses Op40c0 ----------
24348Op40c0:
24349  ldr r0,[r7,#0x4c]   ;@ X bit
24350  mov r1,r10,lsr #28  ;@ ____NZCV
24351  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
24352  tst r2,#1           ;@ 1 if C!=V
24353  eorne r1,r1,#3      ;@ ____NZVC
24354
24355  ldrb r2,[r7,#0x44]  ;@ Include SR high
24356  and r0,r0,#0x20000000
24357  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
24358  orr r1,r1,r2,lsl #8
24359
24360;@ EaCalc : Get register index into r0:
24361  and r0,r8,#0x000f
24362  mov r0,r0,lsl #2
24363;@ EaWrite: r1 into register[r0]:
24364  strh r1,[r7,r0]
24365
24366  ldrh r8,[r4],#2 ;@ Fetch next opcode
24367  subs r5,r5,#6 ;@ Subtract cycles
24368  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24369  b CycloneEnd
24370
24371;@ ---------- [40d0] move sr, (a0) uses Op40d0 ----------
24372Op40d0:
24373  str r4,[r7,#0x50] ;@ Save prev PC + 2
24374  str r5,[r7,#0x5c] ;@ Save Cycles
24375
24376  ldr r0,[r7,#0x4c]   ;@ X bit
24377  mov r1,r10,lsr #28  ;@ ____NZCV
24378  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
24379  tst r2,#1           ;@ 1 if C!=V
24380  eorne r1,r1,#3      ;@ ____NZVC
24381
24382  ldrb r2,[r7,#0x44]  ;@ Include SR high
24383  and r0,r0,#0x20000000
24384  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
24385  orr r1,r1,r2,lsl #8
24386
24387;@ EaCalc : Get '(a0)' into r0:
24388  and r2,r8,#0x000f
24389  orr r2,r2,#0x8 ;@ A0-7
24390  ldr r0,[r7,r2,lsl #2]
24391;@ EaWrite: Write r1 into '(a0)' (address in r0):
24392  uxth r1,r1 ;@ zero extend
24393  str r4,[r7,#0x40] ;@ Save PC
24394  bic r0,r0,#0xff000000
24395  bl m68k_write16 ;@ Call write16(r0,r1) handler
24396
24397  ldr r5,[r7,#0x5c] ;@ Load Cycles
24398  ldrh r8,[r4],#2 ;@ Fetch next opcode
24399  subs r5,r5,#12 ;@ Subtract cycles
24400  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24401  b CycloneEnd
24402
24403;@ ---------- [40d8] move sr, (a0)+ uses Op40d8 ----------
24404Op40d8:
24405  str r4,[r7,#0x50] ;@ Save prev PC + 2
24406  str r5,[r7,#0x5c] ;@ Save Cycles
24407
24408  ldr r0,[r7,#0x4c]   ;@ X bit
24409  mov r1,r10,lsr #28  ;@ ____NZCV
24410  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
24411  tst r2,#1           ;@ 1 if C!=V
24412  eorne r1,r1,#3      ;@ ____NZVC
24413
24414  ldrb r2,[r7,#0x44]  ;@ Include SR high
24415  and r0,r0,#0x20000000
24416  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
24417  orr r1,r1,r2,lsl #8
24418
24419;@ EaCalc : Get '(a0)+' into r0:
24420  and r2,r8,#0x000f
24421  ldr r0,[r7,r2,lsl #2]
24422  add r3,r0,#2 ;@ Post-increment An
24423  str r3,[r7,r2,lsl #2]
24424;@ EaWrite: Write r1 into '(a0)+' (address in r0):
24425  uxth r1,r1 ;@ zero extend
24426  str r4,[r7,#0x40] ;@ Save PC
24427  bic r0,r0,#0xff000000
24428  bl m68k_write16 ;@ Call write16(r0,r1) handler
24429
24430  ldr r5,[r7,#0x5c] ;@ Load Cycles
24431  ldrh r8,[r4],#2 ;@ Fetch next opcode
24432  subs r5,r5,#12 ;@ Subtract cycles
24433  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24434  b CycloneEnd
24435
24436;@ ---------- [40e0] move sr, -(a0) uses Op40e0 ----------
24437Op40e0:
24438  str r4,[r7,#0x50] ;@ Save prev PC + 2
24439  str r5,[r7,#0x5c] ;@ Save Cycles
24440
24441  ldr r0,[r7,#0x4c]   ;@ X bit
24442  mov r1,r10,lsr #28  ;@ ____NZCV
24443  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
24444  tst r2,#1           ;@ 1 if C!=V
24445  eorne r1,r1,#3      ;@ ____NZVC
24446
24447  ldrb r2,[r7,#0x44]  ;@ Include SR high
24448  and r0,r0,#0x20000000
24449  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
24450  orr r1,r1,r2,lsl #8
24451
24452;@ EaCalc : Get '-(a0)' into r0:
24453  and r2,r8,#0x000f
24454  orr r2,r2,#0x8 ;@ A0-7
24455  ldr r0,[r7,r2,lsl #2]
24456  sub r0,r0,#2 ;@ Pre-decrement An
24457  str r0,[r7,r2,lsl #2]
24458;@ EaWrite: Write r1 into '-(a0)' (address in r0):
24459  uxth r1,r1 ;@ zero extend
24460  str r4,[r7,#0x40] ;@ Save PC
24461  bic r0,r0,#0xff000000
24462  bl m68k_write16 ;@ Call write16(r0,r1) handler
24463
24464  ldr r5,[r7,#0x5c] ;@ Load Cycles
24465  ldrh r8,[r4],#2 ;@ Fetch next opcode
24466  subs r5,r5,#14 ;@ Subtract cycles
24467  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24468  b CycloneEnd
24469
24470;@ ---------- [40e8] move sr, ($3333,a0) uses Op40e8 ----------
24471Op40e8:
24472  str r4,[r7,#0x50] ;@ Save prev PC + 2
24473  str r5,[r7,#0x5c] ;@ Save Cycles
24474
24475  ldr r0,[r7,#0x4c]   ;@ X bit
24476  mov r1,r10,lsr #28  ;@ ____NZCV
24477  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
24478  tst r2,#1           ;@ 1 if C!=V
24479  eorne r1,r1,#3      ;@ ____NZVC
24480
24481  ldrb r2,[r7,#0x44]  ;@ Include SR high
24482  and r0,r0,#0x20000000
24483  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
24484  orr r1,r1,r2,lsl #8
24485
24486;@ EaCalc : Get '($3333,a0)' into r0:
24487  ldrsh r0,[r4],#2 ;@ Fetch offset
24488  and r2,r8,#0x000f
24489  ldr r2,[r7,r2,lsl #2]
24490  add r0,r0,r2 ;@ Add on offset
24491;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
24492  uxth r1,r1 ;@ zero extend
24493  str r4,[r7,#0x40] ;@ Save PC
24494  bic r0,r0,#0xff000000
24495  bl m68k_write16 ;@ Call write16(r0,r1) handler
24496
24497  ldr r5,[r7,#0x5c] ;@ Load Cycles
24498  ldrh r8,[r4],#2 ;@ Fetch next opcode
24499  subs r5,r5,#16 ;@ Subtract cycles
24500  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24501  b CycloneEnd
24502
24503;@ ---------- [40f0] move sr, ($33,a0,d3.w*2) uses Op40f0 ----------
24504Op40f0:
24505  str r4,[r7,#0x50] ;@ Save prev PC + 2
24506  str r5,[r7,#0x5c] ;@ Save Cycles
24507
24508  ldr r0,[r7,#0x4c]   ;@ X bit
24509  mov r1,r10,lsr #28  ;@ ____NZCV
24510  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
24511  tst r2,#1           ;@ 1 if C!=V
24512  eorne r1,r1,#3      ;@ ____NZVC
24513
24514  ldrb r2,[r7,#0x44]  ;@ Include SR high
24515  and r0,r0,#0x20000000
24516  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
24517  orr r1,r1,r2,lsl #8
24518
24519;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
24520;@ Get extension word into r3:
24521  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
24522  mov r2,r3,lsr #10
24523  tst r3,#0x0800 ;@ Is Rn Word or Long
24524  and r2,r2,#0x3c ;@ r2=Index of Rn
24525  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
24526  ldrne   r2,[r7,r2] ;@ r2=Rn.l
24527  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
24528  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
24529  and r2,r8,#0x000f
24530  orr r2,r2,#0x8 ;@ A0-7
24531  ldr r2,[r7,r2,lsl #2]
24532  add r0,r2,r3 ;@ r0=Disp+An+Rn
24533;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
24534  uxth r1,r1 ;@ zero extend
24535  str r4,[r7,#0x40] ;@ Save PC
24536  bic r0,r0,#0xff000000
24537  bl m68k_write16 ;@ Call write16(r0,r1) handler
24538
24539  ldr r5,[r7,#0x5c] ;@ Load Cycles
24540  ldrh r8,[r4],#2 ;@ Fetch next opcode
24541  subs r5,r5,#18 ;@ Subtract cycles
24542  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24543  b CycloneEnd
24544
24545;@ ---------- [40f8] move sr, $3333.w uses Op40f8 ----------
24546Op40f8:
24547  str r4,[r7,#0x50] ;@ Save prev PC + 2
24548  str r5,[r7,#0x5c] ;@ Save Cycles
24549
24550  ldr r0,[r7,#0x4c]   ;@ X bit
24551  mov r1,r10,lsr #28  ;@ ____NZCV
24552  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
24553  tst r2,#1           ;@ 1 if C!=V
24554  eorne r1,r1,#3      ;@ ____NZVC
24555
24556  ldrb r2,[r7,#0x44]  ;@ Include SR high
24557  and r0,r0,#0x20000000
24558  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
24559  orr r1,r1,r2,lsl #8
24560
24561;@ EaCalc : Get '$3333.w' into r0:
24562  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
24563;@ EaWrite: Write r1 into '$3333.w' (address in r0):
24564  uxth r1,r1 ;@ zero extend
24565  str r4,[r7,#0x40] ;@ Save PC
24566  bic r0,r0,#0xff000000
24567  bl m68k_write16 ;@ Call write16(r0,r1) handler
24568
24569  ldr r5,[r7,#0x5c] ;@ Load Cycles
24570  ldrh r8,[r4],#2 ;@ Fetch next opcode
24571  subs r5,r5,#16 ;@ Subtract cycles
24572  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24573  b CycloneEnd
24574
24575;@ ---------- [40f9] move sr, $33333333.l uses Op40f9 ----------
24576Op40f9:
24577  str r4,[r7,#0x50] ;@ Save prev PC + 2
24578  str r5,[r7,#0x5c] ;@ Save Cycles
24579
24580  ldr r0,[r7,#0x4c]   ;@ X bit
24581  mov r1,r10,lsr #28  ;@ ____NZCV
24582  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
24583  tst r2,#1           ;@ 1 if C!=V
24584  eorne r1,r1,#3      ;@ ____NZVC
24585
24586  ldrb r2,[r7,#0x44]  ;@ Include SR high
24587  and r0,r0,#0x20000000
24588  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
24589  orr r1,r1,r2,lsl #8
24590
24591;@ EaCalc : Get '$33333333.l' into r0:
24592  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
24593  ldrh r0,[r4],#2
24594  orr r0,r0,r2,lsl #16
24595;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
24596  uxth r1,r1 ;@ zero extend
24597  str r4,[r7,#0x40] ;@ Save PC
24598  bic r0,r0,#0xff000000
24599  bl m68k_write16 ;@ Call write16(r0,r1) handler
24600
24601  ldr r5,[r7,#0x5c] ;@ Load Cycles
24602  ldrh r8,[r4],#2 ;@ Fetch next opcode
24603  subs r5,r5,#20 ;@ Subtract cycles
24604  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24605  b CycloneEnd
24606
24607;@ ---------- [4180] chk d0, a0 uses Op4180 ----------
24608Op4180:
24609;@ Get value into r0:
24610;@ EaCalc : Get register index into r0:
24611  and r0,r8,#0x000f
24612;@ EaRead : Read register[r0] into r0:
24613  ldr r0,[r7,r0,lsl #2]
24614
24615;@ Get register operand into r1:
24616;@ EaCalc : Get register index into r1:
24617  and r1,r8,#0x0e00
24618;@ EaRead : Read register[r1] into r1:
24619  ldr r1,[r7,r1,lsr #7]
24620
24621  mov r0,r0,asl #16
24622  movs r1,r1,asl #16
24623
24624;@ get flags, including undocumented ones
24625  and r3,r10,#0x80000000
24626  and r10,r1,#0x80000000 ;@ r10=N_flag
24627  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24628;@ is reg negative?
24629  bmi chktrap4180
24630;@ Do arithmetic:
24631  cmp r1,r0
24632  bgt chktrap4180
24633;@ old N remains
24634  orr r10,r10,r3
24635  ldrh r8,[r4],#2 ;@ Fetch next opcode
24636  subs r5,r5,#10 ;@ Subtract cycles
24637  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24638  b CycloneEnd
24639
24640chktrap4180: ;@ CHK exception:
24641  mov r0,#6
24642  bl Exception
24643  ldrh r8,[r4],#2 ;@ Fetch next opcode
24644  subs r5,r5,#50 ;@ Subtract cycles
24645  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24646  b CycloneEnd
24647
24648;@ ---------- [4190] chk (a0), a0 uses Op4190 ----------
24649Op4190:
24650  str r4,[r7,#0x50] ;@ Save prev PC + 2
24651  str r5,[r7,#0x5c] ;@ Save Cycles
24652
24653;@ Get value into r0:
24654;@ EaCalc : Get '(a0)' into r0:
24655  and r2,r8,#0x000f
24656  orr r2,r2,#0x8 ;@ A0-7
24657  ldr r0,[r7,r2,lsl #2]
24658;@ EaRead : Read '(a0)' (address in r0) into r0:
24659  str r4,[r7,#0x40] ;@ Save PC
24660  bic r0,r0,#0xff000000
24661  bl m68k_read16 ;@ Call read16(r0) handler
24662
24663;@ Get register operand into r1:
24664;@ EaCalc : Get register index into r1:
24665  and r1,r8,#0x0e00
24666;@ EaRead : Read register[r1] into r1:
24667  ldr r1,[r7,r1,lsr #7]
24668
24669  mov r0,r0,asl #16
24670  movs r1,r1,asl #16
24671
24672;@ get flags, including undocumented ones
24673  and r3,r10,#0x80000000
24674  and r10,r1,#0x80000000 ;@ r10=N_flag
24675  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24676;@ is reg negative?
24677  bmi chktrap4190
24678;@ Do arithmetic:
24679  cmp r1,r0
24680  bgt chktrap4190
24681;@ old N remains
24682  orr r10,r10,r3
24683  ldr r5,[r7,#0x5c] ;@ Load Cycles
24684  ldrh r8,[r4],#2 ;@ Fetch next opcode
24685  subs r5,r5,#14 ;@ Subtract cycles
24686  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24687  b CycloneEnd
24688
24689chktrap4190: ;@ CHK exception:
24690  mov r0,#6
24691  bl Exception
24692  ldr r5,[r7,#0x5c] ;@ Load Cycles
24693  ldrh r8,[r4],#2 ;@ Fetch next opcode
24694  subs r5,r5,#54 ;@ Subtract cycles
24695  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24696  b CycloneEnd
24697
24698;@ ---------- [4198] chk (a0)+, a0 uses Op4198 ----------
24699Op4198:
24700  str r4,[r7,#0x50] ;@ Save prev PC + 2
24701  str r5,[r7,#0x5c] ;@ Save Cycles
24702
24703;@ Get value into r0:
24704;@ EaCalc : Get '(a0)+' into r0:
24705  and r2,r8,#0x000f
24706  ldr r0,[r7,r2,lsl #2]
24707  add r3,r0,#2 ;@ Post-increment An
24708  str r3,[r7,r2,lsl #2]
24709;@ EaRead : Read '(a0)+' (address in r0) into r0:
24710  str r4,[r7,#0x40] ;@ Save PC
24711  bic r0,r0,#0xff000000
24712  bl m68k_read16 ;@ Call read16(r0) handler
24713
24714;@ Get register operand into r1:
24715;@ EaCalc : Get register index into r1:
24716  and r1,r8,#0x0e00
24717;@ EaRead : Read register[r1] into r1:
24718  ldr r1,[r7,r1,lsr #7]
24719
24720  mov r0,r0,asl #16
24721  movs r1,r1,asl #16
24722
24723;@ get flags, including undocumented ones
24724  and r3,r10,#0x80000000
24725  and r10,r1,#0x80000000 ;@ r10=N_flag
24726  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24727;@ is reg negative?
24728  bmi chktrap4198
24729;@ Do arithmetic:
24730  cmp r1,r0
24731  bgt chktrap4198
24732;@ old N remains
24733  orr r10,r10,r3
24734  ldr r5,[r7,#0x5c] ;@ Load Cycles
24735  ldrh r8,[r4],#2 ;@ Fetch next opcode
24736  subs r5,r5,#14 ;@ Subtract cycles
24737  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24738  b CycloneEnd
24739
24740chktrap4198: ;@ CHK exception:
24741  mov r0,#6
24742  bl Exception
24743  ldr r5,[r7,#0x5c] ;@ Load Cycles
24744  ldrh r8,[r4],#2 ;@ Fetch next opcode
24745  subs r5,r5,#54 ;@ Subtract cycles
24746  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24747  b CycloneEnd
24748
24749;@ ---------- [41a0] chk -(a0), a0 uses Op41a0 ----------
24750Op41a0:
24751  str r4,[r7,#0x50] ;@ Save prev PC + 2
24752  str r5,[r7,#0x5c] ;@ Save Cycles
24753
24754;@ Get value into r0:
24755;@ EaCalc : Get '-(a0)' into r0:
24756  and r2,r8,#0x000f
24757  orr r2,r2,#0x8 ;@ A0-7
24758  ldr r0,[r7,r2,lsl #2]
24759  sub r0,r0,#2 ;@ Pre-decrement An
24760  str r0,[r7,r2,lsl #2]
24761;@ EaRead : Read '-(a0)' (address in r0) into r0:
24762  str r4,[r7,#0x40] ;@ Save PC
24763  bic r0,r0,#0xff000000
24764  bl m68k_read16 ;@ Call read16(r0) handler
24765
24766;@ Get register operand into r1:
24767;@ EaCalc : Get register index into r1:
24768  and r1,r8,#0x0e00
24769;@ EaRead : Read register[r1] into r1:
24770  ldr r1,[r7,r1,lsr #7]
24771
24772  mov r0,r0,asl #16
24773  movs r1,r1,asl #16
24774
24775;@ get flags, including undocumented ones
24776  and r3,r10,#0x80000000
24777  and r10,r1,#0x80000000 ;@ r10=N_flag
24778  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24779;@ is reg negative?
24780  bmi chktrap41a0
24781;@ Do arithmetic:
24782  cmp r1,r0
24783  bgt chktrap41a0
24784;@ old N remains
24785  orr r10,r10,r3
24786  ldr r5,[r7,#0x5c] ;@ Load Cycles
24787  ldrh r8,[r4],#2 ;@ Fetch next opcode
24788  subs r5,r5,#16 ;@ Subtract cycles
24789  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24790  b CycloneEnd
24791
24792chktrap41a0: ;@ CHK exception:
24793  mov r0,#6
24794  bl Exception
24795  ldr r5,[r7,#0x5c] ;@ Load Cycles
24796  ldrh r8,[r4],#2 ;@ Fetch next opcode
24797  subs r5,r5,#56 ;@ Subtract cycles
24798  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24799  b CycloneEnd
24800
24801;@ ---------- [41a8] chk ($3333,a0), a0 uses Op41a8 ----------
24802Op41a8:
24803  str r4,[r7,#0x50] ;@ Save prev PC + 2
24804  str r5,[r7,#0x5c] ;@ Save Cycles
24805
24806;@ Get value into r0:
24807;@ EaCalc : Get '($3333,a0)' into r0:
24808  ldrsh r0,[r4],#2 ;@ Fetch offset
24809  and r2,r8,#0x000f
24810  ldr r2,[r7,r2,lsl #2]
24811  add r0,r0,r2 ;@ Add on offset
24812;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
24813  str r4,[r7,#0x40] ;@ Save PC
24814  bic r0,r0,#0xff000000
24815  bl m68k_read16 ;@ Call read16(r0) handler
24816
24817;@ Get register operand into r1:
24818;@ EaCalc : Get register index into r1:
24819  and r1,r8,#0x0e00
24820;@ EaRead : Read register[r1] into r1:
24821  ldr r1,[r7,r1,lsr #7]
24822
24823  mov r0,r0,asl #16
24824  movs r1,r1,asl #16
24825
24826;@ get flags, including undocumented ones
24827  and r3,r10,#0x80000000
24828  and r10,r1,#0x80000000 ;@ r10=N_flag
24829  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24830;@ is reg negative?
24831  bmi chktrap41a8
24832;@ Do arithmetic:
24833  cmp r1,r0
24834  bgt chktrap41a8
24835;@ old N remains
24836  orr r10,r10,r3
24837  ldr r5,[r7,#0x5c] ;@ Load Cycles
24838  ldrh r8,[r4],#2 ;@ Fetch next opcode
24839  subs r5,r5,#18 ;@ Subtract cycles
24840  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24841  b CycloneEnd
24842
24843chktrap41a8: ;@ CHK exception:
24844  mov r0,#6
24845  bl Exception
24846  ldr r5,[r7,#0x5c] ;@ Load Cycles
24847  ldrh r8,[r4],#2 ;@ Fetch next opcode
24848  subs r5,r5,#58 ;@ Subtract cycles
24849  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24850  b CycloneEnd
24851
24852;@ ---------- [41b0] chk ($33,a0,d3.w*2), a0 uses Op41b0 ----------
24853Op41b0:
24854  str r4,[r7,#0x50] ;@ Save prev PC + 2
24855  str r5,[r7,#0x5c] ;@ Save Cycles
24856
24857;@ Get value into r0:
24858;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
24859;@ Get extension word into r3:
24860  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
24861  mov r2,r3,lsr #10
24862  tst r3,#0x0800 ;@ Is Rn Word or Long
24863  and r2,r2,#0x3c ;@ r2=Index of Rn
24864  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
24865  ldrne   r2,[r7,r2] ;@ r2=Rn.l
24866  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
24867  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
24868  and r2,r8,#0x000f
24869  orr r2,r2,#0x8 ;@ A0-7
24870  ldr r2,[r7,r2,lsl #2]
24871  add r0,r2,r3 ;@ r0=Disp+An+Rn
24872;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
24873  str r4,[r7,#0x40] ;@ Save PC
24874  bic r0,r0,#0xff000000
24875  bl m68k_read16 ;@ Call read16(r0) handler
24876
24877;@ Get register operand into r1:
24878;@ EaCalc : Get register index into r1:
24879  and r1,r8,#0x0e00
24880;@ EaRead : Read register[r1] into r1:
24881  ldr r1,[r7,r1,lsr #7]
24882
24883  mov r0,r0,asl #16
24884  movs r1,r1,asl #16
24885
24886;@ get flags, including undocumented ones
24887  and r3,r10,#0x80000000
24888  and r10,r1,#0x80000000 ;@ r10=N_flag
24889  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24890;@ is reg negative?
24891  bmi chktrap41b0
24892;@ Do arithmetic:
24893  cmp r1,r0
24894  bgt chktrap41b0
24895;@ old N remains
24896  orr r10,r10,r3
24897  ldr r5,[r7,#0x5c] ;@ Load Cycles
24898  ldrh r8,[r4],#2 ;@ Fetch next opcode
24899  subs r5,r5,#20 ;@ Subtract cycles
24900  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24901  b CycloneEnd
24902
24903chktrap41b0: ;@ CHK exception:
24904  mov r0,#6
24905  bl Exception
24906  ldr r5,[r7,#0x5c] ;@ Load Cycles
24907  ldrh r8,[r4],#2 ;@ Fetch next opcode
24908  subs r5,r5,#60 ;@ Subtract cycles
24909  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24910  b CycloneEnd
24911
24912;@ ---------- [41b8] chk $3333.w, a0 uses Op41b8 ----------
24913Op41b8:
24914  str r4,[r7,#0x50] ;@ Save prev PC + 2
24915  str r5,[r7,#0x5c] ;@ Save Cycles
24916
24917;@ Get value into r0:
24918;@ EaCalc : Get '$3333.w' into r0:
24919  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
24920;@ EaRead : Read '$3333.w' (address in r0) into r0:
24921  str r4,[r7,#0x40] ;@ Save PC
24922  bic r0,r0,#0xff000000
24923  bl m68k_read16 ;@ Call read16(r0) handler
24924
24925;@ Get register operand into r1:
24926;@ EaCalc : Get register index into r1:
24927  and r1,r8,#0x0e00
24928;@ EaRead : Read register[r1] into r1:
24929  ldr r1,[r7,r1,lsr #7]
24930
24931  mov r0,r0,asl #16
24932  movs r1,r1,asl #16
24933
24934;@ get flags, including undocumented ones
24935  and r3,r10,#0x80000000
24936  and r10,r1,#0x80000000 ;@ r10=N_flag
24937  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24938;@ is reg negative?
24939  bmi chktrap41b8
24940;@ Do arithmetic:
24941  cmp r1,r0
24942  bgt chktrap41b8
24943;@ old N remains
24944  orr r10,r10,r3
24945  ldr r5,[r7,#0x5c] ;@ Load Cycles
24946  ldrh r8,[r4],#2 ;@ Fetch next opcode
24947  subs r5,r5,#18 ;@ Subtract cycles
24948  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24949  b CycloneEnd
24950
24951chktrap41b8: ;@ CHK exception:
24952  mov r0,#6
24953  bl Exception
24954  ldr r5,[r7,#0x5c] ;@ Load Cycles
24955  ldrh r8,[r4],#2 ;@ Fetch next opcode
24956  subs r5,r5,#58 ;@ Subtract cycles
24957  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24958  b CycloneEnd
24959
24960;@ ---------- [41b9] chk $33333333.l, a0 uses Op41b9 ----------
24961Op41b9:
24962  str r4,[r7,#0x50] ;@ Save prev PC + 2
24963  str r5,[r7,#0x5c] ;@ Save Cycles
24964
24965;@ Get value into r0:
24966;@ EaCalc : Get '$33333333.l' into r0:
24967  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
24968  ldrh r0,[r4],#2
24969  orr r0,r0,r2,lsl #16
24970;@ EaRead : Read '$33333333.l' (address in r0) into r0:
24971  str r4,[r7,#0x40] ;@ Save PC
24972  bic r0,r0,#0xff000000
24973  bl m68k_read16 ;@ Call read16(r0) handler
24974
24975;@ Get register operand into r1:
24976;@ EaCalc : Get register index into r1:
24977  and r1,r8,#0x0e00
24978;@ EaRead : Read register[r1] into r1:
24979  ldr r1,[r7,r1,lsr #7]
24980
24981  mov r0,r0,asl #16
24982  movs r1,r1,asl #16
24983
24984;@ get flags, including undocumented ones
24985  and r3,r10,#0x80000000
24986  and r10,r1,#0x80000000 ;@ r10=N_flag
24987  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24988;@ is reg negative?
24989  bmi chktrap41b9
24990;@ Do arithmetic:
24991  cmp r1,r0
24992  bgt chktrap41b9
24993;@ old N remains
24994  orr r10,r10,r3
24995  ldr r5,[r7,#0x5c] ;@ Load Cycles
24996  ldrh r8,[r4],#2 ;@ Fetch next opcode
24997  subs r5,r5,#22 ;@ Subtract cycles
24998  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24999  b CycloneEnd
25000
25001chktrap41b9: ;@ CHK exception:
25002  mov r0,#6
25003  bl Exception
25004  ldr r5,[r7,#0x5c] ;@ Load Cycles
25005  ldrh r8,[r4],#2 ;@ Fetch next opcode
25006  subs r5,r5,#62 ;@ Subtract cycles
25007  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25008  b CycloneEnd
25009
25010;@ ---------- [41ba] chk ($3333,pc), a0; =3335 uses Op41ba ----------
25011Op41ba:
25012  str r4,[r7,#0x50] ;@ Save prev PC + 2
25013  str r5,[r7,#0x5c] ;@ Save Cycles
25014
25015;@ Get value into r0:
25016;@ EaCalc : Get '($3333,pc)' into r0:
25017  ldr r0,[r7,#0x60] ;@ Get Memory base
25018  sub r0,r4,r0 ;@ Real PC
25019  ldrsh r2,[r4],#2 ;@ Fetch extension
25020  add r0,r2,r0 ;@ ($nn,PC)
25021;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
25022  str r4,[r7,#0x40] ;@ Save PC
25023  bic r0,r0,#0xff000000
25024  bl m68k_fetch16 ;@ Call fetch16(r0) handler
25025
25026;@ Get register operand into r1:
25027;@ EaCalc : Get register index into r1:
25028  and r1,r8,#0x0e00
25029;@ EaRead : Read register[r1] into r1:
25030  ldr r1,[r7,r1,lsr #7]
25031
25032  mov r0,r0,asl #16
25033  movs r1,r1,asl #16
25034
25035;@ get flags, including undocumented ones
25036  and r3,r10,#0x80000000
25037  and r10,r1,#0x80000000 ;@ r10=N_flag
25038  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
25039;@ is reg negative?
25040  bmi chktrap41ba
25041;@ Do arithmetic:
25042  cmp r1,r0
25043  bgt chktrap41ba
25044;@ old N remains
25045  orr r10,r10,r3
25046  ldr r5,[r7,#0x5c] ;@ Load Cycles
25047  ldrh r8,[r4],#2 ;@ Fetch next opcode
25048  subs r5,r5,#18 ;@ Subtract cycles
25049  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25050  b CycloneEnd
25051
25052chktrap41ba: ;@ CHK exception:
25053  mov r0,#6
25054  bl Exception
25055  ldr r5,[r7,#0x5c] ;@ Load Cycles
25056  ldrh r8,[r4],#2 ;@ Fetch next opcode
25057  subs r5,r5,#58 ;@ Subtract cycles
25058  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25059  b CycloneEnd
25060
25061;@ ---------- [41bb] chk ($33,pc,d3.w*2), a0; =35 uses Op41bb ----------
25062Op41bb:
25063  str r4,[r7,#0x50] ;@ Save prev PC + 2
25064  str r5,[r7,#0x5c] ;@ Save Cycles
25065
25066;@ Get value into r0:
25067;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
25068  ldr r0,[r7,#0x60] ;@ Get Memory base
25069  ldrh r3,[r4] ;@ Get extension word
25070  sub r0,r4,r0 ;@ r0=PC
25071  add r4,r4,#2
25072  mov r2,r3,lsr #10
25073  tst r3,#0x0800 ;@ Is Rn Word or Long
25074  and r2,r2,#0x3c ;@ r2=Index of Rn
25075  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
25076  ldrne   r2,[r7,r2] ;@ r2=Rn.l
25077  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
25078  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
25079  add r0,r2,r0 ;@ r0=Disp+PC+Rn
25080;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
25081  str r4,[r7,#0x40] ;@ Save PC
25082  bic r0,r0,#0xff000000
25083  bl m68k_fetch16 ;@ Call fetch16(r0) handler
25084
25085;@ Get register operand into r1:
25086;@ EaCalc : Get register index into r1:
25087  and r1,r8,#0x0e00
25088;@ EaRead : Read register[r1] into r1:
25089  ldr r1,[r7,r1,lsr #7]
25090
25091  mov r0,r0,asl #16
25092  movs r1,r1,asl #16
25093
25094;@ get flags, including undocumented ones
25095  and r3,r10,#0x80000000
25096  and r10,r1,#0x80000000 ;@ r10=N_flag
25097  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
25098;@ is reg negative?
25099  bmi chktrap41bb
25100;@ Do arithmetic:
25101  cmp r1,r0
25102  bgt chktrap41bb
25103;@ old N remains
25104  orr r10,r10,r3
25105  ldr r5,[r7,#0x5c] ;@ Load Cycles
25106  ldrh r8,[r4],#2 ;@ Fetch next opcode
25107  subs r5,r5,#20 ;@ Subtract cycles
25108  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25109  b CycloneEnd
25110
25111chktrap41bb: ;@ CHK exception:
25112  mov r0,#6
25113  bl Exception
25114  ldr r5,[r7,#0x5c] ;@ Load Cycles
25115  ldrh r8,[r4],#2 ;@ Fetch next opcode
25116  subs r5,r5,#60 ;@ Subtract cycles
25117  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25118  b CycloneEnd
25119
25120;@ ---------- [41bc] chk #$33, a0 uses Op41bc ----------
25121Op41bc:
25122;@ Get value into r0:
25123;@ EaCalc : Get '#$3333' into r0:
25124  ldrsh r0,[r4],#2 ;@ Fetch immediate value
25125;@ EaRead : Read '#$3333' (address in r0) into r0:
25126
25127;@ Get register operand into r1:
25128;@ EaCalc : Get register index into r1:
25129  and r1,r8,#0x0e00
25130;@ EaRead : Read register[r1] into r1:
25131  ldr r1,[r7,r1,lsr #7]
25132
25133  mov r0,r0,asl #16
25134  movs r1,r1,asl #16
25135
25136;@ get flags, including undocumented ones
25137  and r3,r10,#0x80000000
25138  and r10,r1,#0x80000000 ;@ r10=N_flag
25139  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
25140;@ is reg negative?
25141  bmi chktrap41bc
25142;@ Do arithmetic:
25143  cmp r1,r0
25144  bgt chktrap41bc
25145;@ old N remains
25146  orr r10,r10,r3
25147  ldrh r8,[r4],#2 ;@ Fetch next opcode
25148  subs r5,r5,#14 ;@ Subtract cycles
25149  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25150  b CycloneEnd
25151
25152chktrap41bc: ;@ CHK exception:
25153  mov r0,#6
25154  bl Exception
25155  ldrh r8,[r4],#2 ;@ Fetch next opcode
25156  subs r5,r5,#54 ;@ Subtract cycles
25157  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25158  b CycloneEnd
25159
25160;@ ---------- [41d0] lea (a0), a0 uses Op41d0 ----------
25161Op41d0:
25162  str r4,[r7,#0x50] ;@ Save prev PC + 2
25163  str r5,[r7,#0x5c] ;@ Save Cycles
25164
25165;@ EaCalc : Get '(a0)' into r1:
25166  and r2,r8,#0x000f
25167  orr r2,r2,#0x8 ;@ A0-7
25168  ldr r1,[r7,r2,lsl #2]
25169;@ EaCalc : Get register index into r0:
25170  and r0,r8,#0x0e00
25171  orr r0,r0,#0x1000 ;@ A0-7
25172;@ EaWrite: r1 into register[r0]:
25173  str r1,[r7,r0,lsr #7]
25174
25175  ldr r5,[r7,#0x5c] ;@ Load Cycles
25176  ldrh r8,[r4],#2 ;@ Fetch next opcode
25177  subs r5,r5,#4 ;@ Subtract cycles
25178  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25179  b CycloneEnd
25180
25181;@ ---------- [41e8] lea ($3333,a0), a0 uses Op41e8 ----------
25182Op41e8:
25183  str r4,[r7,#0x50] ;@ Save prev PC + 2
25184  str r5,[r7,#0x5c] ;@ Save Cycles
25185
25186;@ EaCalc : Get '($3333,a0)' into r1:
25187  ldrsh r0,[r4],#2 ;@ Fetch offset
25188  and r2,r8,#0x000f
25189  ldr r2,[r7,r2,lsl #2]
25190  add r1,r0,r2 ;@ Add on offset
25191;@ EaCalc : Get register index into r0:
25192  and r0,r8,#0x0e00
25193  orr r0,r0,#0x1000 ;@ A0-7
25194;@ EaWrite: r1 into register[r0]:
25195  str r1,[r7,r0,lsr #7]
25196
25197  ldr r5,[r7,#0x5c] ;@ Load Cycles
25198  ldrh r8,[r4],#2 ;@ Fetch next opcode
25199  subs r5,r5,#8 ;@ Subtract cycles
25200  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25201  b CycloneEnd
25202
25203;@ ---------- [41f8] lea $3333.w, a0 uses Op41f8 ----------
25204Op41f8:
25205  str r4,[r7,#0x50] ;@ Save prev PC + 2
25206  str r5,[r7,#0x5c] ;@ Save Cycles
25207
25208;@ EaCalc : Get '$3333.w' into r1:
25209  ldrsh r1,[r4],#2 ;@ Fetch Absolute Short address
25210;@ EaCalc : Get register index into r0:
25211  and r0,r8,#0x0e00
25212  orr r0,r0,#0x1000 ;@ A0-7
25213;@ EaWrite: r1 into register[r0]:
25214  str r1,[r7,r0,lsr #7]
25215
25216  ldr r5,[r7,#0x5c] ;@ Load Cycles
25217  ldrh r8,[r4],#2 ;@ Fetch next opcode
25218  subs r5,r5,#8 ;@ Subtract cycles
25219  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25220  b CycloneEnd
25221
25222;@ ---------- [41f9] lea $33333333.l, a0 uses Op41f9 ----------
25223Op41f9:
25224  str r4,[r7,#0x50] ;@ Save prev PC + 2
25225  str r5,[r7,#0x5c] ;@ Save Cycles
25226
25227;@ EaCalc : Get '$33333333.l' into r1:
25228  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
25229  ldrh r0,[r4],#2
25230  orr r1,r0,r2,lsl #16
25231;@ EaCalc : Get register index into r0:
25232  and r0,r8,#0x0e00
25233  orr r0,r0,#0x1000 ;@ A0-7
25234;@ EaWrite: r1 into register[r0]:
25235  str r1,[r7,r0,lsr #7]
25236
25237  ldr r5,[r7,#0x5c] ;@ Load Cycles
25238  ldrh r8,[r4],#2 ;@ Fetch next opcode
25239  subs r5,r5,#12 ;@ Subtract cycles
25240  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25241  b CycloneEnd
25242
25243;@ ---------- [41fa] lea ($3333,pc), a0; =3335 uses Op41fa ----------
25244Op41fa:
25245  str r4,[r7,#0x50] ;@ Save prev PC + 2
25246  str r5,[r7,#0x5c] ;@ Save Cycles
25247
25248;@ EaCalc : Get '($3333,pc)' into r1:
25249  ldr r0,[r7,#0x60] ;@ Get Memory base
25250  sub r0,r4,r0 ;@ Real PC
25251  ldrsh r2,[r4],#2 ;@ Fetch extension
25252  add r1,r2,r0 ;@ ($nn,PC)
25253;@ EaCalc : Get register index into r0:
25254  and r0,r8,#0x0e00
25255  orr r0,r0,#0x1000 ;@ A0-7
25256;@ EaWrite: r1 into register[r0]:
25257  str r1,[r7,r0,lsr #7]
25258
25259  ldr r5,[r7,#0x5c] ;@ Load Cycles
25260  ldrh r8,[r4],#2 ;@ Fetch next opcode
25261  subs r5,r5,#8 ;@ Subtract cycles
25262  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25263  b CycloneEnd
25264
25265;@ ---------- [41fb] lea ($33,pc,d3.w*2), a0; =35 uses Op41fb ----------
25266Op41fb:
25267  str r4,[r7,#0x50] ;@ Save prev PC + 2
25268  str r5,[r7,#0x5c] ;@ Save Cycles
25269
25270;@ EaCalc : Get '($33,pc,d3.w*2)' into r1:
25271  ldr r0,[r7,#0x60] ;@ Get Memory base
25272  ldrh r3,[r4] ;@ Get extension word
25273  sub r0,r4,r0 ;@ r0=PC
25274  add r4,r4,#2
25275  mov r2,r3,lsr #10
25276  tst r3,#0x0800 ;@ Is Rn Word or Long
25277  and r2,r2,#0x3c ;@ r2=Index of Rn
25278  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
25279  ldrne   r2,[r7,r2] ;@ r2=Rn.l
25280  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
25281  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
25282  add r1,r2,r0 ;@ r1=Disp+PC+Rn
25283;@ EaCalc : Get register index into r0:
25284  and r0,r8,#0x0e00
25285  orr r0,r0,#0x1000 ;@ A0-7
25286;@ EaWrite: r1 into register[r0]:
25287  str r1,[r7,r0,lsr #7]
25288
25289  ldr r5,[r7,#0x5c] ;@ Load Cycles
25290  ldrh r8,[r4],#2 ;@ Fetch next opcode
25291  subs r5,r5,#12 ;@ Subtract cycles
25292  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25293  b CycloneEnd
25294
25295;@ ---------- [4200] clr.b d0 uses Op4200 ----------
25296Op4200:
25297;@ EaCalc : Get register index into r11:
25298  and r11,r8,#0x000f
25299
25300;@ Clear:
25301  mov r1,#0
25302  mov r10,#0x40000000 ;@ NZCV=0100
25303
25304;@ EaWrite: r1 into register[r11]:
25305  strb r1,[r7,r11,lsl #2]
25306
25307  ldrh r8,[r4],#2 ;@ Fetch next opcode
25308  subs r5,r5,#4 ;@ Subtract cycles
25309  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25310  b CycloneEnd
25311
25312;@ ---------- [4210] clr.b (a0) uses Op4210 ----------
25313Op4210:
25314  str r4,[r7,#0x50] ;@ Save prev PC + 2
25315  str r5,[r7,#0x5c] ;@ Save Cycles
25316
25317;@ EaCalc : Get '(a0)' into r11:
25318  and r2,r8,#0x000f
25319  orr r2,r2,#0x8 ;@ A0-7
25320  ldr r11,[r7,r2,lsl #2]
25321
25322;@ Clear:
25323  mov r1,#0
25324  mov r10,#0x40000000 ;@ NZCV=0100
25325
25326;@ EaWrite: Write r1 into '(a0)' (address in r11):
25327  and r1,r1,#0xff
25328  str r4,[r7,#0x40] ;@ Save PC
25329  bic r0,r11,#0xff000000
25330  bl m68k_write8 ;@ Call write8(r0,r1) handler
25331
25332  ldr r5,[r7,#0x5c] ;@ Load Cycles
25333  ldrh r8,[r4],#2 ;@ Fetch next opcode
25334  subs r5,r5,#12 ;@ Subtract cycles
25335  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25336  b CycloneEnd
25337
25338;@ ---------- [4218] clr.b (a0)+ uses Op4218 ----------
25339Op4218:
25340  str r4,[r7,#0x50] ;@ Save prev PC + 2
25341  str r5,[r7,#0x5c] ;@ Save Cycles
25342
25343;@ EaCalc : Get '(a0)+' into r11:
25344  and r2,r8,#0x000f
25345  ldr r11,[r7,r2,lsl #2]
25346  add r3,r11,#1 ;@ Post-increment An
25347  str r3,[r7,r2,lsl #2]
25348
25349;@ Clear:
25350  mov r1,#0
25351  mov r10,#0x40000000 ;@ NZCV=0100
25352
25353;@ EaWrite: Write r1 into '(a0)+' (address in r11):
25354  and r1,r1,#0xff
25355  str r4,[r7,#0x40] ;@ Save PC
25356  bic r0,r11,#0xff000000
25357  bl m68k_write8 ;@ Call write8(r0,r1) handler
25358
25359  ldr r5,[r7,#0x5c] ;@ Load Cycles
25360  ldrh r8,[r4],#2 ;@ Fetch next opcode
25361  subs r5,r5,#12 ;@ Subtract cycles
25362  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25363  b CycloneEnd
25364
25365;@ ---------- [421f] clr.b (a7)+ uses Op421f ----------
25366Op421f:
25367  str r4,[r7,#0x50] ;@ Save prev PC + 2
25368  str r5,[r7,#0x5c] ;@ Save Cycles
25369
25370;@ EaCalc : Get '(a7)+' into r11:
25371  ldr r11,[r7,#0x3c] ;@ A7
25372  add r3,r11,#2 ;@ Post-increment An
25373  str r3,[r7,#0x3c] ;@ A7
25374
25375;@ Clear:
25376  mov r1,#0
25377  mov r10,#0x40000000 ;@ NZCV=0100
25378
25379;@ EaWrite: Write r1 into '(a7)+' (address in r11):
25380  and r1,r1,#0xff
25381  str r4,[r7,#0x40] ;@ Save PC
25382  bic r0,r11,#0xff000000
25383  bl m68k_write8 ;@ Call write8(r0,r1) handler
25384
25385  ldr r5,[r7,#0x5c] ;@ Load Cycles
25386  ldrh r8,[r4],#2 ;@ Fetch next opcode
25387  subs r5,r5,#12 ;@ Subtract cycles
25388  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25389  b CycloneEnd
25390
25391;@ ---------- [4220] clr.b -(a0) uses Op4220 ----------
25392Op4220:
25393  str r4,[r7,#0x50] ;@ Save prev PC + 2
25394  str r5,[r7,#0x5c] ;@ Save Cycles
25395
25396;@ EaCalc : Get '-(a0)' into r11:
25397  and r2,r8,#0x000f
25398  orr r2,r2,#0x8 ;@ A0-7
25399  ldr r11,[r7,r2,lsl #2]
25400  sub r11,r11,#1 ;@ Pre-decrement An
25401  str r11,[r7,r2,lsl #2]
25402
25403;@ Clear:
25404  mov r1,#0
25405  mov r10,#0x40000000 ;@ NZCV=0100
25406
25407;@ EaWrite: Write r1 into '-(a0)' (address in r11):
25408  and r1,r1,#0xff
25409  str r4,[r7,#0x40] ;@ Save PC
25410  bic r0,r11,#0xff000000
25411  bl m68k_write8 ;@ Call write8(r0,r1) handler
25412
25413  ldr r5,[r7,#0x5c] ;@ Load Cycles
25414  ldrh r8,[r4],#2 ;@ Fetch next opcode
25415  subs r5,r5,#14 ;@ Subtract cycles
25416  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25417  b CycloneEnd
25418
25419;@ ---------- [4227] clr.b -(a7) uses Op4227 ----------
25420Op4227:
25421  str r4,[r7,#0x50] ;@ Save prev PC + 2
25422  str r5,[r7,#0x5c] ;@ Save Cycles
25423
25424;@ EaCalc : Get '-(a7)' into r11:
25425  ldr r11,[r7,#0x3c] ;@ A7
25426  sub r11,r11,#2 ;@ Pre-decrement An
25427  str r11,[r7,#0x3c] ;@ A7
25428
25429;@ Clear:
25430  mov r1,#0
25431  mov r10,#0x40000000 ;@ NZCV=0100
25432
25433;@ EaWrite: Write r1 into '-(a7)' (address in r11):
25434  and r1,r1,#0xff
25435  str r4,[r7,#0x40] ;@ Save PC
25436  bic r0,r11,#0xff000000
25437  bl m68k_write8 ;@ Call write8(r0,r1) handler
25438
25439  ldr r5,[r7,#0x5c] ;@ Load Cycles
25440  ldrh r8,[r4],#2 ;@ Fetch next opcode
25441  subs r5,r5,#14 ;@ Subtract cycles
25442  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25443  b CycloneEnd
25444
25445;@ ---------- [4228] clr.b ($3333,a0) uses Op4228 ----------
25446Op4228:
25447  str r4,[r7,#0x50] ;@ Save prev PC + 2
25448  str r5,[r7,#0x5c] ;@ Save Cycles
25449
25450;@ EaCalc : Get '($3333,a0)' into r11:
25451  ldrsh r0,[r4],#2 ;@ Fetch offset
25452  and r2,r8,#0x000f
25453  ldr r2,[r7,r2,lsl #2]
25454  add r11,r0,r2 ;@ Add on offset
25455
25456;@ Clear:
25457  mov r1,#0
25458  mov r10,#0x40000000 ;@ NZCV=0100
25459
25460;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
25461  and r1,r1,#0xff
25462  str r4,[r7,#0x40] ;@ Save PC
25463  bic r0,r11,#0xff000000
25464  bl m68k_write8 ;@ Call write8(r0,r1) handler
25465
25466  ldr r5,[r7,#0x5c] ;@ Load Cycles
25467  ldrh r8,[r4],#2 ;@ Fetch next opcode
25468  subs r5,r5,#16 ;@ Subtract cycles
25469  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25470  b CycloneEnd
25471
25472;@ ---------- [4230] clr.b ($33,a0,d3.w*2) uses Op4230 ----------
25473Op4230:
25474  str r4,[r7,#0x50] ;@ Save prev PC + 2
25475  str r5,[r7,#0x5c] ;@ Save Cycles
25476
25477;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
25478;@ Get extension word into r3:
25479  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
25480  mov r2,r3,lsr #10
25481  tst r3,#0x0800 ;@ Is Rn Word or Long
25482  and r2,r2,#0x3c ;@ r2=Index of Rn
25483  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
25484  ldrne   r2,[r7,r2] ;@ r2=Rn.l
25485  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
25486  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
25487  and r2,r8,#0x000f
25488  orr r2,r2,#0x8 ;@ A0-7
25489  ldr r2,[r7,r2,lsl #2]
25490  add r11,r2,r3 ;@ r11=Disp+An+Rn
25491
25492;@ Clear:
25493  mov r1,#0
25494  mov r10,#0x40000000 ;@ NZCV=0100
25495
25496;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
25497  and r1,r1,#0xff
25498  str r4,[r7,#0x40] ;@ Save PC
25499  bic r0,r11,#0xff000000
25500  bl m68k_write8 ;@ Call write8(r0,r1) handler
25501
25502  ldr r5,[r7,#0x5c] ;@ Load Cycles
25503  ldrh r8,[r4],#2 ;@ Fetch next opcode
25504  subs r5,r5,#18 ;@ Subtract cycles
25505  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25506  b CycloneEnd
25507
25508;@ ---------- [4238] clr.b $3333.w uses Op4238 ----------
25509Op4238:
25510  str r4,[r7,#0x50] ;@ Save prev PC + 2
25511  str r5,[r7,#0x5c] ;@ Save Cycles
25512
25513;@ EaCalc : Get '$3333.w' into r11:
25514  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
25515
25516;@ Clear:
25517  mov r1,#0
25518  mov r10,#0x40000000 ;@ NZCV=0100
25519
25520;@ EaWrite: Write r1 into '$3333.w' (address in r11):
25521  and r1,r1,#0xff
25522  str r4,[r7,#0x40] ;@ Save PC
25523  bic r0,r11,#0xff000000
25524  bl m68k_write8 ;@ Call write8(r0,r1) handler
25525
25526  ldr r5,[r7,#0x5c] ;@ Load Cycles
25527  ldrh r8,[r4],#2 ;@ Fetch next opcode
25528  subs r5,r5,#16 ;@ Subtract cycles
25529  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25530  b CycloneEnd
25531
25532;@ ---------- [4239] clr.b $33333333.l uses Op4239 ----------
25533Op4239:
25534  str r4,[r7,#0x50] ;@ Save prev PC + 2
25535  str r5,[r7,#0x5c] ;@ Save Cycles
25536
25537;@ EaCalc : Get '$33333333.l' into r11:
25538  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
25539  ldrh r0,[r4],#2
25540  orr r11,r0,r2,lsl #16
25541
25542;@ Clear:
25543  mov r1,#0
25544  mov r10,#0x40000000 ;@ NZCV=0100
25545
25546;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
25547  and r1,r1,#0xff
25548  str r4,[r7,#0x40] ;@ Save PC
25549  bic r0,r11,#0xff000000
25550  bl m68k_write8 ;@ Call write8(r0,r1) handler
25551
25552  ldr r5,[r7,#0x5c] ;@ Load Cycles
25553  ldrh r8,[r4],#2 ;@ Fetch next opcode
25554  subs r5,r5,#20 ;@ Subtract cycles
25555  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25556  b CycloneEnd
25557
25558;@ ---------- [4240] clr.w d0 uses Op4240 ----------
25559Op4240:
25560;@ EaCalc : Get register index into r11:
25561  and r11,r8,#0x000f
25562  mov r11,r11,lsl #2
25563
25564;@ Clear:
25565  mov r1,#0
25566  mov r10,#0x40000000 ;@ NZCV=0100
25567
25568;@ EaWrite: r1 into register[r11]:
25569  strh r1,[r7,r11]
25570
25571  ldrh r8,[r4],#2 ;@ Fetch next opcode
25572  subs r5,r5,#4 ;@ Subtract cycles
25573  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25574  b CycloneEnd
25575
25576;@ ---------- [4250] clr.w (a0) uses Op4250 ----------
25577Op4250:
25578  str r4,[r7,#0x50] ;@ Save prev PC + 2
25579  str r5,[r7,#0x5c] ;@ Save Cycles
25580
25581;@ EaCalc : Get '(a0)' into r11:
25582  and r2,r8,#0x000f
25583  orr r2,r2,#0x8 ;@ A0-7
25584  ldr r11,[r7,r2,lsl #2]
25585
25586;@ Clear:
25587  mov r1,#0
25588  mov r10,#0x40000000 ;@ NZCV=0100
25589
25590;@ EaWrite: Write r1 into '(a0)' (address in r11):
25591  uxth r1,r1 ;@ zero extend
25592  str r4,[r7,#0x40] ;@ Save PC
25593  bic r0,r11,#0xff000000
25594  bl m68k_write16 ;@ Call write16(r0,r1) handler
25595
25596  ldr r5,[r7,#0x5c] ;@ Load Cycles
25597  ldrh r8,[r4],#2 ;@ Fetch next opcode
25598  subs r5,r5,#12 ;@ Subtract cycles
25599  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25600  b CycloneEnd
25601
25602;@ ---------- [4258] clr.w (a0)+ uses Op4258 ----------
25603Op4258:
25604  str r4,[r7,#0x50] ;@ Save prev PC + 2
25605  str r5,[r7,#0x5c] ;@ Save Cycles
25606
25607;@ EaCalc : Get '(a0)+' into r11:
25608  and r2,r8,#0x000f
25609  ldr r11,[r7,r2,lsl #2]
25610  add r3,r11,#2 ;@ Post-increment An
25611  str r3,[r7,r2,lsl #2]
25612
25613;@ Clear:
25614  mov r1,#0
25615  mov r10,#0x40000000 ;@ NZCV=0100
25616
25617;@ EaWrite: Write r1 into '(a0)+' (address in r11):
25618  uxth r1,r1 ;@ zero extend
25619  str r4,[r7,#0x40] ;@ Save PC
25620  bic r0,r11,#0xff000000
25621  bl m68k_write16 ;@ Call write16(r0,r1) handler
25622
25623  ldr r5,[r7,#0x5c] ;@ Load Cycles
25624  ldrh r8,[r4],#2 ;@ Fetch next opcode
25625  subs r5,r5,#12 ;@ Subtract cycles
25626  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25627  b CycloneEnd
25628
25629;@ ---------- [4260] clr.w -(a0) uses Op4260 ----------
25630Op4260:
25631  str r4,[r7,#0x50] ;@ Save prev PC + 2
25632  str r5,[r7,#0x5c] ;@ Save Cycles
25633
25634;@ EaCalc : Get '-(a0)' into r11:
25635  and r2,r8,#0x000f
25636  orr r2,r2,#0x8 ;@ A0-7
25637  ldr r11,[r7,r2,lsl #2]
25638  sub r11,r11,#2 ;@ Pre-decrement An
25639  str r11,[r7,r2,lsl #2]
25640
25641;@ Clear:
25642  mov r1,#0
25643  mov r10,#0x40000000 ;@ NZCV=0100
25644
25645;@ EaWrite: Write r1 into '-(a0)' (address in r11):
25646  uxth r1,r1 ;@ zero extend
25647  str r4,[r7,#0x40] ;@ Save PC
25648  bic r0,r11,#0xff000000
25649  bl m68k_write16 ;@ Call write16(r0,r1) handler
25650
25651  ldr r5,[r7,#0x5c] ;@ Load Cycles
25652  ldrh r8,[r4],#2 ;@ Fetch next opcode
25653  subs r5,r5,#14 ;@ Subtract cycles
25654  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25655  b CycloneEnd
25656
25657;@ ---------- [4268] clr.w ($3333,a0) uses Op4268 ----------
25658Op4268:
25659  str r4,[r7,#0x50] ;@ Save prev PC + 2
25660  str r5,[r7,#0x5c] ;@ Save Cycles
25661
25662;@ EaCalc : Get '($3333,a0)' into r11:
25663  ldrsh r0,[r4],#2 ;@ Fetch offset
25664  and r2,r8,#0x000f
25665  ldr r2,[r7,r2,lsl #2]
25666  add r11,r0,r2 ;@ Add on offset
25667
25668;@ Clear:
25669  mov r1,#0
25670  mov r10,#0x40000000 ;@ NZCV=0100
25671
25672;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
25673  uxth r1,r1 ;@ zero extend
25674  str r4,[r7,#0x40] ;@ Save PC
25675  bic r0,r11,#0xff000000
25676  bl m68k_write16 ;@ Call write16(r0,r1) handler
25677
25678  ldr r5,[r7,#0x5c] ;@ Load Cycles
25679  ldrh r8,[r4],#2 ;@ Fetch next opcode
25680  subs r5,r5,#16 ;@ Subtract cycles
25681  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25682  b CycloneEnd
25683
25684;@ ---------- [4270] clr.w ($33,a0,d3.w*2) uses Op4270 ----------
25685Op4270:
25686  str r4,[r7,#0x50] ;@ Save prev PC + 2
25687  str r5,[r7,#0x5c] ;@ Save Cycles
25688
25689;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
25690;@ Get extension word into r3:
25691  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
25692  mov r2,r3,lsr #10
25693  tst r3,#0x0800 ;@ Is Rn Word or Long
25694  and r2,r2,#0x3c ;@ r2=Index of Rn
25695  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
25696  ldrne   r2,[r7,r2] ;@ r2=Rn.l
25697  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
25698  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
25699  and r2,r8,#0x000f
25700  orr r2,r2,#0x8 ;@ A0-7
25701  ldr r2,[r7,r2,lsl #2]
25702  add r11,r2,r3 ;@ r11=Disp+An+Rn
25703
25704;@ Clear:
25705  mov r1,#0
25706  mov r10,#0x40000000 ;@ NZCV=0100
25707
25708;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
25709  uxth r1,r1 ;@ zero extend
25710  str r4,[r7,#0x40] ;@ Save PC
25711  bic r0,r11,#0xff000000
25712  bl m68k_write16 ;@ Call write16(r0,r1) handler
25713
25714  ldr r5,[r7,#0x5c] ;@ Load Cycles
25715  ldrh r8,[r4],#2 ;@ Fetch next opcode
25716  subs r5,r5,#18 ;@ Subtract cycles
25717  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25718  b CycloneEnd
25719
25720;@ ---------- [4278] clr.w $3333.w uses Op4278 ----------
25721Op4278:
25722  str r4,[r7,#0x50] ;@ Save prev PC + 2
25723  str r5,[r7,#0x5c] ;@ Save Cycles
25724
25725;@ EaCalc : Get '$3333.w' into r11:
25726  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
25727
25728;@ Clear:
25729  mov r1,#0
25730  mov r10,#0x40000000 ;@ NZCV=0100
25731
25732;@ EaWrite: Write r1 into '$3333.w' (address in r11):
25733  uxth r1,r1 ;@ zero extend
25734  str r4,[r7,#0x40] ;@ Save PC
25735  bic r0,r11,#0xff000000
25736  bl m68k_write16 ;@ Call write16(r0,r1) handler
25737
25738  ldr r5,[r7,#0x5c] ;@ Load Cycles
25739  ldrh r8,[r4],#2 ;@ Fetch next opcode
25740  subs r5,r5,#16 ;@ Subtract cycles
25741  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25742  b CycloneEnd
25743
25744;@ ---------- [4279] clr.w $33333333.l uses Op4279 ----------
25745Op4279:
25746  str r4,[r7,#0x50] ;@ Save prev PC + 2
25747  str r5,[r7,#0x5c] ;@ Save Cycles
25748
25749;@ EaCalc : Get '$33333333.l' into r11:
25750  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
25751  ldrh r0,[r4],#2
25752  orr r11,r0,r2,lsl #16
25753
25754;@ Clear:
25755  mov r1,#0
25756  mov r10,#0x40000000 ;@ NZCV=0100
25757
25758;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
25759  uxth r1,r1 ;@ zero extend
25760  str r4,[r7,#0x40] ;@ Save PC
25761  bic r0,r11,#0xff000000
25762  bl m68k_write16 ;@ Call write16(r0,r1) handler
25763
25764  ldr r5,[r7,#0x5c] ;@ Load Cycles
25765  ldrh r8,[r4],#2 ;@ Fetch next opcode
25766  subs r5,r5,#20 ;@ Subtract cycles
25767  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25768  b CycloneEnd
25769
25770;@ ---------- [4280] clr.l d0 uses Op4280 ----------
25771Op4280:
25772;@ EaCalc : Get register index into r11:
25773  and r11,r8,#0x000f
25774
25775;@ Clear:
25776  mov r1,#0
25777  mov r10,#0x40000000 ;@ NZCV=0100
25778
25779;@ EaWrite: r1 into register[r11]:
25780  str r1,[r7,r11,lsl #2]
25781
25782  ldrh r8,[r4],#2 ;@ Fetch next opcode
25783  subs r5,r5,#6 ;@ Subtract cycles
25784  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25785  b CycloneEnd
25786
25787;@ ---------- [4290] clr.l (a0) uses Op4290 ----------
25788Op4290:
25789  str r4,[r7,#0x50] ;@ Save prev PC + 2
25790  str r5,[r7,#0x5c] ;@ Save Cycles
25791
25792;@ EaCalc : Get '(a0)' into r11:
25793  and r2,r8,#0x000f
25794  orr r2,r2,#0x8 ;@ A0-7
25795  ldr r11,[r7,r2,lsl #2]
25796
25797;@ Clear:
25798  mov r1,#0
25799  mov r10,#0x40000000 ;@ NZCV=0100
25800
25801;@ EaWrite: Write r1 into '(a0)' (address in r11):
25802  str r4,[r7,#0x40] ;@ Save PC
25803  bic r0,r11,#0xff000000
25804  bl m68k_write32 ;@ Call write32(r0,r1) handler
25805
25806  ldr r5,[r7,#0x5c] ;@ Load Cycles
25807  ldrh r8,[r4],#2 ;@ Fetch next opcode
25808  subs r5,r5,#20 ;@ Subtract cycles
25809  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25810  b CycloneEnd
25811
25812;@ ---------- [4298] clr.l (a0)+ uses Op4298 ----------
25813Op4298:
25814  str r4,[r7,#0x50] ;@ Save prev PC + 2
25815  str r5,[r7,#0x5c] ;@ Save Cycles
25816
25817;@ EaCalc : Get '(a0)+' into r11:
25818  and r2,r8,#0x000f
25819  ldr r11,[r7,r2,lsl #2]
25820  add r3,r11,#4 ;@ Post-increment An
25821  str r3,[r7,r2,lsl #2]
25822
25823;@ Clear:
25824  mov r1,#0
25825  mov r10,#0x40000000 ;@ NZCV=0100
25826
25827;@ EaWrite: Write r1 into '(a0)+' (address in r11):
25828  str r4,[r7,#0x40] ;@ Save PC
25829  bic r0,r11,#0xff000000
25830  bl m68k_write32 ;@ Call write32(r0,r1) handler
25831
25832  ldr r5,[r7,#0x5c] ;@ Load Cycles
25833  ldrh r8,[r4],#2 ;@ Fetch next opcode
25834  subs r5,r5,#20 ;@ Subtract cycles
25835  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25836  b CycloneEnd
25837
25838;@ ---------- [42a0] clr.l -(a0) uses Op42a0 ----------
25839Op42a0:
25840  str r4,[r7,#0x50] ;@ Save prev PC + 2
25841  str r5,[r7,#0x5c] ;@ Save Cycles
25842
25843;@ EaCalc : Get '-(a0)' into r11:
25844  and r2,r8,#0x000f
25845  orr r2,r2,#0x8 ;@ A0-7
25846  ldr r11,[r7,r2,lsl #2]
25847  sub r11,r11,#4 ;@ Pre-decrement An
25848  str r11,[r7,r2,lsl #2]
25849
25850;@ Clear:
25851  mov r1,#0
25852  mov r10,#0x40000000 ;@ NZCV=0100
25853
25854;@ EaWrite: Write r1 into '-(a0)' (address in r11):
25855  str r4,[r7,#0x40] ;@ Save PC
25856  bic r0,r11,#0xff000000
25857  bl m68k_write32 ;@ Call write32(r0,r1) handler
25858
25859  ldr r5,[r7,#0x5c] ;@ Load Cycles
25860  ldrh r8,[r4],#2 ;@ Fetch next opcode
25861  subs r5,r5,#22 ;@ Subtract cycles
25862  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25863  b CycloneEnd
25864
25865;@ ---------- [42a8] clr.l ($3333,a0) uses Op42a8 ----------
25866Op42a8:
25867  str r4,[r7,#0x50] ;@ Save prev PC + 2
25868  str r5,[r7,#0x5c] ;@ Save Cycles
25869
25870;@ EaCalc : Get '($3333,a0)' into r11:
25871  ldrsh r0,[r4],#2 ;@ Fetch offset
25872  and r2,r8,#0x000f
25873  ldr r2,[r7,r2,lsl #2]
25874  add r11,r0,r2 ;@ Add on offset
25875
25876;@ Clear:
25877  mov r1,#0
25878  mov r10,#0x40000000 ;@ NZCV=0100
25879
25880;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
25881  str r4,[r7,#0x40] ;@ Save PC
25882  bic r0,r11,#0xff000000
25883  bl m68k_write32 ;@ Call write32(r0,r1) handler
25884
25885  ldr r5,[r7,#0x5c] ;@ Load Cycles
25886  ldrh r8,[r4],#2 ;@ Fetch next opcode
25887  subs r5,r5,#24 ;@ Subtract cycles
25888  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25889  b CycloneEnd
25890
25891;@ ---------- [42b0] clr.l ($33,a0,d3.w*2) uses Op42b0 ----------
25892Op42b0:
25893  str r4,[r7,#0x50] ;@ Save prev PC + 2
25894  str r5,[r7,#0x5c] ;@ Save Cycles
25895
25896;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
25897;@ Get extension word into r3:
25898  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
25899  mov r2,r3,lsr #10
25900  tst r3,#0x0800 ;@ Is Rn Word or Long
25901  and r2,r2,#0x3c ;@ r2=Index of Rn
25902  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
25903  ldrne   r2,[r7,r2] ;@ r2=Rn.l
25904  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
25905  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
25906  and r2,r8,#0x000f
25907  orr r2,r2,#0x8 ;@ A0-7
25908  ldr r2,[r7,r2,lsl #2]
25909  add r11,r2,r3 ;@ r11=Disp+An+Rn
25910
25911;@ Clear:
25912  mov r1,#0
25913  mov r10,#0x40000000 ;@ NZCV=0100
25914
25915;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
25916  str r4,[r7,#0x40] ;@ Save PC
25917  bic r0,r11,#0xff000000
25918  bl m68k_write32 ;@ Call write32(r0,r1) handler
25919
25920  ldr r5,[r7,#0x5c] ;@ Load Cycles
25921  ldrh r8,[r4],#2 ;@ Fetch next opcode
25922  subs r5,r5,#26 ;@ Subtract cycles
25923  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25924  b CycloneEnd
25925
25926;@ ---------- [42b8] clr.l $3333.w uses Op42b8 ----------
25927Op42b8:
25928  str r4,[r7,#0x50] ;@ Save prev PC + 2
25929  str r5,[r7,#0x5c] ;@ Save Cycles
25930
25931;@ EaCalc : Get '$3333.w' into r11:
25932  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
25933
25934;@ Clear:
25935  mov r1,#0
25936  mov r10,#0x40000000 ;@ NZCV=0100
25937
25938;@ EaWrite: Write r1 into '$3333.w' (address in r11):
25939  str r4,[r7,#0x40] ;@ Save PC
25940  bic r0,r11,#0xff000000
25941  bl m68k_write32 ;@ Call write32(r0,r1) handler
25942
25943  ldr r5,[r7,#0x5c] ;@ Load Cycles
25944  ldrh r8,[r4],#2 ;@ Fetch next opcode
25945  subs r5,r5,#24 ;@ Subtract cycles
25946  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25947  b CycloneEnd
25948
25949;@ ---------- [42b9] clr.l $33333333.l uses Op42b9 ----------
25950Op42b9:
25951  str r4,[r7,#0x50] ;@ Save prev PC + 2
25952  str r5,[r7,#0x5c] ;@ Save Cycles
25953
25954;@ EaCalc : Get '$33333333.l' into r11:
25955  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
25956  ldrh r0,[r4],#2
25957  orr r11,r0,r2,lsl #16
25958
25959;@ Clear:
25960  mov r1,#0
25961  mov r10,#0x40000000 ;@ NZCV=0100
25962
25963;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
25964  str r4,[r7,#0x40] ;@ Save PC
25965  bic r0,r11,#0xff000000
25966  bl m68k_write32 ;@ Call write32(r0,r1) handler
25967
25968  ldr r5,[r7,#0x5c] ;@ Load Cycles
25969  ldrh r8,[r4],#2 ;@ Fetch next opcode
25970  subs r5,r5,#28 ;@ Subtract cycles
25971  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25972  b CycloneEnd
25973
25974;@ ---------- [4400] neg.b d0 uses Op4400 ----------
25975Op4400:
25976;@ EaCalc : Get register index into r11:
25977  and r11,r8,#0x000f
25978;@ EaRead : Read register[r11] into r0:
25979  ldr r0,[r7,r11,lsl #2]
25980
25981;@ Neg:
25982  mov r0,r0,asl #24
25983  rsbs r1,r0,#0
25984  mrs r10,cpsr ;@ r10=flags
25985  eor r10,r10,#0x20000000 ;@ Invert carry
25986  str r10,[r7,#0x4c] ;@ Save X bit
25987  mov r1,r1,asr #24
25988
25989;@ EaWrite: r1 into register[r11]:
25990  strb r1,[r7,r11,lsl #2]
25991
25992  ldrh r8,[r4],#2 ;@ Fetch next opcode
25993  subs r5,r5,#4 ;@ Subtract cycles
25994  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25995  b CycloneEnd
25996
25997;@ ---------- [4410] neg.b (a0) uses Op4410 ----------
25998Op4410:
25999  str r4,[r7,#0x50] ;@ Save prev PC + 2
26000  str r5,[r7,#0x5c] ;@ Save Cycles
26001
26002;@ EaCalc : Get '(a0)' into r11:
26003  and r2,r8,#0x000f
26004  orr r2,r2,#0x8 ;@ A0-7
26005  ldr r11,[r7,r2,lsl #2]
26006;@ EaRead : Read '(a0)' (address in r11) into r0:
26007  str r4,[r7,#0x40] ;@ Save PC
26008  bic r0,r11,#0xff000000
26009  bl m68k_read8 ;@ Call read8(r0) handler
26010
26011;@ Neg:
26012  mov r0,r0,asl #24
26013  rsbs r1,r0,#0
26014  mrs r10,cpsr ;@ r10=flags
26015  eor r10,r10,#0x20000000 ;@ Invert carry
26016  str r10,[r7,#0x4c] ;@ Save X bit
26017  mov r1,r1,asr #24
26018
26019;@ EaWrite: Write r1 into '(a0)' (address in r11):
26020  and r1,r1,#0xff
26021  bic r0,r11,#0xff000000
26022  bl m68k_write8 ;@ Call write8(r0,r1) handler
26023
26024  ldr r5,[r7,#0x5c] ;@ Load Cycles
26025  ldrh r8,[r4],#2 ;@ Fetch next opcode
26026  subs r5,r5,#12 ;@ Subtract cycles
26027  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26028  b CycloneEnd
26029
26030;@ ---------- [4418] neg.b (a0)+ uses Op4418 ----------
26031Op4418:
26032  str r4,[r7,#0x50] ;@ Save prev PC + 2
26033  str r5,[r7,#0x5c] ;@ Save Cycles
26034
26035;@ EaCalc : Get '(a0)+' into r11:
26036  and r2,r8,#0x000f
26037  ldr r11,[r7,r2,lsl #2]
26038  add r3,r11,#1 ;@ Post-increment An
26039  str r3,[r7,r2,lsl #2]
26040;@ EaRead : Read '(a0)+' (address in r11) into r0:
26041  str r4,[r7,#0x40] ;@ Save PC
26042  bic r0,r11,#0xff000000
26043  bl m68k_read8 ;@ Call read8(r0) handler
26044
26045;@ Neg:
26046  mov r0,r0,asl #24
26047  rsbs r1,r0,#0
26048  mrs r10,cpsr ;@ r10=flags
26049  eor r10,r10,#0x20000000 ;@ Invert carry
26050  str r10,[r7,#0x4c] ;@ Save X bit
26051  mov r1,r1,asr #24
26052
26053;@ EaWrite: Write r1 into '(a0)+' (address in r11):
26054  and r1,r1,#0xff
26055  bic r0,r11,#0xff000000
26056  bl m68k_write8 ;@ Call write8(r0,r1) handler
26057
26058  ldr r5,[r7,#0x5c] ;@ Load Cycles
26059  ldrh r8,[r4],#2 ;@ Fetch next opcode
26060  subs r5,r5,#12 ;@ Subtract cycles
26061  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26062  b CycloneEnd
26063
26064;@ ---------- [441f] neg.b (a7)+ uses Op441f ----------
26065Op441f:
26066  str r4,[r7,#0x50] ;@ Save prev PC + 2
26067  str r5,[r7,#0x5c] ;@ Save Cycles
26068
26069;@ EaCalc : Get '(a7)+' into r11:
26070  ldr r11,[r7,#0x3c] ;@ A7
26071  add r3,r11,#2 ;@ Post-increment An
26072  str r3,[r7,#0x3c] ;@ A7
26073;@ EaRead : Read '(a7)+' (address in r11) into r0:
26074  str r4,[r7,#0x40] ;@ Save PC
26075  bic r0,r11,#0xff000000
26076  bl m68k_read8 ;@ Call read8(r0) handler
26077
26078;@ Neg:
26079  mov r0,r0,asl #24
26080  rsbs r1,r0,#0
26081  mrs r10,cpsr ;@ r10=flags
26082  eor r10,r10,#0x20000000 ;@ Invert carry
26083  str r10,[r7,#0x4c] ;@ Save X bit
26084  mov r1,r1,asr #24
26085
26086;@ EaWrite: Write r1 into '(a7)+' (address in r11):
26087  and r1,r1,#0xff
26088  bic r0,r11,#0xff000000
26089  bl m68k_write8 ;@ Call write8(r0,r1) handler
26090
26091  ldr r5,[r7,#0x5c] ;@ Load Cycles
26092  ldrh r8,[r4],#2 ;@ Fetch next opcode
26093  subs r5,r5,#12 ;@ Subtract cycles
26094  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26095  b CycloneEnd
26096
26097;@ ---------- [4420] neg.b -(a0) uses Op4420 ----------
26098Op4420:
26099  str r4,[r7,#0x50] ;@ Save prev PC + 2
26100  str r5,[r7,#0x5c] ;@ Save Cycles
26101
26102;@ EaCalc : Get '-(a0)' into r11:
26103  and r2,r8,#0x000f
26104  orr r2,r2,#0x8 ;@ A0-7
26105  ldr r11,[r7,r2,lsl #2]
26106  sub r11,r11,#1 ;@ Pre-decrement An
26107  str r11,[r7,r2,lsl #2]
26108;@ EaRead : Read '-(a0)' (address in r11) into r0:
26109  str r4,[r7,#0x40] ;@ Save PC
26110  bic r0,r11,#0xff000000
26111  bl m68k_read8 ;@ Call read8(r0) handler
26112
26113;@ Neg:
26114  mov r0,r0,asl #24
26115  rsbs r1,r0,#0
26116  mrs r10,cpsr ;@ r10=flags
26117  eor r10,r10,#0x20000000 ;@ Invert carry
26118  str r10,[r7,#0x4c] ;@ Save X bit
26119  mov r1,r1,asr #24
26120
26121;@ EaWrite: Write r1 into '-(a0)' (address in r11):
26122  and r1,r1,#0xff
26123  bic r0,r11,#0xff000000
26124  bl m68k_write8 ;@ Call write8(r0,r1) handler
26125
26126  ldr r5,[r7,#0x5c] ;@ Load Cycles
26127  ldrh r8,[r4],#2 ;@ Fetch next opcode
26128  subs r5,r5,#14 ;@ Subtract cycles
26129  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26130  b CycloneEnd
26131
26132;@ ---------- [4427] neg.b -(a7) uses Op4427 ----------
26133Op4427:
26134  str r4,[r7,#0x50] ;@ Save prev PC + 2
26135  str r5,[r7,#0x5c] ;@ Save Cycles
26136
26137;@ EaCalc : Get '-(a7)' into r11:
26138  ldr r11,[r7,#0x3c] ;@ A7
26139  sub r11,r11,#2 ;@ Pre-decrement An
26140  str r11,[r7,#0x3c] ;@ A7
26141;@ EaRead : Read '-(a7)' (address in r11) into r0:
26142  str r4,[r7,#0x40] ;@ Save PC
26143  bic r0,r11,#0xff000000
26144  bl m68k_read8 ;@ Call read8(r0) handler
26145
26146;@ Neg:
26147  mov r0,r0,asl #24
26148  rsbs r1,r0,#0
26149  mrs r10,cpsr ;@ r10=flags
26150  eor r10,r10,#0x20000000 ;@ Invert carry
26151  str r10,[r7,#0x4c] ;@ Save X bit
26152  mov r1,r1,asr #24
26153
26154;@ EaWrite: Write r1 into '-(a7)' (address in r11):
26155  and r1,r1,#0xff
26156  bic r0,r11,#0xff000000
26157  bl m68k_write8 ;@ Call write8(r0,r1) handler
26158
26159  ldr r5,[r7,#0x5c] ;@ Load Cycles
26160  ldrh r8,[r4],#2 ;@ Fetch next opcode
26161  subs r5,r5,#14 ;@ Subtract cycles
26162  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26163  b CycloneEnd
26164
26165;@ ---------- [4428] neg.b ($3333,a0) uses Op4428 ----------
26166Op4428:
26167  str r4,[r7,#0x50] ;@ Save prev PC + 2
26168  str r5,[r7,#0x5c] ;@ Save Cycles
26169
26170;@ EaCalc : Get '($3333,a0)' into r11:
26171  ldrsh r0,[r4],#2 ;@ Fetch offset
26172  and r2,r8,#0x000f
26173  ldr r2,[r7,r2,lsl #2]
26174  add r11,r0,r2 ;@ Add on offset
26175;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
26176  str r4,[r7,#0x40] ;@ Save PC
26177  bic r0,r11,#0xff000000
26178  bl m68k_read8 ;@ Call read8(r0) handler
26179
26180;@ Neg:
26181  mov r0,r0,asl #24
26182  rsbs r1,r0,#0
26183  mrs r10,cpsr ;@ r10=flags
26184  eor r10,r10,#0x20000000 ;@ Invert carry
26185  str r10,[r7,#0x4c] ;@ Save X bit
26186  mov r1,r1,asr #24
26187
26188;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
26189  and r1,r1,#0xff
26190  bic r0,r11,#0xff000000
26191  bl m68k_write8 ;@ Call write8(r0,r1) handler
26192
26193  ldr r5,[r7,#0x5c] ;@ Load Cycles
26194  ldrh r8,[r4],#2 ;@ Fetch next opcode
26195  subs r5,r5,#16 ;@ Subtract cycles
26196  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26197  b CycloneEnd
26198
26199;@ ---------- [4430] neg.b ($33,a0,d3.w*2) uses Op4430 ----------
26200Op4430:
26201  str r4,[r7,#0x50] ;@ Save prev PC + 2
26202  str r5,[r7,#0x5c] ;@ Save Cycles
26203
26204;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
26205;@ Get extension word into r3:
26206  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
26207  mov r2,r3,lsr #10
26208  tst r3,#0x0800 ;@ Is Rn Word or Long
26209  and r2,r2,#0x3c ;@ r2=Index of Rn
26210  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
26211  ldrne   r2,[r7,r2] ;@ r2=Rn.l
26212  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
26213  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
26214  and r2,r8,#0x000f
26215  orr r2,r2,#0x8 ;@ A0-7
26216  ldr r2,[r7,r2,lsl #2]
26217  add r11,r2,r3 ;@ r11=Disp+An+Rn
26218;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
26219  str r4,[r7,#0x40] ;@ Save PC
26220  bic r0,r11,#0xff000000
26221  bl m68k_read8 ;@ Call read8(r0) handler
26222
26223;@ Neg:
26224  mov r0,r0,asl #24
26225  rsbs r1,r0,#0
26226  mrs r10,cpsr ;@ r10=flags
26227  eor r10,r10,#0x20000000 ;@ Invert carry
26228  str r10,[r7,#0x4c] ;@ Save X bit
26229  mov r1,r1,asr #24
26230
26231;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
26232  and r1,r1,#0xff
26233  bic r0,r11,#0xff000000
26234  bl m68k_write8 ;@ Call write8(r0,r1) handler
26235
26236  ldr r5,[r7,#0x5c] ;@ Load Cycles
26237  ldrh r8,[r4],#2 ;@ Fetch next opcode
26238  subs r5,r5,#18 ;@ Subtract cycles
26239  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26240  b CycloneEnd
26241
26242;@ ---------- [4438] neg.b $3333.w uses Op4438 ----------
26243Op4438:
26244  str r4,[r7,#0x50] ;@ Save prev PC + 2
26245  str r5,[r7,#0x5c] ;@ Save Cycles
26246
26247;@ EaCalc : Get '$3333.w' into r11:
26248  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
26249;@ EaRead : Read '$3333.w' (address in r11) into r0:
26250  str r4,[r7,#0x40] ;@ Save PC
26251  bic r0,r11,#0xff000000
26252  bl m68k_read8 ;@ Call read8(r0) handler
26253
26254;@ Neg:
26255  mov r0,r0,asl #24
26256  rsbs r1,r0,#0
26257  mrs r10,cpsr ;@ r10=flags
26258  eor r10,r10,#0x20000000 ;@ Invert carry
26259  str r10,[r7,#0x4c] ;@ Save X bit
26260  mov r1,r1,asr #24
26261
26262;@ EaWrite: Write r1 into '$3333.w' (address in r11):
26263  and r1,r1,#0xff
26264  bic r0,r11,#0xff000000
26265  bl m68k_write8 ;@ Call write8(r0,r1) handler
26266
26267  ldr r5,[r7,#0x5c] ;@ Load Cycles
26268  ldrh r8,[r4],#2 ;@ Fetch next opcode
26269  subs r5,r5,#16 ;@ Subtract cycles
26270  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26271  b CycloneEnd
26272
26273;@ ---------- [4439] neg.b $33333333.l uses Op4439 ----------
26274Op4439:
26275  str r4,[r7,#0x50] ;@ Save prev PC + 2
26276  str r5,[r7,#0x5c] ;@ Save Cycles
26277
26278;@ EaCalc : Get '$33333333.l' into r11:
26279  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
26280  ldrh r0,[r4],#2
26281  orr r11,r0,r2,lsl #16
26282;@ EaRead : Read '$33333333.l' (address in r11) into r0:
26283  str r4,[r7,#0x40] ;@ Save PC
26284  bic r0,r11,#0xff000000
26285  bl m68k_read8 ;@ Call read8(r0) handler
26286
26287;@ Neg:
26288  mov r0,r0,asl #24
26289  rsbs r1,r0,#0
26290  mrs r10,cpsr ;@ r10=flags
26291  eor r10,r10,#0x20000000 ;@ Invert carry
26292  str r10,[r7,#0x4c] ;@ Save X bit
26293  mov r1,r1,asr #24
26294
26295;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
26296  and r1,r1,#0xff
26297  bic r0,r11,#0xff000000
26298  bl m68k_write8 ;@ Call write8(r0,r1) handler
26299
26300  ldr r5,[r7,#0x5c] ;@ Load Cycles
26301  ldrh r8,[r4],#2 ;@ Fetch next opcode
26302  subs r5,r5,#20 ;@ Subtract cycles
26303  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26304  b CycloneEnd
26305
26306;@ ---------- [4440] neg.w d0 uses Op4440 ----------
26307Op4440:
26308;@ EaCalc : Get register index into r11:
26309  and r11,r8,#0x000f
26310  mov r11,r11,lsl #2
26311;@ EaRead : Read register[r11] into r0:
26312  ldr r0,[r7,r11]
26313
26314;@ Neg:
26315  mov r0,r0,asl #16
26316  rsbs r1,r0,#0
26317  mrs r10,cpsr ;@ r10=flags
26318  eor r10,r10,#0x20000000 ;@ Invert carry
26319  str r10,[r7,#0x4c] ;@ Save X bit
26320  mov r1,r1,asr #16
26321
26322;@ EaWrite: r1 into register[r11]:
26323  strh r1,[r7,r11]
26324
26325  ldrh r8,[r4],#2 ;@ Fetch next opcode
26326  subs r5,r5,#4 ;@ Subtract cycles
26327  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26328  b CycloneEnd
26329
26330;@ ---------- [4450] neg.w (a0) uses Op4450 ----------
26331Op4450:
26332  str r4,[r7,#0x50] ;@ Save prev PC + 2
26333  str r5,[r7,#0x5c] ;@ Save Cycles
26334
26335;@ EaCalc : Get '(a0)' into r11:
26336  and r2,r8,#0x000f
26337  orr r2,r2,#0x8 ;@ A0-7
26338  ldr r11,[r7,r2,lsl #2]
26339;@ EaRead : Read '(a0)' (address in r11) into r0:
26340  str r4,[r7,#0x40] ;@ Save PC
26341  bic r0,r11,#0xff000000
26342  bl m68k_read16 ;@ Call read16(r0) handler
26343
26344;@ Neg:
26345  mov r0,r0,asl #16
26346  rsbs r1,r0,#0
26347  mrs r10,cpsr ;@ r10=flags
26348  eor r10,r10,#0x20000000 ;@ Invert carry
26349  str r10,[r7,#0x4c] ;@ Save X bit
26350  mov r1,r1,asr #16
26351
26352;@ EaWrite: Write r1 into '(a0)' (address in r11):
26353  uxth r1,r1 ;@ zero extend
26354  bic r0,r11,#0xff000000
26355  bl m68k_write16 ;@ Call write16(r0,r1) handler
26356
26357  ldr r5,[r7,#0x5c] ;@ Load Cycles
26358  ldrh r8,[r4],#2 ;@ Fetch next opcode
26359  subs r5,r5,#12 ;@ Subtract cycles
26360  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26361  b CycloneEnd
26362
26363;@ ---------- [4458] neg.w (a0)+ uses Op4458 ----------
26364Op4458:
26365  str r4,[r7,#0x50] ;@ Save prev PC + 2
26366  str r5,[r7,#0x5c] ;@ Save Cycles
26367
26368;@ EaCalc : Get '(a0)+' into r11:
26369  and r2,r8,#0x000f
26370  ldr r11,[r7,r2,lsl #2]
26371  add r3,r11,#2 ;@ Post-increment An
26372  str r3,[r7,r2,lsl #2]
26373;@ EaRead : Read '(a0)+' (address in r11) into r0:
26374  str r4,[r7,#0x40] ;@ Save PC
26375  bic r0,r11,#0xff000000
26376  bl m68k_read16 ;@ Call read16(r0) handler
26377
26378;@ Neg:
26379  mov r0,r0,asl #16
26380  rsbs r1,r0,#0
26381  mrs r10,cpsr ;@ r10=flags
26382  eor r10,r10,#0x20000000 ;@ Invert carry
26383  str r10,[r7,#0x4c] ;@ Save X bit
26384  mov r1,r1,asr #16
26385
26386;@ EaWrite: Write r1 into '(a0)+' (address in r11):
26387  uxth r1,r1 ;@ zero extend
26388  bic r0,r11,#0xff000000
26389  bl m68k_write16 ;@ Call write16(r0,r1) handler
26390
26391  ldr r5,[r7,#0x5c] ;@ Load Cycles
26392  ldrh r8,[r4],#2 ;@ Fetch next opcode
26393  subs r5,r5,#12 ;@ Subtract cycles
26394  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26395  b CycloneEnd
26396
26397;@ ---------- [4460] neg.w -(a0) uses Op4460 ----------
26398Op4460:
26399  str r4,[r7,#0x50] ;@ Save prev PC + 2
26400  str r5,[r7,#0x5c] ;@ Save Cycles
26401
26402;@ EaCalc : Get '-(a0)' into r11:
26403  and r2,r8,#0x000f
26404  orr r2,r2,#0x8 ;@ A0-7
26405  ldr r11,[r7,r2,lsl #2]
26406  sub r11,r11,#2 ;@ Pre-decrement An
26407  str r11,[r7,r2,lsl #2]
26408;@ EaRead : Read '-(a0)' (address in r11) into r0:
26409  str r4,[r7,#0x40] ;@ Save PC
26410  bic r0,r11,#0xff000000
26411  bl m68k_read16 ;@ Call read16(r0) handler
26412
26413;@ Neg:
26414  mov r0,r0,asl #16
26415  rsbs r1,r0,#0
26416  mrs r10,cpsr ;@ r10=flags
26417  eor r10,r10,#0x20000000 ;@ Invert carry
26418  str r10,[r7,#0x4c] ;@ Save X bit
26419  mov r1,r1,asr #16
26420
26421;@ EaWrite: Write r1 into '-(a0)' (address in r11):
26422  uxth r1,r1 ;@ zero extend
26423  bic r0,r11,#0xff000000
26424  bl m68k_write16 ;@ Call write16(r0,r1) handler
26425
26426  ldr r5,[r7,#0x5c] ;@ Load Cycles
26427  ldrh r8,[r4],#2 ;@ Fetch next opcode
26428  subs r5,r5,#14 ;@ Subtract cycles
26429  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26430  b CycloneEnd
26431
26432;@ ---------- [4468] neg.w ($3333,a0) uses Op4468 ----------
26433Op4468:
26434  str r4,[r7,#0x50] ;@ Save prev PC + 2
26435  str r5,[r7,#0x5c] ;@ Save Cycles
26436
26437;@ EaCalc : Get '($3333,a0)' into r11:
26438  ldrsh r0,[r4],#2 ;@ Fetch offset
26439  and r2,r8,#0x000f
26440  ldr r2,[r7,r2,lsl #2]
26441  add r11,r0,r2 ;@ Add on offset
26442;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
26443  str r4,[r7,#0x40] ;@ Save PC
26444  bic r0,r11,#0xff000000
26445  bl m68k_read16 ;@ Call read16(r0) handler
26446
26447;@ Neg:
26448  mov r0,r0,asl #16
26449  rsbs r1,r0,#0
26450  mrs r10,cpsr ;@ r10=flags
26451  eor r10,r10,#0x20000000 ;@ Invert carry
26452  str r10,[r7,#0x4c] ;@ Save X bit
26453  mov r1,r1,asr #16
26454
26455;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
26456  uxth r1,r1 ;@ zero extend
26457  bic r0,r11,#0xff000000
26458  bl m68k_write16 ;@ Call write16(r0,r1) handler
26459
26460  ldr r5,[r7,#0x5c] ;@ Load Cycles
26461  ldrh r8,[r4],#2 ;@ Fetch next opcode
26462  subs r5,r5,#16 ;@ Subtract cycles
26463  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26464  b CycloneEnd
26465
26466;@ ---------- [4470] neg.w ($33,a0,d3.w*2) uses Op4470 ----------
26467Op4470:
26468  str r4,[r7,#0x50] ;@ Save prev PC + 2
26469  str r5,[r7,#0x5c] ;@ Save Cycles
26470
26471;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
26472;@ Get extension word into r3:
26473  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
26474  mov r2,r3,lsr #10
26475  tst r3,#0x0800 ;@ Is Rn Word or Long
26476  and r2,r2,#0x3c ;@ r2=Index of Rn
26477  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
26478  ldrne   r2,[r7,r2] ;@ r2=Rn.l
26479  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
26480  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
26481  and r2,r8,#0x000f
26482  orr r2,r2,#0x8 ;@ A0-7
26483  ldr r2,[r7,r2,lsl #2]
26484  add r11,r2,r3 ;@ r11=Disp+An+Rn
26485;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
26486  str r4,[r7,#0x40] ;@ Save PC
26487  bic r0,r11,#0xff000000
26488  bl m68k_read16 ;@ Call read16(r0) handler
26489
26490;@ Neg:
26491  mov r0,r0,asl #16
26492  rsbs r1,r0,#0
26493  mrs r10,cpsr ;@ r10=flags
26494  eor r10,r10,#0x20000000 ;@ Invert carry
26495  str r10,[r7,#0x4c] ;@ Save X bit
26496  mov r1,r1,asr #16
26497
26498;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
26499  uxth r1,r1 ;@ zero extend
26500  bic r0,r11,#0xff000000
26501  bl m68k_write16 ;@ Call write16(r0,r1) handler
26502
26503  ldr r5,[r7,#0x5c] ;@ Load Cycles
26504  ldrh r8,[r4],#2 ;@ Fetch next opcode
26505  subs r5,r5,#18 ;@ Subtract cycles
26506  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26507  b CycloneEnd
26508
26509;@ ---------- [4478] neg.w $3333.w uses Op4478 ----------
26510Op4478:
26511  str r4,[r7,#0x50] ;@ Save prev PC + 2
26512  str r5,[r7,#0x5c] ;@ Save Cycles
26513
26514;@ EaCalc : Get '$3333.w' into r11:
26515  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
26516;@ EaRead : Read '$3333.w' (address in r11) into r0:
26517  str r4,[r7,#0x40] ;@ Save PC
26518  bic r0,r11,#0xff000000
26519  bl m68k_read16 ;@ Call read16(r0) handler
26520
26521;@ Neg:
26522  mov r0,r0,asl #16
26523  rsbs r1,r0,#0
26524  mrs r10,cpsr ;@ r10=flags
26525  eor r10,r10,#0x20000000 ;@ Invert carry
26526  str r10,[r7,#0x4c] ;@ Save X bit
26527  mov r1,r1,asr #16
26528
26529;@ EaWrite: Write r1 into '$3333.w' (address in r11):
26530  uxth r1,r1 ;@ zero extend
26531  bic r0,r11,#0xff000000
26532  bl m68k_write16 ;@ Call write16(r0,r1) handler
26533
26534  ldr r5,[r7,#0x5c] ;@ Load Cycles
26535  ldrh r8,[r4],#2 ;@ Fetch next opcode
26536  subs r5,r5,#16 ;@ Subtract cycles
26537  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26538  b CycloneEnd
26539
26540;@ ---------- [4479] neg.w $33333333.l uses Op4479 ----------
26541Op4479:
26542  str r4,[r7,#0x50] ;@ Save prev PC + 2
26543  str r5,[r7,#0x5c] ;@ Save Cycles
26544
26545;@ EaCalc : Get '$33333333.l' into r11:
26546  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
26547  ldrh r0,[r4],#2
26548  orr r11,r0,r2,lsl #16
26549;@ EaRead : Read '$33333333.l' (address in r11) into r0:
26550  str r4,[r7,#0x40] ;@ Save PC
26551  bic r0,r11,#0xff000000
26552  bl m68k_read16 ;@ Call read16(r0) handler
26553
26554;@ Neg:
26555  mov r0,r0,asl #16
26556  rsbs r1,r0,#0
26557  mrs r10,cpsr ;@ r10=flags
26558  eor r10,r10,#0x20000000 ;@ Invert carry
26559  str r10,[r7,#0x4c] ;@ Save X bit
26560  mov r1,r1,asr #16
26561
26562;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
26563  uxth r1,r1 ;@ zero extend
26564  bic r0,r11,#0xff000000
26565  bl m68k_write16 ;@ Call write16(r0,r1) handler
26566
26567  ldr r5,[r7,#0x5c] ;@ Load Cycles
26568  ldrh r8,[r4],#2 ;@ Fetch next opcode
26569  subs r5,r5,#20 ;@ Subtract cycles
26570  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26571  b CycloneEnd
26572
26573;@ ---------- [4480] neg.l d0 uses Op4480 ----------
26574Op4480:
26575;@ EaCalc : Get register index into r11:
26576  and r11,r8,#0x000f
26577;@ EaRead : Read register[r11] into r0:
26578  ldr r0,[r7,r11,lsl #2]
26579
26580;@ Neg:
26581  rsbs r1,r0,#0
26582  mrs r10,cpsr ;@ r10=flags
26583  eor r10,r10,#0x20000000 ;@ Invert carry
26584  str r10,[r7,#0x4c] ;@ Save X bit
26585
26586;@ EaWrite: r1 into register[r11]:
26587  str r1,[r7,r11,lsl #2]
26588
26589  ldrh r8,[r4],#2 ;@ Fetch next opcode
26590  subs r5,r5,#6 ;@ Subtract cycles
26591  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26592  b CycloneEnd
26593
26594;@ ---------- [4490] neg.l (a0) uses Op4490 ----------
26595Op4490:
26596  str r4,[r7,#0x50] ;@ Save prev PC + 2
26597  str r5,[r7,#0x5c] ;@ Save Cycles
26598
26599;@ EaCalc : Get '(a0)' into r11:
26600  and r2,r8,#0x000f
26601  orr r2,r2,#0x8 ;@ A0-7
26602  ldr r11,[r7,r2,lsl #2]
26603;@ EaRead : Read '(a0)' (address in r11) into r0:
26604  str r4,[r7,#0x40] ;@ Save PC
26605  bic r0,r11,#0xff000000
26606  bl m68k_read32 ;@ Call read32(r0) handler
26607
26608;@ Neg:
26609  rsbs r1,r0,#0
26610  mrs r10,cpsr ;@ r10=flags
26611  eor r10,r10,#0x20000000 ;@ Invert carry
26612  str r10,[r7,#0x4c] ;@ Save X bit
26613
26614;@ EaWrite: Write r1 into '(a0)' (address in r11):
26615  bic r0,r11,#0xff000000
26616  bl m68k_write32 ;@ Call write32(r0,r1) handler
26617
26618  ldr r5,[r7,#0x5c] ;@ Load Cycles
26619  ldrh r8,[r4],#2 ;@ Fetch next opcode
26620  subs r5,r5,#20 ;@ Subtract cycles
26621  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26622  b CycloneEnd
26623
26624;@ ---------- [4498] neg.l (a0)+ uses Op4498 ----------
26625Op4498:
26626  str r4,[r7,#0x50] ;@ Save prev PC + 2
26627  str r5,[r7,#0x5c] ;@ Save Cycles
26628
26629;@ EaCalc : Get '(a0)+' into r11:
26630  and r2,r8,#0x000f
26631  ldr r11,[r7,r2,lsl #2]
26632  add r3,r11,#4 ;@ Post-increment An
26633  str r3,[r7,r2,lsl #2]
26634;@ EaRead : Read '(a0)+' (address in r11) into r0:
26635  str r4,[r7,#0x40] ;@ Save PC
26636  bic r0,r11,#0xff000000
26637  bl m68k_read32 ;@ Call read32(r0) handler
26638
26639;@ Neg:
26640  rsbs r1,r0,#0
26641  mrs r10,cpsr ;@ r10=flags
26642  eor r10,r10,#0x20000000 ;@ Invert carry
26643  str r10,[r7,#0x4c] ;@ Save X bit
26644
26645;@ EaWrite: Write r1 into '(a0)+' (address in r11):
26646  bic r0,r11,#0xff000000
26647  bl m68k_write32 ;@ Call write32(r0,r1) handler
26648
26649  ldr r5,[r7,#0x5c] ;@ Load Cycles
26650  ldrh r8,[r4],#2 ;@ Fetch next opcode
26651  subs r5,r5,#20 ;@ Subtract cycles
26652  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26653  b CycloneEnd
26654
26655;@ ---------- [44a0] neg.l -(a0) uses Op44a0 ----------
26656Op44a0:
26657  str r4,[r7,#0x50] ;@ Save prev PC + 2
26658  str r5,[r7,#0x5c] ;@ Save Cycles
26659
26660;@ EaCalc : Get '-(a0)' into r11:
26661  and r2,r8,#0x000f
26662  orr r2,r2,#0x8 ;@ A0-7
26663  ldr r11,[r7,r2,lsl #2]
26664  sub r11,r11,#4 ;@ Pre-decrement An
26665  str r11,[r7,r2,lsl #2]
26666;@ EaRead : Read '-(a0)' (address in r11) into r0:
26667  str r4,[r7,#0x40] ;@ Save PC
26668  bic r0,r11,#0xff000000
26669  bl m68k_read32 ;@ Call read32(r0) handler
26670
26671;@ Neg:
26672  rsbs r1,r0,#0
26673  mrs r10,cpsr ;@ r10=flags
26674  eor r10,r10,#0x20000000 ;@ Invert carry
26675  str r10,[r7,#0x4c] ;@ Save X bit
26676
26677;@ EaWrite: Write r1 into '-(a0)' (address in r11):
26678  bic r0,r11,#0xff000000
26679  bl m68k_write32 ;@ Call write32(r0,r1) handler
26680
26681  ldr r5,[r7,#0x5c] ;@ Load Cycles
26682  ldrh r8,[r4],#2 ;@ Fetch next opcode
26683  subs r5,r5,#22 ;@ Subtract cycles
26684  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26685  b CycloneEnd
26686
26687;@ ---------- [44a8] neg.l ($3333,a0) uses Op44a8 ----------
26688Op44a8:
26689  str r4,[r7,#0x50] ;@ Save prev PC + 2
26690  str r5,[r7,#0x5c] ;@ Save Cycles
26691
26692;@ EaCalc : Get '($3333,a0)' into r11:
26693  ldrsh r0,[r4],#2 ;@ Fetch offset
26694  and r2,r8,#0x000f
26695  ldr r2,[r7,r2,lsl #2]
26696  add r11,r0,r2 ;@ Add on offset
26697;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
26698  str r4,[r7,#0x40] ;@ Save PC
26699  bic r0,r11,#0xff000000
26700  bl m68k_read32 ;@ Call read32(r0) handler
26701
26702;@ Neg:
26703  rsbs r1,r0,#0
26704  mrs r10,cpsr ;@ r10=flags
26705  eor r10,r10,#0x20000000 ;@ Invert carry
26706  str r10,[r7,#0x4c] ;@ Save X bit
26707
26708;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
26709  bic r0,r11,#0xff000000
26710  bl m68k_write32 ;@ Call write32(r0,r1) handler
26711
26712  ldr r5,[r7,#0x5c] ;@ Load Cycles
26713  ldrh r8,[r4],#2 ;@ Fetch next opcode
26714  subs r5,r5,#24 ;@ Subtract cycles
26715  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26716  b CycloneEnd
26717
26718;@ ---------- [44b0] neg.l ($33,a0,d3.w*2) uses Op44b0 ----------
26719Op44b0:
26720  str r4,[r7,#0x50] ;@ Save prev PC + 2
26721  str r5,[r7,#0x5c] ;@ Save Cycles
26722
26723;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
26724;@ Get extension word into r3:
26725  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
26726  mov r2,r3,lsr #10
26727  tst r3,#0x0800 ;@ Is Rn Word or Long
26728  and r2,r2,#0x3c ;@ r2=Index of Rn
26729  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
26730  ldrne   r2,[r7,r2] ;@ r2=Rn.l
26731  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
26732  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
26733  and r2,r8,#0x000f
26734  orr r2,r2,#0x8 ;@ A0-7
26735  ldr r2,[r7,r2,lsl #2]
26736  add r11,r2,r3 ;@ r11=Disp+An+Rn
26737;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
26738  str r4,[r7,#0x40] ;@ Save PC
26739  bic r0,r11,#0xff000000
26740  bl m68k_read32 ;@ Call read32(r0) handler
26741
26742;@ Neg:
26743  rsbs r1,r0,#0
26744  mrs r10,cpsr ;@ r10=flags
26745  eor r10,r10,#0x20000000 ;@ Invert carry
26746  str r10,[r7,#0x4c] ;@ Save X bit
26747
26748;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
26749  bic r0,r11,#0xff000000
26750  bl m68k_write32 ;@ Call write32(r0,r1) handler
26751
26752  ldr r5,[r7,#0x5c] ;@ Load Cycles
26753  ldrh r8,[r4],#2 ;@ Fetch next opcode
26754  subs r5,r5,#26 ;@ Subtract cycles
26755  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26756  b CycloneEnd
26757
26758;@ ---------- [44b8] neg.l $3333.w uses Op44b8 ----------
26759Op44b8:
26760  str r4,[r7,#0x50] ;@ Save prev PC + 2
26761  str r5,[r7,#0x5c] ;@ Save Cycles
26762
26763;@ EaCalc : Get '$3333.w' into r11:
26764  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
26765;@ EaRead : Read '$3333.w' (address in r11) into r0:
26766  str r4,[r7,#0x40] ;@ Save PC
26767  bic r0,r11,#0xff000000
26768  bl m68k_read32 ;@ Call read32(r0) handler
26769
26770;@ Neg:
26771  rsbs r1,r0,#0
26772  mrs r10,cpsr ;@ r10=flags
26773  eor r10,r10,#0x20000000 ;@ Invert carry
26774  str r10,[r7,#0x4c] ;@ Save X bit
26775
26776;@ EaWrite: Write r1 into '$3333.w' (address in r11):
26777  bic r0,r11,#0xff000000
26778  bl m68k_write32 ;@ Call write32(r0,r1) handler
26779
26780  ldr r5,[r7,#0x5c] ;@ Load Cycles
26781  ldrh r8,[r4],#2 ;@ Fetch next opcode
26782  subs r5,r5,#24 ;@ Subtract cycles
26783  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26784  b CycloneEnd
26785
26786;@ ---------- [44b9] neg.l $33333333.l uses Op44b9 ----------
26787Op44b9:
26788  str r4,[r7,#0x50] ;@ Save prev PC + 2
26789  str r5,[r7,#0x5c] ;@ Save Cycles
26790
26791;@ EaCalc : Get '$33333333.l' into r11:
26792  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
26793  ldrh r0,[r4],#2
26794  orr r11,r0,r2,lsl #16
26795;@ EaRead : Read '$33333333.l' (address in r11) into r0:
26796  str r4,[r7,#0x40] ;@ Save PC
26797  bic r0,r11,#0xff000000
26798  bl m68k_read32 ;@ Call read32(r0) handler
26799
26800;@ Neg:
26801  rsbs r1,r0,#0
26802  mrs r10,cpsr ;@ r10=flags
26803  eor r10,r10,#0x20000000 ;@ Invert carry
26804  str r10,[r7,#0x4c] ;@ Save X bit
26805
26806;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
26807  bic r0,r11,#0xff000000
26808  bl m68k_write32 ;@ Call write32(r0,r1) handler
26809
26810  ldr r5,[r7,#0x5c] ;@ Load Cycles
26811  ldrh r8,[r4],#2 ;@ Fetch next opcode
26812  subs r5,r5,#28 ;@ Subtract cycles
26813  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26814  b CycloneEnd
26815
26816;@ ---------- [44c0] move d0, ccr uses Op44c0 ----------
26817Op44c0:
26818;@ EaCalc : Get register index into r0:
26819  and r0,r8,#0x000f
26820;@ EaRead : Read register[r0] into r0:
26821  ldr r0,[r7,r0,lsl #2]
26822
26823  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
26824  mov r2,r0,lsl #25
26825  tst r1,#1           ;@ 1 if C!=V
26826  eorne r0,r0,#3      ;@ ___XNZCV
26827  str r2,[r7,#0x4c]   ;@ Store X bit
26828  mov r10,r0,lsl #28  ;@ r10=NZCV...
26829
26830  ldrh r8,[r4],#2 ;@ Fetch next opcode
26831  subs r5,r5,#12 ;@ Subtract cycles
26832  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26833  b CycloneEnd
26834
26835;@ ---------- [44d0] move (a0), ccr uses Op44d0 ----------
26836Op44d0:
26837  str r4,[r7,#0x50] ;@ Save prev PC + 2
26838  str r5,[r7,#0x5c] ;@ Save Cycles
26839
26840;@ EaCalc : Get '(a0)' into r0:
26841  and r2,r8,#0x000f
26842  orr r2,r2,#0x8 ;@ A0-7
26843  ldr r0,[r7,r2,lsl #2]
26844;@ EaRead : Read '(a0)' (address in r0) into r0:
26845  str r4,[r7,#0x40] ;@ Save PC
26846  bic r0,r0,#0xff000000
26847  bl m68k_read16 ;@ Call read16(r0) handler
26848
26849  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
26850  mov r2,r0,lsl #25
26851  tst r1,#1           ;@ 1 if C!=V
26852  eorne r0,r0,#3      ;@ ___XNZCV
26853  str r2,[r7,#0x4c]   ;@ Store X bit
26854  mov r10,r0,lsl #28  ;@ r10=NZCV...
26855
26856  ldr r5,[r7,#0x5c] ;@ Load Cycles
26857  ldrh r8,[r4],#2 ;@ Fetch next opcode
26858  subs r5,r5,#16 ;@ Subtract cycles
26859  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26860  b CycloneEnd
26861
26862;@ ---------- [44d8] move (a0)+, ccr uses Op44d8 ----------
26863Op44d8:
26864  str r4,[r7,#0x50] ;@ Save prev PC + 2
26865  str r5,[r7,#0x5c] ;@ Save Cycles
26866
26867;@ EaCalc : Get '(a0)+' into r0:
26868  and r2,r8,#0x000f
26869  ldr r0,[r7,r2,lsl #2]
26870  add r3,r0,#2 ;@ Post-increment An
26871  str r3,[r7,r2,lsl #2]
26872;@ EaRead : Read '(a0)+' (address in r0) into r0:
26873  str r4,[r7,#0x40] ;@ Save PC
26874  bic r0,r0,#0xff000000
26875  bl m68k_read16 ;@ Call read16(r0) handler
26876
26877  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
26878  mov r2,r0,lsl #25
26879  tst r1,#1           ;@ 1 if C!=V
26880  eorne r0,r0,#3      ;@ ___XNZCV
26881  str r2,[r7,#0x4c]   ;@ Store X bit
26882  mov r10,r0,lsl #28  ;@ r10=NZCV...
26883
26884  ldr r5,[r7,#0x5c] ;@ Load Cycles
26885  ldrh r8,[r4],#2 ;@ Fetch next opcode
26886  subs r5,r5,#16 ;@ Subtract cycles
26887  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26888  b CycloneEnd
26889
26890;@ ---------- [44e0] move -(a0), ccr uses Op44e0 ----------
26891Op44e0:
26892  str r4,[r7,#0x50] ;@ Save prev PC + 2
26893  str r5,[r7,#0x5c] ;@ Save Cycles
26894
26895;@ EaCalc : Get '-(a0)' into r0:
26896  and r2,r8,#0x000f
26897  orr r2,r2,#0x8 ;@ A0-7
26898  ldr r0,[r7,r2,lsl #2]
26899  sub r0,r0,#2 ;@ Pre-decrement An
26900  str r0,[r7,r2,lsl #2]
26901;@ EaRead : Read '-(a0)' (address in r0) into r0:
26902  str r4,[r7,#0x40] ;@ Save PC
26903  bic r0,r0,#0xff000000
26904  bl m68k_read16 ;@ Call read16(r0) handler
26905
26906  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
26907  mov r2,r0,lsl #25
26908  tst r1,#1           ;@ 1 if C!=V
26909  eorne r0,r0,#3      ;@ ___XNZCV
26910  str r2,[r7,#0x4c]   ;@ Store X bit
26911  mov r10,r0,lsl #28  ;@ r10=NZCV...
26912
26913  ldr r5,[r7,#0x5c] ;@ Load Cycles
26914  ldrh r8,[r4],#2 ;@ Fetch next opcode
26915  subs r5,r5,#18 ;@ Subtract cycles
26916  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26917  b CycloneEnd
26918
26919;@ ---------- [44e8] move ($3333,a0), ccr uses Op44e8 ----------
26920Op44e8:
26921  str r4,[r7,#0x50] ;@ Save prev PC + 2
26922  str r5,[r7,#0x5c] ;@ Save Cycles
26923
26924;@ EaCalc : Get '($3333,a0)' into r0:
26925  ldrsh r0,[r4],#2 ;@ Fetch offset
26926  and r2,r8,#0x000f
26927  ldr r2,[r7,r2,lsl #2]
26928  add r0,r0,r2 ;@ Add on offset
26929;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
26930  str r4,[r7,#0x40] ;@ Save PC
26931  bic r0,r0,#0xff000000
26932  bl m68k_read16 ;@ Call read16(r0) handler
26933
26934  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
26935  mov r2,r0,lsl #25
26936  tst r1,#1           ;@ 1 if C!=V
26937  eorne r0,r0,#3      ;@ ___XNZCV
26938  str r2,[r7,#0x4c]   ;@ Store X bit
26939  mov r10,r0,lsl #28  ;@ r10=NZCV...
26940
26941  ldr r5,[r7,#0x5c] ;@ Load Cycles
26942  ldrh r8,[r4],#2 ;@ Fetch next opcode
26943  subs r5,r5,#20 ;@ Subtract cycles
26944  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26945  b CycloneEnd
26946
26947;@ ---------- [44f0] move ($33,a0,d3.w*2), ccr uses Op44f0 ----------
26948Op44f0:
26949  str r4,[r7,#0x50] ;@ Save prev PC + 2
26950  str r5,[r7,#0x5c] ;@ Save Cycles
26951
26952;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
26953;@ Get extension word into r3:
26954  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
26955  mov r2,r3,lsr #10
26956  tst r3,#0x0800 ;@ Is Rn Word or Long
26957  and r2,r2,#0x3c ;@ r2=Index of Rn
26958  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
26959  ldrne   r2,[r7,r2] ;@ r2=Rn.l
26960  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
26961  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
26962  and r2,r8,#0x000f
26963  orr r2,r2,#0x8 ;@ A0-7
26964  ldr r2,[r7,r2,lsl #2]
26965  add r0,r2,r3 ;@ r0=Disp+An+Rn
26966;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
26967  str r4,[r7,#0x40] ;@ Save PC
26968  bic r0,r0,#0xff000000
26969  bl m68k_read16 ;@ Call read16(r0) handler
26970
26971  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
26972  mov r2,r0,lsl #25
26973  tst r1,#1           ;@ 1 if C!=V
26974  eorne r0,r0,#3      ;@ ___XNZCV
26975  str r2,[r7,#0x4c]   ;@ Store X bit
26976  mov r10,r0,lsl #28  ;@ r10=NZCV...
26977
26978  ldr r5,[r7,#0x5c] ;@ Load Cycles
26979  ldrh r8,[r4],#2 ;@ Fetch next opcode
26980  subs r5,r5,#22 ;@ Subtract cycles
26981  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26982  b CycloneEnd
26983
26984;@ ---------- [44f8] move $3333.w, ccr uses Op44f8 ----------
26985Op44f8:
26986  str r4,[r7,#0x50] ;@ Save prev PC + 2
26987  str r5,[r7,#0x5c] ;@ Save Cycles
26988
26989;@ EaCalc : Get '$3333.w' into r0:
26990  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
26991;@ EaRead : Read '$3333.w' (address in r0) into r0:
26992  str r4,[r7,#0x40] ;@ Save PC
26993  bic r0,r0,#0xff000000
26994  bl m68k_read16 ;@ Call read16(r0) handler
26995
26996  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
26997  mov r2,r0,lsl #25
26998  tst r1,#1           ;@ 1 if C!=V
26999  eorne r0,r0,#3      ;@ ___XNZCV
27000  str r2,[r7,#0x4c]   ;@ Store X bit
27001  mov r10,r0,lsl #28  ;@ r10=NZCV...
27002
27003  ldr r5,[r7,#0x5c] ;@ Load Cycles
27004  ldrh r8,[r4],#2 ;@ Fetch next opcode
27005  subs r5,r5,#20 ;@ Subtract cycles
27006  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27007  b CycloneEnd
27008
27009;@ ---------- [44f9] move $33333333.l, ccr uses Op44f9 ----------
27010Op44f9:
27011  str r4,[r7,#0x50] ;@ Save prev PC + 2
27012  str r5,[r7,#0x5c] ;@ Save Cycles
27013
27014;@ EaCalc : Get '$33333333.l' into r0:
27015  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
27016  ldrh r0,[r4],#2
27017  orr r0,r0,r2,lsl #16
27018;@ EaRead : Read '$33333333.l' (address in r0) into r0:
27019  str r4,[r7,#0x40] ;@ Save PC
27020  bic r0,r0,#0xff000000
27021  bl m68k_read16 ;@ Call read16(r0) handler
27022
27023  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
27024  mov r2,r0,lsl #25
27025  tst r1,#1           ;@ 1 if C!=V
27026  eorne r0,r0,#3      ;@ ___XNZCV
27027  str r2,[r7,#0x4c]   ;@ Store X bit
27028  mov r10,r0,lsl #28  ;@ r10=NZCV...
27029
27030  ldr r5,[r7,#0x5c] ;@ Load Cycles
27031  ldrh r8,[r4],#2 ;@ Fetch next opcode
27032  subs r5,r5,#24 ;@ Subtract cycles
27033  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27034  b CycloneEnd
27035
27036;@ ---------- [44fa] move ($3333,pc), ccr; =3335 uses Op44fa ----------
27037Op44fa:
27038  str r4,[r7,#0x50] ;@ Save prev PC + 2
27039  str r5,[r7,#0x5c] ;@ Save Cycles
27040
27041;@ EaCalc : Get '($3333,pc)' into r0:
27042  ldr r0,[r7,#0x60] ;@ Get Memory base
27043  sub r0,r4,r0 ;@ Real PC
27044  ldrsh r2,[r4],#2 ;@ Fetch extension
27045  add r0,r2,r0 ;@ ($nn,PC)
27046;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
27047  str r4,[r7,#0x40] ;@ Save PC
27048  bic r0,r0,#0xff000000
27049  bl m68k_fetch16 ;@ Call fetch16(r0) handler
27050
27051  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
27052  mov r2,r0,lsl #25
27053  tst r1,#1           ;@ 1 if C!=V
27054  eorne r0,r0,#3      ;@ ___XNZCV
27055  str r2,[r7,#0x4c]   ;@ Store X bit
27056  mov r10,r0,lsl #28  ;@ r10=NZCV...
27057
27058  ldr r5,[r7,#0x5c] ;@ Load Cycles
27059  ldrh r8,[r4],#2 ;@ Fetch next opcode
27060  subs r5,r5,#20 ;@ Subtract cycles
27061  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27062  b CycloneEnd
27063
27064;@ ---------- [44fb] move ($33,pc,d3.w*2), ccr; =35 uses Op44fb ----------
27065Op44fb:
27066  str r4,[r7,#0x50] ;@ Save prev PC + 2
27067  str r5,[r7,#0x5c] ;@ Save Cycles
27068
27069;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
27070  ldr r0,[r7,#0x60] ;@ Get Memory base
27071  ldrh r3,[r4] ;@ Get extension word
27072  sub r0,r4,r0 ;@ r0=PC
27073  add r4,r4,#2
27074  mov r2,r3,lsr #10
27075  tst r3,#0x0800 ;@ Is Rn Word or Long
27076  and r2,r2,#0x3c ;@ r2=Index of Rn
27077  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
27078  ldrne   r2,[r7,r2] ;@ r2=Rn.l
27079  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
27080  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
27081  add r0,r2,r0 ;@ r0=Disp+PC+Rn
27082;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
27083  str r4,[r7,#0x40] ;@ Save PC
27084  bic r0,r0,#0xff000000
27085  bl m68k_fetch16 ;@ Call fetch16(r0) handler
27086
27087  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
27088  mov r2,r0,lsl #25
27089  tst r1,#1           ;@ 1 if C!=V
27090  eorne r0,r0,#3      ;@ ___XNZCV
27091  str r2,[r7,#0x4c]   ;@ Store X bit
27092  mov r10,r0,lsl #28  ;@ r10=NZCV...
27093
27094  ldr r5,[r7,#0x5c] ;@ Load Cycles
27095  ldrh r8,[r4],#2 ;@ Fetch next opcode
27096  subs r5,r5,#22 ;@ Subtract cycles
27097  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27098  b CycloneEnd
27099
27100;@ ---------- [44fc] move #$3333, ccr uses Op44fc ----------
27101Op44fc:
27102;@ EaCalc : Get '#$3333' into r0:
27103  ldrsh r0,[r4],#2 ;@ Fetch immediate value
27104;@ EaRead : Read '#$3333' (address in r0) into r0:
27105
27106  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
27107  mov r2,r0,lsl #25
27108  tst r1,#1           ;@ 1 if C!=V
27109  eorne r0,r0,#3      ;@ ___XNZCV
27110  str r2,[r7,#0x4c]   ;@ Store X bit
27111  mov r10,r0,lsl #28  ;@ r10=NZCV...
27112
27113  ldrh r8,[r4],#2 ;@ Fetch next opcode
27114  subs r5,r5,#16 ;@ Subtract cycles
27115  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27116  b CycloneEnd
27117
27118;@ ---------- [4600] not.b d0 uses Op4600 ----------
27119Op4600:
27120;@ EaCalc : Get register index into r11:
27121  and r11,r8,#0x000f
27122;@ EaRead : Read register[r11] into r0:
27123  ldr r0,[r7,r11,lsl #2]
27124
27125;@ Not:
27126  mov r0,r0,asl #24
27127  mvns r1,r0,asr #24
27128  and r10,r1,#0x80000000 ;@ r10=N_flag
27129  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27130
27131;@ EaWrite: r1 into register[r11]:
27132  strb r1,[r7,r11,lsl #2]
27133
27134  ldrh r8,[r4],#2 ;@ Fetch next opcode
27135  subs r5,r5,#4 ;@ Subtract cycles
27136  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27137  b CycloneEnd
27138
27139;@ ---------- [4610] not.b (a0) uses Op4610 ----------
27140Op4610:
27141  str r4,[r7,#0x50] ;@ Save prev PC + 2
27142  str r5,[r7,#0x5c] ;@ Save Cycles
27143
27144;@ EaCalc : Get '(a0)' into r11:
27145  and r2,r8,#0x000f
27146  orr r2,r2,#0x8 ;@ A0-7
27147  ldr r11,[r7,r2,lsl #2]
27148;@ EaRead : Read '(a0)' (address in r11) into r0:
27149  str r4,[r7,#0x40] ;@ Save PC
27150  bic r0,r11,#0xff000000
27151  bl m68k_read8 ;@ Call read8(r0) handler
27152
27153;@ Not:
27154  mov r0,r0,asl #24
27155  mvns r1,r0,asr #24
27156  and r10,r1,#0x80000000 ;@ r10=N_flag
27157  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27158
27159;@ EaWrite: Write r1 into '(a0)' (address in r11):
27160  and r1,r1,#0xff
27161  bic r0,r11,#0xff000000
27162  bl m68k_write8 ;@ Call write8(r0,r1) handler
27163
27164  ldr r5,[r7,#0x5c] ;@ Load Cycles
27165  ldrh r8,[r4],#2 ;@ Fetch next opcode
27166  subs r5,r5,#12 ;@ Subtract cycles
27167  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27168  b CycloneEnd
27169
27170;@ ---------- [4618] not.b (a0)+ uses Op4618 ----------
27171Op4618:
27172  str r4,[r7,#0x50] ;@ Save prev PC + 2
27173  str r5,[r7,#0x5c] ;@ Save Cycles
27174
27175;@ EaCalc : Get '(a0)+' into r11:
27176  and r2,r8,#0x000f
27177  ldr r11,[r7,r2,lsl #2]
27178  add r3,r11,#1 ;@ Post-increment An
27179  str r3,[r7,r2,lsl #2]
27180;@ EaRead : Read '(a0)+' (address in r11) into r0:
27181  str r4,[r7,#0x40] ;@ Save PC
27182  bic r0,r11,#0xff000000
27183  bl m68k_read8 ;@ Call read8(r0) handler
27184
27185;@ Not:
27186  mov r0,r0,asl #24
27187  mvns r1,r0,asr #24
27188  and r10,r1,#0x80000000 ;@ r10=N_flag
27189  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27190
27191;@ EaWrite: Write r1 into '(a0)+' (address in r11):
27192  and r1,r1,#0xff
27193  bic r0,r11,#0xff000000
27194  bl m68k_write8 ;@ Call write8(r0,r1) handler
27195
27196  ldr r5,[r7,#0x5c] ;@ Load Cycles
27197  ldrh r8,[r4],#2 ;@ Fetch next opcode
27198  subs r5,r5,#12 ;@ Subtract cycles
27199  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27200  b CycloneEnd
27201
27202;@ ---------- [461f] not.b (a7)+ uses Op461f ----------
27203Op461f:
27204  str r4,[r7,#0x50] ;@ Save prev PC + 2
27205  str r5,[r7,#0x5c] ;@ Save Cycles
27206
27207;@ EaCalc : Get '(a7)+' into r11:
27208  ldr r11,[r7,#0x3c] ;@ A7
27209  add r3,r11,#2 ;@ Post-increment An
27210  str r3,[r7,#0x3c] ;@ A7
27211;@ EaRead : Read '(a7)+' (address in r11) into r0:
27212  str r4,[r7,#0x40] ;@ Save PC
27213  bic r0,r11,#0xff000000
27214  bl m68k_read8 ;@ Call read8(r0) handler
27215
27216;@ Not:
27217  mov r0,r0,asl #24
27218  mvns r1,r0,asr #24
27219  and r10,r1,#0x80000000 ;@ r10=N_flag
27220  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27221
27222;@ EaWrite: Write r1 into '(a7)+' (address in r11):
27223  and r1,r1,#0xff
27224  bic r0,r11,#0xff000000
27225  bl m68k_write8 ;@ Call write8(r0,r1) handler
27226
27227  ldr r5,[r7,#0x5c] ;@ Load Cycles
27228  ldrh r8,[r4],#2 ;@ Fetch next opcode
27229  subs r5,r5,#12 ;@ Subtract cycles
27230  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27231  b CycloneEnd
27232
27233;@ ---------- [4620] not.b -(a0) uses Op4620 ----------
27234Op4620:
27235  str r4,[r7,#0x50] ;@ Save prev PC + 2
27236  str r5,[r7,#0x5c] ;@ Save Cycles
27237
27238;@ EaCalc : Get '-(a0)' into r11:
27239  and r2,r8,#0x000f
27240  orr r2,r2,#0x8 ;@ A0-7
27241  ldr r11,[r7,r2,lsl #2]
27242  sub r11,r11,#1 ;@ Pre-decrement An
27243  str r11,[r7,r2,lsl #2]
27244;@ EaRead : Read '-(a0)' (address in r11) into r0:
27245  str r4,[r7,#0x40] ;@ Save PC
27246  bic r0,r11,#0xff000000
27247  bl m68k_read8 ;@ Call read8(r0) handler
27248
27249;@ Not:
27250  mov r0,r0,asl #24
27251  mvns r1,r0,asr #24
27252  and r10,r1,#0x80000000 ;@ r10=N_flag
27253  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27254
27255;@ EaWrite: Write r1 into '-(a0)' (address in r11):
27256  and r1,r1,#0xff
27257  bic r0,r11,#0xff000000
27258  bl m68k_write8 ;@ Call write8(r0,r1) handler
27259
27260  ldr r5,[r7,#0x5c] ;@ Load Cycles
27261  ldrh r8,[r4],#2 ;@ Fetch next opcode
27262  subs r5,r5,#14 ;@ Subtract cycles
27263  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27264  b CycloneEnd
27265
27266;@ ---------- [4627] not.b -(a7) uses Op4627 ----------
27267Op4627:
27268  str r4,[r7,#0x50] ;@ Save prev PC + 2
27269  str r5,[r7,#0x5c] ;@ Save Cycles
27270
27271;@ EaCalc : Get '-(a7)' into r11:
27272  ldr r11,[r7,#0x3c] ;@ A7
27273  sub r11,r11,#2 ;@ Pre-decrement An
27274  str r11,[r7,#0x3c] ;@ A7
27275;@ EaRead : Read '-(a7)' (address in r11) into r0:
27276  str r4,[r7,#0x40] ;@ Save PC
27277  bic r0,r11,#0xff000000
27278  bl m68k_read8 ;@ Call read8(r0) handler
27279
27280;@ Not:
27281  mov r0,r0,asl #24
27282  mvns r1,r0,asr #24
27283  and r10,r1,#0x80000000 ;@ r10=N_flag
27284  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27285
27286;@ EaWrite: Write r1 into '-(a7)' (address in r11):
27287  and r1,r1,#0xff
27288  bic r0,r11,#0xff000000
27289  bl m68k_write8 ;@ Call write8(r0,r1) handler
27290
27291  ldr r5,[r7,#0x5c] ;@ Load Cycles
27292  ldrh r8,[r4],#2 ;@ Fetch next opcode
27293  subs r5,r5,#14 ;@ Subtract cycles
27294  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27295  b CycloneEnd
27296
27297;@ ---------- [4628] not.b ($3333,a0) uses Op4628 ----------
27298Op4628:
27299  str r4,[r7,#0x50] ;@ Save prev PC + 2
27300  str r5,[r7,#0x5c] ;@ Save Cycles
27301
27302;@ EaCalc : Get '($3333,a0)' into r11:
27303  ldrsh r0,[r4],#2 ;@ Fetch offset
27304  and r2,r8,#0x000f
27305  ldr r2,[r7,r2,lsl #2]
27306  add r11,r0,r2 ;@ Add on offset
27307;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
27308  str r4,[r7,#0x40] ;@ Save PC
27309  bic r0,r11,#0xff000000
27310  bl m68k_read8 ;@ Call read8(r0) handler
27311
27312;@ Not:
27313  mov r0,r0,asl #24
27314  mvns r1,r0,asr #24
27315  and r10,r1,#0x80000000 ;@ r10=N_flag
27316  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27317
27318;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
27319  and r1,r1,#0xff
27320  bic r0,r11,#0xff000000
27321  bl m68k_write8 ;@ Call write8(r0,r1) handler
27322
27323  ldr r5,[r7,#0x5c] ;@ Load Cycles
27324  ldrh r8,[r4],#2 ;@ Fetch next opcode
27325  subs r5,r5,#16 ;@ Subtract cycles
27326  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27327  b CycloneEnd
27328
27329;@ ---------- [4630] not.b ($33,a0,d3.w*2) uses Op4630 ----------
27330Op4630:
27331  str r4,[r7,#0x50] ;@ Save prev PC + 2
27332  str r5,[r7,#0x5c] ;@ Save Cycles
27333
27334;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
27335;@ Get extension word into r3:
27336  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
27337  mov r2,r3,lsr #10
27338  tst r3,#0x0800 ;@ Is Rn Word or Long
27339  and r2,r2,#0x3c ;@ r2=Index of Rn
27340  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
27341  ldrne   r2,[r7,r2] ;@ r2=Rn.l
27342  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
27343  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
27344  and r2,r8,#0x000f
27345  orr r2,r2,#0x8 ;@ A0-7
27346  ldr r2,[r7,r2,lsl #2]
27347  add r11,r2,r3 ;@ r11=Disp+An+Rn
27348;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
27349  str r4,[r7,#0x40] ;@ Save PC
27350  bic r0,r11,#0xff000000
27351  bl m68k_read8 ;@ Call read8(r0) handler
27352
27353;@ Not:
27354  mov r0,r0,asl #24
27355  mvns r1,r0,asr #24
27356  and r10,r1,#0x80000000 ;@ r10=N_flag
27357  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27358
27359;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
27360  and r1,r1,#0xff
27361  bic r0,r11,#0xff000000
27362  bl m68k_write8 ;@ Call write8(r0,r1) handler
27363
27364  ldr r5,[r7,#0x5c] ;@ Load Cycles
27365  ldrh r8,[r4],#2 ;@ Fetch next opcode
27366  subs r5,r5,#18 ;@ Subtract cycles
27367  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27368  b CycloneEnd
27369
27370;@ ---------- [4638] not.b $3333.w uses Op4638 ----------
27371Op4638:
27372  str r4,[r7,#0x50] ;@ Save prev PC + 2
27373  str r5,[r7,#0x5c] ;@ Save Cycles
27374
27375;@ EaCalc : Get '$3333.w' into r11:
27376  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
27377;@ EaRead : Read '$3333.w' (address in r11) into r0:
27378  str r4,[r7,#0x40] ;@ Save PC
27379  bic r0,r11,#0xff000000
27380  bl m68k_read8 ;@ Call read8(r0) handler
27381
27382;@ Not:
27383  mov r0,r0,asl #24
27384  mvns r1,r0,asr #24
27385  and r10,r1,#0x80000000 ;@ r10=N_flag
27386  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27387
27388;@ EaWrite: Write r1 into '$3333.w' (address in r11):
27389  and r1,r1,#0xff
27390  bic r0,r11,#0xff000000
27391  bl m68k_write8 ;@ Call write8(r0,r1) handler
27392
27393  ldr r5,[r7,#0x5c] ;@ Load Cycles
27394  ldrh r8,[r4],#2 ;@ Fetch next opcode
27395  subs r5,r5,#16 ;@ Subtract cycles
27396  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27397  b CycloneEnd
27398
27399;@ ---------- [4639] not.b $33333333.l uses Op4639 ----------
27400Op4639:
27401  str r4,[r7,#0x50] ;@ Save prev PC + 2
27402  str r5,[r7,#0x5c] ;@ Save Cycles
27403
27404;@ EaCalc : Get '$33333333.l' into r11:
27405  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
27406  ldrh r0,[r4],#2
27407  orr r11,r0,r2,lsl #16
27408;@ EaRead : Read '$33333333.l' (address in r11) into r0:
27409  str r4,[r7,#0x40] ;@ Save PC
27410  bic r0,r11,#0xff000000
27411  bl m68k_read8 ;@ Call read8(r0) handler
27412
27413;@ Not:
27414  mov r0,r0,asl #24
27415  mvns r1,r0,asr #24
27416  and r10,r1,#0x80000000 ;@ r10=N_flag
27417  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27418
27419;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
27420  and r1,r1,#0xff
27421  bic r0,r11,#0xff000000
27422  bl m68k_write8 ;@ Call write8(r0,r1) handler
27423
27424  ldr r5,[r7,#0x5c] ;@ Load Cycles
27425  ldrh r8,[r4],#2 ;@ Fetch next opcode
27426  subs r5,r5,#20 ;@ Subtract cycles
27427  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27428  b CycloneEnd
27429
27430;@ ---------- [4640] not.w d0 uses Op4640 ----------
27431Op4640:
27432;@ EaCalc : Get register index into r11:
27433  and r11,r8,#0x000f
27434  mov r11,r11,lsl #2
27435;@ EaRead : Read register[r11] into r0:
27436  ldr r0,[r7,r11]
27437
27438;@ Not:
27439  mov r0,r0,asl #16
27440  mvns r1,r0,asr #16
27441  and r10,r1,#0x80000000 ;@ r10=N_flag
27442  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27443
27444;@ EaWrite: r1 into register[r11]:
27445  strh r1,[r7,r11]
27446
27447  ldrh r8,[r4],#2 ;@ Fetch next opcode
27448  subs r5,r5,#4 ;@ Subtract cycles
27449  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27450  b CycloneEnd
27451
27452;@ ---------- [4650] not.w (a0) uses Op4650 ----------
27453Op4650:
27454  str r4,[r7,#0x50] ;@ Save prev PC + 2
27455  str r5,[r7,#0x5c] ;@ Save Cycles
27456
27457;@ EaCalc : Get '(a0)' into r11:
27458  and r2,r8,#0x000f
27459  orr r2,r2,#0x8 ;@ A0-7
27460  ldr r11,[r7,r2,lsl #2]
27461;@ EaRead : Read '(a0)' (address in r11) into r0:
27462  str r4,[r7,#0x40] ;@ Save PC
27463  bic r0,r11,#0xff000000
27464  bl m68k_read16 ;@ Call read16(r0) handler
27465
27466;@ Not:
27467  mov r0,r0,asl #16
27468  mvns r1,r0,asr #16
27469  and r10,r1,#0x80000000 ;@ r10=N_flag
27470  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27471
27472;@ EaWrite: Write r1 into '(a0)' (address in r11):
27473  uxth r1,r1 ;@ zero extend
27474  bic r0,r11,#0xff000000
27475  bl m68k_write16 ;@ Call write16(r0,r1) handler
27476
27477  ldr r5,[r7,#0x5c] ;@ Load Cycles
27478  ldrh r8,[r4],#2 ;@ Fetch next opcode
27479  subs r5,r5,#12 ;@ Subtract cycles
27480  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27481  b CycloneEnd
27482
27483;@ ---------- [4658] not.w (a0)+ uses Op4658 ----------
27484Op4658:
27485  str r4,[r7,#0x50] ;@ Save prev PC + 2
27486  str r5,[r7,#0x5c] ;@ Save Cycles
27487
27488;@ EaCalc : Get '(a0)+' into r11:
27489  and r2,r8,#0x000f
27490  ldr r11,[r7,r2,lsl #2]
27491  add r3,r11,#2 ;@ Post-increment An
27492  str r3,[r7,r2,lsl #2]
27493;@ EaRead : Read '(a0)+' (address in r11) into r0:
27494  str r4,[r7,#0x40] ;@ Save PC
27495  bic r0,r11,#0xff000000
27496  bl m68k_read16 ;@ Call read16(r0) handler
27497
27498;@ Not:
27499  mov r0,r0,asl #16
27500  mvns r1,r0,asr #16
27501  and r10,r1,#0x80000000 ;@ r10=N_flag
27502  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27503
27504;@ EaWrite: Write r1 into '(a0)+' (address in r11):
27505  uxth r1,r1 ;@ zero extend
27506  bic r0,r11,#0xff000000
27507  bl m68k_write16 ;@ Call write16(r0,r1) handler
27508
27509  ldr r5,[r7,#0x5c] ;@ Load Cycles
27510  ldrh r8,[r4],#2 ;@ Fetch next opcode
27511  subs r5,r5,#12 ;@ Subtract cycles
27512  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27513  b CycloneEnd
27514
27515;@ ---------- [4660] not.w -(a0) uses Op4660 ----------
27516Op4660:
27517  str r4,[r7,#0x50] ;@ Save prev PC + 2
27518  str r5,[r7,#0x5c] ;@ Save Cycles
27519
27520;@ EaCalc : Get '-(a0)' into r11:
27521  and r2,r8,#0x000f
27522  orr r2,r2,#0x8 ;@ A0-7
27523  ldr r11,[r7,r2,lsl #2]
27524  sub r11,r11,#2 ;@ Pre-decrement An
27525  str r11,[r7,r2,lsl #2]
27526;@ EaRead : Read '-(a0)' (address in r11) into r0:
27527  str r4,[r7,#0x40] ;@ Save PC
27528  bic r0,r11,#0xff000000
27529  bl m68k_read16 ;@ Call read16(r0) handler
27530
27531;@ Not:
27532  mov r0,r0,asl #16
27533  mvns r1,r0,asr #16
27534  and r10,r1,#0x80000000 ;@ r10=N_flag
27535  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27536
27537;@ EaWrite: Write r1 into '-(a0)' (address in r11):
27538  uxth r1,r1 ;@ zero extend
27539  bic r0,r11,#0xff000000
27540  bl m68k_write16 ;@ Call write16(r0,r1) handler
27541
27542  ldr r5,[r7,#0x5c] ;@ Load Cycles
27543  ldrh r8,[r4],#2 ;@ Fetch next opcode
27544  subs r5,r5,#14 ;@ Subtract cycles
27545  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27546  b CycloneEnd
27547
27548;@ ---------- [4668] not.w ($3333,a0) uses Op4668 ----------
27549Op4668:
27550  str r4,[r7,#0x50] ;@ Save prev PC + 2
27551  str r5,[r7,#0x5c] ;@ Save Cycles
27552
27553;@ EaCalc : Get '($3333,a0)' into r11:
27554  ldrsh r0,[r4],#2 ;@ Fetch offset
27555  and r2,r8,#0x000f
27556  ldr r2,[r7,r2,lsl #2]
27557  add r11,r0,r2 ;@ Add on offset
27558;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
27559  str r4,[r7,#0x40] ;@ Save PC
27560  bic r0,r11,#0xff000000
27561  bl m68k_read16 ;@ Call read16(r0) handler
27562
27563;@ Not:
27564  mov r0,r0,asl #16
27565  mvns r1,r0,asr #16
27566  and r10,r1,#0x80000000 ;@ r10=N_flag
27567  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27568
27569;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
27570  uxth r1,r1 ;@ zero extend
27571  bic r0,r11,#0xff000000
27572  bl m68k_write16 ;@ Call write16(r0,r1) handler
27573
27574  ldr r5,[r7,#0x5c] ;@ Load Cycles
27575  ldrh r8,[r4],#2 ;@ Fetch next opcode
27576  subs r5,r5,#16 ;@ Subtract cycles
27577  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27578  b CycloneEnd
27579
27580;@ ---------- [4670] not.w ($33,a0,d3.w*2) uses Op4670 ----------
27581Op4670:
27582  str r4,[r7,#0x50] ;@ Save prev PC + 2
27583  str r5,[r7,#0x5c] ;@ Save Cycles
27584
27585;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
27586;@ Get extension word into r3:
27587  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
27588  mov r2,r3,lsr #10
27589  tst r3,#0x0800 ;@ Is Rn Word or Long
27590  and r2,r2,#0x3c ;@ r2=Index of Rn
27591  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
27592  ldrne   r2,[r7,r2] ;@ r2=Rn.l
27593  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
27594  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
27595  and r2,r8,#0x000f
27596  orr r2,r2,#0x8 ;@ A0-7
27597  ldr r2,[r7,r2,lsl #2]
27598  add r11,r2,r3 ;@ r11=Disp+An+Rn
27599;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
27600  str r4,[r7,#0x40] ;@ Save PC
27601  bic r0,r11,#0xff000000
27602  bl m68k_read16 ;@ Call read16(r0) handler
27603
27604;@ Not:
27605  mov r0,r0,asl #16
27606  mvns r1,r0,asr #16
27607  and r10,r1,#0x80000000 ;@ r10=N_flag
27608  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27609
27610;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
27611  uxth r1,r1 ;@ zero extend
27612  bic r0,r11,#0xff000000
27613  bl m68k_write16 ;@ Call write16(r0,r1) handler
27614
27615  ldr r5,[r7,#0x5c] ;@ Load Cycles
27616  ldrh r8,[r4],#2 ;@ Fetch next opcode
27617  subs r5,r5,#18 ;@ Subtract cycles
27618  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27619  b CycloneEnd
27620
27621;@ ---------- [4678] not.w $3333.w uses Op4678 ----------
27622Op4678:
27623  str r4,[r7,#0x50] ;@ Save prev PC + 2
27624  str r5,[r7,#0x5c] ;@ Save Cycles
27625
27626;@ EaCalc : Get '$3333.w' into r11:
27627  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
27628;@ EaRead : Read '$3333.w' (address in r11) into r0:
27629  str r4,[r7,#0x40] ;@ Save PC
27630  bic r0,r11,#0xff000000
27631  bl m68k_read16 ;@ Call read16(r0) handler
27632
27633;@ Not:
27634  mov r0,r0,asl #16
27635  mvns r1,r0,asr #16
27636  and r10,r1,#0x80000000 ;@ r10=N_flag
27637  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27638
27639;@ EaWrite: Write r1 into '$3333.w' (address in r11):
27640  uxth r1,r1 ;@ zero extend
27641  bic r0,r11,#0xff000000
27642  bl m68k_write16 ;@ Call write16(r0,r1) handler
27643
27644  ldr r5,[r7,#0x5c] ;@ Load Cycles
27645  ldrh r8,[r4],#2 ;@ Fetch next opcode
27646  subs r5,r5,#16 ;@ Subtract cycles
27647  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27648  b CycloneEnd
27649
27650;@ ---------- [4679] not.w $33333333.l uses Op4679 ----------
27651Op4679:
27652  str r4,[r7,#0x50] ;@ Save prev PC + 2
27653  str r5,[r7,#0x5c] ;@ Save Cycles
27654
27655;@ EaCalc : Get '$33333333.l' into r11:
27656  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
27657  ldrh r0,[r4],#2
27658  orr r11,r0,r2,lsl #16
27659;@ EaRead : Read '$33333333.l' (address in r11) into r0:
27660  str r4,[r7,#0x40] ;@ Save PC
27661  bic r0,r11,#0xff000000
27662  bl m68k_read16 ;@ Call read16(r0) handler
27663
27664;@ Not:
27665  mov r0,r0,asl #16
27666  mvns r1,r0,asr #16
27667  and r10,r1,#0x80000000 ;@ r10=N_flag
27668  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27669
27670;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
27671  uxth r1,r1 ;@ zero extend
27672  bic r0,r11,#0xff000000
27673  bl m68k_write16 ;@ Call write16(r0,r1) handler
27674
27675  ldr r5,[r7,#0x5c] ;@ Load Cycles
27676  ldrh r8,[r4],#2 ;@ Fetch next opcode
27677  subs r5,r5,#20 ;@ Subtract cycles
27678  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27679  b CycloneEnd
27680
27681;@ ---------- [4680] not.l d0 uses Op4680 ----------
27682Op4680:
27683;@ EaCalc : Get register index into r11:
27684  and r11,r8,#0x000f
27685;@ EaRead : Read register[r11] into r0:
27686  ldr r0,[r7,r11,lsl #2]
27687
27688;@ Not:
27689  mvns r1,r0
27690  and r10,r1,#0x80000000 ;@ r10=N_flag
27691  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27692
27693;@ EaWrite: r1 into register[r11]:
27694  str r1,[r7,r11,lsl #2]
27695
27696  ldrh r8,[r4],#2 ;@ Fetch next opcode
27697  subs r5,r5,#6 ;@ Subtract cycles
27698  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27699  b CycloneEnd
27700
27701;@ ---------- [4690] not.l (a0) uses Op4690 ----------
27702Op4690:
27703  str r4,[r7,#0x50] ;@ Save prev PC + 2
27704  str r5,[r7,#0x5c] ;@ Save Cycles
27705
27706;@ EaCalc : Get '(a0)' into r11:
27707  and r2,r8,#0x000f
27708  orr r2,r2,#0x8 ;@ A0-7
27709  ldr r11,[r7,r2,lsl #2]
27710;@ EaRead : Read '(a0)' (address in r11) into r0:
27711  str r4,[r7,#0x40] ;@ Save PC
27712  bic r0,r11,#0xff000000
27713  bl m68k_read32 ;@ Call read32(r0) handler
27714
27715;@ Not:
27716  mvns r1,r0
27717  and r10,r1,#0x80000000 ;@ r10=N_flag
27718  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27719
27720;@ EaWrite: Write r1 into '(a0)' (address in r11):
27721  bic r0,r11,#0xff000000
27722  bl m68k_write32 ;@ Call write32(r0,r1) handler
27723
27724  ldr r5,[r7,#0x5c] ;@ Load Cycles
27725  ldrh r8,[r4],#2 ;@ Fetch next opcode
27726  subs r5,r5,#20 ;@ Subtract cycles
27727  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27728  b CycloneEnd
27729
27730;@ ---------- [4698] not.l (a0)+ uses Op4698 ----------
27731Op4698:
27732  str r4,[r7,#0x50] ;@ Save prev PC + 2
27733  str r5,[r7,#0x5c] ;@ Save Cycles
27734
27735;@ EaCalc : Get '(a0)+' into r11:
27736  and r2,r8,#0x000f
27737  ldr r11,[r7,r2,lsl #2]
27738  add r3,r11,#4 ;@ Post-increment An
27739  str r3,[r7,r2,lsl #2]
27740;@ EaRead : Read '(a0)+' (address in r11) into r0:
27741  str r4,[r7,#0x40] ;@ Save PC
27742  bic r0,r11,#0xff000000
27743  bl m68k_read32 ;@ Call read32(r0) handler
27744
27745;@ Not:
27746  mvns r1,r0
27747  and r10,r1,#0x80000000 ;@ r10=N_flag
27748  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27749
27750;@ EaWrite: Write r1 into '(a0)+' (address in r11):
27751  bic r0,r11,#0xff000000
27752  bl m68k_write32 ;@ Call write32(r0,r1) handler
27753
27754  ldr r5,[r7,#0x5c] ;@ Load Cycles
27755  ldrh r8,[r4],#2 ;@ Fetch next opcode
27756  subs r5,r5,#20 ;@ Subtract cycles
27757  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27758  b CycloneEnd
27759
27760;@ ---------- [46a0] not.l -(a0) uses Op46a0 ----------
27761Op46a0:
27762  str r4,[r7,#0x50] ;@ Save prev PC + 2
27763  str r5,[r7,#0x5c] ;@ Save Cycles
27764
27765;@ EaCalc : Get '-(a0)' into r11:
27766  and r2,r8,#0x000f
27767  orr r2,r2,#0x8 ;@ A0-7
27768  ldr r11,[r7,r2,lsl #2]
27769  sub r11,r11,#4 ;@ Pre-decrement An
27770  str r11,[r7,r2,lsl #2]
27771;@ EaRead : Read '-(a0)' (address in r11) into r0:
27772  str r4,[r7,#0x40] ;@ Save PC
27773  bic r0,r11,#0xff000000
27774  bl m68k_read32 ;@ Call read32(r0) handler
27775
27776;@ Not:
27777  mvns r1,r0
27778  and r10,r1,#0x80000000 ;@ r10=N_flag
27779  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27780
27781;@ EaWrite: Write r1 into '-(a0)' (address in r11):
27782  bic r0,r11,#0xff000000
27783  bl m68k_write32 ;@ Call write32(r0,r1) handler
27784
27785  ldr r5,[r7,#0x5c] ;@ Load Cycles
27786  ldrh r8,[r4],#2 ;@ Fetch next opcode
27787  subs r5,r5,#22 ;@ Subtract cycles
27788  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27789  b CycloneEnd
27790
27791;@ ---------- [46a8] not.l ($3333,a0) uses Op46a8 ----------
27792Op46a8:
27793  str r4,[r7,#0x50] ;@ Save prev PC + 2
27794  str r5,[r7,#0x5c] ;@ Save Cycles
27795
27796;@ EaCalc : Get '($3333,a0)' into r11:
27797  ldrsh r0,[r4],#2 ;@ Fetch offset
27798  and r2,r8,#0x000f
27799  ldr r2,[r7,r2,lsl #2]
27800  add r11,r0,r2 ;@ Add on offset
27801;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
27802  str r4,[r7,#0x40] ;@ Save PC
27803  bic r0,r11,#0xff000000
27804  bl m68k_read32 ;@ Call read32(r0) handler
27805
27806;@ Not:
27807  mvns r1,r0
27808  and r10,r1,#0x80000000 ;@ r10=N_flag
27809  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27810
27811;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
27812  bic r0,r11,#0xff000000
27813  bl m68k_write32 ;@ Call write32(r0,r1) handler
27814
27815  ldr r5,[r7,#0x5c] ;@ Load Cycles
27816  ldrh r8,[r4],#2 ;@ Fetch next opcode
27817  subs r5,r5,#24 ;@ Subtract cycles
27818  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27819  b CycloneEnd
27820
27821;@ ---------- [46b0] not.l ($33,a0,d3.w*2) uses Op46b0 ----------
27822Op46b0:
27823  str r4,[r7,#0x50] ;@ Save prev PC + 2
27824  str r5,[r7,#0x5c] ;@ Save Cycles
27825
27826;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
27827;@ Get extension word into r3:
27828  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
27829  mov r2,r3,lsr #10
27830  tst r3,#0x0800 ;@ Is Rn Word or Long
27831  and r2,r2,#0x3c ;@ r2=Index of Rn
27832  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
27833  ldrne   r2,[r7,r2] ;@ r2=Rn.l
27834  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
27835  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
27836  and r2,r8,#0x000f
27837  orr r2,r2,#0x8 ;@ A0-7
27838  ldr r2,[r7,r2,lsl #2]
27839  add r11,r2,r3 ;@ r11=Disp+An+Rn
27840;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
27841  str r4,[r7,#0x40] ;@ Save PC
27842  bic r0,r11,#0xff000000
27843  bl m68k_read32 ;@ Call read32(r0) handler
27844
27845;@ Not:
27846  mvns r1,r0
27847  and r10,r1,#0x80000000 ;@ r10=N_flag
27848  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27849
27850;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
27851  bic r0,r11,#0xff000000
27852  bl m68k_write32 ;@ Call write32(r0,r1) handler
27853
27854  ldr r5,[r7,#0x5c] ;@ Load Cycles
27855  ldrh r8,[r4],#2 ;@ Fetch next opcode
27856  subs r5,r5,#26 ;@ Subtract cycles
27857  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27858  b CycloneEnd
27859
27860;@ ---------- [46b8] not.l $3333.w uses Op46b8 ----------
27861Op46b8:
27862  str r4,[r7,#0x50] ;@ Save prev PC + 2
27863  str r5,[r7,#0x5c] ;@ Save Cycles
27864
27865;@ EaCalc : Get '$3333.w' into r11:
27866  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
27867;@ EaRead : Read '$3333.w' (address in r11) into r0:
27868  str r4,[r7,#0x40] ;@ Save PC
27869  bic r0,r11,#0xff000000
27870  bl m68k_read32 ;@ Call read32(r0) handler
27871
27872;@ Not:
27873  mvns r1,r0
27874  and r10,r1,#0x80000000 ;@ r10=N_flag
27875  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27876
27877;@ EaWrite: Write r1 into '$3333.w' (address in r11):
27878  bic r0,r11,#0xff000000
27879  bl m68k_write32 ;@ Call write32(r0,r1) handler
27880
27881  ldr r5,[r7,#0x5c] ;@ Load Cycles
27882  ldrh r8,[r4],#2 ;@ Fetch next opcode
27883  subs r5,r5,#24 ;@ Subtract cycles
27884  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27885  b CycloneEnd
27886
27887;@ ---------- [46b9] not.l $33333333.l uses Op46b9 ----------
27888Op46b9:
27889  str r4,[r7,#0x50] ;@ Save prev PC + 2
27890  str r5,[r7,#0x5c] ;@ Save Cycles
27891
27892;@ EaCalc : Get '$33333333.l' into r11:
27893  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
27894  ldrh r0,[r4],#2
27895  orr r11,r0,r2,lsl #16
27896;@ EaRead : Read '$33333333.l' (address in r11) into r0:
27897  str r4,[r7,#0x40] ;@ Save PC
27898  bic r0,r11,#0xff000000
27899  bl m68k_read32 ;@ Call read32(r0) handler
27900
27901;@ Not:
27902  mvns r1,r0
27903  and r10,r1,#0x80000000 ;@ r10=N_flag
27904  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27905
27906;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
27907  bic r0,r11,#0xff000000
27908  bl m68k_write32 ;@ Call write32(r0,r1) handler
27909
27910  ldr r5,[r7,#0x5c] ;@ Load Cycles
27911  ldrh r8,[r4],#2 ;@ Fetch next opcode
27912  subs r5,r5,#28 ;@ Subtract cycles
27913  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27914  b CycloneEnd
27915
27916;@ ---------- [46c0] move d0, sr uses Op46c0 ----------
27917Op46c0:
27918  ldr r11,[r7,#0x44] ;@ Get SR high
27919  tst r11,#0x20 ;@ Check we are in supervisor mode
27920  beq WrongPrivilegeMode ;@ No
27921
27922;@ EaCalc : Get register index into r0:
27923  and r0,r8,#0x000f
27924;@ EaRead : Read register[r0] into r0:
27925  ldr r0,[r7,r0,lsl #2]
27926
27927  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
27928  mov r2,r0,lsl #25
27929  tst r1,#1           ;@ 1 if C!=V
27930  eorne r0,r0,#3      ;@ ___XNZCV
27931  str r2,[r7,#0x4c]   ;@ Store X bit
27932  mov r10,r0,lsl #28  ;@ r10=NZCV...
27933  mov r1,r0,ror #8
27934  and r1,r1,#0xa7 ;@ only take defined bits
27935  strb r1,[r7,#0x44] ;@ Store SR high
27936
27937;@ A7 <-> OSP?
27938  eor r0,r1,r11
27939  tst r0,#0x20
27940  beq no_sp_swap46c0
27941 ;@ swap OSP and A7:
27942  ldr r11,[r7,#0x3C] ;@ Get A7
27943  ldr r0, [r7,#0x48] ;@ Get OSP
27944  str r11,[r7,#0x48]
27945  str r0, [r7,#0x3C]
27946no_sp_swap46c0:
27947  ldrh r8,[r4],#2 ;@ Fetch next opcode
27948  ldr r1,[r7,#0x44]
27949  subs r5,r5,#12 ;@ Subtract cycles
27950;@ CheckTrace:
27951  tst r1,#0x80
27952  bne CycloneDoTraceWithChecks
27953  cmp r5,#0
27954  ble CycloneEnd
27955;@ CheckInterrupt:
27956  movs r0,r1,lsr #24 ;@ Get IRQ level
27957  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
27958  cmp r0,#6 ;@ irq>6 ?
27959  andle r1,r1,#7 ;@ Get interrupt mask
27960  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
27961  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
27962  b CycloneDoInterruptGoBack
27963
27964;@ ---------- [46d0] move (a0), sr uses Op46d0 ----------
27965Op46d0:
27966  ldr r11,[r7,#0x44] ;@ Get SR high
27967  str r4,[r7,#0x50] ;@ Save prev PC + 2
27968  str r5,[r7,#0x5c] ;@ Save Cycles
27969  tst r11,#0x20 ;@ Check we are in supervisor mode
27970  beq WrongPrivilegeMode ;@ No
27971
27972;@ EaCalc : Get '(a0)' into r0:
27973  and r2,r8,#0x000f
27974  orr r2,r2,#0x8 ;@ A0-7
27975  ldr r0,[r7,r2,lsl #2]
27976;@ EaRead : Read '(a0)' (address in r0) into r0:
27977  str r4,[r7,#0x40] ;@ Save PC
27978  bic r0,r0,#0xff000000
27979  bl m68k_read16 ;@ Call read16(r0) handler
27980
27981  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
27982  mov r2,r0,lsl #25
27983  tst r1,#1           ;@ 1 if C!=V
27984  eorne r0,r0,#3      ;@ ___XNZCV
27985  str r2,[r7,#0x4c]   ;@ Store X bit
27986  mov r10,r0,lsl #28  ;@ r10=NZCV...
27987  mov r1,r0,ror #8
27988  and r1,r1,#0xa7 ;@ only take defined bits
27989  strb r1,[r7,#0x44] ;@ Store SR high
27990
27991;@ A7 <-> OSP?
27992  eor r0,r1,r11
27993  tst r0,#0x20
27994  beq no_sp_swap46d0
27995 ;@ swap OSP and A7:
27996  ldr r11,[r7,#0x3C] ;@ Get A7
27997  ldr r0, [r7,#0x48] ;@ Get OSP
27998  str r11,[r7,#0x48]
27999  str r0, [r7,#0x3C]
28000no_sp_swap46d0:
28001  ldr r5,[r7,#0x5c] ;@ Load Cycles
28002  ldrh r8,[r4],#2 ;@ Fetch next opcode
28003  ldr r1,[r7,#0x44]
28004  subs r5,r5,#16 ;@ Subtract cycles
28005;@ CheckTrace:
28006  tst r1,#0x80
28007  bne CycloneDoTraceWithChecks
28008  cmp r5,#0
28009  ble CycloneEnd
28010;@ CheckInterrupt:
28011  movs r0,r1,lsr #24 ;@ Get IRQ level
28012  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28013  cmp r0,#6 ;@ irq>6 ?
28014  andle r1,r1,#7 ;@ Get interrupt mask
28015  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28016  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28017  b CycloneDoInterruptGoBack
28018
28019;@ ---------- [46d8] move (a0)+, sr uses Op46d8 ----------
28020Op46d8:
28021  ldr r11,[r7,#0x44] ;@ Get SR high
28022  str r4,[r7,#0x50] ;@ Save prev PC + 2
28023  str r5,[r7,#0x5c] ;@ Save Cycles
28024  tst r11,#0x20 ;@ Check we are in supervisor mode
28025  beq WrongPrivilegeMode ;@ No
28026
28027;@ EaCalc : Get '(a0)+' into r0:
28028  and r2,r8,#0x000f
28029  ldr r0,[r7,r2,lsl #2]
28030  add r3,r0,#2 ;@ Post-increment An
28031  str r3,[r7,r2,lsl #2]
28032;@ EaRead : Read '(a0)+' (address in r0) into r0:
28033  str r4,[r7,#0x40] ;@ Save PC
28034  bic r0,r0,#0xff000000
28035  bl m68k_read16 ;@ Call read16(r0) handler
28036
28037  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28038  mov r2,r0,lsl #25
28039  tst r1,#1           ;@ 1 if C!=V
28040  eorne r0,r0,#3      ;@ ___XNZCV
28041  str r2,[r7,#0x4c]   ;@ Store X bit
28042  mov r10,r0,lsl #28  ;@ r10=NZCV...
28043  mov r1,r0,ror #8
28044  and r1,r1,#0xa7 ;@ only take defined bits
28045  strb r1,[r7,#0x44] ;@ Store SR high
28046
28047;@ A7 <-> OSP?
28048  eor r0,r1,r11
28049  tst r0,#0x20
28050  beq no_sp_swap46d8
28051 ;@ swap OSP and A7:
28052  ldr r11,[r7,#0x3C] ;@ Get A7
28053  ldr r0, [r7,#0x48] ;@ Get OSP
28054  str r11,[r7,#0x48]
28055  str r0, [r7,#0x3C]
28056no_sp_swap46d8:
28057  ldr r5,[r7,#0x5c] ;@ Load Cycles
28058  ldrh r8,[r4],#2 ;@ Fetch next opcode
28059  ldr r1,[r7,#0x44]
28060  subs r5,r5,#16 ;@ Subtract cycles
28061;@ CheckTrace:
28062  tst r1,#0x80
28063  bne CycloneDoTraceWithChecks
28064  cmp r5,#0
28065  ble CycloneEnd
28066;@ CheckInterrupt:
28067  movs r0,r1,lsr #24 ;@ Get IRQ level
28068  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28069  cmp r0,#6 ;@ irq>6 ?
28070  andle r1,r1,#7 ;@ Get interrupt mask
28071  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28072  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28073  b CycloneDoInterruptGoBack
28074
28075;@ ---------- [46e0] move -(a0), sr uses Op46e0 ----------
28076Op46e0:
28077  ldr r11,[r7,#0x44] ;@ Get SR high
28078  str r4,[r7,#0x50] ;@ Save prev PC + 2
28079  str r5,[r7,#0x5c] ;@ Save Cycles
28080  tst r11,#0x20 ;@ Check we are in supervisor mode
28081  beq WrongPrivilegeMode ;@ No
28082
28083;@ EaCalc : Get '-(a0)' into r0:
28084  and r2,r8,#0x000f
28085  orr r2,r2,#0x8 ;@ A0-7
28086  ldr r0,[r7,r2,lsl #2]
28087  sub r0,r0,#2 ;@ Pre-decrement An
28088  str r0,[r7,r2,lsl #2]
28089;@ EaRead : Read '-(a0)' (address in r0) into r0:
28090  str r4,[r7,#0x40] ;@ Save PC
28091  bic r0,r0,#0xff000000
28092  bl m68k_read16 ;@ Call read16(r0) handler
28093
28094  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28095  mov r2,r0,lsl #25
28096  tst r1,#1           ;@ 1 if C!=V
28097  eorne r0,r0,#3      ;@ ___XNZCV
28098  str r2,[r7,#0x4c]   ;@ Store X bit
28099  mov r10,r0,lsl #28  ;@ r10=NZCV...
28100  mov r1,r0,ror #8
28101  and r1,r1,#0xa7 ;@ only take defined bits
28102  strb r1,[r7,#0x44] ;@ Store SR high
28103
28104;@ A7 <-> OSP?
28105  eor r0,r1,r11
28106  tst r0,#0x20
28107  beq no_sp_swap46e0
28108 ;@ swap OSP and A7:
28109  ldr r11,[r7,#0x3C] ;@ Get A7
28110  ldr r0, [r7,#0x48] ;@ Get OSP
28111  str r11,[r7,#0x48]
28112  str r0, [r7,#0x3C]
28113no_sp_swap46e0:
28114  ldr r5,[r7,#0x5c] ;@ Load Cycles
28115  ldrh r8,[r4],#2 ;@ Fetch next opcode
28116  ldr r1,[r7,#0x44]
28117  subs r5,r5,#18 ;@ Subtract cycles
28118;@ CheckTrace:
28119  tst r1,#0x80
28120  bne CycloneDoTraceWithChecks
28121  cmp r5,#0
28122  ble CycloneEnd
28123;@ CheckInterrupt:
28124  movs r0,r1,lsr #24 ;@ Get IRQ level
28125  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28126  cmp r0,#6 ;@ irq>6 ?
28127  andle r1,r1,#7 ;@ Get interrupt mask
28128  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28129  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28130  b CycloneDoInterruptGoBack
28131
28132;@ ---------- [46e8] move ($3333,a0), sr uses Op46e8 ----------
28133Op46e8:
28134  ldr r11,[r7,#0x44] ;@ Get SR high
28135  str r4,[r7,#0x50] ;@ Save prev PC + 2
28136  str r5,[r7,#0x5c] ;@ Save Cycles
28137  tst r11,#0x20 ;@ Check we are in supervisor mode
28138  beq WrongPrivilegeMode ;@ No
28139
28140;@ EaCalc : Get '($3333,a0)' into r0:
28141  ldrsh r0,[r4],#2 ;@ Fetch offset
28142  and r2,r8,#0x000f
28143  ldr r2,[r7,r2,lsl #2]
28144  add r0,r0,r2 ;@ Add on offset
28145;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
28146  str r4,[r7,#0x40] ;@ Save PC
28147  bic r0,r0,#0xff000000
28148  bl m68k_read16 ;@ Call read16(r0) handler
28149
28150  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28151  mov r2,r0,lsl #25
28152  tst r1,#1           ;@ 1 if C!=V
28153  eorne r0,r0,#3      ;@ ___XNZCV
28154  str r2,[r7,#0x4c]   ;@ Store X bit
28155  mov r10,r0,lsl #28  ;@ r10=NZCV...
28156  mov r1,r0,ror #8
28157  and r1,r1,#0xa7 ;@ only take defined bits
28158  strb r1,[r7,#0x44] ;@ Store SR high
28159
28160;@ A7 <-> OSP?
28161  eor r0,r1,r11
28162  tst r0,#0x20
28163  beq no_sp_swap46e8
28164 ;@ swap OSP and A7:
28165  ldr r11,[r7,#0x3C] ;@ Get A7
28166  ldr r0, [r7,#0x48] ;@ Get OSP
28167  str r11,[r7,#0x48]
28168  str r0, [r7,#0x3C]
28169no_sp_swap46e8:
28170  ldr r5,[r7,#0x5c] ;@ Load Cycles
28171  ldrh r8,[r4],#2 ;@ Fetch next opcode
28172  ldr r1,[r7,#0x44]
28173  subs r5,r5,#20 ;@ Subtract cycles
28174;@ CheckTrace:
28175  tst r1,#0x80
28176  bne CycloneDoTraceWithChecks
28177  cmp r5,#0
28178  ble CycloneEnd
28179;@ CheckInterrupt:
28180  movs r0,r1,lsr #24 ;@ Get IRQ level
28181  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28182  cmp r0,#6 ;@ irq>6 ?
28183  andle r1,r1,#7 ;@ Get interrupt mask
28184  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28185  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28186  b CycloneDoInterruptGoBack
28187
28188;@ ---------- [46f0] move ($33,a0,d3.w*2), sr uses Op46f0 ----------
28189Op46f0:
28190  ldr r11,[r7,#0x44] ;@ Get SR high
28191  str r4,[r7,#0x50] ;@ Save prev PC + 2
28192  str r5,[r7,#0x5c] ;@ Save Cycles
28193  tst r11,#0x20 ;@ Check we are in supervisor mode
28194  beq WrongPrivilegeMode ;@ No
28195
28196;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
28197;@ Get extension word into r3:
28198  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
28199  mov r2,r3,lsr #10
28200  tst r3,#0x0800 ;@ Is Rn Word or Long
28201  and r2,r2,#0x3c ;@ r2=Index of Rn
28202  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
28203  ldrne   r2,[r7,r2] ;@ r2=Rn.l
28204  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
28205  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
28206  and r2,r8,#0x000f
28207  orr r2,r2,#0x8 ;@ A0-7
28208  ldr r2,[r7,r2,lsl #2]
28209  add r0,r2,r3 ;@ r0=Disp+An+Rn
28210;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
28211  str r4,[r7,#0x40] ;@ Save PC
28212  bic r0,r0,#0xff000000
28213  bl m68k_read16 ;@ Call read16(r0) handler
28214
28215  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28216  mov r2,r0,lsl #25
28217  tst r1,#1           ;@ 1 if C!=V
28218  eorne r0,r0,#3      ;@ ___XNZCV
28219  str r2,[r7,#0x4c]   ;@ Store X bit
28220  mov r10,r0,lsl #28  ;@ r10=NZCV...
28221  mov r1,r0,ror #8
28222  and r1,r1,#0xa7 ;@ only take defined bits
28223  strb r1,[r7,#0x44] ;@ Store SR high
28224
28225;@ A7 <-> OSP?
28226  eor r0,r1,r11
28227  tst r0,#0x20
28228  beq no_sp_swap46f0
28229 ;@ swap OSP and A7:
28230  ldr r11,[r7,#0x3C] ;@ Get A7
28231  ldr r0, [r7,#0x48] ;@ Get OSP
28232  str r11,[r7,#0x48]
28233  str r0, [r7,#0x3C]
28234no_sp_swap46f0:
28235  ldr r5,[r7,#0x5c] ;@ Load Cycles
28236  ldrh r8,[r4],#2 ;@ Fetch next opcode
28237  ldr r1,[r7,#0x44]
28238  subs r5,r5,#22 ;@ Subtract cycles
28239;@ CheckTrace:
28240  tst r1,#0x80
28241  bne CycloneDoTraceWithChecks
28242  cmp r5,#0
28243  ble CycloneEnd
28244;@ CheckInterrupt:
28245  movs r0,r1,lsr #24 ;@ Get IRQ level
28246  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28247  cmp r0,#6 ;@ irq>6 ?
28248  andle r1,r1,#7 ;@ Get interrupt mask
28249  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28250  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28251  b CycloneDoInterruptGoBack
28252
28253;@ ---------- [46f8] move $3333.w, sr uses Op46f8 ----------
28254Op46f8:
28255  ldr r11,[r7,#0x44] ;@ Get SR high
28256  str r4,[r7,#0x50] ;@ Save prev PC + 2
28257  str r5,[r7,#0x5c] ;@ Save Cycles
28258  tst r11,#0x20 ;@ Check we are in supervisor mode
28259  beq WrongPrivilegeMode ;@ No
28260
28261;@ EaCalc : Get '$3333.w' into r0:
28262  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
28263;@ EaRead : Read '$3333.w' (address in r0) into r0:
28264  str r4,[r7,#0x40] ;@ Save PC
28265  bic r0,r0,#0xff000000
28266  bl m68k_read16 ;@ Call read16(r0) handler
28267
28268  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28269  mov r2,r0,lsl #25
28270  tst r1,#1           ;@ 1 if C!=V
28271  eorne r0,r0,#3      ;@ ___XNZCV
28272  str r2,[r7,#0x4c]   ;@ Store X bit
28273  mov r10,r0,lsl #28  ;@ r10=NZCV...
28274  mov r1,r0,ror #8
28275  and r1,r1,#0xa7 ;@ only take defined bits
28276  strb r1,[r7,#0x44] ;@ Store SR high
28277
28278;@ A7 <-> OSP?
28279  eor r0,r1,r11
28280  tst r0,#0x20
28281  beq no_sp_swap46f8
28282 ;@ swap OSP and A7:
28283  ldr r11,[r7,#0x3C] ;@ Get A7
28284  ldr r0, [r7,#0x48] ;@ Get OSP
28285  str r11,[r7,#0x48]
28286  str r0, [r7,#0x3C]
28287no_sp_swap46f8:
28288  ldr r5,[r7,#0x5c] ;@ Load Cycles
28289  ldrh r8,[r4],#2 ;@ Fetch next opcode
28290  ldr r1,[r7,#0x44]
28291  subs r5,r5,#20 ;@ Subtract cycles
28292;@ CheckTrace:
28293  tst r1,#0x80
28294  bne CycloneDoTraceWithChecks
28295  cmp r5,#0
28296  ble CycloneEnd
28297;@ CheckInterrupt:
28298  movs r0,r1,lsr #24 ;@ Get IRQ level
28299  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28300  cmp r0,#6 ;@ irq>6 ?
28301  andle r1,r1,#7 ;@ Get interrupt mask
28302  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28303  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28304  b CycloneDoInterruptGoBack
28305
28306;@ ---------- [46f9] move $33333333.l, sr uses Op46f9 ----------
28307Op46f9:
28308  ldr r11,[r7,#0x44] ;@ Get SR high
28309  str r4,[r7,#0x50] ;@ Save prev PC + 2
28310  str r5,[r7,#0x5c] ;@ Save Cycles
28311  tst r11,#0x20 ;@ Check we are in supervisor mode
28312  beq WrongPrivilegeMode ;@ No
28313
28314;@ EaCalc : Get '$33333333.l' into r0:
28315  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
28316  ldrh r0,[r4],#2
28317  orr r0,r0,r2,lsl #16
28318;@ EaRead : Read '$33333333.l' (address in r0) into r0:
28319  str r4,[r7,#0x40] ;@ Save PC
28320  bic r0,r0,#0xff000000
28321  bl m68k_read16 ;@ Call read16(r0) handler
28322
28323  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28324  mov r2,r0,lsl #25
28325  tst r1,#1           ;@ 1 if C!=V
28326  eorne r0,r0,#3      ;@ ___XNZCV
28327  str r2,[r7,#0x4c]   ;@ Store X bit
28328  mov r10,r0,lsl #28  ;@ r10=NZCV...
28329  mov r1,r0,ror #8
28330  and r1,r1,#0xa7 ;@ only take defined bits
28331  strb r1,[r7,#0x44] ;@ Store SR high
28332
28333;@ A7 <-> OSP?
28334  eor r0,r1,r11
28335  tst r0,#0x20
28336  beq no_sp_swap46f9
28337 ;@ swap OSP and A7:
28338  ldr r11,[r7,#0x3C] ;@ Get A7
28339  ldr r0, [r7,#0x48] ;@ Get OSP
28340  str r11,[r7,#0x48]
28341  str r0, [r7,#0x3C]
28342no_sp_swap46f9:
28343  ldr r5,[r7,#0x5c] ;@ Load Cycles
28344  ldrh r8,[r4],#2 ;@ Fetch next opcode
28345  ldr r1,[r7,#0x44]
28346  subs r5,r5,#24 ;@ Subtract cycles
28347;@ CheckTrace:
28348  tst r1,#0x80
28349  bne CycloneDoTraceWithChecks
28350  cmp r5,#0
28351  ble CycloneEnd
28352;@ CheckInterrupt:
28353  movs r0,r1,lsr #24 ;@ Get IRQ level
28354  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28355  cmp r0,#6 ;@ irq>6 ?
28356  andle r1,r1,#7 ;@ Get interrupt mask
28357  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28358  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28359  b CycloneDoInterruptGoBack
28360
28361;@ ---------- [46fa] move ($3333,pc), sr; =3335 uses Op46fa ----------
28362Op46fa:
28363  ldr r11,[r7,#0x44] ;@ Get SR high
28364  str r4,[r7,#0x50] ;@ Save prev PC + 2
28365  str r5,[r7,#0x5c] ;@ Save Cycles
28366  tst r11,#0x20 ;@ Check we are in supervisor mode
28367  beq WrongPrivilegeMode ;@ No
28368
28369;@ EaCalc : Get '($3333,pc)' into r0:
28370  ldr r0,[r7,#0x60] ;@ Get Memory base
28371  sub r0,r4,r0 ;@ Real PC
28372  ldrsh r2,[r4],#2 ;@ Fetch extension
28373  add r0,r2,r0 ;@ ($nn,PC)
28374;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
28375  str r4,[r7,#0x40] ;@ Save PC
28376  bic r0,r0,#0xff000000
28377  bl m68k_fetch16 ;@ Call fetch16(r0) handler
28378
28379  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28380  mov r2,r0,lsl #25
28381  tst r1,#1           ;@ 1 if C!=V
28382  eorne r0,r0,#3      ;@ ___XNZCV
28383  str r2,[r7,#0x4c]   ;@ Store X bit
28384  mov r10,r0,lsl #28  ;@ r10=NZCV...
28385  mov r1,r0,ror #8
28386  and r1,r1,#0xa7 ;@ only take defined bits
28387  strb r1,[r7,#0x44] ;@ Store SR high
28388
28389;@ A7 <-> OSP?
28390  eor r0,r1,r11
28391  tst r0,#0x20
28392  beq no_sp_swap46fa
28393 ;@ swap OSP and A7:
28394  ldr r11,[r7,#0x3C] ;@ Get A7
28395  ldr r0, [r7,#0x48] ;@ Get OSP
28396  str r11,[r7,#0x48]
28397  str r0, [r7,#0x3C]
28398no_sp_swap46fa:
28399  ldr r5,[r7,#0x5c] ;@ Load Cycles
28400  ldrh r8,[r4],#2 ;@ Fetch next opcode
28401  ldr r1,[r7,#0x44]
28402  subs r5,r5,#20 ;@ Subtract cycles
28403;@ CheckTrace:
28404  tst r1,#0x80
28405  bne CycloneDoTraceWithChecks
28406  cmp r5,#0
28407  ble CycloneEnd
28408;@ CheckInterrupt:
28409  movs r0,r1,lsr #24 ;@ Get IRQ level
28410  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28411  cmp r0,#6 ;@ irq>6 ?
28412  andle r1,r1,#7 ;@ Get interrupt mask
28413  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28414  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28415  b CycloneDoInterruptGoBack
28416
28417;@ ---------- [46fb] move ($33,pc,d3.w*2), sr; =35 uses Op46fb ----------
28418Op46fb:
28419  ldr r11,[r7,#0x44] ;@ Get SR high
28420  str r4,[r7,#0x50] ;@ Save prev PC + 2
28421  str r5,[r7,#0x5c] ;@ Save Cycles
28422  tst r11,#0x20 ;@ Check we are in supervisor mode
28423  beq WrongPrivilegeMode ;@ No
28424
28425;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
28426  ldr r0,[r7,#0x60] ;@ Get Memory base
28427  ldrh r3,[r4] ;@ Get extension word
28428  sub r0,r4,r0 ;@ r0=PC
28429  add r4,r4,#2
28430  mov r2,r3,lsr #10
28431  tst r3,#0x0800 ;@ Is Rn Word or Long
28432  and r2,r2,#0x3c ;@ r2=Index of Rn
28433  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
28434  ldrne   r2,[r7,r2] ;@ r2=Rn.l
28435  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
28436  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
28437  add r0,r2,r0 ;@ r0=Disp+PC+Rn
28438;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
28439  str r4,[r7,#0x40] ;@ Save PC
28440  bic r0,r0,#0xff000000
28441  bl m68k_fetch16 ;@ Call fetch16(r0) handler
28442
28443  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28444  mov r2,r0,lsl #25
28445  tst r1,#1           ;@ 1 if C!=V
28446  eorne r0,r0,#3      ;@ ___XNZCV
28447  str r2,[r7,#0x4c]   ;@ Store X bit
28448  mov r10,r0,lsl #28  ;@ r10=NZCV...
28449  mov r1,r0,ror #8
28450  and r1,r1,#0xa7 ;@ only take defined bits
28451  strb r1,[r7,#0x44] ;@ Store SR high
28452
28453;@ A7 <-> OSP?
28454  eor r0,r1,r11
28455  tst r0,#0x20
28456  beq no_sp_swap46fb
28457 ;@ swap OSP and A7:
28458  ldr r11,[r7,#0x3C] ;@ Get A7
28459  ldr r0, [r7,#0x48] ;@ Get OSP
28460  str r11,[r7,#0x48]
28461  str r0, [r7,#0x3C]
28462no_sp_swap46fb:
28463  ldr r5,[r7,#0x5c] ;@ Load Cycles
28464  ldrh r8,[r4],#2 ;@ Fetch next opcode
28465  ldr r1,[r7,#0x44]
28466  subs r5,r5,#22 ;@ Subtract cycles
28467;@ CheckTrace:
28468  tst r1,#0x80
28469  bne CycloneDoTraceWithChecks
28470  cmp r5,#0
28471  ble CycloneEnd
28472;@ CheckInterrupt:
28473  movs r0,r1,lsr #24 ;@ Get IRQ level
28474  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28475  cmp r0,#6 ;@ irq>6 ?
28476  andle r1,r1,#7 ;@ Get interrupt mask
28477  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28478  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28479  b CycloneDoInterruptGoBack
28480
28481;@ ---------- [46fc] move #$3333, sr uses Op46fc ----------
28482Op46fc:
28483  ldr r11,[r7,#0x44] ;@ Get SR high
28484  tst r11,#0x20 ;@ Check we are in supervisor mode
28485  beq WrongPrivilegeMode ;@ No
28486
28487;@ EaCalc : Get '#$3333' into r0:
28488  ldrsh r0,[r4],#2 ;@ Fetch immediate value
28489;@ EaRead : Read '#$3333' (address in r0) into r0:
28490
28491  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28492  mov r2,r0,lsl #25
28493  tst r1,#1           ;@ 1 if C!=V
28494  eorne r0,r0,#3      ;@ ___XNZCV
28495  str r2,[r7,#0x4c]   ;@ Store X bit
28496  mov r10,r0,lsl #28  ;@ r10=NZCV...
28497  mov r1,r0,ror #8
28498  and r1,r1,#0xa7 ;@ only take defined bits
28499  strb r1,[r7,#0x44] ;@ Store SR high
28500
28501;@ A7 <-> OSP?
28502  eor r0,r1,r11
28503  tst r0,#0x20
28504  beq no_sp_swap46fc
28505 ;@ swap OSP and A7:
28506  ldr r11,[r7,#0x3C] ;@ Get A7
28507  ldr r0, [r7,#0x48] ;@ Get OSP
28508  str r11,[r7,#0x48]
28509  str r0, [r7,#0x3C]
28510no_sp_swap46fc:
28511  ldrh r8,[r4],#2 ;@ Fetch next opcode
28512  ldr r1,[r7,#0x44]
28513  subs r5,r5,#16 ;@ Subtract cycles
28514;@ CheckTrace:
28515  tst r1,#0x80
28516  bne CycloneDoTraceWithChecks
28517  cmp r5,#0
28518  ble CycloneEnd
28519;@ CheckInterrupt:
28520  movs r0,r1,lsr #24 ;@ Get IRQ level
28521  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28522  cmp r0,#6 ;@ irq>6 ?
28523  andle r1,r1,#7 ;@ Get interrupt mask
28524  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28525  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28526  b CycloneDoInterruptGoBack
28527
28528;@ ---------- [4800] nbcd d0 uses Op4800 ----------
28529Op4800:
28530;@ EaCalc : Get register index into r6:
28531  and r6,r8,#0x000f
28532;@ EaRead : Read register[r6] into r0:
28533  ldr r0,[r7,r6,lsl #2]
28534
28535  ldr r2,[r7,#0x4c]
28536  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
28537  mov r0,r0,asl #24
28538  and r2,r2,#0x20000000
28539  add r2,r0,r2,lsr #5 ;@ add X
28540  rsb r11,r2,#0x9a000000 ;@ do arithmetic
28541  cmp r11,#0x9a000000
28542  beq finish4800
28543
28544  mvn r3,r11,lsr #31 ;@ Undefined V behavior
28545  and r2,r11,#0x0f000000
28546  cmp r2,#0x0a000000
28547  andeq r11,r11,#0xf0000000
28548  addeq r11,r11,#0x10000000
28549  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
28550  movs r1,r11,asr #24
28551  bicne r10,r10,#0x40000000 ;@ Z
28552  orr r10,r10,r3,lsl #28 ;@ save V
28553  orr r10,r10,#0x20000000 ;@ C
28554
28555;@ EaWrite: r1 into register[r6]:
28556  strb r1,[r7,r6,lsl #2]
28557
28558finish4800:
28559  tst r11,r11
28560  orrmi r10,r10,#0x80000000 ;@ N
28561  str r10,[r7,#0x4c] ;@ Save X
28562
28563  ldr r6,[r7,#0x54]
28564  ldrh r8,[r4],#2 ;@ Fetch next opcode
28565  subs r5,r5,#6 ;@ Subtract cycles
28566  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28567  b CycloneEnd
28568
28569;@ ---------- [4810] nbcd (a0) uses Op4810 ----------
28570Op4810:
28571  str r4,[r7,#0x50] ;@ Save prev PC + 2
28572  str r5,[r7,#0x5c] ;@ Save Cycles
28573
28574;@ EaCalc : Get '(a0)' into r6:
28575  and r2,r8,#0x000f
28576  orr r2,r2,#0x8 ;@ A0-7
28577  ldr r6,[r7,r2,lsl #2]
28578;@ EaRead : Read '(a0)' (address in r6) into r0:
28579  str r4,[r7,#0x40] ;@ Save PC
28580  bic r0,r6,#0xff000000
28581  bl m68k_read8 ;@ Call read8(r0) handler
28582
28583  ldr r2,[r7,#0x4c]
28584  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
28585  mov r0,r0,asl #24
28586  and r2,r2,#0x20000000
28587  add r2,r0,r2,lsr #5 ;@ add X
28588  rsb r11,r2,#0x9a000000 ;@ do arithmetic
28589  cmp r11,#0x9a000000
28590  beq finish4810
28591
28592  mvn r3,r11,lsr #31 ;@ Undefined V behavior
28593  and r2,r11,#0x0f000000
28594  cmp r2,#0x0a000000
28595  andeq r11,r11,#0xf0000000
28596  addeq r11,r11,#0x10000000
28597  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
28598  movs r1,r11,asr #24
28599  bicne r10,r10,#0x40000000 ;@ Z
28600  orr r10,r10,r3,lsl #28 ;@ save V
28601  orr r10,r10,#0x20000000 ;@ C
28602
28603;@ EaWrite: Write r1 into '(a0)' (address in r6):
28604  and r1,r1,#0xff
28605  bic r0,r6,#0xff000000
28606  bl m68k_write8 ;@ Call write8(r0,r1) handler
28607
28608finish4810:
28609  tst r11,r11
28610  orrmi r10,r10,#0x80000000 ;@ N
28611  str r10,[r7,#0x4c] ;@ Save X
28612
28613  ldr r6,[r7,#0x54]
28614  ldr r5,[r7,#0x5c] ;@ Load Cycles
28615  ldrh r8,[r4],#2 ;@ Fetch next opcode
28616  subs r5,r5,#12 ;@ Subtract cycles
28617  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28618  b CycloneEnd
28619
28620;@ ---------- [4818] nbcd (a0)+ uses Op4818 ----------
28621Op4818:
28622  str r4,[r7,#0x50] ;@ Save prev PC + 2
28623  str r5,[r7,#0x5c] ;@ Save Cycles
28624
28625;@ EaCalc : Get '(a0)+' into r6:
28626  and r2,r8,#0x000f
28627  ldr r6,[r7,r2,lsl #2]
28628  add r3,r6,#1 ;@ Post-increment An
28629  str r3,[r7,r2,lsl #2]
28630;@ EaRead : Read '(a0)+' (address in r6) into r0:
28631  str r4,[r7,#0x40] ;@ Save PC
28632  bic r0,r6,#0xff000000
28633  bl m68k_read8 ;@ Call read8(r0) handler
28634
28635  ldr r2,[r7,#0x4c]
28636  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
28637  mov r0,r0,asl #24
28638  and r2,r2,#0x20000000
28639  add r2,r0,r2,lsr #5 ;@ add X
28640  rsb r11,r2,#0x9a000000 ;@ do arithmetic
28641  cmp r11,#0x9a000000
28642  beq finish4818
28643
28644  mvn r3,r11,lsr #31 ;@ Undefined V behavior
28645  and r2,r11,#0x0f000000
28646  cmp r2,#0x0a000000
28647  andeq r11,r11,#0xf0000000
28648  addeq r11,r11,#0x10000000
28649  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
28650  movs r1,r11,asr #24
28651  bicne r10,r10,#0x40000000 ;@ Z
28652  orr r10,r10,r3,lsl #28 ;@ save V
28653  orr r10,r10,#0x20000000 ;@ C
28654
28655;@ EaWrite: Write r1 into '(a0)+' (address in r6):
28656  and r1,r1,#0xff
28657  bic r0,r6,#0xff000000
28658  bl m68k_write8 ;@ Call write8(r0,r1) handler
28659
28660finish4818:
28661  tst r11,r11
28662  orrmi r10,r10,#0x80000000 ;@ N
28663  str r10,[r7,#0x4c] ;@ Save X
28664
28665  ldr r6,[r7,#0x54]
28666  ldr r5,[r7,#0x5c] ;@ Load Cycles
28667  ldrh r8,[r4],#2 ;@ Fetch next opcode
28668  subs r5,r5,#12 ;@ Subtract cycles
28669  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28670  b CycloneEnd
28671
28672;@ ---------- [481f] nbcd (a7)+ uses Op481f ----------
28673Op481f:
28674  str r4,[r7,#0x50] ;@ Save prev PC + 2
28675  str r5,[r7,#0x5c] ;@ Save Cycles
28676
28677;@ EaCalc : Get '(a7)+' into r6:
28678  ldr r6,[r7,#0x3c] ;@ A7
28679  add r3,r6,#2 ;@ Post-increment An
28680  str r3,[r7,#0x3c] ;@ A7
28681;@ EaRead : Read '(a7)+' (address in r6) into r0:
28682  str r4,[r7,#0x40] ;@ Save PC
28683  bic r0,r6,#0xff000000
28684  bl m68k_read8 ;@ Call read8(r0) handler
28685
28686  ldr r2,[r7,#0x4c]
28687  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
28688  mov r0,r0,asl #24
28689  and r2,r2,#0x20000000
28690  add r2,r0,r2,lsr #5 ;@ add X
28691  rsb r11,r2,#0x9a000000 ;@ do arithmetic
28692  cmp r11,#0x9a000000
28693  beq finish481f
28694
28695  mvn r3,r11,lsr #31 ;@ Undefined V behavior
28696  and r2,r11,#0x0f000000
28697  cmp r2,#0x0a000000
28698  andeq r11,r11,#0xf0000000
28699  addeq r11,r11,#0x10000000
28700  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
28701  movs r1,r11,asr #24
28702  bicne r10,r10,#0x40000000 ;@ Z
28703  orr r10,r10,r3,lsl #28 ;@ save V
28704  orr r10,r10,#0x20000000 ;@ C
28705
28706;@ EaWrite: Write r1 into '(a7)+' (address in r6):
28707  and r1,r1,#0xff
28708  bic r0,r6,#0xff000000
28709  bl m68k_write8 ;@ Call write8(r0,r1) handler
28710
28711finish481f:
28712  tst r11,r11
28713  orrmi r10,r10,#0x80000000 ;@ N
28714  str r10,[r7,#0x4c] ;@ Save X
28715
28716  ldr r6,[r7,#0x54]
28717  ldr r5,[r7,#0x5c] ;@ Load Cycles
28718  ldrh r8,[r4],#2 ;@ Fetch next opcode
28719  subs r5,r5,#12 ;@ Subtract cycles
28720  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28721  b CycloneEnd
28722
28723;@ ---------- [4820] nbcd -(a0) uses Op4820 ----------
28724Op4820:
28725  str r4,[r7,#0x50] ;@ Save prev PC + 2
28726  str r5,[r7,#0x5c] ;@ Save Cycles
28727
28728;@ EaCalc : Get '-(a0)' into r6:
28729  and r2,r8,#0x000f
28730  orr r2,r2,#0x8 ;@ A0-7
28731  ldr r6,[r7,r2,lsl #2]
28732  sub r6,r6,#1 ;@ Pre-decrement An
28733  str r6,[r7,r2,lsl #2]
28734;@ EaRead : Read '-(a0)' (address in r6) into r0:
28735  str r4,[r7,#0x40] ;@ Save PC
28736  bic r0,r6,#0xff000000
28737  bl m68k_read8 ;@ Call read8(r0) handler
28738
28739  ldr r2,[r7,#0x4c]
28740  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
28741  mov r0,r0,asl #24
28742  and r2,r2,#0x20000000
28743  add r2,r0,r2,lsr #5 ;@ add X
28744  rsb r11,r2,#0x9a000000 ;@ do arithmetic
28745  cmp r11,#0x9a000000
28746  beq finish4820
28747
28748  mvn r3,r11,lsr #31 ;@ Undefined V behavior
28749  and r2,r11,#0x0f000000
28750  cmp r2,#0x0a000000
28751  andeq r11,r11,#0xf0000000
28752  addeq r11,r11,#0x10000000
28753  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
28754  movs r1,r11,asr #24
28755  bicne r10,r10,#0x40000000 ;@ Z
28756  orr r10,r10,r3,lsl #28 ;@ save V
28757  orr r10,r10,#0x20000000 ;@ C
28758
28759;@ EaWrite: Write r1 into '-(a0)' (address in r6):
28760  and r1,r1,#0xff
28761  bic r0,r6,#0xff000000
28762  bl m68k_write8 ;@ Call write8(r0,r1) handler
28763
28764finish4820:
28765  tst r11,r11
28766  orrmi r10,r10,#0x80000000 ;@ N
28767  str r10,[r7,#0x4c] ;@ Save X
28768
28769  ldr r6,[r7,#0x54]
28770  ldr r5,[r7,#0x5c] ;@ Load Cycles
28771  ldrh r8,[r4],#2 ;@ Fetch next opcode
28772  subs r5,r5,#14 ;@ Subtract cycles
28773  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28774  b CycloneEnd
28775
28776;@ ---------- [4827] nbcd -(a7) uses Op4827 ----------
28777Op4827:
28778  str r4,[r7,#0x50] ;@ Save prev PC + 2
28779  str r5,[r7,#0x5c] ;@ Save Cycles
28780
28781;@ EaCalc : Get '-(a7)' into r6:
28782  ldr r6,[r7,#0x3c] ;@ A7
28783  sub r6,r6,#2 ;@ Pre-decrement An
28784  str r6,[r7,#0x3c] ;@ A7
28785;@ EaRead : Read '-(a7)' (address in r6) into r0:
28786  str r4,[r7,#0x40] ;@ Save PC
28787  bic r0,r6,#0xff000000
28788  bl m68k_read8 ;@ Call read8(r0) handler
28789
28790  ldr r2,[r7,#0x4c]
28791  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
28792  mov r0,r0,asl #24
28793  and r2,r2,#0x20000000
28794  add r2,r0,r2,lsr #5 ;@ add X
28795  rsb r11,r2,#0x9a000000 ;@ do arithmetic
28796  cmp r11,#0x9a000000
28797  beq finish4827
28798
28799  mvn r3,r11,lsr #31 ;@ Undefined V behavior
28800  and r2,r11,#0x0f000000
28801  cmp r2,#0x0a000000
28802  andeq r11,r11,#0xf0000000
28803  addeq r11,r11,#0x10000000
28804  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
28805  movs r1,r11,asr #24
28806  bicne r10,r10,#0x40000000 ;@ Z
28807  orr r10,r10,r3,lsl #28 ;@ save V
28808  orr r10,r10,#0x20000000 ;@ C
28809
28810;@ EaWrite: Write r1 into '-(a7)' (address in r6):
28811  and r1,r1,#0xff
28812  bic r0,r6,#0xff000000
28813  bl m68k_write8 ;@ Call write8(r0,r1) handler
28814
28815finish4827:
28816  tst r11,r11
28817  orrmi r10,r10,#0x80000000 ;@ N
28818  str r10,[r7,#0x4c] ;@ Save X
28819
28820  ldr r6,[r7,#0x54]
28821  ldr r5,[r7,#0x5c] ;@ Load Cycles
28822  ldrh r8,[r4],#2 ;@ Fetch next opcode
28823  subs r5,r5,#14 ;@ Subtract cycles
28824  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28825  b CycloneEnd
28826
28827;@ ---------- [4828] nbcd ($3333,a0) uses Op4828 ----------
28828Op4828:
28829  str r4,[r7,#0x50] ;@ Save prev PC + 2
28830  str r5,[r7,#0x5c] ;@ Save Cycles
28831
28832;@ EaCalc : Get '($3333,a0)' into r6:
28833  ldrsh r0,[r4],#2 ;@ Fetch offset
28834  and r2,r8,#0x000f
28835  ldr r2,[r7,r2,lsl #2]
28836  add r6,r0,r2 ;@ Add on offset
28837;@ EaRead : Read '($3333,a0)' (address in r6) into r0:
28838  str r4,[r7,#0x40] ;@ Save PC
28839  bic r0,r6,#0xff000000
28840  bl m68k_read8 ;@ Call read8(r0) handler
28841
28842  ldr r2,[r7,#0x4c]
28843  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
28844  mov r0,r0,asl #24
28845  and r2,r2,#0x20000000
28846  add r2,r0,r2,lsr #5 ;@ add X
28847  rsb r11,r2,#0x9a000000 ;@ do arithmetic
28848  cmp r11,#0x9a000000
28849  beq finish4828
28850
28851  mvn r3,r11,lsr #31 ;@ Undefined V behavior
28852  and r2,r11,#0x0f000000
28853  cmp r2,#0x0a000000
28854  andeq r11,r11,#0xf0000000
28855  addeq r11,r11,#0x10000000
28856  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
28857  movs r1,r11,asr #24
28858  bicne r10,r10,#0x40000000 ;@ Z
28859  orr r10,r10,r3,lsl #28 ;@ save V
28860  orr r10,r10,#0x20000000 ;@ C
28861
28862;@ EaWrite: Write r1 into '($3333,a0)' (address in r6):
28863  and r1,r1,#0xff
28864  bic r0,r6,#0xff000000
28865  bl m68k_write8 ;@ Call write8(r0,r1) handler
28866
28867finish4828:
28868  tst r11,r11
28869  orrmi r10,r10,#0x80000000 ;@ N
28870  str r10,[r7,#0x4c] ;@ Save X
28871
28872  ldr r6,[r7,#0x54]
28873  ldr r5,[r7,#0x5c] ;@ Load Cycles
28874  ldrh r8,[r4],#2 ;@ Fetch next opcode
28875  subs r5,r5,#16 ;@ Subtract cycles
28876  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28877  b CycloneEnd
28878
28879;@ ---------- [4830] nbcd ($33,a0,d3.w*2) uses Op4830 ----------
28880Op4830:
28881  str r4,[r7,#0x50] ;@ Save prev PC + 2
28882  str r5,[r7,#0x5c] ;@ Save Cycles
28883
28884;@ EaCalc : Get '($33,a0,d3.w*2)' into r6:
28885;@ Get extension word into r3:
28886  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
28887  mov r2,r3,lsr #10
28888  tst r3,#0x0800 ;@ Is Rn Word or Long
28889  and r2,r2,#0x3c ;@ r2=Index of Rn
28890  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
28891  ldrne   r2,[r7,r2] ;@ r2=Rn.l
28892  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
28893  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
28894  and r2,r8,#0x000f
28895  orr r2,r2,#0x8 ;@ A0-7
28896  ldr r2,[r7,r2,lsl #2]
28897  add r6,r2,r3 ;@ r6=Disp+An+Rn
28898;@ EaRead : Read '($33,a0,d3.w*2)' (address in r6) into r0:
28899  str r4,[r7,#0x40] ;@ Save PC
28900  bic r0,r6,#0xff000000
28901  bl m68k_read8 ;@ Call read8(r0) handler
28902
28903  ldr r2,[r7,#0x4c]
28904  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
28905  mov r0,r0,asl #24
28906  and r2,r2,#0x20000000
28907  add r2,r0,r2,lsr #5 ;@ add X
28908  rsb r11,r2,#0x9a000000 ;@ do arithmetic
28909  cmp r11,#0x9a000000
28910  beq finish4830
28911
28912  mvn r3,r11,lsr #31 ;@ Undefined V behavior
28913  and r2,r11,#0x0f000000
28914  cmp r2,#0x0a000000
28915  andeq r11,r11,#0xf0000000
28916  addeq r11,r11,#0x10000000
28917  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
28918  movs r1,r11,asr #24
28919  bicne r10,r10,#0x40000000 ;@ Z
28920  orr r10,r10,r3,lsl #28 ;@ save V
28921  orr r10,r10,#0x20000000 ;@ C
28922
28923;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r6):
28924  and r1,r1,#0xff
28925  bic r0,r6,#0xff000000
28926  bl m68k_write8 ;@ Call write8(r0,r1) handler
28927
28928finish4830:
28929  tst r11,r11
28930  orrmi r10,r10,#0x80000000 ;@ N
28931  str r10,[r7,#0x4c] ;@ Save X
28932
28933  ldr r6,[r7,#0x54]
28934  ldr r5,[r7,#0x5c] ;@ Load Cycles
28935  ldrh r8,[r4],#2 ;@ Fetch next opcode
28936  subs r5,r5,#18 ;@ Subtract cycles
28937  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28938  b CycloneEnd
28939
28940;@ ---------- [4838] nbcd $3333.w uses Op4838 ----------
28941Op4838:
28942  str r4,[r7,#0x50] ;@ Save prev PC + 2
28943  str r5,[r7,#0x5c] ;@ Save Cycles
28944
28945;@ EaCalc : Get '$3333.w' into r6:
28946  ldrsh r6,[r4],#2 ;@ Fetch Absolute Short address
28947;@ EaRead : Read '$3333.w' (address in r6) into r0:
28948  str r4,[r7,#0x40] ;@ Save PC
28949  bic r0,r6,#0xff000000
28950  bl m68k_read8 ;@ Call read8(r0) handler
28951
28952  ldr r2,[r7,#0x4c]
28953  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
28954  mov r0,r0,asl #24
28955  and r2,r2,#0x20000000
28956  add r2,r0,r2,lsr #5 ;@ add X
28957  rsb r11,r2,#0x9a000000 ;@ do arithmetic
28958  cmp r11,#0x9a000000
28959  beq finish4838
28960
28961  mvn r3,r11,lsr #31 ;@ Undefined V behavior
28962  and r2,r11,#0x0f000000
28963  cmp r2,#0x0a000000
28964  andeq r11,r11,#0xf0000000
28965  addeq r11,r11,#0x10000000
28966  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
28967  movs r1,r11,asr #24
28968  bicne r10,r10,#0x40000000 ;@ Z
28969  orr r10,r10,r3,lsl #28 ;@ save V
28970  orr r10,r10,#0x20000000 ;@ C
28971
28972;@ EaWrite: Write r1 into '$3333.w' (address in r6):
28973  and r1,r1,#0xff
28974  bic r0,r6,#0xff000000
28975  bl m68k_write8 ;@ Call write8(r0,r1) handler
28976
28977finish4838:
28978  tst r11,r11
28979  orrmi r10,r10,#0x80000000 ;@ N
28980  str r10,[r7,#0x4c] ;@ Save X
28981
28982  ldr r6,[r7,#0x54]
28983  ldr r5,[r7,#0x5c] ;@ Load Cycles
28984  ldrh r8,[r4],#2 ;@ Fetch next opcode
28985  subs r5,r5,#16 ;@ Subtract cycles
28986  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28987  b CycloneEnd
28988
28989;@ ---------- [4839] nbcd $33333333.l uses Op4839 ----------
28990Op4839:
28991  str r4,[r7,#0x50] ;@ Save prev PC + 2
28992  str r5,[r7,#0x5c] ;@ Save Cycles
28993
28994;@ EaCalc : Get '$33333333.l' into r6:
28995  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
28996  ldrh r0,[r4],#2
28997  orr r6,r0,r2,lsl #16
28998;@ EaRead : Read '$33333333.l' (address in r6) into r0:
28999  str r4,[r7,#0x40] ;@ Save PC
29000  bic r0,r6,#0xff000000
29001  bl m68k_read8 ;@ Call read8(r0) handler
29002
29003  ldr r2,[r7,#0x4c]
29004  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
29005  mov r0,r0,asl #24
29006  and r2,r2,#0x20000000
29007  add r2,r0,r2,lsr #5 ;@ add X
29008  rsb r11,r2,#0x9a000000 ;@ do arithmetic
29009  cmp r11,#0x9a000000
29010  beq finish4839
29011
29012  mvn r3,r11,lsr #31 ;@ Undefined V behavior
29013  and r2,r11,#0x0f000000
29014  cmp r2,#0x0a000000
29015  andeq r11,r11,#0xf0000000
29016  addeq r11,r11,#0x10000000
29017  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
29018  movs r1,r11,asr #24
29019  bicne r10,r10,#0x40000000 ;@ Z
29020  orr r10,r10,r3,lsl #28 ;@ save V
29021  orr r10,r10,#0x20000000 ;@ C
29022
29023;@ EaWrite: Write r1 into '$33333333.l' (address in r6):
29024  and r1,r1,#0xff
29025  bic r0,r6,#0xff000000
29026  bl m68k_write8 ;@ Call write8(r0,r1) handler
29027
29028finish4839:
29029  tst r11,r11
29030  orrmi r10,r10,#0x80000000 ;@ N
29031  str r10,[r7,#0x4c] ;@ Save X
29032
29033  ldr r6,[r7,#0x54]
29034  ldr r5,[r7,#0x5c] ;@ Load Cycles
29035  ldrh r8,[r4],#2 ;@ Fetch next opcode
29036  subs r5,r5,#20 ;@ Subtract cycles
29037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29038  b CycloneEnd
29039
29040;@ ---------- [4850] pea (a0) uses Op4850 ----------
29041Op4850:
29042  str r4,[r7,#0x50] ;@ Save prev PC + 2
29043  str r5,[r7,#0x5c] ;@ Save Cycles
29044
29045  ldr r11,[r7,#0x3c]
29046;@ EaCalc : Get '(a0)' into r1:
29047  and r2,r8,#0x000f
29048  orr r2,r2,#0x8 ;@ A0-7
29049  ldr r1,[r7,r2,lsl #2]
29050
29051  sub r0,r11,#4 ;@ Predecrement A7
29052  str r0,[r7,#0x3c] ;@ Save A7
29053
29054  str r4,[r7,#0x40] ;@ Save PC
29055  bic r0,r0,#0xff000000
29056  bl m68k_write32 ;@ Call write32(r0,r1) handler
29057
29058  ldr r5,[r7,#0x5c] ;@ Load Cycles
29059  ldrh r8,[r4],#2 ;@ Fetch next opcode
29060  subs r5,r5,#12 ;@ Subtract cycles
29061  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29062  b CycloneEnd
29063
29064;@ ---------- [4868] pea ($3333,a0) uses Op4868 ----------
29065Op4868:
29066  str r4,[r7,#0x50] ;@ Save prev PC + 2
29067  str r5,[r7,#0x5c] ;@ Save Cycles
29068
29069  ldr r11,[r7,#0x3c]
29070;@ EaCalc : Get '($3333,a0)' into r1:
29071  ldrsh r0,[r4],#2 ;@ Fetch offset
29072  and r2,r8,#0x000f
29073  ldr r2,[r7,r2,lsl #2]
29074  add r1,r0,r2 ;@ Add on offset
29075
29076  sub r0,r11,#4 ;@ Predecrement A7
29077  str r0,[r7,#0x3c] ;@ Save A7
29078
29079  str r4,[r7,#0x40] ;@ Save PC
29080  bic r0,r0,#0xff000000
29081  bl m68k_write32 ;@ Call write32(r0,r1) handler
29082
29083  ldr r5,[r7,#0x5c] ;@ Load Cycles
29084  ldrh r8,[r4],#2 ;@ Fetch next opcode
29085  subs r5,r5,#16 ;@ Subtract cycles
29086  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29087  b CycloneEnd
29088
29089;@ ---------- [4870] pea ($33,a0,d3.w*2) uses Op4870 ----------
29090Op4870:
29091  str r4,[r7,#0x50] ;@ Save prev PC + 2
29092  str r5,[r7,#0x5c] ;@ Save Cycles
29093
29094  ldr r11,[r7,#0x3c]
29095;@ EaCalc : Get '($33,a0,d3.w*2)' into r1:
29096;@ Get extension word into r3:
29097  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
29098  mov r2,r3,lsr #10
29099  tst r3,#0x0800 ;@ Is Rn Word or Long
29100  and r2,r2,#0x3c ;@ r2=Index of Rn
29101  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
29102  ldrne   r2,[r7,r2] ;@ r2=Rn.l
29103  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
29104  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
29105  and r2,r8,#0x000f
29106  orr r2,r2,#0x8 ;@ A0-7
29107  ldr r2,[r7,r2,lsl #2]
29108  add r1,r2,r3 ;@ r1=Disp+An+Rn
29109
29110  sub r0,r11,#4 ;@ Predecrement A7
29111  str r0,[r7,#0x3c] ;@ Save A7
29112
29113  str r4,[r7,#0x40] ;@ Save PC
29114  bic r0,r0,#0xff000000
29115  bl m68k_write32 ;@ Call write32(r0,r1) handler
29116
29117  ldr r5,[r7,#0x5c] ;@ Load Cycles
29118  ldrh r8,[r4],#2 ;@ Fetch next opcode
29119  subs r5,r5,#20 ;@ Subtract cycles
29120  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29121  b CycloneEnd
29122
29123;@ ---------- [4878] pea $3333.w uses Op4878 ----------
29124Op4878:
29125  str r4,[r7,#0x50] ;@ Save prev PC + 2
29126  str r5,[r7,#0x5c] ;@ Save Cycles
29127
29128  ldr r11,[r7,#0x3c]
29129;@ EaCalc : Get '$3333.w' into r1:
29130  ldrsh r1,[r4],#2 ;@ Fetch Absolute Short address
29131
29132  sub r0,r11,#4 ;@ Predecrement A7
29133  str r0,[r7,#0x3c] ;@ Save A7
29134
29135  str r4,[r7,#0x40] ;@ Save PC
29136  bic r0,r0,#0xff000000
29137  bl m68k_write32 ;@ Call write32(r0,r1) handler
29138
29139  ldr r5,[r7,#0x5c] ;@ Load Cycles
29140  ldrh r8,[r4],#2 ;@ Fetch next opcode
29141  subs r5,r5,#16 ;@ Subtract cycles
29142  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29143  b CycloneEnd
29144
29145;@ ---------- [4879] pea $33333333.l uses Op4879 ----------
29146Op4879:
29147  str r4,[r7,#0x50] ;@ Save prev PC + 2
29148  str r5,[r7,#0x5c] ;@ Save Cycles
29149
29150  ldr r11,[r7,#0x3c]
29151;@ EaCalc : Get '$33333333.l' into r1:
29152  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
29153  ldrh r0,[r4],#2
29154  orr r1,r0,r2,lsl #16
29155
29156  sub r0,r11,#4 ;@ Predecrement A7
29157  str r0,[r7,#0x3c] ;@ Save A7
29158
29159  str r4,[r7,#0x40] ;@ Save PC
29160  bic r0,r0,#0xff000000
29161  bl m68k_write32 ;@ Call write32(r0,r1) handler
29162
29163  ldr r5,[r7,#0x5c] ;@ Load Cycles
29164  ldrh r8,[r4],#2 ;@ Fetch next opcode
29165  subs r5,r5,#20 ;@ Subtract cycles
29166  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29167  b CycloneEnd
29168
29169;@ ---------- [487a] pea ($3333,pc); =3335 uses Op487a ----------
29170Op487a:
29171  str r4,[r7,#0x50] ;@ Save prev PC + 2
29172  str r5,[r7,#0x5c] ;@ Save Cycles
29173
29174  ldr r11,[r7,#0x3c]
29175;@ EaCalc : Get '($3333,pc)' into r1:
29176  ldr r0,[r7,#0x60] ;@ Get Memory base
29177  sub r0,r4,r0 ;@ Real PC
29178  ldrsh r2,[r4],#2 ;@ Fetch extension
29179  add r1,r2,r0 ;@ ($nn,PC)
29180
29181  sub r0,r11,#4 ;@ Predecrement A7
29182  str r0,[r7,#0x3c] ;@ Save A7
29183
29184  str r4,[r7,#0x40] ;@ Save PC
29185  bic r0,r0,#0xff000000
29186  bl m68k_write32 ;@ Call write32(r0,r1) handler
29187
29188  ldr r5,[r7,#0x5c] ;@ Load Cycles
29189  ldrh r8,[r4],#2 ;@ Fetch next opcode
29190  subs r5,r5,#16 ;@ Subtract cycles
29191  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29192  b CycloneEnd
29193
29194;@ ---------- [487b] pea ($33,pc,d3.w*2); =35 uses Op487b ----------
29195Op487b:
29196  str r4,[r7,#0x50] ;@ Save prev PC + 2
29197  str r5,[r7,#0x5c] ;@ Save Cycles
29198
29199  ldr r11,[r7,#0x3c]
29200;@ EaCalc : Get '($33,pc,d3.w*2)' into r1:
29201  ldr r0,[r7,#0x60] ;@ Get Memory base
29202  ldrh r3,[r4] ;@ Get extension word
29203  sub r0,r4,r0 ;@ r0=PC
29204  add r4,r4,#2
29205  mov r2,r3,lsr #10
29206  tst r3,#0x0800 ;@ Is Rn Word or Long
29207  and r2,r2,#0x3c ;@ r2=Index of Rn
29208  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
29209  ldrne   r2,[r7,r2] ;@ r2=Rn.l
29210  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
29211  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
29212  add r1,r2,r0 ;@ r1=Disp+PC+Rn
29213
29214  sub r0,r11,#4 ;@ Predecrement A7
29215  str r0,[r7,#0x3c] ;@ Save A7
29216
29217  str r4,[r7,#0x40] ;@ Save PC
29218  bic r0,r0,#0xff000000
29219  bl m68k_write32 ;@ Call write32(r0,r1) handler
29220
29221  ldr r5,[r7,#0x5c] ;@ Load Cycles
29222  ldrh r8,[r4],#2 ;@ Fetch next opcode
29223  subs r5,r5,#20 ;@ Subtract cycles
29224  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29225  b CycloneEnd
29226
29227;@ ---------- [4880] ext.w d0 uses Op4880 ----------
29228Op4880:
29229;@ EaCalc : Get register index into r11:
29230  and r11,r8,#0x0007
29231  mov r11,r11,lsl #2
29232;@ EaRead : Read register[r11] into r0:
29233  ldr r0,[r7,r11]
29234
29235  movs r0,r0,asl #24
29236  and r10,r0,#0x80000000 ;@ r10=N_flag
29237  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
29238  mov r1,r0,asr #24
29239
29240;@ EaWrite: r1 into register[r11]:
29241  strh r1,[r7,r11]
29242
29243  ldrh r8,[r4],#2 ;@ Fetch next opcode
29244  subs r5,r5,#4 ;@ Subtract cycles
29245  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29246  b CycloneEnd
29247
29248;@ ---------- [4890] movem.w d0-d1/d4-d5/a0-a1/a4-a5, (a0) uses Op4890 ----------
29249Op4890:
29250  str r4,[r7,#0x50] ;@ Save prev PC + 2
29251  str r5,[r7,#0x5c] ;@ Save Cycles
29252  mov r5,#0
29253
29254  ldrh r11,[r4],#2 ;@ r11=register mask
29255
29256;@ Get the address into r6:
29257;@ EaCalc : Get '(a0)' into r6:
29258  and r2,r8,#0x000f
29259  orr r2,r2,#0x8 ;@ A0-7
29260  ldr r6,[r7,r2,lsl #2]
29261  str r4,[r7,#0x40] ;@ Save PC
29262;@ r4=Register Index*4:
29263  mov r4,#-4
29264
29265  tst r11,r11
29266  beq NoRegs4890
29267
29268Movemloop4890:
29269  add r4,r4,#4 ;@ r4=Next Register
29270  movs r11,r11,lsr #1
29271  bcc Movemloop4890
29272
29273  ;@ Copy register to memory:
29274  ldr r1,[r7,r4] ;@ Load value from Dn/An
29275;@ EaWrite: Write r1 into '(a0)' (address in r6):
29276  uxth r1,r1 ;@ zero extend
29277  bic r0,r6,#0xff000000
29278  bl m68k_write16 ;@ Call write16(r0,r1) handler
29279
29280  add r6,r6,#2 ;@ Post-increment address
29281  sub r5,r5,#4 ;@ Take some cycles
29282  tst r11,r11
29283  bne Movemloop4890
29284
29285NoRegs4890:
29286  ldr r4,[r7,#0x40]
29287  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29288
29289  ldr r0,[r7,#0x5c] ;@ Load Cycles
29290  ldrh r8,[r4],#2 ;@ Fetch next opcode
29291  add r5,r0,r5
29292  subs r5,r5,#8 ;@ Subtract cycles
29293  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29294  b CycloneEnd
29295
29296
29297;@ ---------- [48a0] movem.w d2-d3/d6-d7/a2-a3/a6-a7, -(a0) uses Op48a0 ----------
29298Op48a0:
29299  str r4,[r7,#0x50] ;@ Save prev PC + 2
29300  str r5,[r7,#0x5c] ;@ Save Cycles
29301  mov r5,#0
29302
29303  ldrh r11,[r4],#2 ;@ r11=register mask
29304
29305;@ Get the address into r6:
29306;@ EaCalc : Get '(a0)' into r6:
29307  and r2,r8,#0x000f
29308  orr r2,r2,#0x8 ;@ A0-7
29309  ldr r6,[r7,r2,lsl #2]
29310  str r4,[r7,#0x40] ;@ Save PC
29311;@ r4=Register Index*4:
29312  mov r4,#0x40 ;@ order reversed for -(An)
29313
29314  tst r11,r11
29315  beq NoRegs48a0
29316
29317Movemloop48a0:
29318  add r4,r4,#-4 ;@ r4=Next Register
29319  movs r11,r11,lsr #1
29320  bcc Movemloop48a0
29321
29322  sub r6,r6,#2 ;@ Pre-decrement address
29323  ;@ Copy register to memory:
29324  ldr r1,[r7,r4] ;@ Load value from Dn/An
29325;@ EaWrite: Write r1 into '-(a0)' (address in r6):
29326  uxth r1,r1 ;@ zero extend
29327  bic r0,r6,#0xff000000
29328  bl m68k_write16 ;@ Call write16(r0,r1) handler
29329
29330  sub r5,r5,#4 ;@ Take some cycles
29331  tst r11,r11
29332  bne Movemloop48a0
29333
29334;@ Write back address:
29335;@ EaCalc : Get register index into r0:
29336  and r0,r8,#0x0007
29337  orr r0,r0,#0x8 ;@ A0-7
29338;@ EaWrite: r6 into register[r0]:
29339  str r6,[r7,r0,lsl #2]
29340
29341NoRegs48a0:
29342  ldr r4,[r7,#0x40]
29343  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29344
29345  ldr r0,[r7,#0x5c] ;@ Load Cycles
29346  ldrh r8,[r4],#2 ;@ Fetch next opcode
29347  add r5,r0,r5
29348  subs r5,r5,#8 ;@ Subtract cycles
29349  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29350  b CycloneEnd
29351
29352
29353;@ ---------- [48a8] movem.w d0-d1/d4-d5/a0-a1/a4-a5, ($3333,a0) uses Op48a8 ----------
29354Op48a8:
29355  str r4,[r7,#0x50] ;@ Save prev PC + 2
29356  str r5,[r7,#0x5c] ;@ Save Cycles
29357  mov r5,#0
29358
29359  ldrh r11,[r4],#2 ;@ r11=register mask
29360
29361;@ Get the address into r6:
29362;@ EaCalc : Get '($3333,a0)' into r6:
29363  ldrsh r0,[r4],#2 ;@ Fetch offset
29364  and r2,r8,#0x000f
29365  ldr r2,[r7,r2,lsl #2]
29366  add r6,r0,r2 ;@ Add on offset
29367  str r4,[r7,#0x40] ;@ Save PC
29368;@ r4=Register Index*4:
29369  mov r4,#-4
29370
29371  tst r11,r11
29372  beq NoRegs48a8
29373
29374Movemloop48a8:
29375  add r4,r4,#4 ;@ r4=Next Register
29376  movs r11,r11,lsr #1
29377  bcc Movemloop48a8
29378
29379  ;@ Copy register to memory:
29380  ldr r1,[r7,r4] ;@ Load value from Dn/An
29381;@ EaWrite: Write r1 into '($3333,a0)' (address in r6):
29382  uxth r1,r1 ;@ zero extend
29383  bic r0,r6,#0xff000000
29384  bl m68k_write16 ;@ Call write16(r0,r1) handler
29385
29386  add r6,r6,#2 ;@ Post-increment address
29387  sub r5,r5,#4 ;@ Take some cycles
29388  tst r11,r11
29389  bne Movemloop48a8
29390
29391NoRegs48a8:
29392  ldr r4,[r7,#0x40]
29393  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29394
29395  ldr r0,[r7,#0x5c] ;@ Load Cycles
29396  ldrh r8,[r4],#2 ;@ Fetch next opcode
29397  add r5,r0,r5
29398  subs r5,r5,#12 ;@ Subtract cycles
29399  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29400  b CycloneEnd
29401
29402
29403;@ ---------- [48b0] movem.w d0-d1/d4-d5/a0-a1/a4-a5, ($33,a0,d3.w*2) uses Op48b0 ----------
29404Op48b0:
29405  str r4,[r7,#0x50] ;@ Save prev PC + 2
29406  str r5,[r7,#0x5c] ;@ Save Cycles
29407  mov r5,#0
29408
29409  ldrh r11,[r4],#2 ;@ r11=register mask
29410
29411;@ Get the address into r6:
29412;@ EaCalc : Get '($33,a0,d3.w*2)' into r6:
29413;@ Get extension word into r3:
29414  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
29415  mov r2,r3,lsr #10
29416  tst r3,#0x0800 ;@ Is Rn Word or Long
29417  and r2,r2,#0x3c ;@ r2=Index of Rn
29418  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
29419  ldrne   r2,[r7,r2] ;@ r2=Rn.l
29420  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
29421  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
29422  and r2,r8,#0x000f
29423  orr r2,r2,#0x8 ;@ A0-7
29424  ldr r2,[r7,r2,lsl #2]
29425  add r6,r2,r3 ;@ r6=Disp+An+Rn
29426  str r4,[r7,#0x40] ;@ Save PC
29427;@ r4=Register Index*4:
29428  mov r4,#-4
29429
29430  tst r11,r11
29431  beq NoRegs48b0
29432
29433Movemloop48b0:
29434  add r4,r4,#4 ;@ r4=Next Register
29435  movs r11,r11,lsr #1
29436  bcc Movemloop48b0
29437
29438  ;@ Copy register to memory:
29439  ldr r1,[r7,r4] ;@ Load value from Dn/An
29440;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r6):
29441  uxth r1,r1 ;@ zero extend
29442  bic r0,r6,#0xff000000
29443  bl m68k_write16 ;@ Call write16(r0,r1) handler
29444
29445  add r6,r6,#2 ;@ Post-increment address
29446  sub r5,r5,#4 ;@ Take some cycles
29447  tst r11,r11
29448  bne Movemloop48b0
29449
29450NoRegs48b0:
29451  ldr r4,[r7,#0x40]
29452  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29453
29454  ldr r0,[r7,#0x5c] ;@ Load Cycles
29455  ldrh r8,[r4],#2 ;@ Fetch next opcode
29456  add r5,r0,r5
29457  subs r5,r5,#14 ;@ Subtract cycles
29458  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29459  b CycloneEnd
29460
29461
29462;@ ---------- [48b8] movem.w d0-d1/d4-d5/a0-a1/a4-a5, $3333.w uses Op48b8 ----------
29463Op48b8:
29464  str r4,[r7,#0x50] ;@ Save prev PC + 2
29465  str r5,[r7,#0x5c] ;@ Save Cycles
29466  mov r5,#0
29467
29468  ldrh r11,[r4],#2 ;@ r11=register mask
29469
29470;@ Get the address into r6:
29471;@ EaCalc : Get '$3333.w' into r6:
29472  ldrsh r6,[r4],#2 ;@ Fetch Absolute Short address
29473  str r4,[r7,#0x40] ;@ Save PC
29474;@ r4=Register Index*4:
29475  mov r4,#-4
29476
29477  tst r11,r11
29478  beq NoRegs48b8
29479
29480Movemloop48b8:
29481  add r4,r4,#4 ;@ r4=Next Register
29482  movs r11,r11,lsr #1
29483  bcc Movemloop48b8
29484
29485  ;@ Copy register to memory:
29486  ldr r1,[r7,r4] ;@ Load value from Dn/An
29487;@ EaWrite: Write r1 into '$3333.w' (address in r6):
29488  uxth r1,r1 ;@ zero extend
29489  bic r0,r6,#0xff000000
29490  bl m68k_write16 ;@ Call write16(r0,r1) handler
29491
29492  add r6,r6,#2 ;@ Post-increment address
29493  sub r5,r5,#4 ;@ Take some cycles
29494  tst r11,r11
29495  bne Movemloop48b8
29496
29497NoRegs48b8:
29498  ldr r4,[r7,#0x40]
29499  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29500
29501  ldr r0,[r7,#0x5c] ;@ Load Cycles
29502  ldrh r8,[r4],#2 ;@ Fetch next opcode
29503  add r5,r0,r5
29504  subs r5,r5,#12 ;@ Subtract cycles
29505  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29506  b CycloneEnd
29507
29508
29509;@ ---------- [48b9] movem.w d0-d1/d4-d5/a0-a1/a4-a5, $33333333.l uses Op48b9 ----------
29510Op48b9:
29511  str r4,[r7,#0x50] ;@ Save prev PC + 2
29512  str r5,[r7,#0x5c] ;@ Save Cycles
29513  mov r5,#0
29514
29515  ldrh r11,[r4],#2 ;@ r11=register mask
29516
29517;@ Get the address into r6:
29518;@ EaCalc : Get '$33333333.l' into r6:
29519  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
29520  ldrh r0,[r4],#2
29521  orr r6,r0,r2,lsl #16
29522  str r4,[r7,#0x40] ;@ Save PC
29523;@ r4=Register Index*4:
29524  mov r4,#-4
29525
29526  tst r11,r11
29527  beq NoRegs48b9
29528
29529Movemloop48b9:
29530  add r4,r4,#4 ;@ r4=Next Register
29531  movs r11,r11,lsr #1
29532  bcc Movemloop48b9
29533
29534  ;@ Copy register to memory:
29535  ldr r1,[r7,r4] ;@ Load value from Dn/An
29536;@ EaWrite: Write r1 into '$33333333.l' (address in r6):
29537  uxth r1,r1 ;@ zero extend
29538  bic r0,r6,#0xff000000
29539  bl m68k_write16 ;@ Call write16(r0,r1) handler
29540
29541  add r6,r6,#2 ;@ Post-increment address
29542  sub r5,r5,#4 ;@ Take some cycles
29543  tst r11,r11
29544  bne Movemloop48b9
29545
29546NoRegs48b9:
29547  ldr r4,[r7,#0x40]
29548  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29549
29550  ldr r0,[r7,#0x5c] ;@ Load Cycles
29551  ldrh r8,[r4],#2 ;@ Fetch next opcode
29552  add r5,r0,r5
29553  subs r5,r5,#16 ;@ Subtract cycles
29554  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29555  b CycloneEnd
29556
29557
29558;@ ---------- [48c0] ext.l d0 uses Op48c0 ----------
29559Op48c0:
29560;@ EaCalc : Get register index into r11:
29561  and r11,r8,#0x0007
29562;@ EaRead : Read register[r11] into r0:
29563  ldr r0,[r7,r11,lsl #2]
29564
29565  movs r0,r0,asl #16
29566  and r10,r0,#0x80000000 ;@ r10=N_flag
29567  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
29568  mov r1,r0,asr #16
29569
29570;@ EaWrite: r1 into register[r11]:
29571  str r1,[r7,r11,lsl #2]
29572
29573  ldrh r8,[r4],#2 ;@ Fetch next opcode
29574  subs r5,r5,#4 ;@ Subtract cycles
29575  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29576  b CycloneEnd
29577
29578;@ ---------- [48d0] movem.l d0-d1/d4-d5/a0-a1/a4-a5, (a0) uses Op48d0 ----------
29579Op48d0:
29580  str r4,[r7,#0x50] ;@ Save prev PC + 2
29581  str r5,[r7,#0x5c] ;@ Save Cycles
29582  mov r5,#0
29583
29584  ldrh r11,[r4],#2 ;@ r11=register mask
29585
29586;@ Get the address into r6:
29587;@ EaCalc : Get '(a0)' into r6:
29588  and r2,r8,#0x000f
29589  orr r2,r2,#0x8 ;@ A0-7
29590  ldr r6,[r7,r2,lsl #2]
29591  str r4,[r7,#0x40] ;@ Save PC
29592;@ r4=Register Index*4:
29593  mov r4,#-4
29594
29595  tst r11,r11
29596  beq NoRegs48d0
29597
29598Movemloop48d0:
29599  add r4,r4,#4 ;@ r4=Next Register
29600  movs r11,r11,lsr #1
29601  bcc Movemloop48d0
29602
29603  ;@ Copy register to memory:
29604  ldr r1,[r7,r4] ;@ Load value from Dn/An
29605;@ EaWrite: Write r1 into '(a0)' (address in r6):
29606  bic r0,r6,#0xff000000
29607  bl m68k_write32 ;@ Call write32(r0,r1) handler
29608
29609  add r6,r6,#4 ;@ Post-increment address
29610  sub r5,r5,#8 ;@ Take some cycles
29611  tst r11,r11
29612  bne Movemloop48d0
29613
29614NoRegs48d0:
29615  ldr r4,[r7,#0x40]
29616  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29617
29618  ldr r0,[r7,#0x5c] ;@ Load Cycles
29619  ldrh r8,[r4],#2 ;@ Fetch next opcode
29620  add r5,r0,r5
29621  subs r5,r5,#8 ;@ Subtract cycles
29622  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29623  b CycloneEnd
29624
29625
29626;@ ---------- [48e0] movem.l d2-d3/d6-d7/a2-a3/a6-a7, -(a0) uses Op48e0 ----------
29627Op48e0:
29628  str r4,[r7,#0x50] ;@ Save prev PC + 2
29629  str r5,[r7,#0x5c] ;@ Save Cycles
29630  mov r5,#0
29631
29632  ldrh r11,[r4],#2 ;@ r11=register mask
29633
29634;@ Get the address into r6:
29635;@ EaCalc : Get '(a0)' into r6:
29636  and r2,r8,#0x000f
29637  orr r2,r2,#0x8 ;@ A0-7
29638  ldr r6,[r7,r2,lsl #2]
29639  str r4,[r7,#0x40] ;@ Save PC
29640;@ r4=Register Index*4:
29641  mov r4,#0x40 ;@ order reversed for -(An)
29642
29643  tst r11,r11
29644  beq NoRegs48e0
29645
29646Movemloop48e0:
29647  add r4,r4,#-4 ;@ r4=Next Register
29648  movs r11,r11,lsr #1
29649  bcc Movemloop48e0
29650
29651  sub r6,r6,#4 ;@ Pre-decrement address
29652  ;@ Copy register to memory:
29653  ldr r1,[r7,r4] ;@ Load value from Dn/An
29654  add r0,r6,#2
29655;@ EaWrite: Write r1 into '-(a0)' (address in r0):
29656  uxth r1,r1 ;@ zero extend
29657  bic r0,r0,#0xff000000
29658  bl m68k_write16 ;@ Call write16(r0,r1) handler
29659
29660  ldr r1,[r7,r4] ;@ Load value from Dn/An
29661  mov r0,r6
29662;@ EaWrite: Write r1 into '-(a0)' (address in r0):
29663  mov r1,r1,lsr #16
29664  bic r0,r0,#0xff000000
29665  bl m68k_write16 ;@ Call write16(r0,r1) handler
29666
29667  sub r5,r5,#8 ;@ Take some cycles
29668  tst r11,r11
29669  bne Movemloop48e0
29670
29671;@ Write back address:
29672;@ EaCalc : Get register index into r0:
29673  and r0,r8,#0x0007
29674  orr r0,r0,#0x8 ;@ A0-7
29675;@ EaWrite: r6 into register[r0]:
29676  str r6,[r7,r0,lsl #2]
29677
29678NoRegs48e0:
29679  ldr r4,[r7,#0x40]
29680  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29681
29682  ldr r0,[r7,#0x5c] ;@ Load Cycles
29683  ldrh r8,[r4],#2 ;@ Fetch next opcode
29684  add r5,r0,r5
29685  subs r5,r5,#8 ;@ Subtract cycles
29686  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29687  b CycloneEnd
29688
29689
29690;@ ---------- [48e8] movem.l d0-d1/d4-d5/a0-a1/a4-a5, ($3333,a0) uses Op48e8 ----------
29691Op48e8:
29692  str r4,[r7,#0x50] ;@ Save prev PC + 2
29693  str r5,[r7,#0x5c] ;@ Save Cycles
29694  mov r5,#0
29695
29696  ldrh r11,[r4],#2 ;@ r11=register mask
29697
29698;@ Get the address into r6:
29699;@ EaCalc : Get '($3333,a0)' into r6:
29700  ldrsh r0,[r4],#2 ;@ Fetch offset
29701  and r2,r8,#0x000f
29702  ldr r2,[r7,r2,lsl #2]
29703  add r6,r0,r2 ;@ Add on offset
29704  str r4,[r7,#0x40] ;@ Save PC
29705;@ r4=Register Index*4:
29706  mov r4,#-4
29707
29708  tst r11,r11
29709  beq NoRegs48e8
29710
29711Movemloop48e8:
29712  add r4,r4,#4 ;@ r4=Next Register
29713  movs r11,r11,lsr #1
29714  bcc Movemloop48e8
29715
29716  ;@ Copy register to memory:
29717  ldr r1,[r7,r4] ;@ Load value from Dn/An
29718;@ EaWrite: Write r1 into '($3333,a0)' (address in r6):
29719  bic r0,r6,#0xff000000
29720  bl m68k_write32 ;@ Call write32(r0,r1) handler
29721
29722  add r6,r6,#4 ;@ Post-increment address
29723  sub r5,r5,#8 ;@ Take some cycles
29724  tst r11,r11
29725  bne Movemloop48e8
29726
29727NoRegs48e8:
29728  ldr r4,[r7,#0x40]
29729  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29730
29731  ldr r0,[r7,#0x5c] ;@ Load Cycles
29732  ldrh r8,[r4],#2 ;@ Fetch next opcode
29733  add r5,r0,r5
29734  subs r5,r5,#12 ;@ Subtract cycles
29735  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29736  b CycloneEnd
29737
29738
29739;@ ---------- [48f0] movem.l d0-d1/d4-d5/a0-a1/a4-a5, ($33,a0,d3.w*2) uses Op48f0 ----------
29740Op48f0:
29741  str r4,[r7,#0x50] ;@ Save prev PC + 2
29742  str r5,[r7,#0x5c] ;@ Save Cycles
29743  mov r5,#0
29744
29745  ldrh r11,[r4],#2 ;@ r11=register mask
29746
29747;@ Get the address into r6:
29748;@ EaCalc : Get '($33,a0,d3.w*2)' into r6:
29749;@ Get extension word into r3:
29750  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
29751  mov r2,r3,lsr #10
29752  tst r3,#0x0800 ;@ Is Rn Word or Long
29753  and r2,r2,#0x3c ;@ r2=Index of Rn
29754  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
29755  ldrne   r2,[r7,r2] ;@ r2=Rn.l
29756  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
29757  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
29758  and r2,r8,#0x000f
29759  orr r2,r2,#0x8 ;@ A0-7
29760  ldr r2,[r7,r2,lsl #2]
29761  add r6,r2,r3 ;@ r6=Disp+An+Rn
29762  str r4,[r7,#0x40] ;@ Save PC
29763;@ r4=Register Index*4:
29764  mov r4,#-4
29765
29766  tst r11,r11
29767  beq NoRegs48f0
29768
29769Movemloop48f0:
29770  add r4,r4,#4 ;@ r4=Next Register
29771  movs r11,r11,lsr #1
29772  bcc Movemloop48f0
29773
29774  ;@ Copy register to memory:
29775  ldr r1,[r7,r4] ;@ Load value from Dn/An
29776;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r6):
29777  bic r0,r6,#0xff000000
29778  bl m68k_write32 ;@ Call write32(r0,r1) handler
29779
29780  add r6,r6,#4 ;@ Post-increment address
29781  sub r5,r5,#8 ;@ Take some cycles
29782  tst r11,r11
29783  bne Movemloop48f0
29784
29785NoRegs48f0:
29786  ldr r4,[r7,#0x40]
29787  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29788
29789  ldr r0,[r7,#0x5c] ;@ Load Cycles
29790  ldrh r8,[r4],#2 ;@ Fetch next opcode
29791  add r5,r0,r5
29792  subs r5,r5,#14 ;@ Subtract cycles
29793  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29794  b CycloneEnd
29795
29796
29797;@ ---------- [48f8] movem.l d0-d1/d4-d5/a0-a1/a4-a5, $3333.w uses Op48f8 ----------
29798Op48f8:
29799  str r4,[r7,#0x50] ;@ Save prev PC + 2
29800  str r5,[r7,#0x5c] ;@ Save Cycles
29801  mov r5,#0
29802
29803  ldrh r11,[r4],#2 ;@ r11=register mask
29804
29805;@ Get the address into r6:
29806;@ EaCalc : Get '$3333.w' into r6:
29807  ldrsh r6,[r4],#2 ;@ Fetch Absolute Short address
29808  str r4,[r7,#0x40] ;@ Save PC
29809;@ r4=Register Index*4:
29810  mov r4,#-4
29811
29812  tst r11,r11
29813  beq NoRegs48f8
29814
29815Movemloop48f8:
29816  add r4,r4,#4 ;@ r4=Next Register
29817  movs r11,r11,lsr #1
29818  bcc Movemloop48f8
29819
29820  ;@ Copy register to memory:
29821  ldr r1,[r7,r4] ;@ Load value from Dn/An
29822;@ EaWrite: Write r1 into '$3333.w' (address in r6):
29823  bic r0,r6,#0xff000000
29824  bl m68k_write32 ;@ Call write32(r0,r1) handler
29825
29826  add r6,r6,#4 ;@ Post-increment address
29827  sub r5,r5,#8 ;@ Take some cycles
29828  tst r11,r11
29829  bne Movemloop48f8
29830
29831NoRegs48f8:
29832  ldr r4,[r7,#0x40]
29833  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29834
29835  ldr r0,[r7,#0x5c] ;@ Load Cycles
29836  ldrh r8,[r4],#2 ;@ Fetch next opcode
29837  add r5,r0,r5
29838  subs r5,r5,#12 ;@ Subtract cycles
29839  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29840  b CycloneEnd
29841
29842
29843;@ ---------- [48f9] movem.l d0-d1/d4-d5/a0-a1/a4-a5, $33333333.l uses Op48f9 ----------
29844Op48f9:
29845  str r4,[r7,#0x50] ;@ Save prev PC + 2
29846  str r5,[r7,#0x5c] ;@ Save Cycles
29847  mov r5,#0
29848
29849  ldrh r11,[r4],#2 ;@ r11=register mask
29850
29851;@ Get the address into r6:
29852;@ EaCalc : Get '$33333333.l' into r6:
29853  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
29854  ldrh r0,[r4],#2
29855  orr r6,r0,r2,lsl #16
29856  str r4,[r7,#0x40] ;@ Save PC
29857;@ r4=Register Index*4:
29858  mov r4,#-4
29859
29860  tst r11,r11
29861  beq NoRegs48f9
29862
29863Movemloop48f9:
29864  add r4,r4,#4 ;@ r4=Next Register
29865  movs r11,r11,lsr #1
29866  bcc Movemloop48f9
29867
29868  ;@ Copy register to memory:
29869  ldr r1,[r7,r4] ;@ Load value from Dn/An
29870;@ EaWrite: Write r1 into '$33333333.l' (address in r6):
29871  bic r0,r6,#0xff000000
29872  bl m68k_write32 ;@ Call write32(r0,r1) handler
29873
29874  add r6,r6,#4 ;@ Post-increment address
29875  sub r5,r5,#8 ;@ Take some cycles
29876  tst r11,r11
29877  bne Movemloop48f9
29878
29879NoRegs48f9:
29880  ldr r4,[r7,#0x40]
29881  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
29882
29883  ldr r0,[r7,#0x5c] ;@ Load Cycles
29884  ldrh r8,[r4],#2 ;@ Fetch next opcode
29885  add r5,r0,r5
29886  subs r5,r5,#16 ;@ Subtract cycles
29887  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29888  b CycloneEnd
29889
29890
29891;@ ---------- [4a00] tst.b d0 uses Op4a00 ----------
29892Op4a00:
29893;@ EaCalc : Get register index into r0:
29894  and r0,r8,#0x000f
29895;@ EaRead : Read register[r0] into r0:
29896  ldr r0,[r7,r0,lsl #2]
29897  movs r0,r0,asl #24
29898
29899  and r10,r0,#0x80000000 ;@ r10=N_flag
29900  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
29901
29902  ldrh r8,[r4],#2 ;@ Fetch next opcode
29903  subs r5,r5,#4 ;@ Subtract cycles
29904  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29905  b CycloneEnd
29906
29907;@ ---------- [4a10] tst.b (a0) uses Op4a10 ----------
29908Op4a10:
29909  str r4,[r7,#0x50] ;@ Save prev PC + 2
29910  str r5,[r7,#0x5c] ;@ Save Cycles
29911
29912;@ EaCalc : Get '(a0)' into r0:
29913  and r2,r8,#0x000f
29914  orr r2,r2,#0x8 ;@ A0-7
29915  ldr r0,[r7,r2,lsl #2]
29916;@ EaRead : Read '(a0)' (address in r0) into r0:
29917  str r4,[r7,#0x40] ;@ Save PC
29918  bic r0,r0,#0xff000000
29919  bl m68k_read8 ;@ Call read8(r0) handler
29920  movs r0,r0,asl #24
29921
29922  and r10,r0,#0x80000000 ;@ r10=N_flag
29923  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
29924
29925  ldr r5,[r7,#0x5c] ;@ Load Cycles
29926  ldrh r8,[r4],#2 ;@ Fetch next opcode
29927  subs r5,r5,#8 ;@ Subtract cycles
29928  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29929  b CycloneEnd
29930
29931;@ ---------- [4a18] tst.b (a0)+ uses Op4a18 ----------
29932Op4a18:
29933  str r4,[r7,#0x50] ;@ Save prev PC + 2
29934  str r5,[r7,#0x5c] ;@ Save Cycles
29935
29936;@ EaCalc : Get '(a0)+' into r0:
29937  and r2,r8,#0x000f
29938  ldr r0,[r7,r2,lsl #2]
29939  add r3,r0,#1 ;@ Post-increment An
29940  str r3,[r7,r2,lsl #2]
29941;@ EaRead : Read '(a0)+' (address in r0) into r0:
29942  str r4,[r7,#0x40] ;@ Save PC
29943  bic r0,r0,#0xff000000
29944  bl m68k_read8 ;@ Call read8(r0) handler
29945  movs r0,r0,asl #24
29946
29947  and r10,r0,#0x80000000 ;@ r10=N_flag
29948  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
29949
29950  ldr r5,[r7,#0x5c] ;@ Load Cycles
29951  ldrh r8,[r4],#2 ;@ Fetch next opcode
29952  subs r5,r5,#8 ;@ Subtract cycles
29953  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29954  b CycloneEnd
29955
29956;@ ---------- [4a1f] tst.b (a7)+ uses Op4a1f ----------
29957Op4a1f:
29958  str r4,[r7,#0x50] ;@ Save prev PC + 2
29959  str r5,[r7,#0x5c] ;@ Save Cycles
29960
29961;@ EaCalc : Get '(a7)+' into r0:
29962  ldr r0,[r7,#0x3c] ;@ A7
29963  add r3,r0,#2 ;@ Post-increment An
29964  str r3,[r7,#0x3c] ;@ A7
29965;@ EaRead : Read '(a7)+' (address in r0) into r0:
29966  str r4,[r7,#0x40] ;@ Save PC
29967  bic r0,r0,#0xff000000
29968  bl m68k_read8 ;@ Call read8(r0) handler
29969  movs r0,r0,asl #24
29970
29971  and r10,r0,#0x80000000 ;@ r10=N_flag
29972  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
29973
29974  ldr r5,[r7,#0x5c] ;@ Load Cycles
29975  ldrh r8,[r4],#2 ;@ Fetch next opcode
29976  subs r5,r5,#8 ;@ Subtract cycles
29977  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29978  b CycloneEnd
29979
29980;@ ---------- [4a20] tst.b -(a0) uses Op4a20 ----------
29981Op4a20:
29982  str r4,[r7,#0x50] ;@ Save prev PC + 2
29983  str r5,[r7,#0x5c] ;@ Save Cycles
29984
29985;@ EaCalc : Get '-(a0)' into r0:
29986  and r2,r8,#0x000f
29987  orr r2,r2,#0x8 ;@ A0-7
29988  ldr r0,[r7,r2,lsl #2]
29989  sub r0,r0,#1 ;@ Pre-decrement An
29990  str r0,[r7,r2,lsl #2]
29991;@ EaRead : Read '-(a0)' (address in r0) into r0:
29992  str r4,[r7,#0x40] ;@ Save PC
29993  bic r0,r0,#0xff000000
29994  bl m68k_read8 ;@ Call read8(r0) handler
29995  movs r0,r0,asl #24
29996
29997  and r10,r0,#0x80000000 ;@ r10=N_flag
29998  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
29999
30000  ldr r5,[r7,#0x5c] ;@ Load Cycles
30001  ldrh r8,[r4],#2 ;@ Fetch next opcode
30002  subs r5,r5,#10 ;@ Subtract cycles
30003  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30004  b CycloneEnd
30005
30006;@ ---------- [4a27] tst.b -(a7) uses Op4a27 ----------
30007Op4a27:
30008  str r4,[r7,#0x50] ;@ Save prev PC + 2
30009  str r5,[r7,#0x5c] ;@ Save Cycles
30010
30011;@ EaCalc : Get '-(a7)' into r0:
30012  ldr r0,[r7,#0x3c] ;@ A7
30013  sub r0,r0,#2 ;@ Pre-decrement An
30014  str r0,[r7,#0x3c] ;@ A7
30015;@ EaRead : Read '-(a7)' (address in r0) into r0:
30016  str r4,[r7,#0x40] ;@ Save PC
30017  bic r0,r0,#0xff000000
30018  bl m68k_read8 ;@ Call read8(r0) handler
30019  movs r0,r0,asl #24
30020
30021  and r10,r0,#0x80000000 ;@ r10=N_flag
30022  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30023
30024  ldr r5,[r7,#0x5c] ;@ Load Cycles
30025  ldrh r8,[r4],#2 ;@ Fetch next opcode
30026  subs r5,r5,#10 ;@ Subtract cycles
30027  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30028  b CycloneEnd
30029
30030;@ ---------- [4a30] tst.b ($33,a0,d3.w*2) uses Op4a30 ----------
30031Op4a30:
30032  str r4,[r7,#0x50] ;@ Save prev PC + 2
30033  str r5,[r7,#0x5c] ;@ Save Cycles
30034
30035;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
30036;@ Get extension word into r3:
30037  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
30038  mov r2,r3,lsr #10
30039  tst r3,#0x0800 ;@ Is Rn Word or Long
30040  and r2,r2,#0x3c ;@ r2=Index of Rn
30041  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
30042  ldrne   r2,[r7,r2] ;@ r2=Rn.l
30043  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
30044  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
30045  and r2,r8,#0x000f
30046  orr r2,r2,#0x8 ;@ A0-7
30047  ldr r2,[r7,r2,lsl #2]
30048  add r0,r2,r3 ;@ r0=Disp+An+Rn
30049;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
30050  str r4,[r7,#0x40] ;@ Save PC
30051  bic r0,r0,#0xff000000
30052  bl m68k_read8 ;@ Call read8(r0) handler
30053  movs r0,r0,asl #24
30054
30055  and r10,r0,#0x80000000 ;@ r10=N_flag
30056  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30057
30058  ldr r5,[r7,#0x5c] ;@ Load Cycles
30059  ldrh r8,[r4],#2 ;@ Fetch next opcode
30060  subs r5,r5,#14 ;@ Subtract cycles
30061  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30062  b CycloneEnd
30063
30064;@ ---------- [4a40] tst.w d0 uses Op4a40 ----------
30065Op4a40:
30066;@ EaCalc : Get register index into r0:
30067  and r0,r8,#0x000f
30068  mov r0,r0,lsl #2
30069;@ EaRead : Read register[r0] into r0:
30070  ldr r0,[r7,r0]
30071  movs r0,r0,asl #16
30072
30073  and r10,r0,#0x80000000 ;@ r10=N_flag
30074  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30075
30076  ldrh r8,[r4],#2 ;@ Fetch next opcode
30077  subs r5,r5,#4 ;@ Subtract cycles
30078  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30079  b CycloneEnd
30080
30081;@ ---------- [4a50] tst.w (a0) uses Op4a50 ----------
30082Op4a50:
30083  str r4,[r7,#0x50] ;@ Save prev PC + 2
30084  str r5,[r7,#0x5c] ;@ Save Cycles
30085
30086;@ EaCalc : Get '(a0)' into r0:
30087  and r2,r8,#0x000f
30088  orr r2,r2,#0x8 ;@ A0-7
30089  ldr r0,[r7,r2,lsl #2]
30090;@ EaRead : Read '(a0)' (address in r0) into r0:
30091  str r4,[r7,#0x40] ;@ Save PC
30092  bic r0,r0,#0xff000000
30093  bl m68k_read16 ;@ Call read16(r0) handler
30094  movs r0,r0,asl #16
30095
30096  and r10,r0,#0x80000000 ;@ r10=N_flag
30097  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30098
30099  ldr r5,[r7,#0x5c] ;@ Load Cycles
30100  ldrh r8,[r4],#2 ;@ Fetch next opcode
30101  subs r5,r5,#8 ;@ Subtract cycles
30102  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30103  b CycloneEnd
30104
30105;@ ---------- [4a58] tst.w (a0)+ uses Op4a58 ----------
30106Op4a58:
30107  str r4,[r7,#0x50] ;@ Save prev PC + 2
30108  str r5,[r7,#0x5c] ;@ Save Cycles
30109
30110;@ EaCalc : Get '(a0)+' into r0:
30111  and r2,r8,#0x000f
30112  ldr r0,[r7,r2,lsl #2]
30113  add r3,r0,#2 ;@ Post-increment An
30114  str r3,[r7,r2,lsl #2]
30115;@ EaRead : Read '(a0)+' (address in r0) into r0:
30116  str r4,[r7,#0x40] ;@ Save PC
30117  bic r0,r0,#0xff000000
30118  bl m68k_read16 ;@ Call read16(r0) handler
30119  movs r0,r0,asl #16
30120
30121  and r10,r0,#0x80000000 ;@ r10=N_flag
30122  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30123
30124  ldr r5,[r7,#0x5c] ;@ Load Cycles
30125  ldrh r8,[r4],#2 ;@ Fetch next opcode
30126  subs r5,r5,#8 ;@ Subtract cycles
30127  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30128  b CycloneEnd
30129
30130;@ ---------- [4a60] tst.w -(a0) uses Op4a60 ----------
30131Op4a60:
30132  str r4,[r7,#0x50] ;@ Save prev PC + 2
30133  str r5,[r7,#0x5c] ;@ Save Cycles
30134
30135;@ EaCalc : Get '-(a0)' into r0:
30136  and r2,r8,#0x000f
30137  orr r2,r2,#0x8 ;@ A0-7
30138  ldr r0,[r7,r2,lsl #2]
30139  sub r0,r0,#2 ;@ Pre-decrement An
30140  str r0,[r7,r2,lsl #2]
30141;@ EaRead : Read '-(a0)' (address in r0) into r0:
30142  str r4,[r7,#0x40] ;@ Save PC
30143  bic r0,r0,#0xff000000
30144  bl m68k_read16 ;@ Call read16(r0) handler
30145  movs r0,r0,asl #16
30146
30147  and r10,r0,#0x80000000 ;@ r10=N_flag
30148  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30149
30150  ldr r5,[r7,#0x5c] ;@ Load Cycles
30151  ldrh r8,[r4],#2 ;@ Fetch next opcode
30152  subs r5,r5,#10 ;@ Subtract cycles
30153  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30154  b CycloneEnd
30155
30156;@ ---------- [4a68] tst.w ($3333,a0) uses Op4a68 ----------
30157Op4a68:
30158  str r4,[r7,#0x50] ;@ Save prev PC + 2
30159  str r5,[r7,#0x5c] ;@ Save Cycles
30160
30161;@ EaCalc : Get '($3333,a0)' into r0:
30162  ldrsh r0,[r4],#2 ;@ Fetch offset
30163  and r2,r8,#0x000f
30164  ldr r2,[r7,r2,lsl #2]
30165  add r0,r0,r2 ;@ Add on offset
30166;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
30167  str r4,[r7,#0x40] ;@ Save PC
30168  bic r0,r0,#0xff000000
30169  bl m68k_read16 ;@ Call read16(r0) handler
30170  movs r0,r0,asl #16
30171
30172  and r10,r0,#0x80000000 ;@ r10=N_flag
30173  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30174
30175  ldr r5,[r7,#0x5c] ;@ Load Cycles
30176  ldrh r8,[r4],#2 ;@ Fetch next opcode
30177  subs r5,r5,#12 ;@ Subtract cycles
30178  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30179  b CycloneEnd
30180
30181;@ ---------- [4a70] tst.w ($33,a0,d3.w*2) uses Op4a70 ----------
30182Op4a70:
30183  str r4,[r7,#0x50] ;@ Save prev PC + 2
30184  str r5,[r7,#0x5c] ;@ Save Cycles
30185
30186;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
30187;@ Get extension word into r3:
30188  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
30189  mov r2,r3,lsr #10
30190  tst r3,#0x0800 ;@ Is Rn Word or Long
30191  and r2,r2,#0x3c ;@ r2=Index of Rn
30192  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
30193  ldrne   r2,[r7,r2] ;@ r2=Rn.l
30194  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
30195  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
30196  and r2,r8,#0x000f
30197  orr r2,r2,#0x8 ;@ A0-7
30198  ldr r2,[r7,r2,lsl #2]
30199  add r0,r2,r3 ;@ r0=Disp+An+Rn
30200;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
30201  str r4,[r7,#0x40] ;@ Save PC
30202  bic r0,r0,#0xff000000
30203  bl m68k_read16 ;@ Call read16(r0) handler
30204  movs r0,r0,asl #16
30205
30206  and r10,r0,#0x80000000 ;@ r10=N_flag
30207  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30208
30209  ldr r5,[r7,#0x5c] ;@ Load Cycles
30210  ldrh r8,[r4],#2 ;@ Fetch next opcode
30211  subs r5,r5,#14 ;@ Subtract cycles
30212  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30213  b CycloneEnd
30214
30215;@ ---------- [4a78] tst.w $3333.w uses Op4a78 ----------
30216Op4a78:
30217  str r4,[r7,#0x50] ;@ Save prev PC + 2
30218  str r5,[r7,#0x5c] ;@ Save Cycles
30219
30220;@ EaCalc : Get '$3333.w' into r0:
30221  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
30222;@ EaRead : Read '$3333.w' (address in r0) into r0:
30223  str r4,[r7,#0x40] ;@ Save PC
30224  bic r0,r0,#0xff000000
30225  bl m68k_read16 ;@ Call read16(r0) handler
30226  movs r0,r0,asl #16
30227
30228  and r10,r0,#0x80000000 ;@ r10=N_flag
30229  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30230
30231  ldr r5,[r7,#0x5c] ;@ Load Cycles
30232  ldrh r8,[r4],#2 ;@ Fetch next opcode
30233  subs r5,r5,#12 ;@ Subtract cycles
30234  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30235  b CycloneEnd
30236
30237;@ ---------- [4a80] tst.l d0 uses Op4a80 ----------
30238Op4a80:
30239;@ EaCalc : Get register index into r0:
30240  and r0,r8,#0x000f
30241;@ EaRead : Read register[r0] into r0:
30242  ldr r0,[r7,r0,lsl #2]
30243  tst r0,r0
30244
30245  and r10,r0,#0x80000000 ;@ r10=N_flag
30246  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30247
30248  ldrh r8,[r4],#2 ;@ Fetch next opcode
30249  subs r5,r5,#4 ;@ Subtract cycles
30250  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30251  b CycloneEnd
30252
30253;@ ---------- [4a90] tst.l (a0) uses Op4a90 ----------
30254Op4a90:
30255  str r4,[r7,#0x50] ;@ Save prev PC + 2
30256  str r5,[r7,#0x5c] ;@ Save Cycles
30257
30258;@ EaCalc : Get '(a0)' into r0:
30259  and r2,r8,#0x000f
30260  orr r2,r2,#0x8 ;@ A0-7
30261  ldr r0,[r7,r2,lsl #2]
30262;@ EaRead : Read '(a0)' (address in r0) into r0:
30263  str r4,[r7,#0x40] ;@ Save PC
30264  bic r0,r0,#0xff000000
30265  bl m68k_read32 ;@ Call read32(r0) handler
30266  tst r0,r0
30267
30268  and r10,r0,#0x80000000 ;@ r10=N_flag
30269  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30270
30271  ldr r5,[r7,#0x5c] ;@ Load Cycles
30272  ldrh r8,[r4],#2 ;@ Fetch next opcode
30273  subs r5,r5,#12 ;@ Subtract cycles
30274  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30275  b CycloneEnd
30276
30277;@ ---------- [4a98] tst.l (a0)+ uses Op4a98 ----------
30278Op4a98:
30279  str r4,[r7,#0x50] ;@ Save prev PC + 2
30280  str r5,[r7,#0x5c] ;@ Save Cycles
30281
30282;@ EaCalc : Get '(a0)+' into r0:
30283  and r2,r8,#0x000f
30284  ldr r0,[r7,r2,lsl #2]
30285  add r3,r0,#4 ;@ Post-increment An
30286  str r3,[r7,r2,lsl #2]
30287;@ EaRead : Read '(a0)+' (address in r0) into r0:
30288  str r4,[r7,#0x40] ;@ Save PC
30289  bic r0,r0,#0xff000000
30290  bl m68k_read32 ;@ Call read32(r0) handler
30291  tst r0,r0
30292
30293  and r10,r0,#0x80000000 ;@ r10=N_flag
30294  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30295
30296  ldr r5,[r7,#0x5c] ;@ Load Cycles
30297  ldrh r8,[r4],#2 ;@ Fetch next opcode
30298  subs r5,r5,#12 ;@ Subtract cycles
30299  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30300  b CycloneEnd
30301
30302;@ ---------- [4aa0] tst.l -(a0) uses Op4aa0 ----------
30303Op4aa0:
30304  str r4,[r7,#0x50] ;@ Save prev PC + 2
30305  str r5,[r7,#0x5c] ;@ Save Cycles
30306
30307;@ EaCalc : Get '-(a0)' into r0:
30308  and r2,r8,#0x000f
30309  orr r2,r2,#0x8 ;@ A0-7
30310  ldr r0,[r7,r2,lsl #2]
30311  sub r0,r0,#4 ;@ Pre-decrement An
30312  str r0,[r7,r2,lsl #2]
30313;@ EaRead : Read '-(a0)' (address in r0) into r0:
30314  str r4,[r7,#0x40] ;@ Save PC
30315  bic r0,r0,#0xff000000
30316  bl m68k_read32 ;@ Call read32(r0) handler
30317  tst r0,r0
30318
30319  and r10,r0,#0x80000000 ;@ r10=N_flag
30320  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30321
30322  ldr r5,[r7,#0x5c] ;@ Load Cycles
30323  ldrh r8,[r4],#2 ;@ Fetch next opcode
30324  subs r5,r5,#14 ;@ Subtract cycles
30325  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30326  b CycloneEnd
30327
30328;@ ---------- [4aa8] tst.l ($3333,a0) uses Op4aa8 ----------
30329Op4aa8:
30330  str r4,[r7,#0x50] ;@ Save prev PC + 2
30331  str r5,[r7,#0x5c] ;@ Save Cycles
30332
30333;@ EaCalc : Get '($3333,a0)' into r0:
30334  ldrsh r0,[r4],#2 ;@ Fetch offset
30335  and r2,r8,#0x000f
30336  ldr r2,[r7,r2,lsl #2]
30337  add r0,r0,r2 ;@ Add on offset
30338;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
30339  str r4,[r7,#0x40] ;@ Save PC
30340  bic r0,r0,#0xff000000
30341  bl m68k_read32 ;@ Call read32(r0) handler
30342  tst r0,r0
30343
30344  and r10,r0,#0x80000000 ;@ r10=N_flag
30345  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30346
30347  ldr r5,[r7,#0x5c] ;@ Load Cycles
30348  ldrh r8,[r4],#2 ;@ Fetch next opcode
30349  subs r5,r5,#16 ;@ Subtract cycles
30350  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30351  b CycloneEnd
30352
30353;@ ---------- [4ab0] tst.l ($33,a0,d3.w*2) uses Op4ab0 ----------
30354Op4ab0:
30355  str r4,[r7,#0x50] ;@ Save prev PC + 2
30356  str r5,[r7,#0x5c] ;@ Save Cycles
30357
30358;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
30359;@ Get extension word into r3:
30360  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
30361  mov r2,r3,lsr #10
30362  tst r3,#0x0800 ;@ Is Rn Word or Long
30363  and r2,r2,#0x3c ;@ r2=Index of Rn
30364  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
30365  ldrne   r2,[r7,r2] ;@ r2=Rn.l
30366  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
30367  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
30368  and r2,r8,#0x000f
30369  orr r2,r2,#0x8 ;@ A0-7
30370  ldr r2,[r7,r2,lsl #2]
30371  add r0,r2,r3 ;@ r0=Disp+An+Rn
30372;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
30373  str r4,[r7,#0x40] ;@ Save PC
30374  bic r0,r0,#0xff000000
30375  bl m68k_read32 ;@ Call read32(r0) handler
30376  tst r0,r0
30377
30378  and r10,r0,#0x80000000 ;@ r10=N_flag
30379  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30380
30381  ldr r5,[r7,#0x5c] ;@ Load Cycles
30382  ldrh r8,[r4],#2 ;@ Fetch next opcode
30383  subs r5,r5,#18 ;@ Subtract cycles
30384  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30385  b CycloneEnd
30386
30387;@ ---------- [4ab8] tst.l $3333.w uses Op4ab8 ----------
30388Op4ab8:
30389  str r4,[r7,#0x50] ;@ Save prev PC + 2
30390  str r5,[r7,#0x5c] ;@ Save Cycles
30391
30392;@ EaCalc : Get '$3333.w' into r0:
30393  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
30394;@ EaRead : Read '$3333.w' (address in r0) into r0:
30395  str r4,[r7,#0x40] ;@ Save PC
30396  bic r0,r0,#0xff000000
30397  bl m68k_read32 ;@ Call read32(r0) handler
30398  tst r0,r0
30399
30400  and r10,r0,#0x80000000 ;@ r10=N_flag
30401  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30402
30403  ldr r5,[r7,#0x5c] ;@ Load Cycles
30404  ldrh r8,[r4],#2 ;@ Fetch next opcode
30405  subs r5,r5,#16 ;@ Subtract cycles
30406  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30407  b CycloneEnd
30408
30409;@ ---------- [4ab9] tst.l $33333333.l uses Op4ab9 ----------
30410Op4ab9:
30411  str r4,[r7,#0x50] ;@ Save prev PC + 2
30412  str r5,[r7,#0x5c] ;@ Save Cycles
30413
30414;@ EaCalc : Get '$33333333.l' into r0:
30415  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
30416  ldrh r0,[r4],#2
30417  orr r0,r0,r2,lsl #16
30418;@ EaRead : Read '$33333333.l' (address in r0) into r0:
30419  str r4,[r7,#0x40] ;@ Save PC
30420  bic r0,r0,#0xff000000
30421  bl m68k_read32 ;@ Call read32(r0) handler
30422  tst r0,r0
30423
30424  and r10,r0,#0x80000000 ;@ r10=N_flag
30425  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30426
30427  ldr r5,[r7,#0x5c] ;@ Load Cycles
30428  ldrh r8,[r4],#2 ;@ Fetch next opcode
30429  subs r5,r5,#20 ;@ Subtract cycles
30430  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30431  b CycloneEnd
30432
30433;@ ---------- [4ac0] tas d0 uses Op4ac0 ----------
30434Op4ac0:
30435;@ EaCalc : Get register index into r11:
30436  and r11,r8,#0x000f
30437;@ EaRead : Read register[r11] into r1:
30438  ldr r1,[r7,r11,lsl #2]
30439  movs r1,r1,asl #24
30440
30441  and r10,r1,#0x80000000 ;@ r10=N_flag
30442  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30443
30444  orr r1,r1,#0x80000000 ;@ set bit7
30445;@ EaWrite: r1 into register[r11]:
30446  mov r1,r1,lsr #24
30447  strb r1,[r7,r11,lsl #2]
30448
30449  ldrh r8,[r4],#2 ;@ Fetch next opcode
30450  subs r5,r5,#4 ;@ Subtract cycles
30451  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30452  b CycloneEnd
30453
30454;@ ---------- [4ad0] tas (a0) uses Op4ad0 ----------
30455Op4ad0:
30456  str r4,[r7,#0x50] ;@ Save prev PC + 2
30457  str r5,[r7,#0x5c] ;@ Save Cycles
30458
30459;@ EaCalc : Get '(a0)' into r11:
30460  and r2,r8,#0x000f
30461  orr r2,r2,#0x8 ;@ A0-7
30462  ldr r11,[r7,r2,lsl #2]
30463;@ EaRead : Read '(a0)' (address in r11) into r1:
30464  str r4,[r7,#0x40] ;@ Save PC
30465  bic r0,r11,#0xff000000
30466  bl m68k_read8 ;@ Call read8(r0) handler
30467  movs r1,r0,asl #24
30468
30469  and r10,r1,#0x80000000 ;@ r10=N_flag
30470  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30471
30472  orr r1,r1,#0x80000000 ;@ set bit7
30473;@ EaWrite: Write r1 into '(a0)' (address in r11):
30474  mov r1,r1,lsr #24
30475  bic r0,r11,#0xff000000
30476  bl m68k_write8 ;@ Call write8(r0,r1) handler
30477
30478  ldr r5,[r7,#0x5c] ;@ Load Cycles
30479  ldrh r8,[r4],#2 ;@ Fetch next opcode
30480  subs r5,r5,#18 ;@ Subtract cycles
30481  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30482  b CycloneEnd
30483
30484;@ ---------- [4ad8] tas (a0)+ uses Op4ad8 ----------
30485Op4ad8:
30486  str r4,[r7,#0x50] ;@ Save prev PC + 2
30487  str r5,[r7,#0x5c] ;@ Save Cycles
30488
30489;@ EaCalc : Get '(a0)+' into r11:
30490  and r2,r8,#0x000f
30491  ldr r11,[r7,r2,lsl #2]
30492  add r3,r11,#1 ;@ Post-increment An
30493  str r3,[r7,r2,lsl #2]
30494;@ EaRead : Read '(a0)+' (address in r11) into r1:
30495  str r4,[r7,#0x40] ;@ Save PC
30496  bic r0,r11,#0xff000000
30497  bl m68k_read8 ;@ Call read8(r0) handler
30498  movs r1,r0,asl #24
30499
30500  and r10,r1,#0x80000000 ;@ r10=N_flag
30501  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30502
30503  orr r1,r1,#0x80000000 ;@ set bit7
30504;@ EaWrite: Write r1 into '(a0)+' (address in r11):
30505  mov r1,r1,lsr #24
30506  bic r0,r11,#0xff000000
30507  bl m68k_write8 ;@ Call write8(r0,r1) handler
30508
30509  ldr r5,[r7,#0x5c] ;@ Load Cycles
30510  ldrh r8,[r4],#2 ;@ Fetch next opcode
30511  subs r5,r5,#18 ;@ Subtract cycles
30512  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30513  b CycloneEnd
30514
30515;@ ---------- [4adf] tas (a7)+ uses Op4adf ----------
30516Op4adf:
30517  str r4,[r7,#0x50] ;@ Save prev PC + 2
30518  str r5,[r7,#0x5c] ;@ Save Cycles
30519
30520;@ EaCalc : Get '(a7)+' into r11:
30521  ldr r11,[r7,#0x3c] ;@ A7
30522  add r3,r11,#2 ;@ Post-increment An
30523  str r3,[r7,#0x3c] ;@ A7
30524;@ EaRead : Read '(a7)+' (address in r11) into r1:
30525  str r4,[r7,#0x40] ;@ Save PC
30526  bic r0,r11,#0xff000000
30527  bl m68k_read8 ;@ Call read8(r0) handler
30528  movs r1,r0,asl #24
30529
30530  and r10,r1,#0x80000000 ;@ r10=N_flag
30531  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30532
30533  orr r1,r1,#0x80000000 ;@ set bit7
30534;@ EaWrite: Write r1 into '(a7)+' (address in r11):
30535  mov r1,r1,lsr #24
30536  bic r0,r11,#0xff000000
30537  bl m68k_write8 ;@ Call write8(r0,r1) handler
30538
30539  ldr r5,[r7,#0x5c] ;@ Load Cycles
30540  ldrh r8,[r4],#2 ;@ Fetch next opcode
30541  subs r5,r5,#18 ;@ Subtract cycles
30542  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30543  b CycloneEnd
30544
30545;@ ---------- [4ae0] tas -(a0) uses Op4ae0 ----------
30546Op4ae0:
30547  str r4,[r7,#0x50] ;@ Save prev PC + 2
30548  str r5,[r7,#0x5c] ;@ Save Cycles
30549
30550;@ EaCalc : Get '-(a0)' into r11:
30551  and r2,r8,#0x000f
30552  orr r2,r2,#0x8 ;@ A0-7
30553  ldr r11,[r7,r2,lsl #2]
30554  sub r11,r11,#1 ;@ Pre-decrement An
30555  str r11,[r7,r2,lsl #2]
30556;@ EaRead : Read '-(a0)' (address in r11) into r1:
30557  str r4,[r7,#0x40] ;@ Save PC
30558  bic r0,r11,#0xff000000
30559  bl m68k_read8 ;@ Call read8(r0) handler
30560  movs r1,r0,asl #24
30561
30562  and r10,r1,#0x80000000 ;@ r10=N_flag
30563  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30564
30565  orr r1,r1,#0x80000000 ;@ set bit7
30566;@ EaWrite: Write r1 into '-(a0)' (address in r11):
30567  mov r1,r1,lsr #24
30568  bic r0,r11,#0xff000000
30569  bl m68k_write8 ;@ Call write8(r0,r1) handler
30570
30571  ldr r5,[r7,#0x5c] ;@ Load Cycles
30572  ldrh r8,[r4],#2 ;@ Fetch next opcode
30573  subs r5,r5,#20 ;@ Subtract cycles
30574  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30575  b CycloneEnd
30576
30577;@ ---------- [4ae7] tas -(a7) uses Op4ae7 ----------
30578Op4ae7:
30579  str r4,[r7,#0x50] ;@ Save prev PC + 2
30580  str r5,[r7,#0x5c] ;@ Save Cycles
30581
30582;@ EaCalc : Get '-(a7)' into r11:
30583  ldr r11,[r7,#0x3c] ;@ A7
30584  sub r11,r11,#2 ;@ Pre-decrement An
30585  str r11,[r7,#0x3c] ;@ A7
30586;@ EaRead : Read '-(a7)' (address in r11) into r1:
30587  str r4,[r7,#0x40] ;@ Save PC
30588  bic r0,r11,#0xff000000
30589  bl m68k_read8 ;@ Call read8(r0) handler
30590  movs r1,r0,asl #24
30591
30592  and r10,r1,#0x80000000 ;@ r10=N_flag
30593  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30594
30595  orr r1,r1,#0x80000000 ;@ set bit7
30596;@ EaWrite: Write r1 into '-(a7)' (address in r11):
30597  mov r1,r1,lsr #24
30598  bic r0,r11,#0xff000000
30599  bl m68k_write8 ;@ Call write8(r0,r1) handler
30600
30601  ldr r5,[r7,#0x5c] ;@ Load Cycles
30602  ldrh r8,[r4],#2 ;@ Fetch next opcode
30603  subs r5,r5,#20 ;@ Subtract cycles
30604  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30605  b CycloneEnd
30606
30607;@ ---------- [4ae8] tas ($3333,a0) uses Op4ae8 ----------
30608Op4ae8:
30609  str r4,[r7,#0x50] ;@ Save prev PC + 2
30610  str r5,[r7,#0x5c] ;@ Save Cycles
30611
30612;@ EaCalc : Get '($3333,a0)' into r11:
30613  ldrsh r0,[r4],#2 ;@ Fetch offset
30614  and r2,r8,#0x000f
30615  ldr r2,[r7,r2,lsl #2]
30616  add r11,r0,r2 ;@ Add on offset
30617;@ EaRead : Read '($3333,a0)' (address in r11) into r1:
30618  str r4,[r7,#0x40] ;@ Save PC
30619  bic r0,r11,#0xff000000
30620  bl m68k_read8 ;@ Call read8(r0) handler
30621  movs r1,r0,asl #24
30622
30623  and r10,r1,#0x80000000 ;@ r10=N_flag
30624  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30625
30626  orr r1,r1,#0x80000000 ;@ set bit7
30627;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
30628  mov r1,r1,lsr #24
30629  bic r0,r11,#0xff000000
30630  bl m68k_write8 ;@ Call write8(r0,r1) handler
30631
30632  ldr r5,[r7,#0x5c] ;@ Load Cycles
30633  ldrh r8,[r4],#2 ;@ Fetch next opcode
30634  subs r5,r5,#22 ;@ Subtract cycles
30635  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30636  b CycloneEnd
30637
30638;@ ---------- [4af0] tas ($33,a0,d3.w*2) uses Op4af0 ----------
30639Op4af0:
30640  str r4,[r7,#0x50] ;@ Save prev PC + 2
30641  str r5,[r7,#0x5c] ;@ Save Cycles
30642
30643;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
30644;@ Get extension word into r3:
30645  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
30646  mov r2,r3,lsr #10
30647  tst r3,#0x0800 ;@ Is Rn Word or Long
30648  and r2,r2,#0x3c ;@ r2=Index of Rn
30649  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
30650  ldrne   r2,[r7,r2] ;@ r2=Rn.l
30651  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
30652  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
30653  and r2,r8,#0x000f
30654  orr r2,r2,#0x8 ;@ A0-7
30655  ldr r2,[r7,r2,lsl #2]
30656  add r11,r2,r3 ;@ r11=Disp+An+Rn
30657;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r1:
30658  str r4,[r7,#0x40] ;@ Save PC
30659  bic r0,r11,#0xff000000
30660  bl m68k_read8 ;@ Call read8(r0) handler
30661  movs r1,r0,asl #24
30662
30663  and r10,r1,#0x80000000 ;@ r10=N_flag
30664  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30665
30666  orr r1,r1,#0x80000000 ;@ set bit7
30667;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
30668  mov r1,r1,lsr #24
30669  bic r0,r11,#0xff000000
30670  bl m68k_write8 ;@ Call write8(r0,r1) handler
30671
30672  ldr r5,[r7,#0x5c] ;@ Load Cycles
30673  ldrh r8,[r4],#2 ;@ Fetch next opcode
30674  subs r5,r5,#24 ;@ Subtract cycles
30675  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30676  b CycloneEnd
30677
30678;@ ---------- [4af8] tas $3333.w uses Op4af8 ----------
30679Op4af8:
30680  str r4,[r7,#0x50] ;@ Save prev PC + 2
30681  str r5,[r7,#0x5c] ;@ Save Cycles
30682
30683;@ EaCalc : Get '$3333.w' into r11:
30684  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
30685;@ EaRead : Read '$3333.w' (address in r11) into r1:
30686  str r4,[r7,#0x40] ;@ Save PC
30687  bic r0,r11,#0xff000000
30688  bl m68k_read8 ;@ Call read8(r0) handler
30689  movs r1,r0,asl #24
30690
30691  and r10,r1,#0x80000000 ;@ r10=N_flag
30692  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30693
30694  orr r1,r1,#0x80000000 ;@ set bit7
30695;@ EaWrite: Write r1 into '$3333.w' (address in r11):
30696  mov r1,r1,lsr #24
30697  bic r0,r11,#0xff000000
30698  bl m68k_write8 ;@ Call write8(r0,r1) handler
30699
30700  ldr r5,[r7,#0x5c] ;@ Load Cycles
30701  ldrh r8,[r4],#2 ;@ Fetch next opcode
30702  subs r5,r5,#22 ;@ Subtract cycles
30703  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30704  b CycloneEnd
30705
30706;@ ---------- [4af9] tas $33333333.l uses Op4af9 ----------
30707Op4af9:
30708  str r4,[r7,#0x50] ;@ Save prev PC + 2
30709  str r5,[r7,#0x5c] ;@ Save Cycles
30710
30711;@ EaCalc : Get '$33333333.l' into r11:
30712  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
30713  ldrh r0,[r4],#2
30714  orr r11,r0,r2,lsl #16
30715;@ EaRead : Read '$33333333.l' (address in r11) into r1:
30716  str r4,[r7,#0x40] ;@ Save PC
30717  bic r0,r11,#0xff000000
30718  bl m68k_read8 ;@ Call read8(r0) handler
30719  movs r1,r0,asl #24
30720
30721  and r10,r1,#0x80000000 ;@ r10=N_flag
30722  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
30723
30724  orr r1,r1,#0x80000000 ;@ set bit7
30725;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
30726  mov r1,r1,lsr #24
30727  bic r0,r11,#0xff000000
30728  bl m68k_write8 ;@ Call write8(r0,r1) handler
30729
30730  ldr r5,[r7,#0x5c] ;@ Load Cycles
30731  ldrh r8,[r4],#2 ;@ Fetch next opcode
30732  subs r5,r5,#26 ;@ Subtract cycles
30733  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30734  b CycloneEnd
30735
30736;@ ---------- [4c90] movem.w (a0), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4c90 ----------
30737Op4c90:
30738  str r4,[r7,#0x50] ;@ Save prev PC + 2
30739  str r5,[r7,#0x5c] ;@ Save Cycles
30740  mov r5,#0
30741
30742  ldrh r11,[r4],#2 ;@ r11=register mask
30743
30744;@ Get the address into r6:
30745;@ EaCalc : Get '(a0)' into r6:
30746  and r2,r8,#0x000f
30747  orr r2,r2,#0x8 ;@ A0-7
30748  ldr r6,[r7,r2,lsl #2]
30749  str r4,[r7,#0x40] ;@ Save PC
30750;@ r4=Register Index*4:
30751  mov r4,#-4
30752
30753  tst r11,r11
30754  beq NoRegs4c90
30755
30756Movemloop4c90:
30757  add r4,r4,#4 ;@ r4=Next Register
30758  movs r11,r11,lsr #1
30759  bcc Movemloop4c90
30760
30761  ;@ Copy memory to register:
30762;@ EaRead : Read '(a0)' (address in r6) into r0:
30763  bic r0,r6,#0xff000000
30764  bl m68k_read16 ;@ Call read16(r0) handler
30765  sxth r0,r0 ;@ sign extend
30766
30767  str r0,[r7,r4] ;@ Save value into Dn/An
30768  add r6,r6,#2 ;@ Post-increment address
30769  sub r5,r5,#4 ;@ Take some cycles
30770  tst r11,r11
30771  bne Movemloop4c90
30772
30773NoRegs4c90:
30774  ldr r4,[r7,#0x40]
30775  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
30776
30777  ldr r0,[r7,#0x5c] ;@ Load Cycles
30778  ldrh r8,[r4],#2 ;@ Fetch next opcode
30779  add r5,r0,r5
30780  subs r5,r5,#12 ;@ Subtract cycles
30781  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30782  b CycloneEnd
30783
30784
30785;@ ---------- [4c98] movem.w (a0)+, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4c98 ----------
30786Op4c98:
30787  str r4,[r7,#0x50] ;@ Save prev PC + 2
30788  str r5,[r7,#0x5c] ;@ Save Cycles
30789  mov r5,#0
30790
30791  ldrh r11,[r4],#2 ;@ r11=register mask
30792
30793;@ Get the address into r6:
30794;@ EaCalc : Get '(a0)' into r6:
30795  and r2,r8,#0x000f
30796  ldr r6,[r7,r2,lsl #2]
30797  str r4,[r7,#0x40] ;@ Save PC
30798;@ r4=Register Index*4:
30799  mov r4,#-4
30800
30801  tst r11,r11
30802  beq NoRegs4c98
30803
30804Movemloop4c98:
30805  add r4,r4,#4 ;@ r4=Next Register
30806  movs r11,r11,lsr #1
30807  bcc Movemloop4c98
30808
30809  ;@ Copy memory to register:
30810;@ EaRead : Read '(a0)+' (address in r6) into r0:
30811  bic r0,r6,#0xff000000
30812  bl m68k_read16 ;@ Call read16(r0) handler
30813  sxth r0,r0 ;@ sign extend
30814
30815  str r0,[r7,r4] ;@ Save value into Dn/An
30816  add r6,r6,#2 ;@ Post-increment address
30817  sub r5,r5,#4 ;@ Take some cycles
30818  tst r11,r11
30819  bne Movemloop4c98
30820
30821;@ Write back address:
30822;@ EaCalc : Get register index into r0:
30823  and r0,r8,#0x000f
30824;@ EaWrite: r6 into register[r0]:
30825  str r6,[r7,r0,lsl #2]
30826
30827NoRegs4c98:
30828  ldr r4,[r7,#0x40]
30829  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
30830
30831  ldr r0,[r7,#0x5c] ;@ Load Cycles
30832  ldrh r8,[r4],#2 ;@ Fetch next opcode
30833  add r5,r0,r5
30834  subs r5,r5,#12 ;@ Subtract cycles
30835  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30836  b CycloneEnd
30837
30838
30839;@ ---------- [4ca8] movem.w ($3333,a0), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4ca8 ----------
30840Op4ca8:
30841  str r4,[r7,#0x50] ;@ Save prev PC + 2
30842  str r5,[r7,#0x5c] ;@ Save Cycles
30843  mov r5,#0
30844
30845  ldrh r11,[r4],#2 ;@ r11=register mask
30846
30847;@ Get the address into r6:
30848;@ EaCalc : Get '($3333,a0)' into r6:
30849  ldrsh r0,[r4],#2 ;@ Fetch offset
30850  and r2,r8,#0x000f
30851  ldr r2,[r7,r2,lsl #2]
30852  add r6,r0,r2 ;@ Add on offset
30853  str r4,[r7,#0x40] ;@ Save PC
30854;@ r4=Register Index*4:
30855  mov r4,#-4
30856
30857  tst r11,r11
30858  beq NoRegs4ca8
30859
30860Movemloop4ca8:
30861  add r4,r4,#4 ;@ r4=Next Register
30862  movs r11,r11,lsr #1
30863  bcc Movemloop4ca8
30864
30865  ;@ Copy memory to register:
30866;@ EaRead : Read '($3333,a0)' (address in r6) into r0:
30867  bic r0,r6,#0xff000000
30868  bl m68k_read16 ;@ Call read16(r0) handler
30869  sxth r0,r0 ;@ sign extend
30870
30871  str r0,[r7,r4] ;@ Save value into Dn/An
30872  add r6,r6,#2 ;@ Post-increment address
30873  sub r5,r5,#4 ;@ Take some cycles
30874  tst r11,r11
30875  bne Movemloop4ca8
30876
30877NoRegs4ca8:
30878  ldr r4,[r7,#0x40]
30879  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
30880
30881  ldr r0,[r7,#0x5c] ;@ Load Cycles
30882  ldrh r8,[r4],#2 ;@ Fetch next opcode
30883  add r5,r0,r5
30884  subs r5,r5,#16 ;@ Subtract cycles
30885  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30886  b CycloneEnd
30887
30888
30889;@ ---------- [4cb0] movem.w ($33,a0,d3.w*2), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cb0 ----------
30890Op4cb0:
30891  str r4,[r7,#0x50] ;@ Save prev PC + 2
30892  str r5,[r7,#0x5c] ;@ Save Cycles
30893  mov r5,#0
30894
30895  ldrh r11,[r4],#2 ;@ r11=register mask
30896
30897;@ Get the address into r6:
30898;@ EaCalc : Get '($33,a0,d3.w*2)' into r6:
30899;@ Get extension word into r3:
30900  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
30901  mov r2,r3,lsr #10
30902  tst r3,#0x0800 ;@ Is Rn Word or Long
30903  and r2,r2,#0x3c ;@ r2=Index of Rn
30904  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
30905  ldrne   r2,[r7,r2] ;@ r2=Rn.l
30906  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
30907  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
30908  and r2,r8,#0x000f
30909  orr r2,r2,#0x8 ;@ A0-7
30910  ldr r2,[r7,r2,lsl #2]
30911  add r6,r2,r3 ;@ r6=Disp+An+Rn
30912  str r4,[r7,#0x40] ;@ Save PC
30913;@ r4=Register Index*4:
30914  mov r4,#-4
30915
30916  tst r11,r11
30917  beq NoRegs4cb0
30918
30919Movemloop4cb0:
30920  add r4,r4,#4 ;@ r4=Next Register
30921  movs r11,r11,lsr #1
30922  bcc Movemloop4cb0
30923
30924  ;@ Copy memory to register:
30925;@ EaRead : Read '($33,a0,d3.w*2)' (address in r6) into r0:
30926  bic r0,r6,#0xff000000
30927  bl m68k_read16 ;@ Call read16(r0) handler
30928  sxth r0,r0 ;@ sign extend
30929
30930  str r0,[r7,r4] ;@ Save value into Dn/An
30931  add r6,r6,#2 ;@ Post-increment address
30932  sub r5,r5,#4 ;@ Take some cycles
30933  tst r11,r11
30934  bne Movemloop4cb0
30935
30936NoRegs4cb0:
30937  ldr r4,[r7,#0x40]
30938  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
30939
30940  ldr r0,[r7,#0x5c] ;@ Load Cycles
30941  ldrh r8,[r4],#2 ;@ Fetch next opcode
30942  add r5,r0,r5
30943  subs r5,r5,#18 ;@ Subtract cycles
30944  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30945  b CycloneEnd
30946
30947
30948;@ ---------- [4cb8] movem.w $3333.w, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cb8 ----------
30949Op4cb8:
30950  str r4,[r7,#0x50] ;@ Save prev PC + 2
30951  str r5,[r7,#0x5c] ;@ Save Cycles
30952  mov r5,#0
30953
30954  ldrh r11,[r4],#2 ;@ r11=register mask
30955
30956;@ Get the address into r6:
30957;@ EaCalc : Get '$3333.w' into r6:
30958  ldrsh r6,[r4],#2 ;@ Fetch Absolute Short address
30959  str r4,[r7,#0x40] ;@ Save PC
30960;@ r4=Register Index*4:
30961  mov r4,#-4
30962
30963  tst r11,r11
30964  beq NoRegs4cb8
30965
30966Movemloop4cb8:
30967  add r4,r4,#4 ;@ r4=Next Register
30968  movs r11,r11,lsr #1
30969  bcc Movemloop4cb8
30970
30971  ;@ Copy memory to register:
30972;@ EaRead : Read '$3333.w' (address in r6) into r0:
30973  bic r0,r6,#0xff000000
30974  bl m68k_read16 ;@ Call read16(r0) handler
30975  sxth r0,r0 ;@ sign extend
30976
30977  str r0,[r7,r4] ;@ Save value into Dn/An
30978  add r6,r6,#2 ;@ Post-increment address
30979  sub r5,r5,#4 ;@ Take some cycles
30980  tst r11,r11
30981  bne Movemloop4cb8
30982
30983NoRegs4cb8:
30984  ldr r4,[r7,#0x40]
30985  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
30986
30987  ldr r0,[r7,#0x5c] ;@ Load Cycles
30988  ldrh r8,[r4],#2 ;@ Fetch next opcode
30989  add r5,r0,r5
30990  subs r5,r5,#16 ;@ Subtract cycles
30991  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30992  b CycloneEnd
30993
30994
30995;@ ---------- [4cb9] movem.w $33333333.l, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cb9 ----------
30996Op4cb9:
30997  str r4,[r7,#0x50] ;@ Save prev PC + 2
30998  str r5,[r7,#0x5c] ;@ Save Cycles
30999  mov r5,#0
31000
31001  ldrh r11,[r4],#2 ;@ r11=register mask
31002
31003;@ Get the address into r6:
31004;@ EaCalc : Get '$33333333.l' into r6:
31005  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
31006  ldrh r0,[r4],#2
31007  orr r6,r0,r2,lsl #16
31008  str r4,[r7,#0x40] ;@ Save PC
31009;@ r4=Register Index*4:
31010  mov r4,#-4
31011
31012  tst r11,r11
31013  beq NoRegs4cb9
31014
31015Movemloop4cb9:
31016  add r4,r4,#4 ;@ r4=Next Register
31017  movs r11,r11,lsr #1
31018  bcc Movemloop4cb9
31019
31020  ;@ Copy memory to register:
31021;@ EaRead : Read '$33333333.l' (address in r6) into r0:
31022  bic r0,r6,#0xff000000
31023  bl m68k_read16 ;@ Call read16(r0) handler
31024  sxth r0,r0 ;@ sign extend
31025
31026  str r0,[r7,r4] ;@ Save value into Dn/An
31027  add r6,r6,#2 ;@ Post-increment address
31028  sub r5,r5,#4 ;@ Take some cycles
31029  tst r11,r11
31030  bne Movemloop4cb9
31031
31032NoRegs4cb9:
31033  ldr r4,[r7,#0x40]
31034  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31035
31036  ldr r0,[r7,#0x5c] ;@ Load Cycles
31037  ldrh r8,[r4],#2 ;@ Fetch next opcode
31038  add r5,r0,r5
31039  subs r5,r5,#20 ;@ Subtract cycles
31040  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31041  b CycloneEnd
31042
31043
31044;@ ---------- [4cba] movem.w ($3333,pc), d0-d1/d4-d5/a0-a1/a4-a5; =3337 uses Op4cba ----------
31045Op4cba:
31046  str r4,[r7,#0x50] ;@ Save prev PC + 2
31047  str r5,[r7,#0x5c] ;@ Save Cycles
31048  mov r5,#0
31049
31050  ldrh r11,[r4],#2 ;@ r11=register mask
31051
31052;@ Get the address into r6:
31053;@ EaCalc : Get '($3333,pc)' into r6:
31054  ldr r0,[r7,#0x60] ;@ Get Memory base
31055  sub r0,r4,r0 ;@ Real PC
31056  ldrsh r2,[r4],#2 ;@ Fetch extension
31057  add r6,r2,r0 ;@ ($nn,PC)
31058  str r4,[r7,#0x40] ;@ Save PC
31059;@ r4=Register Index*4:
31060  mov r4,#-4
31061
31062  tst r11,r11
31063  beq NoRegs4cba
31064
31065Movemloop4cba:
31066  add r4,r4,#4 ;@ r4=Next Register
31067  movs r11,r11,lsr #1
31068  bcc Movemloop4cba
31069
31070  ;@ Copy memory to register:
31071;@ EaRead : Read '($3333,pc)' (address in r6) into r0:
31072  bic r0,r6,#0xff000000
31073  bl m68k_fetch16 ;@ Call fetch16(r0) handler
31074  sxth r0,r0 ;@ sign extend
31075
31076  str r0,[r7,r4] ;@ Save value into Dn/An
31077  add r6,r6,#2 ;@ Post-increment address
31078  sub r5,r5,#4 ;@ Take some cycles
31079  tst r11,r11
31080  bne Movemloop4cba
31081
31082NoRegs4cba:
31083  ldr r4,[r7,#0x40]
31084  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31085
31086  ldr r0,[r7,#0x5c] ;@ Load Cycles
31087  ldrh r8,[r4],#2 ;@ Fetch next opcode
31088  add r5,r0,r5
31089  subs r5,r5,#16 ;@ Subtract cycles
31090  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31091  b CycloneEnd
31092
31093
31094;@ ---------- [4cbb] movem.w ($33,pc,d3.w*2), d0-d1/d4-d5/a0-a1/a4-a5; =37 uses Op4cbb ----------
31095Op4cbb:
31096  str r4,[r7,#0x50] ;@ Save prev PC + 2
31097  str r5,[r7,#0x5c] ;@ Save Cycles
31098  mov r5,#0
31099
31100  ldrh r11,[r4],#2 ;@ r11=register mask
31101
31102;@ Get the address into r6:
31103;@ EaCalc : Get '($33,pc,d3.w*2)' into r6:
31104  ldr r0,[r7,#0x60] ;@ Get Memory base
31105  ldrh r3,[r4] ;@ Get extension word
31106  sub r0,r4,r0 ;@ r0=PC
31107  add r4,r4,#2
31108  mov r2,r3,lsr #10
31109  tst r3,#0x0800 ;@ Is Rn Word or Long
31110  and r2,r2,#0x3c ;@ r2=Index of Rn
31111  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
31112  ldrne   r2,[r7,r2] ;@ r2=Rn.l
31113  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
31114  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
31115  add r6,r2,r0 ;@ r6=Disp+PC+Rn
31116  str r4,[r7,#0x40] ;@ Save PC
31117;@ r4=Register Index*4:
31118  mov r4,#-4
31119
31120  tst r11,r11
31121  beq NoRegs4cbb
31122
31123Movemloop4cbb:
31124  add r4,r4,#4 ;@ r4=Next Register
31125  movs r11,r11,lsr #1
31126  bcc Movemloop4cbb
31127
31128  ;@ Copy memory to register:
31129;@ EaRead : Read '($33,pc,d3.w*2)' (address in r6) into r0:
31130  bic r0,r6,#0xff000000
31131  bl m68k_fetch16 ;@ Call fetch16(r0) handler
31132  sxth r0,r0 ;@ sign extend
31133
31134  str r0,[r7,r4] ;@ Save value into Dn/An
31135  add r6,r6,#2 ;@ Post-increment address
31136  sub r5,r5,#4 ;@ Take some cycles
31137  tst r11,r11
31138  bne Movemloop4cbb
31139
31140NoRegs4cbb:
31141  ldr r4,[r7,#0x40]
31142  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31143
31144  ldr r0,[r7,#0x5c] ;@ Load Cycles
31145  ldrh r8,[r4],#2 ;@ Fetch next opcode
31146  add r5,r0,r5
31147  subs r5,r5,#18 ;@ Subtract cycles
31148  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31149  b CycloneEnd
31150
31151
31152;@ ---------- [4cd0] movem.l (a0), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cd0 ----------
31153Op4cd0:
31154  str r4,[r7,#0x50] ;@ Save prev PC + 2
31155  str r5,[r7,#0x5c] ;@ Save Cycles
31156  mov r5,#0
31157
31158  ldrh r11,[r4],#2 ;@ r11=register mask
31159
31160;@ Get the address into r6:
31161;@ EaCalc : Get '(a0)' into r6:
31162  and r2,r8,#0x000f
31163  orr r2,r2,#0x8 ;@ A0-7
31164  ldr r6,[r7,r2,lsl #2]
31165  str r4,[r7,#0x40] ;@ Save PC
31166;@ r4=Register Index*4:
31167  mov r4,#-4
31168
31169  tst r11,r11
31170  beq NoRegs4cd0
31171
31172Movemloop4cd0:
31173  add r4,r4,#4 ;@ r4=Next Register
31174  movs r11,r11,lsr #1
31175  bcc Movemloop4cd0
31176
31177  ;@ Copy memory to register:
31178;@ EaRead : Read '(a0)' (address in r6) into r0:
31179  bic r0,r6,#0xff000000
31180  bl m68k_read32 ;@ Call read32(r0) handler
31181
31182  str r0,[r7,r4] ;@ Save value into Dn/An
31183  add r6,r6,#4 ;@ Post-increment address
31184  sub r5,r5,#8 ;@ Take some cycles
31185  tst r11,r11
31186  bne Movemloop4cd0
31187
31188NoRegs4cd0:
31189  ldr r4,[r7,#0x40]
31190  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31191
31192  ldr r0,[r7,#0x5c] ;@ Load Cycles
31193  ldrh r8,[r4],#2 ;@ Fetch next opcode
31194  add r5,r0,r5
31195  subs r5,r5,#12 ;@ Subtract cycles
31196  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31197  b CycloneEnd
31198
31199
31200;@ ---------- [4cd8] movem.l (a0)+, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cd8 ----------
31201Op4cd8:
31202  str r4,[r7,#0x50] ;@ Save prev PC + 2
31203  str r5,[r7,#0x5c] ;@ Save Cycles
31204  mov r5,#0
31205
31206  ldrh r11,[r4],#2 ;@ r11=register mask
31207
31208;@ Get the address into r6:
31209;@ EaCalc : Get '(a0)' into r6:
31210  and r2,r8,#0x000f
31211  ldr r6,[r7,r2,lsl #2]
31212  str r4,[r7,#0x40] ;@ Save PC
31213;@ r4=Register Index*4:
31214  mov r4,#-4
31215
31216  tst r11,r11
31217  beq NoRegs4cd8
31218
31219Movemloop4cd8:
31220  add r4,r4,#4 ;@ r4=Next Register
31221  movs r11,r11,lsr #1
31222  bcc Movemloop4cd8
31223
31224  ;@ Copy memory to register:
31225;@ EaRead : Read '(a0)+' (address in r6) into r0:
31226  bic r0,r6,#0xff000000
31227  bl m68k_read32 ;@ Call read32(r0) handler
31228
31229  str r0,[r7,r4] ;@ Save value into Dn/An
31230  add r6,r6,#4 ;@ Post-increment address
31231  sub r5,r5,#8 ;@ Take some cycles
31232  tst r11,r11
31233  bne Movemloop4cd8
31234
31235;@ Write back address:
31236;@ EaCalc : Get register index into r0:
31237  and r0,r8,#0x000f
31238;@ EaWrite: r6 into register[r0]:
31239  str r6,[r7,r0,lsl #2]
31240
31241NoRegs4cd8:
31242  ldr r4,[r7,#0x40]
31243  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31244
31245  ldr r0,[r7,#0x5c] ;@ Load Cycles
31246  ldrh r8,[r4],#2 ;@ Fetch next opcode
31247  add r5,r0,r5
31248  subs r5,r5,#12 ;@ Subtract cycles
31249  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31250  b CycloneEnd
31251
31252
31253;@ ---------- [4ce8] movem.l ($3333,a0), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4ce8 ----------
31254Op4ce8:
31255  str r4,[r7,#0x50] ;@ Save prev PC + 2
31256  str r5,[r7,#0x5c] ;@ Save Cycles
31257  mov r5,#0
31258
31259  ldrh r11,[r4],#2 ;@ r11=register mask
31260
31261;@ Get the address into r6:
31262;@ EaCalc : Get '($3333,a0)' into r6:
31263  ldrsh r0,[r4],#2 ;@ Fetch offset
31264  and r2,r8,#0x000f
31265  ldr r2,[r7,r2,lsl #2]
31266  add r6,r0,r2 ;@ Add on offset
31267  str r4,[r7,#0x40] ;@ Save PC
31268;@ r4=Register Index*4:
31269  mov r4,#-4
31270
31271  tst r11,r11
31272  beq NoRegs4ce8
31273
31274Movemloop4ce8:
31275  add r4,r4,#4 ;@ r4=Next Register
31276  movs r11,r11,lsr #1
31277  bcc Movemloop4ce8
31278
31279  ;@ Copy memory to register:
31280;@ EaRead : Read '($3333,a0)' (address in r6) into r0:
31281  bic r0,r6,#0xff000000
31282  bl m68k_read32 ;@ Call read32(r0) handler
31283
31284  str r0,[r7,r4] ;@ Save value into Dn/An
31285  add r6,r6,#4 ;@ Post-increment address
31286  sub r5,r5,#8 ;@ Take some cycles
31287  tst r11,r11
31288  bne Movemloop4ce8
31289
31290NoRegs4ce8:
31291  ldr r4,[r7,#0x40]
31292  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31293
31294  ldr r0,[r7,#0x5c] ;@ Load Cycles
31295  ldrh r8,[r4],#2 ;@ Fetch next opcode
31296  add r5,r0,r5
31297  subs r5,r5,#16 ;@ Subtract cycles
31298  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31299  b CycloneEnd
31300
31301
31302;@ ---------- [4cf0] movem.l ($33,a0,d3.w*2), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cf0 ----------
31303Op4cf0:
31304  str r4,[r7,#0x50] ;@ Save prev PC + 2
31305  str r5,[r7,#0x5c] ;@ Save Cycles
31306  mov r5,#0
31307
31308  ldrh r11,[r4],#2 ;@ r11=register mask
31309
31310;@ Get the address into r6:
31311;@ EaCalc : Get '($33,a0,d3.w*2)' into r6:
31312;@ Get extension word into r3:
31313  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
31314  mov r2,r3,lsr #10
31315  tst r3,#0x0800 ;@ Is Rn Word or Long
31316  and r2,r2,#0x3c ;@ r2=Index of Rn
31317  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
31318  ldrne   r2,[r7,r2] ;@ r2=Rn.l
31319  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
31320  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
31321  and r2,r8,#0x000f
31322  orr r2,r2,#0x8 ;@ A0-7
31323  ldr r2,[r7,r2,lsl #2]
31324  add r6,r2,r3 ;@ r6=Disp+An+Rn
31325  str r4,[r7,#0x40] ;@ Save PC
31326;@ r4=Register Index*4:
31327  mov r4,#-4
31328
31329  tst r11,r11
31330  beq NoRegs4cf0
31331
31332Movemloop4cf0:
31333  add r4,r4,#4 ;@ r4=Next Register
31334  movs r11,r11,lsr #1
31335  bcc Movemloop4cf0
31336
31337  ;@ Copy memory to register:
31338;@ EaRead : Read '($33,a0,d3.w*2)' (address in r6) into r0:
31339  bic r0,r6,#0xff000000
31340  bl m68k_read32 ;@ Call read32(r0) handler
31341
31342  str r0,[r7,r4] ;@ Save value into Dn/An
31343  add r6,r6,#4 ;@ Post-increment address
31344  sub r5,r5,#8 ;@ Take some cycles
31345  tst r11,r11
31346  bne Movemloop4cf0
31347
31348NoRegs4cf0:
31349  ldr r4,[r7,#0x40]
31350  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31351
31352  ldr r0,[r7,#0x5c] ;@ Load Cycles
31353  ldrh r8,[r4],#2 ;@ Fetch next opcode
31354  add r5,r0,r5
31355  subs r5,r5,#18 ;@ Subtract cycles
31356  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31357  b CycloneEnd
31358
31359
31360;@ ---------- [4cf8] movem.l $3333.w, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cf8 ----------
31361Op4cf8:
31362  str r4,[r7,#0x50] ;@ Save prev PC + 2
31363  str r5,[r7,#0x5c] ;@ Save Cycles
31364  mov r5,#0
31365
31366  ldrh r11,[r4],#2 ;@ r11=register mask
31367
31368;@ Get the address into r6:
31369;@ EaCalc : Get '$3333.w' into r6:
31370  ldrsh r6,[r4],#2 ;@ Fetch Absolute Short address
31371  str r4,[r7,#0x40] ;@ Save PC
31372;@ r4=Register Index*4:
31373  mov r4,#-4
31374
31375  tst r11,r11
31376  beq NoRegs4cf8
31377
31378Movemloop4cf8:
31379  add r4,r4,#4 ;@ r4=Next Register
31380  movs r11,r11,lsr #1
31381  bcc Movemloop4cf8
31382
31383  ;@ Copy memory to register:
31384;@ EaRead : Read '$3333.w' (address in r6) into r0:
31385  bic r0,r6,#0xff000000
31386  bl m68k_read32 ;@ Call read32(r0) handler
31387
31388  str r0,[r7,r4] ;@ Save value into Dn/An
31389  add r6,r6,#4 ;@ Post-increment address
31390  sub r5,r5,#8 ;@ Take some cycles
31391  tst r11,r11
31392  bne Movemloop4cf8
31393
31394NoRegs4cf8:
31395  ldr r4,[r7,#0x40]
31396  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31397
31398  ldr r0,[r7,#0x5c] ;@ Load Cycles
31399  ldrh r8,[r4],#2 ;@ Fetch next opcode
31400  add r5,r0,r5
31401  subs r5,r5,#16 ;@ Subtract cycles
31402  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31403  b CycloneEnd
31404
31405
31406;@ ---------- [4cf9] movem.l $33333333.l, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cf9 ----------
31407Op4cf9:
31408  str r4,[r7,#0x50] ;@ Save prev PC + 2
31409  str r5,[r7,#0x5c] ;@ Save Cycles
31410  mov r5,#0
31411
31412  ldrh r11,[r4],#2 ;@ r11=register mask
31413
31414;@ Get the address into r6:
31415;@ EaCalc : Get '$33333333.l' into r6:
31416  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
31417  ldrh r0,[r4],#2
31418  orr r6,r0,r2,lsl #16
31419  str r4,[r7,#0x40] ;@ Save PC
31420;@ r4=Register Index*4:
31421  mov r4,#-4
31422
31423  tst r11,r11
31424  beq NoRegs4cf9
31425
31426Movemloop4cf9:
31427  add r4,r4,#4 ;@ r4=Next Register
31428  movs r11,r11,lsr #1
31429  bcc Movemloop4cf9
31430
31431  ;@ Copy memory to register:
31432;@ EaRead : Read '$33333333.l' (address in r6) into r0:
31433  bic r0,r6,#0xff000000
31434  bl m68k_read32 ;@ Call read32(r0) handler
31435
31436  str r0,[r7,r4] ;@ Save value into Dn/An
31437  add r6,r6,#4 ;@ Post-increment address
31438  sub r5,r5,#8 ;@ Take some cycles
31439  tst r11,r11
31440  bne Movemloop4cf9
31441
31442NoRegs4cf9:
31443  ldr r4,[r7,#0x40]
31444  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31445
31446  ldr r0,[r7,#0x5c] ;@ Load Cycles
31447  ldrh r8,[r4],#2 ;@ Fetch next opcode
31448  add r5,r0,r5
31449  subs r5,r5,#20 ;@ Subtract cycles
31450  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31451  b CycloneEnd
31452
31453
31454;@ ---------- [4cfa] movem.l ($3333,pc), d0-d1/d4-d5/a0-a1/a4-a5; =3337 uses Op4cfa ----------
31455Op4cfa:
31456  str r4,[r7,#0x50] ;@ Save prev PC + 2
31457  str r5,[r7,#0x5c] ;@ Save Cycles
31458  mov r5,#0
31459
31460  ldrh r11,[r4],#2 ;@ r11=register mask
31461
31462;@ Get the address into r6:
31463;@ EaCalc : Get '($3333,pc)' into r6:
31464  ldr r0,[r7,#0x60] ;@ Get Memory base
31465  sub r0,r4,r0 ;@ Real PC
31466  ldrsh r2,[r4],#2 ;@ Fetch extension
31467  add r6,r2,r0 ;@ ($nn,PC)
31468  str r4,[r7,#0x40] ;@ Save PC
31469;@ r4=Register Index*4:
31470  mov r4,#-4
31471
31472  tst r11,r11
31473  beq NoRegs4cfa
31474
31475Movemloop4cfa:
31476  add r4,r4,#4 ;@ r4=Next Register
31477  movs r11,r11,lsr #1
31478  bcc Movemloop4cfa
31479
31480  ;@ Copy memory to register:
31481;@ EaRead : Read '($3333,pc)' (address in r6) into r0:
31482  bic r0,r6,#0xff000000
31483  bl m68k_fetch32 ;@ Call fetch32(r0) handler
31484
31485  str r0,[r7,r4] ;@ Save value into Dn/An
31486  add r6,r6,#4 ;@ Post-increment address
31487  sub r5,r5,#8 ;@ Take some cycles
31488  tst r11,r11
31489  bne Movemloop4cfa
31490
31491NoRegs4cfa:
31492  ldr r4,[r7,#0x40]
31493  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31494
31495  ldr r0,[r7,#0x5c] ;@ Load Cycles
31496  ldrh r8,[r4],#2 ;@ Fetch next opcode
31497  add r5,r0,r5
31498  subs r5,r5,#16 ;@ Subtract cycles
31499  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31500  b CycloneEnd
31501
31502
31503;@ ---------- [4cfb] movem.l ($33,pc,d3.w*2), d0-d1/d4-d5/a0-a1/a4-a5; =37 uses Op4cfb ----------
31504Op4cfb:
31505  str r4,[r7,#0x50] ;@ Save prev PC + 2
31506  str r5,[r7,#0x5c] ;@ Save Cycles
31507  mov r5,#0
31508
31509  ldrh r11,[r4],#2 ;@ r11=register mask
31510
31511;@ Get the address into r6:
31512;@ EaCalc : Get '($33,pc,d3.w*2)' into r6:
31513  ldr r0,[r7,#0x60] ;@ Get Memory base
31514  ldrh r3,[r4] ;@ Get extension word
31515  sub r0,r4,r0 ;@ r0=PC
31516  add r4,r4,#2
31517  mov r2,r3,lsr #10
31518  tst r3,#0x0800 ;@ Is Rn Word or Long
31519  and r2,r2,#0x3c ;@ r2=Index of Rn
31520  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
31521  ldrne   r2,[r7,r2] ;@ r2=Rn.l
31522  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
31523  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
31524  add r6,r2,r0 ;@ r6=Disp+PC+Rn
31525  str r4,[r7,#0x40] ;@ Save PC
31526;@ r4=Register Index*4:
31527  mov r4,#-4
31528
31529  tst r11,r11
31530  beq NoRegs4cfb
31531
31532Movemloop4cfb:
31533  add r4,r4,#4 ;@ r4=Next Register
31534  movs r11,r11,lsr #1
31535  bcc Movemloop4cfb
31536
31537  ;@ Copy memory to register:
31538;@ EaRead : Read '($33,pc,d3.w*2)' (address in r6) into r0:
31539  bic r0,r6,#0xff000000
31540  bl m68k_fetch32 ;@ Call fetch32(r0) handler
31541
31542  str r0,[r7,r4] ;@ Save value into Dn/An
31543  add r6,r6,#4 ;@ Post-increment address
31544  sub r5,r5,#8 ;@ Take some cycles
31545  tst r11,r11
31546  bne Movemloop4cfb
31547
31548NoRegs4cfb:
31549  ldr r4,[r7,#0x40]
31550  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
31551
31552  ldr r0,[r7,#0x5c] ;@ Load Cycles
31553  ldrh r8,[r4],#2 ;@ Fetch next opcode
31554  add r5,r0,r5
31555  subs r5,r5,#18 ;@ Subtract cycles
31556  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31557  b CycloneEnd
31558
31559
31560;@ ---------- [4e40] trap #0 uses Op4e40 ----------
31561Op4e40:
31562  str r4,[r7,#0x50] ;@ Save prev PC + 2
31563  str r5,[r7,#0x5c] ;@ Save Cycles
31564
31565  and r0,r8,#0xf ;@ Get trap number
31566  orr r0,r0,#0x20 ;@ 32+n
31567  bl Exception
31568
31569  ldr r5,[r7,#0x5c] ;@ Load Cycles
31570  ldrh r8,[r4],#2 ;@ Fetch next opcode
31571  subs r5,r5,#38 ;@ Subtract cycles
31572  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31573  b CycloneEnd
31574
31575;@ ---------- [4e50] link a0,#$3333 uses Op4e50 ----------
31576Op4e50:
31577  str r4,[r7,#0x50] ;@ Save prev PC + 2
31578  str r5,[r7,#0x5c] ;@ Save Cycles
31579
31580;@ Get An
31581;@ EaCalc : Get register index into r11:
31582  and r11,r8,#0x0007
31583  orr r11,r11,#0x8 ;@ A0-7
31584;@ EaRead : Read register[r11] into r1:
31585  ldr r1,[r7,r11,lsl #2]
31586
31587  ldr r0,[r7,#0x3c] ;@ Get A7
31588  sub r0,r0,#4 ;@ A7-=4
31589  mov r8,r0 ;@ abuse r8
31590
31591;@ Write An to Stack
31592  str r4,[r7,#0x40] ;@ Save PC
31593  bic r0,r0,#0xff000000
31594  bl m68k_write32 ;@ Call write32(r0,r1) handler
31595;@ Save to An
31596;@ EaWrite: r8 into register[r11]:
31597  str r8,[r7,r11,lsl #2]
31598
31599;@ Get offset:
31600;@ EaCalc : Get '#$3333' into r0:
31601  ldrsh r0,[r4],#2 ;@ Fetch immediate value
31602;@ EaRead : Read '#$3333' (address in r0) into r0:
31603
31604  add r8,r8,r0 ;@ Add offset to A7
31605  str r8,[r7,#0x3c]
31606
31607  ldr r5,[r7,#0x5c] ;@ Load Cycles
31608  ldrh r8,[r4],#2 ;@ Fetch next opcode
31609  subs r5,r5,#16 ;@ Subtract cycles
31610  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31611  b CycloneEnd
31612
31613;@ ---------- [4e57] link a7,#$3333 uses Op4e57 ----------
31614Op4e57:
31615  str r4,[r7,#0x50] ;@ Save prev PC + 2
31616  str r5,[r7,#0x5c] ;@ Save Cycles
31617
31618  ldr r0,[r7,#0x3c] ;@ Get A7
31619  sub r0,r0,#4 ;@ A7-=4
31620  mov r8,r0 ;@ abuse r8
31621  mov r1,r0
31622
31623;@ Write An to Stack
31624  str r4,[r7,#0x40] ;@ Save PC
31625  bic r0,r0,#0xff000000
31626  bl m68k_write32 ;@ Call write32(r0,r1) handler
31627;@ Save to An
31628;@ Get offset:
31629;@ EaCalc : Get '#$3333' into r0:
31630  ldrsh r0,[r4],#2 ;@ Fetch immediate value
31631;@ EaRead : Read '#$3333' (address in r0) into r0:
31632
31633  add r8,r8,r0 ;@ Add offset to A7
31634  str r8,[r7,#0x3c]
31635
31636  ldr r5,[r7,#0x5c] ;@ Load Cycles
31637  ldrh r8,[r4],#2 ;@ Fetch next opcode
31638  subs r5,r5,#16 ;@ Subtract cycles
31639  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31640  b CycloneEnd
31641
31642;@ ---------- [4e58] unlk a0 uses Op4e58 ----------
31643Op4e58:
31644  str r4,[r7,#0x50] ;@ Save prev PC + 2
31645  str r5,[r7,#0x5c] ;@ Save Cycles
31646
31647;@ Get An
31648;@ EaCalc : Get register index into r11:
31649  and r11,r8,#0x000f
31650;@ EaRead : Read register[r11] into r0:
31651  ldr r0,[r7,r11,lsl #2]
31652
31653  add r8,r0,#4 ;@ A7+=4, abuse r8
31654
31655;@ Pop An from stack:
31656  str r4,[r7,#0x40] ;@ Save PC
31657  bic r0,r0,#0xff000000
31658  bl m68k_read32 ;@ Call read32(r0) handler
31659
31660  str r8,[r7,#0x3c] ;@ Save A7
31661
31662;@ An = value from stack:
31663;@ EaWrite: r0 into register[r11]:
31664  str r0,[r7,r11,lsl #2]
31665
31666  ldr r5,[r7,#0x5c] ;@ Load Cycles
31667  ldrh r8,[r4],#2 ;@ Fetch next opcode
31668  subs r5,r5,#12 ;@ Subtract cycles
31669  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31670  b CycloneEnd
31671
31672;@ ---------- [4e60] move a0, usp uses Op4e60 ----------
31673Op4e60:
31674  ldr r11,[r7,#0x44] ;@ Get SR high
31675  tst r11,#0x20 ;@ Check we are in supervisor mode
31676  beq WrongPrivilegeMode ;@ No
31677
31678;@ EaCalc : Get register index into r0:
31679  and r0,r8,#0x000f
31680  orr r0,r0,#0x8 ;@ A0-7
31681;@ EaRead : Read register[r0] into r0:
31682  ldr r0,[r7,r0,lsl #2]
31683
31684  str r0,[r7,#0x48] ;@ Put in USP
31685
31686  ldrh r8,[r4],#2 ;@ Fetch next opcode
31687  subs r5,r5,#4 ;@ Subtract cycles
31688  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31689  b CycloneEnd
31690
31691;@ ---------- [4e68] move usp, a0 uses Op4e68 ----------
31692Op4e68:
31693  ldr r11,[r7,#0x44] ;@ Get SR high
31694  tst r11,#0x20 ;@ Check we are in supervisor mode
31695  beq WrongPrivilegeMode ;@ No
31696
31697  ldr r1,[r7,#0x48] ;@ Get from USP
31698
31699;@ EaCalc : Get register index into r0:
31700  and r0,r8,#0x000f
31701;@ EaWrite: r1 into register[r0]:
31702  str r1,[r7,r0,lsl #2]
31703
31704  ldrh r8,[r4],#2 ;@ Fetch next opcode
31705  subs r5,r5,#4 ;@ Subtract cycles
31706  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31707  b CycloneEnd
31708
31709;@ ---------- [4e70] reset uses Op4e70 ----------
31710Op4e70:
31711  ldr r11,[r7,#0x44] ;@ Get SR high
31712  tst r11,#0x20 ;@ Check we are in supervisor mode
31713  beq WrongPrivilegeMode ;@ No
31714
31715  str r4,[r7,#0x40] ;@ Save PC
31716  mov r1,r10,lsr #28
31717  strb r1,[r7,#0x46] ;@ Save Flags (NZCV)
31718  str r5,[r7,#0x5c] ;@ Save Cycles
31719  ldr r11,[r7,#0x90] ;@ ResetCallback
31720  tst r11,r11
31721  movne lr,pc
31722  bxne r11 ;@ call ResetCallback if it is defined
31723  ldrb r10,[r7,#0x46] ;@ r10 = Load Flags (NZCV)
31724  ldr r5,[r7,#0x5c] ;@ Load Cycles
31725  ldr r4,[r7,#0x40] ;@ Load PC
31726  mov r10,r10,lsl #28
31727
31728  ldrh r8,[r4],#2 ;@ Fetch next opcode
31729  subs r5,r5,#132 ;@ Subtract cycles
31730  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31731  b CycloneEnd
31732
31733;@ ---------- [4e72] stop uses Op4e72 ----------
31734Op4e72:
31735  ldr r11,[r7,#0x44] ;@ Get SR high
31736  tst r11,#0x20 ;@ Check we are in supervisor mode
31737  beq WrongPrivilegeMode ;@ No
31738
31739  ldrh r0,[r4],#2 ;@ Fetch the immediate
31740  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
31741  mov r2,r0,lsl #25
31742  tst r1,#1           ;@ 1 if C!=V
31743  eorne r0,r0,#3      ;@ ___XNZCV
31744  str r2,[r7,#0x4c]   ;@ Store X bit
31745  mov r10,r0,lsl #28  ;@ r10=NZCV...
31746  mov r0,r0,ror #8
31747  and r0,r0,#0xa7 ;@ only take defined bits
31748  strb r0,[r7,#0x44] ;@ Store SR high
31749
31750;@ A7 <-> OSP?
31751  eor r0,r0,r11
31752  tst r0,#0x20
31753  beq no_sp_swap4e72
31754 ;@ swap OSP and A7:
31755  ldr r11,[r7,#0x3C] ;@ Get A7
31756  ldr r0, [r7,#0x48] ;@ Get OSP
31757  str r11,[r7,#0x48]
31758  str r0, [r7,#0x3C]
31759no_sp_swap4e72:
31760
31761  ldr r0,[r7,#0x58]
31762  mov r5,#0 ;@ eat cycles
31763  orr r0,r0,#1 ;@ stopped
31764  str r0,[r7,#0x58]
31765
31766
31767  ldrh r8,[r4],#2 ;@ Fetch next opcode
31768  subs r5,r5,#4 ;@ Subtract cycles
31769  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31770  b CycloneEnd
31771
31772;@ ---------- [4e73] rte uses Op4e73 ----------
31773Op4e73:
31774  ldr r11,[r7,#0x44] ;@ Get SR high
31775  str r4,[r7,#0x50] ;@ Save prev PC + 2
31776  str r5,[r7,#0x5c] ;@ Save Cycles
31777  tst r11,#0x20 ;@ Check we are in supervisor mode
31778  beq WrongPrivilegeMode ;@ No
31779
31780;@ Pop SR:
31781  ldr r0,[r7,#0x3c]
31782  add r1,r0,#2 ;@ Postincrement A7
31783  str r1,[r7,#0x3c] ;@ Save A7
31784  str r4,[r7,#0x40] ;@ Save PC
31785  bic r0,r0,#0xff000000
31786  bl m68k_read16 ;@ Call read16(r0) handler
31787
31788  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
31789  mov r2,r0,lsl #25
31790  tst r1,#1           ;@ 1 if C!=V
31791  eorne r0,r0,#3      ;@ ___XNZCV
31792  str r2,[r7,#0x4c]   ;@ Store X bit
31793  mov r10,r0,lsl #28  ;@ r10=NZCV...
31794  mov r0,r0,ror #8
31795  and r0,r0,#0xa7 ;@ only take defined bits
31796  strb r0,[r7,#0x44] ;@ Store SR high
31797
31798;@ Pop PC:
31799  ldr r0,[r7,#0x3c]
31800  add r1,r0,#4 ;@ Postincrement A7
31801  str r1,[r7,#0x3c] ;@ Save A7
31802  bic r0,r0,#0xff000000
31803  bl m68k_read32 ;@ Call read32(r0) handler
31804  ldr r1,[r7,#0x60] ;@ Get Memory base
31805  add r0,r0,r1 ;@ Memory Base+PC
31806
31807  bl m68k_checkpc ;@ Call checkpc()
31808  mov r4,r0
31809  ldr r1,[r7,#0x44] ;@ reload SR high
31810;@ A7 <-> OSP?
31811  eor r0,r1,r11
31812  tst r0,#0x20
31813  beq no_sp_swap4e73
31814 ;@ swap OSP and A7:
31815  ldr r11,[r7,#0x3C] ;@ Get A7
31816  ldr r0, [r7,#0x48] ;@ Get OSP
31817  str r11,[r7,#0x48]
31818  str r0, [r7,#0x3C]
31819no_sp_swap4e73:
31820  ldr r1,[r7,#0x58]
31821  bic r1,r1,#0x0c ;@ clear 'not processing instruction' and 'doing addr error' bits
31822  str r1,[r7,#0x58]
31823  tst r4,#1 ;@ address error?
31824  bne ExceptionAddressError_r_prg_r4
31825  ldr r5,[r7,#0x5c] ;@ Load Cycles
31826  ldrh r8,[r4],#2 ;@ Fetch next opcode
31827  ldr r1,[r7,#0x44]
31828  subs r5,r5,#20 ;@ Subtract cycles
31829;@ CheckTrace:
31830  tst r1,#0x80
31831  bne CycloneDoTraceWithChecks
31832  cmp r5,#0
31833  ble CycloneEnd
31834;@ CheckInterrupt:
31835  movs r0,r1,lsr #24 ;@ Get IRQ level
31836  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
31837  cmp r0,#6 ;@ irq>6 ?
31838  andle r1,r1,#7 ;@ Get interrupt mask
31839  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
31840  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
31841  b CycloneDoInterruptGoBack
31842
31843;@ ---------- [4e76] trapv uses Op4e76 ----------
31844Op4e76:
31845  str r4,[r7,#0x50] ;@ Save prev PC + 2
31846  str r5,[r7,#0x5c] ;@ Save Cycles
31847  mov r5,#0
31848
31849  tst r10,#0x10000000
31850  subne r5,r5,#34
31851  movne r0,#7 ;@ TRAPV exception
31852  blne Exception
31853  ldr r0,[r7,#0x5c] ;@ Load Cycles
31854  ldrh r8,[r4],#2 ;@ Fetch next opcode
31855  add r5,r0,r5
31856  subs r5,r5,#4 ;@ Subtract cycles
31857  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31858  b CycloneEnd
31859
31860;@ ---------- [4e77] rtr uses Op4e77 ----------
31861Op4e77:
31862  str r4,[r7,#0x50] ;@ Save prev PC + 2
31863  str r5,[r7,#0x5c] ;@ Save Cycles
31864
31865;@ Pop SR:
31866  ldr r0,[r7,#0x3c]
31867  add r1,r0,#2 ;@ Postincrement A7
31868  str r1,[r7,#0x3c] ;@ Save A7
31869  str r4,[r7,#0x40] ;@ Save PC
31870  bic r0,r0,#0xff000000
31871  bl m68k_read16 ;@ Call read16(r0) handler
31872
31873  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
31874  mov r2,r0,lsl #25
31875  tst r1,#1           ;@ 1 if C!=V
31876  eorne r0,r0,#3      ;@ ___XNZCV
31877  str r2,[r7,#0x4c]   ;@ Store X bit
31878  mov r10,r0,lsl #28  ;@ r10=NZCV...
31879
31880;@ Pop PC:
31881  ldr r0,[r7,#0x3c]
31882  add r1,r0,#4 ;@ Postincrement A7
31883  str r1,[r7,#0x3c] ;@ Save A7
31884  bic r0,r0,#0xff000000
31885  bl m68k_read32 ;@ Call read32(r0) handler
31886  ldr r1,[r7,#0x60] ;@ Get Memory base
31887  add r0,r0,r1 ;@ Memory Base+PC
31888
31889  bl m68k_checkpc ;@ Call checkpc()
31890  mov r4,r0
31891  tst r4,#1 ;@ address error?
31892  bne ExceptionAddressError_r_prg_r4
31893  ldr r5,[r7,#0x5c] ;@ Load Cycles
31894  ldrh r8,[r4],#2 ;@ Fetch next opcode
31895  subs r5,r5,#20 ;@ Subtract cycles
31896  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31897  b CycloneEnd
31898
31899;@ ---------- [4e90] jsr (a0) uses Op4e90 ----------
31900Op4e90:
31901  str r4,[r7,#0x50] ;@ Save prev PC + 2
31902  str r5,[r7,#0x5c] ;@ Save Cycles
31903
31904  ldr r11,[r7,#0x60] ;@ Get Memory base
31905
31906;@ EaCalc : Get '(a0)' into r12:
31907  and r2,r8,#0x000f
31908  orr r2,r2,#0x8 ;@ A0-7
31909  ldr r12,[r7,r2,lsl #2]
31910;@ Jump - Get new PC from r12
31911  add r0,r12,r11 ;@ Memory Base + New PC
31912
31913  bl m68k_checkpc ;@ Call checkpc()
31914  ldr r2,[r7,#0x3c]
31915  sub r1,r4,r11 ;@ r1 = Old PC
31916  mov r4,r0
31917  tst r4,#1 ;@ address error?
31918  bne ExceptionAddressError_r_prg_r4
31919;@ Push old PC onto stack
31920  sub r0,r2,#4 ;@ Predecrement A7
31921  str r0,[r7,#0x3c] ;@ Save A7
31922  str r4,[r7,#0x40] ;@ Save PC
31923  bic r0,r0,#0xff000000
31924  bl m68k_write32 ;@ Call write32(r0,r1) handler
31925  ldr r5,[r7,#0x5c] ;@ Load Cycles
31926  ldrh r8,[r4],#2 ;@ Fetch next opcode
31927  subs r5,r5,#16 ;@ Subtract cycles
31928  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31929  b CycloneEnd
31930
31931;@ ---------- [4ea8] jsr ($3333,a0) uses Op4ea8 ----------
31932Op4ea8:
31933  str r4,[r7,#0x50] ;@ Save prev PC + 2
31934  str r5,[r7,#0x5c] ;@ Save Cycles
31935
31936  ldr r11,[r7,#0x60] ;@ Get Memory base
31937
31938;@ EaCalc : Get '($3333,a0)' into r12:
31939  ldrsh r0,[r4],#2 ;@ Fetch offset
31940  and r2,r8,#0x000f
31941  ldr r2,[r7,r2,lsl #2]
31942  add r12,r0,r2 ;@ Add on offset
31943;@ Jump - Get new PC from r12
31944  add r0,r12,r11 ;@ Memory Base + New PC
31945
31946  bl m68k_checkpc ;@ Call checkpc()
31947  ldr r2,[r7,#0x3c]
31948  sub r1,r4,r11 ;@ r1 = Old PC
31949  mov r4,r0
31950  tst r4,#1 ;@ address error?
31951  bne ExceptionAddressError_r_prg_r4
31952;@ Push old PC onto stack
31953  sub r0,r2,#4 ;@ Predecrement A7
31954  str r0,[r7,#0x3c] ;@ Save A7
31955  str r4,[r7,#0x40] ;@ Save PC
31956  bic r0,r0,#0xff000000
31957  bl m68k_write32 ;@ Call write32(r0,r1) handler
31958  ldr r5,[r7,#0x5c] ;@ Load Cycles
31959  ldrh r8,[r4],#2 ;@ Fetch next opcode
31960  subs r5,r5,#18 ;@ Subtract cycles
31961  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31962  b CycloneEnd
31963
31964;@ ---------- [4eb0] jsr ($33,a0,d3.w*2) uses Op4eb0 ----------
31965Op4eb0:
31966  str r4,[r7,#0x50] ;@ Save prev PC + 2
31967  str r5,[r7,#0x5c] ;@ Save Cycles
31968
31969  ldr r11,[r7,#0x60] ;@ Get Memory base
31970
31971;@ EaCalc : Get '($33,a0,d3.w*2)' into r12:
31972;@ Get extension word into r3:
31973  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
31974  mov r2,r3,lsr #10
31975  tst r3,#0x0800 ;@ Is Rn Word or Long
31976  and r2,r2,#0x3c ;@ r2=Index of Rn
31977  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
31978  ldrne   r2,[r7,r2] ;@ r2=Rn.l
31979  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
31980  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
31981  and r2,r8,#0x000f
31982  orr r2,r2,#0x8 ;@ A0-7
31983  ldr r2,[r7,r2,lsl #2]
31984  add r12,r2,r3 ;@ r12=Disp+An+Rn
31985;@ Jump - Get new PC from r12
31986  add r0,r12,r11 ;@ Memory Base + New PC
31987
31988  bl m68k_checkpc ;@ Call checkpc()
31989  ldr r2,[r7,#0x3c]
31990  sub r1,r4,r11 ;@ r1 = Old PC
31991  mov r4,r0
31992  tst r4,#1 ;@ address error?
31993  bne ExceptionAddressError_r_prg_r4
31994;@ Push old PC onto stack
31995  sub r0,r2,#4 ;@ Predecrement A7
31996  str r0,[r7,#0x3c] ;@ Save A7
31997  str r4,[r7,#0x40] ;@ Save PC
31998  bic r0,r0,#0xff000000
31999  bl m68k_write32 ;@ Call write32(r0,r1) handler
32000  ldr r5,[r7,#0x5c] ;@ Load Cycles
32001  ldrh r8,[r4],#2 ;@ Fetch next opcode
32002  subs r5,r5,#22 ;@ Subtract cycles
32003  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32004  b CycloneEnd
32005
32006;@ ---------- [4eb8] jsr $3333.w uses Op4eb8 ----------
32007Op4eb8:
32008  str r4,[r7,#0x50] ;@ Save prev PC + 2
32009  str r5,[r7,#0x5c] ;@ Save Cycles
32010
32011  ldr r11,[r7,#0x60] ;@ Get Memory base
32012
32013;@ EaCalc : Get '$3333.w' into r12:
32014  ldrsh r12,[r4],#2 ;@ Fetch Absolute Short address
32015;@ Jump - Get new PC from r12
32016  add r0,r12,r11 ;@ Memory Base + New PC
32017
32018  bl m68k_checkpc ;@ Call checkpc()
32019  ldr r2,[r7,#0x3c]
32020  sub r1,r4,r11 ;@ r1 = Old PC
32021  mov r4,r0
32022  tst r4,#1 ;@ address error?
32023  bne ExceptionAddressError_r_prg_r4
32024;@ Push old PC onto stack
32025  sub r0,r2,#4 ;@ Predecrement A7
32026  str r0,[r7,#0x3c] ;@ Save A7
32027  str r4,[r7,#0x40] ;@ Save PC
32028  bic r0,r0,#0xff000000
32029  bl m68k_write32 ;@ Call write32(r0,r1) handler
32030  ldr r5,[r7,#0x5c] ;@ Load Cycles
32031  ldrh r8,[r4],#2 ;@ Fetch next opcode
32032  subs r5,r5,#18 ;@ Subtract cycles
32033  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32034  b CycloneEnd
32035
32036;@ ---------- [4eb9] jsr $33333333.l uses Op4eb9 ----------
32037Op4eb9:
32038  str r4,[r7,#0x50] ;@ Save prev PC + 2
32039  str r5,[r7,#0x5c] ;@ Save Cycles
32040
32041  ldr r11,[r7,#0x60] ;@ Get Memory base
32042
32043;@ EaCalc : Get '$33333333.l' into r12:
32044  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
32045  ldrh r0,[r4],#2
32046  orr r12,r0,r2,lsl #16
32047;@ Jump - Get new PC from r12
32048  add r0,r12,r11 ;@ Memory Base + New PC
32049
32050  bl m68k_checkpc ;@ Call checkpc()
32051  ldr r2,[r7,#0x3c]
32052  sub r1,r4,r11 ;@ r1 = Old PC
32053  mov r4,r0
32054  tst r4,#1 ;@ address error?
32055  bne ExceptionAddressError_r_prg_r4
32056;@ Push old PC onto stack
32057  sub r0,r2,#4 ;@ Predecrement A7
32058  str r0,[r7,#0x3c] ;@ Save A7
32059  str r4,[r7,#0x40] ;@ Save PC
32060  bic r0,r0,#0xff000000
32061  bl m68k_write32 ;@ Call write32(r0,r1) handler
32062  ldr r5,[r7,#0x5c] ;@ Load Cycles
32063  ldrh r8,[r4],#2 ;@ Fetch next opcode
32064  subs r5,r5,#20 ;@ Subtract cycles
32065  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32066  b CycloneEnd
32067
32068;@ ---------- [4eba] jsr ($3333,pc); =3335 uses Op4eba ----------
32069Op4eba:
32070  str r4,[r7,#0x50] ;@ Save prev PC + 2
32071  str r5,[r7,#0x5c] ;@ Save Cycles
32072
32073  ldr r11,[r7,#0x60] ;@ Get Memory base
32074
32075;@ EaCalc : Get '($3333,pc)' into r12:
32076  ldr r0,[r7,#0x60] ;@ Get Memory base
32077  sub r0,r4,r0 ;@ Real PC
32078  ldrsh r2,[r4],#2 ;@ Fetch extension
32079  add r12,r2,r0 ;@ ($nn,PC)
32080;@ Jump - Get new PC from r12
32081  add r0,r12,r11 ;@ Memory Base + New PC
32082
32083  bl m68k_checkpc ;@ Call checkpc()
32084  ldr r2,[r7,#0x3c]
32085  sub r1,r4,r11 ;@ r1 = Old PC
32086  mov r4,r0
32087  tst r4,#1 ;@ address error?
32088  bne ExceptionAddressError_r_prg_r4
32089;@ Push old PC onto stack
32090  sub r0,r2,#4 ;@ Predecrement A7
32091  str r0,[r7,#0x3c] ;@ Save A7
32092  str r4,[r7,#0x40] ;@ Save PC
32093  bic r0,r0,#0xff000000
32094  bl m68k_write32 ;@ Call write32(r0,r1) handler
32095  ldr r5,[r7,#0x5c] ;@ Load Cycles
32096  ldrh r8,[r4],#2 ;@ Fetch next opcode
32097  subs r5,r5,#18 ;@ Subtract cycles
32098  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32099  b CycloneEnd
32100
32101;@ ---------- [4ebb] jsr ($33,pc,d3.w*2); =35 uses Op4ebb ----------
32102Op4ebb:
32103  str r4,[r7,#0x50] ;@ Save prev PC + 2
32104  str r5,[r7,#0x5c] ;@ Save Cycles
32105
32106  ldr r11,[r7,#0x60] ;@ Get Memory base
32107
32108;@ EaCalc : Get '($33,pc,d3.w*2)' into r12:
32109  ldr r0,[r7,#0x60] ;@ Get Memory base
32110  ldrh r3,[r4] ;@ Get extension word
32111  sub r0,r4,r0 ;@ r0=PC
32112  add r4,r4,#2
32113  mov r2,r3,lsr #10
32114  tst r3,#0x0800 ;@ Is Rn Word or Long
32115  and r2,r2,#0x3c ;@ r2=Index of Rn
32116  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
32117  ldrne   r2,[r7,r2] ;@ r2=Rn.l
32118  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
32119  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
32120  add r12,r2,r0 ;@ r12=Disp+PC+Rn
32121;@ Jump - Get new PC from r12
32122  add r0,r12,r11 ;@ Memory Base + New PC
32123
32124  bl m68k_checkpc ;@ Call checkpc()
32125  ldr r2,[r7,#0x3c]
32126  sub r1,r4,r11 ;@ r1 = Old PC
32127  mov r4,r0
32128  tst r4,#1 ;@ address error?
32129  bne ExceptionAddressError_r_prg_r4
32130;@ Push old PC onto stack
32131  sub r0,r2,#4 ;@ Predecrement A7
32132  str r0,[r7,#0x3c] ;@ Save A7
32133  str r4,[r7,#0x40] ;@ Save PC
32134  bic r0,r0,#0xff000000
32135  bl m68k_write32 ;@ Call write32(r0,r1) handler
32136  ldr r5,[r7,#0x5c] ;@ Load Cycles
32137  ldrh r8,[r4],#2 ;@ Fetch next opcode
32138  subs r5,r5,#22 ;@ Subtract cycles
32139  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32140  b CycloneEnd
32141
32142;@ ---------- [4ed0] jmp (a0) uses Op4ed0 ----------
32143Op4ed0:
32144  ldr r11,[r7,#0x60] ;@ Get Memory base
32145
32146;@ EaCalc : Get '(a0)' into r12:
32147  and r2,r8,#0x000f
32148  orr r2,r2,#0x8 ;@ A0-7
32149  ldr r12,[r7,r2,lsl #2]
32150;@ Jump - Get new PC from r12
32151  add r0,r12,r11 ;@ Memory Base + New PC
32152
32153  bl m68k_checkpc ;@ Call checkpc()
32154  mov r4,r0
32155  tst r4,#1 ;@ address error?
32156  bne ExceptionAddressError_r_prg_r4
32157  ldrh r8,[r4],#2 ;@ Fetch next opcode
32158  subs r5,r5,#8 ;@ Subtract cycles
32159  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32160  b CycloneEnd
32161
32162;@ ---------- [4ee8] jmp ($3333,a0) uses Op4ee8 ----------
32163Op4ee8:
32164  ldr r11,[r7,#0x60] ;@ Get Memory base
32165
32166;@ EaCalc : Get '($3333,a0)' into r12:
32167  ldrsh r0,[r4],#2 ;@ Fetch offset
32168  and r2,r8,#0x000f
32169  ldr r2,[r7,r2,lsl #2]
32170  add r12,r0,r2 ;@ Add on offset
32171;@ Jump - Get new PC from r12
32172  add r0,r12,r11 ;@ Memory Base + New PC
32173
32174  bl m68k_checkpc ;@ Call checkpc()
32175  mov r4,r0
32176  tst r4,#1 ;@ address error?
32177  bne ExceptionAddressError_r_prg_r4
32178  ldrh r8,[r4],#2 ;@ Fetch next opcode
32179  subs r5,r5,#10 ;@ Subtract cycles
32180  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32181  b CycloneEnd
32182
32183;@ ---------- [4ef0] jmp ($33,a0,d3.w*2) uses Op4ef0 ----------
32184Op4ef0:
32185  ldr r11,[r7,#0x60] ;@ Get Memory base
32186
32187;@ EaCalc : Get '($33,a0,d3.w*2)' into r12:
32188;@ Get extension word into r3:
32189  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
32190  mov r2,r3,lsr #10
32191  tst r3,#0x0800 ;@ Is Rn Word or Long
32192  and r2,r2,#0x3c ;@ r2=Index of Rn
32193  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
32194  ldrne   r2,[r7,r2] ;@ r2=Rn.l
32195  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
32196  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
32197  and r2,r8,#0x000f
32198  orr r2,r2,#0x8 ;@ A0-7
32199  ldr r2,[r7,r2,lsl #2]
32200  add r12,r2,r3 ;@ r12=Disp+An+Rn
32201;@ Jump - Get new PC from r12
32202  add r0,r12,r11 ;@ Memory Base + New PC
32203
32204  bl m68k_checkpc ;@ Call checkpc()
32205  mov r4,r0
32206  tst r4,#1 ;@ address error?
32207  bne ExceptionAddressError_r_prg_r4
32208  ldrh r8,[r4],#2 ;@ Fetch next opcode
32209  subs r5,r5,#14 ;@ Subtract cycles
32210  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32211  b CycloneEnd
32212
32213;@ ---------- [4ef8] jmp $3333.w uses Op4ef8 ----------
32214Op4ef8:
32215  ldr r11,[r7,#0x60] ;@ Get Memory base
32216
32217;@ EaCalc : Get '$3333.w' into r12:
32218  ldrsh r12,[r4],#2 ;@ Fetch Absolute Short address
32219;@ Jump - Get new PC from r12
32220  add r0,r12,r11 ;@ Memory Base + New PC
32221
32222  bl m68k_checkpc ;@ Call checkpc()
32223  mov r4,r0
32224  tst r4,#1 ;@ address error?
32225  bne ExceptionAddressError_r_prg_r4
32226  ldrh r8,[r4],#2 ;@ Fetch next opcode
32227  subs r5,r5,#10 ;@ Subtract cycles
32228  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32229  b CycloneEnd
32230
32231;@ ---------- [4ef9] jmp $33333333.l uses Op4ef9 ----------
32232Op4ef9:
32233  ldr r11,[r7,#0x60] ;@ Get Memory base
32234
32235;@ EaCalc : Get '$33333333.l' into r12:
32236  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
32237  ldrh r0,[r4],#2
32238  orr r12,r0,r2,lsl #16
32239;@ Jump - Get new PC from r12
32240  add r0,r12,r11 ;@ Memory Base + New PC
32241
32242  bl m68k_checkpc ;@ Call checkpc()
32243  mov r4,r0
32244  tst r4,#1 ;@ address error?
32245  bne ExceptionAddressError_r_prg_r4
32246  ldrh r8,[r4],#2 ;@ Fetch next opcode
32247  subs r5,r5,#12 ;@ Subtract cycles
32248  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32249  b CycloneEnd
32250
32251;@ ---------- [4efa] jmp ($3333,pc); =3335 uses Op4efa ----------
32252Op4efa:
32253  ldr r11,[r7,#0x60] ;@ Get Memory base
32254
32255;@ EaCalc : Get '($3333,pc)' into r12:
32256  ldr r0,[r7,#0x60] ;@ Get Memory base
32257  sub r0,r4,r0 ;@ Real PC
32258  ldrsh r2,[r4],#2 ;@ Fetch extension
32259  add r12,r2,r0 ;@ ($nn,PC)
32260;@ Jump - Get new PC from r12
32261  add r0,r12,r11 ;@ Memory Base + New PC
32262
32263  bl m68k_checkpc ;@ Call checkpc()
32264  mov r4,r0
32265  tst r4,#1 ;@ address error?
32266  bne ExceptionAddressError_r_prg_r4
32267  ldrh r8,[r4],#2 ;@ Fetch next opcode
32268  subs r5,r5,#10 ;@ Subtract cycles
32269  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32270  b CycloneEnd
32271
32272;@ ---------- [4efb] jmp ($33,pc,d3.w*2); =35 uses Op4efb ----------
32273Op4efb:
32274  ldr r11,[r7,#0x60] ;@ Get Memory base
32275
32276;@ EaCalc : Get '($33,pc,d3.w*2)' into r12:
32277  ldr r0,[r7,#0x60] ;@ Get Memory base
32278  ldrh r3,[r4] ;@ Get extension word
32279  sub r0,r4,r0 ;@ r0=PC
32280  add r4,r4,#2
32281  mov r2,r3,lsr #10
32282  tst r3,#0x0800 ;@ Is Rn Word or Long
32283  and r2,r2,#0x3c ;@ r2=Index of Rn
32284  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
32285  ldrne   r2,[r7,r2] ;@ r2=Rn.l
32286  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
32287  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
32288  add r12,r2,r0 ;@ r12=Disp+PC+Rn
32289;@ Jump - Get new PC from r12
32290  add r0,r12,r11 ;@ Memory Base + New PC
32291
32292  bl m68k_checkpc ;@ Call checkpc()
32293  mov r4,r0
32294  tst r4,#1 ;@ address error?
32295  bne ExceptionAddressError_r_prg_r4
32296  ldrh r8,[r4],#2 ;@ Fetch next opcode
32297  subs r5,r5,#14 ;@ Subtract cycles
32298  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32299  b CycloneEnd
32300
32301;@ ---------- [5000] addq.b #8, d0 uses Op5000 ----------
32302Op5000:
32303;@ EaCalc : Get register index into r11:
32304  and r11,r8,#0x000f
32305;@ EaRead : Read register[r11] into r0:
32306  ldr r0,[r7,r11,lsl #2]
32307
32308  mov r0,r0,asl #24
32309
32310  adds r1,r0,#0x8000000
32311  mrs r10,cpsr ;@ r10=flags
32312  str r10,[r7,#0x4c] ;@ Save X bit
32313
32314;@ EaWrite: r1 into register[r11]:
32315  mov r1,r1,lsr #24
32316  strb r1,[r7,r11,lsl #2]
32317
32318  ldrh r8,[r4],#2 ;@ Fetch next opcode
32319  subs r5,r5,#4 ;@ Subtract cycles
32320  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32321  b CycloneEnd
32322
32323;@ ---------- [5010] addq.b #8, (a0) uses Op5010 ----------
32324Op5010:
32325  str r4,[r7,#0x50] ;@ Save prev PC + 2
32326  str r5,[r7,#0x5c] ;@ Save Cycles
32327
32328;@ EaCalc : Get '(a0)' into r11:
32329  and r2,r8,#0x000f
32330  orr r2,r2,#0x8 ;@ A0-7
32331  ldr r11,[r7,r2,lsl #2]
32332;@ EaRead : Read '(a0)' (address in r11) into r0:
32333  str r4,[r7,#0x40] ;@ Save PC
32334  bic r0,r11,#0xff000000
32335  bl m68k_read8 ;@ Call read8(r0) handler
32336
32337  mov r0,r0,asl #24
32338
32339  adds r1,r0,#0x8000000
32340  mrs r10,cpsr ;@ r10=flags
32341  str r10,[r7,#0x4c] ;@ Save X bit
32342
32343;@ EaWrite: Write r1 into '(a0)' (address in r11):
32344  mov r1,r1,lsr #24
32345  bic r0,r11,#0xff000000
32346  bl m68k_write8 ;@ Call write8(r0,r1) handler
32347
32348  ldr r5,[r7,#0x5c] ;@ Load Cycles
32349  ldrh r8,[r4],#2 ;@ Fetch next opcode
32350  subs r5,r5,#12 ;@ Subtract cycles
32351  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32352  b CycloneEnd
32353
32354;@ ---------- [5018] addq.b #8, (a0)+ uses Op5018 ----------
32355Op5018:
32356  str r4,[r7,#0x50] ;@ Save prev PC + 2
32357  str r5,[r7,#0x5c] ;@ Save Cycles
32358
32359;@ EaCalc : Get '(a0)+' into r11:
32360  and r2,r8,#0x000f
32361  ldr r11,[r7,r2,lsl #2]
32362  add r3,r11,#1 ;@ Post-increment An
32363  str r3,[r7,r2,lsl #2]
32364;@ EaRead : Read '(a0)+' (address in r11) into r0:
32365  str r4,[r7,#0x40] ;@ Save PC
32366  bic r0,r11,#0xff000000
32367  bl m68k_read8 ;@ Call read8(r0) handler
32368
32369  mov r0,r0,asl #24
32370
32371  adds r1,r0,#0x8000000
32372  mrs r10,cpsr ;@ r10=flags
32373  str r10,[r7,#0x4c] ;@ Save X bit
32374
32375;@ EaWrite: Write r1 into '(a0)+' (address in r11):
32376  mov r1,r1,lsr #24
32377  bic r0,r11,#0xff000000
32378  bl m68k_write8 ;@ Call write8(r0,r1) handler
32379
32380  ldr r5,[r7,#0x5c] ;@ Load Cycles
32381  ldrh r8,[r4],#2 ;@ Fetch next opcode
32382  subs r5,r5,#12 ;@ Subtract cycles
32383  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32384  b CycloneEnd
32385
32386;@ ---------- [501f] addq.b #8, (a7)+ uses Op501f ----------
32387Op501f:
32388  str r4,[r7,#0x50] ;@ Save prev PC + 2
32389  str r5,[r7,#0x5c] ;@ Save Cycles
32390
32391;@ EaCalc : Get '(a7)+' into r11:
32392  ldr r11,[r7,#0x3c] ;@ A7
32393  add r3,r11,#2 ;@ Post-increment An
32394  str r3,[r7,#0x3c] ;@ A7
32395;@ EaRead : Read '(a7)+' (address in r11) into r0:
32396  str r4,[r7,#0x40] ;@ Save PC
32397  bic r0,r11,#0xff000000
32398  bl m68k_read8 ;@ Call read8(r0) handler
32399
32400  mov r0,r0,asl #24
32401
32402  adds r1,r0,#0x8000000
32403  mrs r10,cpsr ;@ r10=flags
32404  str r10,[r7,#0x4c] ;@ Save X bit
32405
32406;@ EaWrite: Write r1 into '(a7)+' (address in r11):
32407  mov r1,r1,lsr #24
32408  bic r0,r11,#0xff000000
32409  bl m68k_write8 ;@ Call write8(r0,r1) handler
32410
32411  ldr r5,[r7,#0x5c] ;@ Load Cycles
32412  ldrh r8,[r4],#2 ;@ Fetch next opcode
32413  subs r5,r5,#12 ;@ Subtract cycles
32414  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32415  b CycloneEnd
32416
32417;@ ---------- [5020] addq.b #8, -(a0) uses Op5020 ----------
32418Op5020:
32419  str r4,[r7,#0x50] ;@ Save prev PC + 2
32420  str r5,[r7,#0x5c] ;@ Save Cycles
32421
32422;@ EaCalc : Get '-(a0)' into r11:
32423  and r2,r8,#0x000f
32424  orr r2,r2,#0x8 ;@ A0-7
32425  ldr r11,[r7,r2,lsl #2]
32426  sub r11,r11,#1 ;@ Pre-decrement An
32427  str r11,[r7,r2,lsl #2]
32428;@ EaRead : Read '-(a0)' (address in r11) into r0:
32429  str r4,[r7,#0x40] ;@ Save PC
32430  bic r0,r11,#0xff000000
32431  bl m68k_read8 ;@ Call read8(r0) handler
32432
32433  mov r0,r0,asl #24
32434
32435  adds r1,r0,#0x8000000
32436  mrs r10,cpsr ;@ r10=flags
32437  str r10,[r7,#0x4c] ;@ Save X bit
32438
32439;@ EaWrite: Write r1 into '-(a0)' (address in r11):
32440  mov r1,r1,lsr #24
32441  bic r0,r11,#0xff000000
32442  bl m68k_write8 ;@ Call write8(r0,r1) handler
32443
32444  ldr r5,[r7,#0x5c] ;@ Load Cycles
32445  ldrh r8,[r4],#2 ;@ Fetch next opcode
32446  subs r5,r5,#14 ;@ Subtract cycles
32447  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32448  b CycloneEnd
32449
32450;@ ---------- [5027] addq.b #8, -(a7) uses Op5027 ----------
32451Op5027:
32452  str r4,[r7,#0x50] ;@ Save prev PC + 2
32453  str r5,[r7,#0x5c] ;@ Save Cycles
32454
32455;@ EaCalc : Get '-(a7)' into r11:
32456  ldr r11,[r7,#0x3c] ;@ A7
32457  sub r11,r11,#2 ;@ Pre-decrement An
32458  str r11,[r7,#0x3c] ;@ A7
32459;@ EaRead : Read '-(a7)' (address in r11) into r0:
32460  str r4,[r7,#0x40] ;@ Save PC
32461  bic r0,r11,#0xff000000
32462  bl m68k_read8 ;@ Call read8(r0) handler
32463
32464  mov r0,r0,asl #24
32465
32466  adds r1,r0,#0x8000000
32467  mrs r10,cpsr ;@ r10=flags
32468  str r10,[r7,#0x4c] ;@ Save X bit
32469
32470;@ EaWrite: Write r1 into '-(a7)' (address in r11):
32471  mov r1,r1,lsr #24
32472  bic r0,r11,#0xff000000
32473  bl m68k_write8 ;@ Call write8(r0,r1) handler
32474
32475  ldr r5,[r7,#0x5c] ;@ Load Cycles
32476  ldrh r8,[r4],#2 ;@ Fetch next opcode
32477  subs r5,r5,#14 ;@ Subtract cycles
32478  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32479  b CycloneEnd
32480
32481;@ ---------- [5028] addq.b #8, ($3333,a0) uses Op5028 ----------
32482Op5028:
32483  str r4,[r7,#0x50] ;@ Save prev PC + 2
32484  str r5,[r7,#0x5c] ;@ Save Cycles
32485
32486;@ EaCalc : Get '($3333,a0)' into r11:
32487  ldrsh r0,[r4],#2 ;@ Fetch offset
32488  and r2,r8,#0x000f
32489  ldr r2,[r7,r2,lsl #2]
32490  add r11,r0,r2 ;@ Add on offset
32491;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
32492  str r4,[r7,#0x40] ;@ Save PC
32493  bic r0,r11,#0xff000000
32494  bl m68k_read8 ;@ Call read8(r0) handler
32495
32496  mov r0,r0,asl #24
32497
32498  adds r1,r0,#0x8000000
32499  mrs r10,cpsr ;@ r10=flags
32500  str r10,[r7,#0x4c] ;@ Save X bit
32501
32502;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
32503  mov r1,r1,lsr #24
32504  bic r0,r11,#0xff000000
32505  bl m68k_write8 ;@ Call write8(r0,r1) handler
32506
32507  ldr r5,[r7,#0x5c] ;@ Load Cycles
32508  ldrh r8,[r4],#2 ;@ Fetch next opcode
32509  subs r5,r5,#16 ;@ Subtract cycles
32510  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32511  b CycloneEnd
32512
32513;@ ---------- [5030] addq.b #8, ($33,a0,d3.w*2) uses Op5030 ----------
32514Op5030:
32515  str r4,[r7,#0x50] ;@ Save prev PC + 2
32516  str r5,[r7,#0x5c] ;@ Save Cycles
32517
32518;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
32519;@ Get extension word into r3:
32520  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
32521  mov r2,r3,lsr #10
32522  tst r3,#0x0800 ;@ Is Rn Word or Long
32523  and r2,r2,#0x3c ;@ r2=Index of Rn
32524  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
32525  ldrne   r2,[r7,r2] ;@ r2=Rn.l
32526  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
32527  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
32528  and r2,r8,#0x000f
32529  orr r2,r2,#0x8 ;@ A0-7
32530  ldr r2,[r7,r2,lsl #2]
32531  add r11,r2,r3 ;@ r11=Disp+An+Rn
32532;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
32533  str r4,[r7,#0x40] ;@ Save PC
32534  bic r0,r11,#0xff000000
32535  bl m68k_read8 ;@ Call read8(r0) handler
32536
32537  mov r0,r0,asl #24
32538
32539  adds r1,r0,#0x8000000
32540  mrs r10,cpsr ;@ r10=flags
32541  str r10,[r7,#0x4c] ;@ Save X bit
32542
32543;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
32544  mov r1,r1,lsr #24
32545  bic r0,r11,#0xff000000
32546  bl m68k_write8 ;@ Call write8(r0,r1) handler
32547
32548  ldr r5,[r7,#0x5c] ;@ Load Cycles
32549  ldrh r8,[r4],#2 ;@ Fetch next opcode
32550  subs r5,r5,#18 ;@ Subtract cycles
32551  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32552  b CycloneEnd
32553
32554;@ ---------- [5038] addq.b #8, $3333.w uses Op5038 ----------
32555Op5038:
32556  str r4,[r7,#0x50] ;@ Save prev PC + 2
32557  str r5,[r7,#0x5c] ;@ Save Cycles
32558
32559;@ EaCalc : Get '$3333.w' into r11:
32560  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
32561;@ EaRead : Read '$3333.w' (address in r11) into r0:
32562  str r4,[r7,#0x40] ;@ Save PC
32563  bic r0,r11,#0xff000000
32564  bl m68k_read8 ;@ Call read8(r0) handler
32565
32566  mov r0,r0,asl #24
32567
32568  adds r1,r0,#0x8000000
32569  mrs r10,cpsr ;@ r10=flags
32570  str r10,[r7,#0x4c] ;@ Save X bit
32571
32572;@ EaWrite: Write r1 into '$3333.w' (address in r11):
32573  mov r1,r1,lsr #24
32574  bic r0,r11,#0xff000000
32575  bl m68k_write8 ;@ Call write8(r0,r1) handler
32576
32577  ldr r5,[r7,#0x5c] ;@ Load Cycles
32578  ldrh r8,[r4],#2 ;@ Fetch next opcode
32579  subs r5,r5,#16 ;@ Subtract cycles
32580  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32581  b CycloneEnd
32582
32583;@ ---------- [5039] addq.b #8, $33333333.l uses Op5039 ----------
32584Op5039:
32585  str r4,[r7,#0x50] ;@ Save prev PC + 2
32586  str r5,[r7,#0x5c] ;@ Save Cycles
32587
32588;@ EaCalc : Get '$33333333.l' into r11:
32589  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
32590  ldrh r0,[r4],#2
32591  orr r11,r0,r2,lsl #16
32592;@ EaRead : Read '$33333333.l' (address in r11) into r0:
32593  str r4,[r7,#0x40] ;@ Save PC
32594  bic r0,r11,#0xff000000
32595  bl m68k_read8 ;@ Call read8(r0) handler
32596
32597  mov r0,r0,asl #24
32598
32599  adds r1,r0,#0x8000000
32600  mrs r10,cpsr ;@ r10=flags
32601  str r10,[r7,#0x4c] ;@ Save X bit
32602
32603;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
32604  mov r1,r1,lsr #24
32605  bic r0,r11,#0xff000000
32606  bl m68k_write8 ;@ Call write8(r0,r1) handler
32607
32608  ldr r5,[r7,#0x5c] ;@ Load Cycles
32609  ldrh r8,[r4],#2 ;@ Fetch next opcode
32610  subs r5,r5,#20 ;@ Subtract cycles
32611  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32612  b CycloneEnd
32613
32614;@ ---------- [5040] addq.w #8, d0 uses Op5040 ----------
32615Op5040:
32616;@ EaCalc : Get register index into r11:
32617  and r11,r8,#0x000f
32618  mov r11,r11,lsl #2
32619;@ EaRead : Read register[r11] into r0:
32620  ldr r0,[r7,r11]
32621
32622  mov r0,r0,asl #16
32623
32624  adds r1,r0,#0x80000
32625  mrs r10,cpsr ;@ r10=flags
32626  str r10,[r7,#0x4c] ;@ Save X bit
32627
32628;@ EaWrite: r1 into register[r11]:
32629  mov r1,r1,lsr #16
32630  strh r1,[r7,r11]
32631
32632  ldrh r8,[r4],#2 ;@ Fetch next opcode
32633  subs r5,r5,#4 ;@ Subtract cycles
32634  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32635  b CycloneEnd
32636
32637;@ ---------- [5048] addq.w #8, a0 uses Op5048 ----------
32638Op5048:
32639;@ EaCalc : Get register index into r11:
32640  and r11,r8,#0x000f
32641;@ EaRead : Read register[r11] into r0:
32642  ldr r0,[r7,r11,lsl #2]
32643
32644  adds r1,r0,#0x0008
32645
32646;@ EaWrite: r1 into register[r11]:
32647  str r1,[r7,r11,lsl #2]
32648
32649  ldrh r8,[r4],#2 ;@ Fetch next opcode
32650  subs r5,r5,#4 ;@ Subtract cycles
32651  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32652  b CycloneEnd
32653
32654;@ ---------- [5050] addq.w #8, (a0) uses Op5050 ----------
32655Op5050:
32656  str r4,[r7,#0x50] ;@ Save prev PC + 2
32657  str r5,[r7,#0x5c] ;@ Save Cycles
32658
32659;@ EaCalc : Get '(a0)' into r11:
32660  and r2,r8,#0x000f
32661  orr r2,r2,#0x8 ;@ A0-7
32662  ldr r11,[r7,r2,lsl #2]
32663;@ EaRead : Read '(a0)' (address in r11) into r0:
32664  str r4,[r7,#0x40] ;@ Save PC
32665  bic r0,r11,#0xff000000
32666  bl m68k_read16 ;@ Call read16(r0) handler
32667
32668  mov r0,r0,asl #16
32669
32670  adds r1,r0,#0x80000
32671  mrs r10,cpsr ;@ r10=flags
32672  str r10,[r7,#0x4c] ;@ Save X bit
32673
32674;@ EaWrite: Write r1 into '(a0)' (address in r11):
32675  mov r1,r1,lsr #16
32676  bic r0,r11,#0xff000000
32677  bl m68k_write16 ;@ Call write16(r0,r1) handler
32678
32679  ldr r5,[r7,#0x5c] ;@ Load Cycles
32680  ldrh r8,[r4],#2 ;@ Fetch next opcode
32681  subs r5,r5,#12 ;@ Subtract cycles
32682  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32683  b CycloneEnd
32684
32685;@ ---------- [5058] addq.w #8, (a0)+ uses Op5058 ----------
32686Op5058:
32687  str r4,[r7,#0x50] ;@ Save prev PC + 2
32688  str r5,[r7,#0x5c] ;@ Save Cycles
32689
32690;@ EaCalc : Get '(a0)+' into r11:
32691  and r2,r8,#0x000f
32692  ldr r11,[r7,r2,lsl #2]
32693  add r3,r11,#2 ;@ Post-increment An
32694  str r3,[r7,r2,lsl #2]
32695;@ EaRead : Read '(a0)+' (address in r11) into r0:
32696  str r4,[r7,#0x40] ;@ Save PC
32697  bic r0,r11,#0xff000000
32698  bl m68k_read16 ;@ Call read16(r0) handler
32699
32700  mov r0,r0,asl #16
32701
32702  adds r1,r0,#0x80000
32703  mrs r10,cpsr ;@ r10=flags
32704  str r10,[r7,#0x4c] ;@ Save X bit
32705
32706;@ EaWrite: Write r1 into '(a0)+' (address in r11):
32707  mov r1,r1,lsr #16
32708  bic r0,r11,#0xff000000
32709  bl m68k_write16 ;@ Call write16(r0,r1) handler
32710
32711  ldr r5,[r7,#0x5c] ;@ Load Cycles
32712  ldrh r8,[r4],#2 ;@ Fetch next opcode
32713  subs r5,r5,#12 ;@ Subtract cycles
32714  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32715  b CycloneEnd
32716
32717;@ ---------- [5060] addq.w #8, -(a0) uses Op5060 ----------
32718Op5060:
32719  str r4,[r7,#0x50] ;@ Save prev PC + 2
32720  str r5,[r7,#0x5c] ;@ Save Cycles
32721
32722;@ EaCalc : Get '-(a0)' into r11:
32723  and r2,r8,#0x000f
32724  orr r2,r2,#0x8 ;@ A0-7
32725  ldr r11,[r7,r2,lsl #2]
32726  sub r11,r11,#2 ;@ Pre-decrement An
32727  str r11,[r7,r2,lsl #2]
32728;@ EaRead : Read '-(a0)' (address in r11) into r0:
32729  str r4,[r7,#0x40] ;@ Save PC
32730  bic r0,r11,#0xff000000
32731  bl m68k_read16 ;@ Call read16(r0) handler
32732
32733  mov r0,r0,asl #16
32734
32735  adds r1,r0,#0x80000
32736  mrs r10,cpsr ;@ r10=flags
32737  str r10,[r7,#0x4c] ;@ Save X bit
32738
32739;@ EaWrite: Write r1 into '-(a0)' (address in r11):
32740  mov r1,r1,lsr #16
32741  bic r0,r11,#0xff000000
32742  bl m68k_write16 ;@ Call write16(r0,r1) handler
32743
32744  ldr r5,[r7,#0x5c] ;@ Load Cycles
32745  ldrh r8,[r4],#2 ;@ Fetch next opcode
32746  subs r5,r5,#14 ;@ Subtract cycles
32747  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32748  b CycloneEnd
32749
32750;@ ---------- [5068] addq.w #8, ($3333,a0) uses Op5068 ----------
32751Op5068:
32752  str r4,[r7,#0x50] ;@ Save prev PC + 2
32753  str r5,[r7,#0x5c] ;@ Save Cycles
32754
32755;@ EaCalc : Get '($3333,a0)' into r11:
32756  ldrsh r0,[r4],#2 ;@ Fetch offset
32757  and r2,r8,#0x000f
32758  ldr r2,[r7,r2,lsl #2]
32759  add r11,r0,r2 ;@ Add on offset
32760;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
32761  str r4,[r7,#0x40] ;@ Save PC
32762  bic r0,r11,#0xff000000
32763  bl m68k_read16 ;@ Call read16(r0) handler
32764
32765  mov r0,r0,asl #16
32766
32767  adds r1,r0,#0x80000
32768  mrs r10,cpsr ;@ r10=flags
32769  str r10,[r7,#0x4c] ;@ Save X bit
32770
32771;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
32772  mov r1,r1,lsr #16
32773  bic r0,r11,#0xff000000
32774  bl m68k_write16 ;@ Call write16(r0,r1) handler
32775
32776  ldr r5,[r7,#0x5c] ;@ Load Cycles
32777  ldrh r8,[r4],#2 ;@ Fetch next opcode
32778  subs r5,r5,#16 ;@ Subtract cycles
32779  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32780  b CycloneEnd
32781
32782;@ ---------- [5070] addq.w #8, ($33,a0,d3.w*2) uses Op5070 ----------
32783Op5070:
32784  str r4,[r7,#0x50] ;@ Save prev PC + 2
32785  str r5,[r7,#0x5c] ;@ Save Cycles
32786
32787;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
32788;@ Get extension word into r3:
32789  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
32790  mov r2,r3,lsr #10
32791  tst r3,#0x0800 ;@ Is Rn Word or Long
32792  and r2,r2,#0x3c ;@ r2=Index of Rn
32793  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
32794  ldrne   r2,[r7,r2] ;@ r2=Rn.l
32795  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
32796  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
32797  and r2,r8,#0x000f
32798  orr r2,r2,#0x8 ;@ A0-7
32799  ldr r2,[r7,r2,lsl #2]
32800  add r11,r2,r3 ;@ r11=Disp+An+Rn
32801;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
32802  str r4,[r7,#0x40] ;@ Save PC
32803  bic r0,r11,#0xff000000
32804  bl m68k_read16 ;@ Call read16(r0) handler
32805
32806  mov r0,r0,asl #16
32807
32808  adds r1,r0,#0x80000
32809  mrs r10,cpsr ;@ r10=flags
32810  str r10,[r7,#0x4c] ;@ Save X bit
32811
32812;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
32813  mov r1,r1,lsr #16
32814  bic r0,r11,#0xff000000
32815  bl m68k_write16 ;@ Call write16(r0,r1) handler
32816
32817  ldr r5,[r7,#0x5c] ;@ Load Cycles
32818  ldrh r8,[r4],#2 ;@ Fetch next opcode
32819  subs r5,r5,#18 ;@ Subtract cycles
32820  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32821  b CycloneEnd
32822
32823;@ ---------- [5078] addq.w #8, $3333.w uses Op5078 ----------
32824Op5078:
32825  str r4,[r7,#0x50] ;@ Save prev PC + 2
32826  str r5,[r7,#0x5c] ;@ Save Cycles
32827
32828;@ EaCalc : Get '$3333.w' into r11:
32829  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
32830;@ EaRead : Read '$3333.w' (address in r11) into r0:
32831  str r4,[r7,#0x40] ;@ Save PC
32832  bic r0,r11,#0xff000000
32833  bl m68k_read16 ;@ Call read16(r0) handler
32834
32835  mov r0,r0,asl #16
32836
32837  adds r1,r0,#0x80000
32838  mrs r10,cpsr ;@ r10=flags
32839  str r10,[r7,#0x4c] ;@ Save X bit
32840
32841;@ EaWrite: Write r1 into '$3333.w' (address in r11):
32842  mov r1,r1,lsr #16
32843  bic r0,r11,#0xff000000
32844  bl m68k_write16 ;@ Call write16(r0,r1) handler
32845
32846  ldr r5,[r7,#0x5c] ;@ Load Cycles
32847  ldrh r8,[r4],#2 ;@ Fetch next opcode
32848  subs r5,r5,#16 ;@ Subtract cycles
32849  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32850  b CycloneEnd
32851
32852;@ ---------- [5079] addq.w #8, $33333333.l uses Op5079 ----------
32853Op5079:
32854  str r4,[r7,#0x50] ;@ Save prev PC + 2
32855  str r5,[r7,#0x5c] ;@ Save Cycles
32856
32857;@ EaCalc : Get '$33333333.l' into r11:
32858  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
32859  ldrh r0,[r4],#2
32860  orr r11,r0,r2,lsl #16
32861;@ EaRead : Read '$33333333.l' (address in r11) into r0:
32862  str r4,[r7,#0x40] ;@ Save PC
32863  bic r0,r11,#0xff000000
32864  bl m68k_read16 ;@ Call read16(r0) handler
32865
32866  mov r0,r0,asl #16
32867
32868  adds r1,r0,#0x80000
32869  mrs r10,cpsr ;@ r10=flags
32870  str r10,[r7,#0x4c] ;@ Save X bit
32871
32872;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
32873  mov r1,r1,lsr #16
32874  bic r0,r11,#0xff000000
32875  bl m68k_write16 ;@ Call write16(r0,r1) handler
32876
32877  ldr r5,[r7,#0x5c] ;@ Load Cycles
32878  ldrh r8,[r4],#2 ;@ Fetch next opcode
32879  subs r5,r5,#20 ;@ Subtract cycles
32880  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32881  b CycloneEnd
32882
32883;@ ---------- [5080] addq.l #8, d0 uses Op5080 ----------
32884Op5080:
32885;@ EaCalc : Get register index into r11:
32886  and r11,r8,#0x000f
32887;@ EaRead : Read register[r11] into r0:
32888  ldr r0,[r7,r11,lsl #2]
32889
32890  adds r1,r0,#0x0008
32891  mrs r10,cpsr ;@ r10=flags
32892  str r10,[r7,#0x4c] ;@ Save X bit
32893
32894;@ EaWrite: r1 into register[r11]:
32895  str r1,[r7,r11,lsl #2]
32896
32897  ldrh r8,[r4],#2 ;@ Fetch next opcode
32898  subs r5,r5,#8 ;@ Subtract cycles
32899  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32900  b CycloneEnd
32901
32902;@ ---------- [5088] addq.l #8, a0 uses Op5088 ----------
32903Op5088:
32904;@ EaCalc : Get register index into r11:
32905  and r11,r8,#0x000f
32906;@ EaRead : Read register[r11] into r0:
32907  ldr r0,[r7,r11,lsl #2]
32908
32909  adds r1,r0,#0x0008
32910
32911;@ EaWrite: r1 into register[r11]:
32912  str r1,[r7,r11,lsl #2]
32913
32914  ldrh r8,[r4],#2 ;@ Fetch next opcode
32915  subs r5,r5,#8 ;@ Subtract cycles
32916  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32917  b CycloneEnd
32918
32919;@ ---------- [5090] addq.l #8, (a0) uses Op5090 ----------
32920Op5090:
32921  str r4,[r7,#0x50] ;@ Save prev PC + 2
32922  str r5,[r7,#0x5c] ;@ Save Cycles
32923
32924;@ EaCalc : Get '(a0)' into r11:
32925  and r2,r8,#0x000f
32926  orr r2,r2,#0x8 ;@ A0-7
32927  ldr r11,[r7,r2,lsl #2]
32928;@ EaRead : Read '(a0)' (address in r11) into r0:
32929  str r4,[r7,#0x40] ;@ Save PC
32930  bic r0,r11,#0xff000000
32931  bl m68k_read32 ;@ Call read32(r0) handler
32932
32933  adds r1,r0,#0x0008
32934  mrs r10,cpsr ;@ r10=flags
32935  str r10,[r7,#0x4c] ;@ Save X bit
32936
32937;@ EaWrite: Write r1 into '(a0)' (address in r11):
32938  bic r0,r11,#0xff000000
32939  bl m68k_write32 ;@ Call write32(r0,r1) handler
32940
32941  ldr r5,[r7,#0x5c] ;@ Load Cycles
32942  ldrh r8,[r4],#2 ;@ Fetch next opcode
32943  subs r5,r5,#20 ;@ Subtract cycles
32944  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32945  b CycloneEnd
32946
32947;@ ---------- [5098] addq.l #8, (a0)+ uses Op5098 ----------
32948Op5098:
32949  str r4,[r7,#0x50] ;@ Save prev PC + 2
32950  str r5,[r7,#0x5c] ;@ Save Cycles
32951
32952;@ EaCalc : Get '(a0)+' into r11:
32953  and r2,r8,#0x000f
32954  ldr r11,[r7,r2,lsl #2]
32955  add r3,r11,#4 ;@ Post-increment An
32956  str r3,[r7,r2,lsl #2]
32957;@ EaRead : Read '(a0)+' (address in r11) into r0:
32958  str r4,[r7,#0x40] ;@ Save PC
32959  bic r0,r11,#0xff000000
32960  bl m68k_read32 ;@ Call read32(r0) handler
32961
32962  adds r1,r0,#0x0008
32963  mrs r10,cpsr ;@ r10=flags
32964  str r10,[r7,#0x4c] ;@ Save X bit
32965
32966;@ EaWrite: Write r1 into '(a0)+' (address in r11):
32967  bic r0,r11,#0xff000000
32968  bl m68k_write32 ;@ Call write32(r0,r1) handler
32969
32970  ldr r5,[r7,#0x5c] ;@ Load Cycles
32971  ldrh r8,[r4],#2 ;@ Fetch next opcode
32972  subs r5,r5,#20 ;@ Subtract cycles
32973  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32974  b CycloneEnd
32975
32976;@ ---------- [50a0] addq.l #8, -(a0) uses Op50a0 ----------
32977Op50a0:
32978  str r4,[r7,#0x50] ;@ Save prev PC + 2
32979  str r5,[r7,#0x5c] ;@ Save Cycles
32980
32981;@ EaCalc : Get '-(a0)' into r11:
32982  and r2,r8,#0x000f
32983  orr r2,r2,#0x8 ;@ A0-7
32984  ldr r11,[r7,r2,lsl #2]
32985  sub r11,r11,#4 ;@ Pre-decrement An
32986  str r11,[r7,r2,lsl #2]
32987;@ EaRead : Read '-(a0)' (address in r11) into r0:
32988  str r4,[r7,#0x40] ;@ Save PC
32989  bic r0,r11,#0xff000000
32990  bl m68k_read32 ;@ Call read32(r0) handler
32991
32992  adds r1,r0,#0x0008
32993  mrs r10,cpsr ;@ r10=flags
32994  str r10,[r7,#0x4c] ;@ Save X bit
32995
32996;@ EaWrite: Write r1 into '-(a0)' (address in r11):
32997  bic r0,r11,#0xff000000
32998  bl m68k_write32 ;@ Call write32(r0,r1) handler
32999
33000  ldr r5,[r7,#0x5c] ;@ Load Cycles
33001  ldrh r8,[r4],#2 ;@ Fetch next opcode
33002  subs r5,r5,#22 ;@ Subtract cycles
33003  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33004  b CycloneEnd
33005
33006;@ ---------- [50a8] addq.l #8, ($3333,a0) uses Op50a8 ----------
33007Op50a8:
33008  str r4,[r7,#0x50] ;@ Save prev PC + 2
33009  str r5,[r7,#0x5c] ;@ Save Cycles
33010
33011;@ EaCalc : Get '($3333,a0)' into r11:
33012  ldrsh r0,[r4],#2 ;@ Fetch offset
33013  and r2,r8,#0x000f
33014  ldr r2,[r7,r2,lsl #2]
33015  add r11,r0,r2 ;@ Add on offset
33016;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
33017  str r4,[r7,#0x40] ;@ Save PC
33018  bic r0,r11,#0xff000000
33019  bl m68k_read32 ;@ Call read32(r0) handler
33020
33021  adds r1,r0,#0x0008
33022  mrs r10,cpsr ;@ r10=flags
33023  str r10,[r7,#0x4c] ;@ Save X bit
33024
33025;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
33026  bic r0,r11,#0xff000000
33027  bl m68k_write32 ;@ Call write32(r0,r1) handler
33028
33029  ldr r5,[r7,#0x5c] ;@ Load Cycles
33030  ldrh r8,[r4],#2 ;@ Fetch next opcode
33031  subs r5,r5,#24 ;@ Subtract cycles
33032  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33033  b CycloneEnd
33034
33035;@ ---------- [50b0] addq.l #8, ($33,a0,d3.w*2) uses Op50b0 ----------
33036Op50b0:
33037  str r4,[r7,#0x50] ;@ Save prev PC + 2
33038  str r5,[r7,#0x5c] ;@ Save Cycles
33039
33040;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
33041;@ Get extension word into r3:
33042  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
33043  mov r2,r3,lsr #10
33044  tst r3,#0x0800 ;@ Is Rn Word or Long
33045  and r2,r2,#0x3c ;@ r2=Index of Rn
33046  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
33047  ldrne   r2,[r7,r2] ;@ r2=Rn.l
33048  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
33049  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
33050  and r2,r8,#0x000f
33051  orr r2,r2,#0x8 ;@ A0-7
33052  ldr r2,[r7,r2,lsl #2]
33053  add r11,r2,r3 ;@ r11=Disp+An+Rn
33054;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
33055  str r4,[r7,#0x40] ;@ Save PC
33056  bic r0,r11,#0xff000000
33057  bl m68k_read32 ;@ Call read32(r0) handler
33058
33059  adds r1,r0,#0x0008
33060  mrs r10,cpsr ;@ r10=flags
33061  str r10,[r7,#0x4c] ;@ Save X bit
33062
33063;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
33064  bic r0,r11,#0xff000000
33065  bl m68k_write32 ;@ Call write32(r0,r1) handler
33066
33067  ldr r5,[r7,#0x5c] ;@ Load Cycles
33068  ldrh r8,[r4],#2 ;@ Fetch next opcode
33069  subs r5,r5,#26 ;@ Subtract cycles
33070  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33071  b CycloneEnd
33072
33073;@ ---------- [50b8] addq.l #8, $3333.w uses Op50b8 ----------
33074Op50b8:
33075  str r4,[r7,#0x50] ;@ Save prev PC + 2
33076  str r5,[r7,#0x5c] ;@ Save Cycles
33077
33078;@ EaCalc : Get '$3333.w' into r11:
33079  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
33080;@ EaRead : Read '$3333.w' (address in r11) into r0:
33081  str r4,[r7,#0x40] ;@ Save PC
33082  bic r0,r11,#0xff000000
33083  bl m68k_read32 ;@ Call read32(r0) handler
33084
33085  adds r1,r0,#0x0008
33086  mrs r10,cpsr ;@ r10=flags
33087  str r10,[r7,#0x4c] ;@ Save X bit
33088
33089;@ EaWrite: Write r1 into '$3333.w' (address in r11):
33090  bic r0,r11,#0xff000000
33091  bl m68k_write32 ;@ Call write32(r0,r1) handler
33092
33093  ldr r5,[r7,#0x5c] ;@ Load Cycles
33094  ldrh r8,[r4],#2 ;@ Fetch next opcode
33095  subs r5,r5,#24 ;@ Subtract cycles
33096  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33097  b CycloneEnd
33098
33099;@ ---------- [50b9] addq.l #8, $33333333.l uses Op50b9 ----------
33100Op50b9:
33101  str r4,[r7,#0x50] ;@ Save prev PC + 2
33102  str r5,[r7,#0x5c] ;@ Save Cycles
33103
33104;@ EaCalc : Get '$33333333.l' into r11:
33105  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
33106  ldrh r0,[r4],#2
33107  orr r11,r0,r2,lsl #16
33108;@ EaRead : Read '$33333333.l' (address in r11) into r0:
33109  str r4,[r7,#0x40] ;@ Save PC
33110  bic r0,r11,#0xff000000
33111  bl m68k_read32 ;@ Call read32(r0) handler
33112
33113  adds r1,r0,#0x0008
33114  mrs r10,cpsr ;@ r10=flags
33115  str r10,[r7,#0x4c] ;@ Save X bit
33116
33117;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
33118  bic r0,r11,#0xff000000
33119  bl m68k_write32 ;@ Call write32(r0,r1) handler
33120
33121  ldr r5,[r7,#0x5c] ;@ Load Cycles
33122  ldrh r8,[r4],#2 ;@ Fetch next opcode
33123  subs r5,r5,#28 ;@ Subtract cycles
33124  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33125  b CycloneEnd
33126
33127;@ ---------- [50c0] st d0 uses Op50c0 ----------
33128Op50c0:
33129  mvn r1,#0
33130
33131;@ EaCalc : Get register index into r0:
33132  and r0,r8,#0x000f
33133;@ EaWrite: r1 into register[r0]:
33134  strb r1,[r7,r0,lsl #2]
33135
33136  ldrh r8,[r4],#2 ;@ Fetch next opcode
33137  subs r5,r5,#6 ;@ Subtract cycles
33138  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33139  b CycloneEnd
33140
33141;@ ---------- [50c8] dbt d0, 3335 uses Op50c8 ----------
33142Op50c8:
33143;@ condition true:
33144DbraTrue:
33145  add r4,r4,#2 ;@ Skip branch offset
33146
33147  ldrh r8,[r4],#2 ;@ Fetch next opcode
33148  subs r5,r5,#12 ;@ Subtract cycles
33149  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33150  b CycloneEnd
33151
33152;@ ---------- [50d0] st (a0) uses Op50d0 ----------
33153Op50d0:
33154  str r4,[r7,#0x50] ;@ Save prev PC + 2
33155  str r5,[r7,#0x5c] ;@ Save Cycles
33156
33157  mvn r1,#0
33158
33159;@ EaCalc : Get '(a0)' into r0:
33160  and r2,r8,#0x000f
33161  orr r2,r2,#0x8 ;@ A0-7
33162  ldr r0,[r7,r2,lsl #2]
33163;@ EaWrite: Write r1 into '(a0)' (address in r0):
33164  and r1,r1,#0xff
33165  str r4,[r7,#0x40] ;@ Save PC
33166  bic r0,r0,#0xff000000
33167  bl m68k_write8 ;@ Call write8(r0,r1) handler
33168
33169  ldr r5,[r7,#0x5c] ;@ Load Cycles
33170  ldrh r8,[r4],#2 ;@ Fetch next opcode
33171  subs r5,r5,#12 ;@ Subtract cycles
33172  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33173  b CycloneEnd
33174
33175;@ ---------- [50d8] st (a0)+ uses Op50d8 ----------
33176Op50d8:
33177  str r4,[r7,#0x50] ;@ Save prev PC + 2
33178  str r5,[r7,#0x5c] ;@ Save Cycles
33179
33180  mvn r1,#0
33181
33182;@ EaCalc : Get '(a0)+' into r0:
33183  and r2,r8,#0x000f
33184  ldr r0,[r7,r2,lsl #2]
33185  add r3,r0,#1 ;@ Post-increment An
33186  str r3,[r7,r2,lsl #2]
33187;@ EaWrite: Write r1 into '(a0)+' (address in r0):
33188  and r1,r1,#0xff
33189  str r4,[r7,#0x40] ;@ Save PC
33190  bic r0,r0,#0xff000000
33191  bl m68k_write8 ;@ Call write8(r0,r1) handler
33192
33193  ldr r5,[r7,#0x5c] ;@ Load Cycles
33194  ldrh r8,[r4],#2 ;@ Fetch next opcode
33195  subs r5,r5,#12 ;@ Subtract cycles
33196  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33197  b CycloneEnd
33198
33199;@ ---------- [50df] st (a7)+ uses Op50df ----------
33200Op50df:
33201  str r4,[r7,#0x50] ;@ Save prev PC + 2
33202  str r5,[r7,#0x5c] ;@ Save Cycles
33203
33204  mvn r1,#0
33205
33206;@ EaCalc : Get '(a7)+' into r0:
33207  ldr r0,[r7,#0x3c] ;@ A7
33208  add r3,r0,#2 ;@ Post-increment An
33209  str r3,[r7,#0x3c] ;@ A7
33210;@ EaWrite: Write r1 into '(a7)+' (address in r0):
33211  and r1,r1,#0xff
33212  str r4,[r7,#0x40] ;@ Save PC
33213  bic r0,r0,#0xff000000
33214  bl m68k_write8 ;@ Call write8(r0,r1) handler
33215
33216  ldr r5,[r7,#0x5c] ;@ Load Cycles
33217  ldrh r8,[r4],#2 ;@ Fetch next opcode
33218  subs r5,r5,#12 ;@ Subtract cycles
33219  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33220  b CycloneEnd
33221
33222;@ ---------- [50e0] st -(a0) uses Op50e0 ----------
33223Op50e0:
33224  str r4,[r7,#0x50] ;@ Save prev PC + 2
33225  str r5,[r7,#0x5c] ;@ Save Cycles
33226
33227  mvn r1,#0
33228
33229;@ EaCalc : Get '-(a0)' into r0:
33230  and r2,r8,#0x000f
33231  orr r2,r2,#0x8 ;@ A0-7
33232  ldr r0,[r7,r2,lsl #2]
33233  sub r0,r0,#1 ;@ Pre-decrement An
33234  str r0,[r7,r2,lsl #2]
33235;@ EaWrite: Write r1 into '-(a0)' (address in r0):
33236  and r1,r1,#0xff
33237  str r4,[r7,#0x40] ;@ Save PC
33238  bic r0,r0,#0xff000000
33239  bl m68k_write8 ;@ Call write8(r0,r1) handler
33240
33241  ldr r5,[r7,#0x5c] ;@ Load Cycles
33242  ldrh r8,[r4],#2 ;@ Fetch next opcode
33243  subs r5,r5,#14 ;@ Subtract cycles
33244  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33245  b CycloneEnd
33246
33247;@ ---------- [50e7] st -(a7) uses Op50e7 ----------
33248Op50e7:
33249  str r4,[r7,#0x50] ;@ Save prev PC + 2
33250  str r5,[r7,#0x5c] ;@ Save Cycles
33251
33252  mvn r1,#0
33253
33254;@ EaCalc : Get '-(a7)' into r0:
33255  ldr r0,[r7,#0x3c] ;@ A7
33256  sub r0,r0,#2 ;@ Pre-decrement An
33257  str r0,[r7,#0x3c] ;@ A7
33258;@ EaWrite: Write r1 into '-(a7)' (address in r0):
33259  and r1,r1,#0xff
33260  str r4,[r7,#0x40] ;@ Save PC
33261  bic r0,r0,#0xff000000
33262  bl m68k_write8 ;@ Call write8(r0,r1) handler
33263
33264  ldr r5,[r7,#0x5c] ;@ Load Cycles
33265  ldrh r8,[r4],#2 ;@ Fetch next opcode
33266  subs r5,r5,#14 ;@ Subtract cycles
33267  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33268  b CycloneEnd
33269
33270;@ ---------- [50e8] st ($3333,a0) uses Op50e8 ----------
33271Op50e8:
33272  str r4,[r7,#0x50] ;@ Save prev PC + 2
33273  str r5,[r7,#0x5c] ;@ Save Cycles
33274
33275  mvn r1,#0
33276
33277;@ EaCalc : Get '($3333,a0)' into r0:
33278  ldrsh r0,[r4],#2 ;@ Fetch offset
33279  and r2,r8,#0x000f
33280  ldr r2,[r7,r2,lsl #2]
33281  add r0,r0,r2 ;@ Add on offset
33282;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
33283  and r1,r1,#0xff
33284  str r4,[r7,#0x40] ;@ Save PC
33285  bic r0,r0,#0xff000000
33286  bl m68k_write8 ;@ Call write8(r0,r1) handler
33287
33288  ldr r5,[r7,#0x5c] ;@ Load Cycles
33289  ldrh r8,[r4],#2 ;@ Fetch next opcode
33290  subs r5,r5,#16 ;@ Subtract cycles
33291  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33292  b CycloneEnd
33293
33294;@ ---------- [50f0] st ($33,a0,d3.w*2) uses Op50f0 ----------
33295Op50f0:
33296  str r4,[r7,#0x50] ;@ Save prev PC + 2
33297  str r5,[r7,#0x5c] ;@ Save Cycles
33298
33299  mvn r1,#0
33300
33301;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
33302;@ Get extension word into r3:
33303  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
33304  mov r2,r3,lsr #10
33305  tst r3,#0x0800 ;@ Is Rn Word or Long
33306  and r2,r2,#0x3c ;@ r2=Index of Rn
33307  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
33308  ldrne   r2,[r7,r2] ;@ r2=Rn.l
33309  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
33310  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
33311  and r2,r8,#0x000f
33312  orr r2,r2,#0x8 ;@ A0-7
33313  ldr r2,[r7,r2,lsl #2]
33314  add r0,r2,r3 ;@ r0=Disp+An+Rn
33315;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
33316  and r1,r1,#0xff
33317  str r4,[r7,#0x40] ;@ Save PC
33318  bic r0,r0,#0xff000000
33319  bl m68k_write8 ;@ Call write8(r0,r1) handler
33320
33321  ldr r5,[r7,#0x5c] ;@ Load Cycles
33322  ldrh r8,[r4],#2 ;@ Fetch next opcode
33323  subs r5,r5,#18 ;@ Subtract cycles
33324  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33325  b CycloneEnd
33326
33327;@ ---------- [50f8] st $3333.w uses Op50f8 ----------
33328Op50f8:
33329  str r4,[r7,#0x50] ;@ Save prev PC + 2
33330  str r5,[r7,#0x5c] ;@ Save Cycles
33331
33332  mvn r1,#0
33333
33334;@ EaCalc : Get '$3333.w' into r0:
33335  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
33336;@ EaWrite: Write r1 into '$3333.w' (address in r0):
33337  and r1,r1,#0xff
33338  str r4,[r7,#0x40] ;@ Save PC
33339  bic r0,r0,#0xff000000
33340  bl m68k_write8 ;@ Call write8(r0,r1) handler
33341
33342  ldr r5,[r7,#0x5c] ;@ Load Cycles
33343  ldrh r8,[r4],#2 ;@ Fetch next opcode
33344  subs r5,r5,#16 ;@ Subtract cycles
33345  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33346  b CycloneEnd
33347
33348;@ ---------- [50f9] st $33333333.l uses Op50f9 ----------
33349Op50f9:
33350  str r4,[r7,#0x50] ;@ Save prev PC + 2
33351  str r5,[r7,#0x5c] ;@ Save Cycles
33352
33353  mvn r1,#0
33354
33355;@ EaCalc : Get '$33333333.l' into r0:
33356  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
33357  ldrh r0,[r4],#2
33358  orr r0,r0,r2,lsl #16
33359;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
33360  and r1,r1,#0xff
33361  str r4,[r7,#0x40] ;@ Save PC
33362  bic r0,r0,#0xff000000
33363  bl m68k_write8 ;@ Call write8(r0,r1) handler
33364
33365  ldr r5,[r7,#0x5c] ;@ Load Cycles
33366  ldrh r8,[r4],#2 ;@ Fetch next opcode
33367  subs r5,r5,#20 ;@ Subtract cycles
33368  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33369  b CycloneEnd
33370
33371;@ ---------- [5100] subq.b #8, d0 uses Op5100 ----------
33372Op5100:
33373;@ EaCalc : Get register index into r11:
33374  and r11,r8,#0x000f
33375;@ EaRead : Read register[r11] into r0:
33376  ldr r0,[r7,r11,lsl #2]
33377
33378  mov r0,r0,asl #24
33379
33380  subs r1,r0,#0x8000000
33381  mrs r10,cpsr ;@ r10=flags
33382  eor r10,r10,#0x20000000 ;@ Invert carry
33383  str r10,[r7,#0x4c] ;@ Save X bit
33384
33385;@ EaWrite: r1 into register[r11]:
33386  mov r1,r1,lsr #24
33387  strb r1,[r7,r11,lsl #2]
33388
33389  ldrh r8,[r4],#2 ;@ Fetch next opcode
33390  subs r5,r5,#4 ;@ Subtract cycles
33391  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33392  b CycloneEnd
33393
33394;@ ---------- [5110] subq.b #8, (a0) uses Op5110 ----------
33395Op5110:
33396  str r4,[r7,#0x50] ;@ Save prev PC + 2
33397  str r5,[r7,#0x5c] ;@ Save Cycles
33398
33399;@ EaCalc : Get '(a0)' into r11:
33400  and r2,r8,#0x000f
33401  orr r2,r2,#0x8 ;@ A0-7
33402  ldr r11,[r7,r2,lsl #2]
33403;@ EaRead : Read '(a0)' (address in r11) into r0:
33404  str r4,[r7,#0x40] ;@ Save PC
33405  bic r0,r11,#0xff000000
33406  bl m68k_read8 ;@ Call read8(r0) handler
33407
33408  mov r0,r0,asl #24
33409
33410  subs r1,r0,#0x8000000
33411  mrs r10,cpsr ;@ r10=flags
33412  eor r10,r10,#0x20000000 ;@ Invert carry
33413  str r10,[r7,#0x4c] ;@ Save X bit
33414
33415;@ EaWrite: Write r1 into '(a0)' (address in r11):
33416  mov r1,r1,lsr #24
33417  bic r0,r11,#0xff000000
33418  bl m68k_write8 ;@ Call write8(r0,r1) handler
33419
33420  ldr r5,[r7,#0x5c] ;@ Load Cycles
33421  ldrh r8,[r4],#2 ;@ Fetch next opcode
33422  subs r5,r5,#12 ;@ Subtract cycles
33423  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33424  b CycloneEnd
33425
33426;@ ---------- [5118] subq.b #8, (a0)+ uses Op5118 ----------
33427Op5118:
33428  str r4,[r7,#0x50] ;@ Save prev PC + 2
33429  str r5,[r7,#0x5c] ;@ Save Cycles
33430
33431;@ EaCalc : Get '(a0)+' into r11:
33432  and r2,r8,#0x000f
33433  ldr r11,[r7,r2,lsl #2]
33434  add r3,r11,#1 ;@ Post-increment An
33435  str r3,[r7,r2,lsl #2]
33436;@ EaRead : Read '(a0)+' (address in r11) into r0:
33437  str r4,[r7,#0x40] ;@ Save PC
33438  bic r0,r11,#0xff000000
33439  bl m68k_read8 ;@ Call read8(r0) handler
33440
33441  mov r0,r0,asl #24
33442
33443  subs r1,r0,#0x8000000
33444  mrs r10,cpsr ;@ r10=flags
33445  eor r10,r10,#0x20000000 ;@ Invert carry
33446  str r10,[r7,#0x4c] ;@ Save X bit
33447
33448;@ EaWrite: Write r1 into '(a0)+' (address in r11):
33449  mov r1,r1,lsr #24
33450  bic r0,r11,#0xff000000
33451  bl m68k_write8 ;@ Call write8(r0,r1) handler
33452
33453  ldr r5,[r7,#0x5c] ;@ Load Cycles
33454  ldrh r8,[r4],#2 ;@ Fetch next opcode
33455  subs r5,r5,#12 ;@ Subtract cycles
33456  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33457  b CycloneEnd
33458
33459;@ ---------- [511f] subq.b #8, (a7)+ uses Op511f ----------
33460Op511f:
33461  str r4,[r7,#0x50] ;@ Save prev PC + 2
33462  str r5,[r7,#0x5c] ;@ Save Cycles
33463
33464;@ EaCalc : Get '(a7)+' into r11:
33465  ldr r11,[r7,#0x3c] ;@ A7
33466  add r3,r11,#2 ;@ Post-increment An
33467  str r3,[r7,#0x3c] ;@ A7
33468;@ EaRead : Read '(a7)+' (address in r11) into r0:
33469  str r4,[r7,#0x40] ;@ Save PC
33470  bic r0,r11,#0xff000000
33471  bl m68k_read8 ;@ Call read8(r0) handler
33472
33473  mov r0,r0,asl #24
33474
33475  subs r1,r0,#0x8000000
33476  mrs r10,cpsr ;@ r10=flags
33477  eor r10,r10,#0x20000000 ;@ Invert carry
33478  str r10,[r7,#0x4c] ;@ Save X bit
33479
33480;@ EaWrite: Write r1 into '(a7)+' (address in r11):
33481  mov r1,r1,lsr #24
33482  bic r0,r11,#0xff000000
33483  bl m68k_write8 ;@ Call write8(r0,r1) handler
33484
33485  ldr r5,[r7,#0x5c] ;@ Load Cycles
33486  ldrh r8,[r4],#2 ;@ Fetch next opcode
33487  subs r5,r5,#12 ;@ Subtract cycles
33488  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33489  b CycloneEnd
33490
33491;@ ---------- [5120] subq.b #8, -(a0) uses Op5120 ----------
33492Op5120:
33493  str r4,[r7,#0x50] ;@ Save prev PC + 2
33494  str r5,[r7,#0x5c] ;@ Save Cycles
33495
33496;@ EaCalc : Get '-(a0)' into r11:
33497  and r2,r8,#0x000f
33498  orr r2,r2,#0x8 ;@ A0-7
33499  ldr r11,[r7,r2,lsl #2]
33500  sub r11,r11,#1 ;@ Pre-decrement An
33501  str r11,[r7,r2,lsl #2]
33502;@ EaRead : Read '-(a0)' (address in r11) into r0:
33503  str r4,[r7,#0x40] ;@ Save PC
33504  bic r0,r11,#0xff000000
33505  bl m68k_read8 ;@ Call read8(r0) handler
33506
33507  mov r0,r0,asl #24
33508
33509  subs r1,r0,#0x8000000
33510  mrs r10,cpsr ;@ r10=flags
33511  eor r10,r10,#0x20000000 ;@ Invert carry
33512  str r10,[r7,#0x4c] ;@ Save X bit
33513
33514;@ EaWrite: Write r1 into '-(a0)' (address in r11):
33515  mov r1,r1,lsr #24
33516  bic r0,r11,#0xff000000
33517  bl m68k_write8 ;@ Call write8(r0,r1) handler
33518
33519  ldr r5,[r7,#0x5c] ;@ Load Cycles
33520  ldrh r8,[r4],#2 ;@ Fetch next opcode
33521  subs r5,r5,#14 ;@ Subtract cycles
33522  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33523  b CycloneEnd
33524
33525;@ ---------- [5127] subq.b #8, -(a7) uses Op5127 ----------
33526Op5127:
33527  str r4,[r7,#0x50] ;@ Save prev PC + 2
33528  str r5,[r7,#0x5c] ;@ Save Cycles
33529
33530;@ EaCalc : Get '-(a7)' into r11:
33531  ldr r11,[r7,#0x3c] ;@ A7
33532  sub r11,r11,#2 ;@ Pre-decrement An
33533  str r11,[r7,#0x3c] ;@ A7
33534;@ EaRead : Read '-(a7)' (address in r11) into r0:
33535  str r4,[r7,#0x40] ;@ Save PC
33536  bic r0,r11,#0xff000000
33537  bl m68k_read8 ;@ Call read8(r0) handler
33538
33539  mov r0,r0,asl #24
33540
33541  subs r1,r0,#0x8000000
33542  mrs r10,cpsr ;@ r10=flags
33543  eor r10,r10,#0x20000000 ;@ Invert carry
33544  str r10,[r7,#0x4c] ;@ Save X bit
33545
33546;@ EaWrite: Write r1 into '-(a7)' (address in r11):
33547  mov r1,r1,lsr #24
33548  bic r0,r11,#0xff000000
33549  bl m68k_write8 ;@ Call write8(r0,r1) handler
33550
33551  ldr r5,[r7,#0x5c] ;@ Load Cycles
33552  ldrh r8,[r4],#2 ;@ Fetch next opcode
33553  subs r5,r5,#14 ;@ Subtract cycles
33554  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33555  b CycloneEnd
33556
33557;@ ---------- [5128] subq.b #8, ($3333,a0) uses Op5128 ----------
33558Op5128:
33559  str r4,[r7,#0x50] ;@ Save prev PC + 2
33560  str r5,[r7,#0x5c] ;@ Save Cycles
33561
33562;@ EaCalc : Get '($3333,a0)' into r11:
33563  ldrsh r0,[r4],#2 ;@ Fetch offset
33564  and r2,r8,#0x000f
33565  ldr r2,[r7,r2,lsl #2]
33566  add r11,r0,r2 ;@ Add on offset
33567;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
33568  str r4,[r7,#0x40] ;@ Save PC
33569  bic r0,r11,#0xff000000
33570  bl m68k_read8 ;@ Call read8(r0) handler
33571
33572  mov r0,r0,asl #24
33573
33574  subs r1,r0,#0x8000000
33575  mrs r10,cpsr ;@ r10=flags
33576  eor r10,r10,#0x20000000 ;@ Invert carry
33577  str r10,[r7,#0x4c] ;@ Save X bit
33578
33579;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
33580  mov r1,r1,lsr #24
33581  bic r0,r11,#0xff000000
33582  bl m68k_write8 ;@ Call write8(r0,r1) handler
33583
33584  ldr r5,[r7,#0x5c] ;@ Load Cycles
33585  ldrh r8,[r4],#2 ;@ Fetch next opcode
33586  subs r5,r5,#16 ;@ Subtract cycles
33587  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33588  b CycloneEnd
33589
33590;@ ---------- [5130] subq.b #8, ($33,a0,d3.w*2) uses Op5130 ----------
33591Op5130:
33592  str r4,[r7,#0x50] ;@ Save prev PC + 2
33593  str r5,[r7,#0x5c] ;@ Save Cycles
33594
33595;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
33596;@ Get extension word into r3:
33597  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
33598  mov r2,r3,lsr #10
33599  tst r3,#0x0800 ;@ Is Rn Word or Long
33600  and r2,r2,#0x3c ;@ r2=Index of Rn
33601  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
33602  ldrne   r2,[r7,r2] ;@ r2=Rn.l
33603  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
33604  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
33605  and r2,r8,#0x000f
33606  orr r2,r2,#0x8 ;@ A0-7
33607  ldr r2,[r7,r2,lsl #2]
33608  add r11,r2,r3 ;@ r11=Disp+An+Rn
33609;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
33610  str r4,[r7,#0x40] ;@ Save PC
33611  bic r0,r11,#0xff000000
33612  bl m68k_read8 ;@ Call read8(r0) handler
33613
33614  mov r0,r0,asl #24
33615
33616  subs r1,r0,#0x8000000
33617  mrs r10,cpsr ;@ r10=flags
33618  eor r10,r10,#0x20000000 ;@ Invert carry
33619  str r10,[r7,#0x4c] ;@ Save X bit
33620
33621;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
33622  mov r1,r1,lsr #24
33623  bic r0,r11,#0xff000000
33624  bl m68k_write8 ;@ Call write8(r0,r1) handler
33625
33626  ldr r5,[r7,#0x5c] ;@ Load Cycles
33627  ldrh r8,[r4],#2 ;@ Fetch next opcode
33628  subs r5,r5,#18 ;@ Subtract cycles
33629  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33630  b CycloneEnd
33631
33632;@ ---------- [5138] subq.b #8, $3333.w uses Op5138 ----------
33633Op5138:
33634  str r4,[r7,#0x50] ;@ Save prev PC + 2
33635  str r5,[r7,#0x5c] ;@ Save Cycles
33636
33637;@ EaCalc : Get '$3333.w' into r11:
33638  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
33639;@ EaRead : Read '$3333.w' (address in r11) into r0:
33640  str r4,[r7,#0x40] ;@ Save PC
33641  bic r0,r11,#0xff000000
33642  bl m68k_read8 ;@ Call read8(r0) handler
33643
33644  mov r0,r0,asl #24
33645
33646  subs r1,r0,#0x8000000
33647  mrs r10,cpsr ;@ r10=flags
33648  eor r10,r10,#0x20000000 ;@ Invert carry
33649  str r10,[r7,#0x4c] ;@ Save X bit
33650
33651;@ EaWrite: Write r1 into '$3333.w' (address in r11):
33652  mov r1,r1,lsr #24
33653  bic r0,r11,#0xff000000
33654  bl m68k_write8 ;@ Call write8(r0,r1) handler
33655
33656  ldr r5,[r7,#0x5c] ;@ Load Cycles
33657  ldrh r8,[r4],#2 ;@ Fetch next opcode
33658  subs r5,r5,#16 ;@ Subtract cycles
33659  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33660  b CycloneEnd
33661
33662;@ ---------- [5139] subq.b #8, $33333333.l uses Op5139 ----------
33663Op5139:
33664  str r4,[r7,#0x50] ;@ Save prev PC + 2
33665  str r5,[r7,#0x5c] ;@ Save Cycles
33666
33667;@ EaCalc : Get '$33333333.l' into r11:
33668  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
33669  ldrh r0,[r4],#2
33670  orr r11,r0,r2,lsl #16
33671;@ EaRead : Read '$33333333.l' (address in r11) into r0:
33672  str r4,[r7,#0x40] ;@ Save PC
33673  bic r0,r11,#0xff000000
33674  bl m68k_read8 ;@ Call read8(r0) handler
33675
33676  mov r0,r0,asl #24
33677
33678  subs r1,r0,#0x8000000
33679  mrs r10,cpsr ;@ r10=flags
33680  eor r10,r10,#0x20000000 ;@ Invert carry
33681  str r10,[r7,#0x4c] ;@ Save X bit
33682
33683;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
33684  mov r1,r1,lsr #24
33685  bic r0,r11,#0xff000000
33686  bl m68k_write8 ;@ Call write8(r0,r1) handler
33687
33688  ldr r5,[r7,#0x5c] ;@ Load Cycles
33689  ldrh r8,[r4],#2 ;@ Fetch next opcode
33690  subs r5,r5,#20 ;@ Subtract cycles
33691  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33692  b CycloneEnd
33693
33694;@ ---------- [5140] subq.w #8, d0 uses Op5140 ----------
33695Op5140:
33696;@ EaCalc : Get register index into r11:
33697  and r11,r8,#0x000f
33698  mov r11,r11,lsl #2
33699;@ EaRead : Read register[r11] into r0:
33700  ldr r0,[r7,r11]
33701
33702  mov r0,r0,asl #16
33703
33704  subs r1,r0,#0x80000
33705  mrs r10,cpsr ;@ r10=flags
33706  eor r10,r10,#0x20000000 ;@ Invert carry
33707  str r10,[r7,#0x4c] ;@ Save X bit
33708
33709;@ EaWrite: r1 into register[r11]:
33710  mov r1,r1,lsr #16
33711  strh r1,[r7,r11]
33712
33713  ldrh r8,[r4],#2 ;@ Fetch next opcode
33714  subs r5,r5,#4 ;@ Subtract cycles
33715  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33716  b CycloneEnd
33717
33718;@ ---------- [5148] subq.w #8, a0 uses Op5148 ----------
33719Op5148:
33720;@ EaCalc : Get register index into r11:
33721  and r11,r8,#0x000f
33722;@ EaRead : Read register[r11] into r0:
33723  ldr r0,[r7,r11,lsl #2]
33724
33725  subs r1,r0,#0x0008
33726
33727;@ EaWrite: r1 into register[r11]:
33728  str r1,[r7,r11,lsl #2]
33729
33730  ldrh r8,[r4],#2 ;@ Fetch next opcode
33731  subs r5,r5,#8 ;@ Subtract cycles
33732  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33733  b CycloneEnd
33734
33735;@ ---------- [5150] subq.w #8, (a0) uses Op5150 ----------
33736Op5150:
33737  str r4,[r7,#0x50] ;@ Save prev PC + 2
33738  str r5,[r7,#0x5c] ;@ Save Cycles
33739
33740;@ EaCalc : Get '(a0)' into r11:
33741  and r2,r8,#0x000f
33742  orr r2,r2,#0x8 ;@ A0-7
33743  ldr r11,[r7,r2,lsl #2]
33744;@ EaRead : Read '(a0)' (address in r11) into r0:
33745  str r4,[r7,#0x40] ;@ Save PC
33746  bic r0,r11,#0xff000000
33747  bl m68k_read16 ;@ Call read16(r0) handler
33748
33749  mov r0,r0,asl #16
33750
33751  subs r1,r0,#0x80000
33752  mrs r10,cpsr ;@ r10=flags
33753  eor r10,r10,#0x20000000 ;@ Invert carry
33754  str r10,[r7,#0x4c] ;@ Save X bit
33755
33756;@ EaWrite: Write r1 into '(a0)' (address in r11):
33757  mov r1,r1,lsr #16
33758  bic r0,r11,#0xff000000
33759  bl m68k_write16 ;@ Call write16(r0,r1) handler
33760
33761  ldr r5,[r7,#0x5c] ;@ Load Cycles
33762  ldrh r8,[r4],#2 ;@ Fetch next opcode
33763  subs r5,r5,#12 ;@ Subtract cycles
33764  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33765  b CycloneEnd
33766
33767;@ ---------- [5158] subq.w #8, (a0)+ uses Op5158 ----------
33768Op5158:
33769  str r4,[r7,#0x50] ;@ Save prev PC + 2
33770  str r5,[r7,#0x5c] ;@ Save Cycles
33771
33772;@ EaCalc : Get '(a0)+' into r11:
33773  and r2,r8,#0x000f
33774  ldr r11,[r7,r2,lsl #2]
33775  add r3,r11,#2 ;@ Post-increment An
33776  str r3,[r7,r2,lsl #2]
33777;@ EaRead : Read '(a0)+' (address in r11) into r0:
33778  str r4,[r7,#0x40] ;@ Save PC
33779  bic r0,r11,#0xff000000
33780  bl m68k_read16 ;@ Call read16(r0) handler
33781
33782  mov r0,r0,asl #16
33783
33784  subs r1,r0,#0x80000
33785  mrs r10,cpsr ;@ r10=flags
33786  eor r10,r10,#0x20000000 ;@ Invert carry
33787  str r10,[r7,#0x4c] ;@ Save X bit
33788
33789;@ EaWrite: Write r1 into '(a0)+' (address in r11):
33790  mov r1,r1,lsr #16
33791  bic r0,r11,#0xff000000
33792  bl m68k_write16 ;@ Call write16(r0,r1) handler
33793
33794  ldr r5,[r7,#0x5c] ;@ Load Cycles
33795  ldrh r8,[r4],#2 ;@ Fetch next opcode
33796  subs r5,r5,#12 ;@ Subtract cycles
33797  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33798  b CycloneEnd
33799
33800;@ ---------- [5160] subq.w #8, -(a0) uses Op5160 ----------
33801Op5160:
33802  str r4,[r7,#0x50] ;@ Save prev PC + 2
33803  str r5,[r7,#0x5c] ;@ Save Cycles
33804
33805;@ EaCalc : Get '-(a0)' into r11:
33806  and r2,r8,#0x000f
33807  orr r2,r2,#0x8 ;@ A0-7
33808  ldr r11,[r7,r2,lsl #2]
33809  sub r11,r11,#2 ;@ Pre-decrement An
33810  str r11,[r7,r2,lsl #2]
33811;@ EaRead : Read '-(a0)' (address in r11) into r0:
33812  str r4,[r7,#0x40] ;@ Save PC
33813  bic r0,r11,#0xff000000
33814  bl m68k_read16 ;@ Call read16(r0) handler
33815
33816  mov r0,r0,asl #16
33817
33818  subs r1,r0,#0x80000
33819  mrs r10,cpsr ;@ r10=flags
33820  eor r10,r10,#0x20000000 ;@ Invert carry
33821  str r10,[r7,#0x4c] ;@ Save X bit
33822
33823;@ EaWrite: Write r1 into '-(a0)' (address in r11):
33824  mov r1,r1,lsr #16
33825  bic r0,r11,#0xff000000
33826  bl m68k_write16 ;@ Call write16(r0,r1) handler
33827
33828  ldr r5,[r7,#0x5c] ;@ Load Cycles
33829  ldrh r8,[r4],#2 ;@ Fetch next opcode
33830  subs r5,r5,#14 ;@ Subtract cycles
33831  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33832  b CycloneEnd
33833
33834;@ ---------- [5168] subq.w #8, ($3333,a0) uses Op5168 ----------
33835Op5168:
33836  str r4,[r7,#0x50] ;@ Save prev PC + 2
33837  str r5,[r7,#0x5c] ;@ Save Cycles
33838
33839;@ EaCalc : Get '($3333,a0)' into r11:
33840  ldrsh r0,[r4],#2 ;@ Fetch offset
33841  and r2,r8,#0x000f
33842  ldr r2,[r7,r2,lsl #2]
33843  add r11,r0,r2 ;@ Add on offset
33844;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
33845  str r4,[r7,#0x40] ;@ Save PC
33846  bic r0,r11,#0xff000000
33847  bl m68k_read16 ;@ Call read16(r0) handler
33848
33849  mov r0,r0,asl #16
33850
33851  subs r1,r0,#0x80000
33852  mrs r10,cpsr ;@ r10=flags
33853  eor r10,r10,#0x20000000 ;@ Invert carry
33854  str r10,[r7,#0x4c] ;@ Save X bit
33855
33856;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
33857  mov r1,r1,lsr #16
33858  bic r0,r11,#0xff000000
33859  bl m68k_write16 ;@ Call write16(r0,r1) handler
33860
33861  ldr r5,[r7,#0x5c] ;@ Load Cycles
33862  ldrh r8,[r4],#2 ;@ Fetch next opcode
33863  subs r5,r5,#16 ;@ Subtract cycles
33864  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33865  b CycloneEnd
33866
33867;@ ---------- [5170] subq.w #8, ($33,a0,d3.w*2) uses Op5170 ----------
33868Op5170:
33869  str r4,[r7,#0x50] ;@ Save prev PC + 2
33870  str r5,[r7,#0x5c] ;@ Save Cycles
33871
33872;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
33873;@ Get extension word into r3:
33874  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
33875  mov r2,r3,lsr #10
33876  tst r3,#0x0800 ;@ Is Rn Word or Long
33877  and r2,r2,#0x3c ;@ r2=Index of Rn
33878  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
33879  ldrne   r2,[r7,r2] ;@ r2=Rn.l
33880  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
33881  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
33882  and r2,r8,#0x000f
33883  orr r2,r2,#0x8 ;@ A0-7
33884  ldr r2,[r7,r2,lsl #2]
33885  add r11,r2,r3 ;@ r11=Disp+An+Rn
33886;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
33887  str r4,[r7,#0x40] ;@ Save PC
33888  bic r0,r11,#0xff000000
33889  bl m68k_read16 ;@ Call read16(r0) handler
33890
33891  mov r0,r0,asl #16
33892
33893  subs r1,r0,#0x80000
33894  mrs r10,cpsr ;@ r10=flags
33895  eor r10,r10,#0x20000000 ;@ Invert carry
33896  str r10,[r7,#0x4c] ;@ Save X bit
33897
33898;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
33899  mov r1,r1,lsr #16
33900  bic r0,r11,#0xff000000
33901  bl m68k_write16 ;@ Call write16(r0,r1) handler
33902
33903  ldr r5,[r7,#0x5c] ;@ Load Cycles
33904  ldrh r8,[r4],#2 ;@ Fetch next opcode
33905  subs r5,r5,#18 ;@ Subtract cycles
33906  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33907  b CycloneEnd
33908
33909;@ ---------- [5178] subq.w #8, $3333.w uses Op5178 ----------
33910Op5178:
33911  str r4,[r7,#0x50] ;@ Save prev PC + 2
33912  str r5,[r7,#0x5c] ;@ Save Cycles
33913
33914;@ EaCalc : Get '$3333.w' into r11:
33915  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
33916;@ EaRead : Read '$3333.w' (address in r11) into r0:
33917  str r4,[r7,#0x40] ;@ Save PC
33918  bic r0,r11,#0xff000000
33919  bl m68k_read16 ;@ Call read16(r0) handler
33920
33921  mov r0,r0,asl #16
33922
33923  subs r1,r0,#0x80000
33924  mrs r10,cpsr ;@ r10=flags
33925  eor r10,r10,#0x20000000 ;@ Invert carry
33926  str r10,[r7,#0x4c] ;@ Save X bit
33927
33928;@ EaWrite: Write r1 into '$3333.w' (address in r11):
33929  mov r1,r1,lsr #16
33930  bic r0,r11,#0xff000000
33931  bl m68k_write16 ;@ Call write16(r0,r1) handler
33932
33933  ldr r5,[r7,#0x5c] ;@ Load Cycles
33934  ldrh r8,[r4],#2 ;@ Fetch next opcode
33935  subs r5,r5,#16 ;@ Subtract cycles
33936  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33937  b CycloneEnd
33938
33939;@ ---------- [5179] subq.w #8, $33333333.l uses Op5179 ----------
33940Op5179:
33941  str r4,[r7,#0x50] ;@ Save prev PC + 2
33942  str r5,[r7,#0x5c] ;@ Save Cycles
33943
33944;@ EaCalc : Get '$33333333.l' into r11:
33945  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
33946  ldrh r0,[r4],#2
33947  orr r11,r0,r2,lsl #16
33948;@ EaRead : Read '$33333333.l' (address in r11) into r0:
33949  str r4,[r7,#0x40] ;@ Save PC
33950  bic r0,r11,#0xff000000
33951  bl m68k_read16 ;@ Call read16(r0) handler
33952
33953  mov r0,r0,asl #16
33954
33955  subs r1,r0,#0x80000
33956  mrs r10,cpsr ;@ r10=flags
33957  eor r10,r10,#0x20000000 ;@ Invert carry
33958  str r10,[r7,#0x4c] ;@ Save X bit
33959
33960;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
33961  mov r1,r1,lsr #16
33962  bic r0,r11,#0xff000000
33963  bl m68k_write16 ;@ Call write16(r0,r1) handler
33964
33965  ldr r5,[r7,#0x5c] ;@ Load Cycles
33966  ldrh r8,[r4],#2 ;@ Fetch next opcode
33967  subs r5,r5,#20 ;@ Subtract cycles
33968  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33969  b CycloneEnd
33970
33971;@ ---------- [5180] subq.l #8, d0 uses Op5180 ----------
33972Op5180:
33973;@ EaCalc : Get register index into r11:
33974  and r11,r8,#0x000f
33975;@ EaRead : Read register[r11] into r0:
33976  ldr r0,[r7,r11,lsl #2]
33977
33978  subs r1,r0,#0x0008
33979  mrs r10,cpsr ;@ r10=flags
33980  eor r10,r10,#0x20000000 ;@ Invert carry
33981  str r10,[r7,#0x4c] ;@ Save X bit
33982
33983;@ EaWrite: r1 into register[r11]:
33984  str r1,[r7,r11,lsl #2]
33985
33986  ldrh r8,[r4],#2 ;@ Fetch next opcode
33987  subs r5,r5,#8 ;@ Subtract cycles
33988  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33989  b CycloneEnd
33990
33991;@ ---------- [5188] subq.l #8, a0 uses Op5188 ----------
33992Op5188:
33993;@ EaCalc : Get register index into r11:
33994  and r11,r8,#0x000f
33995;@ EaRead : Read register[r11] into r0:
33996  ldr r0,[r7,r11,lsl #2]
33997
33998  subs r1,r0,#0x0008
33999
34000;@ EaWrite: r1 into register[r11]:
34001  str r1,[r7,r11,lsl #2]
34002
34003  ldrh r8,[r4],#2 ;@ Fetch next opcode
34004  subs r5,r5,#8 ;@ Subtract cycles
34005  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34006  b CycloneEnd
34007
34008;@ ---------- [5190] subq.l #8, (a0) uses Op5190 ----------
34009Op5190:
34010  str r4,[r7,#0x50] ;@ Save prev PC + 2
34011  str r5,[r7,#0x5c] ;@ Save Cycles
34012
34013;@ EaCalc : Get '(a0)' into r11:
34014  and r2,r8,#0x000f
34015  orr r2,r2,#0x8 ;@ A0-7
34016  ldr r11,[r7,r2,lsl #2]
34017;@ EaRead : Read '(a0)' (address in r11) into r0:
34018  str r4,[r7,#0x40] ;@ Save PC
34019  bic r0,r11,#0xff000000
34020  bl m68k_read32 ;@ Call read32(r0) handler
34021
34022  subs r1,r0,#0x0008
34023  mrs r10,cpsr ;@ r10=flags
34024  eor r10,r10,#0x20000000 ;@ Invert carry
34025  str r10,[r7,#0x4c] ;@ Save X bit
34026
34027;@ EaWrite: Write r1 into '(a0)' (address in r11):
34028  bic r0,r11,#0xff000000
34029  bl m68k_write32 ;@ Call write32(r0,r1) handler
34030
34031  ldr r5,[r7,#0x5c] ;@ Load Cycles
34032  ldrh r8,[r4],#2 ;@ Fetch next opcode
34033  subs r5,r5,#20 ;@ Subtract cycles
34034  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34035  b CycloneEnd
34036
34037;@ ---------- [5198] subq.l #8, (a0)+ uses Op5198 ----------
34038Op5198:
34039  str r4,[r7,#0x50] ;@ Save prev PC + 2
34040  str r5,[r7,#0x5c] ;@ Save Cycles
34041
34042;@ EaCalc : Get '(a0)+' into r11:
34043  and r2,r8,#0x000f
34044  ldr r11,[r7,r2,lsl #2]
34045  add r3,r11,#4 ;@ Post-increment An
34046  str r3,[r7,r2,lsl #2]
34047;@ EaRead : Read '(a0)+' (address in r11) into r0:
34048  str r4,[r7,#0x40] ;@ Save PC
34049  bic r0,r11,#0xff000000
34050  bl m68k_read32 ;@ Call read32(r0) handler
34051
34052  subs r1,r0,#0x0008
34053  mrs r10,cpsr ;@ r10=flags
34054  eor r10,r10,#0x20000000 ;@ Invert carry
34055  str r10,[r7,#0x4c] ;@ Save X bit
34056
34057;@ EaWrite: Write r1 into '(a0)+' (address in r11):
34058  bic r0,r11,#0xff000000
34059  bl m68k_write32 ;@ Call write32(r0,r1) handler
34060
34061  ldr r5,[r7,#0x5c] ;@ Load Cycles
34062  ldrh r8,[r4],#2 ;@ Fetch next opcode
34063  subs r5,r5,#20 ;@ Subtract cycles
34064  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34065  b CycloneEnd
34066
34067;@ ---------- [51a0] subq.l #8, -(a0) uses Op51a0 ----------
34068Op51a0:
34069  str r4,[r7,#0x50] ;@ Save prev PC + 2
34070  str r5,[r7,#0x5c] ;@ Save Cycles
34071
34072;@ EaCalc : Get '-(a0)' into r11:
34073  and r2,r8,#0x000f
34074  orr r2,r2,#0x8 ;@ A0-7
34075  ldr r11,[r7,r2,lsl #2]
34076  sub r11,r11,#4 ;@ Pre-decrement An
34077  str r11,[r7,r2,lsl #2]
34078;@ EaRead : Read '-(a0)' (address in r11) into r0:
34079  str r4,[r7,#0x40] ;@ Save PC
34080  bic r0,r11,#0xff000000
34081  bl m68k_read32 ;@ Call read32(r0) handler
34082
34083  subs r1,r0,#0x0008
34084  mrs r10,cpsr ;@ r10=flags
34085  eor r10,r10,#0x20000000 ;@ Invert carry
34086  str r10,[r7,#0x4c] ;@ Save X bit
34087
34088;@ EaWrite: Write r1 into '-(a0)' (address in r11):
34089  bic r0,r11,#0xff000000
34090  bl m68k_write32 ;@ Call write32(r0,r1) handler
34091
34092  ldr r5,[r7,#0x5c] ;@ Load Cycles
34093  ldrh r8,[r4],#2 ;@ Fetch next opcode
34094  subs r5,r5,#22 ;@ Subtract cycles
34095  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34096  b CycloneEnd
34097
34098;@ ---------- [51a8] subq.l #8, ($3333,a0) uses Op51a8 ----------
34099Op51a8:
34100  str r4,[r7,#0x50] ;@ Save prev PC + 2
34101  str r5,[r7,#0x5c] ;@ Save Cycles
34102
34103;@ EaCalc : Get '($3333,a0)' into r11:
34104  ldrsh r0,[r4],#2 ;@ Fetch offset
34105  and r2,r8,#0x000f
34106  ldr r2,[r7,r2,lsl #2]
34107  add r11,r0,r2 ;@ Add on offset
34108;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
34109  str r4,[r7,#0x40] ;@ Save PC
34110  bic r0,r11,#0xff000000
34111  bl m68k_read32 ;@ Call read32(r0) handler
34112
34113  subs r1,r0,#0x0008
34114  mrs r10,cpsr ;@ r10=flags
34115  eor r10,r10,#0x20000000 ;@ Invert carry
34116  str r10,[r7,#0x4c] ;@ Save X bit
34117
34118;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
34119  bic r0,r11,#0xff000000
34120  bl m68k_write32 ;@ Call write32(r0,r1) handler
34121
34122  ldr r5,[r7,#0x5c] ;@ Load Cycles
34123  ldrh r8,[r4],#2 ;@ Fetch next opcode
34124  subs r5,r5,#24 ;@ Subtract cycles
34125  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34126  b CycloneEnd
34127
34128;@ ---------- [51b0] subq.l #8, ($33,a0,d3.w*2) uses Op51b0 ----------
34129Op51b0:
34130  str r4,[r7,#0x50] ;@ Save prev PC + 2
34131  str r5,[r7,#0x5c] ;@ Save Cycles
34132
34133;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
34134;@ Get extension word into r3:
34135  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
34136  mov r2,r3,lsr #10
34137  tst r3,#0x0800 ;@ Is Rn Word or Long
34138  and r2,r2,#0x3c ;@ r2=Index of Rn
34139  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
34140  ldrne   r2,[r7,r2] ;@ r2=Rn.l
34141  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
34142  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
34143  and r2,r8,#0x000f
34144  orr r2,r2,#0x8 ;@ A0-7
34145  ldr r2,[r7,r2,lsl #2]
34146  add r11,r2,r3 ;@ r11=Disp+An+Rn
34147;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
34148  str r4,[r7,#0x40] ;@ Save PC
34149  bic r0,r11,#0xff000000
34150  bl m68k_read32 ;@ Call read32(r0) handler
34151
34152  subs r1,r0,#0x0008
34153  mrs r10,cpsr ;@ r10=flags
34154  eor r10,r10,#0x20000000 ;@ Invert carry
34155  str r10,[r7,#0x4c] ;@ Save X bit
34156
34157;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
34158  bic r0,r11,#0xff000000
34159  bl m68k_write32 ;@ Call write32(r0,r1) handler
34160
34161  ldr r5,[r7,#0x5c] ;@ Load Cycles
34162  ldrh r8,[r4],#2 ;@ Fetch next opcode
34163  subs r5,r5,#26 ;@ Subtract cycles
34164  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34165  b CycloneEnd
34166
34167;@ ---------- [51b8] subq.l #8, $3333.w uses Op51b8 ----------
34168Op51b8:
34169  str r4,[r7,#0x50] ;@ Save prev PC + 2
34170  str r5,[r7,#0x5c] ;@ Save Cycles
34171
34172;@ EaCalc : Get '$3333.w' into r11:
34173  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
34174;@ EaRead : Read '$3333.w' (address in r11) into r0:
34175  str r4,[r7,#0x40] ;@ Save PC
34176  bic r0,r11,#0xff000000
34177  bl m68k_read32 ;@ Call read32(r0) handler
34178
34179  subs r1,r0,#0x0008
34180  mrs r10,cpsr ;@ r10=flags
34181  eor r10,r10,#0x20000000 ;@ Invert carry
34182  str r10,[r7,#0x4c] ;@ Save X bit
34183
34184;@ EaWrite: Write r1 into '$3333.w' (address in r11):
34185  bic r0,r11,#0xff000000
34186  bl m68k_write32 ;@ Call write32(r0,r1) handler
34187
34188  ldr r5,[r7,#0x5c] ;@ Load Cycles
34189  ldrh r8,[r4],#2 ;@ Fetch next opcode
34190  subs r5,r5,#24 ;@ Subtract cycles
34191  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34192  b CycloneEnd
34193
34194;@ ---------- [51b9] subq.l #8, $33333333.l uses Op51b9 ----------
34195Op51b9:
34196  str r4,[r7,#0x50] ;@ Save prev PC + 2
34197  str r5,[r7,#0x5c] ;@ Save Cycles
34198
34199;@ EaCalc : Get '$33333333.l' into r11:
34200  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
34201  ldrh r0,[r4],#2
34202  orr r11,r0,r2,lsl #16
34203;@ EaRead : Read '$33333333.l' (address in r11) into r0:
34204  str r4,[r7,#0x40] ;@ Save PC
34205  bic r0,r11,#0xff000000
34206  bl m68k_read32 ;@ Call read32(r0) handler
34207
34208  subs r1,r0,#0x0008
34209  mrs r10,cpsr ;@ r10=flags
34210  eor r10,r10,#0x20000000 ;@ Invert carry
34211  str r10,[r7,#0x4c] ;@ Save X bit
34212
34213;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
34214  bic r0,r11,#0xff000000
34215  bl m68k_write32 ;@ Call write32(r0,r1) handler
34216
34217  ldr r5,[r7,#0x5c] ;@ Load Cycles
34218  ldrh r8,[r4],#2 ;@ Fetch next opcode
34219  subs r5,r5,#28 ;@ Subtract cycles
34220  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34221  b CycloneEnd
34222
34223;@ ---------- [51c0] sf d0 uses Op51c0 ----------
34224Op51c0:
34225  mov r1,#0
34226
34227;@ EaCalc : Get register index into r0:
34228  and r0,r8,#0x000f
34229;@ EaWrite: r1 into register[r0]:
34230  strb r1,[r7,r0,lsl #2]
34231
34232  ldrh r8,[r4],#2 ;@ Fetch next opcode
34233  subs r5,r5,#4 ;@ Subtract cycles
34234  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34235  b CycloneEnd
34236
34237;@ ---------- [51d0] sf (a0) uses Op51d0 ----------
34238Op51d0:
34239  str r4,[r7,#0x50] ;@ Save prev PC + 2
34240  str r5,[r7,#0x5c] ;@ Save Cycles
34241
34242  mov r1,#0
34243
34244;@ EaCalc : Get '(a0)' into r0:
34245  and r2,r8,#0x000f
34246  orr r2,r2,#0x8 ;@ A0-7
34247  ldr r0,[r7,r2,lsl #2]
34248;@ EaWrite: Write r1 into '(a0)' (address in r0):
34249  and r1,r1,#0xff
34250  str r4,[r7,#0x40] ;@ Save PC
34251  bic r0,r0,#0xff000000
34252  bl m68k_write8 ;@ Call write8(r0,r1) handler
34253
34254  ldr r5,[r7,#0x5c] ;@ Load Cycles
34255  ldrh r8,[r4],#2 ;@ Fetch next opcode
34256  subs r5,r5,#12 ;@ Subtract cycles
34257  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34258  b CycloneEnd
34259
34260;@ ---------- [51d8] sf (a0)+ uses Op51d8 ----------
34261Op51d8:
34262  str r4,[r7,#0x50] ;@ Save prev PC + 2
34263  str r5,[r7,#0x5c] ;@ Save Cycles
34264
34265  mov r1,#0
34266
34267;@ EaCalc : Get '(a0)+' into r0:
34268  and r2,r8,#0x000f
34269  ldr r0,[r7,r2,lsl #2]
34270  add r3,r0,#1 ;@ Post-increment An
34271  str r3,[r7,r2,lsl #2]
34272;@ EaWrite: Write r1 into '(a0)+' (address in r0):
34273  and r1,r1,#0xff
34274  str r4,[r7,#0x40] ;@ Save PC
34275  bic r0,r0,#0xff000000
34276  bl m68k_write8 ;@ Call write8(r0,r1) handler
34277
34278  ldr r5,[r7,#0x5c] ;@ Load Cycles
34279  ldrh r8,[r4],#2 ;@ Fetch next opcode
34280  subs r5,r5,#12 ;@ Subtract cycles
34281  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34282  b CycloneEnd
34283
34284;@ ---------- [51df] sf (a7)+ uses Op51df ----------
34285Op51df:
34286  str r4,[r7,#0x50] ;@ Save prev PC + 2
34287  str r5,[r7,#0x5c] ;@ Save Cycles
34288
34289  mov r1,#0
34290
34291;@ EaCalc : Get '(a7)+' into r0:
34292  ldr r0,[r7,#0x3c] ;@ A7
34293  add r3,r0,#2 ;@ Post-increment An
34294  str r3,[r7,#0x3c] ;@ A7
34295;@ EaWrite: Write r1 into '(a7)+' (address in r0):
34296  and r1,r1,#0xff
34297  str r4,[r7,#0x40] ;@ Save PC
34298  bic r0,r0,#0xff000000
34299  bl m68k_write8 ;@ Call write8(r0,r1) handler
34300
34301  ldr r5,[r7,#0x5c] ;@ Load Cycles
34302  ldrh r8,[r4],#2 ;@ Fetch next opcode
34303  subs r5,r5,#12 ;@ Subtract cycles
34304  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34305  b CycloneEnd
34306
34307;@ ---------- [51e0] sf -(a0) uses Op51e0 ----------
34308Op51e0:
34309  str r4,[r7,#0x50] ;@ Save prev PC + 2
34310  str r5,[r7,#0x5c] ;@ Save Cycles
34311
34312  mov r1,#0
34313
34314;@ EaCalc : Get '-(a0)' into r0:
34315  and r2,r8,#0x000f
34316  orr r2,r2,#0x8 ;@ A0-7
34317  ldr r0,[r7,r2,lsl #2]
34318  sub r0,r0,#1 ;@ Pre-decrement An
34319  str r0,[r7,r2,lsl #2]
34320;@ EaWrite: Write r1 into '-(a0)' (address in r0):
34321  and r1,r1,#0xff
34322  str r4,[r7,#0x40] ;@ Save PC
34323  bic r0,r0,#0xff000000
34324  bl m68k_write8 ;@ Call write8(r0,r1) handler
34325
34326  ldr r5,[r7,#0x5c] ;@ Load Cycles
34327  ldrh r8,[r4],#2 ;@ Fetch next opcode
34328  subs r5,r5,#14 ;@ Subtract cycles
34329  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34330  b CycloneEnd
34331
34332;@ ---------- [51e7] sf -(a7) uses Op51e7 ----------
34333Op51e7:
34334  str r4,[r7,#0x50] ;@ Save prev PC + 2
34335  str r5,[r7,#0x5c] ;@ Save Cycles
34336
34337  mov r1,#0
34338
34339;@ EaCalc : Get '-(a7)' into r0:
34340  ldr r0,[r7,#0x3c] ;@ A7
34341  sub r0,r0,#2 ;@ Pre-decrement An
34342  str r0,[r7,#0x3c] ;@ A7
34343;@ EaWrite: Write r1 into '-(a7)' (address in r0):
34344  and r1,r1,#0xff
34345  str r4,[r7,#0x40] ;@ Save PC
34346  bic r0,r0,#0xff000000
34347  bl m68k_write8 ;@ Call write8(r0,r1) handler
34348
34349  ldr r5,[r7,#0x5c] ;@ Load Cycles
34350  ldrh r8,[r4],#2 ;@ Fetch next opcode
34351  subs r5,r5,#14 ;@ Subtract cycles
34352  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34353  b CycloneEnd
34354
34355;@ ---------- [51e8] sf ($3333,a0) uses Op51e8 ----------
34356Op51e8:
34357  str r4,[r7,#0x50] ;@ Save prev PC + 2
34358  str r5,[r7,#0x5c] ;@ Save Cycles
34359
34360  mov r1,#0
34361
34362;@ EaCalc : Get '($3333,a0)' into r0:
34363  ldrsh r0,[r4],#2 ;@ Fetch offset
34364  and r2,r8,#0x000f
34365  ldr r2,[r7,r2,lsl #2]
34366  add r0,r0,r2 ;@ Add on offset
34367;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
34368  and r1,r1,#0xff
34369  str r4,[r7,#0x40] ;@ Save PC
34370  bic r0,r0,#0xff000000
34371  bl m68k_write8 ;@ Call write8(r0,r1) handler
34372
34373  ldr r5,[r7,#0x5c] ;@ Load Cycles
34374  ldrh r8,[r4],#2 ;@ Fetch next opcode
34375  subs r5,r5,#16 ;@ Subtract cycles
34376  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34377  b CycloneEnd
34378
34379;@ ---------- [51f0] sf ($33,a0,d3.w*2) uses Op51f0 ----------
34380Op51f0:
34381  str r4,[r7,#0x50] ;@ Save prev PC + 2
34382  str r5,[r7,#0x5c] ;@ Save Cycles
34383
34384  mov r1,#0
34385
34386;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
34387;@ Get extension word into r3:
34388  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
34389  mov r2,r3,lsr #10
34390  tst r3,#0x0800 ;@ Is Rn Word or Long
34391  and r2,r2,#0x3c ;@ r2=Index of Rn
34392  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
34393  ldrne   r2,[r7,r2] ;@ r2=Rn.l
34394  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
34395  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
34396  and r2,r8,#0x000f
34397  orr r2,r2,#0x8 ;@ A0-7
34398  ldr r2,[r7,r2,lsl #2]
34399  add r0,r2,r3 ;@ r0=Disp+An+Rn
34400;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
34401  and r1,r1,#0xff
34402  str r4,[r7,#0x40] ;@ Save PC
34403  bic r0,r0,#0xff000000
34404  bl m68k_write8 ;@ Call write8(r0,r1) handler
34405
34406  ldr r5,[r7,#0x5c] ;@ Load Cycles
34407  ldrh r8,[r4],#2 ;@ Fetch next opcode
34408  subs r5,r5,#18 ;@ Subtract cycles
34409  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34410  b CycloneEnd
34411
34412;@ ---------- [51f8] sf $3333.w uses Op51f8 ----------
34413Op51f8:
34414  str r4,[r7,#0x50] ;@ Save prev PC + 2
34415  str r5,[r7,#0x5c] ;@ Save Cycles
34416
34417  mov r1,#0
34418
34419;@ EaCalc : Get '$3333.w' into r0:
34420  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
34421;@ EaWrite: Write r1 into '$3333.w' (address in r0):
34422  and r1,r1,#0xff
34423  str r4,[r7,#0x40] ;@ Save PC
34424  bic r0,r0,#0xff000000
34425  bl m68k_write8 ;@ Call write8(r0,r1) handler
34426
34427  ldr r5,[r7,#0x5c] ;@ Load Cycles
34428  ldrh r8,[r4],#2 ;@ Fetch next opcode
34429  subs r5,r5,#16 ;@ Subtract cycles
34430  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34431  b CycloneEnd
34432
34433;@ ---------- [51f9] sf $33333333.l uses Op51f9 ----------
34434Op51f9:
34435  str r4,[r7,#0x50] ;@ Save prev PC + 2
34436  str r5,[r7,#0x5c] ;@ Save Cycles
34437
34438  mov r1,#0
34439
34440;@ EaCalc : Get '$33333333.l' into r0:
34441  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
34442  ldrh r0,[r4],#2
34443  orr r0,r0,r2,lsl #16
34444;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
34445  and r1,r1,#0xff
34446  str r4,[r7,#0x40] ;@ Save PC
34447  bic r0,r0,#0xff000000
34448  bl m68k_write8 ;@ Call write8(r0,r1) handler
34449
34450  ldr r5,[r7,#0x5c] ;@ Load Cycles
34451  ldrh r8,[r4],#2 ;@ Fetch next opcode
34452  subs r5,r5,#20 ;@ Subtract cycles
34453  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34454  b CycloneEnd
34455
34456;@ ---------- [52c0] shi d0 uses Op52c0 ----------
34457Op52c0:
34458  mov r1,#0
34459  tst r10,#0x60000000 ;@ hi: !C && !Z
34460  mvneq r1,#0
34461  subeq r5,r5,#2 ;@ Extra cycles
34462
34463;@ EaCalc : Get register index into r0:
34464  and r0,r8,#0x000f
34465;@ EaWrite: r1 into register[r0]:
34466  strb r1,[r7,r0,lsl #2]
34467
34468  ldrh r8,[r4],#2 ;@ Fetch next opcode
34469  subs r5,r5,#4 ;@ Subtract cycles
34470  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34471  b CycloneEnd
34472
34473;@ ---------- [52c8] dbhi d0, 3335 uses Op52c8 ----------
34474Op52c8:
34475;@ Is the condition true?
34476  tst r10,#0x60000000 ;@ hi: !C && !Z
34477;@ If so, don't dbra
34478  beq DbraTrue
34479
34480;@ Decrement Dn.w
34481  and r1,r8,#0x0007
34482  mov r1,r1,lsl #2
34483  ldrsh r0,[r7,r1]
34484  strb r8,[r7,#0x45] ;@ not polling
34485  sub r0,r0,#1
34486  strh r0,[r7,r1]
34487
34488;@ Check if Dn.w is -1
34489  cmn r0,#1
34490  beq DbraMin1
34491
34492;@ Get Branch offset:
34493  ldrsh r0,[r4]
34494  add r0,r4,r0 ;@ r0 = New PC
34495  bl m68k_checkpc ;@ Call checkpc()
34496  mov r4,r0
34497  tst r4,#1 ;@ address error?
34498  bne ExceptionAddressError_r_prg_r4
34499  ldrh r8,[r4],#2 ;@ Fetch next opcode
34500  subs r5,r5,#10 ;@ Subtract cycles
34501  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34502  b CycloneEnd
34503
34504;@ ---------- [52d0] shi (a0) uses Op52d0 ----------
34505Op52d0:
34506  str r4,[r7,#0x50] ;@ Save prev PC + 2
34507  str r5,[r7,#0x5c] ;@ Save Cycles
34508
34509  mov r1,#0
34510  tst r10,#0x60000000 ;@ hi: !C && !Z
34511  mvneq r1,#0
34512
34513;@ EaCalc : Get '(a0)' into r0:
34514  and r2,r8,#0x000f
34515  orr r2,r2,#0x8 ;@ A0-7
34516  ldr r0,[r7,r2,lsl #2]
34517;@ EaWrite: Write r1 into '(a0)' (address in r0):
34518  and r1,r1,#0xff
34519  str r4,[r7,#0x40] ;@ Save PC
34520  bic r0,r0,#0xff000000
34521  bl m68k_write8 ;@ Call write8(r0,r1) handler
34522
34523  ldr r5,[r7,#0x5c] ;@ Load Cycles
34524  ldrh r8,[r4],#2 ;@ Fetch next opcode
34525  subs r5,r5,#12 ;@ Subtract cycles
34526  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34527  b CycloneEnd
34528
34529;@ ---------- [52d8] shi (a0)+ uses Op52d8 ----------
34530Op52d8:
34531  str r4,[r7,#0x50] ;@ Save prev PC + 2
34532  str r5,[r7,#0x5c] ;@ Save Cycles
34533
34534  mov r1,#0
34535  tst r10,#0x60000000 ;@ hi: !C && !Z
34536  mvneq r1,#0
34537
34538;@ EaCalc : Get '(a0)+' into r0:
34539  and r2,r8,#0x000f
34540  ldr r0,[r7,r2,lsl #2]
34541  add r3,r0,#1 ;@ Post-increment An
34542  str r3,[r7,r2,lsl #2]
34543;@ EaWrite: Write r1 into '(a0)+' (address in r0):
34544  and r1,r1,#0xff
34545  str r4,[r7,#0x40] ;@ Save PC
34546  bic r0,r0,#0xff000000
34547  bl m68k_write8 ;@ Call write8(r0,r1) handler
34548
34549  ldr r5,[r7,#0x5c] ;@ Load Cycles
34550  ldrh r8,[r4],#2 ;@ Fetch next opcode
34551  subs r5,r5,#12 ;@ Subtract cycles
34552  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34553  b CycloneEnd
34554
34555;@ ---------- [52df] shi (a7)+ uses Op52df ----------
34556Op52df:
34557  str r4,[r7,#0x50] ;@ Save prev PC + 2
34558  str r5,[r7,#0x5c] ;@ Save Cycles
34559
34560  mov r1,#0
34561  tst r10,#0x60000000 ;@ hi: !C && !Z
34562  mvneq r1,#0
34563
34564;@ EaCalc : Get '(a7)+' into r0:
34565  ldr r0,[r7,#0x3c] ;@ A7
34566  add r3,r0,#2 ;@ Post-increment An
34567  str r3,[r7,#0x3c] ;@ A7
34568;@ EaWrite: Write r1 into '(a7)+' (address in r0):
34569  and r1,r1,#0xff
34570  str r4,[r7,#0x40] ;@ Save PC
34571  bic r0,r0,#0xff000000
34572  bl m68k_write8 ;@ Call write8(r0,r1) handler
34573
34574  ldr r5,[r7,#0x5c] ;@ Load Cycles
34575  ldrh r8,[r4],#2 ;@ Fetch next opcode
34576  subs r5,r5,#12 ;@ Subtract cycles
34577  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34578  b CycloneEnd
34579
34580;@ ---------- [52e0] shi -(a0) uses Op52e0 ----------
34581Op52e0:
34582  str r4,[r7,#0x50] ;@ Save prev PC + 2
34583  str r5,[r7,#0x5c] ;@ Save Cycles
34584
34585  mov r1,#0
34586  tst r10,#0x60000000 ;@ hi: !C && !Z
34587  mvneq r1,#0
34588
34589;@ EaCalc : Get '-(a0)' into r0:
34590  and r2,r8,#0x000f
34591  orr r2,r2,#0x8 ;@ A0-7
34592  ldr r0,[r7,r2,lsl #2]
34593  sub r0,r0,#1 ;@ Pre-decrement An
34594  str r0,[r7,r2,lsl #2]
34595;@ EaWrite: Write r1 into '-(a0)' (address in r0):
34596  and r1,r1,#0xff
34597  str r4,[r7,#0x40] ;@ Save PC
34598  bic r0,r0,#0xff000000
34599  bl m68k_write8 ;@ Call write8(r0,r1) handler
34600
34601  ldr r5,[r7,#0x5c] ;@ Load Cycles
34602  ldrh r8,[r4],#2 ;@ Fetch next opcode
34603  subs r5,r5,#14 ;@ Subtract cycles
34604  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34605  b CycloneEnd
34606
34607;@ ---------- [52e7] shi -(a7) uses Op52e7 ----------
34608Op52e7:
34609  str r4,[r7,#0x50] ;@ Save prev PC + 2
34610  str r5,[r7,#0x5c] ;@ Save Cycles
34611
34612  mov r1,#0
34613  tst r10,#0x60000000 ;@ hi: !C && !Z
34614  mvneq r1,#0
34615
34616;@ EaCalc : Get '-(a7)' into r0:
34617  ldr r0,[r7,#0x3c] ;@ A7
34618  sub r0,r0,#2 ;@ Pre-decrement An
34619  str r0,[r7,#0x3c] ;@ A7
34620;@ EaWrite: Write r1 into '-(a7)' (address in r0):
34621  and r1,r1,#0xff
34622  str r4,[r7,#0x40] ;@ Save PC
34623  bic r0,r0,#0xff000000
34624  bl m68k_write8 ;@ Call write8(r0,r1) handler
34625
34626  ldr r5,[r7,#0x5c] ;@ Load Cycles
34627  ldrh r8,[r4],#2 ;@ Fetch next opcode
34628  subs r5,r5,#14 ;@ Subtract cycles
34629  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34630  b CycloneEnd
34631
34632;@ ---------- [52e8] shi ($3333,a0) uses Op52e8 ----------
34633Op52e8:
34634  str r4,[r7,#0x50] ;@ Save prev PC + 2
34635  str r5,[r7,#0x5c] ;@ Save Cycles
34636
34637  mov r1,#0
34638  tst r10,#0x60000000 ;@ hi: !C && !Z
34639  mvneq r1,#0
34640
34641;@ EaCalc : Get '($3333,a0)' into r0:
34642  ldrsh r0,[r4],#2 ;@ Fetch offset
34643  and r2,r8,#0x000f
34644  ldr r2,[r7,r2,lsl #2]
34645  add r0,r0,r2 ;@ Add on offset
34646;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
34647  and r1,r1,#0xff
34648  str r4,[r7,#0x40] ;@ Save PC
34649  bic r0,r0,#0xff000000
34650  bl m68k_write8 ;@ Call write8(r0,r1) handler
34651
34652  ldr r5,[r7,#0x5c] ;@ Load Cycles
34653  ldrh r8,[r4],#2 ;@ Fetch next opcode
34654  subs r5,r5,#16 ;@ Subtract cycles
34655  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34656  b CycloneEnd
34657
34658;@ ---------- [52f0] shi ($33,a0,d3.w*2) uses Op52f0 ----------
34659Op52f0:
34660  str r4,[r7,#0x50] ;@ Save prev PC + 2
34661  str r5,[r7,#0x5c] ;@ Save Cycles
34662
34663  mov r1,#0
34664  tst r10,#0x60000000 ;@ hi: !C && !Z
34665  mvneq r1,#0
34666
34667;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
34668;@ Get extension word into r3:
34669  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
34670  mov r2,r3,lsr #10
34671  tst r3,#0x0800 ;@ Is Rn Word or Long
34672  and r2,r2,#0x3c ;@ r2=Index of Rn
34673  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
34674  ldrne   r2,[r7,r2] ;@ r2=Rn.l
34675  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
34676  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
34677  and r2,r8,#0x000f
34678  orr r2,r2,#0x8 ;@ A0-7
34679  ldr r2,[r7,r2,lsl #2]
34680  add r0,r2,r3 ;@ r0=Disp+An+Rn
34681;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
34682  and r1,r1,#0xff
34683  str r4,[r7,#0x40] ;@ Save PC
34684  bic r0,r0,#0xff000000
34685  bl m68k_write8 ;@ Call write8(r0,r1) handler
34686
34687  ldr r5,[r7,#0x5c] ;@ Load Cycles
34688  ldrh r8,[r4],#2 ;@ Fetch next opcode
34689  subs r5,r5,#18 ;@ Subtract cycles
34690  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34691  b CycloneEnd
34692
34693;@ ---------- [52f8] shi $3333.w uses Op52f8 ----------
34694Op52f8:
34695  str r4,[r7,#0x50] ;@ Save prev PC + 2
34696  str r5,[r7,#0x5c] ;@ Save Cycles
34697
34698  mov r1,#0
34699  tst r10,#0x60000000 ;@ hi: !C && !Z
34700  mvneq r1,#0
34701
34702;@ EaCalc : Get '$3333.w' into r0:
34703  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
34704;@ EaWrite: Write r1 into '$3333.w' (address in r0):
34705  and r1,r1,#0xff
34706  str r4,[r7,#0x40] ;@ Save PC
34707  bic r0,r0,#0xff000000
34708  bl m68k_write8 ;@ Call write8(r0,r1) handler
34709
34710  ldr r5,[r7,#0x5c] ;@ Load Cycles
34711  ldrh r8,[r4],#2 ;@ Fetch next opcode
34712  subs r5,r5,#16 ;@ Subtract cycles
34713  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34714  b CycloneEnd
34715
34716;@ ---------- [52f9] shi $33333333.l uses Op52f9 ----------
34717Op52f9:
34718  str r4,[r7,#0x50] ;@ Save prev PC + 2
34719  str r5,[r7,#0x5c] ;@ Save Cycles
34720
34721  mov r1,#0
34722  tst r10,#0x60000000 ;@ hi: !C && !Z
34723  mvneq r1,#0
34724
34725;@ EaCalc : Get '$33333333.l' into r0:
34726  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
34727  ldrh r0,[r4],#2
34728  orr r0,r0,r2,lsl #16
34729;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
34730  and r1,r1,#0xff
34731  str r4,[r7,#0x40] ;@ Save PC
34732  bic r0,r0,#0xff000000
34733  bl m68k_write8 ;@ Call write8(r0,r1) handler
34734
34735  ldr r5,[r7,#0x5c] ;@ Load Cycles
34736  ldrh r8,[r4],#2 ;@ Fetch next opcode
34737  subs r5,r5,#20 ;@ Subtract cycles
34738  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34739  b CycloneEnd
34740
34741;@ ---------- [53c0] sls d0 uses Op53c0 ----------
34742Op53c0:
34743  mov r1,#0
34744  tst r10,#0x60000000 ;@ ls: C || Z
34745  mvnne r1,#0
34746  subne r5,r5,#2 ;@ Extra cycles
34747
34748;@ EaCalc : Get register index into r0:
34749  and r0,r8,#0x000f
34750;@ EaWrite: r1 into register[r0]:
34751  strb r1,[r7,r0,lsl #2]
34752
34753  ldrh r8,[r4],#2 ;@ Fetch next opcode
34754  subs r5,r5,#4 ;@ Subtract cycles
34755  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34756  b CycloneEnd
34757
34758;@ ---------- [53c8] dbls d0, 3335 uses Op53c8 ----------
34759Op53c8:
34760;@ Is the condition true?
34761  tst r10,#0x60000000 ;@ ls: C || Z
34762;@ If so, don't dbra
34763  bne DbraTrue
34764
34765;@ Decrement Dn.w
34766  and r1,r8,#0x0007
34767  mov r1,r1,lsl #2
34768  ldrsh r0,[r7,r1]
34769  strb r8,[r7,#0x45] ;@ not polling
34770  sub r0,r0,#1
34771  strh r0,[r7,r1]
34772
34773;@ Check if Dn.w is -1
34774  cmn r0,#1
34775  beq DbraMin1
34776
34777;@ Get Branch offset:
34778  ldrsh r0,[r4]
34779  add r0,r4,r0 ;@ r0 = New PC
34780  bl m68k_checkpc ;@ Call checkpc()
34781  mov r4,r0
34782  tst r4,#1 ;@ address error?
34783  bne ExceptionAddressError_r_prg_r4
34784  ldrh r8,[r4],#2 ;@ Fetch next opcode
34785  subs r5,r5,#10 ;@ Subtract cycles
34786  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34787  b CycloneEnd
34788
34789;@ ---------- [53d0] sls (a0) uses Op53d0 ----------
34790Op53d0:
34791  str r4,[r7,#0x50] ;@ Save prev PC + 2
34792  str r5,[r7,#0x5c] ;@ Save Cycles
34793
34794  mov r1,#0
34795  tst r10,#0x60000000 ;@ ls: C || Z
34796  mvnne r1,#0
34797
34798;@ EaCalc : Get '(a0)' into r0:
34799  and r2,r8,#0x000f
34800  orr r2,r2,#0x8 ;@ A0-7
34801  ldr r0,[r7,r2,lsl #2]
34802;@ EaWrite: Write r1 into '(a0)' (address in r0):
34803  and r1,r1,#0xff
34804  str r4,[r7,#0x40] ;@ Save PC
34805  bic r0,r0,#0xff000000
34806  bl m68k_write8 ;@ Call write8(r0,r1) handler
34807
34808  ldr r5,[r7,#0x5c] ;@ Load Cycles
34809  ldrh r8,[r4],#2 ;@ Fetch next opcode
34810  subs r5,r5,#12 ;@ Subtract cycles
34811  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34812  b CycloneEnd
34813
34814;@ ---------- [53d8] sls (a0)+ uses Op53d8 ----------
34815Op53d8:
34816  str r4,[r7,#0x50] ;@ Save prev PC + 2
34817  str r5,[r7,#0x5c] ;@ Save Cycles
34818
34819  mov r1,#0
34820  tst r10,#0x60000000 ;@ ls: C || Z
34821  mvnne r1,#0
34822
34823;@ EaCalc : Get '(a0)+' into r0:
34824  and r2,r8,#0x000f
34825  ldr r0,[r7,r2,lsl #2]
34826  add r3,r0,#1 ;@ Post-increment An
34827  str r3,[r7,r2,lsl #2]
34828;@ EaWrite: Write r1 into '(a0)+' (address in r0):
34829  and r1,r1,#0xff
34830  str r4,[r7,#0x40] ;@ Save PC
34831  bic r0,r0,#0xff000000
34832  bl m68k_write8 ;@ Call write8(r0,r1) handler
34833
34834  ldr r5,[r7,#0x5c] ;@ Load Cycles
34835  ldrh r8,[r4],#2 ;@ Fetch next opcode
34836  subs r5,r5,#12 ;@ Subtract cycles
34837  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34838  b CycloneEnd
34839
34840;@ ---------- [53df] sls (a7)+ uses Op53df ----------
34841Op53df:
34842  str r4,[r7,#0x50] ;@ Save prev PC + 2
34843  str r5,[r7,#0x5c] ;@ Save Cycles
34844
34845  mov r1,#0
34846  tst r10,#0x60000000 ;@ ls: C || Z
34847  mvnne r1,#0
34848
34849;@ EaCalc : Get '(a7)+' into r0:
34850  ldr r0,[r7,#0x3c] ;@ A7
34851  add r3,r0,#2 ;@ Post-increment An
34852  str r3,[r7,#0x3c] ;@ A7
34853;@ EaWrite: Write r1 into '(a7)+' (address in r0):
34854  and r1,r1,#0xff
34855  str r4,[r7,#0x40] ;@ Save PC
34856  bic r0,r0,#0xff000000
34857  bl m68k_write8 ;@ Call write8(r0,r1) handler
34858
34859  ldr r5,[r7,#0x5c] ;@ Load Cycles
34860  ldrh r8,[r4],#2 ;@ Fetch next opcode
34861  subs r5,r5,#12 ;@ Subtract cycles
34862  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34863  b CycloneEnd
34864
34865;@ ---------- [53e0] sls -(a0) uses Op53e0 ----------
34866Op53e0:
34867  str r4,[r7,#0x50] ;@ Save prev PC + 2
34868  str r5,[r7,#0x5c] ;@ Save Cycles
34869
34870  mov r1,#0
34871  tst r10,#0x60000000 ;@ ls: C || Z
34872  mvnne r1,#0
34873
34874;@ EaCalc : Get '-(a0)' into r0:
34875  and r2,r8,#0x000f
34876  orr r2,r2,#0x8 ;@ A0-7
34877  ldr r0,[r7,r2,lsl #2]
34878  sub r0,r0,#1 ;@ Pre-decrement An
34879  str r0,[r7,r2,lsl #2]
34880;@ EaWrite: Write r1 into '-(a0)' (address in r0):
34881  and r1,r1,#0xff
34882  str r4,[r7,#0x40] ;@ Save PC
34883  bic r0,r0,#0xff000000
34884  bl m68k_write8 ;@ Call write8(r0,r1) handler
34885
34886  ldr r5,[r7,#0x5c] ;@ Load Cycles
34887  ldrh r8,[r4],#2 ;@ Fetch next opcode
34888  subs r5,r5,#14 ;@ Subtract cycles
34889  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34890  b CycloneEnd
34891
34892;@ ---------- [53e7] sls -(a7) uses Op53e7 ----------
34893Op53e7:
34894  str r4,[r7,#0x50] ;@ Save prev PC + 2
34895  str r5,[r7,#0x5c] ;@ Save Cycles
34896
34897  mov r1,#0
34898  tst r10,#0x60000000 ;@ ls: C || Z
34899  mvnne r1,#0
34900
34901;@ EaCalc : Get '-(a7)' into r0:
34902  ldr r0,[r7,#0x3c] ;@ A7
34903  sub r0,r0,#2 ;@ Pre-decrement An
34904  str r0,[r7,#0x3c] ;@ A7
34905;@ EaWrite: Write r1 into '-(a7)' (address in r0):
34906  and r1,r1,#0xff
34907  str r4,[r7,#0x40] ;@ Save PC
34908  bic r0,r0,#0xff000000
34909  bl m68k_write8 ;@ Call write8(r0,r1) handler
34910
34911  ldr r5,[r7,#0x5c] ;@ Load Cycles
34912  ldrh r8,[r4],#2 ;@ Fetch next opcode
34913  subs r5,r5,#14 ;@ Subtract cycles
34914  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34915  b CycloneEnd
34916
34917;@ ---------- [53e8] sls ($3333,a0) uses Op53e8 ----------
34918Op53e8:
34919  str r4,[r7,#0x50] ;@ Save prev PC + 2
34920  str r5,[r7,#0x5c] ;@ Save Cycles
34921
34922  mov r1,#0
34923  tst r10,#0x60000000 ;@ ls: C || Z
34924  mvnne r1,#0
34925
34926;@ EaCalc : Get '($3333,a0)' into r0:
34927  ldrsh r0,[r4],#2 ;@ Fetch offset
34928  and r2,r8,#0x000f
34929  ldr r2,[r7,r2,lsl #2]
34930  add r0,r0,r2 ;@ Add on offset
34931;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
34932  and r1,r1,#0xff
34933  str r4,[r7,#0x40] ;@ Save PC
34934  bic r0,r0,#0xff000000
34935  bl m68k_write8 ;@ Call write8(r0,r1) handler
34936
34937  ldr r5,[r7,#0x5c] ;@ Load Cycles
34938  ldrh r8,[r4],#2 ;@ Fetch next opcode
34939  subs r5,r5,#16 ;@ Subtract cycles
34940  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34941  b CycloneEnd
34942
34943;@ ---------- [53f0] sls ($33,a0,d3.w*2) uses Op53f0 ----------
34944Op53f0:
34945  str r4,[r7,#0x50] ;@ Save prev PC + 2
34946  str r5,[r7,#0x5c] ;@ Save Cycles
34947
34948  mov r1,#0
34949  tst r10,#0x60000000 ;@ ls: C || Z
34950  mvnne r1,#0
34951
34952;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
34953;@ Get extension word into r3:
34954  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
34955  mov r2,r3,lsr #10
34956  tst r3,#0x0800 ;@ Is Rn Word or Long
34957  and r2,r2,#0x3c ;@ r2=Index of Rn
34958  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
34959  ldrne   r2,[r7,r2] ;@ r2=Rn.l
34960  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
34961  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
34962  and r2,r8,#0x000f
34963  orr r2,r2,#0x8 ;@ A0-7
34964  ldr r2,[r7,r2,lsl #2]
34965  add r0,r2,r3 ;@ r0=Disp+An+Rn
34966;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
34967  and r1,r1,#0xff
34968  str r4,[r7,#0x40] ;@ Save PC
34969  bic r0,r0,#0xff000000
34970  bl m68k_write8 ;@ Call write8(r0,r1) handler
34971
34972  ldr r5,[r7,#0x5c] ;@ Load Cycles
34973  ldrh r8,[r4],#2 ;@ Fetch next opcode
34974  subs r5,r5,#18 ;@ Subtract cycles
34975  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34976  b CycloneEnd
34977
34978;@ ---------- [53f8] sls $3333.w uses Op53f8 ----------
34979Op53f8:
34980  str r4,[r7,#0x50] ;@ Save prev PC + 2
34981  str r5,[r7,#0x5c] ;@ Save Cycles
34982
34983  mov r1,#0
34984  tst r10,#0x60000000 ;@ ls: C || Z
34985  mvnne r1,#0
34986
34987;@ EaCalc : Get '$3333.w' into r0:
34988  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
34989;@ EaWrite: Write r1 into '$3333.w' (address in r0):
34990  and r1,r1,#0xff
34991  str r4,[r7,#0x40] ;@ Save PC
34992  bic r0,r0,#0xff000000
34993  bl m68k_write8 ;@ Call write8(r0,r1) handler
34994
34995  ldr r5,[r7,#0x5c] ;@ Load Cycles
34996  ldrh r8,[r4],#2 ;@ Fetch next opcode
34997  subs r5,r5,#16 ;@ Subtract cycles
34998  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34999  b CycloneEnd
35000
35001;@ ---------- [53f9] sls $33333333.l uses Op53f9 ----------
35002Op53f9:
35003  str r4,[r7,#0x50] ;@ Save prev PC + 2
35004  str r5,[r7,#0x5c] ;@ Save Cycles
35005
35006  mov r1,#0
35007  tst r10,#0x60000000 ;@ ls: C || Z
35008  mvnne r1,#0
35009
35010;@ EaCalc : Get '$33333333.l' into r0:
35011  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
35012  ldrh r0,[r4],#2
35013  orr r0,r0,r2,lsl #16
35014;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
35015  and r1,r1,#0xff
35016  str r4,[r7,#0x40] ;@ Save PC
35017  bic r0,r0,#0xff000000
35018  bl m68k_write8 ;@ Call write8(r0,r1) handler
35019
35020  ldr r5,[r7,#0x5c] ;@ Load Cycles
35021  ldrh r8,[r4],#2 ;@ Fetch next opcode
35022  subs r5,r5,#20 ;@ Subtract cycles
35023  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35024  b CycloneEnd
35025
35026;@ ---------- [54c0] scc d0 uses Op54c0 ----------
35027Op54c0:
35028  mov r1,#0
35029  tst r10,#0x20000000 ;@ cc: !C
35030  mvneq r1,#0
35031  subeq r5,r5,#2 ;@ Extra cycles
35032
35033;@ EaCalc : Get register index into r0:
35034  and r0,r8,#0x000f
35035;@ EaWrite: r1 into register[r0]:
35036  strb r1,[r7,r0,lsl #2]
35037
35038  ldrh r8,[r4],#2 ;@ Fetch next opcode
35039  subs r5,r5,#4 ;@ Subtract cycles
35040  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35041  b CycloneEnd
35042
35043;@ ---------- [54c8] dbcc d0, 3335 uses Op54c8 ----------
35044Op54c8:
35045;@ Is the condition true?
35046  tst r10,#0x20000000 ;@ cc: !C
35047;@ If so, don't dbra
35048  beq DbraTrue
35049
35050;@ Decrement Dn.w
35051  and r1,r8,#0x0007
35052  mov r1,r1,lsl #2
35053  ldrsh r0,[r7,r1]
35054  strb r8,[r7,#0x45] ;@ not polling
35055  sub r0,r0,#1
35056  strh r0,[r7,r1]
35057
35058;@ Check if Dn.w is -1
35059  cmn r0,#1
35060  beq DbraMin1
35061
35062;@ Get Branch offset:
35063  ldrsh r0,[r4]
35064  add r0,r4,r0 ;@ r0 = New PC
35065  bl m68k_checkpc ;@ Call checkpc()
35066  mov r4,r0
35067  tst r4,#1 ;@ address error?
35068  bne ExceptionAddressError_r_prg_r4
35069  ldrh r8,[r4],#2 ;@ Fetch next opcode
35070  subs r5,r5,#10 ;@ Subtract cycles
35071  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35072  b CycloneEnd
35073
35074;@ ---------- [54d0] scc (a0) uses Op54d0 ----------
35075Op54d0:
35076  str r4,[r7,#0x50] ;@ Save prev PC + 2
35077  str r5,[r7,#0x5c] ;@ Save Cycles
35078
35079  mov r1,#0
35080  tst r10,#0x20000000 ;@ cc: !C
35081  mvneq r1,#0
35082
35083;@ EaCalc : Get '(a0)' into r0:
35084  and r2,r8,#0x000f
35085  orr r2,r2,#0x8 ;@ A0-7
35086  ldr r0,[r7,r2,lsl #2]
35087;@ EaWrite: Write r1 into '(a0)' (address in r0):
35088  and r1,r1,#0xff
35089  str r4,[r7,#0x40] ;@ Save PC
35090  bic r0,r0,#0xff000000
35091  bl m68k_write8 ;@ Call write8(r0,r1) handler
35092
35093  ldr r5,[r7,#0x5c] ;@ Load Cycles
35094  ldrh r8,[r4],#2 ;@ Fetch next opcode
35095  subs r5,r5,#12 ;@ Subtract cycles
35096  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35097  b CycloneEnd
35098
35099;@ ---------- [54d8] scc (a0)+ uses Op54d8 ----------
35100Op54d8:
35101  str r4,[r7,#0x50] ;@ Save prev PC + 2
35102  str r5,[r7,#0x5c] ;@ Save Cycles
35103
35104  mov r1,#0
35105  tst r10,#0x20000000 ;@ cc: !C
35106  mvneq r1,#0
35107
35108;@ EaCalc : Get '(a0)+' into r0:
35109  and r2,r8,#0x000f
35110  ldr r0,[r7,r2,lsl #2]
35111  add r3,r0,#1 ;@ Post-increment An
35112  str r3,[r7,r2,lsl #2]
35113;@ EaWrite: Write r1 into '(a0)+' (address in r0):
35114  and r1,r1,#0xff
35115  str r4,[r7,#0x40] ;@ Save PC
35116  bic r0,r0,#0xff000000
35117  bl m68k_write8 ;@ Call write8(r0,r1) handler
35118
35119  ldr r5,[r7,#0x5c] ;@ Load Cycles
35120  ldrh r8,[r4],#2 ;@ Fetch next opcode
35121  subs r5,r5,#12 ;@ Subtract cycles
35122  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35123  b CycloneEnd
35124
35125;@ ---------- [54df] scc (a7)+ uses Op54df ----------
35126Op54df:
35127  str r4,[r7,#0x50] ;@ Save prev PC + 2
35128  str r5,[r7,#0x5c] ;@ Save Cycles
35129
35130  mov r1,#0
35131  tst r10,#0x20000000 ;@ cc: !C
35132  mvneq r1,#0
35133
35134;@ EaCalc : Get '(a7)+' into r0:
35135  ldr r0,[r7,#0x3c] ;@ A7
35136  add r3,r0,#2 ;@ Post-increment An
35137  str r3,[r7,#0x3c] ;@ A7
35138;@ EaWrite: Write r1 into '(a7)+' (address in r0):
35139  and r1,r1,#0xff
35140  str r4,[r7,#0x40] ;@ Save PC
35141  bic r0,r0,#0xff000000
35142  bl m68k_write8 ;@ Call write8(r0,r1) handler
35143
35144  ldr r5,[r7,#0x5c] ;@ Load Cycles
35145  ldrh r8,[r4],#2 ;@ Fetch next opcode
35146  subs r5,r5,#12 ;@ Subtract cycles
35147  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35148  b CycloneEnd
35149
35150;@ ---------- [54e0] scc -(a0) uses Op54e0 ----------
35151Op54e0:
35152  str r4,[r7,#0x50] ;@ Save prev PC + 2
35153  str r5,[r7,#0x5c] ;@ Save Cycles
35154
35155  mov r1,#0
35156  tst r10,#0x20000000 ;@ cc: !C
35157  mvneq r1,#0
35158
35159;@ EaCalc : Get '-(a0)' into r0:
35160  and r2,r8,#0x000f
35161  orr r2,r2,#0x8 ;@ A0-7
35162  ldr r0,[r7,r2,lsl #2]
35163  sub r0,r0,#1 ;@ Pre-decrement An
35164  str r0,[r7,r2,lsl #2]
35165;@ EaWrite: Write r1 into '-(a0)' (address in r0):
35166  and r1,r1,#0xff
35167  str r4,[r7,#0x40] ;@ Save PC
35168  bic r0,r0,#0xff000000
35169  bl m68k_write8 ;@ Call write8(r0,r1) handler
35170
35171  ldr r5,[r7,#0x5c] ;@ Load Cycles
35172  ldrh r8,[r4],#2 ;@ Fetch next opcode
35173  subs r5,r5,#14 ;@ Subtract cycles
35174  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35175  b CycloneEnd
35176
35177;@ ---------- [54e7] scc -(a7) uses Op54e7 ----------
35178Op54e7:
35179  str r4,[r7,#0x50] ;@ Save prev PC + 2
35180  str r5,[r7,#0x5c] ;@ Save Cycles
35181
35182  mov r1,#0
35183  tst r10,#0x20000000 ;@ cc: !C
35184  mvneq r1,#0
35185
35186;@ EaCalc : Get '-(a7)' into r0:
35187  ldr r0,[r7,#0x3c] ;@ A7
35188  sub r0,r0,#2 ;@ Pre-decrement An
35189  str r0,[r7,#0x3c] ;@ A7
35190;@ EaWrite: Write r1 into '-(a7)' (address in r0):
35191  and r1,r1,#0xff
35192  str r4,[r7,#0x40] ;@ Save PC
35193  bic r0,r0,#0xff000000
35194  bl m68k_write8 ;@ Call write8(r0,r1) handler
35195
35196  ldr r5,[r7,#0x5c] ;@ Load Cycles
35197  ldrh r8,[r4],#2 ;@ Fetch next opcode
35198  subs r5,r5,#14 ;@ Subtract cycles
35199  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35200  b CycloneEnd
35201
35202;@ ---------- [54e8] scc ($3333,a0) uses Op54e8 ----------
35203Op54e8:
35204  str r4,[r7,#0x50] ;@ Save prev PC + 2
35205  str r5,[r7,#0x5c] ;@ Save Cycles
35206
35207  mov r1,#0
35208  tst r10,#0x20000000 ;@ cc: !C
35209  mvneq r1,#0
35210
35211;@ EaCalc : Get '($3333,a0)' into r0:
35212  ldrsh r0,[r4],#2 ;@ Fetch offset
35213  and r2,r8,#0x000f
35214  ldr r2,[r7,r2,lsl #2]
35215  add r0,r0,r2 ;@ Add on offset
35216;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
35217  and r1,r1,#0xff
35218  str r4,[r7,#0x40] ;@ Save PC
35219  bic r0,r0,#0xff000000
35220  bl m68k_write8 ;@ Call write8(r0,r1) handler
35221
35222  ldr r5,[r7,#0x5c] ;@ Load Cycles
35223  ldrh r8,[r4],#2 ;@ Fetch next opcode
35224  subs r5,r5,#16 ;@ Subtract cycles
35225  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35226  b CycloneEnd
35227
35228;@ ---------- [54f0] scc ($33,a0,d3.w*2) uses Op54f0 ----------
35229Op54f0:
35230  str r4,[r7,#0x50] ;@ Save prev PC + 2
35231  str r5,[r7,#0x5c] ;@ Save Cycles
35232
35233  mov r1,#0
35234  tst r10,#0x20000000 ;@ cc: !C
35235  mvneq r1,#0
35236
35237;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
35238;@ Get extension word into r3:
35239  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
35240  mov r2,r3,lsr #10
35241  tst r3,#0x0800 ;@ Is Rn Word or Long
35242  and r2,r2,#0x3c ;@ r2=Index of Rn
35243  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
35244  ldrne   r2,[r7,r2] ;@ r2=Rn.l
35245  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
35246  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
35247  and r2,r8,#0x000f
35248  orr r2,r2,#0x8 ;@ A0-7
35249  ldr r2,[r7,r2,lsl #2]
35250  add r0,r2,r3 ;@ r0=Disp+An+Rn
35251;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
35252  and r1,r1,#0xff
35253  str r4,[r7,#0x40] ;@ Save PC
35254  bic r0,r0,#0xff000000
35255  bl m68k_write8 ;@ Call write8(r0,r1) handler
35256
35257  ldr r5,[r7,#0x5c] ;@ Load Cycles
35258  ldrh r8,[r4],#2 ;@ Fetch next opcode
35259  subs r5,r5,#18 ;@ Subtract cycles
35260  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35261  b CycloneEnd
35262
35263;@ ---------- [54f8] scc $3333.w uses Op54f8 ----------
35264Op54f8:
35265  str r4,[r7,#0x50] ;@ Save prev PC + 2
35266  str r5,[r7,#0x5c] ;@ Save Cycles
35267
35268  mov r1,#0
35269  tst r10,#0x20000000 ;@ cc: !C
35270  mvneq r1,#0
35271
35272;@ EaCalc : Get '$3333.w' into r0:
35273  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
35274;@ EaWrite: Write r1 into '$3333.w' (address in r0):
35275  and r1,r1,#0xff
35276  str r4,[r7,#0x40] ;@ Save PC
35277  bic r0,r0,#0xff000000
35278  bl m68k_write8 ;@ Call write8(r0,r1) handler
35279
35280  ldr r5,[r7,#0x5c] ;@ Load Cycles
35281  ldrh r8,[r4],#2 ;@ Fetch next opcode
35282  subs r5,r5,#16 ;@ Subtract cycles
35283  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35284  b CycloneEnd
35285
35286;@ ---------- [54f9] scc $33333333.l uses Op54f9 ----------
35287Op54f9:
35288  str r4,[r7,#0x50] ;@ Save prev PC + 2
35289  str r5,[r7,#0x5c] ;@ Save Cycles
35290
35291  mov r1,#0
35292  tst r10,#0x20000000 ;@ cc: !C
35293  mvneq r1,#0
35294
35295;@ EaCalc : Get '$33333333.l' into r0:
35296  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
35297  ldrh r0,[r4],#2
35298  orr r0,r0,r2,lsl #16
35299;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
35300  and r1,r1,#0xff
35301  str r4,[r7,#0x40] ;@ Save PC
35302  bic r0,r0,#0xff000000
35303  bl m68k_write8 ;@ Call write8(r0,r1) handler
35304
35305  ldr r5,[r7,#0x5c] ;@ Load Cycles
35306  ldrh r8,[r4],#2 ;@ Fetch next opcode
35307  subs r5,r5,#20 ;@ Subtract cycles
35308  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35309  b CycloneEnd
35310
35311;@ ---------- [55c0] scs d0 uses Op55c0 ----------
35312Op55c0:
35313  mov r1,#0
35314  tst r10,#0x20000000 ;@ cs: C
35315  mvnne r1,#0
35316  subne r5,r5,#2 ;@ Extra cycles
35317
35318;@ EaCalc : Get register index into r0:
35319  and r0,r8,#0x000f
35320;@ EaWrite: r1 into register[r0]:
35321  strb r1,[r7,r0,lsl #2]
35322
35323  ldrh r8,[r4],#2 ;@ Fetch next opcode
35324  subs r5,r5,#4 ;@ Subtract cycles
35325  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35326  b CycloneEnd
35327
35328;@ ---------- [55c8] dbcs d0, 3335 uses Op55c8 ----------
35329Op55c8:
35330;@ Is the condition true?
35331  tst r10,#0x20000000 ;@ cs: C
35332;@ If so, don't dbra
35333  bne DbraTrue
35334
35335;@ Decrement Dn.w
35336  and r1,r8,#0x0007
35337  mov r1,r1,lsl #2
35338  ldrsh r0,[r7,r1]
35339  strb r8,[r7,#0x45] ;@ not polling
35340  sub r0,r0,#1
35341  strh r0,[r7,r1]
35342
35343;@ Check if Dn.w is -1
35344  cmn r0,#1
35345  beq DbraMin1
35346
35347;@ Get Branch offset:
35348  ldrsh r0,[r4]
35349  add r0,r4,r0 ;@ r0 = New PC
35350  bl m68k_checkpc ;@ Call checkpc()
35351  mov r4,r0
35352  tst r4,#1 ;@ address error?
35353  bne ExceptionAddressError_r_prg_r4
35354  ldrh r8,[r4],#2 ;@ Fetch next opcode
35355  subs r5,r5,#10 ;@ Subtract cycles
35356  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35357  b CycloneEnd
35358
35359;@ ---------- [55d0] scs (a0) uses Op55d0 ----------
35360Op55d0:
35361  str r4,[r7,#0x50] ;@ Save prev PC + 2
35362  str r5,[r7,#0x5c] ;@ Save Cycles
35363
35364  mov r1,#0
35365  tst r10,#0x20000000 ;@ cs: C
35366  mvnne r1,#0
35367
35368;@ EaCalc : Get '(a0)' into r0:
35369  and r2,r8,#0x000f
35370  orr r2,r2,#0x8 ;@ A0-7
35371  ldr r0,[r7,r2,lsl #2]
35372;@ EaWrite: Write r1 into '(a0)' (address in r0):
35373  and r1,r1,#0xff
35374  str r4,[r7,#0x40] ;@ Save PC
35375  bic r0,r0,#0xff000000
35376  bl m68k_write8 ;@ Call write8(r0,r1) handler
35377
35378  ldr r5,[r7,#0x5c] ;@ Load Cycles
35379  ldrh r8,[r4],#2 ;@ Fetch next opcode
35380  subs r5,r5,#12 ;@ Subtract cycles
35381  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35382  b CycloneEnd
35383
35384;@ ---------- [55d8] scs (a0)+ uses Op55d8 ----------
35385Op55d8:
35386  str r4,[r7,#0x50] ;@ Save prev PC + 2
35387  str r5,[r7,#0x5c] ;@ Save Cycles
35388
35389  mov r1,#0
35390  tst r10,#0x20000000 ;@ cs: C
35391  mvnne r1,#0
35392
35393;@ EaCalc : Get '(a0)+' into r0:
35394  and r2,r8,#0x000f
35395  ldr r0,[r7,r2,lsl #2]
35396  add r3,r0,#1 ;@ Post-increment An
35397  str r3,[r7,r2,lsl #2]
35398;@ EaWrite: Write r1 into '(a0)+' (address in r0):
35399  and r1,r1,#0xff
35400  str r4,[r7,#0x40] ;@ Save PC
35401  bic r0,r0,#0xff000000
35402  bl m68k_write8 ;@ Call write8(r0,r1) handler
35403
35404  ldr r5,[r7,#0x5c] ;@ Load Cycles
35405  ldrh r8,[r4],#2 ;@ Fetch next opcode
35406  subs r5,r5,#12 ;@ Subtract cycles
35407  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35408  b CycloneEnd
35409
35410;@ ---------- [55df] scs (a7)+ uses Op55df ----------
35411Op55df:
35412  str r4,[r7,#0x50] ;@ Save prev PC + 2
35413  str r5,[r7,#0x5c] ;@ Save Cycles
35414
35415  mov r1,#0
35416  tst r10,#0x20000000 ;@ cs: C
35417  mvnne r1,#0
35418
35419;@ EaCalc : Get '(a7)+' into r0:
35420  ldr r0,[r7,#0x3c] ;@ A7
35421  add r3,r0,#2 ;@ Post-increment An
35422  str r3,[r7,#0x3c] ;@ A7
35423;@ EaWrite: Write r1 into '(a7)+' (address in r0):
35424  and r1,r1,#0xff
35425  str r4,[r7,#0x40] ;@ Save PC
35426  bic r0,r0,#0xff000000
35427  bl m68k_write8 ;@ Call write8(r0,r1) handler
35428
35429  ldr r5,[r7,#0x5c] ;@ Load Cycles
35430  ldrh r8,[r4],#2 ;@ Fetch next opcode
35431  subs r5,r5,#12 ;@ Subtract cycles
35432  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35433  b CycloneEnd
35434
35435;@ ---------- [55e0] scs -(a0) uses Op55e0 ----------
35436Op55e0:
35437  str r4,[r7,#0x50] ;@ Save prev PC + 2
35438  str r5,[r7,#0x5c] ;@ Save Cycles
35439
35440  mov r1,#0
35441  tst r10,#0x20000000 ;@ cs: C
35442  mvnne r1,#0
35443
35444;@ EaCalc : Get '-(a0)' into r0:
35445  and r2,r8,#0x000f
35446  orr r2,r2,#0x8 ;@ A0-7
35447  ldr r0,[r7,r2,lsl #2]
35448  sub r0,r0,#1 ;@ Pre-decrement An
35449  str r0,[r7,r2,lsl #2]
35450;@ EaWrite: Write r1 into '-(a0)' (address in r0):
35451  and r1,r1,#0xff
35452  str r4,[r7,#0x40] ;@ Save PC
35453  bic r0,r0,#0xff000000
35454  bl m68k_write8 ;@ Call write8(r0,r1) handler
35455
35456  ldr r5,[r7,#0x5c] ;@ Load Cycles
35457  ldrh r8,[r4],#2 ;@ Fetch next opcode
35458  subs r5,r5,#14 ;@ Subtract cycles
35459  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35460  b CycloneEnd
35461
35462;@ ---------- [55e7] scs -(a7) uses Op55e7 ----------
35463Op55e7:
35464  str r4,[r7,#0x50] ;@ Save prev PC + 2
35465  str r5,[r7,#0x5c] ;@ Save Cycles
35466
35467  mov r1,#0
35468  tst r10,#0x20000000 ;@ cs: C
35469  mvnne r1,#0
35470
35471;@ EaCalc : Get '-(a7)' into r0:
35472  ldr r0,[r7,#0x3c] ;@ A7
35473  sub r0,r0,#2 ;@ Pre-decrement An
35474  str r0,[r7,#0x3c] ;@ A7
35475;@ EaWrite: Write r1 into '-(a7)' (address in r0):
35476  and r1,r1,#0xff
35477  str r4,[r7,#0x40] ;@ Save PC
35478  bic r0,r0,#0xff000000
35479  bl m68k_write8 ;@ Call write8(r0,r1) handler
35480
35481  ldr r5,[r7,#0x5c] ;@ Load Cycles
35482  ldrh r8,[r4],#2 ;@ Fetch next opcode
35483  subs r5,r5,#14 ;@ Subtract cycles
35484  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35485  b CycloneEnd
35486
35487;@ ---------- [55e8] scs ($3333,a0) uses Op55e8 ----------
35488Op55e8:
35489  str r4,[r7,#0x50] ;@ Save prev PC + 2
35490  str r5,[r7,#0x5c] ;@ Save Cycles
35491
35492  mov r1,#0
35493  tst r10,#0x20000000 ;@ cs: C
35494  mvnne r1,#0
35495
35496;@ EaCalc : Get '($3333,a0)' into r0:
35497  ldrsh r0,[r4],#2 ;@ Fetch offset
35498  and r2,r8,#0x000f
35499  ldr r2,[r7,r2,lsl #2]
35500  add r0,r0,r2 ;@ Add on offset
35501;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
35502  and r1,r1,#0xff
35503  str r4,[r7,#0x40] ;@ Save PC
35504  bic r0,r0,#0xff000000
35505  bl m68k_write8 ;@ Call write8(r0,r1) handler
35506
35507  ldr r5,[r7,#0x5c] ;@ Load Cycles
35508  ldrh r8,[r4],#2 ;@ Fetch next opcode
35509  subs r5,r5,#16 ;@ Subtract cycles
35510  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35511  b CycloneEnd
35512
35513;@ ---------- [55f0] scs ($33,a0,d3.w*2) uses Op55f0 ----------
35514Op55f0:
35515  str r4,[r7,#0x50] ;@ Save prev PC + 2
35516  str r5,[r7,#0x5c] ;@ Save Cycles
35517
35518  mov r1,#0
35519  tst r10,#0x20000000 ;@ cs: C
35520  mvnne r1,#0
35521
35522;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
35523;@ Get extension word into r3:
35524  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
35525  mov r2,r3,lsr #10
35526  tst r3,#0x0800 ;@ Is Rn Word or Long
35527  and r2,r2,#0x3c ;@ r2=Index of Rn
35528  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
35529  ldrne   r2,[r7,r2] ;@ r2=Rn.l
35530  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
35531  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
35532  and r2,r8,#0x000f
35533  orr r2,r2,#0x8 ;@ A0-7
35534  ldr r2,[r7,r2,lsl #2]
35535  add r0,r2,r3 ;@ r0=Disp+An+Rn
35536;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
35537  and r1,r1,#0xff
35538  str r4,[r7,#0x40] ;@ Save PC
35539  bic r0,r0,#0xff000000
35540  bl m68k_write8 ;@ Call write8(r0,r1) handler
35541
35542  ldr r5,[r7,#0x5c] ;@ Load Cycles
35543  ldrh r8,[r4],#2 ;@ Fetch next opcode
35544  subs r5,r5,#18 ;@ Subtract cycles
35545  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35546  b CycloneEnd
35547
35548;@ ---------- [55f8] scs $3333.w uses Op55f8 ----------
35549Op55f8:
35550  str r4,[r7,#0x50] ;@ Save prev PC + 2
35551  str r5,[r7,#0x5c] ;@ Save Cycles
35552
35553  mov r1,#0
35554  tst r10,#0x20000000 ;@ cs: C
35555  mvnne r1,#0
35556
35557;@ EaCalc : Get '$3333.w' into r0:
35558  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
35559;@ EaWrite: Write r1 into '$3333.w' (address in r0):
35560  and r1,r1,#0xff
35561  str r4,[r7,#0x40] ;@ Save PC
35562  bic r0,r0,#0xff000000
35563  bl m68k_write8 ;@ Call write8(r0,r1) handler
35564
35565  ldr r5,[r7,#0x5c] ;@ Load Cycles
35566  ldrh r8,[r4],#2 ;@ Fetch next opcode
35567  subs r5,r5,#16 ;@ Subtract cycles
35568  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35569  b CycloneEnd
35570
35571;@ ---------- [55f9] scs $33333333.l uses Op55f9 ----------
35572Op55f9:
35573  str r4,[r7,#0x50] ;@ Save prev PC + 2
35574  str r5,[r7,#0x5c] ;@ Save Cycles
35575
35576  mov r1,#0
35577  tst r10,#0x20000000 ;@ cs: C
35578  mvnne r1,#0
35579
35580;@ EaCalc : Get '$33333333.l' into r0:
35581  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
35582  ldrh r0,[r4],#2
35583  orr r0,r0,r2,lsl #16
35584;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
35585  and r1,r1,#0xff
35586  str r4,[r7,#0x40] ;@ Save PC
35587  bic r0,r0,#0xff000000
35588  bl m68k_write8 ;@ Call write8(r0,r1) handler
35589
35590  ldr r5,[r7,#0x5c] ;@ Load Cycles
35591  ldrh r8,[r4],#2 ;@ Fetch next opcode
35592  subs r5,r5,#20 ;@ Subtract cycles
35593  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35594  b CycloneEnd
35595
35596;@ ---------- [56c0] sne d0 uses Op56c0 ----------
35597Op56c0:
35598  mov r1,#0
35599  tst r10,#0x40000000 ;@ ne: !Z
35600  mvneq r1,#0
35601  subeq r5,r5,#2 ;@ Extra cycles
35602
35603;@ EaCalc : Get register index into r0:
35604  and r0,r8,#0x000f
35605;@ EaWrite: r1 into register[r0]:
35606  strb r1,[r7,r0,lsl #2]
35607
35608  ldrh r8,[r4],#2 ;@ Fetch next opcode
35609  subs r5,r5,#4 ;@ Subtract cycles
35610  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35611  b CycloneEnd
35612
35613;@ ---------- [56c8] dbne d0, 3335 uses Op56c8 ----------
35614Op56c8:
35615;@ Is the condition true?
35616  tst r10,#0x40000000 ;@ ne: !Z
35617;@ If so, don't dbra
35618  beq DbraTrue
35619
35620;@ Decrement Dn.w
35621  and r1,r8,#0x0007
35622  mov r1,r1,lsl #2
35623  ldrsh r0,[r7,r1]
35624  strb r8,[r7,#0x45] ;@ not polling
35625  sub r0,r0,#1
35626  strh r0,[r7,r1]
35627
35628;@ Check if Dn.w is -1
35629  cmn r0,#1
35630  beq DbraMin1
35631
35632;@ Get Branch offset:
35633  ldrsh r0,[r4]
35634  add r0,r4,r0 ;@ r0 = New PC
35635  bl m68k_checkpc ;@ Call checkpc()
35636  mov r4,r0
35637  tst r4,#1 ;@ address error?
35638  bne ExceptionAddressError_r_prg_r4
35639  ldrh r8,[r4],#2 ;@ Fetch next opcode
35640  subs r5,r5,#10 ;@ Subtract cycles
35641  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35642  b CycloneEnd
35643
35644;@ ---------- [56d0] sne (a0) uses Op56d0 ----------
35645Op56d0:
35646  str r4,[r7,#0x50] ;@ Save prev PC + 2
35647  str r5,[r7,#0x5c] ;@ Save Cycles
35648
35649  mov r1,#0
35650  tst r10,#0x40000000 ;@ ne: !Z
35651  mvneq r1,#0
35652
35653;@ EaCalc : Get '(a0)' into r0:
35654  and r2,r8,#0x000f
35655  orr r2,r2,#0x8 ;@ A0-7
35656  ldr r0,[r7,r2,lsl #2]
35657;@ EaWrite: Write r1 into '(a0)' (address in r0):
35658  and r1,r1,#0xff
35659  str r4,[r7,#0x40] ;@ Save PC
35660  bic r0,r0,#0xff000000
35661  bl m68k_write8 ;@ Call write8(r0,r1) handler
35662
35663  ldr r5,[r7,#0x5c] ;@ Load Cycles
35664  ldrh r8,[r4],#2 ;@ Fetch next opcode
35665  subs r5,r5,#12 ;@ Subtract cycles
35666  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35667  b CycloneEnd
35668
35669;@ ---------- [56d8] sne (a0)+ uses Op56d8 ----------
35670Op56d8:
35671  str r4,[r7,#0x50] ;@ Save prev PC + 2
35672  str r5,[r7,#0x5c] ;@ Save Cycles
35673
35674  mov r1,#0
35675  tst r10,#0x40000000 ;@ ne: !Z
35676  mvneq r1,#0
35677
35678;@ EaCalc : Get '(a0)+' into r0:
35679  and r2,r8,#0x000f
35680  ldr r0,[r7,r2,lsl #2]
35681  add r3,r0,#1 ;@ Post-increment An
35682  str r3,[r7,r2,lsl #2]
35683;@ EaWrite: Write r1 into '(a0)+' (address in r0):
35684  and r1,r1,#0xff
35685  str r4,[r7,#0x40] ;@ Save PC
35686  bic r0,r0,#0xff000000
35687  bl m68k_write8 ;@ Call write8(r0,r1) handler
35688
35689  ldr r5,[r7,#0x5c] ;@ Load Cycles
35690  ldrh r8,[r4],#2 ;@ Fetch next opcode
35691  subs r5,r5,#12 ;@ Subtract cycles
35692  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35693  b CycloneEnd
35694
35695;@ ---------- [56df] sne (a7)+ uses Op56df ----------
35696Op56df:
35697  str r4,[r7,#0x50] ;@ Save prev PC + 2
35698  str r5,[r7,#0x5c] ;@ Save Cycles
35699
35700  mov r1,#0
35701  tst r10,#0x40000000 ;@ ne: !Z
35702  mvneq r1,#0
35703
35704;@ EaCalc : Get '(a7)+' into r0:
35705  ldr r0,[r7,#0x3c] ;@ A7
35706  add r3,r0,#2 ;@ Post-increment An
35707  str r3,[r7,#0x3c] ;@ A7
35708;@ EaWrite: Write r1 into '(a7)+' (address in r0):
35709  and r1,r1,#0xff
35710  str r4,[r7,#0x40] ;@ Save PC
35711  bic r0,r0,#0xff000000
35712  bl m68k_write8 ;@ Call write8(r0,r1) handler
35713
35714  ldr r5,[r7,#0x5c] ;@ Load Cycles
35715  ldrh r8,[r4],#2 ;@ Fetch next opcode
35716  subs r5,r5,#12 ;@ Subtract cycles
35717  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35718  b CycloneEnd
35719
35720;@ ---------- [56e0] sne -(a0) uses Op56e0 ----------
35721Op56e0:
35722  str r4,[r7,#0x50] ;@ Save prev PC + 2
35723  str r5,[r7,#0x5c] ;@ Save Cycles
35724
35725  mov r1,#0
35726  tst r10,#0x40000000 ;@ ne: !Z
35727  mvneq r1,#0
35728
35729;@ EaCalc : Get '-(a0)' into r0:
35730  and r2,r8,#0x000f
35731  orr r2,r2,#0x8 ;@ A0-7
35732  ldr r0,[r7,r2,lsl #2]
35733  sub r0,r0,#1 ;@ Pre-decrement An
35734  str r0,[r7,r2,lsl #2]
35735;@ EaWrite: Write r1 into '-(a0)' (address in r0):
35736  and r1,r1,#0xff
35737  str r4,[r7,#0x40] ;@ Save PC
35738  bic r0,r0,#0xff000000
35739  bl m68k_write8 ;@ Call write8(r0,r1) handler
35740
35741  ldr r5,[r7,#0x5c] ;@ Load Cycles
35742  ldrh r8,[r4],#2 ;@ Fetch next opcode
35743  subs r5,r5,#14 ;@ Subtract cycles
35744  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35745  b CycloneEnd
35746
35747;@ ---------- [56e7] sne -(a7) uses Op56e7 ----------
35748Op56e7:
35749  str r4,[r7,#0x50] ;@ Save prev PC + 2
35750  str r5,[r7,#0x5c] ;@ Save Cycles
35751
35752  mov r1,#0
35753  tst r10,#0x40000000 ;@ ne: !Z
35754  mvneq r1,#0
35755
35756;@ EaCalc : Get '-(a7)' into r0:
35757  ldr r0,[r7,#0x3c] ;@ A7
35758  sub r0,r0,#2 ;@ Pre-decrement An
35759  str r0,[r7,#0x3c] ;@ A7
35760;@ EaWrite: Write r1 into '-(a7)' (address in r0):
35761  and r1,r1,#0xff
35762  str r4,[r7,#0x40] ;@ Save PC
35763  bic r0,r0,#0xff000000
35764  bl m68k_write8 ;@ Call write8(r0,r1) handler
35765
35766  ldr r5,[r7,#0x5c] ;@ Load Cycles
35767  ldrh r8,[r4],#2 ;@ Fetch next opcode
35768  subs r5,r5,#14 ;@ Subtract cycles
35769  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35770  b CycloneEnd
35771
35772;@ ---------- [56e8] sne ($3333,a0) uses Op56e8 ----------
35773Op56e8:
35774  str r4,[r7,#0x50] ;@ Save prev PC + 2
35775  str r5,[r7,#0x5c] ;@ Save Cycles
35776
35777  mov r1,#0
35778  tst r10,#0x40000000 ;@ ne: !Z
35779  mvneq r1,#0
35780
35781;@ EaCalc : Get '($3333,a0)' into r0:
35782  ldrsh r0,[r4],#2 ;@ Fetch offset
35783  and r2,r8,#0x000f
35784  ldr r2,[r7,r2,lsl #2]
35785  add r0,r0,r2 ;@ Add on offset
35786;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
35787  and r1,r1,#0xff
35788  str r4,[r7,#0x40] ;@ Save PC
35789  bic r0,r0,#0xff000000
35790  bl m68k_write8 ;@ Call write8(r0,r1) handler
35791
35792  ldr r5,[r7,#0x5c] ;@ Load Cycles
35793  ldrh r8,[r4],#2 ;@ Fetch next opcode
35794  subs r5,r5,#16 ;@ Subtract cycles
35795  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35796  b CycloneEnd
35797
35798;@ ---------- [56f0] sne ($33,a0,d3.w*2) uses Op56f0 ----------
35799Op56f0:
35800  str r4,[r7,#0x50] ;@ Save prev PC + 2
35801  str r5,[r7,#0x5c] ;@ Save Cycles
35802
35803  mov r1,#0
35804  tst r10,#0x40000000 ;@ ne: !Z
35805  mvneq r1,#0
35806
35807;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
35808;@ Get extension word into r3:
35809  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
35810  mov r2,r3,lsr #10
35811  tst r3,#0x0800 ;@ Is Rn Word or Long
35812  and r2,r2,#0x3c ;@ r2=Index of Rn
35813  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
35814  ldrne   r2,[r7,r2] ;@ r2=Rn.l
35815  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
35816  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
35817  and r2,r8,#0x000f
35818  orr r2,r2,#0x8 ;@ A0-7
35819  ldr r2,[r7,r2,lsl #2]
35820  add r0,r2,r3 ;@ r0=Disp+An+Rn
35821;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
35822  and r1,r1,#0xff
35823  str r4,[r7,#0x40] ;@ Save PC
35824  bic r0,r0,#0xff000000
35825  bl m68k_write8 ;@ Call write8(r0,r1) handler
35826
35827  ldr r5,[r7,#0x5c] ;@ Load Cycles
35828  ldrh r8,[r4],#2 ;@ Fetch next opcode
35829  subs r5,r5,#18 ;@ Subtract cycles
35830  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35831  b CycloneEnd
35832
35833;@ ---------- [56f8] sne $3333.w uses Op56f8 ----------
35834Op56f8:
35835  str r4,[r7,#0x50] ;@ Save prev PC + 2
35836  str r5,[r7,#0x5c] ;@ Save Cycles
35837
35838  mov r1,#0
35839  tst r10,#0x40000000 ;@ ne: !Z
35840  mvneq r1,#0
35841
35842;@ EaCalc : Get '$3333.w' into r0:
35843  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
35844;@ EaWrite: Write r1 into '$3333.w' (address in r0):
35845  and r1,r1,#0xff
35846  str r4,[r7,#0x40] ;@ Save PC
35847  bic r0,r0,#0xff000000
35848  bl m68k_write8 ;@ Call write8(r0,r1) handler
35849
35850  ldr r5,[r7,#0x5c] ;@ Load Cycles
35851  ldrh r8,[r4],#2 ;@ Fetch next opcode
35852  subs r5,r5,#16 ;@ Subtract cycles
35853  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35854  b CycloneEnd
35855
35856;@ ---------- [56f9] sne $33333333.l uses Op56f9 ----------
35857Op56f9:
35858  str r4,[r7,#0x50] ;@ Save prev PC + 2
35859  str r5,[r7,#0x5c] ;@ Save Cycles
35860
35861  mov r1,#0
35862  tst r10,#0x40000000 ;@ ne: !Z
35863  mvneq r1,#0
35864
35865;@ EaCalc : Get '$33333333.l' into r0:
35866  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
35867  ldrh r0,[r4],#2
35868  orr r0,r0,r2,lsl #16
35869;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
35870  and r1,r1,#0xff
35871  str r4,[r7,#0x40] ;@ Save PC
35872  bic r0,r0,#0xff000000
35873  bl m68k_write8 ;@ Call write8(r0,r1) handler
35874
35875  ldr r5,[r7,#0x5c] ;@ Load Cycles
35876  ldrh r8,[r4],#2 ;@ Fetch next opcode
35877  subs r5,r5,#20 ;@ Subtract cycles
35878  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35879  b CycloneEnd
35880
35881;@ ---------- [57c0] seq d0 uses Op57c0 ----------
35882Op57c0:
35883  mov r1,#0
35884  tst r10,#0x40000000 ;@ eq: Z
35885  mvnne r1,#0
35886  subne r5,r5,#2 ;@ Extra cycles
35887
35888;@ EaCalc : Get register index into r0:
35889  and r0,r8,#0x000f
35890;@ EaWrite: r1 into register[r0]:
35891  strb r1,[r7,r0,lsl #2]
35892
35893  ldrh r8,[r4],#2 ;@ Fetch next opcode
35894  subs r5,r5,#4 ;@ Subtract cycles
35895  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35896  b CycloneEnd
35897
35898;@ ---------- [57c8] dbeq d0, 3335 uses Op57c8 ----------
35899Op57c8:
35900;@ Is the condition true?
35901  tst r10,#0x40000000 ;@ eq: Z
35902;@ If so, don't dbra
35903  bne DbraTrue
35904
35905;@ Decrement Dn.w
35906  and r1,r8,#0x0007
35907  mov r1,r1,lsl #2
35908  ldrsh r0,[r7,r1]
35909  strb r8,[r7,#0x45] ;@ not polling
35910  sub r0,r0,#1
35911  strh r0,[r7,r1]
35912
35913;@ Check if Dn.w is -1
35914  cmn r0,#1
35915  beq DbraMin1
35916
35917;@ Get Branch offset:
35918  ldrsh r0,[r4]
35919  add r0,r4,r0 ;@ r0 = New PC
35920  bl m68k_checkpc ;@ Call checkpc()
35921  mov r4,r0
35922  tst r4,#1 ;@ address error?
35923  bne ExceptionAddressError_r_prg_r4
35924  ldrh r8,[r4],#2 ;@ Fetch next opcode
35925  subs r5,r5,#10 ;@ Subtract cycles
35926  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35927  b CycloneEnd
35928
35929;@ ---------- [57d0] seq (a0) uses Op57d0 ----------
35930Op57d0:
35931  str r4,[r7,#0x50] ;@ Save prev PC + 2
35932  str r5,[r7,#0x5c] ;@ Save Cycles
35933
35934  mov r1,#0
35935  tst r10,#0x40000000 ;@ eq: Z
35936  mvnne r1,#0
35937
35938;@ EaCalc : Get '(a0)' into r0:
35939  and r2,r8,#0x000f
35940  orr r2,r2,#0x8 ;@ A0-7
35941  ldr r0,[r7,r2,lsl #2]
35942;@ EaWrite: Write r1 into '(a0)' (address in r0):
35943  and r1,r1,#0xff
35944  str r4,[r7,#0x40] ;@ Save PC
35945  bic r0,r0,#0xff000000
35946  bl m68k_write8 ;@ Call write8(r0,r1) handler
35947
35948  ldr r5,[r7,#0x5c] ;@ Load Cycles
35949  ldrh r8,[r4],#2 ;@ Fetch next opcode
35950  subs r5,r5,#12 ;@ Subtract cycles
35951  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35952  b CycloneEnd
35953
35954;@ ---------- [57d8] seq (a0)+ uses Op57d8 ----------
35955Op57d8:
35956  str r4,[r7,#0x50] ;@ Save prev PC + 2
35957  str r5,[r7,#0x5c] ;@ Save Cycles
35958
35959  mov r1,#0
35960  tst r10,#0x40000000 ;@ eq: Z
35961  mvnne r1,#0
35962
35963;@ EaCalc : Get '(a0)+' into r0:
35964  and r2,r8,#0x000f
35965  ldr r0,[r7,r2,lsl #2]
35966  add r3,r0,#1 ;@ Post-increment An
35967  str r3,[r7,r2,lsl #2]
35968;@ EaWrite: Write r1 into '(a0)+' (address in r0):
35969  and r1,r1,#0xff
35970  str r4,[r7,#0x40] ;@ Save PC
35971  bic r0,r0,#0xff000000
35972  bl m68k_write8 ;@ Call write8(r0,r1) handler
35973
35974  ldr r5,[r7,#0x5c] ;@ Load Cycles
35975  ldrh r8,[r4],#2 ;@ Fetch next opcode
35976  subs r5,r5,#12 ;@ Subtract cycles
35977  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35978  b CycloneEnd
35979
35980;@ ---------- [57df] seq (a7)+ uses Op57df ----------
35981Op57df:
35982  str r4,[r7,#0x50] ;@ Save prev PC + 2
35983  str r5,[r7,#0x5c] ;@ Save Cycles
35984
35985  mov r1,#0
35986  tst r10,#0x40000000 ;@ eq: Z
35987  mvnne r1,#0
35988
35989;@ EaCalc : Get '(a7)+' into r0:
35990  ldr r0,[r7,#0x3c] ;@ A7
35991  add r3,r0,#2 ;@ Post-increment An
35992  str r3,[r7,#0x3c] ;@ A7
35993;@ EaWrite: Write r1 into '(a7)+' (address in r0):
35994  and r1,r1,#0xff
35995  str r4,[r7,#0x40] ;@ Save PC
35996  bic r0,r0,#0xff000000
35997  bl m68k_write8 ;@ Call write8(r0,r1) handler
35998
35999  ldr r5,[r7,#0x5c] ;@ Load Cycles
36000  ldrh r8,[r4],#2 ;@ Fetch next opcode
36001  subs r5,r5,#12 ;@ Subtract cycles
36002  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36003  b CycloneEnd
36004
36005;@ ---------- [57e0] seq -(a0) uses Op57e0 ----------
36006Op57e0:
36007  str r4,[r7,#0x50] ;@ Save prev PC + 2
36008  str r5,[r7,#0x5c] ;@ Save Cycles
36009
36010  mov r1,#0
36011  tst r10,#0x40000000 ;@ eq: Z
36012  mvnne r1,#0
36013
36014;@ EaCalc : Get '-(a0)' into r0:
36015  and r2,r8,#0x000f
36016  orr r2,r2,#0x8 ;@ A0-7
36017  ldr r0,[r7,r2,lsl #2]
36018  sub r0,r0,#1 ;@ Pre-decrement An
36019  str r0,[r7,r2,lsl #2]
36020;@ EaWrite: Write r1 into '-(a0)' (address in r0):
36021  and r1,r1,#0xff
36022  str r4,[r7,#0x40] ;@ Save PC
36023  bic r0,r0,#0xff000000
36024  bl m68k_write8 ;@ Call write8(r0,r1) handler
36025
36026  ldr r5,[r7,#0x5c] ;@ Load Cycles
36027  ldrh r8,[r4],#2 ;@ Fetch next opcode
36028  subs r5,r5,#14 ;@ Subtract cycles
36029  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36030  b CycloneEnd
36031
36032;@ ---------- [57e7] seq -(a7) uses Op57e7 ----------
36033Op57e7:
36034  str r4,[r7,#0x50] ;@ Save prev PC + 2
36035  str r5,[r7,#0x5c] ;@ Save Cycles
36036
36037  mov r1,#0
36038  tst r10,#0x40000000 ;@ eq: Z
36039  mvnne r1,#0
36040
36041;@ EaCalc : Get '-(a7)' into r0:
36042  ldr r0,[r7,#0x3c] ;@ A7
36043  sub r0,r0,#2 ;@ Pre-decrement An
36044  str r0,[r7,#0x3c] ;@ A7
36045;@ EaWrite: Write r1 into '-(a7)' (address in r0):
36046  and r1,r1,#0xff
36047  str r4,[r7,#0x40] ;@ Save PC
36048  bic r0,r0,#0xff000000
36049  bl m68k_write8 ;@ Call write8(r0,r1) handler
36050
36051  ldr r5,[r7,#0x5c] ;@ Load Cycles
36052  ldrh r8,[r4],#2 ;@ Fetch next opcode
36053  subs r5,r5,#14 ;@ Subtract cycles
36054  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36055  b CycloneEnd
36056
36057;@ ---------- [57e8] seq ($3333,a0) uses Op57e8 ----------
36058Op57e8:
36059  str r4,[r7,#0x50] ;@ Save prev PC + 2
36060  str r5,[r7,#0x5c] ;@ Save Cycles
36061
36062  mov r1,#0
36063  tst r10,#0x40000000 ;@ eq: Z
36064  mvnne r1,#0
36065
36066;@ EaCalc : Get '($3333,a0)' into r0:
36067  ldrsh r0,[r4],#2 ;@ Fetch offset
36068  and r2,r8,#0x000f
36069  ldr r2,[r7,r2,lsl #2]
36070  add r0,r0,r2 ;@ Add on offset
36071;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
36072  and r1,r1,#0xff
36073  str r4,[r7,#0x40] ;@ Save PC
36074  bic r0,r0,#0xff000000
36075  bl m68k_write8 ;@ Call write8(r0,r1) handler
36076
36077  ldr r5,[r7,#0x5c] ;@ Load Cycles
36078  ldrh r8,[r4],#2 ;@ Fetch next opcode
36079  subs r5,r5,#16 ;@ Subtract cycles
36080  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36081  b CycloneEnd
36082
36083;@ ---------- [57f0] seq ($33,a0,d3.w*2) uses Op57f0 ----------
36084Op57f0:
36085  str r4,[r7,#0x50] ;@ Save prev PC + 2
36086  str r5,[r7,#0x5c] ;@ Save Cycles
36087
36088  mov r1,#0
36089  tst r10,#0x40000000 ;@ eq: Z
36090  mvnne r1,#0
36091
36092;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
36093;@ Get extension word into r3:
36094  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
36095  mov r2,r3,lsr #10
36096  tst r3,#0x0800 ;@ Is Rn Word or Long
36097  and r2,r2,#0x3c ;@ r2=Index of Rn
36098  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
36099  ldrne   r2,[r7,r2] ;@ r2=Rn.l
36100  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
36101  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
36102  and r2,r8,#0x000f
36103  orr r2,r2,#0x8 ;@ A0-7
36104  ldr r2,[r7,r2,lsl #2]
36105  add r0,r2,r3 ;@ r0=Disp+An+Rn
36106;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
36107  and r1,r1,#0xff
36108  str r4,[r7,#0x40] ;@ Save PC
36109  bic r0,r0,#0xff000000
36110  bl m68k_write8 ;@ Call write8(r0,r1) handler
36111
36112  ldr r5,[r7,#0x5c] ;@ Load Cycles
36113  ldrh r8,[r4],#2 ;@ Fetch next opcode
36114  subs r5,r5,#18 ;@ Subtract cycles
36115  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36116  b CycloneEnd
36117
36118;@ ---------- [57f8] seq $3333.w uses Op57f8 ----------
36119Op57f8:
36120  str r4,[r7,#0x50] ;@ Save prev PC + 2
36121  str r5,[r7,#0x5c] ;@ Save Cycles
36122
36123  mov r1,#0
36124  tst r10,#0x40000000 ;@ eq: Z
36125  mvnne r1,#0
36126
36127;@ EaCalc : Get '$3333.w' into r0:
36128  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
36129;@ EaWrite: Write r1 into '$3333.w' (address in r0):
36130  and r1,r1,#0xff
36131  str r4,[r7,#0x40] ;@ Save PC
36132  bic r0,r0,#0xff000000
36133  bl m68k_write8 ;@ Call write8(r0,r1) handler
36134
36135  ldr r5,[r7,#0x5c] ;@ Load Cycles
36136  ldrh r8,[r4],#2 ;@ Fetch next opcode
36137  subs r5,r5,#16 ;@ Subtract cycles
36138  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36139  b CycloneEnd
36140
36141;@ ---------- [57f9] seq $33333333.l uses Op57f9 ----------
36142Op57f9:
36143  str r4,[r7,#0x50] ;@ Save prev PC + 2
36144  str r5,[r7,#0x5c] ;@ Save Cycles
36145
36146  mov r1,#0
36147  tst r10,#0x40000000 ;@ eq: Z
36148  mvnne r1,#0
36149
36150;@ EaCalc : Get '$33333333.l' into r0:
36151  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
36152  ldrh r0,[r4],#2
36153  orr r0,r0,r2,lsl #16
36154;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
36155  and r1,r1,#0xff
36156  str r4,[r7,#0x40] ;@ Save PC
36157  bic r0,r0,#0xff000000
36158  bl m68k_write8 ;@ Call write8(r0,r1) handler
36159
36160  ldr r5,[r7,#0x5c] ;@ Load Cycles
36161  ldrh r8,[r4],#2 ;@ Fetch next opcode
36162  subs r5,r5,#20 ;@ Subtract cycles
36163  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36164  b CycloneEnd
36165
36166;@ ---------- [58c0] svc d0 uses Op58c0 ----------
36167Op58c0:
36168  mov r1,#0
36169  tst r10,#0x10000000 ;@ vc: !V
36170  mvneq r1,#0
36171  subeq r5,r5,#2 ;@ Extra cycles
36172
36173;@ EaCalc : Get register index into r0:
36174  and r0,r8,#0x000f
36175;@ EaWrite: r1 into register[r0]:
36176  strb r1,[r7,r0,lsl #2]
36177
36178  ldrh r8,[r4],#2 ;@ Fetch next opcode
36179  subs r5,r5,#4 ;@ Subtract cycles
36180  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36181  b CycloneEnd
36182
36183;@ ---------- [58c8] dbvc d0, 3335 uses Op58c8 ----------
36184Op58c8:
36185;@ Is the condition true?
36186  tst r10,#0x10000000 ;@ vc: !V
36187;@ If so, don't dbra
36188  beq DbraTrue
36189
36190;@ Decrement Dn.w
36191  and r1,r8,#0x0007
36192  mov r1,r1,lsl #2
36193  ldrsh r0,[r7,r1]
36194  strb r8,[r7,#0x45] ;@ not polling
36195  sub r0,r0,#1
36196  strh r0,[r7,r1]
36197
36198;@ Check if Dn.w is -1
36199  cmn r0,#1
36200  beq DbraMin1
36201
36202;@ Get Branch offset:
36203  ldrsh r0,[r4]
36204  add r0,r4,r0 ;@ r0 = New PC
36205  bl m68k_checkpc ;@ Call checkpc()
36206  mov r4,r0
36207  tst r4,#1 ;@ address error?
36208  bne ExceptionAddressError_r_prg_r4
36209  ldrh r8,[r4],#2 ;@ Fetch next opcode
36210  subs r5,r5,#10 ;@ Subtract cycles
36211  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36212  b CycloneEnd
36213
36214;@ ---------- [58d0] svc (a0) uses Op58d0 ----------
36215Op58d0:
36216  str r4,[r7,#0x50] ;@ Save prev PC + 2
36217  str r5,[r7,#0x5c] ;@ Save Cycles
36218
36219  mov r1,#0
36220  tst r10,#0x10000000 ;@ vc: !V
36221  mvneq r1,#0
36222
36223;@ EaCalc : Get '(a0)' into r0:
36224  and r2,r8,#0x000f
36225  orr r2,r2,#0x8 ;@ A0-7
36226  ldr r0,[r7,r2,lsl #2]
36227;@ EaWrite: Write r1 into '(a0)' (address in r0):
36228  and r1,r1,#0xff
36229  str r4,[r7,#0x40] ;@ Save PC
36230  bic r0,r0,#0xff000000
36231  bl m68k_write8 ;@ Call write8(r0,r1) handler
36232
36233  ldr r5,[r7,#0x5c] ;@ Load Cycles
36234  ldrh r8,[r4],#2 ;@ Fetch next opcode
36235  subs r5,r5,#12 ;@ Subtract cycles
36236  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36237  b CycloneEnd
36238
36239;@ ---------- [58d8] svc (a0)+ uses Op58d8 ----------
36240Op58d8:
36241  str r4,[r7,#0x50] ;@ Save prev PC + 2
36242  str r5,[r7,#0x5c] ;@ Save Cycles
36243
36244  mov r1,#0
36245  tst r10,#0x10000000 ;@ vc: !V
36246  mvneq r1,#0
36247
36248;@ EaCalc : Get '(a0)+' into r0:
36249  and r2,r8,#0x000f
36250  ldr r0,[r7,r2,lsl #2]
36251  add r3,r0,#1 ;@ Post-increment An
36252  str r3,[r7,r2,lsl #2]
36253;@ EaWrite: Write r1 into '(a0)+' (address in r0):
36254  and r1,r1,#0xff
36255  str r4,[r7,#0x40] ;@ Save PC
36256  bic r0,r0,#0xff000000
36257  bl m68k_write8 ;@ Call write8(r0,r1) handler
36258
36259  ldr r5,[r7,#0x5c] ;@ Load Cycles
36260  ldrh r8,[r4],#2 ;@ Fetch next opcode
36261  subs r5,r5,#12 ;@ Subtract cycles
36262  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36263  b CycloneEnd
36264
36265;@ ---------- [58df] svc (a7)+ uses Op58df ----------
36266Op58df:
36267  str r4,[r7,#0x50] ;@ Save prev PC + 2
36268  str r5,[r7,#0x5c] ;@ Save Cycles
36269
36270  mov r1,#0
36271  tst r10,#0x10000000 ;@ vc: !V
36272  mvneq r1,#0
36273
36274;@ EaCalc : Get '(a7)+' into r0:
36275  ldr r0,[r7,#0x3c] ;@ A7
36276  add r3,r0,#2 ;@ Post-increment An
36277  str r3,[r7,#0x3c] ;@ A7
36278;@ EaWrite: Write r1 into '(a7)+' (address in r0):
36279  and r1,r1,#0xff
36280  str r4,[r7,#0x40] ;@ Save PC
36281  bic r0,r0,#0xff000000
36282  bl m68k_write8 ;@ Call write8(r0,r1) handler
36283
36284  ldr r5,[r7,#0x5c] ;@ Load Cycles
36285  ldrh r8,[r4],#2 ;@ Fetch next opcode
36286  subs r5,r5,#12 ;@ Subtract cycles
36287  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36288  b CycloneEnd
36289
36290;@ ---------- [58e0] svc -(a0) uses Op58e0 ----------
36291Op58e0:
36292  str r4,[r7,#0x50] ;@ Save prev PC + 2
36293  str r5,[r7,#0x5c] ;@ Save Cycles
36294
36295  mov r1,#0
36296  tst r10,#0x10000000 ;@ vc: !V
36297  mvneq r1,#0
36298
36299;@ EaCalc : Get '-(a0)' into r0:
36300  and r2,r8,#0x000f
36301  orr r2,r2,#0x8 ;@ A0-7
36302  ldr r0,[r7,r2,lsl #2]
36303  sub r0,r0,#1 ;@ Pre-decrement An
36304  str r0,[r7,r2,lsl #2]
36305;@ EaWrite: Write r1 into '-(a0)' (address in r0):
36306  and r1,r1,#0xff
36307  str r4,[r7,#0x40] ;@ Save PC
36308  bic r0,r0,#0xff000000
36309  bl m68k_write8 ;@ Call write8(r0,r1) handler
36310
36311  ldr r5,[r7,#0x5c] ;@ Load Cycles
36312  ldrh r8,[r4],#2 ;@ Fetch next opcode
36313  subs r5,r5,#14 ;@ Subtract cycles
36314  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36315  b CycloneEnd
36316
36317;@ ---------- [58e7] svc -(a7) uses Op58e7 ----------
36318Op58e7:
36319  str r4,[r7,#0x50] ;@ Save prev PC + 2
36320  str r5,[r7,#0x5c] ;@ Save Cycles
36321
36322  mov r1,#0
36323  tst r10,#0x10000000 ;@ vc: !V
36324  mvneq r1,#0
36325
36326;@ EaCalc : Get '-(a7)' into r0:
36327  ldr r0,[r7,#0x3c] ;@ A7
36328  sub r0,r0,#2 ;@ Pre-decrement An
36329  str r0,[r7,#0x3c] ;@ A7
36330;@ EaWrite: Write r1 into '-(a7)' (address in r0):
36331  and r1,r1,#0xff
36332  str r4,[r7,#0x40] ;@ Save PC
36333  bic r0,r0,#0xff000000
36334  bl m68k_write8 ;@ Call write8(r0,r1) handler
36335
36336  ldr r5,[r7,#0x5c] ;@ Load Cycles
36337  ldrh r8,[r4],#2 ;@ Fetch next opcode
36338  subs r5,r5,#14 ;@ Subtract cycles
36339  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36340  b CycloneEnd
36341
36342;@ ---------- [58e8] svc ($3333,a0) uses Op58e8 ----------
36343Op58e8:
36344  str r4,[r7,#0x50] ;@ Save prev PC + 2
36345  str r5,[r7,#0x5c] ;@ Save Cycles
36346
36347  mov r1,#0
36348  tst r10,#0x10000000 ;@ vc: !V
36349  mvneq r1,#0
36350
36351;@ EaCalc : Get '($3333,a0)' into r0:
36352  ldrsh r0,[r4],#2 ;@ Fetch offset
36353  and r2,r8,#0x000f
36354  ldr r2,[r7,r2,lsl #2]
36355  add r0,r0,r2 ;@ Add on offset
36356;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
36357  and r1,r1,#0xff
36358  str r4,[r7,#0x40] ;@ Save PC
36359  bic r0,r0,#0xff000000
36360  bl m68k_write8 ;@ Call write8(r0,r1) handler
36361
36362  ldr r5,[r7,#0x5c] ;@ Load Cycles
36363  ldrh r8,[r4],#2 ;@ Fetch next opcode
36364  subs r5,r5,#16 ;@ Subtract cycles
36365  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36366  b CycloneEnd
36367
36368;@ ---------- [58f0] svc ($33,a0,d3.w*2) uses Op58f0 ----------
36369Op58f0:
36370  str r4,[r7,#0x50] ;@ Save prev PC + 2
36371  str r5,[r7,#0x5c] ;@ Save Cycles
36372
36373  mov r1,#0
36374  tst r10,#0x10000000 ;@ vc: !V
36375  mvneq r1,#0
36376
36377;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
36378;@ Get extension word into r3:
36379  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
36380  mov r2,r3,lsr #10
36381  tst r3,#0x0800 ;@ Is Rn Word or Long
36382  and r2,r2,#0x3c ;@ r2=Index of Rn
36383  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
36384  ldrne   r2,[r7,r2] ;@ r2=Rn.l
36385  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
36386  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
36387  and r2,r8,#0x000f
36388  orr r2,r2,#0x8 ;@ A0-7
36389  ldr r2,[r7,r2,lsl #2]
36390  add r0,r2,r3 ;@ r0=Disp+An+Rn
36391;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
36392  and r1,r1,#0xff
36393  str r4,[r7,#0x40] ;@ Save PC
36394  bic r0,r0,#0xff000000
36395  bl m68k_write8 ;@ Call write8(r0,r1) handler
36396
36397  ldr r5,[r7,#0x5c] ;@ Load Cycles
36398  ldrh r8,[r4],#2 ;@ Fetch next opcode
36399  subs r5,r5,#18 ;@ Subtract cycles
36400  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36401  b CycloneEnd
36402
36403;@ ---------- [58f8] svc $3333.w uses Op58f8 ----------
36404Op58f8:
36405  str r4,[r7,#0x50] ;@ Save prev PC + 2
36406  str r5,[r7,#0x5c] ;@ Save Cycles
36407
36408  mov r1,#0
36409  tst r10,#0x10000000 ;@ vc: !V
36410  mvneq r1,#0
36411
36412;@ EaCalc : Get '$3333.w' into r0:
36413  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
36414;@ EaWrite: Write r1 into '$3333.w' (address in r0):
36415  and r1,r1,#0xff
36416  str r4,[r7,#0x40] ;@ Save PC
36417  bic r0,r0,#0xff000000
36418  bl m68k_write8 ;@ Call write8(r0,r1) handler
36419
36420  ldr r5,[r7,#0x5c] ;@ Load Cycles
36421  ldrh r8,[r4],#2 ;@ Fetch next opcode
36422  subs r5,r5,#16 ;@ Subtract cycles
36423  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36424  b CycloneEnd
36425
36426;@ ---------- [58f9] svc $33333333.l uses Op58f9 ----------
36427Op58f9:
36428  str r4,[r7,#0x50] ;@ Save prev PC + 2
36429  str r5,[r7,#0x5c] ;@ Save Cycles
36430
36431  mov r1,#0
36432  tst r10,#0x10000000 ;@ vc: !V
36433  mvneq r1,#0
36434
36435;@ EaCalc : Get '$33333333.l' into r0:
36436  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
36437  ldrh r0,[r4],#2
36438  orr r0,r0,r2,lsl #16
36439;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
36440  and r1,r1,#0xff
36441  str r4,[r7,#0x40] ;@ Save PC
36442  bic r0,r0,#0xff000000
36443  bl m68k_write8 ;@ Call write8(r0,r1) handler
36444
36445  ldr r5,[r7,#0x5c] ;@ Load Cycles
36446  ldrh r8,[r4],#2 ;@ Fetch next opcode
36447  subs r5,r5,#20 ;@ Subtract cycles
36448  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36449  b CycloneEnd
36450
36451;@ ---------- [59c0] svs d0 uses Op59c0 ----------
36452Op59c0:
36453  mov r1,#0
36454  tst r10,#0x10000000 ;@ vs: V
36455  mvnne r1,#0
36456  subne r5,r5,#2 ;@ Extra cycles
36457
36458;@ EaCalc : Get register index into r0:
36459  and r0,r8,#0x000f
36460;@ EaWrite: r1 into register[r0]:
36461  strb r1,[r7,r0,lsl #2]
36462
36463  ldrh r8,[r4],#2 ;@ Fetch next opcode
36464  subs r5,r5,#4 ;@ Subtract cycles
36465  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36466  b CycloneEnd
36467
36468;@ ---------- [59c8] dbvs d0, 3335 uses Op59c8 ----------
36469Op59c8:
36470;@ Is the condition true?
36471  tst r10,#0x10000000 ;@ vs: V
36472;@ If so, don't dbra
36473  bne DbraTrue
36474
36475;@ Decrement Dn.w
36476  and r1,r8,#0x0007
36477  mov r1,r1,lsl #2
36478  ldrsh r0,[r7,r1]
36479  strb r8,[r7,#0x45] ;@ not polling
36480  sub r0,r0,#1
36481  strh r0,[r7,r1]
36482
36483;@ Check if Dn.w is -1
36484  cmn r0,#1
36485  beq DbraMin1
36486
36487;@ Get Branch offset:
36488  ldrsh r0,[r4]
36489  add r0,r4,r0 ;@ r0 = New PC
36490  bl m68k_checkpc ;@ Call checkpc()
36491  mov r4,r0
36492  tst r4,#1 ;@ address error?
36493  bne ExceptionAddressError_r_prg_r4
36494  ldrh r8,[r4],#2 ;@ Fetch next opcode
36495  subs r5,r5,#10 ;@ Subtract cycles
36496  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36497  b CycloneEnd
36498
36499;@ ---------- [59d0] svs (a0) uses Op59d0 ----------
36500Op59d0:
36501  str r4,[r7,#0x50] ;@ Save prev PC + 2
36502  str r5,[r7,#0x5c] ;@ Save Cycles
36503
36504  mov r1,#0
36505  tst r10,#0x10000000 ;@ vs: V
36506  mvnne r1,#0
36507
36508;@ EaCalc : Get '(a0)' into r0:
36509  and r2,r8,#0x000f
36510  orr r2,r2,#0x8 ;@ A0-7
36511  ldr r0,[r7,r2,lsl #2]
36512;@ EaWrite: Write r1 into '(a0)' (address in r0):
36513  and r1,r1,#0xff
36514  str r4,[r7,#0x40] ;@ Save PC
36515  bic r0,r0,#0xff000000
36516  bl m68k_write8 ;@ Call write8(r0,r1) handler
36517
36518  ldr r5,[r7,#0x5c] ;@ Load Cycles
36519  ldrh r8,[r4],#2 ;@ Fetch next opcode
36520  subs r5,r5,#12 ;@ Subtract cycles
36521  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36522  b CycloneEnd
36523
36524;@ ---------- [59d8] svs (a0)+ uses Op59d8 ----------
36525Op59d8:
36526  str r4,[r7,#0x50] ;@ Save prev PC + 2
36527  str r5,[r7,#0x5c] ;@ Save Cycles
36528
36529  mov r1,#0
36530  tst r10,#0x10000000 ;@ vs: V
36531  mvnne r1,#0
36532
36533;@ EaCalc : Get '(a0)+' into r0:
36534  and r2,r8,#0x000f
36535  ldr r0,[r7,r2,lsl #2]
36536  add r3,r0,#1 ;@ Post-increment An
36537  str r3,[r7,r2,lsl #2]
36538;@ EaWrite: Write r1 into '(a0)+' (address in r0):
36539  and r1,r1,#0xff
36540  str r4,[r7,#0x40] ;@ Save PC
36541  bic r0,r0,#0xff000000
36542  bl m68k_write8 ;@ Call write8(r0,r1) handler
36543
36544  ldr r5,[r7,#0x5c] ;@ Load Cycles
36545  ldrh r8,[r4],#2 ;@ Fetch next opcode
36546  subs r5,r5,#12 ;@ Subtract cycles
36547  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36548  b CycloneEnd
36549
36550;@ ---------- [59df] svs (a7)+ uses Op59df ----------
36551Op59df:
36552  str r4,[r7,#0x50] ;@ Save prev PC + 2
36553  str r5,[r7,#0x5c] ;@ Save Cycles
36554
36555  mov r1,#0
36556  tst r10,#0x10000000 ;@ vs: V
36557  mvnne r1,#0
36558
36559;@ EaCalc : Get '(a7)+' into r0:
36560  ldr r0,[r7,#0x3c] ;@ A7
36561  add r3,r0,#2 ;@ Post-increment An
36562  str r3,[r7,#0x3c] ;@ A7
36563;@ EaWrite: Write r1 into '(a7)+' (address in r0):
36564  and r1,r1,#0xff
36565  str r4,[r7,#0x40] ;@ Save PC
36566  bic r0,r0,#0xff000000
36567  bl m68k_write8 ;@ Call write8(r0,r1) handler
36568
36569  ldr r5,[r7,#0x5c] ;@ Load Cycles
36570  ldrh r8,[r4],#2 ;@ Fetch next opcode
36571  subs r5,r5,#12 ;@ Subtract cycles
36572  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36573  b CycloneEnd
36574
36575;@ ---------- [59e0] svs -(a0) uses Op59e0 ----------
36576Op59e0:
36577  str r4,[r7,#0x50] ;@ Save prev PC + 2
36578  str r5,[r7,#0x5c] ;@ Save Cycles
36579
36580  mov r1,#0
36581  tst r10,#0x10000000 ;@ vs: V
36582  mvnne r1,#0
36583
36584;@ EaCalc : Get '-(a0)' into r0:
36585  and r2,r8,#0x000f
36586  orr r2,r2,#0x8 ;@ A0-7
36587  ldr r0,[r7,r2,lsl #2]
36588  sub r0,r0,#1 ;@ Pre-decrement An
36589  str r0,[r7,r2,lsl #2]
36590;@ EaWrite: Write r1 into '-(a0)' (address in r0):
36591  and r1,r1,#0xff
36592  str r4,[r7,#0x40] ;@ Save PC
36593  bic r0,r0,#0xff000000
36594  bl m68k_write8 ;@ Call write8(r0,r1) handler
36595
36596  ldr r5,[r7,#0x5c] ;@ Load Cycles
36597  ldrh r8,[r4],#2 ;@ Fetch next opcode
36598  subs r5,r5,#14 ;@ Subtract cycles
36599  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36600  b CycloneEnd
36601
36602;@ ---------- [59e7] svs -(a7) uses Op59e7 ----------
36603Op59e7:
36604  str r4,[r7,#0x50] ;@ Save prev PC + 2
36605  str r5,[r7,#0x5c] ;@ Save Cycles
36606
36607  mov r1,#0
36608  tst r10,#0x10000000 ;@ vs: V
36609  mvnne r1,#0
36610
36611;@ EaCalc : Get '-(a7)' into r0:
36612  ldr r0,[r7,#0x3c] ;@ A7
36613  sub r0,r0,#2 ;@ Pre-decrement An
36614  str r0,[r7,#0x3c] ;@ A7
36615;@ EaWrite: Write r1 into '-(a7)' (address in r0):
36616  and r1,r1,#0xff
36617  str r4,[r7,#0x40] ;@ Save PC
36618  bic r0,r0,#0xff000000
36619  bl m68k_write8 ;@ Call write8(r0,r1) handler
36620
36621  ldr r5,[r7,#0x5c] ;@ Load Cycles
36622  ldrh r8,[r4],#2 ;@ Fetch next opcode
36623  subs r5,r5,#14 ;@ Subtract cycles
36624  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36625  b CycloneEnd
36626
36627;@ ---------- [59e8] svs ($3333,a0) uses Op59e8 ----------
36628Op59e8:
36629  str r4,[r7,#0x50] ;@ Save prev PC + 2
36630  str r5,[r7,#0x5c] ;@ Save Cycles
36631
36632  mov r1,#0
36633  tst r10,#0x10000000 ;@ vs: V
36634  mvnne r1,#0
36635
36636;@ EaCalc : Get '($3333,a0)' into r0:
36637  ldrsh r0,[r4],#2 ;@ Fetch offset
36638  and r2,r8,#0x000f
36639  ldr r2,[r7,r2,lsl #2]
36640  add r0,r0,r2 ;@ Add on offset
36641;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
36642  and r1,r1,#0xff
36643  str r4,[r7,#0x40] ;@ Save PC
36644  bic r0,r0,#0xff000000
36645  bl m68k_write8 ;@ Call write8(r0,r1) handler
36646
36647  ldr r5,[r7,#0x5c] ;@ Load Cycles
36648  ldrh r8,[r4],#2 ;@ Fetch next opcode
36649  subs r5,r5,#16 ;@ Subtract cycles
36650  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36651  b CycloneEnd
36652
36653;@ ---------- [59f0] svs ($33,a0,d3.w*2) uses Op59f0 ----------
36654Op59f0:
36655  str r4,[r7,#0x50] ;@ Save prev PC + 2
36656  str r5,[r7,#0x5c] ;@ Save Cycles
36657
36658  mov r1,#0
36659  tst r10,#0x10000000 ;@ vs: V
36660  mvnne r1,#0
36661
36662;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
36663;@ Get extension word into r3:
36664  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
36665  mov r2,r3,lsr #10
36666  tst r3,#0x0800 ;@ Is Rn Word or Long
36667  and r2,r2,#0x3c ;@ r2=Index of Rn
36668  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
36669  ldrne   r2,[r7,r2] ;@ r2=Rn.l
36670  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
36671  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
36672  and r2,r8,#0x000f
36673  orr r2,r2,#0x8 ;@ A0-7
36674  ldr r2,[r7,r2,lsl #2]
36675  add r0,r2,r3 ;@ r0=Disp+An+Rn
36676;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
36677  and r1,r1,#0xff
36678  str r4,[r7,#0x40] ;@ Save PC
36679  bic r0,r0,#0xff000000
36680  bl m68k_write8 ;@ Call write8(r0,r1) handler
36681
36682  ldr r5,[r7,#0x5c] ;@ Load Cycles
36683  ldrh r8,[r4],#2 ;@ Fetch next opcode
36684  subs r5,r5,#18 ;@ Subtract cycles
36685  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36686  b CycloneEnd
36687
36688;@ ---------- [59f8] svs $3333.w uses Op59f8 ----------
36689Op59f8:
36690  str r4,[r7,#0x50] ;@ Save prev PC + 2
36691  str r5,[r7,#0x5c] ;@ Save Cycles
36692
36693  mov r1,#0
36694  tst r10,#0x10000000 ;@ vs: V
36695  mvnne r1,#0
36696
36697;@ EaCalc : Get '$3333.w' into r0:
36698  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
36699;@ EaWrite: Write r1 into '$3333.w' (address in r0):
36700  and r1,r1,#0xff
36701  str r4,[r7,#0x40] ;@ Save PC
36702  bic r0,r0,#0xff000000
36703  bl m68k_write8 ;@ Call write8(r0,r1) handler
36704
36705  ldr r5,[r7,#0x5c] ;@ Load Cycles
36706  ldrh r8,[r4],#2 ;@ Fetch next opcode
36707  subs r5,r5,#16 ;@ Subtract cycles
36708  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36709  b CycloneEnd
36710
36711;@ ---------- [59f9] svs $33333333.l uses Op59f9 ----------
36712Op59f9:
36713  str r4,[r7,#0x50] ;@ Save prev PC + 2
36714  str r5,[r7,#0x5c] ;@ Save Cycles
36715
36716  mov r1,#0
36717  tst r10,#0x10000000 ;@ vs: V
36718  mvnne r1,#0
36719
36720;@ EaCalc : Get '$33333333.l' into r0:
36721  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
36722  ldrh r0,[r4],#2
36723  orr r0,r0,r2,lsl #16
36724;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
36725  and r1,r1,#0xff
36726  str r4,[r7,#0x40] ;@ Save PC
36727  bic r0,r0,#0xff000000
36728  bl m68k_write8 ;@ Call write8(r0,r1) handler
36729
36730  ldr r5,[r7,#0x5c] ;@ Load Cycles
36731  ldrh r8,[r4],#2 ;@ Fetch next opcode
36732  subs r5,r5,#20 ;@ Subtract cycles
36733  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36734  b CycloneEnd
36735
36736;@ ---------- [5ac0] spl d0 uses Op5ac0 ----------
36737Op5ac0:
36738  mov r1,#0
36739  tst r10,r10 ;@ pl: !N
36740  mvnpl r1,#0
36741  subpl r5,r5,#2 ;@ Extra cycles
36742
36743;@ EaCalc : Get register index into r0:
36744  and r0,r8,#0x000f
36745;@ EaWrite: r1 into register[r0]:
36746  strb r1,[r7,r0,lsl #2]
36747
36748  ldrh r8,[r4],#2 ;@ Fetch next opcode
36749  subs r5,r5,#4 ;@ Subtract cycles
36750  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36751  b CycloneEnd
36752
36753;@ ---------- [5ac8] dbpl d0, 3335 uses Op5ac8 ----------
36754Op5ac8:
36755;@ Is the condition true?
36756  tst r10,r10 ;@ pl: !N
36757;@ If so, don't dbra
36758  bpl DbraTrue
36759
36760;@ Decrement Dn.w
36761  and r1,r8,#0x0007
36762  mov r1,r1,lsl #2
36763  ldrsh r0,[r7,r1]
36764  strb r8,[r7,#0x45] ;@ not polling
36765  sub r0,r0,#1
36766  strh r0,[r7,r1]
36767
36768;@ Check if Dn.w is -1
36769  cmn r0,#1
36770  beq DbraMin1
36771
36772;@ Get Branch offset:
36773  ldrsh r0,[r4]
36774  add r0,r4,r0 ;@ r0 = New PC
36775  bl m68k_checkpc ;@ Call checkpc()
36776  mov r4,r0
36777  tst r4,#1 ;@ address error?
36778  bne ExceptionAddressError_r_prg_r4
36779  ldrh r8,[r4],#2 ;@ Fetch next opcode
36780  subs r5,r5,#10 ;@ Subtract cycles
36781  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36782  b CycloneEnd
36783
36784;@ ---------- [5ad0] spl (a0) uses Op5ad0 ----------
36785Op5ad0:
36786  str r4,[r7,#0x50] ;@ Save prev PC + 2
36787  str r5,[r7,#0x5c] ;@ Save Cycles
36788
36789  mov r1,#0
36790  tst r10,r10 ;@ pl: !N
36791  mvnpl r1,#0
36792
36793;@ EaCalc : Get '(a0)' into r0:
36794  and r2,r8,#0x000f
36795  orr r2,r2,#0x8 ;@ A0-7
36796  ldr r0,[r7,r2,lsl #2]
36797;@ EaWrite: Write r1 into '(a0)' (address in r0):
36798  and r1,r1,#0xff
36799  str r4,[r7,#0x40] ;@ Save PC
36800  bic r0,r0,#0xff000000
36801  bl m68k_write8 ;@ Call write8(r0,r1) handler
36802
36803  ldr r5,[r7,#0x5c] ;@ Load Cycles
36804  ldrh r8,[r4],#2 ;@ Fetch next opcode
36805  subs r5,r5,#12 ;@ Subtract cycles
36806  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36807  b CycloneEnd
36808
36809;@ ---------- [5ad8] spl (a0)+ uses Op5ad8 ----------
36810Op5ad8:
36811  str r4,[r7,#0x50] ;@ Save prev PC + 2
36812  str r5,[r7,#0x5c] ;@ Save Cycles
36813
36814  mov r1,#0
36815  tst r10,r10 ;@ pl: !N
36816  mvnpl r1,#0
36817
36818;@ EaCalc : Get '(a0)+' into r0:
36819  and r2,r8,#0x000f
36820  ldr r0,[r7,r2,lsl #2]
36821  add r3,r0,#1 ;@ Post-increment An
36822  str r3,[r7,r2,lsl #2]
36823;@ EaWrite: Write r1 into '(a0)+' (address in r0):
36824  and r1,r1,#0xff
36825  str r4,[r7,#0x40] ;@ Save PC
36826  bic r0,r0,#0xff000000
36827  bl m68k_write8 ;@ Call write8(r0,r1) handler
36828
36829  ldr r5,[r7,#0x5c] ;@ Load Cycles
36830  ldrh r8,[r4],#2 ;@ Fetch next opcode
36831  subs r5,r5,#12 ;@ Subtract cycles
36832  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36833  b CycloneEnd
36834
36835;@ ---------- [5adf] spl (a7)+ uses Op5adf ----------
36836Op5adf:
36837  str r4,[r7,#0x50] ;@ Save prev PC + 2
36838  str r5,[r7,#0x5c] ;@ Save Cycles
36839
36840  mov r1,#0
36841  tst r10,r10 ;@ pl: !N
36842  mvnpl r1,#0
36843
36844;@ EaCalc : Get '(a7)+' into r0:
36845  ldr r0,[r7,#0x3c] ;@ A7
36846  add r3,r0,#2 ;@ Post-increment An
36847  str r3,[r7,#0x3c] ;@ A7
36848;@ EaWrite: Write r1 into '(a7)+' (address in r0):
36849  and r1,r1,#0xff
36850  str r4,[r7,#0x40] ;@ Save PC
36851  bic r0,r0,#0xff000000
36852  bl m68k_write8 ;@ Call write8(r0,r1) handler
36853
36854  ldr r5,[r7,#0x5c] ;@ Load Cycles
36855  ldrh r8,[r4],#2 ;@ Fetch next opcode
36856  subs r5,r5,#12 ;@ Subtract cycles
36857  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36858  b CycloneEnd
36859
36860;@ ---------- [5ae0] spl -(a0) uses Op5ae0 ----------
36861Op5ae0:
36862  str r4,[r7,#0x50] ;@ Save prev PC + 2
36863  str r5,[r7,#0x5c] ;@ Save Cycles
36864
36865  mov r1,#0
36866  tst r10,r10 ;@ pl: !N
36867  mvnpl r1,#0
36868
36869;@ EaCalc : Get '-(a0)' into r0:
36870  and r2,r8,#0x000f
36871  orr r2,r2,#0x8 ;@ A0-7
36872  ldr r0,[r7,r2,lsl #2]
36873  sub r0,r0,#1 ;@ Pre-decrement An
36874  str r0,[r7,r2,lsl #2]
36875;@ EaWrite: Write r1 into '-(a0)' (address in r0):
36876  and r1,r1,#0xff
36877  str r4,[r7,#0x40] ;@ Save PC
36878  bic r0,r0,#0xff000000
36879  bl m68k_write8 ;@ Call write8(r0,r1) handler
36880
36881  ldr r5,[r7,#0x5c] ;@ Load Cycles
36882  ldrh r8,[r4],#2 ;@ Fetch next opcode
36883  subs r5,r5,#14 ;@ Subtract cycles
36884  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36885  b CycloneEnd
36886
36887;@ ---------- [5ae7] spl -(a7) uses Op5ae7 ----------
36888Op5ae7:
36889  str r4,[r7,#0x50] ;@ Save prev PC + 2
36890  str r5,[r7,#0x5c] ;@ Save Cycles
36891
36892  mov r1,#0
36893  tst r10,r10 ;@ pl: !N
36894  mvnpl r1,#0
36895
36896;@ EaCalc : Get '-(a7)' into r0:
36897  ldr r0,[r7,#0x3c] ;@ A7
36898  sub r0,r0,#2 ;@ Pre-decrement An
36899  str r0,[r7,#0x3c] ;@ A7
36900;@ EaWrite: Write r1 into '-(a7)' (address in r0):
36901  and r1,r1,#0xff
36902  str r4,[r7,#0x40] ;@ Save PC
36903  bic r0,r0,#0xff000000
36904  bl m68k_write8 ;@ Call write8(r0,r1) handler
36905
36906  ldr r5,[r7,#0x5c] ;@ Load Cycles
36907  ldrh r8,[r4],#2 ;@ Fetch next opcode
36908  subs r5,r5,#14 ;@ Subtract cycles
36909  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36910  b CycloneEnd
36911
36912;@ ---------- [5ae8] spl ($3333,a0) uses Op5ae8 ----------
36913Op5ae8:
36914  str r4,[r7,#0x50] ;@ Save prev PC + 2
36915  str r5,[r7,#0x5c] ;@ Save Cycles
36916
36917  mov r1,#0
36918  tst r10,r10 ;@ pl: !N
36919  mvnpl r1,#0
36920
36921;@ EaCalc : Get '($3333,a0)' into r0:
36922  ldrsh r0,[r4],#2 ;@ Fetch offset
36923  and r2,r8,#0x000f
36924  ldr r2,[r7,r2,lsl #2]
36925  add r0,r0,r2 ;@ Add on offset
36926;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
36927  and r1,r1,#0xff
36928  str r4,[r7,#0x40] ;@ Save PC
36929  bic r0,r0,#0xff000000
36930  bl m68k_write8 ;@ Call write8(r0,r1) handler
36931
36932  ldr r5,[r7,#0x5c] ;@ Load Cycles
36933  ldrh r8,[r4],#2 ;@ Fetch next opcode
36934  subs r5,r5,#16 ;@ Subtract cycles
36935  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36936  b CycloneEnd
36937
36938;@ ---------- [5af0] spl ($33,a0,d3.w*2) uses Op5af0 ----------
36939Op5af0:
36940  str r4,[r7,#0x50] ;@ Save prev PC + 2
36941  str r5,[r7,#0x5c] ;@ Save Cycles
36942
36943  mov r1,#0
36944  tst r10,r10 ;@ pl: !N
36945  mvnpl r1,#0
36946
36947;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
36948;@ Get extension word into r3:
36949  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
36950  mov r2,r3,lsr #10
36951  tst r3,#0x0800 ;@ Is Rn Word or Long
36952  and r2,r2,#0x3c ;@ r2=Index of Rn
36953  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
36954  ldrne   r2,[r7,r2] ;@ r2=Rn.l
36955  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
36956  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
36957  and r2,r8,#0x000f
36958  orr r2,r2,#0x8 ;@ A0-7
36959  ldr r2,[r7,r2,lsl #2]
36960  add r0,r2,r3 ;@ r0=Disp+An+Rn
36961;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
36962  and r1,r1,#0xff
36963  str r4,[r7,#0x40] ;@ Save PC
36964  bic r0,r0,#0xff000000
36965  bl m68k_write8 ;@ Call write8(r0,r1) handler
36966
36967  ldr r5,[r7,#0x5c] ;@ Load Cycles
36968  ldrh r8,[r4],#2 ;@ Fetch next opcode
36969  subs r5,r5,#18 ;@ Subtract cycles
36970  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36971  b CycloneEnd
36972
36973;@ ---------- [5af8] spl $3333.w uses Op5af8 ----------
36974Op5af8:
36975  str r4,[r7,#0x50] ;@ Save prev PC + 2
36976  str r5,[r7,#0x5c] ;@ Save Cycles
36977
36978  mov r1,#0
36979  tst r10,r10 ;@ pl: !N
36980  mvnpl r1,#0
36981
36982;@ EaCalc : Get '$3333.w' into r0:
36983  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
36984;@ EaWrite: Write r1 into '$3333.w' (address in r0):
36985  and r1,r1,#0xff
36986  str r4,[r7,#0x40] ;@ Save PC
36987  bic r0,r0,#0xff000000
36988  bl m68k_write8 ;@ Call write8(r0,r1) handler
36989
36990  ldr r5,[r7,#0x5c] ;@ Load Cycles
36991  ldrh r8,[r4],#2 ;@ Fetch next opcode
36992  subs r5,r5,#16 ;@ Subtract cycles
36993  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36994  b CycloneEnd
36995
36996;@ ---------- [5af9] spl $33333333.l uses Op5af9 ----------
36997Op5af9:
36998  str r4,[r7,#0x50] ;@ Save prev PC + 2
36999  str r5,[r7,#0x5c] ;@ Save Cycles
37000
37001  mov r1,#0
37002  tst r10,r10 ;@ pl: !N
37003  mvnpl r1,#0
37004
37005;@ EaCalc : Get '$33333333.l' into r0:
37006  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
37007  ldrh r0,[r4],#2
37008  orr r0,r0,r2,lsl #16
37009;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
37010  and r1,r1,#0xff
37011  str r4,[r7,#0x40] ;@ Save PC
37012  bic r0,r0,#0xff000000
37013  bl m68k_write8 ;@ Call write8(r0,r1) handler
37014
37015  ldr r5,[r7,#0x5c] ;@ Load Cycles
37016  ldrh r8,[r4],#2 ;@ Fetch next opcode
37017  subs r5,r5,#20 ;@ Subtract cycles
37018  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37019  b CycloneEnd
37020
37021;@ ---------- [5bc0] smi d0 uses Op5bc0 ----------
37022Op5bc0:
37023  mov r1,#0
37024  tst r10,r10 ;@ mi: N
37025  mvnmi r1,#0
37026  submi r5,r5,#2 ;@ Extra cycles
37027
37028;@ EaCalc : Get register index into r0:
37029  and r0,r8,#0x000f
37030;@ EaWrite: r1 into register[r0]:
37031  strb r1,[r7,r0,lsl #2]
37032
37033  ldrh r8,[r4],#2 ;@ Fetch next opcode
37034  subs r5,r5,#4 ;@ Subtract cycles
37035  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37036  b CycloneEnd
37037
37038;@ ---------- [5bc8] dbmi d0, 3335 uses Op5bc8 ----------
37039Op5bc8:
37040;@ Is the condition true?
37041  tst r10,r10 ;@ mi: N
37042;@ If so, don't dbra
37043  bmi DbraTrue
37044
37045;@ Decrement Dn.w
37046  and r1,r8,#0x0007
37047  mov r1,r1,lsl #2
37048  ldrsh r0,[r7,r1]
37049  strb r8,[r7,#0x45] ;@ not polling
37050  sub r0,r0,#1
37051  strh r0,[r7,r1]
37052
37053;@ Check if Dn.w is -1
37054  cmn r0,#1
37055  beq DbraMin1
37056
37057;@ Get Branch offset:
37058  ldrsh r0,[r4]
37059  add r0,r4,r0 ;@ r0 = New PC
37060  bl m68k_checkpc ;@ Call checkpc()
37061  mov r4,r0
37062  tst r4,#1 ;@ address error?
37063  bne ExceptionAddressError_r_prg_r4
37064  ldrh r8,[r4],#2 ;@ Fetch next opcode
37065  subs r5,r5,#10 ;@ Subtract cycles
37066  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37067  b CycloneEnd
37068
37069;@ ---------- [5bd0] smi (a0) uses Op5bd0 ----------
37070Op5bd0:
37071  str r4,[r7,#0x50] ;@ Save prev PC + 2
37072  str r5,[r7,#0x5c] ;@ Save Cycles
37073
37074  mov r1,#0
37075  tst r10,r10 ;@ mi: N
37076  mvnmi r1,#0
37077
37078;@ EaCalc : Get '(a0)' into r0:
37079  and r2,r8,#0x000f
37080  orr r2,r2,#0x8 ;@ A0-7
37081  ldr r0,[r7,r2,lsl #2]
37082;@ EaWrite: Write r1 into '(a0)' (address in r0):
37083  and r1,r1,#0xff
37084  str r4,[r7,#0x40] ;@ Save PC
37085  bic r0,r0,#0xff000000
37086  bl m68k_write8 ;@ Call write8(r0,r1) handler
37087
37088  ldr r5,[r7,#0x5c] ;@ Load Cycles
37089  ldrh r8,[r4],#2 ;@ Fetch next opcode
37090  subs r5,r5,#12 ;@ Subtract cycles
37091  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37092  b CycloneEnd
37093
37094;@ ---------- [5bd8] smi (a0)+ uses Op5bd8 ----------
37095Op5bd8:
37096  str r4,[r7,#0x50] ;@ Save prev PC + 2
37097  str r5,[r7,#0x5c] ;@ Save Cycles
37098
37099  mov r1,#0
37100  tst r10,r10 ;@ mi: N
37101  mvnmi r1,#0
37102
37103;@ EaCalc : Get '(a0)+' into r0:
37104  and r2,r8,#0x000f
37105  ldr r0,[r7,r2,lsl #2]
37106  add r3,r0,#1 ;@ Post-increment An
37107  str r3,[r7,r2,lsl #2]
37108;@ EaWrite: Write r1 into '(a0)+' (address in r0):
37109  and r1,r1,#0xff
37110  str r4,[r7,#0x40] ;@ Save PC
37111  bic r0,r0,#0xff000000
37112  bl m68k_write8 ;@ Call write8(r0,r1) handler
37113
37114  ldr r5,[r7,#0x5c] ;@ Load Cycles
37115  ldrh r8,[r4],#2 ;@ Fetch next opcode
37116  subs r5,r5,#12 ;@ Subtract cycles
37117  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37118  b CycloneEnd
37119
37120;@ ---------- [5bdf] smi (a7)+ uses Op5bdf ----------
37121Op5bdf:
37122  str r4,[r7,#0x50] ;@ Save prev PC + 2
37123  str r5,[r7,#0x5c] ;@ Save Cycles
37124
37125  mov r1,#0
37126  tst r10,r10 ;@ mi: N
37127  mvnmi r1,#0
37128
37129;@ EaCalc : Get '(a7)+' into r0:
37130  ldr r0,[r7,#0x3c] ;@ A7
37131  add r3,r0,#2 ;@ Post-increment An
37132  str r3,[r7,#0x3c] ;@ A7
37133;@ EaWrite: Write r1 into '(a7)+' (address in r0):
37134  and r1,r1,#0xff
37135  str r4,[r7,#0x40] ;@ Save PC
37136  bic r0,r0,#0xff000000
37137  bl m68k_write8 ;@ Call write8(r0,r1) handler
37138
37139  ldr r5,[r7,#0x5c] ;@ Load Cycles
37140  ldrh r8,[r4],#2 ;@ Fetch next opcode
37141  subs r5,r5,#12 ;@ Subtract cycles
37142  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37143  b CycloneEnd
37144
37145;@ ---------- [5be0] smi -(a0) uses Op5be0 ----------
37146Op5be0:
37147  str r4,[r7,#0x50] ;@ Save prev PC + 2
37148  str r5,[r7,#0x5c] ;@ Save Cycles
37149
37150  mov r1,#0
37151  tst r10,r10 ;@ mi: N
37152  mvnmi r1,#0
37153
37154;@ EaCalc : Get '-(a0)' into r0:
37155  and r2,r8,#0x000f
37156  orr r2,r2,#0x8 ;@ A0-7
37157  ldr r0,[r7,r2,lsl #2]
37158  sub r0,r0,#1 ;@ Pre-decrement An
37159  str r0,[r7,r2,lsl #2]
37160;@ EaWrite: Write r1 into '-(a0)' (address in r0):
37161  and r1,r1,#0xff
37162  str r4,[r7,#0x40] ;@ Save PC
37163  bic r0,r0,#0xff000000
37164  bl m68k_write8 ;@ Call write8(r0,r1) handler
37165
37166  ldr r5,[r7,#0x5c] ;@ Load Cycles
37167  ldrh r8,[r4],#2 ;@ Fetch next opcode
37168  subs r5,r5,#14 ;@ Subtract cycles
37169  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37170  b CycloneEnd
37171
37172;@ ---------- [5be7] smi -(a7) uses Op5be7 ----------
37173Op5be7:
37174  str r4,[r7,#0x50] ;@ Save prev PC + 2
37175  str r5,[r7,#0x5c] ;@ Save Cycles
37176
37177  mov r1,#0
37178  tst r10,r10 ;@ mi: N
37179  mvnmi r1,#0
37180
37181;@ EaCalc : Get '-(a7)' into r0:
37182  ldr r0,[r7,#0x3c] ;@ A7
37183  sub r0,r0,#2 ;@ Pre-decrement An
37184  str r0,[r7,#0x3c] ;@ A7
37185;@ EaWrite: Write r1 into '-(a7)' (address in r0):
37186  and r1,r1,#0xff
37187  str r4,[r7,#0x40] ;@ Save PC
37188  bic r0,r0,#0xff000000
37189  bl m68k_write8 ;@ Call write8(r0,r1) handler
37190
37191  ldr r5,[r7,#0x5c] ;@ Load Cycles
37192  ldrh r8,[r4],#2 ;@ Fetch next opcode
37193  subs r5,r5,#14 ;@ Subtract cycles
37194  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37195  b CycloneEnd
37196
37197;@ ---------- [5be8] smi ($3333,a0) uses Op5be8 ----------
37198Op5be8:
37199  str r4,[r7,#0x50] ;@ Save prev PC + 2
37200  str r5,[r7,#0x5c] ;@ Save Cycles
37201
37202  mov r1,#0
37203  tst r10,r10 ;@ mi: N
37204  mvnmi r1,#0
37205
37206;@ EaCalc : Get '($3333,a0)' into r0:
37207  ldrsh r0,[r4],#2 ;@ Fetch offset
37208  and r2,r8,#0x000f
37209  ldr r2,[r7,r2,lsl #2]
37210  add r0,r0,r2 ;@ Add on offset
37211;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
37212  and r1,r1,#0xff
37213  str r4,[r7,#0x40] ;@ Save PC
37214  bic r0,r0,#0xff000000
37215  bl m68k_write8 ;@ Call write8(r0,r1) handler
37216
37217  ldr r5,[r7,#0x5c] ;@ Load Cycles
37218  ldrh r8,[r4],#2 ;@ Fetch next opcode
37219  subs r5,r5,#16 ;@ Subtract cycles
37220  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37221  b CycloneEnd
37222
37223;@ ---------- [5bf0] smi ($33,a0,d3.w*2) uses Op5bf0 ----------
37224Op5bf0:
37225  str r4,[r7,#0x50] ;@ Save prev PC + 2
37226  str r5,[r7,#0x5c] ;@ Save Cycles
37227
37228  mov r1,#0
37229  tst r10,r10 ;@ mi: N
37230  mvnmi r1,#0
37231
37232;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
37233;@ Get extension word into r3:
37234  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
37235  mov r2,r3,lsr #10
37236  tst r3,#0x0800 ;@ Is Rn Word or Long
37237  and r2,r2,#0x3c ;@ r2=Index of Rn
37238  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
37239  ldrne   r2,[r7,r2] ;@ r2=Rn.l
37240  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
37241  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
37242  and r2,r8,#0x000f
37243  orr r2,r2,#0x8 ;@ A0-7
37244  ldr r2,[r7,r2,lsl #2]
37245  add r0,r2,r3 ;@ r0=Disp+An+Rn
37246;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
37247  and r1,r1,#0xff
37248  str r4,[r7,#0x40] ;@ Save PC
37249  bic r0,r0,#0xff000000
37250  bl m68k_write8 ;@ Call write8(r0,r1) handler
37251
37252  ldr r5,[r7,#0x5c] ;@ Load Cycles
37253  ldrh r8,[r4],#2 ;@ Fetch next opcode
37254  subs r5,r5,#18 ;@ Subtract cycles
37255  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37256  b CycloneEnd
37257
37258;@ ---------- [5bf8] smi $3333.w uses Op5bf8 ----------
37259Op5bf8:
37260  str r4,[r7,#0x50] ;@ Save prev PC + 2
37261  str r5,[r7,#0x5c] ;@ Save Cycles
37262
37263  mov r1,#0
37264  tst r10,r10 ;@ mi: N
37265  mvnmi r1,#0
37266
37267;@ EaCalc : Get '$3333.w' into r0:
37268  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
37269;@ EaWrite: Write r1 into '$3333.w' (address in r0):
37270  and r1,r1,#0xff
37271  str r4,[r7,#0x40] ;@ Save PC
37272  bic r0,r0,#0xff000000
37273  bl m68k_write8 ;@ Call write8(r0,r1) handler
37274
37275  ldr r5,[r7,#0x5c] ;@ Load Cycles
37276  ldrh r8,[r4],#2 ;@ Fetch next opcode
37277  subs r5,r5,#16 ;@ Subtract cycles
37278  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37279  b CycloneEnd
37280
37281;@ ---------- [5bf9] smi $33333333.l uses Op5bf9 ----------
37282Op5bf9:
37283  str r4,[r7,#0x50] ;@ Save prev PC + 2
37284  str r5,[r7,#0x5c] ;@ Save Cycles
37285
37286  mov r1,#0
37287  tst r10,r10 ;@ mi: N
37288  mvnmi r1,#0
37289
37290;@ EaCalc : Get '$33333333.l' into r0:
37291  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
37292  ldrh r0,[r4],#2
37293  orr r0,r0,r2,lsl #16
37294;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
37295  and r1,r1,#0xff
37296  str r4,[r7,#0x40] ;@ Save PC
37297  bic r0,r0,#0xff000000
37298  bl m68k_write8 ;@ Call write8(r0,r1) handler
37299
37300  ldr r5,[r7,#0x5c] ;@ Load Cycles
37301  ldrh r8,[r4],#2 ;@ Fetch next opcode
37302  subs r5,r5,#20 ;@ Subtract cycles
37303  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37304  b CycloneEnd
37305
37306;@ ---------- [5cc0] sge d0 uses Op5cc0 ----------
37307Op5cc0:
37308  mov r1,#0
37309  teq r10,r10,lsl #3 ;@ ge: N == V
37310  mvnpl r1,#0
37311  subpl r5,r5,#2 ;@ Extra cycles
37312
37313;@ EaCalc : Get register index into r0:
37314  and r0,r8,#0x000f
37315;@ EaWrite: r1 into register[r0]:
37316  strb r1,[r7,r0,lsl #2]
37317
37318  ldrh r8,[r4],#2 ;@ Fetch next opcode
37319  subs r5,r5,#4 ;@ Subtract cycles
37320  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37321  b CycloneEnd
37322
37323;@ ---------- [5cc8] dbge d0, 3335 uses Op5cc8 ----------
37324Op5cc8:
37325;@ Is the condition true?
37326  teq r10,r10,lsl #3 ;@ ge: N == V
37327;@ If so, don't dbra
37328  bpl DbraTrue
37329
37330;@ Decrement Dn.w
37331  and r1,r8,#0x0007
37332  mov r1,r1,lsl #2
37333  ldrsh r0,[r7,r1]
37334  strb r8,[r7,#0x45] ;@ not polling
37335  sub r0,r0,#1
37336  strh r0,[r7,r1]
37337
37338;@ Check if Dn.w is -1
37339  cmn r0,#1
37340  beq DbraMin1
37341
37342;@ Get Branch offset:
37343  ldrsh r0,[r4]
37344  add r0,r4,r0 ;@ r0 = New PC
37345  bl m68k_checkpc ;@ Call checkpc()
37346  mov r4,r0
37347  tst r4,#1 ;@ address error?
37348  bne ExceptionAddressError_r_prg_r4
37349  ldrh r8,[r4],#2 ;@ Fetch next opcode
37350  subs r5,r5,#10 ;@ Subtract cycles
37351  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37352  b CycloneEnd
37353
37354;@ ---------- [5cd0] sge (a0) uses Op5cd0 ----------
37355Op5cd0:
37356  str r4,[r7,#0x50] ;@ Save prev PC + 2
37357  str r5,[r7,#0x5c] ;@ Save Cycles
37358
37359  mov r1,#0
37360  teq r10,r10,lsl #3 ;@ ge: N == V
37361  mvnpl r1,#0
37362
37363;@ EaCalc : Get '(a0)' into r0:
37364  and r2,r8,#0x000f
37365  orr r2,r2,#0x8 ;@ A0-7
37366  ldr r0,[r7,r2,lsl #2]
37367;@ EaWrite: Write r1 into '(a0)' (address in r0):
37368  and r1,r1,#0xff
37369  str r4,[r7,#0x40] ;@ Save PC
37370  bic r0,r0,#0xff000000
37371  bl m68k_write8 ;@ Call write8(r0,r1) handler
37372
37373  ldr r5,[r7,#0x5c] ;@ Load Cycles
37374  ldrh r8,[r4],#2 ;@ Fetch next opcode
37375  subs r5,r5,#12 ;@ Subtract cycles
37376  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37377  b CycloneEnd
37378
37379;@ ---------- [5cd8] sge (a0)+ uses Op5cd8 ----------
37380Op5cd8:
37381  str r4,[r7,#0x50] ;@ Save prev PC + 2
37382  str r5,[r7,#0x5c] ;@ Save Cycles
37383
37384  mov r1,#0
37385  teq r10,r10,lsl #3 ;@ ge: N == V
37386  mvnpl r1,#0
37387
37388;@ EaCalc : Get '(a0)+' into r0:
37389  and r2,r8,#0x000f
37390  ldr r0,[r7,r2,lsl #2]
37391  add r3,r0,#1 ;@ Post-increment An
37392  str r3,[r7,r2,lsl #2]
37393;@ EaWrite: Write r1 into '(a0)+' (address in r0):
37394  and r1,r1,#0xff
37395  str r4,[r7,#0x40] ;@ Save PC
37396  bic r0,r0,#0xff000000
37397  bl m68k_write8 ;@ Call write8(r0,r1) handler
37398
37399  ldr r5,[r7,#0x5c] ;@ Load Cycles
37400  ldrh r8,[r4],#2 ;@ Fetch next opcode
37401  subs r5,r5,#12 ;@ Subtract cycles
37402  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37403  b CycloneEnd
37404
37405;@ ---------- [5cdf] sge (a7)+ uses Op5cdf ----------
37406Op5cdf:
37407  str r4,[r7,#0x50] ;@ Save prev PC + 2
37408  str r5,[r7,#0x5c] ;@ Save Cycles
37409
37410  mov r1,#0
37411  teq r10,r10,lsl #3 ;@ ge: N == V
37412  mvnpl r1,#0
37413
37414;@ EaCalc : Get '(a7)+' into r0:
37415  ldr r0,[r7,#0x3c] ;@ A7
37416  add r3,r0,#2 ;@ Post-increment An
37417  str r3,[r7,#0x3c] ;@ A7
37418;@ EaWrite: Write r1 into '(a7)+' (address in r0):
37419  and r1,r1,#0xff
37420  str r4,[r7,#0x40] ;@ Save PC
37421  bic r0,r0,#0xff000000
37422  bl m68k_write8 ;@ Call write8(r0,r1) handler
37423
37424  ldr r5,[r7,#0x5c] ;@ Load Cycles
37425  ldrh r8,[r4],#2 ;@ Fetch next opcode
37426  subs r5,r5,#12 ;@ Subtract cycles
37427  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37428  b CycloneEnd
37429
37430;@ ---------- [5ce0] sge -(a0) uses Op5ce0 ----------
37431Op5ce0:
37432  str r4,[r7,#0x50] ;@ Save prev PC + 2
37433  str r5,[r7,#0x5c] ;@ Save Cycles
37434
37435  mov r1,#0
37436  teq r10,r10,lsl #3 ;@ ge: N == V
37437  mvnpl r1,#0
37438
37439;@ EaCalc : Get '-(a0)' into r0:
37440  and r2,r8,#0x000f
37441  orr r2,r2,#0x8 ;@ A0-7
37442  ldr r0,[r7,r2,lsl #2]
37443  sub r0,r0,#1 ;@ Pre-decrement An
37444  str r0,[r7,r2,lsl #2]
37445;@ EaWrite: Write r1 into '-(a0)' (address in r0):
37446  and r1,r1,#0xff
37447  str r4,[r7,#0x40] ;@ Save PC
37448  bic r0,r0,#0xff000000
37449  bl m68k_write8 ;@ Call write8(r0,r1) handler
37450
37451  ldr r5,[r7,#0x5c] ;@ Load Cycles
37452  ldrh r8,[r4],#2 ;@ Fetch next opcode
37453  subs r5,r5,#14 ;@ Subtract cycles
37454  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37455  b CycloneEnd
37456
37457;@ ---------- [5ce7] sge -(a7) uses Op5ce7 ----------
37458Op5ce7:
37459  str r4,[r7,#0x50] ;@ Save prev PC + 2
37460  str r5,[r7,#0x5c] ;@ Save Cycles
37461
37462  mov r1,#0
37463  teq r10,r10,lsl #3 ;@ ge: N == V
37464  mvnpl r1,#0
37465
37466;@ EaCalc : Get '-(a7)' into r0:
37467  ldr r0,[r7,#0x3c] ;@ A7
37468  sub r0,r0,#2 ;@ Pre-decrement An
37469  str r0,[r7,#0x3c] ;@ A7
37470;@ EaWrite: Write r1 into '-(a7)' (address in r0):
37471  and r1,r1,#0xff
37472  str r4,[r7,#0x40] ;@ Save PC
37473  bic r0,r0,#0xff000000
37474  bl m68k_write8 ;@ Call write8(r0,r1) handler
37475
37476  ldr r5,[r7,#0x5c] ;@ Load Cycles
37477  ldrh r8,[r4],#2 ;@ Fetch next opcode
37478  subs r5,r5,#14 ;@ Subtract cycles
37479  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37480  b CycloneEnd
37481
37482;@ ---------- [5ce8] sge ($3333,a0) uses Op5ce8 ----------
37483Op5ce8:
37484  str r4,[r7,#0x50] ;@ Save prev PC + 2
37485  str r5,[r7,#0x5c] ;@ Save Cycles
37486
37487  mov r1,#0
37488  teq r10,r10,lsl #3 ;@ ge: N == V
37489  mvnpl r1,#0
37490
37491;@ EaCalc : Get '($3333,a0)' into r0:
37492  ldrsh r0,[r4],#2 ;@ Fetch offset
37493  and r2,r8,#0x000f
37494  ldr r2,[r7,r2,lsl #2]
37495  add r0,r0,r2 ;@ Add on offset
37496;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
37497  and r1,r1,#0xff
37498  str r4,[r7,#0x40] ;@ Save PC
37499  bic r0,r0,#0xff000000
37500  bl m68k_write8 ;@ Call write8(r0,r1) handler
37501
37502  ldr r5,[r7,#0x5c] ;@ Load Cycles
37503  ldrh r8,[r4],#2 ;@ Fetch next opcode
37504  subs r5,r5,#16 ;@ Subtract cycles
37505  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37506  b CycloneEnd
37507
37508;@ ---------- [5cf0] sge ($33,a0,d3.w*2) uses Op5cf0 ----------
37509Op5cf0:
37510  str r4,[r7,#0x50] ;@ Save prev PC + 2
37511  str r5,[r7,#0x5c] ;@ Save Cycles
37512
37513  mov r1,#0
37514  teq r10,r10,lsl #3 ;@ ge: N == V
37515  mvnpl r1,#0
37516
37517;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
37518;@ Get extension word into r3:
37519  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
37520  mov r2,r3,lsr #10
37521  tst r3,#0x0800 ;@ Is Rn Word or Long
37522  and r2,r2,#0x3c ;@ r2=Index of Rn
37523  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
37524  ldrne   r2,[r7,r2] ;@ r2=Rn.l
37525  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
37526  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
37527  and r2,r8,#0x000f
37528  orr r2,r2,#0x8 ;@ A0-7
37529  ldr r2,[r7,r2,lsl #2]
37530  add r0,r2,r3 ;@ r0=Disp+An+Rn
37531;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
37532  and r1,r1,#0xff
37533  str r4,[r7,#0x40] ;@ Save PC
37534  bic r0,r0,#0xff000000
37535  bl m68k_write8 ;@ Call write8(r0,r1) handler
37536
37537  ldr r5,[r7,#0x5c] ;@ Load Cycles
37538  ldrh r8,[r4],#2 ;@ Fetch next opcode
37539  subs r5,r5,#18 ;@ Subtract cycles
37540  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37541  b CycloneEnd
37542
37543;@ ---------- [5cf8] sge $3333.w uses Op5cf8 ----------
37544Op5cf8:
37545  str r4,[r7,#0x50] ;@ Save prev PC + 2
37546  str r5,[r7,#0x5c] ;@ Save Cycles
37547
37548  mov r1,#0
37549  teq r10,r10,lsl #3 ;@ ge: N == V
37550  mvnpl r1,#0
37551
37552;@ EaCalc : Get '$3333.w' into r0:
37553  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
37554;@ EaWrite: Write r1 into '$3333.w' (address in r0):
37555  and r1,r1,#0xff
37556  str r4,[r7,#0x40] ;@ Save PC
37557  bic r0,r0,#0xff000000
37558  bl m68k_write8 ;@ Call write8(r0,r1) handler
37559
37560  ldr r5,[r7,#0x5c] ;@ Load Cycles
37561  ldrh r8,[r4],#2 ;@ Fetch next opcode
37562  subs r5,r5,#16 ;@ Subtract cycles
37563  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37564  b CycloneEnd
37565
37566;@ ---------- [5cf9] sge $33333333.l uses Op5cf9 ----------
37567Op5cf9:
37568  str r4,[r7,#0x50] ;@ Save prev PC + 2
37569  str r5,[r7,#0x5c] ;@ Save Cycles
37570
37571  mov r1,#0
37572  teq r10,r10,lsl #3 ;@ ge: N == V
37573  mvnpl r1,#0
37574
37575;@ EaCalc : Get '$33333333.l' into r0:
37576  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
37577  ldrh r0,[r4],#2
37578  orr r0,r0,r2,lsl #16
37579;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
37580  and r1,r1,#0xff
37581  str r4,[r7,#0x40] ;@ Save PC
37582  bic r0,r0,#0xff000000
37583  bl m68k_write8 ;@ Call write8(r0,r1) handler
37584
37585  ldr r5,[r7,#0x5c] ;@ Load Cycles
37586  ldrh r8,[r4],#2 ;@ Fetch next opcode
37587  subs r5,r5,#20 ;@ Subtract cycles
37588  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37589  b CycloneEnd
37590
37591;@ ---------- [5dc0] slt d0 uses Op5dc0 ----------
37592Op5dc0:
37593  mov r1,#0
37594  teq r10,r10,lsl #3 ;@ lt: N != V
37595  mvnmi r1,#0
37596  submi r5,r5,#2 ;@ Extra cycles
37597
37598;@ EaCalc : Get register index into r0:
37599  and r0,r8,#0x000f
37600;@ EaWrite: r1 into register[r0]:
37601  strb r1,[r7,r0,lsl #2]
37602
37603  ldrh r8,[r4],#2 ;@ Fetch next opcode
37604  subs r5,r5,#4 ;@ Subtract cycles
37605  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37606  b CycloneEnd
37607
37608;@ ---------- [5dc8] dblt d0, 3335 uses Op5dc8 ----------
37609Op5dc8:
37610;@ Is the condition true?
37611  teq r10,r10,lsl #3 ;@ lt: N != V
37612;@ If so, don't dbra
37613  bmi DbraTrue
37614
37615;@ Decrement Dn.w
37616  and r1,r8,#0x0007
37617  mov r1,r1,lsl #2
37618  ldrsh r0,[r7,r1]
37619  strb r8,[r7,#0x45] ;@ not polling
37620  sub r0,r0,#1
37621  strh r0,[r7,r1]
37622
37623;@ Check if Dn.w is -1
37624  cmn r0,#1
37625  beq DbraMin1
37626
37627;@ Get Branch offset:
37628  ldrsh r0,[r4]
37629  add r0,r4,r0 ;@ r0 = New PC
37630  bl m68k_checkpc ;@ Call checkpc()
37631  mov r4,r0
37632  tst r4,#1 ;@ address error?
37633  bne ExceptionAddressError_r_prg_r4
37634  ldrh r8,[r4],#2 ;@ Fetch next opcode
37635  subs r5,r5,#10 ;@ Subtract cycles
37636  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37637  b CycloneEnd
37638
37639;@ ---------- [5dd0] slt (a0) uses Op5dd0 ----------
37640Op5dd0:
37641  str r4,[r7,#0x50] ;@ Save prev PC + 2
37642  str r5,[r7,#0x5c] ;@ Save Cycles
37643
37644  mov r1,#0
37645  teq r10,r10,lsl #3 ;@ lt: N != V
37646  mvnmi r1,#0
37647
37648;@ EaCalc : Get '(a0)' into r0:
37649  and r2,r8,#0x000f
37650  orr r2,r2,#0x8 ;@ A0-7
37651  ldr r0,[r7,r2,lsl #2]
37652;@ EaWrite: Write r1 into '(a0)' (address in r0):
37653  and r1,r1,#0xff
37654  str r4,[r7,#0x40] ;@ Save PC
37655  bic r0,r0,#0xff000000
37656  bl m68k_write8 ;@ Call write8(r0,r1) handler
37657
37658  ldr r5,[r7,#0x5c] ;@ Load Cycles
37659  ldrh r8,[r4],#2 ;@ Fetch next opcode
37660  subs r5,r5,#12 ;@ Subtract cycles
37661  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37662  b CycloneEnd
37663
37664;@ ---------- [5dd8] slt (a0)+ uses Op5dd8 ----------
37665Op5dd8:
37666  str r4,[r7,#0x50] ;@ Save prev PC + 2
37667  str r5,[r7,#0x5c] ;@ Save Cycles
37668
37669  mov r1,#0
37670  teq r10,r10,lsl #3 ;@ lt: N != V
37671  mvnmi r1,#0
37672
37673;@ EaCalc : Get '(a0)+' into r0:
37674  and r2,r8,#0x000f
37675  ldr r0,[r7,r2,lsl #2]
37676  add r3,r0,#1 ;@ Post-increment An
37677  str r3,[r7,r2,lsl #2]
37678;@ EaWrite: Write r1 into '(a0)+' (address in r0):
37679  and r1,r1,#0xff
37680  str r4,[r7,#0x40] ;@ Save PC
37681  bic r0,r0,#0xff000000
37682  bl m68k_write8 ;@ Call write8(r0,r1) handler
37683
37684  ldr r5,[r7,#0x5c] ;@ Load Cycles
37685  ldrh r8,[r4],#2 ;@ Fetch next opcode
37686  subs r5,r5,#12 ;@ Subtract cycles
37687  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37688  b CycloneEnd
37689
37690;@ ---------- [5ddf] slt (a7)+ uses Op5ddf ----------
37691Op5ddf:
37692  str r4,[r7,#0x50] ;@ Save prev PC + 2
37693  str r5,[r7,#0x5c] ;@ Save Cycles
37694
37695  mov r1,#0
37696  teq r10,r10,lsl #3 ;@ lt: N != V
37697  mvnmi r1,#0
37698
37699;@ EaCalc : Get '(a7)+' into r0:
37700  ldr r0,[r7,#0x3c] ;@ A7
37701  add r3,r0,#2 ;@ Post-increment An
37702  str r3,[r7,#0x3c] ;@ A7
37703;@ EaWrite: Write r1 into '(a7)+' (address in r0):
37704  and r1,r1,#0xff
37705  str r4,[r7,#0x40] ;@ Save PC
37706  bic r0,r0,#0xff000000
37707  bl m68k_write8 ;@ Call write8(r0,r1) handler
37708
37709  ldr r5,[r7,#0x5c] ;@ Load Cycles
37710  ldrh r8,[r4],#2 ;@ Fetch next opcode
37711  subs r5,r5,#12 ;@ Subtract cycles
37712  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37713  b CycloneEnd
37714
37715;@ ---------- [5de0] slt -(a0) uses Op5de0 ----------
37716Op5de0:
37717  str r4,[r7,#0x50] ;@ Save prev PC + 2
37718  str r5,[r7,#0x5c] ;@ Save Cycles
37719
37720  mov r1,#0
37721  teq r10,r10,lsl #3 ;@ lt: N != V
37722  mvnmi r1,#0
37723
37724;@ EaCalc : Get '-(a0)' into r0:
37725  and r2,r8,#0x000f
37726  orr r2,r2,#0x8 ;@ A0-7
37727  ldr r0,[r7,r2,lsl #2]
37728  sub r0,r0,#1 ;@ Pre-decrement An
37729  str r0,[r7,r2,lsl #2]
37730;@ EaWrite: Write r1 into '-(a0)' (address in r0):
37731  and r1,r1,#0xff
37732  str r4,[r7,#0x40] ;@ Save PC
37733  bic r0,r0,#0xff000000
37734  bl m68k_write8 ;@ Call write8(r0,r1) handler
37735
37736  ldr r5,[r7,#0x5c] ;@ Load Cycles
37737  ldrh r8,[r4],#2 ;@ Fetch next opcode
37738  subs r5,r5,#14 ;@ Subtract cycles
37739  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37740  b CycloneEnd
37741
37742;@ ---------- [5de7] slt -(a7) uses Op5de7 ----------
37743Op5de7:
37744  str r4,[r7,#0x50] ;@ Save prev PC + 2
37745  str r5,[r7,#0x5c] ;@ Save Cycles
37746
37747  mov r1,#0
37748  teq r10,r10,lsl #3 ;@ lt: N != V
37749  mvnmi r1,#0
37750
37751;@ EaCalc : Get '-(a7)' into r0:
37752  ldr r0,[r7,#0x3c] ;@ A7
37753  sub r0,r0,#2 ;@ Pre-decrement An
37754  str r0,[r7,#0x3c] ;@ A7
37755;@ EaWrite: Write r1 into '-(a7)' (address in r0):
37756  and r1,r1,#0xff
37757  str r4,[r7,#0x40] ;@ Save PC
37758  bic r0,r0,#0xff000000
37759  bl m68k_write8 ;@ Call write8(r0,r1) handler
37760
37761  ldr r5,[r7,#0x5c] ;@ Load Cycles
37762  ldrh r8,[r4],#2 ;@ Fetch next opcode
37763  subs r5,r5,#14 ;@ Subtract cycles
37764  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37765  b CycloneEnd
37766
37767;@ ---------- [5de8] slt ($3333,a0) uses Op5de8 ----------
37768Op5de8:
37769  str r4,[r7,#0x50] ;@ Save prev PC + 2
37770  str r5,[r7,#0x5c] ;@ Save Cycles
37771
37772  mov r1,#0
37773  teq r10,r10,lsl #3 ;@ lt: N != V
37774  mvnmi r1,#0
37775
37776;@ EaCalc : Get '($3333,a0)' into r0:
37777  ldrsh r0,[r4],#2 ;@ Fetch offset
37778  and r2,r8,#0x000f
37779  ldr r2,[r7,r2,lsl #2]
37780  add r0,r0,r2 ;@ Add on offset
37781;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
37782  and r1,r1,#0xff
37783  str r4,[r7,#0x40] ;@ Save PC
37784  bic r0,r0,#0xff000000
37785  bl m68k_write8 ;@ Call write8(r0,r1) handler
37786
37787  ldr r5,[r7,#0x5c] ;@ Load Cycles
37788  ldrh r8,[r4],#2 ;@ Fetch next opcode
37789  subs r5,r5,#16 ;@ Subtract cycles
37790  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37791  b CycloneEnd
37792
37793;@ ---------- [5df0] slt ($33,a0,d3.w*2) uses Op5df0 ----------
37794Op5df0:
37795  str r4,[r7,#0x50] ;@ Save prev PC + 2
37796  str r5,[r7,#0x5c] ;@ Save Cycles
37797
37798  mov r1,#0
37799  teq r10,r10,lsl #3 ;@ lt: N != V
37800  mvnmi r1,#0
37801
37802;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
37803;@ Get extension word into r3:
37804  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
37805  mov r2,r3,lsr #10
37806  tst r3,#0x0800 ;@ Is Rn Word or Long
37807  and r2,r2,#0x3c ;@ r2=Index of Rn
37808  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
37809  ldrne   r2,[r7,r2] ;@ r2=Rn.l
37810  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
37811  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
37812  and r2,r8,#0x000f
37813  orr r2,r2,#0x8 ;@ A0-7
37814  ldr r2,[r7,r2,lsl #2]
37815  add r0,r2,r3 ;@ r0=Disp+An+Rn
37816;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
37817  and r1,r1,#0xff
37818  str r4,[r7,#0x40] ;@ Save PC
37819  bic r0,r0,#0xff000000
37820  bl m68k_write8 ;@ Call write8(r0,r1) handler
37821
37822  ldr r5,[r7,#0x5c] ;@ Load Cycles
37823  ldrh r8,[r4],#2 ;@ Fetch next opcode
37824  subs r5,r5,#18 ;@ Subtract cycles
37825  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37826  b CycloneEnd
37827
37828;@ ---------- [5df8] slt $3333.w uses Op5df8 ----------
37829Op5df8:
37830  str r4,[r7,#0x50] ;@ Save prev PC + 2
37831  str r5,[r7,#0x5c] ;@ Save Cycles
37832
37833  mov r1,#0
37834  teq r10,r10,lsl #3 ;@ lt: N != V
37835  mvnmi r1,#0
37836
37837;@ EaCalc : Get '$3333.w' into r0:
37838  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
37839;@ EaWrite: Write r1 into '$3333.w' (address in r0):
37840  and r1,r1,#0xff
37841  str r4,[r7,#0x40] ;@ Save PC
37842  bic r0,r0,#0xff000000
37843  bl m68k_write8 ;@ Call write8(r0,r1) handler
37844
37845  ldr r5,[r7,#0x5c] ;@ Load Cycles
37846  ldrh r8,[r4],#2 ;@ Fetch next opcode
37847  subs r5,r5,#16 ;@ Subtract cycles
37848  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37849  b CycloneEnd
37850
37851;@ ---------- [5df9] slt $33333333.l uses Op5df9 ----------
37852Op5df9:
37853  str r4,[r7,#0x50] ;@ Save prev PC + 2
37854  str r5,[r7,#0x5c] ;@ Save Cycles
37855
37856  mov r1,#0
37857  teq r10,r10,lsl #3 ;@ lt: N != V
37858  mvnmi r1,#0
37859
37860;@ EaCalc : Get '$33333333.l' into r0:
37861  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
37862  ldrh r0,[r4],#2
37863  orr r0,r0,r2,lsl #16
37864;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
37865  and r1,r1,#0xff
37866  str r4,[r7,#0x40] ;@ Save PC
37867  bic r0,r0,#0xff000000
37868  bl m68k_write8 ;@ Call write8(r0,r1) handler
37869
37870  ldr r5,[r7,#0x5c] ;@ Load Cycles
37871  ldrh r8,[r4],#2 ;@ Fetch next opcode
37872  subs r5,r5,#20 ;@ Subtract cycles
37873  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37874  b CycloneEnd
37875
37876;@ ---------- [5e00] addq.b #7, d0 uses Op5e00 ----------
37877Op5e00:
37878;@ EaCalc : Get register index into r11:
37879  and r11,r8,#0x000f
37880;@ EaRead : Read register[r11] into r0:
37881  ldr r0,[r7,r11,lsl #2]
37882
37883  and r2,r8,#0x0e00 ;@ Get quick value
37884
37885  mov r0,r0,asl #24
37886
37887  adds r1,r0,r2,lsl #15
37888  mrs r10,cpsr ;@ r10=flags
37889  str r10,[r7,#0x4c] ;@ Save X bit
37890
37891;@ EaWrite: r1 into register[r11]:
37892  mov r1,r1,lsr #24
37893  strb r1,[r7,r11,lsl #2]
37894
37895  ldrh r8,[r4],#2 ;@ Fetch next opcode
37896  subs r5,r5,#4 ;@ Subtract cycles
37897  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37898  b CycloneEnd
37899
37900;@ ---------- [5e10] addq.b #7, (a0) uses Op5e10 ----------
37901Op5e10:
37902  str r4,[r7,#0x50] ;@ Save prev PC + 2
37903  str r5,[r7,#0x5c] ;@ Save Cycles
37904
37905;@ EaCalc : Get '(a0)' into r11:
37906  and r2,r8,#0x000f
37907  orr r2,r2,#0x8 ;@ A0-7
37908  ldr r11,[r7,r2,lsl #2]
37909;@ EaRead : Read '(a0)' (address in r11) into r0:
37910  str r4,[r7,#0x40] ;@ Save PC
37911  bic r0,r11,#0xff000000
37912  bl m68k_read8 ;@ Call read8(r0) handler
37913
37914  and r2,r8,#0x0e00 ;@ Get quick value
37915
37916  mov r0,r0,asl #24
37917
37918  adds r1,r0,r2,lsl #15
37919  mrs r10,cpsr ;@ r10=flags
37920  str r10,[r7,#0x4c] ;@ Save X bit
37921
37922;@ EaWrite: Write r1 into '(a0)' (address in r11):
37923  mov r1,r1,lsr #24
37924  bic r0,r11,#0xff000000
37925  bl m68k_write8 ;@ Call write8(r0,r1) handler
37926
37927  ldr r5,[r7,#0x5c] ;@ Load Cycles
37928  ldrh r8,[r4],#2 ;@ Fetch next opcode
37929  subs r5,r5,#12 ;@ Subtract cycles
37930  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37931  b CycloneEnd
37932
37933;@ ---------- [5e18] addq.b #7, (a0)+ uses Op5e18 ----------
37934Op5e18:
37935  str r4,[r7,#0x50] ;@ Save prev PC + 2
37936  str r5,[r7,#0x5c] ;@ Save Cycles
37937
37938;@ EaCalc : Get '(a0)+' into r11:
37939  and r2,r8,#0x000f
37940  ldr r11,[r7,r2,lsl #2]
37941  add r3,r11,#1 ;@ Post-increment An
37942  str r3,[r7,r2,lsl #2]
37943;@ EaRead : Read '(a0)+' (address in r11) into r0:
37944  str r4,[r7,#0x40] ;@ Save PC
37945  bic r0,r11,#0xff000000
37946  bl m68k_read8 ;@ Call read8(r0) handler
37947
37948  and r2,r8,#0x0e00 ;@ Get quick value
37949
37950  mov r0,r0,asl #24
37951
37952  adds r1,r0,r2,lsl #15
37953  mrs r10,cpsr ;@ r10=flags
37954  str r10,[r7,#0x4c] ;@ Save X bit
37955
37956;@ EaWrite: Write r1 into '(a0)+' (address in r11):
37957  mov r1,r1,lsr #24
37958  bic r0,r11,#0xff000000
37959  bl m68k_write8 ;@ Call write8(r0,r1) handler
37960
37961  ldr r5,[r7,#0x5c] ;@ Load Cycles
37962  ldrh r8,[r4],#2 ;@ Fetch next opcode
37963  subs r5,r5,#12 ;@ Subtract cycles
37964  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37965  b CycloneEnd
37966
37967;@ ---------- [5e1f] addq.b #7, (a7)+ uses Op5e1f ----------
37968Op5e1f:
37969  str r4,[r7,#0x50] ;@ Save prev PC + 2
37970  str r5,[r7,#0x5c] ;@ Save Cycles
37971
37972;@ EaCalc : Get '(a7)+' into r11:
37973  ldr r11,[r7,#0x3c] ;@ A7
37974  add r3,r11,#2 ;@ Post-increment An
37975  str r3,[r7,#0x3c] ;@ A7
37976;@ EaRead : Read '(a7)+' (address in r11) into r0:
37977  str r4,[r7,#0x40] ;@ Save PC
37978  bic r0,r11,#0xff000000
37979  bl m68k_read8 ;@ Call read8(r0) handler
37980
37981  and r2,r8,#0x0e00 ;@ Get quick value
37982
37983  mov r0,r0,asl #24
37984
37985  adds r1,r0,r2,lsl #15
37986  mrs r10,cpsr ;@ r10=flags
37987  str r10,[r7,#0x4c] ;@ Save X bit
37988
37989;@ EaWrite: Write r1 into '(a7)+' (address in r11):
37990  mov r1,r1,lsr #24
37991  bic r0,r11,#0xff000000
37992  bl m68k_write8 ;@ Call write8(r0,r1) handler
37993
37994  ldr r5,[r7,#0x5c] ;@ Load Cycles
37995  ldrh r8,[r4],#2 ;@ Fetch next opcode
37996  subs r5,r5,#12 ;@ Subtract cycles
37997  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37998  b CycloneEnd
37999
38000;@ ---------- [5e20] addq.b #7, -(a0) uses Op5e20 ----------
38001Op5e20:
38002  str r4,[r7,#0x50] ;@ Save prev PC + 2
38003  str r5,[r7,#0x5c] ;@ Save Cycles
38004
38005;@ EaCalc : Get '-(a0)' into r11:
38006  and r2,r8,#0x000f
38007  orr r2,r2,#0x8 ;@ A0-7
38008  ldr r11,[r7,r2,lsl #2]
38009  sub r11,r11,#1 ;@ Pre-decrement An
38010  str r11,[r7,r2,lsl #2]
38011;@ EaRead : Read '-(a0)' (address in r11) into r0:
38012  str r4,[r7,#0x40] ;@ Save PC
38013  bic r0,r11,#0xff000000
38014  bl m68k_read8 ;@ Call read8(r0) handler
38015
38016  and r2,r8,#0x0e00 ;@ Get quick value
38017
38018  mov r0,r0,asl #24
38019
38020  adds r1,r0,r2,lsl #15
38021  mrs r10,cpsr ;@ r10=flags
38022  str r10,[r7,#0x4c] ;@ Save X bit
38023
38024;@ EaWrite: Write r1 into '-(a0)' (address in r11):
38025  mov r1,r1,lsr #24
38026  bic r0,r11,#0xff000000
38027  bl m68k_write8 ;@ Call write8(r0,r1) handler
38028
38029  ldr r5,[r7,#0x5c] ;@ Load Cycles
38030  ldrh r8,[r4],#2 ;@ Fetch next opcode
38031  subs r5,r5,#14 ;@ Subtract cycles
38032  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38033  b CycloneEnd
38034
38035;@ ---------- [5e27] addq.b #7, -(a7) uses Op5e27 ----------
38036Op5e27:
38037  str r4,[r7,#0x50] ;@ Save prev PC + 2
38038  str r5,[r7,#0x5c] ;@ Save Cycles
38039
38040;@ EaCalc : Get '-(a7)' into r11:
38041  ldr r11,[r7,#0x3c] ;@ A7
38042  sub r11,r11,#2 ;@ Pre-decrement An
38043  str r11,[r7,#0x3c] ;@ A7
38044;@ EaRead : Read '-(a7)' (address in r11) into r0:
38045  str r4,[r7,#0x40] ;@ Save PC
38046  bic r0,r11,#0xff000000
38047  bl m68k_read8 ;@ Call read8(r0) handler
38048
38049  and r2,r8,#0x0e00 ;@ Get quick value
38050
38051  mov r0,r0,asl #24
38052
38053  adds r1,r0,r2,lsl #15
38054  mrs r10,cpsr ;@ r10=flags
38055  str r10,[r7,#0x4c] ;@ Save X bit
38056
38057;@ EaWrite: Write r1 into '-(a7)' (address in r11):
38058  mov r1,r1,lsr #24
38059  bic r0,r11,#0xff000000
38060  bl m68k_write8 ;@ Call write8(r0,r1) handler
38061
38062  ldr r5,[r7,#0x5c] ;@ Load Cycles
38063  ldrh r8,[r4],#2 ;@ Fetch next opcode
38064  subs r5,r5,#14 ;@ Subtract cycles
38065  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38066  b CycloneEnd
38067
38068;@ ---------- [5e28] addq.b #7, ($3333,a0) uses Op5e28 ----------
38069Op5e28:
38070  str r4,[r7,#0x50] ;@ Save prev PC + 2
38071  str r5,[r7,#0x5c] ;@ Save Cycles
38072
38073;@ EaCalc : Get '($3333,a0)' into r11:
38074  ldrsh r0,[r4],#2 ;@ Fetch offset
38075  and r2,r8,#0x000f
38076  ldr r2,[r7,r2,lsl #2]
38077  add r11,r0,r2 ;@ Add on offset
38078;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
38079  str r4,[r7,#0x40] ;@ Save PC
38080  bic r0,r11,#0xff000000
38081  bl m68k_read8 ;@ Call read8(r0) handler
38082
38083  and r2,r8,#0x0e00 ;@ Get quick value
38084
38085  mov r0,r0,asl #24
38086
38087  adds r1,r0,r2,lsl #15
38088  mrs r10,cpsr ;@ r10=flags
38089  str r10,[r7,#0x4c] ;@ Save X bit
38090
38091;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
38092  mov r1,r1,lsr #24
38093  bic r0,r11,#0xff000000
38094  bl m68k_write8 ;@ Call write8(r0,r1) handler
38095
38096  ldr r5,[r7,#0x5c] ;@ Load Cycles
38097  ldrh r8,[r4],#2 ;@ Fetch next opcode
38098  subs r5,r5,#16 ;@ Subtract cycles
38099  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38100  b CycloneEnd
38101
38102;@ ---------- [5e30] addq.b #7, ($33,a0,d3.w*2) uses Op5e30 ----------
38103Op5e30:
38104  str r4,[r7,#0x50] ;@ Save prev PC + 2
38105  str r5,[r7,#0x5c] ;@ Save Cycles
38106
38107;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
38108;@ Get extension word into r3:
38109  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
38110  mov r2,r3,lsr #10
38111  tst r3,#0x0800 ;@ Is Rn Word or Long
38112  and r2,r2,#0x3c ;@ r2=Index of Rn
38113  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
38114  ldrne   r2,[r7,r2] ;@ r2=Rn.l
38115  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
38116  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
38117  and r2,r8,#0x000f
38118  orr r2,r2,#0x8 ;@ A0-7
38119  ldr r2,[r7,r2,lsl #2]
38120  add r11,r2,r3 ;@ r11=Disp+An+Rn
38121;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
38122  str r4,[r7,#0x40] ;@ Save PC
38123  bic r0,r11,#0xff000000
38124  bl m68k_read8 ;@ Call read8(r0) handler
38125
38126  and r2,r8,#0x0e00 ;@ Get quick value
38127
38128  mov r0,r0,asl #24
38129
38130  adds r1,r0,r2,lsl #15
38131  mrs r10,cpsr ;@ r10=flags
38132  str r10,[r7,#0x4c] ;@ Save X bit
38133
38134;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
38135  mov r1,r1,lsr #24
38136  bic r0,r11,#0xff000000
38137  bl m68k_write8 ;@ Call write8(r0,r1) handler
38138
38139  ldr r5,[r7,#0x5c] ;@ Load Cycles
38140  ldrh r8,[r4],#2 ;@ Fetch next opcode
38141  subs r5,r5,#18 ;@ Subtract cycles
38142  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38143  b CycloneEnd
38144
38145;@ ---------- [5e38] addq.b #7, $3333.w uses Op5e38 ----------
38146Op5e38:
38147  str r4,[r7,#0x50] ;@ Save prev PC + 2
38148  str r5,[r7,#0x5c] ;@ Save Cycles
38149
38150;@ EaCalc : Get '$3333.w' into r11:
38151  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
38152;@ EaRead : Read '$3333.w' (address in r11) into r0:
38153  str r4,[r7,#0x40] ;@ Save PC
38154  bic r0,r11,#0xff000000
38155  bl m68k_read8 ;@ Call read8(r0) handler
38156
38157  and r2,r8,#0x0e00 ;@ Get quick value
38158
38159  mov r0,r0,asl #24
38160
38161  adds r1,r0,r2,lsl #15
38162  mrs r10,cpsr ;@ r10=flags
38163  str r10,[r7,#0x4c] ;@ Save X bit
38164
38165;@ EaWrite: Write r1 into '$3333.w' (address in r11):
38166  mov r1,r1,lsr #24
38167  bic r0,r11,#0xff000000
38168  bl m68k_write8 ;@ Call write8(r0,r1) handler
38169
38170  ldr r5,[r7,#0x5c] ;@ Load Cycles
38171  ldrh r8,[r4],#2 ;@ Fetch next opcode
38172  subs r5,r5,#16 ;@ Subtract cycles
38173  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38174  b CycloneEnd
38175
38176;@ ---------- [5e39] addq.b #7, $33333333.l uses Op5e39 ----------
38177Op5e39:
38178  str r4,[r7,#0x50] ;@ Save prev PC + 2
38179  str r5,[r7,#0x5c] ;@ Save Cycles
38180
38181;@ EaCalc : Get '$33333333.l' into r11:
38182  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
38183  ldrh r0,[r4],#2
38184  orr r11,r0,r2,lsl #16
38185;@ EaRead : Read '$33333333.l' (address in r11) into r0:
38186  str r4,[r7,#0x40] ;@ Save PC
38187  bic r0,r11,#0xff000000
38188  bl m68k_read8 ;@ Call read8(r0) handler
38189
38190  and r2,r8,#0x0e00 ;@ Get quick value
38191
38192  mov r0,r0,asl #24
38193
38194  adds r1,r0,r2,lsl #15
38195  mrs r10,cpsr ;@ r10=flags
38196  str r10,[r7,#0x4c] ;@ Save X bit
38197
38198;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
38199  mov r1,r1,lsr #24
38200  bic r0,r11,#0xff000000
38201  bl m68k_write8 ;@ Call write8(r0,r1) handler
38202
38203  ldr r5,[r7,#0x5c] ;@ Load Cycles
38204  ldrh r8,[r4],#2 ;@ Fetch next opcode
38205  subs r5,r5,#20 ;@ Subtract cycles
38206  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38207  b CycloneEnd
38208
38209;@ ---------- [5e48] addq.w #7, a0 uses Op5e48 ----------
38210Op5e48:
38211;@ EaCalc : Get register index into r11:
38212  and r11,r8,#0x000f
38213;@ EaRead : Read register[r11] into r0:
38214  ldr r0,[r7,r11,lsl #2]
38215
38216  and r2,r8,#0x0e00 ;@ Get quick value
38217
38218  adds r1,r0,r2,lsr #9
38219
38220;@ EaWrite: r1 into register[r11]:
38221  str r1,[r7,r11,lsl #2]
38222
38223  ldrh r8,[r4],#2 ;@ Fetch next opcode
38224  subs r5,r5,#4 ;@ Subtract cycles
38225  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38226  b CycloneEnd
38227
38228;@ ---------- [5e50] addq.w #7, (a0) uses Op5e50 ----------
38229Op5e50:
38230  str r4,[r7,#0x50] ;@ Save prev PC + 2
38231  str r5,[r7,#0x5c] ;@ Save Cycles
38232
38233;@ EaCalc : Get '(a0)' into r11:
38234  and r2,r8,#0x000f
38235  orr r2,r2,#0x8 ;@ A0-7
38236  ldr r11,[r7,r2,lsl #2]
38237;@ EaRead : Read '(a0)' (address in r11) into r0:
38238  str r4,[r7,#0x40] ;@ Save PC
38239  bic r0,r11,#0xff000000
38240  bl m68k_read16 ;@ Call read16(r0) handler
38241
38242  and r2,r8,#0x0e00 ;@ Get quick value
38243
38244  mov r0,r0,asl #16
38245
38246  adds r1,r0,r2,lsl #7
38247  mrs r10,cpsr ;@ r10=flags
38248  str r10,[r7,#0x4c] ;@ Save X bit
38249
38250;@ EaWrite: Write r1 into '(a0)' (address in r11):
38251  mov r1,r1,lsr #16
38252  bic r0,r11,#0xff000000
38253  bl m68k_write16 ;@ Call write16(r0,r1) handler
38254
38255  ldr r5,[r7,#0x5c] ;@ Load Cycles
38256  ldrh r8,[r4],#2 ;@ Fetch next opcode
38257  subs r5,r5,#12 ;@ Subtract cycles
38258  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38259  b CycloneEnd
38260
38261;@ ---------- [5e58] addq.w #7, (a0)+ uses Op5e58 ----------
38262Op5e58:
38263  str r4,[r7,#0x50] ;@ Save prev PC + 2
38264  str r5,[r7,#0x5c] ;@ Save Cycles
38265
38266;@ EaCalc : Get '(a0)+' into r11:
38267  and r2,r8,#0x000f
38268  ldr r11,[r7,r2,lsl #2]
38269  add r3,r11,#2 ;@ Post-increment An
38270  str r3,[r7,r2,lsl #2]
38271;@ EaRead : Read '(a0)+' (address in r11) into r0:
38272  str r4,[r7,#0x40] ;@ Save PC
38273  bic r0,r11,#0xff000000
38274  bl m68k_read16 ;@ Call read16(r0) handler
38275
38276  and r2,r8,#0x0e00 ;@ Get quick value
38277
38278  mov r0,r0,asl #16
38279
38280  adds r1,r0,r2,lsl #7
38281  mrs r10,cpsr ;@ r10=flags
38282  str r10,[r7,#0x4c] ;@ Save X bit
38283
38284;@ EaWrite: Write r1 into '(a0)+' (address in r11):
38285  mov r1,r1,lsr #16
38286  bic r0,r11,#0xff000000
38287  bl m68k_write16 ;@ Call write16(r0,r1) handler
38288
38289  ldr r5,[r7,#0x5c] ;@ Load Cycles
38290  ldrh r8,[r4],#2 ;@ Fetch next opcode
38291  subs r5,r5,#12 ;@ Subtract cycles
38292  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38293  b CycloneEnd
38294
38295;@ ---------- [5e60] addq.w #7, -(a0) uses Op5e60 ----------
38296Op5e60:
38297  str r4,[r7,#0x50] ;@ Save prev PC + 2
38298  str r5,[r7,#0x5c] ;@ Save Cycles
38299
38300;@ EaCalc : Get '-(a0)' into r11:
38301  and r2,r8,#0x000f
38302  orr r2,r2,#0x8 ;@ A0-7
38303  ldr r11,[r7,r2,lsl #2]
38304  sub r11,r11,#2 ;@ Pre-decrement An
38305  str r11,[r7,r2,lsl #2]
38306;@ EaRead : Read '-(a0)' (address in r11) into r0:
38307  str r4,[r7,#0x40] ;@ Save PC
38308  bic r0,r11,#0xff000000
38309  bl m68k_read16 ;@ Call read16(r0) handler
38310
38311  and r2,r8,#0x0e00 ;@ Get quick value
38312
38313  mov r0,r0,asl #16
38314
38315  adds r1,r0,r2,lsl #7
38316  mrs r10,cpsr ;@ r10=flags
38317  str r10,[r7,#0x4c] ;@ Save X bit
38318
38319;@ EaWrite: Write r1 into '-(a0)' (address in r11):
38320  mov r1,r1,lsr #16
38321  bic r0,r11,#0xff000000
38322  bl m68k_write16 ;@ Call write16(r0,r1) handler
38323
38324  ldr r5,[r7,#0x5c] ;@ Load Cycles
38325  ldrh r8,[r4],#2 ;@ Fetch next opcode
38326  subs r5,r5,#14 ;@ Subtract cycles
38327  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38328  b CycloneEnd
38329
38330;@ ---------- [5e68] addq.w #7, ($3333,a0) uses Op5e68 ----------
38331Op5e68:
38332  str r4,[r7,#0x50] ;@ Save prev PC + 2
38333  str r5,[r7,#0x5c] ;@ Save Cycles
38334
38335;@ EaCalc : Get '($3333,a0)' into r11:
38336  ldrsh r0,[r4],#2 ;@ Fetch offset
38337  and r2,r8,#0x000f
38338  ldr r2,[r7,r2,lsl #2]
38339  add r11,r0,r2 ;@ Add on offset
38340;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
38341  str r4,[r7,#0x40] ;@ Save PC
38342  bic r0,r11,#0xff000000
38343  bl m68k_read16 ;@ Call read16(r0) handler
38344
38345  and r2,r8,#0x0e00 ;@ Get quick value
38346
38347  mov r0,r0,asl #16
38348
38349  adds r1,r0,r2,lsl #7
38350  mrs r10,cpsr ;@ r10=flags
38351  str r10,[r7,#0x4c] ;@ Save X bit
38352
38353;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
38354  mov r1,r1,lsr #16
38355  bic r0,r11,#0xff000000
38356  bl m68k_write16 ;@ Call write16(r0,r1) handler
38357
38358  ldr r5,[r7,#0x5c] ;@ Load Cycles
38359  ldrh r8,[r4],#2 ;@ Fetch next opcode
38360  subs r5,r5,#16 ;@ Subtract cycles
38361  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38362  b CycloneEnd
38363
38364;@ ---------- [5e70] addq.w #7, ($33,a0,d3.w*2) uses Op5e70 ----------
38365Op5e70:
38366  str r4,[r7,#0x50] ;@ Save prev PC + 2
38367  str r5,[r7,#0x5c] ;@ Save Cycles
38368
38369;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
38370;@ Get extension word into r3:
38371  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
38372  mov r2,r3,lsr #10
38373  tst r3,#0x0800 ;@ Is Rn Word or Long
38374  and r2,r2,#0x3c ;@ r2=Index of Rn
38375  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
38376  ldrne   r2,[r7,r2] ;@ r2=Rn.l
38377  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
38378  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
38379  and r2,r8,#0x000f
38380  orr r2,r2,#0x8 ;@ A0-7
38381  ldr r2,[r7,r2,lsl #2]
38382  add r11,r2,r3 ;@ r11=Disp+An+Rn
38383;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
38384  str r4,[r7,#0x40] ;@ Save PC
38385  bic r0,r11,#0xff000000
38386  bl m68k_read16 ;@ Call read16(r0) handler
38387
38388  and r2,r8,#0x0e00 ;@ Get quick value
38389
38390  mov r0,r0,asl #16
38391
38392  adds r1,r0,r2,lsl #7
38393  mrs r10,cpsr ;@ r10=flags
38394  str r10,[r7,#0x4c] ;@ Save X bit
38395
38396;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
38397  mov r1,r1,lsr #16
38398  bic r0,r11,#0xff000000
38399  bl m68k_write16 ;@ Call write16(r0,r1) handler
38400
38401  ldr r5,[r7,#0x5c] ;@ Load Cycles
38402  ldrh r8,[r4],#2 ;@ Fetch next opcode
38403  subs r5,r5,#18 ;@ Subtract cycles
38404  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38405  b CycloneEnd
38406
38407;@ ---------- [5e78] addq.w #7, $3333.w uses Op5e78 ----------
38408Op5e78:
38409  str r4,[r7,#0x50] ;@ Save prev PC + 2
38410  str r5,[r7,#0x5c] ;@ Save Cycles
38411
38412;@ EaCalc : Get '$3333.w' into r11:
38413  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
38414;@ EaRead : Read '$3333.w' (address in r11) into r0:
38415  str r4,[r7,#0x40] ;@ Save PC
38416  bic r0,r11,#0xff000000
38417  bl m68k_read16 ;@ Call read16(r0) handler
38418
38419  and r2,r8,#0x0e00 ;@ Get quick value
38420
38421  mov r0,r0,asl #16
38422
38423  adds r1,r0,r2,lsl #7
38424  mrs r10,cpsr ;@ r10=flags
38425  str r10,[r7,#0x4c] ;@ Save X bit
38426
38427;@ EaWrite: Write r1 into '$3333.w' (address in r11):
38428  mov r1,r1,lsr #16
38429  bic r0,r11,#0xff000000
38430  bl m68k_write16 ;@ Call write16(r0,r1) handler
38431
38432  ldr r5,[r7,#0x5c] ;@ Load Cycles
38433  ldrh r8,[r4],#2 ;@ Fetch next opcode
38434  subs r5,r5,#16 ;@ Subtract cycles
38435  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38436  b CycloneEnd
38437
38438;@ ---------- [5e79] addq.w #7, $33333333.l uses Op5e79 ----------
38439Op5e79:
38440  str r4,[r7,#0x50] ;@ Save prev PC + 2
38441  str r5,[r7,#0x5c] ;@ Save Cycles
38442
38443;@ EaCalc : Get '$33333333.l' into r11:
38444  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
38445  ldrh r0,[r4],#2
38446  orr r11,r0,r2,lsl #16
38447;@ EaRead : Read '$33333333.l' (address in r11) into r0:
38448  str r4,[r7,#0x40] ;@ Save PC
38449  bic r0,r11,#0xff000000
38450  bl m68k_read16 ;@ Call read16(r0) handler
38451
38452  and r2,r8,#0x0e00 ;@ Get quick value
38453
38454  mov r0,r0,asl #16
38455
38456  adds r1,r0,r2,lsl #7
38457  mrs r10,cpsr ;@ r10=flags
38458  str r10,[r7,#0x4c] ;@ Save X bit
38459
38460;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
38461  mov r1,r1,lsr #16
38462  bic r0,r11,#0xff000000
38463  bl m68k_write16 ;@ Call write16(r0,r1) handler
38464
38465  ldr r5,[r7,#0x5c] ;@ Load Cycles
38466  ldrh r8,[r4],#2 ;@ Fetch next opcode
38467  subs r5,r5,#20 ;@ Subtract cycles
38468  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38469  b CycloneEnd
38470
38471;@ ---------- [5e80] addq.l #7, d0 uses Op5e80 ----------
38472Op5e80:
38473;@ EaCalc : Get register index into r11:
38474  and r11,r8,#0x000f
38475;@ EaRead : Read register[r11] into r0:
38476  ldr r0,[r7,r11,lsl #2]
38477
38478  and r2,r8,#0x0e00 ;@ Get quick value
38479
38480  adds r1,r0,r2,lsr #9
38481  mrs r10,cpsr ;@ r10=flags
38482  str r10,[r7,#0x4c] ;@ Save X bit
38483
38484;@ EaWrite: r1 into register[r11]:
38485  str r1,[r7,r11,lsl #2]
38486
38487  ldrh r8,[r4],#2 ;@ Fetch next opcode
38488  subs r5,r5,#8 ;@ Subtract cycles
38489  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38490  b CycloneEnd
38491
38492;@ ---------- [5e88] addq.l #7, a0 uses Op5e88 ----------
38493Op5e88:
38494;@ EaCalc : Get register index into r11:
38495  and r11,r8,#0x000f
38496;@ EaRead : Read register[r11] into r0:
38497  ldr r0,[r7,r11,lsl #2]
38498
38499  and r2,r8,#0x0e00 ;@ Get quick value
38500
38501  adds r1,r0,r2,lsr #9
38502
38503;@ EaWrite: r1 into register[r11]:
38504  str r1,[r7,r11,lsl #2]
38505
38506  ldrh r8,[r4],#2 ;@ Fetch next opcode
38507  subs r5,r5,#8 ;@ Subtract cycles
38508  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38509  b CycloneEnd
38510
38511;@ ---------- [5e90] addq.l #7, (a0) uses Op5e90 ----------
38512Op5e90:
38513  str r4,[r7,#0x50] ;@ Save prev PC + 2
38514  str r5,[r7,#0x5c] ;@ Save Cycles
38515
38516;@ EaCalc : Get '(a0)' into r11:
38517  and r2,r8,#0x000f
38518  orr r2,r2,#0x8 ;@ A0-7
38519  ldr r11,[r7,r2,lsl #2]
38520;@ EaRead : Read '(a0)' (address in r11) into r0:
38521  str r4,[r7,#0x40] ;@ Save PC
38522  bic r0,r11,#0xff000000
38523  bl m68k_read32 ;@ Call read32(r0) handler
38524
38525  and r2,r8,#0x0e00 ;@ Get quick value
38526
38527  adds r1,r0,r2,lsr #9
38528  mrs r10,cpsr ;@ r10=flags
38529  str r10,[r7,#0x4c] ;@ Save X bit
38530
38531;@ EaWrite: Write r1 into '(a0)' (address in r11):
38532  bic r0,r11,#0xff000000
38533  bl m68k_write32 ;@ Call write32(r0,r1) handler
38534
38535  ldr r5,[r7,#0x5c] ;@ Load Cycles
38536  ldrh r8,[r4],#2 ;@ Fetch next opcode
38537  subs r5,r5,#20 ;@ Subtract cycles
38538  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38539  b CycloneEnd
38540
38541;@ ---------- [5e98] addq.l #7, (a0)+ uses Op5e98 ----------
38542Op5e98:
38543  str r4,[r7,#0x50] ;@ Save prev PC + 2
38544  str r5,[r7,#0x5c] ;@ Save Cycles
38545
38546;@ EaCalc : Get '(a0)+' into r11:
38547  and r2,r8,#0x000f
38548  ldr r11,[r7,r2,lsl #2]
38549  add r3,r11,#4 ;@ Post-increment An
38550  str r3,[r7,r2,lsl #2]
38551;@ EaRead : Read '(a0)+' (address in r11) into r0:
38552  str r4,[r7,#0x40] ;@ Save PC
38553  bic r0,r11,#0xff000000
38554  bl m68k_read32 ;@ Call read32(r0) handler
38555
38556  and r2,r8,#0x0e00 ;@ Get quick value
38557
38558  adds r1,r0,r2,lsr #9
38559  mrs r10,cpsr ;@ r10=flags
38560  str r10,[r7,#0x4c] ;@ Save X bit
38561
38562;@ EaWrite: Write r1 into '(a0)+' (address in r11):
38563  bic r0,r11,#0xff000000
38564  bl m68k_write32 ;@ Call write32(r0,r1) handler
38565
38566  ldr r5,[r7,#0x5c] ;@ Load Cycles
38567  ldrh r8,[r4],#2 ;@ Fetch next opcode
38568  subs r5,r5,#20 ;@ Subtract cycles
38569  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38570  b CycloneEnd
38571
38572;@ ---------- [5ea0] addq.l #7, -(a0) uses Op5ea0 ----------
38573Op5ea0:
38574  str r4,[r7,#0x50] ;@ Save prev PC + 2
38575  str r5,[r7,#0x5c] ;@ Save Cycles
38576
38577;@ EaCalc : Get '-(a0)' into r11:
38578  and r2,r8,#0x000f
38579  orr r2,r2,#0x8 ;@ A0-7
38580  ldr r11,[r7,r2,lsl #2]
38581  sub r11,r11,#4 ;@ Pre-decrement An
38582  str r11,[r7,r2,lsl #2]
38583;@ EaRead : Read '-(a0)' (address in r11) into r0:
38584  str r4,[r7,#0x40] ;@ Save PC
38585  bic r0,r11,#0xff000000
38586  bl m68k_read32 ;@ Call read32(r0) handler
38587
38588  and r2,r8,#0x0e00 ;@ Get quick value
38589
38590  adds r1,r0,r2,lsr #9
38591  mrs r10,cpsr ;@ r10=flags
38592  str r10,[r7,#0x4c] ;@ Save X bit
38593
38594;@ EaWrite: Write r1 into '-(a0)' (address in r11):
38595  bic r0,r11,#0xff000000
38596  bl m68k_write32 ;@ Call write32(r0,r1) handler
38597
38598  ldr r5,[r7,#0x5c] ;@ Load Cycles
38599  ldrh r8,[r4],#2 ;@ Fetch next opcode
38600  subs r5,r5,#22 ;@ Subtract cycles
38601  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38602  b CycloneEnd
38603
38604;@ ---------- [5ea8] addq.l #7, ($3333,a0) uses Op5ea8 ----------
38605Op5ea8:
38606  str r4,[r7,#0x50] ;@ Save prev PC + 2
38607  str r5,[r7,#0x5c] ;@ Save Cycles
38608
38609;@ EaCalc : Get '($3333,a0)' into r11:
38610  ldrsh r0,[r4],#2 ;@ Fetch offset
38611  and r2,r8,#0x000f
38612  ldr r2,[r7,r2,lsl #2]
38613  add r11,r0,r2 ;@ Add on offset
38614;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
38615  str r4,[r7,#0x40] ;@ Save PC
38616  bic r0,r11,#0xff000000
38617  bl m68k_read32 ;@ Call read32(r0) handler
38618
38619  and r2,r8,#0x0e00 ;@ Get quick value
38620
38621  adds r1,r0,r2,lsr #9
38622  mrs r10,cpsr ;@ r10=flags
38623  str r10,[r7,#0x4c] ;@ Save X bit
38624
38625;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
38626  bic r0,r11,#0xff000000
38627  bl m68k_write32 ;@ Call write32(r0,r1) handler
38628
38629  ldr r5,[r7,#0x5c] ;@ Load Cycles
38630  ldrh r8,[r4],#2 ;@ Fetch next opcode
38631  subs r5,r5,#24 ;@ Subtract cycles
38632  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38633  b CycloneEnd
38634
38635;@ ---------- [5eb0] addq.l #7, ($33,a0,d3.w*2) uses Op5eb0 ----------
38636Op5eb0:
38637  str r4,[r7,#0x50] ;@ Save prev PC + 2
38638  str r5,[r7,#0x5c] ;@ Save Cycles
38639
38640;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
38641;@ Get extension word into r3:
38642  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
38643  mov r2,r3,lsr #10
38644  tst r3,#0x0800 ;@ Is Rn Word or Long
38645  and r2,r2,#0x3c ;@ r2=Index of Rn
38646  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
38647  ldrne   r2,[r7,r2] ;@ r2=Rn.l
38648  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
38649  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
38650  and r2,r8,#0x000f
38651  orr r2,r2,#0x8 ;@ A0-7
38652  ldr r2,[r7,r2,lsl #2]
38653  add r11,r2,r3 ;@ r11=Disp+An+Rn
38654;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
38655  str r4,[r7,#0x40] ;@ Save PC
38656  bic r0,r11,#0xff000000
38657  bl m68k_read32 ;@ Call read32(r0) handler
38658
38659  and r2,r8,#0x0e00 ;@ Get quick value
38660
38661  adds r1,r0,r2,lsr #9
38662  mrs r10,cpsr ;@ r10=flags
38663  str r10,[r7,#0x4c] ;@ Save X bit
38664
38665;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
38666  bic r0,r11,#0xff000000
38667  bl m68k_write32 ;@ Call write32(r0,r1) handler
38668
38669  ldr r5,[r7,#0x5c] ;@ Load Cycles
38670  ldrh r8,[r4],#2 ;@ Fetch next opcode
38671  subs r5,r5,#26 ;@ Subtract cycles
38672  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38673  b CycloneEnd
38674
38675;@ ---------- [5eb8] addq.l #7, $3333.w uses Op5eb8 ----------
38676Op5eb8:
38677  str r4,[r7,#0x50] ;@ Save prev PC + 2
38678  str r5,[r7,#0x5c] ;@ Save Cycles
38679
38680;@ EaCalc : Get '$3333.w' into r11:
38681  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
38682;@ EaRead : Read '$3333.w' (address in r11) into r0:
38683  str r4,[r7,#0x40] ;@ Save PC
38684  bic r0,r11,#0xff000000
38685  bl m68k_read32 ;@ Call read32(r0) handler
38686
38687  and r2,r8,#0x0e00 ;@ Get quick value
38688
38689  adds r1,r0,r2,lsr #9
38690  mrs r10,cpsr ;@ r10=flags
38691  str r10,[r7,#0x4c] ;@ Save X bit
38692
38693;@ EaWrite: Write r1 into '$3333.w' (address in r11):
38694  bic r0,r11,#0xff000000
38695  bl m68k_write32 ;@ Call write32(r0,r1) handler
38696
38697  ldr r5,[r7,#0x5c] ;@ Load Cycles
38698  ldrh r8,[r4],#2 ;@ Fetch next opcode
38699  subs r5,r5,#24 ;@ Subtract cycles
38700  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38701  b CycloneEnd
38702
38703;@ ---------- [5eb9] addq.l #7, $33333333.l uses Op5eb9 ----------
38704Op5eb9:
38705  str r4,[r7,#0x50] ;@ Save prev PC + 2
38706  str r5,[r7,#0x5c] ;@ Save Cycles
38707
38708;@ EaCalc : Get '$33333333.l' into r11:
38709  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
38710  ldrh r0,[r4],#2
38711  orr r11,r0,r2,lsl #16
38712;@ EaRead : Read '$33333333.l' (address in r11) into r0:
38713  str r4,[r7,#0x40] ;@ Save PC
38714  bic r0,r11,#0xff000000
38715  bl m68k_read32 ;@ Call read32(r0) handler
38716
38717  and r2,r8,#0x0e00 ;@ Get quick value
38718
38719  adds r1,r0,r2,lsr #9
38720  mrs r10,cpsr ;@ r10=flags
38721  str r10,[r7,#0x4c] ;@ Save X bit
38722
38723;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
38724  bic r0,r11,#0xff000000
38725  bl m68k_write32 ;@ Call write32(r0,r1) handler
38726
38727  ldr r5,[r7,#0x5c] ;@ Load Cycles
38728  ldrh r8,[r4],#2 ;@ Fetch next opcode
38729  subs r5,r5,#28 ;@ Subtract cycles
38730  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38731  b CycloneEnd
38732
38733;@ ---------- [5ec0] sgt d0 uses Op5ec0 ----------
38734Op5ec0:
38735  mov r1,#0
38736  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
38737  orrs r0,r10,lsl #1
38738  mvnpl r1,#0
38739  subpl r5,r5,#2 ;@ Extra cycles
38740
38741;@ EaCalc : Get register index into r0:
38742  and r0,r8,#0x000f
38743;@ EaWrite: r1 into register[r0]:
38744  strb r1,[r7,r0,lsl #2]
38745
38746  ldrh r8,[r4],#2 ;@ Fetch next opcode
38747  subs r5,r5,#4 ;@ Subtract cycles
38748  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38749  b CycloneEnd
38750
38751;@ ---------- [5ec8] dbgt d0, 3335 uses Op5ec8 ----------
38752Op5ec8:
38753;@ Is the condition true?
38754  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
38755  orrs r0,r10,lsl #1
38756;@ If so, don't dbra
38757  bpl DbraTrue
38758
38759;@ Decrement Dn.w
38760  and r1,r8,#0x0007
38761  mov r1,r1,lsl #2
38762  ldrsh r0,[r7,r1]
38763  strb r8,[r7,#0x45] ;@ not polling
38764  sub r0,r0,#1
38765  strh r0,[r7,r1]
38766
38767;@ Check if Dn.w is -1
38768  cmn r0,#1
38769  beq DbraMin1
38770
38771;@ Get Branch offset:
38772  ldrsh r0,[r4]
38773  add r0,r4,r0 ;@ r0 = New PC
38774  bl m68k_checkpc ;@ Call checkpc()
38775  mov r4,r0
38776  tst r4,#1 ;@ address error?
38777  bne ExceptionAddressError_r_prg_r4
38778  ldrh r8,[r4],#2 ;@ Fetch next opcode
38779  subs r5,r5,#10 ;@ Subtract cycles
38780  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38781  b CycloneEnd
38782
38783;@ ---------- [5ed0] sgt (a0) uses Op5ed0 ----------
38784Op5ed0:
38785  str r4,[r7,#0x50] ;@ Save prev PC + 2
38786  str r5,[r7,#0x5c] ;@ Save Cycles
38787
38788  mov r1,#0
38789  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
38790  orrs r0,r10,lsl #1
38791  mvnpl r1,#0
38792
38793;@ EaCalc : Get '(a0)' into r0:
38794  and r2,r8,#0x000f
38795  orr r2,r2,#0x8 ;@ A0-7
38796  ldr r0,[r7,r2,lsl #2]
38797;@ EaWrite: Write r1 into '(a0)' (address in r0):
38798  and r1,r1,#0xff
38799  str r4,[r7,#0x40] ;@ Save PC
38800  bic r0,r0,#0xff000000
38801  bl m68k_write8 ;@ Call write8(r0,r1) handler
38802
38803  ldr r5,[r7,#0x5c] ;@ Load Cycles
38804  ldrh r8,[r4],#2 ;@ Fetch next opcode
38805  subs r5,r5,#12 ;@ Subtract cycles
38806  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38807  b CycloneEnd
38808
38809;@ ---------- [5ed8] sgt (a0)+ uses Op5ed8 ----------
38810Op5ed8:
38811  str r4,[r7,#0x50] ;@ Save prev PC + 2
38812  str r5,[r7,#0x5c] ;@ Save Cycles
38813
38814  mov r1,#0
38815  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
38816  orrs r0,r10,lsl #1
38817  mvnpl r1,#0
38818
38819;@ EaCalc : Get '(a0)+' into r0:
38820  and r2,r8,#0x000f
38821  ldr r0,[r7,r2,lsl #2]
38822  add r3,r0,#1 ;@ Post-increment An
38823  str r3,[r7,r2,lsl #2]
38824;@ EaWrite: Write r1 into '(a0)+' (address in r0):
38825  and r1,r1,#0xff
38826  str r4,[r7,#0x40] ;@ Save PC
38827  bic r0,r0,#0xff000000
38828  bl m68k_write8 ;@ Call write8(r0,r1) handler
38829
38830  ldr r5,[r7,#0x5c] ;@ Load Cycles
38831  ldrh r8,[r4],#2 ;@ Fetch next opcode
38832  subs r5,r5,#12 ;@ Subtract cycles
38833  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38834  b CycloneEnd
38835
38836;@ ---------- [5edf] sgt (a7)+ uses Op5edf ----------
38837Op5edf:
38838  str r4,[r7,#0x50] ;@ Save prev PC + 2
38839  str r5,[r7,#0x5c] ;@ Save Cycles
38840
38841  mov r1,#0
38842  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
38843  orrs r0,r10,lsl #1
38844  mvnpl r1,#0
38845
38846;@ EaCalc : Get '(a7)+' into r0:
38847  ldr r0,[r7,#0x3c] ;@ A7
38848  add r3,r0,#2 ;@ Post-increment An
38849  str r3,[r7,#0x3c] ;@ A7
38850;@ EaWrite: Write r1 into '(a7)+' (address in r0):
38851  and r1,r1,#0xff
38852  str r4,[r7,#0x40] ;@ Save PC
38853  bic r0,r0,#0xff000000
38854  bl m68k_write8 ;@ Call write8(r0,r1) handler
38855
38856  ldr r5,[r7,#0x5c] ;@ Load Cycles
38857  ldrh r8,[r4],#2 ;@ Fetch next opcode
38858  subs r5,r5,#12 ;@ Subtract cycles
38859  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38860  b CycloneEnd
38861
38862;@ ---------- [5ee0] sgt -(a0) uses Op5ee0 ----------
38863Op5ee0:
38864  str r4,[r7,#0x50] ;@ Save prev PC + 2
38865  str r5,[r7,#0x5c] ;@ Save Cycles
38866
38867  mov r1,#0
38868  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
38869  orrs r0,r10,lsl #1
38870  mvnpl r1,#0
38871
38872;@ EaCalc : Get '-(a0)' into r0:
38873  and r2,r8,#0x000f
38874  orr r2,r2,#0x8 ;@ A0-7
38875  ldr r0,[r7,r2,lsl #2]
38876  sub r0,r0,#1 ;@ Pre-decrement An
38877  str r0,[r7,r2,lsl #2]
38878;@ EaWrite: Write r1 into '-(a0)' (address in r0):
38879  and r1,r1,#0xff
38880  str r4,[r7,#0x40] ;@ Save PC
38881  bic r0,r0,#0xff000000
38882  bl m68k_write8 ;@ Call write8(r0,r1) handler
38883
38884  ldr r5,[r7,#0x5c] ;@ Load Cycles
38885  ldrh r8,[r4],#2 ;@ Fetch next opcode
38886  subs r5,r5,#14 ;@ Subtract cycles
38887  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38888  b CycloneEnd
38889
38890;@ ---------- [5ee7] sgt -(a7) uses Op5ee7 ----------
38891Op5ee7:
38892  str r4,[r7,#0x50] ;@ Save prev PC + 2
38893  str r5,[r7,#0x5c] ;@ Save Cycles
38894
38895  mov r1,#0
38896  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
38897  orrs r0,r10,lsl #1
38898  mvnpl r1,#0
38899
38900;@ EaCalc : Get '-(a7)' into r0:
38901  ldr r0,[r7,#0x3c] ;@ A7
38902  sub r0,r0,#2 ;@ Pre-decrement An
38903  str r0,[r7,#0x3c] ;@ A7
38904;@ EaWrite: Write r1 into '-(a7)' (address in r0):
38905  and r1,r1,#0xff
38906  str r4,[r7,#0x40] ;@ Save PC
38907  bic r0,r0,#0xff000000
38908  bl m68k_write8 ;@ Call write8(r0,r1) handler
38909
38910  ldr r5,[r7,#0x5c] ;@ Load Cycles
38911  ldrh r8,[r4],#2 ;@ Fetch next opcode
38912  subs r5,r5,#14 ;@ Subtract cycles
38913  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38914  b CycloneEnd
38915
38916;@ ---------- [5ee8] sgt ($3333,a0) uses Op5ee8 ----------
38917Op5ee8:
38918  str r4,[r7,#0x50] ;@ Save prev PC + 2
38919  str r5,[r7,#0x5c] ;@ Save Cycles
38920
38921  mov r1,#0
38922  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
38923  orrs r0,r10,lsl #1
38924  mvnpl r1,#0
38925
38926;@ EaCalc : Get '($3333,a0)' into r0:
38927  ldrsh r0,[r4],#2 ;@ Fetch offset
38928  and r2,r8,#0x000f
38929  ldr r2,[r7,r2,lsl #2]
38930  add r0,r0,r2 ;@ Add on offset
38931;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
38932  and r1,r1,#0xff
38933  str r4,[r7,#0x40] ;@ Save PC
38934  bic r0,r0,#0xff000000
38935  bl m68k_write8 ;@ Call write8(r0,r1) handler
38936
38937  ldr r5,[r7,#0x5c] ;@ Load Cycles
38938  ldrh r8,[r4],#2 ;@ Fetch next opcode
38939  subs r5,r5,#16 ;@ Subtract cycles
38940  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38941  b CycloneEnd
38942
38943;@ ---------- [5ef0] sgt ($33,a0,d3.w*2) uses Op5ef0 ----------
38944Op5ef0:
38945  str r4,[r7,#0x50] ;@ Save prev PC + 2
38946  str r5,[r7,#0x5c] ;@ Save Cycles
38947
38948  mov r1,#0
38949  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
38950  orrs r0,r10,lsl #1
38951  mvnpl r1,#0
38952
38953;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
38954;@ Get extension word into r3:
38955  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
38956  mov r2,r3,lsr #10
38957  tst r3,#0x0800 ;@ Is Rn Word or Long
38958  and r2,r2,#0x3c ;@ r2=Index of Rn
38959  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
38960  ldrne   r2,[r7,r2] ;@ r2=Rn.l
38961  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
38962  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
38963  and r2,r8,#0x000f
38964  orr r2,r2,#0x8 ;@ A0-7
38965  ldr r2,[r7,r2,lsl #2]
38966  add r0,r2,r3 ;@ r0=Disp+An+Rn
38967;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
38968  and r1,r1,#0xff
38969  str r4,[r7,#0x40] ;@ Save PC
38970  bic r0,r0,#0xff000000
38971  bl m68k_write8 ;@ Call write8(r0,r1) handler
38972
38973  ldr r5,[r7,#0x5c] ;@ Load Cycles
38974  ldrh r8,[r4],#2 ;@ Fetch next opcode
38975  subs r5,r5,#18 ;@ Subtract cycles
38976  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38977  b CycloneEnd
38978
38979;@ ---------- [5ef8] sgt $3333.w uses Op5ef8 ----------
38980Op5ef8:
38981  str r4,[r7,#0x50] ;@ Save prev PC + 2
38982  str r5,[r7,#0x5c] ;@ Save Cycles
38983
38984  mov r1,#0
38985  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
38986  orrs r0,r10,lsl #1
38987  mvnpl r1,#0
38988
38989;@ EaCalc : Get '$3333.w' into r0:
38990  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
38991;@ EaWrite: Write r1 into '$3333.w' (address in r0):
38992  and r1,r1,#0xff
38993  str r4,[r7,#0x40] ;@ Save PC
38994  bic r0,r0,#0xff000000
38995  bl m68k_write8 ;@ Call write8(r0,r1) handler
38996
38997  ldr r5,[r7,#0x5c] ;@ Load Cycles
38998  ldrh r8,[r4],#2 ;@ Fetch next opcode
38999  subs r5,r5,#16 ;@ Subtract cycles
39000  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39001  b CycloneEnd
39002
39003;@ ---------- [5ef9] sgt $33333333.l uses Op5ef9 ----------
39004Op5ef9:
39005  str r4,[r7,#0x50] ;@ Save prev PC + 2
39006  str r5,[r7,#0x5c] ;@ Save Cycles
39007
39008  mov r1,#0
39009  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
39010  orrs r0,r10,lsl #1
39011  mvnpl r1,#0
39012
39013;@ EaCalc : Get '$33333333.l' into r0:
39014  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
39015  ldrh r0,[r4],#2
39016  orr r0,r0,r2,lsl #16
39017;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
39018  and r1,r1,#0xff
39019  str r4,[r7,#0x40] ;@ Save PC
39020  bic r0,r0,#0xff000000
39021  bl m68k_write8 ;@ Call write8(r0,r1) handler
39022
39023  ldr r5,[r7,#0x5c] ;@ Load Cycles
39024  ldrh r8,[r4],#2 ;@ Fetch next opcode
39025  subs r5,r5,#20 ;@ Subtract cycles
39026  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39027  b CycloneEnd
39028
39029;@ ---------- [5f00] subq.b #7, d0 uses Op5f00 ----------
39030Op5f00:
39031;@ EaCalc : Get register index into r11:
39032  and r11,r8,#0x000f
39033;@ EaRead : Read register[r11] into r0:
39034  ldr r0,[r7,r11,lsl #2]
39035
39036  and r2,r8,#0x0e00 ;@ Get quick value
39037
39038  mov r0,r0,asl #24
39039
39040  subs r1,r0,r2,lsl #15
39041  mrs r10,cpsr ;@ r10=flags
39042  eor r10,r10,#0x20000000 ;@ Invert carry
39043  str r10,[r7,#0x4c] ;@ Save X bit
39044
39045;@ EaWrite: r1 into register[r11]:
39046  mov r1,r1,lsr #24
39047  strb r1,[r7,r11,lsl #2]
39048
39049  ldrh r8,[r4],#2 ;@ Fetch next opcode
39050  subs r5,r5,#4 ;@ Subtract cycles
39051  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39052  b CycloneEnd
39053
39054;@ ---------- [5f10] subq.b #7, (a0) uses Op5f10 ----------
39055Op5f10:
39056  str r4,[r7,#0x50] ;@ Save prev PC + 2
39057  str r5,[r7,#0x5c] ;@ Save Cycles
39058
39059;@ EaCalc : Get '(a0)' into r11:
39060  and r2,r8,#0x000f
39061  orr r2,r2,#0x8 ;@ A0-7
39062  ldr r11,[r7,r2,lsl #2]
39063;@ EaRead : Read '(a0)' (address in r11) into r0:
39064  str r4,[r7,#0x40] ;@ Save PC
39065  bic r0,r11,#0xff000000
39066  bl m68k_read8 ;@ Call read8(r0) handler
39067
39068  and r2,r8,#0x0e00 ;@ Get quick value
39069
39070  mov r0,r0,asl #24
39071
39072  subs r1,r0,r2,lsl #15
39073  mrs r10,cpsr ;@ r10=flags
39074  eor r10,r10,#0x20000000 ;@ Invert carry
39075  str r10,[r7,#0x4c] ;@ Save X bit
39076
39077;@ EaWrite: Write r1 into '(a0)' (address in r11):
39078  mov r1,r1,lsr #24
39079  bic r0,r11,#0xff000000
39080  bl m68k_write8 ;@ Call write8(r0,r1) handler
39081
39082  ldr r5,[r7,#0x5c] ;@ Load Cycles
39083  ldrh r8,[r4],#2 ;@ Fetch next opcode
39084  subs r5,r5,#12 ;@ Subtract cycles
39085  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39086  b CycloneEnd
39087
39088;@ ---------- [5f18] subq.b #7, (a0)+ uses Op5f18 ----------
39089Op5f18:
39090  str r4,[r7,#0x50] ;@ Save prev PC + 2
39091  str r5,[r7,#0x5c] ;@ Save Cycles
39092
39093;@ EaCalc : Get '(a0)+' into r11:
39094  and r2,r8,#0x000f
39095  ldr r11,[r7,r2,lsl #2]
39096  add r3,r11,#1 ;@ Post-increment An
39097  str r3,[r7,r2,lsl #2]
39098;@ EaRead : Read '(a0)+' (address in r11) into r0:
39099  str r4,[r7,#0x40] ;@ Save PC
39100  bic r0,r11,#0xff000000
39101  bl m68k_read8 ;@ Call read8(r0) handler
39102
39103  and r2,r8,#0x0e00 ;@ Get quick value
39104
39105  mov r0,r0,asl #24
39106
39107  subs r1,r0,r2,lsl #15
39108  mrs r10,cpsr ;@ r10=flags
39109  eor r10,r10,#0x20000000 ;@ Invert carry
39110  str r10,[r7,#0x4c] ;@ Save X bit
39111
39112;@ EaWrite: Write r1 into '(a0)+' (address in r11):
39113  mov r1,r1,lsr #24
39114  bic r0,r11,#0xff000000
39115  bl m68k_write8 ;@ Call write8(r0,r1) handler
39116
39117  ldr r5,[r7,#0x5c] ;@ Load Cycles
39118  ldrh r8,[r4],#2 ;@ Fetch next opcode
39119  subs r5,r5,#12 ;@ Subtract cycles
39120  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39121  b CycloneEnd
39122
39123;@ ---------- [5f1f] subq.b #7, (a7)+ uses Op5f1f ----------
39124Op5f1f:
39125  str r4,[r7,#0x50] ;@ Save prev PC + 2
39126  str r5,[r7,#0x5c] ;@ Save Cycles
39127
39128;@ EaCalc : Get '(a7)+' into r11:
39129  ldr r11,[r7,#0x3c] ;@ A7
39130  add r3,r11,#2 ;@ Post-increment An
39131  str r3,[r7,#0x3c] ;@ A7
39132;@ EaRead : Read '(a7)+' (address in r11) into r0:
39133  str r4,[r7,#0x40] ;@ Save PC
39134  bic r0,r11,#0xff000000
39135  bl m68k_read8 ;@ Call read8(r0) handler
39136
39137  and r2,r8,#0x0e00 ;@ Get quick value
39138
39139  mov r0,r0,asl #24
39140
39141  subs r1,r0,r2,lsl #15
39142  mrs r10,cpsr ;@ r10=flags
39143  eor r10,r10,#0x20000000 ;@ Invert carry
39144  str r10,[r7,#0x4c] ;@ Save X bit
39145
39146;@ EaWrite: Write r1 into '(a7)+' (address in r11):
39147  mov r1,r1,lsr #24
39148  bic r0,r11,#0xff000000
39149  bl m68k_write8 ;@ Call write8(r0,r1) handler
39150
39151  ldr r5,[r7,#0x5c] ;@ Load Cycles
39152  ldrh r8,[r4],#2 ;@ Fetch next opcode
39153  subs r5,r5,#12 ;@ Subtract cycles
39154  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39155  b CycloneEnd
39156
39157;@ ---------- [5f20] subq.b #7, -(a0) uses Op5f20 ----------
39158Op5f20:
39159  str r4,[r7,#0x50] ;@ Save prev PC + 2
39160  str r5,[r7,#0x5c] ;@ Save Cycles
39161
39162;@ EaCalc : Get '-(a0)' into r11:
39163  and r2,r8,#0x000f
39164  orr r2,r2,#0x8 ;@ A0-7
39165  ldr r11,[r7,r2,lsl #2]
39166  sub r11,r11,#1 ;@ Pre-decrement An
39167  str r11,[r7,r2,lsl #2]
39168;@ EaRead : Read '-(a0)' (address in r11) into r0:
39169  str r4,[r7,#0x40] ;@ Save PC
39170  bic r0,r11,#0xff000000
39171  bl m68k_read8 ;@ Call read8(r0) handler
39172
39173  and r2,r8,#0x0e00 ;@ Get quick value
39174
39175  mov r0,r0,asl #24
39176
39177  subs r1,r0,r2,lsl #15
39178  mrs r10,cpsr ;@ r10=flags
39179  eor r10,r10,#0x20000000 ;@ Invert carry
39180  str r10,[r7,#0x4c] ;@ Save X bit
39181
39182;@ EaWrite: Write r1 into '-(a0)' (address in r11):
39183  mov r1,r1,lsr #24
39184  bic r0,r11,#0xff000000
39185  bl m68k_write8 ;@ Call write8(r0,r1) handler
39186
39187  ldr r5,[r7,#0x5c] ;@ Load Cycles
39188  ldrh r8,[r4],#2 ;@ Fetch next opcode
39189  subs r5,r5,#14 ;@ Subtract cycles
39190  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39191  b CycloneEnd
39192
39193;@ ---------- [5f27] subq.b #7, -(a7) uses Op5f27 ----------
39194Op5f27:
39195  str r4,[r7,#0x50] ;@ Save prev PC + 2
39196  str r5,[r7,#0x5c] ;@ Save Cycles
39197
39198;@ EaCalc : Get '-(a7)' into r11:
39199  ldr r11,[r7,#0x3c] ;@ A7
39200  sub r11,r11,#2 ;@ Pre-decrement An
39201  str r11,[r7,#0x3c] ;@ A7
39202;@ EaRead : Read '-(a7)' (address in r11) into r0:
39203  str r4,[r7,#0x40] ;@ Save PC
39204  bic r0,r11,#0xff000000
39205  bl m68k_read8 ;@ Call read8(r0) handler
39206
39207  and r2,r8,#0x0e00 ;@ Get quick value
39208
39209  mov r0,r0,asl #24
39210
39211  subs r1,r0,r2,lsl #15
39212  mrs r10,cpsr ;@ r10=flags
39213  eor r10,r10,#0x20000000 ;@ Invert carry
39214  str r10,[r7,#0x4c] ;@ Save X bit
39215
39216;@ EaWrite: Write r1 into '-(a7)' (address in r11):
39217  mov r1,r1,lsr #24
39218  bic r0,r11,#0xff000000
39219  bl m68k_write8 ;@ Call write8(r0,r1) handler
39220
39221  ldr r5,[r7,#0x5c] ;@ Load Cycles
39222  ldrh r8,[r4],#2 ;@ Fetch next opcode
39223  subs r5,r5,#14 ;@ Subtract cycles
39224  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39225  b CycloneEnd
39226
39227;@ ---------- [5f28] subq.b #7, ($3333,a0) uses Op5f28 ----------
39228Op5f28:
39229  str r4,[r7,#0x50] ;@ Save prev PC + 2
39230  str r5,[r7,#0x5c] ;@ Save Cycles
39231
39232;@ EaCalc : Get '($3333,a0)' into r11:
39233  ldrsh r0,[r4],#2 ;@ Fetch offset
39234  and r2,r8,#0x000f
39235  ldr r2,[r7,r2,lsl #2]
39236  add r11,r0,r2 ;@ Add on offset
39237;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
39238  str r4,[r7,#0x40] ;@ Save PC
39239  bic r0,r11,#0xff000000
39240  bl m68k_read8 ;@ Call read8(r0) handler
39241
39242  and r2,r8,#0x0e00 ;@ Get quick value
39243
39244  mov r0,r0,asl #24
39245
39246  subs r1,r0,r2,lsl #15
39247  mrs r10,cpsr ;@ r10=flags
39248  eor r10,r10,#0x20000000 ;@ Invert carry
39249  str r10,[r7,#0x4c] ;@ Save X bit
39250
39251;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
39252  mov r1,r1,lsr #24
39253  bic r0,r11,#0xff000000
39254  bl m68k_write8 ;@ Call write8(r0,r1) handler
39255
39256  ldr r5,[r7,#0x5c] ;@ Load Cycles
39257  ldrh r8,[r4],#2 ;@ Fetch next opcode
39258  subs r5,r5,#16 ;@ Subtract cycles
39259  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39260  b CycloneEnd
39261
39262;@ ---------- [5f30] subq.b #7, ($33,a0,d3.w*2) uses Op5f30 ----------
39263Op5f30:
39264  str r4,[r7,#0x50] ;@ Save prev PC + 2
39265  str r5,[r7,#0x5c] ;@ Save Cycles
39266
39267;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
39268;@ Get extension word into r3:
39269  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
39270  mov r2,r3,lsr #10
39271  tst r3,#0x0800 ;@ Is Rn Word or Long
39272  and r2,r2,#0x3c ;@ r2=Index of Rn
39273  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
39274  ldrne   r2,[r7,r2] ;@ r2=Rn.l
39275  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
39276  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
39277  and r2,r8,#0x000f
39278  orr r2,r2,#0x8 ;@ A0-7
39279  ldr r2,[r7,r2,lsl #2]
39280  add r11,r2,r3 ;@ r11=Disp+An+Rn
39281;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
39282  str r4,[r7,#0x40] ;@ Save PC
39283  bic r0,r11,#0xff000000
39284  bl m68k_read8 ;@ Call read8(r0) handler
39285
39286  and r2,r8,#0x0e00 ;@ Get quick value
39287
39288  mov r0,r0,asl #24
39289
39290  subs r1,r0,r2,lsl #15
39291  mrs r10,cpsr ;@ r10=flags
39292  eor r10,r10,#0x20000000 ;@ Invert carry
39293  str r10,[r7,#0x4c] ;@ Save X bit
39294
39295;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
39296  mov r1,r1,lsr #24
39297  bic r0,r11,#0xff000000
39298  bl m68k_write8 ;@ Call write8(r0,r1) handler
39299
39300  ldr r5,[r7,#0x5c] ;@ Load Cycles
39301  ldrh r8,[r4],#2 ;@ Fetch next opcode
39302  subs r5,r5,#18 ;@ Subtract cycles
39303  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39304  b CycloneEnd
39305
39306;@ ---------- [5f38] subq.b #7, $3333.w uses Op5f38 ----------
39307Op5f38:
39308  str r4,[r7,#0x50] ;@ Save prev PC + 2
39309  str r5,[r7,#0x5c] ;@ Save Cycles
39310
39311;@ EaCalc : Get '$3333.w' into r11:
39312  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
39313;@ EaRead : Read '$3333.w' (address in r11) into r0:
39314  str r4,[r7,#0x40] ;@ Save PC
39315  bic r0,r11,#0xff000000
39316  bl m68k_read8 ;@ Call read8(r0) handler
39317
39318  and r2,r8,#0x0e00 ;@ Get quick value
39319
39320  mov r0,r0,asl #24
39321
39322  subs r1,r0,r2,lsl #15
39323  mrs r10,cpsr ;@ r10=flags
39324  eor r10,r10,#0x20000000 ;@ Invert carry
39325  str r10,[r7,#0x4c] ;@ Save X bit
39326
39327;@ EaWrite: Write r1 into '$3333.w' (address in r11):
39328  mov r1,r1,lsr #24
39329  bic r0,r11,#0xff000000
39330  bl m68k_write8 ;@ Call write8(r0,r1) handler
39331
39332  ldr r5,[r7,#0x5c] ;@ Load Cycles
39333  ldrh r8,[r4],#2 ;@ Fetch next opcode
39334  subs r5,r5,#16 ;@ Subtract cycles
39335  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39336  b CycloneEnd
39337
39338;@ ---------- [5f39] subq.b #7, $33333333.l uses Op5f39 ----------
39339Op5f39:
39340  str r4,[r7,#0x50] ;@ Save prev PC + 2
39341  str r5,[r7,#0x5c] ;@ Save Cycles
39342
39343;@ EaCalc : Get '$33333333.l' into r11:
39344  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
39345  ldrh r0,[r4],#2
39346  orr r11,r0,r2,lsl #16
39347;@ EaRead : Read '$33333333.l' (address in r11) into r0:
39348  str r4,[r7,#0x40] ;@ Save PC
39349  bic r0,r11,#0xff000000
39350  bl m68k_read8 ;@ Call read8(r0) handler
39351
39352  and r2,r8,#0x0e00 ;@ Get quick value
39353
39354  mov r0,r0,asl #24
39355
39356  subs r1,r0,r2,lsl #15
39357  mrs r10,cpsr ;@ r10=flags
39358  eor r10,r10,#0x20000000 ;@ Invert carry
39359  str r10,[r7,#0x4c] ;@ Save X bit
39360
39361;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
39362  mov r1,r1,lsr #24
39363  bic r0,r11,#0xff000000
39364  bl m68k_write8 ;@ Call write8(r0,r1) handler
39365
39366  ldr r5,[r7,#0x5c] ;@ Load Cycles
39367  ldrh r8,[r4],#2 ;@ Fetch next opcode
39368  subs r5,r5,#20 ;@ Subtract cycles
39369  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39370  b CycloneEnd
39371
39372;@ ---------- [5f40] subq.w #7, d0 uses Op5f40 ----------
39373Op5f40:
39374;@ EaCalc : Get register index into r11:
39375  and r11,r8,#0x000f
39376  mov r11,r11,lsl #2
39377;@ EaRead : Read register[r11] into r0:
39378  ldr r0,[r7,r11]
39379
39380  and r2,r8,#0x0e00 ;@ Get quick value
39381
39382  mov r0,r0,asl #16
39383
39384  subs r1,r0,r2,lsl #7
39385  mrs r10,cpsr ;@ r10=flags
39386  eor r10,r10,#0x20000000 ;@ Invert carry
39387  str r10,[r7,#0x4c] ;@ Save X bit
39388
39389;@ EaWrite: r1 into register[r11]:
39390  mov r1,r1,lsr #16
39391  strh r1,[r7,r11]
39392
39393  ldrh r8,[r4],#2 ;@ Fetch next opcode
39394  subs r5,r5,#4 ;@ Subtract cycles
39395  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39396  b CycloneEnd
39397
39398;@ ---------- [5f48] subq.w #7, a0 uses Op5f48 ----------
39399Op5f48:
39400;@ EaCalc : Get register index into r11:
39401  and r11,r8,#0x000f
39402;@ EaRead : Read register[r11] into r0:
39403  ldr r0,[r7,r11,lsl #2]
39404
39405  and r2,r8,#0x0e00 ;@ Get quick value
39406
39407  subs r1,r0,r2,lsr #9
39408
39409;@ EaWrite: r1 into register[r11]:
39410  str r1,[r7,r11,lsl #2]
39411
39412  ldrh r8,[r4],#2 ;@ Fetch next opcode
39413  subs r5,r5,#8 ;@ Subtract cycles
39414  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39415  b CycloneEnd
39416
39417;@ ---------- [5f50] subq.w #7, (a0) uses Op5f50 ----------
39418Op5f50:
39419  str r4,[r7,#0x50] ;@ Save prev PC + 2
39420  str r5,[r7,#0x5c] ;@ Save Cycles
39421
39422;@ EaCalc : Get '(a0)' into r11:
39423  and r2,r8,#0x000f
39424  orr r2,r2,#0x8 ;@ A0-7
39425  ldr r11,[r7,r2,lsl #2]
39426;@ EaRead : Read '(a0)' (address in r11) into r0:
39427  str r4,[r7,#0x40] ;@ Save PC
39428  bic r0,r11,#0xff000000
39429  bl m68k_read16 ;@ Call read16(r0) handler
39430
39431  and r2,r8,#0x0e00 ;@ Get quick value
39432
39433  mov r0,r0,asl #16
39434
39435  subs r1,r0,r2,lsl #7
39436  mrs r10,cpsr ;@ r10=flags
39437  eor r10,r10,#0x20000000 ;@ Invert carry
39438  str r10,[r7,#0x4c] ;@ Save X bit
39439
39440;@ EaWrite: Write r1 into '(a0)' (address in r11):
39441  mov r1,r1,lsr #16
39442  bic r0,r11,#0xff000000
39443  bl m68k_write16 ;@ Call write16(r0,r1) handler
39444
39445  ldr r5,[r7,#0x5c] ;@ Load Cycles
39446  ldrh r8,[r4],#2 ;@ Fetch next opcode
39447  subs r5,r5,#12 ;@ Subtract cycles
39448  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39449  b CycloneEnd
39450
39451;@ ---------- [5f58] subq.w #7, (a0)+ uses Op5f58 ----------
39452Op5f58:
39453  str r4,[r7,#0x50] ;@ Save prev PC + 2
39454  str r5,[r7,#0x5c] ;@ Save Cycles
39455
39456;@ EaCalc : Get '(a0)+' into r11:
39457  and r2,r8,#0x000f
39458  ldr r11,[r7,r2,lsl #2]
39459  add r3,r11,#2 ;@ Post-increment An
39460  str r3,[r7,r2,lsl #2]
39461;@ EaRead : Read '(a0)+' (address in r11) into r0:
39462  str r4,[r7,#0x40] ;@ Save PC
39463  bic r0,r11,#0xff000000
39464  bl m68k_read16 ;@ Call read16(r0) handler
39465
39466  and r2,r8,#0x0e00 ;@ Get quick value
39467
39468  mov r0,r0,asl #16
39469
39470  subs r1,r0,r2,lsl #7
39471  mrs r10,cpsr ;@ r10=flags
39472  eor r10,r10,#0x20000000 ;@ Invert carry
39473  str r10,[r7,#0x4c] ;@ Save X bit
39474
39475;@ EaWrite: Write r1 into '(a0)+' (address in r11):
39476  mov r1,r1,lsr #16
39477  bic r0,r11,#0xff000000
39478  bl m68k_write16 ;@ Call write16(r0,r1) handler
39479
39480  ldr r5,[r7,#0x5c] ;@ Load Cycles
39481  ldrh r8,[r4],#2 ;@ Fetch next opcode
39482  subs r5,r5,#12 ;@ Subtract cycles
39483  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39484  b CycloneEnd
39485
39486;@ ---------- [5f60] subq.w #7, -(a0) uses Op5f60 ----------
39487Op5f60:
39488  str r4,[r7,#0x50] ;@ Save prev PC + 2
39489  str r5,[r7,#0x5c] ;@ Save Cycles
39490
39491;@ EaCalc : Get '-(a0)' into r11:
39492  and r2,r8,#0x000f
39493  orr r2,r2,#0x8 ;@ A0-7
39494  ldr r11,[r7,r2,lsl #2]
39495  sub r11,r11,#2 ;@ Pre-decrement An
39496  str r11,[r7,r2,lsl #2]
39497;@ EaRead : Read '-(a0)' (address in r11) into r0:
39498  str r4,[r7,#0x40] ;@ Save PC
39499  bic r0,r11,#0xff000000
39500  bl m68k_read16 ;@ Call read16(r0) handler
39501
39502  and r2,r8,#0x0e00 ;@ Get quick value
39503
39504  mov r0,r0,asl #16
39505
39506  subs r1,r0,r2,lsl #7
39507  mrs r10,cpsr ;@ r10=flags
39508  eor r10,r10,#0x20000000 ;@ Invert carry
39509  str r10,[r7,#0x4c] ;@ Save X bit
39510
39511;@ EaWrite: Write r1 into '-(a0)' (address in r11):
39512  mov r1,r1,lsr #16
39513  bic r0,r11,#0xff000000
39514  bl m68k_write16 ;@ Call write16(r0,r1) handler
39515
39516  ldr r5,[r7,#0x5c] ;@ Load Cycles
39517  ldrh r8,[r4],#2 ;@ Fetch next opcode
39518  subs r5,r5,#14 ;@ Subtract cycles
39519  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39520  b CycloneEnd
39521
39522;@ ---------- [5f68] subq.w #7, ($3333,a0) uses Op5f68 ----------
39523Op5f68:
39524  str r4,[r7,#0x50] ;@ Save prev PC + 2
39525  str r5,[r7,#0x5c] ;@ Save Cycles
39526
39527;@ EaCalc : Get '($3333,a0)' into r11:
39528  ldrsh r0,[r4],#2 ;@ Fetch offset
39529  and r2,r8,#0x000f
39530  ldr r2,[r7,r2,lsl #2]
39531  add r11,r0,r2 ;@ Add on offset
39532;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
39533  str r4,[r7,#0x40] ;@ Save PC
39534  bic r0,r11,#0xff000000
39535  bl m68k_read16 ;@ Call read16(r0) handler
39536
39537  and r2,r8,#0x0e00 ;@ Get quick value
39538
39539  mov r0,r0,asl #16
39540
39541  subs r1,r0,r2,lsl #7
39542  mrs r10,cpsr ;@ r10=flags
39543  eor r10,r10,#0x20000000 ;@ Invert carry
39544  str r10,[r7,#0x4c] ;@ Save X bit
39545
39546;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
39547  mov r1,r1,lsr #16
39548  bic r0,r11,#0xff000000
39549  bl m68k_write16 ;@ Call write16(r0,r1) handler
39550
39551  ldr r5,[r7,#0x5c] ;@ Load Cycles
39552  ldrh r8,[r4],#2 ;@ Fetch next opcode
39553  subs r5,r5,#16 ;@ Subtract cycles
39554  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39555  b CycloneEnd
39556
39557;@ ---------- [5f70] subq.w #7, ($33,a0,d3.w*2) uses Op5f70 ----------
39558Op5f70:
39559  str r4,[r7,#0x50] ;@ Save prev PC + 2
39560  str r5,[r7,#0x5c] ;@ Save Cycles
39561
39562;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
39563;@ Get extension word into r3:
39564  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
39565  mov r2,r3,lsr #10
39566  tst r3,#0x0800 ;@ Is Rn Word or Long
39567  and r2,r2,#0x3c ;@ r2=Index of Rn
39568  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
39569  ldrne   r2,[r7,r2] ;@ r2=Rn.l
39570  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
39571  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
39572  and r2,r8,#0x000f
39573  orr r2,r2,#0x8 ;@ A0-7
39574  ldr r2,[r7,r2,lsl #2]
39575  add r11,r2,r3 ;@ r11=Disp+An+Rn
39576;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
39577  str r4,[r7,#0x40] ;@ Save PC
39578  bic r0,r11,#0xff000000
39579  bl m68k_read16 ;@ Call read16(r0) handler
39580
39581  and r2,r8,#0x0e00 ;@ Get quick value
39582
39583  mov r0,r0,asl #16
39584
39585  subs r1,r0,r2,lsl #7
39586  mrs r10,cpsr ;@ r10=flags
39587  eor r10,r10,#0x20000000 ;@ Invert carry
39588  str r10,[r7,#0x4c] ;@ Save X bit
39589
39590;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
39591  mov r1,r1,lsr #16
39592  bic r0,r11,#0xff000000
39593  bl m68k_write16 ;@ Call write16(r0,r1) handler
39594
39595  ldr r5,[r7,#0x5c] ;@ Load Cycles
39596  ldrh r8,[r4],#2 ;@ Fetch next opcode
39597  subs r5,r5,#18 ;@ Subtract cycles
39598  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39599  b CycloneEnd
39600
39601;@ ---------- [5f78] subq.w #7, $3333.w uses Op5f78 ----------
39602Op5f78:
39603  str r4,[r7,#0x50] ;@ Save prev PC + 2
39604  str r5,[r7,#0x5c] ;@ Save Cycles
39605
39606;@ EaCalc : Get '$3333.w' into r11:
39607  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
39608;@ EaRead : Read '$3333.w' (address in r11) into r0:
39609  str r4,[r7,#0x40] ;@ Save PC
39610  bic r0,r11,#0xff000000
39611  bl m68k_read16 ;@ Call read16(r0) handler
39612
39613  and r2,r8,#0x0e00 ;@ Get quick value
39614
39615  mov r0,r0,asl #16
39616
39617  subs r1,r0,r2,lsl #7
39618  mrs r10,cpsr ;@ r10=flags
39619  eor r10,r10,#0x20000000 ;@ Invert carry
39620  str r10,[r7,#0x4c] ;@ Save X bit
39621
39622;@ EaWrite: Write r1 into '$3333.w' (address in r11):
39623  mov r1,r1,lsr #16
39624  bic r0,r11,#0xff000000
39625  bl m68k_write16 ;@ Call write16(r0,r1) handler
39626
39627  ldr r5,[r7,#0x5c] ;@ Load Cycles
39628  ldrh r8,[r4],#2 ;@ Fetch next opcode
39629  subs r5,r5,#16 ;@ Subtract cycles
39630  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39631  b CycloneEnd
39632
39633;@ ---------- [5f79] subq.w #7, $33333333.l uses Op5f79 ----------
39634Op5f79:
39635  str r4,[r7,#0x50] ;@ Save prev PC + 2
39636  str r5,[r7,#0x5c] ;@ Save Cycles
39637
39638;@ EaCalc : Get '$33333333.l' into r11:
39639  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
39640  ldrh r0,[r4],#2
39641  orr r11,r0,r2,lsl #16
39642;@ EaRead : Read '$33333333.l' (address in r11) into r0:
39643  str r4,[r7,#0x40] ;@ Save PC
39644  bic r0,r11,#0xff000000
39645  bl m68k_read16 ;@ Call read16(r0) handler
39646
39647  and r2,r8,#0x0e00 ;@ Get quick value
39648
39649  mov r0,r0,asl #16
39650
39651  subs r1,r0,r2,lsl #7
39652  mrs r10,cpsr ;@ r10=flags
39653  eor r10,r10,#0x20000000 ;@ Invert carry
39654  str r10,[r7,#0x4c] ;@ Save X bit
39655
39656;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
39657  mov r1,r1,lsr #16
39658  bic r0,r11,#0xff000000
39659  bl m68k_write16 ;@ Call write16(r0,r1) handler
39660
39661  ldr r5,[r7,#0x5c] ;@ Load Cycles
39662  ldrh r8,[r4],#2 ;@ Fetch next opcode
39663  subs r5,r5,#20 ;@ Subtract cycles
39664  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39665  b CycloneEnd
39666
39667;@ ---------- [5f80] subq.l #7, d0 uses Op5f80 ----------
39668Op5f80:
39669;@ EaCalc : Get register index into r11:
39670  and r11,r8,#0x000f
39671;@ EaRead : Read register[r11] into r0:
39672  ldr r0,[r7,r11,lsl #2]
39673
39674  and r2,r8,#0x0e00 ;@ Get quick value
39675
39676  subs r1,r0,r2,lsr #9
39677  mrs r10,cpsr ;@ r10=flags
39678  eor r10,r10,#0x20000000 ;@ Invert carry
39679  str r10,[r7,#0x4c] ;@ Save X bit
39680
39681;@ EaWrite: r1 into register[r11]:
39682  str r1,[r7,r11,lsl #2]
39683
39684  ldrh r8,[r4],#2 ;@ Fetch next opcode
39685  subs r5,r5,#8 ;@ Subtract cycles
39686  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39687  b CycloneEnd
39688
39689;@ ---------- [5f88] subq.l #7, a0 uses Op5f88 ----------
39690Op5f88:
39691;@ EaCalc : Get register index into r11:
39692  and r11,r8,#0x000f
39693;@ EaRead : Read register[r11] into r0:
39694  ldr r0,[r7,r11,lsl #2]
39695
39696  and r2,r8,#0x0e00 ;@ Get quick value
39697
39698  subs r1,r0,r2,lsr #9
39699
39700;@ EaWrite: r1 into register[r11]:
39701  str r1,[r7,r11,lsl #2]
39702
39703  ldrh r8,[r4],#2 ;@ Fetch next opcode
39704  subs r5,r5,#8 ;@ Subtract cycles
39705  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39706  b CycloneEnd
39707
39708;@ ---------- [5f90] subq.l #7, (a0) uses Op5f90 ----------
39709Op5f90:
39710  str r4,[r7,#0x50] ;@ Save prev PC + 2
39711  str r5,[r7,#0x5c] ;@ Save Cycles
39712
39713;@ EaCalc : Get '(a0)' into r11:
39714  and r2,r8,#0x000f
39715  orr r2,r2,#0x8 ;@ A0-7
39716  ldr r11,[r7,r2,lsl #2]
39717;@ EaRead : Read '(a0)' (address in r11) into r0:
39718  str r4,[r7,#0x40] ;@ Save PC
39719  bic r0,r11,#0xff000000
39720  bl m68k_read32 ;@ Call read32(r0) handler
39721
39722  and r2,r8,#0x0e00 ;@ Get quick value
39723
39724  subs r1,r0,r2,lsr #9
39725  mrs r10,cpsr ;@ r10=flags
39726  eor r10,r10,#0x20000000 ;@ Invert carry
39727  str r10,[r7,#0x4c] ;@ Save X bit
39728
39729;@ EaWrite: Write r1 into '(a0)' (address in r11):
39730  bic r0,r11,#0xff000000
39731  bl m68k_write32 ;@ Call write32(r0,r1) handler
39732
39733  ldr r5,[r7,#0x5c] ;@ Load Cycles
39734  ldrh r8,[r4],#2 ;@ Fetch next opcode
39735  subs r5,r5,#20 ;@ Subtract cycles
39736  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39737  b CycloneEnd
39738
39739;@ ---------- [5f98] subq.l #7, (a0)+ uses Op5f98 ----------
39740Op5f98:
39741  str r4,[r7,#0x50] ;@ Save prev PC + 2
39742  str r5,[r7,#0x5c] ;@ Save Cycles
39743
39744;@ EaCalc : Get '(a0)+' into r11:
39745  and r2,r8,#0x000f
39746  ldr r11,[r7,r2,lsl #2]
39747  add r3,r11,#4 ;@ Post-increment An
39748  str r3,[r7,r2,lsl #2]
39749;@ EaRead : Read '(a0)+' (address in r11) into r0:
39750  str r4,[r7,#0x40] ;@ Save PC
39751  bic r0,r11,#0xff000000
39752  bl m68k_read32 ;@ Call read32(r0) handler
39753
39754  and r2,r8,#0x0e00 ;@ Get quick value
39755
39756  subs r1,r0,r2,lsr #9
39757  mrs r10,cpsr ;@ r10=flags
39758  eor r10,r10,#0x20000000 ;@ Invert carry
39759  str r10,[r7,#0x4c] ;@ Save X bit
39760
39761;@ EaWrite: Write r1 into '(a0)+' (address in r11):
39762  bic r0,r11,#0xff000000
39763  bl m68k_write32 ;@ Call write32(r0,r1) handler
39764
39765  ldr r5,[r7,#0x5c] ;@ Load Cycles
39766  ldrh r8,[r4],#2 ;@ Fetch next opcode
39767  subs r5,r5,#20 ;@ Subtract cycles
39768  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39769  b CycloneEnd
39770
39771;@ ---------- [5fa0] subq.l #7, -(a0) uses Op5fa0 ----------
39772Op5fa0:
39773  str r4,[r7,#0x50] ;@ Save prev PC + 2
39774  str r5,[r7,#0x5c] ;@ Save Cycles
39775
39776;@ EaCalc : Get '-(a0)' into r11:
39777  and r2,r8,#0x000f
39778  orr r2,r2,#0x8 ;@ A0-7
39779  ldr r11,[r7,r2,lsl #2]
39780  sub r11,r11,#4 ;@ Pre-decrement An
39781  str r11,[r7,r2,lsl #2]
39782;@ EaRead : Read '-(a0)' (address in r11) into r0:
39783  str r4,[r7,#0x40] ;@ Save PC
39784  bic r0,r11,#0xff000000
39785  bl m68k_read32 ;@ Call read32(r0) handler
39786
39787  and r2,r8,#0x0e00 ;@ Get quick value
39788
39789  subs r1,r0,r2,lsr #9
39790  mrs r10,cpsr ;@ r10=flags
39791  eor r10,r10,#0x20000000 ;@ Invert carry
39792  str r10,[r7,#0x4c] ;@ Save X bit
39793
39794;@ EaWrite: Write r1 into '-(a0)' (address in r11):
39795  bic r0,r11,#0xff000000
39796  bl m68k_write32 ;@ Call write32(r0,r1) handler
39797
39798  ldr r5,[r7,#0x5c] ;@ Load Cycles
39799  ldrh r8,[r4],#2 ;@ Fetch next opcode
39800  subs r5,r5,#22 ;@ Subtract cycles
39801  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39802  b CycloneEnd
39803
39804;@ ---------- [5fa8] subq.l #7, ($3333,a0) uses Op5fa8 ----------
39805Op5fa8:
39806  str r4,[r7,#0x50] ;@ Save prev PC + 2
39807  str r5,[r7,#0x5c] ;@ Save Cycles
39808
39809;@ EaCalc : Get '($3333,a0)' into r11:
39810  ldrsh r0,[r4],#2 ;@ Fetch offset
39811  and r2,r8,#0x000f
39812  ldr r2,[r7,r2,lsl #2]
39813  add r11,r0,r2 ;@ Add on offset
39814;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
39815  str r4,[r7,#0x40] ;@ Save PC
39816  bic r0,r11,#0xff000000
39817  bl m68k_read32 ;@ Call read32(r0) handler
39818
39819  and r2,r8,#0x0e00 ;@ Get quick value
39820
39821  subs r1,r0,r2,lsr #9
39822  mrs r10,cpsr ;@ r10=flags
39823  eor r10,r10,#0x20000000 ;@ Invert carry
39824  str r10,[r7,#0x4c] ;@ Save X bit
39825
39826;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
39827  bic r0,r11,#0xff000000
39828  bl m68k_write32 ;@ Call write32(r0,r1) handler
39829
39830  ldr r5,[r7,#0x5c] ;@ Load Cycles
39831  ldrh r8,[r4],#2 ;@ Fetch next opcode
39832  subs r5,r5,#24 ;@ Subtract cycles
39833  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39834  b CycloneEnd
39835
39836;@ ---------- [5fb0] subq.l #7, ($33,a0,d3.w*2) uses Op5fb0 ----------
39837Op5fb0:
39838  str r4,[r7,#0x50] ;@ Save prev PC + 2
39839  str r5,[r7,#0x5c] ;@ Save Cycles
39840
39841;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
39842;@ Get extension word into r3:
39843  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
39844  mov r2,r3,lsr #10
39845  tst r3,#0x0800 ;@ Is Rn Word or Long
39846  and r2,r2,#0x3c ;@ r2=Index of Rn
39847  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
39848  ldrne   r2,[r7,r2] ;@ r2=Rn.l
39849  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
39850  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
39851  and r2,r8,#0x000f
39852  orr r2,r2,#0x8 ;@ A0-7
39853  ldr r2,[r7,r2,lsl #2]
39854  add r11,r2,r3 ;@ r11=Disp+An+Rn
39855;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
39856  str r4,[r7,#0x40] ;@ Save PC
39857  bic r0,r11,#0xff000000
39858  bl m68k_read32 ;@ Call read32(r0) handler
39859
39860  and r2,r8,#0x0e00 ;@ Get quick value
39861
39862  subs r1,r0,r2,lsr #9
39863  mrs r10,cpsr ;@ r10=flags
39864  eor r10,r10,#0x20000000 ;@ Invert carry
39865  str r10,[r7,#0x4c] ;@ Save X bit
39866
39867;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
39868  bic r0,r11,#0xff000000
39869  bl m68k_write32 ;@ Call write32(r0,r1) handler
39870
39871  ldr r5,[r7,#0x5c] ;@ Load Cycles
39872  ldrh r8,[r4],#2 ;@ Fetch next opcode
39873  subs r5,r5,#26 ;@ Subtract cycles
39874  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39875  b CycloneEnd
39876
39877;@ ---------- [5fb8] subq.l #7, $3333.w uses Op5fb8 ----------
39878Op5fb8:
39879  str r4,[r7,#0x50] ;@ Save prev PC + 2
39880  str r5,[r7,#0x5c] ;@ Save Cycles
39881
39882;@ EaCalc : Get '$3333.w' into r11:
39883  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
39884;@ EaRead : Read '$3333.w' (address in r11) into r0:
39885  str r4,[r7,#0x40] ;@ Save PC
39886  bic r0,r11,#0xff000000
39887  bl m68k_read32 ;@ Call read32(r0) handler
39888
39889  and r2,r8,#0x0e00 ;@ Get quick value
39890
39891  subs r1,r0,r2,lsr #9
39892  mrs r10,cpsr ;@ r10=flags
39893  eor r10,r10,#0x20000000 ;@ Invert carry
39894  str r10,[r7,#0x4c] ;@ Save X bit
39895
39896;@ EaWrite: Write r1 into '$3333.w' (address in r11):
39897  bic r0,r11,#0xff000000
39898  bl m68k_write32 ;@ Call write32(r0,r1) handler
39899
39900  ldr r5,[r7,#0x5c] ;@ Load Cycles
39901  ldrh r8,[r4],#2 ;@ Fetch next opcode
39902  subs r5,r5,#24 ;@ Subtract cycles
39903  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39904  b CycloneEnd
39905
39906;@ ---------- [5fb9] subq.l #7, $33333333.l uses Op5fb9 ----------
39907Op5fb9:
39908  str r4,[r7,#0x50] ;@ Save prev PC + 2
39909  str r5,[r7,#0x5c] ;@ Save Cycles
39910
39911;@ EaCalc : Get '$33333333.l' into r11:
39912  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
39913  ldrh r0,[r4],#2
39914  orr r11,r0,r2,lsl #16
39915;@ EaRead : Read '$33333333.l' (address in r11) into r0:
39916  str r4,[r7,#0x40] ;@ Save PC
39917  bic r0,r11,#0xff000000
39918  bl m68k_read32 ;@ Call read32(r0) handler
39919
39920  and r2,r8,#0x0e00 ;@ Get quick value
39921
39922  subs r1,r0,r2,lsr #9
39923  mrs r10,cpsr ;@ r10=flags
39924  eor r10,r10,#0x20000000 ;@ Invert carry
39925  str r10,[r7,#0x4c] ;@ Save X bit
39926
39927;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
39928  bic r0,r11,#0xff000000
39929  bl m68k_write32 ;@ Call write32(r0,r1) handler
39930
39931  ldr r5,[r7,#0x5c] ;@ Load Cycles
39932  ldrh r8,[r4],#2 ;@ Fetch next opcode
39933  subs r5,r5,#28 ;@ Subtract cycles
39934  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39935  b CycloneEnd
39936
39937;@ ---------- [5fc0] sle d0 uses Op5fc0 ----------
39938Op5fc0:
39939  mov r1,#0
39940  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
39941  orrs r0,r10,lsl #1
39942  mvnmi r1,#0
39943  submi r5,r5,#2 ;@ Extra cycles
39944
39945;@ EaCalc : Get register index into r0:
39946  and r0,r8,#0x000f
39947;@ EaWrite: r1 into register[r0]:
39948  strb r1,[r7,r0,lsl #2]
39949
39950  ldrh r8,[r4],#2 ;@ Fetch next opcode
39951  subs r5,r5,#4 ;@ Subtract cycles
39952  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39953  b CycloneEnd
39954
39955;@ ---------- [5fc8] dble d0, 3335 uses Op5fc8 ----------
39956Op5fc8:
39957;@ Is the condition true?
39958  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
39959  orrs r0,r10,lsl #1
39960;@ If so, don't dbra
39961  bmi DbraTrue
39962
39963;@ Decrement Dn.w
39964  and r1,r8,#0x0007
39965  mov r1,r1,lsl #2
39966  ldrsh r0,[r7,r1]
39967  strb r8,[r7,#0x45] ;@ not polling
39968  sub r0,r0,#1
39969  strh r0,[r7,r1]
39970
39971;@ Check if Dn.w is -1
39972  cmn r0,#1
39973  beq DbraMin1
39974
39975;@ Get Branch offset:
39976  ldrsh r0,[r4]
39977  add r0,r4,r0 ;@ r0 = New PC
39978  bl m68k_checkpc ;@ Call checkpc()
39979  mov r4,r0
39980  tst r4,#1 ;@ address error?
39981  bne ExceptionAddressError_r_prg_r4
39982  ldrh r8,[r4],#2 ;@ Fetch next opcode
39983  subs r5,r5,#10 ;@ Subtract cycles
39984  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39985  b CycloneEnd
39986
39987;@ ---------- [5fd0] sle (a0) uses Op5fd0 ----------
39988Op5fd0:
39989  str r4,[r7,#0x50] ;@ Save prev PC + 2
39990  str r5,[r7,#0x5c] ;@ Save Cycles
39991
39992  mov r1,#0
39993  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
39994  orrs r0,r10,lsl #1
39995  mvnmi r1,#0
39996
39997;@ EaCalc : Get '(a0)' into r0:
39998  and r2,r8,#0x000f
39999  orr r2,r2,#0x8 ;@ A0-7
40000  ldr r0,[r7,r2,lsl #2]
40001;@ EaWrite: Write r1 into '(a0)' (address in r0):
40002  and r1,r1,#0xff
40003  str r4,[r7,#0x40] ;@ Save PC
40004  bic r0,r0,#0xff000000
40005  bl m68k_write8 ;@ Call write8(r0,r1) handler
40006
40007  ldr r5,[r7,#0x5c] ;@ Load Cycles
40008  ldrh r8,[r4],#2 ;@ Fetch next opcode
40009  subs r5,r5,#12 ;@ Subtract cycles
40010  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40011  b CycloneEnd
40012
40013;@ ---------- [5fd8] sle (a0)+ uses Op5fd8 ----------
40014Op5fd8:
40015  str r4,[r7,#0x50] ;@ Save prev PC + 2
40016  str r5,[r7,#0x5c] ;@ Save Cycles
40017
40018  mov r1,#0
40019  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40020  orrs r0,r10,lsl #1
40021  mvnmi r1,#0
40022
40023;@ EaCalc : Get '(a0)+' into r0:
40024  and r2,r8,#0x000f
40025  ldr r0,[r7,r2,lsl #2]
40026  add r3,r0,#1 ;@ Post-increment An
40027  str r3,[r7,r2,lsl #2]
40028;@ EaWrite: Write r1 into '(a0)+' (address in r0):
40029  and r1,r1,#0xff
40030  str r4,[r7,#0x40] ;@ Save PC
40031  bic r0,r0,#0xff000000
40032  bl m68k_write8 ;@ Call write8(r0,r1) handler
40033
40034  ldr r5,[r7,#0x5c] ;@ Load Cycles
40035  ldrh r8,[r4],#2 ;@ Fetch next opcode
40036  subs r5,r5,#12 ;@ Subtract cycles
40037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40038  b CycloneEnd
40039
40040;@ ---------- [5fdf] sle (a7)+ uses Op5fdf ----------
40041Op5fdf:
40042  str r4,[r7,#0x50] ;@ Save prev PC + 2
40043  str r5,[r7,#0x5c] ;@ Save Cycles
40044
40045  mov r1,#0
40046  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40047  orrs r0,r10,lsl #1
40048  mvnmi r1,#0
40049
40050;@ EaCalc : Get '(a7)+' into r0:
40051  ldr r0,[r7,#0x3c] ;@ A7
40052  add r3,r0,#2 ;@ Post-increment An
40053  str r3,[r7,#0x3c] ;@ A7
40054;@ EaWrite: Write r1 into '(a7)+' (address in r0):
40055  and r1,r1,#0xff
40056  str r4,[r7,#0x40] ;@ Save PC
40057  bic r0,r0,#0xff000000
40058  bl m68k_write8 ;@ Call write8(r0,r1) handler
40059
40060  ldr r5,[r7,#0x5c] ;@ Load Cycles
40061  ldrh r8,[r4],#2 ;@ Fetch next opcode
40062  subs r5,r5,#12 ;@ Subtract cycles
40063  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40064  b CycloneEnd
40065
40066;@ ---------- [5fe0] sle -(a0) uses Op5fe0 ----------
40067Op5fe0:
40068  str r4,[r7,#0x50] ;@ Save prev PC + 2
40069  str r5,[r7,#0x5c] ;@ Save Cycles
40070
40071  mov r1,#0
40072  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40073  orrs r0,r10,lsl #1
40074  mvnmi r1,#0
40075
40076;@ EaCalc : Get '-(a0)' into r0:
40077  and r2,r8,#0x000f
40078  orr r2,r2,#0x8 ;@ A0-7
40079  ldr r0,[r7,r2,lsl #2]
40080  sub r0,r0,#1 ;@ Pre-decrement An
40081  str r0,[r7,r2,lsl #2]
40082;@ EaWrite: Write r1 into '-(a0)' (address in r0):
40083  and r1,r1,#0xff
40084  str r4,[r7,#0x40] ;@ Save PC
40085  bic r0,r0,#0xff000000
40086  bl m68k_write8 ;@ Call write8(r0,r1) handler
40087
40088  ldr r5,[r7,#0x5c] ;@ Load Cycles
40089  ldrh r8,[r4],#2 ;@ Fetch next opcode
40090  subs r5,r5,#14 ;@ Subtract cycles
40091  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40092  b CycloneEnd
40093
40094;@ ---------- [5fe7] sle -(a7) uses Op5fe7 ----------
40095Op5fe7:
40096  str r4,[r7,#0x50] ;@ Save prev PC + 2
40097  str r5,[r7,#0x5c] ;@ Save Cycles
40098
40099  mov r1,#0
40100  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40101  orrs r0,r10,lsl #1
40102  mvnmi r1,#0
40103
40104;@ EaCalc : Get '-(a7)' into r0:
40105  ldr r0,[r7,#0x3c] ;@ A7
40106  sub r0,r0,#2 ;@ Pre-decrement An
40107  str r0,[r7,#0x3c] ;@ A7
40108;@ EaWrite: Write r1 into '-(a7)' (address in r0):
40109  and r1,r1,#0xff
40110  str r4,[r7,#0x40] ;@ Save PC
40111  bic r0,r0,#0xff000000
40112  bl m68k_write8 ;@ Call write8(r0,r1) handler
40113
40114  ldr r5,[r7,#0x5c] ;@ Load Cycles
40115  ldrh r8,[r4],#2 ;@ Fetch next opcode
40116  subs r5,r5,#14 ;@ Subtract cycles
40117  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40118  b CycloneEnd
40119
40120;@ ---------- [5fe8] sle ($3333,a0) uses Op5fe8 ----------
40121Op5fe8:
40122  str r4,[r7,#0x50] ;@ Save prev PC + 2
40123  str r5,[r7,#0x5c] ;@ Save Cycles
40124
40125  mov r1,#0
40126  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40127  orrs r0,r10,lsl #1
40128  mvnmi r1,#0
40129
40130;@ EaCalc : Get '($3333,a0)' into r0:
40131  ldrsh r0,[r4],#2 ;@ Fetch offset
40132  and r2,r8,#0x000f
40133  ldr r2,[r7,r2,lsl #2]
40134  add r0,r0,r2 ;@ Add on offset
40135;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
40136  and r1,r1,#0xff
40137  str r4,[r7,#0x40] ;@ Save PC
40138  bic r0,r0,#0xff000000
40139  bl m68k_write8 ;@ Call write8(r0,r1) handler
40140
40141  ldr r5,[r7,#0x5c] ;@ Load Cycles
40142  ldrh r8,[r4],#2 ;@ Fetch next opcode
40143  subs r5,r5,#16 ;@ Subtract cycles
40144  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40145  b CycloneEnd
40146
40147;@ ---------- [5ff0] sle ($33,a0,d3.w*2) uses Op5ff0 ----------
40148Op5ff0:
40149  str r4,[r7,#0x50] ;@ Save prev PC + 2
40150  str r5,[r7,#0x5c] ;@ Save Cycles
40151
40152  mov r1,#0
40153  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40154  orrs r0,r10,lsl #1
40155  mvnmi r1,#0
40156
40157;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
40158;@ Get extension word into r3:
40159  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
40160  mov r2,r3,lsr #10
40161  tst r3,#0x0800 ;@ Is Rn Word or Long
40162  and r2,r2,#0x3c ;@ r2=Index of Rn
40163  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
40164  ldrne   r2,[r7,r2] ;@ r2=Rn.l
40165  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
40166  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
40167  and r2,r8,#0x000f
40168  orr r2,r2,#0x8 ;@ A0-7
40169  ldr r2,[r7,r2,lsl #2]
40170  add r0,r2,r3 ;@ r0=Disp+An+Rn
40171;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
40172  and r1,r1,#0xff
40173  str r4,[r7,#0x40] ;@ Save PC
40174  bic r0,r0,#0xff000000
40175  bl m68k_write8 ;@ Call write8(r0,r1) handler
40176
40177  ldr r5,[r7,#0x5c] ;@ Load Cycles
40178  ldrh r8,[r4],#2 ;@ Fetch next opcode
40179  subs r5,r5,#18 ;@ Subtract cycles
40180  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40181  b CycloneEnd
40182
40183;@ ---------- [5ff8] sle $3333.w uses Op5ff8 ----------
40184Op5ff8:
40185  str r4,[r7,#0x50] ;@ Save prev PC + 2
40186  str r5,[r7,#0x5c] ;@ Save Cycles
40187
40188  mov r1,#0
40189  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40190  orrs r0,r10,lsl #1
40191  mvnmi r1,#0
40192
40193;@ EaCalc : Get '$3333.w' into r0:
40194  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
40195;@ EaWrite: Write r1 into '$3333.w' (address in r0):
40196  and r1,r1,#0xff
40197  str r4,[r7,#0x40] ;@ Save PC
40198  bic r0,r0,#0xff000000
40199  bl m68k_write8 ;@ Call write8(r0,r1) handler
40200
40201  ldr r5,[r7,#0x5c] ;@ Load Cycles
40202  ldrh r8,[r4],#2 ;@ Fetch next opcode
40203  subs r5,r5,#16 ;@ Subtract cycles
40204  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40205  b CycloneEnd
40206
40207;@ ---------- [5ff9] sle $33333333.l uses Op5ff9 ----------
40208Op5ff9:
40209  str r4,[r7,#0x50] ;@ Save prev PC + 2
40210  str r5,[r7,#0x5c] ;@ Save Cycles
40211
40212  mov r1,#0
40213  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40214  orrs r0,r10,lsl #1
40215  mvnmi r1,#0
40216
40217;@ EaCalc : Get '$33333333.l' into r0:
40218  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
40219  ldrh r0,[r4],#2
40220  orr r0,r0,r2,lsl #16
40221;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
40222  and r1,r1,#0xff
40223  str r4,[r7,#0x40] ;@ Save PC
40224  bic r0,r0,#0xff000000
40225  bl m68k_write8 ;@ Call write8(r0,r1) handler
40226
40227  ldr r5,[r7,#0x5c] ;@ Load Cycles
40228  ldrh r8,[r4],#2 ;@ Fetch next opcode
40229  subs r5,r5,#20 ;@ Subtract cycles
40230  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40231  b CycloneEnd
40232
40233;@ ---------- [6000] bra 3335 uses Op6000 ----------
40234Op6000:
40235  str r4,[r7,#0x50] ;@ Save prev PC + 2
40236  str r5,[r7,#0x5c] ;@ Save Cycles
40237
40238  ldrsh r11,[r4] ;@ Fetch Branch offset
40239;@ Branch taken - Add on r0 to PC
40240  add r0,r4,r11 ;@ New PC
40241  bl m68k_checkpc ;@ Call checkpc()
40242  mov r4,r0
40243  tst r4,#1 ;@ address error?
40244  bne ExceptionAddressError_r_prg_r4
40245
40246  ldr r5,[r7,#0x5c] ;@ Load Cycles
40247  ldrh r8,[r4],#2 ;@ Fetch next opcode
40248  subs r5,r5,#10 ;@ Subtract cycles
40249  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40250  b CycloneEnd
40251
40252;@ ---------- [6003] bra 5 uses Op6003 ----------
40253Op6003:
40254  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40255
40256;@ Branch taken - Add on r0 to PC
40257  add r4,r4,r11,asr #24 ;@ r4 = New PC
40258  b ExceptionAddressError_r_prg_r4
40259
40260  ldrh r8,[r4],#2 ;@ Fetch next opcode
40261  subs r5,r5,#10 ;@ Subtract cycles
40262  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40263  b CycloneEnd
40264
40265;@ ---------- [6103] bsr 5 uses Op6103 ----------
40266Op6103:
40267  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40268
40269;@ Branch taken - Add on r0 to PC
40270;@ Bsr - remember old PC
40271  ldr r12,[r7,#0x60] ;@ Get Memory base
40272  ldr r2,[r7,#0x3c]
40273  sub r1,r4,r12 ;@ r1 = Old PC
40274
40275;@ Push r1 onto stack
40276  sub r0,r2,#4 ;@ Predecrement A7
40277  str r0,[r7,#0x3c] ;@ Save A7
40278  str r4,[r7,#0x40] ;@ Save PC
40279  bic r0,r0,#0xff000000
40280  bl m68k_write32 ;@ Call write32(r0,r1) handler
40281
40282  add r4,r4,r11,asr #24 ;@ r4 = New PC
40283  b ExceptionAddressError_r_prg_r4
40284
40285  ldrh r8,[r4],#2 ;@ Fetch next opcode
40286  subs r5,r5,#18 ;@ Subtract cycles
40287  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40288  b CycloneEnd
40289
40290;@ ---------- [6200] bhi 3335 uses Op6200 ----------
40291Op6200:
40292  str r4,[r7,#0x50] ;@ Save prev PC + 2
40293  str r5,[r7,#0x5c] ;@ Save Cycles
40294
40295  tst r10,#0x60000000 ;@ hi: !C && !Z
40296  bne BccDontBranch16
40297
40298  ldrsh r11,[r4] ;@ Fetch Branch offset
40299;@ Branch taken - Add on r0 to PC
40300  add r0,r4,r11 ;@ New PC
40301  bl m68k_checkpc ;@ Call checkpc()
40302  mov r4,r0
40303  tst r4,#1 ;@ address error?
40304  bne ExceptionAddressError_r_prg_r4
40305
40306  ldr r5,[r7,#0x5c] ;@ Load Cycles
40307  ldrh r8,[r4],#2 ;@ Fetch next opcode
40308  subs r5,r5,#10 ;@ Subtract cycles
40309  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40310  b CycloneEnd
40311
40312;@ ---------- [6202] bhi 4 uses Op6202 ----------
40313Op6202:
40314  tst r10,#0x60000000 ;@ hi: !C && !Z
40315  bne BccDontBranch8
40316
40317  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40318
40319;@ Branch taken - Add on r0 to PC
40320  add r4,r4,r11,asr #24 ;@ r4 = New PC
40321
40322  ldrh r8,[r4],#2 ;@ Fetch next opcode
40323  subs r5,r5,#10 ;@ Subtract cycles
40324  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40325  b CycloneEnd
40326
40327;@ ---------- [6203] bhi 5 uses Op6203 ----------
40328Op6203:
40329  tst r10,#0x60000000 ;@ hi: !C && !Z
40330  bne BccDontBranch8
40331
40332  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40333
40334;@ Branch taken - Add on r0 to PC
40335  add r4,r4,r11,asr #24 ;@ r4 = New PC
40336  b ExceptionAddressError_r_prg_r4
40337
40338  ldrh r8,[r4],#2 ;@ Fetch next opcode
40339  subs r5,r5,#10 ;@ Subtract cycles
40340  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40341  b CycloneEnd
40342
40343;@ ---------- [6300] bls 3335 uses Op6300 ----------
40344Op6300:
40345  str r4,[r7,#0x50] ;@ Save prev PC + 2
40346  str r5,[r7,#0x5c] ;@ Save Cycles
40347
40348  tst r10,#0x60000000 ;@ ls: C || Z
40349  beq BccDontBranch16
40350
40351  ldrsh r11,[r4] ;@ Fetch Branch offset
40352;@ Branch taken - Add on r0 to PC
40353  add r0,r4,r11 ;@ New PC
40354  bl m68k_checkpc ;@ Call checkpc()
40355  mov r4,r0
40356  tst r4,#1 ;@ address error?
40357  bne ExceptionAddressError_r_prg_r4
40358
40359  ldr r5,[r7,#0x5c] ;@ Load Cycles
40360  ldrh r8,[r4],#2 ;@ Fetch next opcode
40361  subs r5,r5,#10 ;@ Subtract cycles
40362  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40363  b CycloneEnd
40364
40365;@ ---------- [6302] bls 4 uses Op6302 ----------
40366Op6302:
40367  tst r10,#0x60000000 ;@ ls: C || Z
40368  beq BccDontBranch8
40369
40370  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40371
40372;@ Branch taken - Add on r0 to PC
40373  add r4,r4,r11,asr #24 ;@ r4 = New PC
40374
40375  ldrh r8,[r4],#2 ;@ Fetch next opcode
40376  subs r5,r5,#10 ;@ Subtract cycles
40377  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40378  b CycloneEnd
40379
40380;@ ---------- [6303] bls 5 uses Op6303 ----------
40381Op6303:
40382  tst r10,#0x60000000 ;@ ls: C || Z
40383  beq BccDontBranch8
40384
40385  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40386
40387;@ Branch taken - Add on r0 to PC
40388  add r4,r4,r11,asr #24 ;@ r4 = New PC
40389  b ExceptionAddressError_r_prg_r4
40390
40391  ldrh r8,[r4],#2 ;@ Fetch next opcode
40392  subs r5,r5,#10 ;@ Subtract cycles
40393  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40394  b CycloneEnd
40395
40396;@ ---------- [6400] bcc 3335 uses Op6400 ----------
40397Op6400:
40398  str r4,[r7,#0x50] ;@ Save prev PC + 2
40399  str r5,[r7,#0x5c] ;@ Save Cycles
40400
40401  tst r10,#0x20000000 ;@ cc: !C
40402  bne BccDontBranch16
40403
40404  ldrsh r11,[r4] ;@ Fetch Branch offset
40405;@ Branch taken - Add on r0 to PC
40406  add r0,r4,r11 ;@ New PC
40407  bl m68k_checkpc ;@ Call checkpc()
40408  mov r4,r0
40409  tst r4,#1 ;@ address error?
40410  bne ExceptionAddressError_r_prg_r4
40411
40412  ldr r5,[r7,#0x5c] ;@ Load Cycles
40413  ldrh r8,[r4],#2 ;@ Fetch next opcode
40414  subs r5,r5,#10 ;@ Subtract cycles
40415  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40416  b CycloneEnd
40417
40418;@ ---------- [6403] bcc 5 uses Op6403 ----------
40419Op6403:
40420  tst r10,#0x20000000 ;@ cc: !C
40421  bne BccDontBranch8
40422
40423  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40424
40425;@ Branch taken - Add on r0 to PC
40426  add r4,r4,r11,asr #24 ;@ r4 = New PC
40427  b ExceptionAddressError_r_prg_r4
40428
40429  ldrh r8,[r4],#2 ;@ Fetch next opcode
40430  subs r5,r5,#10 ;@ Subtract cycles
40431  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40432  b CycloneEnd
40433
40434;@ ---------- [6503] bcs 5 uses Op6503 ----------
40435Op6503:
40436  tst r10,#0x20000000 ;@ cs: C
40437  beq BccDontBranch8
40438
40439  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40440
40441;@ Branch taken - Add on r0 to PC
40442  add r4,r4,r11,asr #24 ;@ r4 = New PC
40443  b ExceptionAddressError_r_prg_r4
40444
40445  ldrh r8,[r4],#2 ;@ Fetch next opcode
40446  subs r5,r5,#10 ;@ Subtract cycles
40447  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40448  b CycloneEnd
40449
40450;@ ---------- [6600] bne 3335 uses Op6600 ----------
40451Op6600:
40452  str r4,[r7,#0x50] ;@ Save prev PC + 2
40453  str r5,[r7,#0x5c] ;@ Save Cycles
40454
40455  tst r10,#0x40000000 ;@ ne: !Z
40456  bne BccDontBranch16
40457
40458  ldrsh r11,[r4] ;@ Fetch Branch offset
40459;@ Branch taken - Add on r0 to PC
40460  add r0,r4,r11 ;@ New PC
40461  bl m68k_checkpc ;@ Call checkpc()
40462  mov r4,r0
40463  tst r4,#1 ;@ address error?
40464  bne ExceptionAddressError_r_prg_r4
40465
40466  ldr r5,[r7,#0x5c] ;@ Load Cycles
40467  ldrh r8,[r4],#2 ;@ Fetch next opcode
40468  subs r5,r5,#10 ;@ Subtract cycles
40469  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40470  b CycloneEnd
40471
40472;@ ---------- [6603] bne 5 uses Op6603 ----------
40473Op6603:
40474  tst r10,#0x40000000 ;@ ne: !Z
40475  bne BccDontBranch8
40476
40477  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40478
40479;@ Branch taken - Add on r0 to PC
40480  add r4,r4,r11,asr #24 ;@ r4 = New PC
40481  b ExceptionAddressError_r_prg_r4
40482
40483  ldrh r8,[r4],#2 ;@ Fetch next opcode
40484  subs r5,r5,#10 ;@ Subtract cycles
40485  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40486  b CycloneEnd
40487
40488;@ ---------- [6703] beq 5 uses Op6703 ----------
40489Op6703:
40490  tst r10,#0x40000000 ;@ eq: Z
40491  beq BccDontBranch8
40492
40493  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40494
40495;@ Branch taken - Add on r0 to PC
40496  add r4,r4,r11,asr #24 ;@ r4 = New PC
40497  b ExceptionAddressError_r_prg_r4
40498
40499  ldrh r8,[r4],#2 ;@ Fetch next opcode
40500  subs r5,r5,#10 ;@ Subtract cycles
40501  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40502  b CycloneEnd
40503
40504;@ ---------- [6800] bvc 3335 uses Op6800 ----------
40505Op6800:
40506  str r4,[r7,#0x50] ;@ Save prev PC + 2
40507  str r5,[r7,#0x5c] ;@ Save Cycles
40508
40509  tst r10,#0x10000000 ;@ vc: !V
40510  bne BccDontBranch16
40511
40512  ldrsh r11,[r4] ;@ Fetch Branch offset
40513;@ Branch taken - Add on r0 to PC
40514  add r0,r4,r11 ;@ New PC
40515  bl m68k_checkpc ;@ Call checkpc()
40516  mov r4,r0
40517  tst r4,#1 ;@ address error?
40518  bne ExceptionAddressError_r_prg_r4
40519
40520  ldr r5,[r7,#0x5c] ;@ Load Cycles
40521  ldrh r8,[r4],#2 ;@ Fetch next opcode
40522  subs r5,r5,#10 ;@ Subtract cycles
40523  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40524  b CycloneEnd
40525
40526;@ ---------- [6802] bvc 4 uses Op6802 ----------
40527Op6802:
40528  tst r10,#0x10000000 ;@ vc: !V
40529  bne BccDontBranch8
40530
40531  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40532
40533;@ Branch taken - Add on r0 to PC
40534  add r4,r4,r11,asr #24 ;@ r4 = New PC
40535
40536  ldrh r8,[r4],#2 ;@ Fetch next opcode
40537  subs r5,r5,#10 ;@ Subtract cycles
40538  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40539  b CycloneEnd
40540
40541;@ ---------- [6803] bvc 5 uses Op6803 ----------
40542Op6803:
40543  tst r10,#0x10000000 ;@ vc: !V
40544  bne BccDontBranch8
40545
40546  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40547
40548;@ Branch taken - Add on r0 to PC
40549  add r4,r4,r11,asr #24 ;@ r4 = New PC
40550  b ExceptionAddressError_r_prg_r4
40551
40552  ldrh r8,[r4],#2 ;@ Fetch next opcode
40553  subs r5,r5,#10 ;@ Subtract cycles
40554  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40555  b CycloneEnd
40556
40557;@ ---------- [6900] bvs 3335 uses Op6900 ----------
40558Op6900:
40559  str r4,[r7,#0x50] ;@ Save prev PC + 2
40560  str r5,[r7,#0x5c] ;@ Save Cycles
40561
40562  tst r10,#0x10000000 ;@ vs: V
40563  beq BccDontBranch16
40564
40565  ldrsh r11,[r4] ;@ Fetch Branch offset
40566;@ Branch taken - Add on r0 to PC
40567  add r0,r4,r11 ;@ New PC
40568  bl m68k_checkpc ;@ Call checkpc()
40569  mov r4,r0
40570  tst r4,#1 ;@ address error?
40571  bne ExceptionAddressError_r_prg_r4
40572
40573  ldr r5,[r7,#0x5c] ;@ Load Cycles
40574  ldrh r8,[r4],#2 ;@ Fetch next opcode
40575  subs r5,r5,#10 ;@ Subtract cycles
40576  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40577  b CycloneEnd
40578
40579;@ ---------- [6902] bvs 4 uses Op6902 ----------
40580Op6902:
40581  tst r10,#0x10000000 ;@ vs: V
40582  beq BccDontBranch8
40583
40584  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40585
40586;@ Branch taken - Add on r0 to PC
40587  add r4,r4,r11,asr #24 ;@ r4 = New PC
40588
40589  ldrh r8,[r4],#2 ;@ Fetch next opcode
40590  subs r5,r5,#10 ;@ Subtract cycles
40591  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40592  b CycloneEnd
40593
40594;@ ---------- [6903] bvs 5 uses Op6903 ----------
40595Op6903:
40596  tst r10,#0x10000000 ;@ vs: V
40597  beq BccDontBranch8
40598
40599  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40600
40601;@ Branch taken - Add on r0 to PC
40602  add r4,r4,r11,asr #24 ;@ r4 = New PC
40603  b ExceptionAddressError_r_prg_r4
40604
40605  ldrh r8,[r4],#2 ;@ Fetch next opcode
40606  subs r5,r5,#10 ;@ Subtract cycles
40607  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40608  b CycloneEnd
40609
40610;@ ---------- [6a00] bpl 3335 uses Op6a00 ----------
40611Op6a00:
40612  str r4,[r7,#0x50] ;@ Save prev PC + 2
40613  str r5,[r7,#0x5c] ;@ Save Cycles
40614
40615  tst r10,r10 ;@ pl: !N
40616  bmi BccDontBranch16
40617
40618  ldrsh r11,[r4] ;@ Fetch Branch offset
40619;@ Branch taken - Add on r0 to PC
40620  add r0,r4,r11 ;@ New PC
40621  bl m68k_checkpc ;@ Call checkpc()
40622  mov r4,r0
40623  tst r4,#1 ;@ address error?
40624  bne ExceptionAddressError_r_prg_r4
40625
40626  ldr r5,[r7,#0x5c] ;@ Load Cycles
40627  ldrh r8,[r4],#2 ;@ Fetch next opcode
40628  subs r5,r5,#10 ;@ Subtract cycles
40629  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40630  b CycloneEnd
40631
40632;@ ---------- [6a03] bpl 5 uses Op6a03 ----------
40633Op6a03:
40634  tst r10,r10 ;@ pl: !N
40635  bmi BccDontBranch8
40636
40637  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40638
40639;@ Branch taken - Add on r0 to PC
40640  add r4,r4,r11,asr #24 ;@ r4 = New PC
40641  b ExceptionAddressError_r_prg_r4
40642
40643  ldrh r8,[r4],#2 ;@ Fetch next opcode
40644  subs r5,r5,#10 ;@ Subtract cycles
40645  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40646  b CycloneEnd
40647
40648;@ ---------- [6b00] bmi 3335 uses Op6b00 ----------
40649Op6b00:
40650  str r4,[r7,#0x50] ;@ Save prev PC + 2
40651  str r5,[r7,#0x5c] ;@ Save Cycles
40652
40653  tst r10,r10 ;@ mi: N
40654  bpl BccDontBranch16
40655
40656  ldrsh r11,[r4] ;@ Fetch Branch offset
40657;@ Branch taken - Add on r0 to PC
40658  add r0,r4,r11 ;@ New PC
40659  bl m68k_checkpc ;@ Call checkpc()
40660  mov r4,r0
40661  tst r4,#1 ;@ address error?
40662  bne ExceptionAddressError_r_prg_r4
40663
40664  ldr r5,[r7,#0x5c] ;@ Load Cycles
40665  ldrh r8,[r4],#2 ;@ Fetch next opcode
40666  subs r5,r5,#10 ;@ Subtract cycles
40667  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40668  b CycloneEnd
40669
40670;@ ---------- [6b02] bmi 4 uses Op6b02 ----------
40671Op6b02:
40672  tst r10,r10 ;@ mi: N
40673  bpl BccDontBranch8
40674
40675  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40676
40677;@ Branch taken - Add on r0 to PC
40678  add r4,r4,r11,asr #24 ;@ r4 = New PC
40679
40680  ldrh r8,[r4],#2 ;@ Fetch next opcode
40681  subs r5,r5,#10 ;@ Subtract cycles
40682  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40683  b CycloneEnd
40684
40685;@ ---------- [6b03] bmi 5 uses Op6b03 ----------
40686Op6b03:
40687  tst r10,r10 ;@ mi: N
40688  bpl BccDontBranch8
40689
40690  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40691
40692;@ Branch taken - Add on r0 to PC
40693  add r4,r4,r11,asr #24 ;@ r4 = New PC
40694  b ExceptionAddressError_r_prg_r4
40695
40696  ldrh r8,[r4],#2 ;@ Fetch next opcode
40697  subs r5,r5,#10 ;@ Subtract cycles
40698  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40699  b CycloneEnd
40700
40701;@ ---------- [6c00] bge 3335 uses Op6c00 ----------
40702Op6c00:
40703  str r4,[r7,#0x50] ;@ Save prev PC + 2
40704  str r5,[r7,#0x5c] ;@ Save Cycles
40705
40706  teq r10,r10,lsl #3 ;@ ge: N == V
40707  bmi BccDontBranch16
40708
40709  ldrsh r11,[r4] ;@ Fetch Branch offset
40710;@ Branch taken - Add on r0 to PC
40711  add r0,r4,r11 ;@ New PC
40712  bl m68k_checkpc ;@ Call checkpc()
40713  mov r4,r0
40714  tst r4,#1 ;@ address error?
40715  bne ExceptionAddressError_r_prg_r4
40716
40717  ldr r5,[r7,#0x5c] ;@ Load Cycles
40718  ldrh r8,[r4],#2 ;@ Fetch next opcode
40719  subs r5,r5,#10 ;@ Subtract cycles
40720  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40721  b CycloneEnd
40722
40723;@ ---------- [6c02] bge 4 uses Op6c02 ----------
40724Op6c02:
40725  teq r10,r10,lsl #3 ;@ ge: N == V
40726  bmi BccDontBranch8
40727
40728  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40729
40730;@ Branch taken - Add on r0 to PC
40731  add r4,r4,r11,asr #24 ;@ r4 = New PC
40732
40733  ldrh r8,[r4],#2 ;@ Fetch next opcode
40734  subs r5,r5,#10 ;@ Subtract cycles
40735  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40736  b CycloneEnd
40737
40738;@ ---------- [6c03] bge 5 uses Op6c03 ----------
40739Op6c03:
40740  teq r10,r10,lsl #3 ;@ ge: N == V
40741  bmi BccDontBranch8
40742
40743  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40744
40745;@ Branch taken - Add on r0 to PC
40746  add r4,r4,r11,asr #24 ;@ r4 = New PC
40747  b ExceptionAddressError_r_prg_r4
40748
40749  ldrh r8,[r4],#2 ;@ Fetch next opcode
40750  subs r5,r5,#10 ;@ Subtract cycles
40751  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40752  b CycloneEnd
40753
40754;@ ---------- [6d00] blt 3335 uses Op6d00 ----------
40755Op6d00:
40756  str r4,[r7,#0x50] ;@ Save prev PC + 2
40757  str r5,[r7,#0x5c] ;@ Save Cycles
40758
40759  teq r10,r10,lsl #3 ;@ lt: N != V
40760  bpl BccDontBranch16
40761
40762  ldrsh r11,[r4] ;@ Fetch Branch offset
40763;@ Branch taken - Add on r0 to PC
40764  add r0,r4,r11 ;@ New PC
40765  bl m68k_checkpc ;@ Call checkpc()
40766  mov r4,r0
40767  tst r4,#1 ;@ address error?
40768  bne ExceptionAddressError_r_prg_r4
40769
40770  ldr r5,[r7,#0x5c] ;@ Load Cycles
40771  ldrh r8,[r4],#2 ;@ Fetch next opcode
40772  subs r5,r5,#10 ;@ Subtract cycles
40773  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40774  b CycloneEnd
40775
40776;@ ---------- [6d02] blt 4 uses Op6d02 ----------
40777Op6d02:
40778  teq r10,r10,lsl #3 ;@ lt: N != V
40779  bpl BccDontBranch8
40780
40781  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40782
40783;@ Branch taken - Add on r0 to PC
40784  add r4,r4,r11,asr #24 ;@ r4 = New PC
40785
40786  ldrh r8,[r4],#2 ;@ Fetch next opcode
40787  subs r5,r5,#10 ;@ Subtract cycles
40788  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40789  b CycloneEnd
40790
40791;@ ---------- [6d03] blt 5 uses Op6d03 ----------
40792Op6d03:
40793  teq r10,r10,lsl #3 ;@ lt: N != V
40794  bpl BccDontBranch8
40795
40796  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40797
40798;@ Branch taken - Add on r0 to PC
40799  add r4,r4,r11,asr #24 ;@ r4 = New PC
40800  b ExceptionAddressError_r_prg_r4
40801
40802  ldrh r8,[r4],#2 ;@ Fetch next opcode
40803  subs r5,r5,#10 ;@ Subtract cycles
40804  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40805  b CycloneEnd
40806
40807;@ ---------- [6e00] bgt 3335 uses Op6e00 ----------
40808Op6e00:
40809  str r4,[r7,#0x50] ;@ Save prev PC + 2
40810  str r5,[r7,#0x5c] ;@ Save Cycles
40811
40812  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
40813  orrs r0,r10,lsl #1
40814  bmi BccDontBranch16
40815
40816  ldrsh r11,[r4] ;@ Fetch Branch offset
40817;@ Branch taken - Add on r0 to PC
40818  add r0,r4,r11 ;@ New PC
40819  bl m68k_checkpc ;@ Call checkpc()
40820  mov r4,r0
40821  tst r4,#1 ;@ address error?
40822  bne ExceptionAddressError_r_prg_r4
40823
40824  ldr r5,[r7,#0x5c] ;@ Load Cycles
40825  ldrh r8,[r4],#2 ;@ Fetch next opcode
40826  subs r5,r5,#10 ;@ Subtract cycles
40827  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40828  b CycloneEnd
40829
40830;@ ---------- [6e02] bgt 4 uses Op6e02 ----------
40831Op6e02:
40832  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
40833  orrs r0,r10,lsl #1
40834  bmi BccDontBranch8
40835
40836  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40837
40838;@ Branch taken - Add on r0 to PC
40839  add r4,r4,r11,asr #24 ;@ r4 = New PC
40840
40841  ldrh r8,[r4],#2 ;@ Fetch next opcode
40842  subs r5,r5,#10 ;@ Subtract cycles
40843  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40844  b CycloneEnd
40845
40846;@ ---------- [6e03] bgt 5 uses Op6e03 ----------
40847Op6e03:
40848  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
40849  orrs r0,r10,lsl #1
40850  bmi BccDontBranch8
40851
40852  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40853
40854;@ Branch taken - Add on r0 to PC
40855  add r4,r4,r11,asr #24 ;@ r4 = New PC
40856  b ExceptionAddressError_r_prg_r4
40857
40858  ldrh r8,[r4],#2 ;@ Fetch next opcode
40859  subs r5,r5,#10 ;@ Subtract cycles
40860  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40861  b CycloneEnd
40862
40863;@ ---------- [6f00] ble 3335 uses Op6f00 ----------
40864Op6f00:
40865  str r4,[r7,#0x50] ;@ Save prev PC + 2
40866  str r5,[r7,#0x5c] ;@ Save Cycles
40867
40868  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40869  orrs r0,r10,lsl #1
40870  bpl BccDontBranch16
40871
40872  ldrsh r11,[r4] ;@ Fetch Branch offset
40873;@ Branch taken - Add on r0 to PC
40874  add r0,r4,r11 ;@ New PC
40875  bl m68k_checkpc ;@ Call checkpc()
40876  mov r4,r0
40877  tst r4,#1 ;@ address error?
40878  bne ExceptionAddressError_r_prg_r4
40879
40880  ldr r5,[r7,#0x5c] ;@ Load Cycles
40881  ldrh r8,[r4],#2 ;@ Fetch next opcode
40882  subs r5,r5,#10 ;@ Subtract cycles
40883  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40884  b CycloneEnd
40885
40886;@ ---------- [6f02] ble 4 uses Op6f02 ----------
40887Op6f02:
40888  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40889  orrs r0,r10,lsl #1
40890  bpl BccDontBranch8
40891
40892  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40893
40894;@ Branch taken - Add on r0 to PC
40895  add r4,r4,r11,asr #24 ;@ r4 = New PC
40896
40897  ldrh r8,[r4],#2 ;@ Fetch next opcode
40898  subs r5,r5,#10 ;@ Subtract cycles
40899  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40900  b CycloneEnd
40901
40902;@ ---------- [6f03] ble 5 uses Op6f03 ----------
40903Op6f03:
40904  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
40905  orrs r0,r10,lsl #1
40906  bpl BccDontBranch8
40907
40908  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
40909
40910;@ Branch taken - Add on r0 to PC
40911  add r4,r4,r11,asr #24 ;@ r4 = New PC
40912  b ExceptionAddressError_r_prg_r4
40913
40914  ldrh r8,[r4],#2 ;@ Fetch next opcode
40915  subs r5,r5,#10 ;@ Subtract cycles
40916  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40917  b CycloneEnd
40918
40919;@ ---------- [8000] or.b d0, d0 uses Op8000 ----------
40920Op8000:
40921;@ EaCalc : Get register index into r0:
40922  and r0,r8,#0x000f
40923;@ EaRead : Read register[r0] into r0:
40924  ldr r0,[r7,r0,lsl #2]
40925
40926;@ EaCalc : Get register index into r11:
40927  and r11,r8,#0x0e00
40928;@ EaRead : Read register[r11] into r1:
40929  ldr r1,[r7,r11,lsr #7]
40930
40931;@ Do arithmetic:
40932  mov r0,r0,asl #24
40933  orrs r1,r0,r1,asl #24
40934  and r10,r1,#0x80000000 ;@ r10=N_flag
40935  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
40936
40937;@ Save result:
40938  mov r1,r1,asr #24
40939;@ EaWrite: r1 into register[r11]:
40940  strb r1,[r7,r11,lsr #7]
40941
40942  ldrh r8,[r4],#2 ;@ Fetch next opcode
40943  subs r5,r5,#4 ;@ Subtract cycles
40944  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40945  b CycloneEnd
40946
40947;@ ---------- [8010] or.b (a0), d0 uses Op8010 ----------
40948Op8010:
40949  str r4,[r7,#0x50] ;@ Save prev PC + 2
40950  str r5,[r7,#0x5c] ;@ Save Cycles
40951
40952;@ EaCalc : Get '(a0)' into r0:
40953  and r2,r8,#0x000f
40954  orr r2,r2,#0x8 ;@ A0-7
40955  ldr r0,[r7,r2,lsl #2]
40956;@ EaRead : Read '(a0)' (address in r0) into r0:
40957  str r4,[r7,#0x40] ;@ Save PC
40958  bic r0,r0,#0xff000000
40959  bl m68k_read8 ;@ Call read8(r0) handler
40960
40961;@ EaCalc : Get register index into r11:
40962  and r11,r8,#0x0e00
40963;@ EaRead : Read register[r11] into r1:
40964  ldr r1,[r7,r11,lsr #7]
40965
40966;@ Do arithmetic:
40967  mov r0,r0,asl #24
40968  orrs r1,r0,r1,asl #24
40969  and r10,r1,#0x80000000 ;@ r10=N_flag
40970  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
40971
40972;@ Save result:
40973  mov r1,r1,asr #24
40974;@ EaWrite: r1 into register[r11]:
40975  strb r1,[r7,r11,lsr #7]
40976
40977  ldr r5,[r7,#0x5c] ;@ Load Cycles
40978  ldrh r8,[r4],#2 ;@ Fetch next opcode
40979  subs r5,r5,#8 ;@ Subtract cycles
40980  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40981  b CycloneEnd
40982
40983;@ ---------- [8018] or.b (a0)+, d0 uses Op8018 ----------
40984Op8018:
40985  str r4,[r7,#0x50] ;@ Save prev PC + 2
40986  str r5,[r7,#0x5c] ;@ Save Cycles
40987
40988;@ EaCalc : Get '(a0)+' into r0:
40989  and r2,r8,#0x000f
40990  ldr r0,[r7,r2,lsl #2]
40991  add r3,r0,#1 ;@ Post-increment An
40992  str r3,[r7,r2,lsl #2]
40993;@ EaRead : Read '(a0)+' (address in r0) into r0:
40994  str r4,[r7,#0x40] ;@ Save PC
40995  bic r0,r0,#0xff000000
40996  bl m68k_read8 ;@ Call read8(r0) handler
40997
40998;@ EaCalc : Get register index into r11:
40999  and r11,r8,#0x0e00
41000;@ EaRead : Read register[r11] into r1:
41001  ldr r1,[r7,r11,lsr #7]
41002
41003;@ Do arithmetic:
41004  mov r0,r0,asl #24
41005  orrs r1,r0,r1,asl #24
41006  and r10,r1,#0x80000000 ;@ r10=N_flag
41007  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41008
41009;@ Save result:
41010  mov r1,r1,asr #24
41011;@ EaWrite: r1 into register[r11]:
41012  strb r1,[r7,r11,lsr #7]
41013
41014  ldr r5,[r7,#0x5c] ;@ Load Cycles
41015  ldrh r8,[r4],#2 ;@ Fetch next opcode
41016  subs r5,r5,#8 ;@ Subtract cycles
41017  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41018  b CycloneEnd
41019
41020;@ ---------- [801f] or.b (a7)+, d0 uses Op801f ----------
41021Op801f:
41022  str r4,[r7,#0x50] ;@ Save prev PC + 2
41023  str r5,[r7,#0x5c] ;@ Save Cycles
41024
41025;@ EaCalc : Get '(a7)+' into r0:
41026  ldr r0,[r7,#0x3c] ;@ A7
41027  add r3,r0,#2 ;@ Post-increment An
41028  str r3,[r7,#0x3c] ;@ A7
41029;@ EaRead : Read '(a7)+' (address in r0) into r0:
41030  str r4,[r7,#0x40] ;@ Save PC
41031  bic r0,r0,#0xff000000
41032  bl m68k_read8 ;@ Call read8(r0) handler
41033
41034;@ EaCalc : Get register index into r11:
41035  and r11,r8,#0x0e00
41036;@ EaRead : Read register[r11] into r1:
41037  ldr r1,[r7,r11,lsr #7]
41038
41039;@ Do arithmetic:
41040  mov r0,r0,asl #24
41041  orrs r1,r0,r1,asl #24
41042  and r10,r1,#0x80000000 ;@ r10=N_flag
41043  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41044
41045;@ Save result:
41046  mov r1,r1,asr #24
41047;@ EaWrite: r1 into register[r11]:
41048  strb r1,[r7,r11,lsr #7]
41049
41050  ldr r5,[r7,#0x5c] ;@ Load Cycles
41051  ldrh r8,[r4],#2 ;@ Fetch next opcode
41052  subs r5,r5,#8 ;@ Subtract cycles
41053  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41054  b CycloneEnd
41055
41056;@ ---------- [8020] or.b -(a0), d0 uses Op8020 ----------
41057Op8020:
41058  str r4,[r7,#0x50] ;@ Save prev PC + 2
41059  str r5,[r7,#0x5c] ;@ Save Cycles
41060
41061;@ EaCalc : Get '-(a0)' into r0:
41062  and r2,r8,#0x000f
41063  orr r2,r2,#0x8 ;@ A0-7
41064  ldr r0,[r7,r2,lsl #2]
41065  sub r0,r0,#1 ;@ Pre-decrement An
41066  str r0,[r7,r2,lsl #2]
41067;@ EaRead : Read '-(a0)' (address in r0) into r0:
41068  str r4,[r7,#0x40] ;@ Save PC
41069  bic r0,r0,#0xff000000
41070  bl m68k_read8 ;@ Call read8(r0) handler
41071
41072;@ EaCalc : Get register index into r11:
41073  and r11,r8,#0x0e00
41074;@ EaRead : Read register[r11] into r1:
41075  ldr r1,[r7,r11,lsr #7]
41076
41077;@ Do arithmetic:
41078  mov r0,r0,asl #24
41079  orrs r1,r0,r1,asl #24
41080  and r10,r1,#0x80000000 ;@ r10=N_flag
41081  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41082
41083;@ Save result:
41084  mov r1,r1,asr #24
41085;@ EaWrite: r1 into register[r11]:
41086  strb r1,[r7,r11,lsr #7]
41087
41088  ldr r5,[r7,#0x5c] ;@ Load Cycles
41089  ldrh r8,[r4],#2 ;@ Fetch next opcode
41090  subs r5,r5,#10 ;@ Subtract cycles
41091  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41092  b CycloneEnd
41093
41094;@ ---------- [8027] or.b -(a7), d0 uses Op8027 ----------
41095Op8027:
41096  str r4,[r7,#0x50] ;@ Save prev PC + 2
41097  str r5,[r7,#0x5c] ;@ Save Cycles
41098
41099;@ EaCalc : Get '-(a7)' into r0:
41100  ldr r0,[r7,#0x3c] ;@ A7
41101  sub r0,r0,#2 ;@ Pre-decrement An
41102  str r0,[r7,#0x3c] ;@ A7
41103;@ EaRead : Read '-(a7)' (address in r0) into r0:
41104  str r4,[r7,#0x40] ;@ Save PC
41105  bic r0,r0,#0xff000000
41106  bl m68k_read8 ;@ Call read8(r0) handler
41107
41108;@ EaCalc : Get register index into r11:
41109  and r11,r8,#0x0e00
41110;@ EaRead : Read register[r11] into r1:
41111  ldr r1,[r7,r11,lsr #7]
41112
41113;@ Do arithmetic:
41114  mov r0,r0,asl #24
41115  orrs r1,r0,r1,asl #24
41116  and r10,r1,#0x80000000 ;@ r10=N_flag
41117  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41118
41119;@ Save result:
41120  mov r1,r1,asr #24
41121;@ EaWrite: r1 into register[r11]:
41122  strb r1,[r7,r11,lsr #7]
41123
41124  ldr r5,[r7,#0x5c] ;@ Load Cycles
41125  ldrh r8,[r4],#2 ;@ Fetch next opcode
41126  subs r5,r5,#10 ;@ Subtract cycles
41127  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41128  b CycloneEnd
41129
41130;@ ---------- [8028] or.b ($3333,a0), d0 uses Op8028 ----------
41131Op8028:
41132  str r4,[r7,#0x50] ;@ Save prev PC + 2
41133  str r5,[r7,#0x5c] ;@ Save Cycles
41134
41135;@ EaCalc : Get '($3333,a0)' into r0:
41136  ldrsh r0,[r4],#2 ;@ Fetch offset
41137  and r2,r8,#0x000f
41138  ldr r2,[r7,r2,lsl #2]
41139  add r0,r0,r2 ;@ Add on offset
41140;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
41141  str r4,[r7,#0x40] ;@ Save PC
41142  bic r0,r0,#0xff000000
41143  bl m68k_read8 ;@ Call read8(r0) handler
41144
41145;@ EaCalc : Get register index into r11:
41146  and r11,r8,#0x0e00
41147;@ EaRead : Read register[r11] into r1:
41148  ldr r1,[r7,r11,lsr #7]
41149
41150;@ Do arithmetic:
41151  mov r0,r0,asl #24
41152  orrs r1,r0,r1,asl #24
41153  and r10,r1,#0x80000000 ;@ r10=N_flag
41154  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41155
41156;@ Save result:
41157  mov r1,r1,asr #24
41158;@ EaWrite: r1 into register[r11]:
41159  strb r1,[r7,r11,lsr #7]
41160
41161  ldr r5,[r7,#0x5c] ;@ Load Cycles
41162  ldrh r8,[r4],#2 ;@ Fetch next opcode
41163  subs r5,r5,#12 ;@ Subtract cycles
41164  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41165  b CycloneEnd
41166
41167;@ ---------- [8030] or.b ($33,a0,d3.w*2), d0 uses Op8030 ----------
41168Op8030:
41169  str r4,[r7,#0x50] ;@ Save prev PC + 2
41170  str r5,[r7,#0x5c] ;@ Save Cycles
41171
41172;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
41173;@ Get extension word into r3:
41174  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
41175  mov r2,r3,lsr #10
41176  tst r3,#0x0800 ;@ Is Rn Word or Long
41177  and r2,r2,#0x3c ;@ r2=Index of Rn
41178  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
41179  ldrne   r2,[r7,r2] ;@ r2=Rn.l
41180  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
41181  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
41182  and r2,r8,#0x000f
41183  orr r2,r2,#0x8 ;@ A0-7
41184  ldr r2,[r7,r2,lsl #2]
41185  add r0,r2,r3 ;@ r0=Disp+An+Rn
41186;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
41187  str r4,[r7,#0x40] ;@ Save PC
41188  bic r0,r0,#0xff000000
41189  bl m68k_read8 ;@ Call read8(r0) handler
41190
41191;@ EaCalc : Get register index into r11:
41192  and r11,r8,#0x0e00
41193;@ EaRead : Read register[r11] into r1:
41194  ldr r1,[r7,r11,lsr #7]
41195
41196;@ Do arithmetic:
41197  mov r0,r0,asl #24
41198  orrs r1,r0,r1,asl #24
41199  and r10,r1,#0x80000000 ;@ r10=N_flag
41200  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41201
41202;@ Save result:
41203  mov r1,r1,asr #24
41204;@ EaWrite: r1 into register[r11]:
41205  strb r1,[r7,r11,lsr #7]
41206
41207  ldr r5,[r7,#0x5c] ;@ Load Cycles
41208  ldrh r8,[r4],#2 ;@ Fetch next opcode
41209  subs r5,r5,#14 ;@ Subtract cycles
41210  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41211  b CycloneEnd
41212
41213;@ ---------- [8038] or.b $3333.w, d0 uses Op8038 ----------
41214Op8038:
41215  str r4,[r7,#0x50] ;@ Save prev PC + 2
41216  str r5,[r7,#0x5c] ;@ Save Cycles
41217
41218;@ EaCalc : Get '$3333.w' into r0:
41219  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
41220;@ EaRead : Read '$3333.w' (address in r0) into r0:
41221  str r4,[r7,#0x40] ;@ Save PC
41222  bic r0,r0,#0xff000000
41223  bl m68k_read8 ;@ Call read8(r0) handler
41224
41225;@ EaCalc : Get register index into r11:
41226  and r11,r8,#0x0e00
41227;@ EaRead : Read register[r11] into r1:
41228  ldr r1,[r7,r11,lsr #7]
41229
41230;@ Do arithmetic:
41231  mov r0,r0,asl #24
41232  orrs r1,r0,r1,asl #24
41233  and r10,r1,#0x80000000 ;@ r10=N_flag
41234  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41235
41236;@ Save result:
41237  mov r1,r1,asr #24
41238;@ EaWrite: r1 into register[r11]:
41239  strb r1,[r7,r11,lsr #7]
41240
41241  ldr r5,[r7,#0x5c] ;@ Load Cycles
41242  ldrh r8,[r4],#2 ;@ Fetch next opcode
41243  subs r5,r5,#12 ;@ Subtract cycles
41244  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41245  b CycloneEnd
41246
41247;@ ---------- [8039] or.b $33333333.l, d0 uses Op8039 ----------
41248Op8039:
41249  str r4,[r7,#0x50] ;@ Save prev PC + 2
41250  str r5,[r7,#0x5c] ;@ Save Cycles
41251
41252;@ EaCalc : Get '$33333333.l' into r0:
41253  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
41254  ldrh r0,[r4],#2
41255  orr r0,r0,r2,lsl #16
41256;@ EaRead : Read '$33333333.l' (address in r0) into r0:
41257  str r4,[r7,#0x40] ;@ Save PC
41258  bic r0,r0,#0xff000000
41259  bl m68k_read8 ;@ Call read8(r0) handler
41260
41261;@ EaCalc : Get register index into r11:
41262  and r11,r8,#0x0e00
41263;@ EaRead : Read register[r11] into r1:
41264  ldr r1,[r7,r11,lsr #7]
41265
41266;@ Do arithmetic:
41267  mov r0,r0,asl #24
41268  orrs r1,r0,r1,asl #24
41269  and r10,r1,#0x80000000 ;@ r10=N_flag
41270  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41271
41272;@ Save result:
41273  mov r1,r1,asr #24
41274;@ EaWrite: r1 into register[r11]:
41275  strb r1,[r7,r11,lsr #7]
41276
41277  ldr r5,[r7,#0x5c] ;@ Load Cycles
41278  ldrh r8,[r4],#2 ;@ Fetch next opcode
41279  subs r5,r5,#16 ;@ Subtract cycles
41280  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41281  b CycloneEnd
41282
41283;@ ---------- [803a] or.b ($3333,pc), d0; =3335 uses Op803a ----------
41284Op803a:
41285  str r4,[r7,#0x50] ;@ Save prev PC + 2
41286  str r5,[r7,#0x5c] ;@ Save Cycles
41287
41288;@ EaCalc : Get '($3333,pc)' into r0:
41289  ldr r0,[r7,#0x60] ;@ Get Memory base
41290  sub r0,r4,r0 ;@ Real PC
41291  ldrsh r2,[r4],#2 ;@ Fetch extension
41292  add r0,r2,r0 ;@ ($nn,PC)
41293;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
41294  str r4,[r7,#0x40] ;@ Save PC
41295  bic r0,r0,#0xff000000
41296  bl m68k_fetch8 ;@ Call fetch8(r0) handler
41297
41298;@ EaCalc : Get register index into r11:
41299  and r11,r8,#0x0e00
41300;@ EaRead : Read register[r11] into r1:
41301  ldr r1,[r7,r11,lsr #7]
41302
41303;@ Do arithmetic:
41304  mov r0,r0,asl #24
41305  orrs r1,r0,r1,asl #24
41306  and r10,r1,#0x80000000 ;@ r10=N_flag
41307  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41308
41309;@ Save result:
41310  mov r1,r1,asr #24
41311;@ EaWrite: r1 into register[r11]:
41312  strb r1,[r7,r11,lsr #7]
41313
41314  ldr r5,[r7,#0x5c] ;@ Load Cycles
41315  ldrh r8,[r4],#2 ;@ Fetch next opcode
41316  subs r5,r5,#12 ;@ Subtract cycles
41317  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41318  b CycloneEnd
41319
41320;@ ---------- [803b] or.b ($33,pc,d3.w*2), d0; =35 uses Op803b ----------
41321Op803b:
41322  str r4,[r7,#0x50] ;@ Save prev PC + 2
41323  str r5,[r7,#0x5c] ;@ Save Cycles
41324
41325;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
41326  ldr r0,[r7,#0x60] ;@ Get Memory base
41327  ldrh r3,[r4] ;@ Get extension word
41328  sub r0,r4,r0 ;@ r0=PC
41329  add r4,r4,#2
41330  mov r2,r3,lsr #10
41331  tst r3,#0x0800 ;@ Is Rn Word or Long
41332  and r2,r2,#0x3c ;@ r2=Index of Rn
41333  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
41334  ldrne   r2,[r7,r2] ;@ r2=Rn.l
41335  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
41336  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
41337  add r0,r2,r0 ;@ r0=Disp+PC+Rn
41338;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
41339  str r4,[r7,#0x40] ;@ Save PC
41340  bic r0,r0,#0xff000000
41341  bl m68k_fetch8 ;@ Call fetch8(r0) handler
41342
41343;@ EaCalc : Get register index into r11:
41344  and r11,r8,#0x0e00
41345;@ EaRead : Read register[r11] into r1:
41346  ldr r1,[r7,r11,lsr #7]
41347
41348;@ Do arithmetic:
41349  mov r0,r0,asl #24
41350  orrs r1,r0,r1,asl #24
41351  and r10,r1,#0x80000000 ;@ r10=N_flag
41352  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41353
41354;@ Save result:
41355  mov r1,r1,asr #24
41356;@ EaWrite: r1 into register[r11]:
41357  strb r1,[r7,r11,lsr #7]
41358
41359  ldr r5,[r7,#0x5c] ;@ Load Cycles
41360  ldrh r8,[r4],#2 ;@ Fetch next opcode
41361  subs r5,r5,#14 ;@ Subtract cycles
41362  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41363  b CycloneEnd
41364
41365;@ ---------- [803c] or.b #$33, d0 uses Op803c ----------
41366Op803c:
41367;@ EaCalc : Get '#$33' into r0:
41368  ldrsb r0,[r4],#2 ;@ Fetch immediate value
41369;@ EaRead : Read '#$33' (address in r0) into r0:
41370
41371;@ EaCalc : Get register index into r11:
41372  and r11,r8,#0x0e00
41373;@ EaRead : Read register[r11] into r1:
41374  ldr r1,[r7,r11,lsr #7]
41375
41376;@ Do arithmetic:
41377  mov r0,r0,asl #24
41378  orrs r1,r0,r1,asl #24
41379  and r10,r1,#0x80000000 ;@ r10=N_flag
41380  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41381
41382;@ Save result:
41383  mov r1,r1,asr #24
41384;@ EaWrite: r1 into register[r11]:
41385  strb r1,[r7,r11,lsr #7]
41386
41387  ldrh r8,[r4],#2 ;@ Fetch next opcode
41388  subs r5,r5,#8 ;@ Subtract cycles
41389  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41390  b CycloneEnd
41391
41392;@ ---------- [8040] or.w d0, d0 uses Op8040 ----------
41393Op8040:
41394;@ EaCalc : Get register index into r0:
41395  and r0,r8,#0x000f
41396;@ EaRead : Read register[r0] into r0:
41397  ldr r0,[r7,r0,lsl #2]
41398
41399;@ EaCalc : Get register index into r11:
41400  and r11,r8,#0x0e00
41401  mov r11,r11,lsr #7
41402;@ EaRead : Read register[r11] into r1:
41403  ldr r1,[r7,r11]
41404
41405;@ Do arithmetic:
41406  mov r0,r0,asl #16
41407  orrs r1,r0,r1,asl #16
41408  and r10,r1,#0x80000000 ;@ r10=N_flag
41409  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41410
41411;@ Save result:
41412  mov r1,r1,asr #16
41413;@ EaWrite: r1 into register[r11]:
41414  strh r1,[r7,r11]
41415
41416  ldrh r8,[r4],#2 ;@ Fetch next opcode
41417  subs r5,r5,#4 ;@ Subtract cycles
41418  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41419  b CycloneEnd
41420
41421;@ ---------- [8050] or.w (a0), d0 uses Op8050 ----------
41422Op8050:
41423  str r4,[r7,#0x50] ;@ Save prev PC + 2
41424  str r5,[r7,#0x5c] ;@ Save Cycles
41425
41426;@ EaCalc : Get '(a0)' into r0:
41427  and r2,r8,#0x000f
41428  orr r2,r2,#0x8 ;@ A0-7
41429  ldr r0,[r7,r2,lsl #2]
41430;@ EaRead : Read '(a0)' (address in r0) into r0:
41431  str r4,[r7,#0x40] ;@ Save PC
41432  bic r0,r0,#0xff000000
41433  bl m68k_read16 ;@ Call read16(r0) handler
41434
41435;@ EaCalc : Get register index into r11:
41436  and r11,r8,#0x0e00
41437  mov r11,r11,lsr #7
41438;@ EaRead : Read register[r11] into r1:
41439  ldr r1,[r7,r11]
41440
41441;@ Do arithmetic:
41442  mov r0,r0,asl #16
41443  orrs r1,r0,r1,asl #16
41444  and r10,r1,#0x80000000 ;@ r10=N_flag
41445  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41446
41447;@ Save result:
41448  mov r1,r1,asr #16
41449;@ EaWrite: r1 into register[r11]:
41450  strh r1,[r7,r11]
41451
41452  ldr r5,[r7,#0x5c] ;@ Load Cycles
41453  ldrh r8,[r4],#2 ;@ Fetch next opcode
41454  subs r5,r5,#8 ;@ Subtract cycles
41455  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41456  b CycloneEnd
41457
41458;@ ---------- [8058] or.w (a0)+, d0 uses Op8058 ----------
41459Op8058:
41460  str r4,[r7,#0x50] ;@ Save prev PC + 2
41461  str r5,[r7,#0x5c] ;@ Save Cycles
41462
41463;@ EaCalc : Get '(a0)+' into r0:
41464  and r2,r8,#0x000f
41465  ldr r0,[r7,r2,lsl #2]
41466  add r3,r0,#2 ;@ Post-increment An
41467  str r3,[r7,r2,lsl #2]
41468;@ EaRead : Read '(a0)+' (address in r0) into r0:
41469  str r4,[r7,#0x40] ;@ Save PC
41470  bic r0,r0,#0xff000000
41471  bl m68k_read16 ;@ Call read16(r0) handler
41472
41473;@ EaCalc : Get register index into r11:
41474  and r11,r8,#0x0e00
41475  mov r11,r11,lsr #7
41476;@ EaRead : Read register[r11] into r1:
41477  ldr r1,[r7,r11]
41478
41479;@ Do arithmetic:
41480  mov r0,r0,asl #16
41481  orrs r1,r0,r1,asl #16
41482  and r10,r1,#0x80000000 ;@ r10=N_flag
41483  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41484
41485;@ Save result:
41486  mov r1,r1,asr #16
41487;@ EaWrite: r1 into register[r11]:
41488  strh r1,[r7,r11]
41489
41490  ldr r5,[r7,#0x5c] ;@ Load Cycles
41491  ldrh r8,[r4],#2 ;@ Fetch next opcode
41492  subs r5,r5,#8 ;@ Subtract cycles
41493  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41494  b CycloneEnd
41495
41496;@ ---------- [8060] or.w -(a0), d0 uses Op8060 ----------
41497Op8060:
41498  str r4,[r7,#0x50] ;@ Save prev PC + 2
41499  str r5,[r7,#0x5c] ;@ Save Cycles
41500
41501;@ EaCalc : Get '-(a0)' into r0:
41502  and r2,r8,#0x000f
41503  orr r2,r2,#0x8 ;@ A0-7
41504  ldr r0,[r7,r2,lsl #2]
41505  sub r0,r0,#2 ;@ Pre-decrement An
41506  str r0,[r7,r2,lsl #2]
41507;@ EaRead : Read '-(a0)' (address in r0) into r0:
41508  str r4,[r7,#0x40] ;@ Save PC
41509  bic r0,r0,#0xff000000
41510  bl m68k_read16 ;@ Call read16(r0) handler
41511
41512;@ EaCalc : Get register index into r11:
41513  and r11,r8,#0x0e00
41514  mov r11,r11,lsr #7
41515;@ EaRead : Read register[r11] into r1:
41516  ldr r1,[r7,r11]
41517
41518;@ Do arithmetic:
41519  mov r0,r0,asl #16
41520  orrs r1,r0,r1,asl #16
41521  and r10,r1,#0x80000000 ;@ r10=N_flag
41522  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41523
41524;@ Save result:
41525  mov r1,r1,asr #16
41526;@ EaWrite: r1 into register[r11]:
41527  strh r1,[r7,r11]
41528
41529  ldr r5,[r7,#0x5c] ;@ Load Cycles
41530  ldrh r8,[r4],#2 ;@ Fetch next opcode
41531  subs r5,r5,#10 ;@ Subtract cycles
41532  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41533  b CycloneEnd
41534
41535;@ ---------- [8068] or.w ($3333,a0), d0 uses Op8068 ----------
41536Op8068:
41537  str r4,[r7,#0x50] ;@ Save prev PC + 2
41538  str r5,[r7,#0x5c] ;@ Save Cycles
41539
41540;@ EaCalc : Get '($3333,a0)' into r0:
41541  ldrsh r0,[r4],#2 ;@ Fetch offset
41542  and r2,r8,#0x000f
41543  ldr r2,[r7,r2,lsl #2]
41544  add r0,r0,r2 ;@ Add on offset
41545;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
41546  str r4,[r7,#0x40] ;@ Save PC
41547  bic r0,r0,#0xff000000
41548  bl m68k_read16 ;@ Call read16(r0) handler
41549
41550;@ EaCalc : Get register index into r11:
41551  and r11,r8,#0x0e00
41552  mov r11,r11,lsr #7
41553;@ EaRead : Read register[r11] into r1:
41554  ldr r1,[r7,r11]
41555
41556;@ Do arithmetic:
41557  mov r0,r0,asl #16
41558  orrs r1,r0,r1,asl #16
41559  and r10,r1,#0x80000000 ;@ r10=N_flag
41560  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41561
41562;@ Save result:
41563  mov r1,r1,asr #16
41564;@ EaWrite: r1 into register[r11]:
41565  strh r1,[r7,r11]
41566
41567  ldr r5,[r7,#0x5c] ;@ Load Cycles
41568  ldrh r8,[r4],#2 ;@ Fetch next opcode
41569  subs r5,r5,#12 ;@ Subtract cycles
41570  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41571  b CycloneEnd
41572
41573;@ ---------- [8070] or.w ($33,a0,d3.w*2), d0 uses Op8070 ----------
41574Op8070:
41575  str r4,[r7,#0x50] ;@ Save prev PC + 2
41576  str r5,[r7,#0x5c] ;@ Save Cycles
41577
41578;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
41579;@ Get extension word into r3:
41580  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
41581  mov r2,r3,lsr #10
41582  tst r3,#0x0800 ;@ Is Rn Word or Long
41583  and r2,r2,#0x3c ;@ r2=Index of Rn
41584  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
41585  ldrne   r2,[r7,r2] ;@ r2=Rn.l
41586  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
41587  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
41588  and r2,r8,#0x000f
41589  orr r2,r2,#0x8 ;@ A0-7
41590  ldr r2,[r7,r2,lsl #2]
41591  add r0,r2,r3 ;@ r0=Disp+An+Rn
41592;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
41593  str r4,[r7,#0x40] ;@ Save PC
41594  bic r0,r0,#0xff000000
41595  bl m68k_read16 ;@ Call read16(r0) handler
41596
41597;@ EaCalc : Get register index into r11:
41598  and r11,r8,#0x0e00
41599  mov r11,r11,lsr #7
41600;@ EaRead : Read register[r11] into r1:
41601  ldr r1,[r7,r11]
41602
41603;@ Do arithmetic:
41604  mov r0,r0,asl #16
41605  orrs r1,r0,r1,asl #16
41606  and r10,r1,#0x80000000 ;@ r10=N_flag
41607  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41608
41609;@ Save result:
41610  mov r1,r1,asr #16
41611;@ EaWrite: r1 into register[r11]:
41612  strh r1,[r7,r11]
41613
41614  ldr r5,[r7,#0x5c] ;@ Load Cycles
41615  ldrh r8,[r4],#2 ;@ Fetch next opcode
41616  subs r5,r5,#14 ;@ Subtract cycles
41617  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41618  b CycloneEnd
41619
41620;@ ---------- [8078] or.w $3333.w, d0 uses Op8078 ----------
41621Op8078:
41622  str r4,[r7,#0x50] ;@ Save prev PC + 2
41623  str r5,[r7,#0x5c] ;@ Save Cycles
41624
41625;@ EaCalc : Get '$3333.w' into r0:
41626  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
41627;@ EaRead : Read '$3333.w' (address in r0) into r0:
41628  str r4,[r7,#0x40] ;@ Save PC
41629  bic r0,r0,#0xff000000
41630  bl m68k_read16 ;@ Call read16(r0) handler
41631
41632;@ EaCalc : Get register index into r11:
41633  and r11,r8,#0x0e00
41634  mov r11,r11,lsr #7
41635;@ EaRead : Read register[r11] into r1:
41636  ldr r1,[r7,r11]
41637
41638;@ Do arithmetic:
41639  mov r0,r0,asl #16
41640  orrs r1,r0,r1,asl #16
41641  and r10,r1,#0x80000000 ;@ r10=N_flag
41642  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41643
41644;@ Save result:
41645  mov r1,r1,asr #16
41646;@ EaWrite: r1 into register[r11]:
41647  strh r1,[r7,r11]
41648
41649  ldr r5,[r7,#0x5c] ;@ Load Cycles
41650  ldrh r8,[r4],#2 ;@ Fetch next opcode
41651  subs r5,r5,#12 ;@ Subtract cycles
41652  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41653  b CycloneEnd
41654
41655;@ ---------- [8079] or.w $33333333.l, d0 uses Op8079 ----------
41656Op8079:
41657  str r4,[r7,#0x50] ;@ Save prev PC + 2
41658  str r5,[r7,#0x5c] ;@ Save Cycles
41659
41660;@ EaCalc : Get '$33333333.l' into r0:
41661  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
41662  ldrh r0,[r4],#2
41663  orr r0,r0,r2,lsl #16
41664;@ EaRead : Read '$33333333.l' (address in r0) into r0:
41665  str r4,[r7,#0x40] ;@ Save PC
41666  bic r0,r0,#0xff000000
41667  bl m68k_read16 ;@ Call read16(r0) handler
41668
41669;@ EaCalc : Get register index into r11:
41670  and r11,r8,#0x0e00
41671  mov r11,r11,lsr #7
41672;@ EaRead : Read register[r11] into r1:
41673  ldr r1,[r7,r11]
41674
41675;@ Do arithmetic:
41676  mov r0,r0,asl #16
41677  orrs r1,r0,r1,asl #16
41678  and r10,r1,#0x80000000 ;@ r10=N_flag
41679  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41680
41681;@ Save result:
41682  mov r1,r1,asr #16
41683;@ EaWrite: r1 into register[r11]:
41684  strh r1,[r7,r11]
41685
41686  ldr r5,[r7,#0x5c] ;@ Load Cycles
41687  ldrh r8,[r4],#2 ;@ Fetch next opcode
41688  subs r5,r5,#16 ;@ Subtract cycles
41689  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41690  b CycloneEnd
41691
41692;@ ---------- [807a] or.w ($3333,pc), d0; =3335 uses Op807a ----------
41693Op807a:
41694  str r4,[r7,#0x50] ;@ Save prev PC + 2
41695  str r5,[r7,#0x5c] ;@ Save Cycles
41696
41697;@ EaCalc : Get '($3333,pc)' into r0:
41698  ldr r0,[r7,#0x60] ;@ Get Memory base
41699  sub r0,r4,r0 ;@ Real PC
41700  ldrsh r2,[r4],#2 ;@ Fetch extension
41701  add r0,r2,r0 ;@ ($nn,PC)
41702;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
41703  str r4,[r7,#0x40] ;@ Save PC
41704  bic r0,r0,#0xff000000
41705  bl m68k_fetch16 ;@ Call fetch16(r0) handler
41706
41707;@ EaCalc : Get register index into r11:
41708  and r11,r8,#0x0e00
41709  mov r11,r11,lsr #7
41710;@ EaRead : Read register[r11] into r1:
41711  ldr r1,[r7,r11]
41712
41713;@ Do arithmetic:
41714  mov r0,r0,asl #16
41715  orrs r1,r0,r1,asl #16
41716  and r10,r1,#0x80000000 ;@ r10=N_flag
41717  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41718
41719;@ Save result:
41720  mov r1,r1,asr #16
41721;@ EaWrite: r1 into register[r11]:
41722  strh r1,[r7,r11]
41723
41724  ldr r5,[r7,#0x5c] ;@ Load Cycles
41725  ldrh r8,[r4],#2 ;@ Fetch next opcode
41726  subs r5,r5,#12 ;@ Subtract cycles
41727  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41728  b CycloneEnd
41729
41730;@ ---------- [807b] or.w ($33,pc,d3.w*2), d0; =35 uses Op807b ----------
41731Op807b:
41732  str r4,[r7,#0x50] ;@ Save prev PC + 2
41733  str r5,[r7,#0x5c] ;@ Save Cycles
41734
41735;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
41736  ldr r0,[r7,#0x60] ;@ Get Memory base
41737  ldrh r3,[r4] ;@ Get extension word
41738  sub r0,r4,r0 ;@ r0=PC
41739  add r4,r4,#2
41740  mov r2,r3,lsr #10
41741  tst r3,#0x0800 ;@ Is Rn Word or Long
41742  and r2,r2,#0x3c ;@ r2=Index of Rn
41743  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
41744  ldrne   r2,[r7,r2] ;@ r2=Rn.l
41745  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
41746  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
41747  add r0,r2,r0 ;@ r0=Disp+PC+Rn
41748;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
41749  str r4,[r7,#0x40] ;@ Save PC
41750  bic r0,r0,#0xff000000
41751  bl m68k_fetch16 ;@ Call fetch16(r0) handler
41752
41753;@ EaCalc : Get register index into r11:
41754  and r11,r8,#0x0e00
41755  mov r11,r11,lsr #7
41756;@ EaRead : Read register[r11] into r1:
41757  ldr r1,[r7,r11]
41758
41759;@ Do arithmetic:
41760  mov r0,r0,asl #16
41761  orrs r1,r0,r1,asl #16
41762  and r10,r1,#0x80000000 ;@ r10=N_flag
41763  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41764
41765;@ Save result:
41766  mov r1,r1,asr #16
41767;@ EaWrite: r1 into register[r11]:
41768  strh r1,[r7,r11]
41769
41770  ldr r5,[r7,#0x5c] ;@ Load Cycles
41771  ldrh r8,[r4],#2 ;@ Fetch next opcode
41772  subs r5,r5,#14 ;@ Subtract cycles
41773  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41774  b CycloneEnd
41775
41776;@ ---------- [807c] or.w #$3333, d0 uses Op807c ----------
41777Op807c:
41778;@ EaCalc : Get '#$3333' into r0:
41779  ldrsh r0,[r4],#2 ;@ Fetch immediate value
41780;@ EaRead : Read '#$3333' (address in r0) into r0:
41781
41782;@ EaCalc : Get register index into r11:
41783  and r11,r8,#0x0e00
41784  mov r11,r11,lsr #7
41785;@ EaRead : Read register[r11] into r1:
41786  ldr r1,[r7,r11]
41787
41788;@ Do arithmetic:
41789  mov r0,r0,asl #16
41790  orrs r1,r0,r1,asl #16
41791  and r10,r1,#0x80000000 ;@ r10=N_flag
41792  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41793
41794;@ Save result:
41795  mov r1,r1,asr #16
41796;@ EaWrite: r1 into register[r11]:
41797  strh r1,[r7,r11]
41798
41799  ldrh r8,[r4],#2 ;@ Fetch next opcode
41800  subs r5,r5,#8 ;@ Subtract cycles
41801  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41802  b CycloneEnd
41803
41804;@ ---------- [8080] or.l d0, d0 uses Op8080 ----------
41805Op8080:
41806;@ EaCalc : Get register index into r0:
41807  and r0,r8,#0x000f
41808;@ EaRead : Read register[r0] into r0:
41809  ldr r0,[r7,r0,lsl #2]
41810
41811;@ EaCalc : Get register index into r11:
41812  and r11,r8,#0x0e00
41813;@ EaRead : Read register[r11] into r1:
41814  ldr r1,[r7,r11,lsr #7]
41815
41816;@ Do arithmetic:
41817  orrs r1,r0,r1
41818  and r10,r1,#0x80000000 ;@ r10=N_flag
41819  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41820
41821;@ Save result:
41822;@ EaWrite: r1 into register[r11]:
41823  str r1,[r7,r11,lsr #7]
41824
41825  ldrh r8,[r4],#2 ;@ Fetch next opcode
41826  subs r5,r5,#8 ;@ Subtract cycles
41827  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41828  b CycloneEnd
41829
41830;@ ---------- [8090] or.l (a0), d0 uses Op8090 ----------
41831Op8090:
41832  str r4,[r7,#0x50] ;@ Save prev PC + 2
41833  str r5,[r7,#0x5c] ;@ Save Cycles
41834
41835;@ EaCalc : Get '(a0)' into r0:
41836  and r2,r8,#0x000f
41837  orr r2,r2,#0x8 ;@ A0-7
41838  ldr r0,[r7,r2,lsl #2]
41839;@ EaRead : Read '(a0)' (address in r0) into r0:
41840  str r4,[r7,#0x40] ;@ Save PC
41841  bic r0,r0,#0xff000000
41842  bl m68k_read32 ;@ Call read32(r0) handler
41843
41844;@ EaCalc : Get register index into r11:
41845  and r11,r8,#0x0e00
41846;@ EaRead : Read register[r11] into r1:
41847  ldr r1,[r7,r11,lsr #7]
41848
41849;@ Do arithmetic:
41850  orrs r1,r0,r1
41851  and r10,r1,#0x80000000 ;@ r10=N_flag
41852  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41853
41854;@ Save result:
41855;@ EaWrite: r1 into register[r11]:
41856  str r1,[r7,r11,lsr #7]
41857
41858  ldr r5,[r7,#0x5c] ;@ Load Cycles
41859  ldrh r8,[r4],#2 ;@ Fetch next opcode
41860  subs r5,r5,#14 ;@ Subtract cycles
41861  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41862  b CycloneEnd
41863
41864;@ ---------- [8098] or.l (a0)+, d0 uses Op8098 ----------
41865Op8098:
41866  str r4,[r7,#0x50] ;@ Save prev PC + 2
41867  str r5,[r7,#0x5c] ;@ Save Cycles
41868
41869;@ EaCalc : Get '(a0)+' into r0:
41870  and r2,r8,#0x000f
41871  ldr r0,[r7,r2,lsl #2]
41872  add r3,r0,#4 ;@ Post-increment An
41873  str r3,[r7,r2,lsl #2]
41874;@ EaRead : Read '(a0)+' (address in r0) into r0:
41875  str r4,[r7,#0x40] ;@ Save PC
41876  bic r0,r0,#0xff000000
41877  bl m68k_read32 ;@ Call read32(r0) handler
41878
41879;@ EaCalc : Get register index into r11:
41880  and r11,r8,#0x0e00
41881;@ EaRead : Read register[r11] into r1:
41882  ldr r1,[r7,r11,lsr #7]
41883
41884;@ Do arithmetic:
41885  orrs r1,r0,r1
41886  and r10,r1,#0x80000000 ;@ r10=N_flag
41887  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41888
41889;@ Save result:
41890;@ EaWrite: r1 into register[r11]:
41891  str r1,[r7,r11,lsr #7]
41892
41893  ldr r5,[r7,#0x5c] ;@ Load Cycles
41894  ldrh r8,[r4],#2 ;@ Fetch next opcode
41895  subs r5,r5,#14 ;@ Subtract cycles
41896  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41897  b CycloneEnd
41898
41899;@ ---------- [80a0] or.l -(a0), d0 uses Op80a0 ----------
41900Op80a0:
41901  str r4,[r7,#0x50] ;@ Save prev PC + 2
41902  str r5,[r7,#0x5c] ;@ Save Cycles
41903
41904;@ EaCalc : Get '-(a0)' into r0:
41905  and r2,r8,#0x000f
41906  orr r2,r2,#0x8 ;@ A0-7
41907  ldr r0,[r7,r2,lsl #2]
41908  sub r0,r0,#4 ;@ Pre-decrement An
41909  str r0,[r7,r2,lsl #2]
41910;@ EaRead : Read '-(a0)' (address in r0) into r0:
41911  str r4,[r7,#0x40] ;@ Save PC
41912  bic r0,r0,#0xff000000
41913  bl m68k_read32 ;@ Call read32(r0) handler
41914
41915;@ EaCalc : Get register index into r11:
41916  and r11,r8,#0x0e00
41917;@ EaRead : Read register[r11] into r1:
41918  ldr r1,[r7,r11,lsr #7]
41919
41920;@ Do arithmetic:
41921  orrs r1,r0,r1
41922  and r10,r1,#0x80000000 ;@ r10=N_flag
41923  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41924
41925;@ Save result:
41926;@ EaWrite: r1 into register[r11]:
41927  str r1,[r7,r11,lsr #7]
41928
41929  ldr r5,[r7,#0x5c] ;@ Load Cycles
41930  ldrh r8,[r4],#2 ;@ Fetch next opcode
41931  subs r5,r5,#16 ;@ Subtract cycles
41932  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41933  b CycloneEnd
41934
41935;@ ---------- [80a8] or.l ($3333,a0), d0 uses Op80a8 ----------
41936Op80a8:
41937  str r4,[r7,#0x50] ;@ Save prev PC + 2
41938  str r5,[r7,#0x5c] ;@ Save Cycles
41939
41940;@ EaCalc : Get '($3333,a0)' into r0:
41941  ldrsh r0,[r4],#2 ;@ Fetch offset
41942  and r2,r8,#0x000f
41943  ldr r2,[r7,r2,lsl #2]
41944  add r0,r0,r2 ;@ Add on offset
41945;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
41946  str r4,[r7,#0x40] ;@ Save PC
41947  bic r0,r0,#0xff000000
41948  bl m68k_read32 ;@ Call read32(r0) handler
41949
41950;@ EaCalc : Get register index into r11:
41951  and r11,r8,#0x0e00
41952;@ EaRead : Read register[r11] into r1:
41953  ldr r1,[r7,r11,lsr #7]
41954
41955;@ Do arithmetic:
41956  orrs r1,r0,r1
41957  and r10,r1,#0x80000000 ;@ r10=N_flag
41958  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
41959
41960;@ Save result:
41961;@ EaWrite: r1 into register[r11]:
41962  str r1,[r7,r11,lsr #7]
41963
41964  ldr r5,[r7,#0x5c] ;@ Load Cycles
41965  ldrh r8,[r4],#2 ;@ Fetch next opcode
41966  subs r5,r5,#18 ;@ Subtract cycles
41967  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41968  b CycloneEnd
41969
41970;@ ---------- [80b0] or.l ($33,a0,d3.w*2), d0 uses Op80b0 ----------
41971Op80b0:
41972  str r4,[r7,#0x50] ;@ Save prev PC + 2
41973  str r5,[r7,#0x5c] ;@ Save Cycles
41974
41975;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
41976;@ Get extension word into r3:
41977  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
41978  mov r2,r3,lsr #10
41979  tst r3,#0x0800 ;@ Is Rn Word or Long
41980  and r2,r2,#0x3c ;@ r2=Index of Rn
41981  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
41982  ldrne   r2,[r7,r2] ;@ r2=Rn.l
41983  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
41984  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
41985  and r2,r8,#0x000f
41986  orr r2,r2,#0x8 ;@ A0-7
41987  ldr r2,[r7,r2,lsl #2]
41988  add r0,r2,r3 ;@ r0=Disp+An+Rn
41989;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
41990  str r4,[r7,#0x40] ;@ Save PC
41991  bic r0,r0,#0xff000000
41992  bl m68k_read32 ;@ Call read32(r0) handler
41993
41994;@ EaCalc : Get register index into r11:
41995  and r11,r8,#0x0e00
41996;@ EaRead : Read register[r11] into r1:
41997  ldr r1,[r7,r11,lsr #7]
41998
41999;@ Do arithmetic:
42000  orrs r1,r0,r1
42001  and r10,r1,#0x80000000 ;@ r10=N_flag
42002  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42003
42004;@ Save result:
42005;@ EaWrite: r1 into register[r11]:
42006  str r1,[r7,r11,lsr #7]
42007
42008  ldr r5,[r7,#0x5c] ;@ Load Cycles
42009  ldrh r8,[r4],#2 ;@ Fetch next opcode
42010  subs r5,r5,#20 ;@ Subtract cycles
42011  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42012  b CycloneEnd
42013
42014;@ ---------- [80b8] or.l $3333.w, d0 uses Op80b8 ----------
42015Op80b8:
42016  str r4,[r7,#0x50] ;@ Save prev PC + 2
42017  str r5,[r7,#0x5c] ;@ Save Cycles
42018
42019;@ EaCalc : Get '$3333.w' into r0:
42020  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
42021;@ EaRead : Read '$3333.w' (address in r0) into r0:
42022  str r4,[r7,#0x40] ;@ Save PC
42023  bic r0,r0,#0xff000000
42024  bl m68k_read32 ;@ Call read32(r0) handler
42025
42026;@ EaCalc : Get register index into r11:
42027  and r11,r8,#0x0e00
42028;@ EaRead : Read register[r11] into r1:
42029  ldr r1,[r7,r11,lsr #7]
42030
42031;@ Do arithmetic:
42032  orrs r1,r0,r1
42033  and r10,r1,#0x80000000 ;@ r10=N_flag
42034  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42035
42036;@ Save result:
42037;@ EaWrite: r1 into register[r11]:
42038  str r1,[r7,r11,lsr #7]
42039
42040  ldr r5,[r7,#0x5c] ;@ Load Cycles
42041  ldrh r8,[r4],#2 ;@ Fetch next opcode
42042  subs r5,r5,#18 ;@ Subtract cycles
42043  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42044  b CycloneEnd
42045
42046;@ ---------- [80b9] or.l $33333333.l, d0 uses Op80b9 ----------
42047Op80b9:
42048  str r4,[r7,#0x50] ;@ Save prev PC + 2
42049  str r5,[r7,#0x5c] ;@ Save Cycles
42050
42051;@ EaCalc : Get '$33333333.l' into r0:
42052  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
42053  ldrh r0,[r4],#2
42054  orr r0,r0,r2,lsl #16
42055;@ EaRead : Read '$33333333.l' (address in r0) into r0:
42056  str r4,[r7,#0x40] ;@ Save PC
42057  bic r0,r0,#0xff000000
42058  bl m68k_read32 ;@ Call read32(r0) handler
42059
42060;@ EaCalc : Get register index into r11:
42061  and r11,r8,#0x0e00
42062;@ EaRead : Read register[r11] into r1:
42063  ldr r1,[r7,r11,lsr #7]
42064
42065;@ Do arithmetic:
42066  orrs r1,r0,r1
42067  and r10,r1,#0x80000000 ;@ r10=N_flag
42068  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42069
42070;@ Save result:
42071;@ EaWrite: r1 into register[r11]:
42072  str r1,[r7,r11,lsr #7]
42073
42074  ldr r5,[r7,#0x5c] ;@ Load Cycles
42075  ldrh r8,[r4],#2 ;@ Fetch next opcode
42076  subs r5,r5,#22 ;@ Subtract cycles
42077  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42078  b CycloneEnd
42079
42080;@ ---------- [80ba] or.l ($3333,pc), d0; =3335 uses Op80ba ----------
42081Op80ba:
42082  str r4,[r7,#0x50] ;@ Save prev PC + 2
42083  str r5,[r7,#0x5c] ;@ Save Cycles
42084
42085;@ EaCalc : Get '($3333,pc)' into r0:
42086  ldr r0,[r7,#0x60] ;@ Get Memory base
42087  sub r0,r4,r0 ;@ Real PC
42088  ldrsh r2,[r4],#2 ;@ Fetch extension
42089  add r0,r2,r0 ;@ ($nn,PC)
42090;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
42091  str r4,[r7,#0x40] ;@ Save PC
42092  bic r0,r0,#0xff000000
42093  bl m68k_fetch32 ;@ Call fetch32(r0) handler
42094
42095;@ EaCalc : Get register index into r11:
42096  and r11,r8,#0x0e00
42097;@ EaRead : Read register[r11] into r1:
42098  ldr r1,[r7,r11,lsr #7]
42099
42100;@ Do arithmetic:
42101  orrs r1,r0,r1
42102  and r10,r1,#0x80000000 ;@ r10=N_flag
42103  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42104
42105;@ Save result:
42106;@ EaWrite: r1 into register[r11]:
42107  str r1,[r7,r11,lsr #7]
42108
42109  ldr r5,[r7,#0x5c] ;@ Load Cycles
42110  ldrh r8,[r4],#2 ;@ Fetch next opcode
42111  subs r5,r5,#18 ;@ Subtract cycles
42112  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42113  b CycloneEnd
42114
42115;@ ---------- [80bb] or.l ($33,pc,d3.w*2), d0; =35 uses Op80bb ----------
42116Op80bb:
42117  str r4,[r7,#0x50] ;@ Save prev PC + 2
42118  str r5,[r7,#0x5c] ;@ Save Cycles
42119
42120;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
42121  ldr r0,[r7,#0x60] ;@ Get Memory base
42122  ldrh r3,[r4] ;@ Get extension word
42123  sub r0,r4,r0 ;@ r0=PC
42124  add r4,r4,#2
42125  mov r2,r3,lsr #10
42126  tst r3,#0x0800 ;@ Is Rn Word or Long
42127  and r2,r2,#0x3c ;@ r2=Index of Rn
42128  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
42129  ldrne   r2,[r7,r2] ;@ r2=Rn.l
42130  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
42131  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
42132  add r0,r2,r0 ;@ r0=Disp+PC+Rn
42133;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
42134  str r4,[r7,#0x40] ;@ Save PC
42135  bic r0,r0,#0xff000000
42136  bl m68k_fetch32 ;@ Call fetch32(r0) handler
42137
42138;@ EaCalc : Get register index into r11:
42139  and r11,r8,#0x0e00
42140;@ EaRead : Read register[r11] into r1:
42141  ldr r1,[r7,r11,lsr #7]
42142
42143;@ Do arithmetic:
42144  orrs r1,r0,r1
42145  and r10,r1,#0x80000000 ;@ r10=N_flag
42146  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42147
42148;@ Save result:
42149;@ EaWrite: r1 into register[r11]:
42150  str r1,[r7,r11,lsr #7]
42151
42152  ldr r5,[r7,#0x5c] ;@ Load Cycles
42153  ldrh r8,[r4],#2 ;@ Fetch next opcode
42154  subs r5,r5,#20 ;@ Subtract cycles
42155  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42156  b CycloneEnd
42157
42158;@ ---------- [80bc] or.l #$33333333, d0 uses Op80bc ----------
42159Op80bc:
42160;@ EaCalc : Get '#$33333333' into r0:
42161  ldrh r2,[r4],#2 ;@ Fetch immediate value
42162  ldrh r3,[r4],#2
42163  orr r0,r3,r2,lsl #16
42164;@ EaRead : Read '#$33333333' (address in r0) into r0:
42165
42166;@ EaCalc : Get register index into r11:
42167  and r11,r8,#0x0e00
42168;@ EaRead : Read register[r11] into r1:
42169  ldr r1,[r7,r11,lsr #7]
42170
42171;@ Do arithmetic:
42172  orrs r1,r0,r1
42173  and r10,r1,#0x80000000 ;@ r10=N_flag
42174  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42175
42176;@ Save result:
42177;@ EaWrite: r1 into register[r11]:
42178  str r1,[r7,r11,lsr #7]
42179
42180  ldrh r8,[r4],#2 ;@ Fetch next opcode
42181  subs r5,r5,#16 ;@ Subtract cycles
42182  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42183  b CycloneEnd
42184
42185;@ ---------- [80c0] divu.w d0, d0 uses Op80c0 ----------
42186Op80c0:
42187;@ EaCalc : Get register index into r0:
42188  and r0,r8,#0x000f
42189;@ EaRead : Read register[r0] into r0:
42190  ldr r0,[r7,r0,lsl #2]
42191
42192;@ EaCalc : Get register index into r11:
42193  and r11,r8,#0x0e00
42194;@ EaRead : Read register[r11] into r2:
42195  ldr r2,[r7,r11,lsr #7]
42196
42197  movs r1,r0,asl #16
42198  beq divzero80c0 ;@ division by zero
42199
42200  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42201
42202;@ Divide r2 by r0
42203  mov r3,#0
42204  mov r1,r0
42205
42206;@ Shift up divisor till it's just less than numerator
42207Shift80c0:
42208  cmp r1,r2,lsr #1
42209  movls r1,r1,lsl #1
42210  bcc Shift80c0
42211
42212Divide80c0:
42213  cmp r2,r1
42214  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42215  subcs r2,r2,r1
42216  teq r1,r0
42217  movne r1,r1,lsr #1
42218  bne Divide80c0
42219
42220;@r3==quotient,r2==remainder
42221  movs r1,r3,lsr #16 ;@ check for overflow condition
42222  orrne r10,r10,#0x10000000 ;@ set overflow flag
42223  bne endofop80c0 ;@ overflow!
42224
42225  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42226  and r10,r1,#0x80000000 ;@ r10=N_flag
42227  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42228  mov r1,r1,lsr #16
42229  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42230
42231;@ EaWrite: r1 into register[r11]:
42232  str r1,[r7,r11,lsr #7]
42233
42234endofop80c0:
42235  ldrh r8,[r4],#2 ;@ Fetch next opcode
42236  subs r5,r5,#140 ;@ Subtract cycles
42237  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42238  b CycloneEnd
42239
42240divzero80c0:
42241  mov r0,#5 ;@ Divide by zero
42242  bl Exception
42243  ldrh r8,[r4],#2 ;@ Fetch next opcode
42244  subs r5,r5,#178 ;@ Subtract cycles
42245  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42246  b CycloneEnd
42247
42248
42249;@ ---------- [80d0] divu.w (a0), d0 uses Op80d0 ----------
42250Op80d0:
42251  str r4,[r7,#0x50] ;@ Save prev PC + 2
42252  str r5,[r7,#0x5c] ;@ Save Cycles
42253
42254;@ EaCalc : Get '(a0)' into r0:
42255  and r2,r8,#0x000f
42256  orr r2,r2,#0x8 ;@ A0-7
42257  ldr r0,[r7,r2,lsl #2]
42258;@ EaRead : Read '(a0)' (address in r0) into r0:
42259  str r4,[r7,#0x40] ;@ Save PC
42260  bic r0,r0,#0xff000000
42261  bl m68k_read16 ;@ Call read16(r0) handler
42262
42263;@ EaCalc : Get register index into r11:
42264  and r11,r8,#0x0e00
42265;@ EaRead : Read register[r11] into r2:
42266  ldr r2,[r7,r11,lsr #7]
42267
42268  movs r1,r0,asl #16
42269  beq divzero80d0 ;@ division by zero
42270
42271  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42272
42273;@ Divide r2 by r0
42274  mov r3,#0
42275  mov r1,r0
42276
42277;@ Shift up divisor till it's just less than numerator
42278Shift80d0:
42279  cmp r1,r2,lsr #1
42280  movls r1,r1,lsl #1
42281  bcc Shift80d0
42282
42283Divide80d0:
42284  cmp r2,r1
42285  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42286  subcs r2,r2,r1
42287  teq r1,r0
42288  movne r1,r1,lsr #1
42289  bne Divide80d0
42290
42291;@r3==quotient,r2==remainder
42292  movs r1,r3,lsr #16 ;@ check for overflow condition
42293  orrne r10,r10,#0x10000000 ;@ set overflow flag
42294  bne endofop80d0 ;@ overflow!
42295
42296  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42297  and r10,r1,#0x80000000 ;@ r10=N_flag
42298  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42299  mov r1,r1,lsr #16
42300  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42301
42302;@ EaWrite: r1 into register[r11]:
42303  str r1,[r7,r11,lsr #7]
42304
42305endofop80d0:
42306  ldr r5,[r7,#0x5c] ;@ Load Cycles
42307  ldrh r8,[r4],#2 ;@ Fetch next opcode
42308  subs r5,r5,#144 ;@ Subtract cycles
42309  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42310  b CycloneEnd
42311
42312divzero80d0:
42313  mov r0,#5 ;@ Divide by zero
42314  bl Exception
42315  ldr r5,[r7,#0x5c] ;@ Load Cycles
42316  ldrh r8,[r4],#2 ;@ Fetch next opcode
42317  subs r5,r5,#182 ;@ Subtract cycles
42318  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42319  b CycloneEnd
42320
42321
42322;@ ---------- [80d8] divu.w (a0)+, d0 uses Op80d8 ----------
42323Op80d8:
42324  str r4,[r7,#0x50] ;@ Save prev PC + 2
42325  str r5,[r7,#0x5c] ;@ Save Cycles
42326
42327;@ EaCalc : Get '(a0)+' into r0:
42328  and r2,r8,#0x000f
42329  ldr r0,[r7,r2,lsl #2]
42330  add r3,r0,#2 ;@ Post-increment An
42331  str r3,[r7,r2,lsl #2]
42332;@ EaRead : Read '(a0)+' (address in r0) into r0:
42333  str r4,[r7,#0x40] ;@ Save PC
42334  bic r0,r0,#0xff000000
42335  bl m68k_read16 ;@ Call read16(r0) handler
42336
42337;@ EaCalc : Get register index into r11:
42338  and r11,r8,#0x0e00
42339;@ EaRead : Read register[r11] into r2:
42340  ldr r2,[r7,r11,lsr #7]
42341
42342  movs r1,r0,asl #16
42343  beq divzero80d8 ;@ division by zero
42344
42345  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42346
42347;@ Divide r2 by r0
42348  mov r3,#0
42349  mov r1,r0
42350
42351;@ Shift up divisor till it's just less than numerator
42352Shift80d8:
42353  cmp r1,r2,lsr #1
42354  movls r1,r1,lsl #1
42355  bcc Shift80d8
42356
42357Divide80d8:
42358  cmp r2,r1
42359  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42360  subcs r2,r2,r1
42361  teq r1,r0
42362  movne r1,r1,lsr #1
42363  bne Divide80d8
42364
42365;@r3==quotient,r2==remainder
42366  movs r1,r3,lsr #16 ;@ check for overflow condition
42367  orrne r10,r10,#0x10000000 ;@ set overflow flag
42368  bne endofop80d8 ;@ overflow!
42369
42370  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42371  and r10,r1,#0x80000000 ;@ r10=N_flag
42372  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42373  mov r1,r1,lsr #16
42374  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42375
42376;@ EaWrite: r1 into register[r11]:
42377  str r1,[r7,r11,lsr #7]
42378
42379endofop80d8:
42380  ldr r5,[r7,#0x5c] ;@ Load Cycles
42381  ldrh r8,[r4],#2 ;@ Fetch next opcode
42382  subs r5,r5,#144 ;@ Subtract cycles
42383  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42384  b CycloneEnd
42385
42386divzero80d8:
42387  mov r0,#5 ;@ Divide by zero
42388  bl Exception
42389  ldr r5,[r7,#0x5c] ;@ Load Cycles
42390  ldrh r8,[r4],#2 ;@ Fetch next opcode
42391  subs r5,r5,#182 ;@ Subtract cycles
42392  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42393  b CycloneEnd
42394
42395
42396;@ ---------- [80e0] divu.w -(a0), d0 uses Op80e0 ----------
42397Op80e0:
42398  str r4,[r7,#0x50] ;@ Save prev PC + 2
42399  str r5,[r7,#0x5c] ;@ Save Cycles
42400
42401;@ EaCalc : Get '-(a0)' into r0:
42402  and r2,r8,#0x000f
42403  orr r2,r2,#0x8 ;@ A0-7
42404  ldr r0,[r7,r2,lsl #2]
42405  sub r0,r0,#2 ;@ Pre-decrement An
42406  str r0,[r7,r2,lsl #2]
42407;@ EaRead : Read '-(a0)' (address in r0) into r0:
42408  str r4,[r7,#0x40] ;@ Save PC
42409  bic r0,r0,#0xff000000
42410  bl m68k_read16 ;@ Call read16(r0) handler
42411
42412;@ EaCalc : Get register index into r11:
42413  and r11,r8,#0x0e00
42414;@ EaRead : Read register[r11] into r2:
42415  ldr r2,[r7,r11,lsr #7]
42416
42417  movs r1,r0,asl #16
42418  beq divzero80e0 ;@ division by zero
42419
42420  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42421
42422;@ Divide r2 by r0
42423  mov r3,#0
42424  mov r1,r0
42425
42426;@ Shift up divisor till it's just less than numerator
42427Shift80e0:
42428  cmp r1,r2,lsr #1
42429  movls r1,r1,lsl #1
42430  bcc Shift80e0
42431
42432Divide80e0:
42433  cmp r2,r1
42434  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42435  subcs r2,r2,r1
42436  teq r1,r0
42437  movne r1,r1,lsr #1
42438  bne Divide80e0
42439
42440;@r3==quotient,r2==remainder
42441  movs r1,r3,lsr #16 ;@ check for overflow condition
42442  orrne r10,r10,#0x10000000 ;@ set overflow flag
42443  bne endofop80e0 ;@ overflow!
42444
42445  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42446  and r10,r1,#0x80000000 ;@ r10=N_flag
42447  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42448  mov r1,r1,lsr #16
42449  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42450
42451;@ EaWrite: r1 into register[r11]:
42452  str r1,[r7,r11,lsr #7]
42453
42454endofop80e0:
42455  ldr r5,[r7,#0x5c] ;@ Load Cycles
42456  ldrh r8,[r4],#2 ;@ Fetch next opcode
42457  subs r5,r5,#146 ;@ Subtract cycles
42458  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42459  b CycloneEnd
42460
42461divzero80e0:
42462  mov r0,#5 ;@ Divide by zero
42463  bl Exception
42464  ldr r5,[r7,#0x5c] ;@ Load Cycles
42465  ldrh r8,[r4],#2 ;@ Fetch next opcode
42466  subs r5,r5,#184 ;@ Subtract cycles
42467  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42468  b CycloneEnd
42469
42470
42471;@ ---------- [80e8] divu.w ($3333,a0), d0 uses Op80e8 ----------
42472Op80e8:
42473  str r4,[r7,#0x50] ;@ Save prev PC + 2
42474  str r5,[r7,#0x5c] ;@ Save Cycles
42475
42476;@ EaCalc : Get '($3333,a0)' into r0:
42477  ldrsh r0,[r4],#2 ;@ Fetch offset
42478  and r2,r8,#0x000f
42479  ldr r2,[r7,r2,lsl #2]
42480  add r0,r0,r2 ;@ Add on offset
42481;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
42482  str r4,[r7,#0x40] ;@ Save PC
42483  bic r0,r0,#0xff000000
42484  bl m68k_read16 ;@ Call read16(r0) handler
42485
42486;@ EaCalc : Get register index into r11:
42487  and r11,r8,#0x0e00
42488;@ EaRead : Read register[r11] into r2:
42489  ldr r2,[r7,r11,lsr #7]
42490
42491  movs r1,r0,asl #16
42492  beq divzero80e8 ;@ division by zero
42493
42494  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42495
42496;@ Divide r2 by r0
42497  mov r3,#0
42498  mov r1,r0
42499
42500;@ Shift up divisor till it's just less than numerator
42501Shift80e8:
42502  cmp r1,r2,lsr #1
42503  movls r1,r1,lsl #1
42504  bcc Shift80e8
42505
42506Divide80e8:
42507  cmp r2,r1
42508  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42509  subcs r2,r2,r1
42510  teq r1,r0
42511  movne r1,r1,lsr #1
42512  bne Divide80e8
42513
42514;@r3==quotient,r2==remainder
42515  movs r1,r3,lsr #16 ;@ check for overflow condition
42516  orrne r10,r10,#0x10000000 ;@ set overflow flag
42517  bne endofop80e8 ;@ overflow!
42518
42519  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42520  and r10,r1,#0x80000000 ;@ r10=N_flag
42521  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42522  mov r1,r1,lsr #16
42523  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42524
42525;@ EaWrite: r1 into register[r11]:
42526  str r1,[r7,r11,lsr #7]
42527
42528endofop80e8:
42529  ldr r5,[r7,#0x5c] ;@ Load Cycles
42530  ldrh r8,[r4],#2 ;@ Fetch next opcode
42531  subs r5,r5,#148 ;@ Subtract cycles
42532  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42533  b CycloneEnd
42534
42535divzero80e8:
42536  mov r0,#5 ;@ Divide by zero
42537  bl Exception
42538  ldr r5,[r7,#0x5c] ;@ Load Cycles
42539  ldrh r8,[r4],#2 ;@ Fetch next opcode
42540  subs r5,r5,#186 ;@ Subtract cycles
42541  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42542  b CycloneEnd
42543
42544
42545;@ ---------- [80f0] divu.w ($33,a0,d3.w*2), d0 uses Op80f0 ----------
42546Op80f0:
42547  str r4,[r7,#0x50] ;@ Save prev PC + 2
42548  str r5,[r7,#0x5c] ;@ Save Cycles
42549
42550;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
42551;@ Get extension word into r3:
42552  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
42553  mov r2,r3,lsr #10
42554  tst r3,#0x0800 ;@ Is Rn Word or Long
42555  and r2,r2,#0x3c ;@ r2=Index of Rn
42556  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
42557  ldrne   r2,[r7,r2] ;@ r2=Rn.l
42558  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
42559  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
42560  and r2,r8,#0x000f
42561  orr r2,r2,#0x8 ;@ A0-7
42562  ldr r2,[r7,r2,lsl #2]
42563  add r0,r2,r3 ;@ r0=Disp+An+Rn
42564;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
42565  str r4,[r7,#0x40] ;@ Save PC
42566  bic r0,r0,#0xff000000
42567  bl m68k_read16 ;@ Call read16(r0) handler
42568
42569;@ EaCalc : Get register index into r11:
42570  and r11,r8,#0x0e00
42571;@ EaRead : Read register[r11] into r2:
42572  ldr r2,[r7,r11,lsr #7]
42573
42574  movs r1,r0,asl #16
42575  beq divzero80f0 ;@ division by zero
42576
42577  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42578
42579;@ Divide r2 by r0
42580  mov r3,#0
42581  mov r1,r0
42582
42583;@ Shift up divisor till it's just less than numerator
42584Shift80f0:
42585  cmp r1,r2,lsr #1
42586  movls r1,r1,lsl #1
42587  bcc Shift80f0
42588
42589Divide80f0:
42590  cmp r2,r1
42591  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42592  subcs r2,r2,r1
42593  teq r1,r0
42594  movne r1,r1,lsr #1
42595  bne Divide80f0
42596
42597;@r3==quotient,r2==remainder
42598  movs r1,r3,lsr #16 ;@ check for overflow condition
42599  orrne r10,r10,#0x10000000 ;@ set overflow flag
42600  bne endofop80f0 ;@ overflow!
42601
42602  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42603  and r10,r1,#0x80000000 ;@ r10=N_flag
42604  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42605  mov r1,r1,lsr #16
42606  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42607
42608;@ EaWrite: r1 into register[r11]:
42609  str r1,[r7,r11,lsr #7]
42610
42611endofop80f0:
42612  ldr r5,[r7,#0x5c] ;@ Load Cycles
42613  ldrh r8,[r4],#2 ;@ Fetch next opcode
42614  subs r5,r5,#150 ;@ Subtract cycles
42615  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42616  b CycloneEnd
42617
42618divzero80f0:
42619  mov r0,#5 ;@ Divide by zero
42620  bl Exception
42621  ldr r5,[r7,#0x5c] ;@ Load Cycles
42622  ldrh r8,[r4],#2 ;@ Fetch next opcode
42623  subs r5,r5,#188 ;@ Subtract cycles
42624  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42625  b CycloneEnd
42626
42627
42628;@ ---------- [80f8] divu.w $3333.w, d0 uses Op80f8 ----------
42629Op80f8:
42630  str r4,[r7,#0x50] ;@ Save prev PC + 2
42631  str r5,[r7,#0x5c] ;@ Save Cycles
42632
42633;@ EaCalc : Get '$3333.w' into r0:
42634  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
42635;@ EaRead : Read '$3333.w' (address in r0) into r0:
42636  str r4,[r7,#0x40] ;@ Save PC
42637  bic r0,r0,#0xff000000
42638  bl m68k_read16 ;@ Call read16(r0) handler
42639
42640;@ EaCalc : Get register index into r11:
42641  and r11,r8,#0x0e00
42642;@ EaRead : Read register[r11] into r2:
42643  ldr r2,[r7,r11,lsr #7]
42644
42645  movs r1,r0,asl #16
42646  beq divzero80f8 ;@ division by zero
42647
42648  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42649
42650;@ Divide r2 by r0
42651  mov r3,#0
42652  mov r1,r0
42653
42654;@ Shift up divisor till it's just less than numerator
42655Shift80f8:
42656  cmp r1,r2,lsr #1
42657  movls r1,r1,lsl #1
42658  bcc Shift80f8
42659
42660Divide80f8:
42661  cmp r2,r1
42662  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42663  subcs r2,r2,r1
42664  teq r1,r0
42665  movne r1,r1,lsr #1
42666  bne Divide80f8
42667
42668;@r3==quotient,r2==remainder
42669  movs r1,r3,lsr #16 ;@ check for overflow condition
42670  orrne r10,r10,#0x10000000 ;@ set overflow flag
42671  bne endofop80f8 ;@ overflow!
42672
42673  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42674  and r10,r1,#0x80000000 ;@ r10=N_flag
42675  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42676  mov r1,r1,lsr #16
42677  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42678
42679;@ EaWrite: r1 into register[r11]:
42680  str r1,[r7,r11,lsr #7]
42681
42682endofop80f8:
42683  ldr r5,[r7,#0x5c] ;@ Load Cycles
42684  ldrh r8,[r4],#2 ;@ Fetch next opcode
42685  subs r5,r5,#148 ;@ Subtract cycles
42686  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42687  b CycloneEnd
42688
42689divzero80f8:
42690  mov r0,#5 ;@ Divide by zero
42691  bl Exception
42692  ldr r5,[r7,#0x5c] ;@ Load Cycles
42693  ldrh r8,[r4],#2 ;@ Fetch next opcode
42694  subs r5,r5,#186 ;@ Subtract cycles
42695  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42696  b CycloneEnd
42697
42698
42699;@ ---------- [80f9] divu.w $33333333.l, d0 uses Op80f9 ----------
42700Op80f9:
42701  str r4,[r7,#0x50] ;@ Save prev PC + 2
42702  str r5,[r7,#0x5c] ;@ Save Cycles
42703
42704;@ EaCalc : Get '$33333333.l' into r0:
42705  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
42706  ldrh r0,[r4],#2
42707  orr r0,r0,r2,lsl #16
42708;@ EaRead : Read '$33333333.l' (address in r0) into r0:
42709  str r4,[r7,#0x40] ;@ Save PC
42710  bic r0,r0,#0xff000000
42711  bl m68k_read16 ;@ Call read16(r0) handler
42712
42713;@ EaCalc : Get register index into r11:
42714  and r11,r8,#0x0e00
42715;@ EaRead : Read register[r11] into r2:
42716  ldr r2,[r7,r11,lsr #7]
42717
42718  movs r1,r0,asl #16
42719  beq divzero80f9 ;@ division by zero
42720
42721  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42722
42723;@ Divide r2 by r0
42724  mov r3,#0
42725  mov r1,r0
42726
42727;@ Shift up divisor till it's just less than numerator
42728Shift80f9:
42729  cmp r1,r2,lsr #1
42730  movls r1,r1,lsl #1
42731  bcc Shift80f9
42732
42733Divide80f9:
42734  cmp r2,r1
42735  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42736  subcs r2,r2,r1
42737  teq r1,r0
42738  movne r1,r1,lsr #1
42739  bne Divide80f9
42740
42741;@r3==quotient,r2==remainder
42742  movs r1,r3,lsr #16 ;@ check for overflow condition
42743  orrne r10,r10,#0x10000000 ;@ set overflow flag
42744  bne endofop80f9 ;@ overflow!
42745
42746  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42747  and r10,r1,#0x80000000 ;@ r10=N_flag
42748  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42749  mov r1,r1,lsr #16
42750  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42751
42752;@ EaWrite: r1 into register[r11]:
42753  str r1,[r7,r11,lsr #7]
42754
42755endofop80f9:
42756  ldr r5,[r7,#0x5c] ;@ Load Cycles
42757  ldrh r8,[r4],#2 ;@ Fetch next opcode
42758  subs r5,r5,#152 ;@ Subtract cycles
42759  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42760  b CycloneEnd
42761
42762divzero80f9:
42763  mov r0,#5 ;@ Divide by zero
42764  bl Exception
42765  ldr r5,[r7,#0x5c] ;@ Load Cycles
42766  ldrh r8,[r4],#2 ;@ Fetch next opcode
42767  subs r5,r5,#190 ;@ Subtract cycles
42768  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42769  b CycloneEnd
42770
42771
42772;@ ---------- [80fa] divu.w ($3333,pc), d0; =3335 uses Op80fa ----------
42773Op80fa:
42774  str r4,[r7,#0x50] ;@ Save prev PC + 2
42775  str r5,[r7,#0x5c] ;@ Save Cycles
42776
42777;@ EaCalc : Get '($3333,pc)' into r0:
42778  ldr r0,[r7,#0x60] ;@ Get Memory base
42779  sub r0,r4,r0 ;@ Real PC
42780  ldrsh r2,[r4],#2 ;@ Fetch extension
42781  add r0,r2,r0 ;@ ($nn,PC)
42782;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
42783  str r4,[r7,#0x40] ;@ Save PC
42784  bic r0,r0,#0xff000000
42785  bl m68k_fetch16 ;@ Call fetch16(r0) handler
42786
42787;@ EaCalc : Get register index into r11:
42788  and r11,r8,#0x0e00
42789;@ EaRead : Read register[r11] into r2:
42790  ldr r2,[r7,r11,lsr #7]
42791
42792  movs r1,r0,asl #16
42793  beq divzero80fa ;@ division by zero
42794
42795  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42796
42797;@ Divide r2 by r0
42798  mov r3,#0
42799  mov r1,r0
42800
42801;@ Shift up divisor till it's just less than numerator
42802Shift80fa:
42803  cmp r1,r2,lsr #1
42804  movls r1,r1,lsl #1
42805  bcc Shift80fa
42806
42807Divide80fa:
42808  cmp r2,r1
42809  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42810  subcs r2,r2,r1
42811  teq r1,r0
42812  movne r1,r1,lsr #1
42813  bne Divide80fa
42814
42815;@r3==quotient,r2==remainder
42816  movs r1,r3,lsr #16 ;@ check for overflow condition
42817  orrne r10,r10,#0x10000000 ;@ set overflow flag
42818  bne endofop80fa ;@ overflow!
42819
42820  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42821  and r10,r1,#0x80000000 ;@ r10=N_flag
42822  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42823  mov r1,r1,lsr #16
42824  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42825
42826;@ EaWrite: r1 into register[r11]:
42827  str r1,[r7,r11,lsr #7]
42828
42829endofop80fa:
42830  ldr r5,[r7,#0x5c] ;@ Load Cycles
42831  ldrh r8,[r4],#2 ;@ Fetch next opcode
42832  subs r5,r5,#148 ;@ Subtract cycles
42833  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42834  b CycloneEnd
42835
42836divzero80fa:
42837  mov r0,#5 ;@ Divide by zero
42838  bl Exception
42839  ldr r5,[r7,#0x5c] ;@ Load Cycles
42840  ldrh r8,[r4],#2 ;@ Fetch next opcode
42841  subs r5,r5,#186 ;@ Subtract cycles
42842  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42843  b CycloneEnd
42844
42845
42846;@ ---------- [80fb] divu.w ($33,pc,d3.w*2), d0; =35 uses Op80fb ----------
42847Op80fb:
42848  str r4,[r7,#0x50] ;@ Save prev PC + 2
42849  str r5,[r7,#0x5c] ;@ Save Cycles
42850
42851;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
42852  ldr r0,[r7,#0x60] ;@ Get Memory base
42853  ldrh r3,[r4] ;@ Get extension word
42854  sub r0,r4,r0 ;@ r0=PC
42855  add r4,r4,#2
42856  mov r2,r3,lsr #10
42857  tst r3,#0x0800 ;@ Is Rn Word or Long
42858  and r2,r2,#0x3c ;@ r2=Index of Rn
42859  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
42860  ldrne   r2,[r7,r2] ;@ r2=Rn.l
42861  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
42862  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
42863  add r0,r2,r0 ;@ r0=Disp+PC+Rn
42864;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
42865  str r4,[r7,#0x40] ;@ Save PC
42866  bic r0,r0,#0xff000000
42867  bl m68k_fetch16 ;@ Call fetch16(r0) handler
42868
42869;@ EaCalc : Get register index into r11:
42870  and r11,r8,#0x0e00
42871;@ EaRead : Read register[r11] into r2:
42872  ldr r2,[r7,r11,lsr #7]
42873
42874  movs r1,r0,asl #16
42875  beq divzero80fb ;@ division by zero
42876
42877  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42878
42879;@ Divide r2 by r0
42880  mov r3,#0
42881  mov r1,r0
42882
42883;@ Shift up divisor till it's just less than numerator
42884Shift80fb:
42885  cmp r1,r2,lsr #1
42886  movls r1,r1,lsl #1
42887  bcc Shift80fb
42888
42889Divide80fb:
42890  cmp r2,r1
42891  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42892  subcs r2,r2,r1
42893  teq r1,r0
42894  movne r1,r1,lsr #1
42895  bne Divide80fb
42896
42897;@r3==quotient,r2==remainder
42898  movs r1,r3,lsr #16 ;@ check for overflow condition
42899  orrne r10,r10,#0x10000000 ;@ set overflow flag
42900  bne endofop80fb ;@ overflow!
42901
42902  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42903  and r10,r1,#0x80000000 ;@ r10=N_flag
42904  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42905  mov r1,r1,lsr #16
42906  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42907
42908;@ EaWrite: r1 into register[r11]:
42909  str r1,[r7,r11,lsr #7]
42910
42911endofop80fb:
42912  ldr r5,[r7,#0x5c] ;@ Load Cycles
42913  ldrh r8,[r4],#2 ;@ Fetch next opcode
42914  subs r5,r5,#150 ;@ Subtract cycles
42915  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42916  b CycloneEnd
42917
42918divzero80fb:
42919  mov r0,#5 ;@ Divide by zero
42920  bl Exception
42921  ldr r5,[r7,#0x5c] ;@ Load Cycles
42922  ldrh r8,[r4],#2 ;@ Fetch next opcode
42923  subs r5,r5,#188 ;@ Subtract cycles
42924  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42925  b CycloneEnd
42926
42927
42928;@ ---------- [80fc] divu.w #$3333, d0 uses Op80fc ----------
42929Op80fc:
42930;@ EaCalc : Get '#$3333' into r0:
42931  ldrsh r0,[r4],#2 ;@ Fetch immediate value
42932;@ EaRead : Read '#$3333' (address in r0) into r0:
42933
42934;@ EaCalc : Get register index into r11:
42935  and r11,r8,#0x0e00
42936;@ EaRead : Read register[r11] into r2:
42937  ldr r2,[r7,r11,lsr #7]
42938
42939  movs r1,r0,asl #16
42940  beq divzero80fc ;@ division by zero
42941
42942  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
42943
42944;@ Divide r2 by r0
42945  mov r3,#0
42946  mov r1,r0
42947
42948;@ Shift up divisor till it's just less than numerator
42949Shift80fc:
42950  cmp r1,r2,lsr #1
42951  movls r1,r1,lsl #1
42952  bcc Shift80fc
42953
42954Divide80fc:
42955  cmp r2,r1
42956  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
42957  subcs r2,r2,r1
42958  teq r1,r0
42959  movne r1,r1,lsr #1
42960  bne Divide80fc
42961
42962;@r3==quotient,r2==remainder
42963  movs r1,r3,lsr #16 ;@ check for overflow condition
42964  orrne r10,r10,#0x10000000 ;@ set overflow flag
42965  bne endofop80fc ;@ overflow!
42966
42967  movs r1,r3,lsl #16 ;@ Clip to 16-bits
42968  and r10,r1,#0x80000000 ;@ r10=N_flag
42969  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
42970  mov r1,r1,lsr #16
42971  orr r1,r1,r2,lsl #16 ;@ Insert remainder
42972
42973;@ EaWrite: r1 into register[r11]:
42974  str r1,[r7,r11,lsr #7]
42975
42976endofop80fc:
42977  ldrh r8,[r4],#2 ;@ Fetch next opcode
42978  subs r5,r5,#144 ;@ Subtract cycles
42979  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42980  b CycloneEnd
42981
42982divzero80fc:
42983  mov r0,#5 ;@ Divide by zero
42984  bl Exception
42985  ldrh r8,[r4],#2 ;@ Fetch next opcode
42986  subs r5,r5,#182 ;@ Subtract cycles
42987  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42988  b CycloneEnd
42989
42990
42991;@ ---------- [8100] sbcd d0, d0 uses Op8100 ----------
42992Op8100:
42993;@ Get src/dest reg vals
42994;@ EaCalc : Get register index into r6:
42995  and r6,r8,#0x0007
42996;@ EaRead : Read register[r6] into r6:
42997  ldr r6,[r7,r6,lsl #2]
42998
42999;@ EaCalc : Get register index into r11:
43000  and r11,r8,#0x0e00
43001;@ EaRead : Read register[r11] into r0:
43002  ldr r0,[r7,r11,lsr #7]
43003
43004  mov r6,r6,asl #24
43005  mov r1,r0,asl #24
43006
43007  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
43008  ldr r0,[r7,#0x4c] ;@ Get X bit
43009  mov r3,#0x00f00000
43010  and r2,r3,r6,lsr #4
43011  tst r0,#0x20000000
43012  and r0,r3,r1,lsr #4
43013  sub r0,r0,r2
43014  subne r0,r0,#0x00100000
43015  cmp r0,#0x00900000
43016  subhi r0,r0,#0x00600000 ;@ Decimal adjust units
43017  mov r2,r1,lsr #28
43018  add r0,r0,r2,lsl #24
43019  mov r2,r6,lsr #28
43020  sub r0,r0,r2,lsl #24
43021  cmp r0,#0x09900000
43022  orrhi r10,r10,#0xa0000000 ;@ N and C
43023  addhi r0,r0,#0x0a000000
43024  movs r0,r0,lsl #4
43025  bicne r10,r10,#0x40000000 ;@ Z flag
43026  str r10,[r7,#0x4c] ;@ Save X bit
43027
43028;@ EaWrite: r0 into register[r11]:
43029  mov r0,r0,lsr #24
43030  strb r0,[r7,r11,lsr #7]
43031
43032  ldr r6,[r7,#0x54]
43033  ldrh r8,[r4],#2 ;@ Fetch next opcode
43034  subs r5,r5,#6 ;@ Subtract cycles
43035  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43036  b CycloneEnd
43037
43038;@ ---------- [8108] sbcd -(a0), -(a0) uses Op8108 ----------
43039Op8108:
43040  str r4,[r7,#0x50] ;@ Save prev PC + 2
43041  str r5,[r7,#0x5c] ;@ Save Cycles
43042
43043;@ Get src/dest EA vals
43044;@ EaCalc : Get '-(a0)' into r0:
43045  and r2,r8,#0x000f
43046  ldr r0,[r7,r2,lsl #2]
43047  sub r0,r0,#1 ;@ Pre-decrement An
43048  str r0,[r7,r2,lsl #2]
43049;@ EaRead : Read '-(a0)' (address in r0) into r6:
43050  str r4,[r7,#0x40] ;@ Save PC
43051  bic r0,r0,#0xff000000
43052  bl m68k_read8 ;@ Call read8(r0) handler
43053  mov r6,r0,asl #24
43054
43055;@ EaCalc : Get '-(a0)' into r11:
43056  and r2,r8,#0x0e00
43057  orr r2,r2,#0x1000 ;@ A0-7
43058  ldr r11,[r7,r2,lsr #7]
43059  sub r11,r11,#1 ;@ Pre-decrement An
43060  str r11,[r7,r2,lsr #7]
43061;@ EaRead : Read '-(a0)' (address in r11) into r0:
43062  bic r0,r11,#0xff000000
43063  bl m68k_read8 ;@ Call read8(r0) handler
43064
43065  mov r1,r0,asl #24
43066
43067  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
43068  ldr r0,[r7,#0x4c] ;@ Get X bit
43069  mov r3,#0x00f00000
43070  and r2,r3,r6,lsr #4
43071  tst r0,#0x20000000
43072  and r0,r3,r1,lsr #4
43073  sub r0,r0,r2
43074  subne r0,r0,#0x00100000
43075  cmp r0,#0x00900000
43076  subhi r0,r0,#0x00600000 ;@ Decimal adjust units
43077  mov r2,r1,lsr #28
43078  add r0,r0,r2,lsl #24
43079  mov r2,r6,lsr #28
43080  sub r0,r0,r2,lsl #24
43081  cmp r0,#0x09900000
43082  orrhi r10,r10,#0xa0000000 ;@ N and C
43083  addhi r0,r0,#0x0a000000
43084  movs r0,r0,lsl #4
43085  bicne r10,r10,#0x40000000 ;@ Z flag
43086  str r10,[r7,#0x4c] ;@ Save X bit
43087
43088;@ EaWrite: Write r0 into '-(a0)' (address in r11):
43089  mov r1,r0,lsr #24
43090  bic r0,r11,#0xff000000
43091  bl m68k_write8 ;@ Call write8(r0,r1) handler
43092
43093  ldr r6,[r7,#0x54]
43094  ldr r5,[r7,#0x5c] ;@ Load Cycles
43095  ldrh r8,[r4],#2 ;@ Fetch next opcode
43096  subs r5,r5,#18 ;@ Subtract cycles
43097  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43098  b CycloneEnd
43099
43100;@ ---------- [810f] sbcd -(a7), -(a0) uses Op810f ----------
43101Op810f:
43102  str r4,[r7,#0x50] ;@ Save prev PC + 2
43103  str r5,[r7,#0x5c] ;@ Save Cycles
43104
43105;@ Get src/dest EA vals
43106;@ EaCalc : Get '-(a7)' into r0:
43107  ldr r0,[r7,#0x3c] ;@ A7
43108  sub r0,r0,#2 ;@ Pre-decrement An
43109  str r0,[r7,#0x3c] ;@ A7
43110;@ EaRead : Read '-(a7)' (address in r0) into r6:
43111  str r4,[r7,#0x40] ;@ Save PC
43112  bic r0,r0,#0xff000000
43113  bl m68k_read8 ;@ Call read8(r0) handler
43114  mov r6,r0,asl #24
43115
43116;@ EaCalc : Get '-(a0)' into r11:
43117  and r2,r8,#0x0e00
43118  orr r2,r2,#0x1000 ;@ A0-7
43119  ldr r11,[r7,r2,lsr #7]
43120  sub r11,r11,#1 ;@ Pre-decrement An
43121  str r11,[r7,r2,lsr #7]
43122;@ EaRead : Read '-(a0)' (address in r11) into r0:
43123  bic r0,r11,#0xff000000
43124  bl m68k_read8 ;@ Call read8(r0) handler
43125
43126  mov r1,r0,asl #24
43127
43128  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
43129  ldr r0,[r7,#0x4c] ;@ Get X bit
43130  mov r3,#0x00f00000
43131  and r2,r3,r6,lsr #4
43132  tst r0,#0x20000000
43133  and r0,r3,r1,lsr #4
43134  sub r0,r0,r2
43135  subne r0,r0,#0x00100000
43136  cmp r0,#0x00900000
43137  subhi r0,r0,#0x00600000 ;@ Decimal adjust units
43138  mov r2,r1,lsr #28
43139  add r0,r0,r2,lsl #24
43140  mov r2,r6,lsr #28
43141  sub r0,r0,r2,lsl #24
43142  cmp r0,#0x09900000
43143  orrhi r10,r10,#0xa0000000 ;@ N and C
43144  addhi r0,r0,#0x0a000000
43145  movs r0,r0,lsl #4
43146  bicne r10,r10,#0x40000000 ;@ Z flag
43147  str r10,[r7,#0x4c] ;@ Save X bit
43148
43149;@ EaWrite: Write r0 into '-(a0)' (address in r11):
43150  mov r1,r0,lsr #24
43151  bic r0,r11,#0xff000000
43152  bl m68k_write8 ;@ Call write8(r0,r1) handler
43153
43154  ldr r6,[r7,#0x54]
43155  ldr r5,[r7,#0x5c] ;@ Load Cycles
43156  ldrh r8,[r4],#2 ;@ Fetch next opcode
43157  subs r5,r5,#18 ;@ Subtract cycles
43158  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43159  b CycloneEnd
43160
43161;@ ---------- [8110] or.b d0, (a0) uses Op8110 ----------
43162Op8110:
43163  str r4,[r7,#0x50] ;@ Save prev PC + 2
43164  str r5,[r7,#0x5c] ;@ Save Cycles
43165
43166;@ EaCalc : Get '(a0)' into r11:
43167  and r2,r8,#0x000f
43168  orr r2,r2,#0x8 ;@ A0-7
43169  ldr r11,[r7,r2,lsl #2]
43170;@ EaRead : Read '(a0)' (address in r11) into r0:
43171  str r4,[r7,#0x40] ;@ Save PC
43172  bic r0,r11,#0xff000000
43173  bl m68k_read8 ;@ Call read8(r0) handler
43174
43175;@ EaCalc : Get register index into r1:
43176  and r1,r8,#0x0e00
43177;@ EaRead : Read register[r1] into r1:
43178  ldr r1,[r7,r1,lsr #7]
43179
43180;@ Do arithmetic:
43181  mov r0,r0,asl #24
43182  orrs r1,r0,r1,asl #24
43183  and r10,r1,#0x80000000 ;@ r10=N_flag
43184  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43185
43186;@ Save result:
43187  mov r1,r1,asr #24
43188;@ EaWrite: Write r1 into '(a0)' (address in r11):
43189  and r1,r1,#0xff
43190  bic r0,r11,#0xff000000
43191  bl m68k_write8 ;@ Call write8(r0,r1) handler
43192
43193  ldr r5,[r7,#0x5c] ;@ Load Cycles
43194  ldrh r8,[r4],#2 ;@ Fetch next opcode
43195  subs r5,r5,#12 ;@ Subtract cycles
43196  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43197  b CycloneEnd
43198
43199;@ ---------- [8118] or.b d0, (a0)+ uses Op8118 ----------
43200Op8118:
43201  str r4,[r7,#0x50] ;@ Save prev PC + 2
43202  str r5,[r7,#0x5c] ;@ Save Cycles
43203
43204;@ EaCalc : Get '(a0)+' into r11:
43205  and r2,r8,#0x000f
43206  ldr r11,[r7,r2,lsl #2]
43207  add r3,r11,#1 ;@ Post-increment An
43208  str r3,[r7,r2,lsl #2]
43209;@ EaRead : Read '(a0)+' (address in r11) into r0:
43210  str r4,[r7,#0x40] ;@ Save PC
43211  bic r0,r11,#0xff000000
43212  bl m68k_read8 ;@ Call read8(r0) handler
43213
43214;@ EaCalc : Get register index into r1:
43215  and r1,r8,#0x0e00
43216;@ EaRead : Read register[r1] into r1:
43217  ldr r1,[r7,r1,lsr #7]
43218
43219;@ Do arithmetic:
43220  mov r0,r0,asl #24
43221  orrs r1,r0,r1,asl #24
43222  and r10,r1,#0x80000000 ;@ r10=N_flag
43223  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43224
43225;@ Save result:
43226  mov r1,r1,asr #24
43227;@ EaWrite: Write r1 into '(a0)+' (address in r11):
43228  and r1,r1,#0xff
43229  bic r0,r11,#0xff000000
43230  bl m68k_write8 ;@ Call write8(r0,r1) handler
43231
43232  ldr r5,[r7,#0x5c] ;@ Load Cycles
43233  ldrh r8,[r4],#2 ;@ Fetch next opcode
43234  subs r5,r5,#12 ;@ Subtract cycles
43235  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43236  b CycloneEnd
43237
43238;@ ---------- [811f] or.b d0, (a7)+ uses Op811f ----------
43239Op811f:
43240  str r4,[r7,#0x50] ;@ Save prev PC + 2
43241  str r5,[r7,#0x5c] ;@ Save Cycles
43242
43243;@ EaCalc : Get '(a7)+' into r11:
43244  ldr r11,[r7,#0x3c] ;@ A7
43245  add r3,r11,#2 ;@ Post-increment An
43246  str r3,[r7,#0x3c] ;@ A7
43247;@ EaRead : Read '(a7)+' (address in r11) into r0:
43248  str r4,[r7,#0x40] ;@ Save PC
43249  bic r0,r11,#0xff000000
43250  bl m68k_read8 ;@ Call read8(r0) handler
43251
43252;@ EaCalc : Get register index into r1:
43253  and r1,r8,#0x0e00
43254;@ EaRead : Read register[r1] into r1:
43255  ldr r1,[r7,r1,lsr #7]
43256
43257;@ Do arithmetic:
43258  mov r0,r0,asl #24
43259  orrs r1,r0,r1,asl #24
43260  and r10,r1,#0x80000000 ;@ r10=N_flag
43261  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43262
43263;@ Save result:
43264  mov r1,r1,asr #24
43265;@ EaWrite: Write r1 into '(a7)+' (address in r11):
43266  and r1,r1,#0xff
43267  bic r0,r11,#0xff000000
43268  bl m68k_write8 ;@ Call write8(r0,r1) handler
43269
43270  ldr r5,[r7,#0x5c] ;@ Load Cycles
43271  ldrh r8,[r4],#2 ;@ Fetch next opcode
43272  subs r5,r5,#12 ;@ Subtract cycles
43273  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43274  b CycloneEnd
43275
43276;@ ---------- [8120] or.b d0, -(a0) uses Op8120 ----------
43277Op8120:
43278  str r4,[r7,#0x50] ;@ Save prev PC + 2
43279  str r5,[r7,#0x5c] ;@ Save Cycles
43280
43281;@ EaCalc : Get '-(a0)' into r11:
43282  and r2,r8,#0x000f
43283  orr r2,r2,#0x8 ;@ A0-7
43284  ldr r11,[r7,r2,lsl #2]
43285  sub r11,r11,#1 ;@ Pre-decrement An
43286  str r11,[r7,r2,lsl #2]
43287;@ EaRead : Read '-(a0)' (address in r11) into r0:
43288  str r4,[r7,#0x40] ;@ Save PC
43289  bic r0,r11,#0xff000000
43290  bl m68k_read8 ;@ Call read8(r0) handler
43291
43292;@ EaCalc : Get register index into r1:
43293  and r1,r8,#0x0e00
43294;@ EaRead : Read register[r1] into r1:
43295  ldr r1,[r7,r1,lsr #7]
43296
43297;@ Do arithmetic:
43298  mov r0,r0,asl #24
43299  orrs r1,r0,r1,asl #24
43300  and r10,r1,#0x80000000 ;@ r10=N_flag
43301  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43302
43303;@ Save result:
43304  mov r1,r1,asr #24
43305;@ EaWrite: Write r1 into '-(a0)' (address in r11):
43306  and r1,r1,#0xff
43307  bic r0,r11,#0xff000000
43308  bl m68k_write8 ;@ Call write8(r0,r1) handler
43309
43310  ldr r5,[r7,#0x5c] ;@ Load Cycles
43311  ldrh r8,[r4],#2 ;@ Fetch next opcode
43312  subs r5,r5,#14 ;@ Subtract cycles
43313  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43314  b CycloneEnd
43315
43316;@ ---------- [8127] or.b d0, -(a7) uses Op8127 ----------
43317Op8127:
43318  str r4,[r7,#0x50] ;@ Save prev PC + 2
43319  str r5,[r7,#0x5c] ;@ Save Cycles
43320
43321;@ EaCalc : Get '-(a7)' into r11:
43322  ldr r11,[r7,#0x3c] ;@ A7
43323  sub r11,r11,#2 ;@ Pre-decrement An
43324  str r11,[r7,#0x3c] ;@ A7
43325;@ EaRead : Read '-(a7)' (address in r11) into r0:
43326  str r4,[r7,#0x40] ;@ Save PC
43327  bic r0,r11,#0xff000000
43328  bl m68k_read8 ;@ Call read8(r0) handler
43329
43330;@ EaCalc : Get register index into r1:
43331  and r1,r8,#0x0e00
43332;@ EaRead : Read register[r1] into r1:
43333  ldr r1,[r7,r1,lsr #7]
43334
43335;@ Do arithmetic:
43336  mov r0,r0,asl #24
43337  orrs r1,r0,r1,asl #24
43338  and r10,r1,#0x80000000 ;@ r10=N_flag
43339  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43340
43341;@ Save result:
43342  mov r1,r1,asr #24
43343;@ EaWrite: Write r1 into '-(a7)' (address in r11):
43344  and r1,r1,#0xff
43345  bic r0,r11,#0xff000000
43346  bl m68k_write8 ;@ Call write8(r0,r1) handler
43347
43348  ldr r5,[r7,#0x5c] ;@ Load Cycles
43349  ldrh r8,[r4],#2 ;@ Fetch next opcode
43350  subs r5,r5,#14 ;@ Subtract cycles
43351  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43352  b CycloneEnd
43353
43354;@ ---------- [8128] or.b d0, ($3333,a0) uses Op8128 ----------
43355Op8128:
43356  str r4,[r7,#0x50] ;@ Save prev PC + 2
43357  str r5,[r7,#0x5c] ;@ Save Cycles
43358
43359;@ EaCalc : Get '($3333,a0)' into r11:
43360  ldrsh r0,[r4],#2 ;@ Fetch offset
43361  and r2,r8,#0x000f
43362  ldr r2,[r7,r2,lsl #2]
43363  add r11,r0,r2 ;@ Add on offset
43364;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
43365  str r4,[r7,#0x40] ;@ Save PC
43366  bic r0,r11,#0xff000000
43367  bl m68k_read8 ;@ Call read8(r0) handler
43368
43369;@ EaCalc : Get register index into r1:
43370  and r1,r8,#0x0e00
43371;@ EaRead : Read register[r1] into r1:
43372  ldr r1,[r7,r1,lsr #7]
43373
43374;@ Do arithmetic:
43375  mov r0,r0,asl #24
43376  orrs r1,r0,r1,asl #24
43377  and r10,r1,#0x80000000 ;@ r10=N_flag
43378  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43379
43380;@ Save result:
43381  mov r1,r1,asr #24
43382;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
43383  and r1,r1,#0xff
43384  bic r0,r11,#0xff000000
43385  bl m68k_write8 ;@ Call write8(r0,r1) handler
43386
43387  ldr r5,[r7,#0x5c] ;@ Load Cycles
43388  ldrh r8,[r4],#2 ;@ Fetch next opcode
43389  subs r5,r5,#16 ;@ Subtract cycles
43390  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43391  b CycloneEnd
43392
43393;@ ---------- [8130] or.b d0, ($33,a0,d3.w*2) uses Op8130 ----------
43394Op8130:
43395  str r4,[r7,#0x50] ;@ Save prev PC + 2
43396  str r5,[r7,#0x5c] ;@ Save Cycles
43397
43398;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
43399;@ Get extension word into r3:
43400  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
43401  mov r2,r3,lsr #10
43402  tst r3,#0x0800 ;@ Is Rn Word or Long
43403  and r2,r2,#0x3c ;@ r2=Index of Rn
43404  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
43405  ldrne   r2,[r7,r2] ;@ r2=Rn.l
43406  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
43407  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
43408  and r2,r8,#0x000f
43409  orr r2,r2,#0x8 ;@ A0-7
43410  ldr r2,[r7,r2,lsl #2]
43411  add r11,r2,r3 ;@ r11=Disp+An+Rn
43412;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
43413  str r4,[r7,#0x40] ;@ Save PC
43414  bic r0,r11,#0xff000000
43415  bl m68k_read8 ;@ Call read8(r0) handler
43416
43417;@ EaCalc : Get register index into r1:
43418  and r1,r8,#0x0e00
43419;@ EaRead : Read register[r1] into r1:
43420  ldr r1,[r7,r1,lsr #7]
43421
43422;@ Do arithmetic:
43423  mov r0,r0,asl #24
43424  orrs r1,r0,r1,asl #24
43425  and r10,r1,#0x80000000 ;@ r10=N_flag
43426  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43427
43428;@ Save result:
43429  mov r1,r1,asr #24
43430;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
43431  and r1,r1,#0xff
43432  bic r0,r11,#0xff000000
43433  bl m68k_write8 ;@ Call write8(r0,r1) handler
43434
43435  ldr r5,[r7,#0x5c] ;@ Load Cycles
43436  ldrh r8,[r4],#2 ;@ Fetch next opcode
43437  subs r5,r5,#18 ;@ Subtract cycles
43438  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43439  b CycloneEnd
43440
43441;@ ---------- [8138] or.b d0, $3333.w uses Op8138 ----------
43442Op8138:
43443  str r4,[r7,#0x50] ;@ Save prev PC + 2
43444  str r5,[r7,#0x5c] ;@ Save Cycles
43445
43446;@ EaCalc : Get '$3333.w' into r11:
43447  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
43448;@ EaRead : Read '$3333.w' (address in r11) into r0:
43449  str r4,[r7,#0x40] ;@ Save PC
43450  bic r0,r11,#0xff000000
43451  bl m68k_read8 ;@ Call read8(r0) handler
43452
43453;@ EaCalc : Get register index into r1:
43454  and r1,r8,#0x0e00
43455;@ EaRead : Read register[r1] into r1:
43456  ldr r1,[r7,r1,lsr #7]
43457
43458;@ Do arithmetic:
43459  mov r0,r0,asl #24
43460  orrs r1,r0,r1,asl #24
43461  and r10,r1,#0x80000000 ;@ r10=N_flag
43462  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43463
43464;@ Save result:
43465  mov r1,r1,asr #24
43466;@ EaWrite: Write r1 into '$3333.w' (address in r11):
43467  and r1,r1,#0xff
43468  bic r0,r11,#0xff000000
43469  bl m68k_write8 ;@ Call write8(r0,r1) handler
43470
43471  ldr r5,[r7,#0x5c] ;@ Load Cycles
43472  ldrh r8,[r4],#2 ;@ Fetch next opcode
43473  subs r5,r5,#16 ;@ Subtract cycles
43474  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43475  b CycloneEnd
43476
43477;@ ---------- [8139] or.b d0, $33333333.l uses Op8139 ----------
43478Op8139:
43479  str r4,[r7,#0x50] ;@ Save prev PC + 2
43480  str r5,[r7,#0x5c] ;@ Save Cycles
43481
43482;@ EaCalc : Get '$33333333.l' into r11:
43483  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
43484  ldrh r0,[r4],#2
43485  orr r11,r0,r2,lsl #16
43486;@ EaRead : Read '$33333333.l' (address in r11) into r0:
43487  str r4,[r7,#0x40] ;@ Save PC
43488  bic r0,r11,#0xff000000
43489  bl m68k_read8 ;@ Call read8(r0) handler
43490
43491;@ EaCalc : Get register index into r1:
43492  and r1,r8,#0x0e00
43493;@ EaRead : Read register[r1] into r1:
43494  ldr r1,[r7,r1,lsr #7]
43495
43496;@ Do arithmetic:
43497  mov r0,r0,asl #24
43498  orrs r1,r0,r1,asl #24
43499  and r10,r1,#0x80000000 ;@ r10=N_flag
43500  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43501
43502;@ Save result:
43503  mov r1,r1,asr #24
43504;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
43505  and r1,r1,#0xff
43506  bic r0,r11,#0xff000000
43507  bl m68k_write8 ;@ Call write8(r0,r1) handler
43508
43509  ldr r5,[r7,#0x5c] ;@ Load Cycles
43510  ldrh r8,[r4],#2 ;@ Fetch next opcode
43511  subs r5,r5,#20 ;@ Subtract cycles
43512  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43513  b CycloneEnd
43514
43515;@ ---------- [8150] or.w d0, (a0) uses Op8150 ----------
43516Op8150:
43517  str r4,[r7,#0x50] ;@ Save prev PC + 2
43518  str r5,[r7,#0x5c] ;@ Save Cycles
43519
43520;@ EaCalc : Get '(a0)' into r11:
43521  and r2,r8,#0x000f
43522  orr r2,r2,#0x8 ;@ A0-7
43523  ldr r11,[r7,r2,lsl #2]
43524;@ EaRead : Read '(a0)' (address in r11) into r0:
43525  str r4,[r7,#0x40] ;@ Save PC
43526  bic r0,r11,#0xff000000
43527  bl m68k_read16 ;@ Call read16(r0) handler
43528
43529;@ EaCalc : Get register index into r1:
43530  and r1,r8,#0x0e00
43531;@ EaRead : Read register[r1] into r1:
43532  ldr r1,[r7,r1,lsr #7]
43533
43534;@ Do arithmetic:
43535  mov r0,r0,asl #16
43536  orrs r1,r0,r1,asl #16
43537  and r10,r1,#0x80000000 ;@ r10=N_flag
43538  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43539
43540;@ Save result:
43541  mov r1,r1,asr #16
43542;@ EaWrite: Write r1 into '(a0)' (address in r11):
43543  uxth r1,r1 ;@ zero extend
43544  bic r0,r11,#0xff000000
43545  bl m68k_write16 ;@ Call write16(r0,r1) handler
43546
43547  ldr r5,[r7,#0x5c] ;@ Load Cycles
43548  ldrh r8,[r4],#2 ;@ Fetch next opcode
43549  subs r5,r5,#12 ;@ Subtract cycles
43550  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43551  b CycloneEnd
43552
43553;@ ---------- [8158] or.w d0, (a0)+ uses Op8158 ----------
43554Op8158:
43555  str r4,[r7,#0x50] ;@ Save prev PC + 2
43556  str r5,[r7,#0x5c] ;@ Save Cycles
43557
43558;@ EaCalc : Get '(a0)+' into r11:
43559  and r2,r8,#0x000f
43560  ldr r11,[r7,r2,lsl #2]
43561  add r3,r11,#2 ;@ Post-increment An
43562  str r3,[r7,r2,lsl #2]
43563;@ EaRead : Read '(a0)+' (address in r11) into r0:
43564  str r4,[r7,#0x40] ;@ Save PC
43565  bic r0,r11,#0xff000000
43566  bl m68k_read16 ;@ Call read16(r0) handler
43567
43568;@ EaCalc : Get register index into r1:
43569  and r1,r8,#0x0e00
43570;@ EaRead : Read register[r1] into r1:
43571  ldr r1,[r7,r1,lsr #7]
43572
43573;@ Do arithmetic:
43574  mov r0,r0,asl #16
43575  orrs r1,r0,r1,asl #16
43576  and r10,r1,#0x80000000 ;@ r10=N_flag
43577  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43578
43579;@ Save result:
43580  mov r1,r1,asr #16
43581;@ EaWrite: Write r1 into '(a0)+' (address in r11):
43582  uxth r1,r1 ;@ zero extend
43583  bic r0,r11,#0xff000000
43584  bl m68k_write16 ;@ Call write16(r0,r1) handler
43585
43586  ldr r5,[r7,#0x5c] ;@ Load Cycles
43587  ldrh r8,[r4],#2 ;@ Fetch next opcode
43588  subs r5,r5,#12 ;@ Subtract cycles
43589  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43590  b CycloneEnd
43591
43592;@ ---------- [8160] or.w d0, -(a0) uses Op8160 ----------
43593Op8160:
43594  str r4,[r7,#0x50] ;@ Save prev PC + 2
43595  str r5,[r7,#0x5c] ;@ Save Cycles
43596
43597;@ EaCalc : Get '-(a0)' into r11:
43598  and r2,r8,#0x000f
43599  orr r2,r2,#0x8 ;@ A0-7
43600  ldr r11,[r7,r2,lsl #2]
43601  sub r11,r11,#2 ;@ Pre-decrement An
43602  str r11,[r7,r2,lsl #2]
43603;@ EaRead : Read '-(a0)' (address in r11) into r0:
43604  str r4,[r7,#0x40] ;@ Save PC
43605  bic r0,r11,#0xff000000
43606  bl m68k_read16 ;@ Call read16(r0) handler
43607
43608;@ EaCalc : Get register index into r1:
43609  and r1,r8,#0x0e00
43610;@ EaRead : Read register[r1] into r1:
43611  ldr r1,[r7,r1,lsr #7]
43612
43613;@ Do arithmetic:
43614  mov r0,r0,asl #16
43615  orrs r1,r0,r1,asl #16
43616  and r10,r1,#0x80000000 ;@ r10=N_flag
43617  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43618
43619;@ Save result:
43620  mov r1,r1,asr #16
43621;@ EaWrite: Write r1 into '-(a0)' (address in r11):
43622  uxth r1,r1 ;@ zero extend
43623  bic r0,r11,#0xff000000
43624  bl m68k_write16 ;@ Call write16(r0,r1) handler
43625
43626  ldr r5,[r7,#0x5c] ;@ Load Cycles
43627  ldrh r8,[r4],#2 ;@ Fetch next opcode
43628  subs r5,r5,#14 ;@ Subtract cycles
43629  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43630  b CycloneEnd
43631
43632;@ ---------- [8168] or.w d0, ($3333,a0) uses Op8168 ----------
43633Op8168:
43634  str r4,[r7,#0x50] ;@ Save prev PC + 2
43635  str r5,[r7,#0x5c] ;@ Save Cycles
43636
43637;@ EaCalc : Get '($3333,a0)' into r11:
43638  ldrsh r0,[r4],#2 ;@ Fetch offset
43639  and r2,r8,#0x000f
43640  ldr r2,[r7,r2,lsl #2]
43641  add r11,r0,r2 ;@ Add on offset
43642;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
43643  str r4,[r7,#0x40] ;@ Save PC
43644  bic r0,r11,#0xff000000
43645  bl m68k_read16 ;@ Call read16(r0) handler
43646
43647;@ EaCalc : Get register index into r1:
43648  and r1,r8,#0x0e00
43649;@ EaRead : Read register[r1] into r1:
43650  ldr r1,[r7,r1,lsr #7]
43651
43652;@ Do arithmetic:
43653  mov r0,r0,asl #16
43654  orrs r1,r0,r1,asl #16
43655  and r10,r1,#0x80000000 ;@ r10=N_flag
43656  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43657
43658;@ Save result:
43659  mov r1,r1,asr #16
43660;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
43661  uxth r1,r1 ;@ zero extend
43662  bic r0,r11,#0xff000000
43663  bl m68k_write16 ;@ Call write16(r0,r1) handler
43664
43665  ldr r5,[r7,#0x5c] ;@ Load Cycles
43666  ldrh r8,[r4],#2 ;@ Fetch next opcode
43667  subs r5,r5,#16 ;@ Subtract cycles
43668  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43669  b CycloneEnd
43670
43671;@ ---------- [8170] or.w d0, ($33,a0,d3.w*2) uses Op8170 ----------
43672Op8170:
43673  str r4,[r7,#0x50] ;@ Save prev PC + 2
43674  str r5,[r7,#0x5c] ;@ Save Cycles
43675
43676;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
43677;@ Get extension word into r3:
43678  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
43679  mov r2,r3,lsr #10
43680  tst r3,#0x0800 ;@ Is Rn Word or Long
43681  and r2,r2,#0x3c ;@ r2=Index of Rn
43682  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
43683  ldrne   r2,[r7,r2] ;@ r2=Rn.l
43684  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
43685  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
43686  and r2,r8,#0x000f
43687  orr r2,r2,#0x8 ;@ A0-7
43688  ldr r2,[r7,r2,lsl #2]
43689  add r11,r2,r3 ;@ r11=Disp+An+Rn
43690;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
43691  str r4,[r7,#0x40] ;@ Save PC
43692  bic r0,r11,#0xff000000
43693  bl m68k_read16 ;@ Call read16(r0) handler
43694
43695;@ EaCalc : Get register index into r1:
43696  and r1,r8,#0x0e00
43697;@ EaRead : Read register[r1] into r1:
43698  ldr r1,[r7,r1,lsr #7]
43699
43700;@ Do arithmetic:
43701  mov r0,r0,asl #16
43702  orrs r1,r0,r1,asl #16
43703  and r10,r1,#0x80000000 ;@ r10=N_flag
43704  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43705
43706;@ Save result:
43707  mov r1,r1,asr #16
43708;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
43709  uxth r1,r1 ;@ zero extend
43710  bic r0,r11,#0xff000000
43711  bl m68k_write16 ;@ Call write16(r0,r1) handler
43712
43713  ldr r5,[r7,#0x5c] ;@ Load Cycles
43714  ldrh r8,[r4],#2 ;@ Fetch next opcode
43715  subs r5,r5,#18 ;@ Subtract cycles
43716  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43717  b CycloneEnd
43718
43719;@ ---------- [8178] or.w d0, $3333.w uses Op8178 ----------
43720Op8178:
43721  str r4,[r7,#0x50] ;@ Save prev PC + 2
43722  str r5,[r7,#0x5c] ;@ Save Cycles
43723
43724;@ EaCalc : Get '$3333.w' into r11:
43725  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
43726;@ EaRead : Read '$3333.w' (address in r11) into r0:
43727  str r4,[r7,#0x40] ;@ Save PC
43728  bic r0,r11,#0xff000000
43729  bl m68k_read16 ;@ Call read16(r0) handler
43730
43731;@ EaCalc : Get register index into r1:
43732  and r1,r8,#0x0e00
43733;@ EaRead : Read register[r1] into r1:
43734  ldr r1,[r7,r1,lsr #7]
43735
43736;@ Do arithmetic:
43737  mov r0,r0,asl #16
43738  orrs r1,r0,r1,asl #16
43739  and r10,r1,#0x80000000 ;@ r10=N_flag
43740  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43741
43742;@ Save result:
43743  mov r1,r1,asr #16
43744;@ EaWrite: Write r1 into '$3333.w' (address in r11):
43745  uxth r1,r1 ;@ zero extend
43746  bic r0,r11,#0xff000000
43747  bl m68k_write16 ;@ Call write16(r0,r1) handler
43748
43749  ldr r5,[r7,#0x5c] ;@ Load Cycles
43750  ldrh r8,[r4],#2 ;@ Fetch next opcode
43751  subs r5,r5,#16 ;@ Subtract cycles
43752  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43753  b CycloneEnd
43754
43755;@ ---------- [8179] or.w d0, $33333333.l uses Op8179 ----------
43756Op8179:
43757  str r4,[r7,#0x50] ;@ Save prev PC + 2
43758  str r5,[r7,#0x5c] ;@ Save Cycles
43759
43760;@ EaCalc : Get '$33333333.l' into r11:
43761  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
43762  ldrh r0,[r4],#2
43763  orr r11,r0,r2,lsl #16
43764;@ EaRead : Read '$33333333.l' (address in r11) into r0:
43765  str r4,[r7,#0x40] ;@ Save PC
43766  bic r0,r11,#0xff000000
43767  bl m68k_read16 ;@ Call read16(r0) handler
43768
43769;@ EaCalc : Get register index into r1:
43770  and r1,r8,#0x0e00
43771;@ EaRead : Read register[r1] into r1:
43772  ldr r1,[r7,r1,lsr #7]
43773
43774;@ Do arithmetic:
43775  mov r0,r0,asl #16
43776  orrs r1,r0,r1,asl #16
43777  and r10,r1,#0x80000000 ;@ r10=N_flag
43778  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43779
43780;@ Save result:
43781  mov r1,r1,asr #16
43782;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
43783  uxth r1,r1 ;@ zero extend
43784  bic r0,r11,#0xff000000
43785  bl m68k_write16 ;@ Call write16(r0,r1) handler
43786
43787  ldr r5,[r7,#0x5c] ;@ Load Cycles
43788  ldrh r8,[r4],#2 ;@ Fetch next opcode
43789  subs r5,r5,#20 ;@ Subtract cycles
43790  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43791  b CycloneEnd
43792
43793;@ ---------- [8190] or.l d0, (a0) uses Op8190 ----------
43794Op8190:
43795  str r4,[r7,#0x50] ;@ Save prev PC + 2
43796  str r5,[r7,#0x5c] ;@ Save Cycles
43797
43798;@ EaCalc : Get '(a0)' into r11:
43799  and r2,r8,#0x000f
43800  orr r2,r2,#0x8 ;@ A0-7
43801  ldr r11,[r7,r2,lsl #2]
43802;@ EaRead : Read '(a0)' (address in r11) into r0:
43803  str r4,[r7,#0x40] ;@ Save PC
43804  bic r0,r11,#0xff000000
43805  bl m68k_read32 ;@ Call read32(r0) handler
43806
43807;@ EaCalc : Get register index into r1:
43808  and r1,r8,#0x0e00
43809;@ EaRead : Read register[r1] into r1:
43810  ldr r1,[r7,r1,lsr #7]
43811
43812;@ Do arithmetic:
43813  orrs r1,r0,r1
43814  and r10,r1,#0x80000000 ;@ r10=N_flag
43815  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43816
43817;@ Save result:
43818;@ EaWrite: Write r1 into '(a0)' (address in r11):
43819  bic r0,r11,#0xff000000
43820  bl m68k_write32 ;@ Call write32(r0,r1) handler
43821
43822  ldr r5,[r7,#0x5c] ;@ Load Cycles
43823  ldrh r8,[r4],#2 ;@ Fetch next opcode
43824  subs r5,r5,#20 ;@ Subtract cycles
43825  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43826  b CycloneEnd
43827
43828;@ ---------- [8198] or.l d0, (a0)+ uses Op8198 ----------
43829Op8198:
43830  str r4,[r7,#0x50] ;@ Save prev PC + 2
43831  str r5,[r7,#0x5c] ;@ Save Cycles
43832
43833;@ EaCalc : Get '(a0)+' into r11:
43834  and r2,r8,#0x000f
43835  ldr r11,[r7,r2,lsl #2]
43836  add r3,r11,#4 ;@ Post-increment An
43837  str r3,[r7,r2,lsl #2]
43838;@ EaRead : Read '(a0)+' (address in r11) into r0:
43839  str r4,[r7,#0x40] ;@ Save PC
43840  bic r0,r11,#0xff000000
43841  bl m68k_read32 ;@ Call read32(r0) handler
43842
43843;@ EaCalc : Get register index into r1:
43844  and r1,r8,#0x0e00
43845;@ EaRead : Read register[r1] into r1:
43846  ldr r1,[r7,r1,lsr #7]
43847
43848;@ Do arithmetic:
43849  orrs r1,r0,r1
43850  and r10,r1,#0x80000000 ;@ r10=N_flag
43851  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43852
43853;@ Save result:
43854;@ EaWrite: Write r1 into '(a0)+' (address in r11):
43855  bic r0,r11,#0xff000000
43856  bl m68k_write32 ;@ Call write32(r0,r1) handler
43857
43858  ldr r5,[r7,#0x5c] ;@ Load Cycles
43859  ldrh r8,[r4],#2 ;@ Fetch next opcode
43860  subs r5,r5,#20 ;@ Subtract cycles
43861  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43862  b CycloneEnd
43863
43864;@ ---------- [81a0] or.l d0, -(a0) uses Op81a0 ----------
43865Op81a0:
43866  str r4,[r7,#0x50] ;@ Save prev PC + 2
43867  str r5,[r7,#0x5c] ;@ Save Cycles
43868
43869;@ EaCalc : Get '-(a0)' into r11:
43870  and r2,r8,#0x000f
43871  orr r2,r2,#0x8 ;@ A0-7
43872  ldr r11,[r7,r2,lsl #2]
43873  sub r11,r11,#4 ;@ Pre-decrement An
43874  str r11,[r7,r2,lsl #2]
43875;@ EaRead : Read '-(a0)' (address in r11) into r0:
43876  str r4,[r7,#0x40] ;@ Save PC
43877  bic r0,r11,#0xff000000
43878  bl m68k_read32 ;@ Call read32(r0) handler
43879
43880;@ EaCalc : Get register index into r1:
43881  and r1,r8,#0x0e00
43882;@ EaRead : Read register[r1] into r1:
43883  ldr r1,[r7,r1,lsr #7]
43884
43885;@ Do arithmetic:
43886  orrs r1,r0,r1
43887  and r10,r1,#0x80000000 ;@ r10=N_flag
43888  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43889
43890;@ Save result:
43891;@ EaWrite: Write r1 into '-(a0)' (address in r11):
43892  bic r0,r11,#0xff000000
43893  bl m68k_write32 ;@ Call write32(r0,r1) handler
43894
43895  ldr r5,[r7,#0x5c] ;@ Load Cycles
43896  ldrh r8,[r4],#2 ;@ Fetch next opcode
43897  subs r5,r5,#22 ;@ Subtract cycles
43898  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43899  b CycloneEnd
43900
43901;@ ---------- [81a8] or.l d0, ($3333,a0) uses Op81a8 ----------
43902Op81a8:
43903  str r4,[r7,#0x50] ;@ Save prev PC + 2
43904  str r5,[r7,#0x5c] ;@ Save Cycles
43905
43906;@ EaCalc : Get '($3333,a0)' into r11:
43907  ldrsh r0,[r4],#2 ;@ Fetch offset
43908  and r2,r8,#0x000f
43909  ldr r2,[r7,r2,lsl #2]
43910  add r11,r0,r2 ;@ Add on offset
43911;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
43912  str r4,[r7,#0x40] ;@ Save PC
43913  bic r0,r11,#0xff000000
43914  bl m68k_read32 ;@ Call read32(r0) handler
43915
43916;@ EaCalc : Get register index into r1:
43917  and r1,r8,#0x0e00
43918;@ EaRead : Read register[r1] into r1:
43919  ldr r1,[r7,r1,lsr #7]
43920
43921;@ Do arithmetic:
43922  orrs r1,r0,r1
43923  and r10,r1,#0x80000000 ;@ r10=N_flag
43924  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43925
43926;@ Save result:
43927;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
43928  bic r0,r11,#0xff000000
43929  bl m68k_write32 ;@ Call write32(r0,r1) handler
43930
43931  ldr r5,[r7,#0x5c] ;@ Load Cycles
43932  ldrh r8,[r4],#2 ;@ Fetch next opcode
43933  subs r5,r5,#24 ;@ Subtract cycles
43934  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43935  b CycloneEnd
43936
43937;@ ---------- [81b0] or.l d0, ($33,a0,d3.w*2) uses Op81b0 ----------
43938Op81b0:
43939  str r4,[r7,#0x50] ;@ Save prev PC + 2
43940  str r5,[r7,#0x5c] ;@ Save Cycles
43941
43942;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
43943;@ Get extension word into r3:
43944  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
43945  mov r2,r3,lsr #10
43946  tst r3,#0x0800 ;@ Is Rn Word or Long
43947  and r2,r2,#0x3c ;@ r2=Index of Rn
43948  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
43949  ldrne   r2,[r7,r2] ;@ r2=Rn.l
43950  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
43951  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
43952  and r2,r8,#0x000f
43953  orr r2,r2,#0x8 ;@ A0-7
43954  ldr r2,[r7,r2,lsl #2]
43955  add r11,r2,r3 ;@ r11=Disp+An+Rn
43956;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
43957  str r4,[r7,#0x40] ;@ Save PC
43958  bic r0,r11,#0xff000000
43959  bl m68k_read32 ;@ Call read32(r0) handler
43960
43961;@ EaCalc : Get register index into r1:
43962  and r1,r8,#0x0e00
43963;@ EaRead : Read register[r1] into r1:
43964  ldr r1,[r7,r1,lsr #7]
43965
43966;@ Do arithmetic:
43967  orrs r1,r0,r1
43968  and r10,r1,#0x80000000 ;@ r10=N_flag
43969  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
43970
43971;@ Save result:
43972;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
43973  bic r0,r11,#0xff000000
43974  bl m68k_write32 ;@ Call write32(r0,r1) handler
43975
43976  ldr r5,[r7,#0x5c] ;@ Load Cycles
43977  ldrh r8,[r4],#2 ;@ Fetch next opcode
43978  subs r5,r5,#26 ;@ Subtract cycles
43979  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43980  b CycloneEnd
43981
43982;@ ---------- [81b8] or.l d0, $3333.w uses Op81b8 ----------
43983Op81b8:
43984  str r4,[r7,#0x50] ;@ Save prev PC + 2
43985  str r5,[r7,#0x5c] ;@ Save Cycles
43986
43987;@ EaCalc : Get '$3333.w' into r11:
43988  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
43989;@ EaRead : Read '$3333.w' (address in r11) into r0:
43990  str r4,[r7,#0x40] ;@ Save PC
43991  bic r0,r11,#0xff000000
43992  bl m68k_read32 ;@ Call read32(r0) handler
43993
43994;@ EaCalc : Get register index into r1:
43995  and r1,r8,#0x0e00
43996;@ EaRead : Read register[r1] into r1:
43997  ldr r1,[r7,r1,lsr #7]
43998
43999;@ Do arithmetic:
44000  orrs r1,r0,r1
44001  and r10,r1,#0x80000000 ;@ r10=N_flag
44002  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44003
44004;@ Save result:
44005;@ EaWrite: Write r1 into '$3333.w' (address in r11):
44006  bic r0,r11,#0xff000000
44007  bl m68k_write32 ;@ Call write32(r0,r1) handler
44008
44009  ldr r5,[r7,#0x5c] ;@ Load Cycles
44010  ldrh r8,[r4],#2 ;@ Fetch next opcode
44011  subs r5,r5,#24 ;@ Subtract cycles
44012  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44013  b CycloneEnd
44014
44015;@ ---------- [81b9] or.l d0, $33333333.l uses Op81b9 ----------
44016Op81b9:
44017  str r4,[r7,#0x50] ;@ Save prev PC + 2
44018  str r5,[r7,#0x5c] ;@ Save Cycles
44019
44020;@ EaCalc : Get '$33333333.l' into r11:
44021  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
44022  ldrh r0,[r4],#2
44023  orr r11,r0,r2,lsl #16
44024;@ EaRead : Read '$33333333.l' (address in r11) into r0:
44025  str r4,[r7,#0x40] ;@ Save PC
44026  bic r0,r11,#0xff000000
44027  bl m68k_read32 ;@ Call read32(r0) handler
44028
44029;@ EaCalc : Get register index into r1:
44030  and r1,r8,#0x0e00
44031;@ EaRead : Read register[r1] into r1:
44032  ldr r1,[r7,r1,lsr #7]
44033
44034;@ Do arithmetic:
44035  orrs r1,r0,r1
44036  and r10,r1,#0x80000000 ;@ r10=N_flag
44037  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44038
44039;@ Save result:
44040;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
44041  bic r0,r11,#0xff000000
44042  bl m68k_write32 ;@ Call write32(r0,r1) handler
44043
44044  ldr r5,[r7,#0x5c] ;@ Load Cycles
44045  ldrh r8,[r4],#2 ;@ Fetch next opcode
44046  subs r5,r5,#28 ;@ Subtract cycles
44047  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44048  b CycloneEnd
44049
44050;@ ---------- [81c0] divs.w d0, d0 uses Op81c0 ----------
44051Op81c0:
44052;@ EaCalc : Get register index into r0:
44053  and r0,r8,#0x000f
44054;@ EaRead : Read register[r0] into r0:
44055  ldr r0,[r7,r0,lsl #2]
44056
44057;@ EaCalc : Get register index into r11:
44058  and r11,r8,#0x0e00
44059;@ EaRead : Read register[r11] into r2:
44060  ldr r2,[r7,r11,lsr #7]
44061
44062  movs r1,r0,asl #16
44063  beq divzero81c0 ;@ division by zero
44064
44065  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
44066  tst r2,r2
44067  orrmi r12,r12,#2
44068  rsbmi r2,r2,#0 ;@ Make r2 positive
44069
44070  movs r0,r1,asr #16
44071  orrmi r12,r12,#1
44072  rsbmi r0,r0,#0 ;@ Make r0 positive
44073
44074;@ detect the nasty 0x80000000 / -1 situation
44075  mov r3,r2,asr #31
44076  eors r3,r3,r1,asr #16
44077  beq wrendofop81c0
44078
44079;@ Divide r2 by r0
44080  mov r3,#0
44081  mov r1,r0
44082
44083;@ Shift up divisor till it's just less than numerator
44084Shift81c0:
44085  cmp r1,r2,lsr #1
44086  movls r1,r1,lsl #1
44087  bcc Shift81c0
44088
44089Divide81c0:
44090  cmp r2,r1
44091  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
44092  subcs r2,r2,r1
44093  teq r1,r0
44094  movne r1,r1,lsr #1
44095  bne Divide81c0
44096
44097;@r3==quotient,r2==remainder
44098  and r1,r12,#1
44099  teq r1,r12,lsr #1
44100  rsbne r3,r3,#0 ;@ negate if quotient is negative
44101  tst r12,#2
44102  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
44103
44104  mov r1,r3,asl #16
44105  cmp r3,r1,asr #16 ;@ signed overflow?
44106  orrne r10,r10,#0x10000000 ;@ set overflow flag
44107  bne endofop81c0 ;@ overflow!
44108
44109wrendofop81c0:
44110  movs r1,r3,lsl #16 ;@ Clip to 16-bits
44111  and r10,r1,#0x80000000 ;@ r10=N_flag
44112  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44113  mov r1,r1,lsr #16
44114  orr r1,r1,r2,lsl #16 ;@ Insert remainder
44115
44116;@ EaWrite: r1 into register[r11]:
44117  str r1,[r7,r11,lsr #7]
44118
44119endofop81c0:
44120  ldrh r8,[r4],#2 ;@ Fetch next opcode
44121  subs r5,r5,#158 ;@ Subtract cycles
44122  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44123  b CycloneEnd
44124
44125divzero81c0:
44126  mov r0,#5 ;@ Divide by zero
44127  bl Exception
44128  ldrh r8,[r4],#2 ;@ Fetch next opcode
44129  subs r5,r5,#196 ;@ Subtract cycles
44130  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44131  b CycloneEnd
44132
44133
44134;@ ---------- [81d0] divs.w (a0), d0 uses Op81d0 ----------
44135Op81d0:
44136  str r4,[r7,#0x50] ;@ Save prev PC + 2
44137  str r5,[r7,#0x5c] ;@ Save Cycles
44138
44139;@ EaCalc : Get '(a0)' into r0:
44140  and r2,r8,#0x000f
44141  orr r2,r2,#0x8 ;@ A0-7
44142  ldr r0,[r7,r2,lsl #2]
44143;@ EaRead : Read '(a0)' (address in r0) into r0:
44144  str r4,[r7,#0x40] ;@ Save PC
44145  bic r0,r0,#0xff000000
44146  bl m68k_read16 ;@ Call read16(r0) handler
44147
44148;@ EaCalc : Get register index into r11:
44149  and r11,r8,#0x0e00
44150;@ EaRead : Read register[r11] into r2:
44151  ldr r2,[r7,r11,lsr #7]
44152
44153  movs r1,r0,asl #16
44154  beq divzero81d0 ;@ division by zero
44155
44156  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
44157  tst r2,r2
44158  orrmi r12,r12,#2
44159  rsbmi r2,r2,#0 ;@ Make r2 positive
44160
44161  movs r0,r1,asr #16
44162  orrmi r12,r12,#1
44163  rsbmi r0,r0,#0 ;@ Make r0 positive
44164
44165;@ detect the nasty 0x80000000 / -1 situation
44166  mov r3,r2,asr #31
44167  eors r3,r3,r1,asr #16
44168  beq wrendofop81d0
44169
44170;@ Divide r2 by r0
44171  mov r3,#0
44172  mov r1,r0
44173
44174;@ Shift up divisor till it's just less than numerator
44175Shift81d0:
44176  cmp r1,r2,lsr #1
44177  movls r1,r1,lsl #1
44178  bcc Shift81d0
44179
44180Divide81d0:
44181  cmp r2,r1
44182  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
44183  subcs r2,r2,r1
44184  teq r1,r0
44185  movne r1,r1,lsr #1
44186  bne Divide81d0
44187
44188;@r3==quotient,r2==remainder
44189  and r1,r12,#1
44190  teq r1,r12,lsr #1
44191  rsbne r3,r3,#0 ;@ negate if quotient is negative
44192  tst r12,#2
44193  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
44194
44195  mov r1,r3,asl #16
44196  cmp r3,r1,asr #16 ;@ signed overflow?
44197  orrne r10,r10,#0x10000000 ;@ set overflow flag
44198  bne endofop81d0 ;@ overflow!
44199
44200wrendofop81d0:
44201  movs r1,r3,lsl #16 ;@ Clip to 16-bits
44202  and r10,r1,#0x80000000 ;@ r10=N_flag
44203  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44204  mov r1,r1,lsr #16
44205  orr r1,r1,r2,lsl #16 ;@ Insert remainder
44206
44207;@ EaWrite: r1 into register[r11]:
44208  str r1,[r7,r11,lsr #7]
44209
44210endofop81d0:
44211  ldr r5,[r7,#0x5c] ;@ Load Cycles
44212  ldrh r8,[r4],#2 ;@ Fetch next opcode
44213  subs r5,r5,#162 ;@ Subtract cycles
44214  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44215  b CycloneEnd
44216
44217divzero81d0:
44218  mov r0,#5 ;@ Divide by zero
44219  bl Exception
44220  ldr r5,[r7,#0x5c] ;@ Load Cycles
44221  ldrh r8,[r4],#2 ;@ Fetch next opcode
44222  subs r5,r5,#200 ;@ Subtract cycles
44223  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44224  b CycloneEnd
44225
44226
44227;@ ---------- [81d8] divs.w (a0)+, d0 uses Op81d8 ----------
44228Op81d8:
44229  str r4,[r7,#0x50] ;@ Save prev PC + 2
44230  str r5,[r7,#0x5c] ;@ Save Cycles
44231
44232;@ EaCalc : Get '(a0)+' into r0:
44233  and r2,r8,#0x000f
44234  ldr r0,[r7,r2,lsl #2]
44235  add r3,r0,#2 ;@ Post-increment An
44236  str r3,[r7,r2,lsl #2]
44237;@ EaRead : Read '(a0)+' (address in r0) into r0:
44238  str r4,[r7,#0x40] ;@ Save PC
44239  bic r0,r0,#0xff000000
44240  bl m68k_read16 ;@ Call read16(r0) handler
44241
44242;@ EaCalc : Get register index into r11:
44243  and r11,r8,#0x0e00
44244;@ EaRead : Read register[r11] into r2:
44245  ldr r2,[r7,r11,lsr #7]
44246
44247  movs r1,r0,asl #16
44248  beq divzero81d8 ;@ division by zero
44249
44250  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
44251  tst r2,r2
44252  orrmi r12,r12,#2
44253  rsbmi r2,r2,#0 ;@ Make r2 positive
44254
44255  movs r0,r1,asr #16
44256  orrmi r12,r12,#1
44257  rsbmi r0,r0,#0 ;@ Make r0 positive
44258
44259;@ detect the nasty 0x80000000 / -1 situation
44260  mov r3,r2,asr #31
44261  eors r3,r3,r1,asr #16
44262  beq wrendofop81d8
44263
44264;@ Divide r2 by r0
44265  mov r3,#0
44266  mov r1,r0
44267
44268;@ Shift up divisor till it's just less than numerator
44269Shift81d8:
44270  cmp r1,r2,lsr #1
44271  movls r1,r1,lsl #1
44272  bcc Shift81d8
44273
44274Divide81d8:
44275  cmp r2,r1
44276  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
44277  subcs r2,r2,r1
44278  teq r1,r0
44279  movne r1,r1,lsr #1
44280  bne Divide81d8
44281
44282;@r3==quotient,r2==remainder
44283  and r1,r12,#1
44284  teq r1,r12,lsr #1
44285  rsbne r3,r3,#0 ;@ negate if quotient is negative
44286  tst r12,#2
44287  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
44288
44289  mov r1,r3,asl #16
44290  cmp r3,r1,asr #16 ;@ signed overflow?
44291  orrne r10,r10,#0x10000000 ;@ set overflow flag
44292  bne endofop81d8 ;@ overflow!
44293
44294wrendofop81d8:
44295  movs r1,r3,lsl #16 ;@ Clip to 16-bits
44296  and r10,r1,#0x80000000 ;@ r10=N_flag
44297  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44298  mov r1,r1,lsr #16
44299  orr r1,r1,r2,lsl #16 ;@ Insert remainder
44300
44301;@ EaWrite: r1 into register[r11]:
44302  str r1,[r7,r11,lsr #7]
44303
44304endofop81d8:
44305  ldr r5,[r7,#0x5c] ;@ Load Cycles
44306  ldrh r8,[r4],#2 ;@ Fetch next opcode
44307  subs r5,r5,#162 ;@ Subtract cycles
44308  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44309  b CycloneEnd
44310
44311divzero81d8:
44312  mov r0,#5 ;@ Divide by zero
44313  bl Exception
44314  ldr r5,[r7,#0x5c] ;@ Load Cycles
44315  ldrh r8,[r4],#2 ;@ Fetch next opcode
44316  subs r5,r5,#200 ;@ Subtract cycles
44317  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44318  b CycloneEnd
44319
44320
44321;@ ---------- [81e0] divs.w -(a0), d0 uses Op81e0 ----------
44322Op81e0:
44323  str r4,[r7,#0x50] ;@ Save prev PC + 2
44324  str r5,[r7,#0x5c] ;@ Save Cycles
44325
44326;@ EaCalc : Get '-(a0)' into r0:
44327  and r2,r8,#0x000f
44328  orr r2,r2,#0x8 ;@ A0-7
44329  ldr r0,[r7,r2,lsl #2]
44330  sub r0,r0,#2 ;@ Pre-decrement An
44331  str r0,[r7,r2,lsl #2]
44332;@ EaRead : Read '-(a0)' (address in r0) into r0:
44333  str r4,[r7,#0x40] ;@ Save PC
44334  bic r0,r0,#0xff000000
44335  bl m68k_read16 ;@ Call read16(r0) handler
44336
44337;@ EaCalc : Get register index into r11:
44338  and r11,r8,#0x0e00
44339;@ EaRead : Read register[r11] into r2:
44340  ldr r2,[r7,r11,lsr #7]
44341
44342  movs r1,r0,asl #16
44343  beq divzero81e0 ;@ division by zero
44344
44345  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
44346  tst r2,r2
44347  orrmi r12,r12,#2
44348  rsbmi r2,r2,#0 ;@ Make r2 positive
44349
44350  movs r0,r1,asr #16
44351  orrmi r12,r12,#1
44352  rsbmi r0,r0,#0 ;@ Make r0 positive
44353
44354;@ detect the nasty 0x80000000 / -1 situation
44355  mov r3,r2,asr #31
44356  eors r3,r3,r1,asr #16
44357  beq wrendofop81e0
44358
44359;@ Divide r2 by r0
44360  mov r3,#0
44361  mov r1,r0
44362
44363;@ Shift up divisor till it's just less than numerator
44364Shift81e0:
44365  cmp r1,r2,lsr #1
44366  movls r1,r1,lsl #1
44367  bcc Shift81e0
44368
44369Divide81e0:
44370  cmp r2,r1
44371  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
44372  subcs r2,r2,r1
44373  teq r1,r0
44374  movne r1,r1,lsr #1
44375  bne Divide81e0
44376
44377;@r3==quotient,r2==remainder
44378  and r1,r12,#1
44379  teq r1,r12,lsr #1
44380  rsbne r3,r3,#0 ;@ negate if quotient is negative
44381  tst r12,#2
44382  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
44383
44384  mov r1,r3,asl #16
44385  cmp r3,r1,asr #16 ;@ signed overflow?
44386  orrne r10,r10,#0x10000000 ;@ set overflow flag
44387  bne endofop81e0 ;@ overflow!
44388
44389wrendofop81e0:
44390  movs r1,r3,lsl #16 ;@ Clip to 16-bits
44391  and r10,r1,#0x80000000 ;@ r10=N_flag
44392  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44393  mov r1,r1,lsr #16
44394  orr r1,r1,r2,lsl #16 ;@ Insert remainder
44395
44396;@ EaWrite: r1 into register[r11]:
44397  str r1,[r7,r11,lsr #7]
44398
44399endofop81e0:
44400  ldr r5,[r7,#0x5c] ;@ Load Cycles
44401  ldrh r8,[r4],#2 ;@ Fetch next opcode
44402  subs r5,r5,#164 ;@ Subtract cycles
44403  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44404  b CycloneEnd
44405
44406divzero81e0:
44407  mov r0,#5 ;@ Divide by zero
44408  bl Exception
44409  ldr r5,[r7,#0x5c] ;@ Load Cycles
44410  ldrh r8,[r4],#2 ;@ Fetch next opcode
44411  subs r5,r5,#202 ;@ Subtract cycles
44412  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44413  b CycloneEnd
44414
44415
44416;@ ---------- [81e8] divs.w ($3333,a0), d0 uses Op81e8 ----------
44417Op81e8:
44418  str r4,[r7,#0x50] ;@ Save prev PC + 2
44419  str r5,[r7,#0x5c] ;@ Save Cycles
44420
44421;@ EaCalc : Get '($3333,a0)' into r0:
44422  ldrsh r0,[r4],#2 ;@ Fetch offset
44423  and r2,r8,#0x000f
44424  ldr r2,[r7,r2,lsl #2]
44425  add r0,r0,r2 ;@ Add on offset
44426;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
44427  str r4,[r7,#0x40] ;@ Save PC
44428  bic r0,r0,#0xff000000
44429  bl m68k_read16 ;@ Call read16(r0) handler
44430
44431;@ EaCalc : Get register index into r11:
44432  and r11,r8,#0x0e00
44433;@ EaRead : Read register[r11] into r2:
44434  ldr r2,[r7,r11,lsr #7]
44435
44436  movs r1,r0,asl #16
44437  beq divzero81e8 ;@ division by zero
44438
44439  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
44440  tst r2,r2
44441  orrmi r12,r12,#2
44442  rsbmi r2,r2,#0 ;@ Make r2 positive
44443
44444  movs r0,r1,asr #16
44445  orrmi r12,r12,#1
44446  rsbmi r0,r0,#0 ;@ Make r0 positive
44447
44448;@ detect the nasty 0x80000000 / -1 situation
44449  mov r3,r2,asr #31
44450  eors r3,r3,r1,asr #16
44451  beq wrendofop81e8
44452
44453;@ Divide r2 by r0
44454  mov r3,#0
44455  mov r1,r0
44456
44457;@ Shift up divisor till it's just less than numerator
44458Shift81e8:
44459  cmp r1,r2,lsr #1
44460  movls r1,r1,lsl #1
44461  bcc Shift81e8
44462
44463Divide81e8:
44464  cmp r2,r1
44465  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
44466  subcs r2,r2,r1
44467  teq r1,r0
44468  movne r1,r1,lsr #1
44469  bne Divide81e8
44470
44471;@r3==quotient,r2==remainder
44472  and r1,r12,#1
44473  teq r1,r12,lsr #1
44474  rsbne r3,r3,#0 ;@ negate if quotient is negative
44475  tst r12,#2
44476  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
44477
44478  mov r1,r3,asl #16
44479  cmp r3,r1,asr #16 ;@ signed overflow?
44480  orrne r10,r10,#0x10000000 ;@ set overflow flag
44481  bne endofop81e8 ;@ overflow!
44482
44483wrendofop81e8:
44484  movs r1,r3,lsl #16 ;@ Clip to 16-bits
44485  and r10,r1,#0x80000000 ;@ r10=N_flag
44486  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44487  mov r1,r1,lsr #16
44488  orr r1,r1,r2,lsl #16 ;@ Insert remainder
44489
44490;@ EaWrite: r1 into register[r11]:
44491  str r1,[r7,r11,lsr #7]
44492
44493endofop81e8:
44494  ldr r5,[r7,#0x5c] ;@ Load Cycles
44495  ldrh r8,[r4],#2 ;@ Fetch next opcode
44496  subs r5,r5,#166 ;@ Subtract cycles
44497  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44498  b CycloneEnd
44499
44500divzero81e8:
44501  mov r0,#5 ;@ Divide by zero
44502  bl Exception
44503  ldr r5,[r7,#0x5c] ;@ Load Cycles
44504  ldrh r8,[r4],#2 ;@ Fetch next opcode
44505  subs r5,r5,#204 ;@ Subtract cycles
44506  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44507  b CycloneEnd
44508
44509
44510;@ ---------- [81f0] divs.w ($33,a0,d3.w*2), d0 uses Op81f0 ----------
44511Op81f0:
44512  str r4,[r7,#0x50] ;@ Save prev PC + 2
44513  str r5,[r7,#0x5c] ;@ Save Cycles
44514
44515;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
44516;@ Get extension word into r3:
44517  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
44518  mov r2,r3,lsr #10
44519  tst r3,#0x0800 ;@ Is Rn Word or Long
44520  and r2,r2,#0x3c ;@ r2=Index of Rn
44521  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
44522  ldrne   r2,[r7,r2] ;@ r2=Rn.l
44523  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
44524  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
44525  and r2,r8,#0x000f
44526  orr r2,r2,#0x8 ;@ A0-7
44527  ldr r2,[r7,r2,lsl #2]
44528  add r0,r2,r3 ;@ r0=Disp+An+Rn
44529;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
44530  str r4,[r7,#0x40] ;@ Save PC
44531  bic r0,r0,#0xff000000
44532  bl m68k_read16 ;@ Call read16(r0) handler
44533
44534;@ EaCalc : Get register index into r11:
44535  and r11,r8,#0x0e00
44536;@ EaRead : Read register[r11] into r2:
44537  ldr r2,[r7,r11,lsr #7]
44538
44539  movs r1,r0,asl #16
44540  beq divzero81f0 ;@ division by zero
44541
44542  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
44543  tst r2,r2
44544  orrmi r12,r12,#2
44545  rsbmi r2,r2,#0 ;@ Make r2 positive
44546
44547  movs r0,r1,asr #16
44548  orrmi r12,r12,#1
44549  rsbmi r0,r0,#0 ;@ Make r0 positive
44550
44551;@ detect the nasty 0x80000000 / -1 situation
44552  mov r3,r2,asr #31
44553  eors r3,r3,r1,asr #16
44554  beq wrendofop81f0
44555
44556;@ Divide r2 by r0
44557  mov r3,#0
44558  mov r1,r0
44559
44560;@ Shift up divisor till it's just less than numerator
44561Shift81f0:
44562  cmp r1,r2,lsr #1
44563  movls r1,r1,lsl #1
44564  bcc Shift81f0
44565
44566Divide81f0:
44567  cmp r2,r1
44568  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
44569  subcs r2,r2,r1
44570  teq r1,r0
44571  movne r1,r1,lsr #1
44572  bne Divide81f0
44573
44574;@r3==quotient,r2==remainder
44575  and r1,r12,#1
44576  teq r1,r12,lsr #1
44577  rsbne r3,r3,#0 ;@ negate if quotient is negative
44578  tst r12,#2
44579  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
44580
44581  mov r1,r3,asl #16
44582  cmp r3,r1,asr #16 ;@ signed overflow?
44583  orrne r10,r10,#0x10000000 ;@ set overflow flag
44584  bne endofop81f0 ;@ overflow!
44585
44586wrendofop81f0:
44587  movs r1,r3,lsl #16 ;@ Clip to 16-bits
44588  and r10,r1,#0x80000000 ;@ r10=N_flag
44589  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44590  mov r1,r1,lsr #16
44591  orr r1,r1,r2,lsl #16 ;@ Insert remainder
44592
44593;@ EaWrite: r1 into register[r11]:
44594  str r1,[r7,r11,lsr #7]
44595
44596endofop81f0:
44597  ldr r5,[r7,#0x5c] ;@ Load Cycles
44598  ldrh r8,[r4],#2 ;@ Fetch next opcode
44599  subs r5,r5,#168 ;@ Subtract cycles
44600  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44601  b CycloneEnd
44602
44603divzero81f0:
44604  mov r0,#5 ;@ Divide by zero
44605  bl Exception
44606  ldr r5,[r7,#0x5c] ;@ Load Cycles
44607  ldrh r8,[r4],#2 ;@ Fetch next opcode
44608  subs r5,r5,#206 ;@ Subtract cycles
44609  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44610  b CycloneEnd
44611
44612
44613;@ ---------- [81f8] divs.w $3333.w, d0 uses Op81f8 ----------
44614Op81f8:
44615  str r4,[r7,#0x50] ;@ Save prev PC + 2
44616  str r5,[r7,#0x5c] ;@ Save Cycles
44617
44618;@ EaCalc : Get '$3333.w' into r0:
44619  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
44620;@ EaRead : Read '$3333.w' (address in r0) into r0:
44621  str r4,[r7,#0x40] ;@ Save PC
44622  bic r0,r0,#0xff000000
44623  bl m68k_read16 ;@ Call read16(r0) handler
44624
44625;@ EaCalc : Get register index into r11:
44626  and r11,r8,#0x0e00
44627;@ EaRead : Read register[r11] into r2:
44628  ldr r2,[r7,r11,lsr #7]
44629
44630  movs r1,r0,asl #16
44631  beq divzero81f8 ;@ division by zero
44632
44633  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
44634  tst r2,r2
44635  orrmi r12,r12,#2
44636  rsbmi r2,r2,#0 ;@ Make r2 positive
44637
44638  movs r0,r1,asr #16
44639  orrmi r12,r12,#1
44640  rsbmi r0,r0,#0 ;@ Make r0 positive
44641
44642;@ detect the nasty 0x80000000 / -1 situation
44643  mov r3,r2,asr #31
44644  eors r3,r3,r1,asr #16
44645  beq wrendofop81f8
44646
44647;@ Divide r2 by r0
44648  mov r3,#0
44649  mov r1,r0
44650
44651;@ Shift up divisor till it's just less than numerator
44652Shift81f8:
44653  cmp r1,r2,lsr #1
44654  movls r1,r1,lsl #1
44655  bcc Shift81f8
44656
44657Divide81f8:
44658  cmp r2,r1
44659  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
44660  subcs r2,r2,r1
44661  teq r1,r0
44662  movne r1,r1,lsr #1
44663  bne Divide81f8
44664
44665;@r3==quotient,r2==remainder
44666  and r1,r12,#1
44667  teq r1,r12,lsr #1
44668  rsbne r3,r3,#0 ;@ negate if quotient is negative
44669  tst r12,#2
44670  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
44671
44672  mov r1,r3,asl #16
44673  cmp r3,r1,asr #16 ;@ signed overflow?
44674  orrne r10,r10,#0x10000000 ;@ set overflow flag
44675  bne endofop81f8 ;@ overflow!
44676
44677wrendofop81f8:
44678  movs r1,r3,lsl #16 ;@ Clip to 16-bits
44679  and r10,r1,#0x80000000 ;@ r10=N_flag
44680  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44681  mov r1,r1,lsr #16
44682  orr r1,r1,r2,lsl #16 ;@ Insert remainder
44683
44684;@ EaWrite: r1 into register[r11]:
44685  str r1,[r7,r11,lsr #7]
44686
44687endofop81f8:
44688  ldr r5,[r7,#0x5c] ;@ Load Cycles
44689  ldrh r8,[r4],#2 ;@ Fetch next opcode
44690  subs r5,r5,#166 ;@ Subtract cycles
44691  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44692  b CycloneEnd
44693
44694divzero81f8:
44695  mov r0,#5 ;@ Divide by zero
44696  bl Exception
44697  ldr r5,[r7,#0x5c] ;@ Load Cycles
44698  ldrh r8,[r4],#2 ;@ Fetch next opcode
44699  subs r5,r5,#204 ;@ Subtract cycles
44700  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44701  b CycloneEnd
44702
44703
44704;@ ---------- [81f9] divs.w $33333333.l, d0 uses Op81f9 ----------
44705Op81f9:
44706  str r4,[r7,#0x50] ;@ Save prev PC + 2
44707  str r5,[r7,#0x5c] ;@ Save Cycles
44708
44709;@ EaCalc : Get '$33333333.l' into r0:
44710  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
44711  ldrh r0,[r4],#2
44712  orr r0,r0,r2,lsl #16
44713;@ EaRead : Read '$33333333.l' (address in r0) into r0:
44714  str r4,[r7,#0x40] ;@ Save PC
44715  bic r0,r0,#0xff000000
44716  bl m68k_read16 ;@ Call read16(r0) handler
44717
44718;@ EaCalc : Get register index into r11:
44719  and r11,r8,#0x0e00
44720;@ EaRead : Read register[r11] into r2:
44721  ldr r2,[r7,r11,lsr #7]
44722
44723  movs r1,r0,asl #16
44724  beq divzero81f9 ;@ division by zero
44725
44726  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
44727  tst r2,r2
44728  orrmi r12,r12,#2
44729  rsbmi r2,r2,#0 ;@ Make r2 positive
44730
44731  movs r0,r1,asr #16
44732  orrmi r12,r12,#1
44733  rsbmi r0,r0,#0 ;@ Make r0 positive
44734
44735;@ detect the nasty 0x80000000 / -1 situation
44736  mov r3,r2,asr #31
44737  eors r3,r3,r1,asr #16
44738  beq wrendofop81f9
44739
44740;@ Divide r2 by r0
44741  mov r3,#0
44742  mov r1,r0
44743
44744;@ Shift up divisor till it's just less than numerator
44745Shift81f9:
44746  cmp r1,r2,lsr #1
44747  movls r1,r1,lsl #1
44748  bcc Shift81f9
44749
44750Divide81f9:
44751  cmp r2,r1
44752  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
44753  subcs r2,r2,r1
44754  teq r1,r0
44755  movne r1,r1,lsr #1
44756  bne Divide81f9
44757
44758;@r3==quotient,r2==remainder
44759  and r1,r12,#1
44760  teq r1,r12,lsr #1
44761  rsbne r3,r3,#0 ;@ negate if quotient is negative
44762  tst r12,#2
44763  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
44764
44765  mov r1,r3,asl #16
44766  cmp r3,r1,asr #16 ;@ signed overflow?
44767  orrne r10,r10,#0x10000000 ;@ set overflow flag
44768  bne endofop81f9 ;@ overflow!
44769
44770wrendofop81f9:
44771  movs r1,r3,lsl #16 ;@ Clip to 16-bits
44772  and r10,r1,#0x80000000 ;@ r10=N_flag
44773  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44774  mov r1,r1,lsr #16
44775  orr r1,r1,r2,lsl #16 ;@ Insert remainder
44776
44777;@ EaWrite: r1 into register[r11]:
44778  str r1,[r7,r11,lsr #7]
44779
44780endofop81f9:
44781  ldr r5,[r7,#0x5c] ;@ Load Cycles
44782  ldrh r8,[r4],#2 ;@ Fetch next opcode
44783  subs r5,r5,#170 ;@ Subtract cycles
44784  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44785  b CycloneEnd
44786
44787divzero81f9:
44788  mov r0,#5 ;@ Divide by zero
44789  bl Exception
44790  ldr r5,[r7,#0x5c] ;@ Load Cycles
44791  ldrh r8,[r4],#2 ;@ Fetch next opcode
44792  subs r5,r5,#208 ;@ Subtract cycles
44793  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44794  b CycloneEnd
44795
44796
44797;@ ---------- [81fa] divs.w ($3333,pc), d0; =3335 uses Op81fa ----------
44798Op81fa:
44799  str r4,[r7,#0x50] ;@ Save prev PC + 2
44800  str r5,[r7,#0x5c] ;@ Save Cycles
44801
44802;@ EaCalc : Get '($3333,pc)' into r0:
44803  ldr r0,[r7,#0x60] ;@ Get Memory base
44804  sub r0,r4,r0 ;@ Real PC
44805  ldrsh r2,[r4],#2 ;@ Fetch extension
44806  add r0,r2,r0 ;@ ($nn,PC)
44807;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
44808  str r4,[r7,#0x40] ;@ Save PC
44809  bic r0,r0,#0xff000000
44810  bl m68k_fetch16 ;@ Call fetch16(r0) handler
44811
44812;@ EaCalc : Get register index into r11:
44813  and r11,r8,#0x0e00
44814;@ EaRead : Read register[r11] into r2:
44815  ldr r2,[r7,r11,lsr #7]
44816
44817  movs r1,r0,asl #16
44818  beq divzero81fa ;@ division by zero
44819
44820  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
44821  tst r2,r2
44822  orrmi r12,r12,#2
44823  rsbmi r2,r2,#0 ;@ Make r2 positive
44824
44825  movs r0,r1,asr #16
44826  orrmi r12,r12,#1
44827  rsbmi r0,r0,#0 ;@ Make r0 positive
44828
44829;@ detect the nasty 0x80000000 / -1 situation
44830  mov r3,r2,asr #31
44831  eors r3,r3,r1,asr #16
44832  beq wrendofop81fa
44833
44834;@ Divide r2 by r0
44835  mov r3,#0
44836  mov r1,r0
44837
44838;@ Shift up divisor till it's just less than numerator
44839Shift81fa:
44840  cmp r1,r2,lsr #1
44841  movls r1,r1,lsl #1
44842  bcc Shift81fa
44843
44844Divide81fa:
44845  cmp r2,r1
44846  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
44847  subcs r2,r2,r1
44848  teq r1,r0
44849  movne r1,r1,lsr #1
44850  bne Divide81fa
44851
44852;@r3==quotient,r2==remainder
44853  and r1,r12,#1
44854  teq r1,r12,lsr #1
44855  rsbne r3,r3,#0 ;@ negate if quotient is negative
44856  tst r12,#2
44857  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
44858
44859  mov r1,r3,asl #16
44860  cmp r3,r1,asr #16 ;@ signed overflow?
44861  orrne r10,r10,#0x10000000 ;@ set overflow flag
44862  bne endofop81fa ;@ overflow!
44863
44864wrendofop81fa:
44865  movs r1,r3,lsl #16 ;@ Clip to 16-bits
44866  and r10,r1,#0x80000000 ;@ r10=N_flag
44867  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44868  mov r1,r1,lsr #16
44869  orr r1,r1,r2,lsl #16 ;@ Insert remainder
44870
44871;@ EaWrite: r1 into register[r11]:
44872  str r1,[r7,r11,lsr #7]
44873
44874endofop81fa:
44875  ldr r5,[r7,#0x5c] ;@ Load Cycles
44876  ldrh r8,[r4],#2 ;@ Fetch next opcode
44877  subs r5,r5,#166 ;@ Subtract cycles
44878  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44879  b CycloneEnd
44880
44881divzero81fa:
44882  mov r0,#5 ;@ Divide by zero
44883  bl Exception
44884  ldr r5,[r7,#0x5c] ;@ Load Cycles
44885  ldrh r8,[r4],#2 ;@ Fetch next opcode
44886  subs r5,r5,#204 ;@ Subtract cycles
44887  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44888  b CycloneEnd
44889
44890
44891;@ ---------- [81fb] divs.w ($33,pc,d3.w*2), d0; =35 uses Op81fb ----------
44892Op81fb:
44893  str r4,[r7,#0x50] ;@ Save prev PC + 2
44894  str r5,[r7,#0x5c] ;@ Save Cycles
44895
44896;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
44897  ldr r0,[r7,#0x60] ;@ Get Memory base
44898  ldrh r3,[r4] ;@ Get extension word
44899  sub r0,r4,r0 ;@ r0=PC
44900  add r4,r4,#2
44901  mov r2,r3,lsr #10
44902  tst r3,#0x0800 ;@ Is Rn Word or Long
44903  and r2,r2,#0x3c ;@ r2=Index of Rn
44904  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
44905  ldrne   r2,[r7,r2] ;@ r2=Rn.l
44906  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
44907  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
44908  add r0,r2,r0 ;@ r0=Disp+PC+Rn
44909;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
44910  str r4,[r7,#0x40] ;@ Save PC
44911  bic r0,r0,#0xff000000
44912  bl m68k_fetch16 ;@ Call fetch16(r0) handler
44913
44914;@ EaCalc : Get register index into r11:
44915  and r11,r8,#0x0e00
44916;@ EaRead : Read register[r11] into r2:
44917  ldr r2,[r7,r11,lsr #7]
44918
44919  movs r1,r0,asl #16
44920  beq divzero81fb ;@ division by zero
44921
44922  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
44923  tst r2,r2
44924  orrmi r12,r12,#2
44925  rsbmi r2,r2,#0 ;@ Make r2 positive
44926
44927  movs r0,r1,asr #16
44928  orrmi r12,r12,#1
44929  rsbmi r0,r0,#0 ;@ Make r0 positive
44930
44931;@ detect the nasty 0x80000000 / -1 situation
44932  mov r3,r2,asr #31
44933  eors r3,r3,r1,asr #16
44934  beq wrendofop81fb
44935
44936;@ Divide r2 by r0
44937  mov r3,#0
44938  mov r1,r0
44939
44940;@ Shift up divisor till it's just less than numerator
44941Shift81fb:
44942  cmp r1,r2,lsr #1
44943  movls r1,r1,lsl #1
44944  bcc Shift81fb
44945
44946Divide81fb:
44947  cmp r2,r1
44948  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
44949  subcs r2,r2,r1
44950  teq r1,r0
44951  movne r1,r1,lsr #1
44952  bne Divide81fb
44953
44954;@r3==quotient,r2==remainder
44955  and r1,r12,#1
44956  teq r1,r12,lsr #1
44957  rsbne r3,r3,#0 ;@ negate if quotient is negative
44958  tst r12,#2
44959  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
44960
44961  mov r1,r3,asl #16
44962  cmp r3,r1,asr #16 ;@ signed overflow?
44963  orrne r10,r10,#0x10000000 ;@ set overflow flag
44964  bne endofop81fb ;@ overflow!
44965
44966wrendofop81fb:
44967  movs r1,r3,lsl #16 ;@ Clip to 16-bits
44968  and r10,r1,#0x80000000 ;@ r10=N_flag
44969  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44970  mov r1,r1,lsr #16
44971  orr r1,r1,r2,lsl #16 ;@ Insert remainder
44972
44973;@ EaWrite: r1 into register[r11]:
44974  str r1,[r7,r11,lsr #7]
44975
44976endofop81fb:
44977  ldr r5,[r7,#0x5c] ;@ Load Cycles
44978  ldrh r8,[r4],#2 ;@ Fetch next opcode
44979  subs r5,r5,#168 ;@ Subtract cycles
44980  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44981  b CycloneEnd
44982
44983divzero81fb:
44984  mov r0,#5 ;@ Divide by zero
44985  bl Exception
44986  ldr r5,[r7,#0x5c] ;@ Load Cycles
44987  ldrh r8,[r4],#2 ;@ Fetch next opcode
44988  subs r5,r5,#206 ;@ Subtract cycles
44989  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44990  b CycloneEnd
44991
44992
44993;@ ---------- [81fc] divs.w #$3333, d0 uses Op81fc ----------
44994Op81fc:
44995;@ EaCalc : Get '#$3333' into r0:
44996  ldrsh r0,[r4],#2 ;@ Fetch immediate value
44997;@ EaRead : Read '#$3333' (address in r0) into r0:
44998
44999;@ EaCalc : Get register index into r11:
45000  and r11,r8,#0x0e00
45001;@ EaRead : Read register[r11] into r2:
45002  ldr r2,[r7,r11,lsr #7]
45003
45004  movs r1,r0,asl #16
45005  beq divzero81fc ;@ division by zero
45006
45007  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
45008  tst r2,r2
45009  orrmi r12,r12,#2
45010  rsbmi r2,r2,#0 ;@ Make r2 positive
45011
45012  movs r0,r1,asr #16
45013  orrmi r12,r12,#1
45014  rsbmi r0,r0,#0 ;@ Make r0 positive
45015
45016;@ detect the nasty 0x80000000 / -1 situation
45017  mov r3,r2,asr #31
45018  eors r3,r3,r1,asr #16
45019  beq wrendofop81fc
45020
45021;@ Divide r2 by r0
45022  mov r3,#0
45023  mov r1,r0
45024
45025;@ Shift up divisor till it's just less than numerator
45026Shift81fc:
45027  cmp r1,r2,lsr #1
45028  movls r1,r1,lsl #1
45029  bcc Shift81fc
45030
45031Divide81fc:
45032  cmp r2,r1
45033  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
45034  subcs r2,r2,r1
45035  teq r1,r0
45036  movne r1,r1,lsr #1
45037  bne Divide81fc
45038
45039;@r3==quotient,r2==remainder
45040  and r1,r12,#1
45041  teq r1,r12,lsr #1
45042  rsbne r3,r3,#0 ;@ negate if quotient is negative
45043  tst r12,#2
45044  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
45045
45046  mov r1,r3,asl #16
45047  cmp r3,r1,asr #16 ;@ signed overflow?
45048  orrne r10,r10,#0x10000000 ;@ set overflow flag
45049  bne endofop81fc ;@ overflow!
45050
45051wrendofop81fc:
45052  movs r1,r3,lsl #16 ;@ Clip to 16-bits
45053  and r10,r1,#0x80000000 ;@ r10=N_flag
45054  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45055  mov r1,r1,lsr #16
45056  orr r1,r1,r2,lsl #16 ;@ Insert remainder
45057
45058;@ EaWrite: r1 into register[r11]:
45059  str r1,[r7,r11,lsr #7]
45060
45061endofop81fc:
45062  ldrh r8,[r4],#2 ;@ Fetch next opcode
45063  subs r5,r5,#162 ;@ Subtract cycles
45064  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45065  b CycloneEnd
45066
45067divzero81fc:
45068  mov r0,#5 ;@ Divide by zero
45069  bl Exception
45070  ldrh r8,[r4],#2 ;@ Fetch next opcode
45071  subs r5,r5,#200 ;@ Subtract cycles
45072  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45073  b CycloneEnd
45074
45075
45076;@ ---------- [8f08] sbcd -(a0), -(a7) uses Op8f08 ----------
45077Op8f08:
45078  str r4,[r7,#0x50] ;@ Save prev PC + 2
45079  str r5,[r7,#0x5c] ;@ Save Cycles
45080
45081;@ Get src/dest EA vals
45082;@ EaCalc : Get '-(a0)' into r0:
45083  and r2,r8,#0x000f
45084  ldr r0,[r7,r2,lsl #2]
45085  sub r0,r0,#1 ;@ Pre-decrement An
45086  str r0,[r7,r2,lsl #2]
45087;@ EaRead : Read '-(a0)' (address in r0) into r6:
45088  str r4,[r7,#0x40] ;@ Save PC
45089  bic r0,r0,#0xff000000
45090  bl m68k_read8 ;@ Call read8(r0) handler
45091  mov r6,r0,asl #24
45092
45093;@ EaCalc : Get '-(a7)' into r11:
45094  ldr r11,[r7,#0x3c] ;@ A7
45095  sub r11,r11,#2 ;@ Pre-decrement An
45096  str r11,[r7,#0x3c] ;@ A7
45097;@ EaRead : Read '-(a7)' (address in r11) into r0:
45098  bic r0,r11,#0xff000000
45099  bl m68k_read8 ;@ Call read8(r0) handler
45100
45101  mov r1,r0,asl #24
45102
45103  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
45104  ldr r0,[r7,#0x4c] ;@ Get X bit
45105  mov r3,#0x00f00000
45106  and r2,r3,r6,lsr #4
45107  tst r0,#0x20000000
45108  and r0,r3,r1,lsr #4
45109  sub r0,r0,r2
45110  subne r0,r0,#0x00100000
45111  cmp r0,#0x00900000
45112  subhi r0,r0,#0x00600000 ;@ Decimal adjust units
45113  mov r2,r1,lsr #28
45114  add r0,r0,r2,lsl #24
45115  mov r2,r6,lsr #28
45116  sub r0,r0,r2,lsl #24
45117  cmp r0,#0x09900000
45118  orrhi r10,r10,#0xa0000000 ;@ N and C
45119  addhi r0,r0,#0x0a000000
45120  movs r0,r0,lsl #4
45121  bicne r10,r10,#0x40000000 ;@ Z flag
45122  str r10,[r7,#0x4c] ;@ Save X bit
45123
45124;@ EaWrite: Write r0 into '-(a7)' (address in r11):
45125  mov r1,r0,lsr #24
45126  bic r0,r11,#0xff000000
45127  bl m68k_write8 ;@ Call write8(r0,r1) handler
45128
45129  ldr r6,[r7,#0x54]
45130  ldr r5,[r7,#0x5c] ;@ Load Cycles
45131  ldrh r8,[r4],#2 ;@ Fetch next opcode
45132  subs r5,r5,#18 ;@ Subtract cycles
45133  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45134  b CycloneEnd
45135
45136;@ ---------- [8f0f] sbcd -(a7), -(a7) uses Op8f0f ----------
45137Op8f0f:
45138  str r4,[r7,#0x50] ;@ Save prev PC + 2
45139  str r5,[r7,#0x5c] ;@ Save Cycles
45140
45141;@ Get src/dest EA vals
45142;@ EaCalc : Get '-(a7)' into r0:
45143  ldr r0,[r7,#0x3c] ;@ A7
45144  sub r0,r0,#2 ;@ Pre-decrement An
45145  str r0,[r7,#0x3c] ;@ A7
45146;@ EaRead : Read '-(a7)' (address in r0) into r6:
45147  str r4,[r7,#0x40] ;@ Save PC
45148  bic r0,r0,#0xff000000
45149  bl m68k_read8 ;@ Call read8(r0) handler
45150  mov r6,r0,asl #24
45151
45152;@ EaCalc : Get '-(a7)' into r11:
45153  ldr r11,[r7,#0x3c] ;@ A7
45154  sub r11,r11,#2 ;@ Pre-decrement An
45155  str r11,[r7,#0x3c] ;@ A7
45156;@ EaRead : Read '-(a7)' (address in r11) into r0:
45157  bic r0,r11,#0xff000000
45158  bl m68k_read8 ;@ Call read8(r0) handler
45159
45160  mov r1,r0,asl #24
45161
45162  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
45163  ldr r0,[r7,#0x4c] ;@ Get X bit
45164  mov r3,#0x00f00000
45165  and r2,r3,r6,lsr #4
45166  tst r0,#0x20000000
45167  and r0,r3,r1,lsr #4
45168  sub r0,r0,r2
45169  subne r0,r0,#0x00100000
45170  cmp r0,#0x00900000
45171  subhi r0,r0,#0x00600000 ;@ Decimal adjust units
45172  mov r2,r1,lsr #28
45173  add r0,r0,r2,lsl #24
45174  mov r2,r6,lsr #28
45175  sub r0,r0,r2,lsl #24
45176  cmp r0,#0x09900000
45177  orrhi r10,r10,#0xa0000000 ;@ N and C
45178  addhi r0,r0,#0x0a000000
45179  movs r0,r0,lsl #4
45180  bicne r10,r10,#0x40000000 ;@ Z flag
45181  str r10,[r7,#0x4c] ;@ Save X bit
45182
45183;@ EaWrite: Write r0 into '-(a7)' (address in r11):
45184  mov r1,r0,lsr #24
45185  bic r0,r11,#0xff000000
45186  bl m68k_write8 ;@ Call write8(r0,r1) handler
45187
45188  ldr r6,[r7,#0x54]
45189  ldr r5,[r7,#0x5c] ;@ Load Cycles
45190  ldrh r8,[r4],#2 ;@ Fetch next opcode
45191  subs r5,r5,#18 ;@ Subtract cycles
45192  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45193  b CycloneEnd
45194
45195;@ ---------- [9000] sub.b d0, d0 uses Op9000 ----------
45196Op9000:
45197;@ EaCalc : Get register index into r0:
45198  and r0,r8,#0x000f
45199;@ EaRead : Read register[r0] into r0:
45200  ldr r0,[r7,r0,lsl #2]
45201
45202;@ EaCalc : Get register index into r11:
45203  and r11,r8,#0x0e00
45204;@ EaRead : Read register[r11] into r1:
45205  ldr r1,[r7,r11,lsr #7]
45206
45207;@ Do arithmetic:
45208  mov r0,r0,asl #24
45209  rsbs r1,r0,r1,asl #24
45210  mrs r10,cpsr ;@ r10=flags
45211  eor r10,r10,#0x20000000 ;@ Invert carry
45212  str r10,[r7,#0x4c] ;@ Save X bit
45213
45214;@ Save result:
45215  mov r1,r1,asr #24
45216;@ EaWrite: r1 into register[r11]:
45217  strb r1,[r7,r11,lsr #7]
45218
45219  ldrh r8,[r4],#2 ;@ Fetch next opcode
45220  subs r5,r5,#4 ;@ Subtract cycles
45221  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45222  b CycloneEnd
45223
45224;@ ---------- [9010] sub.b (a0), d0 uses Op9010 ----------
45225Op9010:
45226  str r4,[r7,#0x50] ;@ Save prev PC + 2
45227  str r5,[r7,#0x5c] ;@ Save Cycles
45228
45229;@ EaCalc : Get '(a0)' into r0:
45230  and r2,r8,#0x000f
45231  orr r2,r2,#0x8 ;@ A0-7
45232  ldr r0,[r7,r2,lsl #2]
45233;@ EaRead : Read '(a0)' (address in r0) into r0:
45234  str r4,[r7,#0x40] ;@ Save PC
45235  bic r0,r0,#0xff000000
45236  bl m68k_read8 ;@ Call read8(r0) handler
45237
45238;@ EaCalc : Get register index into r11:
45239  and r11,r8,#0x0e00
45240;@ EaRead : Read register[r11] into r1:
45241  ldr r1,[r7,r11,lsr #7]
45242
45243;@ Do arithmetic:
45244  mov r0,r0,asl #24
45245  rsbs r1,r0,r1,asl #24
45246  mrs r10,cpsr ;@ r10=flags
45247  eor r10,r10,#0x20000000 ;@ Invert carry
45248  str r10,[r7,#0x4c] ;@ Save X bit
45249
45250;@ Save result:
45251  mov r1,r1,asr #24
45252;@ EaWrite: r1 into register[r11]:
45253  strb r1,[r7,r11,lsr #7]
45254
45255  ldr r5,[r7,#0x5c] ;@ Load Cycles
45256  ldrh r8,[r4],#2 ;@ Fetch next opcode
45257  subs r5,r5,#8 ;@ Subtract cycles
45258  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45259  b CycloneEnd
45260
45261;@ ---------- [9018] sub.b (a0)+, d0 uses Op9018 ----------
45262Op9018:
45263  str r4,[r7,#0x50] ;@ Save prev PC + 2
45264  str r5,[r7,#0x5c] ;@ Save Cycles
45265
45266;@ EaCalc : Get '(a0)+' into r0:
45267  and r2,r8,#0x000f
45268  ldr r0,[r7,r2,lsl #2]
45269  add r3,r0,#1 ;@ Post-increment An
45270  str r3,[r7,r2,lsl #2]
45271;@ EaRead : Read '(a0)+' (address in r0) into r0:
45272  str r4,[r7,#0x40] ;@ Save PC
45273  bic r0,r0,#0xff000000
45274  bl m68k_read8 ;@ Call read8(r0) handler
45275
45276;@ EaCalc : Get register index into r11:
45277  and r11,r8,#0x0e00
45278;@ EaRead : Read register[r11] into r1:
45279  ldr r1,[r7,r11,lsr #7]
45280
45281;@ Do arithmetic:
45282  mov r0,r0,asl #24
45283  rsbs r1,r0,r1,asl #24
45284  mrs r10,cpsr ;@ r10=flags
45285  eor r10,r10,#0x20000000 ;@ Invert carry
45286  str r10,[r7,#0x4c] ;@ Save X bit
45287
45288;@ Save result:
45289  mov r1,r1,asr #24
45290;@ EaWrite: r1 into register[r11]:
45291  strb r1,[r7,r11,lsr #7]
45292
45293  ldr r5,[r7,#0x5c] ;@ Load Cycles
45294  ldrh r8,[r4],#2 ;@ Fetch next opcode
45295  subs r5,r5,#8 ;@ Subtract cycles
45296  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45297  b CycloneEnd
45298
45299;@ ---------- [901f] sub.b (a7)+, d0 uses Op901f ----------
45300Op901f:
45301  str r4,[r7,#0x50] ;@ Save prev PC + 2
45302  str r5,[r7,#0x5c] ;@ Save Cycles
45303
45304;@ EaCalc : Get '(a7)+' into r0:
45305  ldr r0,[r7,#0x3c] ;@ A7
45306  add r3,r0,#2 ;@ Post-increment An
45307  str r3,[r7,#0x3c] ;@ A7
45308;@ EaRead : Read '(a7)+' (address in r0) into r0:
45309  str r4,[r7,#0x40] ;@ Save PC
45310  bic r0,r0,#0xff000000
45311  bl m68k_read8 ;@ Call read8(r0) handler
45312
45313;@ EaCalc : Get register index into r11:
45314  and r11,r8,#0x0e00
45315;@ EaRead : Read register[r11] into r1:
45316  ldr r1,[r7,r11,lsr #7]
45317
45318;@ Do arithmetic:
45319  mov r0,r0,asl #24
45320  rsbs r1,r0,r1,asl #24
45321  mrs r10,cpsr ;@ r10=flags
45322  eor r10,r10,#0x20000000 ;@ Invert carry
45323  str r10,[r7,#0x4c] ;@ Save X bit
45324
45325;@ Save result:
45326  mov r1,r1,asr #24
45327;@ EaWrite: r1 into register[r11]:
45328  strb r1,[r7,r11,lsr #7]
45329
45330  ldr r5,[r7,#0x5c] ;@ Load Cycles
45331  ldrh r8,[r4],#2 ;@ Fetch next opcode
45332  subs r5,r5,#8 ;@ Subtract cycles
45333  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45334  b CycloneEnd
45335
45336;@ ---------- [9020] sub.b -(a0), d0 uses Op9020 ----------
45337Op9020:
45338  str r4,[r7,#0x50] ;@ Save prev PC + 2
45339  str r5,[r7,#0x5c] ;@ Save Cycles
45340
45341;@ EaCalc : Get '-(a0)' into r0:
45342  and r2,r8,#0x000f
45343  orr r2,r2,#0x8 ;@ A0-7
45344  ldr r0,[r7,r2,lsl #2]
45345  sub r0,r0,#1 ;@ Pre-decrement An
45346  str r0,[r7,r2,lsl #2]
45347;@ EaRead : Read '-(a0)' (address in r0) into r0:
45348  str r4,[r7,#0x40] ;@ Save PC
45349  bic r0,r0,#0xff000000
45350  bl m68k_read8 ;@ Call read8(r0) handler
45351
45352;@ EaCalc : Get register index into r11:
45353  and r11,r8,#0x0e00
45354;@ EaRead : Read register[r11] into r1:
45355  ldr r1,[r7,r11,lsr #7]
45356
45357;@ Do arithmetic:
45358  mov r0,r0,asl #24
45359  rsbs r1,r0,r1,asl #24
45360  mrs r10,cpsr ;@ r10=flags
45361  eor r10,r10,#0x20000000 ;@ Invert carry
45362  str r10,[r7,#0x4c] ;@ Save X bit
45363
45364;@ Save result:
45365  mov r1,r1,asr #24
45366;@ EaWrite: r1 into register[r11]:
45367  strb r1,[r7,r11,lsr #7]
45368
45369  ldr r5,[r7,#0x5c] ;@ Load Cycles
45370  ldrh r8,[r4],#2 ;@ Fetch next opcode
45371  subs r5,r5,#10 ;@ Subtract cycles
45372  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45373  b CycloneEnd
45374
45375;@ ---------- [9027] sub.b -(a7), d0 uses Op9027 ----------
45376Op9027:
45377  str r4,[r7,#0x50] ;@ Save prev PC + 2
45378  str r5,[r7,#0x5c] ;@ Save Cycles
45379
45380;@ EaCalc : Get '-(a7)' into r0:
45381  ldr r0,[r7,#0x3c] ;@ A7
45382  sub r0,r0,#2 ;@ Pre-decrement An
45383  str r0,[r7,#0x3c] ;@ A7
45384;@ EaRead : Read '-(a7)' (address in r0) into r0:
45385  str r4,[r7,#0x40] ;@ Save PC
45386  bic r0,r0,#0xff000000
45387  bl m68k_read8 ;@ Call read8(r0) handler
45388
45389;@ EaCalc : Get register index into r11:
45390  and r11,r8,#0x0e00
45391;@ EaRead : Read register[r11] into r1:
45392  ldr r1,[r7,r11,lsr #7]
45393
45394;@ Do arithmetic:
45395  mov r0,r0,asl #24
45396  rsbs r1,r0,r1,asl #24
45397  mrs r10,cpsr ;@ r10=flags
45398  eor r10,r10,#0x20000000 ;@ Invert carry
45399  str r10,[r7,#0x4c] ;@ Save X bit
45400
45401;@ Save result:
45402  mov r1,r1,asr #24
45403;@ EaWrite: r1 into register[r11]:
45404  strb r1,[r7,r11,lsr #7]
45405
45406  ldr r5,[r7,#0x5c] ;@ Load Cycles
45407  ldrh r8,[r4],#2 ;@ Fetch next opcode
45408  subs r5,r5,#10 ;@ Subtract cycles
45409  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45410  b CycloneEnd
45411
45412;@ ---------- [9028] sub.b ($3333,a0), d0 uses Op9028 ----------
45413Op9028:
45414  str r4,[r7,#0x50] ;@ Save prev PC + 2
45415  str r5,[r7,#0x5c] ;@ Save Cycles
45416
45417;@ EaCalc : Get '($3333,a0)' into r0:
45418  ldrsh r0,[r4],#2 ;@ Fetch offset
45419  and r2,r8,#0x000f
45420  ldr r2,[r7,r2,lsl #2]
45421  add r0,r0,r2 ;@ Add on offset
45422;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
45423  str r4,[r7,#0x40] ;@ Save PC
45424  bic r0,r0,#0xff000000
45425  bl m68k_read8 ;@ Call read8(r0) handler
45426
45427;@ EaCalc : Get register index into r11:
45428  and r11,r8,#0x0e00
45429;@ EaRead : Read register[r11] into r1:
45430  ldr r1,[r7,r11,lsr #7]
45431
45432;@ Do arithmetic:
45433  mov r0,r0,asl #24
45434  rsbs r1,r0,r1,asl #24
45435  mrs r10,cpsr ;@ r10=flags
45436  eor r10,r10,#0x20000000 ;@ Invert carry
45437  str r10,[r7,#0x4c] ;@ Save X bit
45438
45439;@ Save result:
45440  mov r1,r1,asr #24
45441;@ EaWrite: r1 into register[r11]:
45442  strb r1,[r7,r11,lsr #7]
45443
45444  ldr r5,[r7,#0x5c] ;@ Load Cycles
45445  ldrh r8,[r4],#2 ;@ Fetch next opcode
45446  subs r5,r5,#12 ;@ Subtract cycles
45447  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45448  b CycloneEnd
45449
45450;@ ---------- [9030] sub.b ($33,a0,d3.w*2), d0 uses Op9030 ----------
45451Op9030:
45452  str r4,[r7,#0x50] ;@ Save prev PC + 2
45453  str r5,[r7,#0x5c] ;@ Save Cycles
45454
45455;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
45456;@ Get extension word into r3:
45457  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
45458  mov r2,r3,lsr #10
45459  tst r3,#0x0800 ;@ Is Rn Word or Long
45460  and r2,r2,#0x3c ;@ r2=Index of Rn
45461  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
45462  ldrne   r2,[r7,r2] ;@ r2=Rn.l
45463  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
45464  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
45465  and r2,r8,#0x000f
45466  orr r2,r2,#0x8 ;@ A0-7
45467  ldr r2,[r7,r2,lsl #2]
45468  add r0,r2,r3 ;@ r0=Disp+An+Rn
45469;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
45470  str r4,[r7,#0x40] ;@ Save PC
45471  bic r0,r0,#0xff000000
45472  bl m68k_read8 ;@ Call read8(r0) handler
45473
45474;@ EaCalc : Get register index into r11:
45475  and r11,r8,#0x0e00
45476;@ EaRead : Read register[r11] into r1:
45477  ldr r1,[r7,r11,lsr #7]
45478
45479;@ Do arithmetic:
45480  mov r0,r0,asl #24
45481  rsbs r1,r0,r1,asl #24
45482  mrs r10,cpsr ;@ r10=flags
45483  eor r10,r10,#0x20000000 ;@ Invert carry
45484  str r10,[r7,#0x4c] ;@ Save X bit
45485
45486;@ Save result:
45487  mov r1,r1,asr #24
45488;@ EaWrite: r1 into register[r11]:
45489  strb r1,[r7,r11,lsr #7]
45490
45491  ldr r5,[r7,#0x5c] ;@ Load Cycles
45492  ldrh r8,[r4],#2 ;@ Fetch next opcode
45493  subs r5,r5,#14 ;@ Subtract cycles
45494  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45495  b CycloneEnd
45496
45497;@ ---------- [9038] sub.b $3333.w, d0 uses Op9038 ----------
45498Op9038:
45499  str r4,[r7,#0x50] ;@ Save prev PC + 2
45500  str r5,[r7,#0x5c] ;@ Save Cycles
45501
45502;@ EaCalc : Get '$3333.w' into r0:
45503  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
45504;@ EaRead : Read '$3333.w' (address in r0) into r0:
45505  str r4,[r7,#0x40] ;@ Save PC
45506  bic r0,r0,#0xff000000
45507  bl m68k_read8 ;@ Call read8(r0) handler
45508
45509;@ EaCalc : Get register index into r11:
45510  and r11,r8,#0x0e00
45511;@ EaRead : Read register[r11] into r1:
45512  ldr r1,[r7,r11,lsr #7]
45513
45514;@ Do arithmetic:
45515  mov r0,r0,asl #24
45516  rsbs r1,r0,r1,asl #24
45517  mrs r10,cpsr ;@ r10=flags
45518  eor r10,r10,#0x20000000 ;@ Invert carry
45519  str r10,[r7,#0x4c] ;@ Save X bit
45520
45521;@ Save result:
45522  mov r1,r1,asr #24
45523;@ EaWrite: r1 into register[r11]:
45524  strb r1,[r7,r11,lsr #7]
45525
45526  ldr r5,[r7,#0x5c] ;@ Load Cycles
45527  ldrh r8,[r4],#2 ;@ Fetch next opcode
45528  subs r5,r5,#12 ;@ Subtract cycles
45529  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45530  b CycloneEnd
45531
45532;@ ---------- [9039] sub.b $33333333.l, d0 uses Op9039 ----------
45533Op9039:
45534  str r4,[r7,#0x50] ;@ Save prev PC + 2
45535  str r5,[r7,#0x5c] ;@ Save Cycles
45536
45537;@ EaCalc : Get '$33333333.l' into r0:
45538  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
45539  ldrh r0,[r4],#2
45540  orr r0,r0,r2,lsl #16
45541;@ EaRead : Read '$33333333.l' (address in r0) into r0:
45542  str r4,[r7,#0x40] ;@ Save PC
45543  bic r0,r0,#0xff000000
45544  bl m68k_read8 ;@ Call read8(r0) handler
45545
45546;@ EaCalc : Get register index into r11:
45547  and r11,r8,#0x0e00
45548;@ EaRead : Read register[r11] into r1:
45549  ldr r1,[r7,r11,lsr #7]
45550
45551;@ Do arithmetic:
45552  mov r0,r0,asl #24
45553  rsbs r1,r0,r1,asl #24
45554  mrs r10,cpsr ;@ r10=flags
45555  eor r10,r10,#0x20000000 ;@ Invert carry
45556  str r10,[r7,#0x4c] ;@ Save X bit
45557
45558;@ Save result:
45559  mov r1,r1,asr #24
45560;@ EaWrite: r1 into register[r11]:
45561  strb r1,[r7,r11,lsr #7]
45562
45563  ldr r5,[r7,#0x5c] ;@ Load Cycles
45564  ldrh r8,[r4],#2 ;@ Fetch next opcode
45565  subs r5,r5,#16 ;@ Subtract cycles
45566  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45567  b CycloneEnd
45568
45569;@ ---------- [903a] sub.b ($3333,pc), d0; =3335 uses Op903a ----------
45570Op903a:
45571  str r4,[r7,#0x50] ;@ Save prev PC + 2
45572  str r5,[r7,#0x5c] ;@ Save Cycles
45573
45574;@ EaCalc : Get '($3333,pc)' into r0:
45575  ldr r0,[r7,#0x60] ;@ Get Memory base
45576  sub r0,r4,r0 ;@ Real PC
45577  ldrsh r2,[r4],#2 ;@ Fetch extension
45578  add r0,r2,r0 ;@ ($nn,PC)
45579;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
45580  str r4,[r7,#0x40] ;@ Save PC
45581  bic r0,r0,#0xff000000
45582  bl m68k_fetch8 ;@ Call fetch8(r0) handler
45583
45584;@ EaCalc : Get register index into r11:
45585  and r11,r8,#0x0e00
45586;@ EaRead : Read register[r11] into r1:
45587  ldr r1,[r7,r11,lsr #7]
45588
45589;@ Do arithmetic:
45590  mov r0,r0,asl #24
45591  rsbs r1,r0,r1,asl #24
45592  mrs r10,cpsr ;@ r10=flags
45593  eor r10,r10,#0x20000000 ;@ Invert carry
45594  str r10,[r7,#0x4c] ;@ Save X bit
45595
45596;@ Save result:
45597  mov r1,r1,asr #24
45598;@ EaWrite: r1 into register[r11]:
45599  strb r1,[r7,r11,lsr #7]
45600
45601  ldr r5,[r7,#0x5c] ;@ Load Cycles
45602  ldrh r8,[r4],#2 ;@ Fetch next opcode
45603  subs r5,r5,#12 ;@ Subtract cycles
45604  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45605  b CycloneEnd
45606
45607;@ ---------- [903b] sub.b ($33,pc,d3.w*2), d0; =35 uses Op903b ----------
45608Op903b:
45609  str r4,[r7,#0x50] ;@ Save prev PC + 2
45610  str r5,[r7,#0x5c] ;@ Save Cycles
45611
45612;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
45613  ldr r0,[r7,#0x60] ;@ Get Memory base
45614  ldrh r3,[r4] ;@ Get extension word
45615  sub r0,r4,r0 ;@ r0=PC
45616  add r4,r4,#2
45617  mov r2,r3,lsr #10
45618  tst r3,#0x0800 ;@ Is Rn Word or Long
45619  and r2,r2,#0x3c ;@ r2=Index of Rn
45620  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
45621  ldrne   r2,[r7,r2] ;@ r2=Rn.l
45622  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
45623  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
45624  add r0,r2,r0 ;@ r0=Disp+PC+Rn
45625;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
45626  str r4,[r7,#0x40] ;@ Save PC
45627  bic r0,r0,#0xff000000
45628  bl m68k_fetch8 ;@ Call fetch8(r0) handler
45629
45630;@ EaCalc : Get register index into r11:
45631  and r11,r8,#0x0e00
45632;@ EaRead : Read register[r11] into r1:
45633  ldr r1,[r7,r11,lsr #7]
45634
45635;@ Do arithmetic:
45636  mov r0,r0,asl #24
45637  rsbs r1,r0,r1,asl #24
45638  mrs r10,cpsr ;@ r10=flags
45639  eor r10,r10,#0x20000000 ;@ Invert carry
45640  str r10,[r7,#0x4c] ;@ Save X bit
45641
45642;@ Save result:
45643  mov r1,r1,asr #24
45644;@ EaWrite: r1 into register[r11]:
45645  strb r1,[r7,r11,lsr #7]
45646
45647  ldr r5,[r7,#0x5c] ;@ Load Cycles
45648  ldrh r8,[r4],#2 ;@ Fetch next opcode
45649  subs r5,r5,#14 ;@ Subtract cycles
45650  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45651  b CycloneEnd
45652
45653;@ ---------- [903c] sub.b #$33, d0 uses Op903c ----------
45654Op903c:
45655;@ EaCalc : Get '#$33' into r0:
45656  ldrsb r0,[r4],#2 ;@ Fetch immediate value
45657;@ EaRead : Read '#$33' (address in r0) into r0:
45658
45659;@ EaCalc : Get register index into r11:
45660  and r11,r8,#0x0e00
45661;@ EaRead : Read register[r11] into r1:
45662  ldr r1,[r7,r11,lsr #7]
45663
45664;@ Do arithmetic:
45665  mov r0,r0,asl #24
45666  rsbs r1,r0,r1,asl #24
45667  mrs r10,cpsr ;@ r10=flags
45668  eor r10,r10,#0x20000000 ;@ Invert carry
45669  str r10,[r7,#0x4c] ;@ Save X bit
45670
45671;@ Save result:
45672  mov r1,r1,asr #24
45673;@ EaWrite: r1 into register[r11]:
45674  strb r1,[r7,r11,lsr #7]
45675
45676  ldrh r8,[r4],#2 ;@ Fetch next opcode
45677  subs r5,r5,#8 ;@ Subtract cycles
45678  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45679  b CycloneEnd
45680
45681;@ ---------- [9040] sub.w d0, d0 uses Op9040 ----------
45682Op9040:
45683;@ EaCalc : Get register index into r0:
45684  and r0,r8,#0x000f
45685;@ EaRead : Read register[r0] into r0:
45686  ldr r0,[r7,r0,lsl #2]
45687
45688;@ EaCalc : Get register index into r11:
45689  and r11,r8,#0x0e00
45690  mov r11,r11,lsr #7
45691;@ EaRead : Read register[r11] into r1:
45692  ldr r1,[r7,r11]
45693
45694;@ Do arithmetic:
45695  mov r0,r0,asl #16
45696  rsbs r1,r0,r1,asl #16
45697  mrs r10,cpsr ;@ r10=flags
45698  eor r10,r10,#0x20000000 ;@ Invert carry
45699  str r10,[r7,#0x4c] ;@ Save X bit
45700
45701;@ Save result:
45702  mov r1,r1,asr #16
45703;@ EaWrite: r1 into register[r11]:
45704  strh r1,[r7,r11]
45705
45706  ldrh r8,[r4],#2 ;@ Fetch next opcode
45707  subs r5,r5,#4 ;@ Subtract cycles
45708  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45709  b CycloneEnd
45710
45711;@ ---------- [9050] sub.w (a0), d0 uses Op9050 ----------
45712Op9050:
45713  str r4,[r7,#0x50] ;@ Save prev PC + 2
45714  str r5,[r7,#0x5c] ;@ Save Cycles
45715
45716;@ EaCalc : Get '(a0)' into r0:
45717  and r2,r8,#0x000f
45718  orr r2,r2,#0x8 ;@ A0-7
45719  ldr r0,[r7,r2,lsl #2]
45720;@ EaRead : Read '(a0)' (address in r0) into r0:
45721  str r4,[r7,#0x40] ;@ Save PC
45722  bic r0,r0,#0xff000000
45723  bl m68k_read16 ;@ Call read16(r0) handler
45724
45725;@ EaCalc : Get register index into r11:
45726  and r11,r8,#0x0e00
45727  mov r11,r11,lsr #7
45728;@ EaRead : Read register[r11] into r1:
45729  ldr r1,[r7,r11]
45730
45731;@ Do arithmetic:
45732  mov r0,r0,asl #16
45733  rsbs r1,r0,r1,asl #16
45734  mrs r10,cpsr ;@ r10=flags
45735  eor r10,r10,#0x20000000 ;@ Invert carry
45736  str r10,[r7,#0x4c] ;@ Save X bit
45737
45738;@ Save result:
45739  mov r1,r1,asr #16
45740;@ EaWrite: r1 into register[r11]:
45741  strh r1,[r7,r11]
45742
45743  ldr r5,[r7,#0x5c] ;@ Load Cycles
45744  ldrh r8,[r4],#2 ;@ Fetch next opcode
45745  subs r5,r5,#8 ;@ Subtract cycles
45746  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45747  b CycloneEnd
45748
45749;@ ---------- [9058] sub.w (a0)+, d0 uses Op9058 ----------
45750Op9058:
45751  str r4,[r7,#0x50] ;@ Save prev PC + 2
45752  str r5,[r7,#0x5c] ;@ Save Cycles
45753
45754;@ EaCalc : Get '(a0)+' into r0:
45755  and r2,r8,#0x000f
45756  ldr r0,[r7,r2,lsl #2]
45757  add r3,r0,#2 ;@ Post-increment An
45758  str r3,[r7,r2,lsl #2]
45759;@ EaRead : Read '(a0)+' (address in r0) into r0:
45760  str r4,[r7,#0x40] ;@ Save PC
45761  bic r0,r0,#0xff000000
45762  bl m68k_read16 ;@ Call read16(r0) handler
45763
45764;@ EaCalc : Get register index into r11:
45765  and r11,r8,#0x0e00
45766  mov r11,r11,lsr #7
45767;@ EaRead : Read register[r11] into r1:
45768  ldr r1,[r7,r11]
45769
45770;@ Do arithmetic:
45771  mov r0,r0,asl #16
45772  rsbs r1,r0,r1,asl #16
45773  mrs r10,cpsr ;@ r10=flags
45774  eor r10,r10,#0x20000000 ;@ Invert carry
45775  str r10,[r7,#0x4c] ;@ Save X bit
45776
45777;@ Save result:
45778  mov r1,r1,asr #16
45779;@ EaWrite: r1 into register[r11]:
45780  strh r1,[r7,r11]
45781
45782  ldr r5,[r7,#0x5c] ;@ Load Cycles
45783  ldrh r8,[r4],#2 ;@ Fetch next opcode
45784  subs r5,r5,#8 ;@ Subtract cycles
45785  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45786  b CycloneEnd
45787
45788;@ ---------- [9060] sub.w -(a0), d0 uses Op9060 ----------
45789Op9060:
45790  str r4,[r7,#0x50] ;@ Save prev PC + 2
45791  str r5,[r7,#0x5c] ;@ Save Cycles
45792
45793;@ EaCalc : Get '-(a0)' into r0:
45794  and r2,r8,#0x000f
45795  orr r2,r2,#0x8 ;@ A0-7
45796  ldr r0,[r7,r2,lsl #2]
45797  sub r0,r0,#2 ;@ Pre-decrement An
45798  str r0,[r7,r2,lsl #2]
45799;@ EaRead : Read '-(a0)' (address in r0) into r0:
45800  str r4,[r7,#0x40] ;@ Save PC
45801  bic r0,r0,#0xff000000
45802  bl m68k_read16 ;@ Call read16(r0) handler
45803
45804;@ EaCalc : Get register index into r11:
45805  and r11,r8,#0x0e00
45806  mov r11,r11,lsr #7
45807;@ EaRead : Read register[r11] into r1:
45808  ldr r1,[r7,r11]
45809
45810;@ Do arithmetic:
45811  mov r0,r0,asl #16
45812  rsbs r1,r0,r1,asl #16
45813  mrs r10,cpsr ;@ r10=flags
45814  eor r10,r10,#0x20000000 ;@ Invert carry
45815  str r10,[r7,#0x4c] ;@ Save X bit
45816
45817;@ Save result:
45818  mov r1,r1,asr #16
45819;@ EaWrite: r1 into register[r11]:
45820  strh r1,[r7,r11]
45821
45822  ldr r5,[r7,#0x5c] ;@ Load Cycles
45823  ldrh r8,[r4],#2 ;@ Fetch next opcode
45824  subs r5,r5,#10 ;@ Subtract cycles
45825  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45826  b CycloneEnd
45827
45828;@ ---------- [9068] sub.w ($3333,a0), d0 uses Op9068 ----------
45829Op9068:
45830  str r4,[r7,#0x50] ;@ Save prev PC + 2
45831  str r5,[r7,#0x5c] ;@ Save Cycles
45832
45833;@ EaCalc : Get '($3333,a0)' into r0:
45834  ldrsh r0,[r4],#2 ;@ Fetch offset
45835  and r2,r8,#0x000f
45836  ldr r2,[r7,r2,lsl #2]
45837  add r0,r0,r2 ;@ Add on offset
45838;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
45839  str r4,[r7,#0x40] ;@ Save PC
45840  bic r0,r0,#0xff000000
45841  bl m68k_read16 ;@ Call read16(r0) handler
45842
45843;@ EaCalc : Get register index into r11:
45844  and r11,r8,#0x0e00
45845  mov r11,r11,lsr #7
45846;@ EaRead : Read register[r11] into r1:
45847  ldr r1,[r7,r11]
45848
45849;@ Do arithmetic:
45850  mov r0,r0,asl #16
45851  rsbs r1,r0,r1,asl #16
45852  mrs r10,cpsr ;@ r10=flags
45853  eor r10,r10,#0x20000000 ;@ Invert carry
45854  str r10,[r7,#0x4c] ;@ Save X bit
45855
45856;@ Save result:
45857  mov r1,r1,asr #16
45858;@ EaWrite: r1 into register[r11]:
45859  strh r1,[r7,r11]
45860
45861  ldr r5,[r7,#0x5c] ;@ Load Cycles
45862  ldrh r8,[r4],#2 ;@ Fetch next opcode
45863  subs r5,r5,#12 ;@ Subtract cycles
45864  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45865  b CycloneEnd
45866
45867;@ ---------- [9070] sub.w ($33,a0,d3.w*2), d0 uses Op9070 ----------
45868Op9070:
45869  str r4,[r7,#0x50] ;@ Save prev PC + 2
45870  str r5,[r7,#0x5c] ;@ Save Cycles
45871
45872;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
45873;@ Get extension word into r3:
45874  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
45875  mov r2,r3,lsr #10
45876  tst r3,#0x0800 ;@ Is Rn Word or Long
45877  and r2,r2,#0x3c ;@ r2=Index of Rn
45878  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
45879  ldrne   r2,[r7,r2] ;@ r2=Rn.l
45880  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
45881  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
45882  and r2,r8,#0x000f
45883  orr r2,r2,#0x8 ;@ A0-7
45884  ldr r2,[r7,r2,lsl #2]
45885  add r0,r2,r3 ;@ r0=Disp+An+Rn
45886;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
45887  str r4,[r7,#0x40] ;@ Save PC
45888  bic r0,r0,#0xff000000
45889  bl m68k_read16 ;@ Call read16(r0) handler
45890
45891;@ EaCalc : Get register index into r11:
45892  and r11,r8,#0x0e00
45893  mov r11,r11,lsr #7
45894;@ EaRead : Read register[r11] into r1:
45895  ldr r1,[r7,r11]
45896
45897;@ Do arithmetic:
45898  mov r0,r0,asl #16
45899  rsbs r1,r0,r1,asl #16
45900  mrs r10,cpsr ;@ r10=flags
45901  eor r10,r10,#0x20000000 ;@ Invert carry
45902  str r10,[r7,#0x4c] ;@ Save X bit
45903
45904;@ Save result:
45905  mov r1,r1,asr #16
45906;@ EaWrite: r1 into register[r11]:
45907  strh r1,[r7,r11]
45908
45909  ldr r5,[r7,#0x5c] ;@ Load Cycles
45910  ldrh r8,[r4],#2 ;@ Fetch next opcode
45911  subs r5,r5,#14 ;@ Subtract cycles
45912  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45913  b CycloneEnd
45914
45915;@ ---------- [9078] sub.w $3333.w, d0 uses Op9078 ----------
45916Op9078:
45917  str r4,[r7,#0x50] ;@ Save prev PC + 2
45918  str r5,[r7,#0x5c] ;@ Save Cycles
45919
45920;@ EaCalc : Get '$3333.w' into r0:
45921  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
45922;@ EaRead : Read '$3333.w' (address in r0) into r0:
45923  str r4,[r7,#0x40] ;@ Save PC
45924  bic r0,r0,#0xff000000
45925  bl m68k_read16 ;@ Call read16(r0) handler
45926
45927;@ EaCalc : Get register index into r11:
45928  and r11,r8,#0x0e00
45929  mov r11,r11,lsr #7
45930;@ EaRead : Read register[r11] into r1:
45931  ldr r1,[r7,r11]
45932
45933;@ Do arithmetic:
45934  mov r0,r0,asl #16
45935  rsbs r1,r0,r1,asl #16
45936  mrs r10,cpsr ;@ r10=flags
45937  eor r10,r10,#0x20000000 ;@ Invert carry
45938  str r10,[r7,#0x4c] ;@ Save X bit
45939
45940;@ Save result:
45941  mov r1,r1,asr #16
45942;@ EaWrite: r1 into register[r11]:
45943  strh r1,[r7,r11]
45944
45945  ldr r5,[r7,#0x5c] ;@ Load Cycles
45946  ldrh r8,[r4],#2 ;@ Fetch next opcode
45947  subs r5,r5,#12 ;@ Subtract cycles
45948  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45949  b CycloneEnd
45950
45951;@ ---------- [9079] sub.w $33333333.l, d0 uses Op9079 ----------
45952Op9079:
45953  str r4,[r7,#0x50] ;@ Save prev PC + 2
45954  str r5,[r7,#0x5c] ;@ Save Cycles
45955
45956;@ EaCalc : Get '$33333333.l' into r0:
45957  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
45958  ldrh r0,[r4],#2
45959  orr r0,r0,r2,lsl #16
45960;@ EaRead : Read '$33333333.l' (address in r0) into r0:
45961  str r4,[r7,#0x40] ;@ Save PC
45962  bic r0,r0,#0xff000000
45963  bl m68k_read16 ;@ Call read16(r0) handler
45964
45965;@ EaCalc : Get register index into r11:
45966  and r11,r8,#0x0e00
45967  mov r11,r11,lsr #7
45968;@ EaRead : Read register[r11] into r1:
45969  ldr r1,[r7,r11]
45970
45971;@ Do arithmetic:
45972  mov r0,r0,asl #16
45973  rsbs r1,r0,r1,asl #16
45974  mrs r10,cpsr ;@ r10=flags
45975  eor r10,r10,#0x20000000 ;@ Invert carry
45976  str r10,[r7,#0x4c] ;@ Save X bit
45977
45978;@ Save result:
45979  mov r1,r1,asr #16
45980;@ EaWrite: r1 into register[r11]:
45981  strh r1,[r7,r11]
45982
45983  ldr r5,[r7,#0x5c] ;@ Load Cycles
45984  ldrh r8,[r4],#2 ;@ Fetch next opcode
45985  subs r5,r5,#16 ;@ Subtract cycles
45986  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45987  b CycloneEnd
45988
45989;@ ---------- [907a] sub.w ($3333,pc), d0; =3335 uses Op907a ----------
45990Op907a:
45991  str r4,[r7,#0x50] ;@ Save prev PC + 2
45992  str r5,[r7,#0x5c] ;@ Save Cycles
45993
45994;@ EaCalc : Get '($3333,pc)' into r0:
45995  ldr r0,[r7,#0x60] ;@ Get Memory base
45996  sub r0,r4,r0 ;@ Real PC
45997  ldrsh r2,[r4],#2 ;@ Fetch extension
45998  add r0,r2,r0 ;@ ($nn,PC)
45999;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
46000  str r4,[r7,#0x40] ;@ Save PC
46001  bic r0,r0,#0xff000000
46002  bl m68k_fetch16 ;@ Call fetch16(r0) handler
46003
46004;@ EaCalc : Get register index into r11:
46005  and r11,r8,#0x0e00
46006  mov r11,r11,lsr #7
46007;@ EaRead : Read register[r11] into r1:
46008  ldr r1,[r7,r11]
46009
46010;@ Do arithmetic:
46011  mov r0,r0,asl #16
46012  rsbs r1,r0,r1,asl #16
46013  mrs r10,cpsr ;@ r10=flags
46014  eor r10,r10,#0x20000000 ;@ Invert carry
46015  str r10,[r7,#0x4c] ;@ Save X bit
46016
46017;@ Save result:
46018  mov r1,r1,asr #16
46019;@ EaWrite: r1 into register[r11]:
46020  strh r1,[r7,r11]
46021
46022  ldr r5,[r7,#0x5c] ;@ Load Cycles
46023  ldrh r8,[r4],#2 ;@ Fetch next opcode
46024  subs r5,r5,#12 ;@ Subtract cycles
46025  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46026  b CycloneEnd
46027
46028;@ ---------- [907b] sub.w ($33,pc,d3.w*2), d0; =35 uses Op907b ----------
46029Op907b:
46030  str r4,[r7,#0x50] ;@ Save prev PC + 2
46031  str r5,[r7,#0x5c] ;@ Save Cycles
46032
46033;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
46034  ldr r0,[r7,#0x60] ;@ Get Memory base
46035  ldrh r3,[r4] ;@ Get extension word
46036  sub r0,r4,r0 ;@ r0=PC
46037  add r4,r4,#2
46038  mov r2,r3,lsr #10
46039  tst r3,#0x0800 ;@ Is Rn Word or Long
46040  and r2,r2,#0x3c ;@ r2=Index of Rn
46041  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
46042  ldrne   r2,[r7,r2] ;@ r2=Rn.l
46043  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
46044  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
46045  add r0,r2,r0 ;@ r0=Disp+PC+Rn
46046;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
46047  str r4,[r7,#0x40] ;@ Save PC
46048  bic r0,r0,#0xff000000
46049  bl m68k_fetch16 ;@ Call fetch16(r0) handler
46050
46051;@ EaCalc : Get register index into r11:
46052  and r11,r8,#0x0e00
46053  mov r11,r11,lsr #7
46054;@ EaRead : Read register[r11] into r1:
46055  ldr r1,[r7,r11]
46056
46057;@ Do arithmetic:
46058  mov r0,r0,asl #16
46059  rsbs r1,r0,r1,asl #16
46060  mrs r10,cpsr ;@ r10=flags
46061  eor r10,r10,#0x20000000 ;@ Invert carry
46062  str r10,[r7,#0x4c] ;@ Save X bit
46063
46064;@ Save result:
46065  mov r1,r1,asr #16
46066;@ EaWrite: r1 into register[r11]:
46067  strh r1,[r7,r11]
46068
46069  ldr r5,[r7,#0x5c] ;@ Load Cycles
46070  ldrh r8,[r4],#2 ;@ Fetch next opcode
46071  subs r5,r5,#14 ;@ Subtract cycles
46072  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46073  b CycloneEnd
46074
46075;@ ---------- [907c] sub.w #$3333, d0 uses Op907c ----------
46076Op907c:
46077;@ EaCalc : Get '#$3333' into r0:
46078  ldrsh r0,[r4],#2 ;@ Fetch immediate value
46079;@ EaRead : Read '#$3333' (address in r0) into r0:
46080
46081;@ EaCalc : Get register index into r11:
46082  and r11,r8,#0x0e00
46083  mov r11,r11,lsr #7
46084;@ EaRead : Read register[r11] into r1:
46085  ldr r1,[r7,r11]
46086
46087;@ Do arithmetic:
46088  mov r0,r0,asl #16
46089  rsbs r1,r0,r1,asl #16
46090  mrs r10,cpsr ;@ r10=flags
46091  eor r10,r10,#0x20000000 ;@ Invert carry
46092  str r10,[r7,#0x4c] ;@ Save X bit
46093
46094;@ Save result:
46095  mov r1,r1,asr #16
46096;@ EaWrite: r1 into register[r11]:
46097  strh r1,[r7,r11]
46098
46099  ldrh r8,[r4],#2 ;@ Fetch next opcode
46100  subs r5,r5,#8 ;@ Subtract cycles
46101  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46102  b CycloneEnd
46103
46104;@ ---------- [9080] sub.l d0, d0 uses Op9080 ----------
46105Op9080:
46106;@ EaCalc : Get register index into r0:
46107  and r0,r8,#0x000f
46108;@ EaRead : Read register[r0] into r0:
46109  ldr r0,[r7,r0,lsl #2]
46110
46111;@ EaCalc : Get register index into r11:
46112  and r11,r8,#0x0e00
46113;@ EaRead : Read register[r11] into r1:
46114  ldr r1,[r7,r11,lsr #7]
46115
46116;@ Do arithmetic:
46117  rsbs r1,r0,r1
46118  mrs r10,cpsr ;@ r10=flags
46119  eor r10,r10,#0x20000000 ;@ Invert carry
46120  str r10,[r7,#0x4c] ;@ Save X bit
46121
46122;@ Save result:
46123;@ EaWrite: r1 into register[r11]:
46124  str r1,[r7,r11,lsr #7]
46125
46126  ldrh r8,[r4],#2 ;@ Fetch next opcode
46127  subs r5,r5,#8 ;@ Subtract cycles
46128  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46129  b CycloneEnd
46130
46131;@ ---------- [9090] sub.l (a0), d0 uses Op9090 ----------
46132Op9090:
46133  str r4,[r7,#0x50] ;@ Save prev PC + 2
46134  str r5,[r7,#0x5c] ;@ Save Cycles
46135
46136;@ EaCalc : Get '(a0)' into r0:
46137  and r2,r8,#0x000f
46138  orr r2,r2,#0x8 ;@ A0-7
46139  ldr r0,[r7,r2,lsl #2]
46140;@ EaRead : Read '(a0)' (address in r0) into r0:
46141  str r4,[r7,#0x40] ;@ Save PC
46142  bic r0,r0,#0xff000000
46143  bl m68k_read32 ;@ Call read32(r0) handler
46144
46145;@ EaCalc : Get register index into r11:
46146  and r11,r8,#0x0e00
46147;@ EaRead : Read register[r11] into r1:
46148  ldr r1,[r7,r11,lsr #7]
46149
46150;@ Do arithmetic:
46151  rsbs r1,r0,r1
46152  mrs r10,cpsr ;@ r10=flags
46153  eor r10,r10,#0x20000000 ;@ Invert carry
46154  str r10,[r7,#0x4c] ;@ Save X bit
46155
46156;@ Save result:
46157;@ EaWrite: r1 into register[r11]:
46158  str r1,[r7,r11,lsr #7]
46159
46160  ldr r5,[r7,#0x5c] ;@ Load Cycles
46161  ldrh r8,[r4],#2 ;@ Fetch next opcode
46162  subs r5,r5,#14 ;@ Subtract cycles
46163  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46164  b CycloneEnd
46165
46166;@ ---------- [9098] sub.l (a0)+, d0 uses Op9098 ----------
46167Op9098:
46168  str r4,[r7,#0x50] ;@ Save prev PC + 2
46169  str r5,[r7,#0x5c] ;@ Save Cycles
46170
46171;@ EaCalc : Get '(a0)+' into r0:
46172  and r2,r8,#0x000f
46173  ldr r0,[r7,r2,lsl #2]
46174  add r3,r0,#4 ;@ Post-increment An
46175  str r3,[r7,r2,lsl #2]
46176;@ EaRead : Read '(a0)+' (address in r0) into r0:
46177  str r4,[r7,#0x40] ;@ Save PC
46178  bic r0,r0,#0xff000000
46179  bl m68k_read32 ;@ Call read32(r0) handler
46180
46181;@ EaCalc : Get register index into r11:
46182  and r11,r8,#0x0e00
46183;@ EaRead : Read register[r11] into r1:
46184  ldr r1,[r7,r11,lsr #7]
46185
46186;@ Do arithmetic:
46187  rsbs r1,r0,r1
46188  mrs r10,cpsr ;@ r10=flags
46189  eor r10,r10,#0x20000000 ;@ Invert carry
46190  str r10,[r7,#0x4c] ;@ Save X bit
46191
46192;@ Save result:
46193;@ EaWrite: r1 into register[r11]:
46194  str r1,[r7,r11,lsr #7]
46195
46196  ldr r5,[r7,#0x5c] ;@ Load Cycles
46197  ldrh r8,[r4],#2 ;@ Fetch next opcode
46198  subs r5,r5,#14 ;@ Subtract cycles
46199  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46200  b CycloneEnd
46201
46202;@ ---------- [90a0] sub.l -(a0), d0 uses Op90a0 ----------
46203Op90a0:
46204  str r4,[r7,#0x50] ;@ Save prev PC + 2
46205  str r5,[r7,#0x5c] ;@ Save Cycles
46206
46207;@ EaCalc : Get '-(a0)' into r0:
46208  and r2,r8,#0x000f
46209  orr r2,r2,#0x8 ;@ A0-7
46210  ldr r0,[r7,r2,lsl #2]
46211  sub r0,r0,#4 ;@ Pre-decrement An
46212  str r0,[r7,r2,lsl #2]
46213;@ EaRead : Read '-(a0)' (address in r0) into r0:
46214  str r4,[r7,#0x40] ;@ Save PC
46215  bic r0,r0,#0xff000000
46216  bl m68k_read32 ;@ Call read32(r0) handler
46217
46218;@ EaCalc : Get register index into r11:
46219  and r11,r8,#0x0e00
46220;@ EaRead : Read register[r11] into r1:
46221  ldr r1,[r7,r11,lsr #7]
46222
46223;@ Do arithmetic:
46224  rsbs r1,r0,r1
46225  mrs r10,cpsr ;@ r10=flags
46226  eor r10,r10,#0x20000000 ;@ Invert carry
46227  str r10,[r7,#0x4c] ;@ Save X bit
46228
46229;@ Save result:
46230;@ EaWrite: r1 into register[r11]:
46231  str r1,[r7,r11,lsr #7]
46232
46233  ldr r5,[r7,#0x5c] ;@ Load Cycles
46234  ldrh r8,[r4],#2 ;@ Fetch next opcode
46235  subs r5,r5,#16 ;@ Subtract cycles
46236  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46237  b CycloneEnd
46238
46239;@ ---------- [90a8] sub.l ($3333,a0), d0 uses Op90a8 ----------
46240Op90a8:
46241  str r4,[r7,#0x50] ;@ Save prev PC + 2
46242  str r5,[r7,#0x5c] ;@ Save Cycles
46243
46244;@ EaCalc : Get '($3333,a0)' into r0:
46245  ldrsh r0,[r4],#2 ;@ Fetch offset
46246  and r2,r8,#0x000f
46247  ldr r2,[r7,r2,lsl #2]
46248  add r0,r0,r2 ;@ Add on offset
46249;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
46250  str r4,[r7,#0x40] ;@ Save PC
46251  bic r0,r0,#0xff000000
46252  bl m68k_read32 ;@ Call read32(r0) handler
46253
46254;@ EaCalc : Get register index into r11:
46255  and r11,r8,#0x0e00
46256;@ EaRead : Read register[r11] into r1:
46257  ldr r1,[r7,r11,lsr #7]
46258
46259;@ Do arithmetic:
46260  rsbs r1,r0,r1
46261  mrs r10,cpsr ;@ r10=flags
46262  eor r10,r10,#0x20000000 ;@ Invert carry
46263  str r10,[r7,#0x4c] ;@ Save X bit
46264
46265;@ Save result:
46266;@ EaWrite: r1 into register[r11]:
46267  str r1,[r7,r11,lsr #7]
46268
46269  ldr r5,[r7,#0x5c] ;@ Load Cycles
46270  ldrh r8,[r4],#2 ;@ Fetch next opcode
46271  subs r5,r5,#18 ;@ Subtract cycles
46272  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46273  b CycloneEnd
46274
46275;@ ---------- [90b0] sub.l ($33,a0,d3.w*2), d0 uses Op90b0 ----------
46276Op90b0:
46277  str r4,[r7,#0x50] ;@ Save prev PC + 2
46278  str r5,[r7,#0x5c] ;@ Save Cycles
46279
46280;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
46281;@ Get extension word into r3:
46282  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
46283  mov r2,r3,lsr #10
46284  tst r3,#0x0800 ;@ Is Rn Word or Long
46285  and r2,r2,#0x3c ;@ r2=Index of Rn
46286  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
46287  ldrne   r2,[r7,r2] ;@ r2=Rn.l
46288  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
46289  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
46290  and r2,r8,#0x000f
46291  orr r2,r2,#0x8 ;@ A0-7
46292  ldr r2,[r7,r2,lsl #2]
46293  add r0,r2,r3 ;@ r0=Disp+An+Rn
46294;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
46295  str r4,[r7,#0x40] ;@ Save PC
46296  bic r0,r0,#0xff000000
46297  bl m68k_read32 ;@ Call read32(r0) handler
46298
46299;@ EaCalc : Get register index into r11:
46300  and r11,r8,#0x0e00
46301;@ EaRead : Read register[r11] into r1:
46302  ldr r1,[r7,r11,lsr #7]
46303
46304;@ Do arithmetic:
46305  rsbs r1,r0,r1
46306  mrs r10,cpsr ;@ r10=flags
46307  eor r10,r10,#0x20000000 ;@ Invert carry
46308  str r10,[r7,#0x4c] ;@ Save X bit
46309
46310;@ Save result:
46311;@ EaWrite: r1 into register[r11]:
46312  str r1,[r7,r11,lsr #7]
46313
46314  ldr r5,[r7,#0x5c] ;@ Load Cycles
46315  ldrh r8,[r4],#2 ;@ Fetch next opcode
46316  subs r5,r5,#20 ;@ Subtract cycles
46317  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46318  b CycloneEnd
46319
46320;@ ---------- [90b8] sub.l $3333.w, d0 uses Op90b8 ----------
46321Op90b8:
46322  str r4,[r7,#0x50] ;@ Save prev PC + 2
46323  str r5,[r7,#0x5c] ;@ Save Cycles
46324
46325;@ EaCalc : Get '$3333.w' into r0:
46326  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
46327;@ EaRead : Read '$3333.w' (address in r0) into r0:
46328  str r4,[r7,#0x40] ;@ Save PC
46329  bic r0,r0,#0xff000000
46330  bl m68k_read32 ;@ Call read32(r0) handler
46331
46332;@ EaCalc : Get register index into r11:
46333  and r11,r8,#0x0e00
46334;@ EaRead : Read register[r11] into r1:
46335  ldr r1,[r7,r11,lsr #7]
46336
46337;@ Do arithmetic:
46338  rsbs r1,r0,r1
46339  mrs r10,cpsr ;@ r10=flags
46340  eor r10,r10,#0x20000000 ;@ Invert carry
46341  str r10,[r7,#0x4c] ;@ Save X bit
46342
46343;@ Save result:
46344;@ EaWrite: r1 into register[r11]:
46345  str r1,[r7,r11,lsr #7]
46346
46347  ldr r5,[r7,#0x5c] ;@ Load Cycles
46348  ldrh r8,[r4],#2 ;@ Fetch next opcode
46349  subs r5,r5,#18 ;@ Subtract cycles
46350  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46351  b CycloneEnd
46352
46353;@ ---------- [90b9] sub.l $33333333.l, d0 uses Op90b9 ----------
46354Op90b9:
46355  str r4,[r7,#0x50] ;@ Save prev PC + 2
46356  str r5,[r7,#0x5c] ;@ Save Cycles
46357
46358;@ EaCalc : Get '$33333333.l' into r0:
46359  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
46360  ldrh r0,[r4],#2
46361  orr r0,r0,r2,lsl #16
46362;@ EaRead : Read '$33333333.l' (address in r0) into r0:
46363  str r4,[r7,#0x40] ;@ Save PC
46364  bic r0,r0,#0xff000000
46365  bl m68k_read32 ;@ Call read32(r0) handler
46366
46367;@ EaCalc : Get register index into r11:
46368  and r11,r8,#0x0e00
46369;@ EaRead : Read register[r11] into r1:
46370  ldr r1,[r7,r11,lsr #7]
46371
46372;@ Do arithmetic:
46373  rsbs r1,r0,r1
46374  mrs r10,cpsr ;@ r10=flags
46375  eor r10,r10,#0x20000000 ;@ Invert carry
46376  str r10,[r7,#0x4c] ;@ Save X bit
46377
46378;@ Save result:
46379;@ EaWrite: r1 into register[r11]:
46380  str r1,[r7,r11,lsr #7]
46381
46382  ldr r5,[r7,#0x5c] ;@ Load Cycles
46383  ldrh r8,[r4],#2 ;@ Fetch next opcode
46384  subs r5,r5,#22 ;@ Subtract cycles
46385  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46386  b CycloneEnd
46387
46388;@ ---------- [90ba] sub.l ($3333,pc), d0; =3335 uses Op90ba ----------
46389Op90ba:
46390  str r4,[r7,#0x50] ;@ Save prev PC + 2
46391  str r5,[r7,#0x5c] ;@ Save Cycles
46392
46393;@ EaCalc : Get '($3333,pc)' into r0:
46394  ldr r0,[r7,#0x60] ;@ Get Memory base
46395  sub r0,r4,r0 ;@ Real PC
46396  ldrsh r2,[r4],#2 ;@ Fetch extension
46397  add r0,r2,r0 ;@ ($nn,PC)
46398;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
46399  str r4,[r7,#0x40] ;@ Save PC
46400  bic r0,r0,#0xff000000
46401  bl m68k_fetch32 ;@ Call fetch32(r0) handler
46402
46403;@ EaCalc : Get register index into r11:
46404  and r11,r8,#0x0e00
46405;@ EaRead : Read register[r11] into r1:
46406  ldr r1,[r7,r11,lsr #7]
46407
46408;@ Do arithmetic:
46409  rsbs r1,r0,r1
46410  mrs r10,cpsr ;@ r10=flags
46411  eor r10,r10,#0x20000000 ;@ Invert carry
46412  str r10,[r7,#0x4c] ;@ Save X bit
46413
46414;@ Save result:
46415;@ EaWrite: r1 into register[r11]:
46416  str r1,[r7,r11,lsr #7]
46417
46418  ldr r5,[r7,#0x5c] ;@ Load Cycles
46419  ldrh r8,[r4],#2 ;@ Fetch next opcode
46420  subs r5,r5,#18 ;@ Subtract cycles
46421  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46422  b CycloneEnd
46423
46424;@ ---------- [90bb] sub.l ($33,pc,d3.w*2), d0; =35 uses Op90bb ----------
46425Op90bb:
46426  str r4,[r7,#0x50] ;@ Save prev PC + 2
46427  str r5,[r7,#0x5c] ;@ Save Cycles
46428
46429;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
46430  ldr r0,[r7,#0x60] ;@ Get Memory base
46431  ldrh r3,[r4] ;@ Get extension word
46432  sub r0,r4,r0 ;@ r0=PC
46433  add r4,r4,#2
46434  mov r2,r3,lsr #10
46435  tst r3,#0x0800 ;@ Is Rn Word or Long
46436  and r2,r2,#0x3c ;@ r2=Index of Rn
46437  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
46438  ldrne   r2,[r7,r2] ;@ r2=Rn.l
46439  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
46440  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
46441  add r0,r2,r0 ;@ r0=Disp+PC+Rn
46442;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
46443  str r4,[r7,#0x40] ;@ Save PC
46444  bic r0,r0,#0xff000000
46445  bl m68k_fetch32 ;@ Call fetch32(r0) handler
46446
46447;@ EaCalc : Get register index into r11:
46448  and r11,r8,#0x0e00
46449;@ EaRead : Read register[r11] into r1:
46450  ldr r1,[r7,r11,lsr #7]
46451
46452;@ Do arithmetic:
46453  rsbs r1,r0,r1
46454  mrs r10,cpsr ;@ r10=flags
46455  eor r10,r10,#0x20000000 ;@ Invert carry
46456  str r10,[r7,#0x4c] ;@ Save X bit
46457
46458;@ Save result:
46459;@ EaWrite: r1 into register[r11]:
46460  str r1,[r7,r11,lsr #7]
46461
46462  ldr r5,[r7,#0x5c] ;@ Load Cycles
46463  ldrh r8,[r4],#2 ;@ Fetch next opcode
46464  subs r5,r5,#20 ;@ Subtract cycles
46465  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46466  b CycloneEnd
46467
46468;@ ---------- [90bc] sub.l #$33333333, d0 uses Op90bc ----------
46469Op90bc:
46470;@ EaCalc : Get '#$33333333' into r0:
46471  ldrh r2,[r4],#2 ;@ Fetch immediate value
46472  ldrh r3,[r4],#2
46473  orr r0,r3,r2,lsl #16
46474;@ EaRead : Read '#$33333333' (address in r0) into r0:
46475
46476;@ EaCalc : Get register index into r11:
46477  and r11,r8,#0x0e00
46478;@ EaRead : Read register[r11] into r1:
46479  ldr r1,[r7,r11,lsr #7]
46480
46481;@ Do arithmetic:
46482  rsbs r1,r0,r1
46483  mrs r10,cpsr ;@ r10=flags
46484  eor r10,r10,#0x20000000 ;@ Invert carry
46485  str r10,[r7,#0x4c] ;@ Save X bit
46486
46487;@ Save result:
46488;@ EaWrite: r1 into register[r11]:
46489  str r1,[r7,r11,lsr #7]
46490
46491  ldrh r8,[r4],#2 ;@ Fetch next opcode
46492  subs r5,r5,#16 ;@ Subtract cycles
46493  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46494  b CycloneEnd
46495
46496;@ ---------- [90c0] suba.w d0, a0 uses Op90c0 ----------
46497Op90c0:
46498;@ EaCalc : Get register index into r0:
46499  and r0,r8,#0x000f
46500;@ EaRead : Read register[r0] into r0:
46501  ldr r0,[r7,r0,lsl #2]
46502
46503;@ EaCalc : Get register index into r11:
46504  and r11,r8,#0x1e00
46505;@ EaRead : Read register[r11] into r1:
46506  ldr r1,[r7,r11,lsr #7]
46507
46508  mov r0,r0,asl #16
46509
46510  sub r1,r1,r0,asr #16
46511
46512;@ EaWrite: r1 into register[r11]:
46513  str r1,[r7,r11,lsr #7]
46514
46515  ldrh r8,[r4],#2 ;@ Fetch next opcode
46516  subs r5,r5,#8 ;@ Subtract cycles
46517  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46518  b CycloneEnd
46519
46520;@ ---------- [90d0] suba.w (a0), a0 uses Op90d0 ----------
46521Op90d0:
46522  str r4,[r7,#0x50] ;@ Save prev PC + 2
46523  str r5,[r7,#0x5c] ;@ Save Cycles
46524
46525;@ EaCalc : Get '(a0)' into r0:
46526  and r2,r8,#0x000f
46527  orr r2,r2,#0x8 ;@ A0-7
46528  ldr r0,[r7,r2,lsl #2]
46529;@ EaRead : Read '(a0)' (address in r0) into r0:
46530  str r4,[r7,#0x40] ;@ Save PC
46531  bic r0,r0,#0xff000000
46532  bl m68k_read16 ;@ Call read16(r0) handler
46533
46534;@ EaCalc : Get register index into r11:
46535  and r11,r8,#0x1e00
46536;@ EaRead : Read register[r11] into r1:
46537  ldr r1,[r7,r11,lsr #7]
46538
46539  mov r0,r0,asl #16
46540
46541  sub r1,r1,r0,asr #16
46542
46543;@ EaWrite: r1 into register[r11]:
46544  str r1,[r7,r11,lsr #7]
46545
46546  ldr r5,[r7,#0x5c] ;@ Load Cycles
46547  ldrh r8,[r4],#2 ;@ Fetch next opcode
46548  subs r5,r5,#12 ;@ Subtract cycles
46549  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46550  b CycloneEnd
46551
46552;@ ---------- [90d8] suba.w (a0)+, a0 uses Op90d8 ----------
46553Op90d8:
46554  str r4,[r7,#0x50] ;@ Save prev PC + 2
46555  str r5,[r7,#0x5c] ;@ Save Cycles
46556
46557;@ EaCalc : Get '(a0)+' into r0:
46558  and r2,r8,#0x000f
46559  ldr r0,[r7,r2,lsl #2]
46560  add r3,r0,#2 ;@ Post-increment An
46561  str r3,[r7,r2,lsl #2]
46562;@ EaRead : Read '(a0)+' (address in r0) into r0:
46563  str r4,[r7,#0x40] ;@ Save PC
46564  bic r0,r0,#0xff000000
46565  bl m68k_read16 ;@ Call read16(r0) handler
46566
46567;@ EaCalc : Get register index into r11:
46568  and r11,r8,#0x1e00
46569;@ EaRead : Read register[r11] into r1:
46570  ldr r1,[r7,r11,lsr #7]
46571
46572  mov r0,r0,asl #16
46573
46574  sub r1,r1,r0,asr #16
46575
46576;@ EaWrite: r1 into register[r11]:
46577  str r1,[r7,r11,lsr #7]
46578
46579  ldr r5,[r7,#0x5c] ;@ Load Cycles
46580  ldrh r8,[r4],#2 ;@ Fetch next opcode
46581  subs r5,r5,#12 ;@ Subtract cycles
46582  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46583  b CycloneEnd
46584
46585;@ ---------- [90e0] suba.w -(a0), a0 uses Op90e0 ----------
46586Op90e0:
46587  str r4,[r7,#0x50] ;@ Save prev PC + 2
46588  str r5,[r7,#0x5c] ;@ Save Cycles
46589
46590;@ EaCalc : Get '-(a0)' into r0:
46591  and r2,r8,#0x000f
46592  orr r2,r2,#0x8 ;@ A0-7
46593  ldr r0,[r7,r2,lsl #2]
46594  sub r0,r0,#2 ;@ Pre-decrement An
46595  str r0,[r7,r2,lsl #2]
46596;@ EaRead : Read '-(a0)' (address in r0) into r0:
46597  str r4,[r7,#0x40] ;@ Save PC
46598  bic r0,r0,#0xff000000
46599  bl m68k_read16 ;@ Call read16(r0) handler
46600
46601;@ EaCalc : Get register index into r11:
46602  and r11,r8,#0x1e00
46603;@ EaRead : Read register[r11] into r1:
46604  ldr r1,[r7,r11,lsr #7]
46605
46606  mov r0,r0,asl #16
46607
46608  sub r1,r1,r0,asr #16
46609
46610;@ EaWrite: r1 into register[r11]:
46611  str r1,[r7,r11,lsr #7]
46612
46613  ldr r5,[r7,#0x5c] ;@ Load Cycles
46614  ldrh r8,[r4],#2 ;@ Fetch next opcode
46615  subs r5,r5,#14 ;@ Subtract cycles
46616  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46617  b CycloneEnd
46618
46619;@ ---------- [90e8] suba.w ($3333,a0), a0 uses Op90e8 ----------
46620Op90e8:
46621  str r4,[r7,#0x50] ;@ Save prev PC + 2
46622  str r5,[r7,#0x5c] ;@ Save Cycles
46623
46624;@ EaCalc : Get '($3333,a0)' into r0:
46625  ldrsh r0,[r4],#2 ;@ Fetch offset
46626  and r2,r8,#0x000f
46627  ldr r2,[r7,r2,lsl #2]
46628  add r0,r0,r2 ;@ Add on offset
46629;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
46630  str r4,[r7,#0x40] ;@ Save PC
46631  bic r0,r0,#0xff000000
46632  bl m68k_read16 ;@ Call read16(r0) handler
46633
46634;@ EaCalc : Get register index into r11:
46635  and r11,r8,#0x1e00
46636;@ EaRead : Read register[r11] into r1:
46637  ldr r1,[r7,r11,lsr #7]
46638
46639  mov r0,r0,asl #16
46640
46641  sub r1,r1,r0,asr #16
46642
46643;@ EaWrite: r1 into register[r11]:
46644  str r1,[r7,r11,lsr #7]
46645
46646  ldr r5,[r7,#0x5c] ;@ Load Cycles
46647  ldrh r8,[r4],#2 ;@ Fetch next opcode
46648  subs r5,r5,#16 ;@ Subtract cycles
46649  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46650  b CycloneEnd
46651
46652;@ ---------- [90f0] suba.w ($33,a0,d3.w*2), a0 uses Op90f0 ----------
46653Op90f0:
46654  str r4,[r7,#0x50] ;@ Save prev PC + 2
46655  str r5,[r7,#0x5c] ;@ Save Cycles
46656
46657;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
46658;@ Get extension word into r3:
46659  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
46660  mov r2,r3,lsr #10
46661  tst r3,#0x0800 ;@ Is Rn Word or Long
46662  and r2,r2,#0x3c ;@ r2=Index of Rn
46663  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
46664  ldrne   r2,[r7,r2] ;@ r2=Rn.l
46665  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
46666  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
46667  and r2,r8,#0x000f
46668  orr r2,r2,#0x8 ;@ A0-7
46669  ldr r2,[r7,r2,lsl #2]
46670  add r0,r2,r3 ;@ r0=Disp+An+Rn
46671;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
46672  str r4,[r7,#0x40] ;@ Save PC
46673  bic r0,r0,#0xff000000
46674  bl m68k_read16 ;@ Call read16(r0) handler
46675
46676;@ EaCalc : Get register index into r11:
46677  and r11,r8,#0x1e00
46678;@ EaRead : Read register[r11] into r1:
46679  ldr r1,[r7,r11,lsr #7]
46680
46681  mov r0,r0,asl #16
46682
46683  sub r1,r1,r0,asr #16
46684
46685;@ EaWrite: r1 into register[r11]:
46686  str r1,[r7,r11,lsr #7]
46687
46688  ldr r5,[r7,#0x5c] ;@ Load Cycles
46689  ldrh r8,[r4],#2 ;@ Fetch next opcode
46690  subs r5,r5,#18 ;@ Subtract cycles
46691  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46692  b CycloneEnd
46693
46694;@ ---------- [90f8] suba.w $3333.w, a0 uses Op90f8 ----------
46695Op90f8:
46696  str r4,[r7,#0x50] ;@ Save prev PC + 2
46697  str r5,[r7,#0x5c] ;@ Save Cycles
46698
46699;@ EaCalc : Get '$3333.w' into r0:
46700  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
46701;@ EaRead : Read '$3333.w' (address in r0) into r0:
46702  str r4,[r7,#0x40] ;@ Save PC
46703  bic r0,r0,#0xff000000
46704  bl m68k_read16 ;@ Call read16(r0) handler
46705
46706;@ EaCalc : Get register index into r11:
46707  and r11,r8,#0x1e00
46708;@ EaRead : Read register[r11] into r1:
46709  ldr r1,[r7,r11,lsr #7]
46710
46711  mov r0,r0,asl #16
46712
46713  sub r1,r1,r0,asr #16
46714
46715;@ EaWrite: r1 into register[r11]:
46716  str r1,[r7,r11,lsr #7]
46717
46718  ldr r5,[r7,#0x5c] ;@ Load Cycles
46719  ldrh r8,[r4],#2 ;@ Fetch next opcode
46720  subs r5,r5,#16 ;@ Subtract cycles
46721  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46722  b CycloneEnd
46723
46724;@ ---------- [90f9] suba.w $33333333.l, a0 uses Op90f9 ----------
46725Op90f9:
46726  str r4,[r7,#0x50] ;@ Save prev PC + 2
46727  str r5,[r7,#0x5c] ;@ Save Cycles
46728
46729;@ EaCalc : Get '$33333333.l' into r0:
46730  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
46731  ldrh r0,[r4],#2
46732  orr r0,r0,r2,lsl #16
46733;@ EaRead : Read '$33333333.l' (address in r0) into r0:
46734  str r4,[r7,#0x40] ;@ Save PC
46735  bic r0,r0,#0xff000000
46736  bl m68k_read16 ;@ Call read16(r0) handler
46737
46738;@ EaCalc : Get register index into r11:
46739  and r11,r8,#0x1e00
46740;@ EaRead : Read register[r11] into r1:
46741  ldr r1,[r7,r11,lsr #7]
46742
46743  mov r0,r0,asl #16
46744
46745  sub r1,r1,r0,asr #16
46746
46747;@ EaWrite: r1 into register[r11]:
46748  str r1,[r7,r11,lsr #7]
46749
46750  ldr r5,[r7,#0x5c] ;@ Load Cycles
46751  ldrh r8,[r4],#2 ;@ Fetch next opcode
46752  subs r5,r5,#20 ;@ Subtract cycles
46753  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46754  b CycloneEnd
46755
46756;@ ---------- [90fa] suba.w ($3333,pc), a0; =3335 uses Op90fa ----------
46757Op90fa:
46758  str r4,[r7,#0x50] ;@ Save prev PC + 2
46759  str r5,[r7,#0x5c] ;@ Save Cycles
46760
46761;@ EaCalc : Get '($3333,pc)' into r0:
46762  ldr r0,[r7,#0x60] ;@ Get Memory base
46763  sub r0,r4,r0 ;@ Real PC
46764  ldrsh r2,[r4],#2 ;@ Fetch extension
46765  add r0,r2,r0 ;@ ($nn,PC)
46766;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
46767  str r4,[r7,#0x40] ;@ Save PC
46768  bic r0,r0,#0xff000000
46769  bl m68k_fetch16 ;@ Call fetch16(r0) handler
46770
46771;@ EaCalc : Get register index into r11:
46772  and r11,r8,#0x1e00
46773;@ EaRead : Read register[r11] into r1:
46774  ldr r1,[r7,r11,lsr #7]
46775
46776  mov r0,r0,asl #16
46777
46778  sub r1,r1,r0,asr #16
46779
46780;@ EaWrite: r1 into register[r11]:
46781  str r1,[r7,r11,lsr #7]
46782
46783  ldr r5,[r7,#0x5c] ;@ Load Cycles
46784  ldrh r8,[r4],#2 ;@ Fetch next opcode
46785  subs r5,r5,#16 ;@ Subtract cycles
46786  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46787  b CycloneEnd
46788
46789;@ ---------- [90fb] suba.w ($33,pc,d3.w*2), a0; =35 uses Op90fb ----------
46790Op90fb:
46791  str r4,[r7,#0x50] ;@ Save prev PC + 2
46792  str r5,[r7,#0x5c] ;@ Save Cycles
46793
46794;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
46795  ldr r0,[r7,#0x60] ;@ Get Memory base
46796  ldrh r3,[r4] ;@ Get extension word
46797  sub r0,r4,r0 ;@ r0=PC
46798  add r4,r4,#2
46799  mov r2,r3,lsr #10
46800  tst r3,#0x0800 ;@ Is Rn Word or Long
46801  and r2,r2,#0x3c ;@ r2=Index of Rn
46802  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
46803  ldrne   r2,[r7,r2] ;@ r2=Rn.l
46804  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
46805  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
46806  add r0,r2,r0 ;@ r0=Disp+PC+Rn
46807;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
46808  str r4,[r7,#0x40] ;@ Save PC
46809  bic r0,r0,#0xff000000
46810  bl m68k_fetch16 ;@ Call fetch16(r0) handler
46811
46812;@ EaCalc : Get register index into r11:
46813  and r11,r8,#0x1e00
46814;@ EaRead : Read register[r11] into r1:
46815  ldr r1,[r7,r11,lsr #7]
46816
46817  mov r0,r0,asl #16
46818
46819  sub r1,r1,r0,asr #16
46820
46821;@ EaWrite: r1 into register[r11]:
46822  str r1,[r7,r11,lsr #7]
46823
46824  ldr r5,[r7,#0x5c] ;@ Load Cycles
46825  ldrh r8,[r4],#2 ;@ Fetch next opcode
46826  subs r5,r5,#18 ;@ Subtract cycles
46827  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46828  b CycloneEnd
46829
46830;@ ---------- [90fc] suba.w #$3333, a0 uses Op90fc ----------
46831Op90fc:
46832;@ EaCalc : Get '#$3333' into r0:
46833  ldrsh r0,[r4],#2 ;@ Fetch immediate value
46834;@ EaRead : Read '#$3333' (address in r0) into r0:
46835
46836;@ EaCalc : Get register index into r11:
46837  and r11,r8,#0x1e00
46838;@ EaRead : Read register[r11] into r1:
46839  ldr r1,[r7,r11,lsr #7]
46840
46841  mov r0,r0,asl #16
46842
46843  sub r1,r1,r0,asr #16
46844
46845;@ EaWrite: r1 into register[r11]:
46846  str r1,[r7,r11,lsr #7]
46847
46848  ldrh r8,[r4],#2 ;@ Fetch next opcode
46849  subs r5,r5,#12 ;@ Subtract cycles
46850  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46851  b CycloneEnd
46852
46853;@ ---------- [9100] subx.b d0, d0 uses Op9100 ----------
46854Op9100:
46855;@ Get src/dest reg vals
46856;@ EaCalc : Get register index into r6:
46857  and r6,r8,#0x0007
46858;@ EaRead : Read register[r6] into r6:
46859  ldr r6,[r7,r6,lsl #2]
46860
46861;@ EaCalc : Get register index into r11:
46862  and r11,r8,#0x0e00
46863;@ EaRead : Read register[r11] into r0:
46864  ldr r0,[r7,r11,lsr #7]
46865
46866  mov r6,r6,asl #24
46867
46868;@ Do arithmetic:
46869;@ Get X bit:
46870  ldr r2,[r7,#0x4c]
46871  mvn r2,r2 ;@ Invert it
46872  tst r2,r2,lsl #3 ;@ Get into Carry
46873
46874  rscs r1,r6,r0,asl #24
46875  orr r3,r10,#0xb0000000 ;@ for old Z
46876  mrs r10,cpsr ;@ r10=flags
46877  eor r10,r10,#0x20000000 ;@ Invert carry
46878  str r10,[r7,#0x4c] ;@ Save X bit
46879  movs r2,r1,lsr #24
46880  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
46881  andeq r10,r10,r3 ;@ fix Z
46882
46883;@ Save result:
46884;@ EaWrite: r1 into register[r11]:
46885  mov r1,r1,lsr #24
46886  strb r1,[r7,r11,lsr #7]
46887
46888  ldr r6,[r7,#0x54]
46889  ldrh r8,[r4],#2 ;@ Fetch next opcode
46890  subs r5,r5,#4 ;@ Subtract cycles
46891  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46892  b CycloneEnd
46893
46894;@ ---------- [9108] subx.b -(a0), -(a0) uses Op9108 ----------
46895Op9108:
46896  str r4,[r7,#0x50] ;@ Save prev PC + 2
46897  str r5,[r7,#0x5c] ;@ Save Cycles
46898
46899;@ Get src/dest EA vals
46900;@ EaCalc : Get '-(a0)' into r0:
46901  and r2,r8,#0x000f
46902  ldr r0,[r7,r2,lsl #2]
46903  sub r0,r0,#1 ;@ Pre-decrement An
46904  str r0,[r7,r2,lsl #2]
46905;@ EaRead : Read '-(a0)' (address in r0) into r6:
46906  str r4,[r7,#0x40] ;@ Save PC
46907  bic r0,r0,#0xff000000
46908  bl m68k_read8 ;@ Call read8(r0) handler
46909  mov r6,r0,asl #24
46910
46911;@ EaCalc : Get '-(a0)' into r11:
46912  and r2,r8,#0x1e00
46913  ldr r11,[r7,r2,lsr #7]
46914  sub r11,r11,#1 ;@ Pre-decrement An
46915  str r11,[r7,r2,lsr #7]
46916;@ EaRead : Read '-(a0)' (address in r11) into r0:
46917  bic r0,r11,#0xff000000
46918  bl m68k_read8 ;@ Call read8(r0) handler
46919
46920;@ Do arithmetic:
46921;@ Get X bit:
46922  ldr r2,[r7,#0x4c]
46923  mvn r2,r2 ;@ Invert it
46924  tst r2,r2,lsl #3 ;@ Get into Carry
46925
46926  rscs r1,r6,r0,asl #24
46927  orr r3,r10,#0xb0000000 ;@ for old Z
46928  mrs r10,cpsr ;@ r10=flags
46929  eor r10,r10,#0x20000000 ;@ Invert carry
46930  str r10,[r7,#0x4c] ;@ Save X bit
46931  movs r2,r1,lsr #24
46932  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
46933  andeq r10,r10,r3 ;@ fix Z
46934
46935;@ Save result:
46936;@ EaWrite: Write r1 into '-(a0)' (address in r11):
46937  mov r1,r1,lsr #24
46938  bic r0,r11,#0xff000000
46939  bl m68k_write8 ;@ Call write8(r0,r1) handler
46940
46941  ldr r6,[r7,#0x54]
46942  ldr r5,[r7,#0x5c] ;@ Load Cycles
46943  ldrh r8,[r4],#2 ;@ Fetch next opcode
46944  subs r5,r5,#18 ;@ Subtract cycles
46945  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46946  b CycloneEnd
46947
46948;@ ---------- [910f] subx.b -(a7), -(a0) uses Op910f ----------
46949Op910f:
46950  str r4,[r7,#0x50] ;@ Save prev PC + 2
46951  str r5,[r7,#0x5c] ;@ Save Cycles
46952
46953;@ Get src/dest EA vals
46954;@ EaCalc : Get '-(a7)' into r0:
46955  ldr r0,[r7,#0x3c] ;@ A7
46956  sub r0,r0,#2 ;@ Pre-decrement An
46957  str r0,[r7,#0x3c] ;@ A7
46958;@ EaRead : Read '-(a7)' (address in r0) into r6:
46959  str r4,[r7,#0x40] ;@ Save PC
46960  bic r0,r0,#0xff000000
46961  bl m68k_read8 ;@ Call read8(r0) handler
46962  mov r6,r0,asl #24
46963
46964;@ EaCalc : Get '-(a0)' into r11:
46965  and r2,r8,#0x1e00
46966  ldr r11,[r7,r2,lsr #7]
46967  sub r11,r11,#1 ;@ Pre-decrement An
46968  str r11,[r7,r2,lsr #7]
46969;@ EaRead : Read '-(a0)' (address in r11) into r0:
46970  bic r0,r11,#0xff000000
46971  bl m68k_read8 ;@ Call read8(r0) handler
46972
46973;@ Do arithmetic:
46974;@ Get X bit:
46975  ldr r2,[r7,#0x4c]
46976  mvn r2,r2 ;@ Invert it
46977  tst r2,r2,lsl #3 ;@ Get into Carry
46978
46979  rscs r1,r6,r0,asl #24
46980  orr r3,r10,#0xb0000000 ;@ for old Z
46981  mrs r10,cpsr ;@ r10=flags
46982  eor r10,r10,#0x20000000 ;@ Invert carry
46983  str r10,[r7,#0x4c] ;@ Save X bit
46984  movs r2,r1,lsr #24
46985  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
46986  andeq r10,r10,r3 ;@ fix Z
46987
46988;@ Save result:
46989;@ EaWrite: Write r1 into '-(a0)' (address in r11):
46990  mov r1,r1,lsr #24
46991  bic r0,r11,#0xff000000
46992  bl m68k_write8 ;@ Call write8(r0,r1) handler
46993
46994  ldr r6,[r7,#0x54]
46995  ldr r5,[r7,#0x5c] ;@ Load Cycles
46996  ldrh r8,[r4],#2 ;@ Fetch next opcode
46997  subs r5,r5,#18 ;@ Subtract cycles
46998  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46999  b CycloneEnd
47000
47001;@ ---------- [9110] sub.b d0, (a0) uses Op9110 ----------
47002Op9110:
47003  str r4,[r7,#0x50] ;@ Save prev PC + 2
47004  str r5,[r7,#0x5c] ;@ Save Cycles
47005
47006;@ EaCalc : Get '(a0)' into r11:
47007  and r2,r8,#0x000f
47008  orr r2,r2,#0x8 ;@ A0-7
47009  ldr r11,[r7,r2,lsl #2]
47010;@ EaRead : Read '(a0)' (address in r11) into r0:
47011  str r4,[r7,#0x40] ;@ Save PC
47012  bic r0,r11,#0xff000000
47013  bl m68k_read8 ;@ Call read8(r0) handler
47014
47015;@ EaCalc : Get register index into r1:
47016  and r1,r8,#0x0e00
47017;@ EaRead : Read register[r1] into r1:
47018  ldr r1,[r7,r1,lsr #7]
47019
47020;@ Do arithmetic:
47021  mov r0,r0,asl #24
47022  subs r1,r0,r1,asl #24
47023  mrs r10,cpsr ;@ r10=flags
47024  eor r10,r10,#0x20000000 ;@ Invert carry
47025  str r10,[r7,#0x4c] ;@ Save X bit
47026
47027;@ Save result:
47028  mov r1,r1,asr #24
47029;@ EaWrite: Write r1 into '(a0)' (address in r11):
47030  and r1,r1,#0xff
47031  bic r0,r11,#0xff000000
47032  bl m68k_write8 ;@ Call write8(r0,r1) handler
47033
47034  ldr r5,[r7,#0x5c] ;@ Load Cycles
47035  ldrh r8,[r4],#2 ;@ Fetch next opcode
47036  subs r5,r5,#12 ;@ Subtract cycles
47037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47038  b CycloneEnd
47039
47040;@ ---------- [9118] sub.b d0, (a0)+ uses Op9118 ----------
47041Op9118:
47042  str r4,[r7,#0x50] ;@ Save prev PC + 2
47043  str r5,[r7,#0x5c] ;@ Save Cycles
47044
47045;@ EaCalc : Get '(a0)+' into r11:
47046  and r2,r8,#0x000f
47047  ldr r11,[r7,r2,lsl #2]
47048  add r3,r11,#1 ;@ Post-increment An
47049  str r3,[r7,r2,lsl #2]
47050;@ EaRead : Read '(a0)+' (address in r11) into r0:
47051  str r4,[r7,#0x40] ;@ Save PC
47052  bic r0,r11,#0xff000000
47053  bl m68k_read8 ;@ Call read8(r0) handler
47054
47055;@ EaCalc : Get register index into r1:
47056  and r1,r8,#0x0e00
47057;@ EaRead : Read register[r1] into r1:
47058  ldr r1,[r7,r1,lsr #7]
47059
47060;@ Do arithmetic:
47061  mov r0,r0,asl #24
47062  subs r1,r0,r1,asl #24
47063  mrs r10,cpsr ;@ r10=flags
47064  eor r10,r10,#0x20000000 ;@ Invert carry
47065  str r10,[r7,#0x4c] ;@ Save X bit
47066
47067;@ Save result:
47068  mov r1,r1,asr #24
47069;@ EaWrite: Write r1 into '(a0)+' (address in r11):
47070  and r1,r1,#0xff
47071  bic r0,r11,#0xff000000
47072  bl m68k_write8 ;@ Call write8(r0,r1) handler
47073
47074  ldr r5,[r7,#0x5c] ;@ Load Cycles
47075  ldrh r8,[r4],#2 ;@ Fetch next opcode
47076  subs r5,r5,#12 ;@ Subtract cycles
47077  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47078  b CycloneEnd
47079
47080;@ ---------- [911f] sub.b d0, (a7)+ uses Op911f ----------
47081Op911f:
47082  str r4,[r7,#0x50] ;@ Save prev PC + 2
47083  str r5,[r7,#0x5c] ;@ Save Cycles
47084
47085;@ EaCalc : Get '(a7)+' into r11:
47086  ldr r11,[r7,#0x3c] ;@ A7
47087  add r3,r11,#2 ;@ Post-increment An
47088  str r3,[r7,#0x3c] ;@ A7
47089;@ EaRead : Read '(a7)+' (address in r11) into r0:
47090  str r4,[r7,#0x40] ;@ Save PC
47091  bic r0,r11,#0xff000000
47092  bl m68k_read8 ;@ Call read8(r0) handler
47093
47094;@ EaCalc : Get register index into r1:
47095  and r1,r8,#0x0e00
47096;@ EaRead : Read register[r1] into r1:
47097  ldr r1,[r7,r1,lsr #7]
47098
47099;@ Do arithmetic:
47100  mov r0,r0,asl #24
47101  subs r1,r0,r1,asl #24
47102  mrs r10,cpsr ;@ r10=flags
47103  eor r10,r10,#0x20000000 ;@ Invert carry
47104  str r10,[r7,#0x4c] ;@ Save X bit
47105
47106;@ Save result:
47107  mov r1,r1,asr #24
47108;@ EaWrite: Write r1 into '(a7)+' (address in r11):
47109  and r1,r1,#0xff
47110  bic r0,r11,#0xff000000
47111  bl m68k_write8 ;@ Call write8(r0,r1) handler
47112
47113  ldr r5,[r7,#0x5c] ;@ Load Cycles
47114  ldrh r8,[r4],#2 ;@ Fetch next opcode
47115  subs r5,r5,#12 ;@ Subtract cycles
47116  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47117  b CycloneEnd
47118
47119;@ ---------- [9120] sub.b d0, -(a0) uses Op9120 ----------
47120Op9120:
47121  str r4,[r7,#0x50] ;@ Save prev PC + 2
47122  str r5,[r7,#0x5c] ;@ Save Cycles
47123
47124;@ EaCalc : Get '-(a0)' into r11:
47125  and r2,r8,#0x000f
47126  orr r2,r2,#0x8 ;@ A0-7
47127  ldr r11,[r7,r2,lsl #2]
47128  sub r11,r11,#1 ;@ Pre-decrement An
47129  str r11,[r7,r2,lsl #2]
47130;@ EaRead : Read '-(a0)' (address in r11) into r0:
47131  str r4,[r7,#0x40] ;@ Save PC
47132  bic r0,r11,#0xff000000
47133  bl m68k_read8 ;@ Call read8(r0) handler
47134
47135;@ EaCalc : Get register index into r1:
47136  and r1,r8,#0x0e00
47137;@ EaRead : Read register[r1] into r1:
47138  ldr r1,[r7,r1,lsr #7]
47139
47140;@ Do arithmetic:
47141  mov r0,r0,asl #24
47142  subs r1,r0,r1,asl #24
47143  mrs r10,cpsr ;@ r10=flags
47144  eor r10,r10,#0x20000000 ;@ Invert carry
47145  str r10,[r7,#0x4c] ;@ Save X bit
47146
47147;@ Save result:
47148  mov r1,r1,asr #24
47149;@ EaWrite: Write r1 into '-(a0)' (address in r11):
47150  and r1,r1,#0xff
47151  bic r0,r11,#0xff000000
47152  bl m68k_write8 ;@ Call write8(r0,r1) handler
47153
47154  ldr r5,[r7,#0x5c] ;@ Load Cycles
47155  ldrh r8,[r4],#2 ;@ Fetch next opcode
47156  subs r5,r5,#14 ;@ Subtract cycles
47157  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47158  b CycloneEnd
47159
47160;@ ---------- [9127] sub.b d0, -(a7) uses Op9127 ----------
47161Op9127:
47162  str r4,[r7,#0x50] ;@ Save prev PC + 2
47163  str r5,[r7,#0x5c] ;@ Save Cycles
47164
47165;@ EaCalc : Get '-(a7)' into r11:
47166  ldr r11,[r7,#0x3c] ;@ A7
47167  sub r11,r11,#2 ;@ Pre-decrement An
47168  str r11,[r7,#0x3c] ;@ A7
47169;@ EaRead : Read '-(a7)' (address in r11) into r0:
47170  str r4,[r7,#0x40] ;@ Save PC
47171  bic r0,r11,#0xff000000
47172  bl m68k_read8 ;@ Call read8(r0) handler
47173
47174;@ EaCalc : Get register index into r1:
47175  and r1,r8,#0x0e00
47176;@ EaRead : Read register[r1] into r1:
47177  ldr r1,[r7,r1,lsr #7]
47178
47179;@ Do arithmetic:
47180  mov r0,r0,asl #24
47181  subs r1,r0,r1,asl #24
47182  mrs r10,cpsr ;@ r10=flags
47183  eor r10,r10,#0x20000000 ;@ Invert carry
47184  str r10,[r7,#0x4c] ;@ Save X bit
47185
47186;@ Save result:
47187  mov r1,r1,asr #24
47188;@ EaWrite: Write r1 into '-(a7)' (address in r11):
47189  and r1,r1,#0xff
47190  bic r0,r11,#0xff000000
47191  bl m68k_write8 ;@ Call write8(r0,r1) handler
47192
47193  ldr r5,[r7,#0x5c] ;@ Load Cycles
47194  ldrh r8,[r4],#2 ;@ Fetch next opcode
47195  subs r5,r5,#14 ;@ Subtract cycles
47196  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47197  b CycloneEnd
47198
47199;@ ---------- [9128] sub.b d0, ($3333,a0) uses Op9128 ----------
47200Op9128:
47201  str r4,[r7,#0x50] ;@ Save prev PC + 2
47202  str r5,[r7,#0x5c] ;@ Save Cycles
47203
47204;@ EaCalc : Get '($3333,a0)' into r11:
47205  ldrsh r0,[r4],#2 ;@ Fetch offset
47206  and r2,r8,#0x000f
47207  ldr r2,[r7,r2,lsl #2]
47208  add r11,r0,r2 ;@ Add on offset
47209;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
47210  str r4,[r7,#0x40] ;@ Save PC
47211  bic r0,r11,#0xff000000
47212  bl m68k_read8 ;@ Call read8(r0) handler
47213
47214;@ EaCalc : Get register index into r1:
47215  and r1,r8,#0x0e00
47216;@ EaRead : Read register[r1] into r1:
47217  ldr r1,[r7,r1,lsr #7]
47218
47219;@ Do arithmetic:
47220  mov r0,r0,asl #24
47221  subs r1,r0,r1,asl #24
47222  mrs r10,cpsr ;@ r10=flags
47223  eor r10,r10,#0x20000000 ;@ Invert carry
47224  str r10,[r7,#0x4c] ;@ Save X bit
47225
47226;@ Save result:
47227  mov r1,r1,asr #24
47228;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
47229  and r1,r1,#0xff
47230  bic r0,r11,#0xff000000
47231  bl m68k_write8 ;@ Call write8(r0,r1) handler
47232
47233  ldr r5,[r7,#0x5c] ;@ Load Cycles
47234  ldrh r8,[r4],#2 ;@ Fetch next opcode
47235  subs r5,r5,#16 ;@ Subtract cycles
47236  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47237  b CycloneEnd
47238
47239;@ ---------- [9130] sub.b d0, ($33,a0,d3.w*2) uses Op9130 ----------
47240Op9130:
47241  str r4,[r7,#0x50] ;@ Save prev PC + 2
47242  str r5,[r7,#0x5c] ;@ Save Cycles
47243
47244;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
47245;@ Get extension word into r3:
47246  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
47247  mov r2,r3,lsr #10
47248  tst r3,#0x0800 ;@ Is Rn Word or Long
47249  and r2,r2,#0x3c ;@ r2=Index of Rn
47250  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
47251  ldrne   r2,[r7,r2] ;@ r2=Rn.l
47252  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
47253  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
47254  and r2,r8,#0x000f
47255  orr r2,r2,#0x8 ;@ A0-7
47256  ldr r2,[r7,r2,lsl #2]
47257  add r11,r2,r3 ;@ r11=Disp+An+Rn
47258;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
47259  str r4,[r7,#0x40] ;@ Save PC
47260  bic r0,r11,#0xff000000
47261  bl m68k_read8 ;@ Call read8(r0) handler
47262
47263;@ EaCalc : Get register index into r1:
47264  and r1,r8,#0x0e00
47265;@ EaRead : Read register[r1] into r1:
47266  ldr r1,[r7,r1,lsr #7]
47267
47268;@ Do arithmetic:
47269  mov r0,r0,asl #24
47270  subs r1,r0,r1,asl #24
47271  mrs r10,cpsr ;@ r10=flags
47272  eor r10,r10,#0x20000000 ;@ Invert carry
47273  str r10,[r7,#0x4c] ;@ Save X bit
47274
47275;@ Save result:
47276  mov r1,r1,asr #24
47277;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
47278  and r1,r1,#0xff
47279  bic r0,r11,#0xff000000
47280  bl m68k_write8 ;@ Call write8(r0,r1) handler
47281
47282  ldr r5,[r7,#0x5c] ;@ Load Cycles
47283  ldrh r8,[r4],#2 ;@ Fetch next opcode
47284  subs r5,r5,#18 ;@ Subtract cycles
47285  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47286  b CycloneEnd
47287
47288;@ ---------- [9138] sub.b d0, $3333.w uses Op9138 ----------
47289Op9138:
47290  str r4,[r7,#0x50] ;@ Save prev PC + 2
47291  str r5,[r7,#0x5c] ;@ Save Cycles
47292
47293;@ EaCalc : Get '$3333.w' into r11:
47294  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
47295;@ EaRead : Read '$3333.w' (address in r11) into r0:
47296  str r4,[r7,#0x40] ;@ Save PC
47297  bic r0,r11,#0xff000000
47298  bl m68k_read8 ;@ Call read8(r0) handler
47299
47300;@ EaCalc : Get register index into r1:
47301  and r1,r8,#0x0e00
47302;@ EaRead : Read register[r1] into r1:
47303  ldr r1,[r7,r1,lsr #7]
47304
47305;@ Do arithmetic:
47306  mov r0,r0,asl #24
47307  subs r1,r0,r1,asl #24
47308  mrs r10,cpsr ;@ r10=flags
47309  eor r10,r10,#0x20000000 ;@ Invert carry
47310  str r10,[r7,#0x4c] ;@ Save X bit
47311
47312;@ Save result:
47313  mov r1,r1,asr #24
47314;@ EaWrite: Write r1 into '$3333.w' (address in r11):
47315  and r1,r1,#0xff
47316  bic r0,r11,#0xff000000
47317  bl m68k_write8 ;@ Call write8(r0,r1) handler
47318
47319  ldr r5,[r7,#0x5c] ;@ Load Cycles
47320  ldrh r8,[r4],#2 ;@ Fetch next opcode
47321  subs r5,r5,#16 ;@ Subtract cycles
47322  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47323  b CycloneEnd
47324
47325;@ ---------- [9139] sub.b d0, $33333333.l uses Op9139 ----------
47326Op9139:
47327  str r4,[r7,#0x50] ;@ Save prev PC + 2
47328  str r5,[r7,#0x5c] ;@ Save Cycles
47329
47330;@ EaCalc : Get '$33333333.l' into r11:
47331  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
47332  ldrh r0,[r4],#2
47333  orr r11,r0,r2,lsl #16
47334;@ EaRead : Read '$33333333.l' (address in r11) into r0:
47335  str r4,[r7,#0x40] ;@ Save PC
47336  bic r0,r11,#0xff000000
47337  bl m68k_read8 ;@ Call read8(r0) handler
47338
47339;@ EaCalc : Get register index into r1:
47340  and r1,r8,#0x0e00
47341;@ EaRead : Read register[r1] into r1:
47342  ldr r1,[r7,r1,lsr #7]
47343
47344;@ Do arithmetic:
47345  mov r0,r0,asl #24
47346  subs r1,r0,r1,asl #24
47347  mrs r10,cpsr ;@ r10=flags
47348  eor r10,r10,#0x20000000 ;@ Invert carry
47349  str r10,[r7,#0x4c] ;@ Save X bit
47350
47351;@ Save result:
47352  mov r1,r1,asr #24
47353;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
47354  and r1,r1,#0xff
47355  bic r0,r11,#0xff000000
47356  bl m68k_write8 ;@ Call write8(r0,r1) handler
47357
47358  ldr r5,[r7,#0x5c] ;@ Load Cycles
47359  ldrh r8,[r4],#2 ;@ Fetch next opcode
47360  subs r5,r5,#20 ;@ Subtract cycles
47361  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47362  b CycloneEnd
47363
47364;@ ---------- [9140] subx.w d0, d0 uses Op9140 ----------
47365Op9140:
47366;@ Get src/dest reg vals
47367;@ EaCalc : Get register index into r6:
47368  and r6,r8,#0x0007
47369;@ EaRead : Read register[r6] into r6:
47370  ldr r6,[r7,r6,lsl #2]
47371
47372;@ EaCalc : Get register index into r11:
47373  and r11,r8,#0x0e00
47374  mov r11,r11,lsr #7
47375;@ EaRead : Read register[r11] into r0:
47376  ldr r0,[r7,r11]
47377
47378  mov r6,r6,asl #16
47379
47380;@ Do arithmetic:
47381;@ Get X bit:
47382  ldr r2,[r7,#0x4c]
47383  mvn r2,r2 ;@ Invert it
47384  tst r2,r2,lsl #3 ;@ Get into Carry
47385
47386  rscs r1,r6,r0,asl #16
47387  orr r3,r10,#0xb0000000 ;@ for old Z
47388  mrs r10,cpsr ;@ r10=flags
47389  eor r10,r10,#0x20000000 ;@ Invert carry
47390  str r10,[r7,#0x4c] ;@ Save X bit
47391  movs r2,r1,lsr #16
47392  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
47393  andeq r10,r10,r3 ;@ fix Z
47394
47395;@ Save result:
47396;@ EaWrite: r1 into register[r11]:
47397  mov r1,r1,lsr #16
47398  strh r1,[r7,r11]
47399
47400  ldr r6,[r7,#0x54]
47401  ldrh r8,[r4],#2 ;@ Fetch next opcode
47402  subs r5,r5,#4 ;@ Subtract cycles
47403  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47404  b CycloneEnd
47405
47406;@ ---------- [9148] subx.w -(a0), -(a0) uses Op9148 ----------
47407Op9148:
47408  str r4,[r7,#0x50] ;@ Save prev PC + 2
47409  str r5,[r7,#0x5c] ;@ Save Cycles
47410
47411;@ Get src/dest EA vals
47412;@ EaCalc : Get '-(a0)' into r0:
47413  and r2,r8,#0x000f
47414  ldr r0,[r7,r2,lsl #2]
47415  sub r0,r0,#2 ;@ Pre-decrement An
47416  str r0,[r7,r2,lsl #2]
47417;@ EaRead : Read '-(a0)' (address in r0) into r6:
47418  str r4,[r7,#0x40] ;@ Save PC
47419  bic r0,r0,#0xff000000
47420  bl m68k_read16 ;@ Call read16(r0) handler
47421  mov r6,r0,asl #16
47422
47423;@ EaCalc : Get '-(a0)' into r11:
47424  and r2,r8,#0x1e00
47425  ldr r11,[r7,r2,lsr #7]
47426  sub r11,r11,#2 ;@ Pre-decrement An
47427  str r11,[r7,r2,lsr #7]
47428;@ EaRead : Read '-(a0)' (address in r11) into r0:
47429  bic r0,r11,#0xff000000
47430  bl m68k_read16 ;@ Call read16(r0) handler
47431
47432;@ Do arithmetic:
47433;@ Get X bit:
47434  ldr r2,[r7,#0x4c]
47435  mvn r2,r2 ;@ Invert it
47436  tst r2,r2,lsl #3 ;@ Get into Carry
47437
47438  rscs r1,r6,r0,asl #16
47439  orr r3,r10,#0xb0000000 ;@ for old Z
47440  mrs r10,cpsr ;@ r10=flags
47441  eor r10,r10,#0x20000000 ;@ Invert carry
47442  str r10,[r7,#0x4c] ;@ Save X bit
47443  movs r2,r1,lsr #16
47444  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
47445  andeq r10,r10,r3 ;@ fix Z
47446
47447;@ Save result:
47448;@ EaWrite: Write r1 into '-(a0)' (address in r11):
47449  mov r1,r1,lsr #16
47450  bic r0,r11,#0xff000000
47451  bl m68k_write16 ;@ Call write16(r0,r1) handler
47452
47453  ldr r6,[r7,#0x54]
47454  ldr r5,[r7,#0x5c] ;@ Load Cycles
47455  ldrh r8,[r4],#2 ;@ Fetch next opcode
47456  subs r5,r5,#18 ;@ Subtract cycles
47457  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47458  b CycloneEnd
47459
47460;@ ---------- [9150] sub.w d0, (a0) uses Op9150 ----------
47461Op9150:
47462  str r4,[r7,#0x50] ;@ Save prev PC + 2
47463  str r5,[r7,#0x5c] ;@ Save Cycles
47464
47465;@ EaCalc : Get '(a0)' into r11:
47466  and r2,r8,#0x000f
47467  orr r2,r2,#0x8 ;@ A0-7
47468  ldr r11,[r7,r2,lsl #2]
47469;@ EaRead : Read '(a0)' (address in r11) into r0:
47470  str r4,[r7,#0x40] ;@ Save PC
47471  bic r0,r11,#0xff000000
47472  bl m68k_read16 ;@ Call read16(r0) handler
47473
47474;@ EaCalc : Get register index into r1:
47475  and r1,r8,#0x0e00
47476;@ EaRead : Read register[r1] into r1:
47477  ldr r1,[r7,r1,lsr #7]
47478
47479;@ Do arithmetic:
47480  mov r0,r0,asl #16
47481  subs r1,r0,r1,asl #16
47482  mrs r10,cpsr ;@ r10=flags
47483  eor r10,r10,#0x20000000 ;@ Invert carry
47484  str r10,[r7,#0x4c] ;@ Save X bit
47485
47486;@ Save result:
47487  mov r1,r1,asr #16
47488;@ EaWrite: Write r1 into '(a0)' (address in r11):
47489  uxth r1,r1 ;@ zero extend
47490  bic r0,r11,#0xff000000
47491  bl m68k_write16 ;@ Call write16(r0,r1) handler
47492
47493  ldr r5,[r7,#0x5c] ;@ Load Cycles
47494  ldrh r8,[r4],#2 ;@ Fetch next opcode
47495  subs r5,r5,#12 ;@ Subtract cycles
47496  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47497  b CycloneEnd
47498
47499;@ ---------- [9158] sub.w d0, (a0)+ uses Op9158 ----------
47500Op9158:
47501  str r4,[r7,#0x50] ;@ Save prev PC + 2
47502  str r5,[r7,#0x5c] ;@ Save Cycles
47503
47504;@ EaCalc : Get '(a0)+' into r11:
47505  and r2,r8,#0x000f
47506  ldr r11,[r7,r2,lsl #2]
47507  add r3,r11,#2 ;@ Post-increment An
47508  str r3,[r7,r2,lsl #2]
47509;@ EaRead : Read '(a0)+' (address in r11) into r0:
47510  str r4,[r7,#0x40] ;@ Save PC
47511  bic r0,r11,#0xff000000
47512  bl m68k_read16 ;@ Call read16(r0) handler
47513
47514;@ EaCalc : Get register index into r1:
47515  and r1,r8,#0x0e00
47516;@ EaRead : Read register[r1] into r1:
47517  ldr r1,[r7,r1,lsr #7]
47518
47519;@ Do arithmetic:
47520  mov r0,r0,asl #16
47521  subs r1,r0,r1,asl #16
47522  mrs r10,cpsr ;@ r10=flags
47523  eor r10,r10,#0x20000000 ;@ Invert carry
47524  str r10,[r7,#0x4c] ;@ Save X bit
47525
47526;@ Save result:
47527  mov r1,r1,asr #16
47528;@ EaWrite: Write r1 into '(a0)+' (address in r11):
47529  uxth r1,r1 ;@ zero extend
47530  bic r0,r11,#0xff000000
47531  bl m68k_write16 ;@ Call write16(r0,r1) handler
47532
47533  ldr r5,[r7,#0x5c] ;@ Load Cycles
47534  ldrh r8,[r4],#2 ;@ Fetch next opcode
47535  subs r5,r5,#12 ;@ Subtract cycles
47536  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47537  b CycloneEnd
47538
47539;@ ---------- [9160] sub.w d0, -(a0) uses Op9160 ----------
47540Op9160:
47541  str r4,[r7,#0x50] ;@ Save prev PC + 2
47542  str r5,[r7,#0x5c] ;@ Save Cycles
47543
47544;@ EaCalc : Get '-(a0)' into r11:
47545  and r2,r8,#0x000f
47546  orr r2,r2,#0x8 ;@ A0-7
47547  ldr r11,[r7,r2,lsl #2]
47548  sub r11,r11,#2 ;@ Pre-decrement An
47549  str r11,[r7,r2,lsl #2]
47550;@ EaRead : Read '-(a0)' (address in r11) into r0:
47551  str r4,[r7,#0x40] ;@ Save PC
47552  bic r0,r11,#0xff000000
47553  bl m68k_read16 ;@ Call read16(r0) handler
47554
47555;@ EaCalc : Get register index into r1:
47556  and r1,r8,#0x0e00
47557;@ EaRead : Read register[r1] into r1:
47558  ldr r1,[r7,r1,lsr #7]
47559
47560;@ Do arithmetic:
47561  mov r0,r0,asl #16
47562  subs r1,r0,r1,asl #16
47563  mrs r10,cpsr ;@ r10=flags
47564  eor r10,r10,#0x20000000 ;@ Invert carry
47565  str r10,[r7,#0x4c] ;@ Save X bit
47566
47567;@ Save result:
47568  mov r1,r1,asr #16
47569;@ EaWrite: Write r1 into '-(a0)' (address in r11):
47570  uxth r1,r1 ;@ zero extend
47571  bic r0,r11,#0xff000000
47572  bl m68k_write16 ;@ Call write16(r0,r1) handler
47573
47574  ldr r5,[r7,#0x5c] ;@ Load Cycles
47575  ldrh r8,[r4],#2 ;@ Fetch next opcode
47576  subs r5,r5,#14 ;@ Subtract cycles
47577  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47578  b CycloneEnd
47579
47580;@ ---------- [9168] sub.w d0, ($3333,a0) uses Op9168 ----------
47581Op9168:
47582  str r4,[r7,#0x50] ;@ Save prev PC + 2
47583  str r5,[r7,#0x5c] ;@ Save Cycles
47584
47585;@ EaCalc : Get '($3333,a0)' into r11:
47586  ldrsh r0,[r4],#2 ;@ Fetch offset
47587  and r2,r8,#0x000f
47588  ldr r2,[r7,r2,lsl #2]
47589  add r11,r0,r2 ;@ Add on offset
47590;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
47591  str r4,[r7,#0x40] ;@ Save PC
47592  bic r0,r11,#0xff000000
47593  bl m68k_read16 ;@ Call read16(r0) handler
47594
47595;@ EaCalc : Get register index into r1:
47596  and r1,r8,#0x0e00
47597;@ EaRead : Read register[r1] into r1:
47598  ldr r1,[r7,r1,lsr #7]
47599
47600;@ Do arithmetic:
47601  mov r0,r0,asl #16
47602  subs r1,r0,r1,asl #16
47603  mrs r10,cpsr ;@ r10=flags
47604  eor r10,r10,#0x20000000 ;@ Invert carry
47605  str r10,[r7,#0x4c] ;@ Save X bit
47606
47607;@ Save result:
47608  mov r1,r1,asr #16
47609;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
47610  uxth r1,r1 ;@ zero extend
47611  bic r0,r11,#0xff000000
47612  bl m68k_write16 ;@ Call write16(r0,r1) handler
47613
47614  ldr r5,[r7,#0x5c] ;@ Load Cycles
47615  ldrh r8,[r4],#2 ;@ Fetch next opcode
47616  subs r5,r5,#16 ;@ Subtract cycles
47617  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47618  b CycloneEnd
47619
47620;@ ---------- [9170] sub.w d0, ($33,a0,d3.w*2) uses Op9170 ----------
47621Op9170:
47622  str r4,[r7,#0x50] ;@ Save prev PC + 2
47623  str r5,[r7,#0x5c] ;@ Save Cycles
47624
47625;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
47626;@ Get extension word into r3:
47627  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
47628  mov r2,r3,lsr #10
47629  tst r3,#0x0800 ;@ Is Rn Word or Long
47630  and r2,r2,#0x3c ;@ r2=Index of Rn
47631  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
47632  ldrne   r2,[r7,r2] ;@ r2=Rn.l
47633  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
47634  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
47635  and r2,r8,#0x000f
47636  orr r2,r2,#0x8 ;@ A0-7
47637  ldr r2,[r7,r2,lsl #2]
47638  add r11,r2,r3 ;@ r11=Disp+An+Rn
47639;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
47640  str r4,[r7,#0x40] ;@ Save PC
47641  bic r0,r11,#0xff000000
47642  bl m68k_read16 ;@ Call read16(r0) handler
47643
47644;@ EaCalc : Get register index into r1:
47645  and r1,r8,#0x0e00
47646;@ EaRead : Read register[r1] into r1:
47647  ldr r1,[r7,r1,lsr #7]
47648
47649;@ Do arithmetic:
47650  mov r0,r0,asl #16
47651  subs r1,r0,r1,asl #16
47652  mrs r10,cpsr ;@ r10=flags
47653  eor r10,r10,#0x20000000 ;@ Invert carry
47654  str r10,[r7,#0x4c] ;@ Save X bit
47655
47656;@ Save result:
47657  mov r1,r1,asr #16
47658;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
47659  uxth r1,r1 ;@ zero extend
47660  bic r0,r11,#0xff000000
47661  bl m68k_write16 ;@ Call write16(r0,r1) handler
47662
47663  ldr r5,[r7,#0x5c] ;@ Load Cycles
47664  ldrh r8,[r4],#2 ;@ Fetch next opcode
47665  subs r5,r5,#18 ;@ Subtract cycles
47666  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47667  b CycloneEnd
47668
47669;@ ---------- [9178] sub.w d0, $3333.w uses Op9178 ----------
47670Op9178:
47671  str r4,[r7,#0x50] ;@ Save prev PC + 2
47672  str r5,[r7,#0x5c] ;@ Save Cycles
47673
47674;@ EaCalc : Get '$3333.w' into r11:
47675  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
47676;@ EaRead : Read '$3333.w' (address in r11) into r0:
47677  str r4,[r7,#0x40] ;@ Save PC
47678  bic r0,r11,#0xff000000
47679  bl m68k_read16 ;@ Call read16(r0) handler
47680
47681;@ EaCalc : Get register index into r1:
47682  and r1,r8,#0x0e00
47683;@ EaRead : Read register[r1] into r1:
47684  ldr r1,[r7,r1,lsr #7]
47685
47686;@ Do arithmetic:
47687  mov r0,r0,asl #16
47688  subs r1,r0,r1,asl #16
47689  mrs r10,cpsr ;@ r10=flags
47690  eor r10,r10,#0x20000000 ;@ Invert carry
47691  str r10,[r7,#0x4c] ;@ Save X bit
47692
47693;@ Save result:
47694  mov r1,r1,asr #16
47695;@ EaWrite: Write r1 into '$3333.w' (address in r11):
47696  uxth r1,r1 ;@ zero extend
47697  bic r0,r11,#0xff000000
47698  bl m68k_write16 ;@ Call write16(r0,r1) handler
47699
47700  ldr r5,[r7,#0x5c] ;@ Load Cycles
47701  ldrh r8,[r4],#2 ;@ Fetch next opcode
47702  subs r5,r5,#16 ;@ Subtract cycles
47703  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47704  b CycloneEnd
47705
47706;@ ---------- [9179] sub.w d0, $33333333.l uses Op9179 ----------
47707Op9179:
47708  str r4,[r7,#0x50] ;@ Save prev PC + 2
47709  str r5,[r7,#0x5c] ;@ Save Cycles
47710
47711;@ EaCalc : Get '$33333333.l' into r11:
47712  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
47713  ldrh r0,[r4],#2
47714  orr r11,r0,r2,lsl #16
47715;@ EaRead : Read '$33333333.l' (address in r11) into r0:
47716  str r4,[r7,#0x40] ;@ Save PC
47717  bic r0,r11,#0xff000000
47718  bl m68k_read16 ;@ Call read16(r0) handler
47719
47720;@ EaCalc : Get register index into r1:
47721  and r1,r8,#0x0e00
47722;@ EaRead : Read register[r1] into r1:
47723  ldr r1,[r7,r1,lsr #7]
47724
47725;@ Do arithmetic:
47726  mov r0,r0,asl #16
47727  subs r1,r0,r1,asl #16
47728  mrs r10,cpsr ;@ r10=flags
47729  eor r10,r10,#0x20000000 ;@ Invert carry
47730  str r10,[r7,#0x4c] ;@ Save X bit
47731
47732;@ Save result:
47733  mov r1,r1,asr #16
47734;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
47735  uxth r1,r1 ;@ zero extend
47736  bic r0,r11,#0xff000000
47737  bl m68k_write16 ;@ Call write16(r0,r1) handler
47738
47739  ldr r5,[r7,#0x5c] ;@ Load Cycles
47740  ldrh r8,[r4],#2 ;@ Fetch next opcode
47741  subs r5,r5,#20 ;@ Subtract cycles
47742  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47743  b CycloneEnd
47744
47745;@ ---------- [9180] subx.l d0, d0 uses Op9180 ----------
47746Op9180:
47747;@ Get src/dest reg vals
47748;@ EaCalc : Get register index into r6:
47749  and r6,r8,#0x0007
47750;@ EaRead : Read register[r6] into r6:
47751  ldr r6,[r7,r6,lsl #2]
47752
47753;@ EaCalc : Get register index into r11:
47754  and r11,r8,#0x0e00
47755;@ EaRead : Read register[r11] into r0:
47756  ldr r0,[r7,r11,lsr #7]
47757
47758;@ Do arithmetic:
47759;@ Get X bit:
47760  ldr r2,[r7,#0x4c]
47761  mvn r2,r2 ;@ Invert it
47762  tst r2,r2,lsl #3 ;@ Get into Carry
47763
47764  rscs r1,r6,r0
47765  orr r3,r10,#0xb0000000 ;@ for old Z
47766  mrs r10,cpsr ;@ r10=flags
47767  eor r10,r10,#0x20000000 ;@ Invert carry
47768  str r10,[r7,#0x4c] ;@ Save X bit
47769  andeq r10,r10,r3 ;@ fix Z
47770
47771;@ Save result:
47772;@ EaWrite: r1 into register[r11]:
47773  str r1,[r7,r11,lsr #7]
47774
47775  ldr r6,[r7,#0x54]
47776  ldrh r8,[r4],#2 ;@ Fetch next opcode
47777  subs r5,r5,#8 ;@ Subtract cycles
47778  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47779  b CycloneEnd
47780
47781;@ ---------- [9188] subx.l -(a0), -(a0) uses Op9188 ----------
47782Op9188:
47783  str r4,[r7,#0x50] ;@ Save prev PC + 2
47784  str r5,[r7,#0x5c] ;@ Save Cycles
47785
47786;@ Get src/dest EA vals
47787;@ EaCalc : Get '-(a0)' into r0:
47788  and r2,r8,#0x000f
47789  ldr r0,[r7,r2,lsl #2]
47790  sub r0,r0,#4 ;@ Pre-decrement An
47791  str r0,[r7,r2,lsl #2]
47792;@ EaRead : Read '-(a0)' (address in r0) into r6:
47793  str r4,[r7,#0x40] ;@ Save PC
47794  bic r0,r0,#0xff000000
47795  bl m68k_read32 ;@ Call read32(r0) handler
47796  mov r6,r0
47797
47798;@ EaCalc : Get '-(a0)' into r11:
47799  and r2,r8,#0x1e00
47800  ldr r11,[r7,r2,lsr #7]
47801  sub r11,r11,#4 ;@ Pre-decrement An
47802  str r11,[r7,r2,lsr #7]
47803;@ EaRead : Read '-(a0)' (address in r11) into r0:
47804  bic r0,r11,#0xff000000
47805  bl m68k_read32 ;@ Call read32(r0) handler
47806
47807;@ Do arithmetic:
47808;@ Get X bit:
47809  ldr r2,[r7,#0x4c]
47810  mvn r2,r2 ;@ Invert it
47811  tst r2,r2,lsl #3 ;@ Get into Carry
47812
47813  rscs r1,r6,r0
47814  orr r3,r10,#0xb0000000 ;@ for old Z
47815  mrs r10,cpsr ;@ r10=flags
47816  eor r10,r10,#0x20000000 ;@ Invert carry
47817  str r10,[r7,#0x4c] ;@ Save X bit
47818  andeq r10,r10,r3 ;@ fix Z
47819
47820;@ Save result:
47821;@ EaWrite: Write r1 into '-(a0)' (address in r11):
47822  bic r0,r11,#0xff000000
47823  bl m68k_write32 ;@ Call write32(r0,r1) handler
47824
47825  ldr r6,[r7,#0x54]
47826  ldr r5,[r7,#0x5c] ;@ Load Cycles
47827  ldrh r8,[r4],#2 ;@ Fetch next opcode
47828  subs r5,r5,#30 ;@ Subtract cycles
47829  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47830  b CycloneEnd
47831
47832;@ ---------- [9190] sub.l d0, (a0) uses Op9190 ----------
47833Op9190:
47834  str r4,[r7,#0x50] ;@ Save prev PC + 2
47835  str r5,[r7,#0x5c] ;@ Save Cycles
47836
47837;@ EaCalc : Get '(a0)' into r11:
47838  and r2,r8,#0x000f
47839  orr r2,r2,#0x8 ;@ A0-7
47840  ldr r11,[r7,r2,lsl #2]
47841;@ EaRead : Read '(a0)' (address in r11) into r0:
47842  str r4,[r7,#0x40] ;@ Save PC
47843  bic r0,r11,#0xff000000
47844  bl m68k_read32 ;@ Call read32(r0) handler
47845
47846;@ EaCalc : Get register index into r1:
47847  and r1,r8,#0x0e00
47848;@ EaRead : Read register[r1] into r1:
47849  ldr r1,[r7,r1,lsr #7]
47850
47851;@ Do arithmetic:
47852  subs r1,r0,r1
47853  mrs r10,cpsr ;@ r10=flags
47854  eor r10,r10,#0x20000000 ;@ Invert carry
47855  str r10,[r7,#0x4c] ;@ Save X bit
47856
47857;@ Save result:
47858;@ EaWrite: Write r1 into '(a0)' (address in r11):
47859  bic r0,r11,#0xff000000
47860  bl m68k_write32 ;@ Call write32(r0,r1) handler
47861
47862  ldr r5,[r7,#0x5c] ;@ Load Cycles
47863  ldrh r8,[r4],#2 ;@ Fetch next opcode
47864  subs r5,r5,#20 ;@ Subtract cycles
47865  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47866  b CycloneEnd
47867
47868;@ ---------- [9198] sub.l d0, (a0)+ uses Op9198 ----------
47869Op9198:
47870  str r4,[r7,#0x50] ;@ Save prev PC + 2
47871  str r5,[r7,#0x5c] ;@ Save Cycles
47872
47873;@ EaCalc : Get '(a0)+' into r11:
47874  and r2,r8,#0x000f
47875  ldr r11,[r7,r2,lsl #2]
47876  add r3,r11,#4 ;@ Post-increment An
47877  str r3,[r7,r2,lsl #2]
47878;@ EaRead : Read '(a0)+' (address in r11) into r0:
47879  str r4,[r7,#0x40] ;@ Save PC
47880  bic r0,r11,#0xff000000
47881  bl m68k_read32 ;@ Call read32(r0) handler
47882
47883;@ EaCalc : Get register index into r1:
47884  and r1,r8,#0x0e00
47885;@ EaRead : Read register[r1] into r1:
47886  ldr r1,[r7,r1,lsr #7]
47887
47888;@ Do arithmetic:
47889  subs r1,r0,r1
47890  mrs r10,cpsr ;@ r10=flags
47891  eor r10,r10,#0x20000000 ;@ Invert carry
47892  str r10,[r7,#0x4c] ;@ Save X bit
47893
47894;@ Save result:
47895;@ EaWrite: Write r1 into '(a0)+' (address in r11):
47896  bic r0,r11,#0xff000000
47897  bl m68k_write32 ;@ Call write32(r0,r1) handler
47898
47899  ldr r5,[r7,#0x5c] ;@ Load Cycles
47900  ldrh r8,[r4],#2 ;@ Fetch next opcode
47901  subs r5,r5,#20 ;@ Subtract cycles
47902  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47903  b CycloneEnd
47904
47905;@ ---------- [91a0] sub.l d0, -(a0) uses Op91a0 ----------
47906Op91a0:
47907  str r4,[r7,#0x50] ;@ Save prev PC + 2
47908  str r5,[r7,#0x5c] ;@ Save Cycles
47909
47910;@ EaCalc : Get '-(a0)' into r11:
47911  and r2,r8,#0x000f
47912  orr r2,r2,#0x8 ;@ A0-7
47913  ldr r11,[r7,r2,lsl #2]
47914  sub r11,r11,#4 ;@ Pre-decrement An
47915  str r11,[r7,r2,lsl #2]
47916;@ EaRead : Read '-(a0)' (address in r11) into r0:
47917  str r4,[r7,#0x40] ;@ Save PC
47918  bic r0,r11,#0xff000000
47919  bl m68k_read32 ;@ Call read32(r0) handler
47920
47921;@ EaCalc : Get register index into r1:
47922  and r1,r8,#0x0e00
47923;@ EaRead : Read register[r1] into r1:
47924  ldr r1,[r7,r1,lsr #7]
47925
47926;@ Do arithmetic:
47927  subs r1,r0,r1
47928  mrs r10,cpsr ;@ r10=flags
47929  eor r10,r10,#0x20000000 ;@ Invert carry
47930  str r10,[r7,#0x4c] ;@ Save X bit
47931
47932;@ Save result:
47933;@ EaWrite: Write r1 into '-(a0)' (address in r11):
47934  bic r0,r11,#0xff000000
47935  bl m68k_write32 ;@ Call write32(r0,r1) handler
47936
47937  ldr r5,[r7,#0x5c] ;@ Load Cycles
47938  ldrh r8,[r4],#2 ;@ Fetch next opcode
47939  subs r5,r5,#22 ;@ Subtract cycles
47940  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47941  b CycloneEnd
47942
47943;@ ---------- [91a8] sub.l d0, ($3333,a0) uses Op91a8 ----------
47944Op91a8:
47945  str r4,[r7,#0x50] ;@ Save prev PC + 2
47946  str r5,[r7,#0x5c] ;@ Save Cycles
47947
47948;@ EaCalc : Get '($3333,a0)' into r11:
47949  ldrsh r0,[r4],#2 ;@ Fetch offset
47950  and r2,r8,#0x000f
47951  ldr r2,[r7,r2,lsl #2]
47952  add r11,r0,r2 ;@ Add on offset
47953;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
47954  str r4,[r7,#0x40] ;@ Save PC
47955  bic r0,r11,#0xff000000
47956  bl m68k_read32 ;@ Call read32(r0) handler
47957
47958;@ EaCalc : Get register index into r1:
47959  and r1,r8,#0x0e00
47960;@ EaRead : Read register[r1] into r1:
47961  ldr r1,[r7,r1,lsr #7]
47962
47963;@ Do arithmetic:
47964  subs r1,r0,r1
47965  mrs r10,cpsr ;@ r10=flags
47966  eor r10,r10,#0x20000000 ;@ Invert carry
47967  str r10,[r7,#0x4c] ;@ Save X bit
47968
47969;@ Save result:
47970;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
47971  bic r0,r11,#0xff000000
47972  bl m68k_write32 ;@ Call write32(r0,r1) handler
47973
47974  ldr r5,[r7,#0x5c] ;@ Load Cycles
47975  ldrh r8,[r4],#2 ;@ Fetch next opcode
47976  subs r5,r5,#24 ;@ Subtract cycles
47977  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47978  b CycloneEnd
47979
47980;@ ---------- [91b0] sub.l d0, ($33,a0,d3.w*2) uses Op91b0 ----------
47981Op91b0:
47982  str r4,[r7,#0x50] ;@ Save prev PC + 2
47983  str r5,[r7,#0x5c] ;@ Save Cycles
47984
47985;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
47986;@ Get extension word into r3:
47987  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
47988  mov r2,r3,lsr #10
47989  tst r3,#0x0800 ;@ Is Rn Word or Long
47990  and r2,r2,#0x3c ;@ r2=Index of Rn
47991  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
47992  ldrne   r2,[r7,r2] ;@ r2=Rn.l
47993  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
47994  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
47995  and r2,r8,#0x000f
47996  orr r2,r2,#0x8 ;@ A0-7
47997  ldr r2,[r7,r2,lsl #2]
47998  add r11,r2,r3 ;@ r11=Disp+An+Rn
47999;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
48000  str r4,[r7,#0x40] ;@ Save PC
48001  bic r0,r11,#0xff000000
48002  bl m68k_read32 ;@ Call read32(r0) handler
48003
48004;@ EaCalc : Get register index into r1:
48005  and r1,r8,#0x0e00
48006;@ EaRead : Read register[r1] into r1:
48007  ldr r1,[r7,r1,lsr #7]
48008
48009;@ Do arithmetic:
48010  subs r1,r0,r1
48011  mrs r10,cpsr ;@ r10=flags
48012  eor r10,r10,#0x20000000 ;@ Invert carry
48013  str r10,[r7,#0x4c] ;@ Save X bit
48014
48015;@ Save result:
48016;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
48017  bic r0,r11,#0xff000000
48018  bl m68k_write32 ;@ Call write32(r0,r1) handler
48019
48020  ldr r5,[r7,#0x5c] ;@ Load Cycles
48021  ldrh r8,[r4],#2 ;@ Fetch next opcode
48022  subs r5,r5,#26 ;@ Subtract cycles
48023  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48024  b CycloneEnd
48025
48026;@ ---------- [91b8] sub.l d0, $3333.w uses Op91b8 ----------
48027Op91b8:
48028  str r4,[r7,#0x50] ;@ Save prev PC + 2
48029  str r5,[r7,#0x5c] ;@ Save Cycles
48030
48031;@ EaCalc : Get '$3333.w' into r11:
48032  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
48033;@ EaRead : Read '$3333.w' (address in r11) into r0:
48034  str r4,[r7,#0x40] ;@ Save PC
48035  bic r0,r11,#0xff000000
48036  bl m68k_read32 ;@ Call read32(r0) handler
48037
48038;@ EaCalc : Get register index into r1:
48039  and r1,r8,#0x0e00
48040;@ EaRead : Read register[r1] into r1:
48041  ldr r1,[r7,r1,lsr #7]
48042
48043;@ Do arithmetic:
48044  subs r1,r0,r1
48045  mrs r10,cpsr ;@ r10=flags
48046  eor r10,r10,#0x20000000 ;@ Invert carry
48047  str r10,[r7,#0x4c] ;@ Save X bit
48048
48049;@ Save result:
48050;@ EaWrite: Write r1 into '$3333.w' (address in r11):
48051  bic r0,r11,#0xff000000
48052  bl m68k_write32 ;@ Call write32(r0,r1) handler
48053
48054  ldr r5,[r7,#0x5c] ;@ Load Cycles
48055  ldrh r8,[r4],#2 ;@ Fetch next opcode
48056  subs r5,r5,#24 ;@ Subtract cycles
48057  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48058  b CycloneEnd
48059
48060;@ ---------- [91b9] sub.l d0, $33333333.l uses Op91b9 ----------
48061Op91b9:
48062  str r4,[r7,#0x50] ;@ Save prev PC + 2
48063  str r5,[r7,#0x5c] ;@ Save Cycles
48064
48065;@ EaCalc : Get '$33333333.l' into r11:
48066  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
48067  ldrh r0,[r4],#2
48068  orr r11,r0,r2,lsl #16
48069;@ EaRead : Read '$33333333.l' (address in r11) into r0:
48070  str r4,[r7,#0x40] ;@ Save PC
48071  bic r0,r11,#0xff000000
48072  bl m68k_read32 ;@ Call read32(r0) handler
48073
48074;@ EaCalc : Get register index into r1:
48075  and r1,r8,#0x0e00
48076;@ EaRead : Read register[r1] into r1:
48077  ldr r1,[r7,r1,lsr #7]
48078
48079;@ Do arithmetic:
48080  subs r1,r0,r1
48081  mrs r10,cpsr ;@ r10=flags
48082  eor r10,r10,#0x20000000 ;@ Invert carry
48083  str r10,[r7,#0x4c] ;@ Save X bit
48084
48085;@ Save result:
48086;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
48087  bic r0,r11,#0xff000000
48088  bl m68k_write32 ;@ Call write32(r0,r1) handler
48089
48090  ldr r5,[r7,#0x5c] ;@ Load Cycles
48091  ldrh r8,[r4],#2 ;@ Fetch next opcode
48092  subs r5,r5,#28 ;@ Subtract cycles
48093  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48094  b CycloneEnd
48095
48096;@ ---------- [91c0] suba.l d0, a0 uses Op91c0 ----------
48097Op91c0:
48098;@ EaCalc : Get register index into r0:
48099  and r0,r8,#0x000f
48100;@ EaRead : Read register[r0] into r0:
48101  ldr r0,[r7,r0,lsl #2]
48102
48103;@ EaCalc : Get register index into r11:
48104  and r11,r8,#0x1e00
48105;@ EaRead : Read register[r11] into r1:
48106  ldr r1,[r7,r11,lsr #7]
48107
48108  sub r1,r1,r0
48109
48110;@ EaWrite: r1 into register[r11]:
48111  str r1,[r7,r11,lsr #7]
48112
48113  ldrh r8,[r4],#2 ;@ Fetch next opcode
48114  subs r5,r5,#8 ;@ Subtract cycles
48115  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48116  b CycloneEnd
48117
48118;@ ---------- [91d0] suba.l (a0), a0 uses Op91d0 ----------
48119Op91d0:
48120  str r4,[r7,#0x50] ;@ Save prev PC + 2
48121  str r5,[r7,#0x5c] ;@ Save Cycles
48122
48123;@ EaCalc : Get '(a0)' into r0:
48124  and r2,r8,#0x000f
48125  orr r2,r2,#0x8 ;@ A0-7
48126  ldr r0,[r7,r2,lsl #2]
48127;@ EaRead : Read '(a0)' (address in r0) into r0:
48128  str r4,[r7,#0x40] ;@ Save PC
48129  bic r0,r0,#0xff000000
48130  bl m68k_read32 ;@ Call read32(r0) handler
48131
48132;@ EaCalc : Get register index into r11:
48133  and r11,r8,#0x1e00
48134;@ EaRead : Read register[r11] into r1:
48135  ldr r1,[r7,r11,lsr #7]
48136
48137  sub r1,r1,r0
48138
48139;@ EaWrite: r1 into register[r11]:
48140  str r1,[r7,r11,lsr #7]
48141
48142  ldr r5,[r7,#0x5c] ;@ Load Cycles
48143  ldrh r8,[r4],#2 ;@ Fetch next opcode
48144  subs r5,r5,#14 ;@ Subtract cycles
48145  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48146  b CycloneEnd
48147
48148;@ ---------- [91d8] suba.l (a0)+, a0 uses Op91d8 ----------
48149Op91d8:
48150  str r4,[r7,#0x50] ;@ Save prev PC + 2
48151  str r5,[r7,#0x5c] ;@ Save Cycles
48152
48153;@ EaCalc : Get '(a0)+' into r0:
48154  and r2,r8,#0x000f
48155  ldr r0,[r7,r2,lsl #2]
48156  add r3,r0,#4 ;@ Post-increment An
48157  str r3,[r7,r2,lsl #2]
48158;@ EaRead : Read '(a0)+' (address in r0) into r0:
48159  str r4,[r7,#0x40] ;@ Save PC
48160  bic r0,r0,#0xff000000
48161  bl m68k_read32 ;@ Call read32(r0) handler
48162
48163;@ EaCalc : Get register index into r11:
48164  and r11,r8,#0x1e00
48165;@ EaRead : Read register[r11] into r1:
48166  ldr r1,[r7,r11,lsr #7]
48167
48168  sub r1,r1,r0
48169
48170;@ EaWrite: r1 into register[r11]:
48171  str r1,[r7,r11,lsr #7]
48172
48173  ldr r5,[r7,#0x5c] ;@ Load Cycles
48174  ldrh r8,[r4],#2 ;@ Fetch next opcode
48175  subs r5,r5,#14 ;@ Subtract cycles
48176  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48177  b CycloneEnd
48178
48179;@ ---------- [91e0] suba.l -(a0), a0 uses Op91e0 ----------
48180Op91e0:
48181  str r4,[r7,#0x50] ;@ Save prev PC + 2
48182  str r5,[r7,#0x5c] ;@ Save Cycles
48183
48184;@ EaCalc : Get '-(a0)' into r0:
48185  and r2,r8,#0x000f
48186  orr r2,r2,#0x8 ;@ A0-7
48187  ldr r0,[r7,r2,lsl #2]
48188  sub r0,r0,#4 ;@ Pre-decrement An
48189  str r0,[r7,r2,lsl #2]
48190;@ EaRead : Read '-(a0)' (address in r0) into r0:
48191  str r4,[r7,#0x40] ;@ Save PC
48192  bic r0,r0,#0xff000000
48193  bl m68k_read32 ;@ Call read32(r0) handler
48194
48195;@ EaCalc : Get register index into r11:
48196  and r11,r8,#0x1e00
48197;@ EaRead : Read register[r11] into r1:
48198  ldr r1,[r7,r11,lsr #7]
48199
48200  sub r1,r1,r0
48201
48202;@ EaWrite: r1 into register[r11]:
48203  str r1,[r7,r11,lsr #7]
48204
48205  ldr r5,[r7,#0x5c] ;@ Load Cycles
48206  ldrh r8,[r4],#2 ;@ Fetch next opcode
48207  subs r5,r5,#16 ;@ Subtract cycles
48208  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48209  b CycloneEnd
48210
48211;@ ---------- [91e8] suba.l ($3333,a0), a0 uses Op91e8 ----------
48212Op91e8:
48213  str r4,[r7,#0x50] ;@ Save prev PC + 2
48214  str r5,[r7,#0x5c] ;@ Save Cycles
48215
48216;@ EaCalc : Get '($3333,a0)' into r0:
48217  ldrsh r0,[r4],#2 ;@ Fetch offset
48218  and r2,r8,#0x000f
48219  ldr r2,[r7,r2,lsl #2]
48220  add r0,r0,r2 ;@ Add on offset
48221;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
48222  str r4,[r7,#0x40] ;@ Save PC
48223  bic r0,r0,#0xff000000
48224  bl m68k_read32 ;@ Call read32(r0) handler
48225
48226;@ EaCalc : Get register index into r11:
48227  and r11,r8,#0x1e00
48228;@ EaRead : Read register[r11] into r1:
48229  ldr r1,[r7,r11,lsr #7]
48230
48231  sub r1,r1,r0
48232
48233;@ EaWrite: r1 into register[r11]:
48234  str r1,[r7,r11,lsr #7]
48235
48236  ldr r5,[r7,#0x5c] ;@ Load Cycles
48237  ldrh r8,[r4],#2 ;@ Fetch next opcode
48238  subs r5,r5,#18 ;@ Subtract cycles
48239  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48240  b CycloneEnd
48241
48242;@ ---------- [91f0] suba.l ($33,a0,d3.w*2), a0 uses Op91f0 ----------
48243Op91f0:
48244  str r4,[r7,#0x50] ;@ Save prev PC + 2
48245  str r5,[r7,#0x5c] ;@ Save Cycles
48246
48247;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
48248;@ Get extension word into r3:
48249  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
48250  mov r2,r3,lsr #10
48251  tst r3,#0x0800 ;@ Is Rn Word or Long
48252  and r2,r2,#0x3c ;@ r2=Index of Rn
48253  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
48254  ldrne   r2,[r7,r2] ;@ r2=Rn.l
48255  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
48256  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
48257  and r2,r8,#0x000f
48258  orr r2,r2,#0x8 ;@ A0-7
48259  ldr r2,[r7,r2,lsl #2]
48260  add r0,r2,r3 ;@ r0=Disp+An+Rn
48261;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
48262  str r4,[r7,#0x40] ;@ Save PC
48263  bic r0,r0,#0xff000000
48264  bl m68k_read32 ;@ Call read32(r0) handler
48265
48266;@ EaCalc : Get register index into r11:
48267  and r11,r8,#0x1e00
48268;@ EaRead : Read register[r11] into r1:
48269  ldr r1,[r7,r11,lsr #7]
48270
48271  sub r1,r1,r0
48272
48273;@ EaWrite: r1 into register[r11]:
48274  str r1,[r7,r11,lsr #7]
48275
48276  ldr r5,[r7,#0x5c] ;@ Load Cycles
48277  ldrh r8,[r4],#2 ;@ Fetch next opcode
48278  subs r5,r5,#20 ;@ Subtract cycles
48279  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48280  b CycloneEnd
48281
48282;@ ---------- [91f8] suba.l $3333.w, a0 uses Op91f8 ----------
48283Op91f8:
48284  str r4,[r7,#0x50] ;@ Save prev PC + 2
48285  str r5,[r7,#0x5c] ;@ Save Cycles
48286
48287;@ EaCalc : Get '$3333.w' into r0:
48288  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
48289;@ EaRead : Read '$3333.w' (address in r0) into r0:
48290  str r4,[r7,#0x40] ;@ Save PC
48291  bic r0,r0,#0xff000000
48292  bl m68k_read32 ;@ Call read32(r0) handler
48293
48294;@ EaCalc : Get register index into r11:
48295  and r11,r8,#0x1e00
48296;@ EaRead : Read register[r11] into r1:
48297  ldr r1,[r7,r11,lsr #7]
48298
48299  sub r1,r1,r0
48300
48301;@ EaWrite: r1 into register[r11]:
48302  str r1,[r7,r11,lsr #7]
48303
48304  ldr r5,[r7,#0x5c] ;@ Load Cycles
48305  ldrh r8,[r4],#2 ;@ Fetch next opcode
48306  subs r5,r5,#18 ;@ Subtract cycles
48307  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48308  b CycloneEnd
48309
48310;@ ---------- [91f9] suba.l $33333333.l, a0 uses Op91f9 ----------
48311Op91f9:
48312  str r4,[r7,#0x50] ;@ Save prev PC + 2
48313  str r5,[r7,#0x5c] ;@ Save Cycles
48314
48315;@ EaCalc : Get '$33333333.l' into r0:
48316  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
48317  ldrh r0,[r4],#2
48318  orr r0,r0,r2,lsl #16
48319;@ EaRead : Read '$33333333.l' (address in r0) into r0:
48320  str r4,[r7,#0x40] ;@ Save PC
48321  bic r0,r0,#0xff000000
48322  bl m68k_read32 ;@ Call read32(r0) handler
48323
48324;@ EaCalc : Get register index into r11:
48325  and r11,r8,#0x1e00
48326;@ EaRead : Read register[r11] into r1:
48327  ldr r1,[r7,r11,lsr #7]
48328
48329  sub r1,r1,r0
48330
48331;@ EaWrite: r1 into register[r11]:
48332  str r1,[r7,r11,lsr #7]
48333
48334  ldr r5,[r7,#0x5c] ;@ Load Cycles
48335  ldrh r8,[r4],#2 ;@ Fetch next opcode
48336  subs r5,r5,#22 ;@ Subtract cycles
48337  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48338  b CycloneEnd
48339
48340;@ ---------- [91fa] suba.l ($3333,pc), a0; =3335 uses Op91fa ----------
48341Op91fa:
48342  str r4,[r7,#0x50] ;@ Save prev PC + 2
48343  str r5,[r7,#0x5c] ;@ Save Cycles
48344
48345;@ EaCalc : Get '($3333,pc)' into r0:
48346  ldr r0,[r7,#0x60] ;@ Get Memory base
48347  sub r0,r4,r0 ;@ Real PC
48348  ldrsh r2,[r4],#2 ;@ Fetch extension
48349  add r0,r2,r0 ;@ ($nn,PC)
48350;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
48351  str r4,[r7,#0x40] ;@ Save PC
48352  bic r0,r0,#0xff000000
48353  bl m68k_fetch32 ;@ Call fetch32(r0) handler
48354
48355;@ EaCalc : Get register index into r11:
48356  and r11,r8,#0x1e00
48357;@ EaRead : Read register[r11] into r1:
48358  ldr r1,[r7,r11,lsr #7]
48359
48360  sub r1,r1,r0
48361
48362;@ EaWrite: r1 into register[r11]:
48363  str r1,[r7,r11,lsr #7]
48364
48365  ldr r5,[r7,#0x5c] ;@ Load Cycles
48366  ldrh r8,[r4],#2 ;@ Fetch next opcode
48367  subs r5,r5,#18 ;@ Subtract cycles
48368  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48369  b CycloneEnd
48370
48371;@ ---------- [91fb] suba.l ($33,pc,d3.w*2), a0; =35 uses Op91fb ----------
48372Op91fb:
48373  str r4,[r7,#0x50] ;@ Save prev PC + 2
48374  str r5,[r7,#0x5c] ;@ Save Cycles
48375
48376;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
48377  ldr r0,[r7,#0x60] ;@ Get Memory base
48378  ldrh r3,[r4] ;@ Get extension word
48379  sub r0,r4,r0 ;@ r0=PC
48380  add r4,r4,#2
48381  mov r2,r3,lsr #10
48382  tst r3,#0x0800 ;@ Is Rn Word or Long
48383  and r2,r2,#0x3c ;@ r2=Index of Rn
48384  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
48385  ldrne   r2,[r7,r2] ;@ r2=Rn.l
48386  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
48387  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
48388  add r0,r2,r0 ;@ r0=Disp+PC+Rn
48389;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
48390  str r4,[r7,#0x40] ;@ Save PC
48391  bic r0,r0,#0xff000000
48392  bl m68k_fetch32 ;@ Call fetch32(r0) handler
48393
48394;@ EaCalc : Get register index into r11:
48395  and r11,r8,#0x1e00
48396;@ EaRead : Read register[r11] into r1:
48397  ldr r1,[r7,r11,lsr #7]
48398
48399  sub r1,r1,r0
48400
48401;@ EaWrite: r1 into register[r11]:
48402  str r1,[r7,r11,lsr #7]
48403
48404  ldr r5,[r7,#0x5c] ;@ Load Cycles
48405  ldrh r8,[r4],#2 ;@ Fetch next opcode
48406  subs r5,r5,#20 ;@ Subtract cycles
48407  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48408  b CycloneEnd
48409
48410;@ ---------- [91fc] suba.l #$33333333, a0 uses Op91fc ----------
48411Op91fc:
48412;@ EaCalc : Get '#$33333333' into r0:
48413  ldrh r2,[r4],#2 ;@ Fetch immediate value
48414  ldrh r3,[r4],#2
48415  orr r0,r3,r2,lsl #16
48416;@ EaRead : Read '#$33333333' (address in r0) into r0:
48417
48418;@ EaCalc : Get register index into r11:
48419  and r11,r8,#0x1e00
48420;@ EaRead : Read register[r11] into r1:
48421  ldr r1,[r7,r11,lsr #7]
48422
48423  sub r1,r1,r0
48424
48425;@ EaWrite: r1 into register[r11]:
48426  str r1,[r7,r11,lsr #7]
48427
48428  ldrh r8,[r4],#2 ;@ Fetch next opcode
48429  subs r5,r5,#16 ;@ Subtract cycles
48430  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48431  b CycloneEnd
48432
48433;@ ---------- [9f08] subx.b -(a0), -(a7) uses Op9f08 ----------
48434Op9f08:
48435  str r4,[r7,#0x50] ;@ Save prev PC + 2
48436  str r5,[r7,#0x5c] ;@ Save Cycles
48437
48438;@ Get src/dest EA vals
48439;@ EaCalc : Get '-(a0)' into r0:
48440  and r2,r8,#0x000f
48441  ldr r0,[r7,r2,lsl #2]
48442  sub r0,r0,#1 ;@ Pre-decrement An
48443  str r0,[r7,r2,lsl #2]
48444;@ EaRead : Read '-(a0)' (address in r0) into r6:
48445  str r4,[r7,#0x40] ;@ Save PC
48446  bic r0,r0,#0xff000000
48447  bl m68k_read8 ;@ Call read8(r0) handler
48448  mov r6,r0,asl #24
48449
48450;@ EaCalc : Get '-(a7)' into r11:
48451  ldr r11,[r7,#0x3c] ;@ A7
48452  sub r11,r11,#2 ;@ Pre-decrement An
48453  str r11,[r7,#0x3c] ;@ A7
48454;@ EaRead : Read '-(a7)' (address in r11) into r0:
48455  bic r0,r11,#0xff000000
48456  bl m68k_read8 ;@ Call read8(r0) handler
48457
48458;@ Do arithmetic:
48459;@ Get X bit:
48460  ldr r2,[r7,#0x4c]
48461  mvn r2,r2 ;@ Invert it
48462  tst r2,r2,lsl #3 ;@ Get into Carry
48463
48464  rscs r1,r6,r0,asl #24
48465  orr r3,r10,#0xb0000000 ;@ for old Z
48466  mrs r10,cpsr ;@ r10=flags
48467  eor r10,r10,#0x20000000 ;@ Invert carry
48468  str r10,[r7,#0x4c] ;@ Save X bit
48469  movs r2,r1,lsr #24
48470  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
48471  andeq r10,r10,r3 ;@ fix Z
48472
48473;@ Save result:
48474;@ EaWrite: Write r1 into '-(a7)' (address in r11):
48475  mov r1,r1,lsr #24
48476  bic r0,r11,#0xff000000
48477  bl m68k_write8 ;@ Call write8(r0,r1) handler
48478
48479  ldr r6,[r7,#0x54]
48480  ldr r5,[r7,#0x5c] ;@ Load Cycles
48481  ldrh r8,[r4],#2 ;@ Fetch next opcode
48482  subs r5,r5,#18 ;@ Subtract cycles
48483  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48484  b CycloneEnd
48485
48486;@ ---------- [9f0f] subx.b -(a7), -(a7) uses Op9f0f ----------
48487Op9f0f:
48488  str r4,[r7,#0x50] ;@ Save prev PC + 2
48489  str r5,[r7,#0x5c] ;@ Save Cycles
48490
48491;@ Get src/dest EA vals
48492;@ EaCalc : Get '-(a7)' into r0:
48493  ldr r0,[r7,#0x3c] ;@ A7
48494  sub r0,r0,#2 ;@ Pre-decrement An
48495  str r0,[r7,#0x3c] ;@ A7
48496;@ EaRead : Read '-(a7)' (address in r0) into r6:
48497  str r4,[r7,#0x40] ;@ Save PC
48498  bic r0,r0,#0xff000000
48499  bl m68k_read8 ;@ Call read8(r0) handler
48500  mov r6,r0,asl #24
48501
48502;@ EaCalc : Get '-(a7)' into r11:
48503  ldr r11,[r7,#0x3c] ;@ A7
48504  sub r11,r11,#2 ;@ Pre-decrement An
48505  str r11,[r7,#0x3c] ;@ A7
48506;@ EaRead : Read '-(a7)' (address in r11) into r0:
48507  bic r0,r11,#0xff000000
48508  bl m68k_read8 ;@ Call read8(r0) handler
48509
48510;@ Do arithmetic:
48511;@ Get X bit:
48512  ldr r2,[r7,#0x4c]
48513  mvn r2,r2 ;@ Invert it
48514  tst r2,r2,lsl #3 ;@ Get into Carry
48515
48516  rscs r1,r6,r0,asl #24
48517  orr r3,r10,#0xb0000000 ;@ for old Z
48518  mrs r10,cpsr ;@ r10=flags
48519  eor r10,r10,#0x20000000 ;@ Invert carry
48520  str r10,[r7,#0x4c] ;@ Save X bit
48521  movs r2,r1,lsr #24
48522  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
48523  andeq r10,r10,r3 ;@ fix Z
48524
48525;@ Save result:
48526;@ EaWrite: Write r1 into '-(a7)' (address in r11):
48527  mov r1,r1,lsr #24
48528  bic r0,r11,#0xff000000
48529  bl m68k_write8 ;@ Call write8(r0,r1) handler
48530
48531  ldr r6,[r7,#0x54]
48532  ldr r5,[r7,#0x5c] ;@ Load Cycles
48533  ldrh r8,[r4],#2 ;@ Fetch next opcode
48534  subs r5,r5,#18 ;@ Subtract cycles
48535  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48536  b CycloneEnd
48537
48538;@ ---------- [b000] cmp.b d0, d0 uses Opb000 ----------
48539Opb000:
48540;@ Get EA into r11 and value into r0:
48541;@ EaCalc : Get register index into r0:
48542  and r0,r8,#0x000f
48543;@ EaRead : Read register[r0] into r0:
48544  ldr r0,[r7,r0,lsl #2]
48545
48546;@ Get register operand into r1:
48547;@ EaCalc : Get register index into r1:
48548  and r1,r8,#0x0e00
48549;@ EaRead : Read register[r1] into r1:
48550  ldr r1,[r7,r1,lsr #7]
48551
48552  mov r0,r0,asl #24
48553
48554;@ Do arithmetic:
48555  rsbs r1,r0,r1,asl #24
48556  mrs r10,cpsr ;@ r10=flags
48557  eor r10,r10,#0x20000000 ;@ Invert carry
48558
48559  ldrh r8,[r4],#2 ;@ Fetch next opcode
48560  subs r5,r5,#4 ;@ Subtract cycles
48561  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48562  b CycloneEnd
48563
48564;@ ---------- [b010] cmp.b (a0), d0 uses Opb010 ----------
48565Opb010:
48566  str r4,[r7,#0x50] ;@ Save prev PC + 2
48567  str r5,[r7,#0x5c] ;@ Save Cycles
48568
48569;@ Get EA into r11 and value into r0:
48570;@ EaCalc : Get '(a0)' into r0:
48571  and r2,r8,#0x000f
48572  orr r2,r2,#0x8 ;@ A0-7
48573  ldr r0,[r7,r2,lsl #2]
48574;@ EaRead : Read '(a0)' (address in r0) into r0:
48575  str r4,[r7,#0x40] ;@ Save PC
48576  bic r0,r0,#0xff000000
48577  bl m68k_read8 ;@ Call read8(r0) handler
48578
48579;@ Get register operand into r1:
48580;@ EaCalc : Get register index into r1:
48581  and r1,r8,#0x0e00
48582;@ EaRead : Read register[r1] into r1:
48583  ldr r1,[r7,r1,lsr #7]
48584
48585  mov r0,r0,asl #24
48586
48587;@ Do arithmetic:
48588  rsbs r1,r0,r1,asl #24
48589  mrs r10,cpsr ;@ r10=flags
48590  eor r10,r10,#0x20000000 ;@ Invert carry
48591
48592  ldr r5,[r7,#0x5c] ;@ Load Cycles
48593  ldrh r8,[r4],#2 ;@ Fetch next opcode
48594  subs r5,r5,#8 ;@ Subtract cycles
48595  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48596  b CycloneEnd
48597
48598;@ ---------- [b018] cmp.b (a0)+, d0 uses Opb018 ----------
48599Opb018:
48600  str r4,[r7,#0x50] ;@ Save prev PC + 2
48601  str r5,[r7,#0x5c] ;@ Save Cycles
48602
48603;@ Get EA into r11 and value into r0:
48604;@ EaCalc : Get '(a0)+' into r0:
48605  and r2,r8,#0x000f
48606  ldr r0,[r7,r2,lsl #2]
48607  add r3,r0,#1 ;@ Post-increment An
48608  str r3,[r7,r2,lsl #2]
48609;@ EaRead : Read '(a0)+' (address in r0) into r0:
48610  str r4,[r7,#0x40] ;@ Save PC
48611  bic r0,r0,#0xff000000
48612  bl m68k_read8 ;@ Call read8(r0) handler
48613
48614;@ Get register operand into r1:
48615;@ EaCalc : Get register index into r1:
48616  and r1,r8,#0x0e00
48617;@ EaRead : Read register[r1] into r1:
48618  ldr r1,[r7,r1,lsr #7]
48619
48620  mov r0,r0,asl #24
48621
48622;@ Do arithmetic:
48623  rsbs r1,r0,r1,asl #24
48624  mrs r10,cpsr ;@ r10=flags
48625  eor r10,r10,#0x20000000 ;@ Invert carry
48626
48627  ldr r5,[r7,#0x5c] ;@ Load Cycles
48628  ldrh r8,[r4],#2 ;@ Fetch next opcode
48629  subs r5,r5,#8 ;@ Subtract cycles
48630  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48631  b CycloneEnd
48632
48633;@ ---------- [b01f] cmp.b (a7)+, d0 uses Opb01f ----------
48634Opb01f:
48635  str r4,[r7,#0x50] ;@ Save prev PC + 2
48636  str r5,[r7,#0x5c] ;@ Save Cycles
48637
48638;@ Get EA into r11 and value into r0:
48639;@ EaCalc : Get '(a7)+' into r0:
48640  ldr r0,[r7,#0x3c] ;@ A7
48641  add r3,r0,#2 ;@ Post-increment An
48642  str r3,[r7,#0x3c] ;@ A7
48643;@ EaRead : Read '(a7)+' (address in r0) into r0:
48644  str r4,[r7,#0x40] ;@ Save PC
48645  bic r0,r0,#0xff000000
48646  bl m68k_read8 ;@ Call read8(r0) handler
48647
48648;@ Get register operand into r1:
48649;@ EaCalc : Get register index into r1:
48650  and r1,r8,#0x0e00
48651;@ EaRead : Read register[r1] into r1:
48652  ldr r1,[r7,r1,lsr #7]
48653
48654  mov r0,r0,asl #24
48655
48656;@ Do arithmetic:
48657  rsbs r1,r0,r1,asl #24
48658  mrs r10,cpsr ;@ r10=flags
48659  eor r10,r10,#0x20000000 ;@ Invert carry
48660
48661  ldr r5,[r7,#0x5c] ;@ Load Cycles
48662  ldrh r8,[r4],#2 ;@ Fetch next opcode
48663  subs r5,r5,#8 ;@ Subtract cycles
48664  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48665  b CycloneEnd
48666
48667;@ ---------- [b020] cmp.b -(a0), d0 uses Opb020 ----------
48668Opb020:
48669  str r4,[r7,#0x50] ;@ Save prev PC + 2
48670  str r5,[r7,#0x5c] ;@ Save Cycles
48671
48672;@ Get EA into r11 and value into r0:
48673;@ EaCalc : Get '-(a0)' into r0:
48674  and r2,r8,#0x000f
48675  orr r2,r2,#0x8 ;@ A0-7
48676  ldr r0,[r7,r2,lsl #2]
48677  sub r0,r0,#1 ;@ Pre-decrement An
48678  str r0,[r7,r2,lsl #2]
48679;@ EaRead : Read '-(a0)' (address in r0) into r0:
48680  str r4,[r7,#0x40] ;@ Save PC
48681  bic r0,r0,#0xff000000
48682  bl m68k_read8 ;@ Call read8(r0) handler
48683
48684;@ Get register operand into r1:
48685;@ EaCalc : Get register index into r1:
48686  and r1,r8,#0x0e00
48687;@ EaRead : Read register[r1] into r1:
48688  ldr r1,[r7,r1,lsr #7]
48689
48690  mov r0,r0,asl #24
48691
48692;@ Do arithmetic:
48693  rsbs r1,r0,r1,asl #24
48694  mrs r10,cpsr ;@ r10=flags
48695  eor r10,r10,#0x20000000 ;@ Invert carry
48696
48697  ldr r5,[r7,#0x5c] ;@ Load Cycles
48698  ldrh r8,[r4],#2 ;@ Fetch next opcode
48699  subs r5,r5,#10 ;@ Subtract cycles
48700  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48701  b CycloneEnd
48702
48703;@ ---------- [b027] cmp.b -(a7), d0 uses Opb027 ----------
48704Opb027:
48705  str r4,[r7,#0x50] ;@ Save prev PC + 2
48706  str r5,[r7,#0x5c] ;@ Save Cycles
48707
48708;@ Get EA into r11 and value into r0:
48709;@ EaCalc : Get '-(a7)' into r0:
48710  ldr r0,[r7,#0x3c] ;@ A7
48711  sub r0,r0,#2 ;@ Pre-decrement An
48712  str r0,[r7,#0x3c] ;@ A7
48713;@ EaRead : Read '-(a7)' (address in r0) into r0:
48714  str r4,[r7,#0x40] ;@ Save PC
48715  bic r0,r0,#0xff000000
48716  bl m68k_read8 ;@ Call read8(r0) handler
48717
48718;@ Get register operand into r1:
48719;@ EaCalc : Get register index into r1:
48720  and r1,r8,#0x0e00
48721;@ EaRead : Read register[r1] into r1:
48722  ldr r1,[r7,r1,lsr #7]
48723
48724  mov r0,r0,asl #24
48725
48726;@ Do arithmetic:
48727  rsbs r1,r0,r1,asl #24
48728  mrs r10,cpsr ;@ r10=flags
48729  eor r10,r10,#0x20000000 ;@ Invert carry
48730
48731  ldr r5,[r7,#0x5c] ;@ Load Cycles
48732  ldrh r8,[r4],#2 ;@ Fetch next opcode
48733  subs r5,r5,#10 ;@ Subtract cycles
48734  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48735  b CycloneEnd
48736
48737;@ ---------- [b028] cmp.b ($3333,a0), d0 uses Opb028 ----------
48738Opb028:
48739  str r4,[r7,#0x50] ;@ Save prev PC + 2
48740  str r5,[r7,#0x5c] ;@ Save Cycles
48741
48742;@ Get EA into r11 and value into r0:
48743;@ EaCalc : Get '($3333,a0)' into r0:
48744  ldrsh r0,[r4],#2 ;@ Fetch offset
48745  and r2,r8,#0x000f
48746  ldr r2,[r7,r2,lsl #2]
48747  add r0,r0,r2 ;@ Add on offset
48748;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
48749  str r4,[r7,#0x40] ;@ Save PC
48750  bic r0,r0,#0xff000000
48751  bl m68k_read8 ;@ Call read8(r0) handler
48752
48753;@ Get register operand into r1:
48754;@ EaCalc : Get register index into r1:
48755  and r1,r8,#0x0e00
48756;@ EaRead : Read register[r1] into r1:
48757  ldr r1,[r7,r1,lsr #7]
48758
48759  mov r0,r0,asl #24
48760
48761;@ Do arithmetic:
48762  rsbs r1,r0,r1,asl #24
48763  mrs r10,cpsr ;@ r10=flags
48764  eor r10,r10,#0x20000000 ;@ Invert carry
48765
48766  ldr r5,[r7,#0x5c] ;@ Load Cycles
48767  ldrh r8,[r4],#2 ;@ Fetch next opcode
48768  subs r5,r5,#12 ;@ Subtract cycles
48769  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48770  b CycloneEnd
48771
48772;@ ---------- [b030] cmp.b ($33,a0,d3.w*2), d0 uses Opb030 ----------
48773Opb030:
48774  str r4,[r7,#0x50] ;@ Save prev PC + 2
48775  str r5,[r7,#0x5c] ;@ Save Cycles
48776
48777;@ Get EA into r11 and value into r0:
48778;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
48779;@ Get extension word into r3:
48780  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
48781  mov r2,r3,lsr #10
48782  tst r3,#0x0800 ;@ Is Rn Word or Long
48783  and r2,r2,#0x3c ;@ r2=Index of Rn
48784  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
48785  ldrne   r2,[r7,r2] ;@ r2=Rn.l
48786  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
48787  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
48788  and r2,r8,#0x000f
48789  orr r2,r2,#0x8 ;@ A0-7
48790  ldr r2,[r7,r2,lsl #2]
48791  add r0,r2,r3 ;@ r0=Disp+An+Rn
48792;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
48793  str r4,[r7,#0x40] ;@ Save PC
48794  bic r0,r0,#0xff000000
48795  bl m68k_read8 ;@ Call read8(r0) handler
48796
48797;@ Get register operand into r1:
48798;@ EaCalc : Get register index into r1:
48799  and r1,r8,#0x0e00
48800;@ EaRead : Read register[r1] into r1:
48801  ldr r1,[r7,r1,lsr #7]
48802
48803  mov r0,r0,asl #24
48804
48805;@ Do arithmetic:
48806  rsbs r1,r0,r1,asl #24
48807  mrs r10,cpsr ;@ r10=flags
48808  eor r10,r10,#0x20000000 ;@ Invert carry
48809
48810  ldr r5,[r7,#0x5c] ;@ Load Cycles
48811  ldrh r8,[r4],#2 ;@ Fetch next opcode
48812  subs r5,r5,#14 ;@ Subtract cycles
48813  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48814  b CycloneEnd
48815
48816;@ ---------- [b039] cmp.b $33333333.l, d0 uses Opb039 ----------
48817Opb039:
48818  str r4,[r7,#0x50] ;@ Save prev PC + 2
48819  str r5,[r7,#0x5c] ;@ Save Cycles
48820
48821;@ Get EA into r11 and value into r0:
48822;@ EaCalc : Get '$33333333.l' into r0:
48823  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
48824  ldrh r0,[r4],#2
48825  orr r0,r0,r2,lsl #16
48826;@ EaRead : Read '$33333333.l' (address in r0) into r0:
48827  str r4,[r7,#0x40] ;@ Save PC
48828  bic r0,r0,#0xff000000
48829  bl m68k_read8 ;@ Call read8(r0) handler
48830
48831;@ Get register operand into r1:
48832;@ EaCalc : Get register index into r1:
48833  and r1,r8,#0x0e00
48834;@ EaRead : Read register[r1] into r1:
48835  ldr r1,[r7,r1,lsr #7]
48836
48837  mov r0,r0,asl #24
48838
48839;@ Do arithmetic:
48840  rsbs r1,r0,r1,asl #24
48841  mrs r10,cpsr ;@ r10=flags
48842  eor r10,r10,#0x20000000 ;@ Invert carry
48843
48844  ldr r5,[r7,#0x5c] ;@ Load Cycles
48845  ldrh r8,[r4],#2 ;@ Fetch next opcode
48846  subs r5,r5,#16 ;@ Subtract cycles
48847  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48848  b CycloneEnd
48849
48850;@ ---------- [b03a] cmp.b ($3333,pc), d0; =3335 uses Opb03a ----------
48851Opb03a:
48852  str r4,[r7,#0x50] ;@ Save prev PC + 2
48853  str r5,[r7,#0x5c] ;@ Save Cycles
48854
48855;@ Get EA into r11 and value into r0:
48856;@ EaCalc : Get '($3333,pc)' into r0:
48857  ldr r0,[r7,#0x60] ;@ Get Memory base
48858  sub r0,r4,r0 ;@ Real PC
48859  ldrsh r2,[r4],#2 ;@ Fetch extension
48860  add r0,r2,r0 ;@ ($nn,PC)
48861;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
48862  str r4,[r7,#0x40] ;@ Save PC
48863  bic r0,r0,#0xff000000
48864  bl m68k_fetch8 ;@ Call fetch8(r0) handler
48865
48866;@ Get register operand into r1:
48867;@ EaCalc : Get register index into r1:
48868  and r1,r8,#0x0e00
48869;@ EaRead : Read register[r1] into r1:
48870  ldr r1,[r7,r1,lsr #7]
48871
48872  mov r0,r0,asl #24
48873
48874;@ Do arithmetic:
48875  rsbs r1,r0,r1,asl #24
48876  mrs r10,cpsr ;@ r10=flags
48877  eor r10,r10,#0x20000000 ;@ Invert carry
48878
48879  ldr r5,[r7,#0x5c] ;@ Load Cycles
48880  ldrh r8,[r4],#2 ;@ Fetch next opcode
48881  subs r5,r5,#12 ;@ Subtract cycles
48882  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48883  b CycloneEnd
48884
48885;@ ---------- [b03b] cmp.b ($33,pc,d3.w*2), d0; =35 uses Opb03b ----------
48886Opb03b:
48887  str r4,[r7,#0x50] ;@ Save prev PC + 2
48888  str r5,[r7,#0x5c] ;@ Save Cycles
48889
48890;@ Get EA into r11 and value into r0:
48891;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
48892  ldr r0,[r7,#0x60] ;@ Get Memory base
48893  ldrh r3,[r4] ;@ Get extension word
48894  sub r0,r4,r0 ;@ r0=PC
48895  add r4,r4,#2
48896  mov r2,r3,lsr #10
48897  tst r3,#0x0800 ;@ Is Rn Word or Long
48898  and r2,r2,#0x3c ;@ r2=Index of Rn
48899  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
48900  ldrne   r2,[r7,r2] ;@ r2=Rn.l
48901  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
48902  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
48903  add r0,r2,r0 ;@ r0=Disp+PC+Rn
48904;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
48905  str r4,[r7,#0x40] ;@ Save PC
48906  bic r0,r0,#0xff000000
48907  bl m68k_fetch8 ;@ Call fetch8(r0) handler
48908
48909;@ Get register operand into r1:
48910;@ EaCalc : Get register index into r1:
48911  and r1,r8,#0x0e00
48912;@ EaRead : Read register[r1] into r1:
48913  ldr r1,[r7,r1,lsr #7]
48914
48915  mov r0,r0,asl #24
48916
48917;@ Do arithmetic:
48918  rsbs r1,r0,r1,asl #24
48919  mrs r10,cpsr ;@ r10=flags
48920  eor r10,r10,#0x20000000 ;@ Invert carry
48921
48922  ldr r5,[r7,#0x5c] ;@ Load Cycles
48923  ldrh r8,[r4],#2 ;@ Fetch next opcode
48924  subs r5,r5,#14 ;@ Subtract cycles
48925  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48926  b CycloneEnd
48927
48928;@ ---------- [b03c] cmp.b #$33, d0 uses Opb03c ----------
48929Opb03c:
48930;@ Get EA into r11 and value into r0:
48931;@ EaCalc : Get '#$33' into r0:
48932  ldrsb r0,[r4],#2 ;@ Fetch immediate value
48933;@ EaRead : Read '#$33' (address in r0) into r0:
48934
48935;@ Get register operand into r1:
48936;@ EaCalc : Get register index into r1:
48937  and r1,r8,#0x0e00
48938;@ EaRead : Read register[r1] into r1:
48939  ldr r1,[r7,r1,lsr #7]
48940
48941  mov r0,r0,asl #24
48942
48943;@ Do arithmetic:
48944  rsbs r1,r0,r1,asl #24
48945  mrs r10,cpsr ;@ r10=flags
48946  eor r10,r10,#0x20000000 ;@ Invert carry
48947
48948  ldrh r8,[r4],#2 ;@ Fetch next opcode
48949  subs r5,r5,#8 ;@ Subtract cycles
48950  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48951  b CycloneEnd
48952
48953;@ ---------- [b040] cmp.w d0, d0 uses Opb040 ----------
48954Opb040:
48955;@ Get EA into r11 and value into r0:
48956;@ EaCalc : Get register index into r0:
48957  and r0,r8,#0x000f
48958;@ EaRead : Read register[r0] into r0:
48959  ldr r0,[r7,r0,lsl #2]
48960
48961;@ Get register operand into r1:
48962;@ EaCalc : Get register index into r1:
48963  and r1,r8,#0x0e00
48964;@ EaRead : Read register[r1] into r1:
48965  ldr r1,[r7,r1,lsr #7]
48966
48967  mov r0,r0,asl #16
48968
48969;@ Do arithmetic:
48970  rsbs r1,r0,r1,asl #16
48971  mrs r10,cpsr ;@ r10=flags
48972  eor r10,r10,#0x20000000 ;@ Invert carry
48973
48974  ldrh r8,[r4],#2 ;@ Fetch next opcode
48975  subs r5,r5,#4 ;@ Subtract cycles
48976  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48977  b CycloneEnd
48978
48979;@ ---------- [b050] cmp.w (a0), d0 uses Opb050 ----------
48980Opb050:
48981  str r4,[r7,#0x50] ;@ Save prev PC + 2
48982  str r5,[r7,#0x5c] ;@ Save Cycles
48983
48984;@ Get EA into r11 and value into r0:
48985;@ EaCalc : Get '(a0)' into r0:
48986  and r2,r8,#0x000f
48987  orr r2,r2,#0x8 ;@ A0-7
48988  ldr r0,[r7,r2,lsl #2]
48989;@ EaRead : Read '(a0)' (address in r0) into r0:
48990  str r4,[r7,#0x40] ;@ Save PC
48991  bic r0,r0,#0xff000000
48992  bl m68k_read16 ;@ Call read16(r0) handler
48993
48994;@ Get register operand into r1:
48995;@ EaCalc : Get register index into r1:
48996  and r1,r8,#0x0e00
48997;@ EaRead : Read register[r1] into r1:
48998  ldr r1,[r7,r1,lsr #7]
48999
49000  mov r0,r0,asl #16
49001
49002;@ Do arithmetic:
49003  rsbs r1,r0,r1,asl #16
49004  mrs r10,cpsr ;@ r10=flags
49005  eor r10,r10,#0x20000000 ;@ Invert carry
49006
49007  ldr r5,[r7,#0x5c] ;@ Load Cycles
49008  ldrh r8,[r4],#2 ;@ Fetch next opcode
49009  subs r5,r5,#8 ;@ Subtract cycles
49010  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49011  b CycloneEnd
49012
49013;@ ---------- [b058] cmp.w (a0)+, d0 uses Opb058 ----------
49014Opb058:
49015  str r4,[r7,#0x50] ;@ Save prev PC + 2
49016  str r5,[r7,#0x5c] ;@ Save Cycles
49017
49018;@ Get EA into r11 and value into r0:
49019;@ EaCalc : Get '(a0)+' into r0:
49020  and r2,r8,#0x000f
49021  ldr r0,[r7,r2,lsl #2]
49022  add r3,r0,#2 ;@ Post-increment An
49023  str r3,[r7,r2,lsl #2]
49024;@ EaRead : Read '(a0)+' (address in r0) into r0:
49025  str r4,[r7,#0x40] ;@ Save PC
49026  bic r0,r0,#0xff000000
49027  bl m68k_read16 ;@ Call read16(r0) handler
49028
49029;@ Get register operand into r1:
49030;@ EaCalc : Get register index into r1:
49031  and r1,r8,#0x0e00
49032;@ EaRead : Read register[r1] into r1:
49033  ldr r1,[r7,r1,lsr #7]
49034
49035  mov r0,r0,asl #16
49036
49037;@ Do arithmetic:
49038  rsbs r1,r0,r1,asl #16
49039  mrs r10,cpsr ;@ r10=flags
49040  eor r10,r10,#0x20000000 ;@ Invert carry
49041
49042  ldr r5,[r7,#0x5c] ;@ Load Cycles
49043  ldrh r8,[r4],#2 ;@ Fetch next opcode
49044  subs r5,r5,#8 ;@ Subtract cycles
49045  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49046  b CycloneEnd
49047
49048;@ ---------- [b060] cmp.w -(a0), d0 uses Opb060 ----------
49049Opb060:
49050  str r4,[r7,#0x50] ;@ Save prev PC + 2
49051  str r5,[r7,#0x5c] ;@ Save Cycles
49052
49053;@ Get EA into r11 and value into r0:
49054;@ EaCalc : Get '-(a0)' into r0:
49055  and r2,r8,#0x000f
49056  orr r2,r2,#0x8 ;@ A0-7
49057  ldr r0,[r7,r2,lsl #2]
49058  sub r0,r0,#2 ;@ Pre-decrement An
49059  str r0,[r7,r2,lsl #2]
49060;@ EaRead : Read '-(a0)' (address in r0) into r0:
49061  str r4,[r7,#0x40] ;@ Save PC
49062  bic r0,r0,#0xff000000
49063  bl m68k_read16 ;@ Call read16(r0) handler
49064
49065;@ Get register operand into r1:
49066;@ EaCalc : Get register index into r1:
49067  and r1,r8,#0x0e00
49068;@ EaRead : Read register[r1] into r1:
49069  ldr r1,[r7,r1,lsr #7]
49070
49071  mov r0,r0,asl #16
49072
49073;@ Do arithmetic:
49074  rsbs r1,r0,r1,asl #16
49075  mrs r10,cpsr ;@ r10=flags
49076  eor r10,r10,#0x20000000 ;@ Invert carry
49077
49078  ldr r5,[r7,#0x5c] ;@ Load Cycles
49079  ldrh r8,[r4],#2 ;@ Fetch next opcode
49080  subs r5,r5,#10 ;@ Subtract cycles
49081  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49082  b CycloneEnd
49083
49084;@ ---------- [b068] cmp.w ($3333,a0), d0 uses Opb068 ----------
49085Opb068:
49086  str r4,[r7,#0x50] ;@ Save prev PC + 2
49087  str r5,[r7,#0x5c] ;@ Save Cycles
49088
49089;@ Get EA into r11 and value into r0:
49090;@ EaCalc : Get '($3333,a0)' into r0:
49091  ldrsh r0,[r4],#2 ;@ Fetch offset
49092  and r2,r8,#0x000f
49093  ldr r2,[r7,r2,lsl #2]
49094  add r0,r0,r2 ;@ Add on offset
49095;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
49096  str r4,[r7,#0x40] ;@ Save PC
49097  bic r0,r0,#0xff000000
49098  bl m68k_read16 ;@ Call read16(r0) handler
49099
49100;@ Get register operand into r1:
49101;@ EaCalc : Get register index into r1:
49102  and r1,r8,#0x0e00
49103;@ EaRead : Read register[r1] into r1:
49104  ldr r1,[r7,r1,lsr #7]
49105
49106  mov r0,r0,asl #16
49107
49108;@ Do arithmetic:
49109  rsbs r1,r0,r1,asl #16
49110  mrs r10,cpsr ;@ r10=flags
49111  eor r10,r10,#0x20000000 ;@ Invert carry
49112
49113  ldr r5,[r7,#0x5c] ;@ Load Cycles
49114  ldrh r8,[r4],#2 ;@ Fetch next opcode
49115  subs r5,r5,#12 ;@ Subtract cycles
49116  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49117  b CycloneEnd
49118
49119;@ ---------- [b070] cmp.w ($33,a0,d3.w*2), d0 uses Opb070 ----------
49120Opb070:
49121  str r4,[r7,#0x50] ;@ Save prev PC + 2
49122  str r5,[r7,#0x5c] ;@ Save Cycles
49123
49124;@ Get EA into r11 and value into r0:
49125;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
49126;@ Get extension word into r3:
49127  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
49128  mov r2,r3,lsr #10
49129  tst r3,#0x0800 ;@ Is Rn Word or Long
49130  and r2,r2,#0x3c ;@ r2=Index of Rn
49131  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49132  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49133  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
49134  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
49135  and r2,r8,#0x000f
49136  orr r2,r2,#0x8 ;@ A0-7
49137  ldr r2,[r7,r2,lsl #2]
49138  add r0,r2,r3 ;@ r0=Disp+An+Rn
49139;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
49140  str r4,[r7,#0x40] ;@ Save PC
49141  bic r0,r0,#0xff000000
49142  bl m68k_read16 ;@ Call read16(r0) handler
49143
49144;@ Get register operand into r1:
49145;@ EaCalc : Get register index into r1:
49146  and r1,r8,#0x0e00
49147;@ EaRead : Read register[r1] into r1:
49148  ldr r1,[r7,r1,lsr #7]
49149
49150  mov r0,r0,asl #16
49151
49152;@ Do arithmetic:
49153  rsbs r1,r0,r1,asl #16
49154  mrs r10,cpsr ;@ r10=flags
49155  eor r10,r10,#0x20000000 ;@ Invert carry
49156
49157  ldr r5,[r7,#0x5c] ;@ Load Cycles
49158  ldrh r8,[r4],#2 ;@ Fetch next opcode
49159  subs r5,r5,#14 ;@ Subtract cycles
49160  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49161  b CycloneEnd
49162
49163;@ ---------- [b078] cmp.w $3333.w, d0 uses Opb078 ----------
49164Opb078:
49165  str r4,[r7,#0x50] ;@ Save prev PC + 2
49166  str r5,[r7,#0x5c] ;@ Save Cycles
49167
49168;@ Get EA into r11 and value into r0:
49169;@ EaCalc : Get '$3333.w' into r0:
49170  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
49171;@ EaRead : Read '$3333.w' (address in r0) into r0:
49172  str r4,[r7,#0x40] ;@ Save PC
49173  bic r0,r0,#0xff000000
49174  bl m68k_read16 ;@ Call read16(r0) handler
49175
49176;@ Get register operand into r1:
49177;@ EaCalc : Get register index into r1:
49178  and r1,r8,#0x0e00
49179;@ EaRead : Read register[r1] into r1:
49180  ldr r1,[r7,r1,lsr #7]
49181
49182  mov r0,r0,asl #16
49183
49184;@ Do arithmetic:
49185  rsbs r1,r0,r1,asl #16
49186  mrs r10,cpsr ;@ r10=flags
49187  eor r10,r10,#0x20000000 ;@ Invert carry
49188
49189  ldr r5,[r7,#0x5c] ;@ Load Cycles
49190  ldrh r8,[r4],#2 ;@ Fetch next opcode
49191  subs r5,r5,#12 ;@ Subtract cycles
49192  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49193  b CycloneEnd
49194
49195;@ ---------- [b079] cmp.w $33333333.l, d0 uses Opb079 ----------
49196Opb079:
49197  str r4,[r7,#0x50] ;@ Save prev PC + 2
49198  str r5,[r7,#0x5c] ;@ Save Cycles
49199
49200;@ Get EA into r11 and value into r0:
49201;@ EaCalc : Get '$33333333.l' into r0:
49202  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
49203  ldrh r0,[r4],#2
49204  orr r0,r0,r2,lsl #16
49205;@ EaRead : Read '$33333333.l' (address in r0) into r0:
49206  str r4,[r7,#0x40] ;@ Save PC
49207  bic r0,r0,#0xff000000
49208  bl m68k_read16 ;@ Call read16(r0) handler
49209
49210;@ Get register operand into r1:
49211;@ EaCalc : Get register index into r1:
49212  and r1,r8,#0x0e00
49213;@ EaRead : Read register[r1] into r1:
49214  ldr r1,[r7,r1,lsr #7]
49215
49216  mov r0,r0,asl #16
49217
49218;@ Do arithmetic:
49219  rsbs r1,r0,r1,asl #16
49220  mrs r10,cpsr ;@ r10=flags
49221  eor r10,r10,#0x20000000 ;@ Invert carry
49222
49223  ldr r5,[r7,#0x5c] ;@ Load Cycles
49224  ldrh r8,[r4],#2 ;@ Fetch next opcode
49225  subs r5,r5,#16 ;@ Subtract cycles
49226  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49227  b CycloneEnd
49228
49229;@ ---------- [b07a] cmp.w ($3333,pc), d0; =3335 uses Opb07a ----------
49230Opb07a:
49231  str r4,[r7,#0x50] ;@ Save prev PC + 2
49232  str r5,[r7,#0x5c] ;@ Save Cycles
49233
49234;@ Get EA into r11 and value into r0:
49235;@ EaCalc : Get '($3333,pc)' into r0:
49236  ldr r0,[r7,#0x60] ;@ Get Memory base
49237  sub r0,r4,r0 ;@ Real PC
49238  ldrsh r2,[r4],#2 ;@ Fetch extension
49239  add r0,r2,r0 ;@ ($nn,PC)
49240;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
49241  str r4,[r7,#0x40] ;@ Save PC
49242  bic r0,r0,#0xff000000
49243  bl m68k_fetch16 ;@ Call fetch16(r0) handler
49244
49245;@ Get register operand into r1:
49246;@ EaCalc : Get register index into r1:
49247  and r1,r8,#0x0e00
49248;@ EaRead : Read register[r1] into r1:
49249  ldr r1,[r7,r1,lsr #7]
49250
49251  mov r0,r0,asl #16
49252
49253;@ Do arithmetic:
49254  rsbs r1,r0,r1,asl #16
49255  mrs r10,cpsr ;@ r10=flags
49256  eor r10,r10,#0x20000000 ;@ Invert carry
49257
49258  ldr r5,[r7,#0x5c] ;@ Load Cycles
49259  ldrh r8,[r4],#2 ;@ Fetch next opcode
49260  subs r5,r5,#12 ;@ Subtract cycles
49261  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49262  b CycloneEnd
49263
49264;@ ---------- [b07b] cmp.w ($33,pc,d3.w*2), d0; =35 uses Opb07b ----------
49265Opb07b:
49266  str r4,[r7,#0x50] ;@ Save prev PC + 2
49267  str r5,[r7,#0x5c] ;@ Save Cycles
49268
49269;@ Get EA into r11 and value into r0:
49270;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
49271  ldr r0,[r7,#0x60] ;@ Get Memory base
49272  ldrh r3,[r4] ;@ Get extension word
49273  sub r0,r4,r0 ;@ r0=PC
49274  add r4,r4,#2
49275  mov r2,r3,lsr #10
49276  tst r3,#0x0800 ;@ Is Rn Word or Long
49277  and r2,r2,#0x3c ;@ r2=Index of Rn
49278  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49279  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49280  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
49281  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
49282  add r0,r2,r0 ;@ r0=Disp+PC+Rn
49283;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
49284  str r4,[r7,#0x40] ;@ Save PC
49285  bic r0,r0,#0xff000000
49286  bl m68k_fetch16 ;@ Call fetch16(r0) handler
49287
49288;@ Get register operand into r1:
49289;@ EaCalc : Get register index into r1:
49290  and r1,r8,#0x0e00
49291;@ EaRead : Read register[r1] into r1:
49292  ldr r1,[r7,r1,lsr #7]
49293
49294  mov r0,r0,asl #16
49295
49296;@ Do arithmetic:
49297  rsbs r1,r0,r1,asl #16
49298  mrs r10,cpsr ;@ r10=flags
49299  eor r10,r10,#0x20000000 ;@ Invert carry
49300
49301  ldr r5,[r7,#0x5c] ;@ Load Cycles
49302  ldrh r8,[r4],#2 ;@ Fetch next opcode
49303  subs r5,r5,#14 ;@ Subtract cycles
49304  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49305  b CycloneEnd
49306
49307;@ ---------- [b07c] cmp.w #$3333, d0 uses Opb07c ----------
49308Opb07c:
49309;@ Get EA into r11 and value into r0:
49310;@ EaCalc : Get '#$3333' into r0:
49311  ldrsh r0,[r4],#2 ;@ Fetch immediate value
49312;@ EaRead : Read '#$3333' (address in r0) into r0:
49313
49314;@ Get register operand into r1:
49315;@ EaCalc : Get register index into r1:
49316  and r1,r8,#0x0e00
49317;@ EaRead : Read register[r1] into r1:
49318  ldr r1,[r7,r1,lsr #7]
49319
49320  mov r0,r0,asl #16
49321
49322;@ Do arithmetic:
49323  rsbs r1,r0,r1,asl #16
49324  mrs r10,cpsr ;@ r10=flags
49325  eor r10,r10,#0x20000000 ;@ Invert carry
49326
49327  ldrh r8,[r4],#2 ;@ Fetch next opcode
49328  subs r5,r5,#8 ;@ Subtract cycles
49329  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49330  b CycloneEnd
49331
49332;@ ---------- [b080] cmp.l d0, d0 uses Opb080 ----------
49333Opb080:
49334;@ Get EA into r11 and value into r0:
49335;@ EaCalc : Get register index into r0:
49336  and r0,r8,#0x000f
49337;@ EaRead : Read register[r0] into r0:
49338  ldr r0,[r7,r0,lsl #2]
49339
49340;@ Get register operand into r1:
49341;@ EaCalc : Get register index into r1:
49342  and r1,r8,#0x0e00
49343;@ EaRead : Read register[r1] into r1:
49344  ldr r1,[r7,r1,lsr #7]
49345
49346;@ Do arithmetic:
49347  rsbs r1,r0,r1
49348  mrs r10,cpsr ;@ r10=flags
49349  eor r10,r10,#0x20000000 ;@ Invert carry
49350
49351  ldrh r8,[r4],#2 ;@ Fetch next opcode
49352  subs r5,r5,#6 ;@ Subtract cycles
49353  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49354  b CycloneEnd
49355
49356;@ ---------- [b090] cmp.l (a0), d0 uses Opb090 ----------
49357Opb090:
49358  str r4,[r7,#0x50] ;@ Save prev PC + 2
49359  str r5,[r7,#0x5c] ;@ Save Cycles
49360
49361;@ Get EA into r11 and value into r0:
49362;@ EaCalc : Get '(a0)' into r0:
49363  and r2,r8,#0x000f
49364  orr r2,r2,#0x8 ;@ A0-7
49365  ldr r0,[r7,r2,lsl #2]
49366;@ EaRead : Read '(a0)' (address in r0) into r0:
49367  str r4,[r7,#0x40] ;@ Save PC
49368  bic r0,r0,#0xff000000
49369  bl m68k_read32 ;@ Call read32(r0) handler
49370
49371;@ Get register operand into r1:
49372;@ EaCalc : Get register index into r1:
49373  and r1,r8,#0x0e00
49374;@ EaRead : Read register[r1] into r1:
49375  ldr r1,[r7,r1,lsr #7]
49376
49377;@ Do arithmetic:
49378  rsbs r1,r0,r1
49379  mrs r10,cpsr ;@ r10=flags
49380  eor r10,r10,#0x20000000 ;@ Invert carry
49381
49382  ldr r5,[r7,#0x5c] ;@ Load Cycles
49383  ldrh r8,[r4],#2 ;@ Fetch next opcode
49384  subs r5,r5,#14 ;@ Subtract cycles
49385  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49386  b CycloneEnd
49387
49388;@ ---------- [b098] cmp.l (a0)+, d0 uses Opb098 ----------
49389Opb098:
49390  str r4,[r7,#0x50] ;@ Save prev PC + 2
49391  str r5,[r7,#0x5c] ;@ Save Cycles
49392
49393;@ Get EA into r11 and value into r0:
49394;@ EaCalc : Get '(a0)+' into r0:
49395  and r2,r8,#0x000f
49396  ldr r0,[r7,r2,lsl #2]
49397  add r3,r0,#4 ;@ Post-increment An
49398  str r3,[r7,r2,lsl #2]
49399;@ EaRead : Read '(a0)+' (address in r0) into r0:
49400  str r4,[r7,#0x40] ;@ Save PC
49401  bic r0,r0,#0xff000000
49402  bl m68k_read32 ;@ Call read32(r0) handler
49403
49404;@ Get register operand into r1:
49405;@ EaCalc : Get register index into r1:
49406  and r1,r8,#0x0e00
49407;@ EaRead : Read register[r1] into r1:
49408  ldr r1,[r7,r1,lsr #7]
49409
49410;@ Do arithmetic:
49411  rsbs r1,r0,r1
49412  mrs r10,cpsr ;@ r10=flags
49413  eor r10,r10,#0x20000000 ;@ Invert carry
49414
49415  ldr r5,[r7,#0x5c] ;@ Load Cycles
49416  ldrh r8,[r4],#2 ;@ Fetch next opcode
49417  subs r5,r5,#14 ;@ Subtract cycles
49418  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49419  b CycloneEnd
49420
49421;@ ---------- [b0a0] cmp.l -(a0), d0 uses Opb0a0 ----------
49422Opb0a0:
49423  str r4,[r7,#0x50] ;@ Save prev PC + 2
49424  str r5,[r7,#0x5c] ;@ Save Cycles
49425
49426;@ Get EA into r11 and value into r0:
49427;@ EaCalc : Get '-(a0)' into r0:
49428  and r2,r8,#0x000f
49429  orr r2,r2,#0x8 ;@ A0-7
49430  ldr r0,[r7,r2,lsl #2]
49431  sub r0,r0,#4 ;@ Pre-decrement An
49432  str r0,[r7,r2,lsl #2]
49433;@ EaRead : Read '-(a0)' (address in r0) into r0:
49434  str r4,[r7,#0x40] ;@ Save PC
49435  bic r0,r0,#0xff000000
49436  bl m68k_read32 ;@ Call read32(r0) handler
49437
49438;@ Get register operand into r1:
49439;@ EaCalc : Get register index into r1:
49440  and r1,r8,#0x0e00
49441;@ EaRead : Read register[r1] into r1:
49442  ldr r1,[r7,r1,lsr #7]
49443
49444;@ Do arithmetic:
49445  rsbs r1,r0,r1
49446  mrs r10,cpsr ;@ r10=flags
49447  eor r10,r10,#0x20000000 ;@ Invert carry
49448
49449  ldr r5,[r7,#0x5c] ;@ Load Cycles
49450  ldrh r8,[r4],#2 ;@ Fetch next opcode
49451  subs r5,r5,#16 ;@ Subtract cycles
49452  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49453  b CycloneEnd
49454
49455;@ ---------- [b0a8] cmp.l ($3333,a0), d0 uses Opb0a8 ----------
49456Opb0a8:
49457  str r4,[r7,#0x50] ;@ Save prev PC + 2
49458  str r5,[r7,#0x5c] ;@ Save Cycles
49459
49460;@ Get EA into r11 and value into r0:
49461;@ EaCalc : Get '($3333,a0)' into r0:
49462  ldrsh r0,[r4],#2 ;@ Fetch offset
49463  and r2,r8,#0x000f
49464  ldr r2,[r7,r2,lsl #2]
49465  add r0,r0,r2 ;@ Add on offset
49466;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
49467  str r4,[r7,#0x40] ;@ Save PC
49468  bic r0,r0,#0xff000000
49469  bl m68k_read32 ;@ Call read32(r0) handler
49470
49471;@ Get register operand into r1:
49472;@ EaCalc : Get register index into r1:
49473  and r1,r8,#0x0e00
49474;@ EaRead : Read register[r1] into r1:
49475  ldr r1,[r7,r1,lsr #7]
49476
49477;@ Do arithmetic:
49478  rsbs r1,r0,r1
49479  mrs r10,cpsr ;@ r10=flags
49480  eor r10,r10,#0x20000000 ;@ Invert carry
49481
49482  ldr r5,[r7,#0x5c] ;@ Load Cycles
49483  ldrh r8,[r4],#2 ;@ Fetch next opcode
49484  subs r5,r5,#18 ;@ Subtract cycles
49485  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49486  b CycloneEnd
49487
49488;@ ---------- [b0b0] cmp.l ($33,a0,d3.w*2), d0 uses Opb0b0 ----------
49489Opb0b0:
49490  str r4,[r7,#0x50] ;@ Save prev PC + 2
49491  str r5,[r7,#0x5c] ;@ Save Cycles
49492
49493;@ Get EA into r11 and value into r0:
49494;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
49495;@ Get extension word into r3:
49496  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
49497  mov r2,r3,lsr #10
49498  tst r3,#0x0800 ;@ Is Rn Word or Long
49499  and r2,r2,#0x3c ;@ r2=Index of Rn
49500  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49501  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49502  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
49503  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
49504  and r2,r8,#0x000f
49505  orr r2,r2,#0x8 ;@ A0-7
49506  ldr r2,[r7,r2,lsl #2]
49507  add r0,r2,r3 ;@ r0=Disp+An+Rn
49508;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
49509  str r4,[r7,#0x40] ;@ Save PC
49510  bic r0,r0,#0xff000000
49511  bl m68k_read32 ;@ Call read32(r0) handler
49512
49513;@ Get register operand into r1:
49514;@ EaCalc : Get register index into r1:
49515  and r1,r8,#0x0e00
49516;@ EaRead : Read register[r1] into r1:
49517  ldr r1,[r7,r1,lsr #7]
49518
49519;@ Do arithmetic:
49520  rsbs r1,r0,r1
49521  mrs r10,cpsr ;@ r10=flags
49522  eor r10,r10,#0x20000000 ;@ Invert carry
49523
49524  ldr r5,[r7,#0x5c] ;@ Load Cycles
49525  ldrh r8,[r4],#2 ;@ Fetch next opcode
49526  subs r5,r5,#20 ;@ Subtract cycles
49527  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49528  b CycloneEnd
49529
49530;@ ---------- [b0b9] cmp.l $33333333.l, d0 uses Opb0b9 ----------
49531Opb0b9:
49532  str r4,[r7,#0x50] ;@ Save prev PC + 2
49533  str r5,[r7,#0x5c] ;@ Save Cycles
49534
49535;@ Get EA into r11 and value into r0:
49536;@ EaCalc : Get '$33333333.l' into r0:
49537  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
49538  ldrh r0,[r4],#2
49539  orr r0,r0,r2,lsl #16
49540;@ EaRead : Read '$33333333.l' (address in r0) into r0:
49541  str r4,[r7,#0x40] ;@ Save PC
49542  bic r0,r0,#0xff000000
49543  bl m68k_read32 ;@ Call read32(r0) handler
49544
49545;@ Get register operand into r1:
49546;@ EaCalc : Get register index into r1:
49547  and r1,r8,#0x0e00
49548;@ EaRead : Read register[r1] into r1:
49549  ldr r1,[r7,r1,lsr #7]
49550
49551;@ Do arithmetic:
49552  rsbs r1,r0,r1
49553  mrs r10,cpsr ;@ r10=flags
49554  eor r10,r10,#0x20000000 ;@ Invert carry
49555
49556  ldr r5,[r7,#0x5c] ;@ Load Cycles
49557  ldrh r8,[r4],#2 ;@ Fetch next opcode
49558  subs r5,r5,#22 ;@ Subtract cycles
49559  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49560  b CycloneEnd
49561
49562;@ ---------- [b0ba] cmp.l ($3333,pc), d0; =3335 uses Opb0ba ----------
49563Opb0ba:
49564  str r4,[r7,#0x50] ;@ Save prev PC + 2
49565  str r5,[r7,#0x5c] ;@ Save Cycles
49566
49567;@ Get EA into r11 and value into r0:
49568;@ EaCalc : Get '($3333,pc)' into r0:
49569  ldr r0,[r7,#0x60] ;@ Get Memory base
49570  sub r0,r4,r0 ;@ Real PC
49571  ldrsh r2,[r4],#2 ;@ Fetch extension
49572  add r0,r2,r0 ;@ ($nn,PC)
49573;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
49574  str r4,[r7,#0x40] ;@ Save PC
49575  bic r0,r0,#0xff000000
49576  bl m68k_fetch32 ;@ Call fetch32(r0) handler
49577
49578;@ Get register operand into r1:
49579;@ EaCalc : Get register index into r1:
49580  and r1,r8,#0x0e00
49581;@ EaRead : Read register[r1] into r1:
49582  ldr r1,[r7,r1,lsr #7]
49583
49584;@ Do arithmetic:
49585  rsbs r1,r0,r1
49586  mrs r10,cpsr ;@ r10=flags
49587  eor r10,r10,#0x20000000 ;@ Invert carry
49588
49589  ldr r5,[r7,#0x5c] ;@ Load Cycles
49590  ldrh r8,[r4],#2 ;@ Fetch next opcode
49591  subs r5,r5,#18 ;@ Subtract cycles
49592  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49593  b CycloneEnd
49594
49595;@ ---------- [b0bb] cmp.l ($33,pc,d3.w*2), d0; =35 uses Opb0bb ----------
49596Opb0bb:
49597  str r4,[r7,#0x50] ;@ Save prev PC + 2
49598  str r5,[r7,#0x5c] ;@ Save Cycles
49599
49600;@ Get EA into r11 and value into r0:
49601;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
49602  ldr r0,[r7,#0x60] ;@ Get Memory base
49603  ldrh r3,[r4] ;@ Get extension word
49604  sub r0,r4,r0 ;@ r0=PC
49605  add r4,r4,#2
49606  mov r2,r3,lsr #10
49607  tst r3,#0x0800 ;@ Is Rn Word or Long
49608  and r2,r2,#0x3c ;@ r2=Index of Rn
49609  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49610  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49611  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
49612  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
49613  add r0,r2,r0 ;@ r0=Disp+PC+Rn
49614;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
49615  str r4,[r7,#0x40] ;@ Save PC
49616  bic r0,r0,#0xff000000
49617  bl m68k_fetch32 ;@ Call fetch32(r0) handler
49618
49619;@ Get register operand into r1:
49620;@ EaCalc : Get register index into r1:
49621  and r1,r8,#0x0e00
49622;@ EaRead : Read register[r1] into r1:
49623  ldr r1,[r7,r1,lsr #7]
49624
49625;@ Do arithmetic:
49626  rsbs r1,r0,r1
49627  mrs r10,cpsr ;@ r10=flags
49628  eor r10,r10,#0x20000000 ;@ Invert carry
49629
49630  ldr r5,[r7,#0x5c] ;@ Load Cycles
49631  ldrh r8,[r4],#2 ;@ Fetch next opcode
49632  subs r5,r5,#20 ;@ Subtract cycles
49633  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49634  b CycloneEnd
49635
49636;@ ---------- [b0bc] cmp.l #$33333333, d0 uses Opb0bc ----------
49637Opb0bc:
49638;@ Get EA into r11 and value into r0:
49639;@ EaCalc : Get '#$33333333' into r0:
49640  ldrh r2,[r4],#2 ;@ Fetch immediate value
49641  ldrh r3,[r4],#2
49642  orr r0,r3,r2,lsl #16
49643;@ EaRead : Read '#$33333333' (address in r0) into r0:
49644
49645;@ Get register operand into r1:
49646;@ EaCalc : Get register index into r1:
49647  and r1,r8,#0x0e00
49648;@ EaRead : Read register[r1] into r1:
49649  ldr r1,[r7,r1,lsr #7]
49650
49651;@ Do arithmetic:
49652  rsbs r1,r0,r1
49653  mrs r10,cpsr ;@ r10=flags
49654  eor r10,r10,#0x20000000 ;@ Invert carry
49655
49656  ldrh r8,[r4],#2 ;@ Fetch next opcode
49657  subs r5,r5,#14 ;@ Subtract cycles
49658  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49659  b CycloneEnd
49660
49661;@ ---------- [b0c0] cmpa.w d0, a0 uses Opb0c0 ----------
49662Opb0c0:
49663;@ EaCalc : Get register index into r0:
49664  and r0,r8,#0x000f
49665;@ EaRead : Read register[r0] into r0:
49666  ldr r0,[r7,r0,lsl #2]
49667
49668;@ EaCalc : Get register index into r1:
49669  and r1,r8,#0x1e00
49670;@ EaRead : Read register[r1] into r1:
49671  ldr r1,[r7,r1,lsr #7]
49672
49673  mov r0,r0,asl #16
49674
49675  cmp r1,r0,asr #16 ;@ Defines NZCV
49676  mrs r10,cpsr ;@ r10=flags
49677  eor r10,r10,#0x20000000 ;@ Invert carry
49678
49679  ldrh r8,[r4],#2 ;@ Fetch next opcode
49680  subs r5,r5,#6 ;@ Subtract cycles
49681  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49682  b CycloneEnd
49683
49684;@ ---------- [b0d0] cmpa.w (a0), a0 uses Opb0d0 ----------
49685Opb0d0:
49686  str r4,[r7,#0x50] ;@ Save prev PC + 2
49687  str r5,[r7,#0x5c] ;@ Save Cycles
49688
49689;@ EaCalc : Get '(a0)' into r0:
49690  and r2,r8,#0x000f
49691  orr r2,r2,#0x8 ;@ A0-7
49692  ldr r0,[r7,r2,lsl #2]
49693;@ EaRead : Read '(a0)' (address in r0) into r0:
49694  str r4,[r7,#0x40] ;@ Save PC
49695  bic r0,r0,#0xff000000
49696  bl m68k_read16 ;@ Call read16(r0) handler
49697
49698;@ EaCalc : Get register index into r1:
49699  and r1,r8,#0x1e00
49700;@ EaRead : Read register[r1] into r1:
49701  ldr r1,[r7,r1,lsr #7]
49702
49703  mov r0,r0,asl #16
49704
49705  cmp r1,r0,asr #16 ;@ Defines NZCV
49706  mrs r10,cpsr ;@ r10=flags
49707  eor r10,r10,#0x20000000 ;@ Invert carry
49708
49709  ldr r5,[r7,#0x5c] ;@ Load Cycles
49710  ldrh r8,[r4],#2 ;@ Fetch next opcode
49711  subs r5,r5,#10 ;@ Subtract cycles
49712  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49713  b CycloneEnd
49714
49715;@ ---------- [b0d8] cmpa.w (a0)+, a0 uses Opb0d8 ----------
49716Opb0d8:
49717  str r4,[r7,#0x50] ;@ Save prev PC + 2
49718  str r5,[r7,#0x5c] ;@ Save Cycles
49719
49720;@ EaCalc : Get '(a0)+' into r0:
49721  and r2,r8,#0x000f
49722  ldr r0,[r7,r2,lsl #2]
49723  add r3,r0,#2 ;@ Post-increment An
49724  str r3,[r7,r2,lsl #2]
49725;@ EaRead : Read '(a0)+' (address in r0) into r0:
49726  str r4,[r7,#0x40] ;@ Save PC
49727  bic r0,r0,#0xff000000
49728  bl m68k_read16 ;@ Call read16(r0) handler
49729
49730;@ EaCalc : Get register index into r1:
49731  and r1,r8,#0x1e00
49732;@ EaRead : Read register[r1] into r1:
49733  ldr r1,[r7,r1,lsr #7]
49734
49735  mov r0,r0,asl #16
49736
49737  cmp r1,r0,asr #16 ;@ Defines NZCV
49738  mrs r10,cpsr ;@ r10=flags
49739  eor r10,r10,#0x20000000 ;@ Invert carry
49740
49741  ldr r5,[r7,#0x5c] ;@ Load Cycles
49742  ldrh r8,[r4],#2 ;@ Fetch next opcode
49743  subs r5,r5,#10 ;@ Subtract cycles
49744  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49745  b CycloneEnd
49746
49747;@ ---------- [b0e0] cmpa.w -(a0), a0 uses Opb0e0 ----------
49748Opb0e0:
49749  str r4,[r7,#0x50] ;@ Save prev PC + 2
49750  str r5,[r7,#0x5c] ;@ Save Cycles
49751
49752;@ EaCalc : Get '-(a0)' into r0:
49753  and r2,r8,#0x000f
49754  orr r2,r2,#0x8 ;@ A0-7
49755  ldr r0,[r7,r2,lsl #2]
49756  sub r0,r0,#2 ;@ Pre-decrement An
49757  str r0,[r7,r2,lsl #2]
49758;@ EaRead : Read '-(a0)' (address in r0) into r0:
49759  str r4,[r7,#0x40] ;@ Save PC
49760  bic r0,r0,#0xff000000
49761  bl m68k_read16 ;@ Call read16(r0) handler
49762
49763;@ EaCalc : Get register index into r1:
49764  and r1,r8,#0x1e00
49765;@ EaRead : Read register[r1] into r1:
49766  ldr r1,[r7,r1,lsr #7]
49767
49768  mov r0,r0,asl #16
49769
49770  cmp r1,r0,asr #16 ;@ Defines NZCV
49771  mrs r10,cpsr ;@ r10=flags
49772  eor r10,r10,#0x20000000 ;@ Invert carry
49773
49774  ldr r5,[r7,#0x5c] ;@ Load Cycles
49775  ldrh r8,[r4],#2 ;@ Fetch next opcode
49776  subs r5,r5,#12 ;@ Subtract cycles
49777  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49778  b CycloneEnd
49779
49780;@ ---------- [b0e8] cmpa.w ($3333,a0), a0 uses Opb0e8 ----------
49781Opb0e8:
49782  str r4,[r7,#0x50] ;@ Save prev PC + 2
49783  str r5,[r7,#0x5c] ;@ Save Cycles
49784
49785;@ EaCalc : Get '($3333,a0)' into r0:
49786  ldrsh r0,[r4],#2 ;@ Fetch offset
49787  and r2,r8,#0x000f
49788  ldr r2,[r7,r2,lsl #2]
49789  add r0,r0,r2 ;@ Add on offset
49790;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
49791  str r4,[r7,#0x40] ;@ Save PC
49792  bic r0,r0,#0xff000000
49793  bl m68k_read16 ;@ Call read16(r0) handler
49794
49795;@ EaCalc : Get register index into r1:
49796  and r1,r8,#0x1e00
49797;@ EaRead : Read register[r1] into r1:
49798  ldr r1,[r7,r1,lsr #7]
49799
49800  mov r0,r0,asl #16
49801
49802  cmp r1,r0,asr #16 ;@ Defines NZCV
49803  mrs r10,cpsr ;@ r10=flags
49804  eor r10,r10,#0x20000000 ;@ Invert carry
49805
49806  ldr r5,[r7,#0x5c] ;@ Load Cycles
49807  ldrh r8,[r4],#2 ;@ Fetch next opcode
49808  subs r5,r5,#14 ;@ Subtract cycles
49809  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49810  b CycloneEnd
49811
49812;@ ---------- [b0f0] cmpa.w ($33,a0,d3.w*2), a0 uses Opb0f0 ----------
49813Opb0f0:
49814  str r4,[r7,#0x50] ;@ Save prev PC + 2
49815  str r5,[r7,#0x5c] ;@ Save Cycles
49816
49817;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
49818;@ Get extension word into r3:
49819  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
49820  mov r2,r3,lsr #10
49821  tst r3,#0x0800 ;@ Is Rn Word or Long
49822  and r2,r2,#0x3c ;@ r2=Index of Rn
49823  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49824  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49825  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
49826  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
49827  and r2,r8,#0x000f
49828  orr r2,r2,#0x8 ;@ A0-7
49829  ldr r2,[r7,r2,lsl #2]
49830  add r0,r2,r3 ;@ r0=Disp+An+Rn
49831;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
49832  str r4,[r7,#0x40] ;@ Save PC
49833  bic r0,r0,#0xff000000
49834  bl m68k_read16 ;@ Call read16(r0) handler
49835
49836;@ EaCalc : Get register index into r1:
49837  and r1,r8,#0x1e00
49838;@ EaRead : Read register[r1] into r1:
49839  ldr r1,[r7,r1,lsr #7]
49840
49841  mov r0,r0,asl #16
49842
49843  cmp r1,r0,asr #16 ;@ Defines NZCV
49844  mrs r10,cpsr ;@ r10=flags
49845  eor r10,r10,#0x20000000 ;@ Invert carry
49846
49847  ldr r5,[r7,#0x5c] ;@ Load Cycles
49848  ldrh r8,[r4],#2 ;@ Fetch next opcode
49849  subs r5,r5,#16 ;@ Subtract cycles
49850  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49851  b CycloneEnd
49852
49853;@ ---------- [b0f8] cmpa.w $3333.w, a0 uses Opb0f8 ----------
49854Opb0f8:
49855  str r4,[r7,#0x50] ;@ Save prev PC + 2
49856  str r5,[r7,#0x5c] ;@ Save Cycles
49857
49858;@ EaCalc : Get '$3333.w' into r0:
49859  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
49860;@ EaRead : Read '$3333.w' (address in r0) into r0:
49861  str r4,[r7,#0x40] ;@ Save PC
49862  bic r0,r0,#0xff000000
49863  bl m68k_read16 ;@ Call read16(r0) handler
49864
49865;@ EaCalc : Get register index into r1:
49866  and r1,r8,#0x1e00
49867;@ EaRead : Read register[r1] into r1:
49868  ldr r1,[r7,r1,lsr #7]
49869
49870  mov r0,r0,asl #16
49871
49872  cmp r1,r0,asr #16 ;@ Defines NZCV
49873  mrs r10,cpsr ;@ r10=flags
49874  eor r10,r10,#0x20000000 ;@ Invert carry
49875
49876  ldr r5,[r7,#0x5c] ;@ Load Cycles
49877  ldrh r8,[r4],#2 ;@ Fetch next opcode
49878  subs r5,r5,#14 ;@ Subtract cycles
49879  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49880  b CycloneEnd
49881
49882;@ ---------- [b0f9] cmpa.w $33333333.l, a0 uses Opb0f9 ----------
49883Opb0f9:
49884  str r4,[r7,#0x50] ;@ Save prev PC + 2
49885  str r5,[r7,#0x5c] ;@ Save Cycles
49886
49887;@ EaCalc : Get '$33333333.l' into r0:
49888  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
49889  ldrh r0,[r4],#2
49890  orr r0,r0,r2,lsl #16
49891;@ EaRead : Read '$33333333.l' (address in r0) into r0:
49892  str r4,[r7,#0x40] ;@ Save PC
49893  bic r0,r0,#0xff000000
49894  bl m68k_read16 ;@ Call read16(r0) handler
49895
49896;@ EaCalc : Get register index into r1:
49897  and r1,r8,#0x1e00
49898;@ EaRead : Read register[r1] into r1:
49899  ldr r1,[r7,r1,lsr #7]
49900
49901  mov r0,r0,asl #16
49902
49903  cmp r1,r0,asr #16 ;@ Defines NZCV
49904  mrs r10,cpsr ;@ r10=flags
49905  eor r10,r10,#0x20000000 ;@ Invert carry
49906
49907  ldr r5,[r7,#0x5c] ;@ Load Cycles
49908  ldrh r8,[r4],#2 ;@ Fetch next opcode
49909  subs r5,r5,#18 ;@ Subtract cycles
49910  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49911  b CycloneEnd
49912
49913;@ ---------- [b0fa] cmpa.w ($3333,pc), a0; =3335 uses Opb0fa ----------
49914Opb0fa:
49915  str r4,[r7,#0x50] ;@ Save prev PC + 2
49916  str r5,[r7,#0x5c] ;@ Save Cycles
49917
49918;@ EaCalc : Get '($3333,pc)' into r0:
49919  ldr r0,[r7,#0x60] ;@ Get Memory base
49920  sub r0,r4,r0 ;@ Real PC
49921  ldrsh r2,[r4],#2 ;@ Fetch extension
49922  add r0,r2,r0 ;@ ($nn,PC)
49923;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
49924  str r4,[r7,#0x40] ;@ Save PC
49925  bic r0,r0,#0xff000000
49926  bl m68k_fetch16 ;@ Call fetch16(r0) handler
49927
49928;@ EaCalc : Get register index into r1:
49929  and r1,r8,#0x1e00
49930;@ EaRead : Read register[r1] into r1:
49931  ldr r1,[r7,r1,lsr #7]
49932
49933  mov r0,r0,asl #16
49934
49935  cmp r1,r0,asr #16 ;@ Defines NZCV
49936  mrs r10,cpsr ;@ r10=flags
49937  eor r10,r10,#0x20000000 ;@ Invert carry
49938
49939  ldr r5,[r7,#0x5c] ;@ Load Cycles
49940  ldrh r8,[r4],#2 ;@ Fetch next opcode
49941  subs r5,r5,#14 ;@ Subtract cycles
49942  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49943  b CycloneEnd
49944
49945;@ ---------- [b0fb] cmpa.w ($33,pc,d3.w*2), a0; =35 uses Opb0fb ----------
49946Opb0fb:
49947  str r4,[r7,#0x50] ;@ Save prev PC + 2
49948  str r5,[r7,#0x5c] ;@ Save Cycles
49949
49950;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
49951  ldr r0,[r7,#0x60] ;@ Get Memory base
49952  ldrh r3,[r4] ;@ Get extension word
49953  sub r0,r4,r0 ;@ r0=PC
49954  add r4,r4,#2
49955  mov r2,r3,lsr #10
49956  tst r3,#0x0800 ;@ Is Rn Word or Long
49957  and r2,r2,#0x3c ;@ r2=Index of Rn
49958  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49959  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49960  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
49961  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
49962  add r0,r2,r0 ;@ r0=Disp+PC+Rn
49963;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
49964  str r4,[r7,#0x40] ;@ Save PC
49965  bic r0,r0,#0xff000000
49966  bl m68k_fetch16 ;@ Call fetch16(r0) handler
49967
49968;@ EaCalc : Get register index into r1:
49969  and r1,r8,#0x1e00
49970;@ EaRead : Read register[r1] into r1:
49971  ldr r1,[r7,r1,lsr #7]
49972
49973  mov r0,r0,asl #16
49974
49975  cmp r1,r0,asr #16 ;@ Defines NZCV
49976  mrs r10,cpsr ;@ r10=flags
49977  eor r10,r10,#0x20000000 ;@ Invert carry
49978
49979  ldr r5,[r7,#0x5c] ;@ Load Cycles
49980  ldrh r8,[r4],#2 ;@ Fetch next opcode
49981  subs r5,r5,#16 ;@ Subtract cycles
49982  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49983  b CycloneEnd
49984
49985;@ ---------- [b0fc] cmpa.w #$3333, a0 uses Opb0fc ----------
49986Opb0fc:
49987;@ EaCalc : Get '#$3333' into r0:
49988  ldrsh r0,[r4],#2 ;@ Fetch immediate value
49989;@ EaRead : Read '#$3333' (address in r0) into r0:
49990
49991;@ EaCalc : Get register index into r1:
49992  and r1,r8,#0x1e00
49993;@ EaRead : Read register[r1] into r1:
49994  ldr r1,[r7,r1,lsr #7]
49995
49996  mov r0,r0,asl #16
49997
49998  cmp r1,r0,asr #16 ;@ Defines NZCV
49999  mrs r10,cpsr ;@ r10=flags
50000  eor r10,r10,#0x20000000 ;@ Invert carry
50001
50002  ldrh r8,[r4],#2 ;@ Fetch next opcode
50003  subs r5,r5,#10 ;@ Subtract cycles
50004  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50005  b CycloneEnd
50006
50007;@ ---------- [b100] eor.b d0, d0 uses Opb100 ----------
50008Opb100:
50009;@ Get EA into r11 and value into r0:
50010;@ EaCalc : Get register index into r11:
50011  and r11,r8,#0x000f
50012;@ EaRead : Read register[r11] into r0:
50013  ldr r0,[r7,r11,lsl #2]
50014
50015;@ Get register operand into r1:
50016;@ EaCalc : Get register index into r1:
50017  and r1,r8,#0x0e00
50018;@ EaRead : Read register[r1] into r1:
50019  ldr r1,[r7,r1,lsr #7]
50020
50021  mov r0,r0,asl #24
50022
50023;@ Do arithmetic:
50024  eors r1,r0,r1,asl #24
50025  and r10,r1,#0x80000000 ;@ r10=N_flag
50026  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50027
50028;@ EaWrite: r1 into register[r11]:
50029  mov r1,r1,lsr #24
50030  strb r1,[r7,r11,lsl #2]
50031
50032  ldrh r8,[r4],#2 ;@ Fetch next opcode
50033  subs r5,r5,#4 ;@ Subtract cycles
50034  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50035  b CycloneEnd
50036
50037;@ ---------- [b108] cmpm.b (a0)+, (a0)+ uses Opb108 ----------
50038Opb108:
50039  str r4,[r7,#0x50] ;@ Save prev PC + 2
50040  str r5,[r7,#0x5c] ;@ Save Cycles
50041
50042;@ Get src operand into r11:
50043;@ EaCalc : Get '(a0)+' into r0:
50044  and r2,r8,#0x000f
50045  ldr r0,[r7,r2,lsl #2]
50046  add r3,r0,#1 ;@ Post-increment An
50047  str r3,[r7,r2,lsl #2]
50048;@ EaRead : Read '(a0)+' (address in r0) into r11:
50049  str r4,[r7,#0x40] ;@ Save PC
50050  bic r0,r0,#0xff000000
50051  bl m68k_read8 ;@ Call read8(r0) handler
50052  mov r11,r0,asl #24
50053
50054;@ Get dst operand into r0:
50055;@ EaCalc : Get '(a0)+' into r0:
50056  and r2,r8,#0x1e00
50057  ldr r0,[r7,r2,lsr #7]
50058  add r3,r0,#1 ;@ Post-increment An
50059  str r3,[r7,r2,lsr #7]
50060;@ EaRead : Read '(a0)+' (address in r0) into r0:
50061  bic r0,r0,#0xff000000
50062  bl m68k_read8 ;@ Call read8(r0) handler
50063
50064  rsbs r0,r11,r0,asl #24
50065  mrs r10,cpsr ;@ r10=flags
50066  eor r10,r10,#0x20000000 ;@ Invert carry
50067
50068  ldr r5,[r7,#0x5c] ;@ Load Cycles
50069  ldrh r8,[r4],#2 ;@ Fetch next opcode
50070  subs r5,r5,#12 ;@ Subtract cycles
50071  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50072  b CycloneEnd
50073
50074;@ ---------- [b10f] cmpm.b (a7)+, (a0)+ uses Opb10f ----------
50075Opb10f:
50076  str r4,[r7,#0x50] ;@ Save prev PC + 2
50077  str r5,[r7,#0x5c] ;@ Save Cycles
50078
50079;@ Get src operand into r11:
50080;@ EaCalc : Get '(a7)+' into r0:
50081  ldr r0,[r7,#0x3c] ;@ A7
50082  add r3,r0,#2 ;@ Post-increment An
50083  str r3,[r7,#0x3c] ;@ A7
50084;@ EaRead : Read '(a7)+' (address in r0) into r11:
50085  str r4,[r7,#0x40] ;@ Save PC
50086  bic r0,r0,#0xff000000
50087  bl m68k_read8 ;@ Call read8(r0) handler
50088  mov r11,r0,asl #24
50089
50090;@ Get dst operand into r0:
50091;@ EaCalc : Get '(a0)+' into r0:
50092  and r2,r8,#0x1e00
50093  ldr r0,[r7,r2,lsr #7]
50094  add r3,r0,#1 ;@ Post-increment An
50095  str r3,[r7,r2,lsr #7]
50096;@ EaRead : Read '(a0)+' (address in r0) into r0:
50097  bic r0,r0,#0xff000000
50098  bl m68k_read8 ;@ Call read8(r0) handler
50099
50100  rsbs r0,r11,r0,asl #24
50101  mrs r10,cpsr ;@ r10=flags
50102  eor r10,r10,#0x20000000 ;@ Invert carry
50103
50104  ldr r5,[r7,#0x5c] ;@ Load Cycles
50105  ldrh r8,[r4],#2 ;@ Fetch next opcode
50106  subs r5,r5,#12 ;@ Subtract cycles
50107  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50108  b CycloneEnd
50109
50110;@ ---------- [b110] eor.b d0, (a0) uses Opb110 ----------
50111Opb110:
50112  str r4,[r7,#0x50] ;@ Save prev PC + 2
50113  str r5,[r7,#0x5c] ;@ Save Cycles
50114
50115;@ Get EA into r11 and value into r0:
50116;@ EaCalc : Get '(a0)' into r11:
50117  and r2,r8,#0x000f
50118  orr r2,r2,#0x8 ;@ A0-7
50119  ldr r11,[r7,r2,lsl #2]
50120;@ EaRead : Read '(a0)' (address in r11) into r0:
50121  str r4,[r7,#0x40] ;@ Save PC
50122  bic r0,r11,#0xff000000
50123  bl m68k_read8 ;@ Call read8(r0) handler
50124
50125;@ Get register operand into r1:
50126;@ EaCalc : Get register index into r1:
50127  and r1,r8,#0x0e00
50128;@ EaRead : Read register[r1] into r1:
50129  ldr r1,[r7,r1,lsr #7]
50130
50131  mov r0,r0,asl #24
50132
50133;@ Do arithmetic:
50134  eors r1,r0,r1,asl #24
50135  and r10,r1,#0x80000000 ;@ r10=N_flag
50136  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50137
50138;@ EaWrite: Write r1 into '(a0)' (address in r11):
50139  mov r1,r1,lsr #24
50140  bic r0,r11,#0xff000000
50141  bl m68k_write8 ;@ Call write8(r0,r1) handler
50142
50143  ldr r5,[r7,#0x5c] ;@ Load Cycles
50144  ldrh r8,[r4],#2 ;@ Fetch next opcode
50145  subs r5,r5,#12 ;@ Subtract cycles
50146  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50147  b CycloneEnd
50148
50149;@ ---------- [b118] eor.b d0, (a0)+ uses Opb118 ----------
50150Opb118:
50151  str r4,[r7,#0x50] ;@ Save prev PC + 2
50152  str r5,[r7,#0x5c] ;@ Save Cycles
50153
50154;@ Get EA into r11 and value into r0:
50155;@ EaCalc : Get '(a0)+' into r11:
50156  and r2,r8,#0x000f
50157  ldr r11,[r7,r2,lsl #2]
50158  add r3,r11,#1 ;@ Post-increment An
50159  str r3,[r7,r2,lsl #2]
50160;@ EaRead : Read '(a0)+' (address in r11) into r0:
50161  str r4,[r7,#0x40] ;@ Save PC
50162  bic r0,r11,#0xff000000
50163  bl m68k_read8 ;@ Call read8(r0) handler
50164
50165;@ Get register operand into r1:
50166;@ EaCalc : Get register index into r1:
50167  and r1,r8,#0x0e00
50168;@ EaRead : Read register[r1] into r1:
50169  ldr r1,[r7,r1,lsr #7]
50170
50171  mov r0,r0,asl #24
50172
50173;@ Do arithmetic:
50174  eors r1,r0,r1,asl #24
50175  and r10,r1,#0x80000000 ;@ r10=N_flag
50176  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50177
50178;@ EaWrite: Write r1 into '(a0)+' (address in r11):
50179  mov r1,r1,lsr #24
50180  bic r0,r11,#0xff000000
50181  bl m68k_write8 ;@ Call write8(r0,r1) handler
50182
50183  ldr r5,[r7,#0x5c] ;@ Load Cycles
50184  ldrh r8,[r4],#2 ;@ Fetch next opcode
50185  subs r5,r5,#12 ;@ Subtract cycles
50186  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50187  b CycloneEnd
50188
50189;@ ---------- [b11f] eor.b d0, (a7)+ uses Opb11f ----------
50190Opb11f:
50191  str r4,[r7,#0x50] ;@ Save prev PC + 2
50192  str r5,[r7,#0x5c] ;@ Save Cycles
50193
50194;@ Get EA into r11 and value into r0:
50195;@ EaCalc : Get '(a7)+' into r11:
50196  ldr r11,[r7,#0x3c] ;@ A7
50197  add r3,r11,#2 ;@ Post-increment An
50198  str r3,[r7,#0x3c] ;@ A7
50199;@ EaRead : Read '(a7)+' (address in r11) into r0:
50200  str r4,[r7,#0x40] ;@ Save PC
50201  bic r0,r11,#0xff000000
50202  bl m68k_read8 ;@ Call read8(r0) handler
50203
50204;@ Get register operand into r1:
50205;@ EaCalc : Get register index into r1:
50206  and r1,r8,#0x0e00
50207;@ EaRead : Read register[r1] into r1:
50208  ldr r1,[r7,r1,lsr #7]
50209
50210  mov r0,r0,asl #24
50211
50212;@ Do arithmetic:
50213  eors r1,r0,r1,asl #24
50214  and r10,r1,#0x80000000 ;@ r10=N_flag
50215  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50216
50217;@ EaWrite: Write r1 into '(a7)+' (address in r11):
50218  mov r1,r1,lsr #24
50219  bic r0,r11,#0xff000000
50220  bl m68k_write8 ;@ Call write8(r0,r1) handler
50221
50222  ldr r5,[r7,#0x5c] ;@ Load Cycles
50223  ldrh r8,[r4],#2 ;@ Fetch next opcode
50224  subs r5,r5,#12 ;@ Subtract cycles
50225  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50226  b CycloneEnd
50227
50228;@ ---------- [b120] eor.b d0, -(a0) uses Opb120 ----------
50229Opb120:
50230  str r4,[r7,#0x50] ;@ Save prev PC + 2
50231  str r5,[r7,#0x5c] ;@ Save Cycles
50232
50233;@ Get EA into r11 and value into r0:
50234;@ EaCalc : Get '-(a0)' into r11:
50235  and r2,r8,#0x000f
50236  orr r2,r2,#0x8 ;@ A0-7
50237  ldr r11,[r7,r2,lsl #2]
50238  sub r11,r11,#1 ;@ Pre-decrement An
50239  str r11,[r7,r2,lsl #2]
50240;@ EaRead : Read '-(a0)' (address in r11) into r0:
50241  str r4,[r7,#0x40] ;@ Save PC
50242  bic r0,r11,#0xff000000
50243  bl m68k_read8 ;@ Call read8(r0) handler
50244
50245;@ Get register operand into r1:
50246;@ EaCalc : Get register index into r1:
50247  and r1,r8,#0x0e00
50248;@ EaRead : Read register[r1] into r1:
50249  ldr r1,[r7,r1,lsr #7]
50250
50251  mov r0,r0,asl #24
50252
50253;@ Do arithmetic:
50254  eors r1,r0,r1,asl #24
50255  and r10,r1,#0x80000000 ;@ r10=N_flag
50256  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50257
50258;@ EaWrite: Write r1 into '-(a0)' (address in r11):
50259  mov r1,r1,lsr #24
50260  bic r0,r11,#0xff000000
50261  bl m68k_write8 ;@ Call write8(r0,r1) handler
50262
50263  ldr r5,[r7,#0x5c] ;@ Load Cycles
50264  ldrh r8,[r4],#2 ;@ Fetch next opcode
50265  subs r5,r5,#14 ;@ Subtract cycles
50266  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50267  b CycloneEnd
50268
50269;@ ---------- [b127] eor.b d0, -(a7) uses Opb127 ----------
50270Opb127:
50271  str r4,[r7,#0x50] ;@ Save prev PC + 2
50272  str r5,[r7,#0x5c] ;@ Save Cycles
50273
50274;@ Get EA into r11 and value into r0:
50275;@ EaCalc : Get '-(a7)' into r11:
50276  ldr r11,[r7,#0x3c] ;@ A7
50277  sub r11,r11,#2 ;@ Pre-decrement An
50278  str r11,[r7,#0x3c] ;@ A7
50279;@ EaRead : Read '-(a7)' (address in r11) into r0:
50280  str r4,[r7,#0x40] ;@ Save PC
50281  bic r0,r11,#0xff000000
50282  bl m68k_read8 ;@ Call read8(r0) handler
50283
50284;@ Get register operand into r1:
50285;@ EaCalc : Get register index into r1:
50286  and r1,r8,#0x0e00
50287;@ EaRead : Read register[r1] into r1:
50288  ldr r1,[r7,r1,lsr #7]
50289
50290  mov r0,r0,asl #24
50291
50292;@ Do arithmetic:
50293  eors r1,r0,r1,asl #24
50294  and r10,r1,#0x80000000 ;@ r10=N_flag
50295  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50296
50297;@ EaWrite: Write r1 into '-(a7)' (address in r11):
50298  mov r1,r1,lsr #24
50299  bic r0,r11,#0xff000000
50300  bl m68k_write8 ;@ Call write8(r0,r1) handler
50301
50302  ldr r5,[r7,#0x5c] ;@ Load Cycles
50303  ldrh r8,[r4],#2 ;@ Fetch next opcode
50304  subs r5,r5,#14 ;@ Subtract cycles
50305  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50306  b CycloneEnd
50307
50308;@ ---------- [b128] eor.b d0, ($3333,a0) uses Opb128 ----------
50309Opb128:
50310  str r4,[r7,#0x50] ;@ Save prev PC + 2
50311  str r5,[r7,#0x5c] ;@ Save Cycles
50312
50313;@ Get EA into r11 and value into r0:
50314;@ EaCalc : Get '($3333,a0)' into r11:
50315  ldrsh r0,[r4],#2 ;@ Fetch offset
50316  and r2,r8,#0x000f
50317  ldr r2,[r7,r2,lsl #2]
50318  add r11,r0,r2 ;@ Add on offset
50319;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
50320  str r4,[r7,#0x40] ;@ Save PC
50321  bic r0,r11,#0xff000000
50322  bl m68k_read8 ;@ Call read8(r0) handler
50323
50324;@ Get register operand into r1:
50325;@ EaCalc : Get register index into r1:
50326  and r1,r8,#0x0e00
50327;@ EaRead : Read register[r1] into r1:
50328  ldr r1,[r7,r1,lsr #7]
50329
50330  mov r0,r0,asl #24
50331
50332;@ Do arithmetic:
50333  eors r1,r0,r1,asl #24
50334  and r10,r1,#0x80000000 ;@ r10=N_flag
50335  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50336
50337;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
50338  mov r1,r1,lsr #24
50339  bic r0,r11,#0xff000000
50340  bl m68k_write8 ;@ Call write8(r0,r1) handler
50341
50342  ldr r5,[r7,#0x5c] ;@ Load Cycles
50343  ldrh r8,[r4],#2 ;@ Fetch next opcode
50344  subs r5,r5,#16 ;@ Subtract cycles
50345  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50346  b CycloneEnd
50347
50348;@ ---------- [b130] eor.b d0, ($33,a0,d3.w*2) uses Opb130 ----------
50349Opb130:
50350  str r4,[r7,#0x50] ;@ Save prev PC + 2
50351  str r5,[r7,#0x5c] ;@ Save Cycles
50352
50353;@ Get EA into r11 and value into r0:
50354;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
50355;@ Get extension word into r3:
50356  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
50357  mov r2,r3,lsr #10
50358  tst r3,#0x0800 ;@ Is Rn Word or Long
50359  and r2,r2,#0x3c ;@ r2=Index of Rn
50360  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
50361  ldrne   r2,[r7,r2] ;@ r2=Rn.l
50362  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
50363  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
50364  and r2,r8,#0x000f
50365  orr r2,r2,#0x8 ;@ A0-7
50366  ldr r2,[r7,r2,lsl #2]
50367  add r11,r2,r3 ;@ r11=Disp+An+Rn
50368;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
50369  str r4,[r7,#0x40] ;@ Save PC
50370  bic r0,r11,#0xff000000
50371  bl m68k_read8 ;@ Call read8(r0) handler
50372
50373;@ Get register operand into r1:
50374;@ EaCalc : Get register index into r1:
50375  and r1,r8,#0x0e00
50376;@ EaRead : Read register[r1] into r1:
50377  ldr r1,[r7,r1,lsr #7]
50378
50379  mov r0,r0,asl #24
50380
50381;@ Do arithmetic:
50382  eors r1,r0,r1,asl #24
50383  and r10,r1,#0x80000000 ;@ r10=N_flag
50384  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50385
50386;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
50387  mov r1,r1,lsr #24
50388  bic r0,r11,#0xff000000
50389  bl m68k_write8 ;@ Call write8(r0,r1) handler
50390
50391  ldr r5,[r7,#0x5c] ;@ Load Cycles
50392  ldrh r8,[r4],#2 ;@ Fetch next opcode
50393  subs r5,r5,#18 ;@ Subtract cycles
50394  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50395  b CycloneEnd
50396
50397;@ ---------- [b138] eor.b d0, $3333.w uses Opb138 ----------
50398Opb138:
50399  str r4,[r7,#0x50] ;@ Save prev PC + 2
50400  str r5,[r7,#0x5c] ;@ Save Cycles
50401
50402;@ Get EA into r11 and value into r0:
50403;@ EaCalc : Get '$3333.w' into r11:
50404  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
50405;@ EaRead : Read '$3333.w' (address in r11) into r0:
50406  str r4,[r7,#0x40] ;@ Save PC
50407  bic r0,r11,#0xff000000
50408  bl m68k_read8 ;@ Call read8(r0) handler
50409
50410;@ Get register operand into r1:
50411;@ EaCalc : Get register index into r1:
50412  and r1,r8,#0x0e00
50413;@ EaRead : Read register[r1] into r1:
50414  ldr r1,[r7,r1,lsr #7]
50415
50416  mov r0,r0,asl #24
50417
50418;@ Do arithmetic:
50419  eors r1,r0,r1,asl #24
50420  and r10,r1,#0x80000000 ;@ r10=N_flag
50421  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50422
50423;@ EaWrite: Write r1 into '$3333.w' (address in r11):
50424  mov r1,r1,lsr #24
50425  bic r0,r11,#0xff000000
50426  bl m68k_write8 ;@ Call write8(r0,r1) handler
50427
50428  ldr r5,[r7,#0x5c] ;@ Load Cycles
50429  ldrh r8,[r4],#2 ;@ Fetch next opcode
50430  subs r5,r5,#16 ;@ Subtract cycles
50431  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50432  b CycloneEnd
50433
50434;@ ---------- [b139] eor.b d0, $33333333.l uses Opb139 ----------
50435Opb139:
50436  str r4,[r7,#0x50] ;@ Save prev PC + 2
50437  str r5,[r7,#0x5c] ;@ Save Cycles
50438
50439;@ Get EA into r11 and value into r0:
50440;@ EaCalc : Get '$33333333.l' into r11:
50441  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
50442  ldrh r0,[r4],#2
50443  orr r11,r0,r2,lsl #16
50444;@ EaRead : Read '$33333333.l' (address in r11) into r0:
50445  str r4,[r7,#0x40] ;@ Save PC
50446  bic r0,r11,#0xff000000
50447  bl m68k_read8 ;@ Call read8(r0) handler
50448
50449;@ Get register operand into r1:
50450;@ EaCalc : Get register index into r1:
50451  and r1,r8,#0x0e00
50452;@ EaRead : Read register[r1] into r1:
50453  ldr r1,[r7,r1,lsr #7]
50454
50455  mov r0,r0,asl #24
50456
50457;@ Do arithmetic:
50458  eors r1,r0,r1,asl #24
50459  and r10,r1,#0x80000000 ;@ r10=N_flag
50460  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50461
50462;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
50463  mov r1,r1,lsr #24
50464  bic r0,r11,#0xff000000
50465  bl m68k_write8 ;@ Call write8(r0,r1) handler
50466
50467  ldr r5,[r7,#0x5c] ;@ Load Cycles
50468  ldrh r8,[r4],#2 ;@ Fetch next opcode
50469  subs r5,r5,#20 ;@ Subtract cycles
50470  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50471  b CycloneEnd
50472
50473;@ ---------- [b140] eor.w d0, d0 uses Opb140 ----------
50474Opb140:
50475;@ Get EA into r11 and value into r0:
50476;@ EaCalc : Get register index into r11:
50477  and r11,r8,#0x000f
50478  mov r11,r11,lsl #2
50479;@ EaRead : Read register[r11] into r0:
50480  ldr r0,[r7,r11]
50481
50482;@ Get register operand into r1:
50483;@ EaCalc : Get register index into r1:
50484  and r1,r8,#0x0e00
50485;@ EaRead : Read register[r1] into r1:
50486  ldr r1,[r7,r1,lsr #7]
50487
50488  mov r0,r0,asl #16
50489
50490;@ Do arithmetic:
50491  eors r1,r0,r1,asl #16
50492  and r10,r1,#0x80000000 ;@ r10=N_flag
50493  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50494
50495;@ EaWrite: r1 into register[r11]:
50496  mov r1,r1,lsr #16
50497  strh r1,[r7,r11]
50498
50499  ldrh r8,[r4],#2 ;@ Fetch next opcode
50500  subs r5,r5,#4 ;@ Subtract cycles
50501  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50502  b CycloneEnd
50503
50504;@ ---------- [b148] cmpm.w (a0)+, (a0)+ uses Opb148 ----------
50505Opb148:
50506  str r4,[r7,#0x50] ;@ Save prev PC + 2
50507  str r5,[r7,#0x5c] ;@ Save Cycles
50508
50509;@ Get src operand into r11:
50510;@ EaCalc : Get '(a0)+' into r0:
50511  and r2,r8,#0x000f
50512  ldr r0,[r7,r2,lsl #2]
50513  add r3,r0,#2 ;@ Post-increment An
50514  str r3,[r7,r2,lsl #2]
50515;@ EaRead : Read '(a0)+' (address in r0) into r11:
50516  str r4,[r7,#0x40] ;@ Save PC
50517  bic r0,r0,#0xff000000
50518  bl m68k_read16 ;@ Call read16(r0) handler
50519  mov r11,r0,asl #16
50520
50521;@ Get dst operand into r0:
50522;@ EaCalc : Get '(a0)+' into r0:
50523  and r2,r8,#0x1e00
50524  ldr r0,[r7,r2,lsr #7]
50525  add r3,r0,#2 ;@ Post-increment An
50526  str r3,[r7,r2,lsr #7]
50527;@ EaRead : Read '(a0)+' (address in r0) into r0:
50528  bic r0,r0,#0xff000000
50529  bl m68k_read16 ;@ Call read16(r0) handler
50530
50531  rsbs r0,r11,r0,asl #16
50532  mrs r10,cpsr ;@ r10=flags
50533  eor r10,r10,#0x20000000 ;@ Invert carry
50534
50535  ldr r5,[r7,#0x5c] ;@ Load Cycles
50536  ldrh r8,[r4],#2 ;@ Fetch next opcode
50537  subs r5,r5,#12 ;@ Subtract cycles
50538  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50539  b CycloneEnd
50540
50541;@ ---------- [b150] eor.w d0, (a0) uses Opb150 ----------
50542Opb150:
50543  str r4,[r7,#0x50] ;@ Save prev PC + 2
50544  str r5,[r7,#0x5c] ;@ Save Cycles
50545
50546;@ Get EA into r11 and value into r0:
50547;@ EaCalc : Get '(a0)' into r11:
50548  and r2,r8,#0x000f
50549  orr r2,r2,#0x8 ;@ A0-7
50550  ldr r11,[r7,r2,lsl #2]
50551;@ EaRead : Read '(a0)' (address in r11) into r0:
50552  str r4,[r7,#0x40] ;@ Save PC
50553  bic r0,r11,#0xff000000
50554  bl m68k_read16 ;@ Call read16(r0) handler
50555
50556;@ Get register operand into r1:
50557;@ EaCalc : Get register index into r1:
50558  and r1,r8,#0x0e00
50559;@ EaRead : Read register[r1] into r1:
50560  ldr r1,[r7,r1,lsr #7]
50561
50562  mov r0,r0,asl #16
50563
50564;@ Do arithmetic:
50565  eors r1,r0,r1,asl #16
50566  and r10,r1,#0x80000000 ;@ r10=N_flag
50567  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50568
50569;@ EaWrite: Write r1 into '(a0)' (address in r11):
50570  mov r1,r1,lsr #16
50571  bic r0,r11,#0xff000000
50572  bl m68k_write16 ;@ Call write16(r0,r1) handler
50573
50574  ldr r5,[r7,#0x5c] ;@ Load Cycles
50575  ldrh r8,[r4],#2 ;@ Fetch next opcode
50576  subs r5,r5,#12 ;@ Subtract cycles
50577  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50578  b CycloneEnd
50579
50580;@ ---------- [b158] eor.w d0, (a0)+ uses Opb158 ----------
50581Opb158:
50582  str r4,[r7,#0x50] ;@ Save prev PC + 2
50583  str r5,[r7,#0x5c] ;@ Save Cycles
50584
50585;@ Get EA into r11 and value into r0:
50586;@ EaCalc : Get '(a0)+' into r11:
50587  and r2,r8,#0x000f
50588  ldr r11,[r7,r2,lsl #2]
50589  add r3,r11,#2 ;@ Post-increment An
50590  str r3,[r7,r2,lsl #2]
50591;@ EaRead : Read '(a0)+' (address in r11) into r0:
50592  str r4,[r7,#0x40] ;@ Save PC
50593  bic r0,r11,#0xff000000
50594  bl m68k_read16 ;@ Call read16(r0) handler
50595
50596;@ Get register operand into r1:
50597;@ EaCalc : Get register index into r1:
50598  and r1,r8,#0x0e00
50599;@ EaRead : Read register[r1] into r1:
50600  ldr r1,[r7,r1,lsr #7]
50601
50602  mov r0,r0,asl #16
50603
50604;@ Do arithmetic:
50605  eors r1,r0,r1,asl #16
50606  and r10,r1,#0x80000000 ;@ r10=N_flag
50607  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50608
50609;@ EaWrite: Write r1 into '(a0)+' (address in r11):
50610  mov r1,r1,lsr #16
50611  bic r0,r11,#0xff000000
50612  bl m68k_write16 ;@ Call write16(r0,r1) handler
50613
50614  ldr r5,[r7,#0x5c] ;@ Load Cycles
50615  ldrh r8,[r4],#2 ;@ Fetch next opcode
50616  subs r5,r5,#12 ;@ Subtract cycles
50617  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50618  b CycloneEnd
50619
50620;@ ---------- [b160] eor.w d0, -(a0) uses Opb160 ----------
50621Opb160:
50622  str r4,[r7,#0x50] ;@ Save prev PC + 2
50623  str r5,[r7,#0x5c] ;@ Save Cycles
50624
50625;@ Get EA into r11 and value into r0:
50626;@ EaCalc : Get '-(a0)' into r11:
50627  and r2,r8,#0x000f
50628  orr r2,r2,#0x8 ;@ A0-7
50629  ldr r11,[r7,r2,lsl #2]
50630  sub r11,r11,#2 ;@ Pre-decrement An
50631  str r11,[r7,r2,lsl #2]
50632;@ EaRead : Read '-(a0)' (address in r11) into r0:
50633  str r4,[r7,#0x40] ;@ Save PC
50634  bic r0,r11,#0xff000000
50635  bl m68k_read16 ;@ Call read16(r0) handler
50636
50637;@ Get register operand into r1:
50638;@ EaCalc : Get register index into r1:
50639  and r1,r8,#0x0e00
50640;@ EaRead : Read register[r1] into r1:
50641  ldr r1,[r7,r1,lsr #7]
50642
50643  mov r0,r0,asl #16
50644
50645;@ Do arithmetic:
50646  eors r1,r0,r1,asl #16
50647  and r10,r1,#0x80000000 ;@ r10=N_flag
50648  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50649
50650;@ EaWrite: Write r1 into '-(a0)' (address in r11):
50651  mov r1,r1,lsr #16
50652  bic r0,r11,#0xff000000
50653  bl m68k_write16 ;@ Call write16(r0,r1) handler
50654
50655  ldr r5,[r7,#0x5c] ;@ Load Cycles
50656  ldrh r8,[r4],#2 ;@ Fetch next opcode
50657  subs r5,r5,#14 ;@ Subtract cycles
50658  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50659  b CycloneEnd
50660
50661;@ ---------- [b168] eor.w d0, ($3333,a0) uses Opb168 ----------
50662Opb168:
50663  str r4,[r7,#0x50] ;@ Save prev PC + 2
50664  str r5,[r7,#0x5c] ;@ Save Cycles
50665
50666;@ Get EA into r11 and value into r0:
50667;@ EaCalc : Get '($3333,a0)' into r11:
50668  ldrsh r0,[r4],#2 ;@ Fetch offset
50669  and r2,r8,#0x000f
50670  ldr r2,[r7,r2,lsl #2]
50671  add r11,r0,r2 ;@ Add on offset
50672;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
50673  str r4,[r7,#0x40] ;@ Save PC
50674  bic r0,r11,#0xff000000
50675  bl m68k_read16 ;@ Call read16(r0) handler
50676
50677;@ Get register operand into r1:
50678;@ EaCalc : Get register index into r1:
50679  and r1,r8,#0x0e00
50680;@ EaRead : Read register[r1] into r1:
50681  ldr r1,[r7,r1,lsr #7]
50682
50683  mov r0,r0,asl #16
50684
50685;@ Do arithmetic:
50686  eors r1,r0,r1,asl #16
50687  and r10,r1,#0x80000000 ;@ r10=N_flag
50688  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50689
50690;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
50691  mov r1,r1,lsr #16
50692  bic r0,r11,#0xff000000
50693  bl m68k_write16 ;@ Call write16(r0,r1) handler
50694
50695  ldr r5,[r7,#0x5c] ;@ Load Cycles
50696  ldrh r8,[r4],#2 ;@ Fetch next opcode
50697  subs r5,r5,#16 ;@ Subtract cycles
50698  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50699  b CycloneEnd
50700
50701;@ ---------- [b170] eor.w d0, ($33,a0,d3.w*2) uses Opb170 ----------
50702Opb170:
50703  str r4,[r7,#0x50] ;@ Save prev PC + 2
50704  str r5,[r7,#0x5c] ;@ Save Cycles
50705
50706;@ Get EA into r11 and value into r0:
50707;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
50708;@ Get extension word into r3:
50709  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
50710  mov r2,r3,lsr #10
50711  tst r3,#0x0800 ;@ Is Rn Word or Long
50712  and r2,r2,#0x3c ;@ r2=Index of Rn
50713  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
50714  ldrne   r2,[r7,r2] ;@ r2=Rn.l
50715  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
50716  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
50717  and r2,r8,#0x000f
50718  orr r2,r2,#0x8 ;@ A0-7
50719  ldr r2,[r7,r2,lsl #2]
50720  add r11,r2,r3 ;@ r11=Disp+An+Rn
50721;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
50722  str r4,[r7,#0x40] ;@ Save PC
50723  bic r0,r11,#0xff000000
50724  bl m68k_read16 ;@ Call read16(r0) handler
50725
50726;@ Get register operand into r1:
50727;@ EaCalc : Get register index into r1:
50728  and r1,r8,#0x0e00
50729;@ EaRead : Read register[r1] into r1:
50730  ldr r1,[r7,r1,lsr #7]
50731
50732  mov r0,r0,asl #16
50733
50734;@ Do arithmetic:
50735  eors r1,r0,r1,asl #16
50736  and r10,r1,#0x80000000 ;@ r10=N_flag
50737  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50738
50739;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
50740  mov r1,r1,lsr #16
50741  bic r0,r11,#0xff000000
50742  bl m68k_write16 ;@ Call write16(r0,r1) handler
50743
50744  ldr r5,[r7,#0x5c] ;@ Load Cycles
50745  ldrh r8,[r4],#2 ;@ Fetch next opcode
50746  subs r5,r5,#18 ;@ Subtract cycles
50747  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50748  b CycloneEnd
50749
50750;@ ---------- [b178] eor.w d0, $3333.w uses Opb178 ----------
50751Opb178:
50752  str r4,[r7,#0x50] ;@ Save prev PC + 2
50753  str r5,[r7,#0x5c] ;@ Save Cycles
50754
50755;@ Get EA into r11 and value into r0:
50756;@ EaCalc : Get '$3333.w' into r11:
50757  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
50758;@ EaRead : Read '$3333.w' (address in r11) into r0:
50759  str r4,[r7,#0x40] ;@ Save PC
50760  bic r0,r11,#0xff000000
50761  bl m68k_read16 ;@ Call read16(r0) handler
50762
50763;@ Get register operand into r1:
50764;@ EaCalc : Get register index into r1:
50765  and r1,r8,#0x0e00
50766;@ EaRead : Read register[r1] into r1:
50767  ldr r1,[r7,r1,lsr #7]
50768
50769  mov r0,r0,asl #16
50770
50771;@ Do arithmetic:
50772  eors r1,r0,r1,asl #16
50773  and r10,r1,#0x80000000 ;@ r10=N_flag
50774  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50775
50776;@ EaWrite: Write r1 into '$3333.w' (address in r11):
50777  mov r1,r1,lsr #16
50778  bic r0,r11,#0xff000000
50779  bl m68k_write16 ;@ Call write16(r0,r1) handler
50780
50781  ldr r5,[r7,#0x5c] ;@ Load Cycles
50782  ldrh r8,[r4],#2 ;@ Fetch next opcode
50783  subs r5,r5,#16 ;@ Subtract cycles
50784  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50785  b CycloneEnd
50786
50787;@ ---------- [b179] eor.w d0, $33333333.l uses Opb179 ----------
50788Opb179:
50789  str r4,[r7,#0x50] ;@ Save prev PC + 2
50790  str r5,[r7,#0x5c] ;@ Save Cycles
50791
50792;@ Get EA into r11 and value into r0:
50793;@ EaCalc : Get '$33333333.l' into r11:
50794  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
50795  ldrh r0,[r4],#2
50796  orr r11,r0,r2,lsl #16
50797;@ EaRead : Read '$33333333.l' (address in r11) into r0:
50798  str r4,[r7,#0x40] ;@ Save PC
50799  bic r0,r11,#0xff000000
50800  bl m68k_read16 ;@ Call read16(r0) handler
50801
50802;@ Get register operand into r1:
50803;@ EaCalc : Get register index into r1:
50804  and r1,r8,#0x0e00
50805;@ EaRead : Read register[r1] into r1:
50806  ldr r1,[r7,r1,lsr #7]
50807
50808  mov r0,r0,asl #16
50809
50810;@ Do arithmetic:
50811  eors r1,r0,r1,asl #16
50812  and r10,r1,#0x80000000 ;@ r10=N_flag
50813  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50814
50815;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
50816  mov r1,r1,lsr #16
50817  bic r0,r11,#0xff000000
50818  bl m68k_write16 ;@ Call write16(r0,r1) handler
50819
50820  ldr r5,[r7,#0x5c] ;@ Load Cycles
50821  ldrh r8,[r4],#2 ;@ Fetch next opcode
50822  subs r5,r5,#20 ;@ Subtract cycles
50823  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50824  b CycloneEnd
50825
50826;@ ---------- [b180] eor.l d0, d0 uses Opb180 ----------
50827Opb180:
50828;@ Get EA into r11 and value into r0:
50829;@ EaCalc : Get register index into r11:
50830  and r11,r8,#0x000f
50831;@ EaRead : Read register[r11] into r0:
50832  ldr r0,[r7,r11,lsl #2]
50833
50834;@ Get register operand into r1:
50835;@ EaCalc : Get register index into r1:
50836  and r1,r8,#0x0e00
50837;@ EaRead : Read register[r1] into r1:
50838  ldr r1,[r7,r1,lsr #7]
50839
50840;@ Do arithmetic:
50841  eors r1,r0,r1
50842  and r10,r1,#0x80000000 ;@ r10=N_flag
50843  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50844
50845;@ EaWrite: r1 into register[r11]:
50846  str r1,[r7,r11,lsl #2]
50847
50848  ldrh r8,[r4],#2 ;@ Fetch next opcode
50849  subs r5,r5,#8 ;@ Subtract cycles
50850  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50851  b CycloneEnd
50852
50853;@ ---------- [b188] cmpm.l (a0)+, (a0)+ uses Opb188 ----------
50854Opb188:
50855  str r4,[r7,#0x50] ;@ Save prev PC + 2
50856  str r5,[r7,#0x5c] ;@ Save Cycles
50857
50858;@ Get src operand into r11:
50859;@ EaCalc : Get '(a0)+' into r0:
50860  and r2,r8,#0x000f
50861  ldr r0,[r7,r2,lsl #2]
50862  add r3,r0,#4 ;@ Post-increment An
50863  str r3,[r7,r2,lsl #2]
50864;@ EaRead : Read '(a0)+' (address in r0) into r11:
50865  str r4,[r7,#0x40] ;@ Save PC
50866  bic r0,r0,#0xff000000
50867  bl m68k_read32 ;@ Call read32(r0) handler
50868  mov r11,r0
50869
50870;@ Get dst operand into r0:
50871;@ EaCalc : Get '(a0)+' into r0:
50872  and r2,r8,#0x1e00
50873  ldr r0,[r7,r2,lsr #7]
50874  add r3,r0,#4 ;@ Post-increment An
50875  str r3,[r7,r2,lsr #7]
50876;@ EaRead : Read '(a0)+' (address in r0) into r0:
50877  bic r0,r0,#0xff000000
50878  bl m68k_read32 ;@ Call read32(r0) handler
50879
50880  rsbs r0,r11,r0
50881  mrs r10,cpsr ;@ r10=flags
50882  eor r10,r10,#0x20000000 ;@ Invert carry
50883
50884  ldr r5,[r7,#0x5c] ;@ Load Cycles
50885  ldrh r8,[r4],#2 ;@ Fetch next opcode
50886  subs r5,r5,#20 ;@ Subtract cycles
50887  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50888  b CycloneEnd
50889
50890;@ ---------- [b190] eor.l d0, (a0) uses Opb190 ----------
50891Opb190:
50892  str r4,[r7,#0x50] ;@ Save prev PC + 2
50893  str r5,[r7,#0x5c] ;@ Save Cycles
50894
50895;@ Get EA into r11 and value into r0:
50896;@ EaCalc : Get '(a0)' into r11:
50897  and r2,r8,#0x000f
50898  orr r2,r2,#0x8 ;@ A0-7
50899  ldr r11,[r7,r2,lsl #2]
50900;@ EaRead : Read '(a0)' (address in r11) into r0:
50901  str r4,[r7,#0x40] ;@ Save PC
50902  bic r0,r11,#0xff000000
50903  bl m68k_read32 ;@ Call read32(r0) handler
50904
50905;@ Get register operand into r1:
50906;@ EaCalc : Get register index into r1:
50907  and r1,r8,#0x0e00
50908;@ EaRead : Read register[r1] into r1:
50909  ldr r1,[r7,r1,lsr #7]
50910
50911;@ Do arithmetic:
50912  eors r1,r0,r1
50913  and r10,r1,#0x80000000 ;@ r10=N_flag
50914  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50915
50916;@ EaWrite: Write r1 into '(a0)' (address in r11):
50917  bic r0,r11,#0xff000000
50918  bl m68k_write32 ;@ Call write32(r0,r1) handler
50919
50920  ldr r5,[r7,#0x5c] ;@ Load Cycles
50921  ldrh r8,[r4],#2 ;@ Fetch next opcode
50922  subs r5,r5,#20 ;@ Subtract cycles
50923  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50924  b CycloneEnd
50925
50926;@ ---------- [b198] eor.l d0, (a0)+ uses Opb198 ----------
50927Opb198:
50928  str r4,[r7,#0x50] ;@ Save prev PC + 2
50929  str r5,[r7,#0x5c] ;@ Save Cycles
50930
50931;@ Get EA into r11 and value into r0:
50932;@ EaCalc : Get '(a0)+' into r11:
50933  and r2,r8,#0x000f
50934  ldr r11,[r7,r2,lsl #2]
50935  add r3,r11,#4 ;@ Post-increment An
50936  str r3,[r7,r2,lsl #2]
50937;@ EaRead : Read '(a0)+' (address in r11) into r0:
50938  str r4,[r7,#0x40] ;@ Save PC
50939  bic r0,r11,#0xff000000
50940  bl m68k_read32 ;@ Call read32(r0) handler
50941
50942;@ Get register operand into r1:
50943;@ EaCalc : Get register index into r1:
50944  and r1,r8,#0x0e00
50945;@ EaRead : Read register[r1] into r1:
50946  ldr r1,[r7,r1,lsr #7]
50947
50948;@ Do arithmetic:
50949  eors r1,r0,r1
50950  and r10,r1,#0x80000000 ;@ r10=N_flag
50951  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50952
50953;@ EaWrite: Write r1 into '(a0)+' (address in r11):
50954  bic r0,r11,#0xff000000
50955  bl m68k_write32 ;@ Call write32(r0,r1) handler
50956
50957  ldr r5,[r7,#0x5c] ;@ Load Cycles
50958  ldrh r8,[r4],#2 ;@ Fetch next opcode
50959  subs r5,r5,#20 ;@ Subtract cycles
50960  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50961  b CycloneEnd
50962
50963;@ ---------- [b1a0] eor.l d0, -(a0) uses Opb1a0 ----------
50964Opb1a0:
50965  str r4,[r7,#0x50] ;@ Save prev PC + 2
50966  str r5,[r7,#0x5c] ;@ Save Cycles
50967
50968;@ Get EA into r11 and value into r0:
50969;@ EaCalc : Get '-(a0)' into r11:
50970  and r2,r8,#0x000f
50971  orr r2,r2,#0x8 ;@ A0-7
50972  ldr r11,[r7,r2,lsl #2]
50973  sub r11,r11,#4 ;@ Pre-decrement An
50974  str r11,[r7,r2,lsl #2]
50975;@ EaRead : Read '-(a0)' (address in r11) into r0:
50976  str r4,[r7,#0x40] ;@ Save PC
50977  bic r0,r11,#0xff000000
50978  bl m68k_read32 ;@ Call read32(r0) handler
50979
50980;@ Get register operand into r1:
50981;@ EaCalc : Get register index into r1:
50982  and r1,r8,#0x0e00
50983;@ EaRead : Read register[r1] into r1:
50984  ldr r1,[r7,r1,lsr #7]
50985
50986;@ Do arithmetic:
50987  eors r1,r0,r1
50988  and r10,r1,#0x80000000 ;@ r10=N_flag
50989  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
50990
50991;@ EaWrite: Write r1 into '-(a0)' (address in r11):
50992  bic r0,r11,#0xff000000
50993  bl m68k_write32 ;@ Call write32(r0,r1) handler
50994
50995  ldr r5,[r7,#0x5c] ;@ Load Cycles
50996  ldrh r8,[r4],#2 ;@ Fetch next opcode
50997  subs r5,r5,#22 ;@ Subtract cycles
50998  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50999  b CycloneEnd
51000
51001;@ ---------- [b1a8] eor.l d0, ($3333,a0) uses Opb1a8 ----------
51002Opb1a8:
51003  str r4,[r7,#0x50] ;@ Save prev PC + 2
51004  str r5,[r7,#0x5c] ;@ Save Cycles
51005
51006;@ Get EA into r11 and value into r0:
51007;@ EaCalc : Get '($3333,a0)' into r11:
51008  ldrsh r0,[r4],#2 ;@ Fetch offset
51009  and r2,r8,#0x000f
51010  ldr r2,[r7,r2,lsl #2]
51011  add r11,r0,r2 ;@ Add on offset
51012;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
51013  str r4,[r7,#0x40] ;@ Save PC
51014  bic r0,r11,#0xff000000
51015  bl m68k_read32 ;@ Call read32(r0) handler
51016
51017;@ Get register operand into r1:
51018;@ EaCalc : Get register index into r1:
51019  and r1,r8,#0x0e00
51020;@ EaRead : Read register[r1] into r1:
51021  ldr r1,[r7,r1,lsr #7]
51022
51023;@ Do arithmetic:
51024  eors r1,r0,r1
51025  and r10,r1,#0x80000000 ;@ r10=N_flag
51026  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51027
51028;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
51029  bic r0,r11,#0xff000000
51030  bl m68k_write32 ;@ Call write32(r0,r1) handler
51031
51032  ldr r5,[r7,#0x5c] ;@ Load Cycles
51033  ldrh r8,[r4],#2 ;@ Fetch next opcode
51034  subs r5,r5,#24 ;@ Subtract cycles
51035  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51036  b CycloneEnd
51037
51038;@ ---------- [b1b0] eor.l d0, ($33,a0,d3.w*2) uses Opb1b0 ----------
51039Opb1b0:
51040  str r4,[r7,#0x50] ;@ Save prev PC + 2
51041  str r5,[r7,#0x5c] ;@ Save Cycles
51042
51043;@ Get EA into r11 and value into r0:
51044;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
51045;@ Get extension word into r3:
51046  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
51047  mov r2,r3,lsr #10
51048  tst r3,#0x0800 ;@ Is Rn Word or Long
51049  and r2,r2,#0x3c ;@ r2=Index of Rn
51050  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
51051  ldrne   r2,[r7,r2] ;@ r2=Rn.l
51052  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
51053  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
51054  and r2,r8,#0x000f
51055  orr r2,r2,#0x8 ;@ A0-7
51056  ldr r2,[r7,r2,lsl #2]
51057  add r11,r2,r3 ;@ r11=Disp+An+Rn
51058;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
51059  str r4,[r7,#0x40] ;@ Save PC
51060  bic r0,r11,#0xff000000
51061  bl m68k_read32 ;@ Call read32(r0) handler
51062
51063;@ Get register operand into r1:
51064;@ EaCalc : Get register index into r1:
51065  and r1,r8,#0x0e00
51066;@ EaRead : Read register[r1] into r1:
51067  ldr r1,[r7,r1,lsr #7]
51068
51069;@ Do arithmetic:
51070  eors r1,r0,r1
51071  and r10,r1,#0x80000000 ;@ r10=N_flag
51072  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51073
51074;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
51075  bic r0,r11,#0xff000000
51076  bl m68k_write32 ;@ Call write32(r0,r1) handler
51077
51078  ldr r5,[r7,#0x5c] ;@ Load Cycles
51079  ldrh r8,[r4],#2 ;@ Fetch next opcode
51080  subs r5,r5,#26 ;@ Subtract cycles
51081  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51082  b CycloneEnd
51083
51084;@ ---------- [b1b8] eor.l d0, $3333.w uses Opb1b8 ----------
51085Opb1b8:
51086  str r4,[r7,#0x50] ;@ Save prev PC + 2
51087  str r5,[r7,#0x5c] ;@ Save Cycles
51088
51089;@ Get EA into r11 and value into r0:
51090;@ EaCalc : Get '$3333.w' into r11:
51091  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
51092;@ EaRead : Read '$3333.w' (address in r11) into r0:
51093  str r4,[r7,#0x40] ;@ Save PC
51094  bic r0,r11,#0xff000000
51095  bl m68k_read32 ;@ Call read32(r0) handler
51096
51097;@ Get register operand into r1:
51098;@ EaCalc : Get register index into r1:
51099  and r1,r8,#0x0e00
51100;@ EaRead : Read register[r1] into r1:
51101  ldr r1,[r7,r1,lsr #7]
51102
51103;@ Do arithmetic:
51104  eors r1,r0,r1
51105  and r10,r1,#0x80000000 ;@ r10=N_flag
51106  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51107
51108;@ EaWrite: Write r1 into '$3333.w' (address in r11):
51109  bic r0,r11,#0xff000000
51110  bl m68k_write32 ;@ Call write32(r0,r1) handler
51111
51112  ldr r5,[r7,#0x5c] ;@ Load Cycles
51113  ldrh r8,[r4],#2 ;@ Fetch next opcode
51114  subs r5,r5,#24 ;@ Subtract cycles
51115  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51116  b CycloneEnd
51117
51118;@ ---------- [b1b9] eor.l d0, $33333333.l uses Opb1b9 ----------
51119Opb1b9:
51120  str r4,[r7,#0x50] ;@ Save prev PC + 2
51121  str r5,[r7,#0x5c] ;@ Save Cycles
51122
51123;@ Get EA into r11 and value into r0:
51124;@ EaCalc : Get '$33333333.l' into r11:
51125  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
51126  ldrh r0,[r4],#2
51127  orr r11,r0,r2,lsl #16
51128;@ EaRead : Read '$33333333.l' (address in r11) into r0:
51129  str r4,[r7,#0x40] ;@ Save PC
51130  bic r0,r11,#0xff000000
51131  bl m68k_read32 ;@ Call read32(r0) handler
51132
51133;@ Get register operand into r1:
51134;@ EaCalc : Get register index into r1:
51135  and r1,r8,#0x0e00
51136;@ EaRead : Read register[r1] into r1:
51137  ldr r1,[r7,r1,lsr #7]
51138
51139;@ Do arithmetic:
51140  eors r1,r0,r1
51141  and r10,r1,#0x80000000 ;@ r10=N_flag
51142  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51143
51144;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
51145  bic r0,r11,#0xff000000
51146  bl m68k_write32 ;@ Call write32(r0,r1) handler
51147
51148  ldr r5,[r7,#0x5c] ;@ Load Cycles
51149  ldrh r8,[r4],#2 ;@ Fetch next opcode
51150  subs r5,r5,#28 ;@ Subtract cycles
51151  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51152  b CycloneEnd
51153
51154;@ ---------- [b1c0] cmpa.l d0, a0 uses Opb1c0 ----------
51155Opb1c0:
51156;@ EaCalc : Get register index into r0:
51157  and r0,r8,#0x000f
51158;@ EaRead : Read register[r0] into r0:
51159  ldr r0,[r7,r0,lsl #2]
51160
51161;@ EaCalc : Get register index into r1:
51162  and r1,r8,#0x1e00
51163;@ EaRead : Read register[r1] into r1:
51164  ldr r1,[r7,r1,lsr #7]
51165
51166  cmp r1,r0 ;@ Defines NZCV
51167  mrs r10,cpsr ;@ r10=flags
51168  eor r10,r10,#0x20000000 ;@ Invert carry
51169
51170  ldrh r8,[r4],#2 ;@ Fetch next opcode
51171  subs r5,r5,#6 ;@ Subtract cycles
51172  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51173  b CycloneEnd
51174
51175;@ ---------- [b1d0] cmpa.l (a0), a0 uses Opb1d0 ----------
51176Opb1d0:
51177  str r4,[r7,#0x50] ;@ Save prev PC + 2
51178  str r5,[r7,#0x5c] ;@ Save Cycles
51179
51180;@ EaCalc : Get '(a0)' into r0:
51181  and r2,r8,#0x000f
51182  orr r2,r2,#0x8 ;@ A0-7
51183  ldr r0,[r7,r2,lsl #2]
51184;@ EaRead : Read '(a0)' (address in r0) into r0:
51185  str r4,[r7,#0x40] ;@ Save PC
51186  bic r0,r0,#0xff000000
51187  bl m68k_read32 ;@ Call read32(r0) handler
51188
51189;@ EaCalc : Get register index into r1:
51190  and r1,r8,#0x1e00
51191;@ EaRead : Read register[r1] into r1:
51192  ldr r1,[r7,r1,lsr #7]
51193
51194  cmp r1,r0 ;@ Defines NZCV
51195  mrs r10,cpsr ;@ r10=flags
51196  eor r10,r10,#0x20000000 ;@ Invert carry
51197
51198  ldr r5,[r7,#0x5c] ;@ Load Cycles
51199  ldrh r8,[r4],#2 ;@ Fetch next opcode
51200  subs r5,r5,#14 ;@ Subtract cycles
51201  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51202  b CycloneEnd
51203
51204;@ ---------- [b1d8] cmpa.l (a0)+, a0 uses Opb1d8 ----------
51205Opb1d8:
51206  str r4,[r7,#0x50] ;@ Save prev PC + 2
51207  str r5,[r7,#0x5c] ;@ Save Cycles
51208
51209;@ EaCalc : Get '(a0)+' into r0:
51210  and r2,r8,#0x000f
51211  ldr r0,[r7,r2,lsl #2]
51212  add r3,r0,#4 ;@ Post-increment An
51213  str r3,[r7,r2,lsl #2]
51214;@ EaRead : Read '(a0)+' (address in r0) into r0:
51215  str r4,[r7,#0x40] ;@ Save PC
51216  bic r0,r0,#0xff000000
51217  bl m68k_read32 ;@ Call read32(r0) handler
51218
51219;@ EaCalc : Get register index into r1:
51220  and r1,r8,#0x1e00
51221;@ EaRead : Read register[r1] into r1:
51222  ldr r1,[r7,r1,lsr #7]
51223
51224  cmp r1,r0 ;@ Defines NZCV
51225  mrs r10,cpsr ;@ r10=flags
51226  eor r10,r10,#0x20000000 ;@ Invert carry
51227
51228  ldr r5,[r7,#0x5c] ;@ Load Cycles
51229  ldrh r8,[r4],#2 ;@ Fetch next opcode
51230  subs r5,r5,#14 ;@ Subtract cycles
51231  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51232  b CycloneEnd
51233
51234;@ ---------- [b1e0] cmpa.l -(a0), a0 uses Opb1e0 ----------
51235Opb1e0:
51236  str r4,[r7,#0x50] ;@ Save prev PC + 2
51237  str r5,[r7,#0x5c] ;@ Save Cycles
51238
51239;@ EaCalc : Get '-(a0)' into r0:
51240  and r2,r8,#0x000f
51241  orr r2,r2,#0x8 ;@ A0-7
51242  ldr r0,[r7,r2,lsl #2]
51243  sub r0,r0,#4 ;@ Pre-decrement An
51244  str r0,[r7,r2,lsl #2]
51245;@ EaRead : Read '-(a0)' (address in r0) into r0:
51246  str r4,[r7,#0x40] ;@ Save PC
51247  bic r0,r0,#0xff000000
51248  bl m68k_read32 ;@ Call read32(r0) handler
51249
51250;@ EaCalc : Get register index into r1:
51251  and r1,r8,#0x1e00
51252;@ EaRead : Read register[r1] into r1:
51253  ldr r1,[r7,r1,lsr #7]
51254
51255  cmp r1,r0 ;@ Defines NZCV
51256  mrs r10,cpsr ;@ r10=flags
51257  eor r10,r10,#0x20000000 ;@ Invert carry
51258
51259  ldr r5,[r7,#0x5c] ;@ Load Cycles
51260  ldrh r8,[r4],#2 ;@ Fetch next opcode
51261  subs r5,r5,#16 ;@ Subtract cycles
51262  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51263  b CycloneEnd
51264
51265;@ ---------- [b1e8] cmpa.l ($3333,a0), a0 uses Opb1e8 ----------
51266Opb1e8:
51267  str r4,[r7,#0x50] ;@ Save prev PC + 2
51268  str r5,[r7,#0x5c] ;@ Save Cycles
51269
51270;@ EaCalc : Get '($3333,a0)' into r0:
51271  ldrsh r0,[r4],#2 ;@ Fetch offset
51272  and r2,r8,#0x000f
51273  ldr r2,[r7,r2,lsl #2]
51274  add r0,r0,r2 ;@ Add on offset
51275;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
51276  str r4,[r7,#0x40] ;@ Save PC
51277  bic r0,r0,#0xff000000
51278  bl m68k_read32 ;@ Call read32(r0) handler
51279
51280;@ EaCalc : Get register index into r1:
51281  and r1,r8,#0x1e00
51282;@ EaRead : Read register[r1] into r1:
51283  ldr r1,[r7,r1,lsr #7]
51284
51285  cmp r1,r0 ;@ Defines NZCV
51286  mrs r10,cpsr ;@ r10=flags
51287  eor r10,r10,#0x20000000 ;@ Invert carry
51288
51289  ldr r5,[r7,#0x5c] ;@ Load Cycles
51290  ldrh r8,[r4],#2 ;@ Fetch next opcode
51291  subs r5,r5,#18 ;@ Subtract cycles
51292  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51293  b CycloneEnd
51294
51295;@ ---------- [b1f0] cmpa.l ($33,a0,d3.w*2), a0 uses Opb1f0 ----------
51296Opb1f0:
51297  str r4,[r7,#0x50] ;@ Save prev PC + 2
51298  str r5,[r7,#0x5c] ;@ Save Cycles
51299
51300;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
51301;@ Get extension word into r3:
51302  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
51303  mov r2,r3,lsr #10
51304  tst r3,#0x0800 ;@ Is Rn Word or Long
51305  and r2,r2,#0x3c ;@ r2=Index of Rn
51306  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
51307  ldrne   r2,[r7,r2] ;@ r2=Rn.l
51308  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
51309  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
51310  and r2,r8,#0x000f
51311  orr r2,r2,#0x8 ;@ A0-7
51312  ldr r2,[r7,r2,lsl #2]
51313  add r0,r2,r3 ;@ r0=Disp+An+Rn
51314;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
51315  str r4,[r7,#0x40] ;@ Save PC
51316  bic r0,r0,#0xff000000
51317  bl m68k_read32 ;@ Call read32(r0) handler
51318
51319;@ EaCalc : Get register index into r1:
51320  and r1,r8,#0x1e00
51321;@ EaRead : Read register[r1] into r1:
51322  ldr r1,[r7,r1,lsr #7]
51323
51324  cmp r1,r0 ;@ Defines NZCV
51325  mrs r10,cpsr ;@ r10=flags
51326  eor r10,r10,#0x20000000 ;@ Invert carry
51327
51328  ldr r5,[r7,#0x5c] ;@ Load Cycles
51329  ldrh r8,[r4],#2 ;@ Fetch next opcode
51330  subs r5,r5,#20 ;@ Subtract cycles
51331  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51332  b CycloneEnd
51333
51334;@ ---------- [b1f8] cmpa.l $3333.w, a0 uses Opb1f8 ----------
51335Opb1f8:
51336  str r4,[r7,#0x50] ;@ Save prev PC + 2
51337  str r5,[r7,#0x5c] ;@ Save Cycles
51338
51339;@ EaCalc : Get '$3333.w' into r0:
51340  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
51341;@ EaRead : Read '$3333.w' (address in r0) into r0:
51342  str r4,[r7,#0x40] ;@ Save PC
51343  bic r0,r0,#0xff000000
51344  bl m68k_read32 ;@ Call read32(r0) handler
51345
51346;@ EaCalc : Get register index into r1:
51347  and r1,r8,#0x1e00
51348;@ EaRead : Read register[r1] into r1:
51349  ldr r1,[r7,r1,lsr #7]
51350
51351  cmp r1,r0 ;@ Defines NZCV
51352  mrs r10,cpsr ;@ r10=flags
51353  eor r10,r10,#0x20000000 ;@ Invert carry
51354
51355  ldr r5,[r7,#0x5c] ;@ Load Cycles
51356  ldrh r8,[r4],#2 ;@ Fetch next opcode
51357  subs r5,r5,#18 ;@ Subtract cycles
51358  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51359  b CycloneEnd
51360
51361;@ ---------- [b1f9] cmpa.l $33333333.l, a0 uses Opb1f9 ----------
51362Opb1f9:
51363  str r4,[r7,#0x50] ;@ Save prev PC + 2
51364  str r5,[r7,#0x5c] ;@ Save Cycles
51365
51366;@ EaCalc : Get '$33333333.l' into r0:
51367  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
51368  ldrh r0,[r4],#2
51369  orr r0,r0,r2,lsl #16
51370;@ EaRead : Read '$33333333.l' (address in r0) into r0:
51371  str r4,[r7,#0x40] ;@ Save PC
51372  bic r0,r0,#0xff000000
51373  bl m68k_read32 ;@ Call read32(r0) handler
51374
51375;@ EaCalc : Get register index into r1:
51376  and r1,r8,#0x1e00
51377;@ EaRead : Read register[r1] into r1:
51378  ldr r1,[r7,r1,lsr #7]
51379
51380  cmp r1,r0 ;@ Defines NZCV
51381  mrs r10,cpsr ;@ r10=flags
51382  eor r10,r10,#0x20000000 ;@ Invert carry
51383
51384  ldr r5,[r7,#0x5c] ;@ Load Cycles
51385  ldrh r8,[r4],#2 ;@ Fetch next opcode
51386  subs r5,r5,#22 ;@ Subtract cycles
51387  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51388  b CycloneEnd
51389
51390;@ ---------- [b1fa] cmpa.l ($3333,pc), a0; =3335 uses Opb1fa ----------
51391Opb1fa:
51392  str r4,[r7,#0x50] ;@ Save prev PC + 2
51393  str r5,[r7,#0x5c] ;@ Save Cycles
51394
51395;@ EaCalc : Get '($3333,pc)' into r0:
51396  ldr r0,[r7,#0x60] ;@ Get Memory base
51397  sub r0,r4,r0 ;@ Real PC
51398  ldrsh r2,[r4],#2 ;@ Fetch extension
51399  add r0,r2,r0 ;@ ($nn,PC)
51400;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
51401  str r4,[r7,#0x40] ;@ Save PC
51402  bic r0,r0,#0xff000000
51403  bl m68k_fetch32 ;@ Call fetch32(r0) handler
51404
51405;@ EaCalc : Get register index into r1:
51406  and r1,r8,#0x1e00
51407;@ EaRead : Read register[r1] into r1:
51408  ldr r1,[r7,r1,lsr #7]
51409
51410  cmp r1,r0 ;@ Defines NZCV
51411  mrs r10,cpsr ;@ r10=flags
51412  eor r10,r10,#0x20000000 ;@ Invert carry
51413
51414  ldr r5,[r7,#0x5c] ;@ Load Cycles
51415  ldrh r8,[r4],#2 ;@ Fetch next opcode
51416  subs r5,r5,#18 ;@ Subtract cycles
51417  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51418  b CycloneEnd
51419
51420;@ ---------- [b1fb] cmpa.l ($33,pc,d3.w*2), a0; =35 uses Opb1fb ----------
51421Opb1fb:
51422  str r4,[r7,#0x50] ;@ Save prev PC + 2
51423  str r5,[r7,#0x5c] ;@ Save Cycles
51424
51425;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
51426  ldr r0,[r7,#0x60] ;@ Get Memory base
51427  ldrh r3,[r4] ;@ Get extension word
51428  sub r0,r4,r0 ;@ r0=PC
51429  add r4,r4,#2
51430  mov r2,r3,lsr #10
51431  tst r3,#0x0800 ;@ Is Rn Word or Long
51432  and r2,r2,#0x3c ;@ r2=Index of Rn
51433  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
51434  ldrne   r2,[r7,r2] ;@ r2=Rn.l
51435  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
51436  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
51437  add r0,r2,r0 ;@ r0=Disp+PC+Rn
51438;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
51439  str r4,[r7,#0x40] ;@ Save PC
51440  bic r0,r0,#0xff000000
51441  bl m68k_fetch32 ;@ Call fetch32(r0) handler
51442
51443;@ EaCalc : Get register index into r1:
51444  and r1,r8,#0x1e00
51445;@ EaRead : Read register[r1] into r1:
51446  ldr r1,[r7,r1,lsr #7]
51447
51448  cmp r1,r0 ;@ Defines NZCV
51449  mrs r10,cpsr ;@ r10=flags
51450  eor r10,r10,#0x20000000 ;@ Invert carry
51451
51452  ldr r5,[r7,#0x5c] ;@ Load Cycles
51453  ldrh r8,[r4],#2 ;@ Fetch next opcode
51454  subs r5,r5,#20 ;@ Subtract cycles
51455  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51456  b CycloneEnd
51457
51458;@ ---------- [b1fc] cmpa.l #$33333333, a0 uses Opb1fc ----------
51459Opb1fc:
51460;@ EaCalc : Get '#$33333333' into r0:
51461  ldrh r2,[r4],#2 ;@ Fetch immediate value
51462  ldrh r3,[r4],#2
51463  orr r0,r3,r2,lsl #16
51464;@ EaRead : Read '#$33333333' (address in r0) into r0:
51465
51466;@ EaCalc : Get register index into r1:
51467  and r1,r8,#0x1e00
51468;@ EaRead : Read register[r1] into r1:
51469  ldr r1,[r7,r1,lsr #7]
51470
51471  cmp r1,r0 ;@ Defines NZCV
51472  mrs r10,cpsr ;@ r10=flags
51473  eor r10,r10,#0x20000000 ;@ Invert carry
51474
51475  ldrh r8,[r4],#2 ;@ Fetch next opcode
51476  subs r5,r5,#14 ;@ Subtract cycles
51477  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51478  b CycloneEnd
51479
51480;@ ---------- [bf08] cmpm.b (a0)+, (a7)+ uses Opbf08 ----------
51481Opbf08:
51482  str r4,[r7,#0x50] ;@ Save prev PC + 2
51483  str r5,[r7,#0x5c] ;@ Save Cycles
51484
51485;@ Get src operand into r11:
51486;@ EaCalc : Get '(a0)+' into r0:
51487  and r2,r8,#0x000f
51488  ldr r0,[r7,r2,lsl #2]
51489  add r3,r0,#1 ;@ Post-increment An
51490  str r3,[r7,r2,lsl #2]
51491;@ EaRead : Read '(a0)+' (address in r0) into r11:
51492  str r4,[r7,#0x40] ;@ Save PC
51493  bic r0,r0,#0xff000000
51494  bl m68k_read8 ;@ Call read8(r0) handler
51495  mov r11,r0,asl #24
51496
51497;@ Get dst operand into r0:
51498;@ EaCalc : Get '(a7)+' into r0:
51499  ldr r0,[r7,#0x3c] ;@ A7
51500  add r3,r0,#2 ;@ Post-increment An
51501  str r3,[r7,#0x3c] ;@ A7
51502;@ EaRead : Read '(a7)+' (address in r0) into r0:
51503  bic r0,r0,#0xff000000
51504  bl m68k_read8 ;@ Call read8(r0) handler
51505
51506  rsbs r0,r11,r0,asl #24
51507  mrs r10,cpsr ;@ r10=flags
51508  eor r10,r10,#0x20000000 ;@ Invert carry
51509
51510  ldr r5,[r7,#0x5c] ;@ Load Cycles
51511  ldrh r8,[r4],#2 ;@ Fetch next opcode
51512  subs r5,r5,#12 ;@ Subtract cycles
51513  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51514  b CycloneEnd
51515
51516;@ ---------- [bf0f] cmpm.b (a7)+, (a7)+ uses Opbf0f ----------
51517Opbf0f:
51518  str r4,[r7,#0x50] ;@ Save prev PC + 2
51519  str r5,[r7,#0x5c] ;@ Save Cycles
51520
51521;@ Get src operand into r11:
51522;@ EaCalc : Get '(a7)+' into r0:
51523  ldr r0,[r7,#0x3c] ;@ A7
51524  add r3,r0,#2 ;@ Post-increment An
51525  str r3,[r7,#0x3c] ;@ A7
51526;@ EaRead : Read '(a7)+' (address in r0) into r11:
51527  str r4,[r7,#0x40] ;@ Save PC
51528  bic r0,r0,#0xff000000
51529  bl m68k_read8 ;@ Call read8(r0) handler
51530  mov r11,r0,asl #24
51531
51532;@ Get dst operand into r0:
51533;@ EaCalc : Get '(a7)+' into r0:
51534  ldr r0,[r7,#0x3c] ;@ A7
51535  add r3,r0,#2 ;@ Post-increment An
51536  str r3,[r7,#0x3c] ;@ A7
51537;@ EaRead : Read '(a7)+' (address in r0) into r0:
51538  bic r0,r0,#0xff000000
51539  bl m68k_read8 ;@ Call read8(r0) handler
51540
51541  rsbs r0,r11,r0,asl #24
51542  mrs r10,cpsr ;@ r10=flags
51543  eor r10,r10,#0x20000000 ;@ Invert carry
51544
51545  ldr r5,[r7,#0x5c] ;@ Load Cycles
51546  ldrh r8,[r4],#2 ;@ Fetch next opcode
51547  subs r5,r5,#12 ;@ Subtract cycles
51548  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51549  b CycloneEnd
51550
51551;@ ---------- [c000] and.b d0, d0 uses Opc000 ----------
51552Opc000:
51553;@ EaCalc : Get register index into r0:
51554  and r0,r8,#0x000f
51555;@ EaRead : Read register[r0] into r0:
51556  ldr r0,[r7,r0,lsl #2]
51557
51558;@ EaCalc : Get register index into r11:
51559  and r11,r8,#0x0e00
51560;@ EaRead : Read register[r11] into r1:
51561  ldr r1,[r7,r11,lsr #7]
51562
51563;@ Do arithmetic:
51564  mov r0,r0,asl #24
51565  ands r1,r0,r1,asl #24
51566  and r10,r1,#0x80000000 ;@ r10=N_flag
51567  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51568
51569;@ Save result:
51570  mov r1,r1,asr #24
51571;@ EaWrite: r1 into register[r11]:
51572  strb r1,[r7,r11,lsr #7]
51573
51574  ldrh r8,[r4],#2 ;@ Fetch next opcode
51575  subs r5,r5,#4 ;@ Subtract cycles
51576  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51577  b CycloneEnd
51578
51579;@ ---------- [c010] and.b (a0), d0 uses Opc010 ----------
51580Opc010:
51581  str r4,[r7,#0x50] ;@ Save prev PC + 2
51582  str r5,[r7,#0x5c] ;@ Save Cycles
51583
51584;@ EaCalc : Get '(a0)' into r0:
51585  and r2,r8,#0x000f
51586  orr r2,r2,#0x8 ;@ A0-7
51587  ldr r0,[r7,r2,lsl #2]
51588;@ EaRead : Read '(a0)' (address in r0) into r0:
51589  str r4,[r7,#0x40] ;@ Save PC
51590  bic r0,r0,#0xff000000
51591  bl m68k_read8 ;@ Call read8(r0) handler
51592
51593;@ EaCalc : Get register index into r11:
51594  and r11,r8,#0x0e00
51595;@ EaRead : Read register[r11] into r1:
51596  ldr r1,[r7,r11,lsr #7]
51597
51598;@ Do arithmetic:
51599  mov r0,r0,asl #24
51600  ands r1,r0,r1,asl #24
51601  and r10,r1,#0x80000000 ;@ r10=N_flag
51602  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51603
51604;@ Save result:
51605  mov r1,r1,asr #24
51606;@ EaWrite: r1 into register[r11]:
51607  strb r1,[r7,r11,lsr #7]
51608
51609  ldr r5,[r7,#0x5c] ;@ Load Cycles
51610  ldrh r8,[r4],#2 ;@ Fetch next opcode
51611  subs r5,r5,#8 ;@ Subtract cycles
51612  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51613  b CycloneEnd
51614
51615;@ ---------- [c018] and.b (a0)+, d0 uses Opc018 ----------
51616Opc018:
51617  str r4,[r7,#0x50] ;@ Save prev PC + 2
51618  str r5,[r7,#0x5c] ;@ Save Cycles
51619
51620;@ EaCalc : Get '(a0)+' into r0:
51621  and r2,r8,#0x000f
51622  ldr r0,[r7,r2,lsl #2]
51623  add r3,r0,#1 ;@ Post-increment An
51624  str r3,[r7,r2,lsl #2]
51625;@ EaRead : Read '(a0)+' (address in r0) into r0:
51626  str r4,[r7,#0x40] ;@ Save PC
51627  bic r0,r0,#0xff000000
51628  bl m68k_read8 ;@ Call read8(r0) handler
51629
51630;@ EaCalc : Get register index into r11:
51631  and r11,r8,#0x0e00
51632;@ EaRead : Read register[r11] into r1:
51633  ldr r1,[r7,r11,lsr #7]
51634
51635;@ Do arithmetic:
51636  mov r0,r0,asl #24
51637  ands r1,r0,r1,asl #24
51638  and r10,r1,#0x80000000 ;@ r10=N_flag
51639  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51640
51641;@ Save result:
51642  mov r1,r1,asr #24
51643;@ EaWrite: r1 into register[r11]:
51644  strb r1,[r7,r11,lsr #7]
51645
51646  ldr r5,[r7,#0x5c] ;@ Load Cycles
51647  ldrh r8,[r4],#2 ;@ Fetch next opcode
51648  subs r5,r5,#8 ;@ Subtract cycles
51649  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51650  b CycloneEnd
51651
51652;@ ---------- [c01f] and.b (a7)+, d0 uses Opc01f ----------
51653Opc01f:
51654  str r4,[r7,#0x50] ;@ Save prev PC + 2
51655  str r5,[r7,#0x5c] ;@ Save Cycles
51656
51657;@ EaCalc : Get '(a7)+' into r0:
51658  ldr r0,[r7,#0x3c] ;@ A7
51659  add r3,r0,#2 ;@ Post-increment An
51660  str r3,[r7,#0x3c] ;@ A7
51661;@ EaRead : Read '(a7)+' (address in r0) into r0:
51662  str r4,[r7,#0x40] ;@ Save PC
51663  bic r0,r0,#0xff000000
51664  bl m68k_read8 ;@ Call read8(r0) handler
51665
51666;@ EaCalc : Get register index into r11:
51667  and r11,r8,#0x0e00
51668;@ EaRead : Read register[r11] into r1:
51669  ldr r1,[r7,r11,lsr #7]
51670
51671;@ Do arithmetic:
51672  mov r0,r0,asl #24
51673  ands r1,r0,r1,asl #24
51674  and r10,r1,#0x80000000 ;@ r10=N_flag
51675  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51676
51677;@ Save result:
51678  mov r1,r1,asr #24
51679;@ EaWrite: r1 into register[r11]:
51680  strb r1,[r7,r11,lsr #7]
51681
51682  ldr r5,[r7,#0x5c] ;@ Load Cycles
51683  ldrh r8,[r4],#2 ;@ Fetch next opcode
51684  subs r5,r5,#8 ;@ Subtract cycles
51685  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51686  b CycloneEnd
51687
51688;@ ---------- [c020] and.b -(a0), d0 uses Opc020 ----------
51689Opc020:
51690  str r4,[r7,#0x50] ;@ Save prev PC + 2
51691  str r5,[r7,#0x5c] ;@ Save Cycles
51692
51693;@ EaCalc : Get '-(a0)' into r0:
51694  and r2,r8,#0x000f
51695  orr r2,r2,#0x8 ;@ A0-7
51696  ldr r0,[r7,r2,lsl #2]
51697  sub r0,r0,#1 ;@ Pre-decrement An
51698  str r0,[r7,r2,lsl #2]
51699;@ EaRead : Read '-(a0)' (address in r0) into r0:
51700  str r4,[r7,#0x40] ;@ Save PC
51701  bic r0,r0,#0xff000000
51702  bl m68k_read8 ;@ Call read8(r0) handler
51703
51704;@ EaCalc : Get register index into r11:
51705  and r11,r8,#0x0e00
51706;@ EaRead : Read register[r11] into r1:
51707  ldr r1,[r7,r11,lsr #7]
51708
51709;@ Do arithmetic:
51710  mov r0,r0,asl #24
51711  ands r1,r0,r1,asl #24
51712  and r10,r1,#0x80000000 ;@ r10=N_flag
51713  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51714
51715;@ Save result:
51716  mov r1,r1,asr #24
51717;@ EaWrite: r1 into register[r11]:
51718  strb r1,[r7,r11,lsr #7]
51719
51720  ldr r5,[r7,#0x5c] ;@ Load Cycles
51721  ldrh r8,[r4],#2 ;@ Fetch next opcode
51722  subs r5,r5,#10 ;@ Subtract cycles
51723  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51724  b CycloneEnd
51725
51726;@ ---------- [c027] and.b -(a7), d0 uses Opc027 ----------
51727Opc027:
51728  str r4,[r7,#0x50] ;@ Save prev PC + 2
51729  str r5,[r7,#0x5c] ;@ Save Cycles
51730
51731;@ EaCalc : Get '-(a7)' into r0:
51732  ldr r0,[r7,#0x3c] ;@ A7
51733  sub r0,r0,#2 ;@ Pre-decrement An
51734  str r0,[r7,#0x3c] ;@ A7
51735;@ EaRead : Read '-(a7)' (address in r0) into r0:
51736  str r4,[r7,#0x40] ;@ Save PC
51737  bic r0,r0,#0xff000000
51738  bl m68k_read8 ;@ Call read8(r0) handler
51739
51740;@ EaCalc : Get register index into r11:
51741  and r11,r8,#0x0e00
51742;@ EaRead : Read register[r11] into r1:
51743  ldr r1,[r7,r11,lsr #7]
51744
51745;@ Do arithmetic:
51746  mov r0,r0,asl #24
51747  ands r1,r0,r1,asl #24
51748  and r10,r1,#0x80000000 ;@ r10=N_flag
51749  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51750
51751;@ Save result:
51752  mov r1,r1,asr #24
51753;@ EaWrite: r1 into register[r11]:
51754  strb r1,[r7,r11,lsr #7]
51755
51756  ldr r5,[r7,#0x5c] ;@ Load Cycles
51757  ldrh r8,[r4],#2 ;@ Fetch next opcode
51758  subs r5,r5,#10 ;@ Subtract cycles
51759  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51760  b CycloneEnd
51761
51762;@ ---------- [c028] and.b ($3333,a0), d0 uses Opc028 ----------
51763Opc028:
51764  str r4,[r7,#0x50] ;@ Save prev PC + 2
51765  str r5,[r7,#0x5c] ;@ Save Cycles
51766
51767;@ EaCalc : Get '($3333,a0)' into r0:
51768  ldrsh r0,[r4],#2 ;@ Fetch offset
51769  and r2,r8,#0x000f
51770  ldr r2,[r7,r2,lsl #2]
51771  add r0,r0,r2 ;@ Add on offset
51772;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
51773  str r4,[r7,#0x40] ;@ Save PC
51774  bic r0,r0,#0xff000000
51775  bl m68k_read8 ;@ Call read8(r0) handler
51776
51777;@ EaCalc : Get register index into r11:
51778  and r11,r8,#0x0e00
51779;@ EaRead : Read register[r11] into r1:
51780  ldr r1,[r7,r11,lsr #7]
51781
51782;@ Do arithmetic:
51783  mov r0,r0,asl #24
51784  ands r1,r0,r1,asl #24
51785  and r10,r1,#0x80000000 ;@ r10=N_flag
51786  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51787
51788;@ Save result:
51789  mov r1,r1,asr #24
51790;@ EaWrite: r1 into register[r11]:
51791  strb r1,[r7,r11,lsr #7]
51792
51793  ldr r5,[r7,#0x5c] ;@ Load Cycles
51794  ldrh r8,[r4],#2 ;@ Fetch next opcode
51795  subs r5,r5,#12 ;@ Subtract cycles
51796  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51797  b CycloneEnd
51798
51799;@ ---------- [c030] and.b ($33,a0,d3.w*2), d0 uses Opc030 ----------
51800Opc030:
51801  str r4,[r7,#0x50] ;@ Save prev PC + 2
51802  str r5,[r7,#0x5c] ;@ Save Cycles
51803
51804;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
51805;@ Get extension word into r3:
51806  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
51807  mov r2,r3,lsr #10
51808  tst r3,#0x0800 ;@ Is Rn Word or Long
51809  and r2,r2,#0x3c ;@ r2=Index of Rn
51810  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
51811  ldrne   r2,[r7,r2] ;@ r2=Rn.l
51812  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
51813  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
51814  and r2,r8,#0x000f
51815  orr r2,r2,#0x8 ;@ A0-7
51816  ldr r2,[r7,r2,lsl #2]
51817  add r0,r2,r3 ;@ r0=Disp+An+Rn
51818;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
51819  str r4,[r7,#0x40] ;@ Save PC
51820  bic r0,r0,#0xff000000
51821  bl m68k_read8 ;@ Call read8(r0) handler
51822
51823;@ EaCalc : Get register index into r11:
51824  and r11,r8,#0x0e00
51825;@ EaRead : Read register[r11] into r1:
51826  ldr r1,[r7,r11,lsr #7]
51827
51828;@ Do arithmetic:
51829  mov r0,r0,asl #24
51830  ands r1,r0,r1,asl #24
51831  and r10,r1,#0x80000000 ;@ r10=N_flag
51832  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51833
51834;@ Save result:
51835  mov r1,r1,asr #24
51836;@ EaWrite: r1 into register[r11]:
51837  strb r1,[r7,r11,lsr #7]
51838
51839  ldr r5,[r7,#0x5c] ;@ Load Cycles
51840  ldrh r8,[r4],#2 ;@ Fetch next opcode
51841  subs r5,r5,#14 ;@ Subtract cycles
51842  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51843  b CycloneEnd
51844
51845;@ ---------- [c038] and.b $3333.w, d0 uses Opc038 ----------
51846Opc038:
51847  str r4,[r7,#0x50] ;@ Save prev PC + 2
51848  str r5,[r7,#0x5c] ;@ Save Cycles
51849
51850;@ EaCalc : Get '$3333.w' into r0:
51851  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
51852;@ EaRead : Read '$3333.w' (address in r0) into r0:
51853  str r4,[r7,#0x40] ;@ Save PC
51854  bic r0,r0,#0xff000000
51855  bl m68k_read8 ;@ Call read8(r0) handler
51856
51857;@ EaCalc : Get register index into r11:
51858  and r11,r8,#0x0e00
51859;@ EaRead : Read register[r11] into r1:
51860  ldr r1,[r7,r11,lsr #7]
51861
51862;@ Do arithmetic:
51863  mov r0,r0,asl #24
51864  ands r1,r0,r1,asl #24
51865  and r10,r1,#0x80000000 ;@ r10=N_flag
51866  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51867
51868;@ Save result:
51869  mov r1,r1,asr #24
51870;@ EaWrite: r1 into register[r11]:
51871  strb r1,[r7,r11,lsr #7]
51872
51873  ldr r5,[r7,#0x5c] ;@ Load Cycles
51874  ldrh r8,[r4],#2 ;@ Fetch next opcode
51875  subs r5,r5,#12 ;@ Subtract cycles
51876  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51877  b CycloneEnd
51878
51879;@ ---------- [c039] and.b $33333333.l, d0 uses Opc039 ----------
51880Opc039:
51881  str r4,[r7,#0x50] ;@ Save prev PC + 2
51882  str r5,[r7,#0x5c] ;@ Save Cycles
51883
51884;@ EaCalc : Get '$33333333.l' into r0:
51885  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
51886  ldrh r0,[r4],#2
51887  orr r0,r0,r2,lsl #16
51888;@ EaRead : Read '$33333333.l' (address in r0) into r0:
51889  str r4,[r7,#0x40] ;@ Save PC
51890  bic r0,r0,#0xff000000
51891  bl m68k_read8 ;@ Call read8(r0) handler
51892
51893;@ EaCalc : Get register index into r11:
51894  and r11,r8,#0x0e00
51895;@ EaRead : Read register[r11] into r1:
51896  ldr r1,[r7,r11,lsr #7]
51897
51898;@ Do arithmetic:
51899  mov r0,r0,asl #24
51900  ands r1,r0,r1,asl #24
51901  and r10,r1,#0x80000000 ;@ r10=N_flag
51902  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51903
51904;@ Save result:
51905  mov r1,r1,asr #24
51906;@ EaWrite: r1 into register[r11]:
51907  strb r1,[r7,r11,lsr #7]
51908
51909  ldr r5,[r7,#0x5c] ;@ Load Cycles
51910  ldrh r8,[r4],#2 ;@ Fetch next opcode
51911  subs r5,r5,#16 ;@ Subtract cycles
51912  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51913  b CycloneEnd
51914
51915;@ ---------- [c03a] and.b ($3333,pc), d0; =3335 uses Opc03a ----------
51916Opc03a:
51917  str r4,[r7,#0x50] ;@ Save prev PC + 2
51918  str r5,[r7,#0x5c] ;@ Save Cycles
51919
51920;@ EaCalc : Get '($3333,pc)' into r0:
51921  ldr r0,[r7,#0x60] ;@ Get Memory base
51922  sub r0,r4,r0 ;@ Real PC
51923  ldrsh r2,[r4],#2 ;@ Fetch extension
51924  add r0,r2,r0 ;@ ($nn,PC)
51925;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
51926  str r4,[r7,#0x40] ;@ Save PC
51927  bic r0,r0,#0xff000000
51928  bl m68k_fetch8 ;@ Call fetch8(r0) handler
51929
51930;@ EaCalc : Get register index into r11:
51931  and r11,r8,#0x0e00
51932;@ EaRead : Read register[r11] into r1:
51933  ldr r1,[r7,r11,lsr #7]
51934
51935;@ Do arithmetic:
51936  mov r0,r0,asl #24
51937  ands r1,r0,r1,asl #24
51938  and r10,r1,#0x80000000 ;@ r10=N_flag
51939  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51940
51941;@ Save result:
51942  mov r1,r1,asr #24
51943;@ EaWrite: r1 into register[r11]:
51944  strb r1,[r7,r11,lsr #7]
51945
51946  ldr r5,[r7,#0x5c] ;@ Load Cycles
51947  ldrh r8,[r4],#2 ;@ Fetch next opcode
51948  subs r5,r5,#12 ;@ Subtract cycles
51949  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51950  b CycloneEnd
51951
51952;@ ---------- [c03b] and.b ($33,pc,d3.w*2), d0; =35 uses Opc03b ----------
51953Opc03b:
51954  str r4,[r7,#0x50] ;@ Save prev PC + 2
51955  str r5,[r7,#0x5c] ;@ Save Cycles
51956
51957;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
51958  ldr r0,[r7,#0x60] ;@ Get Memory base
51959  ldrh r3,[r4] ;@ Get extension word
51960  sub r0,r4,r0 ;@ r0=PC
51961  add r4,r4,#2
51962  mov r2,r3,lsr #10
51963  tst r3,#0x0800 ;@ Is Rn Word or Long
51964  and r2,r2,#0x3c ;@ r2=Index of Rn
51965  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
51966  ldrne   r2,[r7,r2] ;@ r2=Rn.l
51967  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
51968  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
51969  add r0,r2,r0 ;@ r0=Disp+PC+Rn
51970;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
51971  str r4,[r7,#0x40] ;@ Save PC
51972  bic r0,r0,#0xff000000
51973  bl m68k_fetch8 ;@ Call fetch8(r0) handler
51974
51975;@ EaCalc : Get register index into r11:
51976  and r11,r8,#0x0e00
51977;@ EaRead : Read register[r11] into r1:
51978  ldr r1,[r7,r11,lsr #7]
51979
51980;@ Do arithmetic:
51981  mov r0,r0,asl #24
51982  ands r1,r0,r1,asl #24
51983  and r10,r1,#0x80000000 ;@ r10=N_flag
51984  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51985
51986;@ Save result:
51987  mov r1,r1,asr #24
51988;@ EaWrite: r1 into register[r11]:
51989  strb r1,[r7,r11,lsr #7]
51990
51991  ldr r5,[r7,#0x5c] ;@ Load Cycles
51992  ldrh r8,[r4],#2 ;@ Fetch next opcode
51993  subs r5,r5,#14 ;@ Subtract cycles
51994  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51995  b CycloneEnd
51996
51997;@ ---------- [c03c] and.b #$33, d0 uses Opc03c ----------
51998Opc03c:
51999;@ EaCalc : Get '#$33' into r0:
52000  ldrsb r0,[r4],#2 ;@ Fetch immediate value
52001;@ EaRead : Read '#$33' (address in r0) into r0:
52002
52003;@ EaCalc : Get register index into r11:
52004  and r11,r8,#0x0e00
52005;@ EaRead : Read register[r11] into r1:
52006  ldr r1,[r7,r11,lsr #7]
52007
52008;@ Do arithmetic:
52009  mov r0,r0,asl #24
52010  ands r1,r0,r1,asl #24
52011  and r10,r1,#0x80000000 ;@ r10=N_flag
52012  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52013
52014;@ Save result:
52015  mov r1,r1,asr #24
52016;@ EaWrite: r1 into register[r11]:
52017  strb r1,[r7,r11,lsr #7]
52018
52019  ldrh r8,[r4],#2 ;@ Fetch next opcode
52020  subs r5,r5,#8 ;@ Subtract cycles
52021  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52022  b CycloneEnd
52023
52024;@ ---------- [c050] and.w (a0), d0 uses Opc050 ----------
52025Opc050:
52026  str r4,[r7,#0x50] ;@ Save prev PC + 2
52027  str r5,[r7,#0x5c] ;@ Save Cycles
52028
52029;@ EaCalc : Get '(a0)' into r0:
52030  and r2,r8,#0x000f
52031  orr r2,r2,#0x8 ;@ A0-7
52032  ldr r0,[r7,r2,lsl #2]
52033;@ EaRead : Read '(a0)' (address in r0) into r0:
52034  str r4,[r7,#0x40] ;@ Save PC
52035  bic r0,r0,#0xff000000
52036  bl m68k_read16 ;@ Call read16(r0) handler
52037
52038;@ EaCalc : Get register index into r11:
52039  and r11,r8,#0x0e00
52040  mov r11,r11,lsr #7
52041;@ EaRead : Read register[r11] into r1:
52042  ldr r1,[r7,r11]
52043
52044;@ Do arithmetic:
52045  mov r0,r0,asl #16
52046  ands r1,r0,r1,asl #16
52047  and r10,r1,#0x80000000 ;@ r10=N_flag
52048  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52049
52050;@ Save result:
52051  mov r1,r1,asr #16
52052;@ EaWrite: r1 into register[r11]:
52053  strh r1,[r7,r11]
52054
52055  ldr r5,[r7,#0x5c] ;@ Load Cycles
52056  ldrh r8,[r4],#2 ;@ Fetch next opcode
52057  subs r5,r5,#8 ;@ Subtract cycles
52058  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52059  b CycloneEnd
52060
52061;@ ---------- [c058] and.w (a0)+, d0 uses Opc058 ----------
52062Opc058:
52063  str r4,[r7,#0x50] ;@ Save prev PC + 2
52064  str r5,[r7,#0x5c] ;@ Save Cycles
52065
52066;@ EaCalc : Get '(a0)+' into r0:
52067  and r2,r8,#0x000f
52068  ldr r0,[r7,r2,lsl #2]
52069  add r3,r0,#2 ;@ Post-increment An
52070  str r3,[r7,r2,lsl #2]
52071;@ EaRead : Read '(a0)+' (address in r0) into r0:
52072  str r4,[r7,#0x40] ;@ Save PC
52073  bic r0,r0,#0xff000000
52074  bl m68k_read16 ;@ Call read16(r0) handler
52075
52076;@ EaCalc : Get register index into r11:
52077  and r11,r8,#0x0e00
52078  mov r11,r11,lsr #7
52079;@ EaRead : Read register[r11] into r1:
52080  ldr r1,[r7,r11]
52081
52082;@ Do arithmetic:
52083  mov r0,r0,asl #16
52084  ands r1,r0,r1,asl #16
52085  and r10,r1,#0x80000000 ;@ r10=N_flag
52086  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52087
52088;@ Save result:
52089  mov r1,r1,asr #16
52090;@ EaWrite: r1 into register[r11]:
52091  strh r1,[r7,r11]
52092
52093  ldr r5,[r7,#0x5c] ;@ Load Cycles
52094  ldrh r8,[r4],#2 ;@ Fetch next opcode
52095  subs r5,r5,#8 ;@ Subtract cycles
52096  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52097  b CycloneEnd
52098
52099;@ ---------- [c060] and.w -(a0), d0 uses Opc060 ----------
52100Opc060:
52101  str r4,[r7,#0x50] ;@ Save prev PC + 2
52102  str r5,[r7,#0x5c] ;@ Save Cycles
52103
52104;@ EaCalc : Get '-(a0)' into r0:
52105  and r2,r8,#0x000f
52106  orr r2,r2,#0x8 ;@ A0-7
52107  ldr r0,[r7,r2,lsl #2]
52108  sub r0,r0,#2 ;@ Pre-decrement An
52109  str r0,[r7,r2,lsl #2]
52110;@ EaRead : Read '-(a0)' (address in r0) into r0:
52111  str r4,[r7,#0x40] ;@ Save PC
52112  bic r0,r0,#0xff000000
52113  bl m68k_read16 ;@ Call read16(r0) handler
52114
52115;@ EaCalc : Get register index into r11:
52116  and r11,r8,#0x0e00
52117  mov r11,r11,lsr #7
52118;@ EaRead : Read register[r11] into r1:
52119  ldr r1,[r7,r11]
52120
52121;@ Do arithmetic:
52122  mov r0,r0,asl #16
52123  ands r1,r0,r1,asl #16
52124  and r10,r1,#0x80000000 ;@ r10=N_flag
52125  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52126
52127;@ Save result:
52128  mov r1,r1,asr #16
52129;@ EaWrite: r1 into register[r11]:
52130  strh r1,[r7,r11]
52131
52132  ldr r5,[r7,#0x5c] ;@ Load Cycles
52133  ldrh r8,[r4],#2 ;@ Fetch next opcode
52134  subs r5,r5,#10 ;@ Subtract cycles
52135  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52136  b CycloneEnd
52137
52138;@ ---------- [c068] and.w ($3333,a0), d0 uses Opc068 ----------
52139Opc068:
52140  str r4,[r7,#0x50] ;@ Save prev PC + 2
52141  str r5,[r7,#0x5c] ;@ Save Cycles
52142
52143;@ EaCalc : Get '($3333,a0)' into r0:
52144  ldrsh r0,[r4],#2 ;@ Fetch offset
52145  and r2,r8,#0x000f
52146  ldr r2,[r7,r2,lsl #2]
52147  add r0,r0,r2 ;@ Add on offset
52148;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
52149  str r4,[r7,#0x40] ;@ Save PC
52150  bic r0,r0,#0xff000000
52151  bl m68k_read16 ;@ Call read16(r0) handler
52152
52153;@ EaCalc : Get register index into r11:
52154  and r11,r8,#0x0e00
52155  mov r11,r11,lsr #7
52156;@ EaRead : Read register[r11] into r1:
52157  ldr r1,[r7,r11]
52158
52159;@ Do arithmetic:
52160  mov r0,r0,asl #16
52161  ands r1,r0,r1,asl #16
52162  and r10,r1,#0x80000000 ;@ r10=N_flag
52163  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52164
52165;@ Save result:
52166  mov r1,r1,asr #16
52167;@ EaWrite: r1 into register[r11]:
52168  strh r1,[r7,r11]
52169
52170  ldr r5,[r7,#0x5c] ;@ Load Cycles
52171  ldrh r8,[r4],#2 ;@ Fetch next opcode
52172  subs r5,r5,#12 ;@ Subtract cycles
52173  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52174  b CycloneEnd
52175
52176;@ ---------- [c070] and.w ($33,a0,d3.w*2), d0 uses Opc070 ----------
52177Opc070:
52178  str r4,[r7,#0x50] ;@ Save prev PC + 2
52179  str r5,[r7,#0x5c] ;@ Save Cycles
52180
52181;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
52182;@ Get extension word into r3:
52183  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
52184  mov r2,r3,lsr #10
52185  tst r3,#0x0800 ;@ Is Rn Word or Long
52186  and r2,r2,#0x3c ;@ r2=Index of Rn
52187  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
52188  ldrne   r2,[r7,r2] ;@ r2=Rn.l
52189  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
52190  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
52191  and r2,r8,#0x000f
52192  orr r2,r2,#0x8 ;@ A0-7
52193  ldr r2,[r7,r2,lsl #2]
52194  add r0,r2,r3 ;@ r0=Disp+An+Rn
52195;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
52196  str r4,[r7,#0x40] ;@ Save PC
52197  bic r0,r0,#0xff000000
52198  bl m68k_read16 ;@ Call read16(r0) handler
52199
52200;@ EaCalc : Get register index into r11:
52201  and r11,r8,#0x0e00
52202  mov r11,r11,lsr #7
52203;@ EaRead : Read register[r11] into r1:
52204  ldr r1,[r7,r11]
52205
52206;@ Do arithmetic:
52207  mov r0,r0,asl #16
52208  ands r1,r0,r1,asl #16
52209  and r10,r1,#0x80000000 ;@ r10=N_flag
52210  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52211
52212;@ Save result:
52213  mov r1,r1,asr #16
52214;@ EaWrite: r1 into register[r11]:
52215  strh r1,[r7,r11]
52216
52217  ldr r5,[r7,#0x5c] ;@ Load Cycles
52218  ldrh r8,[r4],#2 ;@ Fetch next opcode
52219  subs r5,r5,#14 ;@ Subtract cycles
52220  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52221  b CycloneEnd
52222
52223;@ ---------- [c078] and.w $3333.w, d0 uses Opc078 ----------
52224Opc078:
52225  str r4,[r7,#0x50] ;@ Save prev PC + 2
52226  str r5,[r7,#0x5c] ;@ Save Cycles
52227
52228;@ EaCalc : Get '$3333.w' into r0:
52229  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
52230;@ EaRead : Read '$3333.w' (address in r0) into r0:
52231  str r4,[r7,#0x40] ;@ Save PC
52232  bic r0,r0,#0xff000000
52233  bl m68k_read16 ;@ Call read16(r0) handler
52234
52235;@ EaCalc : Get register index into r11:
52236  and r11,r8,#0x0e00
52237  mov r11,r11,lsr #7
52238;@ EaRead : Read register[r11] into r1:
52239  ldr r1,[r7,r11]
52240
52241;@ Do arithmetic:
52242  mov r0,r0,asl #16
52243  ands r1,r0,r1,asl #16
52244  and r10,r1,#0x80000000 ;@ r10=N_flag
52245  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52246
52247;@ Save result:
52248  mov r1,r1,asr #16
52249;@ EaWrite: r1 into register[r11]:
52250  strh r1,[r7,r11]
52251
52252  ldr r5,[r7,#0x5c] ;@ Load Cycles
52253  ldrh r8,[r4],#2 ;@ Fetch next opcode
52254  subs r5,r5,#12 ;@ Subtract cycles
52255  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52256  b CycloneEnd
52257
52258;@ ---------- [c079] and.w $33333333.l, d0 uses Opc079 ----------
52259Opc079:
52260  str r4,[r7,#0x50] ;@ Save prev PC + 2
52261  str r5,[r7,#0x5c] ;@ Save Cycles
52262
52263;@ EaCalc : Get '$33333333.l' into r0:
52264  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
52265  ldrh r0,[r4],#2
52266  orr r0,r0,r2,lsl #16
52267;@ EaRead : Read '$33333333.l' (address in r0) into r0:
52268  str r4,[r7,#0x40] ;@ Save PC
52269  bic r0,r0,#0xff000000
52270  bl m68k_read16 ;@ Call read16(r0) handler
52271
52272;@ EaCalc : Get register index into r11:
52273  and r11,r8,#0x0e00
52274  mov r11,r11,lsr #7
52275;@ EaRead : Read register[r11] into r1:
52276  ldr r1,[r7,r11]
52277
52278;@ Do arithmetic:
52279  mov r0,r0,asl #16
52280  ands r1,r0,r1,asl #16
52281  and r10,r1,#0x80000000 ;@ r10=N_flag
52282  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52283
52284;@ Save result:
52285  mov r1,r1,asr #16
52286;@ EaWrite: r1 into register[r11]:
52287  strh r1,[r7,r11]
52288
52289  ldr r5,[r7,#0x5c] ;@ Load Cycles
52290  ldrh r8,[r4],#2 ;@ Fetch next opcode
52291  subs r5,r5,#16 ;@ Subtract cycles
52292  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52293  b CycloneEnd
52294
52295;@ ---------- [c07a] and.w ($3333,pc), d0; =3335 uses Opc07a ----------
52296Opc07a:
52297  str r4,[r7,#0x50] ;@ Save prev PC + 2
52298  str r5,[r7,#0x5c] ;@ Save Cycles
52299
52300;@ EaCalc : Get '($3333,pc)' into r0:
52301  ldr r0,[r7,#0x60] ;@ Get Memory base
52302  sub r0,r4,r0 ;@ Real PC
52303  ldrsh r2,[r4],#2 ;@ Fetch extension
52304  add r0,r2,r0 ;@ ($nn,PC)
52305;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
52306  str r4,[r7,#0x40] ;@ Save PC
52307  bic r0,r0,#0xff000000
52308  bl m68k_fetch16 ;@ Call fetch16(r0) handler
52309
52310;@ EaCalc : Get register index into r11:
52311  and r11,r8,#0x0e00
52312  mov r11,r11,lsr #7
52313;@ EaRead : Read register[r11] into r1:
52314  ldr r1,[r7,r11]
52315
52316;@ Do arithmetic:
52317  mov r0,r0,asl #16
52318  ands r1,r0,r1,asl #16
52319  and r10,r1,#0x80000000 ;@ r10=N_flag
52320  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52321
52322;@ Save result:
52323  mov r1,r1,asr #16
52324;@ EaWrite: r1 into register[r11]:
52325  strh r1,[r7,r11]
52326
52327  ldr r5,[r7,#0x5c] ;@ Load Cycles
52328  ldrh r8,[r4],#2 ;@ Fetch next opcode
52329  subs r5,r5,#12 ;@ Subtract cycles
52330  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52331  b CycloneEnd
52332
52333;@ ---------- [c07b] and.w ($33,pc,d3.w*2), d0; =35 uses Opc07b ----------
52334Opc07b:
52335  str r4,[r7,#0x50] ;@ Save prev PC + 2
52336  str r5,[r7,#0x5c] ;@ Save Cycles
52337
52338;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
52339  ldr r0,[r7,#0x60] ;@ Get Memory base
52340  ldrh r3,[r4] ;@ Get extension word
52341  sub r0,r4,r0 ;@ r0=PC
52342  add r4,r4,#2
52343  mov r2,r3,lsr #10
52344  tst r3,#0x0800 ;@ Is Rn Word or Long
52345  and r2,r2,#0x3c ;@ r2=Index of Rn
52346  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
52347  ldrne   r2,[r7,r2] ;@ r2=Rn.l
52348  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
52349  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
52350  add r0,r2,r0 ;@ r0=Disp+PC+Rn
52351;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
52352  str r4,[r7,#0x40] ;@ Save PC
52353  bic r0,r0,#0xff000000
52354  bl m68k_fetch16 ;@ Call fetch16(r0) handler
52355
52356;@ EaCalc : Get register index into r11:
52357  and r11,r8,#0x0e00
52358  mov r11,r11,lsr #7
52359;@ EaRead : Read register[r11] into r1:
52360  ldr r1,[r7,r11]
52361
52362;@ Do arithmetic:
52363  mov r0,r0,asl #16
52364  ands r1,r0,r1,asl #16
52365  and r10,r1,#0x80000000 ;@ r10=N_flag
52366  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52367
52368;@ Save result:
52369  mov r1,r1,asr #16
52370;@ EaWrite: r1 into register[r11]:
52371  strh r1,[r7,r11]
52372
52373  ldr r5,[r7,#0x5c] ;@ Load Cycles
52374  ldrh r8,[r4],#2 ;@ Fetch next opcode
52375  subs r5,r5,#14 ;@ Subtract cycles
52376  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52377  b CycloneEnd
52378
52379;@ ---------- [c07c] and.w #$3333, d0 uses Opc07c ----------
52380Opc07c:
52381;@ EaCalc : Get '#$3333' into r0:
52382  ldrsh r0,[r4],#2 ;@ Fetch immediate value
52383;@ EaRead : Read '#$3333' (address in r0) into r0:
52384
52385;@ EaCalc : Get register index into r11:
52386  and r11,r8,#0x0e00
52387  mov r11,r11,lsr #7
52388;@ EaRead : Read register[r11] into r1:
52389  ldr r1,[r7,r11]
52390
52391;@ Do arithmetic:
52392  mov r0,r0,asl #16
52393  ands r1,r0,r1,asl #16
52394  and r10,r1,#0x80000000 ;@ r10=N_flag
52395  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52396
52397;@ Save result:
52398  mov r1,r1,asr #16
52399;@ EaWrite: r1 into register[r11]:
52400  strh r1,[r7,r11]
52401
52402  ldrh r8,[r4],#2 ;@ Fetch next opcode
52403  subs r5,r5,#8 ;@ Subtract cycles
52404  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52405  b CycloneEnd
52406
52407;@ ---------- [c080] and.l d0, d0 uses Opc080 ----------
52408Opc080:
52409;@ EaCalc : Get register index into r0:
52410  and r0,r8,#0x000f
52411;@ EaRead : Read register[r0] into r0:
52412  ldr r0,[r7,r0,lsl #2]
52413
52414;@ EaCalc : Get register index into r11:
52415  and r11,r8,#0x0e00
52416;@ EaRead : Read register[r11] into r1:
52417  ldr r1,[r7,r11,lsr #7]
52418
52419;@ Do arithmetic:
52420  ands r1,r0,r1
52421  and r10,r1,#0x80000000 ;@ r10=N_flag
52422  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52423
52424;@ Save result:
52425;@ EaWrite: r1 into register[r11]:
52426  str r1,[r7,r11,lsr #7]
52427
52428  ldrh r8,[r4],#2 ;@ Fetch next opcode
52429  subs r5,r5,#8 ;@ Subtract cycles
52430  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52431  b CycloneEnd
52432
52433;@ ---------- [c090] and.l (a0), d0 uses Opc090 ----------
52434Opc090:
52435  str r4,[r7,#0x50] ;@ Save prev PC + 2
52436  str r5,[r7,#0x5c] ;@ Save Cycles
52437
52438;@ EaCalc : Get '(a0)' into r0:
52439  and r2,r8,#0x000f
52440  orr r2,r2,#0x8 ;@ A0-7
52441  ldr r0,[r7,r2,lsl #2]
52442;@ EaRead : Read '(a0)' (address in r0) into r0:
52443  str r4,[r7,#0x40] ;@ Save PC
52444  bic r0,r0,#0xff000000
52445  bl m68k_read32 ;@ Call read32(r0) handler
52446
52447;@ EaCalc : Get register index into r11:
52448  and r11,r8,#0x0e00
52449;@ EaRead : Read register[r11] into r1:
52450  ldr r1,[r7,r11,lsr #7]
52451
52452;@ Do arithmetic:
52453  ands r1,r0,r1
52454  and r10,r1,#0x80000000 ;@ r10=N_flag
52455  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52456
52457;@ Save result:
52458;@ EaWrite: r1 into register[r11]:
52459  str r1,[r7,r11,lsr #7]
52460
52461  ldr r5,[r7,#0x5c] ;@ Load Cycles
52462  ldrh r8,[r4],#2 ;@ Fetch next opcode
52463  subs r5,r5,#14 ;@ Subtract cycles
52464  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52465  b CycloneEnd
52466
52467;@ ---------- [c098] and.l (a0)+, d0 uses Opc098 ----------
52468Opc098:
52469  str r4,[r7,#0x50] ;@ Save prev PC + 2
52470  str r5,[r7,#0x5c] ;@ Save Cycles
52471
52472;@ EaCalc : Get '(a0)+' into r0:
52473  and r2,r8,#0x000f
52474  ldr r0,[r7,r2,lsl #2]
52475  add r3,r0,#4 ;@ Post-increment An
52476  str r3,[r7,r2,lsl #2]
52477;@ EaRead : Read '(a0)+' (address in r0) into r0:
52478  str r4,[r7,#0x40] ;@ Save PC
52479  bic r0,r0,#0xff000000
52480  bl m68k_read32 ;@ Call read32(r0) handler
52481
52482;@ EaCalc : Get register index into r11:
52483  and r11,r8,#0x0e00
52484;@ EaRead : Read register[r11] into r1:
52485  ldr r1,[r7,r11,lsr #7]
52486
52487;@ Do arithmetic:
52488  ands r1,r0,r1
52489  and r10,r1,#0x80000000 ;@ r10=N_flag
52490  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52491
52492;@ Save result:
52493;@ EaWrite: r1 into register[r11]:
52494  str r1,[r7,r11,lsr #7]
52495
52496  ldr r5,[r7,#0x5c] ;@ Load Cycles
52497  ldrh r8,[r4],#2 ;@ Fetch next opcode
52498  subs r5,r5,#14 ;@ Subtract cycles
52499  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52500  b CycloneEnd
52501
52502;@ ---------- [c0a0] and.l -(a0), d0 uses Opc0a0 ----------
52503Opc0a0:
52504  str r4,[r7,#0x50] ;@ Save prev PC + 2
52505  str r5,[r7,#0x5c] ;@ Save Cycles
52506
52507;@ EaCalc : Get '-(a0)' into r0:
52508  and r2,r8,#0x000f
52509  orr r2,r2,#0x8 ;@ A0-7
52510  ldr r0,[r7,r2,lsl #2]
52511  sub r0,r0,#4 ;@ Pre-decrement An
52512  str r0,[r7,r2,lsl #2]
52513;@ EaRead : Read '-(a0)' (address in r0) into r0:
52514  str r4,[r7,#0x40] ;@ Save PC
52515  bic r0,r0,#0xff000000
52516  bl m68k_read32 ;@ Call read32(r0) handler
52517
52518;@ EaCalc : Get register index into r11:
52519  and r11,r8,#0x0e00
52520;@ EaRead : Read register[r11] into r1:
52521  ldr r1,[r7,r11,lsr #7]
52522
52523;@ Do arithmetic:
52524  ands r1,r0,r1
52525  and r10,r1,#0x80000000 ;@ r10=N_flag
52526  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52527
52528;@ Save result:
52529;@ EaWrite: r1 into register[r11]:
52530  str r1,[r7,r11,lsr #7]
52531
52532  ldr r5,[r7,#0x5c] ;@ Load Cycles
52533  ldrh r8,[r4],#2 ;@ Fetch next opcode
52534  subs r5,r5,#16 ;@ Subtract cycles
52535  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52536  b CycloneEnd
52537
52538;@ ---------- [c0a8] and.l ($3333,a0), d0 uses Opc0a8 ----------
52539Opc0a8:
52540  str r4,[r7,#0x50] ;@ Save prev PC + 2
52541  str r5,[r7,#0x5c] ;@ Save Cycles
52542
52543;@ EaCalc : Get '($3333,a0)' into r0:
52544  ldrsh r0,[r4],#2 ;@ Fetch offset
52545  and r2,r8,#0x000f
52546  ldr r2,[r7,r2,lsl #2]
52547  add r0,r0,r2 ;@ Add on offset
52548;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
52549  str r4,[r7,#0x40] ;@ Save PC
52550  bic r0,r0,#0xff000000
52551  bl m68k_read32 ;@ Call read32(r0) handler
52552
52553;@ EaCalc : Get register index into r11:
52554  and r11,r8,#0x0e00
52555;@ EaRead : Read register[r11] into r1:
52556  ldr r1,[r7,r11,lsr #7]
52557
52558;@ Do arithmetic:
52559  ands r1,r0,r1
52560  and r10,r1,#0x80000000 ;@ r10=N_flag
52561  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52562
52563;@ Save result:
52564;@ EaWrite: r1 into register[r11]:
52565  str r1,[r7,r11,lsr #7]
52566
52567  ldr r5,[r7,#0x5c] ;@ Load Cycles
52568  ldrh r8,[r4],#2 ;@ Fetch next opcode
52569  subs r5,r5,#18 ;@ Subtract cycles
52570  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52571  b CycloneEnd
52572
52573;@ ---------- [c0b0] and.l ($33,a0,d3.w*2), d0 uses Opc0b0 ----------
52574Opc0b0:
52575  str r4,[r7,#0x50] ;@ Save prev PC + 2
52576  str r5,[r7,#0x5c] ;@ Save Cycles
52577
52578;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
52579;@ Get extension word into r3:
52580  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
52581  mov r2,r3,lsr #10
52582  tst r3,#0x0800 ;@ Is Rn Word or Long
52583  and r2,r2,#0x3c ;@ r2=Index of Rn
52584  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
52585  ldrne   r2,[r7,r2] ;@ r2=Rn.l
52586  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
52587  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
52588  and r2,r8,#0x000f
52589  orr r2,r2,#0x8 ;@ A0-7
52590  ldr r2,[r7,r2,lsl #2]
52591  add r0,r2,r3 ;@ r0=Disp+An+Rn
52592;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
52593  str r4,[r7,#0x40] ;@ Save PC
52594  bic r0,r0,#0xff000000
52595  bl m68k_read32 ;@ Call read32(r0) handler
52596
52597;@ EaCalc : Get register index into r11:
52598  and r11,r8,#0x0e00
52599;@ EaRead : Read register[r11] into r1:
52600  ldr r1,[r7,r11,lsr #7]
52601
52602;@ Do arithmetic:
52603  ands r1,r0,r1
52604  and r10,r1,#0x80000000 ;@ r10=N_flag
52605  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52606
52607;@ Save result:
52608;@ EaWrite: r1 into register[r11]:
52609  str r1,[r7,r11,lsr #7]
52610
52611  ldr r5,[r7,#0x5c] ;@ Load Cycles
52612  ldrh r8,[r4],#2 ;@ Fetch next opcode
52613  subs r5,r5,#20 ;@ Subtract cycles
52614  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52615  b CycloneEnd
52616
52617;@ ---------- [c0b8] and.l $3333.w, d0 uses Opc0b8 ----------
52618Opc0b8:
52619  str r4,[r7,#0x50] ;@ Save prev PC + 2
52620  str r5,[r7,#0x5c] ;@ Save Cycles
52621
52622;@ EaCalc : Get '$3333.w' into r0:
52623  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
52624;@ EaRead : Read '$3333.w' (address in r0) into r0:
52625  str r4,[r7,#0x40] ;@ Save PC
52626  bic r0,r0,#0xff000000
52627  bl m68k_read32 ;@ Call read32(r0) handler
52628
52629;@ EaCalc : Get register index into r11:
52630  and r11,r8,#0x0e00
52631;@ EaRead : Read register[r11] into r1:
52632  ldr r1,[r7,r11,lsr #7]
52633
52634;@ Do arithmetic:
52635  ands r1,r0,r1
52636  and r10,r1,#0x80000000 ;@ r10=N_flag
52637  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52638
52639;@ Save result:
52640;@ EaWrite: r1 into register[r11]:
52641  str r1,[r7,r11,lsr #7]
52642
52643  ldr r5,[r7,#0x5c] ;@ Load Cycles
52644  ldrh r8,[r4],#2 ;@ Fetch next opcode
52645  subs r5,r5,#18 ;@ Subtract cycles
52646  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52647  b CycloneEnd
52648
52649;@ ---------- [c0b9] and.l $33333333.l, d0 uses Opc0b9 ----------
52650Opc0b9:
52651  str r4,[r7,#0x50] ;@ Save prev PC + 2
52652  str r5,[r7,#0x5c] ;@ Save Cycles
52653
52654;@ EaCalc : Get '$33333333.l' into r0:
52655  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
52656  ldrh r0,[r4],#2
52657  orr r0,r0,r2,lsl #16
52658;@ EaRead : Read '$33333333.l' (address in r0) into r0:
52659  str r4,[r7,#0x40] ;@ Save PC
52660  bic r0,r0,#0xff000000
52661  bl m68k_read32 ;@ Call read32(r0) handler
52662
52663;@ EaCalc : Get register index into r11:
52664  and r11,r8,#0x0e00
52665;@ EaRead : Read register[r11] into r1:
52666  ldr r1,[r7,r11,lsr #7]
52667
52668;@ Do arithmetic:
52669  ands r1,r0,r1
52670  and r10,r1,#0x80000000 ;@ r10=N_flag
52671  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52672
52673;@ Save result:
52674;@ EaWrite: r1 into register[r11]:
52675  str r1,[r7,r11,lsr #7]
52676
52677  ldr r5,[r7,#0x5c] ;@ Load Cycles
52678  ldrh r8,[r4],#2 ;@ Fetch next opcode
52679  subs r5,r5,#22 ;@ Subtract cycles
52680  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52681  b CycloneEnd
52682
52683;@ ---------- [c0ba] and.l ($3333,pc), d0; =3335 uses Opc0ba ----------
52684Opc0ba:
52685  str r4,[r7,#0x50] ;@ Save prev PC + 2
52686  str r5,[r7,#0x5c] ;@ Save Cycles
52687
52688;@ EaCalc : Get '($3333,pc)' into r0:
52689  ldr r0,[r7,#0x60] ;@ Get Memory base
52690  sub r0,r4,r0 ;@ Real PC
52691  ldrsh r2,[r4],#2 ;@ Fetch extension
52692  add r0,r2,r0 ;@ ($nn,PC)
52693;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
52694  str r4,[r7,#0x40] ;@ Save PC
52695  bic r0,r0,#0xff000000
52696  bl m68k_fetch32 ;@ Call fetch32(r0) handler
52697
52698;@ EaCalc : Get register index into r11:
52699  and r11,r8,#0x0e00
52700;@ EaRead : Read register[r11] into r1:
52701  ldr r1,[r7,r11,lsr #7]
52702
52703;@ Do arithmetic:
52704  ands r1,r0,r1
52705  and r10,r1,#0x80000000 ;@ r10=N_flag
52706  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52707
52708;@ Save result:
52709;@ EaWrite: r1 into register[r11]:
52710  str r1,[r7,r11,lsr #7]
52711
52712  ldr r5,[r7,#0x5c] ;@ Load Cycles
52713  ldrh r8,[r4],#2 ;@ Fetch next opcode
52714  subs r5,r5,#18 ;@ Subtract cycles
52715  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52716  b CycloneEnd
52717
52718;@ ---------- [c0bb] and.l ($33,pc,d3.w*2), d0; =35 uses Opc0bb ----------
52719Opc0bb:
52720  str r4,[r7,#0x50] ;@ Save prev PC + 2
52721  str r5,[r7,#0x5c] ;@ Save Cycles
52722
52723;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
52724  ldr r0,[r7,#0x60] ;@ Get Memory base
52725  ldrh r3,[r4] ;@ Get extension word
52726  sub r0,r4,r0 ;@ r0=PC
52727  add r4,r4,#2
52728  mov r2,r3,lsr #10
52729  tst r3,#0x0800 ;@ Is Rn Word or Long
52730  and r2,r2,#0x3c ;@ r2=Index of Rn
52731  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
52732  ldrne   r2,[r7,r2] ;@ r2=Rn.l
52733  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
52734  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
52735  add r0,r2,r0 ;@ r0=Disp+PC+Rn
52736;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
52737  str r4,[r7,#0x40] ;@ Save PC
52738  bic r0,r0,#0xff000000
52739  bl m68k_fetch32 ;@ Call fetch32(r0) handler
52740
52741;@ EaCalc : Get register index into r11:
52742  and r11,r8,#0x0e00
52743;@ EaRead : Read register[r11] into r1:
52744  ldr r1,[r7,r11,lsr #7]
52745
52746;@ Do arithmetic:
52747  ands r1,r0,r1
52748  and r10,r1,#0x80000000 ;@ r10=N_flag
52749  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52750
52751;@ Save result:
52752;@ EaWrite: r1 into register[r11]:
52753  str r1,[r7,r11,lsr #7]
52754
52755  ldr r5,[r7,#0x5c] ;@ Load Cycles
52756  ldrh r8,[r4],#2 ;@ Fetch next opcode
52757  subs r5,r5,#20 ;@ Subtract cycles
52758  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52759  b CycloneEnd
52760
52761;@ ---------- [c0bc] and.l #$33333333, d0 uses Opc0bc ----------
52762Opc0bc:
52763;@ EaCalc : Get '#$33333333' into r0:
52764  ldrh r2,[r4],#2 ;@ Fetch immediate value
52765  ldrh r3,[r4],#2
52766  orr r0,r3,r2,lsl #16
52767;@ EaRead : Read '#$33333333' (address in r0) into r0:
52768
52769;@ EaCalc : Get register index into r11:
52770  and r11,r8,#0x0e00
52771;@ EaRead : Read register[r11] into r1:
52772  ldr r1,[r7,r11,lsr #7]
52773
52774;@ Do arithmetic:
52775  ands r1,r0,r1
52776  and r10,r1,#0x80000000 ;@ r10=N_flag
52777  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52778
52779;@ Save result:
52780;@ EaWrite: r1 into register[r11]:
52781  str r1,[r7,r11,lsr #7]
52782
52783  ldrh r8,[r4],#2 ;@ Fetch next opcode
52784  subs r5,r5,#16 ;@ Subtract cycles
52785  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52786  b CycloneEnd
52787
52788;@ ---------- [c0c0] mulu.w d0, d0 uses Opc0c0 ----------
52789Opc0c0:
52790;@ EaCalc : Get register index into r0:
52791  and r0,r8,#0x000f
52792;@ EaRead : Read register[r0] into r0:
52793  ldr r0,[r7,r0,lsl #2]
52794
52795;@ EaCalc : Get register index into r11:
52796  and r11,r8,#0x0e00
52797;@ EaRead : Read register[r11] into r2:
52798  ldr r2,[r7,r11,lsr #7]
52799
52800  movs r1,r0,asl #16
52801;@ Get 16-bit signs right:
52802  mov r0,r1,lsr #16
52803  mov r2,r2,lsl #16
52804  mov r2,r2,lsr #16
52805
52806  muls r1,r2,r0
52807  and r10,r1,#0x80000000 ;@ r10=N_flag
52808  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52809
52810;@ EaWrite: r1 into register[r11]:
52811  str r1,[r7,r11,lsr #7]
52812
52813  ldrh r8,[r4],#2 ;@ Fetch next opcode
52814  subs r5,r5,#54 ;@ Subtract cycles
52815  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52816  b CycloneEnd
52817
52818;@ ---------- [c0d0] mulu.w (a0), d0 uses Opc0d0 ----------
52819Opc0d0:
52820  str r4,[r7,#0x50] ;@ Save prev PC + 2
52821  str r5,[r7,#0x5c] ;@ Save Cycles
52822
52823;@ EaCalc : Get '(a0)' into r0:
52824  and r2,r8,#0x000f
52825  orr r2,r2,#0x8 ;@ A0-7
52826  ldr r0,[r7,r2,lsl #2]
52827;@ EaRead : Read '(a0)' (address in r0) into r0:
52828  str r4,[r7,#0x40] ;@ Save PC
52829  bic r0,r0,#0xff000000
52830  bl m68k_read16 ;@ Call read16(r0) handler
52831
52832;@ EaCalc : Get register index into r11:
52833  and r11,r8,#0x0e00
52834;@ EaRead : Read register[r11] into r2:
52835  ldr r2,[r7,r11,lsr #7]
52836
52837  movs r1,r0,asl #16
52838;@ Get 16-bit signs right:
52839  mov r0,r1,lsr #16
52840  mov r2,r2,lsl #16
52841  mov r2,r2,lsr #16
52842
52843  muls r1,r2,r0
52844  and r10,r1,#0x80000000 ;@ r10=N_flag
52845  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52846
52847;@ EaWrite: r1 into register[r11]:
52848  str r1,[r7,r11,lsr #7]
52849
52850  ldr r5,[r7,#0x5c] ;@ Load Cycles
52851  ldrh r8,[r4],#2 ;@ Fetch next opcode
52852  subs r5,r5,#58 ;@ Subtract cycles
52853  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52854  b CycloneEnd
52855
52856;@ ---------- [c0d8] mulu.w (a0)+, d0 uses Opc0d8 ----------
52857Opc0d8:
52858  str r4,[r7,#0x50] ;@ Save prev PC + 2
52859  str r5,[r7,#0x5c] ;@ Save Cycles
52860
52861;@ EaCalc : Get '(a0)+' into r0:
52862  and r2,r8,#0x000f
52863  ldr r0,[r7,r2,lsl #2]
52864  add r3,r0,#2 ;@ Post-increment An
52865  str r3,[r7,r2,lsl #2]
52866;@ EaRead : Read '(a0)+' (address in r0) into r0:
52867  str r4,[r7,#0x40] ;@ Save PC
52868  bic r0,r0,#0xff000000
52869  bl m68k_read16 ;@ Call read16(r0) handler
52870
52871;@ EaCalc : Get register index into r11:
52872  and r11,r8,#0x0e00
52873;@ EaRead : Read register[r11] into r2:
52874  ldr r2,[r7,r11,lsr #7]
52875
52876  movs r1,r0,asl #16
52877;@ Get 16-bit signs right:
52878  mov r0,r1,lsr #16
52879  mov r2,r2,lsl #16
52880  mov r2,r2,lsr #16
52881
52882  muls r1,r2,r0
52883  and r10,r1,#0x80000000 ;@ r10=N_flag
52884  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52885
52886;@ EaWrite: r1 into register[r11]:
52887  str r1,[r7,r11,lsr #7]
52888
52889  ldr r5,[r7,#0x5c] ;@ Load Cycles
52890  ldrh r8,[r4],#2 ;@ Fetch next opcode
52891  subs r5,r5,#58 ;@ Subtract cycles
52892  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52893  b CycloneEnd
52894
52895;@ ---------- [c0e0] mulu.w -(a0), d0 uses Opc0e0 ----------
52896Opc0e0:
52897  str r4,[r7,#0x50] ;@ Save prev PC + 2
52898  str r5,[r7,#0x5c] ;@ Save Cycles
52899
52900;@ EaCalc : Get '-(a0)' into r0:
52901  and r2,r8,#0x000f
52902  orr r2,r2,#0x8 ;@ A0-7
52903  ldr r0,[r7,r2,lsl #2]
52904  sub r0,r0,#2 ;@ Pre-decrement An
52905  str r0,[r7,r2,lsl #2]
52906;@ EaRead : Read '-(a0)' (address in r0) into r0:
52907  str r4,[r7,#0x40] ;@ Save PC
52908  bic r0,r0,#0xff000000
52909  bl m68k_read16 ;@ Call read16(r0) handler
52910
52911;@ EaCalc : Get register index into r11:
52912  and r11,r8,#0x0e00
52913;@ EaRead : Read register[r11] into r2:
52914  ldr r2,[r7,r11,lsr #7]
52915
52916  movs r1,r0,asl #16
52917;@ Get 16-bit signs right:
52918  mov r0,r1,lsr #16
52919  mov r2,r2,lsl #16
52920  mov r2,r2,lsr #16
52921
52922  muls r1,r2,r0
52923  and r10,r1,#0x80000000 ;@ r10=N_flag
52924  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52925
52926;@ EaWrite: r1 into register[r11]:
52927  str r1,[r7,r11,lsr #7]
52928
52929  ldr r5,[r7,#0x5c] ;@ Load Cycles
52930  ldrh r8,[r4],#2 ;@ Fetch next opcode
52931  subs r5,r5,#60 ;@ Subtract cycles
52932  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52933  b CycloneEnd
52934
52935;@ ---------- [c0e8] mulu.w ($3333,a0), d0 uses Opc0e8 ----------
52936Opc0e8:
52937  str r4,[r7,#0x50] ;@ Save prev PC + 2
52938  str r5,[r7,#0x5c] ;@ Save Cycles
52939
52940;@ EaCalc : Get '($3333,a0)' into r0:
52941  ldrsh r0,[r4],#2 ;@ Fetch offset
52942  and r2,r8,#0x000f
52943  ldr r2,[r7,r2,lsl #2]
52944  add r0,r0,r2 ;@ Add on offset
52945;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
52946  str r4,[r7,#0x40] ;@ Save PC
52947  bic r0,r0,#0xff000000
52948  bl m68k_read16 ;@ Call read16(r0) handler
52949
52950;@ EaCalc : Get register index into r11:
52951  and r11,r8,#0x0e00
52952;@ EaRead : Read register[r11] into r2:
52953  ldr r2,[r7,r11,lsr #7]
52954
52955  movs r1,r0,asl #16
52956;@ Get 16-bit signs right:
52957  mov r0,r1,lsr #16
52958  mov r2,r2,lsl #16
52959  mov r2,r2,lsr #16
52960
52961  muls r1,r2,r0
52962  and r10,r1,#0x80000000 ;@ r10=N_flag
52963  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52964
52965;@ EaWrite: r1 into register[r11]:
52966  str r1,[r7,r11,lsr #7]
52967
52968  ldr r5,[r7,#0x5c] ;@ Load Cycles
52969  ldrh r8,[r4],#2 ;@ Fetch next opcode
52970  subs r5,r5,#62 ;@ Subtract cycles
52971  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52972  b CycloneEnd
52973
52974;@ ---------- [c0f0] mulu.w ($33,a0,d3.w*2), d0 uses Opc0f0 ----------
52975Opc0f0:
52976  str r4,[r7,#0x50] ;@ Save prev PC + 2
52977  str r5,[r7,#0x5c] ;@ Save Cycles
52978
52979;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
52980;@ Get extension word into r3:
52981  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
52982  mov r2,r3,lsr #10
52983  tst r3,#0x0800 ;@ Is Rn Word or Long
52984  and r2,r2,#0x3c ;@ r2=Index of Rn
52985  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
52986  ldrne   r2,[r7,r2] ;@ r2=Rn.l
52987  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
52988  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
52989  and r2,r8,#0x000f
52990  orr r2,r2,#0x8 ;@ A0-7
52991  ldr r2,[r7,r2,lsl #2]
52992  add r0,r2,r3 ;@ r0=Disp+An+Rn
52993;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
52994  str r4,[r7,#0x40] ;@ Save PC
52995  bic r0,r0,#0xff000000
52996  bl m68k_read16 ;@ Call read16(r0) handler
52997
52998;@ EaCalc : Get register index into r11:
52999  and r11,r8,#0x0e00
53000;@ EaRead : Read register[r11] into r2:
53001  ldr r2,[r7,r11,lsr #7]
53002
53003  movs r1,r0,asl #16
53004;@ Get 16-bit signs right:
53005  mov r0,r1,lsr #16
53006  mov r2,r2,lsl #16
53007  mov r2,r2,lsr #16
53008
53009  muls r1,r2,r0
53010  and r10,r1,#0x80000000 ;@ r10=N_flag
53011  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53012
53013;@ EaWrite: r1 into register[r11]:
53014  str r1,[r7,r11,lsr #7]
53015
53016  ldr r5,[r7,#0x5c] ;@ Load Cycles
53017  ldrh r8,[r4],#2 ;@ Fetch next opcode
53018  subs r5,r5,#64 ;@ Subtract cycles
53019  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53020  b CycloneEnd
53021
53022;@ ---------- [c0f8] mulu.w $3333.w, d0 uses Opc0f8 ----------
53023Opc0f8:
53024  str r4,[r7,#0x50] ;@ Save prev PC + 2
53025  str r5,[r7,#0x5c] ;@ Save Cycles
53026
53027;@ EaCalc : Get '$3333.w' into r0:
53028  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
53029;@ EaRead : Read '$3333.w' (address in r0) into r0:
53030  str r4,[r7,#0x40] ;@ Save PC
53031  bic r0,r0,#0xff000000
53032  bl m68k_read16 ;@ Call read16(r0) handler
53033
53034;@ EaCalc : Get register index into r11:
53035  and r11,r8,#0x0e00
53036;@ EaRead : Read register[r11] into r2:
53037  ldr r2,[r7,r11,lsr #7]
53038
53039  movs r1,r0,asl #16
53040;@ Get 16-bit signs right:
53041  mov r0,r1,lsr #16
53042  mov r2,r2,lsl #16
53043  mov r2,r2,lsr #16
53044
53045  muls r1,r2,r0
53046  and r10,r1,#0x80000000 ;@ r10=N_flag
53047  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53048
53049;@ EaWrite: r1 into register[r11]:
53050  str r1,[r7,r11,lsr #7]
53051
53052  ldr r5,[r7,#0x5c] ;@ Load Cycles
53053  ldrh r8,[r4],#2 ;@ Fetch next opcode
53054  subs r5,r5,#62 ;@ Subtract cycles
53055  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53056  b CycloneEnd
53057
53058;@ ---------- [c0f9] mulu.w $33333333.l, d0 uses Opc0f9 ----------
53059Opc0f9:
53060  str r4,[r7,#0x50] ;@ Save prev PC + 2
53061  str r5,[r7,#0x5c] ;@ Save Cycles
53062
53063;@ EaCalc : Get '$33333333.l' into r0:
53064  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
53065  ldrh r0,[r4],#2
53066  orr r0,r0,r2,lsl #16
53067;@ EaRead : Read '$33333333.l' (address in r0) into r0:
53068  str r4,[r7,#0x40] ;@ Save PC
53069  bic r0,r0,#0xff000000
53070  bl m68k_read16 ;@ Call read16(r0) handler
53071
53072;@ EaCalc : Get register index into r11:
53073  and r11,r8,#0x0e00
53074;@ EaRead : Read register[r11] into r2:
53075  ldr r2,[r7,r11,lsr #7]
53076
53077  movs r1,r0,asl #16
53078;@ Get 16-bit signs right:
53079  mov r0,r1,lsr #16
53080  mov r2,r2,lsl #16
53081  mov r2,r2,lsr #16
53082
53083  muls r1,r2,r0
53084  and r10,r1,#0x80000000 ;@ r10=N_flag
53085  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53086
53087;@ EaWrite: r1 into register[r11]:
53088  str r1,[r7,r11,lsr #7]
53089
53090  ldr r5,[r7,#0x5c] ;@ Load Cycles
53091  ldrh r8,[r4],#2 ;@ Fetch next opcode
53092  subs r5,r5,#66 ;@ Subtract cycles
53093  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53094  b CycloneEnd
53095
53096;@ ---------- [c0fa] mulu.w ($3333,pc), d0; =3335 uses Opc0fa ----------
53097Opc0fa:
53098  str r4,[r7,#0x50] ;@ Save prev PC + 2
53099  str r5,[r7,#0x5c] ;@ Save Cycles
53100
53101;@ EaCalc : Get '($3333,pc)' into r0:
53102  ldr r0,[r7,#0x60] ;@ Get Memory base
53103  sub r0,r4,r0 ;@ Real PC
53104  ldrsh r2,[r4],#2 ;@ Fetch extension
53105  add r0,r2,r0 ;@ ($nn,PC)
53106;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
53107  str r4,[r7,#0x40] ;@ Save PC
53108  bic r0,r0,#0xff000000
53109  bl m68k_fetch16 ;@ Call fetch16(r0) handler
53110
53111;@ EaCalc : Get register index into r11:
53112  and r11,r8,#0x0e00
53113;@ EaRead : Read register[r11] into r2:
53114  ldr r2,[r7,r11,lsr #7]
53115
53116  movs r1,r0,asl #16
53117;@ Get 16-bit signs right:
53118  mov r0,r1,lsr #16
53119  mov r2,r2,lsl #16
53120  mov r2,r2,lsr #16
53121
53122  muls r1,r2,r0
53123  and r10,r1,#0x80000000 ;@ r10=N_flag
53124  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53125
53126;@ EaWrite: r1 into register[r11]:
53127  str r1,[r7,r11,lsr #7]
53128
53129  ldr r5,[r7,#0x5c] ;@ Load Cycles
53130  ldrh r8,[r4],#2 ;@ Fetch next opcode
53131  subs r5,r5,#62 ;@ Subtract cycles
53132  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53133  b CycloneEnd
53134
53135;@ ---------- [c0fb] mulu.w ($33,pc,d3.w*2), d0; =35 uses Opc0fb ----------
53136Opc0fb:
53137  str r4,[r7,#0x50] ;@ Save prev PC + 2
53138  str r5,[r7,#0x5c] ;@ Save Cycles
53139
53140;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
53141  ldr r0,[r7,#0x60] ;@ Get Memory base
53142  ldrh r3,[r4] ;@ Get extension word
53143  sub r0,r4,r0 ;@ r0=PC
53144  add r4,r4,#2
53145  mov r2,r3,lsr #10
53146  tst r3,#0x0800 ;@ Is Rn Word or Long
53147  and r2,r2,#0x3c ;@ r2=Index of Rn
53148  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
53149  ldrne   r2,[r7,r2] ;@ r2=Rn.l
53150  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
53151  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
53152  add r0,r2,r0 ;@ r0=Disp+PC+Rn
53153;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
53154  str r4,[r7,#0x40] ;@ Save PC
53155  bic r0,r0,#0xff000000
53156  bl m68k_fetch16 ;@ Call fetch16(r0) handler
53157
53158;@ EaCalc : Get register index into r11:
53159  and r11,r8,#0x0e00
53160;@ EaRead : Read register[r11] into r2:
53161  ldr r2,[r7,r11,lsr #7]
53162
53163  movs r1,r0,asl #16
53164;@ Get 16-bit signs right:
53165  mov r0,r1,lsr #16
53166  mov r2,r2,lsl #16
53167  mov r2,r2,lsr #16
53168
53169  muls r1,r2,r0
53170  and r10,r1,#0x80000000 ;@ r10=N_flag
53171  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53172
53173;@ EaWrite: r1 into register[r11]:
53174  str r1,[r7,r11,lsr #7]
53175
53176  ldr r5,[r7,#0x5c] ;@ Load Cycles
53177  ldrh r8,[r4],#2 ;@ Fetch next opcode
53178  subs r5,r5,#64 ;@ Subtract cycles
53179  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53180  b CycloneEnd
53181
53182;@ ---------- [c0fc] mulu.w #$3333, d0 uses Opc0fc ----------
53183Opc0fc:
53184;@ EaCalc : Get '#$3333' into r0:
53185  ldrsh r0,[r4],#2 ;@ Fetch immediate value
53186;@ EaRead : Read '#$3333' (address in r0) into r0:
53187
53188;@ EaCalc : Get register index into r11:
53189  and r11,r8,#0x0e00
53190;@ EaRead : Read register[r11] into r2:
53191  ldr r2,[r7,r11,lsr #7]
53192
53193  movs r1,r0,asl #16
53194;@ Get 16-bit signs right:
53195  mov r0,r1,lsr #16
53196  mov r2,r2,lsl #16
53197  mov r2,r2,lsr #16
53198
53199  muls r1,r2,r0
53200  and r10,r1,#0x80000000 ;@ r10=N_flag
53201  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53202
53203;@ EaWrite: r1 into register[r11]:
53204  str r1,[r7,r11,lsr #7]
53205
53206  ldrh r8,[r4],#2 ;@ Fetch next opcode
53207  subs r5,r5,#58 ;@ Subtract cycles
53208  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53209  b CycloneEnd
53210
53211;@ ---------- [c100] abcd d0, d0 uses Opc100 ----------
53212Opc100:
53213;@ Get src/dest reg vals
53214;@ EaCalc : Get register index into r6:
53215  and r6,r8,#0x0007
53216;@ EaRead : Read register[r6] into r6:
53217  ldr r6,[r7,r6,lsl #2]
53218
53219;@ EaCalc : Get register index into r11:
53220  and r11,r8,#0x0e00
53221;@ EaRead : Read register[r11] into r0:
53222  ldr r0,[r7,r11,lsr #7]
53223
53224  mov r6,r6,asl #24
53225  mov r1,r0,asl #24
53226
53227  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
53228  ldr r0,[r7,#0x4c] ;@ Get X bit
53229  mov r3,#0x00f00000
53230  and r2,r3,r1,lsr #4
53231  tst r0,#0x20000000
53232  and r0,r3,r6,lsr #4
53233  add r0,r0,r2
53234  addne r0,r0,#0x00100000
53235  cmp r0,#0x00900000
53236  addhi r0,r0,#0x00600000 ;@ Decimal adjust units
53237  mov r2,r1,lsr #28
53238  add r0,r0,r2,lsl #24
53239  mov r2,r6,lsr #28
53240  add r0,r0,r2,lsl #24
53241  cmp r0,#0x09900000
53242  orrhi r10,r10,#0x20000000 ;@ C
53243  subhi r0,r0,#0x0a000000
53244  movs r0,r0,lsl #4
53245  orrmi r10,r10,#0x90000000 ;@ Undefined N+V behavior
53246  bicne r10,r10,#0x40000000 ;@ Z flag
53247  str r10,[r7,#0x4c] ;@ Save X bit
53248
53249;@ EaWrite: r0 into register[r11]:
53250  mov r0,r0,lsr #24
53251  strb r0,[r7,r11,lsr #7]
53252
53253  ldr r6,[r7,#0x54]
53254  ldrh r8,[r4],#2 ;@ Fetch next opcode
53255  subs r5,r5,#6 ;@ Subtract cycles
53256  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53257  b CycloneEnd
53258
53259;@ ---------- [c108] abcd -(a0), -(a0) uses Opc108 ----------
53260Opc108:
53261  str r4,[r7,#0x50] ;@ Save prev PC + 2
53262  str r5,[r7,#0x5c] ;@ Save Cycles
53263
53264;@ Get src/dest EA vals
53265;@ EaCalc : Get '-(a0)' into r0:
53266  and r2,r8,#0x000f
53267  ldr r0,[r7,r2,lsl #2]
53268  sub r0,r0,#1 ;@ Pre-decrement An
53269  str r0,[r7,r2,lsl #2]
53270;@ EaRead : Read '-(a0)' (address in r0) into r6:
53271  str r4,[r7,#0x40] ;@ Save PC
53272  bic r0,r0,#0xff000000
53273  bl m68k_read8 ;@ Call read8(r0) handler
53274  mov r6,r0,asl #24
53275
53276;@ EaCalc : Get '-(a0)' into r11:
53277  and r2,r8,#0x0e00
53278  orr r2,r2,#0x1000 ;@ A0-7
53279  ldr r11,[r7,r2,lsr #7]
53280  sub r11,r11,#1 ;@ Pre-decrement An
53281  str r11,[r7,r2,lsr #7]
53282;@ EaRead : Read '-(a0)' (address in r11) into r0:
53283  bic r0,r11,#0xff000000
53284  bl m68k_read8 ;@ Call read8(r0) handler
53285
53286  mov r1,r0,asl #24
53287
53288  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
53289  ldr r0,[r7,#0x4c] ;@ Get X bit
53290  mov r3,#0x00f00000
53291  and r2,r3,r1,lsr #4
53292  tst r0,#0x20000000
53293  and r0,r3,r6,lsr #4
53294  add r0,r0,r2
53295  addne r0,r0,#0x00100000
53296  cmp r0,#0x00900000
53297  addhi r0,r0,#0x00600000 ;@ Decimal adjust units
53298  mov r2,r1,lsr #28
53299  add r0,r0,r2,lsl #24
53300  mov r2,r6,lsr #28
53301  add r0,r0,r2,lsl #24
53302  cmp r0,#0x09900000
53303  orrhi r10,r10,#0x20000000 ;@ C
53304  subhi r0,r0,#0x0a000000
53305  movs r0,r0,lsl #4
53306  orrmi r10,r10,#0x90000000 ;@ Undefined N+V behavior
53307  bicne r10,r10,#0x40000000 ;@ Z flag
53308  str r10,[r7,#0x4c] ;@ Save X bit
53309
53310;@ EaWrite: Write r0 into '-(a0)' (address in r11):
53311  mov r1,r0,lsr #24
53312  bic r0,r11,#0xff000000
53313  bl m68k_write8 ;@ Call write8(r0,r1) handler
53314
53315  ldr r6,[r7,#0x54]
53316  ldr r5,[r7,#0x5c] ;@ Load Cycles
53317  ldrh r8,[r4],#2 ;@ Fetch next opcode
53318  subs r5,r5,#18 ;@ Subtract cycles
53319  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53320  b CycloneEnd
53321
53322;@ ---------- [c10f] abcd -(a7), -(a0) uses Opc10f ----------
53323Opc10f:
53324  str r4,[r7,#0x50] ;@ Save prev PC + 2
53325  str r5,[r7,#0x5c] ;@ Save Cycles
53326
53327;@ Get src/dest EA vals
53328;@ EaCalc : Get '-(a7)' into r0:
53329  ldr r0,[r7,#0x3c] ;@ A7
53330  sub r0,r0,#2 ;@ Pre-decrement An
53331  str r0,[r7,#0x3c] ;@ A7
53332;@ EaRead : Read '-(a7)' (address in r0) into r6:
53333  str r4,[r7,#0x40] ;@ Save PC
53334  bic r0,r0,#0xff000000
53335  bl m68k_read8 ;@ Call read8(r0) handler
53336  mov r6,r0,asl #24
53337
53338;@ EaCalc : Get '-(a0)' into r11:
53339  and r2,r8,#0x0e00
53340  orr r2,r2,#0x1000 ;@ A0-7
53341  ldr r11,[r7,r2,lsr #7]
53342  sub r11,r11,#1 ;@ Pre-decrement An
53343  str r11,[r7,r2,lsr #7]
53344;@ EaRead : Read '-(a0)' (address in r11) into r0:
53345  bic r0,r11,#0xff000000
53346  bl m68k_read8 ;@ Call read8(r0) handler
53347
53348  mov r1,r0,asl #24
53349
53350  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
53351  ldr r0,[r7,#0x4c] ;@ Get X bit
53352  mov r3,#0x00f00000
53353  and r2,r3,r1,lsr #4
53354  tst r0,#0x20000000
53355  and r0,r3,r6,lsr #4
53356  add r0,r0,r2
53357  addne r0,r0,#0x00100000
53358  cmp r0,#0x00900000
53359  addhi r0,r0,#0x00600000 ;@ Decimal adjust units
53360  mov r2,r1,lsr #28
53361  add r0,r0,r2,lsl #24
53362  mov r2,r6,lsr #28
53363  add r0,r0,r2,lsl #24
53364  cmp r0,#0x09900000
53365  orrhi r10,r10,#0x20000000 ;@ C
53366  subhi r0,r0,#0x0a000000
53367  movs r0,r0,lsl #4
53368  orrmi r10,r10,#0x90000000 ;@ Undefined N+V behavior
53369  bicne r10,r10,#0x40000000 ;@ Z flag
53370  str r10,[r7,#0x4c] ;@ Save X bit
53371
53372;@ EaWrite: Write r0 into '-(a0)' (address in r11):
53373  mov r1,r0,lsr #24
53374  bic r0,r11,#0xff000000
53375  bl m68k_write8 ;@ Call write8(r0,r1) handler
53376
53377  ldr r6,[r7,#0x54]
53378  ldr r5,[r7,#0x5c] ;@ Load Cycles
53379  ldrh r8,[r4],#2 ;@ Fetch next opcode
53380  subs r5,r5,#18 ;@ Subtract cycles
53381  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53382  b CycloneEnd
53383
53384;@ ---------- [c110] and.b d0, (a0) uses Opc110 ----------
53385Opc110:
53386  str r4,[r7,#0x50] ;@ Save prev PC + 2
53387  str r5,[r7,#0x5c] ;@ Save Cycles
53388
53389;@ EaCalc : Get '(a0)' into r11:
53390  and r2,r8,#0x000f
53391  orr r2,r2,#0x8 ;@ A0-7
53392  ldr r11,[r7,r2,lsl #2]
53393;@ EaRead : Read '(a0)' (address in r11) into r0:
53394  str r4,[r7,#0x40] ;@ Save PC
53395  bic r0,r11,#0xff000000
53396  bl m68k_read8 ;@ Call read8(r0) handler
53397
53398;@ EaCalc : Get register index into r1:
53399  and r1,r8,#0x0e00
53400;@ EaRead : Read register[r1] into r1:
53401  ldr r1,[r7,r1,lsr #7]
53402
53403;@ Do arithmetic:
53404  mov r0,r0,asl #24
53405  ands r1,r0,r1,asl #24
53406  and r10,r1,#0x80000000 ;@ r10=N_flag
53407  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53408
53409;@ Save result:
53410  mov r1,r1,asr #24
53411;@ EaWrite: Write r1 into '(a0)' (address in r11):
53412  and r1,r1,#0xff
53413  bic r0,r11,#0xff000000
53414  bl m68k_write8 ;@ Call write8(r0,r1) handler
53415
53416  ldr r5,[r7,#0x5c] ;@ Load Cycles
53417  ldrh r8,[r4],#2 ;@ Fetch next opcode
53418  subs r5,r5,#12 ;@ Subtract cycles
53419  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53420  b CycloneEnd
53421
53422;@ ---------- [c118] and.b d0, (a0)+ uses Opc118 ----------
53423Opc118:
53424  str r4,[r7,#0x50] ;@ Save prev PC + 2
53425  str r5,[r7,#0x5c] ;@ Save Cycles
53426
53427;@ EaCalc : Get '(a0)+' into r11:
53428  and r2,r8,#0x000f
53429  ldr r11,[r7,r2,lsl #2]
53430  add r3,r11,#1 ;@ Post-increment An
53431  str r3,[r7,r2,lsl #2]
53432;@ EaRead : Read '(a0)+' (address in r11) into r0:
53433  str r4,[r7,#0x40] ;@ Save PC
53434  bic r0,r11,#0xff000000
53435  bl m68k_read8 ;@ Call read8(r0) handler
53436
53437;@ EaCalc : Get register index into r1:
53438  and r1,r8,#0x0e00
53439;@ EaRead : Read register[r1] into r1:
53440  ldr r1,[r7,r1,lsr #7]
53441
53442;@ Do arithmetic:
53443  mov r0,r0,asl #24
53444  ands r1,r0,r1,asl #24
53445  and r10,r1,#0x80000000 ;@ r10=N_flag
53446  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53447
53448;@ Save result:
53449  mov r1,r1,asr #24
53450;@ EaWrite: Write r1 into '(a0)+' (address in r11):
53451  and r1,r1,#0xff
53452  bic r0,r11,#0xff000000
53453  bl m68k_write8 ;@ Call write8(r0,r1) handler
53454
53455  ldr r5,[r7,#0x5c] ;@ Load Cycles
53456  ldrh r8,[r4],#2 ;@ Fetch next opcode
53457  subs r5,r5,#12 ;@ Subtract cycles
53458  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53459  b CycloneEnd
53460
53461;@ ---------- [c11f] and.b d0, (a7)+ uses Opc11f ----------
53462Opc11f:
53463  str r4,[r7,#0x50] ;@ Save prev PC + 2
53464  str r5,[r7,#0x5c] ;@ Save Cycles
53465
53466;@ EaCalc : Get '(a7)+' into r11:
53467  ldr r11,[r7,#0x3c] ;@ A7
53468  add r3,r11,#2 ;@ Post-increment An
53469  str r3,[r7,#0x3c] ;@ A7
53470;@ EaRead : Read '(a7)+' (address in r11) into r0:
53471  str r4,[r7,#0x40] ;@ Save PC
53472  bic r0,r11,#0xff000000
53473  bl m68k_read8 ;@ Call read8(r0) handler
53474
53475;@ EaCalc : Get register index into r1:
53476  and r1,r8,#0x0e00
53477;@ EaRead : Read register[r1] into r1:
53478  ldr r1,[r7,r1,lsr #7]
53479
53480;@ Do arithmetic:
53481  mov r0,r0,asl #24
53482  ands r1,r0,r1,asl #24
53483  and r10,r1,#0x80000000 ;@ r10=N_flag
53484  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53485
53486;@ Save result:
53487  mov r1,r1,asr #24
53488;@ EaWrite: Write r1 into '(a7)+' (address in r11):
53489  and r1,r1,#0xff
53490  bic r0,r11,#0xff000000
53491  bl m68k_write8 ;@ Call write8(r0,r1) handler
53492
53493  ldr r5,[r7,#0x5c] ;@ Load Cycles
53494  ldrh r8,[r4],#2 ;@ Fetch next opcode
53495  subs r5,r5,#12 ;@ Subtract cycles
53496  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53497  b CycloneEnd
53498
53499;@ ---------- [c120] and.b d0, -(a0) uses Opc120 ----------
53500Opc120:
53501  str r4,[r7,#0x50] ;@ Save prev PC + 2
53502  str r5,[r7,#0x5c] ;@ Save Cycles
53503
53504;@ EaCalc : Get '-(a0)' into r11:
53505  and r2,r8,#0x000f
53506  orr r2,r2,#0x8 ;@ A0-7
53507  ldr r11,[r7,r2,lsl #2]
53508  sub r11,r11,#1 ;@ Pre-decrement An
53509  str r11,[r7,r2,lsl #2]
53510;@ EaRead : Read '-(a0)' (address in r11) into r0:
53511  str r4,[r7,#0x40] ;@ Save PC
53512  bic r0,r11,#0xff000000
53513  bl m68k_read8 ;@ Call read8(r0) handler
53514
53515;@ EaCalc : Get register index into r1:
53516  and r1,r8,#0x0e00
53517;@ EaRead : Read register[r1] into r1:
53518  ldr r1,[r7,r1,lsr #7]
53519
53520;@ Do arithmetic:
53521  mov r0,r0,asl #24
53522  ands r1,r0,r1,asl #24
53523  and r10,r1,#0x80000000 ;@ r10=N_flag
53524  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53525
53526;@ Save result:
53527  mov r1,r1,asr #24
53528;@ EaWrite: Write r1 into '-(a0)' (address in r11):
53529  and r1,r1,#0xff
53530  bic r0,r11,#0xff000000
53531  bl m68k_write8 ;@ Call write8(r0,r1) handler
53532
53533  ldr r5,[r7,#0x5c] ;@ Load Cycles
53534  ldrh r8,[r4],#2 ;@ Fetch next opcode
53535  subs r5,r5,#14 ;@ Subtract cycles
53536  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53537  b CycloneEnd
53538
53539;@ ---------- [c127] and.b d0, -(a7) uses Opc127 ----------
53540Opc127:
53541  str r4,[r7,#0x50] ;@ Save prev PC + 2
53542  str r5,[r7,#0x5c] ;@ Save Cycles
53543
53544;@ EaCalc : Get '-(a7)' into r11:
53545  ldr r11,[r7,#0x3c] ;@ A7
53546  sub r11,r11,#2 ;@ Pre-decrement An
53547  str r11,[r7,#0x3c] ;@ A7
53548;@ EaRead : Read '-(a7)' (address in r11) into r0:
53549  str r4,[r7,#0x40] ;@ Save PC
53550  bic r0,r11,#0xff000000
53551  bl m68k_read8 ;@ Call read8(r0) handler
53552
53553;@ EaCalc : Get register index into r1:
53554  and r1,r8,#0x0e00
53555;@ EaRead : Read register[r1] into r1:
53556  ldr r1,[r7,r1,lsr #7]
53557
53558;@ Do arithmetic:
53559  mov r0,r0,asl #24
53560  ands r1,r0,r1,asl #24
53561  and r10,r1,#0x80000000 ;@ r10=N_flag
53562  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53563
53564;@ Save result:
53565  mov r1,r1,asr #24
53566;@ EaWrite: Write r1 into '-(a7)' (address in r11):
53567  and r1,r1,#0xff
53568  bic r0,r11,#0xff000000
53569  bl m68k_write8 ;@ Call write8(r0,r1) handler
53570
53571  ldr r5,[r7,#0x5c] ;@ Load Cycles
53572  ldrh r8,[r4],#2 ;@ Fetch next opcode
53573  subs r5,r5,#14 ;@ Subtract cycles
53574  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53575  b CycloneEnd
53576
53577;@ ---------- [c128] and.b d0, ($3333,a0) uses Opc128 ----------
53578Opc128:
53579  str r4,[r7,#0x50] ;@ Save prev PC + 2
53580  str r5,[r7,#0x5c] ;@ Save Cycles
53581
53582;@ EaCalc : Get '($3333,a0)' into r11:
53583  ldrsh r0,[r4],#2 ;@ Fetch offset
53584  and r2,r8,#0x000f
53585  ldr r2,[r7,r2,lsl #2]
53586  add r11,r0,r2 ;@ Add on offset
53587;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
53588  str r4,[r7,#0x40] ;@ Save PC
53589  bic r0,r11,#0xff000000
53590  bl m68k_read8 ;@ Call read8(r0) handler
53591
53592;@ EaCalc : Get register index into r1:
53593  and r1,r8,#0x0e00
53594;@ EaRead : Read register[r1] into r1:
53595  ldr r1,[r7,r1,lsr #7]
53596
53597;@ Do arithmetic:
53598  mov r0,r0,asl #24
53599  ands r1,r0,r1,asl #24
53600  and r10,r1,#0x80000000 ;@ r10=N_flag
53601  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53602
53603;@ Save result:
53604  mov r1,r1,asr #24
53605;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
53606  and r1,r1,#0xff
53607  bic r0,r11,#0xff000000
53608  bl m68k_write8 ;@ Call write8(r0,r1) handler
53609
53610  ldr r5,[r7,#0x5c] ;@ Load Cycles
53611  ldrh r8,[r4],#2 ;@ Fetch next opcode
53612  subs r5,r5,#16 ;@ Subtract cycles
53613  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53614  b CycloneEnd
53615
53616;@ ---------- [c130] and.b d0, ($33,a0,d3.w*2) uses Opc130 ----------
53617Opc130:
53618  str r4,[r7,#0x50] ;@ Save prev PC + 2
53619  str r5,[r7,#0x5c] ;@ Save Cycles
53620
53621;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
53622;@ Get extension word into r3:
53623  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
53624  mov r2,r3,lsr #10
53625  tst r3,#0x0800 ;@ Is Rn Word or Long
53626  and r2,r2,#0x3c ;@ r2=Index of Rn
53627  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
53628  ldrne   r2,[r7,r2] ;@ r2=Rn.l
53629  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
53630  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
53631  and r2,r8,#0x000f
53632  orr r2,r2,#0x8 ;@ A0-7
53633  ldr r2,[r7,r2,lsl #2]
53634  add r11,r2,r3 ;@ r11=Disp+An+Rn
53635;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
53636  str r4,[r7,#0x40] ;@ Save PC
53637  bic r0,r11,#0xff000000
53638  bl m68k_read8 ;@ Call read8(r0) handler
53639
53640;@ EaCalc : Get register index into r1:
53641  and r1,r8,#0x0e00
53642;@ EaRead : Read register[r1] into r1:
53643  ldr r1,[r7,r1,lsr #7]
53644
53645;@ Do arithmetic:
53646  mov r0,r0,asl #24
53647  ands r1,r0,r1,asl #24
53648  and r10,r1,#0x80000000 ;@ r10=N_flag
53649  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53650
53651;@ Save result:
53652  mov r1,r1,asr #24
53653;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
53654  and r1,r1,#0xff
53655  bic r0,r11,#0xff000000
53656  bl m68k_write8 ;@ Call write8(r0,r1) handler
53657
53658  ldr r5,[r7,#0x5c] ;@ Load Cycles
53659  ldrh r8,[r4],#2 ;@ Fetch next opcode
53660  subs r5,r5,#18 ;@ Subtract cycles
53661  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53662  b CycloneEnd
53663
53664;@ ---------- [c138] and.b d0, $3333.w uses Opc138 ----------
53665Opc138:
53666  str r4,[r7,#0x50] ;@ Save prev PC + 2
53667  str r5,[r7,#0x5c] ;@ Save Cycles
53668
53669;@ EaCalc : Get '$3333.w' into r11:
53670  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
53671;@ EaRead : Read '$3333.w' (address in r11) into r0:
53672  str r4,[r7,#0x40] ;@ Save PC
53673  bic r0,r11,#0xff000000
53674  bl m68k_read8 ;@ Call read8(r0) handler
53675
53676;@ EaCalc : Get register index into r1:
53677  and r1,r8,#0x0e00
53678;@ EaRead : Read register[r1] into r1:
53679  ldr r1,[r7,r1,lsr #7]
53680
53681;@ Do arithmetic:
53682  mov r0,r0,asl #24
53683  ands r1,r0,r1,asl #24
53684  and r10,r1,#0x80000000 ;@ r10=N_flag
53685  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53686
53687;@ Save result:
53688  mov r1,r1,asr #24
53689;@ EaWrite: Write r1 into '$3333.w' (address in r11):
53690  and r1,r1,#0xff
53691  bic r0,r11,#0xff000000
53692  bl m68k_write8 ;@ Call write8(r0,r1) handler
53693
53694  ldr r5,[r7,#0x5c] ;@ Load Cycles
53695  ldrh r8,[r4],#2 ;@ Fetch next opcode
53696  subs r5,r5,#16 ;@ Subtract cycles
53697  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53698  b CycloneEnd
53699
53700;@ ---------- [c139] and.b d0, $33333333.l uses Opc139 ----------
53701Opc139:
53702  str r4,[r7,#0x50] ;@ Save prev PC + 2
53703  str r5,[r7,#0x5c] ;@ Save Cycles
53704
53705;@ EaCalc : Get '$33333333.l' into r11:
53706  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
53707  ldrh r0,[r4],#2
53708  orr r11,r0,r2,lsl #16
53709;@ EaRead : Read '$33333333.l' (address in r11) into r0:
53710  str r4,[r7,#0x40] ;@ Save PC
53711  bic r0,r11,#0xff000000
53712  bl m68k_read8 ;@ Call read8(r0) handler
53713
53714;@ EaCalc : Get register index into r1:
53715  and r1,r8,#0x0e00
53716;@ EaRead : Read register[r1] into r1:
53717  ldr r1,[r7,r1,lsr #7]
53718
53719;@ Do arithmetic:
53720  mov r0,r0,asl #24
53721  ands r1,r0,r1,asl #24
53722  and r10,r1,#0x80000000 ;@ r10=N_flag
53723  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53724
53725;@ Save result:
53726  mov r1,r1,asr #24
53727;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
53728  and r1,r1,#0xff
53729  bic r0,r11,#0xff000000
53730  bl m68k_write8 ;@ Call write8(r0,r1) handler
53731
53732  ldr r5,[r7,#0x5c] ;@ Load Cycles
53733  ldrh r8,[r4],#2 ;@ Fetch next opcode
53734  subs r5,r5,#20 ;@ Subtract cycles
53735  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53736  b CycloneEnd
53737
53738;@ ---------- [c140] exg d0, d0 uses Opc140 ----------
53739Opc140:
53740  and r2,r8,#0x0e00 ;@ Find T register
53741  and r3,r8,#0x000f ;@ Find S register
53742
53743  ldr r0,[r7,r2,lsr #7] ;@ Get T
53744  ldr r1,[r7,r3,lsl #2] ;@ Get S
53745
53746  str r0,[r7,r3,lsl #2] ;@ T->S
53747  str r1,[r7,r2,lsr #7] ;@ S->T
53748
53749  ldrh r8,[r4],#2 ;@ Fetch next opcode
53750  subs r5,r5,#6 ;@ Subtract cycles
53751  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53752  b CycloneEnd
53753
53754;@ ---------- [c148] exg a0, a0 uses Opc148 ----------
53755Opc148:
53756  and r2,r8,#0x0e00 ;@ Find T register
53757  and r3,r8,#0x000f ;@ Find S register
53758  orr r2,r2,#0x1000 ;@ T is an address register
53759
53760  ldr r0,[r7,r2,lsr #7] ;@ Get T
53761  ldr r1,[r7,r3,lsl #2] ;@ Get S
53762
53763  str r0,[r7,r3,lsl #2] ;@ T->S
53764  str r1,[r7,r2,lsr #7] ;@ S->T
53765
53766  ldrh r8,[r4],#2 ;@ Fetch next opcode
53767  subs r5,r5,#6 ;@ Subtract cycles
53768  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53769  b CycloneEnd
53770
53771;@ ---------- [c150] and.w d0, (a0) uses Opc150 ----------
53772Opc150:
53773  str r4,[r7,#0x50] ;@ Save prev PC + 2
53774  str r5,[r7,#0x5c] ;@ Save Cycles
53775
53776;@ EaCalc : Get '(a0)' into r11:
53777  and r2,r8,#0x000f
53778  orr r2,r2,#0x8 ;@ A0-7
53779  ldr r11,[r7,r2,lsl #2]
53780;@ EaRead : Read '(a0)' (address in r11) into r0:
53781  str r4,[r7,#0x40] ;@ Save PC
53782  bic r0,r11,#0xff000000
53783  bl m68k_read16 ;@ Call read16(r0) handler
53784
53785;@ EaCalc : Get register index into r1:
53786  and r1,r8,#0x0e00
53787;@ EaRead : Read register[r1] into r1:
53788  ldr r1,[r7,r1,lsr #7]
53789
53790;@ Do arithmetic:
53791  mov r0,r0,asl #16
53792  ands r1,r0,r1,asl #16
53793  and r10,r1,#0x80000000 ;@ r10=N_flag
53794  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53795
53796;@ Save result:
53797  mov r1,r1,asr #16
53798;@ EaWrite: Write r1 into '(a0)' (address in r11):
53799  uxth r1,r1 ;@ zero extend
53800  bic r0,r11,#0xff000000
53801  bl m68k_write16 ;@ Call write16(r0,r1) handler
53802
53803  ldr r5,[r7,#0x5c] ;@ Load Cycles
53804  ldrh r8,[r4],#2 ;@ Fetch next opcode
53805  subs r5,r5,#12 ;@ Subtract cycles
53806  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53807  b CycloneEnd
53808
53809;@ ---------- [c158] and.w d0, (a0)+ uses Opc158 ----------
53810Opc158:
53811  str r4,[r7,#0x50] ;@ Save prev PC + 2
53812  str r5,[r7,#0x5c] ;@ Save Cycles
53813
53814;@ EaCalc : Get '(a0)+' into r11:
53815  and r2,r8,#0x000f
53816  ldr r11,[r7,r2,lsl #2]
53817  add r3,r11,#2 ;@ Post-increment An
53818  str r3,[r7,r2,lsl #2]
53819;@ EaRead : Read '(a0)+' (address in r11) into r0:
53820  str r4,[r7,#0x40] ;@ Save PC
53821  bic r0,r11,#0xff000000
53822  bl m68k_read16 ;@ Call read16(r0) handler
53823
53824;@ EaCalc : Get register index into r1:
53825  and r1,r8,#0x0e00
53826;@ EaRead : Read register[r1] into r1:
53827  ldr r1,[r7,r1,lsr #7]
53828
53829;@ Do arithmetic:
53830  mov r0,r0,asl #16
53831  ands r1,r0,r1,asl #16
53832  and r10,r1,#0x80000000 ;@ r10=N_flag
53833  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53834
53835;@ Save result:
53836  mov r1,r1,asr #16
53837;@ EaWrite: Write r1 into '(a0)+' (address in r11):
53838  uxth r1,r1 ;@ zero extend
53839  bic r0,r11,#0xff000000
53840  bl m68k_write16 ;@ Call write16(r0,r1) handler
53841
53842  ldr r5,[r7,#0x5c] ;@ Load Cycles
53843  ldrh r8,[r4],#2 ;@ Fetch next opcode
53844  subs r5,r5,#12 ;@ Subtract cycles
53845  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53846  b CycloneEnd
53847
53848;@ ---------- [c160] and.w d0, -(a0) uses Opc160 ----------
53849Opc160:
53850  str r4,[r7,#0x50] ;@ Save prev PC + 2
53851  str r5,[r7,#0x5c] ;@ Save Cycles
53852
53853;@ EaCalc : Get '-(a0)' into r11:
53854  and r2,r8,#0x000f
53855  orr r2,r2,#0x8 ;@ A0-7
53856  ldr r11,[r7,r2,lsl #2]
53857  sub r11,r11,#2 ;@ Pre-decrement An
53858  str r11,[r7,r2,lsl #2]
53859;@ EaRead : Read '-(a0)' (address in r11) into r0:
53860  str r4,[r7,#0x40] ;@ Save PC
53861  bic r0,r11,#0xff000000
53862  bl m68k_read16 ;@ Call read16(r0) handler
53863
53864;@ EaCalc : Get register index into r1:
53865  and r1,r8,#0x0e00
53866;@ EaRead : Read register[r1] into r1:
53867  ldr r1,[r7,r1,lsr #7]
53868
53869;@ Do arithmetic:
53870  mov r0,r0,asl #16
53871  ands r1,r0,r1,asl #16
53872  and r10,r1,#0x80000000 ;@ r10=N_flag
53873  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53874
53875;@ Save result:
53876  mov r1,r1,asr #16
53877;@ EaWrite: Write r1 into '-(a0)' (address in r11):
53878  uxth r1,r1 ;@ zero extend
53879  bic r0,r11,#0xff000000
53880  bl m68k_write16 ;@ Call write16(r0,r1) handler
53881
53882  ldr r5,[r7,#0x5c] ;@ Load Cycles
53883  ldrh r8,[r4],#2 ;@ Fetch next opcode
53884  subs r5,r5,#14 ;@ Subtract cycles
53885  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53886  b CycloneEnd
53887
53888;@ ---------- [c168] and.w d0, ($3333,a0) uses Opc168 ----------
53889Opc168:
53890  str r4,[r7,#0x50] ;@ Save prev PC + 2
53891  str r5,[r7,#0x5c] ;@ Save Cycles
53892
53893;@ EaCalc : Get '($3333,a0)' into r11:
53894  ldrsh r0,[r4],#2 ;@ Fetch offset
53895  and r2,r8,#0x000f
53896  ldr r2,[r7,r2,lsl #2]
53897  add r11,r0,r2 ;@ Add on offset
53898;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
53899  str r4,[r7,#0x40] ;@ Save PC
53900  bic r0,r11,#0xff000000
53901  bl m68k_read16 ;@ Call read16(r0) handler
53902
53903;@ EaCalc : Get register index into r1:
53904  and r1,r8,#0x0e00
53905;@ EaRead : Read register[r1] into r1:
53906  ldr r1,[r7,r1,lsr #7]
53907
53908;@ Do arithmetic:
53909  mov r0,r0,asl #16
53910  ands r1,r0,r1,asl #16
53911  and r10,r1,#0x80000000 ;@ r10=N_flag
53912  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53913
53914;@ Save result:
53915  mov r1,r1,asr #16
53916;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
53917  uxth r1,r1 ;@ zero extend
53918  bic r0,r11,#0xff000000
53919  bl m68k_write16 ;@ Call write16(r0,r1) handler
53920
53921  ldr r5,[r7,#0x5c] ;@ Load Cycles
53922  ldrh r8,[r4],#2 ;@ Fetch next opcode
53923  subs r5,r5,#16 ;@ Subtract cycles
53924  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53925  b CycloneEnd
53926
53927;@ ---------- [c170] and.w d0, ($33,a0,d3.w*2) uses Opc170 ----------
53928Opc170:
53929  str r4,[r7,#0x50] ;@ Save prev PC + 2
53930  str r5,[r7,#0x5c] ;@ Save Cycles
53931
53932;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
53933;@ Get extension word into r3:
53934  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
53935  mov r2,r3,lsr #10
53936  tst r3,#0x0800 ;@ Is Rn Word or Long
53937  and r2,r2,#0x3c ;@ r2=Index of Rn
53938  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
53939  ldrne   r2,[r7,r2] ;@ r2=Rn.l
53940  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
53941  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
53942  and r2,r8,#0x000f
53943  orr r2,r2,#0x8 ;@ A0-7
53944  ldr r2,[r7,r2,lsl #2]
53945  add r11,r2,r3 ;@ r11=Disp+An+Rn
53946;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
53947  str r4,[r7,#0x40] ;@ Save PC
53948  bic r0,r11,#0xff000000
53949  bl m68k_read16 ;@ Call read16(r0) handler
53950
53951;@ EaCalc : Get register index into r1:
53952  and r1,r8,#0x0e00
53953;@ EaRead : Read register[r1] into r1:
53954  ldr r1,[r7,r1,lsr #7]
53955
53956;@ Do arithmetic:
53957  mov r0,r0,asl #16
53958  ands r1,r0,r1,asl #16
53959  and r10,r1,#0x80000000 ;@ r10=N_flag
53960  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53961
53962;@ Save result:
53963  mov r1,r1,asr #16
53964;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
53965  uxth r1,r1 ;@ zero extend
53966  bic r0,r11,#0xff000000
53967  bl m68k_write16 ;@ Call write16(r0,r1) handler
53968
53969  ldr r5,[r7,#0x5c] ;@ Load Cycles
53970  ldrh r8,[r4],#2 ;@ Fetch next opcode
53971  subs r5,r5,#18 ;@ Subtract cycles
53972  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53973  b CycloneEnd
53974
53975;@ ---------- [c178] and.w d0, $3333.w uses Opc178 ----------
53976Opc178:
53977  str r4,[r7,#0x50] ;@ Save prev PC + 2
53978  str r5,[r7,#0x5c] ;@ Save Cycles
53979
53980;@ EaCalc : Get '$3333.w' into r11:
53981  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
53982;@ EaRead : Read '$3333.w' (address in r11) into r0:
53983  str r4,[r7,#0x40] ;@ Save PC
53984  bic r0,r11,#0xff000000
53985  bl m68k_read16 ;@ Call read16(r0) handler
53986
53987;@ EaCalc : Get register index into r1:
53988  and r1,r8,#0x0e00
53989;@ EaRead : Read register[r1] into r1:
53990  ldr r1,[r7,r1,lsr #7]
53991
53992;@ Do arithmetic:
53993  mov r0,r0,asl #16
53994  ands r1,r0,r1,asl #16
53995  and r10,r1,#0x80000000 ;@ r10=N_flag
53996  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53997
53998;@ Save result:
53999  mov r1,r1,asr #16
54000;@ EaWrite: Write r1 into '$3333.w' (address in r11):
54001  uxth r1,r1 ;@ zero extend
54002  bic r0,r11,#0xff000000
54003  bl m68k_write16 ;@ Call write16(r0,r1) handler
54004
54005  ldr r5,[r7,#0x5c] ;@ Load Cycles
54006  ldrh r8,[r4],#2 ;@ Fetch next opcode
54007  subs r5,r5,#16 ;@ Subtract cycles
54008  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54009  b CycloneEnd
54010
54011;@ ---------- [c179] and.w d0, $33333333.l uses Opc179 ----------
54012Opc179:
54013  str r4,[r7,#0x50] ;@ Save prev PC + 2
54014  str r5,[r7,#0x5c] ;@ Save Cycles
54015
54016;@ EaCalc : Get '$33333333.l' into r11:
54017  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
54018  ldrh r0,[r4],#2
54019  orr r11,r0,r2,lsl #16
54020;@ EaRead : Read '$33333333.l' (address in r11) into r0:
54021  str r4,[r7,#0x40] ;@ Save PC
54022  bic r0,r11,#0xff000000
54023  bl m68k_read16 ;@ Call read16(r0) handler
54024
54025;@ EaCalc : Get register index into r1:
54026  and r1,r8,#0x0e00
54027;@ EaRead : Read register[r1] into r1:
54028  ldr r1,[r7,r1,lsr #7]
54029
54030;@ Do arithmetic:
54031  mov r0,r0,asl #16
54032  ands r1,r0,r1,asl #16
54033  and r10,r1,#0x80000000 ;@ r10=N_flag
54034  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54035
54036;@ Save result:
54037  mov r1,r1,asr #16
54038;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
54039  uxth r1,r1 ;@ zero extend
54040  bic r0,r11,#0xff000000
54041  bl m68k_write16 ;@ Call write16(r0,r1) handler
54042
54043  ldr r5,[r7,#0x5c] ;@ Load Cycles
54044  ldrh r8,[r4],#2 ;@ Fetch next opcode
54045  subs r5,r5,#20 ;@ Subtract cycles
54046  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54047  b CycloneEnd
54048
54049;@ ---------- [c188] exg a0, d0 uses Opc188 ----------
54050Opc188:
54051  and r2,r8,#0x0e00 ;@ Find T register
54052  and r3,r8,#0x000f ;@ Find S register
54053
54054  ldr r0,[r7,r2,lsr #7] ;@ Get T
54055  ldr r1,[r7,r3,lsl #2] ;@ Get S
54056
54057  str r0,[r7,r3,lsl #2] ;@ T->S
54058  str r1,[r7,r2,lsr #7] ;@ S->T
54059
54060  ldrh r8,[r4],#2 ;@ Fetch next opcode
54061  subs r5,r5,#6 ;@ Subtract cycles
54062  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54063  b CycloneEnd
54064
54065;@ ---------- [c190] and.l d0, (a0) uses Opc190 ----------
54066Opc190:
54067  str r4,[r7,#0x50] ;@ Save prev PC + 2
54068  str r5,[r7,#0x5c] ;@ Save Cycles
54069
54070;@ EaCalc : Get '(a0)' into r11:
54071  and r2,r8,#0x000f
54072  orr r2,r2,#0x8 ;@ A0-7
54073  ldr r11,[r7,r2,lsl #2]
54074;@ EaRead : Read '(a0)' (address in r11) into r0:
54075  str r4,[r7,#0x40] ;@ Save PC
54076  bic r0,r11,#0xff000000
54077  bl m68k_read32 ;@ Call read32(r0) handler
54078
54079;@ EaCalc : Get register index into r1:
54080  and r1,r8,#0x0e00
54081;@ EaRead : Read register[r1] into r1:
54082  ldr r1,[r7,r1,lsr #7]
54083
54084;@ Do arithmetic:
54085  ands r1,r0,r1
54086  and r10,r1,#0x80000000 ;@ r10=N_flag
54087  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54088
54089;@ Save result:
54090;@ EaWrite: Write r1 into '(a0)' (address in r11):
54091  bic r0,r11,#0xff000000
54092  bl m68k_write32 ;@ Call write32(r0,r1) handler
54093
54094  ldr r5,[r7,#0x5c] ;@ Load Cycles
54095  ldrh r8,[r4],#2 ;@ Fetch next opcode
54096  subs r5,r5,#20 ;@ Subtract cycles
54097  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54098  b CycloneEnd
54099
54100;@ ---------- [c198] and.l d0, (a0)+ uses Opc198 ----------
54101Opc198:
54102  str r4,[r7,#0x50] ;@ Save prev PC + 2
54103  str r5,[r7,#0x5c] ;@ Save Cycles
54104
54105;@ EaCalc : Get '(a0)+' into r11:
54106  and r2,r8,#0x000f
54107  ldr r11,[r7,r2,lsl #2]
54108  add r3,r11,#4 ;@ Post-increment An
54109  str r3,[r7,r2,lsl #2]
54110;@ EaRead : Read '(a0)+' (address in r11) into r0:
54111  str r4,[r7,#0x40] ;@ Save PC
54112  bic r0,r11,#0xff000000
54113  bl m68k_read32 ;@ Call read32(r0) handler
54114
54115;@ EaCalc : Get register index into r1:
54116  and r1,r8,#0x0e00
54117;@ EaRead : Read register[r1] into r1:
54118  ldr r1,[r7,r1,lsr #7]
54119
54120;@ Do arithmetic:
54121  ands r1,r0,r1
54122  and r10,r1,#0x80000000 ;@ r10=N_flag
54123  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54124
54125;@ Save result:
54126;@ EaWrite: Write r1 into '(a0)+' (address in r11):
54127  bic r0,r11,#0xff000000
54128  bl m68k_write32 ;@ Call write32(r0,r1) handler
54129
54130  ldr r5,[r7,#0x5c] ;@ Load Cycles
54131  ldrh r8,[r4],#2 ;@ Fetch next opcode
54132  subs r5,r5,#20 ;@ Subtract cycles
54133  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54134  b CycloneEnd
54135
54136;@ ---------- [c1a0] and.l d0, -(a0) uses Opc1a0 ----------
54137Opc1a0:
54138  str r4,[r7,#0x50] ;@ Save prev PC + 2
54139  str r5,[r7,#0x5c] ;@ Save Cycles
54140
54141;@ EaCalc : Get '-(a0)' into r11:
54142  and r2,r8,#0x000f
54143  orr r2,r2,#0x8 ;@ A0-7
54144  ldr r11,[r7,r2,lsl #2]
54145  sub r11,r11,#4 ;@ Pre-decrement An
54146  str r11,[r7,r2,lsl #2]
54147;@ EaRead : Read '-(a0)' (address in r11) into r0:
54148  str r4,[r7,#0x40] ;@ Save PC
54149  bic r0,r11,#0xff000000
54150  bl m68k_read32 ;@ Call read32(r0) handler
54151
54152;@ EaCalc : Get register index into r1:
54153  and r1,r8,#0x0e00
54154;@ EaRead : Read register[r1] into r1:
54155  ldr r1,[r7,r1,lsr #7]
54156
54157;@ Do arithmetic:
54158  ands r1,r0,r1
54159  and r10,r1,#0x80000000 ;@ r10=N_flag
54160  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54161
54162;@ Save result:
54163;@ EaWrite: Write r1 into '-(a0)' (address in r11):
54164  bic r0,r11,#0xff000000
54165  bl m68k_write32 ;@ Call write32(r0,r1) handler
54166
54167  ldr r5,[r7,#0x5c] ;@ Load Cycles
54168  ldrh r8,[r4],#2 ;@ Fetch next opcode
54169  subs r5,r5,#22 ;@ Subtract cycles
54170  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54171  b CycloneEnd
54172
54173;@ ---------- [c1a8] and.l d0, ($3333,a0) uses Opc1a8 ----------
54174Opc1a8:
54175  str r4,[r7,#0x50] ;@ Save prev PC + 2
54176  str r5,[r7,#0x5c] ;@ Save Cycles
54177
54178;@ EaCalc : Get '($3333,a0)' into r11:
54179  ldrsh r0,[r4],#2 ;@ Fetch offset
54180  and r2,r8,#0x000f
54181  ldr r2,[r7,r2,lsl #2]
54182  add r11,r0,r2 ;@ Add on offset
54183;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
54184  str r4,[r7,#0x40] ;@ Save PC
54185  bic r0,r11,#0xff000000
54186  bl m68k_read32 ;@ Call read32(r0) handler
54187
54188;@ EaCalc : Get register index into r1:
54189  and r1,r8,#0x0e00
54190;@ EaRead : Read register[r1] into r1:
54191  ldr r1,[r7,r1,lsr #7]
54192
54193;@ Do arithmetic:
54194  ands r1,r0,r1
54195  and r10,r1,#0x80000000 ;@ r10=N_flag
54196  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54197
54198;@ Save result:
54199;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
54200  bic r0,r11,#0xff000000
54201  bl m68k_write32 ;@ Call write32(r0,r1) handler
54202
54203  ldr r5,[r7,#0x5c] ;@ Load Cycles
54204  ldrh r8,[r4],#2 ;@ Fetch next opcode
54205  subs r5,r5,#24 ;@ Subtract cycles
54206  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54207  b CycloneEnd
54208
54209;@ ---------- [c1b0] and.l d0, ($33,a0,d3.w*2) uses Opc1b0 ----------
54210Opc1b0:
54211  str r4,[r7,#0x50] ;@ Save prev PC + 2
54212  str r5,[r7,#0x5c] ;@ Save Cycles
54213
54214;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
54215;@ Get extension word into r3:
54216  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
54217  mov r2,r3,lsr #10
54218  tst r3,#0x0800 ;@ Is Rn Word or Long
54219  and r2,r2,#0x3c ;@ r2=Index of Rn
54220  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
54221  ldrne   r2,[r7,r2] ;@ r2=Rn.l
54222  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
54223  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
54224  and r2,r8,#0x000f
54225  orr r2,r2,#0x8 ;@ A0-7
54226  ldr r2,[r7,r2,lsl #2]
54227  add r11,r2,r3 ;@ r11=Disp+An+Rn
54228;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
54229  str r4,[r7,#0x40] ;@ Save PC
54230  bic r0,r11,#0xff000000
54231  bl m68k_read32 ;@ Call read32(r0) handler
54232
54233;@ EaCalc : Get register index into r1:
54234  and r1,r8,#0x0e00
54235;@ EaRead : Read register[r1] into r1:
54236  ldr r1,[r7,r1,lsr #7]
54237
54238;@ Do arithmetic:
54239  ands r1,r0,r1
54240  and r10,r1,#0x80000000 ;@ r10=N_flag
54241  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54242
54243;@ Save result:
54244;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
54245  bic r0,r11,#0xff000000
54246  bl m68k_write32 ;@ Call write32(r0,r1) handler
54247
54248  ldr r5,[r7,#0x5c] ;@ Load Cycles
54249  ldrh r8,[r4],#2 ;@ Fetch next opcode
54250  subs r5,r5,#26 ;@ Subtract cycles
54251  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54252  b CycloneEnd
54253
54254;@ ---------- [c1b8] and.l d0, $3333.w uses Opc1b8 ----------
54255Opc1b8:
54256  str r4,[r7,#0x50] ;@ Save prev PC + 2
54257  str r5,[r7,#0x5c] ;@ Save Cycles
54258
54259;@ EaCalc : Get '$3333.w' into r11:
54260  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
54261;@ EaRead : Read '$3333.w' (address in r11) into r0:
54262  str r4,[r7,#0x40] ;@ Save PC
54263  bic r0,r11,#0xff000000
54264  bl m68k_read32 ;@ Call read32(r0) handler
54265
54266;@ EaCalc : Get register index into r1:
54267  and r1,r8,#0x0e00
54268;@ EaRead : Read register[r1] into r1:
54269  ldr r1,[r7,r1,lsr #7]
54270
54271;@ Do arithmetic:
54272  ands r1,r0,r1
54273  and r10,r1,#0x80000000 ;@ r10=N_flag
54274  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54275
54276;@ Save result:
54277;@ EaWrite: Write r1 into '$3333.w' (address in r11):
54278  bic r0,r11,#0xff000000
54279  bl m68k_write32 ;@ Call write32(r0,r1) handler
54280
54281  ldr r5,[r7,#0x5c] ;@ Load Cycles
54282  ldrh r8,[r4],#2 ;@ Fetch next opcode
54283  subs r5,r5,#24 ;@ Subtract cycles
54284  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54285  b CycloneEnd
54286
54287;@ ---------- [c1b9] and.l d0, $33333333.l uses Opc1b9 ----------
54288Opc1b9:
54289  str r4,[r7,#0x50] ;@ Save prev PC + 2
54290  str r5,[r7,#0x5c] ;@ Save Cycles
54291
54292;@ EaCalc : Get '$33333333.l' into r11:
54293  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
54294  ldrh r0,[r4],#2
54295  orr r11,r0,r2,lsl #16
54296;@ EaRead : Read '$33333333.l' (address in r11) into r0:
54297  str r4,[r7,#0x40] ;@ Save PC
54298  bic r0,r11,#0xff000000
54299  bl m68k_read32 ;@ Call read32(r0) handler
54300
54301;@ EaCalc : Get register index into r1:
54302  and r1,r8,#0x0e00
54303;@ EaRead : Read register[r1] into r1:
54304  ldr r1,[r7,r1,lsr #7]
54305
54306;@ Do arithmetic:
54307  ands r1,r0,r1
54308  and r10,r1,#0x80000000 ;@ r10=N_flag
54309  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54310
54311;@ Save result:
54312;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
54313  bic r0,r11,#0xff000000
54314  bl m68k_write32 ;@ Call write32(r0,r1) handler
54315
54316  ldr r5,[r7,#0x5c] ;@ Load Cycles
54317  ldrh r8,[r4],#2 ;@ Fetch next opcode
54318  subs r5,r5,#28 ;@ Subtract cycles
54319  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54320  b CycloneEnd
54321
54322;@ ---------- [c1c0] muls.w d0, d0 uses Opc1c0 ----------
54323Opc1c0:
54324;@ EaCalc : Get register index into r0:
54325  and r0,r8,#0x000f
54326;@ EaRead : Read register[r0] into r0:
54327  ldr r0,[r7,r0,lsl #2]
54328
54329;@ EaCalc : Get register index into r11:
54330  and r11,r8,#0x0e00
54331;@ EaRead : Read register[r11] into r2:
54332  ldr r2,[r7,r11,lsr #7]
54333
54334  movs r1,r0,asl #16
54335;@ Get 16-bit signs right:
54336  mov r0,r1,asr #16
54337  mov r2,r2,lsl #16
54338  mov r2,r2,asr #16
54339
54340  muls r1,r2,r0
54341  and r10,r1,#0x80000000 ;@ r10=N_flag
54342  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54343
54344;@ EaWrite: r1 into register[r11]:
54345  str r1,[r7,r11,lsr #7]
54346
54347  ldrh r8,[r4],#2 ;@ Fetch next opcode
54348  subs r5,r5,#54 ;@ Subtract cycles
54349  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54350  b CycloneEnd
54351
54352;@ ---------- [c1d0] muls.w (a0), d0 uses Opc1d0 ----------
54353Opc1d0:
54354  str r4,[r7,#0x50] ;@ Save prev PC + 2
54355  str r5,[r7,#0x5c] ;@ Save Cycles
54356
54357;@ EaCalc : Get '(a0)' into r0:
54358  and r2,r8,#0x000f
54359  orr r2,r2,#0x8 ;@ A0-7
54360  ldr r0,[r7,r2,lsl #2]
54361;@ EaRead : Read '(a0)' (address in r0) into r0:
54362  str r4,[r7,#0x40] ;@ Save PC
54363  bic r0,r0,#0xff000000
54364  bl m68k_read16 ;@ Call read16(r0) handler
54365
54366;@ EaCalc : Get register index into r11:
54367  and r11,r8,#0x0e00
54368;@ EaRead : Read register[r11] into r2:
54369  ldr r2,[r7,r11,lsr #7]
54370
54371  movs r1,r0,asl #16
54372;@ Get 16-bit signs right:
54373  mov r0,r1,asr #16
54374  mov r2,r2,lsl #16
54375  mov r2,r2,asr #16
54376
54377  muls r1,r2,r0
54378  and r10,r1,#0x80000000 ;@ r10=N_flag
54379  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54380
54381;@ EaWrite: r1 into register[r11]:
54382  str r1,[r7,r11,lsr #7]
54383
54384  ldr r5,[r7,#0x5c] ;@ Load Cycles
54385  ldrh r8,[r4],#2 ;@ Fetch next opcode
54386  subs r5,r5,#58 ;@ Subtract cycles
54387  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54388  b CycloneEnd
54389
54390;@ ---------- [c1d8] muls.w (a0)+, d0 uses Opc1d8 ----------
54391Opc1d8:
54392  str r4,[r7,#0x50] ;@ Save prev PC + 2
54393  str r5,[r7,#0x5c] ;@ Save Cycles
54394
54395;@ EaCalc : Get '(a0)+' into r0:
54396  and r2,r8,#0x000f
54397  ldr r0,[r7,r2,lsl #2]
54398  add r3,r0,#2 ;@ Post-increment An
54399  str r3,[r7,r2,lsl #2]
54400;@ EaRead : Read '(a0)+' (address in r0) into r0:
54401  str r4,[r7,#0x40] ;@ Save PC
54402  bic r0,r0,#0xff000000
54403  bl m68k_read16 ;@ Call read16(r0) handler
54404
54405;@ EaCalc : Get register index into r11:
54406  and r11,r8,#0x0e00
54407;@ EaRead : Read register[r11] into r2:
54408  ldr r2,[r7,r11,lsr #7]
54409
54410  movs r1,r0,asl #16
54411;@ Get 16-bit signs right:
54412  mov r0,r1,asr #16
54413  mov r2,r2,lsl #16
54414  mov r2,r2,asr #16
54415
54416  muls r1,r2,r0
54417  and r10,r1,#0x80000000 ;@ r10=N_flag
54418  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54419
54420;@ EaWrite: r1 into register[r11]:
54421  str r1,[r7,r11,lsr #7]
54422
54423  ldr r5,[r7,#0x5c] ;@ Load Cycles
54424  ldrh r8,[r4],#2 ;@ Fetch next opcode
54425  subs r5,r5,#58 ;@ Subtract cycles
54426  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54427  b CycloneEnd
54428
54429;@ ---------- [c1e0] muls.w -(a0), d0 uses Opc1e0 ----------
54430Opc1e0:
54431  str r4,[r7,#0x50] ;@ Save prev PC + 2
54432  str r5,[r7,#0x5c] ;@ Save Cycles
54433
54434;@ EaCalc : Get '-(a0)' into r0:
54435  and r2,r8,#0x000f
54436  orr r2,r2,#0x8 ;@ A0-7
54437  ldr r0,[r7,r2,lsl #2]
54438  sub r0,r0,#2 ;@ Pre-decrement An
54439  str r0,[r7,r2,lsl #2]
54440;@ EaRead : Read '-(a0)' (address in r0) into r0:
54441  str r4,[r7,#0x40] ;@ Save PC
54442  bic r0,r0,#0xff000000
54443  bl m68k_read16 ;@ Call read16(r0) handler
54444
54445;@ EaCalc : Get register index into r11:
54446  and r11,r8,#0x0e00
54447;@ EaRead : Read register[r11] into r2:
54448  ldr r2,[r7,r11,lsr #7]
54449
54450  movs r1,r0,asl #16
54451;@ Get 16-bit signs right:
54452  mov r0,r1,asr #16
54453  mov r2,r2,lsl #16
54454  mov r2,r2,asr #16
54455
54456  muls r1,r2,r0
54457  and r10,r1,#0x80000000 ;@ r10=N_flag
54458  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54459
54460;@ EaWrite: r1 into register[r11]:
54461  str r1,[r7,r11,lsr #7]
54462
54463  ldr r5,[r7,#0x5c] ;@ Load Cycles
54464  ldrh r8,[r4],#2 ;@ Fetch next opcode
54465  subs r5,r5,#60 ;@ Subtract cycles
54466  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54467  b CycloneEnd
54468
54469;@ ---------- [c1e8] muls.w ($3333,a0), d0 uses Opc1e8 ----------
54470Opc1e8:
54471  str r4,[r7,#0x50] ;@ Save prev PC + 2
54472  str r5,[r7,#0x5c] ;@ Save Cycles
54473
54474;@ EaCalc : Get '($3333,a0)' into r0:
54475  ldrsh r0,[r4],#2 ;@ Fetch offset
54476  and r2,r8,#0x000f
54477  ldr r2,[r7,r2,lsl #2]
54478  add r0,r0,r2 ;@ Add on offset
54479;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
54480  str r4,[r7,#0x40] ;@ Save PC
54481  bic r0,r0,#0xff000000
54482  bl m68k_read16 ;@ Call read16(r0) handler
54483
54484;@ EaCalc : Get register index into r11:
54485  and r11,r8,#0x0e00
54486;@ EaRead : Read register[r11] into r2:
54487  ldr r2,[r7,r11,lsr #7]
54488
54489  movs r1,r0,asl #16
54490;@ Get 16-bit signs right:
54491  mov r0,r1,asr #16
54492  mov r2,r2,lsl #16
54493  mov r2,r2,asr #16
54494
54495  muls r1,r2,r0
54496  and r10,r1,#0x80000000 ;@ r10=N_flag
54497  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54498
54499;@ EaWrite: r1 into register[r11]:
54500  str r1,[r7,r11,lsr #7]
54501
54502  ldr r5,[r7,#0x5c] ;@ Load Cycles
54503  ldrh r8,[r4],#2 ;@ Fetch next opcode
54504  subs r5,r5,#62 ;@ Subtract cycles
54505  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54506  b CycloneEnd
54507
54508;@ ---------- [c1f0] muls.w ($33,a0,d3.w*2), d0 uses Opc1f0 ----------
54509Opc1f0:
54510  str r4,[r7,#0x50] ;@ Save prev PC + 2
54511  str r5,[r7,#0x5c] ;@ Save Cycles
54512
54513;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
54514;@ Get extension word into r3:
54515  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
54516  mov r2,r3,lsr #10
54517  tst r3,#0x0800 ;@ Is Rn Word or Long
54518  and r2,r2,#0x3c ;@ r2=Index of Rn
54519  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
54520  ldrne   r2,[r7,r2] ;@ r2=Rn.l
54521  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
54522  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
54523  and r2,r8,#0x000f
54524  orr r2,r2,#0x8 ;@ A0-7
54525  ldr r2,[r7,r2,lsl #2]
54526  add r0,r2,r3 ;@ r0=Disp+An+Rn
54527;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
54528  str r4,[r7,#0x40] ;@ Save PC
54529  bic r0,r0,#0xff000000
54530  bl m68k_read16 ;@ Call read16(r0) handler
54531
54532;@ EaCalc : Get register index into r11:
54533  and r11,r8,#0x0e00
54534;@ EaRead : Read register[r11] into r2:
54535  ldr r2,[r7,r11,lsr #7]
54536
54537  movs r1,r0,asl #16
54538;@ Get 16-bit signs right:
54539  mov r0,r1,asr #16
54540  mov r2,r2,lsl #16
54541  mov r2,r2,asr #16
54542
54543  muls r1,r2,r0
54544  and r10,r1,#0x80000000 ;@ r10=N_flag
54545  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54546
54547;@ EaWrite: r1 into register[r11]:
54548  str r1,[r7,r11,lsr #7]
54549
54550  ldr r5,[r7,#0x5c] ;@ Load Cycles
54551  ldrh r8,[r4],#2 ;@ Fetch next opcode
54552  subs r5,r5,#64 ;@ Subtract cycles
54553  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54554  b CycloneEnd
54555
54556;@ ---------- [c1f8] muls.w $3333.w, d0 uses Opc1f8 ----------
54557Opc1f8:
54558  str r4,[r7,#0x50] ;@ Save prev PC + 2
54559  str r5,[r7,#0x5c] ;@ Save Cycles
54560
54561;@ EaCalc : Get '$3333.w' into r0:
54562  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
54563;@ EaRead : Read '$3333.w' (address in r0) into r0:
54564  str r4,[r7,#0x40] ;@ Save PC
54565  bic r0,r0,#0xff000000
54566  bl m68k_read16 ;@ Call read16(r0) handler
54567
54568;@ EaCalc : Get register index into r11:
54569  and r11,r8,#0x0e00
54570;@ EaRead : Read register[r11] into r2:
54571  ldr r2,[r7,r11,lsr #7]
54572
54573  movs r1,r0,asl #16
54574;@ Get 16-bit signs right:
54575  mov r0,r1,asr #16
54576  mov r2,r2,lsl #16
54577  mov r2,r2,asr #16
54578
54579  muls r1,r2,r0
54580  and r10,r1,#0x80000000 ;@ r10=N_flag
54581  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54582
54583;@ EaWrite: r1 into register[r11]:
54584  str r1,[r7,r11,lsr #7]
54585
54586  ldr r5,[r7,#0x5c] ;@ Load Cycles
54587  ldrh r8,[r4],#2 ;@ Fetch next opcode
54588  subs r5,r5,#62 ;@ Subtract cycles
54589  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54590  b CycloneEnd
54591
54592;@ ---------- [c1f9] muls.w $33333333.l, d0 uses Opc1f9 ----------
54593Opc1f9:
54594  str r4,[r7,#0x50] ;@ Save prev PC + 2
54595  str r5,[r7,#0x5c] ;@ Save Cycles
54596
54597;@ EaCalc : Get '$33333333.l' into r0:
54598  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
54599  ldrh r0,[r4],#2
54600  orr r0,r0,r2,lsl #16
54601;@ EaRead : Read '$33333333.l' (address in r0) into r0:
54602  str r4,[r7,#0x40] ;@ Save PC
54603  bic r0,r0,#0xff000000
54604  bl m68k_read16 ;@ Call read16(r0) handler
54605
54606;@ EaCalc : Get register index into r11:
54607  and r11,r8,#0x0e00
54608;@ EaRead : Read register[r11] into r2:
54609  ldr r2,[r7,r11,lsr #7]
54610
54611  movs r1,r0,asl #16
54612;@ Get 16-bit signs right:
54613  mov r0,r1,asr #16
54614  mov r2,r2,lsl #16
54615  mov r2,r2,asr #16
54616
54617  muls r1,r2,r0
54618  and r10,r1,#0x80000000 ;@ r10=N_flag
54619  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54620
54621;@ EaWrite: r1 into register[r11]:
54622  str r1,[r7,r11,lsr #7]
54623
54624  ldr r5,[r7,#0x5c] ;@ Load Cycles
54625  ldrh r8,[r4],#2 ;@ Fetch next opcode
54626  subs r5,r5,#66 ;@ Subtract cycles
54627  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54628  b CycloneEnd
54629
54630;@ ---------- [c1fa] muls.w ($3333,pc), d0; =3335 uses Opc1fa ----------
54631Opc1fa:
54632  str r4,[r7,#0x50] ;@ Save prev PC + 2
54633  str r5,[r7,#0x5c] ;@ Save Cycles
54634
54635;@ EaCalc : Get '($3333,pc)' into r0:
54636  ldr r0,[r7,#0x60] ;@ Get Memory base
54637  sub r0,r4,r0 ;@ Real PC
54638  ldrsh r2,[r4],#2 ;@ Fetch extension
54639  add r0,r2,r0 ;@ ($nn,PC)
54640;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
54641  str r4,[r7,#0x40] ;@ Save PC
54642  bic r0,r0,#0xff000000
54643  bl m68k_fetch16 ;@ Call fetch16(r0) handler
54644
54645;@ EaCalc : Get register index into r11:
54646  and r11,r8,#0x0e00
54647;@ EaRead : Read register[r11] into r2:
54648  ldr r2,[r7,r11,lsr #7]
54649
54650  movs r1,r0,asl #16
54651;@ Get 16-bit signs right:
54652  mov r0,r1,asr #16
54653  mov r2,r2,lsl #16
54654  mov r2,r2,asr #16
54655
54656  muls r1,r2,r0
54657  and r10,r1,#0x80000000 ;@ r10=N_flag
54658  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54659
54660;@ EaWrite: r1 into register[r11]:
54661  str r1,[r7,r11,lsr #7]
54662
54663  ldr r5,[r7,#0x5c] ;@ Load Cycles
54664  ldrh r8,[r4],#2 ;@ Fetch next opcode
54665  subs r5,r5,#62 ;@ Subtract cycles
54666  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54667  b CycloneEnd
54668
54669;@ ---------- [c1fb] muls.w ($33,pc,d3.w*2), d0; =35 uses Opc1fb ----------
54670Opc1fb:
54671  str r4,[r7,#0x50] ;@ Save prev PC + 2
54672  str r5,[r7,#0x5c] ;@ Save Cycles
54673
54674;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
54675  ldr r0,[r7,#0x60] ;@ Get Memory base
54676  ldrh r3,[r4] ;@ Get extension word
54677  sub r0,r4,r0 ;@ r0=PC
54678  add r4,r4,#2
54679  mov r2,r3,lsr #10
54680  tst r3,#0x0800 ;@ Is Rn Word or Long
54681  and r2,r2,#0x3c ;@ r2=Index of Rn
54682  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
54683  ldrne   r2,[r7,r2] ;@ r2=Rn.l
54684  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
54685  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
54686  add r0,r2,r0 ;@ r0=Disp+PC+Rn
54687;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
54688  str r4,[r7,#0x40] ;@ Save PC
54689  bic r0,r0,#0xff000000
54690  bl m68k_fetch16 ;@ Call fetch16(r0) handler
54691
54692;@ EaCalc : Get register index into r11:
54693  and r11,r8,#0x0e00
54694;@ EaRead : Read register[r11] into r2:
54695  ldr r2,[r7,r11,lsr #7]
54696
54697  movs r1,r0,asl #16
54698;@ Get 16-bit signs right:
54699  mov r0,r1,asr #16
54700  mov r2,r2,lsl #16
54701  mov r2,r2,asr #16
54702
54703  muls r1,r2,r0
54704  and r10,r1,#0x80000000 ;@ r10=N_flag
54705  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54706
54707;@ EaWrite: r1 into register[r11]:
54708  str r1,[r7,r11,lsr #7]
54709
54710  ldr r5,[r7,#0x5c] ;@ Load Cycles
54711  ldrh r8,[r4],#2 ;@ Fetch next opcode
54712  subs r5,r5,#64 ;@ Subtract cycles
54713  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54714  b CycloneEnd
54715
54716;@ ---------- [c1fc] muls.w #$3333, d0 uses Opc1fc ----------
54717Opc1fc:
54718;@ EaCalc : Get '#$3333' into r0:
54719  ldrsh r0,[r4],#2 ;@ Fetch immediate value
54720;@ EaRead : Read '#$3333' (address in r0) into r0:
54721
54722;@ EaCalc : Get register index into r11:
54723  and r11,r8,#0x0e00
54724;@ EaRead : Read register[r11] into r2:
54725  ldr r2,[r7,r11,lsr #7]
54726
54727  movs r1,r0,asl #16
54728;@ Get 16-bit signs right:
54729  mov r0,r1,asr #16
54730  mov r2,r2,lsl #16
54731  mov r2,r2,asr #16
54732
54733  muls r1,r2,r0
54734  and r10,r1,#0x80000000 ;@ r10=N_flag
54735  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
54736
54737;@ EaWrite: r1 into register[r11]:
54738  str r1,[r7,r11,lsr #7]
54739
54740  ldrh r8,[r4],#2 ;@ Fetch next opcode
54741  subs r5,r5,#58 ;@ Subtract cycles
54742  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54743  b CycloneEnd
54744
54745;@ ---------- [cf08] abcd -(a0), -(a7) uses Opcf08 ----------
54746Opcf08:
54747  str r4,[r7,#0x50] ;@ Save prev PC + 2
54748  str r5,[r7,#0x5c] ;@ Save Cycles
54749
54750;@ Get src/dest EA vals
54751;@ EaCalc : Get '-(a0)' into r0:
54752  and r2,r8,#0x000f
54753  ldr r0,[r7,r2,lsl #2]
54754  sub r0,r0,#1 ;@ Pre-decrement An
54755  str r0,[r7,r2,lsl #2]
54756;@ EaRead : Read '-(a0)' (address in r0) into r6:
54757  str r4,[r7,#0x40] ;@ Save PC
54758  bic r0,r0,#0xff000000
54759  bl m68k_read8 ;@ Call read8(r0) handler
54760  mov r6,r0,asl #24
54761
54762;@ EaCalc : Get '-(a7)' into r11:
54763  ldr r11,[r7,#0x3c] ;@ A7
54764  sub r11,r11,#2 ;@ Pre-decrement An
54765  str r11,[r7,#0x3c] ;@ A7
54766;@ EaRead : Read '-(a7)' (address in r11) into r0:
54767  bic r0,r11,#0xff000000
54768  bl m68k_read8 ;@ Call read8(r0) handler
54769
54770  mov r1,r0,asl #24
54771
54772  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
54773  ldr r0,[r7,#0x4c] ;@ Get X bit
54774  mov r3,#0x00f00000
54775  and r2,r3,r1,lsr #4
54776  tst r0,#0x20000000
54777  and r0,r3,r6,lsr #4
54778  add r0,r0,r2
54779  addne r0,r0,#0x00100000
54780  cmp r0,#0x00900000
54781  addhi r0,r0,#0x00600000 ;@ Decimal adjust units
54782  mov r2,r1,lsr #28
54783  add r0,r0,r2,lsl #24
54784  mov r2,r6,lsr #28
54785  add r0,r0,r2,lsl #24
54786  cmp r0,#0x09900000
54787  orrhi r10,r10,#0x20000000 ;@ C
54788  subhi r0,r0,#0x0a000000
54789  movs r0,r0,lsl #4
54790  orrmi r10,r10,#0x90000000 ;@ Undefined N+V behavior
54791  bicne r10,r10,#0x40000000 ;@ Z flag
54792  str r10,[r7,#0x4c] ;@ Save X bit
54793
54794;@ EaWrite: Write r0 into '-(a7)' (address in r11):
54795  mov r1,r0,lsr #24
54796  bic r0,r11,#0xff000000
54797  bl m68k_write8 ;@ Call write8(r0,r1) handler
54798
54799  ldr r6,[r7,#0x54]
54800  ldr r5,[r7,#0x5c] ;@ Load Cycles
54801  ldrh r8,[r4],#2 ;@ Fetch next opcode
54802  subs r5,r5,#18 ;@ Subtract cycles
54803  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54804  b CycloneEnd
54805
54806;@ ---------- [cf0f] abcd -(a7), -(a7) uses Opcf0f ----------
54807Opcf0f:
54808  str r4,[r7,#0x50] ;@ Save prev PC + 2
54809  str r5,[r7,#0x5c] ;@ Save Cycles
54810
54811;@ Get src/dest EA vals
54812;@ EaCalc : Get '-(a7)' into r0:
54813  ldr r0,[r7,#0x3c] ;@ A7
54814  sub r0,r0,#2 ;@ Pre-decrement An
54815  str r0,[r7,#0x3c] ;@ A7
54816;@ EaRead : Read '-(a7)' (address in r0) into r6:
54817  str r4,[r7,#0x40] ;@ Save PC
54818  bic r0,r0,#0xff000000
54819  bl m68k_read8 ;@ Call read8(r0) handler
54820  mov r6,r0,asl #24
54821
54822;@ EaCalc : Get '-(a7)' into r11:
54823  ldr r11,[r7,#0x3c] ;@ A7
54824  sub r11,r11,#2 ;@ Pre-decrement An
54825  str r11,[r7,#0x3c] ;@ A7
54826;@ EaRead : Read '-(a7)' (address in r11) into r0:
54827  bic r0,r11,#0xff000000
54828  bl m68k_read8 ;@ Call read8(r0) handler
54829
54830  mov r1,r0,asl #24
54831
54832  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
54833  ldr r0,[r7,#0x4c] ;@ Get X bit
54834  mov r3,#0x00f00000
54835  and r2,r3,r1,lsr #4
54836  tst r0,#0x20000000
54837  and r0,r3,r6,lsr #4
54838  add r0,r0,r2
54839  addne r0,r0,#0x00100000
54840  cmp r0,#0x00900000
54841  addhi r0,r0,#0x00600000 ;@ Decimal adjust units
54842  mov r2,r1,lsr #28
54843  add r0,r0,r2,lsl #24
54844  mov r2,r6,lsr #28
54845  add r0,r0,r2,lsl #24
54846  cmp r0,#0x09900000
54847  orrhi r10,r10,#0x20000000 ;@ C
54848  subhi r0,r0,#0x0a000000
54849  movs r0,r0,lsl #4
54850  orrmi r10,r10,#0x90000000 ;@ Undefined N+V behavior
54851  bicne r10,r10,#0x40000000 ;@ Z flag
54852  str r10,[r7,#0x4c] ;@ Save X bit
54853
54854;@ EaWrite: Write r0 into '-(a7)' (address in r11):
54855  mov r1,r0,lsr #24
54856  bic r0,r11,#0xff000000
54857  bl m68k_write8 ;@ Call write8(r0,r1) handler
54858
54859  ldr r6,[r7,#0x54]
54860  ldr r5,[r7,#0x5c] ;@ Load Cycles
54861  ldrh r8,[r4],#2 ;@ Fetch next opcode
54862  subs r5,r5,#18 ;@ Subtract cycles
54863  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54864  b CycloneEnd
54865
54866;@ ---------- [d000] add.b d0, d0 uses Opd000 ----------
54867Opd000:
54868;@ EaCalc : Get register index into r0:
54869  and r0,r8,#0x000f
54870;@ EaRead : Read register[r0] into r0:
54871  ldr r0,[r7,r0,lsl #2]
54872
54873;@ EaCalc : Get register index into r11:
54874  and r11,r8,#0x0e00
54875;@ EaRead : Read register[r11] into r1:
54876  ldr r1,[r7,r11,lsr #7]
54877
54878;@ Do arithmetic:
54879  mov r0,r0,asl #24
54880  adds r1,r0,r1,asl #24
54881  mrs r10,cpsr ;@ r10=flags
54882  str r10,[r7,#0x4c] ;@ Save X bit
54883
54884;@ Save result:
54885  mov r1,r1,asr #24
54886;@ EaWrite: r1 into register[r11]:
54887  strb r1,[r7,r11,lsr #7]
54888
54889  ldrh r8,[r4],#2 ;@ Fetch next opcode
54890  subs r5,r5,#4 ;@ Subtract cycles
54891  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54892  b CycloneEnd
54893
54894;@ ---------- [d010] add.b (a0), d0 uses Opd010 ----------
54895Opd010:
54896  str r4,[r7,#0x50] ;@ Save prev PC + 2
54897  str r5,[r7,#0x5c] ;@ Save Cycles
54898
54899;@ EaCalc : Get '(a0)' into r0:
54900  and r2,r8,#0x000f
54901  orr r2,r2,#0x8 ;@ A0-7
54902  ldr r0,[r7,r2,lsl #2]
54903;@ EaRead : Read '(a0)' (address in r0) into r0:
54904  str r4,[r7,#0x40] ;@ Save PC
54905  bic r0,r0,#0xff000000
54906  bl m68k_read8 ;@ Call read8(r0) handler
54907
54908;@ EaCalc : Get register index into r11:
54909  and r11,r8,#0x0e00
54910;@ EaRead : Read register[r11] into r1:
54911  ldr r1,[r7,r11,lsr #7]
54912
54913;@ Do arithmetic:
54914  mov r0,r0,asl #24
54915  adds r1,r0,r1,asl #24
54916  mrs r10,cpsr ;@ r10=flags
54917  str r10,[r7,#0x4c] ;@ Save X bit
54918
54919;@ Save result:
54920  mov r1,r1,asr #24
54921;@ EaWrite: r1 into register[r11]:
54922  strb r1,[r7,r11,lsr #7]
54923
54924  ldr r5,[r7,#0x5c] ;@ Load Cycles
54925  ldrh r8,[r4],#2 ;@ Fetch next opcode
54926  subs r5,r5,#8 ;@ Subtract cycles
54927  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54928  b CycloneEnd
54929
54930;@ ---------- [d018] add.b (a0)+, d0 uses Opd018 ----------
54931Opd018:
54932  str r4,[r7,#0x50] ;@ Save prev PC + 2
54933  str r5,[r7,#0x5c] ;@ Save Cycles
54934
54935;@ EaCalc : Get '(a0)+' into r0:
54936  and r2,r8,#0x000f
54937  ldr r0,[r7,r2,lsl #2]
54938  add r3,r0,#1 ;@ Post-increment An
54939  str r3,[r7,r2,lsl #2]
54940;@ EaRead : Read '(a0)+' (address in r0) into r0:
54941  str r4,[r7,#0x40] ;@ Save PC
54942  bic r0,r0,#0xff000000
54943  bl m68k_read8 ;@ Call read8(r0) handler
54944
54945;@ EaCalc : Get register index into r11:
54946  and r11,r8,#0x0e00
54947;@ EaRead : Read register[r11] into r1:
54948  ldr r1,[r7,r11,lsr #7]
54949
54950;@ Do arithmetic:
54951  mov r0,r0,asl #24
54952  adds r1,r0,r1,asl #24
54953  mrs r10,cpsr ;@ r10=flags
54954  str r10,[r7,#0x4c] ;@ Save X bit
54955
54956;@ Save result:
54957  mov r1,r1,asr #24
54958;@ EaWrite: r1 into register[r11]:
54959  strb r1,[r7,r11,lsr #7]
54960
54961  ldr r5,[r7,#0x5c] ;@ Load Cycles
54962  ldrh r8,[r4],#2 ;@ Fetch next opcode
54963  subs r5,r5,#8 ;@ Subtract cycles
54964  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54965  b CycloneEnd
54966
54967;@ ---------- [d01f] add.b (a7)+, d0 uses Opd01f ----------
54968Opd01f:
54969  str r4,[r7,#0x50] ;@ Save prev PC + 2
54970  str r5,[r7,#0x5c] ;@ Save Cycles
54971
54972;@ EaCalc : Get '(a7)+' into r0:
54973  ldr r0,[r7,#0x3c] ;@ A7
54974  add r3,r0,#2 ;@ Post-increment An
54975  str r3,[r7,#0x3c] ;@ A7
54976;@ EaRead : Read '(a7)+' (address in r0) into r0:
54977  str r4,[r7,#0x40] ;@ Save PC
54978  bic r0,r0,#0xff000000
54979  bl m68k_read8 ;@ Call read8(r0) handler
54980
54981;@ EaCalc : Get register index into r11:
54982  and r11,r8,#0x0e00
54983;@ EaRead : Read register[r11] into r1:
54984  ldr r1,[r7,r11,lsr #7]
54985
54986;@ Do arithmetic:
54987  mov r0,r0,asl #24
54988  adds r1,r0,r1,asl #24
54989  mrs r10,cpsr ;@ r10=flags
54990  str r10,[r7,#0x4c] ;@ Save X bit
54991
54992;@ Save result:
54993  mov r1,r1,asr #24
54994;@ EaWrite: r1 into register[r11]:
54995  strb r1,[r7,r11,lsr #7]
54996
54997  ldr r5,[r7,#0x5c] ;@ Load Cycles
54998  ldrh r8,[r4],#2 ;@ Fetch next opcode
54999  subs r5,r5,#8 ;@ Subtract cycles
55000  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55001  b CycloneEnd
55002
55003;@ ---------- [d020] add.b -(a0), d0 uses Opd020 ----------
55004Opd020:
55005  str r4,[r7,#0x50] ;@ Save prev PC + 2
55006  str r5,[r7,#0x5c] ;@ Save Cycles
55007
55008;@ EaCalc : Get '-(a0)' into r0:
55009  and r2,r8,#0x000f
55010  orr r2,r2,#0x8 ;@ A0-7
55011  ldr r0,[r7,r2,lsl #2]
55012  sub r0,r0,#1 ;@ Pre-decrement An
55013  str r0,[r7,r2,lsl #2]
55014;@ EaRead : Read '-(a0)' (address in r0) into r0:
55015  str r4,[r7,#0x40] ;@ Save PC
55016  bic r0,r0,#0xff000000
55017  bl m68k_read8 ;@ Call read8(r0) handler
55018
55019;@ EaCalc : Get register index into r11:
55020  and r11,r8,#0x0e00
55021;@ EaRead : Read register[r11] into r1:
55022  ldr r1,[r7,r11,lsr #7]
55023
55024;@ Do arithmetic:
55025  mov r0,r0,asl #24
55026  adds r1,r0,r1,asl #24
55027  mrs r10,cpsr ;@ r10=flags
55028  str r10,[r7,#0x4c] ;@ Save X bit
55029
55030;@ Save result:
55031  mov r1,r1,asr #24
55032;@ EaWrite: r1 into register[r11]:
55033  strb r1,[r7,r11,lsr #7]
55034
55035  ldr r5,[r7,#0x5c] ;@ Load Cycles
55036  ldrh r8,[r4],#2 ;@ Fetch next opcode
55037  subs r5,r5,#10 ;@ Subtract cycles
55038  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55039  b CycloneEnd
55040
55041;@ ---------- [d027] add.b -(a7), d0 uses Opd027 ----------
55042Opd027:
55043  str r4,[r7,#0x50] ;@ Save prev PC + 2
55044  str r5,[r7,#0x5c] ;@ Save Cycles
55045
55046;@ EaCalc : Get '-(a7)' into r0:
55047  ldr r0,[r7,#0x3c] ;@ A7
55048  sub r0,r0,#2 ;@ Pre-decrement An
55049  str r0,[r7,#0x3c] ;@ A7
55050;@ EaRead : Read '-(a7)' (address in r0) into r0:
55051  str r4,[r7,#0x40] ;@ Save PC
55052  bic r0,r0,#0xff000000
55053  bl m68k_read8 ;@ Call read8(r0) handler
55054
55055;@ EaCalc : Get register index into r11:
55056  and r11,r8,#0x0e00
55057;@ EaRead : Read register[r11] into r1:
55058  ldr r1,[r7,r11,lsr #7]
55059
55060;@ Do arithmetic:
55061  mov r0,r0,asl #24
55062  adds r1,r0,r1,asl #24
55063  mrs r10,cpsr ;@ r10=flags
55064  str r10,[r7,#0x4c] ;@ Save X bit
55065
55066;@ Save result:
55067  mov r1,r1,asr #24
55068;@ EaWrite: r1 into register[r11]:
55069  strb r1,[r7,r11,lsr #7]
55070
55071  ldr r5,[r7,#0x5c] ;@ Load Cycles
55072  ldrh r8,[r4],#2 ;@ Fetch next opcode
55073  subs r5,r5,#10 ;@ Subtract cycles
55074  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55075  b CycloneEnd
55076
55077;@ ---------- [d028] add.b ($3333,a0), d0 uses Opd028 ----------
55078Opd028:
55079  str r4,[r7,#0x50] ;@ Save prev PC + 2
55080  str r5,[r7,#0x5c] ;@ Save Cycles
55081
55082;@ EaCalc : Get '($3333,a0)' into r0:
55083  ldrsh r0,[r4],#2 ;@ Fetch offset
55084  and r2,r8,#0x000f
55085  ldr r2,[r7,r2,lsl #2]
55086  add r0,r0,r2 ;@ Add on offset
55087;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
55088  str r4,[r7,#0x40] ;@ Save PC
55089  bic r0,r0,#0xff000000
55090  bl m68k_read8 ;@ Call read8(r0) handler
55091
55092;@ EaCalc : Get register index into r11:
55093  and r11,r8,#0x0e00
55094;@ EaRead : Read register[r11] into r1:
55095  ldr r1,[r7,r11,lsr #7]
55096
55097;@ Do arithmetic:
55098  mov r0,r0,asl #24
55099  adds r1,r0,r1,asl #24
55100  mrs r10,cpsr ;@ r10=flags
55101  str r10,[r7,#0x4c] ;@ Save X bit
55102
55103;@ Save result:
55104  mov r1,r1,asr #24
55105;@ EaWrite: r1 into register[r11]:
55106  strb r1,[r7,r11,lsr #7]
55107
55108  ldr r5,[r7,#0x5c] ;@ Load Cycles
55109  ldrh r8,[r4],#2 ;@ Fetch next opcode
55110  subs r5,r5,#12 ;@ Subtract cycles
55111  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55112  b CycloneEnd
55113
55114;@ ---------- [d030] add.b ($33,a0,d3.w*2), d0 uses Opd030 ----------
55115Opd030:
55116  str r4,[r7,#0x50] ;@ Save prev PC + 2
55117  str r5,[r7,#0x5c] ;@ Save Cycles
55118
55119;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
55120;@ Get extension word into r3:
55121  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
55122  mov r2,r3,lsr #10
55123  tst r3,#0x0800 ;@ Is Rn Word or Long
55124  and r2,r2,#0x3c ;@ r2=Index of Rn
55125  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
55126  ldrne   r2,[r7,r2] ;@ r2=Rn.l
55127  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
55128  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
55129  and r2,r8,#0x000f
55130  orr r2,r2,#0x8 ;@ A0-7
55131  ldr r2,[r7,r2,lsl #2]
55132  add r0,r2,r3 ;@ r0=Disp+An+Rn
55133;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
55134  str r4,[r7,#0x40] ;@ Save PC
55135  bic r0,r0,#0xff000000
55136  bl m68k_read8 ;@ Call read8(r0) handler
55137
55138;@ EaCalc : Get register index into r11:
55139  and r11,r8,#0x0e00
55140;@ EaRead : Read register[r11] into r1:
55141  ldr r1,[r7,r11,lsr #7]
55142
55143;@ Do arithmetic:
55144  mov r0,r0,asl #24
55145  adds r1,r0,r1,asl #24
55146  mrs r10,cpsr ;@ r10=flags
55147  str r10,[r7,#0x4c] ;@ Save X bit
55148
55149;@ Save result:
55150  mov r1,r1,asr #24
55151;@ EaWrite: r1 into register[r11]:
55152  strb r1,[r7,r11,lsr #7]
55153
55154  ldr r5,[r7,#0x5c] ;@ Load Cycles
55155  ldrh r8,[r4],#2 ;@ Fetch next opcode
55156  subs r5,r5,#14 ;@ Subtract cycles
55157  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55158  b CycloneEnd
55159
55160;@ ---------- [d038] add.b $3333.w, d0 uses Opd038 ----------
55161Opd038:
55162  str r4,[r7,#0x50] ;@ Save prev PC + 2
55163  str r5,[r7,#0x5c] ;@ Save Cycles
55164
55165;@ EaCalc : Get '$3333.w' into r0:
55166  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
55167;@ EaRead : Read '$3333.w' (address in r0) into r0:
55168  str r4,[r7,#0x40] ;@ Save PC
55169  bic r0,r0,#0xff000000
55170  bl m68k_read8 ;@ Call read8(r0) handler
55171
55172;@ EaCalc : Get register index into r11:
55173  and r11,r8,#0x0e00
55174;@ EaRead : Read register[r11] into r1:
55175  ldr r1,[r7,r11,lsr #7]
55176
55177;@ Do arithmetic:
55178  mov r0,r0,asl #24
55179  adds r1,r0,r1,asl #24
55180  mrs r10,cpsr ;@ r10=flags
55181  str r10,[r7,#0x4c] ;@ Save X bit
55182
55183;@ Save result:
55184  mov r1,r1,asr #24
55185;@ EaWrite: r1 into register[r11]:
55186  strb r1,[r7,r11,lsr #7]
55187
55188  ldr r5,[r7,#0x5c] ;@ Load Cycles
55189  ldrh r8,[r4],#2 ;@ Fetch next opcode
55190  subs r5,r5,#12 ;@ Subtract cycles
55191  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55192  b CycloneEnd
55193
55194;@ ---------- [d039] add.b $33333333.l, d0 uses Opd039 ----------
55195Opd039:
55196  str r4,[r7,#0x50] ;@ Save prev PC + 2
55197  str r5,[r7,#0x5c] ;@ Save Cycles
55198
55199;@ EaCalc : Get '$33333333.l' into r0:
55200  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
55201  ldrh r0,[r4],#2
55202  orr r0,r0,r2,lsl #16
55203;@ EaRead : Read '$33333333.l' (address in r0) into r0:
55204  str r4,[r7,#0x40] ;@ Save PC
55205  bic r0,r0,#0xff000000
55206  bl m68k_read8 ;@ Call read8(r0) handler
55207
55208;@ EaCalc : Get register index into r11:
55209  and r11,r8,#0x0e00
55210;@ EaRead : Read register[r11] into r1:
55211  ldr r1,[r7,r11,lsr #7]
55212
55213;@ Do arithmetic:
55214  mov r0,r0,asl #24
55215  adds r1,r0,r1,asl #24
55216  mrs r10,cpsr ;@ r10=flags
55217  str r10,[r7,#0x4c] ;@ Save X bit
55218
55219;@ Save result:
55220  mov r1,r1,asr #24
55221;@ EaWrite: r1 into register[r11]:
55222  strb r1,[r7,r11,lsr #7]
55223
55224  ldr r5,[r7,#0x5c] ;@ Load Cycles
55225  ldrh r8,[r4],#2 ;@ Fetch next opcode
55226  subs r5,r5,#16 ;@ Subtract cycles
55227  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55228  b CycloneEnd
55229
55230;@ ---------- [d03a] add.b ($3333,pc), d0; =3335 uses Opd03a ----------
55231Opd03a:
55232  str r4,[r7,#0x50] ;@ Save prev PC + 2
55233  str r5,[r7,#0x5c] ;@ Save Cycles
55234
55235;@ EaCalc : Get '($3333,pc)' into r0:
55236  ldr r0,[r7,#0x60] ;@ Get Memory base
55237  sub r0,r4,r0 ;@ Real PC
55238  ldrsh r2,[r4],#2 ;@ Fetch extension
55239  add r0,r2,r0 ;@ ($nn,PC)
55240;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
55241  str r4,[r7,#0x40] ;@ Save PC
55242  bic r0,r0,#0xff000000
55243  bl m68k_fetch8 ;@ Call fetch8(r0) handler
55244
55245;@ EaCalc : Get register index into r11:
55246  and r11,r8,#0x0e00
55247;@ EaRead : Read register[r11] into r1:
55248  ldr r1,[r7,r11,lsr #7]
55249
55250;@ Do arithmetic:
55251  mov r0,r0,asl #24
55252  adds r1,r0,r1,asl #24
55253  mrs r10,cpsr ;@ r10=flags
55254  str r10,[r7,#0x4c] ;@ Save X bit
55255
55256;@ Save result:
55257  mov r1,r1,asr #24
55258;@ EaWrite: r1 into register[r11]:
55259  strb r1,[r7,r11,lsr #7]
55260
55261  ldr r5,[r7,#0x5c] ;@ Load Cycles
55262  ldrh r8,[r4],#2 ;@ Fetch next opcode
55263  subs r5,r5,#12 ;@ Subtract cycles
55264  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55265  b CycloneEnd
55266
55267;@ ---------- [d03b] add.b ($33,pc,d3.w*2), d0; =35 uses Opd03b ----------
55268Opd03b:
55269  str r4,[r7,#0x50] ;@ Save prev PC + 2
55270  str r5,[r7,#0x5c] ;@ Save Cycles
55271
55272;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
55273  ldr r0,[r7,#0x60] ;@ Get Memory base
55274  ldrh r3,[r4] ;@ Get extension word
55275  sub r0,r4,r0 ;@ r0=PC
55276  add r4,r4,#2
55277  mov r2,r3,lsr #10
55278  tst r3,#0x0800 ;@ Is Rn Word or Long
55279  and r2,r2,#0x3c ;@ r2=Index of Rn
55280  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
55281  ldrne   r2,[r7,r2] ;@ r2=Rn.l
55282  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
55283  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
55284  add r0,r2,r0 ;@ r0=Disp+PC+Rn
55285;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
55286  str r4,[r7,#0x40] ;@ Save PC
55287  bic r0,r0,#0xff000000
55288  bl m68k_fetch8 ;@ Call fetch8(r0) handler
55289
55290;@ EaCalc : Get register index into r11:
55291  and r11,r8,#0x0e00
55292;@ EaRead : Read register[r11] into r1:
55293  ldr r1,[r7,r11,lsr #7]
55294
55295;@ Do arithmetic:
55296  mov r0,r0,asl #24
55297  adds r1,r0,r1,asl #24
55298  mrs r10,cpsr ;@ r10=flags
55299  str r10,[r7,#0x4c] ;@ Save X bit
55300
55301;@ Save result:
55302  mov r1,r1,asr #24
55303;@ EaWrite: r1 into register[r11]:
55304  strb r1,[r7,r11,lsr #7]
55305
55306  ldr r5,[r7,#0x5c] ;@ Load Cycles
55307  ldrh r8,[r4],#2 ;@ Fetch next opcode
55308  subs r5,r5,#14 ;@ Subtract cycles
55309  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55310  b CycloneEnd
55311
55312;@ ---------- [d03c] add.b #$33, d0 uses Opd03c ----------
55313Opd03c:
55314;@ EaCalc : Get '#$33' into r0:
55315  ldrsb r0,[r4],#2 ;@ Fetch immediate value
55316;@ EaRead : Read '#$33' (address in r0) into r0:
55317
55318;@ EaCalc : Get register index into r11:
55319  and r11,r8,#0x0e00
55320;@ EaRead : Read register[r11] into r1:
55321  ldr r1,[r7,r11,lsr #7]
55322
55323;@ Do arithmetic:
55324  mov r0,r0,asl #24
55325  adds r1,r0,r1,asl #24
55326  mrs r10,cpsr ;@ r10=flags
55327  str r10,[r7,#0x4c] ;@ Save X bit
55328
55329;@ Save result:
55330  mov r1,r1,asr #24
55331;@ EaWrite: r1 into register[r11]:
55332  strb r1,[r7,r11,lsr #7]
55333
55334  ldrh r8,[r4],#2 ;@ Fetch next opcode
55335  subs r5,r5,#8 ;@ Subtract cycles
55336  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55337  b CycloneEnd
55338
55339;@ ---------- [d050] add.w (a0), d0 uses Opd050 ----------
55340Opd050:
55341  str r4,[r7,#0x50] ;@ Save prev PC + 2
55342  str r5,[r7,#0x5c] ;@ Save Cycles
55343
55344;@ EaCalc : Get '(a0)' into r0:
55345  and r2,r8,#0x000f
55346  orr r2,r2,#0x8 ;@ A0-7
55347  ldr r0,[r7,r2,lsl #2]
55348;@ EaRead : Read '(a0)' (address in r0) into r0:
55349  str r4,[r7,#0x40] ;@ Save PC
55350  bic r0,r0,#0xff000000
55351  bl m68k_read16 ;@ Call read16(r0) handler
55352
55353;@ EaCalc : Get register index into r11:
55354  and r11,r8,#0x0e00
55355  mov r11,r11,lsr #7
55356;@ EaRead : Read register[r11] into r1:
55357  ldr r1,[r7,r11]
55358
55359;@ Do arithmetic:
55360  mov r0,r0,asl #16
55361  adds r1,r0,r1,asl #16
55362  mrs r10,cpsr ;@ r10=flags
55363  str r10,[r7,#0x4c] ;@ Save X bit
55364
55365;@ Save result:
55366  mov r1,r1,asr #16
55367;@ EaWrite: r1 into register[r11]:
55368  strh r1,[r7,r11]
55369
55370  ldr r5,[r7,#0x5c] ;@ Load Cycles
55371  ldrh r8,[r4],#2 ;@ Fetch next opcode
55372  subs r5,r5,#8 ;@ Subtract cycles
55373  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55374  b CycloneEnd
55375
55376;@ ---------- [d058] add.w (a0)+, d0 uses Opd058 ----------
55377Opd058:
55378  str r4,[r7,#0x50] ;@ Save prev PC + 2
55379  str r5,[r7,#0x5c] ;@ Save Cycles
55380
55381;@ EaCalc : Get '(a0)+' into r0:
55382  and r2,r8,#0x000f
55383  ldr r0,[r7,r2,lsl #2]
55384  add r3,r0,#2 ;@ Post-increment An
55385  str r3,[r7,r2,lsl #2]
55386;@ EaRead : Read '(a0)+' (address in r0) into r0:
55387  str r4,[r7,#0x40] ;@ Save PC
55388  bic r0,r0,#0xff000000
55389  bl m68k_read16 ;@ Call read16(r0) handler
55390
55391;@ EaCalc : Get register index into r11:
55392  and r11,r8,#0x0e00
55393  mov r11,r11,lsr #7
55394;@ EaRead : Read register[r11] into r1:
55395  ldr r1,[r7,r11]
55396
55397;@ Do arithmetic:
55398  mov r0,r0,asl #16
55399  adds r1,r0,r1,asl #16
55400  mrs r10,cpsr ;@ r10=flags
55401  str r10,[r7,#0x4c] ;@ Save X bit
55402
55403;@ Save result:
55404  mov r1,r1,asr #16
55405;@ EaWrite: r1 into register[r11]:
55406  strh r1,[r7,r11]
55407
55408  ldr r5,[r7,#0x5c] ;@ Load Cycles
55409  ldrh r8,[r4],#2 ;@ Fetch next opcode
55410  subs r5,r5,#8 ;@ Subtract cycles
55411  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55412  b CycloneEnd
55413
55414;@ ---------- [d060] add.w -(a0), d0 uses Opd060 ----------
55415Opd060:
55416  str r4,[r7,#0x50] ;@ Save prev PC + 2
55417  str r5,[r7,#0x5c] ;@ Save Cycles
55418
55419;@ EaCalc : Get '-(a0)' into r0:
55420  and r2,r8,#0x000f
55421  orr r2,r2,#0x8 ;@ A0-7
55422  ldr r0,[r7,r2,lsl #2]
55423  sub r0,r0,#2 ;@ Pre-decrement An
55424  str r0,[r7,r2,lsl #2]
55425;@ EaRead : Read '-(a0)' (address in r0) into r0:
55426  str r4,[r7,#0x40] ;@ Save PC
55427  bic r0,r0,#0xff000000
55428  bl m68k_read16 ;@ Call read16(r0) handler
55429
55430;@ EaCalc : Get register index into r11:
55431  and r11,r8,#0x0e00
55432  mov r11,r11,lsr #7
55433;@ EaRead : Read register[r11] into r1:
55434  ldr r1,[r7,r11]
55435
55436;@ Do arithmetic:
55437  mov r0,r0,asl #16
55438  adds r1,r0,r1,asl #16
55439  mrs r10,cpsr ;@ r10=flags
55440  str r10,[r7,#0x4c] ;@ Save X bit
55441
55442;@ Save result:
55443  mov r1,r1,asr #16
55444;@ EaWrite: r1 into register[r11]:
55445  strh r1,[r7,r11]
55446
55447  ldr r5,[r7,#0x5c] ;@ Load Cycles
55448  ldrh r8,[r4],#2 ;@ Fetch next opcode
55449  subs r5,r5,#10 ;@ Subtract cycles
55450  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55451  b CycloneEnd
55452
55453;@ ---------- [d068] add.w ($3333,a0), d0 uses Opd068 ----------
55454Opd068:
55455  str r4,[r7,#0x50] ;@ Save prev PC + 2
55456  str r5,[r7,#0x5c] ;@ Save Cycles
55457
55458;@ EaCalc : Get '($3333,a0)' into r0:
55459  ldrsh r0,[r4],#2 ;@ Fetch offset
55460  and r2,r8,#0x000f
55461  ldr r2,[r7,r2,lsl #2]
55462  add r0,r0,r2 ;@ Add on offset
55463;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
55464  str r4,[r7,#0x40] ;@ Save PC
55465  bic r0,r0,#0xff000000
55466  bl m68k_read16 ;@ Call read16(r0) handler
55467
55468;@ EaCalc : Get register index into r11:
55469  and r11,r8,#0x0e00
55470  mov r11,r11,lsr #7
55471;@ EaRead : Read register[r11] into r1:
55472  ldr r1,[r7,r11]
55473
55474;@ Do arithmetic:
55475  mov r0,r0,asl #16
55476  adds r1,r0,r1,asl #16
55477  mrs r10,cpsr ;@ r10=flags
55478  str r10,[r7,#0x4c] ;@ Save X bit
55479
55480;@ Save result:
55481  mov r1,r1,asr #16
55482;@ EaWrite: r1 into register[r11]:
55483  strh r1,[r7,r11]
55484
55485  ldr r5,[r7,#0x5c] ;@ Load Cycles
55486  ldrh r8,[r4],#2 ;@ Fetch next opcode
55487  subs r5,r5,#12 ;@ Subtract cycles
55488  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55489  b CycloneEnd
55490
55491;@ ---------- [d070] add.w ($33,a0,d3.w*2), d0 uses Opd070 ----------
55492Opd070:
55493  str r4,[r7,#0x50] ;@ Save prev PC + 2
55494  str r5,[r7,#0x5c] ;@ Save Cycles
55495
55496;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
55497;@ Get extension word into r3:
55498  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
55499  mov r2,r3,lsr #10
55500  tst r3,#0x0800 ;@ Is Rn Word or Long
55501  and r2,r2,#0x3c ;@ r2=Index of Rn
55502  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
55503  ldrne   r2,[r7,r2] ;@ r2=Rn.l
55504  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
55505  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
55506  and r2,r8,#0x000f
55507  orr r2,r2,#0x8 ;@ A0-7
55508  ldr r2,[r7,r2,lsl #2]
55509  add r0,r2,r3 ;@ r0=Disp+An+Rn
55510;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
55511  str r4,[r7,#0x40] ;@ Save PC
55512  bic r0,r0,#0xff000000
55513  bl m68k_read16 ;@ Call read16(r0) handler
55514
55515;@ EaCalc : Get register index into r11:
55516  and r11,r8,#0x0e00
55517  mov r11,r11,lsr #7
55518;@ EaRead : Read register[r11] into r1:
55519  ldr r1,[r7,r11]
55520
55521;@ Do arithmetic:
55522  mov r0,r0,asl #16
55523  adds r1,r0,r1,asl #16
55524  mrs r10,cpsr ;@ r10=flags
55525  str r10,[r7,#0x4c] ;@ Save X bit
55526
55527;@ Save result:
55528  mov r1,r1,asr #16
55529;@ EaWrite: r1 into register[r11]:
55530  strh r1,[r7,r11]
55531
55532  ldr r5,[r7,#0x5c] ;@ Load Cycles
55533  ldrh r8,[r4],#2 ;@ Fetch next opcode
55534  subs r5,r5,#14 ;@ Subtract cycles
55535  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55536  b CycloneEnd
55537
55538;@ ---------- [d078] add.w $3333.w, d0 uses Opd078 ----------
55539Opd078:
55540  str r4,[r7,#0x50] ;@ Save prev PC + 2
55541  str r5,[r7,#0x5c] ;@ Save Cycles
55542
55543;@ EaCalc : Get '$3333.w' into r0:
55544  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
55545;@ EaRead : Read '$3333.w' (address in r0) into r0:
55546  str r4,[r7,#0x40] ;@ Save PC
55547  bic r0,r0,#0xff000000
55548  bl m68k_read16 ;@ Call read16(r0) handler
55549
55550;@ EaCalc : Get register index into r11:
55551  and r11,r8,#0x0e00
55552  mov r11,r11,lsr #7
55553;@ EaRead : Read register[r11] into r1:
55554  ldr r1,[r7,r11]
55555
55556;@ Do arithmetic:
55557  mov r0,r0,asl #16
55558  adds r1,r0,r1,asl #16
55559  mrs r10,cpsr ;@ r10=flags
55560  str r10,[r7,#0x4c] ;@ Save X bit
55561
55562;@ Save result:
55563  mov r1,r1,asr #16
55564;@ EaWrite: r1 into register[r11]:
55565  strh r1,[r7,r11]
55566
55567  ldr r5,[r7,#0x5c] ;@ Load Cycles
55568  ldrh r8,[r4],#2 ;@ Fetch next opcode
55569  subs r5,r5,#12 ;@ Subtract cycles
55570  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55571  b CycloneEnd
55572
55573;@ ---------- [d079] add.w $33333333.l, d0 uses Opd079 ----------
55574Opd079:
55575  str r4,[r7,#0x50] ;@ Save prev PC + 2
55576  str r5,[r7,#0x5c] ;@ Save Cycles
55577
55578;@ EaCalc : Get '$33333333.l' into r0:
55579  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
55580  ldrh r0,[r4],#2
55581  orr r0,r0,r2,lsl #16
55582;@ EaRead : Read '$33333333.l' (address in r0) into r0:
55583  str r4,[r7,#0x40] ;@ Save PC
55584  bic r0,r0,#0xff000000
55585  bl m68k_read16 ;@ Call read16(r0) handler
55586
55587;@ EaCalc : Get register index into r11:
55588  and r11,r8,#0x0e00
55589  mov r11,r11,lsr #7
55590;@ EaRead : Read register[r11] into r1:
55591  ldr r1,[r7,r11]
55592
55593;@ Do arithmetic:
55594  mov r0,r0,asl #16
55595  adds r1,r0,r1,asl #16
55596  mrs r10,cpsr ;@ r10=flags
55597  str r10,[r7,#0x4c] ;@ Save X bit
55598
55599;@ Save result:
55600  mov r1,r1,asr #16
55601;@ EaWrite: r1 into register[r11]:
55602  strh r1,[r7,r11]
55603
55604  ldr r5,[r7,#0x5c] ;@ Load Cycles
55605  ldrh r8,[r4],#2 ;@ Fetch next opcode
55606  subs r5,r5,#16 ;@ Subtract cycles
55607  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55608  b CycloneEnd
55609
55610;@ ---------- [d07a] add.w ($3333,pc), d0; =3335 uses Opd07a ----------
55611Opd07a:
55612  str r4,[r7,#0x50] ;@ Save prev PC + 2
55613  str r5,[r7,#0x5c] ;@ Save Cycles
55614
55615;@ EaCalc : Get '($3333,pc)' into r0:
55616  ldr r0,[r7,#0x60] ;@ Get Memory base
55617  sub r0,r4,r0 ;@ Real PC
55618  ldrsh r2,[r4],#2 ;@ Fetch extension
55619  add r0,r2,r0 ;@ ($nn,PC)
55620;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
55621  str r4,[r7,#0x40] ;@ Save PC
55622  bic r0,r0,#0xff000000
55623  bl m68k_fetch16 ;@ Call fetch16(r0) handler
55624
55625;@ EaCalc : Get register index into r11:
55626  and r11,r8,#0x0e00
55627  mov r11,r11,lsr #7
55628;@ EaRead : Read register[r11] into r1:
55629  ldr r1,[r7,r11]
55630
55631;@ Do arithmetic:
55632  mov r0,r0,asl #16
55633  adds r1,r0,r1,asl #16
55634  mrs r10,cpsr ;@ r10=flags
55635  str r10,[r7,#0x4c] ;@ Save X bit
55636
55637;@ Save result:
55638  mov r1,r1,asr #16
55639;@ EaWrite: r1 into register[r11]:
55640  strh r1,[r7,r11]
55641
55642  ldr r5,[r7,#0x5c] ;@ Load Cycles
55643  ldrh r8,[r4],#2 ;@ Fetch next opcode
55644  subs r5,r5,#12 ;@ Subtract cycles
55645  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55646  b CycloneEnd
55647
55648;@ ---------- [d07b] add.w ($33,pc,d3.w*2), d0; =35 uses Opd07b ----------
55649Opd07b:
55650  str r4,[r7,#0x50] ;@ Save prev PC + 2
55651  str r5,[r7,#0x5c] ;@ Save Cycles
55652
55653;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
55654  ldr r0,[r7,#0x60] ;@ Get Memory base
55655  ldrh r3,[r4] ;@ Get extension word
55656  sub r0,r4,r0 ;@ r0=PC
55657  add r4,r4,#2
55658  mov r2,r3,lsr #10
55659  tst r3,#0x0800 ;@ Is Rn Word or Long
55660  and r2,r2,#0x3c ;@ r2=Index of Rn
55661  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
55662  ldrne   r2,[r7,r2] ;@ r2=Rn.l
55663  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
55664  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
55665  add r0,r2,r0 ;@ r0=Disp+PC+Rn
55666;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
55667  str r4,[r7,#0x40] ;@ Save PC
55668  bic r0,r0,#0xff000000
55669  bl m68k_fetch16 ;@ Call fetch16(r0) handler
55670
55671;@ EaCalc : Get register index into r11:
55672  and r11,r8,#0x0e00
55673  mov r11,r11,lsr #7
55674;@ EaRead : Read register[r11] into r1:
55675  ldr r1,[r7,r11]
55676
55677;@ Do arithmetic:
55678  mov r0,r0,asl #16
55679  adds r1,r0,r1,asl #16
55680  mrs r10,cpsr ;@ r10=flags
55681  str r10,[r7,#0x4c] ;@ Save X bit
55682
55683;@ Save result:
55684  mov r1,r1,asr #16
55685;@ EaWrite: r1 into register[r11]:
55686  strh r1,[r7,r11]
55687
55688  ldr r5,[r7,#0x5c] ;@ Load Cycles
55689  ldrh r8,[r4],#2 ;@ Fetch next opcode
55690  subs r5,r5,#14 ;@ Subtract cycles
55691  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55692  b CycloneEnd
55693
55694;@ ---------- [d07c] add.w #$3333, d0 uses Opd07c ----------
55695Opd07c:
55696;@ EaCalc : Get '#$3333' into r0:
55697  ldrsh r0,[r4],#2 ;@ Fetch immediate value
55698;@ EaRead : Read '#$3333' (address in r0) into r0:
55699
55700;@ EaCalc : Get register index into r11:
55701  and r11,r8,#0x0e00
55702  mov r11,r11,lsr #7
55703;@ EaRead : Read register[r11] into r1:
55704  ldr r1,[r7,r11]
55705
55706;@ Do arithmetic:
55707  mov r0,r0,asl #16
55708  adds r1,r0,r1,asl #16
55709  mrs r10,cpsr ;@ r10=flags
55710  str r10,[r7,#0x4c] ;@ Save X bit
55711
55712;@ Save result:
55713  mov r1,r1,asr #16
55714;@ EaWrite: r1 into register[r11]:
55715  strh r1,[r7,r11]
55716
55717  ldrh r8,[r4],#2 ;@ Fetch next opcode
55718  subs r5,r5,#8 ;@ Subtract cycles
55719  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55720  b CycloneEnd
55721
55722;@ ---------- [d080] add.l d0, d0 uses Opd080 ----------
55723Opd080:
55724;@ EaCalc : Get register index into r0:
55725  and r0,r8,#0x000f
55726;@ EaRead : Read register[r0] into r0:
55727  ldr r0,[r7,r0,lsl #2]
55728
55729;@ EaCalc : Get register index into r11:
55730  and r11,r8,#0x0e00
55731;@ EaRead : Read register[r11] into r1:
55732  ldr r1,[r7,r11,lsr #7]
55733
55734;@ Do arithmetic:
55735  adds r1,r0,r1
55736  mrs r10,cpsr ;@ r10=flags
55737  str r10,[r7,#0x4c] ;@ Save X bit
55738
55739;@ Save result:
55740;@ EaWrite: r1 into register[r11]:
55741  str r1,[r7,r11,lsr #7]
55742
55743  ldrh r8,[r4],#2 ;@ Fetch next opcode
55744  subs r5,r5,#8 ;@ Subtract cycles
55745  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55746  b CycloneEnd
55747
55748;@ ---------- [d090] add.l (a0), d0 uses Opd090 ----------
55749Opd090:
55750  str r4,[r7,#0x50] ;@ Save prev PC + 2
55751  str r5,[r7,#0x5c] ;@ Save Cycles
55752
55753;@ EaCalc : Get '(a0)' into r0:
55754  and r2,r8,#0x000f
55755  orr r2,r2,#0x8 ;@ A0-7
55756  ldr r0,[r7,r2,lsl #2]
55757;@ EaRead : Read '(a0)' (address in r0) into r0:
55758  str r4,[r7,#0x40] ;@ Save PC
55759  bic r0,r0,#0xff000000
55760  bl m68k_read32 ;@ Call read32(r0) handler
55761
55762;@ EaCalc : Get register index into r11:
55763  and r11,r8,#0x0e00
55764;@ EaRead : Read register[r11] into r1:
55765  ldr r1,[r7,r11,lsr #7]
55766
55767;@ Do arithmetic:
55768  adds r1,r0,r1
55769  mrs r10,cpsr ;@ r10=flags
55770  str r10,[r7,#0x4c] ;@ Save X bit
55771
55772;@ Save result:
55773;@ EaWrite: r1 into register[r11]:
55774  str r1,[r7,r11,lsr #7]
55775
55776  ldr r5,[r7,#0x5c] ;@ Load Cycles
55777  ldrh r8,[r4],#2 ;@ Fetch next opcode
55778  subs r5,r5,#14 ;@ Subtract cycles
55779  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55780  b CycloneEnd
55781
55782;@ ---------- [d098] add.l (a0)+, d0 uses Opd098 ----------
55783Opd098:
55784  str r4,[r7,#0x50] ;@ Save prev PC + 2
55785  str r5,[r7,#0x5c] ;@ Save Cycles
55786
55787;@ EaCalc : Get '(a0)+' into r0:
55788  and r2,r8,#0x000f
55789  ldr r0,[r7,r2,lsl #2]
55790  add r3,r0,#4 ;@ Post-increment An
55791  str r3,[r7,r2,lsl #2]
55792;@ EaRead : Read '(a0)+' (address in r0) into r0:
55793  str r4,[r7,#0x40] ;@ Save PC
55794  bic r0,r0,#0xff000000
55795  bl m68k_read32 ;@ Call read32(r0) handler
55796
55797;@ EaCalc : Get register index into r11:
55798  and r11,r8,#0x0e00
55799;@ EaRead : Read register[r11] into r1:
55800  ldr r1,[r7,r11,lsr #7]
55801
55802;@ Do arithmetic:
55803  adds r1,r0,r1
55804  mrs r10,cpsr ;@ r10=flags
55805  str r10,[r7,#0x4c] ;@ Save X bit
55806
55807;@ Save result:
55808;@ EaWrite: r1 into register[r11]:
55809  str r1,[r7,r11,lsr #7]
55810
55811  ldr r5,[r7,#0x5c] ;@ Load Cycles
55812  ldrh r8,[r4],#2 ;@ Fetch next opcode
55813  subs r5,r5,#14 ;@ Subtract cycles
55814  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55815  b CycloneEnd
55816
55817;@ ---------- [d0a0] add.l -(a0), d0 uses Opd0a0 ----------
55818Opd0a0:
55819  str r4,[r7,#0x50] ;@ Save prev PC + 2
55820  str r5,[r7,#0x5c] ;@ Save Cycles
55821
55822;@ EaCalc : Get '-(a0)' into r0:
55823  and r2,r8,#0x000f
55824  orr r2,r2,#0x8 ;@ A0-7
55825  ldr r0,[r7,r2,lsl #2]
55826  sub r0,r0,#4 ;@ Pre-decrement An
55827  str r0,[r7,r2,lsl #2]
55828;@ EaRead : Read '-(a0)' (address in r0) into r0:
55829  str r4,[r7,#0x40] ;@ Save PC
55830  bic r0,r0,#0xff000000
55831  bl m68k_read32 ;@ Call read32(r0) handler
55832
55833;@ EaCalc : Get register index into r11:
55834  and r11,r8,#0x0e00
55835;@ EaRead : Read register[r11] into r1:
55836  ldr r1,[r7,r11,lsr #7]
55837
55838;@ Do arithmetic:
55839  adds r1,r0,r1
55840  mrs r10,cpsr ;@ r10=flags
55841  str r10,[r7,#0x4c] ;@ Save X bit
55842
55843;@ Save result:
55844;@ EaWrite: r1 into register[r11]:
55845  str r1,[r7,r11,lsr #7]
55846
55847  ldr r5,[r7,#0x5c] ;@ Load Cycles
55848  ldrh r8,[r4],#2 ;@ Fetch next opcode
55849  subs r5,r5,#16 ;@ Subtract cycles
55850  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55851  b CycloneEnd
55852
55853;@ ---------- [d0a8] add.l ($3333,a0), d0 uses Opd0a8 ----------
55854Opd0a8:
55855  str r4,[r7,#0x50] ;@ Save prev PC + 2
55856  str r5,[r7,#0x5c] ;@ Save Cycles
55857
55858;@ EaCalc : Get '($3333,a0)' into r0:
55859  ldrsh r0,[r4],#2 ;@ Fetch offset
55860  and r2,r8,#0x000f
55861  ldr r2,[r7,r2,lsl #2]
55862  add r0,r0,r2 ;@ Add on offset
55863;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
55864  str r4,[r7,#0x40] ;@ Save PC
55865  bic r0,r0,#0xff000000
55866  bl m68k_read32 ;@ Call read32(r0) handler
55867
55868;@ EaCalc : Get register index into r11:
55869  and r11,r8,#0x0e00
55870;@ EaRead : Read register[r11] into r1:
55871  ldr r1,[r7,r11,lsr #7]
55872
55873;@ Do arithmetic:
55874  adds r1,r0,r1
55875  mrs r10,cpsr ;@ r10=flags
55876  str r10,[r7,#0x4c] ;@ Save X bit
55877
55878;@ Save result:
55879;@ EaWrite: r1 into register[r11]:
55880  str r1,[r7,r11,lsr #7]
55881
55882  ldr r5,[r7,#0x5c] ;@ Load Cycles
55883  ldrh r8,[r4],#2 ;@ Fetch next opcode
55884  subs r5,r5,#18 ;@ Subtract cycles
55885  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55886  b CycloneEnd
55887
55888;@ ---------- [d0b0] add.l ($33,a0,d3.w*2), d0 uses Opd0b0 ----------
55889Opd0b0:
55890  str r4,[r7,#0x50] ;@ Save prev PC + 2
55891  str r5,[r7,#0x5c] ;@ Save Cycles
55892
55893;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
55894;@ Get extension word into r3:
55895  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
55896  mov r2,r3,lsr #10
55897  tst r3,#0x0800 ;@ Is Rn Word or Long
55898  and r2,r2,#0x3c ;@ r2=Index of Rn
55899  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
55900  ldrne   r2,[r7,r2] ;@ r2=Rn.l
55901  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
55902  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
55903  and r2,r8,#0x000f
55904  orr r2,r2,#0x8 ;@ A0-7
55905  ldr r2,[r7,r2,lsl #2]
55906  add r0,r2,r3 ;@ r0=Disp+An+Rn
55907;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
55908  str r4,[r7,#0x40] ;@ Save PC
55909  bic r0,r0,#0xff000000
55910  bl m68k_read32 ;@ Call read32(r0) handler
55911
55912;@ EaCalc : Get register index into r11:
55913  and r11,r8,#0x0e00
55914;@ EaRead : Read register[r11] into r1:
55915  ldr r1,[r7,r11,lsr #7]
55916
55917;@ Do arithmetic:
55918  adds r1,r0,r1
55919  mrs r10,cpsr ;@ r10=flags
55920  str r10,[r7,#0x4c] ;@ Save X bit
55921
55922;@ Save result:
55923;@ EaWrite: r1 into register[r11]:
55924  str r1,[r7,r11,lsr #7]
55925
55926  ldr r5,[r7,#0x5c] ;@ Load Cycles
55927  ldrh r8,[r4],#2 ;@ Fetch next opcode
55928  subs r5,r5,#20 ;@ Subtract cycles
55929  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55930  b CycloneEnd
55931
55932;@ ---------- [d0b8] add.l $3333.w, d0 uses Opd0b8 ----------
55933Opd0b8:
55934  str r4,[r7,#0x50] ;@ Save prev PC + 2
55935  str r5,[r7,#0x5c] ;@ Save Cycles
55936
55937;@ EaCalc : Get '$3333.w' into r0:
55938  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
55939;@ EaRead : Read '$3333.w' (address in r0) into r0:
55940  str r4,[r7,#0x40] ;@ Save PC
55941  bic r0,r0,#0xff000000
55942  bl m68k_read32 ;@ Call read32(r0) handler
55943
55944;@ EaCalc : Get register index into r11:
55945  and r11,r8,#0x0e00
55946;@ EaRead : Read register[r11] into r1:
55947  ldr r1,[r7,r11,lsr #7]
55948
55949;@ Do arithmetic:
55950  adds r1,r0,r1
55951  mrs r10,cpsr ;@ r10=flags
55952  str r10,[r7,#0x4c] ;@ Save X bit
55953
55954;@ Save result:
55955;@ EaWrite: r1 into register[r11]:
55956  str r1,[r7,r11,lsr #7]
55957
55958  ldr r5,[r7,#0x5c] ;@ Load Cycles
55959  ldrh r8,[r4],#2 ;@ Fetch next opcode
55960  subs r5,r5,#18 ;@ Subtract cycles
55961  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55962  b CycloneEnd
55963
55964;@ ---------- [d0b9] add.l $33333333.l, d0 uses Opd0b9 ----------
55965Opd0b9:
55966  str r4,[r7,#0x50] ;@ Save prev PC + 2
55967  str r5,[r7,#0x5c] ;@ Save Cycles
55968
55969;@ EaCalc : Get '$33333333.l' into r0:
55970  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
55971  ldrh r0,[r4],#2
55972  orr r0,r0,r2,lsl #16
55973;@ EaRead : Read '$33333333.l' (address in r0) into r0:
55974  str r4,[r7,#0x40] ;@ Save PC
55975  bic r0,r0,#0xff000000
55976  bl m68k_read32 ;@ Call read32(r0) handler
55977
55978;@ EaCalc : Get register index into r11:
55979  and r11,r8,#0x0e00
55980;@ EaRead : Read register[r11] into r1:
55981  ldr r1,[r7,r11,lsr #7]
55982
55983;@ Do arithmetic:
55984  adds r1,r0,r1
55985  mrs r10,cpsr ;@ r10=flags
55986  str r10,[r7,#0x4c] ;@ Save X bit
55987
55988;@ Save result:
55989;@ EaWrite: r1 into register[r11]:
55990  str r1,[r7,r11,lsr #7]
55991
55992  ldr r5,[r7,#0x5c] ;@ Load Cycles
55993  ldrh r8,[r4],#2 ;@ Fetch next opcode
55994  subs r5,r5,#22 ;@ Subtract cycles
55995  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55996  b CycloneEnd
55997
55998;@ ---------- [d0ba] add.l ($3333,pc), d0; =3335 uses Opd0ba ----------
55999Opd0ba:
56000  str r4,[r7,#0x50] ;@ Save prev PC + 2
56001  str r5,[r7,#0x5c] ;@ Save Cycles
56002
56003;@ EaCalc : Get '($3333,pc)' into r0:
56004  ldr r0,[r7,#0x60] ;@ Get Memory base
56005  sub r0,r4,r0 ;@ Real PC
56006  ldrsh r2,[r4],#2 ;@ Fetch extension
56007  add r0,r2,r0 ;@ ($nn,PC)
56008;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
56009  str r4,[r7,#0x40] ;@ Save PC
56010  bic r0,r0,#0xff000000
56011  bl m68k_fetch32 ;@ Call fetch32(r0) handler
56012
56013;@ EaCalc : Get register index into r11:
56014  and r11,r8,#0x0e00
56015;@ EaRead : Read register[r11] into r1:
56016  ldr r1,[r7,r11,lsr #7]
56017
56018;@ Do arithmetic:
56019  adds r1,r0,r1
56020  mrs r10,cpsr ;@ r10=flags
56021  str r10,[r7,#0x4c] ;@ Save X bit
56022
56023;@ Save result:
56024;@ EaWrite: r1 into register[r11]:
56025  str r1,[r7,r11,lsr #7]
56026
56027  ldr r5,[r7,#0x5c] ;@ Load Cycles
56028  ldrh r8,[r4],#2 ;@ Fetch next opcode
56029  subs r5,r5,#18 ;@ Subtract cycles
56030  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56031  b CycloneEnd
56032
56033;@ ---------- [d0bb] add.l ($33,pc,d3.w*2), d0; =35 uses Opd0bb ----------
56034Opd0bb:
56035  str r4,[r7,#0x50] ;@ Save prev PC + 2
56036  str r5,[r7,#0x5c] ;@ Save Cycles
56037
56038;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
56039  ldr r0,[r7,#0x60] ;@ Get Memory base
56040  ldrh r3,[r4] ;@ Get extension word
56041  sub r0,r4,r0 ;@ r0=PC
56042  add r4,r4,#2
56043  mov r2,r3,lsr #10
56044  tst r3,#0x0800 ;@ Is Rn Word or Long
56045  and r2,r2,#0x3c ;@ r2=Index of Rn
56046  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
56047  ldrne   r2,[r7,r2] ;@ r2=Rn.l
56048  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
56049  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
56050  add r0,r2,r0 ;@ r0=Disp+PC+Rn
56051;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
56052  str r4,[r7,#0x40] ;@ Save PC
56053  bic r0,r0,#0xff000000
56054  bl m68k_fetch32 ;@ Call fetch32(r0) handler
56055
56056;@ EaCalc : Get register index into r11:
56057  and r11,r8,#0x0e00
56058;@ EaRead : Read register[r11] into r1:
56059  ldr r1,[r7,r11,lsr #7]
56060
56061;@ Do arithmetic:
56062  adds r1,r0,r1
56063  mrs r10,cpsr ;@ r10=flags
56064  str r10,[r7,#0x4c] ;@ Save X bit
56065
56066;@ Save result:
56067;@ EaWrite: r1 into register[r11]:
56068  str r1,[r7,r11,lsr #7]
56069
56070  ldr r5,[r7,#0x5c] ;@ Load Cycles
56071  ldrh r8,[r4],#2 ;@ Fetch next opcode
56072  subs r5,r5,#20 ;@ Subtract cycles
56073  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56074  b CycloneEnd
56075
56076;@ ---------- [d0bc] add.l #$33333333, d0 uses Opd0bc ----------
56077Opd0bc:
56078;@ EaCalc : Get '#$33333333' into r0:
56079  ldrh r2,[r4],#2 ;@ Fetch immediate value
56080  ldrh r3,[r4],#2
56081  orr r0,r3,r2,lsl #16
56082;@ EaRead : Read '#$33333333' (address in r0) into r0:
56083
56084;@ EaCalc : Get register index into r11:
56085  and r11,r8,#0x0e00
56086;@ EaRead : Read register[r11] into r1:
56087  ldr r1,[r7,r11,lsr #7]
56088
56089;@ Do arithmetic:
56090  adds r1,r0,r1
56091  mrs r10,cpsr ;@ r10=flags
56092  str r10,[r7,#0x4c] ;@ Save X bit
56093
56094;@ Save result:
56095;@ EaWrite: r1 into register[r11]:
56096  str r1,[r7,r11,lsr #7]
56097
56098  ldrh r8,[r4],#2 ;@ Fetch next opcode
56099  subs r5,r5,#16 ;@ Subtract cycles
56100  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56101  b CycloneEnd
56102
56103;@ ---------- [d0c0] adda.w d0, a0 uses Opd0c0 ----------
56104Opd0c0:
56105;@ EaCalc : Get register index into r0:
56106  and r0,r8,#0x000f
56107;@ EaRead : Read register[r0] into r0:
56108  ldr r0,[r7,r0,lsl #2]
56109
56110;@ EaCalc : Get register index into r11:
56111  and r11,r8,#0x1e00
56112;@ EaRead : Read register[r11] into r1:
56113  ldr r1,[r7,r11,lsr #7]
56114
56115  mov r0,r0,asl #16
56116
56117  add r1,r1,r0,asr #16
56118
56119;@ EaWrite: r1 into register[r11]:
56120  str r1,[r7,r11,lsr #7]
56121
56122  ldrh r8,[r4],#2 ;@ Fetch next opcode
56123  subs r5,r5,#8 ;@ Subtract cycles
56124  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56125  b CycloneEnd
56126
56127;@ ---------- [d0d0] adda.w (a0), a0 uses Opd0d0 ----------
56128Opd0d0:
56129  str r4,[r7,#0x50] ;@ Save prev PC + 2
56130  str r5,[r7,#0x5c] ;@ Save Cycles
56131
56132;@ EaCalc : Get '(a0)' into r0:
56133  and r2,r8,#0x000f
56134  orr r2,r2,#0x8 ;@ A0-7
56135  ldr r0,[r7,r2,lsl #2]
56136;@ EaRead : Read '(a0)' (address in r0) into r0:
56137  str r4,[r7,#0x40] ;@ Save PC
56138  bic r0,r0,#0xff000000
56139  bl m68k_read16 ;@ Call read16(r0) handler
56140
56141;@ EaCalc : Get register index into r11:
56142  and r11,r8,#0x1e00
56143;@ EaRead : Read register[r11] into r1:
56144  ldr r1,[r7,r11,lsr #7]
56145
56146  mov r0,r0,asl #16
56147
56148  add r1,r1,r0,asr #16
56149
56150;@ EaWrite: r1 into register[r11]:
56151  str r1,[r7,r11,lsr #7]
56152
56153  ldr r5,[r7,#0x5c] ;@ Load Cycles
56154  ldrh r8,[r4],#2 ;@ Fetch next opcode
56155  subs r5,r5,#12 ;@ Subtract cycles
56156  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56157  b CycloneEnd
56158
56159;@ ---------- [d0d8] adda.w (a0)+, a0 uses Opd0d8 ----------
56160Opd0d8:
56161  str r4,[r7,#0x50] ;@ Save prev PC + 2
56162  str r5,[r7,#0x5c] ;@ Save Cycles
56163
56164;@ EaCalc : Get '(a0)+' into r0:
56165  and r2,r8,#0x000f
56166  ldr r0,[r7,r2,lsl #2]
56167  add r3,r0,#2 ;@ Post-increment An
56168  str r3,[r7,r2,lsl #2]
56169;@ EaRead : Read '(a0)+' (address in r0) into r0:
56170  str r4,[r7,#0x40] ;@ Save PC
56171  bic r0,r0,#0xff000000
56172  bl m68k_read16 ;@ Call read16(r0) handler
56173
56174;@ EaCalc : Get register index into r11:
56175  and r11,r8,#0x1e00
56176;@ EaRead : Read register[r11] into r1:
56177  ldr r1,[r7,r11,lsr #7]
56178
56179  mov r0,r0,asl #16
56180
56181  add r1,r1,r0,asr #16
56182
56183;@ EaWrite: r1 into register[r11]:
56184  str r1,[r7,r11,lsr #7]
56185
56186  ldr r5,[r7,#0x5c] ;@ Load Cycles
56187  ldrh r8,[r4],#2 ;@ Fetch next opcode
56188  subs r5,r5,#12 ;@ Subtract cycles
56189  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56190  b CycloneEnd
56191
56192;@ ---------- [d0e0] adda.w -(a0), a0 uses Opd0e0 ----------
56193Opd0e0:
56194  str r4,[r7,#0x50] ;@ Save prev PC + 2
56195  str r5,[r7,#0x5c] ;@ Save Cycles
56196
56197;@ EaCalc : Get '-(a0)' into r0:
56198  and r2,r8,#0x000f
56199  orr r2,r2,#0x8 ;@ A0-7
56200  ldr r0,[r7,r2,lsl #2]
56201  sub r0,r0,#2 ;@ Pre-decrement An
56202  str r0,[r7,r2,lsl #2]
56203;@ EaRead : Read '-(a0)' (address in r0) into r0:
56204  str r4,[r7,#0x40] ;@ Save PC
56205  bic r0,r0,#0xff000000
56206  bl m68k_read16 ;@ Call read16(r0) handler
56207
56208;@ EaCalc : Get register index into r11:
56209  and r11,r8,#0x1e00
56210;@ EaRead : Read register[r11] into r1:
56211  ldr r1,[r7,r11,lsr #7]
56212
56213  mov r0,r0,asl #16
56214
56215  add r1,r1,r0,asr #16
56216
56217;@ EaWrite: r1 into register[r11]:
56218  str r1,[r7,r11,lsr #7]
56219
56220  ldr r5,[r7,#0x5c] ;@ Load Cycles
56221  ldrh r8,[r4],#2 ;@ Fetch next opcode
56222  subs r5,r5,#14 ;@ Subtract cycles
56223  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56224  b CycloneEnd
56225
56226;@ ---------- [d0e8] adda.w ($3333,a0), a0 uses Opd0e8 ----------
56227Opd0e8:
56228  str r4,[r7,#0x50] ;@ Save prev PC + 2
56229  str r5,[r7,#0x5c] ;@ Save Cycles
56230
56231;@ EaCalc : Get '($3333,a0)' into r0:
56232  ldrsh r0,[r4],#2 ;@ Fetch offset
56233  and r2,r8,#0x000f
56234  ldr r2,[r7,r2,lsl #2]
56235  add r0,r0,r2 ;@ Add on offset
56236;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
56237  str r4,[r7,#0x40] ;@ Save PC
56238  bic r0,r0,#0xff000000
56239  bl m68k_read16 ;@ Call read16(r0) handler
56240
56241;@ EaCalc : Get register index into r11:
56242  and r11,r8,#0x1e00
56243;@ EaRead : Read register[r11] into r1:
56244  ldr r1,[r7,r11,lsr #7]
56245
56246  mov r0,r0,asl #16
56247
56248  add r1,r1,r0,asr #16
56249
56250;@ EaWrite: r1 into register[r11]:
56251  str r1,[r7,r11,lsr #7]
56252
56253  ldr r5,[r7,#0x5c] ;@ Load Cycles
56254  ldrh r8,[r4],#2 ;@ Fetch next opcode
56255  subs r5,r5,#16 ;@ Subtract cycles
56256  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56257  b CycloneEnd
56258
56259;@ ---------- [d0f0] adda.w ($33,a0,d3.w*2), a0 uses Opd0f0 ----------
56260Opd0f0:
56261  str r4,[r7,#0x50] ;@ Save prev PC + 2
56262  str r5,[r7,#0x5c] ;@ Save Cycles
56263
56264;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
56265;@ Get extension word into r3:
56266  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
56267  mov r2,r3,lsr #10
56268  tst r3,#0x0800 ;@ Is Rn Word or Long
56269  and r2,r2,#0x3c ;@ r2=Index of Rn
56270  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
56271  ldrne   r2,[r7,r2] ;@ r2=Rn.l
56272  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
56273  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
56274  and r2,r8,#0x000f
56275  orr r2,r2,#0x8 ;@ A0-7
56276  ldr r2,[r7,r2,lsl #2]
56277  add r0,r2,r3 ;@ r0=Disp+An+Rn
56278;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
56279  str r4,[r7,#0x40] ;@ Save PC
56280  bic r0,r0,#0xff000000
56281  bl m68k_read16 ;@ Call read16(r0) handler
56282
56283;@ EaCalc : Get register index into r11:
56284  and r11,r8,#0x1e00
56285;@ EaRead : Read register[r11] into r1:
56286  ldr r1,[r7,r11,lsr #7]
56287
56288  mov r0,r0,asl #16
56289
56290  add r1,r1,r0,asr #16
56291
56292;@ EaWrite: r1 into register[r11]:
56293  str r1,[r7,r11,lsr #7]
56294
56295  ldr r5,[r7,#0x5c] ;@ Load Cycles
56296  ldrh r8,[r4],#2 ;@ Fetch next opcode
56297  subs r5,r5,#18 ;@ Subtract cycles
56298  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56299  b CycloneEnd
56300
56301;@ ---------- [d0f8] adda.w $3333.w, a0 uses Opd0f8 ----------
56302Opd0f8:
56303  str r4,[r7,#0x50] ;@ Save prev PC + 2
56304  str r5,[r7,#0x5c] ;@ Save Cycles
56305
56306;@ EaCalc : Get '$3333.w' into r0:
56307  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
56308;@ EaRead : Read '$3333.w' (address in r0) into r0:
56309  str r4,[r7,#0x40] ;@ Save PC
56310  bic r0,r0,#0xff000000
56311  bl m68k_read16 ;@ Call read16(r0) handler
56312
56313;@ EaCalc : Get register index into r11:
56314  and r11,r8,#0x1e00
56315;@ EaRead : Read register[r11] into r1:
56316  ldr r1,[r7,r11,lsr #7]
56317
56318  mov r0,r0,asl #16
56319
56320  add r1,r1,r0,asr #16
56321
56322;@ EaWrite: r1 into register[r11]:
56323  str r1,[r7,r11,lsr #7]
56324
56325  ldr r5,[r7,#0x5c] ;@ Load Cycles
56326  ldrh r8,[r4],#2 ;@ Fetch next opcode
56327  subs r5,r5,#16 ;@ Subtract cycles
56328  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56329  b CycloneEnd
56330
56331;@ ---------- [d0f9] adda.w $33333333.l, a0 uses Opd0f9 ----------
56332Opd0f9:
56333  str r4,[r7,#0x50] ;@ Save prev PC + 2
56334  str r5,[r7,#0x5c] ;@ Save Cycles
56335
56336;@ EaCalc : Get '$33333333.l' into r0:
56337  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
56338  ldrh r0,[r4],#2
56339  orr r0,r0,r2,lsl #16
56340;@ EaRead : Read '$33333333.l' (address in r0) into r0:
56341  str r4,[r7,#0x40] ;@ Save PC
56342  bic r0,r0,#0xff000000
56343  bl m68k_read16 ;@ Call read16(r0) handler
56344
56345;@ EaCalc : Get register index into r11:
56346  and r11,r8,#0x1e00
56347;@ EaRead : Read register[r11] into r1:
56348  ldr r1,[r7,r11,lsr #7]
56349
56350  mov r0,r0,asl #16
56351
56352  add r1,r1,r0,asr #16
56353
56354;@ EaWrite: r1 into register[r11]:
56355  str r1,[r7,r11,lsr #7]
56356
56357  ldr r5,[r7,#0x5c] ;@ Load Cycles
56358  ldrh r8,[r4],#2 ;@ Fetch next opcode
56359  subs r5,r5,#20 ;@ Subtract cycles
56360  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56361  b CycloneEnd
56362
56363;@ ---------- [d0fa] adda.w ($3333,pc), a0; =3335 uses Opd0fa ----------
56364Opd0fa:
56365  str r4,[r7,#0x50] ;@ Save prev PC + 2
56366  str r5,[r7,#0x5c] ;@ Save Cycles
56367
56368;@ EaCalc : Get '($3333,pc)' into r0:
56369  ldr r0,[r7,#0x60] ;@ Get Memory base
56370  sub r0,r4,r0 ;@ Real PC
56371  ldrsh r2,[r4],#2 ;@ Fetch extension
56372  add r0,r2,r0 ;@ ($nn,PC)
56373;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
56374  str r4,[r7,#0x40] ;@ Save PC
56375  bic r0,r0,#0xff000000
56376  bl m68k_fetch16 ;@ Call fetch16(r0) handler
56377
56378;@ EaCalc : Get register index into r11:
56379  and r11,r8,#0x1e00
56380;@ EaRead : Read register[r11] into r1:
56381  ldr r1,[r7,r11,lsr #7]
56382
56383  mov r0,r0,asl #16
56384
56385  add r1,r1,r0,asr #16
56386
56387;@ EaWrite: r1 into register[r11]:
56388  str r1,[r7,r11,lsr #7]
56389
56390  ldr r5,[r7,#0x5c] ;@ Load Cycles
56391  ldrh r8,[r4],#2 ;@ Fetch next opcode
56392  subs r5,r5,#16 ;@ Subtract cycles
56393  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56394  b CycloneEnd
56395
56396;@ ---------- [d0fb] adda.w ($33,pc,d3.w*2), a0; =35 uses Opd0fb ----------
56397Opd0fb:
56398  str r4,[r7,#0x50] ;@ Save prev PC + 2
56399  str r5,[r7,#0x5c] ;@ Save Cycles
56400
56401;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
56402  ldr r0,[r7,#0x60] ;@ Get Memory base
56403  ldrh r3,[r4] ;@ Get extension word
56404  sub r0,r4,r0 ;@ r0=PC
56405  add r4,r4,#2
56406  mov r2,r3,lsr #10
56407  tst r3,#0x0800 ;@ Is Rn Word or Long
56408  and r2,r2,#0x3c ;@ r2=Index of Rn
56409  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
56410  ldrne   r2,[r7,r2] ;@ r2=Rn.l
56411  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
56412  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
56413  add r0,r2,r0 ;@ r0=Disp+PC+Rn
56414;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
56415  str r4,[r7,#0x40] ;@ Save PC
56416  bic r0,r0,#0xff000000
56417  bl m68k_fetch16 ;@ Call fetch16(r0) handler
56418
56419;@ EaCalc : Get register index into r11:
56420  and r11,r8,#0x1e00
56421;@ EaRead : Read register[r11] into r1:
56422  ldr r1,[r7,r11,lsr #7]
56423
56424  mov r0,r0,asl #16
56425
56426  add r1,r1,r0,asr #16
56427
56428;@ EaWrite: r1 into register[r11]:
56429  str r1,[r7,r11,lsr #7]
56430
56431  ldr r5,[r7,#0x5c] ;@ Load Cycles
56432  ldrh r8,[r4],#2 ;@ Fetch next opcode
56433  subs r5,r5,#18 ;@ Subtract cycles
56434  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56435  b CycloneEnd
56436
56437;@ ---------- [d0fc] adda.w #$3333, a0 uses Opd0fc ----------
56438Opd0fc:
56439;@ EaCalc : Get '#$3333' into r0:
56440  ldrsh r0,[r4],#2 ;@ Fetch immediate value
56441;@ EaRead : Read '#$3333' (address in r0) into r0:
56442
56443;@ EaCalc : Get register index into r11:
56444  and r11,r8,#0x1e00
56445;@ EaRead : Read register[r11] into r1:
56446  ldr r1,[r7,r11,lsr #7]
56447
56448  mov r0,r0,asl #16
56449
56450  add r1,r1,r0,asr #16
56451
56452;@ EaWrite: r1 into register[r11]:
56453  str r1,[r7,r11,lsr #7]
56454
56455  ldrh r8,[r4],#2 ;@ Fetch next opcode
56456  subs r5,r5,#12 ;@ Subtract cycles
56457  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56458  b CycloneEnd
56459
56460;@ ---------- [d100] addx.b d0, d0 uses Opd100 ----------
56461Opd100:
56462;@ Get src/dest reg vals
56463;@ EaCalc : Get register index into r6:
56464  and r6,r8,#0x0007
56465;@ EaRead : Read register[r6] into r6:
56466  ldr r6,[r7,r6,lsl #2]
56467
56468;@ EaCalc : Get register index into r11:
56469  and r11,r8,#0x0e00
56470;@ EaRead : Read register[r11] into r0:
56471  ldr r0,[r7,r11,lsr #7]
56472
56473  mov r6,r6,asl #24
56474
56475;@ Do arithmetic:
56476;@ Get X bit:
56477  ldr r2,[r7,#0x4c]
56478  tst r2,r2,lsl #3 ;@ Get into Carry
56479
56480;@ Make sure the carry bit will tip the balance:
56481  mvn r2,#0
56482  orr r6,r6,r2,lsr #8
56483
56484  adcs r1,r6,r0,asl #24
56485  orr r3,r10,#0xb0000000 ;@ for old Z
56486  mrs r10,cpsr ;@ r10=flags
56487  str r10,[r7,#0x4c] ;@ Save X bit
56488  movs r2,r1,lsr #24
56489  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
56490  andeq r10,r10,r3 ;@ fix Z
56491
56492;@ Save result:
56493;@ EaWrite: r1 into register[r11]:
56494  mov r1,r1,lsr #24
56495  strb r1,[r7,r11,lsr #7]
56496
56497  ldr r6,[r7,#0x54]
56498  ldrh r8,[r4],#2 ;@ Fetch next opcode
56499  subs r5,r5,#4 ;@ Subtract cycles
56500  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56501  b CycloneEnd
56502
56503;@ ---------- [d108] addx.b -(a0), -(a0) uses Opd108 ----------
56504Opd108:
56505  str r4,[r7,#0x50] ;@ Save prev PC + 2
56506  str r5,[r7,#0x5c] ;@ Save Cycles
56507
56508;@ Get src/dest EA vals
56509;@ EaCalc : Get '-(a0)' into r0:
56510  and r2,r8,#0x000f
56511  ldr r0,[r7,r2,lsl #2]
56512  sub r0,r0,#1 ;@ Pre-decrement An
56513  str r0,[r7,r2,lsl #2]
56514;@ EaRead : Read '-(a0)' (address in r0) into r6:
56515  str r4,[r7,#0x40] ;@ Save PC
56516  bic r0,r0,#0xff000000
56517  bl m68k_read8 ;@ Call read8(r0) handler
56518  mov r6,r0,asl #24
56519
56520;@ EaCalc : Get '-(a0)' into r11:
56521  and r2,r8,#0x1e00
56522  ldr r11,[r7,r2,lsr #7]
56523  sub r11,r11,#1 ;@ Pre-decrement An
56524  str r11,[r7,r2,lsr #7]
56525;@ EaRead : Read '-(a0)' (address in r11) into r0:
56526  bic r0,r11,#0xff000000
56527  bl m68k_read8 ;@ Call read8(r0) handler
56528
56529;@ Do arithmetic:
56530;@ Get X bit:
56531  ldr r2,[r7,#0x4c]
56532  tst r2,r2,lsl #3 ;@ Get into Carry
56533
56534;@ Make sure the carry bit will tip the balance:
56535  mvn r2,#0
56536  orr r6,r6,r2,lsr #8
56537
56538  adcs r1,r6,r0,asl #24
56539  orr r3,r10,#0xb0000000 ;@ for old Z
56540  mrs r10,cpsr ;@ r10=flags
56541  str r10,[r7,#0x4c] ;@ Save X bit
56542  movs r2,r1,lsr #24
56543  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
56544  andeq r10,r10,r3 ;@ fix Z
56545
56546;@ Save result:
56547;@ EaWrite: Write r1 into '-(a0)' (address in r11):
56548  mov r1,r1,lsr #24
56549  bic r0,r11,#0xff000000
56550  bl m68k_write8 ;@ Call write8(r0,r1) handler
56551
56552  ldr r6,[r7,#0x54]
56553  ldr r5,[r7,#0x5c] ;@ Load Cycles
56554  ldrh r8,[r4],#2 ;@ Fetch next opcode
56555  subs r5,r5,#18 ;@ Subtract cycles
56556  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56557  b CycloneEnd
56558
56559;@ ---------- [d10f] addx.b -(a7), -(a0) uses Opd10f ----------
56560Opd10f:
56561  str r4,[r7,#0x50] ;@ Save prev PC + 2
56562  str r5,[r7,#0x5c] ;@ Save Cycles
56563
56564;@ Get src/dest EA vals
56565;@ EaCalc : Get '-(a7)' into r0:
56566  ldr r0,[r7,#0x3c] ;@ A7
56567  sub r0,r0,#2 ;@ Pre-decrement An
56568  str r0,[r7,#0x3c] ;@ A7
56569;@ EaRead : Read '-(a7)' (address in r0) into r6:
56570  str r4,[r7,#0x40] ;@ Save PC
56571  bic r0,r0,#0xff000000
56572  bl m68k_read8 ;@ Call read8(r0) handler
56573  mov r6,r0,asl #24
56574
56575;@ EaCalc : Get '-(a0)' into r11:
56576  and r2,r8,#0x1e00
56577  ldr r11,[r7,r2,lsr #7]
56578  sub r11,r11,#1 ;@ Pre-decrement An
56579  str r11,[r7,r2,lsr #7]
56580;@ EaRead : Read '-(a0)' (address in r11) into r0:
56581  bic r0,r11,#0xff000000
56582  bl m68k_read8 ;@ Call read8(r0) handler
56583
56584;@ Do arithmetic:
56585;@ Get X bit:
56586  ldr r2,[r7,#0x4c]
56587  tst r2,r2,lsl #3 ;@ Get into Carry
56588
56589;@ Make sure the carry bit will tip the balance:
56590  mvn r2,#0
56591  orr r6,r6,r2,lsr #8
56592
56593  adcs r1,r6,r0,asl #24
56594  orr r3,r10,#0xb0000000 ;@ for old Z
56595  mrs r10,cpsr ;@ r10=flags
56596  str r10,[r7,#0x4c] ;@ Save X bit
56597  movs r2,r1,lsr #24
56598  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
56599  andeq r10,r10,r3 ;@ fix Z
56600
56601;@ Save result:
56602;@ EaWrite: Write r1 into '-(a0)' (address in r11):
56603  mov r1,r1,lsr #24
56604  bic r0,r11,#0xff000000
56605  bl m68k_write8 ;@ Call write8(r0,r1) handler
56606
56607  ldr r6,[r7,#0x54]
56608  ldr r5,[r7,#0x5c] ;@ Load Cycles
56609  ldrh r8,[r4],#2 ;@ Fetch next opcode
56610  subs r5,r5,#18 ;@ Subtract cycles
56611  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56612  b CycloneEnd
56613
56614;@ ---------- [d110] add.b d0, (a0) uses Opd110 ----------
56615Opd110:
56616  str r4,[r7,#0x50] ;@ Save prev PC + 2
56617  str r5,[r7,#0x5c] ;@ Save Cycles
56618
56619;@ EaCalc : Get '(a0)' into r11:
56620  and r2,r8,#0x000f
56621  orr r2,r2,#0x8 ;@ A0-7
56622  ldr r11,[r7,r2,lsl #2]
56623;@ EaRead : Read '(a0)' (address in r11) into r0:
56624  str r4,[r7,#0x40] ;@ Save PC
56625  bic r0,r11,#0xff000000
56626  bl m68k_read8 ;@ Call read8(r0) handler
56627
56628;@ EaCalc : Get register index into r1:
56629  and r1,r8,#0x0e00
56630;@ EaRead : Read register[r1] into r1:
56631  ldr r1,[r7,r1,lsr #7]
56632
56633;@ Do arithmetic:
56634  mov r0,r0,asl #24
56635  adds r1,r0,r1,asl #24
56636  mrs r10,cpsr ;@ r10=flags
56637  str r10,[r7,#0x4c] ;@ Save X bit
56638
56639;@ Save result:
56640  mov r1,r1,asr #24
56641;@ EaWrite: Write r1 into '(a0)' (address in r11):
56642  and r1,r1,#0xff
56643  bic r0,r11,#0xff000000
56644  bl m68k_write8 ;@ Call write8(r0,r1) handler
56645
56646  ldr r5,[r7,#0x5c] ;@ Load Cycles
56647  ldrh r8,[r4],#2 ;@ Fetch next opcode
56648  subs r5,r5,#12 ;@ Subtract cycles
56649  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56650  b CycloneEnd
56651
56652;@ ---------- [d118] add.b d0, (a0)+ uses Opd118 ----------
56653Opd118:
56654  str r4,[r7,#0x50] ;@ Save prev PC + 2
56655  str r5,[r7,#0x5c] ;@ Save Cycles
56656
56657;@ EaCalc : Get '(a0)+' into r11:
56658  and r2,r8,#0x000f
56659  ldr r11,[r7,r2,lsl #2]
56660  add r3,r11,#1 ;@ Post-increment An
56661  str r3,[r7,r2,lsl #2]
56662;@ EaRead : Read '(a0)+' (address in r11) into r0:
56663  str r4,[r7,#0x40] ;@ Save PC
56664  bic r0,r11,#0xff000000
56665  bl m68k_read8 ;@ Call read8(r0) handler
56666
56667;@ EaCalc : Get register index into r1:
56668  and r1,r8,#0x0e00
56669;@ EaRead : Read register[r1] into r1:
56670  ldr r1,[r7,r1,lsr #7]
56671
56672;@ Do arithmetic:
56673  mov r0,r0,asl #24
56674  adds r1,r0,r1,asl #24
56675  mrs r10,cpsr ;@ r10=flags
56676  str r10,[r7,#0x4c] ;@ Save X bit
56677
56678;@ Save result:
56679  mov r1,r1,asr #24
56680;@ EaWrite: Write r1 into '(a0)+' (address in r11):
56681  and r1,r1,#0xff
56682  bic r0,r11,#0xff000000
56683  bl m68k_write8 ;@ Call write8(r0,r1) handler
56684
56685  ldr r5,[r7,#0x5c] ;@ Load Cycles
56686  ldrh r8,[r4],#2 ;@ Fetch next opcode
56687  subs r5,r5,#12 ;@ Subtract cycles
56688  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56689  b CycloneEnd
56690
56691;@ ---------- [d11f] add.b d0, (a7)+ uses Opd11f ----------
56692Opd11f:
56693  str r4,[r7,#0x50] ;@ Save prev PC + 2
56694  str r5,[r7,#0x5c] ;@ Save Cycles
56695
56696;@ EaCalc : Get '(a7)+' into r11:
56697  ldr r11,[r7,#0x3c] ;@ A7
56698  add r3,r11,#2 ;@ Post-increment An
56699  str r3,[r7,#0x3c] ;@ A7
56700;@ EaRead : Read '(a7)+' (address in r11) into r0:
56701  str r4,[r7,#0x40] ;@ Save PC
56702  bic r0,r11,#0xff000000
56703  bl m68k_read8 ;@ Call read8(r0) handler
56704
56705;@ EaCalc : Get register index into r1:
56706  and r1,r8,#0x0e00
56707;@ EaRead : Read register[r1] into r1:
56708  ldr r1,[r7,r1,lsr #7]
56709
56710;@ Do arithmetic:
56711  mov r0,r0,asl #24
56712  adds r1,r0,r1,asl #24
56713  mrs r10,cpsr ;@ r10=flags
56714  str r10,[r7,#0x4c] ;@ Save X bit
56715
56716;@ Save result:
56717  mov r1,r1,asr #24
56718;@ EaWrite: Write r1 into '(a7)+' (address in r11):
56719  and r1,r1,#0xff
56720  bic r0,r11,#0xff000000
56721  bl m68k_write8 ;@ Call write8(r0,r1) handler
56722
56723  ldr r5,[r7,#0x5c] ;@ Load Cycles
56724  ldrh r8,[r4],#2 ;@ Fetch next opcode
56725  subs r5,r5,#12 ;@ Subtract cycles
56726  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56727  b CycloneEnd
56728
56729;@ ---------- [d120] add.b d0, -(a0) uses Opd120 ----------
56730Opd120:
56731  str r4,[r7,#0x50] ;@ Save prev PC + 2
56732  str r5,[r7,#0x5c] ;@ Save Cycles
56733
56734;@ EaCalc : Get '-(a0)' into r11:
56735  and r2,r8,#0x000f
56736  orr r2,r2,#0x8 ;@ A0-7
56737  ldr r11,[r7,r2,lsl #2]
56738  sub r11,r11,#1 ;@ Pre-decrement An
56739  str r11,[r7,r2,lsl #2]
56740;@ EaRead : Read '-(a0)' (address in r11) into r0:
56741  str r4,[r7,#0x40] ;@ Save PC
56742  bic r0,r11,#0xff000000
56743  bl m68k_read8 ;@ Call read8(r0) handler
56744
56745;@ EaCalc : Get register index into r1:
56746  and r1,r8,#0x0e00
56747;@ EaRead : Read register[r1] into r1:
56748  ldr r1,[r7,r1,lsr #7]
56749
56750;@ Do arithmetic:
56751  mov r0,r0,asl #24
56752  adds r1,r0,r1,asl #24
56753  mrs r10,cpsr ;@ r10=flags
56754  str r10,[r7,#0x4c] ;@ Save X bit
56755
56756;@ Save result:
56757  mov r1,r1,asr #24
56758;@ EaWrite: Write r1 into '-(a0)' (address in r11):
56759  and r1,r1,#0xff
56760  bic r0,r11,#0xff000000
56761  bl m68k_write8 ;@ Call write8(r0,r1) handler
56762
56763  ldr r5,[r7,#0x5c] ;@ Load Cycles
56764  ldrh r8,[r4],#2 ;@ Fetch next opcode
56765  subs r5,r5,#14 ;@ Subtract cycles
56766  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56767  b CycloneEnd
56768
56769;@ ---------- [d127] add.b d0, -(a7) uses Opd127 ----------
56770Opd127:
56771  str r4,[r7,#0x50] ;@ Save prev PC + 2
56772  str r5,[r7,#0x5c] ;@ Save Cycles
56773
56774;@ EaCalc : Get '-(a7)' into r11:
56775  ldr r11,[r7,#0x3c] ;@ A7
56776  sub r11,r11,#2 ;@ Pre-decrement An
56777  str r11,[r7,#0x3c] ;@ A7
56778;@ EaRead : Read '-(a7)' (address in r11) into r0:
56779  str r4,[r7,#0x40] ;@ Save PC
56780  bic r0,r11,#0xff000000
56781  bl m68k_read8 ;@ Call read8(r0) handler
56782
56783;@ EaCalc : Get register index into r1:
56784  and r1,r8,#0x0e00
56785;@ EaRead : Read register[r1] into r1:
56786  ldr r1,[r7,r1,lsr #7]
56787
56788;@ Do arithmetic:
56789  mov r0,r0,asl #24
56790  adds r1,r0,r1,asl #24
56791  mrs r10,cpsr ;@ r10=flags
56792  str r10,[r7,#0x4c] ;@ Save X bit
56793
56794;@ Save result:
56795  mov r1,r1,asr #24
56796;@ EaWrite: Write r1 into '-(a7)' (address in r11):
56797  and r1,r1,#0xff
56798  bic r0,r11,#0xff000000
56799  bl m68k_write8 ;@ Call write8(r0,r1) handler
56800
56801  ldr r5,[r7,#0x5c] ;@ Load Cycles
56802  ldrh r8,[r4],#2 ;@ Fetch next opcode
56803  subs r5,r5,#14 ;@ Subtract cycles
56804  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56805  b CycloneEnd
56806
56807;@ ---------- [d128] add.b d0, ($3333,a0) uses Opd128 ----------
56808Opd128:
56809  str r4,[r7,#0x50] ;@ Save prev PC + 2
56810  str r5,[r7,#0x5c] ;@ Save Cycles
56811
56812;@ EaCalc : Get '($3333,a0)' into r11:
56813  ldrsh r0,[r4],#2 ;@ Fetch offset
56814  and r2,r8,#0x000f
56815  ldr r2,[r7,r2,lsl #2]
56816  add r11,r0,r2 ;@ Add on offset
56817;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
56818  str r4,[r7,#0x40] ;@ Save PC
56819  bic r0,r11,#0xff000000
56820  bl m68k_read8 ;@ Call read8(r0) handler
56821
56822;@ EaCalc : Get register index into r1:
56823  and r1,r8,#0x0e00
56824;@ EaRead : Read register[r1] into r1:
56825  ldr r1,[r7,r1,lsr #7]
56826
56827;@ Do arithmetic:
56828  mov r0,r0,asl #24
56829  adds r1,r0,r1,asl #24
56830  mrs r10,cpsr ;@ r10=flags
56831  str r10,[r7,#0x4c] ;@ Save X bit
56832
56833;@ Save result:
56834  mov r1,r1,asr #24
56835;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
56836  and r1,r1,#0xff
56837  bic r0,r11,#0xff000000
56838  bl m68k_write8 ;@ Call write8(r0,r1) handler
56839
56840  ldr r5,[r7,#0x5c] ;@ Load Cycles
56841  ldrh r8,[r4],#2 ;@ Fetch next opcode
56842  subs r5,r5,#16 ;@ Subtract cycles
56843  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56844  b CycloneEnd
56845
56846;@ ---------- [d130] add.b d0, ($33,a0,d3.w*2) uses Opd130 ----------
56847Opd130:
56848  str r4,[r7,#0x50] ;@ Save prev PC + 2
56849  str r5,[r7,#0x5c] ;@ Save Cycles
56850
56851;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
56852;@ Get extension word into r3:
56853  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
56854  mov r2,r3,lsr #10
56855  tst r3,#0x0800 ;@ Is Rn Word or Long
56856  and r2,r2,#0x3c ;@ r2=Index of Rn
56857  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
56858  ldrne   r2,[r7,r2] ;@ r2=Rn.l
56859  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
56860  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
56861  and r2,r8,#0x000f
56862  orr r2,r2,#0x8 ;@ A0-7
56863  ldr r2,[r7,r2,lsl #2]
56864  add r11,r2,r3 ;@ r11=Disp+An+Rn
56865;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
56866  str r4,[r7,#0x40] ;@ Save PC
56867  bic r0,r11,#0xff000000
56868  bl m68k_read8 ;@ Call read8(r0) handler
56869
56870;@ EaCalc : Get register index into r1:
56871  and r1,r8,#0x0e00
56872;@ EaRead : Read register[r1] into r1:
56873  ldr r1,[r7,r1,lsr #7]
56874
56875;@ Do arithmetic:
56876  mov r0,r0,asl #24
56877  adds r1,r0,r1,asl #24
56878  mrs r10,cpsr ;@ r10=flags
56879  str r10,[r7,#0x4c] ;@ Save X bit
56880
56881;@ Save result:
56882  mov r1,r1,asr #24
56883;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
56884  and r1,r1,#0xff
56885  bic r0,r11,#0xff000000
56886  bl m68k_write8 ;@ Call write8(r0,r1) handler
56887
56888  ldr r5,[r7,#0x5c] ;@ Load Cycles
56889  ldrh r8,[r4],#2 ;@ Fetch next opcode
56890  subs r5,r5,#18 ;@ Subtract cycles
56891  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56892  b CycloneEnd
56893
56894;@ ---------- [d138] add.b d0, $3333.w uses Opd138 ----------
56895Opd138:
56896  str r4,[r7,#0x50] ;@ Save prev PC + 2
56897  str r5,[r7,#0x5c] ;@ Save Cycles
56898
56899;@ EaCalc : Get '$3333.w' into r11:
56900  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
56901;@ EaRead : Read '$3333.w' (address in r11) into r0:
56902  str r4,[r7,#0x40] ;@ Save PC
56903  bic r0,r11,#0xff000000
56904  bl m68k_read8 ;@ Call read8(r0) handler
56905
56906;@ EaCalc : Get register index into r1:
56907  and r1,r8,#0x0e00
56908;@ EaRead : Read register[r1] into r1:
56909  ldr r1,[r7,r1,lsr #7]
56910
56911;@ Do arithmetic:
56912  mov r0,r0,asl #24
56913  adds r1,r0,r1,asl #24
56914  mrs r10,cpsr ;@ r10=flags
56915  str r10,[r7,#0x4c] ;@ Save X bit
56916
56917;@ Save result:
56918  mov r1,r1,asr #24
56919;@ EaWrite: Write r1 into '$3333.w' (address in r11):
56920  and r1,r1,#0xff
56921  bic r0,r11,#0xff000000
56922  bl m68k_write8 ;@ Call write8(r0,r1) handler
56923
56924  ldr r5,[r7,#0x5c] ;@ Load Cycles
56925  ldrh r8,[r4],#2 ;@ Fetch next opcode
56926  subs r5,r5,#16 ;@ Subtract cycles
56927  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56928  b CycloneEnd
56929
56930;@ ---------- [d139] add.b d0, $33333333.l uses Opd139 ----------
56931Opd139:
56932  str r4,[r7,#0x50] ;@ Save prev PC + 2
56933  str r5,[r7,#0x5c] ;@ Save Cycles
56934
56935;@ EaCalc : Get '$33333333.l' into r11:
56936  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
56937  ldrh r0,[r4],#2
56938  orr r11,r0,r2,lsl #16
56939;@ EaRead : Read '$33333333.l' (address in r11) into r0:
56940  str r4,[r7,#0x40] ;@ Save PC
56941  bic r0,r11,#0xff000000
56942  bl m68k_read8 ;@ Call read8(r0) handler
56943
56944;@ EaCalc : Get register index into r1:
56945  and r1,r8,#0x0e00
56946;@ EaRead : Read register[r1] into r1:
56947  ldr r1,[r7,r1,lsr #7]
56948
56949;@ Do arithmetic:
56950  mov r0,r0,asl #24
56951  adds r1,r0,r1,asl #24
56952  mrs r10,cpsr ;@ r10=flags
56953  str r10,[r7,#0x4c] ;@ Save X bit
56954
56955;@ Save result:
56956  mov r1,r1,asr #24
56957;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
56958  and r1,r1,#0xff
56959  bic r0,r11,#0xff000000
56960  bl m68k_write8 ;@ Call write8(r0,r1) handler
56961
56962  ldr r5,[r7,#0x5c] ;@ Load Cycles
56963  ldrh r8,[r4],#2 ;@ Fetch next opcode
56964  subs r5,r5,#20 ;@ Subtract cycles
56965  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56966  b CycloneEnd
56967
56968;@ ---------- [d140] addx.w d0, d0 uses Opd140 ----------
56969Opd140:
56970;@ Get src/dest reg vals
56971;@ EaCalc : Get register index into r6:
56972  and r6,r8,#0x0007
56973;@ EaRead : Read register[r6] into r6:
56974  ldr r6,[r7,r6,lsl #2]
56975
56976;@ EaCalc : Get register index into r11:
56977  and r11,r8,#0x0e00
56978  mov r11,r11,lsr #7
56979;@ EaRead : Read register[r11] into r0:
56980  ldr r0,[r7,r11]
56981
56982  mov r6,r6,asl #16
56983
56984;@ Do arithmetic:
56985;@ Get X bit:
56986  ldr r2,[r7,#0x4c]
56987  tst r2,r2,lsl #3 ;@ Get into Carry
56988
56989;@ Make sure the carry bit will tip the balance:
56990  mvn r2,#0
56991  orr r6,r6,r2,lsr #16
56992
56993  adcs r1,r6,r0,asl #16
56994  orr r3,r10,#0xb0000000 ;@ for old Z
56995  mrs r10,cpsr ;@ r10=flags
56996  str r10,[r7,#0x4c] ;@ Save X bit
56997  movs r2,r1,lsr #16
56998  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
56999  andeq r10,r10,r3 ;@ fix Z
57000
57001;@ Save result:
57002;@ EaWrite: r1 into register[r11]:
57003  mov r1,r1,lsr #16
57004  strh r1,[r7,r11]
57005
57006  ldr r6,[r7,#0x54]
57007  ldrh r8,[r4],#2 ;@ Fetch next opcode
57008  subs r5,r5,#4 ;@ Subtract cycles
57009  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57010  b CycloneEnd
57011
57012;@ ---------- [d148] addx.w -(a0), -(a0) uses Opd148 ----------
57013Opd148:
57014  str r4,[r7,#0x50] ;@ Save prev PC + 2
57015  str r5,[r7,#0x5c] ;@ Save Cycles
57016
57017;@ Get src/dest EA vals
57018;@ EaCalc : Get '-(a0)' into r0:
57019  and r2,r8,#0x000f
57020  ldr r0,[r7,r2,lsl #2]
57021  sub r0,r0,#2 ;@ Pre-decrement An
57022  str r0,[r7,r2,lsl #2]
57023;@ EaRead : Read '-(a0)' (address in r0) into r6:
57024  str r4,[r7,#0x40] ;@ Save PC
57025  bic r0,r0,#0xff000000
57026  bl m68k_read16 ;@ Call read16(r0) handler
57027  mov r6,r0,asl #16
57028
57029;@ EaCalc : Get '-(a0)' into r11:
57030  and r2,r8,#0x1e00
57031  ldr r11,[r7,r2,lsr #7]
57032  sub r11,r11,#2 ;@ Pre-decrement An
57033  str r11,[r7,r2,lsr #7]
57034;@ EaRead : Read '-(a0)' (address in r11) into r0:
57035  bic r0,r11,#0xff000000
57036  bl m68k_read16 ;@ Call read16(r0) handler
57037
57038;@ Do arithmetic:
57039;@ Get X bit:
57040  ldr r2,[r7,#0x4c]
57041  tst r2,r2,lsl #3 ;@ Get into Carry
57042
57043;@ Make sure the carry bit will tip the balance:
57044  mvn r2,#0
57045  orr r6,r6,r2,lsr #16
57046
57047  adcs r1,r6,r0,asl #16
57048  orr r3,r10,#0xb0000000 ;@ for old Z
57049  mrs r10,cpsr ;@ r10=flags
57050  str r10,[r7,#0x4c] ;@ Save X bit
57051  movs r2,r1,lsr #16
57052  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
57053  andeq r10,r10,r3 ;@ fix Z
57054
57055;@ Save result:
57056;@ EaWrite: Write r1 into '-(a0)' (address in r11):
57057  mov r1,r1,lsr #16
57058  bic r0,r11,#0xff000000
57059  bl m68k_write16 ;@ Call write16(r0,r1) handler
57060
57061  ldr r6,[r7,#0x54]
57062  ldr r5,[r7,#0x5c] ;@ Load Cycles
57063  ldrh r8,[r4],#2 ;@ Fetch next opcode
57064  subs r5,r5,#18 ;@ Subtract cycles
57065  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57066  b CycloneEnd
57067
57068;@ ---------- [d150] add.w d0, (a0) uses Opd150 ----------
57069Opd150:
57070  str r4,[r7,#0x50] ;@ Save prev PC + 2
57071  str r5,[r7,#0x5c] ;@ Save Cycles
57072
57073;@ EaCalc : Get '(a0)' into r11:
57074  and r2,r8,#0x000f
57075  orr r2,r2,#0x8 ;@ A0-7
57076  ldr r11,[r7,r2,lsl #2]
57077;@ EaRead : Read '(a0)' (address in r11) into r0:
57078  str r4,[r7,#0x40] ;@ Save PC
57079  bic r0,r11,#0xff000000
57080  bl m68k_read16 ;@ Call read16(r0) handler
57081
57082;@ EaCalc : Get register index into r1:
57083  and r1,r8,#0x0e00
57084;@ EaRead : Read register[r1] into r1:
57085  ldr r1,[r7,r1,lsr #7]
57086
57087;@ Do arithmetic:
57088  mov r0,r0,asl #16
57089  adds r1,r0,r1,asl #16
57090  mrs r10,cpsr ;@ r10=flags
57091  str r10,[r7,#0x4c] ;@ Save X bit
57092
57093;@ Save result:
57094  mov r1,r1,asr #16
57095;@ EaWrite: Write r1 into '(a0)' (address in r11):
57096  uxth r1,r1 ;@ zero extend
57097  bic r0,r11,#0xff000000
57098  bl m68k_write16 ;@ Call write16(r0,r1) handler
57099
57100  ldr r5,[r7,#0x5c] ;@ Load Cycles
57101  ldrh r8,[r4],#2 ;@ Fetch next opcode
57102  subs r5,r5,#12 ;@ Subtract cycles
57103  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57104  b CycloneEnd
57105
57106;@ ---------- [d158] add.w d0, (a0)+ uses Opd158 ----------
57107Opd158:
57108  str r4,[r7,#0x50] ;@ Save prev PC + 2
57109  str r5,[r7,#0x5c] ;@ Save Cycles
57110
57111;@ EaCalc : Get '(a0)+' into r11:
57112  and r2,r8,#0x000f
57113  ldr r11,[r7,r2,lsl #2]
57114  add r3,r11,#2 ;@ Post-increment An
57115  str r3,[r7,r2,lsl #2]
57116;@ EaRead : Read '(a0)+' (address in r11) into r0:
57117  str r4,[r7,#0x40] ;@ Save PC
57118  bic r0,r11,#0xff000000
57119  bl m68k_read16 ;@ Call read16(r0) handler
57120
57121;@ EaCalc : Get register index into r1:
57122  and r1,r8,#0x0e00
57123;@ EaRead : Read register[r1] into r1:
57124  ldr r1,[r7,r1,lsr #7]
57125
57126;@ Do arithmetic:
57127  mov r0,r0,asl #16
57128  adds r1,r0,r1,asl #16
57129  mrs r10,cpsr ;@ r10=flags
57130  str r10,[r7,#0x4c] ;@ Save X bit
57131
57132;@ Save result:
57133  mov r1,r1,asr #16
57134;@ EaWrite: Write r1 into '(a0)+' (address in r11):
57135  uxth r1,r1 ;@ zero extend
57136  bic r0,r11,#0xff000000
57137  bl m68k_write16 ;@ Call write16(r0,r1) handler
57138
57139  ldr r5,[r7,#0x5c] ;@ Load Cycles
57140  ldrh r8,[r4],#2 ;@ Fetch next opcode
57141  subs r5,r5,#12 ;@ Subtract cycles
57142  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57143  b CycloneEnd
57144
57145;@ ---------- [d160] add.w d0, -(a0) uses Opd160 ----------
57146Opd160:
57147  str r4,[r7,#0x50] ;@ Save prev PC + 2
57148  str r5,[r7,#0x5c] ;@ Save Cycles
57149
57150;@ EaCalc : Get '-(a0)' into r11:
57151  and r2,r8,#0x000f
57152  orr r2,r2,#0x8 ;@ A0-7
57153  ldr r11,[r7,r2,lsl #2]
57154  sub r11,r11,#2 ;@ Pre-decrement An
57155  str r11,[r7,r2,lsl #2]
57156;@ EaRead : Read '-(a0)' (address in r11) into r0:
57157  str r4,[r7,#0x40] ;@ Save PC
57158  bic r0,r11,#0xff000000
57159  bl m68k_read16 ;@ Call read16(r0) handler
57160
57161;@ EaCalc : Get register index into r1:
57162  and r1,r8,#0x0e00
57163;@ EaRead : Read register[r1] into r1:
57164  ldr r1,[r7,r1,lsr #7]
57165
57166;@ Do arithmetic:
57167  mov r0,r0,asl #16
57168  adds r1,r0,r1,asl #16
57169  mrs r10,cpsr ;@ r10=flags
57170  str r10,[r7,#0x4c] ;@ Save X bit
57171
57172;@ Save result:
57173  mov r1,r1,asr #16
57174;@ EaWrite: Write r1 into '-(a0)' (address in r11):
57175  uxth r1,r1 ;@ zero extend
57176  bic r0,r11,#0xff000000
57177  bl m68k_write16 ;@ Call write16(r0,r1) handler
57178
57179  ldr r5,[r7,#0x5c] ;@ Load Cycles
57180  ldrh r8,[r4],#2 ;@ Fetch next opcode
57181  subs r5,r5,#14 ;@ Subtract cycles
57182  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57183  b CycloneEnd
57184
57185;@ ---------- [d168] add.w d0, ($3333,a0) uses Opd168 ----------
57186Opd168:
57187  str r4,[r7,#0x50] ;@ Save prev PC + 2
57188  str r5,[r7,#0x5c] ;@ Save Cycles
57189
57190;@ EaCalc : Get '($3333,a0)' into r11:
57191  ldrsh r0,[r4],#2 ;@ Fetch offset
57192  and r2,r8,#0x000f
57193  ldr r2,[r7,r2,lsl #2]
57194  add r11,r0,r2 ;@ Add on offset
57195;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
57196  str r4,[r7,#0x40] ;@ Save PC
57197  bic r0,r11,#0xff000000
57198  bl m68k_read16 ;@ Call read16(r0) handler
57199
57200;@ EaCalc : Get register index into r1:
57201  and r1,r8,#0x0e00
57202;@ EaRead : Read register[r1] into r1:
57203  ldr r1,[r7,r1,lsr #7]
57204
57205;@ Do arithmetic:
57206  mov r0,r0,asl #16
57207  adds r1,r0,r1,asl #16
57208  mrs r10,cpsr ;@ r10=flags
57209  str r10,[r7,#0x4c] ;@ Save X bit
57210
57211;@ Save result:
57212  mov r1,r1,asr #16
57213;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
57214  uxth r1,r1 ;@ zero extend
57215  bic r0,r11,#0xff000000
57216  bl m68k_write16 ;@ Call write16(r0,r1) handler
57217
57218  ldr r5,[r7,#0x5c] ;@ Load Cycles
57219  ldrh r8,[r4],#2 ;@ Fetch next opcode
57220  subs r5,r5,#16 ;@ Subtract cycles
57221  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57222  b CycloneEnd
57223
57224;@ ---------- [d170] add.w d0, ($33,a0,d3.w*2) uses Opd170 ----------
57225Opd170:
57226  str r4,[r7,#0x50] ;@ Save prev PC + 2
57227  str r5,[r7,#0x5c] ;@ Save Cycles
57228
57229;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
57230;@ Get extension word into r3:
57231  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
57232  mov r2,r3,lsr #10
57233  tst r3,#0x0800 ;@ Is Rn Word or Long
57234  and r2,r2,#0x3c ;@ r2=Index of Rn
57235  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
57236  ldrne   r2,[r7,r2] ;@ r2=Rn.l
57237  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
57238  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
57239  and r2,r8,#0x000f
57240  orr r2,r2,#0x8 ;@ A0-7
57241  ldr r2,[r7,r2,lsl #2]
57242  add r11,r2,r3 ;@ r11=Disp+An+Rn
57243;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
57244  str r4,[r7,#0x40] ;@ Save PC
57245  bic r0,r11,#0xff000000
57246  bl m68k_read16 ;@ Call read16(r0) handler
57247
57248;@ EaCalc : Get register index into r1:
57249  and r1,r8,#0x0e00
57250;@ EaRead : Read register[r1] into r1:
57251  ldr r1,[r7,r1,lsr #7]
57252
57253;@ Do arithmetic:
57254  mov r0,r0,asl #16
57255  adds r1,r0,r1,asl #16
57256  mrs r10,cpsr ;@ r10=flags
57257  str r10,[r7,#0x4c] ;@ Save X bit
57258
57259;@ Save result:
57260  mov r1,r1,asr #16
57261;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
57262  uxth r1,r1 ;@ zero extend
57263  bic r0,r11,#0xff000000
57264  bl m68k_write16 ;@ Call write16(r0,r1) handler
57265
57266  ldr r5,[r7,#0x5c] ;@ Load Cycles
57267  ldrh r8,[r4],#2 ;@ Fetch next opcode
57268  subs r5,r5,#18 ;@ Subtract cycles
57269  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57270  b CycloneEnd
57271
57272;@ ---------- [d178] add.w d0, $3333.w uses Opd178 ----------
57273Opd178:
57274  str r4,[r7,#0x50] ;@ Save prev PC + 2
57275  str r5,[r7,#0x5c] ;@ Save Cycles
57276
57277;@ EaCalc : Get '$3333.w' into r11:
57278  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
57279;@ EaRead : Read '$3333.w' (address in r11) into r0:
57280  str r4,[r7,#0x40] ;@ Save PC
57281  bic r0,r11,#0xff000000
57282  bl m68k_read16 ;@ Call read16(r0) handler
57283
57284;@ EaCalc : Get register index into r1:
57285  and r1,r8,#0x0e00
57286;@ EaRead : Read register[r1] into r1:
57287  ldr r1,[r7,r1,lsr #7]
57288
57289;@ Do arithmetic:
57290  mov r0,r0,asl #16
57291  adds r1,r0,r1,asl #16
57292  mrs r10,cpsr ;@ r10=flags
57293  str r10,[r7,#0x4c] ;@ Save X bit
57294
57295;@ Save result:
57296  mov r1,r1,asr #16
57297;@ EaWrite: Write r1 into '$3333.w' (address in r11):
57298  uxth r1,r1 ;@ zero extend
57299  bic r0,r11,#0xff000000
57300  bl m68k_write16 ;@ Call write16(r0,r1) handler
57301
57302  ldr r5,[r7,#0x5c] ;@ Load Cycles
57303  ldrh r8,[r4],#2 ;@ Fetch next opcode
57304  subs r5,r5,#16 ;@ Subtract cycles
57305  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57306  b CycloneEnd
57307
57308;@ ---------- [d179] add.w d0, $33333333.l uses Opd179 ----------
57309Opd179:
57310  str r4,[r7,#0x50] ;@ Save prev PC + 2
57311  str r5,[r7,#0x5c] ;@ Save Cycles
57312
57313;@ EaCalc : Get '$33333333.l' into r11:
57314  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
57315  ldrh r0,[r4],#2
57316  orr r11,r0,r2,lsl #16
57317;@ EaRead : Read '$33333333.l' (address in r11) into r0:
57318  str r4,[r7,#0x40] ;@ Save PC
57319  bic r0,r11,#0xff000000
57320  bl m68k_read16 ;@ Call read16(r0) handler
57321
57322;@ EaCalc : Get register index into r1:
57323  and r1,r8,#0x0e00
57324;@ EaRead : Read register[r1] into r1:
57325  ldr r1,[r7,r1,lsr #7]
57326
57327;@ Do arithmetic:
57328  mov r0,r0,asl #16
57329  adds r1,r0,r1,asl #16
57330  mrs r10,cpsr ;@ r10=flags
57331  str r10,[r7,#0x4c] ;@ Save X bit
57332
57333;@ Save result:
57334  mov r1,r1,asr #16
57335;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
57336  uxth r1,r1 ;@ zero extend
57337  bic r0,r11,#0xff000000
57338  bl m68k_write16 ;@ Call write16(r0,r1) handler
57339
57340  ldr r5,[r7,#0x5c] ;@ Load Cycles
57341  ldrh r8,[r4],#2 ;@ Fetch next opcode
57342  subs r5,r5,#20 ;@ Subtract cycles
57343  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57344  b CycloneEnd
57345
57346;@ ---------- [d180] addx.l d0, d0 uses Opd180 ----------
57347Opd180:
57348;@ Get src/dest reg vals
57349;@ EaCalc : Get register index into r6:
57350  and r6,r8,#0x0007
57351;@ EaRead : Read register[r6] into r6:
57352  ldr r6,[r7,r6,lsl #2]
57353
57354;@ EaCalc : Get register index into r11:
57355  and r11,r8,#0x0e00
57356;@ EaRead : Read register[r11] into r0:
57357  ldr r0,[r7,r11,lsr #7]
57358
57359;@ Do arithmetic:
57360;@ Get X bit:
57361  ldr r2,[r7,#0x4c]
57362  tst r2,r2,lsl #3 ;@ Get into Carry
57363
57364  adcs r1,r6,r0
57365  orr r3,r10,#0xb0000000 ;@ for old Z
57366  mrs r10,cpsr ;@ r10=flags
57367  str r10,[r7,#0x4c] ;@ Save X bit
57368  andeq r10,r10,r3 ;@ fix Z
57369
57370;@ Save result:
57371;@ EaWrite: r1 into register[r11]:
57372  str r1,[r7,r11,lsr #7]
57373
57374  ldr r6,[r7,#0x54]
57375  ldrh r8,[r4],#2 ;@ Fetch next opcode
57376  subs r5,r5,#8 ;@ Subtract cycles
57377  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57378  b CycloneEnd
57379
57380;@ ---------- [d188] addx.l -(a0), -(a0) uses Opd188 ----------
57381Opd188:
57382  str r4,[r7,#0x50] ;@ Save prev PC + 2
57383  str r5,[r7,#0x5c] ;@ Save Cycles
57384
57385;@ Get src/dest EA vals
57386;@ EaCalc : Get '-(a0)' into r0:
57387  and r2,r8,#0x000f
57388  ldr r0,[r7,r2,lsl #2]
57389  sub r0,r0,#4 ;@ Pre-decrement An
57390  str r0,[r7,r2,lsl #2]
57391;@ EaRead : Read '-(a0)' (address in r0) into r6:
57392  str r4,[r7,#0x40] ;@ Save PC
57393  bic r0,r0,#0xff000000
57394  bl m68k_read32 ;@ Call read32(r0) handler
57395  mov r6,r0
57396
57397;@ EaCalc : Get '-(a0)' into r11:
57398  and r2,r8,#0x1e00
57399  ldr r11,[r7,r2,lsr #7]
57400  sub r11,r11,#4 ;@ Pre-decrement An
57401  str r11,[r7,r2,lsr #7]
57402;@ EaRead : Read '-(a0)' (address in r11) into r0:
57403  bic r0,r11,#0xff000000
57404  bl m68k_read32 ;@ Call read32(r0) handler
57405
57406;@ Do arithmetic:
57407;@ Get X bit:
57408  ldr r2,[r7,#0x4c]
57409  tst r2,r2,lsl #3 ;@ Get into Carry
57410
57411  adcs r1,r6,r0
57412  orr r3,r10,#0xb0000000 ;@ for old Z
57413  mrs r10,cpsr ;@ r10=flags
57414  str r10,[r7,#0x4c] ;@ Save X bit
57415  andeq r10,r10,r3 ;@ fix Z
57416
57417;@ Save result:
57418;@ EaWrite: Write r1 into '-(a0)' (address in r11):
57419  bic r0,r11,#0xff000000
57420  bl m68k_write32 ;@ Call write32(r0,r1) handler
57421
57422  ldr r6,[r7,#0x54]
57423  ldr r5,[r7,#0x5c] ;@ Load Cycles
57424  ldrh r8,[r4],#2 ;@ Fetch next opcode
57425  subs r5,r5,#30 ;@ Subtract cycles
57426  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57427  b CycloneEnd
57428
57429;@ ---------- [d190] add.l d0, (a0) uses Opd190 ----------
57430Opd190:
57431  str r4,[r7,#0x50] ;@ Save prev PC + 2
57432  str r5,[r7,#0x5c] ;@ Save Cycles
57433
57434;@ EaCalc : Get '(a0)' into r11:
57435  and r2,r8,#0x000f
57436  orr r2,r2,#0x8 ;@ A0-7
57437  ldr r11,[r7,r2,lsl #2]
57438;@ EaRead : Read '(a0)' (address in r11) into r0:
57439  str r4,[r7,#0x40] ;@ Save PC
57440  bic r0,r11,#0xff000000
57441  bl m68k_read32 ;@ Call read32(r0) handler
57442
57443;@ EaCalc : Get register index into r1:
57444  and r1,r8,#0x0e00
57445;@ EaRead : Read register[r1] into r1:
57446  ldr r1,[r7,r1,lsr #7]
57447
57448;@ Do arithmetic:
57449  adds r1,r0,r1
57450  mrs r10,cpsr ;@ r10=flags
57451  str r10,[r7,#0x4c] ;@ Save X bit
57452
57453;@ Save result:
57454;@ EaWrite: Write r1 into '(a0)' (address in r11):
57455  bic r0,r11,#0xff000000
57456  bl m68k_write32 ;@ Call write32(r0,r1) handler
57457
57458  ldr r5,[r7,#0x5c] ;@ Load Cycles
57459  ldrh r8,[r4],#2 ;@ Fetch next opcode
57460  subs r5,r5,#20 ;@ Subtract cycles
57461  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57462  b CycloneEnd
57463
57464;@ ---------- [d198] add.l d0, (a0)+ uses Opd198 ----------
57465Opd198:
57466  str r4,[r7,#0x50] ;@ Save prev PC + 2
57467  str r5,[r7,#0x5c] ;@ Save Cycles
57468
57469;@ EaCalc : Get '(a0)+' into r11:
57470  and r2,r8,#0x000f
57471  ldr r11,[r7,r2,lsl #2]
57472  add r3,r11,#4 ;@ Post-increment An
57473  str r3,[r7,r2,lsl #2]
57474;@ EaRead : Read '(a0)+' (address in r11) into r0:
57475  str r4,[r7,#0x40] ;@ Save PC
57476  bic r0,r11,#0xff000000
57477  bl m68k_read32 ;@ Call read32(r0) handler
57478
57479;@ EaCalc : Get register index into r1:
57480  and r1,r8,#0x0e00
57481;@ EaRead : Read register[r1] into r1:
57482  ldr r1,[r7,r1,lsr #7]
57483
57484;@ Do arithmetic:
57485  adds r1,r0,r1
57486  mrs r10,cpsr ;@ r10=flags
57487  str r10,[r7,#0x4c] ;@ Save X bit
57488
57489;@ Save result:
57490;@ EaWrite: Write r1 into '(a0)+' (address in r11):
57491  bic r0,r11,#0xff000000
57492  bl m68k_write32 ;@ Call write32(r0,r1) handler
57493
57494  ldr r5,[r7,#0x5c] ;@ Load Cycles
57495  ldrh r8,[r4],#2 ;@ Fetch next opcode
57496  subs r5,r5,#20 ;@ Subtract cycles
57497  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57498  b CycloneEnd
57499
57500;@ ---------- [d1a0] add.l d0, -(a0) uses Opd1a0 ----------
57501Opd1a0:
57502  str r4,[r7,#0x50] ;@ Save prev PC + 2
57503  str r5,[r7,#0x5c] ;@ Save Cycles
57504
57505;@ EaCalc : Get '-(a0)' into r11:
57506  and r2,r8,#0x000f
57507  orr r2,r2,#0x8 ;@ A0-7
57508  ldr r11,[r7,r2,lsl #2]
57509  sub r11,r11,#4 ;@ Pre-decrement An
57510  str r11,[r7,r2,lsl #2]
57511;@ EaRead : Read '-(a0)' (address in r11) into r0:
57512  str r4,[r7,#0x40] ;@ Save PC
57513  bic r0,r11,#0xff000000
57514  bl m68k_read32 ;@ Call read32(r0) handler
57515
57516;@ EaCalc : Get register index into r1:
57517  and r1,r8,#0x0e00
57518;@ EaRead : Read register[r1] into r1:
57519  ldr r1,[r7,r1,lsr #7]
57520
57521;@ Do arithmetic:
57522  adds r1,r0,r1
57523  mrs r10,cpsr ;@ r10=flags
57524  str r10,[r7,#0x4c] ;@ Save X bit
57525
57526;@ Save result:
57527;@ EaWrite: Write r1 into '-(a0)' (address in r11):
57528  bic r0,r11,#0xff000000
57529  bl m68k_write32 ;@ Call write32(r0,r1) handler
57530
57531  ldr r5,[r7,#0x5c] ;@ Load Cycles
57532  ldrh r8,[r4],#2 ;@ Fetch next opcode
57533  subs r5,r5,#22 ;@ Subtract cycles
57534  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57535  b CycloneEnd
57536
57537;@ ---------- [d1a8] add.l d0, ($3333,a0) uses Opd1a8 ----------
57538Opd1a8:
57539  str r4,[r7,#0x50] ;@ Save prev PC + 2
57540  str r5,[r7,#0x5c] ;@ Save Cycles
57541
57542;@ EaCalc : Get '($3333,a0)' into r11:
57543  ldrsh r0,[r4],#2 ;@ Fetch offset
57544  and r2,r8,#0x000f
57545  ldr r2,[r7,r2,lsl #2]
57546  add r11,r0,r2 ;@ Add on offset
57547;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
57548  str r4,[r7,#0x40] ;@ Save PC
57549  bic r0,r11,#0xff000000
57550  bl m68k_read32 ;@ Call read32(r0) handler
57551
57552;@ EaCalc : Get register index into r1:
57553  and r1,r8,#0x0e00
57554;@ EaRead : Read register[r1] into r1:
57555  ldr r1,[r7,r1,lsr #7]
57556
57557;@ Do arithmetic:
57558  adds r1,r0,r1
57559  mrs r10,cpsr ;@ r10=flags
57560  str r10,[r7,#0x4c] ;@ Save X bit
57561
57562;@ Save result:
57563;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
57564  bic r0,r11,#0xff000000
57565  bl m68k_write32 ;@ Call write32(r0,r1) handler
57566
57567  ldr r5,[r7,#0x5c] ;@ Load Cycles
57568  ldrh r8,[r4],#2 ;@ Fetch next opcode
57569  subs r5,r5,#24 ;@ Subtract cycles
57570  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57571  b CycloneEnd
57572
57573;@ ---------- [d1b0] add.l d0, ($33,a0,d3.w*2) uses Opd1b0 ----------
57574Opd1b0:
57575  str r4,[r7,#0x50] ;@ Save prev PC + 2
57576  str r5,[r7,#0x5c] ;@ Save Cycles
57577
57578;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
57579;@ Get extension word into r3:
57580  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
57581  mov r2,r3,lsr #10
57582  tst r3,#0x0800 ;@ Is Rn Word or Long
57583  and r2,r2,#0x3c ;@ r2=Index of Rn
57584  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
57585  ldrne   r2,[r7,r2] ;@ r2=Rn.l
57586  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
57587  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
57588  and r2,r8,#0x000f
57589  orr r2,r2,#0x8 ;@ A0-7
57590  ldr r2,[r7,r2,lsl #2]
57591  add r11,r2,r3 ;@ r11=Disp+An+Rn
57592;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
57593  str r4,[r7,#0x40] ;@ Save PC
57594  bic r0,r11,#0xff000000
57595  bl m68k_read32 ;@ Call read32(r0) handler
57596
57597;@ EaCalc : Get register index into r1:
57598  and r1,r8,#0x0e00
57599;@ EaRead : Read register[r1] into r1:
57600  ldr r1,[r7,r1,lsr #7]
57601
57602;@ Do arithmetic:
57603  adds r1,r0,r1
57604  mrs r10,cpsr ;@ r10=flags
57605  str r10,[r7,#0x4c] ;@ Save X bit
57606
57607;@ Save result:
57608;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
57609  bic r0,r11,#0xff000000
57610  bl m68k_write32 ;@ Call write32(r0,r1) handler
57611
57612  ldr r5,[r7,#0x5c] ;@ Load Cycles
57613  ldrh r8,[r4],#2 ;@ Fetch next opcode
57614  subs r5,r5,#26 ;@ Subtract cycles
57615  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57616  b CycloneEnd
57617
57618;@ ---------- [d1b8] add.l d0, $3333.w uses Opd1b8 ----------
57619Opd1b8:
57620  str r4,[r7,#0x50] ;@ Save prev PC + 2
57621  str r5,[r7,#0x5c] ;@ Save Cycles
57622
57623;@ EaCalc : Get '$3333.w' into r11:
57624  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
57625;@ EaRead : Read '$3333.w' (address in r11) into r0:
57626  str r4,[r7,#0x40] ;@ Save PC
57627  bic r0,r11,#0xff000000
57628  bl m68k_read32 ;@ Call read32(r0) handler
57629
57630;@ EaCalc : Get register index into r1:
57631  and r1,r8,#0x0e00
57632;@ EaRead : Read register[r1] into r1:
57633  ldr r1,[r7,r1,lsr #7]
57634
57635;@ Do arithmetic:
57636  adds r1,r0,r1
57637  mrs r10,cpsr ;@ r10=flags
57638  str r10,[r7,#0x4c] ;@ Save X bit
57639
57640;@ Save result:
57641;@ EaWrite: Write r1 into '$3333.w' (address in r11):
57642  bic r0,r11,#0xff000000
57643  bl m68k_write32 ;@ Call write32(r0,r1) handler
57644
57645  ldr r5,[r7,#0x5c] ;@ Load Cycles
57646  ldrh r8,[r4],#2 ;@ Fetch next opcode
57647  subs r5,r5,#24 ;@ Subtract cycles
57648  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57649  b CycloneEnd
57650
57651;@ ---------- [d1b9] add.l d0, $33333333.l uses Opd1b9 ----------
57652Opd1b9:
57653  str r4,[r7,#0x50] ;@ Save prev PC + 2
57654  str r5,[r7,#0x5c] ;@ Save Cycles
57655
57656;@ EaCalc : Get '$33333333.l' into r11:
57657  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
57658  ldrh r0,[r4],#2
57659  orr r11,r0,r2,lsl #16
57660;@ EaRead : Read '$33333333.l' (address in r11) into r0:
57661  str r4,[r7,#0x40] ;@ Save PC
57662  bic r0,r11,#0xff000000
57663  bl m68k_read32 ;@ Call read32(r0) handler
57664
57665;@ EaCalc : Get register index into r1:
57666  and r1,r8,#0x0e00
57667;@ EaRead : Read register[r1] into r1:
57668  ldr r1,[r7,r1,lsr #7]
57669
57670;@ Do arithmetic:
57671  adds r1,r0,r1
57672  mrs r10,cpsr ;@ r10=flags
57673  str r10,[r7,#0x4c] ;@ Save X bit
57674
57675;@ Save result:
57676;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
57677  bic r0,r11,#0xff000000
57678  bl m68k_write32 ;@ Call write32(r0,r1) handler
57679
57680  ldr r5,[r7,#0x5c] ;@ Load Cycles
57681  ldrh r8,[r4],#2 ;@ Fetch next opcode
57682  subs r5,r5,#28 ;@ Subtract cycles
57683  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57684  b CycloneEnd
57685
57686;@ ---------- [d1c0] adda.l d0, a0 uses Opd1c0 ----------
57687Opd1c0:
57688;@ EaCalc : Get register index into r0:
57689  and r0,r8,#0x000f
57690;@ EaRead : Read register[r0] into r0:
57691  ldr r0,[r7,r0,lsl #2]
57692
57693;@ EaCalc : Get register index into r11:
57694  and r11,r8,#0x1e00
57695;@ EaRead : Read register[r11] into r1:
57696  ldr r1,[r7,r11,lsr #7]
57697
57698  add r1,r1,r0
57699
57700;@ EaWrite: r1 into register[r11]:
57701  str r1,[r7,r11,lsr #7]
57702
57703  ldrh r8,[r4],#2 ;@ Fetch next opcode
57704  subs r5,r5,#8 ;@ Subtract cycles
57705  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57706  b CycloneEnd
57707
57708;@ ---------- [d1d0] adda.l (a0), a0 uses Opd1d0 ----------
57709Opd1d0:
57710  str r4,[r7,#0x50] ;@ Save prev PC + 2
57711  str r5,[r7,#0x5c] ;@ Save Cycles
57712
57713;@ EaCalc : Get '(a0)' into r0:
57714  and r2,r8,#0x000f
57715  orr r2,r2,#0x8 ;@ A0-7
57716  ldr r0,[r7,r2,lsl #2]
57717;@ EaRead : Read '(a0)' (address in r0) into r0:
57718  str r4,[r7,#0x40] ;@ Save PC
57719  bic r0,r0,#0xff000000
57720  bl m68k_read32 ;@ Call read32(r0) handler
57721
57722;@ EaCalc : Get register index into r11:
57723  and r11,r8,#0x1e00
57724;@ EaRead : Read register[r11] into r1:
57725  ldr r1,[r7,r11,lsr #7]
57726
57727  add r1,r1,r0
57728
57729;@ EaWrite: r1 into register[r11]:
57730  str r1,[r7,r11,lsr #7]
57731
57732  ldr r5,[r7,#0x5c] ;@ Load Cycles
57733  ldrh r8,[r4],#2 ;@ Fetch next opcode
57734  subs r5,r5,#14 ;@ Subtract cycles
57735  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57736  b CycloneEnd
57737
57738;@ ---------- [d1d8] adda.l (a0)+, a0 uses Opd1d8 ----------
57739Opd1d8:
57740  str r4,[r7,#0x50] ;@ Save prev PC + 2
57741  str r5,[r7,#0x5c] ;@ Save Cycles
57742
57743;@ EaCalc : Get '(a0)+' into r0:
57744  and r2,r8,#0x000f
57745  ldr r0,[r7,r2,lsl #2]
57746  add r3,r0,#4 ;@ Post-increment An
57747  str r3,[r7,r2,lsl #2]
57748;@ EaRead : Read '(a0)+' (address in r0) into r0:
57749  str r4,[r7,#0x40] ;@ Save PC
57750  bic r0,r0,#0xff000000
57751  bl m68k_read32 ;@ Call read32(r0) handler
57752
57753;@ EaCalc : Get register index into r11:
57754  and r11,r8,#0x1e00
57755;@ EaRead : Read register[r11] into r1:
57756  ldr r1,[r7,r11,lsr #7]
57757
57758  add r1,r1,r0
57759
57760;@ EaWrite: r1 into register[r11]:
57761  str r1,[r7,r11,lsr #7]
57762
57763  ldr r5,[r7,#0x5c] ;@ Load Cycles
57764  ldrh r8,[r4],#2 ;@ Fetch next opcode
57765  subs r5,r5,#14 ;@ Subtract cycles
57766  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57767  b CycloneEnd
57768
57769;@ ---------- [d1e0] adda.l -(a0), a0 uses Opd1e0 ----------
57770Opd1e0:
57771  str r4,[r7,#0x50] ;@ Save prev PC + 2
57772  str r5,[r7,#0x5c] ;@ Save Cycles
57773
57774;@ EaCalc : Get '-(a0)' into r0:
57775  and r2,r8,#0x000f
57776  orr r2,r2,#0x8 ;@ A0-7
57777  ldr r0,[r7,r2,lsl #2]
57778  sub r0,r0,#4 ;@ Pre-decrement An
57779  str r0,[r7,r2,lsl #2]
57780;@ EaRead : Read '-(a0)' (address in r0) into r0:
57781  str r4,[r7,#0x40] ;@ Save PC
57782  bic r0,r0,#0xff000000
57783  bl m68k_read32 ;@ Call read32(r0) handler
57784
57785;@ EaCalc : Get register index into r11:
57786  and r11,r8,#0x1e00
57787;@ EaRead : Read register[r11] into r1:
57788  ldr r1,[r7,r11,lsr #7]
57789
57790  add r1,r1,r0
57791
57792;@ EaWrite: r1 into register[r11]:
57793  str r1,[r7,r11,lsr #7]
57794
57795  ldr r5,[r7,#0x5c] ;@ Load Cycles
57796  ldrh r8,[r4],#2 ;@ Fetch next opcode
57797  subs r5,r5,#16 ;@ Subtract cycles
57798  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57799  b CycloneEnd
57800
57801;@ ---------- [d1e8] adda.l ($3333,a0), a0 uses Opd1e8 ----------
57802Opd1e8:
57803  str r4,[r7,#0x50] ;@ Save prev PC + 2
57804  str r5,[r7,#0x5c] ;@ Save Cycles
57805
57806;@ EaCalc : Get '($3333,a0)' into r0:
57807  ldrsh r0,[r4],#2 ;@ Fetch offset
57808  and r2,r8,#0x000f
57809  ldr r2,[r7,r2,lsl #2]
57810  add r0,r0,r2 ;@ Add on offset
57811;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
57812  str r4,[r7,#0x40] ;@ Save PC
57813  bic r0,r0,#0xff000000
57814  bl m68k_read32 ;@ Call read32(r0) handler
57815
57816;@ EaCalc : Get register index into r11:
57817  and r11,r8,#0x1e00
57818;@ EaRead : Read register[r11] into r1:
57819  ldr r1,[r7,r11,lsr #7]
57820
57821  add r1,r1,r0
57822
57823;@ EaWrite: r1 into register[r11]:
57824  str r1,[r7,r11,lsr #7]
57825
57826  ldr r5,[r7,#0x5c] ;@ Load Cycles
57827  ldrh r8,[r4],#2 ;@ Fetch next opcode
57828  subs r5,r5,#18 ;@ Subtract cycles
57829  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57830  b CycloneEnd
57831
57832;@ ---------- [d1f0] adda.l ($33,a0,d3.w*2), a0 uses Opd1f0 ----------
57833Opd1f0:
57834  str r4,[r7,#0x50] ;@ Save prev PC + 2
57835  str r5,[r7,#0x5c] ;@ Save Cycles
57836
57837;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
57838;@ Get extension word into r3:
57839  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
57840  mov r2,r3,lsr #10
57841  tst r3,#0x0800 ;@ Is Rn Word or Long
57842  and r2,r2,#0x3c ;@ r2=Index of Rn
57843  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
57844  ldrne   r2,[r7,r2] ;@ r2=Rn.l
57845  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
57846  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
57847  and r2,r8,#0x000f
57848  orr r2,r2,#0x8 ;@ A0-7
57849  ldr r2,[r7,r2,lsl #2]
57850  add r0,r2,r3 ;@ r0=Disp+An+Rn
57851;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
57852  str r4,[r7,#0x40] ;@ Save PC
57853  bic r0,r0,#0xff000000
57854  bl m68k_read32 ;@ Call read32(r0) handler
57855
57856;@ EaCalc : Get register index into r11:
57857  and r11,r8,#0x1e00
57858;@ EaRead : Read register[r11] into r1:
57859  ldr r1,[r7,r11,lsr #7]
57860
57861  add r1,r1,r0
57862
57863;@ EaWrite: r1 into register[r11]:
57864  str r1,[r7,r11,lsr #7]
57865
57866  ldr r5,[r7,#0x5c] ;@ Load Cycles
57867  ldrh r8,[r4],#2 ;@ Fetch next opcode
57868  subs r5,r5,#20 ;@ Subtract cycles
57869  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57870  b CycloneEnd
57871
57872;@ ---------- [d1f8] adda.l $3333.w, a0 uses Opd1f8 ----------
57873Opd1f8:
57874  str r4,[r7,#0x50] ;@ Save prev PC + 2
57875  str r5,[r7,#0x5c] ;@ Save Cycles
57876
57877;@ EaCalc : Get '$3333.w' into r0:
57878  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
57879;@ EaRead : Read '$3333.w' (address in r0) into r0:
57880  str r4,[r7,#0x40] ;@ Save PC
57881  bic r0,r0,#0xff000000
57882  bl m68k_read32 ;@ Call read32(r0) handler
57883
57884;@ EaCalc : Get register index into r11:
57885  and r11,r8,#0x1e00
57886;@ EaRead : Read register[r11] into r1:
57887  ldr r1,[r7,r11,lsr #7]
57888
57889  add r1,r1,r0
57890
57891;@ EaWrite: r1 into register[r11]:
57892  str r1,[r7,r11,lsr #7]
57893
57894  ldr r5,[r7,#0x5c] ;@ Load Cycles
57895  ldrh r8,[r4],#2 ;@ Fetch next opcode
57896  subs r5,r5,#18 ;@ Subtract cycles
57897  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57898  b CycloneEnd
57899
57900;@ ---------- [d1f9] adda.l $33333333.l, a0 uses Opd1f9 ----------
57901Opd1f9:
57902  str r4,[r7,#0x50] ;@ Save prev PC + 2
57903  str r5,[r7,#0x5c] ;@ Save Cycles
57904
57905;@ EaCalc : Get '$33333333.l' into r0:
57906  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
57907  ldrh r0,[r4],#2
57908  orr r0,r0,r2,lsl #16
57909;@ EaRead : Read '$33333333.l' (address in r0) into r0:
57910  str r4,[r7,#0x40] ;@ Save PC
57911  bic r0,r0,#0xff000000
57912  bl m68k_read32 ;@ Call read32(r0) handler
57913
57914;@ EaCalc : Get register index into r11:
57915  and r11,r8,#0x1e00
57916;@ EaRead : Read register[r11] into r1:
57917  ldr r1,[r7,r11,lsr #7]
57918
57919  add r1,r1,r0
57920
57921;@ EaWrite: r1 into register[r11]:
57922  str r1,[r7,r11,lsr #7]
57923
57924  ldr r5,[r7,#0x5c] ;@ Load Cycles
57925  ldrh r8,[r4],#2 ;@ Fetch next opcode
57926  subs r5,r5,#22 ;@ Subtract cycles
57927  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57928  b CycloneEnd
57929
57930;@ ---------- [d1fa] adda.l ($3333,pc), a0; =3335 uses Opd1fa ----------
57931Opd1fa:
57932  str r4,[r7,#0x50] ;@ Save prev PC + 2
57933  str r5,[r7,#0x5c] ;@ Save Cycles
57934
57935;@ EaCalc : Get '($3333,pc)' into r0:
57936  ldr r0,[r7,#0x60] ;@ Get Memory base
57937  sub r0,r4,r0 ;@ Real PC
57938  ldrsh r2,[r4],#2 ;@ Fetch extension
57939  add r0,r2,r0 ;@ ($nn,PC)
57940;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
57941  str r4,[r7,#0x40] ;@ Save PC
57942  bic r0,r0,#0xff000000
57943  bl m68k_fetch32 ;@ Call fetch32(r0) handler
57944
57945;@ EaCalc : Get register index into r11:
57946  and r11,r8,#0x1e00
57947;@ EaRead : Read register[r11] into r1:
57948  ldr r1,[r7,r11,lsr #7]
57949
57950  add r1,r1,r0
57951
57952;@ EaWrite: r1 into register[r11]:
57953  str r1,[r7,r11,lsr #7]
57954
57955  ldr r5,[r7,#0x5c] ;@ Load Cycles
57956  ldrh r8,[r4],#2 ;@ Fetch next opcode
57957  subs r5,r5,#18 ;@ Subtract cycles
57958  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57959  b CycloneEnd
57960
57961;@ ---------- [d1fb] adda.l ($33,pc,d3.w*2), a0; =35 uses Opd1fb ----------
57962Opd1fb:
57963  str r4,[r7,#0x50] ;@ Save prev PC + 2
57964  str r5,[r7,#0x5c] ;@ Save Cycles
57965
57966;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
57967  ldr r0,[r7,#0x60] ;@ Get Memory base
57968  ldrh r3,[r4] ;@ Get extension word
57969  sub r0,r4,r0 ;@ r0=PC
57970  add r4,r4,#2
57971  mov r2,r3,lsr #10
57972  tst r3,#0x0800 ;@ Is Rn Word or Long
57973  and r2,r2,#0x3c ;@ r2=Index of Rn
57974  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
57975  ldrne   r2,[r7,r2] ;@ r2=Rn.l
57976  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
57977  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
57978  add r0,r2,r0 ;@ r0=Disp+PC+Rn
57979;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
57980  str r4,[r7,#0x40] ;@ Save PC
57981  bic r0,r0,#0xff000000
57982  bl m68k_fetch32 ;@ Call fetch32(r0) handler
57983
57984;@ EaCalc : Get register index into r11:
57985  and r11,r8,#0x1e00
57986;@ EaRead : Read register[r11] into r1:
57987  ldr r1,[r7,r11,lsr #7]
57988
57989  add r1,r1,r0
57990
57991;@ EaWrite: r1 into register[r11]:
57992  str r1,[r7,r11,lsr #7]
57993
57994  ldr r5,[r7,#0x5c] ;@ Load Cycles
57995  ldrh r8,[r4],#2 ;@ Fetch next opcode
57996  subs r5,r5,#20 ;@ Subtract cycles
57997  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
57998  b CycloneEnd
57999
58000;@ ---------- [d1fc] adda.l #$33333333, a0 uses Opd1fc ----------
58001Opd1fc:
58002;@ EaCalc : Get '#$33333333' into r0:
58003  ldrh r2,[r4],#2 ;@ Fetch immediate value
58004  ldrh r3,[r4],#2
58005  orr r0,r3,r2,lsl #16
58006;@ EaRead : Read '#$33333333' (address in r0) into r0:
58007
58008;@ EaCalc : Get register index into r11:
58009  and r11,r8,#0x1e00
58010;@ EaRead : Read register[r11] into r1:
58011  ldr r1,[r7,r11,lsr #7]
58012
58013  add r1,r1,r0
58014
58015;@ EaWrite: r1 into register[r11]:
58016  str r1,[r7,r11,lsr #7]
58017
58018  ldrh r8,[r4],#2 ;@ Fetch next opcode
58019  subs r5,r5,#16 ;@ Subtract cycles
58020  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58021  b CycloneEnd
58022
58023;@ ---------- [df08] addx.b -(a0), -(a7) uses Opdf08 ----------
58024Opdf08:
58025  str r4,[r7,#0x50] ;@ Save prev PC + 2
58026  str r5,[r7,#0x5c] ;@ Save Cycles
58027
58028;@ Get src/dest EA vals
58029;@ EaCalc : Get '-(a0)' into r0:
58030  and r2,r8,#0x000f
58031  ldr r0,[r7,r2,lsl #2]
58032  sub r0,r0,#1 ;@ Pre-decrement An
58033  str r0,[r7,r2,lsl #2]
58034;@ EaRead : Read '-(a0)' (address in r0) into r6:
58035  str r4,[r7,#0x40] ;@ Save PC
58036  bic r0,r0,#0xff000000
58037  bl m68k_read8 ;@ Call read8(r0) handler
58038  mov r6,r0,asl #24
58039
58040;@ EaCalc : Get '-(a7)' into r11:
58041  ldr r11,[r7,#0x3c] ;@ A7
58042  sub r11,r11,#2 ;@ Pre-decrement An
58043  str r11,[r7,#0x3c] ;@ A7
58044;@ EaRead : Read '-(a7)' (address in r11) into r0:
58045  bic r0,r11,#0xff000000
58046  bl m68k_read8 ;@ Call read8(r0) handler
58047
58048;@ Do arithmetic:
58049;@ Get X bit:
58050  ldr r2,[r7,#0x4c]
58051  tst r2,r2,lsl #3 ;@ Get into Carry
58052
58053;@ Make sure the carry bit will tip the balance:
58054  mvn r2,#0
58055  orr r6,r6,r2,lsr #8
58056
58057  adcs r1,r6,r0,asl #24
58058  orr r3,r10,#0xb0000000 ;@ for old Z
58059  mrs r10,cpsr ;@ r10=flags
58060  str r10,[r7,#0x4c] ;@ Save X bit
58061  movs r2,r1,lsr #24
58062  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
58063  andeq r10,r10,r3 ;@ fix Z
58064
58065;@ Save result:
58066;@ EaWrite: Write r1 into '-(a7)' (address in r11):
58067  mov r1,r1,lsr #24
58068  bic r0,r11,#0xff000000
58069  bl m68k_write8 ;@ Call write8(r0,r1) handler
58070
58071  ldr r6,[r7,#0x54]
58072  ldr r5,[r7,#0x5c] ;@ Load Cycles
58073  ldrh r8,[r4],#2 ;@ Fetch next opcode
58074  subs r5,r5,#18 ;@ Subtract cycles
58075  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58076  b CycloneEnd
58077
58078;@ ---------- [df0f] addx.b -(a7), -(a7) uses Opdf0f ----------
58079Opdf0f:
58080  str r4,[r7,#0x50] ;@ Save prev PC + 2
58081  str r5,[r7,#0x5c] ;@ Save Cycles
58082
58083;@ Get src/dest EA vals
58084;@ EaCalc : Get '-(a7)' into r0:
58085  ldr r0,[r7,#0x3c] ;@ A7
58086  sub r0,r0,#2 ;@ Pre-decrement An
58087  str r0,[r7,#0x3c] ;@ A7
58088;@ EaRead : Read '-(a7)' (address in r0) into r6:
58089  str r4,[r7,#0x40] ;@ Save PC
58090  bic r0,r0,#0xff000000
58091  bl m68k_read8 ;@ Call read8(r0) handler
58092  mov r6,r0,asl #24
58093
58094;@ EaCalc : Get '-(a7)' into r11:
58095  ldr r11,[r7,#0x3c] ;@ A7
58096  sub r11,r11,#2 ;@ Pre-decrement An
58097  str r11,[r7,#0x3c] ;@ A7
58098;@ EaRead : Read '-(a7)' (address in r11) into r0:
58099  bic r0,r11,#0xff000000
58100  bl m68k_read8 ;@ Call read8(r0) handler
58101
58102;@ Do arithmetic:
58103;@ Get X bit:
58104  ldr r2,[r7,#0x4c]
58105  tst r2,r2,lsl #3 ;@ Get into Carry
58106
58107;@ Make sure the carry bit will tip the balance:
58108  mvn r2,#0
58109  orr r6,r6,r2,lsr #8
58110
58111  adcs r1,r6,r0,asl #24
58112  orr r3,r10,#0xb0000000 ;@ for old Z
58113  mrs r10,cpsr ;@ r10=flags
58114  str r10,[r7,#0x4c] ;@ Save X bit
58115  movs r2,r1,lsr #24
58116  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
58117  andeq r10,r10,r3 ;@ fix Z
58118
58119;@ Save result:
58120;@ EaWrite: Write r1 into '-(a7)' (address in r11):
58121  mov r1,r1,lsr #24
58122  bic r0,r11,#0xff000000
58123  bl m68k_write8 ;@ Call write8(r0,r1) handler
58124
58125  ldr r6,[r7,#0x54]
58126  ldr r5,[r7,#0x5c] ;@ Load Cycles
58127  ldrh r8,[r4],#2 ;@ Fetch next opcode
58128  subs r5,r5,#18 ;@ Subtract cycles
58129  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58130  b CycloneEnd
58131
58132;@ ---------- [e000] asr.b #8, d0 uses Ope000 ----------
58133Ope000:
58134;@ EaCalc : Get register index into r11:
58135  and r11,r8,#0x0007
58136;@ EaRead : Read register[r11] into r0:
58137  ldr r0,[r7,r11,lsl #2]
58138  mov r0,r0,asl #24
58139
58140;@ For shift right, use loworder bits for the operation:
58141  mov r0,r0,asr #24
58142
58143;@ Shift register:
58144  movs r0,r0,asr #8
58145  mrs r10,cpsr ;@ r10=flags
58146  str r10,[r7,#0x4c] ;@ Save X bit
58147
58148;@ restore after right shift:
58149  movs r0,r0,lsl #24
58150
58151;@ EaWrite: r0 into register[r11]:
58152  mov r0,r0,lsr #24
58153  strb r0,[r7,r11,lsl #2]
58154
58155  ldrh r8,[r4],#2 ;@ Fetch next opcode
58156  subs r5,r5,#22 ;@ Subtract cycles
58157  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58158  b CycloneEnd
58159
58160;@ ---------- [e008] lsr.b #8, d0 uses Ope008 ----------
58161Ope008:
58162;@ EaCalc : Get register index into r11:
58163  and r11,r8,#0x0007
58164;@ EaRead : Read register[r11] into r0:
58165  ldr r0,[r7,r11,lsl #2]
58166  mov r0,r0,asl #24
58167
58168;@ For shift right, use loworder bits for the operation:
58169  mov r0,r0,lsr #24
58170
58171;@ Shift register:
58172  movs r0,r0,lsr #8
58173  mrs r10,cpsr ;@ r10=flags
58174  str r10,[r7,#0x4c] ;@ Save X bit
58175
58176;@ restore after right shift:
58177  movs r0,r0,lsl #24
58178  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
58179
58180;@ EaWrite: r0 into register[r11]:
58181  mov r0,r0,lsr #24
58182  strb r0,[r7,r11,lsl #2]
58183
58184  ldrh r8,[r4],#2 ;@ Fetch next opcode
58185  subs r5,r5,#22 ;@ Subtract cycles
58186  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58187  b CycloneEnd
58188
58189;@ ---------- [e010] roxr.b #8, d0 uses Ope010 ----------
58190Ope010:
58191;@ EaCalc : Get register index into r11:
58192  and r11,r8,#0x0007
58193;@ EaRead : Read register[r11] into r0:
58194  ldr r0,[r7,r11,lsl #2]
58195  mov r0,r0,asl #24
58196
58197  mov r2,#8
58198  mov r0,r0,lsr #24 ;@ Shift down
58199
58200;@ First get X bit (middle):
58201  ldr r3,[r7,#0x4c]
58202  rsb r1,r2,#8
58203  and r3,r3,#0x20000000
58204  mov r3,r3,lsr #29
58205  mov r3,r3,lsl r1
58206;@ Rotate bits:
58207  orr r3,r3,r0,lsr r2 ;@ Orr right part
58208  rsbs r2,r2,#9 ;@ should also clear ARM V
58209  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
58210
58211  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
58212  mrs r10,cpsr ;@ r10=flags
58213  str r10,[r7,#0x4c] ;@ Save X bit
58214
58215;@ EaWrite: r0 into register[r11]:
58216  mov r0,r0,lsr #24
58217  strb r0,[r7,r11,lsl #2]
58218
58219  ldrh r8,[r4],#2 ;@ Fetch next opcode
58220  subs r5,r5,#22 ;@ Subtract cycles
58221  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58222  b CycloneEnd
58223
58224;@ ---------- [e018] ror.b #8, d0 uses Ope018 ----------
58225Ope018:
58226;@ EaCalc : Get register index into r11:
58227  and r11,r8,#0x0007
58228;@ EaRead : Read register[r11] into r0:
58229  ldr r0,[r7,r11,lsl #2]
58230  mov r0,r0,asl #24
58231
58232;@ Mirror value in whole 32 bits:
58233  orr r0,r0,r0,lsr #8
58234  orr r0,r0,r0,lsr #16
58235
58236;@ Rotate register:
58237  adds r0,r0,#0 ;@ first clear V and C
58238  movs r0,r0,ror #8
58239  mrs r10,cpsr ;@ r10=flags
58240
58241;@ EaWrite: r0 into register[r11]:
58242  mov r0,r0,lsr #24
58243  strb r0,[r7,r11,lsl #2]
58244
58245  ldrh r8,[r4],#2 ;@ Fetch next opcode
58246  subs r5,r5,#22 ;@ Subtract cycles
58247  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58248  b CycloneEnd
58249
58250;@ ---------- [e020] asr.b d0, d0 uses Ope020 ----------
58251Ope020:
58252;@ EaCalc : Get register index into r11:
58253  and r11,r8,#0x0007
58254;@ EaRead : Read register[r11] into r0:
58255  ldr r0,[r7,r11,lsl #2]
58256  mov r0,r0,asl #24
58257
58258;@ Use Dn for count:
58259  and r2,r8,#0x0e00
58260  ldr r2,[r7,r2,lsr #7]
58261  and r2,r2,#63
58262
58263  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58264
58265;@ For shift right, use loworder bits for the operation:
58266  mov r0,r0,asr #24
58267
58268;@ Shift register:
58269  movs r0,r0,asr r2
58270  mrs r10,cpsr ;@ r10=flags
58271  cmp r2,#0 ;@ shifting by 0?
58272  biceq r10,r10,#0x20000000 ;@ if so, clear carry
58273  strne r10,[r7,#0x4c] ;@ else Save X bit
58274
58275;@ restore after right shift:
58276  movs r0,r0,lsl #24
58277
58278;@ EaWrite: r0 into register[r11]:
58279  mov r0,r0,lsr #24
58280  strb r0,[r7,r11,lsl #2]
58281
58282  ldrh r8,[r4],#2 ;@ Fetch next opcode
58283  subs r5,r5,#6 ;@ Subtract cycles
58284  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58285  b CycloneEnd
58286
58287;@ ---------- [e028] lsr.b d0, d0 uses Ope028 ----------
58288Ope028:
58289;@ EaCalc : Get register index into r11:
58290  and r11,r8,#0x0007
58291;@ EaRead : Read register[r11] into r0:
58292  ldr r0,[r7,r11,lsl #2]
58293  mov r0,r0,asl #24
58294
58295;@ Use Dn for count:
58296  and r2,r8,#0x0e00
58297  ldr r2,[r7,r2,lsr #7]
58298  and r2,r2,#63
58299
58300  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58301
58302;@ For shift right, use loworder bits for the operation:
58303  mov r0,r0,lsr #24
58304
58305;@ Shift register:
58306  movs r0,r0,lsr r2
58307  mrs r10,cpsr ;@ r10=flags
58308  cmp r2,#0 ;@ shifting by 0?
58309  biceq r10,r10,#0x20000000 ;@ if so, clear carry
58310  strne r10,[r7,#0x4c] ;@ else Save X bit
58311
58312;@ restore after right shift:
58313  movs r0,r0,lsl #24
58314  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
58315
58316;@ EaWrite: r0 into register[r11]:
58317  mov r0,r0,lsr #24
58318  strb r0,[r7,r11,lsl #2]
58319
58320  ldrh r8,[r4],#2 ;@ Fetch next opcode
58321  subs r5,r5,#6 ;@ Subtract cycles
58322  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58323  b CycloneEnd
58324
58325;@ ---------- [e030] roxr.b d0, d0 uses Ope030 ----------
58326Ope030:
58327;@ EaCalc : Get register index into r11:
58328  and r11,r8,#0x0007
58329;@ EaRead : Read register[r11] into r0:
58330  ldr r0,[r7,r11,lsl #2]
58331  mov r0,r0,asl #24
58332
58333;@ Use Dn for count:
58334  and r2,r8,#0x0e00
58335  ldr r2,[r7,r2,lsr #7]
58336  and r2,r2,#63
58337
58338  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58339
58340;@ Reduce r2 until <0:
58341Reduce_e030:
58342  subs r2,r2,#9
58343  bpl Reduce_e030
58344  adds r2,r2,#9 ;@ Now r2=0-8
58345  beq norotx_e030
58346
58347  mov r0,r0,lsr #24 ;@ Shift down
58348
58349;@ First get X bit (middle):
58350  ldr r3,[r7,#0x4c]
58351  rsb r1,r2,#8
58352  and r3,r3,#0x20000000
58353  mov r3,r3,lsr #29
58354  mov r3,r3,lsl r1
58355;@ Rotate bits:
58356  orr r3,r3,r0,lsr r2 ;@ Orr right part
58357  rsbs r2,r2,#9 ;@ should also clear ARM V
58358  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
58359
58360  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
58361  mrs r10,cpsr ;@ r10=flags
58362  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
58363  b nozeroxe030
58364norotx_e030:
58365  ldr r2,[r7,#0x4c]
58366  adds r0,r0,#0 ;@ Define flags
58367  and r10,r0,#0x80000000 ;@ r10=N_flag
58368  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
58369  and r2,r2,#0x20000000
58370  orr r10,r10,r2 ;@ C = old_X
58371nozeroxe030:
58372
58373;@ EaWrite: r0 into register[r11]:
58374  mov r0,r0,lsr #24
58375  strb r0,[r7,r11,lsl #2]
58376
58377  ldrh r8,[r4],#2 ;@ Fetch next opcode
58378  subs r5,r5,#6 ;@ Subtract cycles
58379  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58380  b CycloneEnd
58381
58382;@ ---------- [e038] ror.b d0, d0 uses Ope038 ----------
58383Ope038:
58384;@ EaCalc : Get register index into r11:
58385  and r11,r8,#0x0007
58386;@ EaRead : Read register[r11] into r0:
58387  ldr r0,[r7,r11,lsl #2]
58388  mov r0,r0,asl #24
58389
58390;@ Use Dn for count:
58391  and r2,r8,#0x0e00
58392  ldr r2,[r7,r2,lsr #7]
58393  and r2,r2,#63
58394
58395  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58396
58397;@ Mirror value in whole 32 bits:
58398  orr r0,r0,r0,lsr #8
58399  orr r0,r0,r0,lsr #16
58400
58401;@ Rotate register:
58402  adds r0,r0,#0 ;@ first clear V and C
58403  movs r0,r0,ror r2
58404  mrs r10,cpsr ;@ r10=flags
58405
58406;@ EaWrite: r0 into register[r11]:
58407  mov r0,r0,lsr #24
58408  strb r0,[r7,r11,lsl #2]
58409
58410  ldrh r8,[r4],#2 ;@ Fetch next opcode
58411  subs r5,r5,#6 ;@ Subtract cycles
58412  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58413  b CycloneEnd
58414
58415;@ ---------- [e040] asr.w #8, d0 uses Ope040 ----------
58416Ope040:
58417;@ EaCalc : Get register index into r11:
58418  and r11,r8,#0x0007
58419  mov r11,r11,lsl #2
58420;@ EaRead : Read register[r11] into r0:
58421  ldr r0,[r7,r11]
58422  mov r0,r0,asl #16
58423
58424;@ For shift right, use loworder bits for the operation:
58425  mov r0,r0,asr #16
58426
58427;@ Shift register:
58428  movs r0,r0,asr #8
58429  mrs r10,cpsr ;@ r10=flags
58430  str r10,[r7,#0x4c] ;@ Save X bit
58431
58432;@ restore after right shift:
58433  movs r0,r0,lsl #16
58434
58435;@ EaWrite: r0 into register[r11]:
58436  mov r0,r0,lsr #16
58437  strh r0,[r7,r11]
58438
58439  ldrh r8,[r4],#2 ;@ Fetch next opcode
58440  subs r5,r5,#22 ;@ Subtract cycles
58441  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58442  b CycloneEnd
58443
58444;@ ---------- [e048] lsr.w #8, d0 uses Ope048 ----------
58445Ope048:
58446;@ EaCalc : Get register index into r11:
58447  and r11,r8,#0x0007
58448  mov r11,r11,lsl #2
58449;@ EaRead : Read register[r11] into r0:
58450  ldr r0,[r7,r11]
58451  mov r0,r0,asl #16
58452
58453;@ For shift right, use loworder bits for the operation:
58454  mov r0,r0,lsr #16
58455
58456;@ Shift register:
58457  movs r0,r0,lsr #8
58458  mrs r10,cpsr ;@ r10=flags
58459  str r10,[r7,#0x4c] ;@ Save X bit
58460
58461;@ restore after right shift:
58462  movs r0,r0,lsl #16
58463  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
58464
58465;@ EaWrite: r0 into register[r11]:
58466  mov r0,r0,lsr #16
58467  strh r0,[r7,r11]
58468
58469  ldrh r8,[r4],#2 ;@ Fetch next opcode
58470  subs r5,r5,#22 ;@ Subtract cycles
58471  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58472  b CycloneEnd
58473
58474;@ ---------- [e050] roxr.w #8, d0 uses Ope050 ----------
58475Ope050:
58476;@ EaCalc : Get register index into r11:
58477  and r11,r8,#0x0007
58478  mov r11,r11,lsl #2
58479;@ EaRead : Read register[r11] into r0:
58480  ldr r0,[r7,r11]
58481  mov r0,r0,asl #16
58482
58483  mov r2,#8
58484  mov r0,r0,lsr #16 ;@ Shift down
58485
58486;@ First get X bit (middle):
58487  ldr r3,[r7,#0x4c]
58488  rsb r1,r2,#16
58489  and r3,r3,#0x20000000
58490  mov r3,r3,lsr #29
58491  mov r3,r3,lsl r1
58492;@ Rotate bits:
58493  orr r3,r3,r0,lsr r2 ;@ Orr right part
58494  rsbs r2,r2,#17 ;@ should also clear ARM V
58495  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
58496
58497  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
58498  mrs r10,cpsr ;@ r10=flags
58499  str r10,[r7,#0x4c] ;@ Save X bit
58500
58501;@ EaWrite: r0 into register[r11]:
58502  mov r0,r0,lsr #16
58503  strh r0,[r7,r11]
58504
58505  ldrh r8,[r4],#2 ;@ Fetch next opcode
58506  subs r5,r5,#22 ;@ Subtract cycles
58507  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58508  b CycloneEnd
58509
58510;@ ---------- [e058] ror.w #8, d0 uses Ope058 ----------
58511Ope058:
58512;@ EaCalc : Get register index into r11:
58513  and r11,r8,#0x0007
58514  mov r11,r11,lsl #2
58515;@ EaRead : Read register[r11] into r0:
58516  ldr r0,[r7,r11]
58517  mov r0,r0,asl #16
58518
58519;@ Mirror value in whole 32 bits:
58520  orr r0,r0,r0,lsr #16
58521
58522;@ Rotate register:
58523  adds r0,r0,#0 ;@ first clear V and C
58524  movs r0,r0,ror #8
58525  mrs r10,cpsr ;@ r10=flags
58526
58527;@ EaWrite: r0 into register[r11]:
58528  mov r0,r0,lsr #16
58529  strh r0,[r7,r11]
58530
58531  ldrh r8,[r4],#2 ;@ Fetch next opcode
58532  subs r5,r5,#22 ;@ Subtract cycles
58533  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58534  b CycloneEnd
58535
58536;@ ---------- [e060] asr.w d0, d0 uses Ope060 ----------
58537Ope060:
58538;@ EaCalc : Get register index into r11:
58539  and r11,r8,#0x0007
58540  mov r11,r11,lsl #2
58541;@ EaRead : Read register[r11] into r0:
58542  ldr r0,[r7,r11]
58543  mov r0,r0,asl #16
58544
58545;@ Use Dn for count:
58546  and r2,r8,#0x0e00
58547  ldr r2,[r7,r2,lsr #7]
58548  and r2,r2,#63
58549
58550  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58551
58552;@ For shift right, use loworder bits for the operation:
58553  mov r0,r0,asr #16
58554
58555;@ Shift register:
58556  movs r0,r0,asr r2
58557  mrs r10,cpsr ;@ r10=flags
58558  cmp r2,#0 ;@ shifting by 0?
58559  biceq r10,r10,#0x20000000 ;@ if so, clear carry
58560  strne r10,[r7,#0x4c] ;@ else Save X bit
58561
58562;@ restore after right shift:
58563  movs r0,r0,lsl #16
58564
58565;@ EaWrite: r0 into register[r11]:
58566  mov r0,r0,lsr #16
58567  strh r0,[r7,r11]
58568
58569  ldrh r8,[r4],#2 ;@ Fetch next opcode
58570  subs r5,r5,#6 ;@ Subtract cycles
58571  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58572  b CycloneEnd
58573
58574;@ ---------- [e068] lsr.w d0, d0 uses Ope068 ----------
58575Ope068:
58576;@ EaCalc : Get register index into r11:
58577  and r11,r8,#0x0007
58578  mov r11,r11,lsl #2
58579;@ EaRead : Read register[r11] into r0:
58580  ldr r0,[r7,r11]
58581  mov r0,r0,asl #16
58582
58583;@ Use Dn for count:
58584  and r2,r8,#0x0e00
58585  ldr r2,[r7,r2,lsr #7]
58586  and r2,r2,#63
58587
58588  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58589
58590;@ For shift right, use loworder bits for the operation:
58591  mov r0,r0,lsr #16
58592
58593;@ Shift register:
58594  movs r0,r0,lsr r2
58595  mrs r10,cpsr ;@ r10=flags
58596  cmp r2,#0 ;@ shifting by 0?
58597  biceq r10,r10,#0x20000000 ;@ if so, clear carry
58598  strne r10,[r7,#0x4c] ;@ else Save X bit
58599
58600;@ restore after right shift:
58601  movs r0,r0,lsl #16
58602  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
58603
58604;@ EaWrite: r0 into register[r11]:
58605  mov r0,r0,lsr #16
58606  strh r0,[r7,r11]
58607
58608  ldrh r8,[r4],#2 ;@ Fetch next opcode
58609  subs r5,r5,#6 ;@ Subtract cycles
58610  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58611  b CycloneEnd
58612
58613;@ ---------- [e070] roxr.w d0, d0 uses Ope070 ----------
58614Ope070:
58615;@ EaCalc : Get register index into r11:
58616  and r11,r8,#0x0007
58617  mov r11,r11,lsl #2
58618;@ EaRead : Read register[r11] into r0:
58619  ldr r0,[r7,r11]
58620  mov r0,r0,asl #16
58621
58622;@ Use Dn for count:
58623  and r2,r8,#0x0e00
58624  ldr r2,[r7,r2,lsr #7]
58625  and r2,r2,#63
58626
58627  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58628
58629;@ Reduce r2 until <0:
58630Reduce_e070:
58631  subs r2,r2,#17
58632  bpl Reduce_e070
58633  adds r2,r2,#17 ;@ Now r2=0-16
58634  beq norotx_e070
58635
58636  mov r0,r0,lsr #16 ;@ Shift down
58637
58638;@ First get X bit (middle):
58639  ldr r3,[r7,#0x4c]
58640  rsb r1,r2,#16
58641  and r3,r3,#0x20000000
58642  mov r3,r3,lsr #29
58643  mov r3,r3,lsl r1
58644;@ Rotate bits:
58645  orr r3,r3,r0,lsr r2 ;@ Orr right part
58646  rsbs r2,r2,#17 ;@ should also clear ARM V
58647  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
58648
58649  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
58650  mrs r10,cpsr ;@ r10=flags
58651  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
58652  b nozeroxe070
58653norotx_e070:
58654  ldr r2,[r7,#0x4c]
58655  adds r0,r0,#0 ;@ Define flags
58656  and r10,r0,#0x80000000 ;@ r10=N_flag
58657  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
58658  and r2,r2,#0x20000000
58659  orr r10,r10,r2 ;@ C = old_X
58660nozeroxe070:
58661
58662;@ EaWrite: r0 into register[r11]:
58663  mov r0,r0,lsr #16
58664  strh r0,[r7,r11]
58665
58666  ldrh r8,[r4],#2 ;@ Fetch next opcode
58667  subs r5,r5,#6 ;@ Subtract cycles
58668  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58669  b CycloneEnd
58670
58671;@ ---------- [e078] ror.w d0, d0 uses Ope078 ----------
58672Ope078:
58673;@ EaCalc : Get register index into r11:
58674  and r11,r8,#0x0007
58675  mov r11,r11,lsl #2
58676;@ EaRead : Read register[r11] into r0:
58677  ldr r0,[r7,r11]
58678  mov r0,r0,asl #16
58679
58680;@ Use Dn for count:
58681  and r2,r8,#0x0e00
58682  ldr r2,[r7,r2,lsr #7]
58683  and r2,r2,#63
58684
58685  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58686
58687;@ Mirror value in whole 32 bits:
58688  orr r0,r0,r0,lsr #16
58689
58690;@ Rotate register:
58691  adds r0,r0,#0 ;@ first clear V and C
58692  movs r0,r0,ror r2
58693  mrs r10,cpsr ;@ r10=flags
58694
58695;@ EaWrite: r0 into register[r11]:
58696  mov r0,r0,lsr #16
58697  strh r0,[r7,r11]
58698
58699  ldrh r8,[r4],#2 ;@ Fetch next opcode
58700  subs r5,r5,#6 ;@ Subtract cycles
58701  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58702  b CycloneEnd
58703
58704;@ ---------- [e080] asr.l #8, d0 uses Ope080 ----------
58705Ope080:
58706;@ EaCalc : Get register index into r11:
58707  and r11,r8,#0x0007
58708;@ EaRead : Read register[r11] into r0:
58709  ldr r0,[r7,r11,lsl #2]
58710
58711;@ Shift register:
58712  movs r0,r0,asr #8
58713  mrs r10,cpsr ;@ r10=flags
58714  str r10,[r7,#0x4c] ;@ Save X bit
58715
58716;@ EaWrite: r0 into register[r11]:
58717  str r0,[r7,r11,lsl #2]
58718
58719  ldrh r8,[r4],#2 ;@ Fetch next opcode
58720  subs r5,r5,#24 ;@ Subtract cycles
58721  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58722  b CycloneEnd
58723
58724;@ ---------- [e088] lsr.l #8, d0 uses Ope088 ----------
58725Ope088:
58726;@ EaCalc : Get register index into r11:
58727  and r11,r8,#0x0007
58728;@ EaRead : Read register[r11] into r0:
58729  ldr r0,[r7,r11,lsl #2]
58730
58731;@ Shift register:
58732  movs r0,r0,lsr #8
58733  mrs r10,cpsr ;@ r10=flags
58734  str r10,[r7,#0x4c] ;@ Save X bit
58735
58736;@ EaWrite: r0 into register[r11]:
58737  str r0,[r7,r11,lsl #2]
58738
58739  ldrh r8,[r4],#2 ;@ Fetch next opcode
58740  subs r5,r5,#24 ;@ Subtract cycles
58741  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58742  b CycloneEnd
58743
58744;@ ---------- [e090] roxr.l #8, d0 uses Ope090 ----------
58745Ope090:
58746;@ EaCalc : Get register index into r11:
58747  and r11,r8,#0x0007
58748;@ EaRead : Read register[r11] into r0:
58749  ldr r0,[r7,r11,lsl #2]
58750
58751  mov r2,#8
58752
58753;@ First get X bit (middle):
58754  ldr r3,[r7,#0x4c]
58755  rsb r1,r2,#32
58756  and r3,r3,#0x20000000
58757  mov r3,r3,lsr #29
58758  mov r3,r3,lsl r1
58759;@ Rotate bits:
58760  orr r3,r3,r0,lsr r2 ;@ Orr right part
58761  rsbs r2,r2,#33 ;@ should also clear ARM V
58762  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
58763
58764  mrs r10,cpsr ;@ r10=flags
58765  str r10,[r7,#0x4c] ;@ Save X bit
58766
58767;@ EaWrite: r0 into register[r11]:
58768  str r0,[r7,r11,lsl #2]
58769
58770  ldrh r8,[r4],#2 ;@ Fetch next opcode
58771  subs r5,r5,#24 ;@ Subtract cycles
58772  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58773  b CycloneEnd
58774
58775;@ ---------- [e098] ror.l #8, d0 uses Ope098 ----------
58776Ope098:
58777;@ EaCalc : Get register index into r11:
58778  and r11,r8,#0x0007
58779;@ EaRead : Read register[r11] into r0:
58780  ldr r0,[r7,r11,lsl #2]
58781
58782;@ Rotate register:
58783  adds r0,r0,#0 ;@ first clear V and C
58784  movs r0,r0,ror #8
58785  mrs r10,cpsr ;@ r10=flags
58786
58787;@ EaWrite: r0 into register[r11]:
58788  str r0,[r7,r11,lsl #2]
58789
58790  ldrh r8,[r4],#2 ;@ Fetch next opcode
58791  subs r5,r5,#24 ;@ Subtract cycles
58792  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58793  b CycloneEnd
58794
58795;@ ---------- [e0a0] asr.l d0, d0 uses Ope0a0 ----------
58796Ope0a0:
58797;@ EaCalc : Get register index into r11:
58798  and r11,r8,#0x0007
58799;@ EaRead : Read register[r11] into r0:
58800  ldr r0,[r7,r11,lsl #2]
58801
58802;@ Use Dn for count:
58803  and r2,r8,#0x0e00
58804  ldr r2,[r7,r2,lsr #7]
58805  and r2,r2,#63
58806
58807  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58808
58809;@ Shift register:
58810  movs r0,r0,asr r2
58811  mrs r10,cpsr ;@ r10=flags
58812  cmp r2,#0 ;@ shifting by 0?
58813  biceq r10,r10,#0x20000000 ;@ if so, clear carry
58814  strne r10,[r7,#0x4c] ;@ else Save X bit
58815
58816;@ EaWrite: r0 into register[r11]:
58817  str r0,[r7,r11,lsl #2]
58818
58819  ldrh r8,[r4],#2 ;@ Fetch next opcode
58820  subs r5,r5,#8 ;@ Subtract cycles
58821  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58822  b CycloneEnd
58823
58824;@ ---------- [e0a8] lsr.l d0, d0 uses Ope0a8 ----------
58825Ope0a8:
58826;@ EaCalc : Get register index into r11:
58827  and r11,r8,#0x0007
58828;@ EaRead : Read register[r11] into r0:
58829  ldr r0,[r7,r11,lsl #2]
58830
58831;@ Use Dn for count:
58832  and r2,r8,#0x0e00
58833  ldr r2,[r7,r2,lsr #7]
58834  and r2,r2,#63
58835
58836  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58837
58838;@ Shift register:
58839  movs r0,r0,lsr r2
58840  mrs r10,cpsr ;@ r10=flags
58841  cmp r2,#0 ;@ shifting by 0?
58842  biceq r10,r10,#0x20000000 ;@ if so, clear carry
58843  strne r10,[r7,#0x4c] ;@ else Save X bit
58844
58845;@ EaWrite: r0 into register[r11]:
58846  str r0,[r7,r11,lsl #2]
58847
58848  ldrh r8,[r4],#2 ;@ Fetch next opcode
58849  subs r5,r5,#8 ;@ Subtract cycles
58850  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58851  b CycloneEnd
58852
58853;@ ---------- [e0b0] roxr.l d0, d0 uses Ope0b0 ----------
58854Ope0b0:
58855;@ EaCalc : Get register index into r11:
58856  and r11,r8,#0x0007
58857;@ EaRead : Read register[r11] into r0:
58858  ldr r0,[r7,r11,lsl #2]
58859
58860;@ Use Dn for count:
58861  and r2,r8,#0x0e00
58862  ldr r2,[r7,r2,lsr #7]
58863  and r2,r2,#63
58864
58865  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58866
58867  subs r2,r2,#33
58868  addmis r2,r2,#33 ;@ Now r2=0-32
58869  beq norotx_e0b0
58870
58871
58872;@ First get X bit (middle):
58873  ldr r3,[r7,#0x4c]
58874  rsb r1,r2,#32
58875  and r3,r3,#0x20000000
58876  mov r3,r3,lsr #29
58877  mov r3,r3,lsl r1
58878;@ Rotate bits:
58879  orr r3,r3,r0,lsr r2 ;@ Orr right part
58880  rsbs r2,r2,#33 ;@ should also clear ARM V
58881  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
58882
58883  mrs r10,cpsr ;@ r10=flags
58884  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
58885  b nozeroxe0b0
58886norotx_e0b0:
58887  ldr r2,[r7,#0x4c]
58888  adds r0,r0,#0 ;@ Define flags
58889  and r10,r0,#0x80000000 ;@ r10=N_flag
58890  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
58891  and r2,r2,#0x20000000
58892  orr r10,r10,r2 ;@ C = old_X
58893nozeroxe0b0:
58894
58895;@ EaWrite: r0 into register[r11]:
58896  str r0,[r7,r11,lsl #2]
58897
58898  ldrh r8,[r4],#2 ;@ Fetch next opcode
58899  subs r5,r5,#8 ;@ Subtract cycles
58900  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58901  b CycloneEnd
58902
58903;@ ---------- [e0b8] ror.l d0, d0 uses Ope0b8 ----------
58904Ope0b8:
58905;@ EaCalc : Get register index into r11:
58906  and r11,r8,#0x0007
58907;@ EaRead : Read register[r11] into r0:
58908  ldr r0,[r7,r11,lsl #2]
58909
58910;@ Use Dn for count:
58911  and r2,r8,#0x0e00
58912  ldr r2,[r7,r2,lsr #7]
58913  and r2,r2,#63
58914
58915  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
58916
58917;@ Rotate register:
58918  adds r0,r0,#0 ;@ first clear V and C
58919  movs r0,r0,ror r2
58920  mrs r10,cpsr ;@ r10=flags
58921
58922;@ EaWrite: r0 into register[r11]:
58923  str r0,[r7,r11,lsl #2]
58924
58925  ldrh r8,[r4],#2 ;@ Fetch next opcode
58926  subs r5,r5,#8 ;@ Subtract cycles
58927  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58928  b CycloneEnd
58929
58930;@ ---------- [e0d0] asr.w (a0) uses Ope0d0 ----------
58931Ope0d0:
58932  str r4,[r7,#0x50] ;@ Save prev PC + 2
58933  str r5,[r7,#0x5c] ;@ Save Cycles
58934
58935;@ EaCalc : Get '(a0)' into r11:
58936  and r2,r8,#0x000f
58937  orr r2,r2,#0x8 ;@ A0-7
58938  ldr r11,[r7,r2,lsl #2]
58939;@ EaRead : Read '(a0)' (address in r11) into r0:
58940  str r4,[r7,#0x40] ;@ Save PC
58941  bic r0,r11,#0xff000000
58942  bl m68k_read16 ;@ Call read16(r0) handler
58943  mov r0,r0,asl #16
58944
58945;@ For shift right, use loworder bits for the operation:
58946  mov r0,r0,asr #16
58947
58948;@ Shift register:
58949  movs r0,r0,asr #1
58950  mrs r10,cpsr ;@ r10=flags
58951  str r10,[r7,#0x4c] ;@ Save X bit
58952
58953;@ restore after right shift:
58954  movs r0,r0,lsl #16
58955
58956;@ EaWrite: Write r0 into '(a0)' (address in r11):
58957  mov r1,r0,lsr #16
58958  bic r0,r11,#0xff000000
58959  bl m68k_write16 ;@ Call write16(r0,r1) handler
58960
58961  ldr r5,[r7,#0x5c] ;@ Load Cycles
58962  ldrh r8,[r4],#2 ;@ Fetch next opcode
58963  subs r5,r5,#12 ;@ Subtract cycles
58964  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
58965  b CycloneEnd
58966
58967;@ ---------- [e0d8] asr.w (a0)+ uses Ope0d8 ----------
58968Ope0d8:
58969  str r4,[r7,#0x50] ;@ Save prev PC + 2
58970  str r5,[r7,#0x5c] ;@ Save Cycles
58971
58972;@ EaCalc : Get '(a0)+' into r11:
58973  and r2,r8,#0x000f
58974  ldr r11,[r7,r2,lsl #2]
58975  add r3,r11,#2 ;@ Post-increment An
58976  str r3,[r7,r2,lsl #2]
58977;@ EaRead : Read '(a0)+' (address in r11) into r0:
58978  str r4,[r7,#0x40] ;@ Save PC
58979  bic r0,r11,#0xff000000
58980  bl m68k_read16 ;@ Call read16(r0) handler
58981  mov r0,r0,asl #16
58982
58983;@ For shift right, use loworder bits for the operation:
58984  mov r0,r0,asr #16
58985
58986;@ Shift register:
58987  movs r0,r0,asr #1
58988  mrs r10,cpsr ;@ r10=flags
58989  str r10,[r7,#0x4c] ;@ Save X bit
58990
58991;@ restore after right shift:
58992  movs r0,r0,lsl #16
58993
58994;@ EaWrite: Write r0 into '(a0)+' (address in r11):
58995  mov r1,r0,lsr #16
58996  bic r0,r11,#0xff000000
58997  bl m68k_write16 ;@ Call write16(r0,r1) handler
58998
58999  ldr r5,[r7,#0x5c] ;@ Load Cycles
59000  ldrh r8,[r4],#2 ;@ Fetch next opcode
59001  subs r5,r5,#12 ;@ Subtract cycles
59002  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59003  b CycloneEnd
59004
59005;@ ---------- [e0e0] asr.w -(a0) uses Ope0e0 ----------
59006Ope0e0:
59007  str r4,[r7,#0x50] ;@ Save prev PC + 2
59008  str r5,[r7,#0x5c] ;@ Save Cycles
59009
59010;@ EaCalc : Get '-(a0)' into r11:
59011  and r2,r8,#0x000f
59012  orr r2,r2,#0x8 ;@ A0-7
59013  ldr r11,[r7,r2,lsl #2]
59014  sub r11,r11,#2 ;@ Pre-decrement An
59015  str r11,[r7,r2,lsl #2]
59016;@ EaRead : Read '-(a0)' (address in r11) into r0:
59017  str r4,[r7,#0x40] ;@ Save PC
59018  bic r0,r11,#0xff000000
59019  bl m68k_read16 ;@ Call read16(r0) handler
59020  mov r0,r0,asl #16
59021
59022;@ For shift right, use loworder bits for the operation:
59023  mov r0,r0,asr #16
59024
59025;@ Shift register:
59026  movs r0,r0,asr #1
59027  mrs r10,cpsr ;@ r10=flags
59028  str r10,[r7,#0x4c] ;@ Save X bit
59029
59030;@ restore after right shift:
59031  movs r0,r0,lsl #16
59032
59033;@ EaWrite: Write r0 into '-(a0)' (address in r11):
59034  mov r1,r0,lsr #16
59035  bic r0,r11,#0xff000000
59036  bl m68k_write16 ;@ Call write16(r0,r1) handler
59037
59038  ldr r5,[r7,#0x5c] ;@ Load Cycles
59039  ldrh r8,[r4],#2 ;@ Fetch next opcode
59040  subs r5,r5,#14 ;@ Subtract cycles
59041  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59042  b CycloneEnd
59043
59044;@ ---------- [e0e8] asr.w ($3333,a0) uses Ope0e8 ----------
59045Ope0e8:
59046  str r4,[r7,#0x50] ;@ Save prev PC + 2
59047  str r5,[r7,#0x5c] ;@ Save Cycles
59048
59049;@ EaCalc : Get '($3333,a0)' into r11:
59050  ldrsh r0,[r4],#2 ;@ Fetch offset
59051  and r2,r8,#0x000f
59052  ldr r2,[r7,r2,lsl #2]
59053  add r11,r0,r2 ;@ Add on offset
59054;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
59055  str r4,[r7,#0x40] ;@ Save PC
59056  bic r0,r11,#0xff000000
59057  bl m68k_read16 ;@ Call read16(r0) handler
59058  mov r0,r0,asl #16
59059
59060;@ For shift right, use loworder bits for the operation:
59061  mov r0,r0,asr #16
59062
59063;@ Shift register:
59064  movs r0,r0,asr #1
59065  mrs r10,cpsr ;@ r10=flags
59066  str r10,[r7,#0x4c] ;@ Save X bit
59067
59068;@ restore after right shift:
59069  movs r0,r0,lsl #16
59070
59071;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
59072  mov r1,r0,lsr #16
59073  bic r0,r11,#0xff000000
59074  bl m68k_write16 ;@ Call write16(r0,r1) handler
59075
59076  ldr r5,[r7,#0x5c] ;@ Load Cycles
59077  ldrh r8,[r4],#2 ;@ Fetch next opcode
59078  subs r5,r5,#16 ;@ Subtract cycles
59079  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59080  b CycloneEnd
59081
59082;@ ---------- [e0f0] asr.w ($33,a0,d3.w*2) uses Ope0f0 ----------
59083Ope0f0:
59084  str r4,[r7,#0x50] ;@ Save prev PC + 2
59085  str r5,[r7,#0x5c] ;@ Save Cycles
59086
59087;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
59088;@ Get extension word into r3:
59089  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
59090  mov r2,r3,lsr #10
59091  tst r3,#0x0800 ;@ Is Rn Word or Long
59092  and r2,r2,#0x3c ;@ r2=Index of Rn
59093  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
59094  ldrne   r2,[r7,r2] ;@ r2=Rn.l
59095  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
59096  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
59097  and r2,r8,#0x000f
59098  orr r2,r2,#0x8 ;@ A0-7
59099  ldr r2,[r7,r2,lsl #2]
59100  add r11,r2,r3 ;@ r11=Disp+An+Rn
59101;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
59102  str r4,[r7,#0x40] ;@ Save PC
59103  bic r0,r11,#0xff000000
59104  bl m68k_read16 ;@ Call read16(r0) handler
59105  mov r0,r0,asl #16
59106
59107;@ For shift right, use loworder bits for the operation:
59108  mov r0,r0,asr #16
59109
59110;@ Shift register:
59111  movs r0,r0,asr #1
59112  mrs r10,cpsr ;@ r10=flags
59113  str r10,[r7,#0x4c] ;@ Save X bit
59114
59115;@ restore after right shift:
59116  movs r0,r0,lsl #16
59117
59118;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
59119  mov r1,r0,lsr #16
59120  bic r0,r11,#0xff000000
59121  bl m68k_write16 ;@ Call write16(r0,r1) handler
59122
59123  ldr r5,[r7,#0x5c] ;@ Load Cycles
59124  ldrh r8,[r4],#2 ;@ Fetch next opcode
59125  subs r5,r5,#18 ;@ Subtract cycles
59126  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59127  b CycloneEnd
59128
59129;@ ---------- [e0f8] asr.w $3333.w uses Ope0f8 ----------
59130Ope0f8:
59131  str r4,[r7,#0x50] ;@ Save prev PC + 2
59132  str r5,[r7,#0x5c] ;@ Save Cycles
59133
59134;@ EaCalc : Get '$3333.w' into r11:
59135  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
59136;@ EaRead : Read '$3333.w' (address in r11) into r0:
59137  str r4,[r7,#0x40] ;@ Save PC
59138  bic r0,r11,#0xff000000
59139  bl m68k_read16 ;@ Call read16(r0) handler
59140  mov r0,r0,asl #16
59141
59142;@ For shift right, use loworder bits for the operation:
59143  mov r0,r0,asr #16
59144
59145;@ Shift register:
59146  movs r0,r0,asr #1
59147  mrs r10,cpsr ;@ r10=flags
59148  str r10,[r7,#0x4c] ;@ Save X bit
59149
59150;@ restore after right shift:
59151  movs r0,r0,lsl #16
59152
59153;@ EaWrite: Write r0 into '$3333.w' (address in r11):
59154  mov r1,r0,lsr #16
59155  bic r0,r11,#0xff000000
59156  bl m68k_write16 ;@ Call write16(r0,r1) handler
59157
59158  ldr r5,[r7,#0x5c] ;@ Load Cycles
59159  ldrh r8,[r4],#2 ;@ Fetch next opcode
59160  subs r5,r5,#16 ;@ Subtract cycles
59161  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59162  b CycloneEnd
59163
59164;@ ---------- [e0f9] asr.w $33333333.l uses Ope0f9 ----------
59165Ope0f9:
59166  str r4,[r7,#0x50] ;@ Save prev PC + 2
59167  str r5,[r7,#0x5c] ;@ Save Cycles
59168
59169;@ EaCalc : Get '$33333333.l' into r11:
59170  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
59171  ldrh r0,[r4],#2
59172  orr r11,r0,r2,lsl #16
59173;@ EaRead : Read '$33333333.l' (address in r11) into r0:
59174  str r4,[r7,#0x40] ;@ Save PC
59175  bic r0,r11,#0xff000000
59176  bl m68k_read16 ;@ Call read16(r0) handler
59177  mov r0,r0,asl #16
59178
59179;@ For shift right, use loworder bits for the operation:
59180  mov r0,r0,asr #16
59181
59182;@ Shift register:
59183  movs r0,r0,asr #1
59184  mrs r10,cpsr ;@ r10=flags
59185  str r10,[r7,#0x4c] ;@ Save X bit
59186
59187;@ restore after right shift:
59188  movs r0,r0,lsl #16
59189
59190;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
59191  mov r1,r0,lsr #16
59192  bic r0,r11,#0xff000000
59193  bl m68k_write16 ;@ Call write16(r0,r1) handler
59194
59195  ldr r5,[r7,#0x5c] ;@ Load Cycles
59196  ldrh r8,[r4],#2 ;@ Fetch next opcode
59197  subs r5,r5,#20 ;@ Subtract cycles
59198  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59199  b CycloneEnd
59200
59201;@ ---------- [e100] asl.b #8, d0 uses Ope100 ----------
59202Ope100:
59203;@ EaCalc : Get register index into r11:
59204  and r11,r8,#0x0007
59205;@ EaRead : Read register[r11] into r0:
59206  ldr r0,[r7,r11,lsl #2]
59207  mov r0,r0,asl #24
59208
59209  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
59210;@ Shift register:
59211  movs r0,r0,asl #8
59212  mrs r10,cpsr ;@ r10=flags
59213  str r10,[r7,#0x4c] ;@ Save X bit
59214
59215;@ calculate V flag (set if sign bit changes at anytime):
59216  mov r1,#0x80000000
59217  ands r3,r3,r1,asr #8
59218  cmpne r3,r1,asr #8
59219  eoreq r1,r0,r3
59220  tsteq r1,#0x80000000
59221  orrne r10,r10,#0x10000000
59222
59223;@ EaWrite: r0 into register[r11]:
59224  mov r0,r0,lsr #24
59225  strb r0,[r7,r11,lsl #2]
59226
59227  ldrh r8,[r4],#2 ;@ Fetch next opcode
59228  subs r5,r5,#22 ;@ Subtract cycles
59229  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59230  b CycloneEnd
59231
59232;@ ---------- [e108] lsl.b #8, d0 uses Ope108 ----------
59233Ope108:
59234;@ EaCalc : Get register index into r11:
59235  and r11,r8,#0x0007
59236;@ EaRead : Read register[r11] into r0:
59237  ldr r0,[r7,r11,lsl #2]
59238  mov r0,r0,asl #24
59239
59240;@ Shift register:
59241  movs r0,r0,lsl #8
59242  mrs r10,cpsr ;@ r10=flags
59243  str r10,[r7,#0x4c] ;@ Save X bit
59244
59245;@ EaWrite: r0 into register[r11]:
59246  mov r0,r0,lsr #24
59247  strb r0,[r7,r11,lsl #2]
59248
59249  ldrh r8,[r4],#2 ;@ Fetch next opcode
59250  subs r5,r5,#22 ;@ Subtract cycles
59251  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59252  b CycloneEnd
59253
59254;@ ---------- [e110] roxl.b #8, d0 uses Ope110 ----------
59255Ope110:
59256;@ EaCalc : Get register index into r11:
59257  and r11,r8,#0x0007
59258;@ EaRead : Read register[r11] into r0:
59259  ldr r0,[r7,r11,lsl #2]
59260  mov r0,r0,asl #24
59261
59262  mov r2,#1 ;@ Reversed
59263  mov r0,r0,lsr #24 ;@ Shift down
59264
59265;@ First get X bit (middle):
59266  ldr r3,[r7,#0x4c]
59267  rsb r1,r2,#8
59268  and r3,r3,#0x20000000
59269  mov r3,r3,lsr #29
59270  mov r3,r3,lsl r1
59271;@ Rotate bits:
59272  orr r3,r3,r0,lsr r2 ;@ Orr right part
59273  rsbs r2,r2,#9 ;@ should also clear ARM V
59274  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
59275
59276  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
59277  mrs r10,cpsr ;@ r10=flags
59278  str r10,[r7,#0x4c] ;@ Save X bit
59279
59280;@ EaWrite: r0 into register[r11]:
59281  mov r0,r0,lsr #24
59282  strb r0,[r7,r11,lsl #2]
59283
59284  ldrh r8,[r4],#2 ;@ Fetch next opcode
59285  subs r5,r5,#22 ;@ Subtract cycles
59286  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59287  b CycloneEnd
59288
59289;@ ---------- [e118] rol.b #8, d0 uses Ope118 ----------
59290Ope118:
59291;@ EaCalc : Get register index into r11:
59292  and r11,r8,#0x0007
59293;@ EaRead : Read register[r11] into r0:
59294  ldr r0,[r7,r11,lsl #2]
59295  mov r0,r0,asl #24
59296
59297;@ Mirror value in whole 32 bits:
59298  orr r0,r0,r0,lsr #8
59299  orr r0,r0,r0,lsr #16
59300
59301;@ Rotate register:
59302  movs r0,r0,ror #24
59303  mrs r10,cpsr ;@ r10=flags
59304  bic r10,r10,#0x30000000 ;@ clear CV
59305;@ Get carry bit from bit 0:
59306  tst r0,#1
59307  orrne r10,r10,#0x20000000
59308
59309;@ EaWrite: r0 into register[r11]:
59310  mov r0,r0,lsr #24
59311  strb r0,[r7,r11,lsl #2]
59312
59313  ldrh r8,[r4],#2 ;@ Fetch next opcode
59314  subs r5,r5,#22 ;@ Subtract cycles
59315  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59316  b CycloneEnd
59317
59318;@ ---------- [e120] asl.b d0, d0 uses Ope120 ----------
59319Ope120:
59320;@ EaCalc : Get register index into r11:
59321  and r11,r8,#0x0007
59322;@ EaRead : Read register[r11] into r0:
59323  ldr r0,[r7,r11,lsl #2]
59324  mov r0,r0,asl #24
59325
59326;@ Use Dn for count:
59327  and r2,r8,#0x0e00
59328  ldr r2,[r7,r2,lsr #7]
59329  and r2,r2,#63
59330
59331  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59332
59333  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
59334;@ Shift register:
59335  movs r0,r0,asl r2
59336  mrs r10,cpsr ;@ r10=flags
59337  cmp r2,#0 ;@ shifting by 0?
59338  biceq r10,r10,#0x20000000 ;@ if so, clear carry
59339  strne r10,[r7,#0x4c] ;@ else Save X bit
59340
59341;@ calculate V flag (set if sign bit changes at anytime):
59342  mov r1,#0x80000000
59343  ands r3,r3,r1,asr r2
59344  cmpne r3,r1,asr r2
59345  eoreq r1,r0,r3
59346  tsteq r1,#0x80000000
59347  orrne r10,r10,#0x10000000
59348
59349;@ EaWrite: r0 into register[r11]:
59350  mov r0,r0,lsr #24
59351  strb r0,[r7,r11,lsl #2]
59352
59353  ldrh r8,[r4],#2 ;@ Fetch next opcode
59354  subs r5,r5,#6 ;@ Subtract cycles
59355  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59356  b CycloneEnd
59357
59358;@ ---------- [e128] lsl.b d0, d0 uses Ope128 ----------
59359Ope128:
59360;@ EaCalc : Get register index into r11:
59361  and r11,r8,#0x0007
59362;@ EaRead : Read register[r11] into r0:
59363  ldr r0,[r7,r11,lsl #2]
59364  mov r0,r0,asl #24
59365
59366;@ Use Dn for count:
59367  and r2,r8,#0x0e00
59368  ldr r2,[r7,r2,lsr #7]
59369  and r2,r2,#63
59370
59371  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59372
59373;@ Shift register:
59374  movs r0,r0,lsl r2
59375  mrs r10,cpsr ;@ r10=flags
59376  cmp r2,#0 ;@ shifting by 0?
59377  biceq r10,r10,#0x20000000 ;@ if so, clear carry
59378  strne r10,[r7,#0x4c] ;@ else Save X bit
59379
59380;@ EaWrite: r0 into register[r11]:
59381  mov r0,r0,lsr #24
59382  strb r0,[r7,r11,lsl #2]
59383
59384  ldrh r8,[r4],#2 ;@ Fetch next opcode
59385  subs r5,r5,#6 ;@ Subtract cycles
59386  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59387  b CycloneEnd
59388
59389;@ ---------- [e130] roxl.b d0, d0 uses Ope130 ----------
59390Ope130:
59391;@ EaCalc : Get register index into r11:
59392  and r11,r8,#0x0007
59393;@ EaRead : Read register[r11] into r0:
59394  ldr r0,[r7,r11,lsl #2]
59395  mov r0,r0,asl #24
59396
59397;@ Use Dn for count:
59398  and r2,r8,#0x0e00
59399  ldr r2,[r7,r2,lsr #7]
59400  and r2,r2,#63
59401
59402  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59403
59404;@ Reduce r2 until <0:
59405Reduce_e130:
59406  subs r2,r2,#9
59407  bpl Reduce_e130
59408  adds r2,r2,#9 ;@ Now r2=0-8
59409  beq norotx_e130
59410
59411  rsb r2,r2,#9 ;@ Reverse direction
59412  mov r0,r0,lsr #24 ;@ Shift down
59413
59414;@ First get X bit (middle):
59415  ldr r3,[r7,#0x4c]
59416  rsb r1,r2,#8
59417  and r3,r3,#0x20000000
59418  mov r3,r3,lsr #29
59419  mov r3,r3,lsl r1
59420;@ Rotate bits:
59421  orr r3,r3,r0,lsr r2 ;@ Orr right part
59422  rsbs r2,r2,#9 ;@ should also clear ARM V
59423  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
59424
59425  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
59426  mrs r10,cpsr ;@ r10=flags
59427  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
59428  b nozeroxe130
59429norotx_e130:
59430  ldr r2,[r7,#0x4c]
59431  adds r0,r0,#0 ;@ Define flags
59432  and r10,r0,#0x80000000 ;@ r10=N_flag
59433  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
59434  and r2,r2,#0x20000000
59435  orr r10,r10,r2 ;@ C = old_X
59436nozeroxe130:
59437
59438;@ EaWrite: r0 into register[r11]:
59439  mov r0,r0,lsr #24
59440  strb r0,[r7,r11,lsl #2]
59441
59442  ldrh r8,[r4],#2 ;@ Fetch next opcode
59443  subs r5,r5,#6 ;@ Subtract cycles
59444  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59445  b CycloneEnd
59446
59447;@ ---------- [e138] rol.b d0, d0 uses Ope138 ----------
59448Ope138:
59449;@ EaCalc : Get register index into r11:
59450  and r11,r8,#0x0007
59451;@ EaRead : Read register[r11] into r0:
59452  ldr r0,[r7,r11,lsl #2]
59453  mov r0,r0,asl #24
59454
59455;@ Use Dn for count:
59456  and r2,r8,#0x0e00
59457  ldr r2,[r7,r2,lsr #7]
59458  and r2,r2,#63
59459
59460  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59461
59462;@ Mirror value in whole 32 bits:
59463  orr r0,r0,r0,lsr #8
59464  orr r0,r0,r0,lsr #16
59465
59466;@ Rotate register:
59467  rsb r2,r2,#32
59468  movs r0,r0,ror r2
59469  mrs r10,cpsr ;@ r10=flags
59470  bic r10,r10,#0x30000000 ;@ clear CV
59471;@ Get carry bit from bit 0:
59472  cmp r2,#32 ;@ rotating by 0?
59473  tstne r0,#1 ;@ no, check bit 0
59474  orrne r10,r10,#0x20000000
59475
59476;@ EaWrite: r0 into register[r11]:
59477  mov r0,r0,lsr #24
59478  strb r0,[r7,r11,lsl #2]
59479
59480  ldrh r8,[r4],#2 ;@ Fetch next opcode
59481  subs r5,r5,#6 ;@ Subtract cycles
59482  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59483  b CycloneEnd
59484
59485;@ ---------- [e140] asl.w #8, d0 uses Ope140 ----------
59486Ope140:
59487;@ EaCalc : Get register index into r11:
59488  and r11,r8,#0x0007
59489  mov r11,r11,lsl #2
59490;@ EaRead : Read register[r11] into r0:
59491  ldr r0,[r7,r11]
59492  mov r0,r0,asl #16
59493
59494  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
59495;@ Shift register:
59496  movs r0,r0,asl #8
59497  mrs r10,cpsr ;@ r10=flags
59498  str r10,[r7,#0x4c] ;@ Save X bit
59499
59500;@ calculate V flag (set if sign bit changes at anytime):
59501  mov r1,#0x80000000
59502  ands r3,r3,r1,asr #8
59503  cmpne r3,r1,asr #8
59504  eoreq r1,r0,r3
59505  tsteq r1,#0x80000000
59506  orrne r10,r10,#0x10000000
59507
59508;@ EaWrite: r0 into register[r11]:
59509  mov r0,r0,lsr #16
59510  strh r0,[r7,r11]
59511
59512  ldrh r8,[r4],#2 ;@ Fetch next opcode
59513  subs r5,r5,#22 ;@ Subtract cycles
59514  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59515  b CycloneEnd
59516
59517;@ ---------- [e148] lsl.w #8, d0 uses Ope148 ----------
59518Ope148:
59519;@ EaCalc : Get register index into r11:
59520  and r11,r8,#0x0007
59521  mov r11,r11,lsl #2
59522;@ EaRead : Read register[r11] into r0:
59523  ldr r0,[r7,r11]
59524  mov r0,r0,asl #16
59525
59526;@ Shift register:
59527  movs r0,r0,lsl #8
59528  mrs r10,cpsr ;@ r10=flags
59529  str r10,[r7,#0x4c] ;@ Save X bit
59530
59531;@ EaWrite: r0 into register[r11]:
59532  mov r0,r0,lsr #16
59533  strh r0,[r7,r11]
59534
59535  ldrh r8,[r4],#2 ;@ Fetch next opcode
59536  subs r5,r5,#22 ;@ Subtract cycles
59537  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59538  b CycloneEnd
59539
59540;@ ---------- [e150] roxl.w #8, d0 uses Ope150 ----------
59541Ope150:
59542;@ EaCalc : Get register index into r11:
59543  and r11,r8,#0x0007
59544  mov r11,r11,lsl #2
59545;@ EaRead : Read register[r11] into r0:
59546  ldr r0,[r7,r11]
59547  mov r0,r0,asl #16
59548
59549  mov r2,#9 ;@ Reversed
59550  mov r0,r0,lsr #16 ;@ Shift down
59551
59552;@ First get X bit (middle):
59553  ldr r3,[r7,#0x4c]
59554  rsb r1,r2,#16
59555  and r3,r3,#0x20000000
59556  mov r3,r3,lsr #29
59557  mov r3,r3,lsl r1
59558;@ Rotate bits:
59559  orr r3,r3,r0,lsr r2 ;@ Orr right part
59560  rsbs r2,r2,#17 ;@ should also clear ARM V
59561  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
59562
59563  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
59564  mrs r10,cpsr ;@ r10=flags
59565  str r10,[r7,#0x4c] ;@ Save X bit
59566
59567;@ EaWrite: r0 into register[r11]:
59568  mov r0,r0,lsr #16
59569  strh r0,[r7,r11]
59570
59571  ldrh r8,[r4],#2 ;@ Fetch next opcode
59572  subs r5,r5,#22 ;@ Subtract cycles
59573  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59574  b CycloneEnd
59575
59576;@ ---------- [e158] rol.w #8, d0 uses Ope158 ----------
59577Ope158:
59578;@ EaCalc : Get register index into r11:
59579  and r11,r8,#0x0007
59580  mov r11,r11,lsl #2
59581;@ EaRead : Read register[r11] into r0:
59582  ldr r0,[r7,r11]
59583  mov r0,r0,asl #16
59584
59585;@ Mirror value in whole 32 bits:
59586  orr r0,r0,r0,lsr #16
59587
59588;@ Rotate register:
59589  movs r0,r0,ror #24
59590  mrs r10,cpsr ;@ r10=flags
59591  bic r10,r10,#0x30000000 ;@ clear CV
59592;@ Get carry bit from bit 0:
59593  tst r0,#1
59594  orrne r10,r10,#0x20000000
59595
59596;@ EaWrite: r0 into register[r11]:
59597  mov r0,r0,lsr #16
59598  strh r0,[r7,r11]
59599
59600  ldrh r8,[r4],#2 ;@ Fetch next opcode
59601  subs r5,r5,#22 ;@ Subtract cycles
59602  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59603  b CycloneEnd
59604
59605;@ ---------- [e160] asl.w d0, d0 uses Ope160 ----------
59606Ope160:
59607;@ EaCalc : Get register index into r11:
59608  and r11,r8,#0x0007
59609  mov r11,r11,lsl #2
59610;@ EaRead : Read register[r11] into r0:
59611  ldr r0,[r7,r11]
59612  mov r0,r0,asl #16
59613
59614;@ Use Dn for count:
59615  and r2,r8,#0x0e00
59616  ldr r2,[r7,r2,lsr #7]
59617  and r2,r2,#63
59618
59619  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59620
59621  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
59622;@ Shift register:
59623  movs r0,r0,asl r2
59624  mrs r10,cpsr ;@ r10=flags
59625  cmp r2,#0 ;@ shifting by 0?
59626  biceq r10,r10,#0x20000000 ;@ if so, clear carry
59627  strne r10,[r7,#0x4c] ;@ else Save X bit
59628
59629;@ calculate V flag (set if sign bit changes at anytime):
59630  mov r1,#0x80000000
59631  ands r3,r3,r1,asr r2
59632  cmpne r3,r1,asr r2
59633  eoreq r1,r0,r3
59634  tsteq r1,#0x80000000
59635  orrne r10,r10,#0x10000000
59636
59637;@ EaWrite: r0 into register[r11]:
59638  mov r0,r0,lsr #16
59639  strh r0,[r7,r11]
59640
59641  ldrh r8,[r4],#2 ;@ Fetch next opcode
59642  subs r5,r5,#6 ;@ Subtract cycles
59643  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59644  b CycloneEnd
59645
59646;@ ---------- [e168] lsl.w d0, d0 uses Ope168 ----------
59647Ope168:
59648;@ EaCalc : Get register index into r11:
59649  and r11,r8,#0x0007
59650  mov r11,r11,lsl #2
59651;@ EaRead : Read register[r11] into r0:
59652  ldr r0,[r7,r11]
59653  mov r0,r0,asl #16
59654
59655;@ Use Dn for count:
59656  and r2,r8,#0x0e00
59657  ldr r2,[r7,r2,lsr #7]
59658  and r2,r2,#63
59659
59660  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59661
59662;@ Shift register:
59663  movs r0,r0,lsl r2
59664  mrs r10,cpsr ;@ r10=flags
59665  cmp r2,#0 ;@ shifting by 0?
59666  biceq r10,r10,#0x20000000 ;@ if so, clear carry
59667  strne r10,[r7,#0x4c] ;@ else Save X bit
59668
59669;@ EaWrite: r0 into register[r11]:
59670  mov r0,r0,lsr #16
59671  strh r0,[r7,r11]
59672
59673  ldrh r8,[r4],#2 ;@ Fetch next opcode
59674  subs r5,r5,#6 ;@ Subtract cycles
59675  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59676  b CycloneEnd
59677
59678;@ ---------- [e170] roxl.w d0, d0 uses Ope170 ----------
59679Ope170:
59680;@ EaCalc : Get register index into r11:
59681  and r11,r8,#0x0007
59682  mov r11,r11,lsl #2
59683;@ EaRead : Read register[r11] into r0:
59684  ldr r0,[r7,r11]
59685  mov r0,r0,asl #16
59686
59687;@ Use Dn for count:
59688  and r2,r8,#0x0e00
59689  ldr r2,[r7,r2,lsr #7]
59690  and r2,r2,#63
59691
59692  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59693
59694;@ Reduce r2 until <0:
59695Reduce_e170:
59696  subs r2,r2,#17
59697  bpl Reduce_e170
59698  adds r2,r2,#17 ;@ Now r2=0-16
59699  beq norotx_e170
59700
59701  rsb r2,r2,#17 ;@ Reverse direction
59702  mov r0,r0,lsr #16 ;@ Shift down
59703
59704;@ First get X bit (middle):
59705  ldr r3,[r7,#0x4c]
59706  rsb r1,r2,#16
59707  and r3,r3,#0x20000000
59708  mov r3,r3,lsr #29
59709  mov r3,r3,lsl r1
59710;@ Rotate bits:
59711  orr r3,r3,r0,lsr r2 ;@ Orr right part
59712  rsbs r2,r2,#17 ;@ should also clear ARM V
59713  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
59714
59715  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
59716  mrs r10,cpsr ;@ r10=flags
59717  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
59718  b nozeroxe170
59719norotx_e170:
59720  ldr r2,[r7,#0x4c]
59721  adds r0,r0,#0 ;@ Define flags
59722  and r10,r0,#0x80000000 ;@ r10=N_flag
59723  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
59724  and r2,r2,#0x20000000
59725  orr r10,r10,r2 ;@ C = old_X
59726nozeroxe170:
59727
59728;@ EaWrite: r0 into register[r11]:
59729  mov r0,r0,lsr #16
59730  strh r0,[r7,r11]
59731
59732  ldrh r8,[r4],#2 ;@ Fetch next opcode
59733  subs r5,r5,#6 ;@ Subtract cycles
59734  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59735  b CycloneEnd
59736
59737;@ ---------- [e178] rol.w d0, d0 uses Ope178 ----------
59738Ope178:
59739;@ EaCalc : Get register index into r11:
59740  and r11,r8,#0x0007
59741  mov r11,r11,lsl #2
59742;@ EaRead : Read register[r11] into r0:
59743  ldr r0,[r7,r11]
59744  mov r0,r0,asl #16
59745
59746;@ Use Dn for count:
59747  and r2,r8,#0x0e00
59748  ldr r2,[r7,r2,lsr #7]
59749  and r2,r2,#63
59750
59751  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59752
59753;@ Mirror value in whole 32 bits:
59754  orr r0,r0,r0,lsr #16
59755
59756;@ Rotate register:
59757  rsb r2,r2,#32
59758  movs r0,r0,ror r2
59759  mrs r10,cpsr ;@ r10=flags
59760  bic r10,r10,#0x30000000 ;@ clear CV
59761;@ Get carry bit from bit 0:
59762  cmp r2,#32 ;@ rotating by 0?
59763  tstne r0,#1 ;@ no, check bit 0
59764  orrne r10,r10,#0x20000000
59765
59766;@ EaWrite: r0 into register[r11]:
59767  mov r0,r0,lsr #16
59768  strh r0,[r7,r11]
59769
59770  ldrh r8,[r4],#2 ;@ Fetch next opcode
59771  subs r5,r5,#6 ;@ Subtract cycles
59772  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59773  b CycloneEnd
59774
59775;@ ---------- [e180] asl.l #8, d0 uses Ope180 ----------
59776Ope180:
59777;@ EaCalc : Get register index into r11:
59778  and r11,r8,#0x0007
59779;@ EaRead : Read register[r11] into r0:
59780  ldr r0,[r7,r11,lsl #2]
59781
59782  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
59783;@ Shift register:
59784  movs r0,r0,asl #8
59785  mrs r10,cpsr ;@ r10=flags
59786  str r10,[r7,#0x4c] ;@ Save X bit
59787
59788;@ calculate V flag (set if sign bit changes at anytime):
59789  mov r1,#0x80000000
59790  ands r3,r3,r1,asr #8
59791  cmpne r3,r1,asr #8
59792  eoreq r1,r0,r3
59793  tsteq r1,#0x80000000
59794  orrne r10,r10,#0x10000000
59795
59796;@ EaWrite: r0 into register[r11]:
59797  str r0,[r7,r11,lsl #2]
59798
59799  ldrh r8,[r4],#2 ;@ Fetch next opcode
59800  subs r5,r5,#24 ;@ Subtract cycles
59801  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59802  b CycloneEnd
59803
59804;@ ---------- [e188] lsl.l #8, d0 uses Ope188 ----------
59805Ope188:
59806;@ EaCalc : Get register index into r11:
59807  and r11,r8,#0x0007
59808;@ EaRead : Read register[r11] into r0:
59809  ldr r0,[r7,r11,lsl #2]
59810
59811;@ Shift register:
59812  movs r0,r0,lsl #8
59813  mrs r10,cpsr ;@ r10=flags
59814  str r10,[r7,#0x4c] ;@ Save X bit
59815
59816;@ EaWrite: r0 into register[r11]:
59817  str r0,[r7,r11,lsl #2]
59818
59819  ldrh r8,[r4],#2 ;@ Fetch next opcode
59820  subs r5,r5,#24 ;@ Subtract cycles
59821  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59822  b CycloneEnd
59823
59824;@ ---------- [e190] roxl.l #8, d0 uses Ope190 ----------
59825Ope190:
59826;@ EaCalc : Get register index into r11:
59827  and r11,r8,#0x0007
59828;@ EaRead : Read register[r11] into r0:
59829  ldr r0,[r7,r11,lsl #2]
59830
59831  mov r2,#25 ;@ Reversed
59832
59833;@ First get X bit (middle):
59834  ldr r3,[r7,#0x4c]
59835  rsb r1,r2,#32
59836  and r3,r3,#0x20000000
59837  mov r3,r3,lsr #29
59838  mov r3,r3,lsl r1
59839;@ Rotate bits:
59840  orr r3,r3,r0,lsr r2 ;@ Orr right part
59841  rsbs r2,r2,#33 ;@ should also clear ARM V
59842  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
59843
59844  mrs r10,cpsr ;@ r10=flags
59845  str r10,[r7,#0x4c] ;@ Save X bit
59846
59847;@ EaWrite: r0 into register[r11]:
59848  str r0,[r7,r11,lsl #2]
59849
59850  ldrh r8,[r4],#2 ;@ Fetch next opcode
59851  subs r5,r5,#24 ;@ Subtract cycles
59852  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59853  b CycloneEnd
59854
59855;@ ---------- [e198] rol.l #8, d0 uses Ope198 ----------
59856Ope198:
59857;@ EaCalc : Get register index into r11:
59858  and r11,r8,#0x0007
59859;@ EaRead : Read register[r11] into r0:
59860  ldr r0,[r7,r11,lsl #2]
59861
59862;@ Rotate register:
59863  movs r0,r0,ror #24
59864  mrs r10,cpsr ;@ r10=flags
59865  bic r10,r10,#0x30000000 ;@ clear CV
59866;@ Get carry bit from bit 0:
59867  tst r0,#1
59868  orrne r10,r10,#0x20000000
59869
59870;@ EaWrite: r0 into register[r11]:
59871  str r0,[r7,r11,lsl #2]
59872
59873  ldrh r8,[r4],#2 ;@ Fetch next opcode
59874  subs r5,r5,#24 ;@ Subtract cycles
59875  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59876  b CycloneEnd
59877
59878;@ ---------- [e1a0] asl.l d0, d0 uses Ope1a0 ----------
59879Ope1a0:
59880;@ EaCalc : Get register index into r11:
59881  and r11,r8,#0x0007
59882;@ EaRead : Read register[r11] into r0:
59883  ldr r0,[r7,r11,lsl #2]
59884
59885;@ Use Dn for count:
59886  and r2,r8,#0x0e00
59887  ldr r2,[r7,r2,lsr #7]
59888  and r2,r2,#63
59889
59890  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59891
59892  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
59893;@ Shift register:
59894  movs r0,r0,asl r2
59895  mrs r10,cpsr ;@ r10=flags
59896  cmp r2,#0 ;@ shifting by 0?
59897  biceq r10,r10,#0x20000000 ;@ if so, clear carry
59898  strne r10,[r7,#0x4c] ;@ else Save X bit
59899
59900;@ calculate V flag (set if sign bit changes at anytime):
59901  mov r1,#0x80000000
59902  ands r3,r3,r1,asr r2
59903  cmpne r3,r1,asr r2
59904  eoreq r1,r0,r3
59905  tsteq r1,#0x80000000
59906  orrne r10,r10,#0x10000000
59907
59908;@ EaWrite: r0 into register[r11]:
59909  str r0,[r7,r11,lsl #2]
59910
59911  ldrh r8,[r4],#2 ;@ Fetch next opcode
59912  subs r5,r5,#8 ;@ Subtract cycles
59913  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59914  b CycloneEnd
59915
59916;@ ---------- [e1a8] lsl.l d0, d0 uses Ope1a8 ----------
59917Ope1a8:
59918;@ EaCalc : Get register index into r11:
59919  and r11,r8,#0x0007
59920;@ EaRead : Read register[r11] into r0:
59921  ldr r0,[r7,r11,lsl #2]
59922
59923;@ Use Dn for count:
59924  and r2,r8,#0x0e00
59925  ldr r2,[r7,r2,lsr #7]
59926  and r2,r2,#63
59927
59928  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59929
59930;@ Shift register:
59931  movs r0,r0,lsl r2
59932  mrs r10,cpsr ;@ r10=flags
59933  cmp r2,#0 ;@ shifting by 0?
59934  biceq r10,r10,#0x20000000 ;@ if so, clear carry
59935  strne r10,[r7,#0x4c] ;@ else Save X bit
59936
59937;@ EaWrite: r0 into register[r11]:
59938  str r0,[r7,r11,lsl #2]
59939
59940  ldrh r8,[r4],#2 ;@ Fetch next opcode
59941  subs r5,r5,#8 ;@ Subtract cycles
59942  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59943  b CycloneEnd
59944
59945;@ ---------- [e1b0] roxl.l d0, d0 uses Ope1b0 ----------
59946Ope1b0:
59947;@ EaCalc : Get register index into r11:
59948  and r11,r8,#0x0007
59949;@ EaRead : Read register[r11] into r0:
59950  ldr r0,[r7,r11,lsl #2]
59951
59952;@ Use Dn for count:
59953  and r2,r8,#0x0e00
59954  ldr r2,[r7,r2,lsr #7]
59955  and r2,r2,#63
59956
59957  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
59958
59959  subs r2,r2,#33
59960  addmis r2,r2,#33 ;@ Now r2=0-32
59961  beq norotx_e1b0
59962
59963  rsb r2,r2,#33 ;@ Reverse direction
59964
59965;@ First get X bit (middle):
59966  ldr r3,[r7,#0x4c]
59967  rsb r1,r2,#32
59968  and r3,r3,#0x20000000
59969  mov r3,r3,lsr #29
59970  mov r3,r3,lsl r1
59971;@ Rotate bits:
59972  orr r3,r3,r0,lsr r2 ;@ Orr right part
59973  rsbs r2,r2,#33 ;@ should also clear ARM V
59974  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
59975
59976  mrs r10,cpsr ;@ r10=flags
59977  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
59978  b nozeroxe1b0
59979norotx_e1b0:
59980  ldr r2,[r7,#0x4c]
59981  adds r0,r0,#0 ;@ Define flags
59982  and r10,r0,#0x80000000 ;@ r10=N_flag
59983  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
59984  and r2,r2,#0x20000000
59985  orr r10,r10,r2 ;@ C = old_X
59986nozeroxe1b0:
59987
59988;@ EaWrite: r0 into register[r11]:
59989  str r0,[r7,r11,lsl #2]
59990
59991  ldrh r8,[r4],#2 ;@ Fetch next opcode
59992  subs r5,r5,#8 ;@ Subtract cycles
59993  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59994  b CycloneEnd
59995
59996;@ ---------- [e1b8] rol.l d0, d0 uses Ope1b8 ----------
59997Ope1b8:
59998;@ EaCalc : Get register index into r11:
59999  and r11,r8,#0x0007
60000;@ EaRead : Read register[r11] into r0:
60001  ldr r0,[r7,r11,lsl #2]
60002
60003;@ Use Dn for count:
60004  and r2,r8,#0x0e00
60005  ldr r2,[r7,r2,lsr #7]
60006  and r2,r2,#63
60007
60008  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
60009
60010;@ Rotate register:
60011  rsb r2,r2,#32
60012  movs r0,r0,ror r2
60013  mrs r10,cpsr ;@ r10=flags
60014  bic r10,r10,#0x30000000 ;@ clear CV
60015;@ Get carry bit from bit 0:
60016  cmp r2,#32 ;@ rotating by 0?
60017  tstne r0,#1 ;@ no, check bit 0
60018  orrne r10,r10,#0x20000000
60019
60020;@ EaWrite: r0 into register[r11]:
60021  str r0,[r7,r11,lsl #2]
60022
60023  ldrh r8,[r4],#2 ;@ Fetch next opcode
60024  subs r5,r5,#8 ;@ Subtract cycles
60025  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60026  b CycloneEnd
60027
60028;@ ---------- [e1d0] asl.w (a0) uses Ope1d0 ----------
60029Ope1d0:
60030  str r4,[r7,#0x50] ;@ Save prev PC + 2
60031  str r5,[r7,#0x5c] ;@ Save Cycles
60032
60033;@ EaCalc : Get '(a0)' into r11:
60034  and r2,r8,#0x000f
60035  orr r2,r2,#0x8 ;@ A0-7
60036  ldr r11,[r7,r2,lsl #2]
60037;@ EaRead : Read '(a0)' (address in r11) into r0:
60038  str r4,[r7,#0x40] ;@ Save PC
60039  bic r0,r11,#0xff000000
60040  bl m68k_read16 ;@ Call read16(r0) handler
60041  mov r0,r0,asl #16
60042
60043  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
60044;@ Shift register:
60045  movs r0,r0,asl #1
60046  mrs r10,cpsr ;@ r10=flags
60047  str r10,[r7,#0x4c] ;@ Save X bit
60048
60049;@ calculate V flag (set if sign bit changes at anytime):
60050  mov r1,#0x80000000
60051  ands r3,r3,r1,asr #1
60052  cmpne r3,r1,asr #1
60053  eoreq r1,r0,r3
60054  tsteq r1,#0x80000000
60055  orrne r10,r10,#0x10000000
60056
60057;@ EaWrite: Write r0 into '(a0)' (address in r11):
60058  mov r1,r0,lsr #16
60059  bic r0,r11,#0xff000000
60060  bl m68k_write16 ;@ Call write16(r0,r1) handler
60061
60062  ldr r5,[r7,#0x5c] ;@ Load Cycles
60063  ldrh r8,[r4],#2 ;@ Fetch next opcode
60064  subs r5,r5,#12 ;@ Subtract cycles
60065  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60066  b CycloneEnd
60067
60068;@ ---------- [e1d8] asl.w (a0)+ uses Ope1d8 ----------
60069Ope1d8:
60070  str r4,[r7,#0x50] ;@ Save prev PC + 2
60071  str r5,[r7,#0x5c] ;@ Save Cycles
60072
60073;@ EaCalc : Get '(a0)+' into r11:
60074  and r2,r8,#0x000f
60075  ldr r11,[r7,r2,lsl #2]
60076  add r3,r11,#2 ;@ Post-increment An
60077  str r3,[r7,r2,lsl #2]
60078;@ EaRead : Read '(a0)+' (address in r11) into r0:
60079  str r4,[r7,#0x40] ;@ Save PC
60080  bic r0,r11,#0xff000000
60081  bl m68k_read16 ;@ Call read16(r0) handler
60082  mov r0,r0,asl #16
60083
60084  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
60085;@ Shift register:
60086  movs r0,r0,asl #1
60087  mrs r10,cpsr ;@ r10=flags
60088  str r10,[r7,#0x4c] ;@ Save X bit
60089
60090;@ calculate V flag (set if sign bit changes at anytime):
60091  mov r1,#0x80000000
60092  ands r3,r3,r1,asr #1
60093  cmpne r3,r1,asr #1
60094  eoreq r1,r0,r3
60095  tsteq r1,#0x80000000
60096  orrne r10,r10,#0x10000000
60097
60098;@ EaWrite: Write r0 into '(a0)+' (address in r11):
60099  mov r1,r0,lsr #16
60100  bic r0,r11,#0xff000000
60101  bl m68k_write16 ;@ Call write16(r0,r1) handler
60102
60103  ldr r5,[r7,#0x5c] ;@ Load Cycles
60104  ldrh r8,[r4],#2 ;@ Fetch next opcode
60105  subs r5,r5,#12 ;@ Subtract cycles
60106  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60107  b CycloneEnd
60108
60109;@ ---------- [e1e0] asl.w -(a0) uses Ope1e0 ----------
60110Ope1e0:
60111  str r4,[r7,#0x50] ;@ Save prev PC + 2
60112  str r5,[r7,#0x5c] ;@ Save Cycles
60113
60114;@ EaCalc : Get '-(a0)' into r11:
60115  and r2,r8,#0x000f
60116  orr r2,r2,#0x8 ;@ A0-7
60117  ldr r11,[r7,r2,lsl #2]
60118  sub r11,r11,#2 ;@ Pre-decrement An
60119  str r11,[r7,r2,lsl #2]
60120;@ EaRead : Read '-(a0)' (address in r11) into r0:
60121  str r4,[r7,#0x40] ;@ Save PC
60122  bic r0,r11,#0xff000000
60123  bl m68k_read16 ;@ Call read16(r0) handler
60124  mov r0,r0,asl #16
60125
60126  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
60127;@ Shift register:
60128  movs r0,r0,asl #1
60129  mrs r10,cpsr ;@ r10=flags
60130  str r10,[r7,#0x4c] ;@ Save X bit
60131
60132;@ calculate V flag (set if sign bit changes at anytime):
60133  mov r1,#0x80000000
60134  ands r3,r3,r1,asr #1
60135  cmpne r3,r1,asr #1
60136  eoreq r1,r0,r3
60137  tsteq r1,#0x80000000
60138  orrne r10,r10,#0x10000000
60139
60140;@ EaWrite: Write r0 into '-(a0)' (address in r11):
60141  mov r1,r0,lsr #16
60142  bic r0,r11,#0xff000000
60143  bl m68k_write16 ;@ Call write16(r0,r1) handler
60144
60145  ldr r5,[r7,#0x5c] ;@ Load Cycles
60146  ldrh r8,[r4],#2 ;@ Fetch next opcode
60147  subs r5,r5,#14 ;@ Subtract cycles
60148  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60149  b CycloneEnd
60150
60151;@ ---------- [e1e8] asl.w ($3333,a0) uses Ope1e8 ----------
60152Ope1e8:
60153  str r4,[r7,#0x50] ;@ Save prev PC + 2
60154  str r5,[r7,#0x5c] ;@ Save Cycles
60155
60156;@ EaCalc : Get '($3333,a0)' into r11:
60157  ldrsh r0,[r4],#2 ;@ Fetch offset
60158  and r2,r8,#0x000f
60159  ldr r2,[r7,r2,lsl #2]
60160  add r11,r0,r2 ;@ Add on offset
60161;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
60162  str r4,[r7,#0x40] ;@ Save PC
60163  bic r0,r11,#0xff000000
60164  bl m68k_read16 ;@ Call read16(r0) handler
60165  mov r0,r0,asl #16
60166
60167  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
60168;@ Shift register:
60169  movs r0,r0,asl #1
60170  mrs r10,cpsr ;@ r10=flags
60171  str r10,[r7,#0x4c] ;@ Save X bit
60172
60173;@ calculate V flag (set if sign bit changes at anytime):
60174  mov r1,#0x80000000
60175  ands r3,r3,r1,asr #1
60176  cmpne r3,r1,asr #1
60177  eoreq r1,r0,r3
60178  tsteq r1,#0x80000000
60179  orrne r10,r10,#0x10000000
60180
60181;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
60182  mov r1,r0,lsr #16
60183  bic r0,r11,#0xff000000
60184  bl m68k_write16 ;@ Call write16(r0,r1) handler
60185
60186  ldr r5,[r7,#0x5c] ;@ Load Cycles
60187  ldrh r8,[r4],#2 ;@ Fetch next opcode
60188  subs r5,r5,#16 ;@ Subtract cycles
60189  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60190  b CycloneEnd
60191
60192;@ ---------- [e1f0] asl.w ($33,a0,d3.w*2) uses Ope1f0 ----------
60193Ope1f0:
60194  str r4,[r7,#0x50] ;@ Save prev PC + 2
60195  str r5,[r7,#0x5c] ;@ Save Cycles
60196
60197;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
60198;@ Get extension word into r3:
60199  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
60200  mov r2,r3,lsr #10
60201  tst r3,#0x0800 ;@ Is Rn Word or Long
60202  and r2,r2,#0x3c ;@ r2=Index of Rn
60203  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
60204  ldrne   r2,[r7,r2] ;@ r2=Rn.l
60205  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
60206  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
60207  and r2,r8,#0x000f
60208  orr r2,r2,#0x8 ;@ A0-7
60209  ldr r2,[r7,r2,lsl #2]
60210  add r11,r2,r3 ;@ r11=Disp+An+Rn
60211;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
60212  str r4,[r7,#0x40] ;@ Save PC
60213  bic r0,r11,#0xff000000
60214  bl m68k_read16 ;@ Call read16(r0) handler
60215  mov r0,r0,asl #16
60216
60217  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
60218;@ Shift register:
60219  movs r0,r0,asl #1
60220  mrs r10,cpsr ;@ r10=flags
60221  str r10,[r7,#0x4c] ;@ Save X bit
60222
60223;@ calculate V flag (set if sign bit changes at anytime):
60224  mov r1,#0x80000000
60225  ands r3,r3,r1,asr #1
60226  cmpne r3,r1,asr #1
60227  eoreq r1,r0,r3
60228  tsteq r1,#0x80000000
60229  orrne r10,r10,#0x10000000
60230
60231;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
60232  mov r1,r0,lsr #16
60233  bic r0,r11,#0xff000000
60234  bl m68k_write16 ;@ Call write16(r0,r1) handler
60235
60236  ldr r5,[r7,#0x5c] ;@ Load Cycles
60237  ldrh r8,[r4],#2 ;@ Fetch next opcode
60238  subs r5,r5,#18 ;@ Subtract cycles
60239  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60240  b CycloneEnd
60241
60242;@ ---------- [e1f8] asl.w $3333.w uses Ope1f8 ----------
60243Ope1f8:
60244  str r4,[r7,#0x50] ;@ Save prev PC + 2
60245  str r5,[r7,#0x5c] ;@ Save Cycles
60246
60247;@ EaCalc : Get '$3333.w' into r11:
60248  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
60249;@ EaRead : Read '$3333.w' (address in r11) into r0:
60250  str r4,[r7,#0x40] ;@ Save PC
60251  bic r0,r11,#0xff000000
60252  bl m68k_read16 ;@ Call read16(r0) handler
60253  mov r0,r0,asl #16
60254
60255  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
60256;@ Shift register:
60257  movs r0,r0,asl #1
60258  mrs r10,cpsr ;@ r10=flags
60259  str r10,[r7,#0x4c] ;@ Save X bit
60260
60261;@ calculate V flag (set if sign bit changes at anytime):
60262  mov r1,#0x80000000
60263  ands r3,r3,r1,asr #1
60264  cmpne r3,r1,asr #1
60265  eoreq r1,r0,r3
60266  tsteq r1,#0x80000000
60267  orrne r10,r10,#0x10000000
60268
60269;@ EaWrite: Write r0 into '$3333.w' (address in r11):
60270  mov r1,r0,lsr #16
60271  bic r0,r11,#0xff000000
60272  bl m68k_write16 ;@ Call write16(r0,r1) handler
60273
60274  ldr r5,[r7,#0x5c] ;@ Load Cycles
60275  ldrh r8,[r4],#2 ;@ Fetch next opcode
60276  subs r5,r5,#16 ;@ Subtract cycles
60277  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60278  b CycloneEnd
60279
60280;@ ---------- [e1f9] asl.w $33333333.l uses Ope1f9 ----------
60281Ope1f9:
60282  str r4,[r7,#0x50] ;@ Save prev PC + 2
60283  str r5,[r7,#0x5c] ;@ Save Cycles
60284
60285;@ EaCalc : Get '$33333333.l' into r11:
60286  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
60287  ldrh r0,[r4],#2
60288  orr r11,r0,r2,lsl #16
60289;@ EaRead : Read '$33333333.l' (address in r11) into r0:
60290  str r4,[r7,#0x40] ;@ Save PC
60291  bic r0,r11,#0xff000000
60292  bl m68k_read16 ;@ Call read16(r0) handler
60293  mov r0,r0,asl #16
60294
60295  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
60296;@ Shift register:
60297  movs r0,r0,asl #1
60298  mrs r10,cpsr ;@ r10=flags
60299  str r10,[r7,#0x4c] ;@ Save X bit
60300
60301;@ calculate V flag (set if sign bit changes at anytime):
60302  mov r1,#0x80000000
60303  ands r3,r3,r1,asr #1
60304  cmpne r3,r1,asr #1
60305  eoreq r1,r0,r3
60306  tsteq r1,#0x80000000
60307  orrne r10,r10,#0x10000000
60308
60309;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
60310  mov r1,r0,lsr #16
60311  bic r0,r11,#0xff000000
60312  bl m68k_write16 ;@ Call write16(r0,r1) handler
60313
60314  ldr r5,[r7,#0x5c] ;@ Load Cycles
60315  ldrh r8,[r4],#2 ;@ Fetch next opcode
60316  subs r5,r5,#20 ;@ Subtract cycles
60317  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60318  b CycloneEnd
60319
60320;@ ---------- [e210] roxr.b #1, d0 uses Ope210 ----------
60321Ope210:
60322;@ EaCalc : Get register index into r11:
60323  and r11,r8,#0x0007
60324;@ EaRead : Read register[r11] into r0:
60325  ldr r0,[r7,r11,lsl #2]
60326  mov r0,r0,asl #24
60327
60328  orr r0,r0,r0,lsr #24
60329  bic r0,r0,#0x1000000
60330;@ Get X bit:
60331  ldr r2,[r7,#0x4c]
60332  tst r2,r2,lsl #3 ;@ Get into Carry
60333
60334  movs r0,r0,rrx
60335  mrs r10,cpsr ;@ r10=flags
60336  str r10,[r7,#0x4c] ;@ Save X bit
60337  bic r10,r10,#0x10000000 ;@ make suve V is clear
60338;@ EaWrite: r0 into register[r11]:
60339  mov r0,r0,lsr #24
60340  strb r0,[r7,r11,lsl #2]
60341
60342  ldrh r8,[r4],#2 ;@ Fetch next opcode
60343  subs r5,r5,#8 ;@ Subtract cycles
60344  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60345  b CycloneEnd
60346
60347;@ ---------- [e250] roxr.w #1, d0 uses Ope250 ----------
60348Ope250:
60349;@ EaCalc : Get register index into r11:
60350  and r11,r8,#0x0007
60351  mov r11,r11,lsl #2
60352;@ EaRead : Read register[r11] into r0:
60353  ldr r0,[r7,r11]
60354  mov r0,r0,asl #16
60355
60356  orr r0,r0,r0,lsr #16
60357  bic r0,r0,#0x10000
60358;@ Get X bit:
60359  ldr r2,[r7,#0x4c]
60360  tst r2,r2,lsl #3 ;@ Get into Carry
60361
60362  movs r0,r0,rrx
60363  mrs r10,cpsr ;@ r10=flags
60364  str r10,[r7,#0x4c] ;@ Save X bit
60365  bic r10,r10,#0x10000000 ;@ make suve V is clear
60366;@ EaWrite: r0 into register[r11]:
60367  mov r0,r0,lsr #16
60368  strh r0,[r7,r11]
60369
60370  ldrh r8,[r4],#2 ;@ Fetch next opcode
60371  subs r5,r5,#8 ;@ Subtract cycles
60372  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60373  b CycloneEnd
60374
60375;@ ---------- [e290] roxr.l #1, d0 uses Ope290 ----------
60376Ope290:
60377;@ EaCalc : Get register index into r11:
60378  and r11,r8,#0x0007
60379;@ EaRead : Read register[r11] into r0:
60380  ldr r0,[r7,r11,lsl #2]
60381
60382;@ Get X bit:
60383  ldr r2,[r7,#0x4c]
60384  tst r2,r2,lsl #3 ;@ Get into Carry
60385
60386  movs r0,r0,rrx
60387  mrs r10,cpsr ;@ r10=flags
60388  str r10,[r7,#0x4c] ;@ Save X bit
60389  bic r10,r10,#0x10000000 ;@ make suve V is clear
60390;@ EaWrite: r0 into register[r11]:
60391  str r0,[r7,r11,lsl #2]
60392
60393  ldrh r8,[r4],#2 ;@ Fetch next opcode
60394  subs r5,r5,#10 ;@ Subtract cycles
60395  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60396  b CycloneEnd
60397
60398;@ ---------- [e2d0] lsr.w (a0) uses Ope2d0 ----------
60399Ope2d0:
60400  str r4,[r7,#0x50] ;@ Save prev PC + 2
60401  str r5,[r7,#0x5c] ;@ Save Cycles
60402
60403;@ EaCalc : Get '(a0)' into r11:
60404  and r2,r8,#0x000f
60405  orr r2,r2,#0x8 ;@ A0-7
60406  ldr r11,[r7,r2,lsl #2]
60407;@ EaRead : Read '(a0)' (address in r11) into r0:
60408  str r4,[r7,#0x40] ;@ Save PC
60409  bic r0,r11,#0xff000000
60410  bl m68k_read16 ;@ Call read16(r0) handler
60411  mov r0,r0,asl #16
60412
60413;@ For shift right, use loworder bits for the operation:
60414  mov r0,r0,lsr #16
60415
60416;@ Shift register:
60417  movs r0,r0,lsr #1
60418  mrs r10,cpsr ;@ r10=flags
60419  str r10,[r7,#0x4c] ;@ Save X bit
60420
60421;@ restore after right shift:
60422  movs r0,r0,lsl #16
60423  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
60424
60425;@ EaWrite: Write r0 into '(a0)' (address in r11):
60426  mov r1,r0,lsr #16
60427  bic r0,r11,#0xff000000
60428  bl m68k_write16 ;@ Call write16(r0,r1) handler
60429
60430  ldr r5,[r7,#0x5c] ;@ Load Cycles
60431  ldrh r8,[r4],#2 ;@ Fetch next opcode
60432  subs r5,r5,#12 ;@ Subtract cycles
60433  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60434  b CycloneEnd
60435
60436;@ ---------- [e2d8] lsr.w (a0)+ uses Ope2d8 ----------
60437Ope2d8:
60438  str r4,[r7,#0x50] ;@ Save prev PC + 2
60439  str r5,[r7,#0x5c] ;@ Save Cycles
60440
60441;@ EaCalc : Get '(a0)+' into r11:
60442  and r2,r8,#0x000f
60443  ldr r11,[r7,r2,lsl #2]
60444  add r3,r11,#2 ;@ Post-increment An
60445  str r3,[r7,r2,lsl #2]
60446;@ EaRead : Read '(a0)+' (address in r11) into r0:
60447  str r4,[r7,#0x40] ;@ Save PC
60448  bic r0,r11,#0xff000000
60449  bl m68k_read16 ;@ Call read16(r0) handler
60450  mov r0,r0,asl #16
60451
60452;@ For shift right, use loworder bits for the operation:
60453  mov r0,r0,lsr #16
60454
60455;@ Shift register:
60456  movs r0,r0,lsr #1
60457  mrs r10,cpsr ;@ r10=flags
60458  str r10,[r7,#0x4c] ;@ Save X bit
60459
60460;@ restore after right shift:
60461  movs r0,r0,lsl #16
60462  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
60463
60464;@ EaWrite: Write r0 into '(a0)+' (address in r11):
60465  mov r1,r0,lsr #16
60466  bic r0,r11,#0xff000000
60467  bl m68k_write16 ;@ Call write16(r0,r1) handler
60468
60469  ldr r5,[r7,#0x5c] ;@ Load Cycles
60470  ldrh r8,[r4],#2 ;@ Fetch next opcode
60471  subs r5,r5,#12 ;@ Subtract cycles
60472  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60473  b CycloneEnd
60474
60475;@ ---------- [e2e0] lsr.w -(a0) uses Ope2e0 ----------
60476Ope2e0:
60477  str r4,[r7,#0x50] ;@ Save prev PC + 2
60478  str r5,[r7,#0x5c] ;@ Save Cycles
60479
60480;@ EaCalc : Get '-(a0)' into r11:
60481  and r2,r8,#0x000f
60482  orr r2,r2,#0x8 ;@ A0-7
60483  ldr r11,[r7,r2,lsl #2]
60484  sub r11,r11,#2 ;@ Pre-decrement An
60485  str r11,[r7,r2,lsl #2]
60486;@ EaRead : Read '-(a0)' (address in r11) into r0:
60487  str r4,[r7,#0x40] ;@ Save PC
60488  bic r0,r11,#0xff000000
60489  bl m68k_read16 ;@ Call read16(r0) handler
60490  mov r0,r0,asl #16
60491
60492;@ For shift right, use loworder bits for the operation:
60493  mov r0,r0,lsr #16
60494
60495;@ Shift register:
60496  movs r0,r0,lsr #1
60497  mrs r10,cpsr ;@ r10=flags
60498  str r10,[r7,#0x4c] ;@ Save X bit
60499
60500;@ restore after right shift:
60501  movs r0,r0,lsl #16
60502  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
60503
60504;@ EaWrite: Write r0 into '-(a0)' (address in r11):
60505  mov r1,r0,lsr #16
60506  bic r0,r11,#0xff000000
60507  bl m68k_write16 ;@ Call write16(r0,r1) handler
60508
60509  ldr r5,[r7,#0x5c] ;@ Load Cycles
60510  ldrh r8,[r4],#2 ;@ Fetch next opcode
60511  subs r5,r5,#14 ;@ Subtract cycles
60512  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60513  b CycloneEnd
60514
60515;@ ---------- [e2e8] lsr.w ($3333,a0) uses Ope2e8 ----------
60516Ope2e8:
60517  str r4,[r7,#0x50] ;@ Save prev PC + 2
60518  str r5,[r7,#0x5c] ;@ Save Cycles
60519
60520;@ EaCalc : Get '($3333,a0)' into r11:
60521  ldrsh r0,[r4],#2 ;@ Fetch offset
60522  and r2,r8,#0x000f
60523  ldr r2,[r7,r2,lsl #2]
60524  add r11,r0,r2 ;@ Add on offset
60525;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
60526  str r4,[r7,#0x40] ;@ Save PC
60527  bic r0,r11,#0xff000000
60528  bl m68k_read16 ;@ Call read16(r0) handler
60529  mov r0,r0,asl #16
60530
60531;@ For shift right, use loworder bits for the operation:
60532  mov r0,r0,lsr #16
60533
60534;@ Shift register:
60535  movs r0,r0,lsr #1
60536  mrs r10,cpsr ;@ r10=flags
60537  str r10,[r7,#0x4c] ;@ Save X bit
60538
60539;@ restore after right shift:
60540  movs r0,r0,lsl #16
60541  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
60542
60543;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
60544  mov r1,r0,lsr #16
60545  bic r0,r11,#0xff000000
60546  bl m68k_write16 ;@ Call write16(r0,r1) handler
60547
60548  ldr r5,[r7,#0x5c] ;@ Load Cycles
60549  ldrh r8,[r4],#2 ;@ Fetch next opcode
60550  subs r5,r5,#16 ;@ Subtract cycles
60551  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60552  b CycloneEnd
60553
60554;@ ---------- [e2f0] lsr.w ($33,a0,d3.w*2) uses Ope2f0 ----------
60555Ope2f0:
60556  str r4,[r7,#0x50] ;@ Save prev PC + 2
60557  str r5,[r7,#0x5c] ;@ Save Cycles
60558
60559;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
60560;@ Get extension word into r3:
60561  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
60562  mov r2,r3,lsr #10
60563  tst r3,#0x0800 ;@ Is Rn Word or Long
60564  and r2,r2,#0x3c ;@ r2=Index of Rn
60565  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
60566  ldrne   r2,[r7,r2] ;@ r2=Rn.l
60567  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
60568  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
60569  and r2,r8,#0x000f
60570  orr r2,r2,#0x8 ;@ A0-7
60571  ldr r2,[r7,r2,lsl #2]
60572  add r11,r2,r3 ;@ r11=Disp+An+Rn
60573;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
60574  str r4,[r7,#0x40] ;@ Save PC
60575  bic r0,r11,#0xff000000
60576  bl m68k_read16 ;@ Call read16(r0) handler
60577  mov r0,r0,asl #16
60578
60579;@ For shift right, use loworder bits for the operation:
60580  mov r0,r0,lsr #16
60581
60582;@ Shift register:
60583  movs r0,r0,lsr #1
60584  mrs r10,cpsr ;@ r10=flags
60585  str r10,[r7,#0x4c] ;@ Save X bit
60586
60587;@ restore after right shift:
60588  movs r0,r0,lsl #16
60589  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
60590
60591;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
60592  mov r1,r0,lsr #16
60593  bic r0,r11,#0xff000000
60594  bl m68k_write16 ;@ Call write16(r0,r1) handler
60595
60596  ldr r5,[r7,#0x5c] ;@ Load Cycles
60597  ldrh r8,[r4],#2 ;@ Fetch next opcode
60598  subs r5,r5,#18 ;@ Subtract cycles
60599  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60600  b CycloneEnd
60601
60602;@ ---------- [e2f8] lsr.w $3333.w uses Ope2f8 ----------
60603Ope2f8:
60604  str r4,[r7,#0x50] ;@ Save prev PC + 2
60605  str r5,[r7,#0x5c] ;@ Save Cycles
60606
60607;@ EaCalc : Get '$3333.w' into r11:
60608  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
60609;@ EaRead : Read '$3333.w' (address in r11) into r0:
60610  str r4,[r7,#0x40] ;@ Save PC
60611  bic r0,r11,#0xff000000
60612  bl m68k_read16 ;@ Call read16(r0) handler
60613  mov r0,r0,asl #16
60614
60615;@ For shift right, use loworder bits for the operation:
60616  mov r0,r0,lsr #16
60617
60618;@ Shift register:
60619  movs r0,r0,lsr #1
60620  mrs r10,cpsr ;@ r10=flags
60621  str r10,[r7,#0x4c] ;@ Save X bit
60622
60623;@ restore after right shift:
60624  movs r0,r0,lsl #16
60625  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
60626
60627;@ EaWrite: Write r0 into '$3333.w' (address in r11):
60628  mov r1,r0,lsr #16
60629  bic r0,r11,#0xff000000
60630  bl m68k_write16 ;@ Call write16(r0,r1) handler
60631
60632  ldr r5,[r7,#0x5c] ;@ Load Cycles
60633  ldrh r8,[r4],#2 ;@ Fetch next opcode
60634  subs r5,r5,#16 ;@ Subtract cycles
60635  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60636  b CycloneEnd
60637
60638;@ ---------- [e2f9] lsr.w $33333333.l uses Ope2f9 ----------
60639Ope2f9:
60640  str r4,[r7,#0x50] ;@ Save prev PC + 2
60641  str r5,[r7,#0x5c] ;@ Save Cycles
60642
60643;@ EaCalc : Get '$33333333.l' into r11:
60644  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
60645  ldrh r0,[r4],#2
60646  orr r11,r0,r2,lsl #16
60647;@ EaRead : Read '$33333333.l' (address in r11) into r0:
60648  str r4,[r7,#0x40] ;@ Save PC
60649  bic r0,r11,#0xff000000
60650  bl m68k_read16 ;@ Call read16(r0) handler
60651  mov r0,r0,asl #16
60652
60653;@ For shift right, use loworder bits for the operation:
60654  mov r0,r0,lsr #16
60655
60656;@ Shift register:
60657  movs r0,r0,lsr #1
60658  mrs r10,cpsr ;@ r10=flags
60659  str r10,[r7,#0x4c] ;@ Save X bit
60660
60661;@ restore after right shift:
60662  movs r0,r0,lsl #16
60663  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
60664
60665;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
60666  mov r1,r0,lsr #16
60667  bic r0,r11,#0xff000000
60668  bl m68k_write16 ;@ Call write16(r0,r1) handler
60669
60670  ldr r5,[r7,#0x5c] ;@ Load Cycles
60671  ldrh r8,[r4],#2 ;@ Fetch next opcode
60672  subs r5,r5,#20 ;@ Subtract cycles
60673  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60674  b CycloneEnd
60675
60676;@ ---------- [e310] roxl.b #1, d0 uses Ope310 ----------
60677Ope310:
60678;@ EaCalc : Get register index into r11:
60679  and r11,r8,#0x0007
60680;@ EaRead : Read register[r11] into r0:
60681  ldr r0,[r7,r11,lsl #2]
60682  mov r0,r0,asl #24
60683
60684  ldr r3,[r7,#0x4c]
60685  movs r0,r0,lsl #1
60686  mrs r10,cpsr ;@ r10=flags
60687  str r10,[r7,#0x4c] ;@ Save X bit
60688  tst r3,#0x20000000
60689  orrne r0,r0,#0x1000000
60690  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
60691  bic r10,r10,#0x10000000 ;@ make suve V is clear
60692;@ EaWrite: r0 into register[r11]:
60693  mov r0,r0,lsr #24
60694  strb r0,[r7,r11,lsl #2]
60695
60696  ldrh r8,[r4],#2 ;@ Fetch next opcode
60697  subs r5,r5,#8 ;@ Subtract cycles
60698  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60699  b CycloneEnd
60700
60701;@ ---------- [e350] roxl.w #1, d0 uses Ope350 ----------
60702Ope350:
60703;@ EaCalc : Get register index into r11:
60704  and r11,r8,#0x0007
60705  mov r11,r11,lsl #2
60706;@ EaRead : Read register[r11] into r0:
60707  ldr r0,[r7,r11]
60708  mov r0,r0,asl #16
60709
60710  ldr r3,[r7,#0x4c]
60711  movs r0,r0,lsl #1
60712  mrs r10,cpsr ;@ r10=flags
60713  str r10,[r7,#0x4c] ;@ Save X bit
60714  tst r3,#0x20000000
60715  orrne r0,r0,#0x10000
60716  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
60717  bic r10,r10,#0x10000000 ;@ make suve V is clear
60718;@ EaWrite: r0 into register[r11]:
60719  mov r0,r0,lsr #16
60720  strh r0,[r7,r11]
60721
60722  ldrh r8,[r4],#2 ;@ Fetch next opcode
60723  subs r5,r5,#8 ;@ Subtract cycles
60724  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60725  b CycloneEnd
60726
60727;@ ---------- [e390] roxl.l #1, d0 uses Ope390 ----------
60728Ope390:
60729;@ EaCalc : Get register index into r11:
60730  and r11,r8,#0x0007
60731;@ EaRead : Read register[r11] into r0:
60732  ldr r0,[r7,r11,lsl #2]
60733
60734  ldr r3,[r7,#0x4c]
60735  movs r0,r0,lsl #1
60736  mrs r10,cpsr ;@ r10=flags
60737  str r10,[r7,#0x4c] ;@ Save X bit
60738  tst r3,#0x20000000
60739  orrne r0,r0,#0x1
60740  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
60741  bic r10,r10,#0x10000000 ;@ make suve V is clear
60742;@ EaWrite: r0 into register[r11]:
60743  str r0,[r7,r11,lsl #2]
60744
60745  ldrh r8,[r4],#2 ;@ Fetch next opcode
60746  subs r5,r5,#10 ;@ Subtract cycles
60747  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60748  b CycloneEnd
60749
60750;@ ---------- [e3d0] lsl.w (a0) uses Ope3d0 ----------
60751Ope3d0:
60752  str r4,[r7,#0x50] ;@ Save prev PC + 2
60753  str r5,[r7,#0x5c] ;@ Save Cycles
60754
60755;@ EaCalc : Get '(a0)' into r11:
60756  and r2,r8,#0x000f
60757  orr r2,r2,#0x8 ;@ A0-7
60758  ldr r11,[r7,r2,lsl #2]
60759;@ EaRead : Read '(a0)' (address in r11) into r0:
60760  str r4,[r7,#0x40] ;@ Save PC
60761  bic r0,r11,#0xff000000
60762  bl m68k_read16 ;@ Call read16(r0) handler
60763  mov r0,r0,asl #16
60764
60765;@ Shift register:
60766  movs r0,r0,lsl #1
60767  mrs r10,cpsr ;@ r10=flags
60768  str r10,[r7,#0x4c] ;@ Save X bit
60769
60770;@ EaWrite: Write r0 into '(a0)' (address in r11):
60771  mov r1,r0,lsr #16
60772  bic r0,r11,#0xff000000
60773  bl m68k_write16 ;@ Call write16(r0,r1) handler
60774
60775  ldr r5,[r7,#0x5c] ;@ Load Cycles
60776  ldrh r8,[r4],#2 ;@ Fetch next opcode
60777  subs r5,r5,#12 ;@ Subtract cycles
60778  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60779  b CycloneEnd
60780
60781;@ ---------- [e3d8] lsl.w (a0)+ uses Ope3d8 ----------
60782Ope3d8:
60783  str r4,[r7,#0x50] ;@ Save prev PC + 2
60784  str r5,[r7,#0x5c] ;@ Save Cycles
60785
60786;@ EaCalc : Get '(a0)+' into r11:
60787  and r2,r8,#0x000f
60788  ldr r11,[r7,r2,lsl #2]
60789  add r3,r11,#2 ;@ Post-increment An
60790  str r3,[r7,r2,lsl #2]
60791;@ EaRead : Read '(a0)+' (address in r11) into r0:
60792  str r4,[r7,#0x40] ;@ Save PC
60793  bic r0,r11,#0xff000000
60794  bl m68k_read16 ;@ Call read16(r0) handler
60795  mov r0,r0,asl #16
60796
60797;@ Shift register:
60798  movs r0,r0,lsl #1
60799  mrs r10,cpsr ;@ r10=flags
60800  str r10,[r7,#0x4c] ;@ Save X bit
60801
60802;@ EaWrite: Write r0 into '(a0)+' (address in r11):
60803  mov r1,r0,lsr #16
60804  bic r0,r11,#0xff000000
60805  bl m68k_write16 ;@ Call write16(r0,r1) handler
60806
60807  ldr r5,[r7,#0x5c] ;@ Load Cycles
60808  ldrh r8,[r4],#2 ;@ Fetch next opcode
60809  subs r5,r5,#12 ;@ Subtract cycles
60810  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60811  b CycloneEnd
60812
60813;@ ---------- [e3e0] lsl.w -(a0) uses Ope3e0 ----------
60814Ope3e0:
60815  str r4,[r7,#0x50] ;@ Save prev PC + 2
60816  str r5,[r7,#0x5c] ;@ Save Cycles
60817
60818;@ EaCalc : Get '-(a0)' into r11:
60819  and r2,r8,#0x000f
60820  orr r2,r2,#0x8 ;@ A0-7
60821  ldr r11,[r7,r2,lsl #2]
60822  sub r11,r11,#2 ;@ Pre-decrement An
60823  str r11,[r7,r2,lsl #2]
60824;@ EaRead : Read '-(a0)' (address in r11) into r0:
60825  str r4,[r7,#0x40] ;@ Save PC
60826  bic r0,r11,#0xff000000
60827  bl m68k_read16 ;@ Call read16(r0) handler
60828  mov r0,r0,asl #16
60829
60830;@ Shift register:
60831  movs r0,r0,lsl #1
60832  mrs r10,cpsr ;@ r10=flags
60833  str r10,[r7,#0x4c] ;@ Save X bit
60834
60835;@ EaWrite: Write r0 into '-(a0)' (address in r11):
60836  mov r1,r0,lsr #16
60837  bic r0,r11,#0xff000000
60838  bl m68k_write16 ;@ Call write16(r0,r1) handler
60839
60840  ldr r5,[r7,#0x5c] ;@ Load Cycles
60841  ldrh r8,[r4],#2 ;@ Fetch next opcode
60842  subs r5,r5,#14 ;@ Subtract cycles
60843  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60844  b CycloneEnd
60845
60846;@ ---------- [e3e8] lsl.w ($3333,a0) uses Ope3e8 ----------
60847Ope3e8:
60848  str r4,[r7,#0x50] ;@ Save prev PC + 2
60849  str r5,[r7,#0x5c] ;@ Save Cycles
60850
60851;@ EaCalc : Get '($3333,a0)' into r11:
60852  ldrsh r0,[r4],#2 ;@ Fetch offset
60853  and r2,r8,#0x000f
60854  ldr r2,[r7,r2,lsl #2]
60855  add r11,r0,r2 ;@ Add on offset
60856;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
60857  str r4,[r7,#0x40] ;@ Save PC
60858  bic r0,r11,#0xff000000
60859  bl m68k_read16 ;@ Call read16(r0) handler
60860  mov r0,r0,asl #16
60861
60862;@ Shift register:
60863  movs r0,r0,lsl #1
60864  mrs r10,cpsr ;@ r10=flags
60865  str r10,[r7,#0x4c] ;@ Save X bit
60866
60867;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
60868  mov r1,r0,lsr #16
60869  bic r0,r11,#0xff000000
60870  bl m68k_write16 ;@ Call write16(r0,r1) handler
60871
60872  ldr r5,[r7,#0x5c] ;@ Load Cycles
60873  ldrh r8,[r4],#2 ;@ Fetch next opcode
60874  subs r5,r5,#16 ;@ Subtract cycles
60875  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60876  b CycloneEnd
60877
60878;@ ---------- [e3f0] lsl.w ($33,a0,d3.w*2) uses Ope3f0 ----------
60879Ope3f0:
60880  str r4,[r7,#0x50] ;@ Save prev PC + 2
60881  str r5,[r7,#0x5c] ;@ Save Cycles
60882
60883;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
60884;@ Get extension word into r3:
60885  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
60886  mov r2,r3,lsr #10
60887  tst r3,#0x0800 ;@ Is Rn Word or Long
60888  and r2,r2,#0x3c ;@ r2=Index of Rn
60889  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
60890  ldrne   r2,[r7,r2] ;@ r2=Rn.l
60891  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
60892  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
60893  and r2,r8,#0x000f
60894  orr r2,r2,#0x8 ;@ A0-7
60895  ldr r2,[r7,r2,lsl #2]
60896  add r11,r2,r3 ;@ r11=Disp+An+Rn
60897;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
60898  str r4,[r7,#0x40] ;@ Save PC
60899  bic r0,r11,#0xff000000
60900  bl m68k_read16 ;@ Call read16(r0) handler
60901  mov r0,r0,asl #16
60902
60903;@ Shift register:
60904  movs r0,r0,lsl #1
60905  mrs r10,cpsr ;@ r10=flags
60906  str r10,[r7,#0x4c] ;@ Save X bit
60907
60908;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
60909  mov r1,r0,lsr #16
60910  bic r0,r11,#0xff000000
60911  bl m68k_write16 ;@ Call write16(r0,r1) handler
60912
60913  ldr r5,[r7,#0x5c] ;@ Load Cycles
60914  ldrh r8,[r4],#2 ;@ Fetch next opcode
60915  subs r5,r5,#18 ;@ Subtract cycles
60916  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60917  b CycloneEnd
60918
60919;@ ---------- [e3f8] lsl.w $3333.w uses Ope3f8 ----------
60920Ope3f8:
60921  str r4,[r7,#0x50] ;@ Save prev PC + 2
60922  str r5,[r7,#0x5c] ;@ Save Cycles
60923
60924;@ EaCalc : Get '$3333.w' into r11:
60925  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
60926;@ EaRead : Read '$3333.w' (address in r11) into r0:
60927  str r4,[r7,#0x40] ;@ Save PC
60928  bic r0,r11,#0xff000000
60929  bl m68k_read16 ;@ Call read16(r0) handler
60930  mov r0,r0,asl #16
60931
60932;@ Shift register:
60933  movs r0,r0,lsl #1
60934  mrs r10,cpsr ;@ r10=flags
60935  str r10,[r7,#0x4c] ;@ Save X bit
60936
60937;@ EaWrite: Write r0 into '$3333.w' (address in r11):
60938  mov r1,r0,lsr #16
60939  bic r0,r11,#0xff000000
60940  bl m68k_write16 ;@ Call write16(r0,r1) handler
60941
60942  ldr r5,[r7,#0x5c] ;@ Load Cycles
60943  ldrh r8,[r4],#2 ;@ Fetch next opcode
60944  subs r5,r5,#16 ;@ Subtract cycles
60945  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60946  b CycloneEnd
60947
60948;@ ---------- [e3f9] lsl.w $33333333.l uses Ope3f9 ----------
60949Ope3f9:
60950  str r4,[r7,#0x50] ;@ Save prev PC + 2
60951  str r5,[r7,#0x5c] ;@ Save Cycles
60952
60953;@ EaCalc : Get '$33333333.l' into r11:
60954  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
60955  ldrh r0,[r4],#2
60956  orr r11,r0,r2,lsl #16
60957;@ EaRead : Read '$33333333.l' (address in r11) into r0:
60958  str r4,[r7,#0x40] ;@ Save PC
60959  bic r0,r11,#0xff000000
60960  bl m68k_read16 ;@ Call read16(r0) handler
60961  mov r0,r0,asl #16
60962
60963;@ Shift register:
60964  movs r0,r0,lsl #1
60965  mrs r10,cpsr ;@ r10=flags
60966  str r10,[r7,#0x4c] ;@ Save X bit
60967
60968;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
60969  mov r1,r0,lsr #16
60970  bic r0,r11,#0xff000000
60971  bl m68k_write16 ;@ Call write16(r0,r1) handler
60972
60973  ldr r5,[r7,#0x5c] ;@ Load Cycles
60974  ldrh r8,[r4],#2 ;@ Fetch next opcode
60975  subs r5,r5,#20 ;@ Subtract cycles
60976  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
60977  b CycloneEnd
60978
60979;@ ---------- [e4d0] roxr.w (a0) uses Ope4d0 ----------
60980Ope4d0:
60981  str r4,[r7,#0x50] ;@ Save prev PC + 2
60982  str r5,[r7,#0x5c] ;@ Save Cycles
60983
60984;@ EaCalc : Get '(a0)' into r11:
60985  and r2,r8,#0x000f
60986  orr r2,r2,#0x8 ;@ A0-7
60987  ldr r11,[r7,r2,lsl #2]
60988;@ EaRead : Read '(a0)' (address in r11) into r0:
60989  str r4,[r7,#0x40] ;@ Save PC
60990  bic r0,r11,#0xff000000
60991  bl m68k_read16 ;@ Call read16(r0) handler
60992  mov r0,r0,asl #16
60993
60994  orr r0,r0,r0,lsr #16
60995  bic r0,r0,#0x10000
60996;@ Get X bit:
60997  ldr r2,[r7,#0x4c]
60998  tst r2,r2,lsl #3 ;@ Get into Carry
60999
61000  movs r0,r0,rrx
61001  mrs r10,cpsr ;@ r10=flags
61002  str r10,[r7,#0x4c] ;@ Save X bit
61003  bic r10,r10,#0x10000000 ;@ make suve V is clear
61004;@ EaWrite: Write r0 into '(a0)' (address in r11):
61005  mov r1,r0,lsr #16
61006  bic r0,r11,#0xff000000
61007  bl m68k_write16 ;@ Call write16(r0,r1) handler
61008
61009  ldr r5,[r7,#0x5c] ;@ Load Cycles
61010  ldrh r8,[r4],#2 ;@ Fetch next opcode
61011  subs r5,r5,#12 ;@ Subtract cycles
61012  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61013  b CycloneEnd
61014
61015;@ ---------- [e4d8] roxr.w (a0)+ uses Ope4d8 ----------
61016Ope4d8:
61017  str r4,[r7,#0x50] ;@ Save prev PC + 2
61018  str r5,[r7,#0x5c] ;@ Save Cycles
61019
61020;@ EaCalc : Get '(a0)+' into r11:
61021  and r2,r8,#0x000f
61022  ldr r11,[r7,r2,lsl #2]
61023  add r3,r11,#2 ;@ Post-increment An
61024  str r3,[r7,r2,lsl #2]
61025;@ EaRead : Read '(a0)+' (address in r11) into r0:
61026  str r4,[r7,#0x40] ;@ Save PC
61027  bic r0,r11,#0xff000000
61028  bl m68k_read16 ;@ Call read16(r0) handler
61029  mov r0,r0,asl #16
61030
61031  orr r0,r0,r0,lsr #16
61032  bic r0,r0,#0x10000
61033;@ Get X bit:
61034  ldr r2,[r7,#0x4c]
61035  tst r2,r2,lsl #3 ;@ Get into Carry
61036
61037  movs r0,r0,rrx
61038  mrs r10,cpsr ;@ r10=flags
61039  str r10,[r7,#0x4c] ;@ Save X bit
61040  bic r10,r10,#0x10000000 ;@ make suve V is clear
61041;@ EaWrite: Write r0 into '(a0)+' (address in r11):
61042  mov r1,r0,lsr #16
61043  bic r0,r11,#0xff000000
61044  bl m68k_write16 ;@ Call write16(r0,r1) handler
61045
61046  ldr r5,[r7,#0x5c] ;@ Load Cycles
61047  ldrh r8,[r4],#2 ;@ Fetch next opcode
61048  subs r5,r5,#12 ;@ Subtract cycles
61049  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61050  b CycloneEnd
61051
61052;@ ---------- [e4e0] roxr.w -(a0) uses Ope4e0 ----------
61053Ope4e0:
61054  str r4,[r7,#0x50] ;@ Save prev PC + 2
61055  str r5,[r7,#0x5c] ;@ Save Cycles
61056
61057;@ EaCalc : Get '-(a0)' into r11:
61058  and r2,r8,#0x000f
61059  orr r2,r2,#0x8 ;@ A0-7
61060  ldr r11,[r7,r2,lsl #2]
61061  sub r11,r11,#2 ;@ Pre-decrement An
61062  str r11,[r7,r2,lsl #2]
61063;@ EaRead : Read '-(a0)' (address in r11) into r0:
61064  str r4,[r7,#0x40] ;@ Save PC
61065  bic r0,r11,#0xff000000
61066  bl m68k_read16 ;@ Call read16(r0) handler
61067  mov r0,r0,asl #16
61068
61069  orr r0,r0,r0,lsr #16
61070  bic r0,r0,#0x10000
61071;@ Get X bit:
61072  ldr r2,[r7,#0x4c]
61073  tst r2,r2,lsl #3 ;@ Get into Carry
61074
61075  movs r0,r0,rrx
61076  mrs r10,cpsr ;@ r10=flags
61077  str r10,[r7,#0x4c] ;@ Save X bit
61078  bic r10,r10,#0x10000000 ;@ make suve V is clear
61079;@ EaWrite: Write r0 into '-(a0)' (address in r11):
61080  mov r1,r0,lsr #16
61081  bic r0,r11,#0xff000000
61082  bl m68k_write16 ;@ Call write16(r0,r1) handler
61083
61084  ldr r5,[r7,#0x5c] ;@ Load Cycles
61085  ldrh r8,[r4],#2 ;@ Fetch next opcode
61086  subs r5,r5,#14 ;@ Subtract cycles
61087  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61088  b CycloneEnd
61089
61090;@ ---------- [e4e8] roxr.w ($3333,a0) uses Ope4e8 ----------
61091Ope4e8:
61092  str r4,[r7,#0x50] ;@ Save prev PC + 2
61093  str r5,[r7,#0x5c] ;@ Save Cycles
61094
61095;@ EaCalc : Get '($3333,a0)' into r11:
61096  ldrsh r0,[r4],#2 ;@ Fetch offset
61097  and r2,r8,#0x000f
61098  ldr r2,[r7,r2,lsl #2]
61099  add r11,r0,r2 ;@ Add on offset
61100;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
61101  str r4,[r7,#0x40] ;@ Save PC
61102  bic r0,r11,#0xff000000
61103  bl m68k_read16 ;@ Call read16(r0) handler
61104  mov r0,r0,asl #16
61105
61106  orr r0,r0,r0,lsr #16
61107  bic r0,r0,#0x10000
61108;@ Get X bit:
61109  ldr r2,[r7,#0x4c]
61110  tst r2,r2,lsl #3 ;@ Get into Carry
61111
61112  movs r0,r0,rrx
61113  mrs r10,cpsr ;@ r10=flags
61114  str r10,[r7,#0x4c] ;@ Save X bit
61115  bic r10,r10,#0x10000000 ;@ make suve V is clear
61116;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
61117  mov r1,r0,lsr #16
61118  bic r0,r11,#0xff000000
61119  bl m68k_write16 ;@ Call write16(r0,r1) handler
61120
61121  ldr r5,[r7,#0x5c] ;@ Load Cycles
61122  ldrh r8,[r4],#2 ;@ Fetch next opcode
61123  subs r5,r5,#16 ;@ Subtract cycles
61124  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61125  b CycloneEnd
61126
61127;@ ---------- [e4f0] roxr.w ($33,a0,d3.w*2) uses Ope4f0 ----------
61128Ope4f0:
61129  str r4,[r7,#0x50] ;@ Save prev PC + 2
61130  str r5,[r7,#0x5c] ;@ Save Cycles
61131
61132;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
61133;@ Get extension word into r3:
61134  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
61135  mov r2,r3,lsr #10
61136  tst r3,#0x0800 ;@ Is Rn Word or Long
61137  and r2,r2,#0x3c ;@ r2=Index of Rn
61138  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
61139  ldrne   r2,[r7,r2] ;@ r2=Rn.l
61140  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
61141  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
61142  and r2,r8,#0x000f
61143  orr r2,r2,#0x8 ;@ A0-7
61144  ldr r2,[r7,r2,lsl #2]
61145  add r11,r2,r3 ;@ r11=Disp+An+Rn
61146;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
61147  str r4,[r7,#0x40] ;@ Save PC
61148  bic r0,r11,#0xff000000
61149  bl m68k_read16 ;@ Call read16(r0) handler
61150  mov r0,r0,asl #16
61151
61152  orr r0,r0,r0,lsr #16
61153  bic r0,r0,#0x10000
61154;@ Get X bit:
61155  ldr r2,[r7,#0x4c]
61156  tst r2,r2,lsl #3 ;@ Get into Carry
61157
61158  movs r0,r0,rrx
61159  mrs r10,cpsr ;@ r10=flags
61160  str r10,[r7,#0x4c] ;@ Save X bit
61161  bic r10,r10,#0x10000000 ;@ make suve V is clear
61162;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
61163  mov r1,r0,lsr #16
61164  bic r0,r11,#0xff000000
61165  bl m68k_write16 ;@ Call write16(r0,r1) handler
61166
61167  ldr r5,[r7,#0x5c] ;@ Load Cycles
61168  ldrh r8,[r4],#2 ;@ Fetch next opcode
61169  subs r5,r5,#18 ;@ Subtract cycles
61170  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61171  b CycloneEnd
61172
61173;@ ---------- [e4f8] roxr.w $3333.w uses Ope4f8 ----------
61174Ope4f8:
61175  str r4,[r7,#0x50] ;@ Save prev PC + 2
61176  str r5,[r7,#0x5c] ;@ Save Cycles
61177
61178;@ EaCalc : Get '$3333.w' into r11:
61179  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
61180;@ EaRead : Read '$3333.w' (address in r11) into r0:
61181  str r4,[r7,#0x40] ;@ Save PC
61182  bic r0,r11,#0xff000000
61183  bl m68k_read16 ;@ Call read16(r0) handler
61184  mov r0,r0,asl #16
61185
61186  orr r0,r0,r0,lsr #16
61187  bic r0,r0,#0x10000
61188;@ Get X bit:
61189  ldr r2,[r7,#0x4c]
61190  tst r2,r2,lsl #3 ;@ Get into Carry
61191
61192  movs r0,r0,rrx
61193  mrs r10,cpsr ;@ r10=flags
61194  str r10,[r7,#0x4c] ;@ Save X bit
61195  bic r10,r10,#0x10000000 ;@ make suve V is clear
61196;@ EaWrite: Write r0 into '$3333.w' (address in r11):
61197  mov r1,r0,lsr #16
61198  bic r0,r11,#0xff000000
61199  bl m68k_write16 ;@ Call write16(r0,r1) handler
61200
61201  ldr r5,[r7,#0x5c] ;@ Load Cycles
61202  ldrh r8,[r4],#2 ;@ Fetch next opcode
61203  subs r5,r5,#16 ;@ Subtract cycles
61204  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61205  b CycloneEnd
61206
61207;@ ---------- [e4f9] roxr.w $33333333.l uses Ope4f9 ----------
61208Ope4f9:
61209  str r4,[r7,#0x50] ;@ Save prev PC + 2
61210  str r5,[r7,#0x5c] ;@ Save Cycles
61211
61212;@ EaCalc : Get '$33333333.l' into r11:
61213  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
61214  ldrh r0,[r4],#2
61215  orr r11,r0,r2,lsl #16
61216;@ EaRead : Read '$33333333.l' (address in r11) into r0:
61217  str r4,[r7,#0x40] ;@ Save PC
61218  bic r0,r11,#0xff000000
61219  bl m68k_read16 ;@ Call read16(r0) handler
61220  mov r0,r0,asl #16
61221
61222  orr r0,r0,r0,lsr #16
61223  bic r0,r0,#0x10000
61224;@ Get X bit:
61225  ldr r2,[r7,#0x4c]
61226  tst r2,r2,lsl #3 ;@ Get into Carry
61227
61228  movs r0,r0,rrx
61229  mrs r10,cpsr ;@ r10=flags
61230  str r10,[r7,#0x4c] ;@ Save X bit
61231  bic r10,r10,#0x10000000 ;@ make suve V is clear
61232;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
61233  mov r1,r0,lsr #16
61234  bic r0,r11,#0xff000000
61235  bl m68k_write16 ;@ Call write16(r0,r1) handler
61236
61237  ldr r5,[r7,#0x5c] ;@ Load Cycles
61238  ldrh r8,[r4],#2 ;@ Fetch next opcode
61239  subs r5,r5,#20 ;@ Subtract cycles
61240  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61241  b CycloneEnd
61242
61243;@ ---------- [e5d0] roxl.w (a0) uses Ope5d0 ----------
61244Ope5d0:
61245  str r4,[r7,#0x50] ;@ Save prev PC + 2
61246  str r5,[r7,#0x5c] ;@ Save Cycles
61247
61248;@ EaCalc : Get '(a0)' into r11:
61249  and r2,r8,#0x000f
61250  orr r2,r2,#0x8 ;@ A0-7
61251  ldr r11,[r7,r2,lsl #2]
61252;@ EaRead : Read '(a0)' (address in r11) into r0:
61253  str r4,[r7,#0x40] ;@ Save PC
61254  bic r0,r11,#0xff000000
61255  bl m68k_read16 ;@ Call read16(r0) handler
61256  mov r0,r0,asl #16
61257
61258  ldr r3,[r7,#0x4c]
61259  movs r0,r0,lsl #1
61260  mrs r10,cpsr ;@ r10=flags
61261  str r10,[r7,#0x4c] ;@ Save X bit
61262  tst r3,#0x20000000
61263  orrne r0,r0,#0x10000
61264  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
61265  bic r10,r10,#0x10000000 ;@ make suve V is clear
61266;@ EaWrite: Write r0 into '(a0)' (address in r11):
61267  mov r1,r0,lsr #16
61268  bic r0,r11,#0xff000000
61269  bl m68k_write16 ;@ Call write16(r0,r1) handler
61270
61271  ldr r5,[r7,#0x5c] ;@ Load Cycles
61272  ldrh r8,[r4],#2 ;@ Fetch next opcode
61273  subs r5,r5,#12 ;@ Subtract cycles
61274  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61275  b CycloneEnd
61276
61277;@ ---------- [e5d8] roxl.w (a0)+ uses Ope5d8 ----------
61278Ope5d8:
61279  str r4,[r7,#0x50] ;@ Save prev PC + 2
61280  str r5,[r7,#0x5c] ;@ Save Cycles
61281
61282;@ EaCalc : Get '(a0)+' into r11:
61283  and r2,r8,#0x000f
61284  ldr r11,[r7,r2,lsl #2]
61285  add r3,r11,#2 ;@ Post-increment An
61286  str r3,[r7,r2,lsl #2]
61287;@ EaRead : Read '(a0)+' (address in r11) into r0:
61288  str r4,[r7,#0x40] ;@ Save PC
61289  bic r0,r11,#0xff000000
61290  bl m68k_read16 ;@ Call read16(r0) handler
61291  mov r0,r0,asl #16
61292
61293  ldr r3,[r7,#0x4c]
61294  movs r0,r0,lsl #1
61295  mrs r10,cpsr ;@ r10=flags
61296  str r10,[r7,#0x4c] ;@ Save X bit
61297  tst r3,#0x20000000
61298  orrne r0,r0,#0x10000
61299  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
61300  bic r10,r10,#0x10000000 ;@ make suve V is clear
61301;@ EaWrite: Write r0 into '(a0)+' (address in r11):
61302  mov r1,r0,lsr #16
61303  bic r0,r11,#0xff000000
61304  bl m68k_write16 ;@ Call write16(r0,r1) handler
61305
61306  ldr r5,[r7,#0x5c] ;@ Load Cycles
61307  ldrh r8,[r4],#2 ;@ Fetch next opcode
61308  subs r5,r5,#12 ;@ Subtract cycles
61309  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61310  b CycloneEnd
61311
61312;@ ---------- [e5e0] roxl.w -(a0) uses Ope5e0 ----------
61313Ope5e0:
61314  str r4,[r7,#0x50] ;@ Save prev PC + 2
61315  str r5,[r7,#0x5c] ;@ Save Cycles
61316
61317;@ EaCalc : Get '-(a0)' into r11:
61318  and r2,r8,#0x000f
61319  orr r2,r2,#0x8 ;@ A0-7
61320  ldr r11,[r7,r2,lsl #2]
61321  sub r11,r11,#2 ;@ Pre-decrement An
61322  str r11,[r7,r2,lsl #2]
61323;@ EaRead : Read '-(a0)' (address in r11) into r0:
61324  str r4,[r7,#0x40] ;@ Save PC
61325  bic r0,r11,#0xff000000
61326  bl m68k_read16 ;@ Call read16(r0) handler
61327  mov r0,r0,asl #16
61328
61329  ldr r3,[r7,#0x4c]
61330  movs r0,r0,lsl #1
61331  mrs r10,cpsr ;@ r10=flags
61332  str r10,[r7,#0x4c] ;@ Save X bit
61333  tst r3,#0x20000000
61334  orrne r0,r0,#0x10000
61335  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
61336  bic r10,r10,#0x10000000 ;@ make suve V is clear
61337;@ EaWrite: Write r0 into '-(a0)' (address in r11):
61338  mov r1,r0,lsr #16
61339  bic r0,r11,#0xff000000
61340  bl m68k_write16 ;@ Call write16(r0,r1) handler
61341
61342  ldr r5,[r7,#0x5c] ;@ Load Cycles
61343  ldrh r8,[r4],#2 ;@ Fetch next opcode
61344  subs r5,r5,#14 ;@ Subtract cycles
61345  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61346  b CycloneEnd
61347
61348;@ ---------- [e5e8] roxl.w ($3333,a0) uses Ope5e8 ----------
61349Ope5e8:
61350  str r4,[r7,#0x50] ;@ Save prev PC + 2
61351  str r5,[r7,#0x5c] ;@ Save Cycles
61352
61353;@ EaCalc : Get '($3333,a0)' into r11:
61354  ldrsh r0,[r4],#2 ;@ Fetch offset
61355  and r2,r8,#0x000f
61356  ldr r2,[r7,r2,lsl #2]
61357  add r11,r0,r2 ;@ Add on offset
61358;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
61359  str r4,[r7,#0x40] ;@ Save PC
61360  bic r0,r11,#0xff000000
61361  bl m68k_read16 ;@ Call read16(r0) handler
61362  mov r0,r0,asl #16
61363
61364  ldr r3,[r7,#0x4c]
61365  movs r0,r0,lsl #1
61366  mrs r10,cpsr ;@ r10=flags
61367  str r10,[r7,#0x4c] ;@ Save X bit
61368  tst r3,#0x20000000
61369  orrne r0,r0,#0x10000
61370  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
61371  bic r10,r10,#0x10000000 ;@ make suve V is clear
61372;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
61373  mov r1,r0,lsr #16
61374  bic r0,r11,#0xff000000
61375  bl m68k_write16 ;@ Call write16(r0,r1) handler
61376
61377  ldr r5,[r7,#0x5c] ;@ Load Cycles
61378  ldrh r8,[r4],#2 ;@ Fetch next opcode
61379  subs r5,r5,#16 ;@ Subtract cycles
61380  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61381  b CycloneEnd
61382
61383;@ ---------- [e5f0] roxl.w ($33,a0,d3.w*2) uses Ope5f0 ----------
61384Ope5f0:
61385  str r4,[r7,#0x50] ;@ Save prev PC + 2
61386  str r5,[r7,#0x5c] ;@ Save Cycles
61387
61388;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
61389;@ Get extension word into r3:
61390  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
61391  mov r2,r3,lsr #10
61392  tst r3,#0x0800 ;@ Is Rn Word or Long
61393  and r2,r2,#0x3c ;@ r2=Index of Rn
61394  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
61395  ldrne   r2,[r7,r2] ;@ r2=Rn.l
61396  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
61397  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
61398  and r2,r8,#0x000f
61399  orr r2,r2,#0x8 ;@ A0-7
61400  ldr r2,[r7,r2,lsl #2]
61401  add r11,r2,r3 ;@ r11=Disp+An+Rn
61402;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
61403  str r4,[r7,#0x40] ;@ Save PC
61404  bic r0,r11,#0xff000000
61405  bl m68k_read16 ;@ Call read16(r0) handler
61406  mov r0,r0,asl #16
61407
61408  ldr r3,[r7,#0x4c]
61409  movs r0,r0,lsl #1
61410  mrs r10,cpsr ;@ r10=flags
61411  str r10,[r7,#0x4c] ;@ Save X bit
61412  tst r3,#0x20000000
61413  orrne r0,r0,#0x10000
61414  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
61415  bic r10,r10,#0x10000000 ;@ make suve V is clear
61416;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
61417  mov r1,r0,lsr #16
61418  bic r0,r11,#0xff000000
61419  bl m68k_write16 ;@ Call write16(r0,r1) handler
61420
61421  ldr r5,[r7,#0x5c] ;@ Load Cycles
61422  ldrh r8,[r4],#2 ;@ Fetch next opcode
61423  subs r5,r5,#18 ;@ Subtract cycles
61424  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61425  b CycloneEnd
61426
61427;@ ---------- [e5f8] roxl.w $3333.w uses Ope5f8 ----------
61428Ope5f8:
61429  str r4,[r7,#0x50] ;@ Save prev PC + 2
61430  str r5,[r7,#0x5c] ;@ Save Cycles
61431
61432;@ EaCalc : Get '$3333.w' into r11:
61433  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
61434;@ EaRead : Read '$3333.w' (address in r11) into r0:
61435  str r4,[r7,#0x40] ;@ Save PC
61436  bic r0,r11,#0xff000000
61437  bl m68k_read16 ;@ Call read16(r0) handler
61438  mov r0,r0,asl #16
61439
61440  ldr r3,[r7,#0x4c]
61441  movs r0,r0,lsl #1
61442  mrs r10,cpsr ;@ r10=flags
61443  str r10,[r7,#0x4c] ;@ Save X bit
61444  tst r3,#0x20000000
61445  orrne r0,r0,#0x10000
61446  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
61447  bic r10,r10,#0x10000000 ;@ make suve V is clear
61448;@ EaWrite: Write r0 into '$3333.w' (address in r11):
61449  mov r1,r0,lsr #16
61450  bic r0,r11,#0xff000000
61451  bl m68k_write16 ;@ Call write16(r0,r1) handler
61452
61453  ldr r5,[r7,#0x5c] ;@ Load Cycles
61454  ldrh r8,[r4],#2 ;@ Fetch next opcode
61455  subs r5,r5,#16 ;@ Subtract cycles
61456  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61457  b CycloneEnd
61458
61459;@ ---------- [e5f9] roxl.w $33333333.l uses Ope5f9 ----------
61460Ope5f9:
61461  str r4,[r7,#0x50] ;@ Save prev PC + 2
61462  str r5,[r7,#0x5c] ;@ Save Cycles
61463
61464;@ EaCalc : Get '$33333333.l' into r11:
61465  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
61466  ldrh r0,[r4],#2
61467  orr r11,r0,r2,lsl #16
61468;@ EaRead : Read '$33333333.l' (address in r11) into r0:
61469  str r4,[r7,#0x40] ;@ Save PC
61470  bic r0,r11,#0xff000000
61471  bl m68k_read16 ;@ Call read16(r0) handler
61472  mov r0,r0,asl #16
61473
61474  ldr r3,[r7,#0x4c]
61475  movs r0,r0,lsl #1
61476  mrs r10,cpsr ;@ r10=flags
61477  str r10,[r7,#0x4c] ;@ Save X bit
61478  tst r3,#0x20000000
61479  orrne r0,r0,#0x10000
61480  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
61481  bic r10,r10,#0x10000000 ;@ make suve V is clear
61482;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
61483  mov r1,r0,lsr #16
61484  bic r0,r11,#0xff000000
61485  bl m68k_write16 ;@ Call write16(r0,r1) handler
61486
61487  ldr r5,[r7,#0x5c] ;@ Load Cycles
61488  ldrh r8,[r4],#2 ;@ Fetch next opcode
61489  subs r5,r5,#20 ;@ Subtract cycles
61490  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61491  b CycloneEnd
61492
61493;@ ---------- [e6d0] ror.w (a0) uses Ope6d0 ----------
61494Ope6d0:
61495  str r4,[r7,#0x50] ;@ Save prev PC + 2
61496  str r5,[r7,#0x5c] ;@ Save Cycles
61497
61498;@ EaCalc : Get '(a0)' into r11:
61499  and r2,r8,#0x000f
61500  orr r2,r2,#0x8 ;@ A0-7
61501  ldr r11,[r7,r2,lsl #2]
61502;@ EaRead : Read '(a0)' (address in r11) into r0:
61503  str r4,[r7,#0x40] ;@ Save PC
61504  bic r0,r11,#0xff000000
61505  bl m68k_read16 ;@ Call read16(r0) handler
61506  mov r0,r0,asl #16
61507
61508;@ Mirror value in whole 32 bits:
61509  orr r0,r0,r0,lsr #16
61510
61511;@ Rotate register:
61512  adds r0,r0,#0 ;@ first clear V and C
61513  movs r0,r0,ror #1
61514  mrs r10,cpsr ;@ r10=flags
61515
61516;@ EaWrite: Write r0 into '(a0)' (address in r11):
61517  mov r1,r0,lsr #16
61518  bic r0,r11,#0xff000000
61519  bl m68k_write16 ;@ Call write16(r0,r1) handler
61520
61521  ldr r5,[r7,#0x5c] ;@ Load Cycles
61522  ldrh r8,[r4],#2 ;@ Fetch next opcode
61523  subs r5,r5,#12 ;@ Subtract cycles
61524  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61525  b CycloneEnd
61526
61527;@ ---------- [e6d8] ror.w (a0)+ uses Ope6d8 ----------
61528Ope6d8:
61529  str r4,[r7,#0x50] ;@ Save prev PC + 2
61530  str r5,[r7,#0x5c] ;@ Save Cycles
61531
61532;@ EaCalc : Get '(a0)+' into r11:
61533  and r2,r8,#0x000f
61534  ldr r11,[r7,r2,lsl #2]
61535  add r3,r11,#2 ;@ Post-increment An
61536  str r3,[r7,r2,lsl #2]
61537;@ EaRead : Read '(a0)+' (address in r11) into r0:
61538  str r4,[r7,#0x40] ;@ Save PC
61539  bic r0,r11,#0xff000000
61540  bl m68k_read16 ;@ Call read16(r0) handler
61541  mov r0,r0,asl #16
61542
61543;@ Mirror value in whole 32 bits:
61544  orr r0,r0,r0,lsr #16
61545
61546;@ Rotate register:
61547  adds r0,r0,#0 ;@ first clear V and C
61548  movs r0,r0,ror #1
61549  mrs r10,cpsr ;@ r10=flags
61550
61551;@ EaWrite: Write r0 into '(a0)+' (address in r11):
61552  mov r1,r0,lsr #16
61553  bic r0,r11,#0xff000000
61554  bl m68k_write16 ;@ Call write16(r0,r1) handler
61555
61556  ldr r5,[r7,#0x5c] ;@ Load Cycles
61557  ldrh r8,[r4],#2 ;@ Fetch next opcode
61558  subs r5,r5,#12 ;@ Subtract cycles
61559  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61560  b CycloneEnd
61561
61562;@ ---------- [e6e0] ror.w -(a0) uses Ope6e0 ----------
61563Ope6e0:
61564  str r4,[r7,#0x50] ;@ Save prev PC + 2
61565  str r5,[r7,#0x5c] ;@ Save Cycles
61566
61567;@ EaCalc : Get '-(a0)' into r11:
61568  and r2,r8,#0x000f
61569  orr r2,r2,#0x8 ;@ A0-7
61570  ldr r11,[r7,r2,lsl #2]
61571  sub r11,r11,#2 ;@ Pre-decrement An
61572  str r11,[r7,r2,lsl #2]
61573;@ EaRead : Read '-(a0)' (address in r11) into r0:
61574  str r4,[r7,#0x40] ;@ Save PC
61575  bic r0,r11,#0xff000000
61576  bl m68k_read16 ;@ Call read16(r0) handler
61577  mov r0,r0,asl #16
61578
61579;@ Mirror value in whole 32 bits:
61580  orr r0,r0,r0,lsr #16
61581
61582;@ Rotate register:
61583  adds r0,r0,#0 ;@ first clear V and C
61584  movs r0,r0,ror #1
61585  mrs r10,cpsr ;@ r10=flags
61586
61587;@ EaWrite: Write r0 into '-(a0)' (address in r11):
61588  mov r1,r0,lsr #16
61589  bic r0,r11,#0xff000000
61590  bl m68k_write16 ;@ Call write16(r0,r1) handler
61591
61592  ldr r5,[r7,#0x5c] ;@ Load Cycles
61593  ldrh r8,[r4],#2 ;@ Fetch next opcode
61594  subs r5,r5,#14 ;@ Subtract cycles
61595  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61596  b CycloneEnd
61597
61598;@ ---------- [e6e8] ror.w ($3333,a0) uses Ope6e8 ----------
61599Ope6e8:
61600  str r4,[r7,#0x50] ;@ Save prev PC + 2
61601  str r5,[r7,#0x5c] ;@ Save Cycles
61602
61603;@ EaCalc : Get '($3333,a0)' into r11:
61604  ldrsh r0,[r4],#2 ;@ Fetch offset
61605  and r2,r8,#0x000f
61606  ldr r2,[r7,r2,lsl #2]
61607  add r11,r0,r2 ;@ Add on offset
61608;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
61609  str r4,[r7,#0x40] ;@ Save PC
61610  bic r0,r11,#0xff000000
61611  bl m68k_read16 ;@ Call read16(r0) handler
61612  mov r0,r0,asl #16
61613
61614;@ Mirror value in whole 32 bits:
61615  orr r0,r0,r0,lsr #16
61616
61617;@ Rotate register:
61618  adds r0,r0,#0 ;@ first clear V and C
61619  movs r0,r0,ror #1
61620  mrs r10,cpsr ;@ r10=flags
61621
61622;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
61623  mov r1,r0,lsr #16
61624  bic r0,r11,#0xff000000
61625  bl m68k_write16 ;@ Call write16(r0,r1) handler
61626
61627  ldr r5,[r7,#0x5c] ;@ Load Cycles
61628  ldrh r8,[r4],#2 ;@ Fetch next opcode
61629  subs r5,r5,#16 ;@ Subtract cycles
61630  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61631  b CycloneEnd
61632
61633;@ ---------- [e6f0] ror.w ($33,a0,d3.w*2) uses Ope6f0 ----------
61634Ope6f0:
61635  str r4,[r7,#0x50] ;@ Save prev PC + 2
61636  str r5,[r7,#0x5c] ;@ Save Cycles
61637
61638;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
61639;@ Get extension word into r3:
61640  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
61641  mov r2,r3,lsr #10
61642  tst r3,#0x0800 ;@ Is Rn Word or Long
61643  and r2,r2,#0x3c ;@ r2=Index of Rn
61644  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
61645  ldrne   r2,[r7,r2] ;@ r2=Rn.l
61646  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
61647  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
61648  and r2,r8,#0x000f
61649  orr r2,r2,#0x8 ;@ A0-7
61650  ldr r2,[r7,r2,lsl #2]
61651  add r11,r2,r3 ;@ r11=Disp+An+Rn
61652;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
61653  str r4,[r7,#0x40] ;@ Save PC
61654  bic r0,r11,#0xff000000
61655  bl m68k_read16 ;@ Call read16(r0) handler
61656  mov r0,r0,asl #16
61657
61658;@ Mirror value in whole 32 bits:
61659  orr r0,r0,r0,lsr #16
61660
61661;@ Rotate register:
61662  adds r0,r0,#0 ;@ first clear V and C
61663  movs r0,r0,ror #1
61664  mrs r10,cpsr ;@ r10=flags
61665
61666;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
61667  mov r1,r0,lsr #16
61668  bic r0,r11,#0xff000000
61669  bl m68k_write16 ;@ Call write16(r0,r1) handler
61670
61671  ldr r5,[r7,#0x5c] ;@ Load Cycles
61672  ldrh r8,[r4],#2 ;@ Fetch next opcode
61673  subs r5,r5,#18 ;@ Subtract cycles
61674  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61675  b CycloneEnd
61676
61677;@ ---------- [e6f8] ror.w $3333.w uses Ope6f8 ----------
61678Ope6f8:
61679  str r4,[r7,#0x50] ;@ Save prev PC + 2
61680  str r5,[r7,#0x5c] ;@ Save Cycles
61681
61682;@ EaCalc : Get '$3333.w' into r11:
61683  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
61684;@ EaRead : Read '$3333.w' (address in r11) into r0:
61685  str r4,[r7,#0x40] ;@ Save PC
61686  bic r0,r11,#0xff000000
61687  bl m68k_read16 ;@ Call read16(r0) handler
61688  mov r0,r0,asl #16
61689
61690;@ Mirror value in whole 32 bits:
61691  orr r0,r0,r0,lsr #16
61692
61693;@ Rotate register:
61694  adds r0,r0,#0 ;@ first clear V and C
61695  movs r0,r0,ror #1
61696  mrs r10,cpsr ;@ r10=flags
61697
61698;@ EaWrite: Write r0 into '$3333.w' (address in r11):
61699  mov r1,r0,lsr #16
61700  bic r0,r11,#0xff000000
61701  bl m68k_write16 ;@ Call write16(r0,r1) handler
61702
61703  ldr r5,[r7,#0x5c] ;@ Load Cycles
61704  ldrh r8,[r4],#2 ;@ Fetch next opcode
61705  subs r5,r5,#16 ;@ Subtract cycles
61706  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61707  b CycloneEnd
61708
61709;@ ---------- [e6f9] ror.w $33333333.l uses Ope6f9 ----------
61710Ope6f9:
61711  str r4,[r7,#0x50] ;@ Save prev PC + 2
61712  str r5,[r7,#0x5c] ;@ Save Cycles
61713
61714;@ EaCalc : Get '$33333333.l' into r11:
61715  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
61716  ldrh r0,[r4],#2
61717  orr r11,r0,r2,lsl #16
61718;@ EaRead : Read '$33333333.l' (address in r11) into r0:
61719  str r4,[r7,#0x40] ;@ Save PC
61720  bic r0,r11,#0xff000000
61721  bl m68k_read16 ;@ Call read16(r0) handler
61722  mov r0,r0,asl #16
61723
61724;@ Mirror value in whole 32 bits:
61725  orr r0,r0,r0,lsr #16
61726
61727;@ Rotate register:
61728  adds r0,r0,#0 ;@ first clear V and C
61729  movs r0,r0,ror #1
61730  mrs r10,cpsr ;@ r10=flags
61731
61732;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
61733  mov r1,r0,lsr #16
61734  bic r0,r11,#0xff000000
61735  bl m68k_write16 ;@ Call write16(r0,r1) handler
61736
61737  ldr r5,[r7,#0x5c] ;@ Load Cycles
61738  ldrh r8,[r4],#2 ;@ Fetch next opcode
61739  subs r5,r5,#20 ;@ Subtract cycles
61740  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61741  b CycloneEnd
61742
61743;@ ---------- [e7d0] rol.w (a0) uses Ope7d0 ----------
61744Ope7d0:
61745  str r4,[r7,#0x50] ;@ Save prev PC + 2
61746  str r5,[r7,#0x5c] ;@ Save Cycles
61747
61748;@ EaCalc : Get '(a0)' into r11:
61749  and r2,r8,#0x000f
61750  orr r2,r2,#0x8 ;@ A0-7
61751  ldr r11,[r7,r2,lsl #2]
61752;@ EaRead : Read '(a0)' (address in r11) into r0:
61753  str r4,[r7,#0x40] ;@ Save PC
61754  bic r0,r11,#0xff000000
61755  bl m68k_read16 ;@ Call read16(r0) handler
61756  mov r0,r0,asl #16
61757
61758;@ Mirror value in whole 32 bits:
61759  orr r0,r0,r0,lsr #16
61760
61761;@ Rotate register:
61762  movs r0,r0,ror #31
61763  mrs r10,cpsr ;@ r10=flags
61764  bic r10,r10,#0x30000000 ;@ clear CV
61765;@ Get carry bit from bit 0:
61766  tst r0,#1
61767  orrne r10,r10,#0x20000000
61768
61769;@ EaWrite: Write r0 into '(a0)' (address in r11):
61770  mov r1,r0,lsr #16
61771  bic r0,r11,#0xff000000
61772  bl m68k_write16 ;@ Call write16(r0,r1) handler
61773
61774  ldr r5,[r7,#0x5c] ;@ Load Cycles
61775  ldrh r8,[r4],#2 ;@ Fetch next opcode
61776  subs r5,r5,#12 ;@ Subtract cycles
61777  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61778  b CycloneEnd
61779
61780;@ ---------- [e7d8] rol.w (a0)+ uses Ope7d8 ----------
61781Ope7d8:
61782  str r4,[r7,#0x50] ;@ Save prev PC + 2
61783  str r5,[r7,#0x5c] ;@ Save Cycles
61784
61785;@ EaCalc : Get '(a0)+' into r11:
61786  and r2,r8,#0x000f
61787  ldr r11,[r7,r2,lsl #2]
61788  add r3,r11,#2 ;@ Post-increment An
61789  str r3,[r7,r2,lsl #2]
61790;@ EaRead : Read '(a0)+' (address in r11) into r0:
61791  str r4,[r7,#0x40] ;@ Save PC
61792  bic r0,r11,#0xff000000
61793  bl m68k_read16 ;@ Call read16(r0) handler
61794  mov r0,r0,asl #16
61795
61796;@ Mirror value in whole 32 bits:
61797  orr r0,r0,r0,lsr #16
61798
61799;@ Rotate register:
61800  movs r0,r0,ror #31
61801  mrs r10,cpsr ;@ r10=flags
61802  bic r10,r10,#0x30000000 ;@ clear CV
61803;@ Get carry bit from bit 0:
61804  tst r0,#1
61805  orrne r10,r10,#0x20000000
61806
61807;@ EaWrite: Write r0 into '(a0)+' (address in r11):
61808  mov r1,r0,lsr #16
61809  bic r0,r11,#0xff000000
61810  bl m68k_write16 ;@ Call write16(r0,r1) handler
61811
61812  ldr r5,[r7,#0x5c] ;@ Load Cycles
61813  ldrh r8,[r4],#2 ;@ Fetch next opcode
61814  subs r5,r5,#12 ;@ Subtract cycles
61815  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61816  b CycloneEnd
61817
61818;@ ---------- [e7e0] rol.w -(a0) uses Ope7e0 ----------
61819Ope7e0:
61820  str r4,[r7,#0x50] ;@ Save prev PC + 2
61821  str r5,[r7,#0x5c] ;@ Save Cycles
61822
61823;@ EaCalc : Get '-(a0)' into r11:
61824  and r2,r8,#0x000f
61825  orr r2,r2,#0x8 ;@ A0-7
61826  ldr r11,[r7,r2,lsl #2]
61827  sub r11,r11,#2 ;@ Pre-decrement An
61828  str r11,[r7,r2,lsl #2]
61829;@ EaRead : Read '-(a0)' (address in r11) into r0:
61830  str r4,[r7,#0x40] ;@ Save PC
61831  bic r0,r11,#0xff000000
61832  bl m68k_read16 ;@ Call read16(r0) handler
61833  mov r0,r0,asl #16
61834
61835;@ Mirror value in whole 32 bits:
61836  orr r0,r0,r0,lsr #16
61837
61838;@ Rotate register:
61839  movs r0,r0,ror #31
61840  mrs r10,cpsr ;@ r10=flags
61841  bic r10,r10,#0x30000000 ;@ clear CV
61842;@ Get carry bit from bit 0:
61843  tst r0,#1
61844  orrne r10,r10,#0x20000000
61845
61846;@ EaWrite: Write r0 into '-(a0)' (address in r11):
61847  mov r1,r0,lsr #16
61848  bic r0,r11,#0xff000000
61849  bl m68k_write16 ;@ Call write16(r0,r1) handler
61850
61851  ldr r5,[r7,#0x5c] ;@ Load Cycles
61852  ldrh r8,[r4],#2 ;@ Fetch next opcode
61853  subs r5,r5,#14 ;@ Subtract cycles
61854  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61855  b CycloneEnd
61856
61857;@ ---------- [e7e8] rol.w ($3333,a0) uses Ope7e8 ----------
61858Ope7e8:
61859  str r4,[r7,#0x50] ;@ Save prev PC + 2
61860  str r5,[r7,#0x5c] ;@ Save Cycles
61861
61862;@ EaCalc : Get '($3333,a0)' into r11:
61863  ldrsh r0,[r4],#2 ;@ Fetch offset
61864  and r2,r8,#0x000f
61865  ldr r2,[r7,r2,lsl #2]
61866  add r11,r0,r2 ;@ Add on offset
61867;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
61868  str r4,[r7,#0x40] ;@ Save PC
61869  bic r0,r11,#0xff000000
61870  bl m68k_read16 ;@ Call read16(r0) handler
61871  mov r0,r0,asl #16
61872
61873;@ Mirror value in whole 32 bits:
61874  orr r0,r0,r0,lsr #16
61875
61876;@ Rotate register:
61877  movs r0,r0,ror #31
61878  mrs r10,cpsr ;@ r10=flags
61879  bic r10,r10,#0x30000000 ;@ clear CV
61880;@ Get carry bit from bit 0:
61881  tst r0,#1
61882  orrne r10,r10,#0x20000000
61883
61884;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
61885  mov r1,r0,lsr #16
61886  bic r0,r11,#0xff000000
61887  bl m68k_write16 ;@ Call write16(r0,r1) handler
61888
61889  ldr r5,[r7,#0x5c] ;@ Load Cycles
61890  ldrh r8,[r4],#2 ;@ Fetch next opcode
61891  subs r5,r5,#16 ;@ Subtract cycles
61892  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61893  b CycloneEnd
61894
61895;@ ---------- [e7f0] rol.w ($33,a0,d3.w*2) uses Ope7f0 ----------
61896Ope7f0:
61897  str r4,[r7,#0x50] ;@ Save prev PC + 2
61898  str r5,[r7,#0x5c] ;@ Save Cycles
61899
61900;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
61901;@ Get extension word into r3:
61902  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
61903  mov r2,r3,lsr #10
61904  tst r3,#0x0800 ;@ Is Rn Word or Long
61905  and r2,r2,#0x3c ;@ r2=Index of Rn
61906  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
61907  ldrne   r2,[r7,r2] ;@ r2=Rn.l
61908  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
61909  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
61910  and r2,r8,#0x000f
61911  orr r2,r2,#0x8 ;@ A0-7
61912  ldr r2,[r7,r2,lsl #2]
61913  add r11,r2,r3 ;@ r11=Disp+An+Rn
61914;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
61915  str r4,[r7,#0x40] ;@ Save PC
61916  bic r0,r11,#0xff000000
61917  bl m68k_read16 ;@ Call read16(r0) handler
61918  mov r0,r0,asl #16
61919
61920;@ Mirror value in whole 32 bits:
61921  orr r0,r0,r0,lsr #16
61922
61923;@ Rotate register:
61924  movs r0,r0,ror #31
61925  mrs r10,cpsr ;@ r10=flags
61926  bic r10,r10,#0x30000000 ;@ clear CV
61927;@ Get carry bit from bit 0:
61928  tst r0,#1
61929  orrne r10,r10,#0x20000000
61930
61931;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
61932  mov r1,r0,lsr #16
61933  bic r0,r11,#0xff000000
61934  bl m68k_write16 ;@ Call write16(r0,r1) handler
61935
61936  ldr r5,[r7,#0x5c] ;@ Load Cycles
61937  ldrh r8,[r4],#2 ;@ Fetch next opcode
61938  subs r5,r5,#18 ;@ Subtract cycles
61939  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61940  b CycloneEnd
61941
61942;@ ---------- [e7f8] rol.w $3333.w uses Ope7f8 ----------
61943Ope7f8:
61944  str r4,[r7,#0x50] ;@ Save prev PC + 2
61945  str r5,[r7,#0x5c] ;@ Save Cycles
61946
61947;@ EaCalc : Get '$3333.w' into r11:
61948  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
61949;@ EaRead : Read '$3333.w' (address in r11) into r0:
61950  str r4,[r7,#0x40] ;@ Save PC
61951  bic r0,r11,#0xff000000
61952  bl m68k_read16 ;@ Call read16(r0) handler
61953  mov r0,r0,asl #16
61954
61955;@ Mirror value in whole 32 bits:
61956  orr r0,r0,r0,lsr #16
61957
61958;@ Rotate register:
61959  movs r0,r0,ror #31
61960  mrs r10,cpsr ;@ r10=flags
61961  bic r10,r10,#0x30000000 ;@ clear CV
61962;@ Get carry bit from bit 0:
61963  tst r0,#1
61964  orrne r10,r10,#0x20000000
61965
61966;@ EaWrite: Write r0 into '$3333.w' (address in r11):
61967  mov r1,r0,lsr #16
61968  bic r0,r11,#0xff000000
61969  bl m68k_write16 ;@ Call write16(r0,r1) handler
61970
61971  ldr r5,[r7,#0x5c] ;@ Load Cycles
61972  ldrh r8,[r4],#2 ;@ Fetch next opcode
61973  subs r5,r5,#16 ;@ Subtract cycles
61974  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
61975  b CycloneEnd
61976
61977;@ ---------- [e7f9] rol.w $33333333.l uses Ope7f9 ----------
61978Ope7f9:
61979  str r4,[r7,#0x50] ;@ Save prev PC + 2
61980  str r5,[r7,#0x5c] ;@ Save Cycles
61981
61982;@ EaCalc : Get '$33333333.l' into r11:
61983  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
61984  ldrh r0,[r4],#2
61985  orr r11,r0,r2,lsl #16
61986;@ EaRead : Read '$33333333.l' (address in r11) into r0:
61987  str r4,[r7,#0x40] ;@ Save PC
61988  bic r0,r11,#0xff000000
61989  bl m68k_read16 ;@ Call read16(r0) handler
61990  mov r0,r0,asl #16
61991
61992;@ Mirror value in whole 32 bits:
61993  orr r0,r0,r0,lsr #16
61994
61995;@ Rotate register:
61996  movs r0,r0,ror #31
61997  mrs r10,cpsr ;@ r10=flags
61998  bic r10,r10,#0x30000000 ;@ clear CV
61999;@ Get carry bit from bit 0:
62000  tst r0,#1
62001  orrne r10,r10,#0x20000000
62002
62003;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
62004  mov r1,r0,lsr #16
62005  bic r0,r11,#0xff000000
62006  bl m68k_write16 ;@ Call write16(r0,r1) handler
62007
62008  ldr r5,[r7,#0x5c] ;@ Load Cycles
62009  ldrh r8,[r4],#2 ;@ Fetch next opcode
62010  subs r5,r5,#20 ;@ Subtract cycles
62011  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62012  b CycloneEnd
62013
62014;@ ---------- [ee00] asr.b #7, d0 uses Opee00 ----------
62015Opee00:
62016;@ EaCalc : Get register index into r11:
62017  and r11,r8,#0x0007
62018;@ EaRead : Read register[r11] into r0:
62019  ldr r0,[r7,r11,lsl #2]
62020  mov r0,r0,asl #24
62021
62022  mov r2,r8,lsr #9 ;@ Get 'n'
62023  and r2,r2,#7
62024
62025  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62026
62027;@ For shift right, use loworder bits for the operation:
62028  mov r0,r0,asr #24
62029
62030;@ Shift register:
62031  movs r0,r0,asr r2
62032  mrs r10,cpsr ;@ r10=flags
62033  str r10,[r7,#0x4c] ;@ Save X bit
62034
62035;@ restore after right shift:
62036  movs r0,r0,lsl #24
62037
62038;@ EaWrite: r0 into register[r11]:
62039  mov r0,r0,lsr #24
62040  strb r0,[r7,r11,lsl #2]
62041
62042  ldrh r8,[r4],#2 ;@ Fetch next opcode
62043  subs r5,r5,#6 ;@ Subtract cycles
62044  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62045  b CycloneEnd
62046
62047;@ ---------- [ee08] lsr.b #7, d0 uses Opee08 ----------
62048Opee08:
62049;@ EaCalc : Get register index into r11:
62050  and r11,r8,#0x0007
62051;@ EaRead : Read register[r11] into r0:
62052  ldr r0,[r7,r11,lsl #2]
62053  mov r0,r0,asl #24
62054
62055  mov r2,r8,lsr #9 ;@ Get 'n'
62056  and r2,r2,#7
62057
62058  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62059
62060;@ For shift right, use loworder bits for the operation:
62061  mov r0,r0,lsr #24
62062
62063;@ Shift register:
62064  movs r0,r0,lsr r2
62065  mrs r10,cpsr ;@ r10=flags
62066  str r10,[r7,#0x4c] ;@ Save X bit
62067
62068;@ restore after right shift:
62069  movs r0,r0,lsl #24
62070  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
62071
62072;@ EaWrite: r0 into register[r11]:
62073  mov r0,r0,lsr #24
62074  strb r0,[r7,r11,lsl #2]
62075
62076  ldrh r8,[r4],#2 ;@ Fetch next opcode
62077  subs r5,r5,#6 ;@ Subtract cycles
62078  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62079  b CycloneEnd
62080
62081;@ ---------- [ee10] roxr.b #7, d0 uses Opee10 ----------
62082Opee10:
62083;@ EaCalc : Get register index into r11:
62084  and r11,r8,#0x0007
62085;@ EaRead : Read register[r11] into r0:
62086  ldr r0,[r7,r11,lsl #2]
62087  mov r0,r0,asl #24
62088
62089  mov r2,r8,lsr #9 ;@ Get 'n'
62090  and r2,r2,#7
62091
62092  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62093
62094  mov r0,r0,lsr #24 ;@ Shift down
62095
62096;@ First get X bit (middle):
62097  ldr r3,[r7,#0x4c]
62098  rsb r1,r2,#8
62099  and r3,r3,#0x20000000
62100  mov r3,r3,lsr #29
62101  mov r3,r3,lsl r1
62102;@ Rotate bits:
62103  orr r3,r3,r0,lsr r2 ;@ Orr right part
62104  rsbs r2,r2,#9 ;@ should also clear ARM V
62105  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
62106
62107  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
62108  mrs r10,cpsr ;@ r10=flags
62109  str r10,[r7,#0x4c] ;@ Save X bit
62110
62111;@ EaWrite: r0 into register[r11]:
62112  mov r0,r0,lsr #24
62113  strb r0,[r7,r11,lsl #2]
62114
62115  ldrh r8,[r4],#2 ;@ Fetch next opcode
62116  subs r5,r5,#6 ;@ Subtract cycles
62117  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62118  b CycloneEnd
62119
62120;@ ---------- [ee18] ror.b #7, d0 uses Opee18 ----------
62121Opee18:
62122;@ EaCalc : Get register index into r11:
62123  and r11,r8,#0x0007
62124;@ EaRead : Read register[r11] into r0:
62125  ldr r0,[r7,r11,lsl #2]
62126  mov r0,r0,asl #24
62127
62128  mov r2,r8,lsr #9 ;@ Get 'n'
62129  and r2,r2,#7
62130
62131  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62132
62133;@ Mirror value in whole 32 bits:
62134  orr r0,r0,r0,lsr #8
62135  orr r0,r0,r0,lsr #16
62136
62137;@ Rotate register:
62138  adds r0,r0,#0 ;@ first clear V and C
62139  movs r0,r0,ror r2
62140  mrs r10,cpsr ;@ r10=flags
62141
62142;@ EaWrite: r0 into register[r11]:
62143  mov r0,r0,lsr #24
62144  strb r0,[r7,r11,lsl #2]
62145
62146  ldrh r8,[r4],#2 ;@ Fetch next opcode
62147  subs r5,r5,#6 ;@ Subtract cycles
62148  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62149  b CycloneEnd
62150
62151;@ ---------- [ee40] asr.w #7, d0 uses Opee40 ----------
62152Opee40:
62153;@ EaCalc : Get register index into r11:
62154  and r11,r8,#0x0007
62155  mov r11,r11,lsl #2
62156;@ EaRead : Read register[r11] into r0:
62157  ldr r0,[r7,r11]
62158  mov r0,r0,asl #16
62159
62160  mov r2,r8,lsr #9 ;@ Get 'n'
62161  and r2,r2,#7
62162
62163  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62164
62165;@ For shift right, use loworder bits for the operation:
62166  mov r0,r0,asr #16
62167
62168;@ Shift register:
62169  movs r0,r0,asr r2
62170  mrs r10,cpsr ;@ r10=flags
62171  str r10,[r7,#0x4c] ;@ Save X bit
62172
62173;@ restore after right shift:
62174  movs r0,r0,lsl #16
62175
62176;@ EaWrite: r0 into register[r11]:
62177  mov r0,r0,lsr #16
62178  strh r0,[r7,r11]
62179
62180  ldrh r8,[r4],#2 ;@ Fetch next opcode
62181  subs r5,r5,#6 ;@ Subtract cycles
62182  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62183  b CycloneEnd
62184
62185;@ ---------- [ee48] lsr.w #7, d0 uses Opee48 ----------
62186Opee48:
62187;@ EaCalc : Get register index into r11:
62188  and r11,r8,#0x0007
62189  mov r11,r11,lsl #2
62190;@ EaRead : Read register[r11] into r0:
62191  ldr r0,[r7,r11]
62192  mov r0,r0,asl #16
62193
62194  mov r2,r8,lsr #9 ;@ Get 'n'
62195  and r2,r2,#7
62196
62197  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62198
62199;@ For shift right, use loworder bits for the operation:
62200  mov r0,r0,lsr #16
62201
62202;@ Shift register:
62203  movs r0,r0,lsr r2
62204  mrs r10,cpsr ;@ r10=flags
62205  str r10,[r7,#0x4c] ;@ Save X bit
62206
62207;@ restore after right shift:
62208  movs r0,r0,lsl #16
62209  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
62210
62211;@ EaWrite: r0 into register[r11]:
62212  mov r0,r0,lsr #16
62213  strh r0,[r7,r11]
62214
62215  ldrh r8,[r4],#2 ;@ Fetch next opcode
62216  subs r5,r5,#6 ;@ Subtract cycles
62217  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62218  b CycloneEnd
62219
62220;@ ---------- [ee50] roxr.w #7, d0 uses Opee50 ----------
62221Opee50:
62222;@ EaCalc : Get register index into r11:
62223  and r11,r8,#0x0007
62224  mov r11,r11,lsl #2
62225;@ EaRead : Read register[r11] into r0:
62226  ldr r0,[r7,r11]
62227  mov r0,r0,asl #16
62228
62229  mov r2,r8,lsr #9 ;@ Get 'n'
62230  and r2,r2,#7
62231
62232  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62233
62234  mov r0,r0,lsr #16 ;@ Shift down
62235
62236;@ First get X bit (middle):
62237  ldr r3,[r7,#0x4c]
62238  rsb r1,r2,#16
62239  and r3,r3,#0x20000000
62240  mov r3,r3,lsr #29
62241  mov r3,r3,lsl r1
62242;@ Rotate bits:
62243  orr r3,r3,r0,lsr r2 ;@ Orr right part
62244  rsbs r2,r2,#17 ;@ should also clear ARM V
62245  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
62246
62247  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
62248  mrs r10,cpsr ;@ r10=flags
62249  str r10,[r7,#0x4c] ;@ Save X bit
62250
62251;@ EaWrite: r0 into register[r11]:
62252  mov r0,r0,lsr #16
62253  strh r0,[r7,r11]
62254
62255  ldrh r8,[r4],#2 ;@ Fetch next opcode
62256  subs r5,r5,#6 ;@ Subtract cycles
62257  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62258  b CycloneEnd
62259
62260;@ ---------- [ee58] ror.w #7, d0 uses Opee58 ----------
62261Opee58:
62262;@ EaCalc : Get register index into r11:
62263  and r11,r8,#0x0007
62264  mov r11,r11,lsl #2
62265;@ EaRead : Read register[r11] into r0:
62266  ldr r0,[r7,r11]
62267  mov r0,r0,asl #16
62268
62269  mov r2,r8,lsr #9 ;@ Get 'n'
62270  and r2,r2,#7
62271
62272  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62273
62274;@ Mirror value in whole 32 bits:
62275  orr r0,r0,r0,lsr #16
62276
62277;@ Rotate register:
62278  adds r0,r0,#0 ;@ first clear V and C
62279  movs r0,r0,ror r2
62280  mrs r10,cpsr ;@ r10=flags
62281
62282;@ EaWrite: r0 into register[r11]:
62283  mov r0,r0,lsr #16
62284  strh r0,[r7,r11]
62285
62286  ldrh r8,[r4],#2 ;@ Fetch next opcode
62287  subs r5,r5,#6 ;@ Subtract cycles
62288  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62289  b CycloneEnd
62290
62291;@ ---------- [ee80] asr.l #7, d0 uses Opee80 ----------
62292Opee80:
62293;@ EaCalc : Get register index into r11:
62294  and r11,r8,#0x0007
62295;@ EaRead : Read register[r11] into r0:
62296  ldr r0,[r7,r11,lsl #2]
62297
62298  mov r2,r8,lsr #9 ;@ Get 'n'
62299  and r2,r2,#7
62300
62301  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62302
62303;@ Shift register:
62304  movs r0,r0,asr r2
62305  mrs r10,cpsr ;@ r10=flags
62306  str r10,[r7,#0x4c] ;@ Save X bit
62307
62308;@ EaWrite: r0 into register[r11]:
62309  str r0,[r7,r11,lsl #2]
62310
62311  ldrh r8,[r4],#2 ;@ Fetch next opcode
62312  subs r5,r5,#8 ;@ Subtract cycles
62313  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62314  b CycloneEnd
62315
62316;@ ---------- [ee88] lsr.l #7, d0 uses Opee88 ----------
62317Opee88:
62318;@ EaCalc : Get register index into r11:
62319  and r11,r8,#0x0007
62320;@ EaRead : Read register[r11] into r0:
62321  ldr r0,[r7,r11,lsl #2]
62322
62323  mov r2,r8,lsr #9 ;@ Get 'n'
62324  and r2,r2,#7
62325
62326  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62327
62328;@ Shift register:
62329  movs r0,r0,lsr r2
62330  mrs r10,cpsr ;@ r10=flags
62331  str r10,[r7,#0x4c] ;@ Save X bit
62332
62333;@ EaWrite: r0 into register[r11]:
62334  str r0,[r7,r11,lsl #2]
62335
62336  ldrh r8,[r4],#2 ;@ Fetch next opcode
62337  subs r5,r5,#8 ;@ Subtract cycles
62338  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62339  b CycloneEnd
62340
62341;@ ---------- [ee90] roxr.l #7, d0 uses Opee90 ----------
62342Opee90:
62343;@ EaCalc : Get register index into r11:
62344  and r11,r8,#0x0007
62345;@ EaRead : Read register[r11] into r0:
62346  ldr r0,[r7,r11,lsl #2]
62347
62348  mov r2,r8,lsr #9 ;@ Get 'n'
62349  and r2,r2,#7
62350
62351  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62352
62353
62354;@ First get X bit (middle):
62355  ldr r3,[r7,#0x4c]
62356  rsb r1,r2,#32
62357  and r3,r3,#0x20000000
62358  mov r3,r3,lsr #29
62359  mov r3,r3,lsl r1
62360;@ Rotate bits:
62361  orr r3,r3,r0,lsr r2 ;@ Orr right part
62362  rsbs r2,r2,#33 ;@ should also clear ARM V
62363  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
62364
62365  mrs r10,cpsr ;@ r10=flags
62366  str r10,[r7,#0x4c] ;@ Save X bit
62367
62368;@ EaWrite: r0 into register[r11]:
62369  str r0,[r7,r11,lsl #2]
62370
62371  ldrh r8,[r4],#2 ;@ Fetch next opcode
62372  subs r5,r5,#8 ;@ Subtract cycles
62373  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62374  b CycloneEnd
62375
62376;@ ---------- [ee98] ror.l #7, d0 uses Opee98 ----------
62377Opee98:
62378;@ EaCalc : Get register index into r11:
62379  and r11,r8,#0x0007
62380;@ EaRead : Read register[r11] into r0:
62381  ldr r0,[r7,r11,lsl #2]
62382
62383  mov r2,r8,lsr #9 ;@ Get 'n'
62384  and r2,r2,#7
62385
62386  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62387
62388;@ Rotate register:
62389  adds r0,r0,#0 ;@ first clear V and C
62390  movs r0,r0,ror r2
62391  mrs r10,cpsr ;@ r10=flags
62392
62393;@ EaWrite: r0 into register[r11]:
62394  str r0,[r7,r11,lsl #2]
62395
62396  ldrh r8,[r4],#2 ;@ Fetch next opcode
62397  subs r5,r5,#8 ;@ Subtract cycles
62398  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62399  b CycloneEnd
62400
62401;@ ---------- [ef00] asl.b #7, d0 uses Opef00 ----------
62402Opef00:
62403;@ EaCalc : Get register index into r11:
62404  and r11,r8,#0x0007
62405;@ EaRead : Read register[r11] into r0:
62406  ldr r0,[r7,r11,lsl #2]
62407  mov r0,r0,asl #24
62408
62409  mov r2,r8,lsr #9 ;@ Get 'n'
62410  and r2,r2,#7
62411
62412  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62413
62414  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
62415;@ Shift register:
62416  movs r0,r0,asl r2
62417  mrs r10,cpsr ;@ r10=flags
62418  str r10,[r7,#0x4c] ;@ Save X bit
62419
62420;@ calculate V flag (set if sign bit changes at anytime):
62421  mov r1,#0x80000000
62422  ands r3,r3,r1,asr r2
62423  cmpne r3,r1,asr r2
62424  eoreq r1,r0,r3
62425  tsteq r1,#0x80000000
62426  orrne r10,r10,#0x10000000
62427
62428;@ EaWrite: r0 into register[r11]:
62429  mov r0,r0,lsr #24
62430  strb r0,[r7,r11,lsl #2]
62431
62432  ldrh r8,[r4],#2 ;@ Fetch next opcode
62433  subs r5,r5,#6 ;@ Subtract cycles
62434  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62435  b CycloneEnd
62436
62437;@ ---------- [ef08] lsl.b #7, d0 uses Opef08 ----------
62438Opef08:
62439;@ EaCalc : Get register index into r11:
62440  and r11,r8,#0x0007
62441;@ EaRead : Read register[r11] into r0:
62442  ldr r0,[r7,r11,lsl #2]
62443  mov r0,r0,asl #24
62444
62445  mov r2,r8,lsr #9 ;@ Get 'n'
62446  and r2,r2,#7
62447
62448  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62449
62450;@ Shift register:
62451  movs r0,r0,lsl r2
62452  mrs r10,cpsr ;@ r10=flags
62453  str r10,[r7,#0x4c] ;@ Save X bit
62454
62455;@ EaWrite: r0 into register[r11]:
62456  mov r0,r0,lsr #24
62457  strb r0,[r7,r11,lsl #2]
62458
62459  ldrh r8,[r4],#2 ;@ Fetch next opcode
62460  subs r5,r5,#6 ;@ Subtract cycles
62461  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62462  b CycloneEnd
62463
62464;@ ---------- [ef10] roxl.b #7, d0 uses Opef10 ----------
62465Opef10:
62466;@ EaCalc : Get register index into r11:
62467  and r11,r8,#0x0007
62468;@ EaRead : Read register[r11] into r0:
62469  ldr r0,[r7,r11,lsl #2]
62470  mov r0,r0,asl #24
62471
62472  mov r2,r8,lsr #9 ;@ Get 'n'
62473  and r2,r2,#7
62474
62475  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62476
62477  rsb r2,r2,#9 ;@ Reverse direction
62478  mov r0,r0,lsr #24 ;@ Shift down
62479
62480;@ First get X bit (middle):
62481  ldr r3,[r7,#0x4c]
62482  rsb r1,r2,#8
62483  and r3,r3,#0x20000000
62484  mov r3,r3,lsr #29
62485  mov r3,r3,lsl r1
62486;@ Rotate bits:
62487  orr r3,r3,r0,lsr r2 ;@ Orr right part
62488  rsbs r2,r2,#9 ;@ should also clear ARM V
62489  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
62490
62491  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
62492  mrs r10,cpsr ;@ r10=flags
62493  str r10,[r7,#0x4c] ;@ Save X bit
62494
62495;@ EaWrite: r0 into register[r11]:
62496  mov r0,r0,lsr #24
62497  strb r0,[r7,r11,lsl #2]
62498
62499  ldrh r8,[r4],#2 ;@ Fetch next opcode
62500  subs r5,r5,#6 ;@ Subtract cycles
62501  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62502  b CycloneEnd
62503
62504;@ ---------- [ef18] rol.b #7, d0 uses Opef18 ----------
62505Opef18:
62506;@ EaCalc : Get register index into r11:
62507  and r11,r8,#0x0007
62508;@ EaRead : Read register[r11] into r0:
62509  ldr r0,[r7,r11,lsl #2]
62510  mov r0,r0,asl #24
62511
62512  mov r2,r8,lsr #9 ;@ Get 'n'
62513  and r2,r2,#7
62514
62515  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62516
62517;@ Mirror value in whole 32 bits:
62518  orr r0,r0,r0,lsr #8
62519  orr r0,r0,r0,lsr #16
62520
62521;@ Rotate register:
62522  rsb r2,r2,#32
62523  movs r0,r0,ror r2
62524  mrs r10,cpsr ;@ r10=flags
62525  bic r10,r10,#0x30000000 ;@ clear CV
62526;@ Get carry bit from bit 0:
62527  tst r0,#1
62528  orrne r10,r10,#0x20000000
62529
62530;@ EaWrite: r0 into register[r11]:
62531  mov r0,r0,lsr #24
62532  strb r0,[r7,r11,lsl #2]
62533
62534  ldrh r8,[r4],#2 ;@ Fetch next opcode
62535  subs r5,r5,#6 ;@ Subtract cycles
62536  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62537  b CycloneEnd
62538
62539;@ ---------- [ef40] asl.w #7, d0 uses Opef40 ----------
62540Opef40:
62541;@ EaCalc : Get register index into r11:
62542  and r11,r8,#0x0007
62543  mov r11,r11,lsl #2
62544;@ EaRead : Read register[r11] into r0:
62545  ldr r0,[r7,r11]
62546  mov r0,r0,asl #16
62547
62548  mov r2,r8,lsr #9 ;@ Get 'n'
62549  and r2,r2,#7
62550
62551  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62552
62553  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
62554;@ Shift register:
62555  movs r0,r0,asl r2
62556  mrs r10,cpsr ;@ r10=flags
62557  str r10,[r7,#0x4c] ;@ Save X bit
62558
62559;@ calculate V flag (set if sign bit changes at anytime):
62560  mov r1,#0x80000000
62561  ands r3,r3,r1,asr r2
62562  cmpne r3,r1,asr r2
62563  eoreq r1,r0,r3
62564  tsteq r1,#0x80000000
62565  orrne r10,r10,#0x10000000
62566
62567;@ EaWrite: r0 into register[r11]:
62568  mov r0,r0,lsr #16
62569  strh r0,[r7,r11]
62570
62571  ldrh r8,[r4],#2 ;@ Fetch next opcode
62572  subs r5,r5,#6 ;@ Subtract cycles
62573  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62574  b CycloneEnd
62575
62576;@ ---------- [ef48] lsl.w #7, d0 uses Opef48 ----------
62577Opef48:
62578;@ EaCalc : Get register index into r11:
62579  and r11,r8,#0x0007
62580  mov r11,r11,lsl #2
62581;@ EaRead : Read register[r11] into r0:
62582  ldr r0,[r7,r11]
62583  mov r0,r0,asl #16
62584
62585  mov r2,r8,lsr #9 ;@ Get 'n'
62586  and r2,r2,#7
62587
62588  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62589
62590;@ Shift register:
62591  movs r0,r0,lsl r2
62592  mrs r10,cpsr ;@ r10=flags
62593  str r10,[r7,#0x4c] ;@ Save X bit
62594
62595;@ EaWrite: r0 into register[r11]:
62596  mov r0,r0,lsr #16
62597  strh r0,[r7,r11]
62598
62599  ldrh r8,[r4],#2 ;@ Fetch next opcode
62600  subs r5,r5,#6 ;@ Subtract cycles
62601  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62602  b CycloneEnd
62603
62604;@ ---------- [ef50] roxl.w #7, d0 uses Opef50 ----------
62605Opef50:
62606;@ EaCalc : Get register index into r11:
62607  and r11,r8,#0x0007
62608  mov r11,r11,lsl #2
62609;@ EaRead : Read register[r11] into r0:
62610  ldr r0,[r7,r11]
62611  mov r0,r0,asl #16
62612
62613  mov r2,r8,lsr #9 ;@ Get 'n'
62614  and r2,r2,#7
62615
62616  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62617
62618  rsb r2,r2,#17 ;@ Reverse direction
62619  mov r0,r0,lsr #16 ;@ Shift down
62620
62621;@ First get X bit (middle):
62622  ldr r3,[r7,#0x4c]
62623  rsb r1,r2,#16
62624  and r3,r3,#0x20000000
62625  mov r3,r3,lsr #29
62626  mov r3,r3,lsl r1
62627;@ Rotate bits:
62628  orr r3,r3,r0,lsr r2 ;@ Orr right part
62629  rsbs r2,r2,#17 ;@ should also clear ARM V
62630  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
62631
62632  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
62633  mrs r10,cpsr ;@ r10=flags
62634  str r10,[r7,#0x4c] ;@ Save X bit
62635
62636;@ EaWrite: r0 into register[r11]:
62637  mov r0,r0,lsr #16
62638  strh r0,[r7,r11]
62639
62640  ldrh r8,[r4],#2 ;@ Fetch next opcode
62641  subs r5,r5,#6 ;@ Subtract cycles
62642  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62643  b CycloneEnd
62644
62645;@ ---------- [ef58] rol.w #7, d0 uses Opef58 ----------
62646Opef58:
62647;@ EaCalc : Get register index into r11:
62648  and r11,r8,#0x0007
62649  mov r11,r11,lsl #2
62650;@ EaRead : Read register[r11] into r0:
62651  ldr r0,[r7,r11]
62652  mov r0,r0,asl #16
62653
62654  mov r2,r8,lsr #9 ;@ Get 'n'
62655  and r2,r2,#7
62656
62657  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62658
62659;@ Mirror value in whole 32 bits:
62660  orr r0,r0,r0,lsr #16
62661
62662;@ Rotate register:
62663  rsb r2,r2,#32
62664  movs r0,r0,ror r2
62665  mrs r10,cpsr ;@ r10=flags
62666  bic r10,r10,#0x30000000 ;@ clear CV
62667;@ Get carry bit from bit 0:
62668  tst r0,#1
62669  orrne r10,r10,#0x20000000
62670
62671;@ EaWrite: r0 into register[r11]:
62672  mov r0,r0,lsr #16
62673  strh r0,[r7,r11]
62674
62675  ldrh r8,[r4],#2 ;@ Fetch next opcode
62676  subs r5,r5,#6 ;@ Subtract cycles
62677  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62678  b CycloneEnd
62679
62680;@ ---------- [ef80] asl.l #7, d0 uses Opef80 ----------
62681Opef80:
62682;@ EaCalc : Get register index into r11:
62683  and r11,r8,#0x0007
62684;@ EaRead : Read register[r11] into r0:
62685  ldr r0,[r7,r11,lsl #2]
62686
62687  mov r2,r8,lsr #9 ;@ Get 'n'
62688  and r2,r2,#7
62689
62690  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62691
62692  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
62693;@ Shift register:
62694  movs r0,r0,asl r2
62695  mrs r10,cpsr ;@ r10=flags
62696  str r10,[r7,#0x4c] ;@ Save X bit
62697
62698;@ calculate V flag (set if sign bit changes at anytime):
62699  mov r1,#0x80000000
62700  ands r3,r3,r1,asr r2
62701  cmpne r3,r1,asr r2
62702  eoreq r1,r0,r3
62703  tsteq r1,#0x80000000
62704  orrne r10,r10,#0x10000000
62705
62706;@ EaWrite: r0 into register[r11]:
62707  str r0,[r7,r11,lsl #2]
62708
62709  ldrh r8,[r4],#2 ;@ Fetch next opcode
62710  subs r5,r5,#8 ;@ Subtract cycles
62711  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62712  b CycloneEnd
62713
62714;@ ---------- [ef88] lsl.l #7, d0 uses Opef88 ----------
62715Opef88:
62716;@ EaCalc : Get register index into r11:
62717  and r11,r8,#0x0007
62718;@ EaRead : Read register[r11] into r0:
62719  ldr r0,[r7,r11,lsl #2]
62720
62721  mov r2,r8,lsr #9 ;@ Get 'n'
62722  and r2,r2,#7
62723
62724  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62725
62726;@ Shift register:
62727  movs r0,r0,lsl r2
62728  mrs r10,cpsr ;@ r10=flags
62729  str r10,[r7,#0x4c] ;@ Save X bit
62730
62731;@ EaWrite: r0 into register[r11]:
62732  str r0,[r7,r11,lsl #2]
62733
62734  ldrh r8,[r4],#2 ;@ Fetch next opcode
62735  subs r5,r5,#8 ;@ Subtract cycles
62736  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62737  b CycloneEnd
62738
62739;@ ---------- [ef90] roxl.l #7, d0 uses Opef90 ----------
62740Opef90:
62741;@ EaCalc : Get register index into r11:
62742  and r11,r8,#0x0007
62743;@ EaRead : Read register[r11] into r0:
62744  ldr r0,[r7,r11,lsl #2]
62745
62746  mov r2,r8,lsr #9 ;@ Get 'n'
62747  and r2,r2,#7
62748
62749  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62750
62751  rsb r2,r2,#33 ;@ Reverse direction
62752
62753;@ First get X bit (middle):
62754  ldr r3,[r7,#0x4c]
62755  rsb r1,r2,#32
62756  and r3,r3,#0x20000000
62757  mov r3,r3,lsr #29
62758  mov r3,r3,lsl r1
62759;@ Rotate bits:
62760  orr r3,r3,r0,lsr r2 ;@ Orr right part
62761  rsbs r2,r2,#33 ;@ should also clear ARM V
62762  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
62763
62764  mrs r10,cpsr ;@ r10=flags
62765  str r10,[r7,#0x4c] ;@ Save X bit
62766
62767;@ EaWrite: r0 into register[r11]:
62768  str r0,[r7,r11,lsl #2]
62769
62770  ldrh r8,[r4],#2 ;@ Fetch next opcode
62771  subs r5,r5,#8 ;@ Subtract cycles
62772  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62773  b CycloneEnd
62774
62775;@ ---------- [ef98] rol.l #7, d0 uses Opef98 ----------
62776Opef98:
62777;@ EaCalc : Get register index into r11:
62778  and r11,r8,#0x0007
62779;@ EaRead : Read register[r11] into r0:
62780  ldr r0,[r7,r11,lsl #2]
62781
62782  mov r2,r8,lsr #9 ;@ Get 'n'
62783  and r2,r2,#7
62784
62785  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
62786
62787;@ Rotate register:
62788  rsb r2,r2,#32
62789  movs r0,r0,ror r2
62790  mrs r10,cpsr ;@ r10=flags
62791  bic r10,r10,#0x30000000 ;@ clear CV
62792;@ Get carry bit from bit 0:
62793  tst r0,#1
62794  orrne r10,r10,#0x20000000
62795
62796;@ EaWrite: r0 into register[r11]:
62797  str r0,[r7,r11,lsl #2]
62798
62799  ldrh r8,[r4],#2 ;@ Fetch next opcode
62800  subs r5,r5,#8 ;@ Subtract cycles
62801  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62802  b CycloneEnd
62803
62804;@ ----------
62805;@ tried execute privileged instruction in user mode
62806WrongPrivilegeMode:
62807  ldr r1,[r7,#0x58]
62808  sub r4,r4,#2 ;@ last opcode wasn't executed - go back
62809  orr r1,r1,#4 ;@ set activity bit: 'not processing instruction'
62810  str r1,[r7,#0x58]
62811  mov r0,#8 ;@ privilege violation
62812  bl Exception
62813  ldrh r8,[r4],#2 ;@ Fetch next opcode
62814  subs r5,r5,#34 ;@ Subtract cycles
62815  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
62816  b CycloneEnd
62817
62818
62819;@ -------------------------- Jump Table --------------------------
62820  .data
62821  .align 4
62822
62823CycloneJumpTab:
62824  .rept 0x1400
62825  .long 0,0,0,0,0,0,0,0
62826  .endr
62827  .long Op____,Op__al,Op__fl,Op0000,Op0010,Op0018,Op001f,Op0020 ;@ 0020
62828  .long Op0027,Op0028,Op0030,Op0038,Op0039,Op003c,Op0040,Op0050 ;@ 0050
62829  .long Op0058,Op0060,Op0068,Op0070,Op0078,Op0079,Op007c,Op0080 ;@ 0080
62830  .long Op0090,Op0098,Op00a0,Op00a8,Op00b0,Op00b8,Op00b9,Op0100 ;@ 0100
62831  .long Op0108,Op0110,Op0118,Op011f,Op0120,Op0127,Op0128,Op0130 ;@ 0130
62832  .long Op0138,Op0139,Op013a,Op013b,Op013c,Op0140,Op0148,Op0150 ;@ 0150
62833  .long Op0158,Op015f,Op0160,Op0167,Op0168,Op0170,Op0178,Op0179 ;@ 0179
62834  .long Op0180,Op0188,Op0190,Op0198,Op019f,Op01a0,Op01a7,Op01a8 ;@ 01a8
62835  .long Op01b0,Op01b8,Op01b9,Op01c0,Op01c8,Op01d0,Op01d8,Op01df ;@ 01df
62836  .long Op01e0,Op01e7,Op01e8,Op01f0,Op01f8,Op01f9,Op0200,Op0210 ;@ 0210
62837  .long Op0218,Op021f,Op0220,Op0227,Op0228,Op0230,Op0238,Op0239 ;@ 0239
62838  .long Op023c,Op0240,Op0250,Op0258,Op0260,Op0268,Op0270,Op0278 ;@ 0278
62839  .long Op0279,Op027c,Op0280,Op0290,Op0298,Op02a0,Op02a8,Op02b0 ;@ 02b0
62840  .long Op02b8,Op02b9,Op0400,Op0410,Op0418,Op041f,Op0420,Op0427 ;@ 0427
62841  .long Op0428,Op0430,Op0438,Op0439,Op0440,Op0450,Op0458,Op0460 ;@ 0460
62842  .long Op0468,Op0470,Op0478,Op0479,Op0480,Op0490,Op0498,Op04a0 ;@ 04a0
62843  .long Op04a8,Op04b0,Op04b8,Op04b9,Op0600,Op0610,Op0618,Op061f ;@ 061f
62844  .long Op0620,Op0627,Op0628,Op0630,Op0638,Op0639,Op0640,Op0650 ;@ 0650
62845  .long Op0658,Op0660,Op0668,Op0670,Op0678,Op0679,Op0680,Op0690 ;@ 0690
62846  .long Op0698,Op06a0,Op06a8,Op06b0,Op06b8,Op06b9,Op0800,Op0810 ;@ 0810
62847  .long Op0818,Op081f,Op0820,Op0827,Op0828,Op0830,Op0838,Op0839 ;@ 0839
62848  .long Op083a,Op083b,Op0840,Op0850,Op0858,Op085f,Op0860,Op0867 ;@ 0867
62849  .long Op0868,Op0870,Op0878,Op0879,Op0880,Op0890,Op0898,Op089f ;@ 089f
62850  .long Op08a0,Op08a7,Op08a8,Op08b0,Op08b8,Op08b9,Op08c0,Op08d0 ;@ 08d0
62851  .long Op08d8,Op08df,Op08e0,Op08e7,Op08e8,Op08f0,Op08f8,Op08f9 ;@ 08f9
62852  .long Op0a00,Op0a10,Op0a18,Op0a1f,Op0a20,Op0a27,Op0a28,Op0a30 ;@ 0a30
62853  .long Op0a38,Op0a39,Op0a3c,Op0a40,Op0a50,Op0a58,Op0a60,Op0a68 ;@ 0a68
62854  .long Op0a70,Op0a78,Op0a79,Op0a7c,Op0a80,Op0a90,Op0a98,Op0aa0 ;@ 0aa0
62855  .long Op0aa8,Op0ab0,Op0ab8,Op0ab9,Op0c00,Op0c10,Op0c18,Op0c1f ;@ 0c1f
62856  .long Op0c20,Op0c27,Op0c28,Op0c30,Op0c38,Op0c39,Op0c40,Op0c50 ;@ 0c50
62857  .long Op0c58,Op0c60,Op0c68,Op0c70,Op0c78,Op0c79,Op0c80,Op0c90 ;@ 0c90
62858  .long Op0c98,Op0ca0,Op0ca8,Op0cb0,Op0cb8,Op0cb9,Op1000,Op1010 ;@ 1010
62859  .long Op1018,Op101f,Op1020,Op1027,Op1028,Op1030,Op1038,Op1039 ;@ 1039
62860  .long Op103a,Op103b,Op103c,Op1080,Op1090,Op1098,Op109f,Op10a0 ;@ 10a0
62861  .long Op10a7,Op10a8,Op10b0,Op10b8,Op10b9,Op10ba,Op10bb,Op10bc ;@ 10bc
62862  .long Op10c0,Op10d0,Op10d8,Op10df,Op10e0,Op10e7,Op10e8,Op10f0 ;@ 10f0
62863  .long Op10f8,Op10f9,Op10fa,Op10fb,Op10fc,Op1100,Op1110,Op1118 ;@ 1118
62864  .long Op111f,Op1120,Op1127,Op1128,Op1130,Op1138,Op1139,Op113a ;@ 113a
62865  .long Op113b,Op113c,Op1140,Op1150,Op1158,Op115f,Op1160,Op1167 ;@ 1167
62866  .long Op1168,Op1170,Op1178,Op1179,Op117a,Op117b,Op117c,Op1180 ;@ 1180
62867  .long Op1190,Op1198,Op119f,Op11a0,Op11a7,Op11a8,Op11b0,Op11b8 ;@ 11b8
62868  .long Op11b9,Op11ba,Op11bb,Op11bc,Op11c0,Op11d0,Op11d8,Op11df ;@ 11df
62869  .long Op11e0,Op11e7,Op11e8,Op11f0,Op11f8,Op11f9,Op11fa,Op11fb ;@ 11fb
62870  .long Op11fc,Op13c0,Op13d0,Op13d8,Op13df,Op13e0,Op13e7,Op13e8 ;@ 13e8
62871  .long Op13f0,Op13f8,Op13f9,Op13fa,Op13fb,Op13fc,Op1ec0,Op1ed0 ;@ 1ed0
62872  .long Op1ed8,Op1edf,Op1ee0,Op1ee7,Op1ee8,Op1ef0,Op1ef8,Op1ef9 ;@ 1ef9
62873  .long Op1efa,Op1efb,Op1efc,Op1f00,Op1f10,Op1f18,Op1f1f,Op1f20 ;@ 1f20
62874  .long Op1f27,Op1f28,Op1f30,Op1f38,Op1f39,Op1f3a,Op1f3b,Op1f3c ;@ 1f3c
62875  .long Op2000,Op2010,Op2018,Op2020,Op2028,Op2030,Op2038,Op2039 ;@ 2039
62876  .long Op203a,Op203b,Op203c,Op2040,Op2050,Op2058,Op2060,Op2068 ;@ 2068
62877  .long Op2070,Op2078,Op2079,Op207a,Op207b,Op207c,Op2080,Op2090 ;@ 2090
62878  .long Op2098,Op20a0,Op20a8,Op20b0,Op20b8,Op20b9,Op20ba,Op20bb ;@ 20bb
62879  .long Op20bc,Op20c0,Op20d0,Op20d8,Op20e0,Op20e8,Op20f0,Op20f8 ;@ 20f8
62880  .long Op20f9,Op20fa,Op20fb,Op20fc,Op2100,Op2110,Op2118,Op2120 ;@ 2120
62881  .long Op2128,Op2130,Op2138,Op2139,Op213a,Op213b,Op213c,Op2140 ;@ 2140
62882  .long Op2150,Op2158,Op2160,Op2168,Op2170,Op2178,Op2179,Op217a ;@ 217a
62883  .long Op217b,Op217c,Op2180,Op2190,Op2198,Op21a0,Op21a8,Op21b0 ;@ 21b0
62884  .long Op21b8,Op21b9,Op21ba,Op21bb,Op21bc,Op21c0,Op21d0,Op21d8 ;@ 21d8
62885  .long Op21e0,Op21e8,Op21f0,Op21f8,Op21f9,Op21fa,Op21fb,Op21fc ;@ 21fc
62886  .long Op23c0,Op23d0,Op23d8,Op23e0,Op23e8,Op23f0,Op23f8,Op23f9 ;@ 23f9
62887  .long Op23fa,Op23fb,Op23fc,Op2ec0,Op2ed0,Op2ed8,Op2ee0,Op2ee8 ;@ 2ee8
62888  .long Op2ef0,Op2ef8,Op2ef9,Op2efa,Op2efb,Op2efc,Op2f00,Op2f10 ;@ 2f10
62889  .long Op2f18,Op2f20,Op2f28,Op2f30,Op2f38,Op2f39,Op2f3a,Op2f3b ;@ 2f3b
62890  .long Op2f3c,Op3000,Op3010,Op3018,Op3020,Op3028,Op3030,Op3038 ;@ 3038
62891  .long Op3039,Op303a,Op303b,Op303c,Op3040,Op3050,Op3058,Op3060 ;@ 3060
62892  .long Op3068,Op3070,Op3078,Op3079,Op307a,Op307b,Op307c,Op3080 ;@ 3080
62893  .long Op3090,Op3098,Op30a0,Op30a8,Op30b0,Op30b8,Op30b9,Op30ba ;@ 30ba
62894  .long Op30bb,Op30bc,Op30c0,Op30d0,Op30d8,Op30e0,Op30e8,Op30f0 ;@ 30f0
62895  .long Op30f8,Op30f9,Op30fa,Op30fb,Op30fc,Op3100,Op3110,Op3118 ;@ 3118
62896  .long Op3120,Op3128,Op3130,Op3138,Op3139,Op313a,Op313b,Op313c ;@ 313c
62897  .long Op3140,Op3150,Op3158,Op3160,Op3168,Op3170,Op3178,Op3179 ;@ 3179
62898  .long Op317a,Op317b,Op317c,Op3180,Op3190,Op3198,Op31a0,Op31a8 ;@ 31a8
62899  .long Op31b0,Op31b8,Op31b9,Op31ba,Op31bb,Op31bc,Op31c0,Op31d0 ;@ 31d0
62900  .long Op31d8,Op31e0,Op31e8,Op31f0,Op31f8,Op31f9,Op31fa,Op31fb ;@ 31fb
62901  .long Op31fc,Op33c0,Op33d0,Op33d8,Op33e0,Op33e8,Op33f0,Op33f8 ;@ 33f8
62902  .long Op33f9,Op33fa,Op33fb,Op33fc,Op3ec0,Op3ed0,Op3ed8,Op3ee0 ;@ 3ee0
62903  .long Op3ee8,Op3ef0,Op3ef8,Op3ef9,Op3efa,Op3efb,Op3efc,Op3f00 ;@ 3f00
62904  .long Op3f10,Op3f18,Op3f20,Op3f28,Op3f30,Op3f38,Op3f39,Op3f3a ;@ 3f3a
62905  .long Op3f3b,Op3f3c,Op4000,Op4010,Op4018,Op401f,Op4020,Op4027 ;@ 4027
62906  .long Op4028,Op4030,Op4038,Op4039,Op4040,Op4050,Op4058,Op4060 ;@ 4060
62907  .long Op4068,Op4070,Op4078,Op4079,Op4080,Op4090,Op4098,Op40a0 ;@ 40a0
62908  .long Op40a8,Op40b0,Op40b8,Op40b9,Op40c0,Op40d0,Op40d8,Op40e0 ;@ 40e0
62909  .long Op40e8,Op40f0,Op40f8,Op40f9,Op4180,Op4190,Op4198,Op41a0 ;@ 41a0
62910  .long Op41a8,Op41b0,Op41b8,Op41b9,Op41ba,Op41bb,Op41bc,Op41d0 ;@ 41d0
62911  .long Op41e8,Op41f0,Op41f8,Op41f9,Op41fa,Op41fb,Op4200,Op4210 ;@ 4210
62912  .long Op4218,Op421f,Op4220,Op4227,Op4228,Op4230,Op4238,Op4239 ;@ 4239
62913  .long Op4240,Op4250,Op4258,Op4260,Op4268,Op4270,Op4278,Op4279 ;@ 4279
62914  .long Op4280,Op4290,Op4298,Op42a0,Op42a8,Op42b0,Op42b8,Op42b9 ;@ 42b9
62915  .long Op4400,Op4410,Op4418,Op441f,Op4420,Op4427,Op4428,Op4430 ;@ 4430
62916  .long Op4438,Op4439,Op4440,Op4450,Op4458,Op4460,Op4468,Op4470 ;@ 4470
62917  .long Op4478,Op4479,Op4480,Op4490,Op4498,Op44a0,Op44a8,Op44b0 ;@ 44b0
62918  .long Op44b8,Op44b9,Op44c0,Op44d0,Op44d8,Op44e0,Op44e8,Op44f0 ;@ 44f0
62919  .long Op44f8,Op44f9,Op44fa,Op44fb,Op44fc,Op4600,Op4610,Op4618 ;@ 4618
62920  .long Op461f,Op4620,Op4627,Op4628,Op4630,Op4638,Op4639,Op4640 ;@ 4640
62921  .long Op4650,Op4658,Op4660,Op4668,Op4670,Op4678,Op4679,Op4680 ;@ 4680
62922  .long Op4690,Op4698,Op46a0,Op46a8,Op46b0,Op46b8,Op46b9,Op46c0 ;@ 46c0
62923  .long Op46d0,Op46d8,Op46e0,Op46e8,Op46f0,Op46f8,Op46f9,Op46fa ;@ 46fa
62924  .long Op46fb,Op46fc,Op4800,Op4810,Op4818,Op481f,Op4820,Op4827 ;@ 4827
62925  .long Op4828,Op4830,Op4838,Op4839,Op4840,Op4850,Op4868,Op4870 ;@ 4870
62926  .long Op4878,Op4879,Op487a,Op487b,Op4880,Op4890,Op48a0,Op48a8 ;@ 48a8
62927  .long Op48b0,Op48b8,Op48b9,Op48c0,Op48d0,Op48e0,Op48e8,Op48f0 ;@ 48f0
62928  .long Op48f8,Op48f9,Op4a00,Op4a10,Op4a18,Op4a1f,Op4a20,Op4a27 ;@ 4a27
62929  .long Op4a28,Op4a30,Op4a38,Op4a39,Op4a40,Op4a50,Op4a58,Op4a60 ;@ 4a60
62930  .long Op4a68,Op4a70,Op4a78,Op4a79,Op4a80,Op4a90,Op4a98,Op4aa0 ;@ 4aa0
62931  .long Op4aa8,Op4ab0,Op4ab8,Op4ab9,Op4ac0,Op4ad0,Op4ad8,Op4adf ;@ 4adf
62932  .long Op4ae0,Op4ae7,Op4ae8,Op4af0,Op4af8,Op4af9,Op4c90,Op4c98 ;@ 4c98
62933  .long Op4ca8,Op4cb0,Op4cb8,Op4cb9,Op4cba,Op4cbb,Op4cd0,Op4cd8 ;@ 4cd8
62934  .long Op4ce8,Op4cf0,Op4cf8,Op4cf9,Op4cfa,Op4cfb,Op4e40,Op4e50 ;@ 4e50
62935  .long Op4e57,Op4e58,Op4e60,Op4e68,Op4e70,Op4e71,Op4e72,Op4e73 ;@ 4e73
62936  .long Op4e75,Op4e76,Op4e77,Op4e90,Op4ea8,Op4eb0,Op4eb8,Op4eb9 ;@ 4eb9
62937  .long Op4eba,Op4ebb,Op4ed0,Op4ee8,Op4ef0,Op4ef8,Op4ef9,Op4efa ;@ 4efa
62938  .long Op4efb,Op5000,Op5010,Op5018,Op501f,Op5020,Op5027,Op5028 ;@ 5028
62939  .long Op5030,Op5038,Op5039,Op5040,Op5048,Op5050,Op5058,Op5060 ;@ 5060
62940  .long Op5068,Op5070,Op5078,Op5079,Op5080,Op5088,Op5090,Op5098 ;@ 5098
62941  .long Op50a0,Op50a8,Op50b0,Op50b8,Op50b9,Op50c0,Op50c8,Op50d0 ;@ 50d0
62942  .long Op50d8,Op50df,Op50e0,Op50e7,Op50e8,Op50f0,Op50f8,Op50f9 ;@ 50f9
62943  .long Op5100,Op5110,Op5118,Op511f,Op5120,Op5127,Op5128,Op5130 ;@ 5130
62944  .long Op5138,Op5139,Op5140,Op5148,Op5150,Op5158,Op5160,Op5168 ;@ 5168
62945  .long Op5170,Op5178,Op5179,Op5180,Op5188,Op5190,Op5198,Op51a0 ;@ 51a0
62946  .long Op51a8,Op51b0,Op51b8,Op51b9,Op51c0,Op51c8,Op51d0,Op51d8 ;@ 51d8
62947  .long Op51df,Op51e0,Op51e7,Op51e8,Op51f0,Op51f8,Op51f9,Op5e00 ;@ 5200
62948  .long Op5e10,Op5e18,Op5e1f,Op5e20,Op5e27,Op5e28,Op5e30,Op5e38 ;@ 5238
62949  .long Op5e39,Op5e40,Op5e48,Op5e50,Op5e58,Op5e60,Op5e68,Op5e70 ;@ 5270
62950  .long Op5e78,Op5e79,Op5e80,Op5e88,Op5e90,Op5e98,Op5ea0,Op5ea8 ;@ 52a8
62951  .long Op5eb0,Op5eb8,Op5eb9,Op52c0,Op52c8,Op52d0,Op52d8,Op52df ;@ 52df
62952  .long Op52e0,Op52e7,Op52e8,Op52f0,Op52f8,Op52f9,Op5f00,Op5f10 ;@ 5310
62953  .long Op5f18,Op5f1f,Op5f20,Op5f27,Op5f28,Op5f30,Op5f38,Op5f39 ;@ 5339
62954  .long Op5f40,Op5f48,Op5f50,Op5f58,Op5f60,Op5f68,Op5f70,Op5f78 ;@ 5378
62955  .long Op5f79,Op5f80,Op5f88,Op5f90,Op5f98,Op5fa0,Op5fa8,Op5fb0 ;@ 53b0
62956  .long Op5fb8,Op5fb9,Op53c0,Op53c8,Op53d0,Op53d8,Op53df,Op53e0 ;@ 53e0
62957  .long Op53e7,Op53e8,Op53f0,Op53f8,Op53f9,Op54c0,Op54c8,Op54d0 ;@ 54d0
62958  .long Op54d8,Op54df,Op54e0,Op54e7,Op54e8,Op54f0,Op54f8,Op54f9 ;@ 54f9
62959  .long Op55c0,Op55c8,Op55d0,Op55d8,Op55df,Op55e0,Op55e7,Op55e8 ;@ 55e8
62960  .long Op55f0,Op55f8,Op55f9,Op56c0,Op56c8,Op56d0,Op56d8,Op56df ;@ 56df
62961  .long Op56e0,Op56e7,Op56e8,Op56f0,Op56f8,Op56f9,Op57c0,Op57c8 ;@ 57c8
62962  .long Op57d0,Op57d8,Op57df,Op57e0,Op57e7,Op57e8,Op57f0,Op57f8 ;@ 57f8
62963  .long Op57f9,Op58c0,Op58c8,Op58d0,Op58d8,Op58df,Op58e0,Op58e7 ;@ 58e7
62964  .long Op58e8,Op58f0,Op58f8,Op58f9,Op59c0,Op59c8,Op59d0,Op59d8 ;@ 59d8
62965  .long Op59df,Op59e0,Op59e7,Op59e8,Op59f0,Op59f8,Op59f9,Op5ac0 ;@ 5ac0
62966  .long Op5ac8,Op5ad0,Op5ad8,Op5adf,Op5ae0,Op5ae7,Op5ae8,Op5af0 ;@ 5af0
62967  .long Op5af8,Op5af9,Op5bc0,Op5bc8,Op5bd0,Op5bd8,Op5bdf,Op5be0 ;@ 5be0
62968  .long Op5be7,Op5be8,Op5bf0,Op5bf8,Op5bf9,Op5cc0,Op5cc8,Op5cd0 ;@ 5cd0
62969  .long Op5cd8,Op5cdf,Op5ce0,Op5ce7,Op5ce8,Op5cf0,Op5cf8,Op5cf9 ;@ 5cf9
62970  .long Op5dc0,Op5dc8,Op5dd0,Op5dd8,Op5ddf,Op5de0,Op5de7,Op5de8 ;@ 5de8
62971  .long Op5df0,Op5df8,Op5df9,Op5ec0,Op5ec8,Op5ed0,Op5ed8,Op5edf ;@ 5edf
62972  .long Op5ee0,Op5ee7,Op5ee8,Op5ef0,Op5ef8,Op5ef9,Op5fc0,Op5fc8 ;@ 5fc8
62973  .long Op5fd0,Op5fd8,Op5fdf,Op5fe0,Op5fe7,Op5fe8,Op5ff0,Op5ff8 ;@ 5ff8
62974  .long Op5ff9,Op6000,Op6003,Op6002,Op6100,Op6103,Op6102,Op6200 ;@ 6200
62975  .long Op6203,Op6202,Op6300,Op6303,Op6302,Op6400,Op6403,Op6402 ;@ 6402
62976  .long Op6500,Op6503,Op6502,Op6600,Op6603,Op6602,Op6700,Op6703 ;@ 6701
62977  .long Op6702,Op6800,Op6803,Op6802,Op6900,Op6903,Op6902,Op6a00 ;@ 6a00
62978  .long Op6a03,Op6a02,Op6b00,Op6b03,Op6b02,Op6c00,Op6c03,Op6c02 ;@ 6c02
62979  .long Op6d00,Op6d03,Op6d02,Op6e00,Op6e03,Op6e02,Op6f00,Op6f03 ;@ 6f01
62980  .long Op6f02,Op7000,Op8000,Op8010,Op8018,Op801f,Op8020,Op8027 ;@ 8027
62981  .long Op8028,Op8030,Op8038,Op8039,Op803a,Op803b,Op803c,Op8040 ;@ 8040
62982  .long Op8050,Op8058,Op8060,Op8068,Op8070,Op8078,Op8079,Op807a ;@ 807a
62983  .long Op807b,Op807c,Op8080,Op8090,Op8098,Op80a0,Op80a8,Op80b0 ;@ 80b0
62984  .long Op80b8,Op80b9,Op80ba,Op80bb,Op80bc,Op80c0,Op80d0,Op80d8 ;@ 80d8
62985  .long Op80e0,Op80e8,Op80f0,Op80f8,Op80f9,Op80fa,Op80fb,Op80fc ;@ 80fc
62986  .long Op8100,Op8108,Op810f,Op8110,Op8118,Op811f,Op8120,Op8127 ;@ 8127
62987  .long Op8128,Op8130,Op8138,Op8139,Op8150,Op8158,Op8160,Op8168 ;@ 8168
62988  .long Op8170,Op8178,Op8179,Op8190,Op8198,Op81a0,Op81a8,Op81b0 ;@ 81b0
62989  .long Op81b8,Op81b9,Op81c0,Op81d0,Op81d8,Op81e0,Op81e8,Op81f0 ;@ 81f0
62990  .long Op81f8,Op81f9,Op81fa,Op81fb,Op81fc,Op8f08,Op8f0f,Op9000 ;@ 9000
62991  .long Op9010,Op9018,Op901f,Op9020,Op9027,Op9028,Op9030,Op9038 ;@ 9038
62992  .long Op9039,Op903a,Op903b,Op903c,Op9040,Op9050,Op9058,Op9060 ;@ 9060
62993  .long Op9068,Op9070,Op9078,Op9079,Op907a,Op907b,Op907c,Op9080 ;@ 9080
62994  .long Op9090,Op9098,Op90a0,Op90a8,Op90b0,Op90b8,Op90b9,Op90ba ;@ 90ba
62995  .long Op90bb,Op90bc,Op90c0,Op90d0,Op90d8,Op90e0,Op90e8,Op90f0 ;@ 90f0
62996  .long Op90f8,Op90f9,Op90fa,Op90fb,Op90fc,Op9100,Op9108,Op910f ;@ 910f
62997  .long Op9110,Op9118,Op911f,Op9120,Op9127,Op9128,Op9130,Op9138 ;@ 9138
62998  .long Op9139,Op9140,Op9148,Op9150,Op9158,Op9160,Op9168,Op9170 ;@ 9170
62999  .long Op9178,Op9179,Op9180,Op9188,Op9190,Op9198,Op91a0,Op91a8 ;@ 91a8
63000  .long Op91b0,Op91b8,Op91b9,Op91c0,Op91d0,Op91d8,Op91e0,Op91e8 ;@ 91e8
63001  .long Op91f0,Op91f8,Op91f9,Op91fa,Op91fb,Op91fc,Op9f08,Op9f0f ;@ 9f0f
63002  .long Opb000,Opb010,Opb018,Opb01f,Opb020,Opb027,Opb028,Opb030 ;@ b030
63003  .long Opb038,Opb039,Opb03a,Opb03b,Opb03c,Opb040,Opb050,Opb058 ;@ b058
63004  .long Opb060,Opb068,Opb070,Opb078,Opb079,Opb07a,Opb07b,Opb07c ;@ b07c
63005  .long Opb080,Opb090,Opb098,Opb0a0,Opb0a8,Opb0b0,Opb0b8,Opb0b9 ;@ b0b9
63006  .long Opb0ba,Opb0bb,Opb0bc,Opb0c0,Opb0d0,Opb0d8,Opb0e0,Opb0e8 ;@ b0e8
63007  .long Opb0f0,Opb0f8,Opb0f9,Opb0fa,Opb0fb,Opb0fc,Opb100,Opb108 ;@ b108
63008  .long Opb10f,Opb110,Opb118,Opb11f,Opb120,Opb127,Opb128,Opb130 ;@ b130
63009  .long Opb138,Opb139,Opb140,Opb148,Opb150,Opb158,Opb160,Opb168 ;@ b168
63010  .long Opb170,Opb178,Opb179,Opb180,Opb188,Opb190,Opb198,Opb1a0 ;@ b1a0
63011  .long Opb1a8,Opb1b0,Opb1b8,Opb1b9,Opb1c0,Opb1d0,Opb1d8,Opb1e0 ;@ b1e0
63012  .long Opb1e8,Opb1f0,Opb1f8,Opb1f9,Opb1fa,Opb1fb,Opb1fc,Opbf08 ;@ bf08
63013  .long Opbf0f,Opc000,Opc010,Opc018,Opc01f,Opc020,Opc027,Opc028 ;@ c028
63014  .long Opc030,Opc038,Opc039,Opc03a,Opc03b,Opc03c,Opc040,Opc050 ;@ c050
63015  .long Opc058,Opc060,Opc068,Opc070,Opc078,Opc079,Opc07a,Opc07b ;@ c07b
63016  .long Opc07c,Opc080,Opc090,Opc098,Opc0a0,Opc0a8,Opc0b0,Opc0b8 ;@ c0b8
63017  .long Opc0b9,Opc0ba,Opc0bb,Opc0bc,Opc0c0,Opc0d0,Opc0d8,Opc0e0 ;@ c0e0
63018  .long Opc0e8,Opc0f0,Opc0f8,Opc0f9,Opc0fa,Opc0fb,Opc0fc,Opc100 ;@ c100
63019  .long Opc108,Opc10f,Opc110,Opc118,Opc11f,Opc120,Opc127,Opc128 ;@ c128
63020  .long Opc130,Opc138,Opc139,Opc140,Opc148,Opc150,Opc158,Opc160 ;@ c160
63021  .long Opc168,Opc170,Opc178,Opc179,Opc188,Opc190,Opc198,Opc1a0 ;@ c1a0
63022  .long Opc1a8,Opc1b0,Opc1b8,Opc1b9,Opc1c0,Opc1d0,Opc1d8,Opc1e0 ;@ c1e0
63023  .long Opc1e8,Opc1f0,Opc1f8,Opc1f9,Opc1fa,Opc1fb,Opc1fc,Opcf08 ;@ cf08
63024  .long Opcf0f,Opd000,Opd010,Opd018,Opd01f,Opd020,Opd027,Opd028 ;@ d028
63025  .long Opd030,Opd038,Opd039,Opd03a,Opd03b,Opd03c,Opd040,Opd050 ;@ d050
63026  .long Opd058,Opd060,Opd068,Opd070,Opd078,Opd079,Opd07a,Opd07b ;@ d07b
63027  .long Opd07c,Opd080,Opd090,Opd098,Opd0a0,Opd0a8,Opd0b0,Opd0b8 ;@ d0b8
63028  .long Opd0b9,Opd0ba,Opd0bb,Opd0bc,Opd0c0,Opd0d0,Opd0d8,Opd0e0 ;@ d0e0
63029  .long Opd0e8,Opd0f0,Opd0f8,Opd0f9,Opd0fa,Opd0fb,Opd0fc,Opd100 ;@ d100
63030  .long Opd108,Opd10f,Opd110,Opd118,Opd11f,Opd120,Opd127,Opd128 ;@ d128
63031  .long Opd130,Opd138,Opd139,Opd140,Opd148,Opd150,Opd158,Opd160 ;@ d160
63032  .long Opd168,Opd170,Opd178,Opd179,Opd180,Opd188,Opd190,Opd198 ;@ d198
63033  .long Opd1a0,Opd1a8,Opd1b0,Opd1b8,Opd1b9,Opd1c0,Opd1d0,Opd1d8 ;@ d1d8
63034  .long Opd1e0,Opd1e8,Opd1f0,Opd1f8,Opd1f9,Opd1fa,Opd1fb,Opd1fc ;@ d1fc
63035  .long Opdf08,Opdf0f,Ope000,Ope008,Ope010,Ope018,Ope020,Ope028 ;@ e028
63036  .long Ope030,Ope038,Ope040,Ope048,Ope050,Ope058,Ope060,Ope068 ;@ e068
63037  .long Ope070,Ope078,Ope080,Ope088,Ope090,Ope098,Ope0a0,Ope0a8 ;@ e0a8
63038  .long Ope0b0,Ope0b8,Ope0d0,Ope0d8,Ope0e0,Ope0e8,Ope0f0,Ope0f8 ;@ e0f8
63039  .long Ope0f9,Ope100,Ope108,Ope110,Ope118,Ope120,Ope128,Ope130 ;@ e130
63040  .long Ope138,Ope140,Ope148,Ope150,Ope158,Ope160,Ope168,Ope170 ;@ e170
63041  .long Ope178,Ope180,Ope188,Ope190,Ope198,Ope1a0,Ope1a8,Ope1b0 ;@ e1b0
63042  .long Ope1b8,Ope1d0,Ope1d8,Ope1e0,Ope1e8,Ope1f0,Ope1f8,Ope1f9 ;@ e1f9
63043  .long Opee00,Opee08,Ope210,Opee18,Opee40,Opee48,Ope250,Opee58 ;@ e258
63044  .long Opee80,Opee88,Ope290,Opee98,Ope2d0,Ope2d8,Ope2e0,Ope2e8 ;@ e2e8
63045  .long Ope2f0,Ope2f8,Ope2f9,Opef00,Opef08,Ope310,Opef18,Opef40 ;@ e340
63046  .long Opef48,Ope350,Opef58,Opef80,Opef88,Ope390,Opef98,Ope3d0 ;@ e3d0
63047  .long Ope3d8,Ope3e0,Ope3e8,Ope3f0,Ope3f8,Ope3f9,Opee10,Opee50 ;@ e450
63048  .long Opee90,Ope4d0,Ope4d8,Ope4e0,Ope4e8,Ope4f0,Ope4f8,Ope4f9 ;@ e4f9
63049  .long Opef10,Opef50,Opef90,Ope5d0,Ope5d8,Ope5e0,Ope5e8,Ope5f0 ;@ e5f0
63050  .long Ope5f8,Ope5f9,Ope6d0,Ope6d8,Ope6e0,Ope6e8,Ope6f0,Ope6f8 ;@ e6f8
63051  .long Ope6f9,Ope7d0,Ope7d8,Ope7e0,Ope7e8,Ope7f0,Ope7f8,Ope7f9 ;@ e7f9
63052  .rept 0x71f
63053  .long 0,0,0,0,0,0,0,0
63054  .endr
63055  .hword 0x0038,0x0008,0x0048,0x0057,0x0061,0x0077,0x0081,0x0098
63056  .hword 0x00a8,0x00b1,0x00c1,0x0002,0x00d1,0x0003,0x00e8,0x0008
63057  .hword 0x00f8,0x0108,0x0118,0x0128,0x0138,0x0141,0x0151,0x0002
63058  .hword 0x0161,0x0003,0x0178,0x0008,0x0188,0x0198,0x01a8,0x01b8
63059  .hword 0x01c8,0x01d1,0x01e1,0x0000,0x0046,0x01f8,0x0208,0x0218
63060  .hword 0x0227,0x0231,0x0247,0x0251,0x0268,0x0278,0x0281,0x0291
63061  .hword 0x02a1,0x02b1,0x02c1,0x0003,0x02d8,0x02e8,0x02f8,0x0307
63062  .hword 0x0311,0x0327,0x0331,0x0348,0x0358,0x0361,0x0371,0x0006
63063  .hword 0x0388,0x0398,0x03a8,0x03b7,0x03c1,0x03d7,0x03e1,0x03f8
63064  .hword 0x0408,0x0411,0x0421,0x0006,0x0438,0x0448,0x0458,0x0467
63065  .hword 0x0471,0x0487,0x0491,0x04a8,0x04b8,0x04c1,0x04d1,0x0006
63066  .hword 0x04e8,0x0008,0x04f8,0x0507,0x0511,0x0527,0x0531,0x0548
63067  .hword 0x0558,0x0561,0x0571,0x0002,0x0581,0x0003,0x0598,0x0008
63068  .hword 0x05a8,0x05b8,0x05c8,0x05d8,0x05e8,0x05f1,0x0601,0x0002
63069  .hword 0x0611,0x0003,0x0628,0x0008,0x0638,0x0648,0x0658,0x0668
63070  .hword 0x0678,0x0681,0x0691,0x0000,0x0046,0x01f8,0x0208,0x0218
63071  .hword 0x0227,0x0231,0x0247,0x0251,0x0268,0x0278,0x0281,0x0291
63072  .hword 0x02a1,0x02b1,0x02c1,0x0003,0x02d8,0x02e8,0x02f8,0x0307
63073  .hword 0x0311,0x0327,0x0331,0x0348,0x0358,0x0361,0x0371,0x0006
63074  .hword 0x0388,0x0398,0x03a8,0x03b7,0x03c1,0x03d7,0x03e1,0x03f8
63075  .hword 0x0408,0x0411,0x0421,0x0006,0x0438,0x0448,0x0458,0x0467
63076  .hword 0x0471,0x0487,0x0491,0x04a8,0x04b8,0x04c1,0x04d1,0x0006
63077  .hword 0x06a8,0x0008,0x06b8,0x06c7,0x06d1,0x06e7,0x06f1,0x0708
63078  .hword 0x0718,0x0721,0x0731,0x0006,0x0748,0x0008,0x0758,0x0768
63079  .hword 0x0778,0x0788,0x0798,0x07a1,0x07b1,0x0006,0x07c8,0x0008
63080  .hword 0x07d8,0x07e8,0x07f8,0x0808,0x0818,0x0821,0x0831,0x0000
63081  .hword 0x0046,0x01f8,0x0208,0x0218,0x0227,0x0231,0x0247,0x0251
63082  .hword 0x0268,0x0278,0x0281,0x0291,0x02a1,0x02b1,0x02c1,0x0003
63083  .hword 0x02d8,0x02e8,0x02f8,0x0307,0x0311,0x0327,0x0331,0x0348
63084  .hword 0x0358,0x0361,0x0371,0x0006,0x0388,0x0398,0x03a8,0x03b7
63085  .hword 0x03c1,0x03d7,0x03e1,0x03f8,0x0408,0x0411,0x0421,0x0006
63086  .hword 0x0438,0x0448,0x0458,0x0467,0x0471,0x0487,0x0491,0x04a8
63087  .hword 0x04b8,0x04c1,0x04d1,0x0006,0x0848,0x0008,0x0858,0x0867
63088  .hword 0x0871,0x0887,0x0891,0x08a8,0x08b8,0x08c1,0x08d1,0x0006
63089  .hword 0x08e8,0x0008,0x08f8,0x0908,0x0918,0x0928,0x0938,0x0941
63090  .hword 0x0951,0x0006,0x0968,0x0008,0x0978,0x0988,0x0998,0x09a8
63091  .hword 0x09b8,0x09c1,0x09d1,0x0000,0x0046,0x01f8,0x0208,0x0218
63092  .hword 0x0227,0x0231,0x0247,0x0251,0x0268,0x0278,0x0281,0x0291
63093  .hword 0x02a1,0x02b1,0x02c1,0x0003,0x02d8,0x02e8,0x02f8,0x0307
63094  .hword 0x0311,0x0327,0x0331,0x0348,0x0358,0x0361,0x0371,0x0006
63095  .hword 0x0388,0x0398,0x03a8,0x03b7,0x03c1,0x03d7,0x03e1,0x03f8
63096  .hword 0x0408,0x0411,0x0421,0x0006,0x0438,0x0448,0x0458,0x0467
63097  .hword 0x0471,0x0487,0x0491,0x04a8,0x04b8,0x04c1,0x04d1,0x0006
63098  .hword 0x09e8,0x0008,0x09f8,0x0a07,0x0a11,0x0a27,0x0a31,0x0a48
63099  .hword 0x0a58,0x0a61,0x0a71,0x0a81,0x0a91,0x0004,0x0aa8,0x0008
63100  .hword 0x0ab8,0x0ac7,0x0ad1,0x0ae7,0x0af1,0x0b08,0x0b18,0x0b21
63101  .hword 0x0b31,0x0006,0x0b48,0x0008,0x0b58,0x0b67,0x0b71,0x0b87
63102  .hword 0x0b91,0x0ba8,0x0bb8,0x0bc1,0x0bd1,0x0006,0x0be8,0x0008
63103  .hword 0x0bf8,0x0c07,0x0c11,0x0c27,0x0c31,0x0c48,0x0c58,0x0c61
63104  .hword 0x0c71,0x0006,0x01f8,0x0208,0x0218,0x0227,0x0231,0x0247
63105  .hword 0x0251,0x0268,0x0278,0x0281,0x0291,0x02a1,0x02b1,0x02c1
63106  .hword 0x0003,0x02d8,0x02e8,0x02f8,0x0307,0x0311,0x0327,0x0331
63107  .hword 0x0348,0x0358,0x0361,0x0371,0x0006,0x0388,0x0398,0x03a8
63108  .hword 0x03b7,0x03c1,0x03d7,0x03e1,0x03f8,0x0408,0x0411,0x0421
63109  .hword 0x0006,0x0438,0x0448,0x0458,0x0467,0x0471,0x0487,0x0491
63110  .hword 0x04a8,0x04b8,0x04c1,0x04d1,0x0006,0x0c88,0x0008,0x0c98
63111  .hword 0x0ca7,0x0cb1,0x0cc7,0x0cd1,0x0ce8,0x0cf8,0x0d01,0x0d11
63112  .hword 0x0002,0x0d21,0x0003,0x0d38,0x0008,0x0d48,0x0d58,0x0d68
63113  .hword 0x0d78,0x0d88,0x0d91,0x0da1,0x0002,0x0db1,0x0003,0x0dc8
63114  .hword 0x0008,0x0dd8,0x0de8,0x0df8,0x0e08,0x0e18,0x0e21,0x0e31
63115  .hword 0x0000,0x0046,0x01f8,0x0208,0x0218,0x0227,0x0231,0x0247
63116  .hword 0x0251,0x0268,0x0278,0x0281,0x0291,0x02a1,0x02b1,0x02c1
63117  .hword 0x0003,0x02d8,0x02e8,0x02f8,0x0307,0x0311,0x0327,0x0331
63118  .hword 0x0348,0x0358,0x0361,0x0371,0x0006,0x0388,0x0398,0x03a8
63119  .hword 0x03b7,0x03c1,0x03d7,0x03e1,0x03f8,0x0408,0x0411,0x0421
63120  .hword 0x0006,0x0438,0x0448,0x0458,0x0467,0x0471,0x0487,0x0491
63121  .hword 0x04a8,0x04b8,0x04c1,0x04d1,0x0006,0x0e48,0x0008,0x0e58
63122  .hword 0x0e67,0x0e71,0x0e87,0x0e91,0x0ea8,0x0eb8,0x0ec1,0x0ed1
63123  .hword 0x0006,0x0ee8,0x0008,0x0ef8,0x0f08,0x0f18,0x0f28,0x0f38
63124  .hword 0x0f41,0x0f51,0x0006,0x0f68,0x0008,0x0f78,0x0f88,0x0f98
63125  .hword 0x0fa8,0x0fb8,0x0fc1,0x0fd1,0x0000,0x0046,0x01f8,0x0208
63126  .hword 0x0218,0x0227,0x0231,0x0247,0x0251,0x0268,0x0278,0x0281
63127  .hword 0x0291,0x02a1,0x02b1,0x02c1,0x0003,0x02d8,0x02e8,0x02f8
63128  .hword 0x0307,0x0311,0x0327,0x0331,0x0348,0x0358,0x0361,0x0371
63129  .hword 0x0006,0x0388,0x0398,0x03a8,0x03b7,0x03c1,0x03d7,0x03e1
63130  .hword 0x03f8,0x0408,0x0411,0x0421,0x0006,0x0438,0x0448,0x0458
63131  .hword 0x0467,0x0471,0x0487,0x0491,0x04a8,0x04b8,0x04c1,0x04d1
63132  .hword 0x0000,0x0106,0x01f8,0x0208,0x0218,0x0227,0x0231,0x0247
63133  .hword 0x0251,0x0268,0x0278,0x0281,0x0291,0x02a1,0x02b1,0x02c1
63134  .hword 0x0003,0x02d8,0x02e8,0x02f8,0x0307,0x0311,0x0327,0x0331
63135  .hword 0x0348,0x0358,0x0361,0x0371,0x0006,0x0388,0x0398,0x03a8
63136  .hword 0x03b7,0x03c1,0x03d7,0x03e1,0x03f8,0x0408,0x0411,0x0421
63137  .hword 0x0006,0x0438,0x0448,0x0458,0x0467,0x0471,0x0487,0x0491
63138  .hword 0x04a8,0x04b8,0x04c1,0x04d1,0x0006,0x0fe8,0x0008,0x0ff8
63139  .hword 0x1007,0x1011,0x1027,0x1031,0x1048,0x1058,0x1061,0x1071
63140  .hword 0x1081,0x1091,0x10a1,0x0000,0x0043,0x10b8,0x0008,0x10c8
63141  .hword 0x10d7,0x10e1,0x10f7,0x1101,0x1118,0x1128,0x1131,0x1141
63142  .hword 0x1151,0x1161,0x1171,0x0003,0x1188,0x0008,0x1198,0x11a7
63143  .hword 0x11b1,0x11c7,0x11d1,0x11e8,0x11f8,0x1201,0x1211,0x1221
63144  .hword 0x1231,0x1241,0x0003,0x1258,0x0008,0x1268,0x1277,0x1281
63145  .hword 0x1297,0x12a1,0x12b8,0x12c8,0x12d1,0x12e1,0x12f1,0x1301
63146  .hword 0x1311,0x0003,0x1328,0x0008,0x1338,0x1347,0x1351,0x1367
63147  .hword 0x1371,0x1388,0x1398,0x13a1,0x13b1,0x13c1,0x13d1,0x13e1
63148  .hword 0x0003,0x13f8,0x0008,0x1408,0x1417,0x1421,0x1437,0x1441
63149  .hword 0x1458,0x1468,0x1471,0x1481,0x1491,0x14a1,0x14b1,0x0003
63150  .hword 0x14c8,0x0008,0x14d8,0x14e7,0x14f1,0x1507,0x1511,0x1528
63151  .hword 0x1538,0x1541,0x1551,0x1561,0x1571,0x1581,0x0003,0x0fe8
63152  .hword 0x0008,0x0ff8,0x1007,0x1011,0x1027,0x1031,0x1048,0x1058
63153  .hword 0x1061,0x1071,0x1081,0x1091,0x10a1,0x0000,0x0043,0x10b8
63154  .hword 0x0008,0x10c8,0x10d7,0x10e1,0x10f7,0x1101,0x1118,0x1128
63155  .hword 0x1131,0x1141,0x1151,0x1161,0x1171,0x0003,0x1188,0x0008
63156  .hword 0x1198,0x11a7,0x11b1,0x11c7,0x11d1,0x11e8,0x11f8,0x1201
63157  .hword 0x1211,0x1221,0x1231,0x1241,0x0003,0x1258,0x0008,0x1268
63158  .hword 0x1277,0x1281,0x1297,0x12a1,0x12b8,0x12c8,0x12d1,0x12e1
63159  .hword 0x12f1,0x1301,0x1311,0x0003,0x1328,0x0008,0x1338,0x1347
63160  .hword 0x1351,0x1367,0x1371,0x1388,0x1398,0x13a1,0x13b1,0x13c1
63161  .hword 0x13d1,0x13e1,0x0003,0x13f8,0x0008,0x1408,0x1417,0x1421
63162  .hword 0x1437,0x1441,0x1458,0x1468,0x1471,0x1481,0x1491,0x14a1
63163  .hword 0x14b1,0x0003,0x1598,0x0008,0x15a8,0x15b7,0x15c1,0x15d7
63164  .hword 0x15e1,0x15f8,0x1608,0x1611,0x1621,0x1631,0x1641,0x1651
63165  .hword 0x0003,0x0fe8,0x0008,0x0ff8,0x1007,0x1011,0x1027,0x1031
63166  .hword 0x1048,0x1058,0x1061,0x1071,0x1081,0x1091,0x10a1,0x0000
63167  .hword 0x0043,0x10b8,0x0008,0x10c8,0x10d7,0x10e1,0x10f7,0x1101
63168  .hword 0x1118,0x1128,0x1131,0x1141,0x1151,0x1161,0x1171,0x0003
63169  .hword 0x1188,0x0008,0x1198,0x11a7,0x11b1,0x11c7,0x11d1,0x11e8
63170  .hword 0x11f8,0x1201,0x1211,0x1221,0x1231,0x1241,0x0003,0x1258
63171  .hword 0x0008,0x1268,0x1277,0x1281,0x1297,0x12a1,0x12b8,0x12c8
63172  .hword 0x12d1,0x12e1,0x12f1,0x1301,0x1311,0x0003,0x1328,0x0008
63173  .hword 0x1338,0x1347,0x1351,0x1367,0x1371,0x1388,0x1398,0x13a1
63174  .hword 0x13b1,0x13c1,0x13d1,0x13e1,0x0003,0x13f8,0x0008,0x1408
63175  .hword 0x1417,0x1421,0x1437,0x1441,0x1458,0x1468,0x1471,0x1481
63176  .hword 0x1491,0x14a1,0x14b1,0x0000,0x0043,0x0fe8,0x0008,0x0ff8
63177  .hword 0x1007,0x1011,0x1027,0x1031,0x1048,0x1058,0x1061,0x1071
63178  .hword 0x1081,0x1091,0x10a1,0x0000,0x0043,0x10b8,0x0008,0x10c8
63179  .hword 0x10d7,0x10e1,0x10f7,0x1101,0x1118,0x1128,0x1131,0x1141
63180  .hword 0x1151,0x1161,0x1171,0x0003,0x1188,0x0008,0x1198,0x11a7
63181  .hword 0x11b1,0x11c7,0x11d1,0x11e8,0x11f8,0x1201,0x1211,0x1221
63182  .hword 0x1231,0x1241,0x0003,0x1258,0x0008,0x1268,0x1277,0x1281
63183  .hword 0x1297,0x12a1,0x12b8,0x12c8,0x12d1,0x12e1,0x12f1,0x1301
63184  .hword 0x1311,0x0003,0x1328,0x0008,0x1338,0x1347,0x1351,0x1367
63185  .hword 0x1371,0x1388,0x1398,0x13a1,0x13b1,0x13c1,0x13d1,0x13e1
63186  .hword 0x0003,0x13f8,0x0008,0x1408,0x1417,0x1421,0x1437,0x1441
63187  .hword 0x1458,0x1468,0x1471,0x1481,0x1491,0x14a1,0x14b1,0x0000
63188  .hword 0x0043,0x0fe8,0x0008,0x0ff8,0x1007,0x1011,0x1027,0x1031
63189  .hword 0x1048,0x1058,0x1061,0x1071,0x1081,0x1091,0x10a1,0x0000
63190  .hword 0x0043,0x10b8,0x0008,0x10c8,0x10d7,0x10e1,0x10f7,0x1101
63191  .hword 0x1118,0x1128,0x1131,0x1141,0x1151,0x1161,0x1171,0x0003
63192  .hword 0x1188,0x0008,0x1198,0x11a7,0x11b1,0x11c7,0x11d1,0x11e8
63193  .hword 0x11f8,0x1201,0x1211,0x1221,0x1231,0x1241,0x0003,0x1258
63194  .hword 0x0008,0x1268,0x1277,0x1281,0x1297,0x12a1,0x12b8,0x12c8
63195  .hword 0x12d1,0x12e1,0x12f1,0x1301,0x1311,0x0003,0x1328,0x0008
63196  .hword 0x1338,0x1347,0x1351,0x1367,0x1371,0x1388,0x1398,0x13a1
63197  .hword 0x13b1,0x13c1,0x13d1,0x13e1,0x0003,0x13f8,0x0008,0x1408
63198  .hword 0x1417,0x1421,0x1437,0x1441,0x1458,0x1468,0x1471,0x1481
63199  .hword 0x1491,0x14a1,0x14b1,0x0000,0x0043,0x0fe8,0x0008,0x0ff8
63200  .hword 0x1007,0x1011,0x1027,0x1031,0x1048,0x1058,0x1061,0x1071
63201  .hword 0x1081,0x1091,0x10a1,0x0000,0x0043,0x10b8,0x0008,0x10c8
63202  .hword 0x10d7,0x10e1,0x10f7,0x1101,0x1118,0x1128,0x1131,0x1141
63203  .hword 0x1151,0x1161,0x1171,0x0003,0x1188,0x0008,0x1198,0x11a7
63204  .hword 0x11b1,0x11c7,0x11d1,0x11e8,0x11f8,0x1201,0x1211,0x1221
63205  .hword 0x1231,0x1241,0x0003,0x1258,0x0008,0x1268,0x1277,0x1281
63206  .hword 0x1297,0x12a1,0x12b8,0x12c8,0x12d1,0x12e1,0x12f1,0x1301
63207  .hword 0x1311,0x0003,0x1328,0x0008,0x1338,0x1347,0x1351,0x1367
63208  .hword 0x1371,0x1388,0x1398,0x13a1,0x13b1,0x13c1,0x13d1,0x13e1
63209  .hword 0x0003,0x13f8,0x0008,0x1408,0x1417,0x1421,0x1437,0x1441
63210  .hword 0x1458,0x1468,0x1471,0x1481,0x1491,0x14a1,0x14b1,0x0000
63211  .hword 0x0043,0x0fe8,0x0008,0x0ff8,0x1007,0x1011,0x1027,0x1031
63212  .hword 0x1048,0x1058,0x1061,0x1071,0x1081,0x1091,0x10a1,0x0000
63213  .hword 0x0043,0x10b8,0x0008,0x10c8,0x10d7,0x10e1,0x10f7,0x1101
63214  .hword 0x1118,0x1128,0x1131,0x1141,0x1151,0x1161,0x1171,0x0003
63215  .hword 0x1188,0x0008,0x1198,0x11a7,0x11b1,0x11c7,0x11d1,0x11e8
63216  .hword 0x11f8,0x1201,0x1211,0x1221,0x1231,0x1241,0x0003,0x1258
63217  .hword 0x0008,0x1268,0x1277,0x1281,0x1297,0x12a1,0x12b8,0x12c8
63218  .hword 0x12d1,0x12e1,0x12f1,0x1301,0x1311,0x0003,0x1328,0x0008
63219  .hword 0x1338,0x1347,0x1351,0x1367,0x1371,0x1388,0x1398,0x13a1
63220  .hword 0x13b1,0x13c1,0x13d1,0x13e1,0x0003,0x13f8,0x0008,0x1408
63221  .hword 0x1417,0x1421,0x1437,0x1441,0x1458,0x1468,0x1471,0x1481
63222  .hword 0x1491,0x14a1,0x14b1,0x0000,0x0043,0x0fe8,0x0008,0x0ff8
63223  .hword 0x1007,0x1011,0x1027,0x1031,0x1048,0x1058,0x1061,0x1071
63224  .hword 0x1081,0x1091,0x10a1,0x0000,0x0043,0x10b8,0x0008,0x10c8
63225  .hword 0x10d7,0x10e1,0x10f7,0x1101,0x1118,0x1128,0x1131,0x1141
63226  .hword 0x1151,0x1161,0x1171,0x0003,0x1668,0x0008,0x1678,0x1687
63227  .hword 0x1691,0x16a7,0x16b1,0x16c8,0x16d8,0x16e1,0x16f1,0x1701
63228  .hword 0x1711,0x1721,0x0003,0x1738,0x0008,0x1748,0x1757,0x1761
63229  .hword 0x1777,0x1781,0x1798,0x17a8,0x17b1,0x17c1,0x17d1,0x17e1
63230  .hword 0x17f1,0x0003,0x1328,0x0008,0x1338,0x1347,0x1351,0x1367
63231  .hword 0x1371,0x1388,0x1398,0x13a1,0x13b1,0x13c1,0x13d1,0x13e1
63232  .hword 0x0003,0x13f8,0x0008,0x1408,0x1417,0x1421,0x1437,0x1441
63233  .hword 0x1458,0x1468,0x1471,0x1481,0x1491,0x14a1,0x14b1,0x0000
63234  .hword 0x0043,0x180f,0x1818,0x1828,0x1838,0x1848,0x1858,0x1861
63235  .hword 0x1871,0x1881,0x1891,0x18a1,0x0003,0x18bf,0x18c8,0x18d8
63236  .hword 0x18e8,0x18f8,0x1908,0x1911,0x1921,0x1931,0x1941,0x1951
63237  .hword 0x0003,0x196f,0x1978,0x1988,0x1998,0x19a8,0x19b8,0x19c1
63238  .hword 0x19d1,0x19e1,0x19f1,0x1a01,0x0003,0x1a1f,0x1a28,0x1a38
63239  .hword 0x1a48,0x1a58,0x1a68,0x1a71,0x1a81,0x1a91,0x1aa1,0x1ab1
63240  .hword 0x0003,0x1acf,0x1ad8,0x1ae8,0x1af8,0x1b08,0x1b18,0x1b21
63241  .hword 0x1b31,0x1b41,0x1b51,0x1b61,0x0003,0x1b7f,0x1b88,0x1b98
63242  .hword 0x1ba8,0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1,0x1c01,0x1c11
63243  .hword 0x0003,0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68,0x1c78,0x1c81
63244  .hword 0x1c91,0x1ca1,0x1cb1,0x1cc1,0x0003,0x1cdf,0x1ce8,0x1cf8
63245  .hword 0x1d08,0x1d18,0x1d28,0x1d31,0x1d41,0x1d51,0x1d61,0x1d71
63246  .hword 0x0003,0x180f,0x1818,0x1828,0x1838,0x1848,0x1858,0x1861
63247  .hword 0x1871,0x1881,0x1891,0x18a1,0x0003,0x18bf,0x18c8,0x18d8
63248  .hword 0x18e8,0x18f8,0x1908,0x1911,0x1921,0x1931,0x1941,0x1951
63249  .hword 0x0003,0x196f,0x1978,0x1988,0x1998,0x19a8,0x19b8,0x19c1
63250  .hword 0x19d1,0x19e1,0x19f1,0x1a01,0x0003,0x1a1f,0x1a28,0x1a38
63251  .hword 0x1a48,0x1a58,0x1a68,0x1a71,0x1a81,0x1a91,0x1aa1,0x1ab1
63252  .hword 0x0003,0x1acf,0x1ad8,0x1ae8,0x1af8,0x1b08,0x1b18,0x1b21
63253  .hword 0x1b31,0x1b41,0x1b51,0x1b61,0x0003,0x1b7f,0x1b88,0x1b98
63254  .hword 0x1ba8,0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1,0x1c01,0x1c11
63255  .hword 0x0003,0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68,0x1c78,0x1c81
63256  .hword 0x1c91,0x1ca1,0x1cb1,0x1cc1,0x0003,0x1d8f,0x1d98,0x1da8
63257  .hword 0x1db8,0x1dc8,0x1dd8,0x1de1,0x1df1,0x1e01,0x1e11,0x1e21
63258  .hword 0x0003,0x180f,0x1818,0x1828,0x1838,0x1848,0x1858,0x1861
63259  .hword 0x1871,0x1881,0x1891,0x18a1,0x0003,0x18bf,0x18c8,0x18d8
63260  .hword 0x18e8,0x18f8,0x1908,0x1911,0x1921,0x1931,0x1941,0x1951
63261  .hword 0x0003,0x196f,0x1978,0x1988,0x1998,0x19a8,0x19b8,0x19c1
63262  .hword 0x19d1,0x19e1,0x19f1,0x1a01,0x0003,0x1a1f,0x1a28,0x1a38
63263  .hword 0x1a48,0x1a58,0x1a68,0x1a71,0x1a81,0x1a91,0x1aa1,0x1ab1
63264  .hword 0x0003,0x1acf,0x1ad8,0x1ae8,0x1af8,0x1b08,0x1b18,0x1b21
63265  .hword 0x1b31,0x1b41,0x1b51,0x1b61,0x0003,0x1b7f,0x1b88,0x1b98
63266  .hword 0x1ba8,0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1,0x1c01,0x1c11
63267  .hword 0x0003,0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68,0x1c78,0x1c81
63268  .hword 0x1c91,0x1ca1,0x1cb1,0x1cc1,0x0000,0x0043,0x180f,0x1818
63269  .hword 0x1828,0x1838,0x1848,0x1858,0x1861,0x1871,0x1881,0x1891
63270  .hword 0x18a1,0x0003,0x18bf,0x18c8,0x18d8,0x18e8,0x18f8,0x1908
63271  .hword 0x1911,0x1921,0x1931,0x1941,0x1951,0x0003,0x196f,0x1978
63272  .hword 0x1988,0x1998,0x19a8,0x19b8,0x19c1,0x19d1,0x19e1,0x19f1
63273  .hword 0x1a01,0x0003,0x1a1f,0x1a28,0x1a38,0x1a48,0x1a58,0x1a68
63274  .hword 0x1a71,0x1a81,0x1a91,0x1aa1,0x1ab1,0x0003,0x1acf,0x1ad8
63275  .hword 0x1ae8,0x1af8,0x1b08,0x1b18,0x1b21,0x1b31,0x1b41,0x1b51
63276  .hword 0x1b61,0x0003,0x1b7f,0x1b88,0x1b98,0x1ba8,0x1bb8,0x1bc8
63277  .hword 0x1bd1,0x1be1,0x1bf1,0x1c01,0x1c11,0x0003,0x1c2f,0x1c38
63278  .hword 0x1c48,0x1c58,0x1c68,0x1c78,0x1c81,0x1c91,0x1ca1,0x1cb1
63279  .hword 0x1cc1,0x0000,0x0043,0x180f,0x1818,0x1828,0x1838,0x1848
63280  .hword 0x1858,0x1861,0x1871,0x1881,0x1891,0x18a1,0x0003,0x18bf
63281  .hword 0x18c8,0x18d8,0x18e8,0x18f8,0x1908,0x1911,0x1921,0x1931
63282  .hword 0x1941,0x1951,0x0003,0x196f,0x1978,0x1988,0x1998,0x19a8
63283  .hword 0x19b8,0x19c1,0x19d1,0x19e1,0x19f1,0x1a01,0x0003,0x1a1f
63284  .hword 0x1a28,0x1a38,0x1a48,0x1a58,0x1a68,0x1a71,0x1a81,0x1a91
63285  .hword 0x1aa1,0x1ab1,0x0003,0x1acf,0x1ad8,0x1ae8,0x1af8,0x1b08
63286  .hword 0x1b18,0x1b21,0x1b31,0x1b41,0x1b51,0x1b61,0x0003,0x1b7f
63287  .hword 0x1b88,0x1b98,0x1ba8,0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1
63288  .hword 0x1c01,0x1c11,0x0003,0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68
63289  .hword 0x1c78,0x1c81,0x1c91,0x1ca1,0x1cb1,0x1cc1,0x0000,0x0043
63290  .hword 0x180f,0x1818,0x1828,0x1838,0x1848,0x1858,0x1861,0x1871
63291  .hword 0x1881,0x1891,0x18a1,0x0003,0x18bf,0x18c8,0x18d8,0x18e8
63292  .hword 0x18f8,0x1908,0x1911,0x1921,0x1931,0x1941,0x1951,0x0003
63293  .hword 0x196f,0x1978,0x1988,0x1998,0x19a8,0x19b8,0x19c1,0x19d1
63294  .hword 0x19e1,0x19f1,0x1a01,0x0003,0x1a1f,0x1a28,0x1a38,0x1a48
63295  .hword 0x1a58,0x1a68,0x1a71,0x1a81,0x1a91,0x1aa1,0x1ab1,0x0003
63296  .hword 0x1acf,0x1ad8,0x1ae8,0x1af8,0x1b08,0x1b18,0x1b21,0x1b31
63297  .hword 0x1b41,0x1b51,0x1b61,0x0003,0x1b7f,0x1b88,0x1b98,0x1ba8
63298  .hword 0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1,0x1c01,0x1c11,0x0003
63299  .hword 0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68,0x1c78,0x1c81,0x1c91
63300  .hword 0x1ca1,0x1cb1,0x1cc1,0x0000,0x0043,0x180f,0x1818,0x1828
63301  .hword 0x1838,0x1848,0x1858,0x1861,0x1871,0x1881,0x1891,0x18a1
63302  .hword 0x0003,0x18bf,0x18c8,0x18d8,0x18e8,0x18f8,0x1908,0x1911
63303  .hword 0x1921,0x1931,0x1941,0x1951,0x0003,0x196f,0x1978,0x1988
63304  .hword 0x1998,0x19a8,0x19b8,0x19c1,0x19d1,0x19e1,0x19f1,0x1a01
63305  .hword 0x0003,0x1a1f,0x1a28,0x1a38,0x1a48,0x1a58,0x1a68,0x1a71
63306  .hword 0x1a81,0x1a91,0x1aa1,0x1ab1,0x0003,0x1acf,0x1ad8,0x1ae8
63307  .hword 0x1af8,0x1b08,0x1b18,0x1b21,0x1b31,0x1b41,0x1b51,0x1b61
63308  .hword 0x0003,0x1b7f,0x1b88,0x1b98,0x1ba8,0x1bb8,0x1bc8,0x1bd1
63309  .hword 0x1be1,0x1bf1,0x1c01,0x1c11,0x0003,0x1c2f,0x1c38,0x1c48
63310  .hword 0x1c58,0x1c68,0x1c78,0x1c81,0x1c91,0x1ca1,0x1cb1,0x1cc1
63311  .hword 0x0000,0x0043,0x180f,0x1818,0x1828,0x1838,0x1848,0x1858
63312  .hword 0x1861,0x1871,0x1881,0x1891,0x18a1,0x0003,0x18bf,0x18c8
63313  .hword 0x18d8,0x18e8,0x18f8,0x1908,0x1911,0x1921,0x1931,0x1941
63314  .hword 0x1951,0x0003,0x196f,0x1978,0x1988,0x1998,0x19a8,0x19b8
63315  .hword 0x19c1,0x19d1,0x19e1,0x19f1,0x1a01,0x0003,0x1e3f,0x1e48
63316  .hword 0x1e58,0x1e68,0x1e78,0x1e88,0x1e91,0x1ea1,0x1eb1,0x1ec1
63317  .hword 0x1ed1,0x0003,0x1eef,0x1ef8,0x1f08,0x1f18,0x1f28,0x1f38
63318  .hword 0x1f41,0x1f51,0x1f61,0x1f71,0x1f81,0x0003,0x1b7f,0x1b88
63319  .hword 0x1b98,0x1ba8,0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1,0x1c01
63320  .hword 0x1c11,0x0003,0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68,0x1c78
63321  .hword 0x1c81,0x1c91,0x1ca1,0x1cb1,0x1cc1,0x0000,0x0043,0x1f9f
63322  .hword 0x1fa8,0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1,0x2001,0x2011
63323  .hword 0x2021,0x2031,0x0003,0x204f,0x2058,0x2068,0x2078,0x2088
63324  .hword 0x2098,0x20a1,0x20b1,0x20c1,0x20d1,0x20e1,0x0003,0x20ff
63325  .hword 0x2108,0x2118,0x2128,0x2138,0x2148,0x2151,0x2161,0x2171
63326  .hword 0x2181,0x2191,0x0003,0x21af,0x21b8,0x21c8,0x21d8,0x21e8
63327  .hword 0x21f8,0x2201,0x2211,0x2221,0x2231,0x2241,0x0003,0x225f
63328  .hword 0x2268,0x2278,0x2288,0x2298,0x22a8,0x22b1,0x22c1,0x22d1
63329  .hword 0x22e1,0x22f1,0x0003,0x230f,0x2318,0x2328,0x2338,0x2348
63330  .hword 0x2358,0x2361,0x2371,0x2381,0x2391,0x23a1,0x0003,0x23bf
63331  .hword 0x23c8,0x23d8,0x23e8,0x23f8,0x2408,0x2411,0x2421,0x2431
63332  .hword 0x2441,0x2451,0x0003,0x246f,0x2478,0x2488,0x2498,0x24a8
63333  .hword 0x24b8,0x24c1,0x24d1,0x24e1,0x24f1,0x2501,0x0003,0x1f9f
63334  .hword 0x1fa8,0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1,0x2001,0x2011
63335  .hword 0x2021,0x2031,0x0003,0x204f,0x2058,0x2068,0x2078,0x2088
63336  .hword 0x2098,0x20a1,0x20b1,0x20c1,0x20d1,0x20e1,0x0003,0x20ff
63337  .hword 0x2108,0x2118,0x2128,0x2138,0x2148,0x2151,0x2161,0x2171
63338  .hword 0x2181,0x2191,0x0003,0x21af,0x21b8,0x21c8,0x21d8,0x21e8
63339  .hword 0x21f8,0x2201,0x2211,0x2221,0x2231,0x2241,0x0003,0x225f
63340  .hword 0x2268,0x2278,0x2288,0x2298,0x22a8,0x22b1,0x22c1,0x22d1
63341  .hword 0x22e1,0x22f1,0x0003,0x230f,0x2318,0x2328,0x2338,0x2348
63342  .hword 0x2358,0x2361,0x2371,0x2381,0x2391,0x23a1,0x0003,0x23bf
63343  .hword 0x23c8,0x23d8,0x23e8,0x23f8,0x2408,0x2411,0x2421,0x2431
63344  .hword 0x2441,0x2451,0x0003,0x251f,0x2528,0x2538,0x2548,0x2558
63345  .hword 0x2568,0x2571,0x2581,0x2591,0x25a1,0x25b1,0x0003,0x1f9f
63346  .hword 0x1fa8,0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1,0x2001,0x2011
63347  .hword 0x2021,0x2031,0x0003,0x204f,0x2058,0x2068,0x2078,0x2088
63348  .hword 0x2098,0x20a1,0x20b1,0x20c1,0x20d1,0x20e1,0x0003,0x20ff
63349  .hword 0x2108,0x2118,0x2128,0x2138,0x2148,0x2151,0x2161,0x2171
63350  .hword 0x2181,0x2191,0x0003,0x21af,0x21b8,0x21c8,0x21d8,0x21e8
63351  .hword 0x21f8,0x2201,0x2211,0x2221,0x2231,0x2241,0x0003,0x225f
63352  .hword 0x2268,0x2278,0x2288,0x2298,0x22a8,0x22b1,0x22c1,0x22d1
63353  .hword 0x22e1,0x22f1,0x0003,0x230f,0x2318,0x2328,0x2338,0x2348
63354  .hword 0x2358,0x2361,0x2371,0x2381,0x2391,0x23a1,0x0003,0x23bf
63355  .hword 0x23c8,0x23d8,0x23e8,0x23f8,0x2408,0x2411,0x2421,0x2431
63356  .hword 0x2441,0x2451,0x0000,0x0043,0x1f9f,0x1fa8,0x1fb8,0x1fc8
63357  .hword 0x1fd8,0x1fe8,0x1ff1,0x2001,0x2011,0x2021,0x2031,0x0003
63358  .hword 0x204f,0x2058,0x2068,0x2078,0x2088,0x2098,0x20a1,0x20b1
63359  .hword 0x20c1,0x20d1,0x20e1,0x0003,0x20ff,0x2108,0x2118,0x2128
63360  .hword 0x2138,0x2148,0x2151,0x2161,0x2171,0x2181,0x2191,0x0003
63361  .hword 0x21af,0x21b8,0x21c8,0x21d8,0x21e8,0x21f8,0x2201,0x2211
63362  .hword 0x2221,0x2231,0x2241,0x0003,0x225f,0x2268,0x2278,0x2288
63363  .hword 0x2298,0x22a8,0x22b1,0x22c1,0x22d1,0x22e1,0x22f1,0x0003
63364  .hword 0x230f,0x2318,0x2328,0x2338,0x2348,0x2358,0x2361,0x2371
63365  .hword 0x2381,0x2391,0x23a1,0x0003,0x23bf,0x23c8,0x23d8,0x23e8
63366  .hword 0x23f8,0x2408,0x2411,0x2421,0x2431,0x2441,0x2451,0x0000
63367  .hword 0x0043,0x1f9f,0x1fa8,0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1
63368  .hword 0x2001,0x2011,0x2021,0x2031,0x0003,0x204f,0x2058,0x2068
63369  .hword 0x2078,0x2088,0x2098,0x20a1,0x20b1,0x20c1,0x20d1,0x20e1
63370  .hword 0x0003,0x20ff,0x2108,0x2118,0x2128,0x2138,0x2148,0x2151
63371  .hword 0x2161,0x2171,0x2181,0x2191,0x0003,0x21af,0x21b8,0x21c8
63372  .hword 0x21d8,0x21e8,0x21f8,0x2201,0x2211,0x2221,0x2231,0x2241
63373  .hword 0x0003,0x225f,0x2268,0x2278,0x2288,0x2298,0x22a8,0x22b1
63374  .hword 0x22c1,0x22d1,0x22e1,0x22f1,0x0003,0x230f,0x2318,0x2328
63375  .hword 0x2338,0x2348,0x2358,0x2361,0x2371,0x2381,0x2391,0x23a1
63376  .hword 0x0003,0x23bf,0x23c8,0x23d8,0x23e8,0x23f8,0x2408,0x2411
63377  .hword 0x2421,0x2431,0x2441,0x2451,0x0000,0x0043,0x1f9f,0x1fa8
63378  .hword 0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1,0x2001,0x2011,0x2021
63379  .hword 0x2031,0x0003,0x204f,0x2058,0x2068,0x2078,0x2088,0x2098
63380  .hword 0x20a1,0x20b1,0x20c1,0x20d1,0x20e1,0x0003,0x20ff,0x2108
63381  .hword 0x2118,0x2128,0x2138,0x2148,0x2151,0x2161,0x2171,0x2181
63382  .hword 0x2191,0x0003,0x21af,0x21b8,0x21c8,0x21d8,0x21e8,0x21f8
63383  .hword 0x2201,0x2211,0x2221,0x2231,0x2241,0x0003,0x225f,0x2268
63384  .hword 0x2278,0x2288,0x2298,0x22a8,0x22b1,0x22c1,0x22d1,0x22e1
63385  .hword 0x22f1,0x0003,0x230f,0x2318,0x2328,0x2338,0x2348,0x2358
63386  .hword 0x2361,0x2371,0x2381,0x2391,0x23a1,0x0003,0x23bf,0x23c8
63387  .hword 0x23d8,0x23e8,0x23f8,0x2408,0x2411,0x2421,0x2431,0x2441
63388  .hword 0x2451,0x0000,0x0043,0x1f9f,0x1fa8,0x1fb8,0x1fc8,0x1fd8
63389  .hword 0x1fe8,0x1ff1,0x2001,0x2011,0x2021,0x2031,0x0003,0x204f
63390  .hword 0x2058,0x2068,0x2078,0x2088,0x2098,0x20a1,0x20b1,0x20c1
63391  .hword 0x20d1,0x20e1,0x0003,0x20ff,0x2108,0x2118,0x2128,0x2138
63392  .hword 0x2148,0x2151,0x2161,0x2171,0x2181,0x2191,0x0003,0x21af
63393  .hword 0x21b8,0x21c8,0x21d8,0x21e8,0x21f8,0x2201,0x2211,0x2221
63394  .hword 0x2231,0x2241,0x0003,0x225f,0x2268,0x2278,0x2288,0x2298
63395  .hword 0x22a8,0x22b1,0x22c1,0x22d1,0x22e1,0x22f1,0x0003,0x230f
63396  .hword 0x2318,0x2328,0x2338,0x2348,0x2358,0x2361,0x2371,0x2381
63397  .hword 0x2391,0x23a1,0x0003,0x23bf,0x23c8,0x23d8,0x23e8,0x23f8
63398  .hword 0x2408,0x2411,0x2421,0x2431,0x2441,0x2451,0x0000,0x0043
63399  .hword 0x1f9f,0x1fa8,0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1,0x2001
63400  .hword 0x2011,0x2021,0x2031,0x0003,0x204f,0x2058,0x2068,0x2078
63401  .hword 0x2088,0x2098,0x20a1,0x20b1,0x20c1,0x20d1,0x20e1,0x0003
63402  .hword 0x20ff,0x2108,0x2118,0x2128,0x2138,0x2148,0x2151,0x2161
63403  .hword 0x2171,0x2181,0x2191,0x0003,0x25cf,0x25d8,0x25e8,0x25f8
63404  .hword 0x2608,0x2618,0x2621,0x2631,0x2641,0x2651,0x2661,0x0003
63405  .hword 0x267f,0x2688,0x2698,0x26a8,0x26b8,0x26c8,0x26d1,0x26e1
63406  .hword 0x26f1,0x2701,0x2711,0x0003,0x230f,0x2318,0x2328,0x2338
63407  .hword 0x2348,0x2358,0x2361,0x2371,0x2381,0x2391,0x23a1,0x0003
63408  .hword 0x23bf,0x23c8,0x23d8,0x23e8,0x23f8,0x2408,0x2411,0x2421
63409  .hword 0x2431,0x2441,0x2451,0x0000,0x0043,0x2728,0x0008,0x2738
63410  .hword 0x2747,0x2751,0x2767,0x2771,0x2788,0x2798,0x27a1,0x27b1
63411  .hword 0x0006,0x27c8,0x0008,0x27d8,0x27e8,0x27f8,0x2808,0x2818
63412  .hword 0x2821,0x2831,0x0006,0x2848,0x0008,0x2858,0x2868,0x2878
63413  .hword 0x2888,0x2898,0x28a1,0x28b1,0x0006,0x28c8,0x0008,0x28d8
63414  .hword 0x28e8,0x28f8,0x2908,0x2918,0x2921,0x2931,0x0000,0x0086
63415  .hword 0x2948,0x0008,0x2958,0x2968,0x2978,0x2988,0x2998,0x29a1
63416  .hword 0x29b1,0x29c1,0x29d1,0x29e1,0x0000,0x0013,0x29f8,0x000f
63417  .hword 0x2a08,0x2a18,0x2a21,0x2a31,0x2a41,0x2a51,0x0004,0x2a68
63418  .hword 0x0008,0x2a78,0x2a87,0x2a91,0x2aa7,0x2ab1,0x2ac8,0x2ad8
63419  .hword 0x2ae1,0x2af1,0x0006,0x2b08,0x0008,0x2b18,0x2b28,0x2b38
63420  .hword 0x2b48,0x2b58,0x2b61,0x2b71,0x0006,0x2b88,0x0008,0x2b98
63421  .hword 0x2ba8,0x2bb8,0x2bc8,0x2bd8,0x2be1,0x2bf1,0x0000,0x00c6
63422  .hword 0x2948,0x0008,0x2958,0x2968,0x2978,0x2988,0x2998,0x29a1
63423  .hword 0x29b1,0x29c1,0x29d1,0x29e1,0x0000,0x0013,0x29f8,0x000f
63424  .hword 0x2a08,0x2a18,0x2a21,0x2a31,0x2a41,0x2a51,0x0004,0x2c08
63425  .hword 0x0008,0x2c18,0x2c27,0x2c31,0x2c47,0x2c51,0x2c68,0x2c78
63426  .hword 0x2c81,0x2c91,0x0006,0x2ca8,0x0008,0x2cb8,0x2cc8,0x2cd8
63427  .hword 0x2ce8,0x2cf8,0x2d01,0x2d11,0x0006,0x2d28,0x0008,0x2d38
63428  .hword 0x2d48,0x2d58,0x2d68,0x2d78,0x2d81,0x2d91,0x0006,0x2da8
63429  .hword 0x0008,0x2db8,0x2dc8,0x2dd8,0x2de8,0x2df8,0x2e01,0x2e11
63430  .hword 0x2e21,0x2e31,0x2e41,0x0000,0x0083,0x2948,0x0008,0x2958
63431  .hword 0x2968,0x2978,0x2988,0x2998,0x29a1,0x29b1,0x29c1,0x29d1
63432  .hword 0x29e1,0x0000,0x0013,0x29f8,0x000f,0x2a08,0x2a18,0x2a21
63433  .hword 0x2a31,0x2a41,0x2a51,0x0004,0x2e58,0x0008,0x2e68,0x2e77
63434  .hword 0x2e81,0x2e97,0x2ea1,0x2eb8,0x2ec8,0x2ed1,0x2ee1,0x0006
63435  .hword 0x2ef8,0x0008,0x2f08,0x2f18,0x2f28,0x2f38,0x2f48,0x2f51
63436  .hword 0x2f61,0x0006,0x2f78,0x0008,0x2f88,0x2f98,0x2fa8,0x2fb8
63437  .hword 0x2fc8,0x2fd1,0x2fe1,0x0006,0x2ff8,0x0008,0x3008,0x3018
63438  .hword 0x3028,0x3038,0x3048,0x3051,0x3061,0x3071,0x3081,0x3091
63439  .hword 0x0000,0x0083,0x2948,0x0008,0x2958,0x2968,0x2978,0x2988
63440  .hword 0x2998,0x29a1,0x29b1,0x29c1,0x29d1,0x29e1,0x0000,0x0013
63441  .hword 0x29f8,0x000f,0x2a08,0x2a18,0x2a21,0x2a31,0x2a41,0x2a51
63442  .hword 0x0004,0x30a8,0x0008,0x30b8,0x30c7,0x30d1,0x30e7,0x30f1
63443  .hword 0x3108,0x3118,0x3121,0x3131,0x0006,0x3148,0x0008,0x3158
63444  .hword 0x000f,0x3168,0x3178,0x3181,0x3191,0x31a1,0x31b1,0x0004
63445  .hword 0x31c8,0x0008,0x31d8,0x0008,0x31e8,0x31f8,0x3208,0x3211
63446  .hword 0x3221,0x0006,0x3238,0x0008,0x3248,0x0008,0x3258,0x3268
63447  .hword 0x3278,0x3281,0x3291,0x0000,0x0086,0x2948,0x0008,0x2958
63448  .hword 0x2968,0x2978,0x2988,0x2998,0x29a1,0x29b1,0x29c1,0x29d1
63449  .hword 0x29e1,0x0000,0x0013,0x29f8,0x000f,0x2a08,0x2a18,0x2a21
63450  .hword 0x2a31,0x2a41,0x2a51,0x0004,0x32a8,0x0008,0x32b8,0x32c7
63451  .hword 0x32d1,0x32e7,0x32f1,0x3308,0x3318,0x3321,0x3331,0x0006
63452  .hword 0x3348,0x0008,0x3358,0x3368,0x3378,0x3388,0x3398,0x33a1
63453  .hword 0x33b1,0x0006,0x33c8,0x0008,0x33d8,0x33e8,0x33f8,0x3408
63454  .hword 0x3418,0x3421,0x3431,0x0006,0x3448,0x0008,0x3458,0x3467
63455  .hword 0x3471,0x3487,0x3491,0x34a8,0x34b8,0x34c1,0x34d1,0x0000
63456  .hword 0x0086,0x2948,0x0008,0x2958,0x2968,0x2978,0x2988,0x2998
63457  .hword 0x29a1,0x29b1,0x29c1,0x29d1,0x29e1,0x0000,0x0013,0x29f8
63458  .hword 0x000f,0x2a08,0x2a18,0x2a21,0x2a31,0x2a41,0x2a51,0x0000
63459  .hword 0x0094,0x34e8,0x34f8,0x0008,0x3508,0x3518,0x3521,0x3531
63460  .hword 0x3541,0x3551,0x0000,0x0014,0x3568,0x3578,0x0008,0x3588
63461  .hword 0x3598,0x35a1,0x35b1,0x35c1,0x35d1,0x0000,0x0084,0x2948
63462  .hword 0x0008,0x2958,0x2968,0x2978,0x2988,0x2998,0x29a1,0x29b1
63463  .hword 0x29c1,0x29d1,0x29e1,0x0000,0x0013,0x29f8,0x000f,0x2a08
63464  .hword 0x2a18,0x2a21,0x2a31,0x2a41,0x2a51,0x0000,0x0044,0x35ef
63465  .hword 0x35f7,0x3601,0x3618,0x3628,0x3638,0x3641,0x3651,0x3661
63466  .hword 0x3671,0x0001,0x3681,0x3691,0x36a1,0x0000,0x0018,0x36b8
63467  .hword 0x000f,0x36c8,0x36d8,0x36e1,0x36f1,0x3701,0x3711,0x0000
63468  .hword 0x0014,0x3728,0x000f,0x3738,0x3748,0x3751,0x3761,0x3771
63469  .hword 0x3781,0x0000,0x0084,0x2948,0x0008,0x2958,0x2968,0x2978
63470  .hword 0x2988,0x2998,0x29a1,0x29b1,0x29c1,0x29d1,0x29e1,0x0000
63471  .hword 0x0013,0x29f8,0x000f,0x2a08,0x2a18,0x2a21,0x2a31,0x2a41
63472  .hword 0x2a51,0x0004,0x3798,0x0008,0x37a8,0x37b7,0x37c1,0x37d7
63473  .hword 0x37e1,0x37f8,0x3808,0x3811,0x3821,0x0006,0x3838,0x3848
63474  .hword 0x3858,0x3868,0x3878,0x3888,0x3898,0x38a1,0x38b1,0x0006
63475  .hword 0x38c8,0x38d8,0x38e8,0x38f8,0x3908,0x3918,0x3928,0x3931
63476  .hword 0x3941,0x0006,0x3958,0x3968,0x3978,0x3987,0x3991,0x39a7
63477  .hword 0x39b1,0x39c8,0x39d8,0x39e1,0x39f1,0x0006,0x3a08,0x0008
63478  .hword 0x3a18,0x3a27,0x3a31,0x3a47,0x3a51,0x3a68,0x3a78,0x3a81
63479  .hword 0x3a91,0x0006,0x3aa8,0x3ab8,0x3ac8,0x3ad8,0x3ae8,0x3af8
63480  .hword 0x3b08,0x3b11,0x3b21,0x0006,0x3b38,0x3b48,0x3b58,0x3b68
63481  .hword 0x3b78,0x3b88,0x3b98,0x3ba1,0x3bb1,0x0006,0x3bc8,0x3bd8
63482  .hword 0x3be8,0x3bf7,0x3c01,0x3c17,0x3c21,0x3c38,0x3c48,0x3c51
63483  .hword 0x3c61,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
63484  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
63485  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
63486  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
63487  .hword 0x3e21,0x0006,0x3e38,0x3e48,0x3e58,0x3e67,0x3e71,0x3e87
63488  .hword 0x3e91,0x3ea8,0x3eb8,0x3ec1,0x3ed1,0x0006,0x3ee8,0x0008
63489  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
63490  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
63491  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
63492  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x40a8,0x40b8
63493  .hword 0x40c8,0x40d7,0x40e1,0x40f7,0x4101,0x4118,0x4128,0x4131
63494  .hword 0x4141,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
63495  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
63496  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
63497  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
63498  .hword 0x3e21,0x0006,0x4158,0x4168,0x4178,0x4187,0x4191,0x41a7
63499  .hword 0x41b1,0x41c8,0x41d8,0x41e1,0x41f1,0x0006,0x3ee8,0x0008
63500  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
63501  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
63502  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
63503  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x4208,0x4218
63504  .hword 0x4228,0x4237,0x4241,0x4257,0x4261,0x4278,0x4288,0x4291
63505  .hword 0x42a1,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
63506  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
63507  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
63508  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
63509  .hword 0x3e21,0x0006,0x42b8,0x42c8,0x42d8,0x42e7,0x42f1,0x4307
63510  .hword 0x4311,0x4328,0x4338,0x4341,0x4351,0x0006,0x3ee8,0x0008
63511  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
63512  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
63513  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
63514  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x4368,0x4378
63515  .hword 0x4388,0x4397,0x43a1,0x43b7,0x43c1,0x43d8,0x43e8,0x43f1
63516  .hword 0x4401,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
63517  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
63518  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
63519  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
63520  .hword 0x3e21,0x0006,0x4418,0x4428,0x4438,0x4447,0x4451,0x4467
63521  .hword 0x4471,0x4488,0x4498,0x44a1,0x44b1,0x0006,0x3ee8,0x0008
63522  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
63523  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
63524  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
63525  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x44c8,0x44d8
63526  .hword 0x44e8,0x44f7,0x4501,0x4517,0x4521,0x4538,0x4548,0x4551
63527  .hword 0x4561,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
63528  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
63529  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
63530  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
63531  .hword 0x3e21,0x0006,0x4578,0x4588,0x4598,0x45a7,0x45b1,0x45c7
63532  .hword 0x45d1,0x45e8,0x45f8,0x4601,0x4611,0x0006,0x3ee8,0x0008
63533  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
63534  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
63535  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
63536  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x4628,0x4638
63537  .hword 0x4648,0x4657,0x4661,0x4677,0x4681,0x4698,0x46a8,0x46b1
63538  .hword 0x46c1,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
63539  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
63540  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
63541  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
63542  .hword 0x3e21,0x0006,0x46d8,0x46e8,0x46f8,0x4707,0x4711,0x4727
63543  .hword 0x4731,0x4748,0x4758,0x4761,0x4771,0x0006,0x3ee8,0x0008
63544  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
63545  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
63546  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
63547  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x4788,0x4798
63548  .hword 0x47a8,0x47b7,0x47c1,0x47d7,0x47e1,0x47f8,0x4808,0x4811
63549  .hword 0x4821,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
63550  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
63551  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
63552  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
63553  .hword 0x3e21,0x0006,0x4838,0x4848,0x4858,0x4867,0x4871,0x4887
63554  .hword 0x4891,0x48a8,0x48b8,0x48c1,0x48d1,0x0006,0x3ee8,0x0008
63555  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
63556  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
63557  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
63558  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x48e8,0x48f8
63559  .hword 0x4908,0x4917,0x4921,0x4937,0x4941,0x4958,0x4968,0x4971
63560  .hword 0x4981,0x0006,0x4991,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63561  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63562  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63563  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63564  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63565  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63566  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63567  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63568  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63569  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63570  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63571  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63572  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63573  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63574  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63575  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63576  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63577  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63578  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63579  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63580  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63581  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63582  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63583  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63584  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63585  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63586  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63587  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63588  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63589  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63590  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63591  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
63592  .hword 0x49b1,0x49a1,0x49c1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63593  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63594  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63595  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63596  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63597  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63598  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63599  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63600  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63601  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63602  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63603  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63604  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63605  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63606  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63607  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63608  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63609  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63610  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63611  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63612  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63613  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63614  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63615  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63616  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63617  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63618  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63619  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63620  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63621  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63622  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63623  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
63624  .hword 0x49e1,0x49d1,0x49f1,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63625  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63626  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63627  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63628  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63629  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63630  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63631  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63632  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63633  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63634  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63635  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63636  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63637  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63638  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63639  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63640  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63641  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63642  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63643  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63644  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63645  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63646  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63647  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63648  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63649  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63650  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63651  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63652  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63653  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63654  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63655  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
63656  .hword 0x4a11,0x4a01,0x4a21,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63657  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63658  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63659  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63660  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63661  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63662  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63663  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63664  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63665  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63666  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63667  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63668  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63669  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63670  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63671  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63672  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63673  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63674  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63675  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63676  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63677  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63678  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63679  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63680  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63681  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63682  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63683  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63684  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63685  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63686  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63687  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
63688  .hword 0x4a41,0x4a31,0x4a51,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63689  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63690  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63691  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63692  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63693  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63694  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63695  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63696  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63697  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63698  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63699  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63700  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63701  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63702  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63703  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63704  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63705  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63706  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63707  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63708  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63709  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63710  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63711  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63712  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63713  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63714  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63715  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63716  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63717  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63718  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63719  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
63720  .hword 0x4a71,0x4a61,0x4a81,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63721  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63722  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63723  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63724  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63725  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63726  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63727  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63728  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63729  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63730  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63731  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63732  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63733  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63734  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63735  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63736  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63737  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63738  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63739  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63740  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63741  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63742  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63743  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63744  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63745  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63746  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63747  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63748  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63749  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63750  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63751  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
63752  .hword 0x4aa1,0x4a91,0x4ab1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63753  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63754  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63755  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63756  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63757  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63758  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63759  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63760  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63761  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63762  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63763  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63764  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63765  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63766  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63767  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63768  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63769  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63770  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63771  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63772  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63773  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63774  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63775  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63776  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63777  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63778  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63779  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63780  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63781  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63782  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63783  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
63784  .hword 0x4ad1,0x4ac1,0x4ae1,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63785  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63786  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63787  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63788  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63789  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63790  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63791  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63792  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63793  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63794  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63795  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63796  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63797  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63798  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63799  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63800  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63801  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63802  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63803  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63804  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63805  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63806  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63807  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63808  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63809  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63810  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63811  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63812  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63813  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63814  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63815  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
63816  .hword 0x4b01,0x4af1,0x4b11,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63817  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63818  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63819  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63820  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63821  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63822  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63823  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63824  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63825  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63826  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63827  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63828  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63829  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63830  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63831  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63832  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63833  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63834  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63835  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63836  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63837  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63838  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63839  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63840  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63841  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63842  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63843  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63844  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63845  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63846  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63847  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
63848  .hword 0x4b31,0x4b21,0x4b41,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63849  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63850  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63851  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63852  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63853  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63854  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63855  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63856  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63857  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63858  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63859  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63860  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63861  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63862  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63863  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63864  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63865  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63866  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63867  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63868  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63869  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63870  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63871  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63872  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63873  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63874  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63875  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63876  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63877  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63878  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63879  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
63880  .hword 0x4b61,0x4b51,0x4b71,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63881  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63882  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63883  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63884  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63885  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63886  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63887  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63888  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63889  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63890  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63891  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63892  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63893  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63894  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63895  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63896  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63897  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63898  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63899  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63900  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63901  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63902  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63903  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63904  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63905  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63906  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63907  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63908  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63909  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63910  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63911  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
63912  .hword 0x4b91,0x4b81,0x4ba1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63913  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63914  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63915  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63916  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63917  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63918  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63919  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63920  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63921  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63922  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63923  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63924  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63925  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63926  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63927  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63928  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63929  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63930  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63931  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63932  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63933  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63934  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63935  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63936  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63937  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63938  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63939  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63940  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63941  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63942  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63943  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
63944  .hword 0x4bc1,0x4bb1,0x4bd1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63945  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63946  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63947  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63948  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63949  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63950  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63951  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63952  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63953  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63954  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63955  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63956  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63957  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63958  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63959  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63960  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63961  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63962  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63963  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63964  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63965  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63966  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63967  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63968  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63969  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63970  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63971  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63972  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63973  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63974  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63975  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
63976  .hword 0x4bf1,0x4be1,0x4c01,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63977  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63978  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63979  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63980  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63981  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63982  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63983  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63984  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63985  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63986  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63987  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63988  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63989  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63990  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63991  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63992  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63993  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63994  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63995  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63996  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63997  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63998  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
63999  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
64000  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
64001  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
64002  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
64003  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
64004  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
64005  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
64006  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
64007  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
64008  .hword 0x4c21,0x4c11,0x4c31,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64009  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64010  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64011  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64012  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64013  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64014  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64015  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64016  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64017  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64018  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64019  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64020  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64021  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64022  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64023  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64024  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64025  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64026  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64027  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64028  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64029  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64030  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64031  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64032  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64033  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64034  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64035  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64036  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64037  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64038  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64039  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
64040  .hword 0x4c51,0x4c41,0x4c61,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64041  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64042  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64043  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64044  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64045  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64046  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64047  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64048  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64049  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64050  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64051  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64052  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64053  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64054  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64055  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64056  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64057  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64058  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64059  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64060  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64061  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64062  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64063  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64064  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64065  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64066  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64067  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64068  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64069  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64070  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64071  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
64072  .hword 0x4c81,0x4c71,0x4c90,0x0100,0x0000,0x0100,0x4c90,0x0100
64073  .hword 0x0000,0x0100,0x4c90,0x0100,0x0000,0x0100,0x4c90,0x0100
64074  .hword 0x0000,0x0100,0x4c90,0x0100,0x0000,0x0100,0x4c90,0x0100
64075  .hword 0x0000,0x0100,0x4c90,0x0100,0x0000,0x0100,0x4c90,0x0100
64076  .hword 0x0000,0x0100,0x4ca8,0x0008,0x4cb8,0x4cc7,0x4cd1,0x4ce7
64077  .hword 0x4cf1,0x4d08,0x4d18,0x4d21,0x4d31,0x4d41,0x4d51,0x4d61
64078  .hword 0x0003,0x4d78,0x0008,0x4d88,0x4d98,0x4da8,0x4db8,0x4dc8
64079  .hword 0x4dd1,0x4de1,0x4df1,0x4e01,0x4e11,0x0003,0x4e28,0x0008
64080  .hword 0x4e38,0x4e48,0x4e58,0x4e68,0x4e78,0x4e81,0x4e91,0x4ea1
64081  .hword 0x4eb1,0x4ec1,0x0003,0x4ed8,0x0008,0x4ee8,0x4ef8,0x4f08
64082  .hword 0x4f18,0x4f28,0x4f31,0x4f41,0x4f51,0x4f61,0x4f71,0x0003
64083  .hword 0x4f88,0x4f97,0x4fa1,0x4fb8,0x4fc7,0x4fd1,0x4fe7,0x4ff1
64084  .hword 0x5008,0x5018,0x5021,0x5031,0x0000,0x0016,0x5048,0x5058
64085  .hword 0x5068,0x5078,0x5088,0x5091,0x50a1,0x0000,0x0016,0x50b8
64086  .hword 0x50c8,0x50d8,0x50e8,0x50f8,0x5101,0x5111,0x0006,0x5128
64087  .hword 0x0008,0x5138,0x5148,0x5158,0x5168,0x5178,0x5181,0x5191
64088  .hword 0x51a1,0x51b1,0x51c1,0x0003,0x4ca8,0x0008,0x4cb8,0x4cc7
64089  .hword 0x4cd1,0x4ce7,0x4cf1,0x4d08,0x4d18,0x4d21,0x4d31,0x4d41
64090  .hword 0x4d51,0x4d61,0x0003,0x4d78,0x0008,0x4d88,0x4d98,0x4da8
64091  .hword 0x4db8,0x4dc8,0x4dd1,0x4de1,0x4df1,0x4e01,0x4e11,0x0003
64092  .hword 0x4e28,0x0008,0x4e38,0x4e48,0x4e58,0x4e68,0x4e78,0x4e81
64093  .hword 0x4e91,0x4ea1,0x4eb1,0x4ec1,0x0003,0x4ed8,0x0008,0x4ee8
64094  .hword 0x4ef8,0x4f08,0x4f18,0x4f28,0x4f31,0x4f41,0x4f51,0x4f61
64095  .hword 0x4f71,0x0003,0x4f88,0x4f97,0x4fa1,0x4fb8,0x4fc7,0x4fd1
64096  .hword 0x4fe7,0x4ff1,0x5008,0x5018,0x5021,0x5031,0x0000,0x0016
64097  .hword 0x5048,0x5058,0x5068,0x5078,0x5088,0x5091,0x50a1,0x0000
64098  .hword 0x0016,0x50b8,0x50c8,0x50d8,0x50e8,0x50f8,0x5101,0x5111
64099  .hword 0x0006,0x5128,0x0008,0x5138,0x5148,0x5158,0x5168,0x5178
64100  .hword 0x5181,0x5191,0x51a1,0x51b1,0x51c1,0x0003,0x4ca8,0x0008
64101  .hword 0x4cb8,0x4cc7,0x4cd1,0x4ce7,0x4cf1,0x4d08,0x4d18,0x4d21
64102  .hword 0x4d31,0x4d41,0x4d51,0x4d61,0x0003,0x4d78,0x0008,0x4d88
64103  .hword 0x4d98,0x4da8,0x4db8,0x4dc8,0x4dd1,0x4de1,0x4df1,0x4e01
64104  .hword 0x4e11,0x0003,0x4e28,0x0008,0x4e38,0x4e48,0x4e58,0x4e68
64105  .hword 0x4e78,0x4e81,0x4e91,0x4ea1,0x4eb1,0x4ec1,0x0003,0x4ed8
64106  .hword 0x0008,0x4ee8,0x4ef8,0x4f08,0x4f18,0x4f28,0x4f31,0x4f41
64107  .hword 0x4f51,0x4f61,0x4f71,0x0003,0x4f88,0x4f97,0x4fa1,0x4fb8
64108  .hword 0x4fc7,0x4fd1,0x4fe7,0x4ff1,0x5008,0x5018,0x5021,0x5031
64109  .hword 0x0000,0x0016,0x5048,0x5058,0x5068,0x5078,0x5088,0x5091
64110  .hword 0x50a1,0x0000,0x0016,0x50b8,0x50c8,0x50d8,0x50e8,0x50f8
64111  .hword 0x5101,0x5111,0x0006,0x5128,0x0008,0x5138,0x5148,0x5158
64112  .hword 0x5168,0x5178,0x5181,0x5191,0x51a1,0x51b1,0x51c1,0x0003
64113  .hword 0x4ca8,0x0008,0x4cb8,0x4cc7,0x4cd1,0x4ce7,0x4cf1,0x4d08
64114  .hword 0x4d18,0x4d21,0x4d31,0x4d41,0x4d51,0x4d61,0x0003,0x4d78
64115  .hword 0x0008,0x4d88,0x4d98,0x4da8,0x4db8,0x4dc8,0x4dd1,0x4de1
64116  .hword 0x4df1,0x4e01,0x4e11,0x0003,0x4e28,0x0008,0x4e38,0x4e48
64117  .hword 0x4e58,0x4e68,0x4e78,0x4e81,0x4e91,0x4ea1,0x4eb1,0x4ec1
64118  .hword 0x0003,0x4ed8,0x0008,0x4ee8,0x4ef8,0x4f08,0x4f18,0x4f28
64119  .hword 0x4f31,0x4f41,0x4f51,0x4f61,0x4f71,0x0003,0x4f88,0x4f97
64120  .hword 0x4fa1,0x4fb8,0x4fc7,0x4fd1,0x4fe7,0x4ff1,0x5008,0x5018
64121  .hword 0x5021,0x5031,0x0000,0x0016,0x5048,0x5058,0x5068,0x5078
64122  .hword 0x5088,0x5091,0x50a1,0x0000,0x0016,0x50b8,0x50c8,0x50d8
64123  .hword 0x50e8,0x50f8,0x5101,0x5111,0x0006,0x5128,0x0008,0x5138
64124  .hword 0x5148,0x5158,0x5168,0x5178,0x5181,0x5191,0x51a1,0x51b1
64125  .hword 0x51c1,0x0003,0x4ca8,0x0008,0x4cb8,0x4cc7,0x4cd1,0x4ce7
64126  .hword 0x4cf1,0x4d08,0x4d18,0x4d21,0x4d31,0x4d41,0x4d51,0x4d61
64127  .hword 0x0003,0x4d78,0x0008,0x4d88,0x4d98,0x4da8,0x4db8,0x4dc8
64128  .hword 0x4dd1,0x4de1,0x4df1,0x4e01,0x4e11,0x0003,0x4e28,0x0008
64129  .hword 0x4e38,0x4e48,0x4e58,0x4e68,0x4e78,0x4e81,0x4e91,0x4ea1
64130  .hword 0x4eb1,0x4ec1,0x0003,0x4ed8,0x0008,0x4ee8,0x4ef8,0x4f08
64131  .hword 0x4f18,0x4f28,0x4f31,0x4f41,0x4f51,0x4f61,0x4f71,0x0003
64132  .hword 0x4f88,0x4f97,0x4fa1,0x4fb8,0x4fc7,0x4fd1,0x4fe7,0x4ff1
64133  .hword 0x5008,0x5018,0x5021,0x5031,0x0000,0x0016,0x5048,0x5058
64134  .hword 0x5068,0x5078,0x5088,0x5091,0x50a1,0x0000,0x0016,0x50b8
64135  .hword 0x50c8,0x50d8,0x50e8,0x50f8,0x5101,0x5111,0x0006,0x5128
64136  .hword 0x0008,0x5138,0x5148,0x5158,0x5168,0x5178,0x5181,0x5191
64137  .hword 0x51a1,0x51b1,0x51c1,0x0003,0x4ca8,0x0008,0x4cb8,0x4cc7
64138  .hword 0x4cd1,0x4ce7,0x4cf1,0x4d08,0x4d18,0x4d21,0x4d31,0x4d41
64139  .hword 0x4d51,0x4d61,0x0003,0x4d78,0x0008,0x4d88,0x4d98,0x4da8
64140  .hword 0x4db8,0x4dc8,0x4dd1,0x4de1,0x4df1,0x4e01,0x4e11,0x0003
64141  .hword 0x4e28,0x0008,0x4e38,0x4e48,0x4e58,0x4e68,0x4e78,0x4e81
64142  .hword 0x4e91,0x4ea1,0x4eb1,0x4ec1,0x0003,0x4ed8,0x0008,0x4ee8
64143  .hword 0x4ef8,0x4f08,0x4f18,0x4f28,0x4f31,0x4f41,0x4f51,0x4f61
64144  .hword 0x4f71,0x0003,0x4f88,0x4f97,0x4fa1,0x4fb8,0x4fc7,0x4fd1
64145  .hword 0x4fe7,0x4ff1,0x5008,0x5018,0x5021,0x5031,0x0000,0x0016
64146  .hword 0x5048,0x5058,0x5068,0x5078,0x5088,0x5091,0x50a1,0x0000
64147  .hword 0x0016,0x50b8,0x50c8,0x50d8,0x50e8,0x50f8,0x5101,0x5111
64148  .hword 0x0006,0x5128,0x0008,0x5138,0x5148,0x5158,0x5168,0x5178
64149  .hword 0x5181,0x5191,0x51a1,0x51b1,0x51c1,0x0003,0x4ca8,0x0008
64150  .hword 0x4cb8,0x4cc7,0x4cd1,0x4ce7,0x4cf1,0x4d08,0x4d18,0x4d21
64151  .hword 0x4d31,0x4d41,0x4d51,0x4d61,0x0003,0x4d78,0x0008,0x4d88
64152  .hword 0x4d98,0x4da8,0x4db8,0x4dc8,0x4dd1,0x4de1,0x4df1,0x4e01
64153  .hword 0x4e11,0x0003,0x4e28,0x0008,0x4e38,0x4e48,0x4e58,0x4e68
64154  .hword 0x4e78,0x4e81,0x4e91,0x4ea1,0x4eb1,0x4ec1,0x0003,0x4ed8
64155  .hword 0x0008,0x4ee8,0x4ef8,0x4f08,0x4f18,0x4f28,0x4f31,0x4f41
64156  .hword 0x4f51,0x4f61,0x4f71,0x0003,0x4f88,0x4f97,0x4fa1,0x4fb8
64157  .hword 0x4fc7,0x4fd1,0x4fe7,0x4ff1,0x5008,0x5018,0x5021,0x5031
64158  .hword 0x0000,0x0016,0x5048,0x5058,0x5068,0x5078,0x5088,0x5091
64159  .hword 0x50a1,0x0000,0x0016,0x50b8,0x50c8,0x50d8,0x50e8,0x50f8
64160  .hword 0x5101,0x5111,0x0006,0x5128,0x0008,0x5138,0x5148,0x5158
64161  .hword 0x5168,0x5178,0x5181,0x5191,0x51a1,0x51b1,0x51c1,0x0003
64162  .hword 0x4ca8,0x0008,0x4cb8,0x4cc7,0x4cd1,0x4ce7,0x4cf1,0x4d08
64163  .hword 0x4d18,0x4d21,0x4d31,0x4d41,0x4d51,0x4d61,0x0003,0x4d78
64164  .hword 0x0008,0x4d88,0x4d98,0x4da8,0x4db8,0x4dc8,0x4dd1,0x4de1
64165  .hword 0x4df1,0x4e01,0x4e11,0x0003,0x4e28,0x0008,0x4e38,0x4e48
64166  .hword 0x4e58,0x4e68,0x4e78,0x4e81,0x4e91,0x4ea1,0x4eb1,0x4ec1
64167  .hword 0x0003,0x4ed8,0x0008,0x4ee8,0x4ef8,0x4f08,0x4f18,0x4f28
64168  .hword 0x4f31,0x4f41,0x4f51,0x4f61,0x4f71,0x0003,0x4f88,0x51d7
64169  .hword 0x51e1,0x4fb8,0x4fc7,0x4fd1,0x4fe7,0x4ff1,0x5008,0x5018
64170  .hword 0x5021,0x5031,0x0000,0x0016,0x5048,0x5058,0x5068,0x5078
64171  .hword 0x5088,0x5091,0x50a1,0x0000,0x0016,0x50b8,0x50c8,0x50d8
64172  .hword 0x50e8,0x50f8,0x5101,0x5111,0x0006,0x5128,0x0008,0x5138
64173  .hword 0x5148,0x5158,0x5168,0x5178,0x5181,0x5191,0x51a1,0x51b1
64174  .hword 0x51c1,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
64175  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
64176  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
64177  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
64178  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
64179  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
64180  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
64181  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
64182  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
64183  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
64184  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
64185  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
64186  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
64187  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
64188  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
64189  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
64190  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
64191  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
64192  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
64193  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
64194  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
64195  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
64196  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
64197  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
64198  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
64199  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
64200  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
64201  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
64202  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
64203  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
64204  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
64205  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
64206  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
64207  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
64208  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
64209  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
64210  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
64211  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
64212  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
64213  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
64214  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
64215  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
64216  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
64217  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
64218  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
64219  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
64220  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
64221  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
64222  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
64223  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
64224  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
64225  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
64226  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
64227  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
64228  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
64229  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
64230  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
64231  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
64232  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
64233  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
64234  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
64235  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
64236  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
64237  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
64238  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
64239  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
64240  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
64241  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
64242  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
64243  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
64244  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
64245  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
64246  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
64247  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
64248  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
64249  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
64250  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
64251  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
64252  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
64253  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
64254  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
64255  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
64256  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
64257  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
64258  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
64259  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
64260  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
64261  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
64262  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
64263  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
64264  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x5767,0x5771
64265  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
64266  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
64267  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
64268  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
64269  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
64270  .hword 0x5751,0x0003,0x7080,0x1000,0x5788,0x0008,0x5798,0x57a7
64271  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
64272  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
64273  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
64274  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
64275  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
64276  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
64277  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
64278  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
64279  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
64280  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
64281  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
64282  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
64283  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
64284  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
64285  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
64286  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
64287  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
64288  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
64289  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
64290  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
64291  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
64292  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
64293  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
64294  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
64295  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
64296  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
64297  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
64298  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
64299  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
64300  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
64301  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
64302  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
64303  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
64304  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
64305  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
64306  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
64307  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
64308  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
64309  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
64310  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
64311  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
64312  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
64313  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
64314  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
64315  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
64316  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
64317  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
64318  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
64319  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
64320  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
64321  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
64322  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
64323  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
64324  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
64325  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
64326  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
64327  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
64328  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
64329  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
64330  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
64331  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
64332  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
64333  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
64334  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
64335  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
64336  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
64337  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
64338  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
64339  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
64340  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
64341  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
64342  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
64343  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
64344  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
64345  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
64346  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
64347  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
64348  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
64349  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
64350  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
64351  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
64352  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
64353  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
64354  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
64355  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
64356  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
64357  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
64358  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
64359  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
64360  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
64361  .hword 0x5cf7,0x5d01,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
64362  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
64363  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
64364  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
64365  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
64366  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5d18,0x0008,0x5d28,0x5d37
64367  .hword 0x5d41,0x5d57,0x5d61,0x5d78,0x5d88,0x5d91,0x5da1,0x5db1
64368  .hword 0x5dc1,0x5dd1,0x0003,0x5de8,0x0008,0x5df8,0x5e08,0x5e18
64369  .hword 0x5e28,0x5e38,0x5e41,0x5e51,0x5e61,0x5e71,0x5e81,0x0003
64370  .hword 0x5e98,0x0008,0x5ea8,0x5eb8,0x5ec8,0x5ed8,0x5ee8,0x5ef1
64371  .hword 0x5f01,0x5f11,0x5f21,0x5f31,0x0003,0x5f48,0x0008,0x5f58
64372  .hword 0x5f68,0x5f78,0x5f88,0x5f98,0x5fa1,0x5fb1,0x5fc1,0x5fd1
64373  .hword 0x5fe1,0x0003,0x5ff8,0x6007,0x6011,0x6028,0x6037,0x6041
64374  .hword 0x6057,0x6061,0x6078,0x6088,0x6091,0x60a1,0x0006,0x60b8
64375  .hword 0x60c8,0x60d8,0x60e8,0x60f8,0x6108,0x6118,0x6121,0x6131
64376  .hword 0x000e,0x6148,0x6158,0x6168,0x6178,0x6188,0x6198,0x61a1
64377  .hword 0x61b1,0x0006,0x61c8,0x0008,0x61d8,0x61e8,0x61f8,0x6208
64378  .hword 0x6218,0x6221,0x6231,0x6241,0x6251,0x6261,0x0003,0x5d18
64379  .hword 0x0008,0x5d28,0x5d37,0x5d41,0x5d57,0x5d61,0x5d78,0x5d88
64380  .hword 0x5d91,0x5da1,0x5db1,0x5dc1,0x5dd1,0x0003,0x5de8,0x0008
64381  .hword 0x5df8,0x5e08,0x5e18,0x5e28,0x5e38,0x5e41,0x5e51,0x5e61
64382  .hword 0x5e71,0x5e81,0x0003,0x5e98,0x0008,0x5ea8,0x5eb8,0x5ec8
64383  .hword 0x5ed8,0x5ee8,0x5ef1,0x5f01,0x5f11,0x5f21,0x5f31,0x0003
64384  .hword 0x5f48,0x0008,0x5f58,0x5f68,0x5f78,0x5f88,0x5f98,0x5fa1
64385  .hword 0x5fb1,0x5fc1,0x5fd1,0x5fe1,0x0003,0x5ff8,0x6007,0x6011
64386  .hword 0x6028,0x6037,0x6041,0x6057,0x6061,0x6078,0x6088,0x6091
64387  .hword 0x60a1,0x0006,0x60b8,0x60c8,0x60d8,0x60e8,0x60f8,0x6108
64388  .hword 0x6118,0x6121,0x6131,0x000e,0x6148,0x6158,0x6168,0x6178
64389  .hword 0x6188,0x6198,0x61a1,0x61b1,0x0006,0x61c8,0x0008,0x61d8
64390  .hword 0x61e8,0x61f8,0x6208,0x6218,0x6221,0x6231,0x6241,0x6251
64391  .hword 0x6261,0x0003,0x5d18,0x0008,0x5d28,0x5d37,0x5d41,0x5d57
64392  .hword 0x5d61,0x5d78,0x5d88,0x5d91,0x5da1,0x5db1,0x5dc1,0x5dd1
64393  .hword 0x0003,0x5de8,0x0008,0x5df8,0x5e08,0x5e18,0x5e28,0x5e38
64394  .hword 0x5e41,0x5e51,0x5e61,0x5e71,0x5e81,0x0003,0x5e98,0x0008
64395  .hword 0x5ea8,0x5eb8,0x5ec8,0x5ed8,0x5ee8,0x5ef1,0x5f01,0x5f11
64396  .hword 0x5f21,0x5f31,0x0003,0x5f48,0x0008,0x5f58,0x5f68,0x5f78
64397  .hword 0x5f88,0x5f98,0x5fa1,0x5fb1,0x5fc1,0x5fd1,0x5fe1,0x0003
64398  .hword 0x5ff8,0x6007,0x6011,0x6028,0x6037,0x6041,0x6057,0x6061
64399  .hword 0x6078,0x6088,0x6091,0x60a1,0x0006,0x60b8,0x60c8,0x60d8
64400  .hword 0x60e8,0x60f8,0x6108,0x6118,0x6121,0x6131,0x000e,0x6148
64401  .hword 0x6158,0x6168,0x6178,0x6188,0x6198,0x61a1,0x61b1,0x0006
64402  .hword 0x61c8,0x0008,0x61d8,0x61e8,0x61f8,0x6208,0x6218,0x6221
64403  .hword 0x6231,0x6241,0x6251,0x6261,0x0003,0x5d18,0x0008,0x5d28
64404  .hword 0x5d37,0x5d41,0x5d57,0x5d61,0x5d78,0x5d88,0x5d91,0x5da1
64405  .hword 0x5db1,0x5dc1,0x5dd1,0x0003,0x5de8,0x0008,0x5df8,0x5e08
64406  .hword 0x5e18,0x5e28,0x5e38,0x5e41,0x5e51,0x5e61,0x5e71,0x5e81
64407  .hword 0x0003,0x5e98,0x0008,0x5ea8,0x5eb8,0x5ec8,0x5ed8,0x5ee8
64408  .hword 0x5ef1,0x5f01,0x5f11,0x5f21,0x5f31,0x0003,0x5f48,0x0008
64409  .hword 0x5f58,0x5f68,0x5f78,0x5f88,0x5f98,0x5fa1,0x5fb1,0x5fc1
64410  .hword 0x5fd1,0x5fe1,0x0003,0x5ff8,0x6007,0x6011,0x6028,0x6037
64411  .hword 0x6041,0x6057,0x6061,0x6078,0x6088,0x6091,0x60a1,0x0006
64412  .hword 0x60b8,0x60c8,0x60d8,0x60e8,0x60f8,0x6108,0x6118,0x6121
64413  .hword 0x6131,0x000e,0x6148,0x6158,0x6168,0x6178,0x6188,0x6198
64414  .hword 0x61a1,0x61b1,0x0006,0x61c8,0x0008,0x61d8,0x61e8,0x61f8
64415  .hword 0x6208,0x6218,0x6221,0x6231,0x6241,0x6251,0x6261,0x0003
64416  .hword 0x5d18,0x0008,0x5d28,0x5d37,0x5d41,0x5d57,0x5d61,0x5d78
64417  .hword 0x5d88,0x5d91,0x5da1,0x5db1,0x5dc1,0x5dd1,0x0003,0x5de8
64418  .hword 0x0008,0x5df8,0x5e08,0x5e18,0x5e28,0x5e38,0x5e41,0x5e51
64419  .hword 0x5e61,0x5e71,0x5e81,0x0003,0x5e98,0x0008,0x5ea8,0x5eb8
64420  .hword 0x5ec8,0x5ed8,0x5ee8,0x5ef1,0x5f01,0x5f11,0x5f21,0x5f31
64421  .hword 0x0003,0x5f48,0x0008,0x5f58,0x5f68,0x5f78,0x5f88,0x5f98
64422  .hword 0x5fa1,0x5fb1,0x5fc1,0x5fd1,0x5fe1,0x0003,0x5ff8,0x6007
64423  .hword 0x6011,0x6028,0x6037,0x6041,0x6057,0x6061,0x6078,0x6088
64424  .hword 0x6091,0x60a1,0x0006,0x60b8,0x60c8,0x60d8,0x60e8,0x60f8
64425  .hword 0x6108,0x6118,0x6121,0x6131,0x000e,0x6148,0x6158,0x6168
64426  .hword 0x6178,0x6188,0x6198,0x61a1,0x61b1,0x0006,0x61c8,0x0008
64427  .hword 0x61d8,0x61e8,0x61f8,0x6208,0x6218,0x6221,0x6231,0x6241
64428  .hword 0x6251,0x6261,0x0003,0x5d18,0x0008,0x5d28,0x5d37,0x5d41
64429  .hword 0x5d57,0x5d61,0x5d78,0x5d88,0x5d91,0x5da1,0x5db1,0x5dc1
64430  .hword 0x5dd1,0x0003,0x5de8,0x0008,0x5df8,0x5e08,0x5e18,0x5e28
64431  .hword 0x5e38,0x5e41,0x5e51,0x5e61,0x5e71,0x5e81,0x0003,0x5e98
64432  .hword 0x0008,0x5ea8,0x5eb8,0x5ec8,0x5ed8,0x5ee8,0x5ef1,0x5f01
64433  .hword 0x5f11,0x5f21,0x5f31,0x0003,0x5f48,0x0008,0x5f58,0x5f68
64434  .hword 0x5f78,0x5f88,0x5f98,0x5fa1,0x5fb1,0x5fc1,0x5fd1,0x5fe1
64435  .hword 0x0003,0x5ff8,0x6007,0x6011,0x6028,0x6037,0x6041,0x6057
64436  .hword 0x6061,0x6078,0x6088,0x6091,0x60a1,0x0006,0x60b8,0x60c8
64437  .hword 0x60d8,0x60e8,0x60f8,0x6108,0x6118,0x6121,0x6131,0x000e
64438  .hword 0x6148,0x6158,0x6168,0x6178,0x6188,0x6198,0x61a1,0x61b1
64439  .hword 0x0006,0x61c8,0x0008,0x61d8,0x61e8,0x61f8,0x6208,0x6218
64440  .hword 0x6221,0x6231,0x6241,0x6251,0x6261,0x0003,0x5d18,0x0008
64441  .hword 0x5d28,0x5d37,0x5d41,0x5d57,0x5d61,0x5d78,0x5d88,0x5d91
64442  .hword 0x5da1,0x5db1,0x5dc1,0x5dd1,0x0003,0x5de8,0x0008,0x5df8
64443  .hword 0x5e08,0x5e18,0x5e28,0x5e38,0x5e41,0x5e51,0x5e61,0x5e71
64444  .hword 0x5e81,0x0003,0x5e98,0x0008,0x5ea8,0x5eb8,0x5ec8,0x5ed8
64445  .hword 0x5ee8,0x5ef1,0x5f01,0x5f11,0x5f21,0x5f31,0x0003,0x5f48
64446  .hword 0x0008,0x5f58,0x5f68,0x5f78,0x5f88,0x5f98,0x5fa1,0x5fb1
64447  .hword 0x5fc1,0x5fd1,0x5fe1,0x0003,0x5ff8,0x6007,0x6011,0x6028
64448  .hword 0x6037,0x6041,0x6057,0x6061,0x6078,0x6088,0x6091,0x60a1
64449  .hword 0x0006,0x60b8,0x60c8,0x60d8,0x60e8,0x60f8,0x6108,0x6118
64450  .hword 0x6121,0x6131,0x000e,0x6148,0x6158,0x6168,0x6178,0x6188
64451  .hword 0x6198,0x61a1,0x61b1,0x0006,0x61c8,0x0008,0x61d8,0x61e8
64452  .hword 0x61f8,0x6208,0x6218,0x6221,0x6231,0x6241,0x6251,0x6261
64453  .hword 0x0003,0x5d18,0x0008,0x5d28,0x5d37,0x5d41,0x5d57,0x5d61
64454  .hword 0x5d78,0x5d88,0x5d91,0x5da1,0x5db1,0x5dc1,0x5dd1,0x0003
64455  .hword 0x5de8,0x0008,0x5df8,0x5e08,0x5e18,0x5e28,0x5e38,0x5e41
64456  .hword 0x5e51,0x5e61,0x5e71,0x5e81,0x0003,0x5e98,0x0008,0x5ea8
64457  .hword 0x5eb8,0x5ec8,0x5ed8,0x5ee8,0x5ef1,0x5f01,0x5f11,0x5f21
64458  .hword 0x5f31,0x0003,0x5f48,0x0008,0x5f58,0x5f68,0x5f78,0x5f88
64459  .hword 0x5f98,0x5fa1,0x5fb1,0x5fc1,0x5fd1,0x5fe1,0x0003,0x5ff8
64460  .hword 0x6277,0x6281,0x6028,0x6037,0x6041,0x6057,0x6061,0x6078
64461  .hword 0x6088,0x6091,0x60a1,0x0006,0x60b8,0x60c8,0x60d8,0x60e8
64462  .hword 0x60f8,0x6108,0x6118,0x6121,0x6131,0x000e,0x6148,0x6158
64463  .hword 0x6168,0x6178,0x6188,0x6198,0x61a1,0x61b1,0x0006,0x61c8
64464  .hword 0x0008,0x61d8,0x61e8,0x61f8,0x6208,0x6218,0x6221,0x6231
64465  .hword 0x6241,0x6251,0x6261,0x0003,0x6298,0x0008,0x62a8,0x62b7
64466  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
64467  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
64468  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
64469  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
64470  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
64471  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
64472  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
64473  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
64474  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
64475  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
64476  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
64477  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
64478  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
64479  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
64480  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
64481  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
64482  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
64483  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
64484  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
64485  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
64486  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
64487  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
64488  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
64489  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
64490  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
64491  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
64492  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
64493  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
64494  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
64495  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
64496  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
64497  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
64498  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
64499  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
64500  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
64501  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
64502  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
64503  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
64504  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
64505  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
64506  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
64507  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
64508  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
64509  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
64510  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
64511  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
64512  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
64513  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
64514  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
64515  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
64516  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
64517  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
64518  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
64519  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
64520  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
64521  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
64522  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
64523  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
64524  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
64525  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
64526  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
64527  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
64528  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
64529  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
64530  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
64531  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
64532  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
64533  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
64534  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
64535  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
64536  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
64537  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
64538  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
64539  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
64540  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
64541  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
64542  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
64543  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
64544  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
64545  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
64546  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
64547  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
64548  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
64549  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
64550  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
64551  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
64552  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
64553  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
64554  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
64555  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
64556  .hword 0x6807,0x6811,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
64557  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
64558  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
64559  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
64560  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
64561  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6828,0x6838,0x6848,0x6858
64562  .hword 0x6868,0x6878,0x6888,0x6898,0x68a8,0x68b8,0x68c8,0x68d8
64563  .hword 0x68e8,0x68f8,0x6908,0x6918,0x6928,0x6938,0x6948,0x6958
64564  .hword 0x6968,0x6978,0x6988,0x6998,0x000f,0x69a8,0x69b8,0x69c8
64565  .hword 0x69d8,0x69e8,0x69f1,0x6a01,0x0006,0x6a18,0x6a28,0x6a38
64566  .hword 0x6a48,0x6a58,0x6a68,0x6a78,0x6a88,0x6a98,0x6aa8,0x6ab8
64567  .hword 0x6ac8,0x6ad8,0x6ae8,0x6af8,0x6b08,0x6b18,0x6b28,0x6b38
64568  .hword 0x6b48,0x6b58,0x6b68,0x6b78,0x6b88,0x000f,0x6b98,0x6ba8
64569  .hword 0x6bb8,0x6bc8,0x6bd8,0x6be1,0x6bf1,0x0006,0x6c08,0x6c18
64570  .hword 0x6c28,0x6c38,0x6868,0x6878,0x6888,0x6898,0x6c48,0x6c58
64571  .hword 0x6c68,0x6c78,0x68e8,0x68f8,0x6908,0x6918,0x6c88,0x6c98
64572  .hword 0x6ca8,0x6cb8,0x6968,0x6978,0x6988,0x6998,0x000f,0x6cc8
64573  .hword 0x6cd8,0x6ce8,0x6cf8,0x6d08,0x6d11,0x6d21,0x0006,0x6d38
64574  .hword 0x6d48,0x6d58,0x6d68,0x6a58,0x6a68,0x6a78,0x6a88,0x6d78
64575  .hword 0x6d88,0x6d98,0x6da8,0x6ad8,0x6ae8,0x6af8,0x6b08,0x6db8
64576  .hword 0x6dc8,0x6dd8,0x6de8,0x6b58,0x6b68,0x6b78,0x6b88,0x000f
64577  .hword 0x6df8,0x6e08,0x6e18,0x6e28,0x6e38,0x6e41,0x6e51,0x0006
64578  .hword 0x6c08,0x6c18,0x6e68,0x6c38,0x6868,0x6878,0x6888,0x6898
64579  .hword 0x6c48,0x6c58,0x6e78,0x6c78,0x68e8,0x68f8,0x6908,0x6918
64580  .hword 0x6c88,0x6c98,0x6e88,0x6cb8,0x6968,0x6978,0x6988,0x6998
64581  .hword 0x000f,0x6e98,0x6ea8,0x6eb8,0x6ec8,0x6ed8,0x6ee1,0x6ef1
64582  .hword 0x0006,0x6d38,0x6d48,0x6f08,0x6d68,0x6a58,0x6a68,0x6a78
64583  .hword 0x6a88,0x6d78,0x6d88,0x6f18,0x6da8,0x6ad8,0x6ae8,0x6af8
64584  .hword 0x6b08,0x6db8,0x6dc8,0x6f28,0x6de8,0x6b58,0x6b68,0x6b78
64585  .hword 0x6b88,0x000f,0x6f38,0x6f48,0x6f58,0x6f68,0x6f78,0x6f81
64586  .hword 0x6f91,0x0006,0x6c08,0x6c18,0x6e68,0x6c38,0x6868,0x6878
64587  .hword 0x6888,0x6898,0x6c48,0x6c58,0x6e78,0x6c78,0x68e8,0x68f8
64588  .hword 0x6908,0x6918,0x6c88,0x6c98,0x6e88,0x6cb8,0x6968,0x6978
64589  .hword 0x6988,0x6998,0x000f,0x6fa8,0x6fb8,0x6fc8,0x6fd8,0x6fe8
64590  .hword 0x6ff1,0x7001,0x0006,0x6d38,0x6d48,0x6f08,0x6d68,0x6a58
64591  .hword 0x6a68,0x6a78,0x6a88,0x6d78,0x6d88,0x6f18,0x6da8,0x6ad8
64592  .hword 0x6ae8,0x6af8,0x6b08,0x6db8,0x6dc8,0x6f28,0x6de8,0x6b58
64593  .hword 0x6b68,0x6b78,0x6b88,0x000f,0x7018,0x7028,0x7038,0x7048
64594  .hword 0x7058,0x7061,0x7071,0x0006,0x6c08,0x6c18,0x6e68,0x6c38
64595  .hword 0x6868,0x6878,0x6888,0x6898,0x6c48,0x6c58,0x6e78,0x6c78
64596  .hword 0x68e8,0x68f8,0x6908,0x6918,0x6c88,0x6c98,0x6e88,0x6cb8
64597  .hword 0x6968,0x6978,0x6988,0x6998,0x0000,0x0040,0x6d38,0x6d48
64598  .hword 0x6f08,0x6d68,0x6a58,0x6a68,0x6a78,0x6a88,0x6d78,0x6d88
64599  .hword 0x6f18,0x6da8,0x6ad8,0x6ae8,0x6af8,0x6b08,0x6db8,0x6dc8
64600  .hword 0x6f28,0x6de8,0x6b58,0x6b68,0x6b78,0x6b88,0x0000,0x0040
64601  .hword 0x6c08,0x6c18,0x6e68,0x6c38,0x6868,0x6878,0x6888,0x6898
64602  .hword 0x6c48,0x6c58,0x6e78,0x6c78,0x68e8,0x68f8,0x6908,0x6918
64603  .hword 0x6c88,0x6c98,0x6e88,0x6cb8,0x6968,0x6978,0x6988,0x6998
64604  .hword 0x0000,0x0040,0x6d38,0x6d48,0x6f08,0x6d68,0x6a58,0x6a68
64605  .hword 0x6a78,0x6a88,0x6d78,0x6d88,0x6f18,0x6da8,0x6ad8,0x6ae8
64606  .hword 0x6af8,0x6b08,0x6db8,0x6dc8,0x6f28,0x6de8,0x6b58,0x6b68
64607  .hword 0x6b78,0x6b88,0x0000,0x0040,0x6c08,0x6c18,0x6e68,0x6c38
64608  .hword 0x6868,0x6878,0x6888,0x6898,0x6c48,0x6c58,0x6e78,0x6c78
64609  .hword 0x68e8,0x68f8,0x6908,0x6918,0x6c88,0x6c98,0x6e88,0x6cb8
64610  .hword 0x6968,0x6978,0x6988,0x6998,0x0000,0x0040,0x6d38,0x6d48
64611  .hword 0x6f08,0x6d68,0x6a58,0x6a68,0x6a78,0x6a88,0x6d78,0x6d88
64612  .hword 0x6f18,0x6da8,0x6ad8,0x6ae8,0x6af8,0x6b08,0x6db8,0x6dc8
64613  .hword 0x6f28,0x6de8,0x6b58,0x6b68,0x6b78,0x6b88,0x0000,0x0040
64614  .hword 0x6c08,0x6c18,0x6e68,0x6c38,0x6868,0x6878,0x6888,0x6898
64615  .hword 0x6c48,0x6c58,0x6e78,0x6c78,0x68e8,0x68f8,0x6908,0x6918
64616  .hword 0x6c88,0x6c98,0x6e88,0x6cb8,0x6968,0x6978,0x6988,0x6998
64617  .hword 0x0000,0x0040,0x6d38,0x6d48,0x6f08,0x6d68,0x6a58,0x6a68
64618  .hword 0x6a78,0x6a88,0x6d78,0x6d88,0x6f18,0x6da8,0x6ad8,0x6ae8
64619  .hword 0x6af8,0x6b08,0x6db8,0x6dc8,0x6f28,0x6de8,0x6b58,0x6b68
64620  .hword 0x6b78,0x6b88,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000
64621  .rept 0xf2
64622  .long 0,0,0,0,0,0,0,0
64623  .endr
64624
64625
64626
64627;@ vim:filetype=armasm
64628