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  .text
13  .align 4
14
15  .global CycloneInit
16  .global CycloneReset
17  .global CycloneRun
18  .global CycloneSetSr
19  .global CycloneGetSr
20  .global CycloneFlushIrq
21  .global CyclonePack
22  .global CycloneUnpack
23  .global CycloneVer
24
25CycloneVer: .long 0x0099
26
27;@ --------------------------- Framework --------------------------
28CycloneRun:
29  stmdb sp!,{r4-r8,r10,r11,lr}
30  mov r7,r0          ;@ r7 = Pointer to Cpu Context
31                     ;@ r0-3 = Temporary registers
32  ldrb r10,[r7,#0x46]    ;@ r10 = Flags (NZCV)
33  ldr r6,=CycloneJumpTab ;@ r6 = Opcode Jump table
34  ldr r5,[r7,#0x5c]  ;@ r5 = Cycles
35  ldr r4,[r7,#0x40]  ;@ r4 = Current PC + Memory Base
36                     ;@ r8 = Current Opcode
37  ldr r1,[r7,#0x44]  ;@ Get SR high T_S__III and irq level
38  mov r10,r10,lsl #28;@ r10 = Flags 0xf0000000, cpsr format
39                     ;@ r11 = Source value / Memory Base
40  str r6,[r7,#0x54]  ;@ make a copy to avoid literal pools
41
42  mov r2,#0
43  str r2,[r7,#0x98]  ;@ clear custom CycloneEnd
44;@ CheckInterrupt:
45  movs r0,r1,lsr #24 ;@ Get IRQ level
46  beq NoInts0
47  cmp r0,#6 ;@ irq>6 ?
48  andle r1,r1,#7 ;@ Get interrupt mask
49  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
50  bgt CycloneDoInterrupt
51NoInts0:
52
53;@ Check if our processor is in special state
54;@ and jump to opcode handler if not
55  ldr r0,[r7,#0x58] ;@ state_flags
56  ldrh r8,[r4],#2 ;@ Fetch first opcode
57  tst r0,#0x03 ;@ special state?
58  ldreq pc,[r6,r8,asl #2] ;@ Jump to opcode handler
59
60CycloneSpecial:
61  tst r0,#2 ;@ tracing?
62  bne CycloneDoTrace
63;@ stopped or halted
64  mov r5,#0
65  str r5,[r7,#0x5C]  ;@ eat all cycles
66  ldmia sp!,{r4-r8,r10,r11,pc} ;@ we are stopped, do nothing!
67
68
69;@ We come back here after execution
70CycloneEnd:
71  sub r4,r4,#2
72CycloneEndNoBack:
73  ldr r1,[r7,#0x98]
74  mov r10,r10,lsr #28
75  tst r1,r1
76  bxne r1            ;@ jump to alternative CycloneEnd
77  str r4,[r7,#0x40]  ;@ Save Current PC + Memory Base
78  str r5,[r7,#0x5c]  ;@ Save Cycles
79  strb r10,[r7,#0x46] ;@ Save Flags (NZCV)
80  ldmia sp!,{r4-r8,r10,r11,pc}
81  .ltorg
82
83
84CycloneInit:
85;@ decompress jump table
86  ldr r12,=CycloneJumpTab
87  add r0,r12,#0xe000*4 ;@ ctrl code pointer
88  ldr r1,[r0,#-4]
89  tst r1,r1
90  movne pc,lr ;@ already uncompressed
91  add r3,r12,#0xa000*4 ;@ handler table pointer, r12=dest
92unc_loop:
93  ldrh r1,[r0],#2
94  and r2,r1,#0xf
95  bic r1,r1,#0xf
96  ldr r1,[r3,r1,lsr #2] ;@ r1=handler
97  cmp r2,#0xf
98  addeq r2,r2,#1 ;@ 0xf is really 0x10
99  tst r2,r2
100  ldreqh r2,[r0],#2 ;@ counter is in next word
101  tst r2,r2
102  beq unc_finish ;@ done decompressing
103  tst r1,r1
104  addeq r12,r12,r2,lsl #2 ;@ 0 handler means we should skip those bytes
105  beq unc_loop
106unc_loop_in:
107  subs r2,r2,#1
108  str r1,[r12],#4
109  bgt unc_loop_in
110  b unc_loop
111unc_finish:
112  ldr r12,=CycloneJumpTab
113  ;@ set a-line and f-line handlers
114  add r0,r12,#0xa000*4
115  ldr r1,[r0,#4] ;@ a-line handler
116  ldr r3,[r0,#8] ;@ f-line handler
117  mov r2,#0x1000
118unc_fill3:
119  subs r2,r2,#1
120  str r1,[r0],#4
121  bgt unc_fill3
122  add r0,r12,#0xf000*4
123  mov r2,#0x1000
124unc_fill4:
125  subs r2,r2,#1
126  str r3,[r0],#4
127  bgt unc_fill4
128  bx lr
129  .ltorg
130
131CycloneReset:
132  stmfd sp!,{r7,lr}
133  mov r7,r0
134  mov r0,#0
135  str r0,[r7,#0x58] ;@ state_flags
136  str r0,[r7,#0x48] ;@ OSP
137  mov r1,#0x27 ;@ Supervisor mode
138  strb r1,[r7,#0x44] ;@ set SR high
139  strb r0,[r7,#0x47] ;@ IRQ
140  mov lr,pc
141  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
142  str r0,[r7,#0x3c] ;@ Stack pointer
143  mov r0,#0
144  str r0,[r7,#0x60] ;@ Membase
145  mov r0,#4
146  mov lr,pc
147  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
148  mov lr,pc
149  ldr pc,[r7,#0x64] ;@ Call checkpc()
150  str r0,[r7,#0x40] ;@ PC + base
151  ldmfd sp!,{r7,pc}
152
153CycloneSetSr:
154  mov r2,r1,lsr #8
155  and r2,r2,#0xa7 ;@ only defined bits
156  strb r2,[r0,#0x44] ;@ set SR high
157  mov r2,r1,lsl #25
158  str r2,[r0,#0x4c] ;@ the X flag
159  bic r2,r1,#0xf3
160  tst r1,#1
161  orrne r2,r2,#2
162  tst r1,#2
163  orrne r2,r2,#1
164  strb r2,[r0,#0x46] ;@ flags
165  bx lr
166
167CycloneGetSr:
168  ldrb r1,[r0,#0x46] ;@ flags
169  bic r2,r1,#0xf3
170  tst r1,#1
171  orrne r2,r2,#2
172  tst r1,#2
173  orrne r2,r2,#1
174  ldr r1,[r0,#0x4c] ;@ the X flag
175  tst r1,#0x20000000
176  orrne r2,r2,#0x10
177  ldrb r1,[r0,#0x44] ;@ the SR high
178  orr r0,r2,r1,lsl #8
179  bx lr
180
181CyclonePack:
182  stmfd sp!,{r4,r5,lr}
183  mov r4,r0
184  mov r5,r1
185  mov r3,#16
186;@ 0x00-0x3f: DA registers
187c_pack_loop:
188  ldr r1,[r0],#4
189  subs r3,r3,#1
190  str r1,[r5],#4
191  bne c_pack_loop
192;@ 0x40: PC
193  ldr r0,[r4,#0x40] ;@ PC + Memory Base
194  ldr r1,[r4,#0x60] ;@ Memory base
195  sub r0,r0,r1
196  str r0,[r5],#4
197;@ 0x44: SR
198  mov r0,r4
199  bl CycloneGetSr
200  strh r0,[r5],#2
201;@ 0x46: IRQ level
202  ldrb r0,[r4,#0x47]
203  strb r0,[r5],#2
204;@ 0x48: other SP
205  ldr r0,[r4,#0x48]
206  str r0,[r5],#4
207;@ 0x4c: CPU state flags
208  ldr r0,[r4,#0x58]
209  str r0,[r5],#4
210  ldmfd sp!,{r4,r5,pc}
211
212CycloneUnpack:
213  stmfd sp!,{r5,r7,lr}
214  mov r7,r0
215  movs r5,r1
216  beq c_unpack_do_pc
217  mov r3,#16
218;@ 0x00-0x3f: DA registers
219c_unpack_loop:
220  ldr r1,[r5],#4
221  subs r3,r3,#1
222  str r1,[r0],#4
223  bne c_unpack_loop
224;@ 0x40: PC
225  ldr r0,[r5],#4 ;@ PC
226  str r0,[r7,#0x40] ;@ handle later
227;@ 0x44: SR
228  ldrh r1,[r5],#2
229  mov r0,r7
230  bl CycloneSetSr
231;@ 0x46: IRQ level
232  ldrb r0,[r5],#2
233  strb r0,[r7,#0x47]
234;@ 0x48: other SP
235  ldr r0,[r5],#4
236  str r0,[r7,#0x48]
237;@ 0x4c: CPU state flags
238  ldr r0,[r5],#4
239  str r0,[r7,#0x58]
240c_unpack_do_pc:
241  ldr r0,[r7,#0x40] ;@ unbased PC
242  mov r1,#0
243  str r1,[r7,#0x60] ;@ Memory base
244  mov lr,pc
245  ldr pc,[r7,#0x64] ;@ Call checkpc()
246  str r0,[r7,#0x40] ;@ PC + Memory Base
247  ldmfd sp!,{r5,r7,pc}
248
249CycloneFlushIrq:
250  ldr r1,[r0,#0x44]  ;@ Get SR high T_S__III and irq level
251  mov r2,r1,lsr #24 ;@ Get IRQ level
252  cmp r2,#6 ;@ irq>6 ?
253  andle r1,r1,#7 ;@ Get interrupt mask
254  cmple r2,r1 ;@ irq<=6: Is irq<=mask ?
255  movle r0,#0
256  bxle lr ;@ no ints
257
258  stmdb sp!,{r4,r5,r7,r8,r10,r11,lr}
259  mov r7,r0
260  mov r0,r2
261  ldrb r10,[r7,#0x46]  ;@ r10 = Flags (NZCV)
262  mov r5,#0
263  ldr r4,[r7,#0x40]    ;@ r4 = Current PC + Memory Base
264  mov r10,r10,lsl #28  ;@ r10 = Flags 0xf0000000, cpsr format
265  adr r2,CycloneFlushIrqEnd
266  str r2,[r7,#0x98]  ;@ set custom CycloneEnd
267  b CycloneDoInterrupt
268
269CycloneFlushIrqEnd:
270  rsb r0,r5,#0
271  str r4,[r7,#0x40]   ;@ Save Current PC + Memory Base
272  strb r10,[r7,#0x46] ;@ Save Flags (NZCV)
273  ldmia sp!,{r4,r5,r7,r8,r10,r11,lr}
274  bx lr
275
276
277CycloneSetRealTAS:
278  bx lr
279
280;@ DoInterrupt - r0=IRQ level
281CycloneDoInterruptGoBack:
282  sub r4,r4,#2
283CycloneDoInterrupt:
284  bic r8,r8,#0xff000000
285  orr r8,r8,r0,lsl #29 ;@ abuse r8
286  ldr r2,[r7,#0x58] ;@ state flags
287  and r0,r0,#7
288  orr r3,r0,#0x20 ;@ Supervisor mode + IRQ level
289  bic r2,r2,#3 ;@ clear stopped and trace states
290  orr r2,r2,#4 ;@ set activity bit: 'not processing instruction'
291  str r2,[r7,#0x58]
292  ldrb r6,[r7,#0x44] ;@ Get old SR high, abuse r6
293  strb r3,[r7,#0x44] ;@ Put new SR high
294
295  ldr r1,[r7,#0x60] ;@ Get Memory base
296  ldr r11,[r7,#0x3c] ;@ Get A7
297  tst r6,#0x20
298;@ get our SP:
299  ldreq r2,[r7,#0x48] ;@ ...or OSP as our stack pointer
300  streq r11,[r7,#0x48]
301  moveq r11,r2
302;@ Push old PC onto stack
303  sub r0,r11,#4 ;@ Predecremented A7
304  sub r1,r4,r1 ;@ r1 = Old PC
305  mov lr,pc
306  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
307;@ Push old SR:
308  ldr r0,[r7,#0x4c]   ;@ X bit
309  mov r1,r10,lsr #28  ;@ ____NZCV
310  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
311  tst r2,#1           ;@ 1 if C!=V
312  eorne r1,r1,#3      ;@ ____NZVC
313  and r0,r0,#0x20000000
314  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
315  orr r1,r1,r6,lsl #8 ;@ Include old SR high
316  sub r0,r11,#6 ;@ Predecrement A7
317  str r0,[r7,#0x3c] ;@ Save A7
318  mov lr,pc
319  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
320
321  mov r11,r8,lsr #29
322  mov r0,r11
323;@ call IrqCallback if it is defined
324  ldr r3,[r7,#0x8c] ;@ IrqCallback
325  add lr,pc,#4*3
326  tst r3,r3
327  streqb r3,[r7,#0x47] ;@ just clear IRQ if there is no callback
328  mvneq r0,#0 ;@ and simulate -1 return
329  bxne r3
330;@ get IRQ vector address:
331  cmn r0,#1 ;@ returned -1?
332  addeq r0,r11,#0x18 ;@ use autovector then
333  cmn r0,#2 ;@ returned -2?
334  moveq r0,#0x18 ;@ use spurious interrupt then
335  mov r0,r0,lsl #2 ;@ get vector address
336
337  ldr r11,[r7,#0x60] ;@ Get Memory base
338;@ Read IRQ Vector:
339  mov lr,pc
340  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
341  tst r0,r0 ;@ uninitialized int vector?
342  moveq r0,#0x3c
343  moveq lr,pc
344  ldreq pc,[r7,#0x70] ;@ Call read32(r0) handler
345  add lr,pc,#4
346  add r0,r0,r11 ;@ r0 = Memory Base + New PC
347  ldr pc,[r7,#0x64] ;@ Call checkpc()
348  mov r4,r0
349
350  tst r4,#1
351  bne ExceptionAddressError_r_prg_r4
352  ldr r6,[r7,#0x54]
353  ldrh r8,[r4],#2 ;@ Fetch next opcode
354  subs r5,r5,#44 ;@ Subtract cycles
355  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
356  b CycloneEnd
357
358Exception:
359  ;@ Cause an Exception - Vector number in r0
360  mov r11,lr ;@ Preserve ARM return address
361  bic r8,r8,#0xff000000
362  orr r8,r8,r0,lsl #24 ;@ abuse r8
363  ldr r6,[r7,#0x44] ;@ Get old SR high, abuse r6
364  ldr r2,[r7,#0x58] ;@ state flags
365  and r3,r6,#0x27 ;@ clear trace and unused flags
366  orr r3,r3,#0x20 ;@ set supervisor mode
367  bic r2,r2,#3 ;@ clear stopped and trace states
368  str r2,[r7,#0x58]
369  strb r3,[r7,#0x44] ;@ Put new SR high
370
371  ldr r0,[r7,#0x3c] ;@ Get A7
372  tst r6,#0x20
373;@ get our SP:
374  ldreq r2,[r7,#0x48] ;@ ...or OSP as our stack pointer
375  streq r0,[r7,#0x48]
376  moveq r0,r2
377;@ Push old PC onto stack
378  ldr r1,[r7,#0x60] ;@ Get Memory base
379  sub r0,r0,#4 ;@ Predecremented A7
380  str r0,[r7,#0x3c] ;@ Save A7
381  sub r1,r4,r1 ;@ r1 = Old PC
382  mov lr,pc
383  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
384;@ Push old SR:
385  ldr r0,[r7,#0x4c]   ;@ X bit
386  mov r1,r10,lsr #28  ;@ ____NZCV
387  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
388  tst r2,#1           ;@ 1 if C!=V
389  eorne r1,r1,#3      ;@ ____NZVC
390  and r0,r0,#0x20000000
391  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
392  ldr r0,[r7,#0x3c] ;@ A7
393  orr r1,r1,r6,lsl #8 ;@ Include SR high
394  sub r0,r0,#2 ;@ Predecrement A7
395  str r0,[r7,#0x3c] ;@ Save A7
396  mov lr,pc
397  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
398
399;@ Read Exception Vector:
400  mov r0,r8,lsr #24
401  mov r0,r0,lsl #2
402  mov lr,pc
403  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
404  ldr r3,[r7,#0x60] ;@ Get Memory base
405  add lr,pc,#4
406  add r0,r0,r3 ;@ r0 = Memory Base + New PC
407  ldr pc,[r7,#0x64] ;@ Call checkpc()
408  mov r4,r0
409
410  tst r4,#1
411  bne ExceptionAddressError_r_prg_r4
412  ldr r6,[r7,#0x54]
413  bx r11 ;@ Return
414
415ExceptionAddressError_r_data:
416  ldr r1,[r7,#0x44]
417  mov r6,#0x11
418  mov r11,r0
419  tst r1,#0x20
420  orrne r6,r6,#4
421  b ExceptionAddressError
422
423ExceptionAddressError_r_prg:
424  ldr r1,[r7,#0x44]
425  mov r6,#0x12
426  mov r11,r0
427  tst r1,#0x20
428  orrne r6,r6,#4
429  b ExceptionAddressError
430
431ExceptionAddressError_w_data:
432  ldr r1,[r7,#0x44]
433  mov r6,#0x01
434  mov r11,r0
435  tst r1,#0x20
436  orrne r6,r6,#4
437  b ExceptionAddressError
438
439ExceptionAddressError_r_prg_r4:
440  ldr r1,[r7,#0x44]
441  ldr r3,[r7,#0x60] ;@ Get Memory base
442  mov r6,#0x12
443  sub r11,r4,r3
444  tst r1,#0x20
445  orrne r6,r6,#4
446
447ExceptionAddressError:
448;@ r6 - info word (without instruction/not bit), r11 - faulting address
449  ldrb r0,[r7,#0x44] ;@ Get old SR high
450  ldr r2,[r7,#0x58] ;@ state flags
451  and r3,r0,#0x27 ;@ clear trace and unused flags
452  orr r3,r3,#0x20 ;@ set supervisor mode
453  strb r3,[r7,#0x44] ;@ Put new SR high
454  bic r2,r2,#3 ;@ clear stopped and trace states
455  tst r2,#4
456  orrne r6,r6,#8 ;@ complete info word
457  orr r2,r2,#4 ;@ set activity bit: 'not processing instruction'
458  str r2,[r7,#0x58]
459  and r10,r10,#0xf0000000
460  orr r10,r10,r0,lsl #4 ;@ some preparations for SR push
461
462  ldr r0,[r7,#0x3c] ;@ Get A7
463  tst r10,#0x200
464;@ get our SP:
465  ldreq r2,[r7,#0x48] ;@ ...or OSP as our stack pointer
466  streq r0,[r7,#0x48]
467  moveq r0,r2
468;@ Push old PC onto stack
469  ldr r1,[r7,#0x60] ;@ Get Memory base
470  sub r0,r0,#4 ;@ Predecremented A7
471  sub r1,r4,r1 ;@ r1 = Old PC
472  str r0,[r7,#0x3c] ;@ Save A7
473  mov lr,pc
474  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
475;@ Push old SR:
476  ldr r0,[r7,#0x4c]   ;@ X bit
477  mov r1,r10,ror #28  ;@ ____NZCV
478  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
479  tst r2,#1           ;@ 1 if C!=V
480  eorne r1,r1,#3      ;@ ____NZVC
481  and r0,r0,#0x20000000
482  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
483  ldr r0,[r7,#0x3c] ;@ A7
484  and r10,r10,#0xf0000000
485  sub r0,r0,#2 ;@ Predecrement A7
486  str r0,[r7,#0x3c] ;@ Save A7
487  mov lr,pc
488  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
489;@ Push IR:
490  ldr r0,[r7,#0x3c] ;@ A7
491  mov r1,r8
492  sub r0,r0,#2 ;@ Predecrement A7
493  str r0,[r7,#0x3c] ;@ Save A7
494  mov lr,pc
495  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
496;@ Push address:
497  ldr r0,[r7,#0x3c] ;@ A7
498  mov r1,r11
499  sub r0,r0,#4 ;@ Predecrement A7
500  str r0,[r7,#0x3c] ;@ Save A7
501  mov lr,pc
502  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
503;@ Push info word:
504  ldr r0,[r7,#0x3c] ;@ A7
505  mov r1,r6
506  sub r0,r0,#2 ;@ Predecrement A7
507  str r0,[r7,#0x3c] ;@ Save A7
508  mov lr,pc
509  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
510
511;@ Read Exception Vector:
512  mov r0,#0x0c
513  mov lr,pc
514  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
515  ldr r3,[r7,#0x60] ;@ Get Memory base
516  add lr,pc,#4
517  add r0,r0,r3 ;@ r0 = Memory Base + New PC
518  ldr pc,[r7,#0x64] ;@ Call checkpc()
519  mov r4,r0
520
521  bic r4,r4,#1
522  ldr r6,[r7,#0x54]
523  ldrh r8,[r4],#2 ;@ Fetch next opcode
524  subs r5,r5,#50 ;@ Subtract cycles
525  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
526  b CycloneEnd
527
528CycloneDoTraceWithChecks:
529  ldr r0,[r7,#0x58]
530  cmp r5,#0
531  orr r0,r0,#2 ;@ go to trace mode
532  str r0,[r7,#0x58]
533  ble CycloneEnd
534;@ CheckInterrupt:
535  movs r0,r1,lsr #24 ;@ Get IRQ level
536  beq CycloneDoTrace
537  cmp r0,#6 ;@ irq>6 ?
538  andle r1,r1,#7 ;@ Get interrupt mask
539  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
540  bgt CycloneDoInterruptGoBack
541
542CycloneDoTrace:
543  str r5,[r7,#0x9c] ;@ save cycles
544  ldr r1,[r7,#0x98]
545  mov r5,#0
546  str r1,[r7,#0xa0]
547  adr r0,TraceEnd
548  str r0,[r7,#0x98] ;@ store TraceEnd as CycloneEnd hadler
549  ldr pc,[r6,r8,asl #2] ;@ Jump to opcode handler
550
551TraceEnd:
552  ldr r2,[r7,#0x58]
553  ldr r0,[r7,#0x9c] ;@ restore cycles
554  ldr r1,[r7,#0xa0] ;@ old CycloneEnd handler
555  mov r10,r10,lsl #28
556  add r5,r0,r5
557  str r1,[r7,#0x98]
558;@ still tracing?
559  tst r2,#2
560  beq TraceDisabled
561;@ trace exception
562  ldr r1,[r7,#0x58]
563  mov r0,#9
564  orr r1,r1,#4 ;@ set activity bit: 'not processing instruction'
565  str r1,[r7,#0x58]
566  bl Exception
567  ldrh r8,[r4],#2 ;@ Fetch next opcode
568  subs r5,r5,#34 ;@ Subtract cycles
569  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
570  b CycloneEnd
571
572TraceDisabled:
573  ldrh r8,[r4],#2 ;@ Fetch next opcode
574  cmp r5,#0
575  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
576  b CycloneEnd
577
578;@ ---------------------------- Opcodes ---------------------------
579Op____: ;@ Called if an opcode is not recognised
580  ldr r1,[r7,#0x58]
581  sub r4,r4,#2
582  orr r1,r1,#4 ;@ set activity bit: 'not processing instruction'
583  str r1,[r7,#0x58]
584  mov r0,#4
585  bl Exception
586
587  ldrh r8,[r4],#2 ;@ Fetch next opcode
588  subs r5,r5,#34 ;@ Subtract cycles
589  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
590  b CycloneEnd
591
592Op__al: ;@ Unrecognised a-line opcode
593  sub r4,r4,#2
594  mov r0,#0x0a
595  bl Exception
596
597  ldrh r8,[r4],#2 ;@ Fetch next opcode
598  subs r5,r5,#4 ;@ Subtract cycles
599  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
600  b CycloneEnd
601
602Op__fl: ;@ Unrecognised f-line opcode
603  sub r4,r4,#2
604  mov r0,#0x0b
605  bl Exception
606
607  ldrh r8,[r4],#2 ;@ Fetch next opcode
608  subs r5,r5,#4 ;@ Subtract cycles
609  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
610  b CycloneEnd
611
612;@ ---------- [6702] beq 4 uses Op6702 ----------
613Op6702:
614  tst r10,#0x40000000 ;@ eq: Z
615  beq BccDontBranch8
616
617  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
618
619;@ Branch taken - Add on r0 to PC
620  add r4,r4,r11,asr #24 ;@ r4 = New PC
621
622  ldrh r8,[r4],#2 ;@ Fetch next opcode
623  subs r5,r5,#10 ;@ Subtract cycles
624  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
625  b CycloneEnd
626
627BccDontBranch8:
628  ldrh r8,[r4],#2 ;@ Fetch next opcode
629  subs r5,r5,#8 ;@ Subtract cycles
630  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
631  b CycloneEnd
632
633;@ ---------- [6602] bne 4 uses Op6602 ----------
634Op6602:
635  tst r10,#0x40000000 ;@ ne: !Z
636  bne BccDontBranch8
637
638  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
639
640;@ Branch taken - Add on r0 to PC
641  add r4,r4,r11,asr #24 ;@ r4 = New PC
642
643  ldrh r8,[r4],#2 ;@ Fetch next opcode
644  subs r5,r5,#10 ;@ Subtract cycles
645  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
646  b CycloneEnd
647
648;@ ---------- [51c8] dbra d0, 3335 uses Op51c8 ----------
649Op51c8:
650;@ Decrement Dn.w
651  and r1,r8,#0x0007
652  mov r1,r1,lsl #2
653  ldrsh r0,[r7,r1]
654  strb r8,[r7,#0x45] ;@ not polling
655  sub r0,r0,#1
656  strh r0,[r7,r1]
657
658;@ Check if Dn.w is -1
659  cmn r0,#1
660  beq DbraMin1
661
662;@ Get Branch offset:
663  ldrsh r0,[r4]
664  add r0,r4,r0 ;@ r0 = New PC
665;@ Check Memory Base+pc
666  mov lr,pc
667  ldr pc,[r7,#0x64] ;@ Call checkpc()
668
669  mov r4,r0
670  tst r4,#1 ;@ address error?
671  bne ExceptionAddressError_r_prg_r4
672  ldrh r8,[r4],#2 ;@ Fetch next opcode
673  subs r5,r5,#10 ;@ Subtract cycles
674  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
675  b CycloneEnd
676
677;@ Dn.w is -1:
678DbraMin1:
679  add r4,r4,#2 ;@ Skip branch offset
680
681  ldrh r8,[r4],#2 ;@ Fetch next opcode
682  subs r5,r5,#14 ;@ Subtract cycles
683  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
684  b CycloneEnd
685
686;@ ---------- [4a38] tst.b $3333.w uses Op4a38 ----------
687Op4a38:
688;@ EaCalc : Get '$3333.w' into r0:
689  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
690;@ EaRead : Read '$3333.w' (address in r0) into r0:
691  mov lr,pc
692  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
693  movs r0,r0,asl #24
694
695  and r10,r0,#0x80000000 ;@ r10=N_flag
696  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
697
698  ldrh r8,[r4],#2 ;@ Fetch next opcode
699  subs r5,r5,#12 ;@ Subtract cycles
700  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
701  b CycloneEnd
702
703;@ ---------- [d040] add.w d0, d0 uses Opd040 ----------
704Opd040:
705;@ EaCalc : Get register index into r0:
706  and r0,r8,#0x000f
707;@ EaRead : Read register[r0] into r0:
708  ldr r0,[r7,r0,lsl #2]
709
710;@ EaCalc : Get register index into r11:
711  and r11,r8,#0x0e00
712  mov r11,r11,lsr #7
713;@ EaRead : Read register[r11] into r1:
714  ldr r1,[r7,r11]
715
716;@ Do arithmetic:
717  mov r0,r0,asl #16
718  adds r1,r0,r1,asl #16
719  mrs r10,cpsr ;@ r10=flags
720  str r10,[r7,#0x4c] ;@ Save X bit
721
722;@ Save result:
723  mov r1,r1,asr #16
724;@ EaWrite: r1 into register[r11]:
725  strh r1,[r7,r11]
726
727  ldrh r8,[r4],#2 ;@ Fetch next opcode
728  subs r5,r5,#4 ;@ Subtract cycles
729  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
730  b CycloneEnd
731
732;@ ---------- [4a79] tst.w $33333333.l uses Op4a79 ----------
733Op4a79:
734;@ EaCalc : Get '$33333333.l' into r0:
735  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
736  ldrh r0,[r4],#2
737  orr r0,r0,r2,lsl #16
738;@ EaRead : Read '$33333333.l' (address in r0) into r0:
739  mov lr,pc
740  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
741  movs r0,r0,asl #16
742
743  and r10,r0,#0x80000000 ;@ r10=N_flag
744  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
745
746  ldrh r8,[r4],#2 ;@ Fetch next opcode
747  subs r5,r5,#16 ;@ Subtract cycles
748  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
749  b CycloneEnd
750
751;@ ---------- [0240] andi.w #$3333, d0 uses Op0240 ----------
752Op0240:
753;@ EaCalc : Get '#$3333' into r10:
754  ldrsh r10,[r4],#2 ;@ Fetch immediate value
755;@ EaRead : Read '#$3333' (address in r10) into r10:
756
757;@ EaCalc : Get register index into r11:
758  and r11,r8,#0x000f
759  mov r11,r11,lsl #2
760;@ EaRead : Read register[r11] into r0:
761  ldr r0,[r7,r11]
762
763  mov r10,r10,asl #16
764;@ Do arithmetic:
765  ands r1,r10,r0,asl #16
766  and r10,r1,#0x80000000 ;@ r10=N_flag
767  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
768
769;@ EaWrite: r1 into register[r11]:
770  mov r1,r1,lsr #16
771  strh r1,[r7,r11]
772
773  ldrh r8,[r4],#2 ;@ Fetch next opcode
774  subs r5,r5,#8 ;@ Subtract cycles
775  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
776  b CycloneEnd
777
778;@ ---------- [2038] move.l $3333.w, d0 uses Op2038 ----------
779Op2038:
780;@ EaCalc : Get '$3333.w' into r0:
781  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
782;@ EaRead : Read '$3333.w' (address in r0) into r1:
783  mov lr,pc
784  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
785  movs r1,r0
786
787  and r10,r1,#0x80000000 ;@ r10=N_flag
788  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
789
790;@ EaCalc : Get register index into r0:
791  and r0,r8,#0x0e00
792;@ EaWrite: r1 into register[r0]:
793  str r1,[r7,r0,lsr #7]
794
795  ldrh r8,[r4],#2 ;@ Fetch next opcode
796  subs r5,r5,#16 ;@ Subtract cycles
797  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
798  b CycloneEnd
799
800;@ ---------- [b0b8] cmp.l $3333.w, d0 uses Opb0b8 ----------
801Opb0b8:
802;@ Get EA into r11 and value into r0:
803;@ EaCalc : Get '$3333.w' into r0:
804  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
805;@ EaRead : Read '$3333.w' (address in r0) into r0:
806  mov lr,pc
807  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
808
809;@ Get register operand into r1:
810;@ EaCalc : Get register index into r1:
811  and r1,r8,#0x0e00
812;@ EaRead : Read register[r1] into r1:
813  ldr r1,[r7,r1,lsr #7]
814
815;@ Do arithmetic:
816  rsbs r1,r0,r1
817  mrs r10,cpsr ;@ r10=flags
818  eor r10,r10,#0x20000000 ;@ Invert carry
819
820  ldrh r8,[r4],#2 ;@ Fetch next opcode
821  subs r5,r5,#18 ;@ Subtract cycles
822  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
823  b CycloneEnd
824
825;@ ---------- [6002] bra 4 uses Op6002 ----------
826Op6002:
827  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
828
829;@ Branch taken - Add on r0 to PC
830  add r4,r4,r11,asr #24 ;@ r4 = New PC
831
832  ldrh r8,[r4],#2 ;@ Fetch next opcode
833  subs r5,r5,#10 ;@ Subtract cycles
834  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
835  b CycloneEnd
836
837;@ ---------- [30c0] move.w d0, (a0)+ uses Op30c0 ----------
838Op30c0:
839;@ EaCalc : Get register index into r1:
840  and r1,r8,#0x000f
841  mov r1,r1,lsl #2
842;@ EaRead : Read register[r1] into r1:
843  ldrh r1,[r7,r1]
844
845  movs r2,r1,lsl #16
846  and r10,r2,#0x80000000 ;@ r10=N_flag
847  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
848
849;@ EaCalc : Get '(a0)+' into r0:
850  and r2,r8,#0x1e00
851  ldr r0,[r7,r2,lsr #7]
852  add r3,r0,#2 ;@ Post-increment An
853  str r3,[r7,r2,lsr #7]
854;@ EaWrite: Write r1 into '(a0)+' (address in r0):
855  mov lr,pc
856  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
857
858  ldrh r8,[r4],#2 ;@ Fetch next opcode
859  subs r5,r5,#8 ;@ Subtract cycles
860  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
861  b CycloneEnd
862
863;@ ---------- [3028] move.w ($3333,a0), d0 uses Op3028 ----------
864Op3028:
865;@ EaCalc : Get '($3333,a0)' into r0:
866  ldrsh r0,[r4],#2 ;@ Fetch offset
867  and r2,r8,#0x000f
868  ldr r2,[r7,r2,lsl #2]
869  add r0,r0,r2 ;@ Add on offset
870;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
871  mov lr,pc
872  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
873  movs r1,r0,asl #16
874
875  and r10,r1,#0x80000000 ;@ r10=N_flag
876  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
877
878;@ EaCalc : Get register index into r0:
879  and r0,r8,#0x0e00
880  mov r0,r0,lsr #7
881;@ EaWrite: r1 into register[r0]:
882  mov r1,r1,lsr #16
883  strh r1,[r7,r0]
884
885  ldrh r8,[r4],#2 ;@ Fetch next opcode
886  subs r5,r5,#12 ;@ Subtract cycles
887  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
888  b CycloneEnd
889
890;@ ---------- [0c40] cmpi.w #$3333, d0 uses Op0c40 ----------
891Op0c40:
892;@ EaCalc : Get '#$3333' into r10:
893  ldrsh r10,[r4],#2 ;@ Fetch immediate value
894;@ EaRead : Read '#$3333' (address in r10) into r10:
895
896;@ EaCalc : Get register index into r0:
897  and r0,r8,#0x000f
898;@ EaRead : Read register[r0] into r0:
899  ldr r0,[r7,r0,lsl #2]
900
901  mov r10,r10,asl #16
902;@ Do arithmetic:
903  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
904  mrs r10,cpsr ;@ r10=flags
905  eor r10,r10,#0x20000000 ;@ Invert carry
906
907  ldrh r8,[r4],#2 ;@ Fetch next opcode
908  subs r5,r5,#8 ;@ Subtract cycles
909  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
910  b CycloneEnd
911
912;@ ---------- [0c79] cmpi.w #$3333, $33333333.l uses Op0c79 ----------
913Op0c79:
914;@ EaCalc : Get '#$3333' into r10:
915  ldrsh r10,[r4],#2 ;@ Fetch immediate value
916;@ EaRead : Read '#$3333' (address in r10) into r10:
917
918;@ EaCalc : Get '$33333333.l' into r0:
919  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
920  ldrh r0,[r4],#2
921  orr r0,r0,r2,lsl #16
922;@ EaRead : Read '$33333333.l' (address in r0) into r0:
923  mov lr,pc
924  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
925
926  mov r10,r10,asl #16
927;@ Do arithmetic:
928  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
929  mrs r10,cpsr ;@ r10=flags
930  eor r10,r10,#0x20000000 ;@ Invert carry
931
932  ldrh r8,[r4],#2 ;@ Fetch next opcode
933  subs r5,r5,#20 ;@ Subtract cycles
934  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
935  b CycloneEnd
936
937;@ ---------- [4e75] rts uses Op4e75 ----------
938Op4e75:
939;@ Pop PC:
940  ldr r0,[r7,#0x3c]
941  add r1,r0,#4 ;@ Postincrement A7
942  str r1,[r7,#0x3c] ;@ Save A7
943  mov lr,pc
944  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
945  ldr r1,[r7,#0x60] ;@ Get Memory base
946  add r0,r0,r1 ;@ Memory Base+PC
947
948;@ Check Memory Base+pc
949  mov lr,pc
950  ldr pc,[r7,#0x64] ;@ Call checkpc()
951
952  mov r4,r0
953  tst r4,#1 ;@ address error?
954  bne ExceptionAddressError_r_prg_r4
955  ldrh r8,[r4],#2 ;@ Fetch next opcode
956  subs r5,r5,#16 ;@ Subtract cycles
957  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
958  b CycloneEnd
959
960;@ ---------- [4e71] nop uses Op4e71 ----------
961Op4e71:
962  ldrh r8,[r4],#2 ;@ Fetch next opcode
963  subs r5,r5,#4 ;@ Subtract cycles
964  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
965  b CycloneEnd
966
967;@ ---------- [3000] move.w d0, d0 uses Op3000 ----------
968Op3000:
969;@ EaCalc : Get register index into r1:
970  and r1,r8,#0x000f
971  mov r1,r1,lsl #2
972;@ EaRead : Read register[r1] into r1:
973  ldrh r1,[r7,r1]
974
975  movs r2,r1,lsl #16
976  and r10,r2,#0x80000000 ;@ r10=N_flag
977  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
978
979;@ EaCalc : Get register index into r0:
980  and r0,r8,#0x0e00
981  mov r0,r0,lsr #7
982;@ EaWrite: r1 into register[r0]:
983  strh r1,[r7,r0]
984
985  ldrh r8,[r4],#2 ;@ Fetch next opcode
986  subs r5,r5,#4 ;@ Subtract cycles
987  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
988  b CycloneEnd
989
990;@ ---------- [0839] btst #$33, $33333333.l uses Op0839 ----------
991Op0839:
992
993;@ EaCalc : Get '#$33' into r0:
994  ldrsb r0,[r4],#2 ;@ Fetch immediate value
995;@ EaRead : Read '#$33' (address in r0) into r0:
996
997  mov r11,#1
998  bic r10,r10,#0x40000000 ;@ Blank Z flag
999  and r0,r0,#7    ;@ mem - do mod 8
1000  mov r11,r11,lsl r0 ;@ Make bit mask
1001
1002;@ EaCalc : Get '$33333333.l' into r0:
1003  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
1004  ldrh r0,[r4],#2
1005  orr r0,r0,r2,lsl #16
1006;@ EaRead : Read '$33333333.l' (address in r0) into r0:
1007  mov lr,pc
1008  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1009
1010  tst r0,r11 ;@ Do arithmetic
1011  orreq r10,r10,#0x40000000 ;@ Get Z flag
1012
1013  ldrh r8,[r4],#2 ;@ Fetch next opcode
1014  subs r5,r5,#20 ;@ Subtract cycles
1015  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1016  b CycloneEnd
1017
1018;@ ---------- [7000] moveq #$0, d0 uses Op7000 ----------
1019Op7000:
1020  movs r0,r8,asl #24
1021  and r1,r8,#0x0e00
1022  mov r0,r0,asr #24 ;@ Sign extended Quick value
1023  and r10,r0,#0x80000000 ;@ r10=N_flag
1024  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1025  str r0,[r7,r1,lsr #7] ;@ Store into Dn
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;@ ---------- [3040] movea.w d0, a0 uses Op3040 ----------
1033Op3040:
1034;@ EaCalc : Get register index into r1:
1035  and r1,r8,#0x000f
1036  mov r1,r1,lsl #2
1037;@ EaRead : Read register[r1] into r1:
1038  ldrsh r1,[r7,r1]
1039
1040;@ EaCalc : Get register index into r0:
1041  and r0,r8,#0x1e00
1042;@ EaWrite: r1 into register[r0]:
1043  str r1,[r7,r0,lsr #7]
1044
1045  ldrh r8,[r4],#2 ;@ Fetch next opcode
1046  subs r5,r5,#4 ;@ Subtract cycles
1047  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1048  b CycloneEnd
1049
1050;@ ---------- [0838] btst #$33, $3333.w uses Op0838 ----------
1051Op0838:
1052
1053;@ EaCalc : Get '#$33' into r0:
1054  ldrsb r0,[r4],#2 ;@ Fetch immediate value
1055;@ EaRead : Read '#$33' (address in r0) into r0:
1056
1057  mov r11,#1
1058  bic r10,r10,#0x40000000 ;@ Blank Z flag
1059  and r0,r0,#7    ;@ mem - do mod 8
1060  mov r11,r11,lsl r0 ;@ Make bit mask
1061
1062;@ EaCalc : Get '$3333.w' into r0:
1063  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
1064;@ EaRead : Read '$3333.w' (address in r0) into r0:
1065  mov lr,pc
1066  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1067
1068  tst r0,r11 ;@ Do arithmetic
1069  orreq r10,r10,#0x40000000 ;@ Get Z flag
1070
1071  ldrh r8,[r4],#2 ;@ Fetch next opcode
1072  subs r5,r5,#16 ;@ Subtract cycles
1073  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1074  b CycloneEnd
1075
1076;@ ---------- [4a39] tst.b $33333333.l uses Op4a39 ----------
1077Op4a39:
1078;@ EaCalc : Get '$33333333.l' into r0:
1079  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
1080  ldrh r0,[r4],#2
1081  orr r0,r0,r2,lsl #16
1082;@ EaRead : Read '$33333333.l' (address in r0) into r0:
1083  mov lr,pc
1084  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1085  movs r0,r0,asl #24
1086
1087  and r10,r0,#0x80000000 ;@ r10=N_flag
1088  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1089
1090  ldrh r8,[r4],#2 ;@ Fetch next opcode
1091  subs r5,r5,#16 ;@ Subtract cycles
1092  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1093  b CycloneEnd
1094
1095;@ ---------- [33d8] move.w (a0)+, $33333333.l uses Op33d8 ----------
1096Op33d8:
1097;@ EaCalc : Get '(a0)+' into r0:
1098  and r2,r8,#0x000f
1099  ldr r0,[r7,r2,lsl #2]
1100  add r3,r0,#2 ;@ Post-increment An
1101  str r3,[r7,r2,lsl #2]
1102;@ EaRead : Read '(a0)+' (address in r0) into r1:
1103  mov lr,pc
1104  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
1105  movs r1,r0,asl #16
1106
1107  and r10,r1,#0x80000000 ;@ r10=N_flag
1108  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1109
1110;@ EaCalc : Get '$33333333.l' into r0:
1111  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
1112  ldrh r0,[r4],#2
1113  orr r0,r0,r2,lsl #16
1114;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
1115  mov r1,r1,lsr #16
1116  mov lr,pc
1117  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
1118
1119  ldrh r8,[r4],#2 ;@ Fetch next opcode
1120  subs r5,r5,#20 ;@ Subtract cycles
1121  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1122  b CycloneEnd
1123
1124;@ ---------- [6700] beq 3335 uses Op6700 ----------
1125Op6700:
1126  tst r10,#0x40000000 ;@ eq: Z
1127  beq BccDontBranch16
1128
1129  ldrsh r11,[r4] ;@ Fetch Branch offset
1130;@ Branch taken - Add on r0 to PC
1131  add r4,r4,r11 ;@ r4 = New PC
1132  tst r4,#1 ;@ address error?
1133  bne ExceptionAddressError_r_prg_r4
1134
1135  ldrh r8,[r4],#2 ;@ Fetch next opcode
1136  subs r5,r5,#10 ;@ Subtract cycles
1137  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1138  b CycloneEnd
1139
1140BccDontBranch16:
1141  add r4,r4,#2
1142  ldrh r8,[r4],#2 ;@ Fetch next opcode
1143  subs r5,r5,#12 ;@ Subtract cycles
1144  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1145  b CycloneEnd
1146
1147;@ ---------- [b038] cmp.b $3333.w, d0 uses Opb038 ----------
1148Opb038:
1149;@ Get EA into r11 and value into r0:
1150;@ EaCalc : Get '$3333.w' into r0:
1151  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
1152;@ EaRead : Read '$3333.w' (address in r0) into r0:
1153  mov lr,pc
1154  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1155
1156;@ Get register operand into r1:
1157;@ EaCalc : Get register index into r1:
1158  and r1,r8,#0x0e00
1159;@ EaRead : Read register[r1] into r1:
1160  ldr r1,[r7,r1,lsr #7]
1161
1162  mov r0,r0,asl #24
1163
1164;@ Do arithmetic:
1165  rsbs r1,r0,r1,asl #24
1166  mrs r10,cpsr ;@ r10=flags
1167  eor r10,r10,#0x20000000 ;@ Invert carry
1168
1169  ldrh r8,[r4],#2 ;@ Fetch next opcode
1170  subs r5,r5,#12 ;@ Subtract cycles
1171  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1172  b CycloneEnd
1173
1174;@ ---------- [3039] move.w $33333333.l, d0 uses Op3039 ----------
1175Op3039:
1176;@ EaCalc : Get '$33333333.l' into r0:
1177  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
1178  ldrh r0,[r4],#2
1179  orr r0,r0,r2,lsl #16
1180;@ EaRead : Read '$33333333.l' (address in r0) into r1:
1181  mov lr,pc
1182  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
1183  movs r1,r0,asl #16
1184
1185  and r10,r1,#0x80000000 ;@ r10=N_flag
1186  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1187
1188;@ EaCalc : Get register index into r0:
1189  and r0,r8,#0x0e00
1190  mov r0,r0,lsr #7
1191;@ EaWrite: r1 into register[r0]:
1192  mov r1,r1,lsr #16
1193  strh r1,[r7,r0]
1194
1195  ldrh r8,[r4],#2 ;@ Fetch next opcode
1196  subs r5,r5,#16 ;@ Subtract cycles
1197  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1198  b CycloneEnd
1199
1200;@ ---------- [4840] swap d0 uses Op4840 ----------
1201Op4840:
1202;@ EaCalc : Get register index into r11:
1203  and r11,r8,#0x0007
1204;@ EaRead : Read register[r11] into r0:
1205  ldr r0,[r7,r11,lsl #2]
1206
1207  movs r1,r0,ror #16
1208  and r10,r1,#0x80000000 ;@ r10=N_flag
1209  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1210;@ EaWrite: r1 into register[r11]:
1211  str r1,[r7,r11,lsl #2]
1212
1213  ldrh r8,[r4],#2 ;@ Fetch next opcode
1214  subs r5,r5,#4 ;@ Subtract cycles
1215  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1216  b CycloneEnd
1217
1218;@ ---------- [6102] bsr 4 uses Op6102 ----------
1219Op6102:
1220  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
1221
1222;@ Branch taken - Add on r0 to PC
1223;@ Bsr - remember old PC
1224  ldr r12,[r7,#0x60] ;@ Get Memory base
1225  ldr r2,[r7,#0x3c]
1226  sub r1,r4,r12 ;@ r1 = Old PC
1227
1228;@ Push r1 onto stack
1229  sub r0,r2,#4 ;@ Predecrement A7
1230  str r0,[r7,#0x3c] ;@ Save A7
1231  mov lr,pc
1232  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
1233
1234  add r4,r4,r11,asr #24 ;@ r4 = New PC
1235
1236  ldrh r8,[r4],#2 ;@ Fetch next opcode
1237  subs r5,r5,#18 ;@ Subtract cycles
1238  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1239  b CycloneEnd
1240
1241;@ ---------- [6100] bsr 3335 uses Op6100 ----------
1242Op6100:
1243  ldrsh r11,[r4] ;@ Fetch Branch offset
1244;@ Branch taken - Add on r0 to PC
1245;@ Bsr - remember old PC
1246  ldr r12,[r7,#0x60] ;@ Get Memory base
1247  ldr r2,[r7,#0x3c]
1248  sub r1,r4,r12 ;@ r1 = Old PC
1249  add r1,r1,#2
1250
1251;@ Push r1 onto stack
1252  sub r0,r2,#4 ;@ Predecrement A7
1253  str r0,[r7,#0x3c] ;@ Save A7
1254  mov lr,pc
1255  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
1256
1257  add r4,r4,r11 ;@ r4 = New PC
1258  tst r4,#1 ;@ address error?
1259  bne ExceptionAddressError_r_prg_r4
1260
1261  ldrh r8,[r4],#2 ;@ Fetch next opcode
1262  subs r5,r5,#18 ;@ Subtract cycles
1263  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1264  b CycloneEnd
1265
1266;@ ---------- [5e40] addq.w #7, d0 uses Op5e40 ----------
1267Op5e40:
1268;@ EaCalc : Get register index into r11:
1269  and r11,r8,#0x000f
1270  mov r11,r11,lsl #2
1271;@ EaRead : Read register[r11] into r0:
1272  ldr r0,[r7,r11]
1273
1274  and r2,r8,#0x0e00 ;@ Get quick value
1275
1276  mov r0,r0,asl #16
1277
1278  adds r1,r0,r2,lsl #7
1279  mrs r10,cpsr ;@ r10=flags
1280  str r10,[r7,#0x4c] ;@ Save X bit
1281
1282;@ EaWrite: r1 into register[r11]:
1283  mov r1,r1,lsr #16
1284  strh r1,[r7,r11]
1285
1286  ldrh r8,[r4],#2 ;@ Fetch next opcode
1287  subs r5,r5,#4 ;@ Subtract cycles
1288  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1289  b CycloneEnd
1290
1291;@ ---------- [1039] move.b $33333333.l, d0 uses Op1039 ----------
1292Op1039:
1293;@ EaCalc : Get '$33333333.l' into r0:
1294  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
1295  ldrh r0,[r4],#2
1296  orr r0,r0,r2,lsl #16
1297;@ EaRead : Read '$33333333.l' (address in r0) into r1:
1298  mov lr,pc
1299  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1300  movs r1,r0,asl #24
1301
1302  and r10,r1,#0x80000000 ;@ r10=N_flag
1303  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1304
1305;@ EaCalc : Get register index into r0:
1306  and r0,r8,#0x0e00
1307;@ EaWrite: r1 into register[r0]:
1308  mov r1,r1,lsr #24
1309  strb r1,[r7,r0,lsr #7]
1310
1311  ldrh r8,[r4],#2 ;@ Fetch next opcode
1312  subs r5,r5,#16 ;@ Subtract cycles
1313  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1314  b CycloneEnd
1315
1316;@ ---------- [20c0] move.l d0, (a0)+ uses Op20c0 ----------
1317Op20c0:
1318;@ EaCalc : Get register index into r1:
1319  and r1,r8,#0x000f
1320;@ EaRead : Read register[r1] into r1:
1321  ldr r1,[r7,r1,lsl #2]
1322  tst r1,r1
1323
1324  and r10,r1,#0x80000000 ;@ r10=N_flag
1325  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1326
1327;@ EaCalc : Get '(a0)+' into r0:
1328  and r2,r8,#0x0e00
1329  orr r2,r2,#0x1000 ;@ A0-7
1330  ldr r0,[r7,r2,lsr #7]
1331  add r3,r0,#4 ;@ Post-increment An
1332  str r3,[r7,r2,lsr #7]
1333;@ EaWrite: Write r1 into '(a0)+' (address in r0):
1334  mov lr,pc
1335  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
1336
1337  ldrh r8,[r4],#2 ;@ Fetch next opcode
1338  subs r5,r5,#12 ;@ Subtract cycles
1339  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1340  b CycloneEnd
1341
1342;@ ---------- [1018] move.b (a0)+, d0 uses Op1018 ----------
1343Op1018:
1344;@ EaCalc : Get '(a0)+' into r0:
1345  and r2,r8,#0x000f
1346  ldr r0,[r7,r2,lsl #2]
1347  add r3,r0,#1 ;@ Post-increment An
1348  str r3,[r7,r2,lsl #2]
1349;@ EaRead : Read '(a0)+' (address in r0) into r1:
1350  mov lr,pc
1351  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1352  movs r1,r0,asl #24
1353
1354  and r10,r1,#0x80000000 ;@ r10=N_flag
1355  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1356
1357;@ EaCalc : Get register index into r0:
1358  and r0,r8,#0x0e00
1359;@ EaWrite: r1 into register[r0]:
1360  mov r1,r1,lsr #24
1361  strb r1,[r7,r0,lsr #7]
1362
1363  ldrh r8,[r4],#2 ;@ Fetch next opcode
1364  subs r5,r5,#8 ;@ Subtract cycles
1365  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1366  b CycloneEnd
1367
1368;@ ---------- [30d0] move.w (a0), (a0)+ uses Op30d0 ----------
1369Op30d0:
1370;@ EaCalc : Get '(a0)' into r0:
1371  and r2,r8,#0x000f
1372  orr r2,r2,#0x8 ;@ A0-7
1373  ldr r0,[r7,r2,lsl #2]
1374;@ EaRead : Read '(a0)' (address in r0) into r1:
1375  mov lr,pc
1376  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
1377  movs r1,r0,asl #16
1378
1379  and r10,r1,#0x80000000 ;@ r10=N_flag
1380  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1381
1382;@ EaCalc : Get '(a0)+' into r0:
1383  and r2,r8,#0x1e00
1384  ldr r0,[r7,r2,lsr #7]
1385  add r3,r0,#2 ;@ Post-increment An
1386  str r3,[r7,r2,lsr #7]
1387;@ EaWrite: Write r1 into '(a0)+' (address in r0):
1388  mov r1,r1,lsr #16
1389  mov lr,pc
1390  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
1391
1392  ldrh r8,[r4],#2 ;@ Fetch next opcode
1393  subs r5,r5,#12 ;@ Subtract cycles
1394  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1395  b CycloneEnd
1396
1397;@ ---------- [3080] move.w d0, (a0) uses Op3080 ----------
1398Op3080:
1399;@ EaCalc : Get register index into r1:
1400  and r1,r8,#0x000f
1401  mov r1,r1,lsl #2
1402;@ EaRead : Read register[r1] into r1:
1403  ldrh r1,[r7,r1]
1404
1405  movs r2,r1,lsl #16
1406  and r10,r2,#0x80000000 ;@ r10=N_flag
1407  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1408
1409;@ EaCalc : Get '(a0)' into r0:
1410  and r2,r8,#0x1e00
1411  ldr r0,[r7,r2,lsr #7]
1412;@ EaWrite: Write r1 into '(a0)' (address in r0):
1413  mov lr,pc
1414  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
1415
1416  ldrh r8,[r4],#2 ;@ Fetch next opcode
1417  subs r5,r5,#8 ;@ Subtract cycles
1418  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1419  b CycloneEnd
1420
1421;@ ---------- [3018] move.w (a0)+, d0 uses Op3018 ----------
1422Op3018:
1423;@ EaCalc : Get '(a0)+' into r0:
1424  and r2,r8,#0x000f
1425  ldr r0,[r7,r2,lsl #2]
1426  add r3,r0,#2 ;@ Post-increment An
1427  str r3,[r7,r2,lsl #2]
1428;@ EaRead : Read '(a0)+' (address in r0) into r1:
1429  mov lr,pc
1430  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
1431  movs r1,r0,asl #16
1432
1433  and r10,r1,#0x80000000 ;@ r10=N_flag
1434  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1435
1436;@ EaCalc : Get register index into r0:
1437  and r0,r8,#0x0e00
1438  mov r0,r0,lsr #7
1439;@ EaWrite: r1 into register[r0]:
1440  mov r1,r1,lsr #16
1441  strh r1,[r7,r0]
1442
1443  ldrh r8,[r4],#2 ;@ Fetch next opcode
1444  subs r5,r5,#8 ;@ Subtract cycles
1445  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1446  b CycloneEnd
1447
1448;@ ---------- [c040] and.w d0, d0 uses Opc040 ----------
1449Opc040:
1450;@ EaCalc : Get register index into r0:
1451  and r0,r8,#0x000f
1452;@ EaRead : Read register[r0] into r0:
1453  ldr r0,[r7,r0,lsl #2]
1454
1455;@ EaCalc : Get register index into r11:
1456  and r11,r8,#0x0e00
1457  mov r11,r11,lsr #7
1458;@ EaRead : Read register[r11] into r1:
1459  ldr r1,[r7,r11]
1460
1461;@ Do arithmetic:
1462  mov r0,r0,asl #16
1463  ands r1,r0,r1,asl #16
1464  and r10,r1,#0x80000000 ;@ r10=N_flag
1465  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1466
1467;@ Save result:
1468  mov r1,r1,asr #16
1469;@ EaWrite: r1 into register[r11]:
1470  strh r1,[r7,r11]
1471
1472  ldrh r8,[r4],#2 ;@ Fetch next opcode
1473  subs r5,r5,#4 ;@ Subtract cycles
1474  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1475  b CycloneEnd
1476
1477;@ ---------- [3180] move.w d0, ($33,a0,d3.w*2) uses Op3180 ----------
1478Op3180:
1479;@ EaCalc : Get register index into r1:
1480  and r1,r8,#0x000f
1481  mov r1,r1,lsl #2
1482;@ EaRead : Read register[r1] into r1:
1483  ldrh r1,[r7,r1]
1484
1485  movs r2,r1,lsl #16
1486  and r10,r2,#0x80000000 ;@ r10=N_flag
1487  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1488
1489;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
1490;@ Get extension word into r3:
1491  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
1492  mov r2,r3,lsr #10
1493  tst r3,#0x0800 ;@ Is Rn Word or Long
1494  and r2,r2,#0x3c ;@ r2=Index of Rn
1495  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
1496  ldrne   r2,[r7,r2] ;@ r2=Rn.l
1497  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
1498  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
1499  and r2,r8,#0x1e00
1500  orr r2,r2,#0x1000 ;@ A0-7
1501  mov r2,r2,lsr #9
1502  ldr r2,[r7,r2,lsl #2]
1503  add r0,r2,r3 ;@ r0=Disp+An+Rn
1504;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
1505  mov lr,pc
1506  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
1507
1508  ldrh r8,[r4],#2 ;@ Fetch next opcode
1509  subs r5,r5,#14 ;@ Subtract cycles
1510  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1511  b CycloneEnd
1512
1513;@ ---------- [1198] move.b (a0)+, ($33,a0,d3.w*2) uses Op1198 ----------
1514Op1198:
1515;@ EaCalc : Get '(a0)+' into r0:
1516  and r2,r8,#0x000f
1517  ldr r0,[r7,r2,lsl #2]
1518  add r3,r0,#1 ;@ Post-increment An
1519  str r3,[r7,r2,lsl #2]
1520;@ EaRead : Read '(a0)+' (address in r0) into r1:
1521  mov lr,pc
1522  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1523  movs r1,r0,asl #24
1524
1525  and r10,r1,#0x80000000 ;@ r10=N_flag
1526  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1527
1528;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
1529;@ Get extension word into r3:
1530  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
1531  mov r2,r3,lsr #10
1532  tst r3,#0x0800 ;@ Is Rn Word or Long
1533  and r2,r2,#0x3c ;@ r2=Index of Rn
1534  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
1535  ldrne   r2,[r7,r2] ;@ r2=Rn.l
1536  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
1537  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
1538  and r2,r8,#0x1e00
1539  orr r2,r2,#0x1000 ;@ A0-7
1540  mov r2,r2,lsr #9
1541  ldr r2,[r7,r2,lsl #2]
1542  add r0,r2,r3 ;@ r0=Disp+An+Rn
1543;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
1544  mov r1,r1,lsr #24
1545  mov lr,pc
1546  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
1547
1548  ldrh r8,[r4],#2 ;@ Fetch next opcode
1549  subs r5,r5,#18 ;@ Subtract cycles
1550  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1551  b CycloneEnd
1552
1553;@ ---------- [6502] bcs 4 uses Op6502 ----------
1554Op6502:
1555  tst r10,#0x20000000 ;@ cs: C
1556  beq BccDontBranch8
1557
1558  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
1559
1560;@ Branch taken - Add on r0 to PC
1561  add r4,r4,r11,asr #24 ;@ r4 = New PC
1562
1563  ldrh r8,[r4],#2 ;@ Fetch next opcode
1564  subs r5,r5,#10 ;@ Subtract cycles
1565  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1566  b CycloneEnd
1567
1568;@ ---------- [6500] bcs 3335 uses Op6500 ----------
1569Op6500:
1570  tst r10,#0x20000000 ;@ cs: C
1571  beq BccDontBranch16
1572
1573  ldrsh r11,[r4] ;@ Fetch Branch offset
1574;@ Branch taken - Add on r0 to PC
1575  add r4,r4,r11 ;@ r4 = New PC
1576  tst r4,#1 ;@ address error?
1577  bne ExceptionAddressError_r_prg_r4
1578
1579  ldrh r8,[r4],#2 ;@ Fetch next opcode
1580  subs r5,r5,#10 ;@ Subtract cycles
1581  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1582  b CycloneEnd
1583
1584;@ ---------- [6402] bcc 4 uses Op6402 ----------
1585Op6402:
1586  tst r10,#0x20000000 ;@ cc: !C
1587  bne BccDontBranch8
1588
1589  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
1590
1591;@ Branch taken - Add on r0 to PC
1592  add r4,r4,r11,asr #24 ;@ r4 = New PC
1593
1594  ldrh r8,[r4],#2 ;@ Fetch next opcode
1595  subs r5,r5,#10 ;@ Subtract cycles
1596  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1597  b CycloneEnd
1598
1599;@ ---------- [6a02] bpl 4 uses Op6a02 ----------
1600Op6a02:
1601  tst r10,r10 ;@ pl: !N
1602  bmi BccDontBranch8
1603
1604  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
1605
1606;@ Branch taken - Add on r0 to PC
1607  add r4,r4,r11,asr #24 ;@ r4 = New PC
1608
1609  ldrh r8,[r4],#2 ;@ Fetch next opcode
1610  subs r5,r5,#10 ;@ Subtract cycles
1611  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1612  b CycloneEnd
1613
1614;@ ---------- [41f0] lea ($33,a0,d3.w*2), a0 uses Op41f0 ----------
1615Op41f0:
1616;@ EaCalc : Get '($33,a0,d3.w*2)' into r1:
1617;@ Get extension word into r3:
1618  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
1619  mov r2,r3,lsr #10
1620  tst r3,#0x0800 ;@ Is Rn Word or Long
1621  and r2,r2,#0x3c ;@ r2=Index of Rn
1622  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
1623  ldrne   r2,[r7,r2] ;@ r2=Rn.l
1624  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
1625  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
1626  and r2,r8,#0x000f
1627  orr r2,r2,#0x8 ;@ A0-7
1628  ldr r2,[r7,r2,lsl #2]
1629  add r1,r2,r3 ;@ r1=Disp+An+Rn
1630;@ EaCalc : Get register index into r0:
1631  and r0,r8,#0x0e00
1632  orr r0,r0,#0x1000 ;@ A0-7
1633;@ EaWrite: r1 into register[r0]:
1634  str r1,[r7,r0,lsr #7]
1635
1636  ldrh r8,[r4],#2 ;@ Fetch next opcode
1637  subs r5,r5,#12 ;@ Subtract cycles
1638  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1639  b CycloneEnd
1640
1641;@ ---------- [4a28] tst.b ($3333,a0) uses Op4a28 ----------
1642Op4a28:
1643;@ EaCalc : Get '($3333,a0)' into r0:
1644  ldrsh r0,[r4],#2 ;@ Fetch offset
1645  and r2,r8,#0x000f
1646  ldr r2,[r7,r2,lsl #2]
1647  add r0,r0,r2 ;@ Add on offset
1648;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
1649  mov lr,pc
1650  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1651  movs r0,r0,asl #24
1652
1653  and r10,r0,#0x80000000 ;@ r10=N_flag
1654  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1655
1656  ldrh r8,[r4],#2 ;@ Fetch next opcode
1657  subs r5,r5,#12 ;@ Subtract cycles
1658  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1659  b CycloneEnd
1660
1661;@ ---------- [0828] btst #$33, ($3333,a0) uses Op0828 ----------
1662Op0828:
1663
1664;@ EaCalc : Get '#$33' into r0:
1665  ldrsb r0,[r4],#2 ;@ Fetch immediate value
1666;@ EaRead : Read '#$33' (address in r0) into r0:
1667
1668  mov r11,#1
1669  bic r10,r10,#0x40000000 ;@ Blank Z flag
1670  and r0,r0,#7    ;@ mem - do mod 8
1671  mov r11,r11,lsl r0 ;@ Make bit mask
1672
1673;@ EaCalc : Get '($3333,a0)' into r0:
1674  ldrsh r0,[r4],#2 ;@ Fetch offset
1675  and r2,r8,#0x000f
1676  ldr r2,[r7,r2,lsl #2]
1677  add r0,r0,r2 ;@ Add on offset
1678;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
1679  mov lr,pc
1680  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1681
1682  tst r0,r11 ;@ Do arithmetic
1683  orreq r10,r10,#0x40000000 ;@ Get Z flag
1684
1685  ldrh r8,[r4],#2 ;@ Fetch next opcode
1686  subs r5,r5,#16 ;@ Subtract cycles
1687  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1688  b CycloneEnd
1689
1690;@ ---------- [0640] addi.w #$3333, d0 uses Op0640 ----------
1691Op0640:
1692;@ EaCalc : Get '#$3333' into r10:
1693  ldrsh r10,[r4],#2 ;@ Fetch immediate value
1694;@ EaRead : Read '#$3333' (address in r10) into r10:
1695
1696;@ EaCalc : Get register index into r11:
1697  and r11,r8,#0x000f
1698  mov r11,r11,lsl #2
1699;@ EaRead : Read register[r11] into r0:
1700  ldr r0,[r7,r11]
1701
1702  mov r10,r10,asl #16
1703;@ Do arithmetic:
1704  adds r1,r10,r0,asl #16 ;@ Defines NZCV
1705  mrs r10,cpsr ;@ r10=flags
1706  str r10,[r7,#0x4c] ;@ Save X bit
1707
1708;@ EaWrite: r1 into register[r11]:
1709  mov r1,r1,lsr #16
1710  strh r1,[r7,r11]
1711
1712  ldrh r8,[r4],#2 ;@ Fetch next opcode
1713  subs r5,r5,#8 ;@ Subtract cycles
1714  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1715  b CycloneEnd
1716
1717;@ ---------- [10c0] move.b d0, (a0)+ uses Op10c0 ----------
1718Op10c0:
1719;@ EaCalc : Get register index into r1:
1720  and r1,r8,#0x000f
1721;@ EaRead : Read register[r1] into r1:
1722  ldrb r1,[r7,r1,lsl #2]
1723
1724  movs r2,r1,lsl #24
1725  and r10,r2,#0x80000000 ;@ r10=N_flag
1726  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1727
1728;@ EaCalc : Get '(a0)+' into r0:
1729  and r2,r8,#0x1e00
1730  ldr r0,[r7,r2,lsr #7]
1731  add r3,r0,#1 ;@ Post-increment An
1732  str r3,[r7,r2,lsr #7]
1733;@ EaWrite: Write r1 into '(a0)+' (address in r0):
1734  mov lr,pc
1735  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
1736
1737  ldrh r8,[r4],#2 ;@ Fetch next opcode
1738  subs r5,r5,#8 ;@ Subtract cycles
1739  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1740  b CycloneEnd
1741
1742;@ ---------- [10d8] move.b (a0)+, (a0)+ uses Op10d8 ----------
1743Op10d8:
1744;@ EaCalc : Get '(a0)+' into r0:
1745  and r2,r8,#0x000f
1746  ldr r0,[r7,r2,lsl #2]
1747  add r3,r0,#1 ;@ Post-increment An
1748  str r3,[r7,r2,lsl #2]
1749;@ EaRead : Read '(a0)+' (address in r0) into r1:
1750  mov lr,pc
1751  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1752  movs r1,r0,asl #24
1753
1754  and r10,r1,#0x80000000 ;@ r10=N_flag
1755  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1756
1757;@ EaCalc : Get '(a0)+' into r0:
1758  and r2,r8,#0x1e00
1759  ldr r0,[r7,r2,lsr #7]
1760  add r3,r0,#1 ;@ Post-increment An
1761  str r3,[r7,r2,lsr #7]
1762;@ EaWrite: Write r1 into '(a0)+' (address in r0):
1763  mov r1,r1,lsr #24
1764  mov lr,pc
1765  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
1766
1767  ldrh r8,[r4],#2 ;@ Fetch next opcode
1768  subs r5,r5,#12 ;@ Subtract cycles
1769  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1770  b CycloneEnd
1771
1772;@ ---------- [0000] ori.b #$33, d0 uses Op0000 ----------
1773Op0000:
1774;@ EaCalc : Get '#$33' into r10:
1775  ldrsb r10,[r4],#2 ;@ Fetch immediate value
1776;@ EaRead : Read '#$33' (address in r10) into r10:
1777
1778;@ EaCalc : Get register index into r11:
1779  and r11,r8,#0x000f
1780;@ EaRead : Read register[r11] into r0:
1781  ldr r0,[r7,r11,lsl #2]
1782
1783  mov r10,r10,asl #24
1784;@ Do arithmetic:
1785  orrs r1,r10,r0,asl #24
1786  and r10,r1,#0x80000000 ;@ r10=N_flag
1787  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1788
1789;@ EaWrite: r1 into register[r11]:
1790  mov r1,r1,lsr #24
1791  strb r1,[r7,r11,lsl #2]
1792
1793  ldrh r8,[r4],#2 ;@ Fetch next opcode
1794  subs r5,r5,#8 ;@ Subtract cycles
1795  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1796  b CycloneEnd
1797
1798;@ ---------- [0010] ori.b #$33, (a0) uses Op0010 ----------
1799Op0010:
1800;@ EaCalc : Get '#$33' into r10:
1801  ldrsb r10,[r4],#2 ;@ Fetch immediate value
1802;@ EaRead : Read '#$33' (address in r10) into r10:
1803
1804;@ EaCalc : Get '(a0)' into r11:
1805  and r2,r8,#0x000f
1806  orr r2,r2,#0x8 ;@ A0-7
1807  ldr r11,[r7,r2,lsl #2]
1808;@ EaRead : Read '(a0)' (address in r11) into r0:
1809  add lr,pc,#4
1810  mov r0,r11
1811  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1812
1813  mov r10,r10,asl #24
1814;@ Do arithmetic:
1815  orrs r1,r10,r0,asl #24
1816  and r10,r1,#0x80000000 ;@ r10=N_flag
1817  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1818
1819;@ EaWrite: Write r1 into '(a0)' (address in r11):
1820  mov r1,r1,lsr #24
1821  add lr,pc,#4
1822  mov r0,r11
1823  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
1824
1825  ldrh r8,[r4],#2 ;@ Fetch next opcode
1826  subs r5,r5,#16 ;@ Subtract cycles
1827  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1828  b CycloneEnd
1829
1830;@ ---------- [0018] ori.b #$33, (a0)+ uses Op0018 ----------
1831Op0018:
1832;@ EaCalc : Get '#$33' into r10:
1833  ldrsb r10,[r4],#2 ;@ Fetch immediate value
1834;@ EaRead : Read '#$33' (address in r10) into r10:
1835
1836;@ EaCalc : Get '(a0)+' into r11:
1837  and r2,r8,#0x000f
1838  ldr r11,[r7,r2,lsl #2]
1839  add r3,r11,#1 ;@ Post-increment An
1840  str r3,[r7,r2,lsl #2]
1841;@ EaRead : Read '(a0)+' (address in r11) into r0:
1842  add lr,pc,#4
1843  mov r0,r11
1844  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1845
1846  mov r10,r10,asl #24
1847;@ Do arithmetic:
1848  orrs r1,r10,r0,asl #24
1849  and r10,r1,#0x80000000 ;@ r10=N_flag
1850  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1851
1852;@ EaWrite: Write r1 into '(a0)+' (address in r11):
1853  mov r1,r1,lsr #24
1854  add lr,pc,#4
1855  mov r0,r11
1856  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
1857
1858  ldrh r8,[r4],#2 ;@ Fetch next opcode
1859  subs r5,r5,#16 ;@ Subtract cycles
1860  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1861  b CycloneEnd
1862
1863;@ ---------- [001f] ori.b #$33, (a7)+ uses Op001f ----------
1864Op001f:
1865;@ EaCalc : Get '#$33' into r10:
1866  ldrsb r10,[r4],#2 ;@ Fetch immediate value
1867;@ EaRead : Read '#$33' (address in r10) into r10:
1868
1869;@ EaCalc : Get '(a7)+' into r11:
1870  ldr r11,[r7,#0x3c] ;@ A7
1871  add r3,r11,#2 ;@ Post-increment An
1872  str r3,[r7,#0x3c] ;@ A7
1873;@ EaRead : Read '(a7)+' (address in r11) into r0:
1874  add lr,pc,#4
1875  mov r0,r11
1876  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1877
1878  mov r10,r10,asl #24
1879;@ Do arithmetic:
1880  orrs r1,r10,r0,asl #24
1881  and r10,r1,#0x80000000 ;@ r10=N_flag
1882  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1883
1884;@ EaWrite: Write r1 into '(a7)+' (address in r11):
1885  mov r1,r1,lsr #24
1886  add lr,pc,#4
1887  mov r0,r11
1888  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
1889
1890  ldrh r8,[r4],#2 ;@ Fetch next opcode
1891  subs r5,r5,#16 ;@ Subtract cycles
1892  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1893  b CycloneEnd
1894
1895;@ ---------- [0020] ori.b #$33, -(a0) uses Op0020 ----------
1896Op0020:
1897;@ EaCalc : Get '#$33' into r10:
1898  ldrsb r10,[r4],#2 ;@ Fetch immediate value
1899;@ EaRead : Read '#$33' (address in r10) into r10:
1900
1901;@ EaCalc : Get '-(a0)' into r11:
1902  and r2,r8,#0x000f
1903  orr r2,r2,#0x8 ;@ A0-7
1904  ldr r11,[r7,r2,lsl #2]
1905  sub r11,r11,#1 ;@ Pre-decrement An
1906  str r11,[r7,r2,lsl #2]
1907;@ EaRead : Read '-(a0)' (address in r11) into r0:
1908  add lr,pc,#4
1909  mov r0,r11
1910  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1911
1912  mov r10,r10,asl #24
1913;@ Do arithmetic:
1914  orrs r1,r10,r0,asl #24
1915  and r10,r1,#0x80000000 ;@ r10=N_flag
1916  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1917
1918;@ EaWrite: Write r1 into '-(a0)' (address in r11):
1919  mov r1,r1,lsr #24
1920  add lr,pc,#4
1921  mov r0,r11
1922  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
1923
1924  ldrh r8,[r4],#2 ;@ Fetch next opcode
1925  subs r5,r5,#18 ;@ Subtract cycles
1926  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1927  b CycloneEnd
1928
1929;@ ---------- [0027] ori.b #$33, -(a7) uses Op0027 ----------
1930Op0027:
1931;@ EaCalc : Get '#$33' into r10:
1932  ldrsb r10,[r4],#2 ;@ Fetch immediate value
1933;@ EaRead : Read '#$33' (address in r10) into r10:
1934
1935;@ EaCalc : Get '-(a7)' into r11:
1936  ldr r11,[r7,#0x3c] ;@ A7
1937  sub r11,r11,#2 ;@ Pre-decrement An
1938  str r11,[r7,#0x3c] ;@ A7
1939;@ EaRead : Read '-(a7)' (address in r11) into r0:
1940  add lr,pc,#4
1941  mov r0,r11
1942  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1943
1944  mov r10,r10,asl #24
1945;@ Do arithmetic:
1946  orrs r1,r10,r0,asl #24
1947  and r10,r1,#0x80000000 ;@ r10=N_flag
1948  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1949
1950;@ EaWrite: Write r1 into '-(a7)' (address in r11):
1951  mov r1,r1,lsr #24
1952  add lr,pc,#4
1953  mov r0,r11
1954  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
1955
1956  ldrh r8,[r4],#2 ;@ Fetch next opcode
1957  subs r5,r5,#18 ;@ Subtract cycles
1958  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1959  b CycloneEnd
1960
1961;@ ---------- [0028] ori.b #$33, ($3333,a0) uses Op0028 ----------
1962Op0028:
1963;@ EaCalc : Get '#$33' into r10:
1964  ldrsb r10,[r4],#2 ;@ Fetch immediate value
1965;@ EaRead : Read '#$33' (address in r10) into r10:
1966
1967;@ EaCalc : Get '($3333,a0)' into r11:
1968  ldrsh r0,[r4],#2 ;@ Fetch offset
1969  and r2,r8,#0x000f
1970  ldr r2,[r7,r2,lsl #2]
1971  add r11,r0,r2 ;@ Add on offset
1972;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
1973  add lr,pc,#4
1974  mov r0,r11
1975  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
1976
1977  mov r10,r10,asl #24
1978;@ Do arithmetic:
1979  orrs r1,r10,r0,asl #24
1980  and r10,r1,#0x80000000 ;@ r10=N_flag
1981  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
1982
1983;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
1984  mov r1,r1,lsr #24
1985  add lr,pc,#4
1986  mov r0,r11
1987  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
1988
1989  ldrh r8,[r4],#2 ;@ Fetch next opcode
1990  subs r5,r5,#20 ;@ Subtract cycles
1991  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
1992  b CycloneEnd
1993
1994;@ ---------- [0030] ori.b #$33, ($33,a0,d3.w*2) uses Op0030 ----------
1995Op0030:
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 '($33,a0,d3.w*2)' into r11:
2001;@ Get extension word into r3:
2002  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
2003  mov r2,r3,lsr #10
2004  tst r3,#0x0800 ;@ Is Rn Word or Long
2005  and r2,r2,#0x3c ;@ r2=Index of Rn
2006  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
2007  ldrne   r2,[r7,r2] ;@ r2=Rn.l
2008  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
2009  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
2010  and r2,r8,#0x000f
2011  orr r2,r2,#0x8 ;@ A0-7
2012  ldr r2,[r7,r2,lsl #2]
2013  add r11,r2,r3 ;@ r11=Disp+An+Rn
2014;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
2015  add lr,pc,#4
2016  mov r0,r11
2017  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2018
2019  mov r10,r10,asl #24
2020;@ Do arithmetic:
2021  orrs r1,r10,r0,asl #24
2022  and r10,r1,#0x80000000 ;@ r10=N_flag
2023  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2024
2025;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
2026  mov r1,r1,lsr #24
2027  add lr,pc,#4
2028  mov r0,r11
2029  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
2030
2031  ldrh r8,[r4],#2 ;@ Fetch next opcode
2032  subs r5,r5,#22 ;@ Subtract cycles
2033  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2034  b CycloneEnd
2035
2036;@ ---------- [0038] ori.b #$33, $3333.w uses Op0038 ----------
2037Op0038:
2038;@ EaCalc : Get '#$33' into r10:
2039  ldrsb r10,[r4],#2 ;@ Fetch immediate value
2040;@ EaRead : Read '#$33' (address in r10) into r10:
2041
2042;@ EaCalc : Get '$3333.w' into r11:
2043  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
2044;@ EaRead : Read '$3333.w' (address in r11) into r0:
2045  add lr,pc,#4
2046  mov r0,r11
2047  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2048
2049  mov r10,r10,asl #24
2050;@ Do arithmetic:
2051  orrs r1,r10,r0,asl #24
2052  and r10,r1,#0x80000000 ;@ r10=N_flag
2053  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2054
2055;@ EaWrite: Write r1 into '$3333.w' (address in r11):
2056  mov r1,r1,lsr #24
2057  add lr,pc,#4
2058  mov r0,r11
2059  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
2060
2061  ldrh r8,[r4],#2 ;@ Fetch next opcode
2062  subs r5,r5,#20 ;@ Subtract cycles
2063  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2064  b CycloneEnd
2065
2066;@ ---------- [0039] ori.b #$33, $33333333.l uses Op0039 ----------
2067Op0039:
2068;@ EaCalc : Get '#$33' into r10:
2069  ldrsb r10,[r4],#2 ;@ Fetch immediate value
2070;@ EaRead : Read '#$33' (address in r10) into r10:
2071
2072;@ EaCalc : Get '$33333333.l' into r11:
2073  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
2074  ldrh r0,[r4],#2
2075  orr r11,r0,r2,lsl #16
2076;@ EaRead : Read '$33333333.l' (address in r11) into r0:
2077  add lr,pc,#4
2078  mov r0,r11
2079  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2080
2081  mov r10,r10,asl #24
2082;@ Do arithmetic:
2083  orrs r1,r10,r0,asl #24
2084  and r10,r1,#0x80000000 ;@ r10=N_flag
2085  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2086
2087;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
2088  mov r1,r1,lsr #24
2089  add lr,pc,#4
2090  mov r0,r11
2091  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
2092
2093  ldrh r8,[r4],#2 ;@ Fetch next opcode
2094  subs r5,r5,#24 ;@ Subtract cycles
2095  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2096  b CycloneEnd
2097
2098;@ ---------- [003c] ori.b #$33, ccr uses Op003c ----------
2099Op003c:
2100;@ EaCalc : Get '#$33' into r0:
2101  ldrsb r0,[r4],#2 ;@ Fetch immediate value
2102;@ EaRead : Read '#$33' (address in r0) into r0:
2103
2104  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
2105  tst r1,#1           ;@ 1 if C!=V
2106  eorne r0,r0,#3      ;@ ___XNZCV
2107  ldr r2,[r7,#0x4c]   ;@ Load old X bit
2108  orr r10,r10,r0,lsl #28
2109  orr r2,r2,r0,lsl #25 ;@ X bit
2110  str r2,[r7,#0x4c]   ;@ Save X bit
2111
2112  ldrh r8,[r4],#2 ;@ Fetch next opcode
2113  subs r5,r5,#20 ;@ Subtract cycles
2114  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2115  b CycloneEnd
2116
2117;@ ---------- [0040] ori.w #$3333, d0 uses Op0040 ----------
2118Op0040:
2119;@ EaCalc : Get '#$3333' into r10:
2120  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2121;@ EaRead : Read '#$3333' (address in r10) into r10:
2122
2123;@ EaCalc : Get register index into r11:
2124  and r11,r8,#0x000f
2125  mov r11,r11,lsl #2
2126;@ EaRead : Read register[r11] into r0:
2127  ldr r0,[r7,r11]
2128
2129  mov r10,r10,asl #16
2130;@ Do arithmetic:
2131  orrs r1,r10,r0,asl #16
2132  and r10,r1,#0x80000000 ;@ r10=N_flag
2133  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2134
2135;@ EaWrite: r1 into register[r11]:
2136  mov r1,r1,lsr #16
2137  strh r1,[r7,r11]
2138
2139  ldrh r8,[r4],#2 ;@ Fetch next opcode
2140  subs r5,r5,#8 ;@ Subtract cycles
2141  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2142  b CycloneEnd
2143
2144;@ ---------- [0050] ori.w #$3333, (a0) uses Op0050 ----------
2145Op0050:
2146;@ EaCalc : Get '#$3333' into r10:
2147  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2148;@ EaRead : Read '#$3333' (address in r10) into r10:
2149
2150;@ EaCalc : Get '(a0)' into r11:
2151  and r2,r8,#0x000f
2152  orr r2,r2,#0x8 ;@ A0-7
2153  ldr r11,[r7,r2,lsl #2]
2154;@ EaRead : Read '(a0)' (address in r11) into r0:
2155  add lr,pc,#4
2156  mov r0,r11
2157  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
2158
2159  mov r10,r10,asl #16
2160;@ Do arithmetic:
2161  orrs r1,r10,r0,asl #16
2162  and r10,r1,#0x80000000 ;@ r10=N_flag
2163  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2164
2165;@ EaWrite: Write r1 into '(a0)' (address in r11):
2166  mov r1,r1,lsr #16
2167  add lr,pc,#4
2168  mov r0,r11
2169  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
2170
2171  ldrh r8,[r4],#2 ;@ Fetch next opcode
2172  subs r5,r5,#16 ;@ Subtract cycles
2173  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2174  b CycloneEnd
2175
2176;@ ---------- [0058] ori.w #$3333, (a0)+ uses Op0058 ----------
2177Op0058:
2178;@ EaCalc : Get '#$3333' into r10:
2179  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2180;@ EaRead : Read '#$3333' (address in r10) into r10:
2181
2182;@ EaCalc : Get '(a0)+' into r11:
2183  and r2,r8,#0x000f
2184  ldr r11,[r7,r2,lsl #2]
2185  add r3,r11,#2 ;@ Post-increment An
2186  str r3,[r7,r2,lsl #2]
2187;@ EaRead : Read '(a0)+' (address in r11) into r0:
2188  add lr,pc,#4
2189  mov r0,r11
2190  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
2191
2192  mov r10,r10,asl #16
2193;@ Do arithmetic:
2194  orrs r1,r10,r0,asl #16
2195  and r10,r1,#0x80000000 ;@ r10=N_flag
2196  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2197
2198;@ EaWrite: Write r1 into '(a0)+' (address in r11):
2199  mov r1,r1,lsr #16
2200  add lr,pc,#4
2201  mov r0,r11
2202  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
2203
2204  ldrh r8,[r4],#2 ;@ Fetch next opcode
2205  subs r5,r5,#16 ;@ Subtract cycles
2206  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2207  b CycloneEnd
2208
2209;@ ---------- [0060] ori.w #$3333, -(a0) uses Op0060 ----------
2210Op0060:
2211;@ EaCalc : Get '#$3333' into r10:
2212  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2213;@ EaRead : Read '#$3333' (address in r10) into r10:
2214
2215;@ EaCalc : Get '-(a0)' into r11:
2216  and r2,r8,#0x000f
2217  orr r2,r2,#0x8 ;@ A0-7
2218  ldr r11,[r7,r2,lsl #2]
2219  sub r11,r11,#2 ;@ Pre-decrement An
2220  str r11,[r7,r2,lsl #2]
2221;@ EaRead : Read '-(a0)' (address in r11) into r0:
2222  add lr,pc,#4
2223  mov r0,r11
2224  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
2225
2226  mov r10,r10,asl #16
2227;@ Do arithmetic:
2228  orrs r1,r10,r0,asl #16
2229  and r10,r1,#0x80000000 ;@ r10=N_flag
2230  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2231
2232;@ EaWrite: Write r1 into '-(a0)' (address in r11):
2233  mov r1,r1,lsr #16
2234  add lr,pc,#4
2235  mov r0,r11
2236  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
2237
2238  ldrh r8,[r4],#2 ;@ Fetch next opcode
2239  subs r5,r5,#18 ;@ Subtract cycles
2240  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2241  b CycloneEnd
2242
2243;@ ---------- [0068] ori.w #$3333, ($3333,a0) uses Op0068 ----------
2244Op0068:
2245;@ EaCalc : Get '#$3333' into r10:
2246  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2247;@ EaRead : Read '#$3333' (address in r10) into r10:
2248
2249;@ EaCalc : Get '($3333,a0)' into r11:
2250  ldrsh r0,[r4],#2 ;@ Fetch offset
2251  and r2,r8,#0x000f
2252  ldr r2,[r7,r2,lsl #2]
2253  add r11,r0,r2 ;@ Add on offset
2254;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
2255  add lr,pc,#4
2256  mov r0,r11
2257  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
2258
2259  mov r10,r10,asl #16
2260;@ Do arithmetic:
2261  orrs r1,r10,r0,asl #16
2262  and r10,r1,#0x80000000 ;@ r10=N_flag
2263  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2264
2265;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
2266  mov r1,r1,lsr #16
2267  add lr,pc,#4
2268  mov r0,r11
2269  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
2270
2271  ldrh r8,[r4],#2 ;@ Fetch next opcode
2272  subs r5,r5,#20 ;@ Subtract cycles
2273  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2274  b CycloneEnd
2275
2276;@ ---------- [0070] ori.w #$3333, ($33,a0,d3.w*2) uses Op0070 ----------
2277Op0070:
2278;@ EaCalc : Get '#$3333' into r10:
2279  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2280;@ EaRead : Read '#$3333' (address in r10) into r10:
2281
2282;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
2283;@ Get extension word into r3:
2284  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
2285  mov r2,r3,lsr #10
2286  tst r3,#0x0800 ;@ Is Rn Word or Long
2287  and r2,r2,#0x3c ;@ r2=Index of Rn
2288  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
2289  ldrne   r2,[r7,r2] ;@ r2=Rn.l
2290  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
2291  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
2292  and r2,r8,#0x000f
2293  orr r2,r2,#0x8 ;@ A0-7
2294  ldr r2,[r7,r2,lsl #2]
2295  add r11,r2,r3 ;@ r11=Disp+An+Rn
2296;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
2297  add lr,pc,#4
2298  mov r0,r11
2299  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
2300
2301  mov r10,r10,asl #16
2302;@ Do arithmetic:
2303  orrs r1,r10,r0,asl #16
2304  and r10,r1,#0x80000000 ;@ r10=N_flag
2305  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2306
2307;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
2308  mov r1,r1,lsr #16
2309  add lr,pc,#4
2310  mov r0,r11
2311  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
2312
2313  ldrh r8,[r4],#2 ;@ Fetch next opcode
2314  subs r5,r5,#22 ;@ Subtract cycles
2315  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2316  b CycloneEnd
2317
2318;@ ---------- [0078] ori.w #$3333, $3333.w uses Op0078 ----------
2319Op0078:
2320;@ EaCalc : Get '#$3333' into r10:
2321  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2322;@ EaRead : Read '#$3333' (address in r10) into r10:
2323
2324;@ EaCalc : Get '$3333.w' into r11:
2325  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
2326;@ EaRead : Read '$3333.w' (address in r11) into r0:
2327  add lr,pc,#4
2328  mov r0,r11
2329  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
2330
2331  mov r10,r10,asl #16
2332;@ Do arithmetic:
2333  orrs r1,r10,r0,asl #16
2334  and r10,r1,#0x80000000 ;@ r10=N_flag
2335  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2336
2337;@ EaWrite: Write r1 into '$3333.w' (address in r11):
2338  mov r1,r1,lsr #16
2339  add lr,pc,#4
2340  mov r0,r11
2341  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
2342
2343  ldrh r8,[r4],#2 ;@ Fetch next opcode
2344  subs r5,r5,#20 ;@ Subtract cycles
2345  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2346  b CycloneEnd
2347
2348;@ ---------- [0079] ori.w #$3333, $33333333.l uses Op0079 ----------
2349Op0079:
2350;@ EaCalc : Get '#$3333' into r10:
2351  ldrsh r10,[r4],#2 ;@ Fetch immediate value
2352;@ EaRead : Read '#$3333' (address in r10) into r10:
2353
2354;@ EaCalc : Get '$33333333.l' into r11:
2355  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
2356  ldrh r0,[r4],#2
2357  orr r11,r0,r2,lsl #16
2358;@ EaRead : Read '$33333333.l' (address in r11) into r0:
2359  add lr,pc,#4
2360  mov r0,r11
2361  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
2362
2363  mov r10,r10,asl #16
2364;@ Do arithmetic:
2365  orrs r1,r10,r0,asl #16
2366  and r10,r1,#0x80000000 ;@ r10=N_flag
2367  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2368
2369;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
2370  mov r1,r1,lsr #16
2371  add lr,pc,#4
2372  mov r0,r11
2373  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
2374
2375  ldrh r8,[r4],#2 ;@ Fetch next opcode
2376  subs r5,r5,#24 ;@ Subtract cycles
2377  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2378  b CycloneEnd
2379
2380;@ ---------- [007c] ori.w #$3333, sr uses Op007c ----------
2381Op007c:
2382  ldr r11,[r7,#0x44] ;@ Get SR high
2383  tst r11,#0x20 ;@ Check we are in supervisor mode
2384  beq WrongPrivilegeMode ;@ No
2385
2386;@ EaCalc : Get '#$3333' into r0:
2387  ldrsh r0,[r4],#2 ;@ Fetch immediate value
2388;@ EaRead : Read '#$3333' (address in r0) into r0:
2389
2390  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
2391  tst r1,#1           ;@ 1 if C!=V
2392  eorne r0,r0,#3      ;@ ___XNZCV
2393  ldr r2,[r7,#0x4c]   ;@ Load old X bit
2394  orr r10,r10,r0,lsl #28
2395  orr r2,r2,r0,lsl #25 ;@ X bit
2396  orr r1,r11,r0,lsr #8
2397  and r1,r1,#0xa7 ;@ mask-out unused bits
2398  str r2,[r7,#0x4c]   ;@ Save X bit
2399  strb r1,[r7,#0x44]
2400
2401  ldrh r8,[r4],#2 ;@ Fetch next opcode
2402  ldr r1,[r7,#0x44]
2403  subs r5,r5,#20 ;@ Subtract cycles
2404;@ CheckTrace:
2405  tst r1,#0x80
2406  bne CycloneDoTraceWithChecks
2407  cmp r5,#0
2408  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2409  b CycloneEnd
2410
2411;@ ---------- [0080] ori.l #$33333333, d0 uses Op0080 ----------
2412Op0080:
2413;@ EaCalc : Get '#$33333333' into r10:
2414  ldrh r2,[r4],#2 ;@ Fetch immediate value
2415  ldrh r3,[r4],#2
2416  orr r10,r3,r2,lsl #16
2417;@ EaRead : Read '#$33333333' (address in r10) into r10:
2418
2419;@ EaCalc : Get register index into r11:
2420  and r11,r8,#0x000f
2421;@ EaRead : Read register[r11] into r0:
2422  ldr r0,[r7,r11,lsl #2]
2423
2424;@ Do arithmetic:
2425  orrs r1,r10,r0
2426  and r10,r1,#0x80000000 ;@ r10=N_flag
2427  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2428
2429;@ EaWrite: r1 into register[r11]:
2430  str r1,[r7,r11,lsl #2]
2431
2432  ldrh r8,[r4],#2 ;@ Fetch next opcode
2433  subs r5,r5,#16 ;@ Subtract cycles
2434  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2435  b CycloneEnd
2436
2437;@ ---------- [0090] ori.l #$33333333, (a0) uses Op0090 ----------
2438Op0090:
2439;@ EaCalc : Get '#$33333333' into r10:
2440  ldrh r2,[r4],#2 ;@ Fetch immediate value
2441  ldrh r3,[r4],#2
2442  orr r10,r3,r2,lsl #16
2443;@ EaRead : Read '#$33333333' (address in r10) into r10:
2444
2445;@ EaCalc : Get '(a0)' into r11:
2446  and r2,r8,#0x000f
2447  orr r2,r2,#0x8 ;@ A0-7
2448  ldr r11,[r7,r2,lsl #2]
2449;@ EaRead : Read '(a0)' (address in r11) into r0:
2450  add lr,pc,#4
2451  mov r0,r11
2452  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
2453
2454;@ Do arithmetic:
2455  orrs r1,r10,r0
2456  and r10,r1,#0x80000000 ;@ r10=N_flag
2457  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2458
2459;@ EaWrite: Write r1 into '(a0)' (address in r11):
2460  add lr,pc,#4
2461  mov r0,r11
2462  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
2463
2464  ldrh r8,[r4],#2 ;@ Fetch next opcode
2465  subs r5,r5,#28 ;@ Subtract cycles
2466  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2467  b CycloneEnd
2468
2469;@ ---------- [0098] ori.l #$33333333, (a0)+ uses Op0098 ----------
2470Op0098:
2471;@ EaCalc : Get '#$33333333' into r10:
2472  ldrh r2,[r4],#2 ;@ Fetch immediate value
2473  ldrh r3,[r4],#2
2474  orr r10,r3,r2,lsl #16
2475;@ EaRead : Read '#$33333333' (address in r10) into r10:
2476
2477;@ EaCalc : Get '(a0)+' into r11:
2478  and r2,r8,#0x000f
2479  ldr r11,[r7,r2,lsl #2]
2480  add r3,r11,#4 ;@ Post-increment An
2481  str r3,[r7,r2,lsl #2]
2482;@ EaRead : Read '(a0)+' (address in r11) into r0:
2483  add lr,pc,#4
2484  mov r0,r11
2485  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
2486
2487;@ Do arithmetic:
2488  orrs r1,r10,r0
2489  and r10,r1,#0x80000000 ;@ r10=N_flag
2490  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2491
2492;@ EaWrite: Write r1 into '(a0)+' (address in r11):
2493  add lr,pc,#4
2494  mov r0,r11
2495  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
2496
2497  ldrh r8,[r4],#2 ;@ Fetch next opcode
2498  subs r5,r5,#28 ;@ Subtract cycles
2499  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2500  b CycloneEnd
2501
2502;@ ---------- [00a0] ori.l #$33333333, -(a0) uses Op00a0 ----------
2503Op00a0:
2504;@ EaCalc : Get '#$33333333' into r10:
2505  ldrh r2,[r4],#2 ;@ Fetch immediate value
2506  ldrh r3,[r4],#2
2507  orr r10,r3,r2,lsl #16
2508;@ EaRead : Read '#$33333333' (address in r10) into r10:
2509
2510;@ EaCalc : Get '-(a0)' into r11:
2511  and r2,r8,#0x000f
2512  orr r2,r2,#0x8 ;@ A0-7
2513  ldr r11,[r7,r2,lsl #2]
2514  sub r11,r11,#4 ;@ Pre-decrement An
2515  str r11,[r7,r2,lsl #2]
2516;@ EaRead : Read '-(a0)' (address in r11) into r0:
2517  add lr,pc,#4
2518  mov r0,r11
2519  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
2520
2521;@ Do arithmetic:
2522  orrs r1,r10,r0
2523  and r10,r1,#0x80000000 ;@ r10=N_flag
2524  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2525
2526;@ EaWrite: Write r1 into '-(a0)' (address in r11):
2527  add lr,pc,#4
2528  mov r0,r11
2529  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
2530
2531  ldrh r8,[r4],#2 ;@ Fetch next opcode
2532  subs r5,r5,#30 ;@ Subtract cycles
2533  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2534  b CycloneEnd
2535
2536;@ ---------- [00a8] ori.l #$33333333, ($3333,a0) uses Op00a8 ----------
2537Op00a8:
2538;@ EaCalc : Get '#$33333333' into r10:
2539  ldrh r2,[r4],#2 ;@ Fetch immediate value
2540  ldrh r3,[r4],#2
2541  orr r10,r3,r2,lsl #16
2542;@ EaRead : Read '#$33333333' (address in r10) into r10:
2543
2544;@ EaCalc : Get '($3333,a0)' into r11:
2545  ldrsh r0,[r4],#2 ;@ Fetch offset
2546  and r2,r8,#0x000f
2547  ldr r2,[r7,r2,lsl #2]
2548  add r11,r0,r2 ;@ Add on offset
2549;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
2550  add lr,pc,#4
2551  mov r0,r11
2552  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
2553
2554;@ Do arithmetic:
2555  orrs r1,r10,r0
2556  and r10,r1,#0x80000000 ;@ r10=N_flag
2557  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2558
2559;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
2560  add lr,pc,#4
2561  mov r0,r11
2562  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
2563
2564  ldrh r8,[r4],#2 ;@ Fetch next opcode
2565  subs r5,r5,#32 ;@ Subtract cycles
2566  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2567  b CycloneEnd
2568
2569;@ ---------- [00b0] ori.l #$33333333, ($33,a0,d3.w*2) uses Op00b0 ----------
2570Op00b0:
2571;@ EaCalc : Get '#$33333333' into r10:
2572  ldrh r2,[r4],#2 ;@ Fetch immediate value
2573  ldrh r3,[r4],#2
2574  orr r10,r3,r2,lsl #16
2575;@ EaRead : Read '#$33333333' (address in r10) into r10:
2576
2577;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
2578;@ Get extension word into r3:
2579  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
2580  mov r2,r3,lsr #10
2581  tst r3,#0x0800 ;@ Is Rn Word or Long
2582  and r2,r2,#0x3c ;@ r2=Index of Rn
2583  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
2584  ldrne   r2,[r7,r2] ;@ r2=Rn.l
2585  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
2586  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
2587  and r2,r8,#0x000f
2588  orr r2,r2,#0x8 ;@ A0-7
2589  ldr r2,[r7,r2,lsl #2]
2590  add r11,r2,r3 ;@ r11=Disp+An+Rn
2591;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
2592  add lr,pc,#4
2593  mov r0,r11
2594  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
2595
2596;@ Do arithmetic:
2597  orrs r1,r10,r0
2598  and r10,r1,#0x80000000 ;@ r10=N_flag
2599  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2600
2601;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
2602  add lr,pc,#4
2603  mov r0,r11
2604  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
2605
2606  ldrh r8,[r4],#2 ;@ Fetch next opcode
2607  subs r5,r5,#34 ;@ Subtract cycles
2608  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2609  b CycloneEnd
2610
2611;@ ---------- [00b8] ori.l #$33333333, $3333.w uses Op00b8 ----------
2612Op00b8:
2613;@ EaCalc : Get '#$33333333' into r10:
2614  ldrh r2,[r4],#2 ;@ Fetch immediate value
2615  ldrh r3,[r4],#2
2616  orr r10,r3,r2,lsl #16
2617;@ EaRead : Read '#$33333333' (address in r10) into r10:
2618
2619;@ EaCalc : Get '$3333.w' into r11:
2620  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
2621;@ EaRead : Read '$3333.w' (address in r11) into r0:
2622  add lr,pc,#4
2623  mov r0,r11
2624  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
2625
2626;@ Do arithmetic:
2627  orrs r1,r10,r0
2628  and r10,r1,#0x80000000 ;@ r10=N_flag
2629  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2630
2631;@ EaWrite: Write r1 into '$3333.w' (address in r11):
2632  add lr,pc,#4
2633  mov r0,r11
2634  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
2635
2636  ldrh r8,[r4],#2 ;@ Fetch next opcode
2637  subs r5,r5,#32 ;@ Subtract cycles
2638  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2639  b CycloneEnd
2640
2641;@ ---------- [00b9] ori.l #$33333333, $33333333.l uses Op00b9 ----------
2642Op00b9:
2643;@ EaCalc : Get '#$33333333' into r10:
2644  ldrh r2,[r4],#2 ;@ Fetch immediate value
2645  ldrh r3,[r4],#2
2646  orr r10,r3,r2,lsl #16
2647;@ EaRead : Read '#$33333333' (address in r10) into r10:
2648
2649;@ EaCalc : Get '$33333333.l' into r11:
2650  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
2651  ldrh r0,[r4],#2
2652  orr r11,r0,r2,lsl #16
2653;@ EaRead : Read '$33333333.l' (address in r11) into r0:
2654  add lr,pc,#4
2655  mov r0,r11
2656  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
2657
2658;@ Do arithmetic:
2659  orrs r1,r10,r0
2660  and r10,r1,#0x80000000 ;@ r10=N_flag
2661  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
2662
2663;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
2664  add lr,pc,#4
2665  mov r0,r11
2666  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
2667
2668  ldrh r8,[r4],#2 ;@ Fetch next opcode
2669  subs r5,r5,#36 ;@ Subtract cycles
2670  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2671  b CycloneEnd
2672
2673;@ ---------- [0100] btst d0, d0 uses Op0100 ----------
2674Op0100:
2675;@ EaCalc : Get register index into r11:
2676  and r11,r8,#0x0e00
2677;@ EaRead : Read register[r11] into r11:
2678  ldr r11,[r7,r11,lsr #7]
2679
2680;@ EaCalc : Get register index into r0:
2681  and r0,r8,#0x000f
2682;@ EaRead : Read register[r0] into r0:
2683  ldr r0,[r7,r0,lsl #2]
2684
2685  and r11,r11,#31 ;@ reg - do mod 32
2686
2687  mov r1,#1
2688  tst r0,r1,lsl r11 ;@ Do arithmetic
2689  bicne r10,r10,#0x40000000
2690  orreq r10,r10,#0x40000000 ;@ Get Z flag
2691
2692  ldrh r8,[r4],#2 ;@ Fetch next opcode
2693  subs r5,r5,#6 ;@ Subtract cycles
2694  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2695  b CycloneEnd
2696
2697;@ ---------- [0108] movep.w ($3333,a0), d0 uses Op0108 ----------
2698Op0108:
2699;@ EaCalc : Get '($3333,a0)' into r6:
2700  ldrsh r0,[r4],#2 ;@ Fetch offset
2701  and r2,r8,#0x000f
2702  ldr r2,[r7,r2,lsl #2]
2703  add r6,r0,r2 ;@ Add on offset
2704;@ EaRead : Read '($3333,a0)' (address in r6) into r11:
2705  add lr,pc,#4
2706  mov r0,r6
2707  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2708  mov r11,r0,asl #24
2709
2710  add r0,r6,#2
2711;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
2712  mov lr,pc
2713  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2714  mov r1,r0,asl #24
2715
2716  orr r1,r11,r1,lsr #8 ;@ second byte
2717;@ EaCalc : Get register index into r0:
2718  and r0,r8,#0x0e00
2719  mov r0,r0,lsr #7
2720;@ EaWrite: r1 into register[r0]:
2721  mov r1,r1,lsr #16
2722  strh r1,[r7,r0]
2723
2724  ldr r6,[r7,#0x54]
2725  ldrh r8,[r4],#2 ;@ Fetch next opcode
2726  subs r5,r5,#16 ;@ Subtract cycles
2727  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2728  b CycloneEnd
2729
2730;@ ---------- [0110] btst d0, (a0) uses Op0110 ----------
2731Op0110:
2732;@ EaCalc : Get register index into r11:
2733  and r11,r8,#0x0e00
2734;@ EaRead : Read register[r11] into r11:
2735  ldr r11,[r7,r11,lsr #7]
2736
2737;@ EaCalc : Get '(a0)' into r0:
2738  and r2,r8,#0x000f
2739  orr r2,r2,#0x8 ;@ A0-7
2740  ldr r0,[r7,r2,lsl #2]
2741;@ EaRead : Read '(a0)' (address in r0) into r0:
2742  mov lr,pc
2743  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2744
2745  and r11,r11,#7  ;@ mem - do mod 8
2746
2747  mov r1,#1
2748  tst r0,r1,lsl r11 ;@ Do arithmetic
2749  bicne r10,r10,#0x40000000
2750  orreq r10,r10,#0x40000000 ;@ Get Z flag
2751
2752  ldrh r8,[r4],#2 ;@ Fetch next opcode
2753  subs r5,r5,#8 ;@ Subtract cycles
2754  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2755  b CycloneEnd
2756
2757;@ ---------- [0118] btst d0, (a0)+ uses Op0118 ----------
2758Op0118:
2759;@ EaCalc : Get register index into r11:
2760  and r11,r8,#0x0e00
2761;@ EaRead : Read register[r11] into r11:
2762  ldr r11,[r7,r11,lsr #7]
2763
2764;@ EaCalc : Get '(a0)+' into r0:
2765  and r2,r8,#0x000f
2766  ldr r0,[r7,r2,lsl #2]
2767  add r3,r0,#1 ;@ Post-increment An
2768  str r3,[r7,r2,lsl #2]
2769;@ EaRead : Read '(a0)+' (address in r0) into r0:
2770  mov lr,pc
2771  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2772
2773  and r11,r11,#7  ;@ mem - do mod 8
2774
2775  mov r1,#1
2776  tst r0,r1,lsl r11 ;@ Do arithmetic
2777  bicne r10,r10,#0x40000000
2778  orreq r10,r10,#0x40000000 ;@ Get Z flag
2779
2780  ldrh r8,[r4],#2 ;@ Fetch next opcode
2781  subs r5,r5,#8 ;@ Subtract cycles
2782  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2783  b CycloneEnd
2784
2785;@ ---------- [011f] btst d0, (a7)+ uses Op011f ----------
2786Op011f:
2787;@ EaCalc : Get register index into r11:
2788  and r11,r8,#0x0e00
2789;@ EaRead : Read register[r11] into r11:
2790  ldr r11,[r7,r11,lsr #7]
2791
2792;@ EaCalc : Get '(a7)+' into r0:
2793  ldr r0,[r7,#0x3c] ;@ A7
2794  add r3,r0,#2 ;@ Post-increment An
2795  str r3,[r7,#0x3c] ;@ A7
2796;@ EaRead : Read '(a7)+' (address in r0) into r0:
2797  mov lr,pc
2798  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2799
2800  and r11,r11,#7  ;@ mem - do mod 8
2801
2802  mov r1,#1
2803  tst r0,r1,lsl r11 ;@ Do arithmetic
2804  bicne r10,r10,#0x40000000
2805  orreq r10,r10,#0x40000000 ;@ Get Z flag
2806
2807  ldrh r8,[r4],#2 ;@ Fetch next opcode
2808  subs r5,r5,#8 ;@ Subtract cycles
2809  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2810  b CycloneEnd
2811
2812;@ ---------- [0120] btst d0, -(a0) uses Op0120 ----------
2813Op0120:
2814;@ EaCalc : Get register index into r11:
2815  and r11,r8,#0x0e00
2816;@ EaRead : Read register[r11] into r11:
2817  ldr r11,[r7,r11,lsr #7]
2818
2819;@ EaCalc : Get '-(a0)' into r0:
2820  and r2,r8,#0x000f
2821  orr r2,r2,#0x8 ;@ A0-7
2822  ldr r0,[r7,r2,lsl #2]
2823  sub r0,r0,#1 ;@ Pre-decrement An
2824  str r0,[r7,r2,lsl #2]
2825;@ EaRead : Read '-(a0)' (address in r0) into r0:
2826  mov lr,pc
2827  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2828
2829  and r11,r11,#7  ;@ mem - do mod 8
2830
2831  mov r1,#1
2832  tst r0,r1,lsl r11 ;@ Do arithmetic
2833  bicne r10,r10,#0x40000000
2834  orreq r10,r10,#0x40000000 ;@ Get Z flag
2835
2836  ldrh r8,[r4],#2 ;@ Fetch next opcode
2837  subs r5,r5,#10 ;@ Subtract cycles
2838  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2839  b CycloneEnd
2840
2841;@ ---------- [0127] btst d0, -(a7) uses Op0127 ----------
2842Op0127:
2843;@ EaCalc : Get register index into r11:
2844  and r11,r8,#0x0e00
2845;@ EaRead : Read register[r11] into r11:
2846  ldr r11,[r7,r11,lsr #7]
2847
2848;@ EaCalc : Get '-(a7)' into r0:
2849  ldr r0,[r7,#0x3c] ;@ A7
2850  sub r0,r0,#2 ;@ Pre-decrement An
2851  str r0,[r7,#0x3c] ;@ A7
2852;@ EaRead : Read '-(a7)' (address in r0) into r0:
2853  mov lr,pc
2854  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2855
2856  and r11,r11,#7  ;@ mem - do mod 8
2857
2858  mov r1,#1
2859  tst r0,r1,lsl r11 ;@ Do arithmetic
2860  bicne r10,r10,#0x40000000
2861  orreq r10,r10,#0x40000000 ;@ Get Z flag
2862
2863  ldrh r8,[r4],#2 ;@ Fetch next opcode
2864  subs r5,r5,#10 ;@ Subtract cycles
2865  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2866  b CycloneEnd
2867
2868;@ ---------- [0128] btst d0, ($3333,a0) uses Op0128 ----------
2869Op0128:
2870;@ EaCalc : Get register index into r11:
2871  and r11,r8,#0x0e00
2872;@ EaRead : Read register[r11] into r11:
2873  ldr r11,[r7,r11,lsr #7]
2874
2875;@ EaCalc : Get '($3333,a0)' into r0:
2876  ldrsh r0,[r4],#2 ;@ Fetch offset
2877  and r2,r8,#0x000f
2878  ldr r2,[r7,r2,lsl #2]
2879  add r0,r0,r2 ;@ Add on offset
2880;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
2881  mov lr,pc
2882  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2883
2884  and r11,r11,#7  ;@ mem - do mod 8
2885
2886  mov r1,#1
2887  tst r0,r1,lsl r11 ;@ Do arithmetic
2888  bicne r10,r10,#0x40000000
2889  orreq r10,r10,#0x40000000 ;@ Get Z flag
2890
2891  ldrh r8,[r4],#2 ;@ Fetch next opcode
2892  subs r5,r5,#12 ;@ Subtract cycles
2893  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2894  b CycloneEnd
2895
2896;@ ---------- [0130] btst d0, ($33,a0,d3.w*2) uses Op0130 ----------
2897Op0130:
2898;@ EaCalc : Get register index into r11:
2899  and r11,r8,#0x0e00
2900;@ EaRead : Read register[r11] into r11:
2901  ldr r11,[r7,r11,lsr #7]
2902
2903;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
2904;@ Get extension word into r3:
2905  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
2906  mov r2,r3,lsr #10
2907  tst r3,#0x0800 ;@ Is Rn Word or Long
2908  and r2,r2,#0x3c ;@ r2=Index of Rn
2909  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
2910  ldrne   r2,[r7,r2] ;@ r2=Rn.l
2911  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
2912  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
2913  and r2,r8,#0x000f
2914  orr r2,r2,#0x8 ;@ A0-7
2915  ldr r2,[r7,r2,lsl #2]
2916  add r0,r2,r3 ;@ r0=Disp+An+Rn
2917;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
2918  mov lr,pc
2919  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2920
2921  and r11,r11,#7  ;@ mem - do mod 8
2922
2923  mov r1,#1
2924  tst r0,r1,lsl r11 ;@ Do arithmetic
2925  bicne r10,r10,#0x40000000
2926  orreq r10,r10,#0x40000000 ;@ Get Z flag
2927
2928  ldrh r8,[r4],#2 ;@ Fetch next opcode
2929  subs r5,r5,#14 ;@ Subtract cycles
2930  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2931  b CycloneEnd
2932
2933;@ ---------- [0138] btst d0, $3333.w uses Op0138 ----------
2934Op0138:
2935;@ EaCalc : Get register index into r11:
2936  and r11,r8,#0x0e00
2937;@ EaRead : Read register[r11] into r11:
2938  ldr r11,[r7,r11,lsr #7]
2939
2940;@ EaCalc : Get '$3333.w' into r0:
2941  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
2942;@ EaRead : Read '$3333.w' (address in r0) into r0:
2943  mov lr,pc
2944  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2945
2946  and r11,r11,#7  ;@ mem - do mod 8
2947
2948  mov r1,#1
2949  tst r0,r1,lsl r11 ;@ Do arithmetic
2950  bicne r10,r10,#0x40000000
2951  orreq r10,r10,#0x40000000 ;@ Get Z flag
2952
2953  ldrh r8,[r4],#2 ;@ Fetch next opcode
2954  subs r5,r5,#12 ;@ Subtract cycles
2955  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2956  b CycloneEnd
2957
2958;@ ---------- [0139] btst d0, $33333333.l uses Op0139 ----------
2959Op0139:
2960;@ EaCalc : Get register index into r11:
2961  and r11,r8,#0x0e00
2962;@ EaRead : Read register[r11] into r11:
2963  ldr r11,[r7,r11,lsr #7]
2964
2965;@ EaCalc : Get '$33333333.l' into r0:
2966  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
2967  ldrh r0,[r4],#2
2968  orr r0,r0,r2,lsl #16
2969;@ EaRead : Read '$33333333.l' (address in r0) into r0:
2970  mov lr,pc
2971  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
2972
2973  and r11,r11,#7  ;@ mem - do mod 8
2974
2975  mov r1,#1
2976  tst r0,r1,lsl r11 ;@ Do arithmetic
2977  bicne r10,r10,#0x40000000
2978  orreq r10,r10,#0x40000000 ;@ Get Z flag
2979
2980  ldrh r8,[r4],#2 ;@ Fetch next opcode
2981  subs r5,r5,#16 ;@ Subtract cycles
2982  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
2983  b CycloneEnd
2984
2985;@ ---------- [013a] btst d0, ($3333,pc); =3335 uses Op013a ----------
2986Op013a:
2987;@ EaCalc : Get register index into r11:
2988  and r11,r8,#0x0e00
2989;@ EaRead : Read register[r11] into r11:
2990  ldr r11,[r7,r11,lsr #7]
2991
2992;@ EaCalc : Get '($3333,pc)' into r0:
2993  ldr r0,[r7,#0x60] ;@ Get Memory base
2994  sub r0,r4,r0 ;@ Real PC
2995  ldrsh r2,[r4],#2 ;@ Fetch extension
2996  add r0,r2,r0 ;@ ($nn,PC)
2997;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
2998  mov lr,pc
2999  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
3000
3001  and r11,r11,#7  ;@ mem - do mod 8
3002
3003  mov r1,#1
3004  tst r0,r1,lsl r11 ;@ Do arithmetic
3005  bicne r10,r10,#0x40000000
3006  orreq r10,r10,#0x40000000 ;@ Get Z flag
3007
3008  ldrh r8,[r4],#2 ;@ Fetch next opcode
3009  subs r5,r5,#12 ;@ Subtract cycles
3010  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3011  b CycloneEnd
3012
3013;@ ---------- [013b] btst d0, ($33,pc,d3.w*2); =35 uses Op013b ----------
3014Op013b:
3015;@ EaCalc : Get register index into r11:
3016  and r11,r8,#0x0e00
3017;@ EaRead : Read register[r11] into r11:
3018  ldr r11,[r7,r11,lsr #7]
3019
3020;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
3021  ldr r0,[r7,#0x60] ;@ Get Memory base
3022  ldrh r3,[r4] ;@ Get extension word
3023  sub r0,r4,r0 ;@ r0=PC
3024  add r4,r4,#2
3025  mov r2,r3,lsr #10
3026  tst r3,#0x0800 ;@ Is Rn Word or Long
3027  and r2,r2,#0x3c ;@ r2=Index of Rn
3028  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
3029  ldrne   r2,[r7,r2] ;@ r2=Rn.l
3030  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
3031  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
3032  add r0,r2,r0 ;@ r0=Disp+PC+Rn
3033;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
3034  mov lr,pc
3035  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
3036
3037  and r11,r11,#7  ;@ mem - do mod 8
3038
3039  mov r1,#1
3040  tst r0,r1,lsl r11 ;@ Do arithmetic
3041  bicne r10,r10,#0x40000000
3042  orreq r10,r10,#0x40000000 ;@ Get Z flag
3043
3044  ldrh r8,[r4],#2 ;@ Fetch next opcode
3045  subs r5,r5,#14 ;@ Subtract cycles
3046  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3047  b CycloneEnd
3048
3049;@ ---------- [013c] btst d0, #$33 uses Op013c ----------
3050Op013c:
3051;@ EaCalc : Get register index into r11:
3052  and r11,r8,#0x0e00
3053;@ EaRead : Read register[r11] into r11:
3054  ldr r11,[r7,r11,lsr #7]
3055
3056;@ EaCalc : Get '#$33' into r0:
3057  ldrsb r0,[r4],#2 ;@ Fetch immediate value
3058;@ EaRead : Read '#$33' (address in r0) into r0:
3059
3060  and r11,r11,#7  ;@ mem - do mod 8
3061
3062  mov r1,#1
3063  tst r0,r1,lsl r11 ;@ Do arithmetic
3064  bicne r10,r10,#0x40000000
3065  orreq r10,r10,#0x40000000 ;@ Get Z flag
3066
3067  ldrh r8,[r4],#2 ;@ Fetch next opcode
3068  subs r5,r5,#8 ;@ Subtract cycles
3069  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3070  b CycloneEnd
3071
3072;@ ---------- [0140] bchg d0, d0 uses Op0140 ----------
3073Op0140:
3074;@ EaCalc : Get register index into r11:
3075  and r11,r8,#0x0e00
3076;@ EaRead : Read register[r11] into r11:
3077  ldr r11,[r7,r11,lsr #7]
3078
3079;@ EaCalc : Get register index into r8:
3080  and r8,r8,#0x000f
3081;@ EaRead : Read register[r8] into r0:
3082  ldr r0,[r7,r8,lsl #2]
3083
3084  and r11,r11,#31 ;@ reg - do mod 32
3085
3086  mov r1,#1
3087  tst r0,r1,lsl r11 ;@ Do arithmetic
3088  bicne r10,r10,#0x40000000
3089  orreq r10,r10,#0x40000000 ;@ Get Z flag
3090
3091  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3092
3093;@ EaWrite: r1 into register[r8]:
3094  str r1,[r7,r8,lsl #2]
3095
3096  ldrh r8,[r4],#2 ;@ Fetch next opcode
3097  subs r5,r5,#8 ;@ Subtract cycles
3098  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3099  b CycloneEnd
3100
3101;@ ---------- [0148] movep.l ($3333,a0), d0 uses Op0148 ----------
3102Op0148:
3103;@ EaCalc : Get '($3333,a0)' into r6:
3104  ldrsh r0,[r4],#2 ;@ Fetch offset
3105  and r2,r8,#0x000f
3106  ldr r2,[r7,r2,lsl #2]
3107  add r6,r0,r2 ;@ Add on offset
3108;@ EaRead : Read '($3333,a0)' (address in r6) into r11:
3109  add lr,pc,#4
3110  mov r0,r6
3111  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3112  mov r11,r0,asl #24
3113
3114  add r0,r6,#2
3115;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
3116  mov lr,pc
3117  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3118  mov r1,r0,asl #24
3119
3120  orr r11,r11,r1,lsr #8 ;@ second byte
3121  add r0,r6,#4
3122;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
3123  mov lr,pc
3124  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3125  mov r1,r0,asl #24
3126
3127  orr r11,r11,r1,lsr #16 ;@ third byte
3128  add r0,r6,#6
3129;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
3130  mov lr,pc
3131  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3132  mov r1,r0,asl #24
3133
3134  orr r1,r11,r1,lsr #24 ;@ fourth byte
3135;@ EaCalc : Get register index into r0:
3136  and r0,r8,#0x0e00
3137;@ EaWrite: r1 into register[r0]:
3138  str r1,[r7,r0,lsr #7]
3139
3140  ldr r6,[r7,#0x54]
3141  ldrh r8,[r4],#2 ;@ Fetch next opcode
3142  subs r5,r5,#24 ;@ Subtract cycles
3143  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3144  b CycloneEnd
3145
3146;@ ---------- [0150] bchg d0, (a0) uses Op0150 ----------
3147Op0150:
3148;@ EaCalc : Get register index into r11:
3149  and r11,r8,#0x0e00
3150;@ EaRead : Read register[r11] into r11:
3151  ldr r11,[r7,r11,lsr #7]
3152
3153;@ EaCalc : Get '(a0)' into r8:
3154  and r2,r8,#0x000f
3155  orr r2,r2,#0x8 ;@ A0-7
3156  ldr r8,[r7,r2,lsl #2]
3157;@ EaRead : Read '(a0)' (address in r8) into r0:
3158  add lr,pc,#4
3159  mov r0,r8
3160  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3161
3162  and r11,r11,#7  ;@ mem - do mod 8
3163
3164  mov r1,#1
3165  tst r0,r1,lsl r11 ;@ Do arithmetic
3166  bicne r10,r10,#0x40000000
3167  orreq r10,r10,#0x40000000 ;@ Get Z flag
3168
3169  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3170
3171;@ EaWrite: Write r1 into '(a0)' (address in r8):
3172  and r1,r1,#0xff
3173  add lr,pc,#4
3174  mov r0,r8
3175  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3176
3177  ldrh r8,[r4],#2 ;@ Fetch next opcode
3178  subs r5,r5,#12 ;@ Subtract cycles
3179  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3180  b CycloneEnd
3181
3182;@ ---------- [0158] bchg d0, (a0)+ uses Op0158 ----------
3183Op0158:
3184;@ EaCalc : Get register index into r11:
3185  and r11,r8,#0x0e00
3186;@ EaRead : Read register[r11] into r11:
3187  ldr r11,[r7,r11,lsr #7]
3188
3189;@ EaCalc : Get '(a0)+' into r8:
3190  and r2,r8,#0x000f
3191  ldr r8,[r7,r2,lsl #2]
3192  add r3,r8,#1 ;@ Post-increment An
3193  str r3,[r7,r2,lsl #2]
3194;@ EaRead : Read '(a0)+' (address in r8) into r0:
3195  add lr,pc,#4
3196  mov r0,r8
3197  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3198
3199  and r11,r11,#7  ;@ mem - do mod 8
3200
3201  mov r1,#1
3202  tst r0,r1,lsl r11 ;@ Do arithmetic
3203  bicne r10,r10,#0x40000000
3204  orreq r10,r10,#0x40000000 ;@ Get Z flag
3205
3206  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3207
3208;@ EaWrite: Write r1 into '(a0)+' (address in r8):
3209  and r1,r1,#0xff
3210  add lr,pc,#4
3211  mov r0,r8
3212  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3213
3214  ldrh r8,[r4],#2 ;@ Fetch next opcode
3215  subs r5,r5,#12 ;@ Subtract cycles
3216  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3217  b CycloneEnd
3218
3219;@ ---------- [015f] bchg d0, (a7)+ uses Op015f ----------
3220Op015f:
3221;@ EaCalc : Get register index into r11:
3222  and r11,r8,#0x0e00
3223;@ EaRead : Read register[r11] into r11:
3224  ldr r11,[r7,r11,lsr #7]
3225
3226;@ EaCalc : Get '(a7)+' into r8:
3227  ldr r8,[r7,#0x3c] ;@ A7
3228  add r3,r8,#2 ;@ Post-increment An
3229  str r3,[r7,#0x3c] ;@ A7
3230;@ EaRead : Read '(a7)+' (address in r8) into r0:
3231  add lr,pc,#4
3232  mov r0,r8
3233  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3234
3235  and r11,r11,#7  ;@ mem - do mod 8
3236
3237  mov r1,#1
3238  tst r0,r1,lsl r11 ;@ Do arithmetic
3239  bicne r10,r10,#0x40000000
3240  orreq r10,r10,#0x40000000 ;@ Get Z flag
3241
3242  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3243
3244;@ EaWrite: Write r1 into '(a7)+' (address in r8):
3245  and r1,r1,#0xff
3246  add lr,pc,#4
3247  mov r0,r8
3248  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3249
3250  ldrh r8,[r4],#2 ;@ Fetch next opcode
3251  subs r5,r5,#12 ;@ Subtract cycles
3252  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3253  b CycloneEnd
3254
3255;@ ---------- [0160] bchg d0, -(a0) uses Op0160 ----------
3256Op0160:
3257;@ EaCalc : Get register index into r11:
3258  and r11,r8,#0x0e00
3259;@ EaRead : Read register[r11] into r11:
3260  ldr r11,[r7,r11,lsr #7]
3261
3262;@ EaCalc : Get '-(a0)' into r8:
3263  and r2,r8,#0x000f
3264  orr r2,r2,#0x8 ;@ A0-7
3265  ldr r8,[r7,r2,lsl #2]
3266  sub r8,r8,#1 ;@ Pre-decrement An
3267  str r8,[r7,r2,lsl #2]
3268;@ EaRead : Read '-(a0)' (address in r8) into r0:
3269  add lr,pc,#4
3270  mov r0,r8
3271  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3272
3273  and r11,r11,#7  ;@ mem - do mod 8
3274
3275  mov r1,#1
3276  tst r0,r1,lsl r11 ;@ Do arithmetic
3277  bicne r10,r10,#0x40000000
3278  orreq r10,r10,#0x40000000 ;@ Get Z flag
3279
3280  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3281
3282;@ EaWrite: Write r1 into '-(a0)' (address in r8):
3283  and r1,r1,#0xff
3284  add lr,pc,#4
3285  mov r0,r8
3286  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3287
3288  ldrh r8,[r4],#2 ;@ Fetch next opcode
3289  subs r5,r5,#14 ;@ Subtract cycles
3290  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3291  b CycloneEnd
3292
3293;@ ---------- [0167] bchg d0, -(a7) uses Op0167 ----------
3294Op0167:
3295;@ EaCalc : Get register index into r11:
3296  and r11,r8,#0x0e00
3297;@ EaRead : Read register[r11] into r11:
3298  ldr r11,[r7,r11,lsr #7]
3299
3300;@ EaCalc : Get '-(a7)' into r8:
3301  ldr r8,[r7,#0x3c] ;@ A7
3302  sub r8,r8,#2 ;@ Pre-decrement An
3303  str r8,[r7,#0x3c] ;@ A7
3304;@ EaRead : Read '-(a7)' (address in r8) into r0:
3305  add lr,pc,#4
3306  mov r0,r8
3307  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3308
3309  and r11,r11,#7  ;@ mem - do mod 8
3310
3311  mov r1,#1
3312  tst r0,r1,lsl r11 ;@ Do arithmetic
3313  bicne r10,r10,#0x40000000
3314  orreq r10,r10,#0x40000000 ;@ Get Z flag
3315
3316  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3317
3318;@ EaWrite: Write r1 into '-(a7)' (address in r8):
3319  and r1,r1,#0xff
3320  add lr,pc,#4
3321  mov r0,r8
3322  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3323
3324  ldrh r8,[r4],#2 ;@ Fetch next opcode
3325  subs r5,r5,#14 ;@ Subtract cycles
3326  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3327  b CycloneEnd
3328
3329;@ ---------- [0168] bchg d0, ($3333,a0) uses Op0168 ----------
3330Op0168:
3331;@ EaCalc : Get register index into r11:
3332  and r11,r8,#0x0e00
3333;@ EaRead : Read register[r11] into r11:
3334  ldr r11,[r7,r11,lsr #7]
3335
3336;@ EaCalc : Get '($3333,a0)' into r8:
3337  ldrsh r0,[r4],#2 ;@ Fetch offset
3338  and r2,r8,#0x000f
3339  ldr r2,[r7,r2,lsl #2]
3340  add r8,r0,r2 ;@ Add on offset
3341;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
3342  add lr,pc,#4
3343  mov r0,r8
3344  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
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  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3354
3355;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
3356  and r1,r1,#0xff
3357  add lr,pc,#4
3358  mov r0,r8
3359  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3360
3361  ldrh r8,[r4],#2 ;@ Fetch next opcode
3362  subs r5,r5,#16 ;@ Subtract cycles
3363  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3364  b CycloneEnd
3365
3366;@ ---------- [0170] bchg d0, ($33,a0,d3.w*2) uses Op0170 ----------
3367Op0170:
3368;@ EaCalc : Get register index into r11:
3369  and r11,r8,#0x0e00
3370;@ EaRead : Read register[r11] into r11:
3371  ldr r11,[r7,r11,lsr #7]
3372
3373;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
3374;@ Get extension word into r3:
3375  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
3376  mov r2,r3,lsr #10
3377  tst r3,#0x0800 ;@ Is Rn Word or Long
3378  and r2,r2,#0x3c ;@ r2=Index of Rn
3379  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
3380  ldrne   r2,[r7,r2] ;@ r2=Rn.l
3381  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
3382  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
3383  and r2,r8,#0x000f
3384  orr r2,r2,#0x8 ;@ A0-7
3385  ldr r2,[r7,r2,lsl #2]
3386  add r8,r2,r3 ;@ r8=Disp+An+Rn
3387;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
3388  add lr,pc,#4
3389  mov r0,r8
3390  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3391
3392  and r11,r11,#7  ;@ mem - do mod 8
3393
3394  mov r1,#1
3395  tst r0,r1,lsl r11 ;@ Do arithmetic
3396  bicne r10,r10,#0x40000000
3397  orreq r10,r10,#0x40000000 ;@ Get Z flag
3398
3399  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3400
3401;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
3402  and r1,r1,#0xff
3403  add lr,pc,#4
3404  mov r0,r8
3405  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3406
3407  ldrh r8,[r4],#2 ;@ Fetch next opcode
3408  subs r5,r5,#18 ;@ Subtract cycles
3409  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3410  b CycloneEnd
3411
3412;@ ---------- [0178] bchg d0, $3333.w uses Op0178 ----------
3413Op0178:
3414;@ EaCalc : Get register index into r11:
3415  and r11,r8,#0x0e00
3416;@ EaRead : Read register[r11] into r11:
3417  ldr r11,[r7,r11,lsr #7]
3418
3419;@ EaCalc : Get '$3333.w' into r8:
3420  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
3421;@ EaRead : Read '$3333.w' (address in r8) into r0:
3422  add lr,pc,#4
3423  mov r0,r8
3424  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3425
3426  and r11,r11,#7  ;@ mem - do mod 8
3427
3428  mov r1,#1
3429  tst r0,r1,lsl r11 ;@ Do arithmetic
3430  bicne r10,r10,#0x40000000
3431  orreq r10,r10,#0x40000000 ;@ Get Z flag
3432
3433  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3434
3435;@ EaWrite: Write r1 into '$3333.w' (address in r8):
3436  and r1,r1,#0xff
3437  add lr,pc,#4
3438  mov r0,r8
3439  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3440
3441  ldrh r8,[r4],#2 ;@ Fetch next opcode
3442  subs r5,r5,#16 ;@ Subtract cycles
3443  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3444  b CycloneEnd
3445
3446;@ ---------- [0179] bchg d0, $33333333.l uses Op0179 ----------
3447Op0179:
3448;@ EaCalc : Get register index into r11:
3449  and r11,r8,#0x0e00
3450;@ EaRead : Read register[r11] into r11:
3451  ldr r11,[r7,r11,lsr #7]
3452
3453;@ EaCalc : Get '$33333333.l' into r8:
3454  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
3455  ldrh r0,[r4],#2
3456  orr r8,r0,r2,lsl #16
3457;@ EaRead : Read '$33333333.l' (address in r8) into r0:
3458  add lr,pc,#4
3459  mov r0,r8
3460  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3461
3462  and r11,r11,#7  ;@ mem - do mod 8
3463
3464  mov r1,#1
3465  tst r0,r1,lsl r11 ;@ Do arithmetic
3466  bicne r10,r10,#0x40000000
3467  orreq r10,r10,#0x40000000 ;@ Get Z flag
3468
3469  eor r1,r0,r1,lsl r11 ;@ Toggle bit
3470
3471;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
3472  and r1,r1,#0xff
3473  add lr,pc,#4
3474  mov r0,r8
3475  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3476
3477  ldrh r8,[r4],#2 ;@ Fetch next opcode
3478  subs r5,r5,#20 ;@ Subtract cycles
3479  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3480  b CycloneEnd
3481
3482;@ ---------- [0180] bclr d0, d0 uses Op0180 ----------
3483Op0180:
3484;@ EaCalc : Get register index into r11:
3485  and r11,r8,#0x0e00
3486;@ EaRead : Read register[r11] into r11:
3487  ldr r11,[r7,r11,lsr #7]
3488
3489;@ EaCalc : Get register index into r8:
3490  and r8,r8,#0x000f
3491;@ EaRead : Read register[r8] into r0:
3492  ldr r0,[r7,r8,lsl #2]
3493
3494  and r11,r11,#31 ;@ reg - do mod 32
3495
3496  mov r1,#1
3497  tst r0,r1,lsl r11 ;@ Do arithmetic
3498  bicne r10,r10,#0x40000000
3499  orreq r10,r10,#0x40000000 ;@ Get Z flag
3500
3501  bic r1,r0,r1,lsl r11 ;@ Clear bit
3502
3503;@ EaWrite: r1 into register[r8]:
3504  str r1,[r7,r8,lsl #2]
3505
3506  ldrh r8,[r4],#2 ;@ Fetch next opcode
3507  subs r5,r5,#10 ;@ Subtract cycles
3508  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3509  b CycloneEnd
3510
3511;@ ---------- [0188] movep.w d0, ($3333,a0) uses Op0188 ----------
3512Op0188:
3513;@ EaCalc : Get register index into r11:
3514  and r11,r8,#0x0e00
3515;@ EaRead : Read register[r11] into r11:
3516  ldr r11,[r7,r11,lsr #7]
3517
3518;@ EaCalc : Get '($3333,a0)' into r8:
3519  ldrsh r0,[r4],#2 ;@ Fetch offset
3520  and r2,r8,#0x000f
3521  ldr r2,[r7,r2,lsl #2]
3522  add r8,r0,r2 ;@ Add on offset
3523  mov r0,r8
3524  mov r1,r11,lsr #8 ;@ first or third byte
3525;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
3526  and r1,r1,#0xff
3527  mov lr,pc
3528  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3529
3530  add r0,r8,#2
3531  and r1,r11,#0xff
3532;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
3533  and r1,r1,#0xff
3534  mov lr,pc
3535  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3536
3537  ldrh r8,[r4],#2 ;@ Fetch next opcode
3538  subs r5,r5,#16 ;@ Subtract cycles
3539  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3540  b CycloneEnd
3541
3542;@ ---------- [0190] bclr d0, (a0) uses Op0190 ----------
3543Op0190:
3544;@ EaCalc : Get register index into r11:
3545  and r11,r8,#0x0e00
3546;@ EaRead : Read register[r11] into r11:
3547  ldr r11,[r7,r11,lsr #7]
3548
3549;@ EaCalc : Get '(a0)' into r8:
3550  and r2,r8,#0x000f
3551  orr r2,r2,#0x8 ;@ A0-7
3552  ldr r8,[r7,r2,lsl #2]
3553;@ EaRead : Read '(a0)' (address in r8) into r0:
3554  add lr,pc,#4
3555  mov r0,r8
3556  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3557
3558  and r11,r11,#7  ;@ mem - do mod 8
3559
3560  mov r1,#1
3561  tst r0,r1,lsl r11 ;@ Do arithmetic
3562  bicne r10,r10,#0x40000000
3563  orreq r10,r10,#0x40000000 ;@ Get Z flag
3564
3565  bic r1,r0,r1,lsl r11 ;@ Clear bit
3566
3567;@ EaWrite: Write r1 into '(a0)' (address in r8):
3568  and r1,r1,#0xff
3569  add lr,pc,#4
3570  mov r0,r8
3571  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3572
3573  ldrh r8,[r4],#2 ;@ Fetch next opcode
3574  subs r5,r5,#12 ;@ Subtract cycles
3575  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3576  b CycloneEnd
3577
3578;@ ---------- [0198] bclr d0, (a0)+ uses Op0198 ----------
3579Op0198:
3580;@ EaCalc : Get register index into r11:
3581  and r11,r8,#0x0e00
3582;@ EaRead : Read register[r11] into r11:
3583  ldr r11,[r7,r11,lsr #7]
3584
3585;@ EaCalc : Get '(a0)+' into r8:
3586  and r2,r8,#0x000f
3587  ldr r8,[r7,r2,lsl #2]
3588  add r3,r8,#1 ;@ Post-increment An
3589  str r3,[r7,r2,lsl #2]
3590;@ EaRead : Read '(a0)+' (address in r8) into r0:
3591  add lr,pc,#4
3592  mov r0,r8
3593  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3594
3595  and r11,r11,#7  ;@ mem - do mod 8
3596
3597  mov r1,#1
3598  tst r0,r1,lsl r11 ;@ Do arithmetic
3599  bicne r10,r10,#0x40000000
3600  orreq r10,r10,#0x40000000 ;@ Get Z flag
3601
3602  bic r1,r0,r1,lsl r11 ;@ Clear bit
3603
3604;@ EaWrite: Write r1 into '(a0)+' (address in r8):
3605  and r1,r1,#0xff
3606  add lr,pc,#4
3607  mov r0,r8
3608  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3609
3610  ldrh r8,[r4],#2 ;@ Fetch next opcode
3611  subs r5,r5,#12 ;@ Subtract cycles
3612  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3613  b CycloneEnd
3614
3615;@ ---------- [019f] bclr d0, (a7)+ uses Op019f ----------
3616Op019f:
3617;@ EaCalc : Get register index into r11:
3618  and r11,r8,#0x0e00
3619;@ EaRead : Read register[r11] into r11:
3620  ldr r11,[r7,r11,lsr #7]
3621
3622;@ EaCalc : Get '(a7)+' into r8:
3623  ldr r8,[r7,#0x3c] ;@ A7
3624  add r3,r8,#2 ;@ Post-increment An
3625  str r3,[r7,#0x3c] ;@ A7
3626;@ EaRead : Read '(a7)+' (address in r8) into r0:
3627  add lr,pc,#4
3628  mov r0,r8
3629  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3630
3631  and r11,r11,#7  ;@ mem - do mod 8
3632
3633  mov r1,#1
3634  tst r0,r1,lsl r11 ;@ Do arithmetic
3635  bicne r10,r10,#0x40000000
3636  orreq r10,r10,#0x40000000 ;@ Get Z flag
3637
3638  bic r1,r0,r1,lsl r11 ;@ Clear bit
3639
3640;@ EaWrite: Write r1 into '(a7)+' (address in r8):
3641  and r1,r1,#0xff
3642  add lr,pc,#4
3643  mov r0,r8
3644  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3645
3646  ldrh r8,[r4],#2 ;@ Fetch next opcode
3647  subs r5,r5,#12 ;@ Subtract cycles
3648  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3649  b CycloneEnd
3650
3651;@ ---------- [01a0] bclr d0, -(a0) uses Op01a0 ----------
3652Op01a0:
3653;@ EaCalc : Get register index into r11:
3654  and r11,r8,#0x0e00
3655;@ EaRead : Read register[r11] into r11:
3656  ldr r11,[r7,r11,lsr #7]
3657
3658;@ EaCalc : Get '-(a0)' into r8:
3659  and r2,r8,#0x000f
3660  orr r2,r2,#0x8 ;@ A0-7
3661  ldr r8,[r7,r2,lsl #2]
3662  sub r8,r8,#1 ;@ Pre-decrement An
3663  str r8,[r7,r2,lsl #2]
3664;@ EaRead : Read '-(a0)' (address in r8) into r0:
3665  add lr,pc,#4
3666  mov r0,r8
3667  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3668
3669  and r11,r11,#7  ;@ mem - do mod 8
3670
3671  mov r1,#1
3672  tst r0,r1,lsl r11 ;@ Do arithmetic
3673  bicne r10,r10,#0x40000000
3674  orreq r10,r10,#0x40000000 ;@ Get Z flag
3675
3676  bic r1,r0,r1,lsl r11 ;@ Clear bit
3677
3678;@ EaWrite: Write r1 into '-(a0)' (address in r8):
3679  and r1,r1,#0xff
3680  add lr,pc,#4
3681  mov r0,r8
3682  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3683
3684  ldrh r8,[r4],#2 ;@ Fetch next opcode
3685  subs r5,r5,#14 ;@ Subtract cycles
3686  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3687  b CycloneEnd
3688
3689;@ ---------- [01a7] bclr d0, -(a7) uses Op01a7 ----------
3690Op01a7:
3691;@ EaCalc : Get register index into r11:
3692  and r11,r8,#0x0e00
3693;@ EaRead : Read register[r11] into r11:
3694  ldr r11,[r7,r11,lsr #7]
3695
3696;@ EaCalc : Get '-(a7)' into r8:
3697  ldr r8,[r7,#0x3c] ;@ A7
3698  sub r8,r8,#2 ;@ Pre-decrement An
3699  str r8,[r7,#0x3c] ;@ A7
3700;@ EaRead : Read '-(a7)' (address in r8) into r0:
3701  add lr,pc,#4
3702  mov r0,r8
3703  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3704
3705  and r11,r11,#7  ;@ mem - do mod 8
3706
3707  mov r1,#1
3708  tst r0,r1,lsl r11 ;@ Do arithmetic
3709  bicne r10,r10,#0x40000000
3710  orreq r10,r10,#0x40000000 ;@ Get Z flag
3711
3712  bic r1,r0,r1,lsl r11 ;@ Clear bit
3713
3714;@ EaWrite: Write r1 into '-(a7)' (address in r8):
3715  and r1,r1,#0xff
3716  add lr,pc,#4
3717  mov r0,r8
3718  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3719
3720  ldrh r8,[r4],#2 ;@ Fetch next opcode
3721  subs r5,r5,#14 ;@ Subtract cycles
3722  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3723  b CycloneEnd
3724
3725;@ ---------- [01a8] bclr d0, ($3333,a0) uses Op01a8 ----------
3726Op01a8:
3727;@ EaCalc : Get register index into r11:
3728  and r11,r8,#0x0e00
3729;@ EaRead : Read register[r11] into r11:
3730  ldr r11,[r7,r11,lsr #7]
3731
3732;@ EaCalc : Get '($3333,a0)' into r8:
3733  ldrsh r0,[r4],#2 ;@ Fetch offset
3734  and r2,r8,#0x000f
3735  ldr r2,[r7,r2,lsl #2]
3736  add r8,r0,r2 ;@ Add on offset
3737;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
3738  add lr,pc,#4
3739  mov r0,r8
3740  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3741
3742  and r11,r11,#7  ;@ mem - do mod 8
3743
3744  mov r1,#1
3745  tst r0,r1,lsl r11 ;@ Do arithmetic
3746  bicne r10,r10,#0x40000000
3747  orreq r10,r10,#0x40000000 ;@ Get Z flag
3748
3749  bic r1,r0,r1,lsl r11 ;@ Clear bit
3750
3751;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
3752  and r1,r1,#0xff
3753  add lr,pc,#4
3754  mov r0,r8
3755  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3756
3757  ldrh r8,[r4],#2 ;@ Fetch next opcode
3758  subs r5,r5,#16 ;@ Subtract cycles
3759  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3760  b CycloneEnd
3761
3762;@ ---------- [01b0] bclr d0, ($33,a0,d3.w*2) uses Op01b0 ----------
3763Op01b0:
3764;@ EaCalc : Get register index into r11:
3765  and r11,r8,#0x0e00
3766;@ EaRead : Read register[r11] into r11:
3767  ldr r11,[r7,r11,lsr #7]
3768
3769;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
3770;@ Get extension word into r3:
3771  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
3772  mov r2,r3,lsr #10
3773  tst r3,#0x0800 ;@ Is Rn Word or Long
3774  and r2,r2,#0x3c ;@ r2=Index of Rn
3775  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
3776  ldrne   r2,[r7,r2] ;@ r2=Rn.l
3777  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
3778  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
3779  and r2,r8,#0x000f
3780  orr r2,r2,#0x8 ;@ A0-7
3781  ldr r2,[r7,r2,lsl #2]
3782  add r8,r2,r3 ;@ r8=Disp+An+Rn
3783;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
3784  add lr,pc,#4
3785  mov r0,r8
3786  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3787
3788  and r11,r11,#7  ;@ mem - do mod 8
3789
3790  mov r1,#1
3791  tst r0,r1,lsl r11 ;@ Do arithmetic
3792  bicne r10,r10,#0x40000000
3793  orreq r10,r10,#0x40000000 ;@ Get Z flag
3794
3795  bic r1,r0,r1,lsl r11 ;@ Clear bit
3796
3797;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
3798  and r1,r1,#0xff
3799  add lr,pc,#4
3800  mov r0,r8
3801  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3802
3803  ldrh r8,[r4],#2 ;@ Fetch next opcode
3804  subs r5,r5,#18 ;@ Subtract cycles
3805  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3806  b CycloneEnd
3807
3808;@ ---------- [01b8] bclr d0, $3333.w uses Op01b8 ----------
3809Op01b8:
3810;@ EaCalc : Get register index into r11:
3811  and r11,r8,#0x0e00
3812;@ EaRead : Read register[r11] into r11:
3813  ldr r11,[r7,r11,lsr #7]
3814
3815;@ EaCalc : Get '$3333.w' into r8:
3816  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
3817;@ EaRead : Read '$3333.w' (address in r8) into r0:
3818  add lr,pc,#4
3819  mov r0,r8
3820  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3821
3822  and r11,r11,#7  ;@ mem - do mod 8
3823
3824  mov r1,#1
3825  tst r0,r1,lsl r11 ;@ Do arithmetic
3826  bicne r10,r10,#0x40000000
3827  orreq r10,r10,#0x40000000 ;@ Get Z flag
3828
3829  bic r1,r0,r1,lsl r11 ;@ Clear bit
3830
3831;@ EaWrite: Write r1 into '$3333.w' (address in r8):
3832  and r1,r1,#0xff
3833  add lr,pc,#4
3834  mov r0,r8
3835  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3836
3837  ldrh r8,[r4],#2 ;@ Fetch next opcode
3838  subs r5,r5,#16 ;@ Subtract cycles
3839  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3840  b CycloneEnd
3841
3842;@ ---------- [01b9] bclr d0, $33333333.l uses Op01b9 ----------
3843Op01b9:
3844;@ EaCalc : Get register index into r11:
3845  and r11,r8,#0x0e00
3846;@ EaRead : Read register[r11] into r11:
3847  ldr r11,[r7,r11,lsr #7]
3848
3849;@ EaCalc : Get '$33333333.l' into r8:
3850  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
3851  ldrh r0,[r4],#2
3852  orr r8,r0,r2,lsl #16
3853;@ EaRead : Read '$33333333.l' (address in r8) into r0:
3854  add lr,pc,#4
3855  mov r0,r8
3856  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3857
3858  and r11,r11,#7  ;@ mem - do mod 8
3859
3860  mov r1,#1
3861  tst r0,r1,lsl r11 ;@ Do arithmetic
3862  bicne r10,r10,#0x40000000
3863  orreq r10,r10,#0x40000000 ;@ Get Z flag
3864
3865  bic r1,r0,r1,lsl r11 ;@ Clear bit
3866
3867;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
3868  and r1,r1,#0xff
3869  add lr,pc,#4
3870  mov r0,r8
3871  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3872
3873  ldrh r8,[r4],#2 ;@ Fetch next opcode
3874  subs r5,r5,#20 ;@ Subtract cycles
3875  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3876  b CycloneEnd
3877
3878;@ ---------- [01c0] bset d0, d0 uses Op01c0 ----------
3879Op01c0:
3880;@ EaCalc : Get register index into r11:
3881  and r11,r8,#0x0e00
3882;@ EaRead : Read register[r11] into r11:
3883  ldr r11,[r7,r11,lsr #7]
3884
3885;@ EaCalc : Get register index into r8:
3886  and r8,r8,#0x000f
3887;@ EaRead : Read register[r8] into r0:
3888  ldr r0,[r7,r8,lsl #2]
3889
3890  and r11,r11,#31 ;@ reg - do mod 32
3891
3892  mov r1,#1
3893  tst r0,r1,lsl r11 ;@ Do arithmetic
3894  bicne r10,r10,#0x40000000
3895  orreq r10,r10,#0x40000000 ;@ Get Z flag
3896
3897  orr r1,r0,r1,lsl r11 ;@ Set bit
3898
3899;@ EaWrite: r1 into register[r8]:
3900  str r1,[r7,r8,lsl #2]
3901
3902  ldrh r8,[r4],#2 ;@ Fetch next opcode
3903  subs r5,r5,#8 ;@ Subtract cycles
3904  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3905  b CycloneEnd
3906
3907;@ ---------- [01c8] movep.l d0, ($3333,a0) uses Op01c8 ----------
3908Op01c8:
3909;@ EaCalc : Get register index into r11:
3910  and r11,r8,#0x0e00
3911;@ EaRead : Read register[r11] into r11:
3912  ldr r11,[r7,r11,lsr #7]
3913
3914;@ EaCalc : Get '($3333,a0)' into r8:
3915  ldrsh r0,[r4],#2 ;@ Fetch offset
3916  and r2,r8,#0x000f
3917  ldr r2,[r7,r2,lsl #2]
3918  add r8,r0,r2 ;@ Add on offset
3919  mov r1,r11,lsr #24 ;@ first byte
3920;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
3921  and r1,r1,#0xff
3922  add lr,pc,#4
3923  mov r0,r8
3924  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3925
3926  add r0,r8,#2
3927  mov r1,r11,lsr #16 ;@ second byte
3928;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
3929  and r1,r1,#0xff
3930  mov lr,pc
3931  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3932
3933  add r0,r8,#4
3934  mov r1,r11,lsr #8 ;@ first or third byte
3935;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
3936  and r1,r1,#0xff
3937  mov lr,pc
3938  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3939
3940  add r0,r8,#6
3941  and r1,r11,#0xff
3942;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
3943  and r1,r1,#0xff
3944  mov lr,pc
3945  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3946
3947  ldrh r8,[r4],#2 ;@ Fetch next opcode
3948  subs r5,r5,#24 ;@ Subtract cycles
3949  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3950  b CycloneEnd
3951
3952;@ ---------- [01d0] bset d0, (a0) uses Op01d0 ----------
3953Op01d0:
3954;@ EaCalc : Get register index into r11:
3955  and r11,r8,#0x0e00
3956;@ EaRead : Read register[r11] into r11:
3957  ldr r11,[r7,r11,lsr #7]
3958
3959;@ EaCalc : Get '(a0)' into r8:
3960  and r2,r8,#0x000f
3961  orr r2,r2,#0x8 ;@ A0-7
3962  ldr r8,[r7,r2,lsl #2]
3963;@ EaRead : Read '(a0)' (address in r8) into r0:
3964  add lr,pc,#4
3965  mov r0,r8
3966  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
3967
3968  and r11,r11,#7  ;@ mem - do mod 8
3969
3970  mov r1,#1
3971  tst r0,r1,lsl r11 ;@ Do arithmetic
3972  bicne r10,r10,#0x40000000
3973  orreq r10,r10,#0x40000000 ;@ Get Z flag
3974
3975  orr r1,r0,r1,lsl r11 ;@ Set bit
3976
3977;@ EaWrite: Write r1 into '(a0)' (address in r8):
3978  and r1,r1,#0xff
3979  add lr,pc,#4
3980  mov r0,r8
3981  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
3982
3983  ldrh r8,[r4],#2 ;@ Fetch next opcode
3984  subs r5,r5,#12 ;@ Subtract cycles
3985  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
3986  b CycloneEnd
3987
3988;@ ---------- [01d8] bset d0, (a0)+ uses Op01d8 ----------
3989Op01d8:
3990;@ EaCalc : Get register index into r11:
3991  and r11,r8,#0x0e00
3992;@ EaRead : Read register[r11] into r11:
3993  ldr r11,[r7,r11,lsr #7]
3994
3995;@ EaCalc : Get '(a0)+' into r8:
3996  and r2,r8,#0x000f
3997  ldr r8,[r7,r2,lsl #2]
3998  add r3,r8,#1 ;@ Post-increment An
3999  str r3,[r7,r2,lsl #2]
4000;@ EaRead : Read '(a0)+' (address in r8) into r0:
4001  add lr,pc,#4
4002  mov r0,r8
4003  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4004
4005  and r11,r11,#7  ;@ mem - do mod 8
4006
4007  mov r1,#1
4008  tst r0,r1,lsl r11 ;@ Do arithmetic
4009  bicne r10,r10,#0x40000000
4010  orreq r10,r10,#0x40000000 ;@ Get Z flag
4011
4012  orr r1,r0,r1,lsl r11 ;@ Set bit
4013
4014;@ EaWrite: Write r1 into '(a0)+' (address in r8):
4015  and r1,r1,#0xff
4016  add lr,pc,#4
4017  mov r0,r8
4018  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4019
4020  ldrh r8,[r4],#2 ;@ Fetch next opcode
4021  subs r5,r5,#12 ;@ Subtract cycles
4022  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4023  b CycloneEnd
4024
4025;@ ---------- [01df] bset d0, (a7)+ uses Op01df ----------
4026Op01df:
4027;@ EaCalc : Get register index into r11:
4028  and r11,r8,#0x0e00
4029;@ EaRead : Read register[r11] into r11:
4030  ldr r11,[r7,r11,lsr #7]
4031
4032;@ EaCalc : Get '(a7)+' into r8:
4033  ldr r8,[r7,#0x3c] ;@ A7
4034  add r3,r8,#2 ;@ Post-increment An
4035  str r3,[r7,#0x3c] ;@ A7
4036;@ EaRead : Read '(a7)+' (address in r8) into r0:
4037  add lr,pc,#4
4038  mov r0,r8
4039  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4040
4041  and r11,r11,#7  ;@ mem - do mod 8
4042
4043  mov r1,#1
4044  tst r0,r1,lsl r11 ;@ Do arithmetic
4045  bicne r10,r10,#0x40000000
4046  orreq r10,r10,#0x40000000 ;@ Get Z flag
4047
4048  orr r1,r0,r1,lsl r11 ;@ Set bit
4049
4050;@ EaWrite: Write r1 into '(a7)+' (address in r8):
4051  and r1,r1,#0xff
4052  add lr,pc,#4
4053  mov r0,r8
4054  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4055
4056  ldrh r8,[r4],#2 ;@ Fetch next opcode
4057  subs r5,r5,#12 ;@ Subtract cycles
4058  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4059  b CycloneEnd
4060
4061;@ ---------- [01e0] bset d0, -(a0) uses Op01e0 ----------
4062Op01e0:
4063;@ EaCalc : Get register index into r11:
4064  and r11,r8,#0x0e00
4065;@ EaRead : Read register[r11] into r11:
4066  ldr r11,[r7,r11,lsr #7]
4067
4068;@ EaCalc : Get '-(a0)' into r8:
4069  and r2,r8,#0x000f
4070  orr r2,r2,#0x8 ;@ A0-7
4071  ldr r8,[r7,r2,lsl #2]
4072  sub r8,r8,#1 ;@ Pre-decrement An
4073  str r8,[r7,r2,lsl #2]
4074;@ EaRead : Read '-(a0)' (address in r8) into r0:
4075  add lr,pc,#4
4076  mov r0,r8
4077  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4078
4079  and r11,r11,#7  ;@ mem - do mod 8
4080
4081  mov r1,#1
4082  tst r0,r1,lsl r11 ;@ Do arithmetic
4083  bicne r10,r10,#0x40000000
4084  orreq r10,r10,#0x40000000 ;@ Get Z flag
4085
4086  orr r1,r0,r1,lsl r11 ;@ Set bit
4087
4088;@ EaWrite: Write r1 into '-(a0)' (address in r8):
4089  and r1,r1,#0xff
4090  add lr,pc,#4
4091  mov r0,r8
4092  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4093
4094  ldrh r8,[r4],#2 ;@ Fetch next opcode
4095  subs r5,r5,#14 ;@ Subtract cycles
4096  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4097  b CycloneEnd
4098
4099;@ ---------- [01e7] bset d0, -(a7) uses Op01e7 ----------
4100Op01e7:
4101;@ EaCalc : Get register index into r11:
4102  and r11,r8,#0x0e00
4103;@ EaRead : Read register[r11] into r11:
4104  ldr r11,[r7,r11,lsr #7]
4105
4106;@ EaCalc : Get '-(a7)' into r8:
4107  ldr r8,[r7,#0x3c] ;@ A7
4108  sub r8,r8,#2 ;@ Pre-decrement An
4109  str r8,[r7,#0x3c] ;@ A7
4110;@ EaRead : Read '-(a7)' (address in r8) into r0:
4111  add lr,pc,#4
4112  mov r0,r8
4113  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4114
4115  and r11,r11,#7  ;@ mem - do mod 8
4116
4117  mov r1,#1
4118  tst r0,r1,lsl r11 ;@ Do arithmetic
4119  bicne r10,r10,#0x40000000
4120  orreq r10,r10,#0x40000000 ;@ Get Z flag
4121
4122  orr r1,r0,r1,lsl r11 ;@ Set bit
4123
4124;@ EaWrite: Write r1 into '-(a7)' (address in r8):
4125  and r1,r1,#0xff
4126  add lr,pc,#4
4127  mov r0,r8
4128  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4129
4130  ldrh r8,[r4],#2 ;@ Fetch next opcode
4131  subs r5,r5,#14 ;@ Subtract cycles
4132  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4133  b CycloneEnd
4134
4135;@ ---------- [01e8] bset d0, ($3333,a0) uses Op01e8 ----------
4136Op01e8:
4137;@ EaCalc : Get register index into r11:
4138  and r11,r8,#0x0e00
4139;@ EaRead : Read register[r11] into r11:
4140  ldr r11,[r7,r11,lsr #7]
4141
4142;@ EaCalc : Get '($3333,a0)' into r8:
4143  ldrsh r0,[r4],#2 ;@ Fetch offset
4144  and r2,r8,#0x000f
4145  ldr r2,[r7,r2,lsl #2]
4146  add r8,r0,r2 ;@ Add on offset
4147;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
4148  add lr,pc,#4
4149  mov r0,r8
4150  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4151
4152  and r11,r11,#7  ;@ mem - do mod 8
4153
4154  mov r1,#1
4155  tst r0,r1,lsl r11 ;@ Do arithmetic
4156  bicne r10,r10,#0x40000000
4157  orreq r10,r10,#0x40000000 ;@ Get Z flag
4158
4159  orr r1,r0,r1,lsl r11 ;@ Set bit
4160
4161;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
4162  and r1,r1,#0xff
4163  add lr,pc,#4
4164  mov r0,r8
4165  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4166
4167  ldrh r8,[r4],#2 ;@ Fetch next opcode
4168  subs r5,r5,#16 ;@ Subtract cycles
4169  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4170  b CycloneEnd
4171
4172;@ ---------- [01f0] bset d0, ($33,a0,d3.w*2) uses Op01f0 ----------
4173Op01f0:
4174;@ EaCalc : Get register index into r11:
4175  and r11,r8,#0x0e00
4176;@ EaRead : Read register[r11] into r11:
4177  ldr r11,[r7,r11,lsr #7]
4178
4179;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
4180;@ Get extension word into r3:
4181  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
4182  mov r2,r3,lsr #10
4183  tst r3,#0x0800 ;@ Is Rn Word or Long
4184  and r2,r2,#0x3c ;@ r2=Index of Rn
4185  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
4186  ldrne   r2,[r7,r2] ;@ r2=Rn.l
4187  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
4188  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
4189  and r2,r8,#0x000f
4190  orr r2,r2,#0x8 ;@ A0-7
4191  ldr r2,[r7,r2,lsl #2]
4192  add r8,r2,r3 ;@ r8=Disp+An+Rn
4193;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
4194  add lr,pc,#4
4195  mov r0,r8
4196  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4197
4198  and r11,r11,#7  ;@ mem - do mod 8
4199
4200  mov r1,#1
4201  tst r0,r1,lsl r11 ;@ Do arithmetic
4202  bicne r10,r10,#0x40000000
4203  orreq r10,r10,#0x40000000 ;@ Get Z flag
4204
4205  orr r1,r0,r1,lsl r11 ;@ Set bit
4206
4207;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
4208  and r1,r1,#0xff
4209  add lr,pc,#4
4210  mov r0,r8
4211  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4212
4213  ldrh r8,[r4],#2 ;@ Fetch next opcode
4214  subs r5,r5,#18 ;@ Subtract cycles
4215  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4216  b CycloneEnd
4217
4218;@ ---------- [01f8] bset d0, $3333.w uses Op01f8 ----------
4219Op01f8:
4220;@ EaCalc : Get register index into r11:
4221  and r11,r8,#0x0e00
4222;@ EaRead : Read register[r11] into r11:
4223  ldr r11,[r7,r11,lsr #7]
4224
4225;@ EaCalc : Get '$3333.w' into r8:
4226  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
4227;@ EaRead : Read '$3333.w' (address in r8) into r0:
4228  add lr,pc,#4
4229  mov r0,r8
4230  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4231
4232  and r11,r11,#7  ;@ mem - do mod 8
4233
4234  mov r1,#1
4235  tst r0,r1,lsl r11 ;@ Do arithmetic
4236  bicne r10,r10,#0x40000000
4237  orreq r10,r10,#0x40000000 ;@ Get Z flag
4238
4239  orr r1,r0,r1,lsl r11 ;@ Set bit
4240
4241;@ EaWrite: Write r1 into '$3333.w' (address in r8):
4242  and r1,r1,#0xff
4243  add lr,pc,#4
4244  mov r0,r8
4245  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4246
4247  ldrh r8,[r4],#2 ;@ Fetch next opcode
4248  subs r5,r5,#16 ;@ Subtract cycles
4249  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4250  b CycloneEnd
4251
4252;@ ---------- [01f9] bset d0, $33333333.l uses Op01f9 ----------
4253Op01f9:
4254;@ EaCalc : Get register index into r11:
4255  and r11,r8,#0x0e00
4256;@ EaRead : Read register[r11] into r11:
4257  ldr r11,[r7,r11,lsr #7]
4258
4259;@ EaCalc : Get '$33333333.l' into r8:
4260  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
4261  ldrh r0,[r4],#2
4262  orr r8,r0,r2,lsl #16
4263;@ EaRead : Read '$33333333.l' (address in r8) into r0:
4264  add lr,pc,#4
4265  mov r0,r8
4266  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4267
4268  and r11,r11,#7  ;@ mem - do mod 8
4269
4270  mov r1,#1
4271  tst r0,r1,lsl r11 ;@ Do arithmetic
4272  bicne r10,r10,#0x40000000
4273  orreq r10,r10,#0x40000000 ;@ Get Z flag
4274
4275  orr r1,r0,r1,lsl r11 ;@ Set bit
4276
4277;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
4278  and r1,r1,#0xff
4279  add lr,pc,#4
4280  mov r0,r8
4281  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4282
4283  ldrh r8,[r4],#2 ;@ Fetch next opcode
4284  subs r5,r5,#20 ;@ Subtract cycles
4285  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4286  b CycloneEnd
4287
4288;@ ---------- [0200] andi.b #$33, d0 uses Op0200 ----------
4289Op0200:
4290;@ EaCalc : Get '#$33' into r10:
4291  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4292;@ EaRead : Read '#$33' (address in r10) into r10:
4293
4294;@ EaCalc : Get register index into r11:
4295  and r11,r8,#0x000f
4296;@ EaRead : Read register[r11] into r0:
4297  ldr r0,[r7,r11,lsl #2]
4298
4299  mov r10,r10,asl #24
4300;@ Do arithmetic:
4301  ands r1,r10,r0,asl #24
4302  and r10,r1,#0x80000000 ;@ r10=N_flag
4303  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4304
4305;@ EaWrite: r1 into register[r11]:
4306  mov r1,r1,lsr #24
4307  strb r1,[r7,r11,lsl #2]
4308
4309  ldrh r8,[r4],#2 ;@ Fetch next opcode
4310  subs r5,r5,#8 ;@ Subtract cycles
4311  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4312  b CycloneEnd
4313
4314;@ ---------- [0210] andi.b #$33, (a0) uses Op0210 ----------
4315Op0210:
4316;@ EaCalc : Get '#$33' into r10:
4317  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4318;@ EaRead : Read '#$33' (address in r10) into r10:
4319
4320;@ EaCalc : Get '(a0)' into r11:
4321  and r2,r8,#0x000f
4322  orr r2,r2,#0x8 ;@ A0-7
4323  ldr r11,[r7,r2,lsl #2]
4324;@ EaRead : Read '(a0)' (address in r11) into r0:
4325  add lr,pc,#4
4326  mov r0,r11
4327  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4328
4329  mov r10,r10,asl #24
4330;@ Do arithmetic:
4331  ands r1,r10,r0,asl #24
4332  and r10,r1,#0x80000000 ;@ r10=N_flag
4333  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4334
4335;@ EaWrite: Write r1 into '(a0)' (address in r11):
4336  mov r1,r1,lsr #24
4337  add lr,pc,#4
4338  mov r0,r11
4339  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4340
4341  ldrh r8,[r4],#2 ;@ Fetch next opcode
4342  subs r5,r5,#16 ;@ Subtract cycles
4343  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4344  b CycloneEnd
4345
4346;@ ---------- [0218] andi.b #$33, (a0)+ uses Op0218 ----------
4347Op0218:
4348;@ EaCalc : Get '#$33' into r10:
4349  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4350;@ EaRead : Read '#$33' (address in r10) into r10:
4351
4352;@ EaCalc : Get '(a0)+' into r11:
4353  and r2,r8,#0x000f
4354  ldr r11,[r7,r2,lsl #2]
4355  add r3,r11,#1 ;@ Post-increment An
4356  str r3,[r7,r2,lsl #2]
4357;@ EaRead : Read '(a0)+' (address in r11) into r0:
4358  add lr,pc,#4
4359  mov r0,r11
4360  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4361
4362  mov r10,r10,asl #24
4363;@ Do arithmetic:
4364  ands r1,r10,r0,asl #24
4365  and r10,r1,#0x80000000 ;@ r10=N_flag
4366  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4367
4368;@ EaWrite: Write r1 into '(a0)+' (address in r11):
4369  mov r1,r1,lsr #24
4370  add lr,pc,#4
4371  mov r0,r11
4372  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4373
4374  ldrh r8,[r4],#2 ;@ Fetch next opcode
4375  subs r5,r5,#16 ;@ Subtract cycles
4376  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4377  b CycloneEnd
4378
4379;@ ---------- [021f] andi.b #$33, (a7)+ uses Op021f ----------
4380Op021f:
4381;@ EaCalc : Get '#$33' into r10:
4382  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4383;@ EaRead : Read '#$33' (address in r10) into r10:
4384
4385;@ EaCalc : Get '(a7)+' into r11:
4386  ldr r11,[r7,#0x3c] ;@ A7
4387  add r3,r11,#2 ;@ Post-increment An
4388  str r3,[r7,#0x3c] ;@ A7
4389;@ EaRead : Read '(a7)+' (address in r11) into r0:
4390  add lr,pc,#4
4391  mov r0,r11
4392  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4393
4394  mov r10,r10,asl #24
4395;@ Do arithmetic:
4396  ands r1,r10,r0,asl #24
4397  and r10,r1,#0x80000000 ;@ r10=N_flag
4398  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4399
4400;@ EaWrite: Write r1 into '(a7)+' (address in r11):
4401  mov r1,r1,lsr #24
4402  add lr,pc,#4
4403  mov r0,r11
4404  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4405
4406  ldrh r8,[r4],#2 ;@ Fetch next opcode
4407  subs r5,r5,#16 ;@ Subtract cycles
4408  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4409  b CycloneEnd
4410
4411;@ ---------- [0220] andi.b #$33, -(a0) uses Op0220 ----------
4412Op0220:
4413;@ EaCalc : Get '#$33' into r10:
4414  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4415;@ EaRead : Read '#$33' (address in r10) into r10:
4416
4417;@ EaCalc : Get '-(a0)' into r11:
4418  and r2,r8,#0x000f
4419  orr r2,r2,#0x8 ;@ A0-7
4420  ldr r11,[r7,r2,lsl #2]
4421  sub r11,r11,#1 ;@ Pre-decrement An
4422  str r11,[r7,r2,lsl #2]
4423;@ EaRead : Read '-(a0)' (address in r11) into r0:
4424  add lr,pc,#4
4425  mov r0,r11
4426  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4427
4428  mov r10,r10,asl #24
4429;@ Do arithmetic:
4430  ands r1,r10,r0,asl #24
4431  and r10,r1,#0x80000000 ;@ r10=N_flag
4432  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4433
4434;@ EaWrite: Write r1 into '-(a0)' (address in r11):
4435  mov r1,r1,lsr #24
4436  add lr,pc,#4
4437  mov r0,r11
4438  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4439
4440  ldrh r8,[r4],#2 ;@ Fetch next opcode
4441  subs r5,r5,#18 ;@ Subtract cycles
4442  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4443  b CycloneEnd
4444
4445;@ ---------- [0227] andi.b #$33, -(a7) uses Op0227 ----------
4446Op0227:
4447;@ EaCalc : Get '#$33' into r10:
4448  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4449;@ EaRead : Read '#$33' (address in r10) into r10:
4450
4451;@ EaCalc : Get '-(a7)' into r11:
4452  ldr r11,[r7,#0x3c] ;@ A7
4453  sub r11,r11,#2 ;@ Pre-decrement An
4454  str r11,[r7,#0x3c] ;@ A7
4455;@ EaRead : Read '-(a7)' (address in r11) into r0:
4456  add lr,pc,#4
4457  mov r0,r11
4458  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4459
4460  mov r10,r10,asl #24
4461;@ Do arithmetic:
4462  ands r1,r10,r0,asl #24
4463  and r10,r1,#0x80000000 ;@ r10=N_flag
4464  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4465
4466;@ EaWrite: Write r1 into '-(a7)' (address in r11):
4467  mov r1,r1,lsr #24
4468  add lr,pc,#4
4469  mov r0,r11
4470  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4471
4472  ldrh r8,[r4],#2 ;@ Fetch next opcode
4473  subs r5,r5,#18 ;@ Subtract cycles
4474  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4475  b CycloneEnd
4476
4477;@ ---------- [0228] andi.b #$33, ($3333,a0) uses Op0228 ----------
4478Op0228:
4479;@ EaCalc : Get '#$33' into r10:
4480  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4481;@ EaRead : Read '#$33' (address in r10) into r10:
4482
4483;@ EaCalc : Get '($3333,a0)' into r11:
4484  ldrsh r0,[r4],#2 ;@ Fetch offset
4485  and r2,r8,#0x000f
4486  ldr r2,[r7,r2,lsl #2]
4487  add r11,r0,r2 ;@ Add on offset
4488;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
4489  add lr,pc,#4
4490  mov r0,r11
4491  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4492
4493  mov r10,r10,asl #24
4494;@ Do arithmetic:
4495  ands r1,r10,r0,asl #24
4496  and r10,r1,#0x80000000 ;@ r10=N_flag
4497  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4498
4499;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
4500  mov r1,r1,lsr #24
4501  add lr,pc,#4
4502  mov r0,r11
4503  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4504
4505  ldrh r8,[r4],#2 ;@ Fetch next opcode
4506  subs r5,r5,#20 ;@ Subtract cycles
4507  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4508  b CycloneEnd
4509
4510;@ ---------- [0230] andi.b #$33, ($33,a0,d3.w*2) uses Op0230 ----------
4511Op0230:
4512;@ EaCalc : Get '#$33' into r10:
4513  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4514;@ EaRead : Read '#$33' (address in r10) into r10:
4515
4516;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
4517;@ Get extension word into r3:
4518  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
4519  mov r2,r3,lsr #10
4520  tst r3,#0x0800 ;@ Is Rn Word or Long
4521  and r2,r2,#0x3c ;@ r2=Index of Rn
4522  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
4523  ldrne   r2,[r7,r2] ;@ r2=Rn.l
4524  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
4525  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
4526  and r2,r8,#0x000f
4527  orr r2,r2,#0x8 ;@ A0-7
4528  ldr r2,[r7,r2,lsl #2]
4529  add r11,r2,r3 ;@ r11=Disp+An+Rn
4530;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
4531  add lr,pc,#4
4532  mov r0,r11
4533  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4534
4535  mov r10,r10,asl #24
4536;@ Do arithmetic:
4537  ands r1,r10,r0,asl #24
4538  and r10,r1,#0x80000000 ;@ r10=N_flag
4539  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4540
4541;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
4542  mov r1,r1,lsr #24
4543  add lr,pc,#4
4544  mov r0,r11
4545  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4546
4547  ldrh r8,[r4],#2 ;@ Fetch next opcode
4548  subs r5,r5,#22 ;@ Subtract cycles
4549  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4550  b CycloneEnd
4551
4552;@ ---------- [0238] andi.b #$33, $3333.w uses Op0238 ----------
4553Op0238:
4554;@ EaCalc : Get '#$33' into r10:
4555  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4556;@ EaRead : Read '#$33' (address in r10) into r10:
4557
4558;@ EaCalc : Get '$3333.w' into r11:
4559  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
4560;@ EaRead : Read '$3333.w' (address in r11) into r0:
4561  add lr,pc,#4
4562  mov r0,r11
4563  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4564
4565  mov r10,r10,asl #24
4566;@ Do arithmetic:
4567  ands r1,r10,r0,asl #24
4568  and r10,r1,#0x80000000 ;@ r10=N_flag
4569  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4570
4571;@ EaWrite: Write r1 into '$3333.w' (address in r11):
4572  mov r1,r1,lsr #24
4573  add lr,pc,#4
4574  mov r0,r11
4575  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4576
4577  ldrh r8,[r4],#2 ;@ Fetch next opcode
4578  subs r5,r5,#20 ;@ Subtract cycles
4579  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4580  b CycloneEnd
4581
4582;@ ---------- [0239] andi.b #$33, $33333333.l uses Op0239 ----------
4583Op0239:
4584;@ EaCalc : Get '#$33' into r10:
4585  ldrsb r10,[r4],#2 ;@ Fetch immediate value
4586;@ EaRead : Read '#$33' (address in r10) into r10:
4587
4588;@ EaCalc : Get '$33333333.l' into r11:
4589  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
4590  ldrh r0,[r4],#2
4591  orr r11,r0,r2,lsl #16
4592;@ EaRead : Read '$33333333.l' (address in r11) into r0:
4593  add lr,pc,#4
4594  mov r0,r11
4595  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
4596
4597  mov r10,r10,asl #24
4598;@ Do arithmetic:
4599  ands r1,r10,r0,asl #24
4600  and r10,r1,#0x80000000 ;@ r10=N_flag
4601  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4602
4603;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
4604  mov r1,r1,lsr #24
4605  add lr,pc,#4
4606  mov r0,r11
4607  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
4608
4609  ldrh r8,[r4],#2 ;@ Fetch next opcode
4610  subs r5,r5,#24 ;@ Subtract cycles
4611  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4612  b CycloneEnd
4613
4614;@ ---------- [023c] andi.b #$33, ccr uses Op023c ----------
4615Op023c:
4616;@ EaCalc : Get '#$33' into r0:
4617  ldrsb r0,[r4],#2 ;@ Fetch immediate value
4618;@ EaRead : Read '#$33' (address in r0) into r0:
4619
4620  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
4621  tst r1,#1           ;@ 1 if C!=V
4622  eorne r0,r0,#3      ;@ ___XNZCV
4623  ldr r2,[r7,#0x4c]   ;@ Load old X bit
4624  and r10,r10,r0,lsl #28
4625  and r2,r2,r0,lsl #25 ;@ X bit
4626  str r2,[r7,#0x4c]   ;@ Save X bit
4627
4628  ldrh r8,[r4],#2 ;@ Fetch next opcode
4629  subs r5,r5,#20 ;@ Subtract cycles
4630  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4631  b CycloneEnd
4632
4633;@ ---------- [0250] andi.w #$3333, (a0) uses Op0250 ----------
4634Op0250:
4635;@ EaCalc : Get '#$3333' into r10:
4636  ldrsh r10,[r4],#2 ;@ Fetch immediate value
4637;@ EaRead : Read '#$3333' (address in r10) into r10:
4638
4639;@ EaCalc : Get '(a0)' into r11:
4640  and r2,r8,#0x000f
4641  orr r2,r2,#0x8 ;@ A0-7
4642  ldr r11,[r7,r2,lsl #2]
4643;@ EaRead : Read '(a0)' (address in r11) into r0:
4644  add lr,pc,#4
4645  mov r0,r11
4646  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
4647
4648  mov r10,r10,asl #16
4649;@ Do arithmetic:
4650  ands r1,r10,r0,asl #16
4651  and r10,r1,#0x80000000 ;@ r10=N_flag
4652  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4653
4654;@ EaWrite: Write r1 into '(a0)' (address in r11):
4655  mov r1,r1,lsr #16
4656  add lr,pc,#4
4657  mov r0,r11
4658  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
4659
4660  ldrh r8,[r4],#2 ;@ Fetch next opcode
4661  subs r5,r5,#16 ;@ Subtract cycles
4662  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4663  b CycloneEnd
4664
4665;@ ---------- [0258] andi.w #$3333, (a0)+ uses Op0258 ----------
4666Op0258:
4667;@ EaCalc : Get '#$3333' into r10:
4668  ldrsh r10,[r4],#2 ;@ Fetch immediate value
4669;@ EaRead : Read '#$3333' (address in r10) into r10:
4670
4671;@ EaCalc : Get '(a0)+' into r11:
4672  and r2,r8,#0x000f
4673  ldr r11,[r7,r2,lsl #2]
4674  add r3,r11,#2 ;@ Post-increment An
4675  str r3,[r7,r2,lsl #2]
4676;@ EaRead : Read '(a0)+' (address in r11) into r0:
4677  add lr,pc,#4
4678  mov r0,r11
4679  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
4680
4681  mov r10,r10,asl #16
4682;@ Do arithmetic:
4683  ands r1,r10,r0,asl #16
4684  and r10,r1,#0x80000000 ;@ r10=N_flag
4685  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4686
4687;@ EaWrite: Write r1 into '(a0)+' (address in r11):
4688  mov r1,r1,lsr #16
4689  add lr,pc,#4
4690  mov r0,r11
4691  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
4692
4693  ldrh r8,[r4],#2 ;@ Fetch next opcode
4694  subs r5,r5,#16 ;@ Subtract cycles
4695  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4696  b CycloneEnd
4697
4698;@ ---------- [0260] andi.w #$3333, -(a0) uses Op0260 ----------
4699Op0260:
4700;@ EaCalc : Get '#$3333' into r10:
4701  ldrsh r10,[r4],#2 ;@ Fetch immediate value
4702;@ EaRead : Read '#$3333' (address in r10) into r10:
4703
4704;@ EaCalc : Get '-(a0)' into r11:
4705  and r2,r8,#0x000f
4706  orr r2,r2,#0x8 ;@ A0-7
4707  ldr r11,[r7,r2,lsl #2]
4708  sub r11,r11,#2 ;@ Pre-decrement An
4709  str r11,[r7,r2,lsl #2]
4710;@ EaRead : Read '-(a0)' (address in r11) into r0:
4711  add lr,pc,#4
4712  mov r0,r11
4713  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
4714
4715  mov r10,r10,asl #16
4716;@ Do arithmetic:
4717  ands r1,r10,r0,asl #16
4718  and r10,r1,#0x80000000 ;@ r10=N_flag
4719  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4720
4721;@ EaWrite: Write r1 into '-(a0)' (address in r11):
4722  mov r1,r1,lsr #16
4723  add lr,pc,#4
4724  mov r0,r11
4725  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
4726
4727  ldrh r8,[r4],#2 ;@ Fetch next opcode
4728  subs r5,r5,#18 ;@ Subtract cycles
4729  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4730  b CycloneEnd
4731
4732;@ ---------- [0268] andi.w #$3333, ($3333,a0) uses Op0268 ----------
4733Op0268:
4734;@ EaCalc : Get '#$3333' into r10:
4735  ldrsh r10,[r4],#2 ;@ Fetch immediate value
4736;@ EaRead : Read '#$3333' (address in r10) into r10:
4737
4738;@ EaCalc : Get '($3333,a0)' into r11:
4739  ldrsh r0,[r4],#2 ;@ Fetch offset
4740  and r2,r8,#0x000f
4741  ldr r2,[r7,r2,lsl #2]
4742  add r11,r0,r2 ;@ Add on offset
4743;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
4744  add lr,pc,#4
4745  mov r0,r11
4746  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
4747
4748  mov r10,r10,asl #16
4749;@ Do arithmetic:
4750  ands r1,r10,r0,asl #16
4751  and r10,r1,#0x80000000 ;@ r10=N_flag
4752  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4753
4754;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
4755  mov r1,r1,lsr #16
4756  add lr,pc,#4
4757  mov r0,r11
4758  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
4759
4760  ldrh r8,[r4],#2 ;@ Fetch next opcode
4761  subs r5,r5,#20 ;@ Subtract cycles
4762  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4763  b CycloneEnd
4764
4765;@ ---------- [0270] andi.w #$3333, ($33,a0,d3.w*2) uses Op0270 ----------
4766Op0270:
4767;@ EaCalc : Get '#$3333' into r10:
4768  ldrsh r10,[r4],#2 ;@ Fetch immediate value
4769;@ EaRead : Read '#$3333' (address in r10) into r10:
4770
4771;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
4772;@ Get extension word into r3:
4773  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
4774  mov r2,r3,lsr #10
4775  tst r3,#0x0800 ;@ Is Rn Word or Long
4776  and r2,r2,#0x3c ;@ r2=Index of Rn
4777  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
4778  ldrne   r2,[r7,r2] ;@ r2=Rn.l
4779  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
4780  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
4781  and r2,r8,#0x000f
4782  orr r2,r2,#0x8 ;@ A0-7
4783  ldr r2,[r7,r2,lsl #2]
4784  add r11,r2,r3 ;@ r11=Disp+An+Rn
4785;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
4786  add lr,pc,#4
4787  mov r0,r11
4788  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
4789
4790  mov r10,r10,asl #16
4791;@ Do arithmetic:
4792  ands r1,r10,r0,asl #16
4793  and r10,r1,#0x80000000 ;@ r10=N_flag
4794  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4795
4796;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
4797  mov r1,r1,lsr #16
4798  add lr,pc,#4
4799  mov r0,r11
4800  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
4801
4802  ldrh r8,[r4],#2 ;@ Fetch next opcode
4803  subs r5,r5,#22 ;@ Subtract cycles
4804  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4805  b CycloneEnd
4806
4807;@ ---------- [0278] andi.w #$3333, $3333.w uses Op0278 ----------
4808Op0278:
4809;@ EaCalc : Get '#$3333' into r10:
4810  ldrsh r10,[r4],#2 ;@ Fetch immediate value
4811;@ EaRead : Read '#$3333' (address in r10) into r10:
4812
4813;@ EaCalc : Get '$3333.w' into r11:
4814  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
4815;@ EaRead : Read '$3333.w' (address in r11) into r0:
4816  add lr,pc,#4
4817  mov r0,r11
4818  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
4819
4820  mov r10,r10,asl #16
4821;@ Do arithmetic:
4822  ands r1,r10,r0,asl #16
4823  and r10,r1,#0x80000000 ;@ r10=N_flag
4824  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4825
4826;@ EaWrite: Write r1 into '$3333.w' (address in r11):
4827  mov r1,r1,lsr #16
4828  add lr,pc,#4
4829  mov r0,r11
4830  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
4831
4832  ldrh r8,[r4],#2 ;@ Fetch next opcode
4833  subs r5,r5,#20 ;@ Subtract cycles
4834  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4835  b CycloneEnd
4836
4837;@ ---------- [0279] andi.w #$3333, $33333333.l uses Op0279 ----------
4838Op0279:
4839;@ EaCalc : Get '#$3333' into r10:
4840  ldrsh r10,[r4],#2 ;@ Fetch immediate value
4841;@ EaRead : Read '#$3333' (address in r10) into r10:
4842
4843;@ EaCalc : Get '$33333333.l' into r11:
4844  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
4845  ldrh r0,[r4],#2
4846  orr r11,r0,r2,lsl #16
4847;@ EaRead : Read '$33333333.l' (address in r11) into r0:
4848  add lr,pc,#4
4849  mov r0,r11
4850  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
4851
4852  mov r10,r10,asl #16
4853;@ Do arithmetic:
4854  ands r1,r10,r0,asl #16
4855  and r10,r1,#0x80000000 ;@ r10=N_flag
4856  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4857
4858;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
4859  mov r1,r1,lsr #16
4860  add lr,pc,#4
4861  mov r0,r11
4862  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
4863
4864  ldrh r8,[r4],#2 ;@ Fetch next opcode
4865  subs r5,r5,#24 ;@ Subtract cycles
4866  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4867  b CycloneEnd
4868
4869;@ ---------- [027c] andi.w #$3333, sr uses Op027c ----------
4870Op027c:
4871  ldr r11,[r7,#0x44] ;@ Get SR high
4872  tst r11,#0x20 ;@ Check we are in supervisor mode
4873  beq WrongPrivilegeMode ;@ No
4874
4875;@ EaCalc : Get '#$3333' into r0:
4876  ldrsh r0,[r4],#2 ;@ Fetch immediate value
4877;@ EaRead : Read '#$3333' (address in r0) into r0:
4878
4879  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
4880  tst r1,#1           ;@ 1 if C!=V
4881  eorne r0,r0,#3      ;@ ___XNZCV
4882  ldr r2,[r7,#0x4c]   ;@ Load old X bit
4883  and r10,r10,r0,lsl #28
4884  and r2,r2,r0,lsl #25 ;@ X bit
4885  and r1,r11,r0,lsr #8
4886  str r2,[r7,#0x4c]   ;@ Save X bit
4887  strb r1,[r7,#0x44]
4888
4889;@ A7 <-> OSP?
4890  eor r0,r1,r11
4891  tst r0,#0x20
4892  beq no_sp_swap027c
4893 ;@ swap OSP and A7:
4894  ldr r11,[r7,#0x3C] ;@ Get A7
4895  ldr r0, [r7,#0x48] ;@ Get OSP
4896  str r11,[r7,#0x48]
4897  str r0, [r7,#0x3C]
4898no_sp_swap027c:
4899
4900  ldrh r8,[r4],#2 ;@ Fetch next opcode
4901  subs r5,r5,#20 ;@ Subtract cycles
4902  ble CycloneEnd
4903;@ CheckInterrupt:
4904  ldr r1,[r7,#0x44]
4905  movs r0,r1,lsr #24 ;@ Get IRQ level
4906  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
4907  cmp r0,#6 ;@ irq>6 ?
4908  andle r1,r1,#7 ;@ Get interrupt mask
4909  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
4910  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
4911  b CycloneDoInterruptGoBack
4912
4913;@ ---------- [0280] andi.l #$33333333, d0 uses Op0280 ----------
4914Op0280:
4915;@ EaCalc : Get '#$33333333' into r10:
4916  ldrh r2,[r4],#2 ;@ Fetch immediate value
4917  ldrh r3,[r4],#2
4918  orr r10,r3,r2,lsl #16
4919;@ EaRead : Read '#$33333333' (address in r10) into r10:
4920
4921;@ EaCalc : Get register index into r11:
4922  and r11,r8,#0x000f
4923;@ EaRead : Read register[r11] into r0:
4924  ldr r0,[r7,r11,lsl #2]
4925
4926;@ Do arithmetic:
4927  ands r1,r10,r0
4928  and r10,r1,#0x80000000 ;@ r10=N_flag
4929  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4930
4931;@ EaWrite: r1 into register[r11]:
4932  str r1,[r7,r11,lsl #2]
4933
4934  ldrh r8,[r4],#2 ;@ Fetch next opcode
4935  subs r5,r5,#14 ;@ Subtract cycles
4936  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4937  b CycloneEnd
4938
4939;@ ---------- [0290] andi.l #$33333333, (a0) uses Op0290 ----------
4940Op0290:
4941;@ EaCalc : Get '#$33333333' into r10:
4942  ldrh r2,[r4],#2 ;@ Fetch immediate value
4943  ldrh r3,[r4],#2
4944  orr r10,r3,r2,lsl #16
4945;@ EaRead : Read '#$33333333' (address in r10) into r10:
4946
4947;@ EaCalc : Get '(a0)' into r11:
4948  and r2,r8,#0x000f
4949  orr r2,r2,#0x8 ;@ A0-7
4950  ldr r11,[r7,r2,lsl #2]
4951;@ EaRead : Read '(a0)' (address in r11) into r0:
4952  add lr,pc,#4
4953  mov r0,r11
4954  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
4955
4956;@ Do arithmetic:
4957  ands r1,r10,r0
4958  and r10,r1,#0x80000000 ;@ r10=N_flag
4959  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4960
4961;@ EaWrite: Write r1 into '(a0)' (address in r11):
4962  add lr,pc,#4
4963  mov r0,r11
4964  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
4965
4966  ldrh r8,[r4],#2 ;@ Fetch next opcode
4967  subs r5,r5,#28 ;@ Subtract cycles
4968  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
4969  b CycloneEnd
4970
4971;@ ---------- [0298] andi.l #$33333333, (a0)+ uses Op0298 ----------
4972Op0298:
4973;@ EaCalc : Get '#$33333333' into r10:
4974  ldrh r2,[r4],#2 ;@ Fetch immediate value
4975  ldrh r3,[r4],#2
4976  orr r10,r3,r2,lsl #16
4977;@ EaRead : Read '#$33333333' (address in r10) into r10:
4978
4979;@ EaCalc : Get '(a0)+' into r11:
4980  and r2,r8,#0x000f
4981  ldr r11,[r7,r2,lsl #2]
4982  add r3,r11,#4 ;@ Post-increment An
4983  str r3,[r7,r2,lsl #2]
4984;@ EaRead : Read '(a0)+' (address in r11) into r0:
4985  add lr,pc,#4
4986  mov r0,r11
4987  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
4988
4989;@ Do arithmetic:
4990  ands r1,r10,r0
4991  and r10,r1,#0x80000000 ;@ r10=N_flag
4992  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
4993
4994;@ EaWrite: Write r1 into '(a0)+' (address in r11):
4995  add lr,pc,#4
4996  mov r0,r11
4997  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
4998
4999  ldrh r8,[r4],#2 ;@ Fetch next opcode
5000  subs r5,r5,#28 ;@ Subtract cycles
5001  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5002  b CycloneEnd
5003
5004;@ ---------- [02a0] andi.l #$33333333, -(a0) uses Op02a0 ----------
5005Op02a0:
5006;@ EaCalc : Get '#$33333333' into r10:
5007  ldrh r2,[r4],#2 ;@ Fetch immediate value
5008  ldrh r3,[r4],#2
5009  orr r10,r3,r2,lsl #16
5010;@ EaRead : Read '#$33333333' (address in r10) into r10:
5011
5012;@ EaCalc : Get '-(a0)' into r11:
5013  and r2,r8,#0x000f
5014  orr r2,r2,#0x8 ;@ A0-7
5015  ldr r11,[r7,r2,lsl #2]
5016  sub r11,r11,#4 ;@ Pre-decrement An
5017  str r11,[r7,r2,lsl #2]
5018;@ EaRead : Read '-(a0)' (address in r11) into r0:
5019  add lr,pc,#4
5020  mov r0,r11
5021  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
5022
5023;@ Do arithmetic:
5024  ands r1,r10,r0
5025  and r10,r1,#0x80000000 ;@ r10=N_flag
5026  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5027
5028;@ EaWrite: Write r1 into '-(a0)' (address in r11):
5029  add lr,pc,#4
5030  mov r0,r11
5031  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
5032
5033  ldrh r8,[r4],#2 ;@ Fetch next opcode
5034  subs r5,r5,#30 ;@ Subtract cycles
5035  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5036  b CycloneEnd
5037
5038;@ ---------- [02a8] andi.l #$33333333, ($3333,a0) uses Op02a8 ----------
5039Op02a8:
5040;@ EaCalc : Get '#$33333333' into r10:
5041  ldrh r2,[r4],#2 ;@ Fetch immediate value
5042  ldrh r3,[r4],#2
5043  orr r10,r3,r2,lsl #16
5044;@ EaRead : Read '#$33333333' (address in r10) into r10:
5045
5046;@ EaCalc : Get '($3333,a0)' into r11:
5047  ldrsh r0,[r4],#2 ;@ Fetch offset
5048  and r2,r8,#0x000f
5049  ldr r2,[r7,r2,lsl #2]
5050  add r11,r0,r2 ;@ Add on offset
5051;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
5052  add lr,pc,#4
5053  mov r0,r11
5054  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
5055
5056;@ Do arithmetic:
5057  ands r1,r10,r0
5058  and r10,r1,#0x80000000 ;@ r10=N_flag
5059  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5060
5061;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
5062  add lr,pc,#4
5063  mov r0,r11
5064  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
5065
5066  ldrh r8,[r4],#2 ;@ Fetch next opcode
5067  subs r5,r5,#32 ;@ Subtract cycles
5068  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5069  b CycloneEnd
5070
5071;@ ---------- [02b0] andi.l #$33333333, ($33,a0,d3.w*2) uses Op02b0 ----------
5072Op02b0:
5073;@ EaCalc : Get '#$33333333' into r10:
5074  ldrh r2,[r4],#2 ;@ Fetch immediate value
5075  ldrh r3,[r4],#2
5076  orr r10,r3,r2,lsl #16
5077;@ EaRead : Read '#$33333333' (address in r10) into r10:
5078
5079;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
5080;@ Get extension word into r3:
5081  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
5082  mov r2,r3,lsr #10
5083  tst r3,#0x0800 ;@ Is Rn Word or Long
5084  and r2,r2,#0x3c ;@ r2=Index of Rn
5085  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
5086  ldrne   r2,[r7,r2] ;@ r2=Rn.l
5087  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
5088  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
5089  and r2,r8,#0x000f
5090  orr r2,r2,#0x8 ;@ A0-7
5091  ldr r2,[r7,r2,lsl #2]
5092  add r11,r2,r3 ;@ r11=Disp+An+Rn
5093;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
5094  add lr,pc,#4
5095  mov r0,r11
5096  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
5097
5098;@ Do arithmetic:
5099  ands r1,r10,r0
5100  and r10,r1,#0x80000000 ;@ r10=N_flag
5101  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5102
5103;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
5104  add lr,pc,#4
5105  mov r0,r11
5106  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
5107
5108  ldrh r8,[r4],#2 ;@ Fetch next opcode
5109  subs r5,r5,#34 ;@ Subtract cycles
5110  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5111  b CycloneEnd
5112
5113;@ ---------- [02b8] andi.l #$33333333, $3333.w uses Op02b8 ----------
5114Op02b8:
5115;@ EaCalc : Get '#$33333333' into r10:
5116  ldrh r2,[r4],#2 ;@ Fetch immediate value
5117  ldrh r3,[r4],#2
5118  orr r10,r3,r2,lsl #16
5119;@ EaRead : Read '#$33333333' (address in r10) into r10:
5120
5121;@ EaCalc : Get '$3333.w' into r11:
5122  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
5123;@ EaRead : Read '$3333.w' (address in r11) into r0:
5124  add lr,pc,#4
5125  mov r0,r11
5126  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
5127
5128;@ Do arithmetic:
5129  ands r1,r10,r0
5130  and r10,r1,#0x80000000 ;@ r10=N_flag
5131  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5132
5133;@ EaWrite: Write r1 into '$3333.w' (address in r11):
5134  add lr,pc,#4
5135  mov r0,r11
5136  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
5137
5138  ldrh r8,[r4],#2 ;@ Fetch next opcode
5139  subs r5,r5,#32 ;@ Subtract cycles
5140  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5141  b CycloneEnd
5142
5143;@ ---------- [02b9] andi.l #$33333333, $33333333.l uses Op02b9 ----------
5144Op02b9:
5145;@ EaCalc : Get '#$33333333' into r10:
5146  ldrh r2,[r4],#2 ;@ Fetch immediate value
5147  ldrh r3,[r4],#2
5148  orr r10,r3,r2,lsl #16
5149;@ EaRead : Read '#$33333333' (address in r10) into r10:
5150
5151;@ EaCalc : Get '$33333333.l' into r11:
5152  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
5153  ldrh r0,[r4],#2
5154  orr r11,r0,r2,lsl #16
5155;@ EaRead : Read '$33333333.l' (address in r11) into r0:
5156  add lr,pc,#4
5157  mov r0,r11
5158  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
5159
5160;@ Do arithmetic:
5161  ands r1,r10,r0
5162  and r10,r1,#0x80000000 ;@ r10=N_flag
5163  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
5164
5165;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
5166  add lr,pc,#4
5167  mov r0,r11
5168  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
5169
5170  ldrh r8,[r4],#2 ;@ Fetch next opcode
5171  subs r5,r5,#36 ;@ Subtract cycles
5172  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5173  b CycloneEnd
5174
5175;@ ---------- [0400] subi.b #$33, d0 uses Op0400 ----------
5176Op0400:
5177;@ EaCalc : Get '#$33' into r10:
5178  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5179;@ EaRead : Read '#$33' (address in r10) into r10:
5180
5181;@ EaCalc : Get register index into r11:
5182  and r11,r8,#0x000f
5183;@ EaRead : Read register[r11] into r0:
5184  ldr r0,[r7,r11,lsl #2]
5185
5186  mov r10,r10,asl #24
5187;@ Do arithmetic:
5188  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5189  mrs r10,cpsr ;@ r10=flags
5190  eor r10,r10,#0x20000000 ;@ Invert carry
5191  str r10,[r7,#0x4c] ;@ Save X bit
5192
5193;@ EaWrite: r1 into register[r11]:
5194  mov r1,r1,lsr #24
5195  strb r1,[r7,r11,lsl #2]
5196
5197  ldrh r8,[r4],#2 ;@ Fetch next opcode
5198  subs r5,r5,#8 ;@ Subtract cycles
5199  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5200  b CycloneEnd
5201
5202;@ ---------- [0410] subi.b #$33, (a0) uses Op0410 ----------
5203Op0410:
5204;@ EaCalc : Get '#$33' into r10:
5205  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5206;@ EaRead : Read '#$33' (address in r10) into r10:
5207
5208;@ EaCalc : Get '(a0)' into r11:
5209  and r2,r8,#0x000f
5210  orr r2,r2,#0x8 ;@ A0-7
5211  ldr r11,[r7,r2,lsl #2]
5212;@ EaRead : Read '(a0)' (address in r11) into r0:
5213  add lr,pc,#4
5214  mov r0,r11
5215  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
5216
5217  mov r10,r10,asl #24
5218;@ Do arithmetic:
5219  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5220  mrs r10,cpsr ;@ r10=flags
5221  eor r10,r10,#0x20000000 ;@ Invert carry
5222  str r10,[r7,#0x4c] ;@ Save X bit
5223
5224;@ EaWrite: Write r1 into '(a0)' (address in r11):
5225  mov r1,r1,lsr #24
5226  add lr,pc,#4
5227  mov r0,r11
5228  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
5229
5230  ldrh r8,[r4],#2 ;@ Fetch next opcode
5231  subs r5,r5,#16 ;@ Subtract cycles
5232  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5233  b CycloneEnd
5234
5235;@ ---------- [0418] subi.b #$33, (a0)+ uses Op0418 ----------
5236Op0418:
5237;@ EaCalc : Get '#$33' into r10:
5238  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5239;@ EaRead : Read '#$33' (address in r10) into r10:
5240
5241;@ EaCalc : Get '(a0)+' into r11:
5242  and r2,r8,#0x000f
5243  ldr r11,[r7,r2,lsl #2]
5244  add r3,r11,#1 ;@ Post-increment An
5245  str r3,[r7,r2,lsl #2]
5246;@ EaRead : Read '(a0)+' (address in r11) into r0:
5247  add lr,pc,#4
5248  mov r0,r11
5249  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
5250
5251  mov r10,r10,asl #24
5252;@ Do arithmetic:
5253  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5254  mrs r10,cpsr ;@ r10=flags
5255  eor r10,r10,#0x20000000 ;@ Invert carry
5256  str r10,[r7,#0x4c] ;@ Save X bit
5257
5258;@ EaWrite: Write r1 into '(a0)+' (address in r11):
5259  mov r1,r1,lsr #24
5260  add lr,pc,#4
5261  mov r0,r11
5262  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
5263
5264  ldrh r8,[r4],#2 ;@ Fetch next opcode
5265  subs r5,r5,#16 ;@ Subtract cycles
5266  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5267  b CycloneEnd
5268
5269;@ ---------- [041f] subi.b #$33, (a7)+ uses Op041f ----------
5270Op041f:
5271;@ EaCalc : Get '#$33' into r10:
5272  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5273;@ EaRead : Read '#$33' (address in r10) into r10:
5274
5275;@ EaCalc : Get '(a7)+' into r11:
5276  ldr r11,[r7,#0x3c] ;@ A7
5277  add r3,r11,#2 ;@ Post-increment An
5278  str r3,[r7,#0x3c] ;@ A7
5279;@ EaRead : Read '(a7)+' (address in r11) into r0:
5280  add lr,pc,#4
5281  mov r0,r11
5282  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
5283
5284  mov r10,r10,asl #24
5285;@ Do arithmetic:
5286  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5287  mrs r10,cpsr ;@ r10=flags
5288  eor r10,r10,#0x20000000 ;@ Invert carry
5289  str r10,[r7,#0x4c] ;@ Save X bit
5290
5291;@ EaWrite: Write r1 into '(a7)+' (address in r11):
5292  mov r1,r1,lsr #24
5293  add lr,pc,#4
5294  mov r0,r11
5295  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
5296
5297  ldrh r8,[r4],#2 ;@ Fetch next opcode
5298  subs r5,r5,#16 ;@ Subtract cycles
5299  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5300  b CycloneEnd
5301
5302;@ ---------- [0420] subi.b #$33, -(a0) uses Op0420 ----------
5303Op0420:
5304;@ EaCalc : Get '#$33' into r10:
5305  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5306;@ EaRead : Read '#$33' (address in r10) into r10:
5307
5308;@ EaCalc : Get '-(a0)' into r11:
5309  and r2,r8,#0x000f
5310  orr r2,r2,#0x8 ;@ A0-7
5311  ldr r11,[r7,r2,lsl #2]
5312  sub r11,r11,#1 ;@ Pre-decrement An
5313  str r11,[r7,r2,lsl #2]
5314;@ EaRead : Read '-(a0)' (address in r11) into r0:
5315  add lr,pc,#4
5316  mov r0,r11
5317  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
5318
5319  mov r10,r10,asl #24
5320;@ Do arithmetic:
5321  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5322  mrs r10,cpsr ;@ r10=flags
5323  eor r10,r10,#0x20000000 ;@ Invert carry
5324  str r10,[r7,#0x4c] ;@ Save X bit
5325
5326;@ EaWrite: Write r1 into '-(a0)' (address in r11):
5327  mov r1,r1,lsr #24
5328  add lr,pc,#4
5329  mov r0,r11
5330  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
5331
5332  ldrh r8,[r4],#2 ;@ Fetch next opcode
5333  subs r5,r5,#18 ;@ Subtract cycles
5334  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5335  b CycloneEnd
5336
5337;@ ---------- [0427] subi.b #$33, -(a7) uses Op0427 ----------
5338Op0427:
5339;@ EaCalc : Get '#$33' into r10:
5340  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5341;@ EaRead : Read '#$33' (address in r10) into r10:
5342
5343;@ EaCalc : Get '-(a7)' into r11:
5344  ldr r11,[r7,#0x3c] ;@ A7
5345  sub r11,r11,#2 ;@ Pre-decrement An
5346  str r11,[r7,#0x3c] ;@ A7
5347;@ EaRead : Read '-(a7)' (address in r11) into r0:
5348  add lr,pc,#4
5349  mov r0,r11
5350  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
5351
5352  mov r10,r10,asl #24
5353;@ Do arithmetic:
5354  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5355  mrs r10,cpsr ;@ r10=flags
5356  eor r10,r10,#0x20000000 ;@ Invert carry
5357  str r10,[r7,#0x4c] ;@ Save X bit
5358
5359;@ EaWrite: Write r1 into '-(a7)' (address in r11):
5360  mov r1,r1,lsr #24
5361  add lr,pc,#4
5362  mov r0,r11
5363  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
5364
5365  ldrh r8,[r4],#2 ;@ Fetch next opcode
5366  subs r5,r5,#18 ;@ Subtract cycles
5367  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5368  b CycloneEnd
5369
5370;@ ---------- [0428] subi.b #$33, ($3333,a0) uses Op0428 ----------
5371Op0428:
5372;@ EaCalc : Get '#$33' into r10:
5373  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5374;@ EaRead : Read '#$33' (address in r10) into r10:
5375
5376;@ EaCalc : Get '($3333,a0)' into r11:
5377  ldrsh r0,[r4],#2 ;@ Fetch offset
5378  and r2,r8,#0x000f
5379  ldr r2,[r7,r2,lsl #2]
5380  add r11,r0,r2 ;@ Add on offset
5381;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
5382  add lr,pc,#4
5383  mov r0,r11
5384  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
5385
5386  mov r10,r10,asl #24
5387;@ Do arithmetic:
5388  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5389  mrs r10,cpsr ;@ r10=flags
5390  eor r10,r10,#0x20000000 ;@ Invert carry
5391  str r10,[r7,#0x4c] ;@ Save X bit
5392
5393;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
5394  mov r1,r1,lsr #24
5395  add lr,pc,#4
5396  mov r0,r11
5397  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
5398
5399  ldrh r8,[r4],#2 ;@ Fetch next opcode
5400  subs r5,r5,#20 ;@ Subtract cycles
5401  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5402  b CycloneEnd
5403
5404;@ ---------- [0430] subi.b #$33, ($33,a0,d3.w*2) uses Op0430 ----------
5405Op0430:
5406;@ EaCalc : Get '#$33' into r10:
5407  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5408;@ EaRead : Read '#$33' (address in r10) into r10:
5409
5410;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
5411;@ Get extension word into r3:
5412  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
5413  mov r2,r3,lsr #10
5414  tst r3,#0x0800 ;@ Is Rn Word or Long
5415  and r2,r2,#0x3c ;@ r2=Index of Rn
5416  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
5417  ldrne   r2,[r7,r2] ;@ r2=Rn.l
5418  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
5419  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
5420  and r2,r8,#0x000f
5421  orr r2,r2,#0x8 ;@ A0-7
5422  ldr r2,[r7,r2,lsl #2]
5423  add r11,r2,r3 ;@ r11=Disp+An+Rn
5424;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
5425  add lr,pc,#4
5426  mov r0,r11
5427  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
5428
5429  mov r10,r10,asl #24
5430;@ Do arithmetic:
5431  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5432  mrs r10,cpsr ;@ r10=flags
5433  eor r10,r10,#0x20000000 ;@ Invert carry
5434  str r10,[r7,#0x4c] ;@ Save X bit
5435
5436;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
5437  mov r1,r1,lsr #24
5438  add lr,pc,#4
5439  mov r0,r11
5440  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
5441
5442  ldrh r8,[r4],#2 ;@ Fetch next opcode
5443  subs r5,r5,#22 ;@ Subtract cycles
5444  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5445  b CycloneEnd
5446
5447;@ ---------- [0438] subi.b #$33, $3333.w uses Op0438 ----------
5448Op0438:
5449;@ EaCalc : Get '#$33' into r10:
5450  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5451;@ EaRead : Read '#$33' (address in r10) into r10:
5452
5453;@ EaCalc : Get '$3333.w' into r11:
5454  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
5455;@ EaRead : Read '$3333.w' (address in r11) into r0:
5456  add lr,pc,#4
5457  mov r0,r11
5458  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
5459
5460  mov r10,r10,asl #24
5461;@ Do arithmetic:
5462  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5463  mrs r10,cpsr ;@ r10=flags
5464  eor r10,r10,#0x20000000 ;@ Invert carry
5465  str r10,[r7,#0x4c] ;@ Save X bit
5466
5467;@ EaWrite: Write r1 into '$3333.w' (address in r11):
5468  mov r1,r1,lsr #24
5469  add lr,pc,#4
5470  mov r0,r11
5471  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
5472
5473  ldrh r8,[r4],#2 ;@ Fetch next opcode
5474  subs r5,r5,#20 ;@ Subtract cycles
5475  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5476  b CycloneEnd
5477
5478;@ ---------- [0439] subi.b #$33, $33333333.l uses Op0439 ----------
5479Op0439:
5480;@ EaCalc : Get '#$33' into r10:
5481  ldrsb r10,[r4],#2 ;@ Fetch immediate value
5482;@ EaRead : Read '#$33' (address in r10) into r10:
5483
5484;@ EaCalc : Get '$33333333.l' into r11:
5485  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
5486  ldrh r0,[r4],#2
5487  orr r11,r0,r2,lsl #16
5488;@ EaRead : Read '$33333333.l' (address in r11) into r0:
5489  add lr,pc,#4
5490  mov r0,r11
5491  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
5492
5493  mov r10,r10,asl #24
5494;@ Do arithmetic:
5495  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
5496  mrs r10,cpsr ;@ r10=flags
5497  eor r10,r10,#0x20000000 ;@ Invert carry
5498  str r10,[r7,#0x4c] ;@ Save X bit
5499
5500;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
5501  mov r1,r1,lsr #24
5502  add lr,pc,#4
5503  mov r0,r11
5504  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
5505
5506  ldrh r8,[r4],#2 ;@ Fetch next opcode
5507  subs r5,r5,#24 ;@ Subtract cycles
5508  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5509  b CycloneEnd
5510
5511;@ ---------- [0440] subi.w #$3333, d0 uses Op0440 ----------
5512Op0440:
5513;@ EaCalc : Get '#$3333' into r10:
5514  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5515;@ EaRead : Read '#$3333' (address in r10) into r10:
5516
5517;@ EaCalc : Get register index into r11:
5518  and r11,r8,#0x000f
5519  mov r11,r11,lsl #2
5520;@ EaRead : Read register[r11] into r0:
5521  ldr r0,[r7,r11]
5522
5523  mov r10,r10,asl #16
5524;@ Do arithmetic:
5525  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
5526  mrs r10,cpsr ;@ r10=flags
5527  eor r10,r10,#0x20000000 ;@ Invert carry
5528  str r10,[r7,#0x4c] ;@ Save X bit
5529
5530;@ EaWrite: r1 into register[r11]:
5531  mov r1,r1,lsr #16
5532  strh r1,[r7,r11]
5533
5534  ldrh r8,[r4],#2 ;@ Fetch next opcode
5535  subs r5,r5,#8 ;@ Subtract cycles
5536  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5537  b CycloneEnd
5538
5539;@ ---------- [0450] subi.w #$3333, (a0) uses Op0450 ----------
5540Op0450:
5541;@ EaCalc : Get '#$3333' into r10:
5542  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5543;@ EaRead : Read '#$3333' (address in r10) into r10:
5544
5545;@ EaCalc : Get '(a0)' into r11:
5546  and r2,r8,#0x000f
5547  orr r2,r2,#0x8 ;@ A0-7
5548  ldr r11,[r7,r2,lsl #2]
5549;@ EaRead : Read '(a0)' (address in r11) into r0:
5550  add lr,pc,#4
5551  mov r0,r11
5552  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
5553
5554  mov r10,r10,asl #16
5555;@ Do arithmetic:
5556  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
5557  mrs r10,cpsr ;@ r10=flags
5558  eor r10,r10,#0x20000000 ;@ Invert carry
5559  str r10,[r7,#0x4c] ;@ Save X bit
5560
5561;@ EaWrite: Write r1 into '(a0)' (address in r11):
5562  mov r1,r1,lsr #16
5563  add lr,pc,#4
5564  mov r0,r11
5565  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
5566
5567  ldrh r8,[r4],#2 ;@ Fetch next opcode
5568  subs r5,r5,#16 ;@ Subtract cycles
5569  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5570  b CycloneEnd
5571
5572;@ ---------- [0458] subi.w #$3333, (a0)+ uses Op0458 ----------
5573Op0458:
5574;@ EaCalc : Get '#$3333' into r10:
5575  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5576;@ EaRead : Read '#$3333' (address in r10) into r10:
5577
5578;@ EaCalc : Get '(a0)+' into r11:
5579  and r2,r8,#0x000f
5580  ldr r11,[r7,r2,lsl #2]
5581  add r3,r11,#2 ;@ Post-increment An
5582  str r3,[r7,r2,lsl #2]
5583;@ EaRead : Read '(a0)+' (address in r11) into r0:
5584  add lr,pc,#4
5585  mov r0,r11
5586  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
5587
5588  mov r10,r10,asl #16
5589;@ Do arithmetic:
5590  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
5591  mrs r10,cpsr ;@ r10=flags
5592  eor r10,r10,#0x20000000 ;@ Invert carry
5593  str r10,[r7,#0x4c] ;@ Save X bit
5594
5595;@ EaWrite: Write r1 into '(a0)+' (address in r11):
5596  mov r1,r1,lsr #16
5597  add lr,pc,#4
5598  mov r0,r11
5599  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
5600
5601  ldrh r8,[r4],#2 ;@ Fetch next opcode
5602  subs r5,r5,#16 ;@ Subtract cycles
5603  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5604  b CycloneEnd
5605
5606;@ ---------- [0460] subi.w #$3333, -(a0) uses Op0460 ----------
5607Op0460:
5608;@ EaCalc : Get '#$3333' into r10:
5609  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5610;@ EaRead : Read '#$3333' (address in r10) into r10:
5611
5612;@ EaCalc : Get '-(a0)' into r11:
5613  and r2,r8,#0x000f
5614  orr r2,r2,#0x8 ;@ A0-7
5615  ldr r11,[r7,r2,lsl #2]
5616  sub r11,r11,#2 ;@ Pre-decrement An
5617  str r11,[r7,r2,lsl #2]
5618;@ EaRead : Read '-(a0)' (address in r11) into r0:
5619  add lr,pc,#4
5620  mov r0,r11
5621  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
5622
5623  mov r10,r10,asl #16
5624;@ Do arithmetic:
5625  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
5626  mrs r10,cpsr ;@ r10=flags
5627  eor r10,r10,#0x20000000 ;@ Invert carry
5628  str r10,[r7,#0x4c] ;@ Save X bit
5629
5630;@ EaWrite: Write r1 into '-(a0)' (address in r11):
5631  mov r1,r1,lsr #16
5632  add lr,pc,#4
5633  mov r0,r11
5634  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
5635
5636  ldrh r8,[r4],#2 ;@ Fetch next opcode
5637  subs r5,r5,#18 ;@ Subtract cycles
5638  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5639  b CycloneEnd
5640
5641;@ ---------- [0468] subi.w #$3333, ($3333,a0) uses Op0468 ----------
5642Op0468:
5643;@ EaCalc : Get '#$3333' into r10:
5644  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5645;@ EaRead : Read '#$3333' (address in r10) into r10:
5646
5647;@ EaCalc : Get '($3333,a0)' into r11:
5648  ldrsh r0,[r4],#2 ;@ Fetch offset
5649  and r2,r8,#0x000f
5650  ldr r2,[r7,r2,lsl #2]
5651  add r11,r0,r2 ;@ Add on offset
5652;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
5653  add lr,pc,#4
5654  mov r0,r11
5655  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
5656
5657  mov r10,r10,asl #16
5658;@ Do arithmetic:
5659  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
5660  mrs r10,cpsr ;@ r10=flags
5661  eor r10,r10,#0x20000000 ;@ Invert carry
5662  str r10,[r7,#0x4c] ;@ Save X bit
5663
5664;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
5665  mov r1,r1,lsr #16
5666  add lr,pc,#4
5667  mov r0,r11
5668  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
5669
5670  ldrh r8,[r4],#2 ;@ Fetch next opcode
5671  subs r5,r5,#20 ;@ Subtract cycles
5672  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5673  b CycloneEnd
5674
5675;@ ---------- [0470] subi.w #$3333, ($33,a0,d3.w*2) uses Op0470 ----------
5676Op0470:
5677;@ EaCalc : Get '#$3333' into r10:
5678  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5679;@ EaRead : Read '#$3333' (address in r10) into r10:
5680
5681;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
5682;@ Get extension word into r3:
5683  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
5684  mov r2,r3,lsr #10
5685  tst r3,#0x0800 ;@ Is Rn Word or Long
5686  and r2,r2,#0x3c ;@ r2=Index of Rn
5687  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
5688  ldrne   r2,[r7,r2] ;@ r2=Rn.l
5689  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
5690  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
5691  and r2,r8,#0x000f
5692  orr r2,r2,#0x8 ;@ A0-7
5693  ldr r2,[r7,r2,lsl #2]
5694  add r11,r2,r3 ;@ r11=Disp+An+Rn
5695;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
5696  add lr,pc,#4
5697  mov r0,r11
5698  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
5699
5700  mov r10,r10,asl #16
5701;@ Do arithmetic:
5702  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
5703  mrs r10,cpsr ;@ r10=flags
5704  eor r10,r10,#0x20000000 ;@ Invert carry
5705  str r10,[r7,#0x4c] ;@ Save X bit
5706
5707;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
5708  mov r1,r1,lsr #16
5709  add lr,pc,#4
5710  mov r0,r11
5711  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
5712
5713  ldrh r8,[r4],#2 ;@ Fetch next opcode
5714  subs r5,r5,#22 ;@ Subtract cycles
5715  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5716  b CycloneEnd
5717
5718;@ ---------- [0478] subi.w #$3333, $3333.w uses Op0478 ----------
5719Op0478:
5720;@ EaCalc : Get '#$3333' into r10:
5721  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5722;@ EaRead : Read '#$3333' (address in r10) into r10:
5723
5724;@ EaCalc : Get '$3333.w' into r11:
5725  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
5726;@ EaRead : Read '$3333.w' (address in r11) into r0:
5727  add lr,pc,#4
5728  mov r0,r11
5729  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
5730
5731  mov r10,r10,asl #16
5732;@ Do arithmetic:
5733  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
5734  mrs r10,cpsr ;@ r10=flags
5735  eor r10,r10,#0x20000000 ;@ Invert carry
5736  str r10,[r7,#0x4c] ;@ Save X bit
5737
5738;@ EaWrite: Write r1 into '$3333.w' (address in r11):
5739  mov r1,r1,lsr #16
5740  add lr,pc,#4
5741  mov r0,r11
5742  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
5743
5744  ldrh r8,[r4],#2 ;@ Fetch next opcode
5745  subs r5,r5,#20 ;@ Subtract cycles
5746  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5747  b CycloneEnd
5748
5749;@ ---------- [0479] subi.w #$3333, $33333333.l uses Op0479 ----------
5750Op0479:
5751;@ EaCalc : Get '#$3333' into r10:
5752  ldrsh r10,[r4],#2 ;@ Fetch immediate value
5753;@ EaRead : Read '#$3333' (address in r10) into r10:
5754
5755;@ EaCalc : Get '$33333333.l' into r11:
5756  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
5757  ldrh r0,[r4],#2
5758  orr r11,r0,r2,lsl #16
5759;@ EaRead : Read '$33333333.l' (address in r11) into r0:
5760  add lr,pc,#4
5761  mov r0,r11
5762  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
5763
5764  mov r10,r10,asl #16
5765;@ Do arithmetic:
5766  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
5767  mrs r10,cpsr ;@ r10=flags
5768  eor r10,r10,#0x20000000 ;@ Invert carry
5769  str r10,[r7,#0x4c] ;@ Save X bit
5770
5771;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
5772  mov r1,r1,lsr #16
5773  add lr,pc,#4
5774  mov r0,r11
5775  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
5776
5777  ldrh r8,[r4],#2 ;@ Fetch next opcode
5778  subs r5,r5,#24 ;@ Subtract cycles
5779  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5780  b CycloneEnd
5781
5782;@ ---------- [0480] subi.l #$33333333, d0 uses Op0480 ----------
5783Op0480:
5784;@ EaCalc : Get '#$33333333' into r10:
5785  ldrh r2,[r4],#2 ;@ Fetch immediate value
5786  ldrh r3,[r4],#2
5787  orr r10,r3,r2,lsl #16
5788;@ EaRead : Read '#$33333333' (address in r10) into r10:
5789
5790;@ EaCalc : Get register index into r11:
5791  and r11,r8,#0x000f
5792;@ EaRead : Read register[r11] into r0:
5793  ldr r0,[r7,r11,lsl #2]
5794
5795;@ Do arithmetic:
5796  rsbs r1,r10,r0 ;@ Defines NZCV
5797  mrs r10,cpsr ;@ r10=flags
5798  eor r10,r10,#0x20000000 ;@ Invert carry
5799  str r10,[r7,#0x4c] ;@ Save X bit
5800
5801;@ EaWrite: r1 into register[r11]:
5802  str r1,[r7,r11,lsl #2]
5803
5804  ldrh r8,[r4],#2 ;@ Fetch next opcode
5805  subs r5,r5,#16 ;@ Subtract cycles
5806  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5807  b CycloneEnd
5808
5809;@ ---------- [0490] subi.l #$33333333, (a0) uses Op0490 ----------
5810Op0490:
5811;@ EaCalc : Get '#$33333333' into r10:
5812  ldrh r2,[r4],#2 ;@ Fetch immediate value
5813  ldrh r3,[r4],#2
5814  orr r10,r3,r2,lsl #16
5815;@ EaRead : Read '#$33333333' (address in r10) into r10:
5816
5817;@ EaCalc : Get '(a0)' into r11:
5818  and r2,r8,#0x000f
5819  orr r2,r2,#0x8 ;@ A0-7
5820  ldr r11,[r7,r2,lsl #2]
5821;@ EaRead : Read '(a0)' (address in r11) into r0:
5822  add lr,pc,#4
5823  mov r0,r11
5824  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
5825
5826;@ Do arithmetic:
5827  rsbs r1,r10,r0 ;@ Defines NZCV
5828  mrs r10,cpsr ;@ r10=flags
5829  eor r10,r10,#0x20000000 ;@ Invert carry
5830  str r10,[r7,#0x4c] ;@ Save X bit
5831
5832;@ EaWrite: Write r1 into '(a0)' (address in r11):
5833  add lr,pc,#4
5834  mov r0,r11
5835  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
5836
5837  ldrh r8,[r4],#2 ;@ Fetch next opcode
5838  subs r5,r5,#28 ;@ Subtract cycles
5839  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5840  b CycloneEnd
5841
5842;@ ---------- [0498] subi.l #$33333333, (a0)+ uses Op0498 ----------
5843Op0498:
5844;@ EaCalc : Get '#$33333333' into r10:
5845  ldrh r2,[r4],#2 ;@ Fetch immediate value
5846  ldrh r3,[r4],#2
5847  orr r10,r3,r2,lsl #16
5848;@ EaRead : Read '#$33333333' (address in r10) into r10:
5849
5850;@ EaCalc : Get '(a0)+' into r11:
5851  and r2,r8,#0x000f
5852  ldr r11,[r7,r2,lsl #2]
5853  add r3,r11,#4 ;@ Post-increment An
5854  str r3,[r7,r2,lsl #2]
5855;@ EaRead : Read '(a0)+' (address in r11) into r0:
5856  add lr,pc,#4
5857  mov r0,r11
5858  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
5859
5860;@ Do arithmetic:
5861  rsbs r1,r10,r0 ;@ Defines NZCV
5862  mrs r10,cpsr ;@ r10=flags
5863  eor r10,r10,#0x20000000 ;@ Invert carry
5864  str r10,[r7,#0x4c] ;@ Save X bit
5865
5866;@ EaWrite: Write r1 into '(a0)+' (address in r11):
5867  add lr,pc,#4
5868  mov r0,r11
5869  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
5870
5871  ldrh r8,[r4],#2 ;@ Fetch next opcode
5872  subs r5,r5,#28 ;@ Subtract cycles
5873  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5874  b CycloneEnd
5875
5876;@ ---------- [04a0] subi.l #$33333333, -(a0) uses Op04a0 ----------
5877Op04a0:
5878;@ EaCalc : Get '#$33333333' into r10:
5879  ldrh r2,[r4],#2 ;@ Fetch immediate value
5880  ldrh r3,[r4],#2
5881  orr r10,r3,r2,lsl #16
5882;@ EaRead : Read '#$33333333' (address in r10) into r10:
5883
5884;@ EaCalc : Get '-(a0)' into r11:
5885  and r2,r8,#0x000f
5886  orr r2,r2,#0x8 ;@ A0-7
5887  ldr r11,[r7,r2,lsl #2]
5888  sub r11,r11,#4 ;@ Pre-decrement An
5889  str r11,[r7,r2,lsl #2]
5890;@ EaRead : Read '-(a0)' (address in r11) into r0:
5891  add lr,pc,#4
5892  mov r0,r11
5893  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
5894
5895;@ Do arithmetic:
5896  rsbs r1,r10,r0 ;@ Defines NZCV
5897  mrs r10,cpsr ;@ r10=flags
5898  eor r10,r10,#0x20000000 ;@ Invert carry
5899  str r10,[r7,#0x4c] ;@ Save X bit
5900
5901;@ EaWrite: Write r1 into '-(a0)' (address in r11):
5902  add lr,pc,#4
5903  mov r0,r11
5904  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
5905
5906  ldrh r8,[r4],#2 ;@ Fetch next opcode
5907  subs r5,r5,#30 ;@ Subtract cycles
5908  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5909  b CycloneEnd
5910
5911;@ ---------- [04a8] subi.l #$33333333, ($3333,a0) uses Op04a8 ----------
5912Op04a8:
5913;@ EaCalc : Get '#$33333333' into r10:
5914  ldrh r2,[r4],#2 ;@ Fetch immediate value
5915  ldrh r3,[r4],#2
5916  orr r10,r3,r2,lsl #16
5917;@ EaRead : Read '#$33333333' (address in r10) into r10:
5918
5919;@ EaCalc : Get '($3333,a0)' into r11:
5920  ldrsh r0,[r4],#2 ;@ Fetch offset
5921  and r2,r8,#0x000f
5922  ldr r2,[r7,r2,lsl #2]
5923  add r11,r0,r2 ;@ Add on offset
5924;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
5925  add lr,pc,#4
5926  mov r0,r11
5927  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
5928
5929;@ Do arithmetic:
5930  rsbs r1,r10,r0 ;@ Defines NZCV
5931  mrs r10,cpsr ;@ r10=flags
5932  eor r10,r10,#0x20000000 ;@ Invert carry
5933  str r10,[r7,#0x4c] ;@ Save X bit
5934
5935;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
5936  add lr,pc,#4
5937  mov r0,r11
5938  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
5939
5940  ldrh r8,[r4],#2 ;@ Fetch next opcode
5941  subs r5,r5,#32 ;@ Subtract cycles
5942  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5943  b CycloneEnd
5944
5945;@ ---------- [04b0] subi.l #$33333333, ($33,a0,d3.w*2) uses Op04b0 ----------
5946Op04b0:
5947;@ EaCalc : Get '#$33333333' into r10:
5948  ldrh r2,[r4],#2 ;@ Fetch immediate value
5949  ldrh r3,[r4],#2
5950  orr r10,r3,r2,lsl #16
5951;@ EaRead : Read '#$33333333' (address in r10) into r10:
5952
5953;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
5954;@ Get extension word into r3:
5955  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
5956  mov r2,r3,lsr #10
5957  tst r3,#0x0800 ;@ Is Rn Word or Long
5958  and r2,r2,#0x3c ;@ r2=Index of Rn
5959  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
5960  ldrne   r2,[r7,r2] ;@ r2=Rn.l
5961  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
5962  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
5963  and r2,r8,#0x000f
5964  orr r2,r2,#0x8 ;@ A0-7
5965  ldr r2,[r7,r2,lsl #2]
5966  add r11,r2,r3 ;@ r11=Disp+An+Rn
5967;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
5968  add lr,pc,#4
5969  mov r0,r11
5970  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
5971
5972;@ Do arithmetic:
5973  rsbs r1,r10,r0 ;@ Defines NZCV
5974  mrs r10,cpsr ;@ r10=flags
5975  eor r10,r10,#0x20000000 ;@ Invert carry
5976  str r10,[r7,#0x4c] ;@ Save X bit
5977
5978;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
5979  add lr,pc,#4
5980  mov r0,r11
5981  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
5982
5983  ldrh r8,[r4],#2 ;@ Fetch next opcode
5984  subs r5,r5,#34 ;@ Subtract cycles
5985  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
5986  b CycloneEnd
5987
5988;@ ---------- [04b8] subi.l #$33333333, $3333.w uses Op04b8 ----------
5989Op04b8:
5990;@ EaCalc : Get '#$33333333' into r10:
5991  ldrh r2,[r4],#2 ;@ Fetch immediate value
5992  ldrh r3,[r4],#2
5993  orr r10,r3,r2,lsl #16
5994;@ EaRead : Read '#$33333333' (address in r10) into r10:
5995
5996;@ EaCalc : Get '$3333.w' into r11:
5997  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
5998;@ EaRead : Read '$3333.w' (address in r11) into r0:
5999  add lr,pc,#4
6000  mov r0,r11
6001  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
6002
6003;@ Do arithmetic:
6004  rsbs r1,r10,r0 ;@ Defines NZCV
6005  mrs r10,cpsr ;@ r10=flags
6006  eor r10,r10,#0x20000000 ;@ Invert carry
6007  str r10,[r7,#0x4c] ;@ Save X bit
6008
6009;@ EaWrite: Write r1 into '$3333.w' (address in r11):
6010  add lr,pc,#4
6011  mov r0,r11
6012  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
6013
6014  ldrh r8,[r4],#2 ;@ Fetch next opcode
6015  subs r5,r5,#32 ;@ Subtract cycles
6016  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6017  b CycloneEnd
6018
6019;@ ---------- [04b9] subi.l #$33333333, $33333333.l uses Op04b9 ----------
6020Op04b9:
6021;@ EaCalc : Get '#$33333333' into r10:
6022  ldrh r2,[r4],#2 ;@ Fetch immediate value
6023  ldrh r3,[r4],#2
6024  orr r10,r3,r2,lsl #16
6025;@ EaRead : Read '#$33333333' (address in r10) into r10:
6026
6027;@ EaCalc : Get '$33333333.l' into r11:
6028  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
6029  ldrh r0,[r4],#2
6030  orr r11,r0,r2,lsl #16
6031;@ EaRead : Read '$33333333.l' (address in r11) into r0:
6032  add lr,pc,#4
6033  mov r0,r11
6034  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
6035
6036;@ Do arithmetic:
6037  rsbs r1,r10,r0 ;@ Defines NZCV
6038  mrs r10,cpsr ;@ r10=flags
6039  eor r10,r10,#0x20000000 ;@ Invert carry
6040  str r10,[r7,#0x4c] ;@ Save X bit
6041
6042;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
6043  add lr,pc,#4
6044  mov r0,r11
6045  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
6046
6047  ldrh r8,[r4],#2 ;@ Fetch next opcode
6048  subs r5,r5,#36 ;@ Subtract cycles
6049  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6050  b CycloneEnd
6051
6052;@ ---------- [0600] addi.b #$33, d0 uses Op0600 ----------
6053Op0600:
6054;@ EaCalc : Get '#$33' into r10:
6055  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6056;@ EaRead : Read '#$33' (address in r10) into r10:
6057
6058;@ EaCalc : Get register index into r11:
6059  and r11,r8,#0x000f
6060;@ EaRead : Read register[r11] into r0:
6061  ldr r0,[r7,r11,lsl #2]
6062
6063  mov r10,r10,asl #24
6064;@ Do arithmetic:
6065  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6066  mrs r10,cpsr ;@ r10=flags
6067  str r10,[r7,#0x4c] ;@ Save X bit
6068
6069;@ EaWrite: r1 into register[r11]:
6070  mov r1,r1,lsr #24
6071  strb r1,[r7,r11,lsl #2]
6072
6073  ldrh r8,[r4],#2 ;@ Fetch next opcode
6074  subs r5,r5,#8 ;@ Subtract cycles
6075  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6076  b CycloneEnd
6077
6078;@ ---------- [0610] addi.b #$33, (a0) uses Op0610 ----------
6079Op0610:
6080;@ EaCalc : Get '#$33' into r10:
6081  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6082;@ EaRead : Read '#$33' (address in r10) into r10:
6083
6084;@ EaCalc : Get '(a0)' into r11:
6085  and r2,r8,#0x000f
6086  orr r2,r2,#0x8 ;@ A0-7
6087  ldr r11,[r7,r2,lsl #2]
6088;@ EaRead : Read '(a0)' (address in r11) into r0:
6089  add lr,pc,#4
6090  mov r0,r11
6091  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6092
6093  mov r10,r10,asl #24
6094;@ Do arithmetic:
6095  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6096  mrs r10,cpsr ;@ r10=flags
6097  str r10,[r7,#0x4c] ;@ Save X bit
6098
6099;@ EaWrite: Write r1 into '(a0)' (address in r11):
6100  mov r1,r1,lsr #24
6101  add lr,pc,#4
6102  mov r0,r11
6103  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
6104
6105  ldrh r8,[r4],#2 ;@ Fetch next opcode
6106  subs r5,r5,#16 ;@ Subtract cycles
6107  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6108  b CycloneEnd
6109
6110;@ ---------- [0618] addi.b #$33, (a0)+ uses Op0618 ----------
6111Op0618:
6112;@ EaCalc : Get '#$33' into r10:
6113  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6114;@ EaRead : Read '#$33' (address in r10) into r10:
6115
6116;@ EaCalc : Get '(a0)+' into r11:
6117  and r2,r8,#0x000f
6118  ldr r11,[r7,r2,lsl #2]
6119  add r3,r11,#1 ;@ Post-increment An
6120  str r3,[r7,r2,lsl #2]
6121;@ EaRead : Read '(a0)+' (address in r11) into r0:
6122  add lr,pc,#4
6123  mov r0,r11
6124  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6125
6126  mov r10,r10,asl #24
6127;@ Do arithmetic:
6128  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6129  mrs r10,cpsr ;@ r10=flags
6130  str r10,[r7,#0x4c] ;@ Save X bit
6131
6132;@ EaWrite: Write r1 into '(a0)+' (address in r11):
6133  mov r1,r1,lsr #24
6134  add lr,pc,#4
6135  mov r0,r11
6136  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
6137
6138  ldrh r8,[r4],#2 ;@ Fetch next opcode
6139  subs r5,r5,#16 ;@ Subtract cycles
6140  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6141  b CycloneEnd
6142
6143;@ ---------- [061f] addi.b #$33, (a7)+ uses Op061f ----------
6144Op061f:
6145;@ EaCalc : Get '#$33' into r10:
6146  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6147;@ EaRead : Read '#$33' (address in r10) into r10:
6148
6149;@ EaCalc : Get '(a7)+' into r11:
6150  ldr r11,[r7,#0x3c] ;@ A7
6151  add r3,r11,#2 ;@ Post-increment An
6152  str r3,[r7,#0x3c] ;@ A7
6153;@ EaRead : Read '(a7)+' (address in r11) into r0:
6154  add lr,pc,#4
6155  mov r0,r11
6156  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6157
6158  mov r10,r10,asl #24
6159;@ Do arithmetic:
6160  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6161  mrs r10,cpsr ;@ r10=flags
6162  str r10,[r7,#0x4c] ;@ Save X bit
6163
6164;@ EaWrite: Write r1 into '(a7)+' (address in r11):
6165  mov r1,r1,lsr #24
6166  add lr,pc,#4
6167  mov r0,r11
6168  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
6169
6170  ldrh r8,[r4],#2 ;@ Fetch next opcode
6171  subs r5,r5,#16 ;@ Subtract cycles
6172  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6173  b CycloneEnd
6174
6175;@ ---------- [0620] addi.b #$33, -(a0) uses Op0620 ----------
6176Op0620:
6177;@ EaCalc : Get '#$33' into r10:
6178  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6179;@ EaRead : Read '#$33' (address in r10) into r10:
6180
6181;@ EaCalc : Get '-(a0)' into r11:
6182  and r2,r8,#0x000f
6183  orr r2,r2,#0x8 ;@ A0-7
6184  ldr r11,[r7,r2,lsl #2]
6185  sub r11,r11,#1 ;@ Pre-decrement An
6186  str r11,[r7,r2,lsl #2]
6187;@ EaRead : Read '-(a0)' (address in r11) into r0:
6188  add lr,pc,#4
6189  mov r0,r11
6190  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6191
6192  mov r10,r10,asl #24
6193;@ Do arithmetic:
6194  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6195  mrs r10,cpsr ;@ r10=flags
6196  str r10,[r7,#0x4c] ;@ Save X bit
6197
6198;@ EaWrite: Write r1 into '-(a0)' (address in r11):
6199  mov r1,r1,lsr #24
6200  add lr,pc,#4
6201  mov r0,r11
6202  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
6203
6204  ldrh r8,[r4],#2 ;@ Fetch next opcode
6205  subs r5,r5,#18 ;@ Subtract cycles
6206  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6207  b CycloneEnd
6208
6209;@ ---------- [0627] addi.b #$33, -(a7) uses Op0627 ----------
6210Op0627:
6211;@ EaCalc : Get '#$33' into r10:
6212  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6213;@ EaRead : Read '#$33' (address in r10) into r10:
6214
6215;@ EaCalc : Get '-(a7)' into r11:
6216  ldr r11,[r7,#0x3c] ;@ A7
6217  sub r11,r11,#2 ;@ Pre-decrement An
6218  str r11,[r7,#0x3c] ;@ A7
6219;@ EaRead : Read '-(a7)' (address in r11) into r0:
6220  add lr,pc,#4
6221  mov r0,r11
6222  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6223
6224  mov r10,r10,asl #24
6225;@ Do arithmetic:
6226  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6227  mrs r10,cpsr ;@ r10=flags
6228  str r10,[r7,#0x4c] ;@ Save X bit
6229
6230;@ EaWrite: Write r1 into '-(a7)' (address in r11):
6231  mov r1,r1,lsr #24
6232  add lr,pc,#4
6233  mov r0,r11
6234  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
6235
6236  ldrh r8,[r4],#2 ;@ Fetch next opcode
6237  subs r5,r5,#18 ;@ Subtract cycles
6238  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6239  b CycloneEnd
6240
6241;@ ---------- [0628] addi.b #$33, ($3333,a0) uses Op0628 ----------
6242Op0628:
6243;@ EaCalc : Get '#$33' into r10:
6244  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6245;@ EaRead : Read '#$33' (address in r10) into r10:
6246
6247;@ EaCalc : Get '($3333,a0)' into r11:
6248  ldrsh r0,[r4],#2 ;@ Fetch offset
6249  and r2,r8,#0x000f
6250  ldr r2,[r7,r2,lsl #2]
6251  add r11,r0,r2 ;@ Add on offset
6252;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
6253  add lr,pc,#4
6254  mov r0,r11
6255  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6256
6257  mov r10,r10,asl #24
6258;@ Do arithmetic:
6259  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6260  mrs r10,cpsr ;@ r10=flags
6261  str r10,[r7,#0x4c] ;@ Save X bit
6262
6263;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
6264  mov r1,r1,lsr #24
6265  add lr,pc,#4
6266  mov r0,r11
6267  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
6268
6269  ldrh r8,[r4],#2 ;@ Fetch next opcode
6270  subs r5,r5,#20 ;@ Subtract cycles
6271  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6272  b CycloneEnd
6273
6274;@ ---------- [0630] addi.b #$33, ($33,a0,d3.w*2) uses Op0630 ----------
6275Op0630:
6276;@ EaCalc : Get '#$33' into r10:
6277  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6278;@ EaRead : Read '#$33' (address in r10) into r10:
6279
6280;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
6281;@ Get extension word into r3:
6282  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
6283  mov r2,r3,lsr #10
6284  tst r3,#0x0800 ;@ Is Rn Word or Long
6285  and r2,r2,#0x3c ;@ r2=Index of Rn
6286  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
6287  ldrne   r2,[r7,r2] ;@ r2=Rn.l
6288  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
6289  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
6290  and r2,r8,#0x000f
6291  orr r2,r2,#0x8 ;@ A0-7
6292  ldr r2,[r7,r2,lsl #2]
6293  add r11,r2,r3 ;@ r11=Disp+An+Rn
6294;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
6295  add lr,pc,#4
6296  mov r0,r11
6297  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6298
6299  mov r10,r10,asl #24
6300;@ Do arithmetic:
6301  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6302  mrs r10,cpsr ;@ r10=flags
6303  str r10,[r7,#0x4c] ;@ Save X bit
6304
6305;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
6306  mov r1,r1,lsr #24
6307  add lr,pc,#4
6308  mov r0,r11
6309  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
6310
6311  ldrh r8,[r4],#2 ;@ Fetch next opcode
6312  subs r5,r5,#22 ;@ Subtract cycles
6313  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6314  b CycloneEnd
6315
6316;@ ---------- [0638] addi.b #$33, $3333.w uses Op0638 ----------
6317Op0638:
6318;@ EaCalc : Get '#$33' into r10:
6319  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6320;@ EaRead : Read '#$33' (address in r10) into r10:
6321
6322;@ EaCalc : Get '$3333.w' into r11:
6323  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
6324;@ EaRead : Read '$3333.w' (address in r11) into r0:
6325  add lr,pc,#4
6326  mov r0,r11
6327  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6328
6329  mov r10,r10,asl #24
6330;@ Do arithmetic:
6331  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6332  mrs r10,cpsr ;@ r10=flags
6333  str r10,[r7,#0x4c] ;@ Save X bit
6334
6335;@ EaWrite: Write r1 into '$3333.w' (address in r11):
6336  mov r1,r1,lsr #24
6337  add lr,pc,#4
6338  mov r0,r11
6339  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
6340
6341  ldrh r8,[r4],#2 ;@ Fetch next opcode
6342  subs r5,r5,#20 ;@ Subtract cycles
6343  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6344  b CycloneEnd
6345
6346;@ ---------- [0639] addi.b #$33, $33333333.l uses Op0639 ----------
6347Op0639:
6348;@ EaCalc : Get '#$33' into r10:
6349  ldrsb r10,[r4],#2 ;@ Fetch immediate value
6350;@ EaRead : Read '#$33' (address in r10) into r10:
6351
6352;@ EaCalc : Get '$33333333.l' into r11:
6353  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
6354  ldrh r0,[r4],#2
6355  orr r11,r0,r2,lsl #16
6356;@ EaRead : Read '$33333333.l' (address in r11) into r0:
6357  add lr,pc,#4
6358  mov r0,r11
6359  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6360
6361  mov r10,r10,asl #24
6362;@ Do arithmetic:
6363  adds r1,r10,r0,asl #24 ;@ Defines NZCV
6364  mrs r10,cpsr ;@ r10=flags
6365  str r10,[r7,#0x4c] ;@ Save X bit
6366
6367;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
6368  mov r1,r1,lsr #24
6369  add lr,pc,#4
6370  mov r0,r11
6371  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
6372
6373  ldrh r8,[r4],#2 ;@ Fetch next opcode
6374  subs r5,r5,#24 ;@ Subtract cycles
6375  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6376  b CycloneEnd
6377
6378;@ ---------- [0650] addi.w #$3333, (a0) uses Op0650 ----------
6379Op0650:
6380;@ EaCalc : Get '#$3333' into r10:
6381  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6382;@ EaRead : Read '#$3333' (address in r10) into r10:
6383
6384;@ EaCalc : Get '(a0)' into r11:
6385  and r2,r8,#0x000f
6386  orr r2,r2,#0x8 ;@ A0-7
6387  ldr r11,[r7,r2,lsl #2]
6388;@ EaRead : Read '(a0)' (address in r11) into r0:
6389  add lr,pc,#4
6390  mov r0,r11
6391  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
6392
6393  mov r10,r10,asl #16
6394;@ Do arithmetic:
6395  adds r1,r10,r0,asl #16 ;@ Defines NZCV
6396  mrs r10,cpsr ;@ r10=flags
6397  str r10,[r7,#0x4c] ;@ Save X bit
6398
6399;@ EaWrite: Write r1 into '(a0)' (address in r11):
6400  mov r1,r1,lsr #16
6401  add lr,pc,#4
6402  mov r0,r11
6403  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
6404
6405  ldrh r8,[r4],#2 ;@ Fetch next opcode
6406  subs r5,r5,#16 ;@ Subtract cycles
6407  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6408  b CycloneEnd
6409
6410;@ ---------- [0658] addi.w #$3333, (a0)+ uses Op0658 ----------
6411Op0658:
6412;@ EaCalc : Get '#$3333' into r10:
6413  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6414;@ EaRead : Read '#$3333' (address in r10) into r10:
6415
6416;@ EaCalc : Get '(a0)+' into r11:
6417  and r2,r8,#0x000f
6418  ldr r11,[r7,r2,lsl #2]
6419  add r3,r11,#2 ;@ Post-increment An
6420  str r3,[r7,r2,lsl #2]
6421;@ EaRead : Read '(a0)+' (address in r11) into r0:
6422  add lr,pc,#4
6423  mov r0,r11
6424  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
6425
6426  mov r10,r10,asl #16
6427;@ Do arithmetic:
6428  adds r1,r10,r0,asl #16 ;@ Defines NZCV
6429  mrs r10,cpsr ;@ r10=flags
6430  str r10,[r7,#0x4c] ;@ Save X bit
6431
6432;@ EaWrite: Write r1 into '(a0)+' (address in r11):
6433  mov r1,r1,lsr #16
6434  add lr,pc,#4
6435  mov r0,r11
6436  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
6437
6438  ldrh r8,[r4],#2 ;@ Fetch next opcode
6439  subs r5,r5,#16 ;@ Subtract cycles
6440  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6441  b CycloneEnd
6442
6443;@ ---------- [0660] addi.w #$3333, -(a0) uses Op0660 ----------
6444Op0660:
6445;@ EaCalc : Get '#$3333' into r10:
6446  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6447;@ EaRead : Read '#$3333' (address in r10) into r10:
6448
6449;@ EaCalc : Get '-(a0)' into r11:
6450  and r2,r8,#0x000f
6451  orr r2,r2,#0x8 ;@ A0-7
6452  ldr r11,[r7,r2,lsl #2]
6453  sub r11,r11,#2 ;@ Pre-decrement An
6454  str r11,[r7,r2,lsl #2]
6455;@ EaRead : Read '-(a0)' (address in r11) into r0:
6456  add lr,pc,#4
6457  mov r0,r11
6458  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
6459
6460  mov r10,r10,asl #16
6461;@ Do arithmetic:
6462  adds r1,r10,r0,asl #16 ;@ Defines NZCV
6463  mrs r10,cpsr ;@ r10=flags
6464  str r10,[r7,#0x4c] ;@ Save X bit
6465
6466;@ EaWrite: Write r1 into '-(a0)' (address in r11):
6467  mov r1,r1,lsr #16
6468  add lr,pc,#4
6469  mov r0,r11
6470  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
6471
6472  ldrh r8,[r4],#2 ;@ Fetch next opcode
6473  subs r5,r5,#18 ;@ Subtract cycles
6474  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6475  b CycloneEnd
6476
6477;@ ---------- [0668] addi.w #$3333, ($3333,a0) uses Op0668 ----------
6478Op0668:
6479;@ EaCalc : Get '#$3333' into r10:
6480  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6481;@ EaRead : Read '#$3333' (address in r10) into r10:
6482
6483;@ EaCalc : Get '($3333,a0)' into r11:
6484  ldrsh r0,[r4],#2 ;@ Fetch offset
6485  and r2,r8,#0x000f
6486  ldr r2,[r7,r2,lsl #2]
6487  add r11,r0,r2 ;@ Add on offset
6488;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
6489  add lr,pc,#4
6490  mov r0,r11
6491  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
6492
6493  mov r10,r10,asl #16
6494;@ Do arithmetic:
6495  adds r1,r10,r0,asl #16 ;@ Defines NZCV
6496  mrs r10,cpsr ;@ r10=flags
6497  str r10,[r7,#0x4c] ;@ Save X bit
6498
6499;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
6500  mov r1,r1,lsr #16
6501  add lr,pc,#4
6502  mov r0,r11
6503  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
6504
6505  ldrh r8,[r4],#2 ;@ Fetch next opcode
6506  subs r5,r5,#20 ;@ Subtract cycles
6507  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6508  b CycloneEnd
6509
6510;@ ---------- [0670] addi.w #$3333, ($33,a0,d3.w*2) uses Op0670 ----------
6511Op0670:
6512;@ EaCalc : Get '#$3333' into r10:
6513  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6514;@ EaRead : Read '#$3333' (address in r10) into r10:
6515
6516;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
6517;@ Get extension word into r3:
6518  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
6519  mov r2,r3,lsr #10
6520  tst r3,#0x0800 ;@ Is Rn Word or Long
6521  and r2,r2,#0x3c ;@ r2=Index of Rn
6522  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
6523  ldrne   r2,[r7,r2] ;@ r2=Rn.l
6524  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
6525  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
6526  and r2,r8,#0x000f
6527  orr r2,r2,#0x8 ;@ A0-7
6528  ldr r2,[r7,r2,lsl #2]
6529  add r11,r2,r3 ;@ r11=Disp+An+Rn
6530;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
6531  add lr,pc,#4
6532  mov r0,r11
6533  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
6534
6535  mov r10,r10,asl #16
6536;@ Do arithmetic:
6537  adds r1,r10,r0,asl #16 ;@ Defines NZCV
6538  mrs r10,cpsr ;@ r10=flags
6539  str r10,[r7,#0x4c] ;@ Save X bit
6540
6541;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
6542  mov r1,r1,lsr #16
6543  add lr,pc,#4
6544  mov r0,r11
6545  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
6546
6547  ldrh r8,[r4],#2 ;@ Fetch next opcode
6548  subs r5,r5,#22 ;@ Subtract cycles
6549  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6550  b CycloneEnd
6551
6552;@ ---------- [0678] addi.w #$3333, $3333.w uses Op0678 ----------
6553Op0678:
6554;@ EaCalc : Get '#$3333' into r10:
6555  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6556;@ EaRead : Read '#$3333' (address in r10) into r10:
6557
6558;@ EaCalc : Get '$3333.w' into r11:
6559  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
6560;@ EaRead : Read '$3333.w' (address in r11) into r0:
6561  add lr,pc,#4
6562  mov r0,r11
6563  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
6564
6565  mov r10,r10,asl #16
6566;@ Do arithmetic:
6567  adds r1,r10,r0,asl #16 ;@ Defines NZCV
6568  mrs r10,cpsr ;@ r10=flags
6569  str r10,[r7,#0x4c] ;@ Save X bit
6570
6571;@ EaWrite: Write r1 into '$3333.w' (address in r11):
6572  mov r1,r1,lsr #16
6573  add lr,pc,#4
6574  mov r0,r11
6575  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
6576
6577  ldrh r8,[r4],#2 ;@ Fetch next opcode
6578  subs r5,r5,#20 ;@ Subtract cycles
6579  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6580  b CycloneEnd
6581
6582;@ ---------- [0679] addi.w #$3333, $33333333.l uses Op0679 ----------
6583Op0679:
6584;@ EaCalc : Get '#$3333' into r10:
6585  ldrsh r10,[r4],#2 ;@ Fetch immediate value
6586;@ EaRead : Read '#$3333' (address in r10) into r10:
6587
6588;@ EaCalc : Get '$33333333.l' into r11:
6589  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
6590  ldrh r0,[r4],#2
6591  orr r11,r0,r2,lsl #16
6592;@ EaRead : Read '$33333333.l' (address in r11) into r0:
6593  add lr,pc,#4
6594  mov r0,r11
6595  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
6596
6597  mov r10,r10,asl #16
6598;@ Do arithmetic:
6599  adds r1,r10,r0,asl #16 ;@ Defines NZCV
6600  mrs r10,cpsr ;@ r10=flags
6601  str r10,[r7,#0x4c] ;@ Save X bit
6602
6603;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
6604  mov r1,r1,lsr #16
6605  add lr,pc,#4
6606  mov r0,r11
6607  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
6608
6609  ldrh r8,[r4],#2 ;@ Fetch next opcode
6610  subs r5,r5,#24 ;@ Subtract cycles
6611  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6612  b CycloneEnd
6613
6614;@ ---------- [0680] addi.l #$33333333, d0 uses Op0680 ----------
6615Op0680:
6616;@ EaCalc : Get '#$33333333' into r10:
6617  ldrh r2,[r4],#2 ;@ Fetch immediate value
6618  ldrh r3,[r4],#2
6619  orr r10,r3,r2,lsl #16
6620;@ EaRead : Read '#$33333333' (address in r10) into r10:
6621
6622;@ EaCalc : Get register index into r11:
6623  and r11,r8,#0x000f
6624;@ EaRead : Read register[r11] into r0:
6625  ldr r0,[r7,r11,lsl #2]
6626
6627;@ Do arithmetic:
6628  adds r1,r10,r0 ;@ Defines NZCV
6629  mrs r10,cpsr ;@ r10=flags
6630  str r10,[r7,#0x4c] ;@ Save X bit
6631
6632;@ EaWrite: r1 into register[r11]:
6633  str r1,[r7,r11,lsl #2]
6634
6635  ldrh r8,[r4],#2 ;@ Fetch next opcode
6636  subs r5,r5,#16 ;@ Subtract cycles
6637  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6638  b CycloneEnd
6639
6640;@ ---------- [0690] addi.l #$33333333, (a0) uses Op0690 ----------
6641Op0690:
6642;@ EaCalc : Get '#$33333333' into r10:
6643  ldrh r2,[r4],#2 ;@ Fetch immediate value
6644  ldrh r3,[r4],#2
6645  orr r10,r3,r2,lsl #16
6646;@ EaRead : Read '#$33333333' (address in r10) into r10:
6647
6648;@ EaCalc : Get '(a0)' into r11:
6649  and r2,r8,#0x000f
6650  orr r2,r2,#0x8 ;@ A0-7
6651  ldr r11,[r7,r2,lsl #2]
6652;@ EaRead : Read '(a0)' (address in r11) into r0:
6653  add lr,pc,#4
6654  mov r0,r11
6655  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
6656
6657;@ Do arithmetic:
6658  adds r1,r10,r0 ;@ Defines NZCV
6659  mrs r10,cpsr ;@ r10=flags
6660  str r10,[r7,#0x4c] ;@ Save X bit
6661
6662;@ EaWrite: Write r1 into '(a0)' (address in r11):
6663  add lr,pc,#4
6664  mov r0,r11
6665  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
6666
6667  ldrh r8,[r4],#2 ;@ Fetch next opcode
6668  subs r5,r5,#28 ;@ Subtract cycles
6669  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6670  b CycloneEnd
6671
6672;@ ---------- [0698] addi.l #$33333333, (a0)+ uses Op0698 ----------
6673Op0698:
6674;@ EaCalc : Get '#$33333333' into r10:
6675  ldrh r2,[r4],#2 ;@ Fetch immediate value
6676  ldrh r3,[r4],#2
6677  orr r10,r3,r2,lsl #16
6678;@ EaRead : Read '#$33333333' (address in r10) into r10:
6679
6680;@ EaCalc : Get '(a0)+' into r11:
6681  and r2,r8,#0x000f
6682  ldr r11,[r7,r2,lsl #2]
6683  add r3,r11,#4 ;@ Post-increment An
6684  str r3,[r7,r2,lsl #2]
6685;@ EaRead : Read '(a0)+' (address in r11) into r0:
6686  add lr,pc,#4
6687  mov r0,r11
6688  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
6689
6690;@ Do arithmetic:
6691  adds r1,r10,r0 ;@ Defines NZCV
6692  mrs r10,cpsr ;@ r10=flags
6693  str r10,[r7,#0x4c] ;@ Save X bit
6694
6695;@ EaWrite: Write r1 into '(a0)+' (address in r11):
6696  add lr,pc,#4
6697  mov r0,r11
6698  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
6699
6700  ldrh r8,[r4],#2 ;@ Fetch next opcode
6701  subs r5,r5,#28 ;@ Subtract cycles
6702  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6703  b CycloneEnd
6704
6705;@ ---------- [06a0] addi.l #$33333333, -(a0) uses Op06a0 ----------
6706Op06a0:
6707;@ EaCalc : Get '#$33333333' into r10:
6708  ldrh r2,[r4],#2 ;@ Fetch immediate value
6709  ldrh r3,[r4],#2
6710  orr r10,r3,r2,lsl #16
6711;@ EaRead : Read '#$33333333' (address in r10) into r10:
6712
6713;@ EaCalc : Get '-(a0)' into r11:
6714  and r2,r8,#0x000f
6715  orr r2,r2,#0x8 ;@ A0-7
6716  ldr r11,[r7,r2,lsl #2]
6717  sub r11,r11,#4 ;@ Pre-decrement An
6718  str r11,[r7,r2,lsl #2]
6719;@ EaRead : Read '-(a0)' (address in r11) into r0:
6720  add lr,pc,#4
6721  mov r0,r11
6722  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
6723
6724;@ Do arithmetic:
6725  adds r1,r10,r0 ;@ Defines NZCV
6726  mrs r10,cpsr ;@ r10=flags
6727  str r10,[r7,#0x4c] ;@ Save X bit
6728
6729;@ EaWrite: Write r1 into '-(a0)' (address in r11):
6730  add lr,pc,#4
6731  mov r0,r11
6732  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
6733
6734  ldrh r8,[r4],#2 ;@ Fetch next opcode
6735  subs r5,r5,#30 ;@ Subtract cycles
6736  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6737  b CycloneEnd
6738
6739;@ ---------- [06a8] addi.l #$33333333, ($3333,a0) uses Op06a8 ----------
6740Op06a8:
6741;@ EaCalc : Get '#$33333333' into r10:
6742  ldrh r2,[r4],#2 ;@ Fetch immediate value
6743  ldrh r3,[r4],#2
6744  orr r10,r3,r2,lsl #16
6745;@ EaRead : Read '#$33333333' (address in r10) into r10:
6746
6747;@ EaCalc : Get '($3333,a0)' into r11:
6748  ldrsh r0,[r4],#2 ;@ Fetch offset
6749  and r2,r8,#0x000f
6750  ldr r2,[r7,r2,lsl #2]
6751  add r11,r0,r2 ;@ Add on offset
6752;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
6753  add lr,pc,#4
6754  mov r0,r11
6755  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
6756
6757;@ Do arithmetic:
6758  adds r1,r10,r0 ;@ Defines NZCV
6759  mrs r10,cpsr ;@ r10=flags
6760  str r10,[r7,#0x4c] ;@ Save X bit
6761
6762;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
6763  add lr,pc,#4
6764  mov r0,r11
6765  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
6766
6767  ldrh r8,[r4],#2 ;@ Fetch next opcode
6768  subs r5,r5,#32 ;@ Subtract cycles
6769  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6770  b CycloneEnd
6771
6772;@ ---------- [06b0] addi.l #$33333333, ($33,a0,d3.w*2) uses Op06b0 ----------
6773Op06b0:
6774;@ EaCalc : Get '#$33333333' into r10:
6775  ldrh r2,[r4],#2 ;@ Fetch immediate value
6776  ldrh r3,[r4],#2
6777  orr r10,r3,r2,lsl #16
6778;@ EaRead : Read '#$33333333' (address in r10) into r10:
6779
6780;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
6781;@ Get extension word into r3:
6782  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
6783  mov r2,r3,lsr #10
6784  tst r3,#0x0800 ;@ Is Rn Word or Long
6785  and r2,r2,#0x3c ;@ r2=Index of Rn
6786  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
6787  ldrne   r2,[r7,r2] ;@ r2=Rn.l
6788  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
6789  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
6790  and r2,r8,#0x000f
6791  orr r2,r2,#0x8 ;@ A0-7
6792  ldr r2,[r7,r2,lsl #2]
6793  add r11,r2,r3 ;@ r11=Disp+An+Rn
6794;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
6795  add lr,pc,#4
6796  mov r0,r11
6797  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
6798
6799;@ Do arithmetic:
6800  adds r1,r10,r0 ;@ Defines NZCV
6801  mrs r10,cpsr ;@ r10=flags
6802  str r10,[r7,#0x4c] ;@ Save X bit
6803
6804;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
6805  add lr,pc,#4
6806  mov r0,r11
6807  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
6808
6809  ldrh r8,[r4],#2 ;@ Fetch next opcode
6810  subs r5,r5,#34 ;@ Subtract cycles
6811  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6812  b CycloneEnd
6813
6814;@ ---------- [06b8] addi.l #$33333333, $3333.w uses Op06b8 ----------
6815Op06b8:
6816;@ EaCalc : Get '#$33333333' into r10:
6817  ldrh r2,[r4],#2 ;@ Fetch immediate value
6818  ldrh r3,[r4],#2
6819  orr r10,r3,r2,lsl #16
6820;@ EaRead : Read '#$33333333' (address in r10) into r10:
6821
6822;@ EaCalc : Get '$3333.w' into r11:
6823  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
6824;@ EaRead : Read '$3333.w' (address in r11) into r0:
6825  add lr,pc,#4
6826  mov r0,r11
6827  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
6828
6829;@ Do arithmetic:
6830  adds r1,r10,r0 ;@ Defines NZCV
6831  mrs r10,cpsr ;@ r10=flags
6832  str r10,[r7,#0x4c] ;@ Save X bit
6833
6834;@ EaWrite: Write r1 into '$3333.w' (address in r11):
6835  add lr,pc,#4
6836  mov r0,r11
6837  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
6838
6839  ldrh r8,[r4],#2 ;@ Fetch next opcode
6840  subs r5,r5,#32 ;@ Subtract cycles
6841  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6842  b CycloneEnd
6843
6844;@ ---------- [06b9] addi.l #$33333333, $33333333.l uses Op06b9 ----------
6845Op06b9:
6846;@ EaCalc : Get '#$33333333' into r10:
6847  ldrh r2,[r4],#2 ;@ Fetch immediate value
6848  ldrh r3,[r4],#2
6849  orr r10,r3,r2,lsl #16
6850;@ EaRead : Read '#$33333333' (address in r10) into r10:
6851
6852;@ EaCalc : Get '$33333333.l' into r11:
6853  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
6854  ldrh r0,[r4],#2
6855  orr r11,r0,r2,lsl #16
6856;@ EaRead : Read '$33333333.l' (address in r11) into r0:
6857  add lr,pc,#4
6858  mov r0,r11
6859  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
6860
6861;@ Do arithmetic:
6862  adds r1,r10,r0 ;@ Defines NZCV
6863  mrs r10,cpsr ;@ r10=flags
6864  str r10,[r7,#0x4c] ;@ Save X bit
6865
6866;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
6867  add lr,pc,#4
6868  mov r0,r11
6869  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
6870
6871  ldrh r8,[r4],#2 ;@ Fetch next opcode
6872  subs r5,r5,#36 ;@ Subtract cycles
6873  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6874  b CycloneEnd
6875
6876;@ ---------- [0800] btst #$33, d0 uses Op0800 ----------
6877Op0800:
6878
6879;@ EaCalc : Get '#$33' into r0:
6880  ldrsb r0,[r4],#2 ;@ Fetch immediate value
6881;@ EaRead : Read '#$33' (address in r0) into r0:
6882
6883  mov r11,#1
6884  bic r10,r10,#0x40000000 ;@ Blank Z flag
6885  and r0,r0,#0x1F ;@ reg - do mod 32
6886  mov r11,r11,lsl r0 ;@ Make bit mask
6887
6888;@ EaCalc : Get register index into r0:
6889  and r0,r8,#0x000f
6890;@ EaRead : Read register[r0] into r0:
6891  ldr r0,[r7,r0,lsl #2]
6892
6893  tst r0,r11 ;@ Do arithmetic
6894  orreq r10,r10,#0x40000000 ;@ Get Z flag
6895
6896  ldrh r8,[r4],#2 ;@ Fetch next opcode
6897  subs r5,r5,#10 ;@ Subtract cycles
6898  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6899  b CycloneEnd
6900
6901;@ ---------- [0810] btst #$33, (a0) uses Op0810 ----------
6902Op0810:
6903
6904;@ EaCalc : Get '#$33' into r0:
6905  ldrsb r0,[r4],#2 ;@ Fetch immediate value
6906;@ EaRead : Read '#$33' (address in r0) into r0:
6907
6908  mov r11,#1
6909  bic r10,r10,#0x40000000 ;@ Blank Z flag
6910  and r0,r0,#7    ;@ mem - do mod 8
6911  mov r11,r11,lsl r0 ;@ Make bit mask
6912
6913;@ EaCalc : Get '(a0)' into r0:
6914  and r2,r8,#0x000f
6915  orr r2,r2,#0x8 ;@ A0-7
6916  ldr r0,[r7,r2,lsl #2]
6917;@ EaRead : Read '(a0)' (address in r0) into r0:
6918  mov lr,pc
6919  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6920
6921  tst r0,r11 ;@ Do arithmetic
6922  orreq r10,r10,#0x40000000 ;@ Get Z flag
6923
6924  ldrh r8,[r4],#2 ;@ Fetch next opcode
6925  subs r5,r5,#12 ;@ Subtract cycles
6926  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6927  b CycloneEnd
6928
6929;@ ---------- [0818] btst #$33, (a0)+ uses Op0818 ----------
6930Op0818:
6931
6932;@ EaCalc : Get '#$33' into r0:
6933  ldrsb r0,[r4],#2 ;@ Fetch immediate value
6934;@ EaRead : Read '#$33' (address in r0) into r0:
6935
6936  mov r11,#1
6937  bic r10,r10,#0x40000000 ;@ Blank Z flag
6938  and r0,r0,#7    ;@ mem - do mod 8
6939  mov r11,r11,lsl r0 ;@ Make bit mask
6940
6941;@ EaCalc : Get '(a0)+' into r0:
6942  and r2,r8,#0x000f
6943  ldr r0,[r7,r2,lsl #2]
6944  add r3,r0,#1 ;@ Post-increment An
6945  str r3,[r7,r2,lsl #2]
6946;@ EaRead : Read '(a0)+' (address in r0) into r0:
6947  mov lr,pc
6948  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6949
6950  tst r0,r11 ;@ Do arithmetic
6951  orreq r10,r10,#0x40000000 ;@ Get Z flag
6952
6953  ldrh r8,[r4],#2 ;@ Fetch next opcode
6954  subs r5,r5,#12 ;@ Subtract cycles
6955  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6956  b CycloneEnd
6957
6958;@ ---------- [081f] btst #$33, (a7)+ uses Op081f ----------
6959Op081f:
6960
6961;@ EaCalc : Get '#$33' into r0:
6962  ldrsb r0,[r4],#2 ;@ Fetch immediate value
6963;@ EaRead : Read '#$33' (address in r0) into r0:
6964
6965  mov r11,#1
6966  bic r10,r10,#0x40000000 ;@ Blank Z flag
6967  and r0,r0,#7    ;@ mem - do mod 8
6968  mov r11,r11,lsl r0 ;@ Make bit mask
6969
6970;@ EaCalc : Get '(a7)+' into r0:
6971  ldr r0,[r7,#0x3c] ;@ A7
6972  add r3,r0,#2 ;@ Post-increment An
6973  str r3,[r7,#0x3c] ;@ A7
6974;@ EaRead : Read '(a7)+' (address in r0) into r0:
6975  mov lr,pc
6976  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
6977
6978  tst r0,r11 ;@ Do arithmetic
6979  orreq r10,r10,#0x40000000 ;@ Get Z flag
6980
6981  ldrh r8,[r4],#2 ;@ Fetch next opcode
6982  subs r5,r5,#12 ;@ Subtract cycles
6983  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
6984  b CycloneEnd
6985
6986;@ ---------- [0820] btst #$33, -(a0) uses Op0820 ----------
6987Op0820:
6988
6989;@ EaCalc : Get '#$33' into r0:
6990  ldrsb r0,[r4],#2 ;@ Fetch immediate value
6991;@ EaRead : Read '#$33' (address in r0) into r0:
6992
6993  mov r11,#1
6994  bic r10,r10,#0x40000000 ;@ Blank Z flag
6995  and r0,r0,#7    ;@ mem - do mod 8
6996  mov r11,r11,lsl r0 ;@ Make bit mask
6997
6998;@ EaCalc : Get '-(a0)' into r0:
6999  and r2,r8,#0x000f
7000  orr r2,r2,#0x8 ;@ A0-7
7001  ldr r0,[r7,r2,lsl #2]
7002  sub r0,r0,#1 ;@ Pre-decrement An
7003  str r0,[r7,r2,lsl #2]
7004;@ EaRead : Read '-(a0)' (address in r0) into r0:
7005  mov lr,pc
7006  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7007
7008  tst r0,r11 ;@ Do arithmetic
7009  orreq r10,r10,#0x40000000 ;@ Get Z flag
7010
7011  ldrh r8,[r4],#2 ;@ Fetch next opcode
7012  subs r5,r5,#14 ;@ Subtract cycles
7013  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7014  b CycloneEnd
7015
7016;@ ---------- [0827] btst #$33, -(a7) uses Op0827 ----------
7017Op0827:
7018
7019;@ EaCalc : Get '#$33' into r0:
7020  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7021;@ EaRead : Read '#$33' (address in r0) into r0:
7022
7023  mov r11,#1
7024  bic r10,r10,#0x40000000 ;@ Blank Z flag
7025  and r0,r0,#7    ;@ mem - do mod 8
7026  mov r11,r11,lsl r0 ;@ Make bit mask
7027
7028;@ EaCalc : Get '-(a7)' into r0:
7029  ldr r0,[r7,#0x3c] ;@ A7
7030  sub r0,r0,#2 ;@ Pre-decrement An
7031  str r0,[r7,#0x3c] ;@ A7
7032;@ EaRead : Read '-(a7)' (address in r0) into r0:
7033  mov lr,pc
7034  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7035
7036  tst r0,r11 ;@ Do arithmetic
7037  orreq r10,r10,#0x40000000 ;@ Get Z flag
7038
7039  ldrh r8,[r4],#2 ;@ Fetch next opcode
7040  subs r5,r5,#14 ;@ Subtract cycles
7041  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7042  b CycloneEnd
7043
7044;@ ---------- [0830] btst #$33, ($33,a0,d3.w*2) uses Op0830 ----------
7045Op0830:
7046
7047;@ EaCalc : Get '#$33' into r0:
7048  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7049;@ EaRead : Read '#$33' (address in r0) into r0:
7050
7051  mov r11,#1
7052  bic r10,r10,#0x40000000 ;@ Blank Z flag
7053  and r0,r0,#7    ;@ mem - do mod 8
7054  mov r11,r11,lsl r0 ;@ Make bit mask
7055
7056;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
7057;@ Get extension word into r3:
7058  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
7059  mov r2,r3,lsr #10
7060  tst r3,#0x0800 ;@ Is Rn Word or Long
7061  and r2,r2,#0x3c ;@ r2=Index of Rn
7062  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
7063  ldrne   r2,[r7,r2] ;@ r2=Rn.l
7064  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
7065  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
7066  and r2,r8,#0x000f
7067  orr r2,r2,#0x8 ;@ A0-7
7068  ldr r2,[r7,r2,lsl #2]
7069  add r0,r2,r3 ;@ r0=Disp+An+Rn
7070;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
7071  mov lr,pc
7072  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7073
7074  tst r0,r11 ;@ Do arithmetic
7075  orreq r10,r10,#0x40000000 ;@ Get Z flag
7076
7077  ldrh r8,[r4],#2 ;@ Fetch next opcode
7078  subs r5,r5,#18 ;@ Subtract cycles
7079  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7080  b CycloneEnd
7081
7082;@ ---------- [083a] btst #$33, ($3333,pc); =3337 uses Op083a ----------
7083Op083a:
7084
7085;@ EaCalc : Get '#$33' into r0:
7086  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7087;@ EaRead : Read '#$33' (address in r0) into r0:
7088
7089  mov r11,#1
7090  bic r10,r10,#0x40000000 ;@ Blank Z flag
7091  and r0,r0,#7    ;@ mem - do mod 8
7092  mov r11,r11,lsl r0 ;@ Make bit mask
7093
7094;@ EaCalc : Get '($3333,pc)' into r0:
7095  ldr r0,[r7,#0x60] ;@ Get Memory base
7096  sub r0,r4,r0 ;@ Real PC
7097  ldrsh r2,[r4],#2 ;@ Fetch extension
7098  add r0,r2,r0 ;@ ($nn,PC)
7099;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
7100  mov lr,pc
7101  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
7102
7103  tst r0,r11 ;@ Do arithmetic
7104  orreq r10,r10,#0x40000000 ;@ Get Z flag
7105
7106  ldrh r8,[r4],#2 ;@ Fetch next opcode
7107  subs r5,r5,#16 ;@ Subtract cycles
7108  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7109  b CycloneEnd
7110
7111;@ ---------- [083b] btst #$33, ($33,pc,d3.w*2); =37 uses Op083b ----------
7112Op083b:
7113
7114;@ EaCalc : Get '#$33' into r0:
7115  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7116;@ EaRead : Read '#$33' (address in r0) into r0:
7117
7118  mov r11,#1
7119  bic r10,r10,#0x40000000 ;@ Blank Z flag
7120  and r0,r0,#7    ;@ mem - do mod 8
7121  mov r11,r11,lsl r0 ;@ Make bit mask
7122
7123;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
7124  ldr r0,[r7,#0x60] ;@ Get Memory base
7125  ldrh r3,[r4] ;@ Get extension word
7126  sub r0,r4,r0 ;@ r0=PC
7127  add r4,r4,#2
7128  mov r2,r3,lsr #10
7129  tst r3,#0x0800 ;@ Is Rn Word or Long
7130  and r2,r2,#0x3c ;@ r2=Index of Rn
7131  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
7132  ldrne   r2,[r7,r2] ;@ r2=Rn.l
7133  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
7134  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
7135  add r0,r2,r0 ;@ r0=Disp+PC+Rn
7136;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
7137  mov lr,pc
7138  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
7139
7140  tst r0,r11 ;@ Do arithmetic
7141  orreq r10,r10,#0x40000000 ;@ Get Z flag
7142
7143  ldrh r8,[r4],#2 ;@ Fetch next opcode
7144  subs r5,r5,#18 ;@ Subtract cycles
7145  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7146  b CycloneEnd
7147
7148;@ ---------- [0840] bchg #$33, d0 uses Op0840 ----------
7149Op0840:
7150
7151;@ EaCalc : Get '#$33' into r0:
7152  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7153;@ EaRead : Read '#$33' (address in r0) into r0:
7154
7155  mov r11,#1
7156  bic r10,r10,#0x40000000 ;@ Blank Z flag
7157  and r0,r0,#0x1F ;@ reg - do mod 32
7158  mov r11,r11,lsl r0 ;@ Make bit mask
7159
7160;@ EaCalc : Get register index into r8:
7161  and r8,r8,#0x000f
7162;@ EaRead : Read register[r8] into r0:
7163  ldr r0,[r7,r8,lsl #2]
7164
7165  tst r0,r11 ;@ Do arithmetic
7166  orreq r10,r10,#0x40000000 ;@ Get Z flag
7167
7168  eor r1,r0,r11 ;@ Toggle bit
7169
7170;@ EaWrite: r1 into register[r8]:
7171  str r1,[r7,r8,lsl #2]
7172
7173  ldrh r8,[r4],#2 ;@ Fetch next opcode
7174  subs r5,r5,#12 ;@ Subtract cycles
7175  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7176  b CycloneEnd
7177
7178;@ ---------- [0850] bchg #$33, (a0) uses Op0850 ----------
7179Op0850:
7180
7181;@ EaCalc : Get '#$33' into r0:
7182  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7183;@ EaRead : Read '#$33' (address in r0) into r0:
7184
7185  mov r11,#1
7186  bic r10,r10,#0x40000000 ;@ Blank Z flag
7187  and r0,r0,#7    ;@ mem - do mod 8
7188  mov r11,r11,lsl r0 ;@ Make bit mask
7189
7190;@ EaCalc : Get '(a0)' into r8:
7191  and r2,r8,#0x000f
7192  orr r2,r2,#0x8 ;@ A0-7
7193  ldr r8,[r7,r2,lsl #2]
7194;@ EaRead : Read '(a0)' (address in r8) into r0:
7195  add lr,pc,#4
7196  mov r0,r8
7197  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7198
7199  tst r0,r11 ;@ Do arithmetic
7200  orreq r10,r10,#0x40000000 ;@ Get Z flag
7201
7202  eor r1,r0,r11 ;@ Toggle bit
7203
7204;@ EaWrite: Write r1 into '(a0)' (address in r8):
7205  and r1,r1,#0xff
7206  add lr,pc,#4
7207  mov r0,r8
7208  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7209
7210  ldrh r8,[r4],#2 ;@ Fetch next opcode
7211  subs r5,r5,#16 ;@ Subtract cycles
7212  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7213  b CycloneEnd
7214
7215;@ ---------- [0858] bchg #$33, (a0)+ uses Op0858 ----------
7216Op0858:
7217
7218;@ EaCalc : Get '#$33' into r0:
7219  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7220;@ EaRead : Read '#$33' (address in r0) into r0:
7221
7222  mov r11,#1
7223  bic r10,r10,#0x40000000 ;@ Blank Z flag
7224  and r0,r0,#7    ;@ mem - do mod 8
7225  mov r11,r11,lsl r0 ;@ Make bit mask
7226
7227;@ EaCalc : Get '(a0)+' into r8:
7228  and r2,r8,#0x000f
7229  ldr r8,[r7,r2,lsl #2]
7230  add r3,r8,#1 ;@ Post-increment An
7231  str r3,[r7,r2,lsl #2]
7232;@ EaRead : Read '(a0)+' (address in r8) into r0:
7233  add lr,pc,#4
7234  mov r0,r8
7235  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7236
7237  tst r0,r11 ;@ Do arithmetic
7238  orreq r10,r10,#0x40000000 ;@ Get Z flag
7239
7240  eor r1,r0,r11 ;@ Toggle bit
7241
7242;@ EaWrite: Write r1 into '(a0)+' (address in r8):
7243  and r1,r1,#0xff
7244  add lr,pc,#4
7245  mov r0,r8
7246  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7247
7248  ldrh r8,[r4],#2 ;@ Fetch next opcode
7249  subs r5,r5,#16 ;@ Subtract cycles
7250  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7251  b CycloneEnd
7252
7253;@ ---------- [085f] bchg #$33, (a7)+ uses Op085f ----------
7254Op085f:
7255
7256;@ EaCalc : Get '#$33' into r0:
7257  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7258;@ EaRead : Read '#$33' (address in r0) into r0:
7259
7260  mov r11,#1
7261  bic r10,r10,#0x40000000 ;@ Blank Z flag
7262  and r0,r0,#7    ;@ mem - do mod 8
7263  mov r11,r11,lsl r0 ;@ Make bit mask
7264
7265;@ EaCalc : Get '(a7)+' into r8:
7266  ldr r8,[r7,#0x3c] ;@ A7
7267  add r3,r8,#2 ;@ Post-increment An
7268  str r3,[r7,#0x3c] ;@ A7
7269;@ EaRead : Read '(a7)+' (address in r8) into r0:
7270  add lr,pc,#4
7271  mov r0,r8
7272  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7273
7274  tst r0,r11 ;@ Do arithmetic
7275  orreq r10,r10,#0x40000000 ;@ Get Z flag
7276
7277  eor r1,r0,r11 ;@ Toggle bit
7278
7279;@ EaWrite: Write r1 into '(a7)+' (address in r8):
7280  and r1,r1,#0xff
7281  add lr,pc,#4
7282  mov r0,r8
7283  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7284
7285  ldrh r8,[r4],#2 ;@ Fetch next opcode
7286  subs r5,r5,#16 ;@ Subtract cycles
7287  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7288  b CycloneEnd
7289
7290;@ ---------- [0860] bchg #$33, -(a0) uses Op0860 ----------
7291Op0860:
7292
7293;@ EaCalc : Get '#$33' into r0:
7294  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7295;@ EaRead : Read '#$33' (address in r0) into r0:
7296
7297  mov r11,#1
7298  bic r10,r10,#0x40000000 ;@ Blank Z flag
7299  and r0,r0,#7    ;@ mem - do mod 8
7300  mov r11,r11,lsl r0 ;@ Make bit mask
7301
7302;@ EaCalc : Get '-(a0)' into r8:
7303  and r2,r8,#0x000f
7304  orr r2,r2,#0x8 ;@ A0-7
7305  ldr r8,[r7,r2,lsl #2]
7306  sub r8,r8,#1 ;@ Pre-decrement An
7307  str r8,[r7,r2,lsl #2]
7308;@ EaRead : Read '-(a0)' (address in r8) into r0:
7309  add lr,pc,#4
7310  mov r0,r8
7311  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7312
7313  tst r0,r11 ;@ Do arithmetic
7314  orreq r10,r10,#0x40000000 ;@ Get Z flag
7315
7316  eor r1,r0,r11 ;@ Toggle bit
7317
7318;@ EaWrite: Write r1 into '-(a0)' (address in r8):
7319  and r1,r1,#0xff
7320  add lr,pc,#4
7321  mov r0,r8
7322  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7323
7324  ldrh r8,[r4],#2 ;@ Fetch next opcode
7325  subs r5,r5,#18 ;@ Subtract cycles
7326  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7327  b CycloneEnd
7328
7329;@ ---------- [0867] bchg #$33, -(a7) uses Op0867 ----------
7330Op0867:
7331
7332;@ EaCalc : Get '#$33' into r0:
7333  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7334;@ EaRead : Read '#$33' (address in r0) into r0:
7335
7336  mov r11,#1
7337  bic r10,r10,#0x40000000 ;@ Blank Z flag
7338  and r0,r0,#7    ;@ mem - do mod 8
7339  mov r11,r11,lsl r0 ;@ Make bit mask
7340
7341;@ EaCalc : Get '-(a7)' into r8:
7342  ldr r8,[r7,#0x3c] ;@ A7
7343  sub r8,r8,#2 ;@ Pre-decrement An
7344  str r8,[r7,#0x3c] ;@ A7
7345;@ EaRead : Read '-(a7)' (address in r8) into r0:
7346  add lr,pc,#4
7347  mov r0,r8
7348  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7349
7350  tst r0,r11 ;@ Do arithmetic
7351  orreq r10,r10,#0x40000000 ;@ Get Z flag
7352
7353  eor r1,r0,r11 ;@ Toggle bit
7354
7355;@ EaWrite: Write r1 into '-(a7)' (address in r8):
7356  and r1,r1,#0xff
7357  add lr,pc,#4
7358  mov r0,r8
7359  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7360
7361  ldrh r8,[r4],#2 ;@ Fetch next opcode
7362  subs r5,r5,#18 ;@ Subtract cycles
7363  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7364  b CycloneEnd
7365
7366;@ ---------- [0868] bchg #$33, ($3333,a0) uses Op0868 ----------
7367Op0868:
7368
7369;@ EaCalc : Get '#$33' into r0:
7370  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7371;@ EaRead : Read '#$33' (address in r0) into r0:
7372
7373  mov r11,#1
7374  bic r10,r10,#0x40000000 ;@ Blank Z flag
7375  and r0,r0,#7    ;@ mem - do mod 8
7376  mov r11,r11,lsl r0 ;@ Make bit mask
7377
7378;@ EaCalc : Get '($3333,a0)' into r8:
7379  ldrsh r0,[r4],#2 ;@ Fetch offset
7380  and r2,r8,#0x000f
7381  ldr r2,[r7,r2,lsl #2]
7382  add r8,r0,r2 ;@ Add on offset
7383;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
7384  add lr,pc,#4
7385  mov r0,r8
7386  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7387
7388  tst r0,r11 ;@ Do arithmetic
7389  orreq r10,r10,#0x40000000 ;@ Get Z flag
7390
7391  eor r1,r0,r11 ;@ Toggle bit
7392
7393;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
7394  and r1,r1,#0xff
7395  add lr,pc,#4
7396  mov r0,r8
7397  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7398
7399  ldrh r8,[r4],#2 ;@ Fetch next opcode
7400  subs r5,r5,#20 ;@ Subtract cycles
7401  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7402  b CycloneEnd
7403
7404;@ ---------- [0870] bchg #$33, ($33,a0,d3.w*2) uses Op0870 ----------
7405Op0870:
7406
7407;@ EaCalc : Get '#$33' into r0:
7408  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7409;@ EaRead : Read '#$33' (address in r0) into r0:
7410
7411  mov r11,#1
7412  bic r10,r10,#0x40000000 ;@ Blank Z flag
7413  and r0,r0,#7    ;@ mem - do mod 8
7414  mov r11,r11,lsl r0 ;@ Make bit mask
7415
7416;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
7417;@ Get extension word into r3:
7418  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
7419  mov r2,r3,lsr #10
7420  tst r3,#0x0800 ;@ Is Rn Word or Long
7421  and r2,r2,#0x3c ;@ r2=Index of Rn
7422  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
7423  ldrne   r2,[r7,r2] ;@ r2=Rn.l
7424  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
7425  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
7426  and r2,r8,#0x000f
7427  orr r2,r2,#0x8 ;@ A0-7
7428  ldr r2,[r7,r2,lsl #2]
7429  add r8,r2,r3 ;@ r8=Disp+An+Rn
7430;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
7431  add lr,pc,#4
7432  mov r0,r8
7433  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7434
7435  tst r0,r11 ;@ Do arithmetic
7436  orreq r10,r10,#0x40000000 ;@ Get Z flag
7437
7438  eor r1,r0,r11 ;@ Toggle bit
7439
7440;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
7441  and r1,r1,#0xff
7442  add lr,pc,#4
7443  mov r0,r8
7444  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7445
7446  ldrh r8,[r4],#2 ;@ Fetch next opcode
7447  subs r5,r5,#22 ;@ Subtract cycles
7448  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7449  b CycloneEnd
7450
7451;@ ---------- [0878] bchg #$33, $3333.w uses Op0878 ----------
7452Op0878:
7453
7454;@ EaCalc : Get '#$33' into r0:
7455  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7456;@ EaRead : Read '#$33' (address in r0) into r0:
7457
7458  mov r11,#1
7459  bic r10,r10,#0x40000000 ;@ Blank Z flag
7460  and r0,r0,#7    ;@ mem - do mod 8
7461  mov r11,r11,lsl r0 ;@ Make bit mask
7462
7463;@ EaCalc : Get '$3333.w' into r8:
7464  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
7465;@ EaRead : Read '$3333.w' (address in r8) into r0:
7466  add lr,pc,#4
7467  mov r0,r8
7468  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7469
7470  tst r0,r11 ;@ Do arithmetic
7471  orreq r10,r10,#0x40000000 ;@ Get Z flag
7472
7473  eor r1,r0,r11 ;@ Toggle bit
7474
7475;@ EaWrite: Write r1 into '$3333.w' (address in r8):
7476  and r1,r1,#0xff
7477  add lr,pc,#4
7478  mov r0,r8
7479  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7480
7481  ldrh r8,[r4],#2 ;@ Fetch next opcode
7482  subs r5,r5,#20 ;@ Subtract cycles
7483  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7484  b CycloneEnd
7485
7486;@ ---------- [0879] bchg #$33, $33333333.l uses Op0879 ----------
7487Op0879:
7488
7489;@ EaCalc : Get '#$33' into r0:
7490  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7491;@ EaRead : Read '#$33' (address in r0) into r0:
7492
7493  mov r11,#1
7494  bic r10,r10,#0x40000000 ;@ Blank Z flag
7495  and r0,r0,#7    ;@ mem - do mod 8
7496  mov r11,r11,lsl r0 ;@ Make bit mask
7497
7498;@ EaCalc : Get '$33333333.l' into r8:
7499  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
7500  ldrh r0,[r4],#2
7501  orr r8,r0,r2,lsl #16
7502;@ EaRead : Read '$33333333.l' (address in r8) into r0:
7503  add lr,pc,#4
7504  mov r0,r8
7505  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7506
7507  tst r0,r11 ;@ Do arithmetic
7508  orreq r10,r10,#0x40000000 ;@ Get Z flag
7509
7510  eor r1,r0,r11 ;@ Toggle bit
7511
7512;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
7513  and r1,r1,#0xff
7514  add lr,pc,#4
7515  mov r0,r8
7516  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7517
7518  ldrh r8,[r4],#2 ;@ Fetch next opcode
7519  subs r5,r5,#24 ;@ Subtract cycles
7520  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7521  b CycloneEnd
7522
7523;@ ---------- [0880] bclr #$33, d0 uses Op0880 ----------
7524Op0880:
7525
7526;@ EaCalc : Get '#$33' into r0:
7527  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7528;@ EaRead : Read '#$33' (address in r0) into r0:
7529
7530  mov r11,#1
7531  bic r10,r10,#0x40000000 ;@ Blank Z flag
7532  and r0,r0,#0x1F ;@ reg - do mod 32
7533  mov r11,r11,lsl r0 ;@ Make bit mask
7534
7535;@ EaCalc : Get register index into r8:
7536  and r8,r8,#0x000f
7537;@ EaRead : Read register[r8] into r0:
7538  ldr r0,[r7,r8,lsl #2]
7539
7540  tst r0,r11 ;@ Do arithmetic
7541  orreq r10,r10,#0x40000000 ;@ Get Z flag
7542
7543  bic r1,r0,r11 ;@ Clear bit
7544
7545;@ EaWrite: r1 into register[r8]:
7546  str r1,[r7,r8,lsl #2]
7547
7548  ldrh r8,[r4],#2 ;@ Fetch next opcode
7549  subs r5,r5,#14 ;@ Subtract cycles
7550  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7551  b CycloneEnd
7552
7553;@ ---------- [0890] bclr #$33, (a0) uses Op0890 ----------
7554Op0890:
7555
7556;@ EaCalc : Get '#$33' into r0:
7557  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7558;@ EaRead : Read '#$33' (address in r0) into r0:
7559
7560  mov r11,#1
7561  bic r10,r10,#0x40000000 ;@ Blank Z flag
7562  and r0,r0,#7    ;@ mem - do mod 8
7563  mov r11,r11,lsl r0 ;@ Make bit mask
7564
7565;@ EaCalc : Get '(a0)' into r8:
7566  and r2,r8,#0x000f
7567  orr r2,r2,#0x8 ;@ A0-7
7568  ldr r8,[r7,r2,lsl #2]
7569;@ EaRead : Read '(a0)' (address in r8) into r0:
7570  add lr,pc,#4
7571  mov r0,r8
7572  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7573
7574  tst r0,r11 ;@ Do arithmetic
7575  orreq r10,r10,#0x40000000 ;@ Get Z flag
7576
7577  bic r1,r0,r11 ;@ Clear bit
7578
7579;@ EaWrite: Write r1 into '(a0)' (address in r8):
7580  and r1,r1,#0xff
7581  add lr,pc,#4
7582  mov r0,r8
7583  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7584
7585  ldrh r8,[r4],#2 ;@ Fetch next opcode
7586  subs r5,r5,#16 ;@ Subtract cycles
7587  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7588  b CycloneEnd
7589
7590;@ ---------- [0898] bclr #$33, (a0)+ uses Op0898 ----------
7591Op0898:
7592
7593;@ EaCalc : Get '#$33' into r0:
7594  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7595;@ EaRead : Read '#$33' (address in r0) into r0:
7596
7597  mov r11,#1
7598  bic r10,r10,#0x40000000 ;@ Blank Z flag
7599  and r0,r0,#7    ;@ mem - do mod 8
7600  mov r11,r11,lsl r0 ;@ Make bit mask
7601
7602;@ EaCalc : Get '(a0)+' into r8:
7603  and r2,r8,#0x000f
7604  ldr r8,[r7,r2,lsl #2]
7605  add r3,r8,#1 ;@ Post-increment An
7606  str r3,[r7,r2,lsl #2]
7607;@ EaRead : Read '(a0)+' (address in r8) into r0:
7608  add lr,pc,#4
7609  mov r0,r8
7610  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7611
7612  tst r0,r11 ;@ Do arithmetic
7613  orreq r10,r10,#0x40000000 ;@ Get Z flag
7614
7615  bic r1,r0,r11 ;@ Clear bit
7616
7617;@ EaWrite: Write r1 into '(a0)+' (address in r8):
7618  and r1,r1,#0xff
7619  add lr,pc,#4
7620  mov r0,r8
7621  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7622
7623  ldrh r8,[r4],#2 ;@ Fetch next opcode
7624  subs r5,r5,#16 ;@ Subtract cycles
7625  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7626  b CycloneEnd
7627
7628;@ ---------- [089f] bclr #$33, (a7)+ uses Op089f ----------
7629Op089f:
7630
7631;@ EaCalc : Get '#$33' into r0:
7632  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7633;@ EaRead : Read '#$33' (address in r0) into r0:
7634
7635  mov r11,#1
7636  bic r10,r10,#0x40000000 ;@ Blank Z flag
7637  and r0,r0,#7    ;@ mem - do mod 8
7638  mov r11,r11,lsl r0 ;@ Make bit mask
7639
7640;@ EaCalc : Get '(a7)+' into r8:
7641  ldr r8,[r7,#0x3c] ;@ A7
7642  add r3,r8,#2 ;@ Post-increment An
7643  str r3,[r7,#0x3c] ;@ A7
7644;@ EaRead : Read '(a7)+' (address in r8) into r0:
7645  add lr,pc,#4
7646  mov r0,r8
7647  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7648
7649  tst r0,r11 ;@ Do arithmetic
7650  orreq r10,r10,#0x40000000 ;@ Get Z flag
7651
7652  bic r1,r0,r11 ;@ Clear bit
7653
7654;@ EaWrite: Write r1 into '(a7)+' (address in r8):
7655  and r1,r1,#0xff
7656  add lr,pc,#4
7657  mov r0,r8
7658  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7659
7660  ldrh r8,[r4],#2 ;@ Fetch next opcode
7661  subs r5,r5,#16 ;@ Subtract cycles
7662  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7663  b CycloneEnd
7664
7665;@ ---------- [08a0] bclr #$33, -(a0) uses Op08a0 ----------
7666Op08a0:
7667
7668;@ EaCalc : Get '#$33' into r0:
7669  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7670;@ EaRead : Read '#$33' (address in r0) into r0:
7671
7672  mov r11,#1
7673  bic r10,r10,#0x40000000 ;@ Blank Z flag
7674  and r0,r0,#7    ;@ mem - do mod 8
7675  mov r11,r11,lsl r0 ;@ Make bit mask
7676
7677;@ EaCalc : Get '-(a0)' into r8:
7678  and r2,r8,#0x000f
7679  orr r2,r2,#0x8 ;@ A0-7
7680  ldr r8,[r7,r2,lsl #2]
7681  sub r8,r8,#1 ;@ Pre-decrement An
7682  str r8,[r7,r2,lsl #2]
7683;@ EaRead : Read '-(a0)' (address in r8) into r0:
7684  add lr,pc,#4
7685  mov r0,r8
7686  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7687
7688  tst r0,r11 ;@ Do arithmetic
7689  orreq r10,r10,#0x40000000 ;@ Get Z flag
7690
7691  bic r1,r0,r11 ;@ Clear bit
7692
7693;@ EaWrite: Write r1 into '-(a0)' (address in r8):
7694  and r1,r1,#0xff
7695  add lr,pc,#4
7696  mov r0,r8
7697  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7698
7699  ldrh r8,[r4],#2 ;@ Fetch next opcode
7700  subs r5,r5,#18 ;@ Subtract cycles
7701  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7702  b CycloneEnd
7703
7704;@ ---------- [08a7] bclr #$33, -(a7) uses Op08a7 ----------
7705Op08a7:
7706
7707;@ EaCalc : Get '#$33' into r0:
7708  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7709;@ EaRead : Read '#$33' (address in r0) into r0:
7710
7711  mov r11,#1
7712  bic r10,r10,#0x40000000 ;@ Blank Z flag
7713  and r0,r0,#7    ;@ mem - do mod 8
7714  mov r11,r11,lsl r0 ;@ Make bit mask
7715
7716;@ EaCalc : Get '-(a7)' into r8:
7717  ldr r8,[r7,#0x3c] ;@ A7
7718  sub r8,r8,#2 ;@ Pre-decrement An
7719  str r8,[r7,#0x3c] ;@ A7
7720;@ EaRead : Read '-(a7)' (address in r8) into r0:
7721  add lr,pc,#4
7722  mov r0,r8
7723  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7724
7725  tst r0,r11 ;@ Do arithmetic
7726  orreq r10,r10,#0x40000000 ;@ Get Z flag
7727
7728  bic r1,r0,r11 ;@ Clear bit
7729
7730;@ EaWrite: Write r1 into '-(a7)' (address in r8):
7731  and r1,r1,#0xff
7732  add lr,pc,#4
7733  mov r0,r8
7734  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7735
7736  ldrh r8,[r4],#2 ;@ Fetch next opcode
7737  subs r5,r5,#18 ;@ Subtract cycles
7738  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7739  b CycloneEnd
7740
7741;@ ---------- [08a8] bclr #$33, ($3333,a0) uses Op08a8 ----------
7742Op08a8:
7743
7744;@ EaCalc : Get '#$33' into r0:
7745  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7746;@ EaRead : Read '#$33' (address in r0) into r0:
7747
7748  mov r11,#1
7749  bic r10,r10,#0x40000000 ;@ Blank Z flag
7750  and r0,r0,#7    ;@ mem - do mod 8
7751  mov r11,r11,lsl r0 ;@ Make bit mask
7752
7753;@ EaCalc : Get '($3333,a0)' into r8:
7754  ldrsh r0,[r4],#2 ;@ Fetch offset
7755  and r2,r8,#0x000f
7756  ldr r2,[r7,r2,lsl #2]
7757  add r8,r0,r2 ;@ Add on offset
7758;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
7759  add lr,pc,#4
7760  mov r0,r8
7761  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7762
7763  tst r0,r11 ;@ Do arithmetic
7764  orreq r10,r10,#0x40000000 ;@ Get Z flag
7765
7766  bic r1,r0,r11 ;@ Clear bit
7767
7768;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
7769  and r1,r1,#0xff
7770  add lr,pc,#4
7771  mov r0,r8
7772  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7773
7774  ldrh r8,[r4],#2 ;@ Fetch next opcode
7775  subs r5,r5,#20 ;@ Subtract cycles
7776  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7777  b CycloneEnd
7778
7779;@ ---------- [08b0] bclr #$33, ($33,a0,d3.w*2) uses Op08b0 ----------
7780Op08b0:
7781
7782;@ EaCalc : Get '#$33' into r0:
7783  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7784;@ EaRead : Read '#$33' (address in r0) into r0:
7785
7786  mov r11,#1
7787  bic r10,r10,#0x40000000 ;@ Blank Z flag
7788  and r0,r0,#7    ;@ mem - do mod 8
7789  mov r11,r11,lsl r0 ;@ Make bit mask
7790
7791;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
7792;@ Get extension word into r3:
7793  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
7794  mov r2,r3,lsr #10
7795  tst r3,#0x0800 ;@ Is Rn Word or Long
7796  and r2,r2,#0x3c ;@ r2=Index of Rn
7797  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
7798  ldrne   r2,[r7,r2] ;@ r2=Rn.l
7799  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
7800  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
7801  and r2,r8,#0x000f
7802  orr r2,r2,#0x8 ;@ A0-7
7803  ldr r2,[r7,r2,lsl #2]
7804  add r8,r2,r3 ;@ r8=Disp+An+Rn
7805;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
7806  add lr,pc,#4
7807  mov r0,r8
7808  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7809
7810  tst r0,r11 ;@ Do arithmetic
7811  orreq r10,r10,#0x40000000 ;@ Get Z flag
7812
7813  bic r1,r0,r11 ;@ Clear bit
7814
7815;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
7816  and r1,r1,#0xff
7817  add lr,pc,#4
7818  mov r0,r8
7819  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7820
7821  ldrh r8,[r4],#2 ;@ Fetch next opcode
7822  subs r5,r5,#22 ;@ Subtract cycles
7823  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7824  b CycloneEnd
7825
7826;@ ---------- [08b8] bclr #$33, $3333.w uses Op08b8 ----------
7827Op08b8:
7828
7829;@ EaCalc : Get '#$33' into r0:
7830  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7831;@ EaRead : Read '#$33' (address in r0) into r0:
7832
7833  mov r11,#1
7834  bic r10,r10,#0x40000000 ;@ Blank Z flag
7835  and r0,r0,#7    ;@ mem - do mod 8
7836  mov r11,r11,lsl r0 ;@ Make bit mask
7837
7838;@ EaCalc : Get '$3333.w' into r8:
7839  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
7840;@ EaRead : Read '$3333.w' (address in r8) into r0:
7841  add lr,pc,#4
7842  mov r0,r8
7843  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7844
7845  tst r0,r11 ;@ Do arithmetic
7846  orreq r10,r10,#0x40000000 ;@ Get Z flag
7847
7848  bic r1,r0,r11 ;@ Clear bit
7849
7850;@ EaWrite: Write r1 into '$3333.w' (address in r8):
7851  and r1,r1,#0xff
7852  add lr,pc,#4
7853  mov r0,r8
7854  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7855
7856  ldrh r8,[r4],#2 ;@ Fetch next opcode
7857  subs r5,r5,#20 ;@ Subtract cycles
7858  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7859  b CycloneEnd
7860
7861;@ ---------- [08b9] bclr #$33, $33333333.l uses Op08b9 ----------
7862Op08b9:
7863
7864;@ EaCalc : Get '#$33' into r0:
7865  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7866;@ EaRead : Read '#$33' (address in r0) into r0:
7867
7868  mov r11,#1
7869  bic r10,r10,#0x40000000 ;@ Blank Z flag
7870  and r0,r0,#7    ;@ mem - do mod 8
7871  mov r11,r11,lsl r0 ;@ Make bit mask
7872
7873;@ EaCalc : Get '$33333333.l' into r8:
7874  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
7875  ldrh r0,[r4],#2
7876  orr r8,r0,r2,lsl #16
7877;@ EaRead : Read '$33333333.l' (address in r8) into r0:
7878  add lr,pc,#4
7879  mov r0,r8
7880  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7881
7882  tst r0,r11 ;@ Do arithmetic
7883  orreq r10,r10,#0x40000000 ;@ Get Z flag
7884
7885  bic r1,r0,r11 ;@ Clear bit
7886
7887;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
7888  and r1,r1,#0xff
7889  add lr,pc,#4
7890  mov r0,r8
7891  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7892
7893  ldrh r8,[r4],#2 ;@ Fetch next opcode
7894  subs r5,r5,#24 ;@ Subtract cycles
7895  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7896  b CycloneEnd
7897
7898;@ ---------- [08c0] bset #$33, d0 uses Op08c0 ----------
7899Op08c0:
7900
7901;@ EaCalc : Get '#$33' into r0:
7902  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7903;@ EaRead : Read '#$33' (address in r0) into r0:
7904
7905  mov r11,#1
7906  bic r10,r10,#0x40000000 ;@ Blank Z flag
7907  and r0,r0,#0x1F ;@ reg - do mod 32
7908  mov r11,r11,lsl r0 ;@ Make bit mask
7909
7910;@ EaCalc : Get register index into r8:
7911  and r8,r8,#0x000f
7912;@ EaRead : Read register[r8] into r0:
7913  ldr r0,[r7,r8,lsl #2]
7914
7915  tst r0,r11 ;@ Do arithmetic
7916  orreq r10,r10,#0x40000000 ;@ Get Z flag
7917
7918  orr r1,r0,r11 ;@ Set bit
7919
7920;@ EaWrite: r1 into register[r8]:
7921  str r1,[r7,r8,lsl #2]
7922
7923  ldrh r8,[r4],#2 ;@ Fetch next opcode
7924  subs r5,r5,#12 ;@ Subtract cycles
7925  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7926  b CycloneEnd
7927
7928;@ ---------- [08d0] bset #$33, (a0) uses Op08d0 ----------
7929Op08d0:
7930
7931;@ EaCalc : Get '#$33' into r0:
7932  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7933;@ EaRead : Read '#$33' (address in r0) into r0:
7934
7935  mov r11,#1
7936  bic r10,r10,#0x40000000 ;@ Blank Z flag
7937  and r0,r0,#7    ;@ mem - do mod 8
7938  mov r11,r11,lsl r0 ;@ Make bit mask
7939
7940;@ EaCalc : Get '(a0)' into r8:
7941  and r2,r8,#0x000f
7942  orr r2,r2,#0x8 ;@ A0-7
7943  ldr r8,[r7,r2,lsl #2]
7944;@ EaRead : Read '(a0)' (address in r8) into r0:
7945  add lr,pc,#4
7946  mov r0,r8
7947  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7948
7949  tst r0,r11 ;@ Do arithmetic
7950  orreq r10,r10,#0x40000000 ;@ Get Z flag
7951
7952  orr r1,r0,r11 ;@ Set bit
7953
7954;@ EaWrite: Write r1 into '(a0)' (address in r8):
7955  and r1,r1,#0xff
7956  add lr,pc,#4
7957  mov r0,r8
7958  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7959
7960  ldrh r8,[r4],#2 ;@ Fetch next opcode
7961  subs r5,r5,#16 ;@ Subtract cycles
7962  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
7963  b CycloneEnd
7964
7965;@ ---------- [08d8] bset #$33, (a0)+ uses Op08d8 ----------
7966Op08d8:
7967
7968;@ EaCalc : Get '#$33' into r0:
7969  ldrsb r0,[r4],#2 ;@ Fetch immediate value
7970;@ EaRead : Read '#$33' (address in r0) into r0:
7971
7972  mov r11,#1
7973  bic r10,r10,#0x40000000 ;@ Blank Z flag
7974  and r0,r0,#7    ;@ mem - do mod 8
7975  mov r11,r11,lsl r0 ;@ Make bit mask
7976
7977;@ EaCalc : Get '(a0)+' into r8:
7978  and r2,r8,#0x000f
7979  ldr r8,[r7,r2,lsl #2]
7980  add r3,r8,#1 ;@ Post-increment An
7981  str r3,[r7,r2,lsl #2]
7982;@ EaRead : Read '(a0)+' (address in r8) into r0:
7983  add lr,pc,#4
7984  mov r0,r8
7985  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
7986
7987  tst r0,r11 ;@ Do arithmetic
7988  orreq r10,r10,#0x40000000 ;@ Get Z flag
7989
7990  orr r1,r0,r11 ;@ Set bit
7991
7992;@ EaWrite: Write r1 into '(a0)+' (address in r8):
7993  and r1,r1,#0xff
7994  add lr,pc,#4
7995  mov r0,r8
7996  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
7997
7998  ldrh r8,[r4],#2 ;@ Fetch next opcode
7999  subs r5,r5,#16 ;@ Subtract cycles
8000  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8001  b CycloneEnd
8002
8003;@ ---------- [08df] bset #$33, (a7)+ uses Op08df ----------
8004Op08df:
8005
8006;@ EaCalc : Get '#$33' into r0:
8007  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8008;@ EaRead : Read '#$33' (address in r0) into r0:
8009
8010  mov r11,#1
8011  bic r10,r10,#0x40000000 ;@ Blank Z flag
8012  and r0,r0,#7    ;@ mem - do mod 8
8013  mov r11,r11,lsl r0 ;@ Make bit mask
8014
8015;@ EaCalc : Get '(a7)+' into r8:
8016  ldr r8,[r7,#0x3c] ;@ A7
8017  add r3,r8,#2 ;@ Post-increment An
8018  str r3,[r7,#0x3c] ;@ A7
8019;@ EaRead : Read '(a7)+' (address in r8) into r0:
8020  add lr,pc,#4
8021  mov r0,r8
8022  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8023
8024  tst r0,r11 ;@ Do arithmetic
8025  orreq r10,r10,#0x40000000 ;@ Get Z flag
8026
8027  orr r1,r0,r11 ;@ Set bit
8028
8029;@ EaWrite: Write r1 into '(a7)+' (address in r8):
8030  and r1,r1,#0xff
8031  add lr,pc,#4
8032  mov r0,r8
8033  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8034
8035  ldrh r8,[r4],#2 ;@ Fetch next opcode
8036  subs r5,r5,#16 ;@ Subtract cycles
8037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8038  b CycloneEnd
8039
8040;@ ---------- [08e0] bset #$33, -(a0) uses Op08e0 ----------
8041Op08e0:
8042
8043;@ EaCalc : Get '#$33' into r0:
8044  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8045;@ EaRead : Read '#$33' (address in r0) into r0:
8046
8047  mov r11,#1
8048  bic r10,r10,#0x40000000 ;@ Blank Z flag
8049  and r0,r0,#7    ;@ mem - do mod 8
8050  mov r11,r11,lsl r0 ;@ Make bit mask
8051
8052;@ EaCalc : Get '-(a0)' into r8:
8053  and r2,r8,#0x000f
8054  orr r2,r2,#0x8 ;@ A0-7
8055  ldr r8,[r7,r2,lsl #2]
8056  sub r8,r8,#1 ;@ Pre-decrement An
8057  str r8,[r7,r2,lsl #2]
8058;@ EaRead : Read '-(a0)' (address in r8) into r0:
8059  add lr,pc,#4
8060  mov r0,r8
8061  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8062
8063  tst r0,r11 ;@ Do arithmetic
8064  orreq r10,r10,#0x40000000 ;@ Get Z flag
8065
8066  orr r1,r0,r11 ;@ Set bit
8067
8068;@ EaWrite: Write r1 into '-(a0)' (address in r8):
8069  and r1,r1,#0xff
8070  add lr,pc,#4
8071  mov r0,r8
8072  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8073
8074  ldrh r8,[r4],#2 ;@ Fetch next opcode
8075  subs r5,r5,#18 ;@ Subtract cycles
8076  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8077  b CycloneEnd
8078
8079;@ ---------- [08e7] bset #$33, -(a7) uses Op08e7 ----------
8080Op08e7:
8081
8082;@ EaCalc : Get '#$33' into r0:
8083  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8084;@ EaRead : Read '#$33' (address in r0) into r0:
8085
8086  mov r11,#1
8087  bic r10,r10,#0x40000000 ;@ Blank Z flag
8088  and r0,r0,#7    ;@ mem - do mod 8
8089  mov r11,r11,lsl r0 ;@ Make bit mask
8090
8091;@ EaCalc : Get '-(a7)' into r8:
8092  ldr r8,[r7,#0x3c] ;@ A7
8093  sub r8,r8,#2 ;@ Pre-decrement An
8094  str r8,[r7,#0x3c] ;@ A7
8095;@ EaRead : Read '-(a7)' (address in r8) into r0:
8096  add lr,pc,#4
8097  mov r0,r8
8098  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8099
8100  tst r0,r11 ;@ Do arithmetic
8101  orreq r10,r10,#0x40000000 ;@ Get Z flag
8102
8103  orr r1,r0,r11 ;@ Set bit
8104
8105;@ EaWrite: Write r1 into '-(a7)' (address in r8):
8106  and r1,r1,#0xff
8107  add lr,pc,#4
8108  mov r0,r8
8109  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8110
8111  ldrh r8,[r4],#2 ;@ Fetch next opcode
8112  subs r5,r5,#18 ;@ Subtract cycles
8113  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8114  b CycloneEnd
8115
8116;@ ---------- [08e8] bset #$33, ($3333,a0) uses Op08e8 ----------
8117Op08e8:
8118
8119;@ EaCalc : Get '#$33' into r0:
8120  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8121;@ EaRead : Read '#$33' (address in r0) into r0:
8122
8123  mov r11,#1
8124  bic r10,r10,#0x40000000 ;@ Blank Z flag
8125  and r0,r0,#7    ;@ mem - do mod 8
8126  mov r11,r11,lsl r0 ;@ Make bit mask
8127
8128;@ EaCalc : Get '($3333,a0)' into r8:
8129  ldrsh r0,[r4],#2 ;@ Fetch offset
8130  and r2,r8,#0x000f
8131  ldr r2,[r7,r2,lsl #2]
8132  add r8,r0,r2 ;@ Add on offset
8133;@ EaRead : Read '($3333,a0)' (address in r8) into r0:
8134  add lr,pc,#4
8135  mov r0,r8
8136  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8137
8138  tst r0,r11 ;@ Do arithmetic
8139  orreq r10,r10,#0x40000000 ;@ Get Z flag
8140
8141  orr r1,r0,r11 ;@ Set bit
8142
8143;@ EaWrite: Write r1 into '($3333,a0)' (address in r8):
8144  and r1,r1,#0xff
8145  add lr,pc,#4
8146  mov r0,r8
8147  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8148
8149  ldrh r8,[r4],#2 ;@ Fetch next opcode
8150  subs r5,r5,#20 ;@ Subtract cycles
8151  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8152  b CycloneEnd
8153
8154;@ ---------- [08f0] bset #$33, ($33,a0,d3.w*2) uses Op08f0 ----------
8155Op08f0:
8156
8157;@ EaCalc : Get '#$33' into r0:
8158  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8159;@ EaRead : Read '#$33' (address in r0) into r0:
8160
8161  mov r11,#1
8162  bic r10,r10,#0x40000000 ;@ Blank Z flag
8163  and r0,r0,#7    ;@ mem - do mod 8
8164  mov r11,r11,lsl r0 ;@ Make bit mask
8165
8166;@ EaCalc : Get '($33,a0,d3.w*2)' into r8:
8167;@ Get extension word into r3:
8168  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
8169  mov r2,r3,lsr #10
8170  tst r3,#0x0800 ;@ Is Rn Word or Long
8171  and r2,r2,#0x3c ;@ r2=Index of Rn
8172  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
8173  ldrne   r2,[r7,r2] ;@ r2=Rn.l
8174  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
8175  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
8176  and r2,r8,#0x000f
8177  orr r2,r2,#0x8 ;@ A0-7
8178  ldr r2,[r7,r2,lsl #2]
8179  add r8,r2,r3 ;@ r8=Disp+An+Rn
8180;@ EaRead : Read '($33,a0,d3.w*2)' (address in r8) into r0:
8181  add lr,pc,#4
8182  mov r0,r8
8183  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8184
8185  tst r0,r11 ;@ Do arithmetic
8186  orreq r10,r10,#0x40000000 ;@ Get Z flag
8187
8188  orr r1,r0,r11 ;@ Set bit
8189
8190;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r8):
8191  and r1,r1,#0xff
8192  add lr,pc,#4
8193  mov r0,r8
8194  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8195
8196  ldrh r8,[r4],#2 ;@ Fetch next opcode
8197  subs r5,r5,#22 ;@ Subtract cycles
8198  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8199  b CycloneEnd
8200
8201;@ ---------- [08f8] bset #$33, $3333.w uses Op08f8 ----------
8202Op08f8:
8203
8204;@ EaCalc : Get '#$33' into r0:
8205  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8206;@ EaRead : Read '#$33' (address in r0) into r0:
8207
8208  mov r11,#1
8209  bic r10,r10,#0x40000000 ;@ Blank Z flag
8210  and r0,r0,#7    ;@ mem - do mod 8
8211  mov r11,r11,lsl r0 ;@ Make bit mask
8212
8213;@ EaCalc : Get '$3333.w' into r8:
8214  ldrsh r8,[r4],#2 ;@ Fetch Absolute Short address
8215;@ EaRead : Read '$3333.w' (address in r8) into r0:
8216  add lr,pc,#4
8217  mov r0,r8
8218  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8219
8220  tst r0,r11 ;@ Do arithmetic
8221  orreq r10,r10,#0x40000000 ;@ Get Z flag
8222
8223  orr r1,r0,r11 ;@ Set bit
8224
8225;@ EaWrite: Write r1 into '$3333.w' (address in r8):
8226  and r1,r1,#0xff
8227  add lr,pc,#4
8228  mov r0,r8
8229  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8230
8231  ldrh r8,[r4],#2 ;@ Fetch next opcode
8232  subs r5,r5,#20 ;@ Subtract cycles
8233  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8234  b CycloneEnd
8235
8236;@ ---------- [08f9] bset #$33, $33333333.l uses Op08f9 ----------
8237Op08f9:
8238
8239;@ EaCalc : Get '#$33' into r0:
8240  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8241;@ EaRead : Read '#$33' (address in r0) into r0:
8242
8243  mov r11,#1
8244  bic r10,r10,#0x40000000 ;@ Blank Z flag
8245  and r0,r0,#7    ;@ mem - do mod 8
8246  mov r11,r11,lsl r0 ;@ Make bit mask
8247
8248;@ EaCalc : Get '$33333333.l' into r8:
8249  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
8250  ldrh r0,[r4],#2
8251  orr r8,r0,r2,lsl #16
8252;@ EaRead : Read '$33333333.l' (address in r8) into r0:
8253  add lr,pc,#4
8254  mov r0,r8
8255  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8256
8257  tst r0,r11 ;@ Do arithmetic
8258  orreq r10,r10,#0x40000000 ;@ Get Z flag
8259
8260  orr r1,r0,r11 ;@ Set bit
8261
8262;@ EaWrite: Write r1 into '$33333333.l' (address in r8):
8263  and r1,r1,#0xff
8264  add lr,pc,#4
8265  mov r0,r8
8266  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8267
8268  ldrh r8,[r4],#2 ;@ Fetch next opcode
8269  subs r5,r5,#24 ;@ Subtract cycles
8270  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8271  b CycloneEnd
8272
8273;@ ---------- [0a00] eori.b #$33, d0 uses Op0a00 ----------
8274Op0a00:
8275;@ EaCalc : Get '#$33' into r10:
8276  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8277;@ EaRead : Read '#$33' (address in r10) into r10:
8278
8279;@ EaCalc : Get register index into r11:
8280  and r11,r8,#0x000f
8281;@ EaRead : Read register[r11] into r0:
8282  ldr r0,[r7,r11,lsl #2]
8283
8284  mov r10,r10,asl #24
8285;@ Do arithmetic:
8286  eors r1,r10,r0,asl #24
8287  and r10,r1,#0x80000000 ;@ r10=N_flag
8288  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8289
8290;@ EaWrite: r1 into register[r11]:
8291  mov r1,r1,lsr #24
8292  strb r1,[r7,r11,lsl #2]
8293
8294  ldrh r8,[r4],#2 ;@ Fetch next opcode
8295  subs r5,r5,#8 ;@ Subtract cycles
8296  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8297  b CycloneEnd
8298
8299;@ ---------- [0a10] eori.b #$33, (a0) uses Op0a10 ----------
8300Op0a10:
8301;@ EaCalc : Get '#$33' into r10:
8302  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8303;@ EaRead : Read '#$33' (address in r10) into r10:
8304
8305;@ EaCalc : Get '(a0)' into r11:
8306  and r2,r8,#0x000f
8307  orr r2,r2,#0x8 ;@ A0-7
8308  ldr r11,[r7,r2,lsl #2]
8309;@ EaRead : Read '(a0)' (address in r11) into r0:
8310  add lr,pc,#4
8311  mov r0,r11
8312  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8313
8314  mov r10,r10,asl #24
8315;@ Do arithmetic:
8316  eors r1,r10,r0,asl #24
8317  and r10,r1,#0x80000000 ;@ r10=N_flag
8318  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8319
8320;@ EaWrite: Write r1 into '(a0)' (address in r11):
8321  mov r1,r1,lsr #24
8322  add lr,pc,#4
8323  mov r0,r11
8324  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8325
8326  ldrh r8,[r4],#2 ;@ Fetch next opcode
8327  subs r5,r5,#16 ;@ Subtract cycles
8328  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8329  b CycloneEnd
8330
8331;@ ---------- [0a18] eori.b #$33, (a0)+ uses Op0a18 ----------
8332Op0a18:
8333;@ EaCalc : Get '#$33' into r10:
8334  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8335;@ EaRead : Read '#$33' (address in r10) into r10:
8336
8337;@ EaCalc : Get '(a0)+' into r11:
8338  and r2,r8,#0x000f
8339  ldr r11,[r7,r2,lsl #2]
8340  add r3,r11,#1 ;@ Post-increment An
8341  str r3,[r7,r2,lsl #2]
8342;@ EaRead : Read '(a0)+' (address in r11) into r0:
8343  add lr,pc,#4
8344  mov r0,r11
8345  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8346
8347  mov r10,r10,asl #24
8348;@ Do arithmetic:
8349  eors r1,r10,r0,asl #24
8350  and r10,r1,#0x80000000 ;@ r10=N_flag
8351  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8352
8353;@ EaWrite: Write r1 into '(a0)+' (address in r11):
8354  mov r1,r1,lsr #24
8355  add lr,pc,#4
8356  mov r0,r11
8357  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8358
8359  ldrh r8,[r4],#2 ;@ Fetch next opcode
8360  subs r5,r5,#16 ;@ Subtract cycles
8361  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8362  b CycloneEnd
8363
8364;@ ---------- [0a1f] eori.b #$33, (a7)+ uses Op0a1f ----------
8365Op0a1f:
8366;@ EaCalc : Get '#$33' into r10:
8367  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8368;@ EaRead : Read '#$33' (address in r10) into r10:
8369
8370;@ EaCalc : Get '(a7)+' into r11:
8371  ldr r11,[r7,#0x3c] ;@ A7
8372  add r3,r11,#2 ;@ Post-increment An
8373  str r3,[r7,#0x3c] ;@ A7
8374;@ EaRead : Read '(a7)+' (address in r11) into r0:
8375  add lr,pc,#4
8376  mov r0,r11
8377  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8378
8379  mov r10,r10,asl #24
8380;@ Do arithmetic:
8381  eors r1,r10,r0,asl #24
8382  and r10,r1,#0x80000000 ;@ r10=N_flag
8383  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8384
8385;@ EaWrite: Write r1 into '(a7)+' (address in r11):
8386  mov r1,r1,lsr #24
8387  add lr,pc,#4
8388  mov r0,r11
8389  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8390
8391  ldrh r8,[r4],#2 ;@ Fetch next opcode
8392  subs r5,r5,#16 ;@ Subtract cycles
8393  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8394  b CycloneEnd
8395
8396;@ ---------- [0a20] eori.b #$33, -(a0) uses Op0a20 ----------
8397Op0a20:
8398;@ EaCalc : Get '#$33' into r10:
8399  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8400;@ EaRead : Read '#$33' (address in r10) into r10:
8401
8402;@ EaCalc : Get '-(a0)' into r11:
8403  and r2,r8,#0x000f
8404  orr r2,r2,#0x8 ;@ A0-7
8405  ldr r11,[r7,r2,lsl #2]
8406  sub r11,r11,#1 ;@ Pre-decrement An
8407  str r11,[r7,r2,lsl #2]
8408;@ EaRead : Read '-(a0)' (address in r11) into r0:
8409  add lr,pc,#4
8410  mov r0,r11
8411  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8412
8413  mov r10,r10,asl #24
8414;@ Do arithmetic:
8415  eors r1,r10,r0,asl #24
8416  and r10,r1,#0x80000000 ;@ r10=N_flag
8417  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8418
8419;@ EaWrite: Write r1 into '-(a0)' (address in r11):
8420  mov r1,r1,lsr #24
8421  add lr,pc,#4
8422  mov r0,r11
8423  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8424
8425  ldrh r8,[r4],#2 ;@ Fetch next opcode
8426  subs r5,r5,#18 ;@ Subtract cycles
8427  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8428  b CycloneEnd
8429
8430;@ ---------- [0a27] eori.b #$33, -(a7) uses Op0a27 ----------
8431Op0a27:
8432;@ EaCalc : Get '#$33' into r10:
8433  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8434;@ EaRead : Read '#$33' (address in r10) into r10:
8435
8436;@ EaCalc : Get '-(a7)' into r11:
8437  ldr r11,[r7,#0x3c] ;@ A7
8438  sub r11,r11,#2 ;@ Pre-decrement An
8439  str r11,[r7,#0x3c] ;@ A7
8440;@ EaRead : Read '-(a7)' (address in r11) into r0:
8441  add lr,pc,#4
8442  mov r0,r11
8443  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8444
8445  mov r10,r10,asl #24
8446;@ Do arithmetic:
8447  eors r1,r10,r0,asl #24
8448  and r10,r1,#0x80000000 ;@ r10=N_flag
8449  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8450
8451;@ EaWrite: Write r1 into '-(a7)' (address in r11):
8452  mov r1,r1,lsr #24
8453  add lr,pc,#4
8454  mov r0,r11
8455  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8456
8457  ldrh r8,[r4],#2 ;@ Fetch next opcode
8458  subs r5,r5,#18 ;@ Subtract cycles
8459  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8460  b CycloneEnd
8461
8462;@ ---------- [0a28] eori.b #$33, ($3333,a0) uses Op0a28 ----------
8463Op0a28:
8464;@ EaCalc : Get '#$33' into r10:
8465  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8466;@ EaRead : Read '#$33' (address in r10) into r10:
8467
8468;@ EaCalc : Get '($3333,a0)' into r11:
8469  ldrsh r0,[r4],#2 ;@ Fetch offset
8470  and r2,r8,#0x000f
8471  ldr r2,[r7,r2,lsl #2]
8472  add r11,r0,r2 ;@ Add on offset
8473;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
8474  add lr,pc,#4
8475  mov r0,r11
8476  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8477
8478  mov r10,r10,asl #24
8479;@ Do arithmetic:
8480  eors r1,r10,r0,asl #24
8481  and r10,r1,#0x80000000 ;@ r10=N_flag
8482  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8483
8484;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
8485  mov r1,r1,lsr #24
8486  add lr,pc,#4
8487  mov r0,r11
8488  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8489
8490  ldrh r8,[r4],#2 ;@ Fetch next opcode
8491  subs r5,r5,#20 ;@ Subtract cycles
8492  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8493  b CycloneEnd
8494
8495;@ ---------- [0a30] eori.b #$33, ($33,a0,d3.w*2) uses Op0a30 ----------
8496Op0a30:
8497;@ EaCalc : Get '#$33' into r10:
8498  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8499;@ EaRead : Read '#$33' (address in r10) into r10:
8500
8501;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
8502;@ Get extension word into r3:
8503  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
8504  mov r2,r3,lsr #10
8505  tst r3,#0x0800 ;@ Is Rn Word or Long
8506  and r2,r2,#0x3c ;@ r2=Index of Rn
8507  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
8508  ldrne   r2,[r7,r2] ;@ r2=Rn.l
8509  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
8510  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
8511  and r2,r8,#0x000f
8512  orr r2,r2,#0x8 ;@ A0-7
8513  ldr r2,[r7,r2,lsl #2]
8514  add r11,r2,r3 ;@ r11=Disp+An+Rn
8515;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
8516  add lr,pc,#4
8517  mov r0,r11
8518  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8519
8520  mov r10,r10,asl #24
8521;@ Do arithmetic:
8522  eors r1,r10,r0,asl #24
8523  and r10,r1,#0x80000000 ;@ r10=N_flag
8524  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8525
8526;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
8527  mov r1,r1,lsr #24
8528  add lr,pc,#4
8529  mov r0,r11
8530  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8531
8532  ldrh r8,[r4],#2 ;@ Fetch next opcode
8533  subs r5,r5,#22 ;@ Subtract cycles
8534  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8535  b CycloneEnd
8536
8537;@ ---------- [0a38] eori.b #$33, $3333.w uses Op0a38 ----------
8538Op0a38:
8539;@ EaCalc : Get '#$33' into r10:
8540  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8541;@ EaRead : Read '#$33' (address in r10) into r10:
8542
8543;@ EaCalc : Get '$3333.w' into r11:
8544  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
8545;@ EaRead : Read '$3333.w' (address in r11) into r0:
8546  add lr,pc,#4
8547  mov r0,r11
8548  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8549
8550  mov r10,r10,asl #24
8551;@ Do arithmetic:
8552  eors r1,r10,r0,asl #24
8553  and r10,r1,#0x80000000 ;@ r10=N_flag
8554  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8555
8556;@ EaWrite: Write r1 into '$3333.w' (address in r11):
8557  mov r1,r1,lsr #24
8558  add lr,pc,#4
8559  mov r0,r11
8560  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8561
8562  ldrh r8,[r4],#2 ;@ Fetch next opcode
8563  subs r5,r5,#20 ;@ Subtract cycles
8564  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8565  b CycloneEnd
8566
8567;@ ---------- [0a39] eori.b #$33, $33333333.l uses Op0a39 ----------
8568Op0a39:
8569;@ EaCalc : Get '#$33' into r10:
8570  ldrsb r10,[r4],#2 ;@ Fetch immediate value
8571;@ EaRead : Read '#$33' (address in r10) into r10:
8572
8573;@ EaCalc : Get '$33333333.l' into r11:
8574  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
8575  ldrh r0,[r4],#2
8576  orr r11,r0,r2,lsl #16
8577;@ EaRead : Read '$33333333.l' (address in r11) into r0:
8578  add lr,pc,#4
8579  mov r0,r11
8580  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
8581
8582  mov r10,r10,asl #24
8583;@ Do arithmetic:
8584  eors r1,r10,r0,asl #24
8585  and r10,r1,#0x80000000 ;@ r10=N_flag
8586  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8587
8588;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
8589  mov r1,r1,lsr #24
8590  add lr,pc,#4
8591  mov r0,r11
8592  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
8593
8594  ldrh r8,[r4],#2 ;@ Fetch next opcode
8595  subs r5,r5,#24 ;@ Subtract cycles
8596  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8597  b CycloneEnd
8598
8599;@ ---------- [0a3c] eori.b #$33, ccr uses Op0a3c ----------
8600Op0a3c:
8601;@ EaCalc : Get '#$33' into r0:
8602  ldrsb r0,[r4],#2 ;@ Fetch immediate value
8603;@ EaRead : Read '#$33' (address in r0) into r0:
8604
8605  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
8606  tst r1,#1           ;@ 1 if C!=V
8607  eorne r0,r0,#3      ;@ ___XNZCV
8608  ldr r2,[r7,#0x4c]   ;@ Load old X bit
8609  eor r10,r10,r0,lsl #28
8610  eor r2,r2,r0,lsl #25 ;@ X bit
8611  str r2,[r7,#0x4c]   ;@ Save X bit
8612
8613  ldrh r8,[r4],#2 ;@ Fetch next opcode
8614  subs r5,r5,#20 ;@ Subtract cycles
8615  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8616  b CycloneEnd
8617
8618;@ ---------- [0a40] eori.w #$3333, d0 uses Op0a40 ----------
8619Op0a40:
8620;@ EaCalc : Get '#$3333' into r10:
8621  ldrsh r10,[r4],#2 ;@ Fetch immediate value
8622;@ EaRead : Read '#$3333' (address in r10) into r10:
8623
8624;@ EaCalc : Get register index into r11:
8625  and r11,r8,#0x000f
8626  mov r11,r11,lsl #2
8627;@ EaRead : Read register[r11] into r0:
8628  ldr r0,[r7,r11]
8629
8630  mov r10,r10,asl #16
8631;@ Do arithmetic:
8632  eors r1,r10,r0,asl #16
8633  and r10,r1,#0x80000000 ;@ r10=N_flag
8634  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8635
8636;@ EaWrite: r1 into register[r11]:
8637  mov r1,r1,lsr #16
8638  strh r1,[r7,r11]
8639
8640  ldrh r8,[r4],#2 ;@ Fetch next opcode
8641  subs r5,r5,#8 ;@ Subtract cycles
8642  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8643  b CycloneEnd
8644
8645;@ ---------- [0a50] eori.w #$3333, (a0) uses Op0a50 ----------
8646Op0a50:
8647;@ EaCalc : Get '#$3333' into r10:
8648  ldrsh r10,[r4],#2 ;@ Fetch immediate value
8649;@ EaRead : Read '#$3333' (address in r10) into r10:
8650
8651;@ EaCalc : Get '(a0)' into r11:
8652  and r2,r8,#0x000f
8653  orr r2,r2,#0x8 ;@ A0-7
8654  ldr r11,[r7,r2,lsl #2]
8655;@ EaRead : Read '(a0)' (address in r11) into r0:
8656  add lr,pc,#4
8657  mov r0,r11
8658  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
8659
8660  mov r10,r10,asl #16
8661;@ Do arithmetic:
8662  eors r1,r10,r0,asl #16
8663  and r10,r1,#0x80000000 ;@ r10=N_flag
8664  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8665
8666;@ EaWrite: Write r1 into '(a0)' (address in r11):
8667  mov r1,r1,lsr #16
8668  add lr,pc,#4
8669  mov r0,r11
8670  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
8671
8672  ldrh r8,[r4],#2 ;@ Fetch next opcode
8673  subs r5,r5,#16 ;@ Subtract cycles
8674  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8675  b CycloneEnd
8676
8677;@ ---------- [0a58] eori.w #$3333, (a0)+ uses Op0a58 ----------
8678Op0a58:
8679;@ EaCalc : Get '#$3333' into r10:
8680  ldrsh r10,[r4],#2 ;@ Fetch immediate value
8681;@ EaRead : Read '#$3333' (address in r10) into r10:
8682
8683;@ EaCalc : Get '(a0)+' into r11:
8684  and r2,r8,#0x000f
8685  ldr r11,[r7,r2,lsl #2]
8686  add r3,r11,#2 ;@ Post-increment An
8687  str r3,[r7,r2,lsl #2]
8688;@ EaRead : Read '(a0)+' (address in r11) into r0:
8689  add lr,pc,#4
8690  mov r0,r11
8691  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
8692
8693  mov r10,r10,asl #16
8694;@ Do arithmetic:
8695  eors r1,r10,r0,asl #16
8696  and r10,r1,#0x80000000 ;@ r10=N_flag
8697  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8698
8699;@ EaWrite: Write r1 into '(a0)+' (address in r11):
8700  mov r1,r1,lsr #16
8701  add lr,pc,#4
8702  mov r0,r11
8703  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
8704
8705  ldrh r8,[r4],#2 ;@ Fetch next opcode
8706  subs r5,r5,#16 ;@ Subtract cycles
8707  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8708  b CycloneEnd
8709
8710;@ ---------- [0a60] eori.w #$3333, -(a0) uses Op0a60 ----------
8711Op0a60:
8712;@ EaCalc : Get '#$3333' into r10:
8713  ldrsh r10,[r4],#2 ;@ Fetch immediate value
8714;@ EaRead : Read '#$3333' (address in r10) into r10:
8715
8716;@ EaCalc : Get '-(a0)' into r11:
8717  and r2,r8,#0x000f
8718  orr r2,r2,#0x8 ;@ A0-7
8719  ldr r11,[r7,r2,lsl #2]
8720  sub r11,r11,#2 ;@ Pre-decrement An
8721  str r11,[r7,r2,lsl #2]
8722;@ EaRead : Read '-(a0)' (address in r11) into r0:
8723  add lr,pc,#4
8724  mov r0,r11
8725  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
8726
8727  mov r10,r10,asl #16
8728;@ Do arithmetic:
8729  eors r1,r10,r0,asl #16
8730  and r10,r1,#0x80000000 ;@ r10=N_flag
8731  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8732
8733;@ EaWrite: Write r1 into '-(a0)' (address in r11):
8734  mov r1,r1,lsr #16
8735  add lr,pc,#4
8736  mov r0,r11
8737  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
8738
8739  ldrh r8,[r4],#2 ;@ Fetch next opcode
8740  subs r5,r5,#18 ;@ Subtract cycles
8741  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8742  b CycloneEnd
8743
8744;@ ---------- [0a68] eori.w #$3333, ($3333,a0) uses Op0a68 ----------
8745Op0a68:
8746;@ EaCalc : Get '#$3333' into r10:
8747  ldrsh r10,[r4],#2 ;@ Fetch immediate value
8748;@ EaRead : Read '#$3333' (address in r10) into r10:
8749
8750;@ EaCalc : Get '($3333,a0)' into r11:
8751  ldrsh r0,[r4],#2 ;@ Fetch offset
8752  and r2,r8,#0x000f
8753  ldr r2,[r7,r2,lsl #2]
8754  add r11,r0,r2 ;@ Add on offset
8755;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
8756  add lr,pc,#4
8757  mov r0,r11
8758  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
8759
8760  mov r10,r10,asl #16
8761;@ Do arithmetic:
8762  eors r1,r10,r0,asl #16
8763  and r10,r1,#0x80000000 ;@ r10=N_flag
8764  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8765
8766;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
8767  mov r1,r1,lsr #16
8768  add lr,pc,#4
8769  mov r0,r11
8770  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
8771
8772  ldrh r8,[r4],#2 ;@ Fetch next opcode
8773  subs r5,r5,#20 ;@ Subtract cycles
8774  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8775  b CycloneEnd
8776
8777;@ ---------- [0a70] eori.w #$3333, ($33,a0,d3.w*2) uses Op0a70 ----------
8778Op0a70:
8779;@ EaCalc : Get '#$3333' into r10:
8780  ldrsh r10,[r4],#2 ;@ Fetch immediate value
8781;@ EaRead : Read '#$3333' (address in r10) into r10:
8782
8783;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
8784;@ Get extension word into r3:
8785  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
8786  mov r2,r3,lsr #10
8787  tst r3,#0x0800 ;@ Is Rn Word or Long
8788  and r2,r2,#0x3c ;@ r2=Index of Rn
8789  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
8790  ldrne   r2,[r7,r2] ;@ r2=Rn.l
8791  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
8792  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
8793  and r2,r8,#0x000f
8794  orr r2,r2,#0x8 ;@ A0-7
8795  ldr r2,[r7,r2,lsl #2]
8796  add r11,r2,r3 ;@ r11=Disp+An+Rn
8797;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
8798  add lr,pc,#4
8799  mov r0,r11
8800  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
8801
8802  mov r10,r10,asl #16
8803;@ Do arithmetic:
8804  eors r1,r10,r0,asl #16
8805  and r10,r1,#0x80000000 ;@ r10=N_flag
8806  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8807
8808;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
8809  mov r1,r1,lsr #16
8810  add lr,pc,#4
8811  mov r0,r11
8812  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
8813
8814  ldrh r8,[r4],#2 ;@ Fetch next opcode
8815  subs r5,r5,#22 ;@ Subtract cycles
8816  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8817  b CycloneEnd
8818
8819;@ ---------- [0a78] eori.w #$3333, $3333.w uses Op0a78 ----------
8820Op0a78:
8821;@ EaCalc : Get '#$3333' into r10:
8822  ldrsh r10,[r4],#2 ;@ Fetch immediate value
8823;@ EaRead : Read '#$3333' (address in r10) into r10:
8824
8825;@ EaCalc : Get '$3333.w' into r11:
8826  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
8827;@ EaRead : Read '$3333.w' (address in r11) into r0:
8828  add lr,pc,#4
8829  mov r0,r11
8830  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
8831
8832  mov r10,r10,asl #16
8833;@ Do arithmetic:
8834  eors r1,r10,r0,asl #16
8835  and r10,r1,#0x80000000 ;@ r10=N_flag
8836  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8837
8838;@ EaWrite: Write r1 into '$3333.w' (address in r11):
8839  mov r1,r1,lsr #16
8840  add lr,pc,#4
8841  mov r0,r11
8842  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
8843
8844  ldrh r8,[r4],#2 ;@ Fetch next opcode
8845  subs r5,r5,#20 ;@ Subtract cycles
8846  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8847  b CycloneEnd
8848
8849;@ ---------- [0a79] eori.w #$3333, $33333333.l uses Op0a79 ----------
8850Op0a79:
8851;@ EaCalc : Get '#$3333' into r10:
8852  ldrsh r10,[r4],#2 ;@ Fetch immediate value
8853;@ EaRead : Read '#$3333' (address in r10) into r10:
8854
8855;@ EaCalc : Get '$33333333.l' into r11:
8856  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
8857  ldrh r0,[r4],#2
8858  orr r11,r0,r2,lsl #16
8859;@ EaRead : Read '$33333333.l' (address in r11) into r0:
8860  add lr,pc,#4
8861  mov r0,r11
8862  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
8863
8864  mov r10,r10,asl #16
8865;@ Do arithmetic:
8866  eors r1,r10,r0,asl #16
8867  and r10,r1,#0x80000000 ;@ r10=N_flag
8868  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8869
8870;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
8871  mov r1,r1,lsr #16
8872  add lr,pc,#4
8873  mov r0,r11
8874  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
8875
8876  ldrh r8,[r4],#2 ;@ Fetch next opcode
8877  subs r5,r5,#24 ;@ Subtract cycles
8878  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8879  b CycloneEnd
8880
8881;@ ---------- [0a7c] eori.w #$3333, sr uses Op0a7c ----------
8882Op0a7c:
8883  ldr r11,[r7,#0x44] ;@ Get SR high
8884  tst r11,#0x20 ;@ Check we are in supervisor mode
8885  beq WrongPrivilegeMode ;@ No
8886
8887;@ EaCalc : Get '#$3333' into r0:
8888  ldrsh r0,[r4],#2 ;@ Fetch immediate value
8889;@ EaRead : Read '#$3333' (address in r0) into r0:
8890
8891  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
8892  tst r1,#1           ;@ 1 if C!=V
8893  eorne r0,r0,#3      ;@ ___XNZCV
8894  ldr r2,[r7,#0x4c]   ;@ Load old X bit
8895  eor r10,r10,r0,lsl #28
8896  eor r2,r2,r0,lsl #25 ;@ X bit
8897  eor r1,r11,r0,lsr #8
8898  and r1,r1,#0xa7 ;@ mask-out unused bits
8899  str r2,[r7,#0x4c]   ;@ Save X bit
8900  strb r1,[r7,#0x44]
8901
8902;@ A7 <-> OSP?
8903  eor r0,r1,r11
8904  tst r0,#0x20
8905  beq no_sp_swap0a7c
8906 ;@ swap OSP and A7:
8907  ldr r11,[r7,#0x3C] ;@ Get A7
8908  ldr r0, [r7,#0x48] ;@ Get OSP
8909  str r11,[r7,#0x48]
8910  str r0, [r7,#0x3C]
8911no_sp_swap0a7c:
8912
8913  ldrh r8,[r4],#2 ;@ Fetch next opcode
8914  ldr r1,[r7,#0x44]
8915  subs r5,r5,#20 ;@ Subtract cycles
8916;@ CheckTrace:
8917  tst r1,#0x80
8918  bne CycloneDoTraceWithChecks
8919  cmp r5,#0
8920  ble CycloneEnd
8921;@ CheckInterrupt:
8922  movs r0,r1,lsr #24 ;@ Get IRQ level
8923  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
8924  cmp r0,#6 ;@ irq>6 ?
8925  andle r1,r1,#7 ;@ Get interrupt mask
8926  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
8927  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
8928  b CycloneDoInterruptGoBack
8929
8930;@ ---------- [0a80] eori.l #$33333333, d0 uses Op0a80 ----------
8931Op0a80:
8932;@ EaCalc : Get '#$33333333' into r10:
8933  ldrh r2,[r4],#2 ;@ Fetch immediate value
8934  ldrh r3,[r4],#2
8935  orr r10,r3,r2,lsl #16
8936;@ EaRead : Read '#$33333333' (address in r10) into r10:
8937
8938;@ EaCalc : Get register index into r11:
8939  and r11,r8,#0x000f
8940;@ EaRead : Read register[r11] into r0:
8941  ldr r0,[r7,r11,lsl #2]
8942
8943;@ Do arithmetic:
8944  eors r1,r10,r0
8945  and r10,r1,#0x80000000 ;@ r10=N_flag
8946  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8947
8948;@ EaWrite: r1 into register[r11]:
8949  str r1,[r7,r11,lsl #2]
8950
8951  ldrh r8,[r4],#2 ;@ Fetch next opcode
8952  subs r5,r5,#16 ;@ Subtract cycles
8953  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8954  b CycloneEnd
8955
8956;@ ---------- [0a90] eori.l #$33333333, (a0) uses Op0a90 ----------
8957Op0a90:
8958;@ EaCalc : Get '#$33333333' into r10:
8959  ldrh r2,[r4],#2 ;@ Fetch immediate value
8960  ldrh r3,[r4],#2
8961  orr r10,r3,r2,lsl #16
8962;@ EaRead : Read '#$33333333' (address in r10) into r10:
8963
8964;@ EaCalc : Get '(a0)' into r11:
8965  and r2,r8,#0x000f
8966  orr r2,r2,#0x8 ;@ A0-7
8967  ldr r11,[r7,r2,lsl #2]
8968;@ EaRead : Read '(a0)' (address in r11) into r0:
8969  add lr,pc,#4
8970  mov r0,r11
8971  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
8972
8973;@ Do arithmetic:
8974  eors r1,r10,r0
8975  and r10,r1,#0x80000000 ;@ r10=N_flag
8976  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
8977
8978;@ EaWrite: Write r1 into '(a0)' (address in r11):
8979  add lr,pc,#4
8980  mov r0,r11
8981  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
8982
8983  ldrh r8,[r4],#2 ;@ Fetch next opcode
8984  subs r5,r5,#28 ;@ Subtract cycles
8985  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
8986  b CycloneEnd
8987
8988;@ ---------- [0a98] eori.l #$33333333, (a0)+ uses Op0a98 ----------
8989Op0a98:
8990;@ EaCalc : Get '#$33333333' into r10:
8991  ldrh r2,[r4],#2 ;@ Fetch immediate value
8992  ldrh r3,[r4],#2
8993  orr r10,r3,r2,lsl #16
8994;@ EaRead : Read '#$33333333' (address in r10) into r10:
8995
8996;@ EaCalc : Get '(a0)+' into r11:
8997  and r2,r8,#0x000f
8998  ldr r11,[r7,r2,lsl #2]
8999  add r3,r11,#4 ;@ Post-increment An
9000  str r3,[r7,r2,lsl #2]
9001;@ EaRead : Read '(a0)+' (address in r11) into r0:
9002  add lr,pc,#4
9003  mov r0,r11
9004  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9005
9006;@ Do arithmetic:
9007  eors r1,r10,r0
9008  and r10,r1,#0x80000000 ;@ r10=N_flag
9009  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9010
9011;@ EaWrite: Write r1 into '(a0)+' (address in r11):
9012  add lr,pc,#4
9013  mov r0,r11
9014  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
9015
9016  ldrh r8,[r4],#2 ;@ Fetch next opcode
9017  subs r5,r5,#28 ;@ Subtract cycles
9018  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9019  b CycloneEnd
9020
9021;@ ---------- [0aa0] eori.l #$33333333, -(a0) uses Op0aa0 ----------
9022Op0aa0:
9023;@ EaCalc : Get '#$33333333' into r10:
9024  ldrh r2,[r4],#2 ;@ Fetch immediate value
9025  ldrh r3,[r4],#2
9026  orr r10,r3,r2,lsl #16
9027;@ EaRead : Read '#$33333333' (address in r10) into r10:
9028
9029;@ EaCalc : Get '-(a0)' into r11:
9030  and r2,r8,#0x000f
9031  orr r2,r2,#0x8 ;@ A0-7
9032  ldr r11,[r7,r2,lsl #2]
9033  sub r11,r11,#4 ;@ Pre-decrement An
9034  str r11,[r7,r2,lsl #2]
9035;@ EaRead : Read '-(a0)' (address in r11) into r0:
9036  add lr,pc,#4
9037  mov r0,r11
9038  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9039
9040;@ Do arithmetic:
9041  eors r1,r10,r0
9042  and r10,r1,#0x80000000 ;@ r10=N_flag
9043  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9044
9045;@ EaWrite: Write r1 into '-(a0)' (address in r11):
9046  add lr,pc,#4
9047  mov r0,r11
9048  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
9049
9050  ldrh r8,[r4],#2 ;@ Fetch next opcode
9051  subs r5,r5,#30 ;@ Subtract cycles
9052  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9053  b CycloneEnd
9054
9055;@ ---------- [0aa8] eori.l #$33333333, ($3333,a0) uses Op0aa8 ----------
9056Op0aa8:
9057;@ EaCalc : Get '#$33333333' into r10:
9058  ldrh r2,[r4],#2 ;@ Fetch immediate value
9059  ldrh r3,[r4],#2
9060  orr r10,r3,r2,lsl #16
9061;@ EaRead : Read '#$33333333' (address in r10) into r10:
9062
9063;@ EaCalc : Get '($3333,a0)' into r11:
9064  ldrsh r0,[r4],#2 ;@ Fetch offset
9065  and r2,r8,#0x000f
9066  ldr r2,[r7,r2,lsl #2]
9067  add r11,r0,r2 ;@ Add on offset
9068;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
9069  add lr,pc,#4
9070  mov r0,r11
9071  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9072
9073;@ Do arithmetic:
9074  eors r1,r10,r0
9075  and r10,r1,#0x80000000 ;@ r10=N_flag
9076  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9077
9078;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
9079  add lr,pc,#4
9080  mov r0,r11
9081  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
9082
9083  ldrh r8,[r4],#2 ;@ Fetch next opcode
9084  subs r5,r5,#32 ;@ Subtract cycles
9085  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9086  b CycloneEnd
9087
9088;@ ---------- [0ab0] eori.l #$33333333, ($33,a0,d3.w*2) uses Op0ab0 ----------
9089Op0ab0:
9090;@ EaCalc : Get '#$33333333' into r10:
9091  ldrh r2,[r4],#2 ;@ Fetch immediate value
9092  ldrh r3,[r4],#2
9093  orr r10,r3,r2,lsl #16
9094;@ EaRead : Read '#$33333333' (address in r10) into r10:
9095
9096;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
9097;@ Get extension word into r3:
9098  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
9099  mov r2,r3,lsr #10
9100  tst r3,#0x0800 ;@ Is Rn Word or Long
9101  and r2,r2,#0x3c ;@ r2=Index of Rn
9102  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
9103  ldrne   r2,[r7,r2] ;@ r2=Rn.l
9104  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
9105  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
9106  and r2,r8,#0x000f
9107  orr r2,r2,#0x8 ;@ A0-7
9108  ldr r2,[r7,r2,lsl #2]
9109  add r11,r2,r3 ;@ r11=Disp+An+Rn
9110;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
9111  add lr,pc,#4
9112  mov r0,r11
9113  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9114
9115;@ Do arithmetic:
9116  eors r1,r10,r0
9117  and r10,r1,#0x80000000 ;@ r10=N_flag
9118  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9119
9120;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
9121  add lr,pc,#4
9122  mov r0,r11
9123  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
9124
9125  ldrh r8,[r4],#2 ;@ Fetch next opcode
9126  subs r5,r5,#34 ;@ Subtract cycles
9127  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9128  b CycloneEnd
9129
9130;@ ---------- [0ab8] eori.l #$33333333, $3333.w uses Op0ab8 ----------
9131Op0ab8:
9132;@ EaCalc : Get '#$33333333' into r10:
9133  ldrh r2,[r4],#2 ;@ Fetch immediate value
9134  ldrh r3,[r4],#2
9135  orr r10,r3,r2,lsl #16
9136;@ EaRead : Read '#$33333333' (address in r10) into r10:
9137
9138;@ EaCalc : Get '$3333.w' into r11:
9139  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
9140;@ EaRead : Read '$3333.w' (address in r11) into r0:
9141  add lr,pc,#4
9142  mov r0,r11
9143  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9144
9145;@ Do arithmetic:
9146  eors r1,r10,r0
9147  and r10,r1,#0x80000000 ;@ r10=N_flag
9148  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9149
9150;@ EaWrite: Write r1 into '$3333.w' (address in r11):
9151  add lr,pc,#4
9152  mov r0,r11
9153  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
9154
9155  ldrh r8,[r4],#2 ;@ Fetch next opcode
9156  subs r5,r5,#32 ;@ Subtract cycles
9157  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9158  b CycloneEnd
9159
9160;@ ---------- [0ab9] eori.l #$33333333, $33333333.l uses Op0ab9 ----------
9161Op0ab9:
9162;@ EaCalc : Get '#$33333333' into r10:
9163  ldrh r2,[r4],#2 ;@ Fetch immediate value
9164  ldrh r3,[r4],#2
9165  orr r10,r3,r2,lsl #16
9166;@ EaRead : Read '#$33333333' (address in r10) into r10:
9167
9168;@ EaCalc : Get '$33333333.l' into r11:
9169  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
9170  ldrh r0,[r4],#2
9171  orr r11,r0,r2,lsl #16
9172;@ EaRead : Read '$33333333.l' (address in r11) into r0:
9173  add lr,pc,#4
9174  mov r0,r11
9175  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9176
9177;@ Do arithmetic:
9178  eors r1,r10,r0
9179  and r10,r1,#0x80000000 ;@ r10=N_flag
9180  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9181
9182;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
9183  add lr,pc,#4
9184  mov r0,r11
9185  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
9186
9187  ldrh r8,[r4],#2 ;@ Fetch next opcode
9188  subs r5,r5,#36 ;@ Subtract cycles
9189  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9190  b CycloneEnd
9191
9192;@ ---------- [0c00] cmpi.b #$33, d0 uses Op0c00 ----------
9193Op0c00:
9194;@ EaCalc : Get '#$33' into r10:
9195  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9196;@ EaRead : Read '#$33' (address in r10) into r10:
9197
9198;@ EaCalc : Get register index into r0:
9199  and r0,r8,#0x000f
9200;@ EaRead : Read register[r0] into r0:
9201  ldr r0,[r7,r0,lsl #2]
9202
9203  mov r10,r10,asl #24
9204;@ Do arithmetic:
9205  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9206  mrs r10,cpsr ;@ r10=flags
9207  eor r10,r10,#0x20000000 ;@ Invert carry
9208
9209  ldrh r8,[r4],#2 ;@ Fetch next opcode
9210  subs r5,r5,#8 ;@ Subtract cycles
9211  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9212  b CycloneEnd
9213
9214;@ ---------- [0c10] cmpi.b #$33, (a0) uses Op0c10 ----------
9215Op0c10:
9216;@ EaCalc : Get '#$33' into r10:
9217  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9218;@ EaRead : Read '#$33' (address in r10) into r10:
9219
9220;@ EaCalc : Get '(a0)' into r0:
9221  and r2,r8,#0x000f
9222  orr r2,r2,#0x8 ;@ A0-7
9223  ldr r0,[r7,r2,lsl #2]
9224;@ EaRead : Read '(a0)' (address in r0) into r0:
9225  mov lr,pc
9226  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9227
9228  mov r10,r10,asl #24
9229;@ Do arithmetic:
9230  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9231  mrs r10,cpsr ;@ r10=flags
9232  eor r10,r10,#0x20000000 ;@ Invert carry
9233
9234  ldrh r8,[r4],#2 ;@ Fetch next opcode
9235  subs r5,r5,#12 ;@ Subtract cycles
9236  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9237  b CycloneEnd
9238
9239;@ ---------- [0c18] cmpi.b #$33, (a0)+ uses Op0c18 ----------
9240Op0c18:
9241;@ EaCalc : Get '#$33' into r10:
9242  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9243;@ EaRead : Read '#$33' (address in r10) into r10:
9244
9245;@ EaCalc : Get '(a0)+' into r0:
9246  and r2,r8,#0x000f
9247  ldr r0,[r7,r2,lsl #2]
9248  add r3,r0,#1 ;@ Post-increment An
9249  str r3,[r7,r2,lsl #2]
9250;@ EaRead : Read '(a0)+' (address in r0) into r0:
9251  mov lr,pc
9252  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9253
9254  mov r10,r10,asl #24
9255;@ Do arithmetic:
9256  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9257  mrs r10,cpsr ;@ r10=flags
9258  eor r10,r10,#0x20000000 ;@ Invert carry
9259
9260  ldrh r8,[r4],#2 ;@ Fetch next opcode
9261  subs r5,r5,#12 ;@ Subtract cycles
9262  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9263  b CycloneEnd
9264
9265;@ ---------- [0c1f] cmpi.b #$33, (a7)+ uses Op0c1f ----------
9266Op0c1f:
9267;@ EaCalc : Get '#$33' into r10:
9268  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9269;@ EaRead : Read '#$33' (address in r10) into r10:
9270
9271;@ EaCalc : Get '(a7)+' into r0:
9272  ldr r0,[r7,#0x3c] ;@ A7
9273  add r3,r0,#2 ;@ Post-increment An
9274  str r3,[r7,#0x3c] ;@ A7
9275;@ EaRead : Read '(a7)+' (address in r0) into r0:
9276  mov lr,pc
9277  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9278
9279  mov r10,r10,asl #24
9280;@ Do arithmetic:
9281  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9282  mrs r10,cpsr ;@ r10=flags
9283  eor r10,r10,#0x20000000 ;@ Invert carry
9284
9285  ldrh r8,[r4],#2 ;@ Fetch next opcode
9286  subs r5,r5,#12 ;@ Subtract cycles
9287  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9288  b CycloneEnd
9289
9290;@ ---------- [0c20] cmpi.b #$33, -(a0) uses Op0c20 ----------
9291Op0c20:
9292;@ EaCalc : Get '#$33' into r10:
9293  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9294;@ EaRead : Read '#$33' (address in r10) into r10:
9295
9296;@ EaCalc : Get '-(a0)' into r0:
9297  and r2,r8,#0x000f
9298  orr r2,r2,#0x8 ;@ A0-7
9299  ldr r0,[r7,r2,lsl #2]
9300  sub r0,r0,#1 ;@ Pre-decrement An
9301  str r0,[r7,r2,lsl #2]
9302;@ EaRead : Read '-(a0)' (address in r0) into r0:
9303  mov lr,pc
9304  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9305
9306  mov r10,r10,asl #24
9307;@ Do arithmetic:
9308  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9309  mrs r10,cpsr ;@ r10=flags
9310  eor r10,r10,#0x20000000 ;@ Invert carry
9311
9312  ldrh r8,[r4],#2 ;@ Fetch next opcode
9313  subs r5,r5,#14 ;@ Subtract cycles
9314  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9315  b CycloneEnd
9316
9317;@ ---------- [0c27] cmpi.b #$33, -(a7) uses Op0c27 ----------
9318Op0c27:
9319;@ EaCalc : Get '#$33' into r10:
9320  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9321;@ EaRead : Read '#$33' (address in r10) into r10:
9322
9323;@ EaCalc : Get '-(a7)' into r0:
9324  ldr r0,[r7,#0x3c] ;@ A7
9325  sub r0,r0,#2 ;@ Pre-decrement An
9326  str r0,[r7,#0x3c] ;@ A7
9327;@ EaRead : Read '-(a7)' (address in r0) into r0:
9328  mov lr,pc
9329  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9330
9331  mov r10,r10,asl #24
9332;@ Do arithmetic:
9333  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9334  mrs r10,cpsr ;@ r10=flags
9335  eor r10,r10,#0x20000000 ;@ Invert carry
9336
9337  ldrh r8,[r4],#2 ;@ Fetch next opcode
9338  subs r5,r5,#14 ;@ Subtract cycles
9339  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9340  b CycloneEnd
9341
9342;@ ---------- [0c28] cmpi.b #$33, ($3333,a0) uses Op0c28 ----------
9343Op0c28:
9344;@ EaCalc : Get '#$33' into r10:
9345  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9346;@ EaRead : Read '#$33' (address in r10) into r10:
9347
9348;@ EaCalc : Get '($3333,a0)' into r0:
9349  ldrsh r0,[r4],#2 ;@ Fetch offset
9350  and r2,r8,#0x000f
9351  ldr r2,[r7,r2,lsl #2]
9352  add r0,r0,r2 ;@ Add on offset
9353;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
9354  mov lr,pc
9355  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9356
9357  mov r10,r10,asl #24
9358;@ Do arithmetic:
9359  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9360  mrs r10,cpsr ;@ r10=flags
9361  eor r10,r10,#0x20000000 ;@ Invert carry
9362
9363  ldrh r8,[r4],#2 ;@ Fetch next opcode
9364  subs r5,r5,#16 ;@ Subtract cycles
9365  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9366  b CycloneEnd
9367
9368;@ ---------- [0c30] cmpi.b #$33, ($33,a0,d3.w*2) uses Op0c30 ----------
9369Op0c30:
9370;@ EaCalc : Get '#$33' into r10:
9371  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9372;@ EaRead : Read '#$33' (address in r10) into r10:
9373
9374;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
9375;@ Get extension word into r3:
9376  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
9377  mov r2,r3,lsr #10
9378  tst r3,#0x0800 ;@ Is Rn Word or Long
9379  and r2,r2,#0x3c ;@ r2=Index of Rn
9380  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
9381  ldrne   r2,[r7,r2] ;@ r2=Rn.l
9382  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
9383  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
9384  and r2,r8,#0x000f
9385  orr r2,r2,#0x8 ;@ A0-7
9386  ldr r2,[r7,r2,lsl #2]
9387  add r0,r2,r3 ;@ r0=Disp+An+Rn
9388;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
9389  mov lr,pc
9390  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9391
9392  mov r10,r10,asl #24
9393;@ Do arithmetic:
9394  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9395  mrs r10,cpsr ;@ r10=flags
9396  eor r10,r10,#0x20000000 ;@ Invert carry
9397
9398  ldrh r8,[r4],#2 ;@ Fetch next opcode
9399  subs r5,r5,#18 ;@ Subtract cycles
9400  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9401  b CycloneEnd
9402
9403;@ ---------- [0c38] cmpi.b #$33, $3333.w uses Op0c38 ----------
9404Op0c38:
9405;@ EaCalc : Get '#$33' into r10:
9406  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9407;@ EaRead : Read '#$33' (address in r10) into r10:
9408
9409;@ EaCalc : Get '$3333.w' into r0:
9410  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
9411;@ EaRead : Read '$3333.w' (address in r0) into r0:
9412  mov lr,pc
9413  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9414
9415  mov r10,r10,asl #24
9416;@ Do arithmetic:
9417  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9418  mrs r10,cpsr ;@ r10=flags
9419  eor r10,r10,#0x20000000 ;@ Invert carry
9420
9421  ldrh r8,[r4],#2 ;@ Fetch next opcode
9422  subs r5,r5,#16 ;@ Subtract cycles
9423  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9424  b CycloneEnd
9425
9426;@ ---------- [0c39] cmpi.b #$33, $33333333.l uses Op0c39 ----------
9427Op0c39:
9428;@ EaCalc : Get '#$33' into r10:
9429  ldrsb r10,[r4],#2 ;@ Fetch immediate value
9430;@ EaRead : Read '#$33' (address in r10) into r10:
9431
9432;@ EaCalc : Get '$33333333.l' into r0:
9433  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
9434  ldrh r0,[r4],#2
9435  orr r0,r0,r2,lsl #16
9436;@ EaRead : Read '$33333333.l' (address in r0) into r0:
9437  mov lr,pc
9438  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9439
9440  mov r10,r10,asl #24
9441;@ Do arithmetic:
9442  rsbs r1,r10,r0,asl #24 ;@ Defines NZCV
9443  mrs r10,cpsr ;@ r10=flags
9444  eor r10,r10,#0x20000000 ;@ Invert carry
9445
9446  ldrh r8,[r4],#2 ;@ Fetch next opcode
9447  subs r5,r5,#20 ;@ Subtract cycles
9448  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9449  b CycloneEnd
9450
9451;@ ---------- [0c50] cmpi.w #$3333, (a0) uses Op0c50 ----------
9452Op0c50:
9453;@ EaCalc : Get '#$3333' into r10:
9454  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9455;@ EaRead : Read '#$3333' (address in r10) into r10:
9456
9457;@ EaCalc : Get '(a0)' into r0:
9458  and r2,r8,#0x000f
9459  orr r2,r2,#0x8 ;@ A0-7
9460  ldr r0,[r7,r2,lsl #2]
9461;@ EaRead : Read '(a0)' (address in r0) into r0:
9462  mov lr,pc
9463  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
9464
9465  mov r10,r10,asl #16
9466;@ Do arithmetic:
9467  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
9468  mrs r10,cpsr ;@ r10=flags
9469  eor r10,r10,#0x20000000 ;@ Invert carry
9470
9471  ldrh r8,[r4],#2 ;@ Fetch next opcode
9472  subs r5,r5,#12 ;@ Subtract cycles
9473  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9474  b CycloneEnd
9475
9476;@ ---------- [0c58] cmpi.w #$3333, (a0)+ uses Op0c58 ----------
9477Op0c58:
9478;@ EaCalc : Get '#$3333' into r10:
9479  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9480;@ EaRead : Read '#$3333' (address in r10) into r10:
9481
9482;@ EaCalc : Get '(a0)+' into r0:
9483  and r2,r8,#0x000f
9484  ldr r0,[r7,r2,lsl #2]
9485  add r3,r0,#2 ;@ Post-increment An
9486  str r3,[r7,r2,lsl #2]
9487;@ EaRead : Read '(a0)+' (address in r0) into r0:
9488  mov lr,pc
9489  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
9490
9491  mov r10,r10,asl #16
9492;@ Do arithmetic:
9493  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
9494  mrs r10,cpsr ;@ r10=flags
9495  eor r10,r10,#0x20000000 ;@ Invert carry
9496
9497  ldrh r8,[r4],#2 ;@ Fetch next opcode
9498  subs r5,r5,#12 ;@ Subtract cycles
9499  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9500  b CycloneEnd
9501
9502;@ ---------- [0c60] cmpi.w #$3333, -(a0) uses Op0c60 ----------
9503Op0c60:
9504;@ EaCalc : Get '#$3333' into r10:
9505  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9506;@ EaRead : Read '#$3333' (address in r10) into r10:
9507
9508;@ EaCalc : Get '-(a0)' into r0:
9509  and r2,r8,#0x000f
9510  orr r2,r2,#0x8 ;@ A0-7
9511  ldr r0,[r7,r2,lsl #2]
9512  sub r0,r0,#2 ;@ Pre-decrement An
9513  str r0,[r7,r2,lsl #2]
9514;@ EaRead : Read '-(a0)' (address in r0) into r0:
9515  mov lr,pc
9516  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
9517
9518  mov r10,r10,asl #16
9519;@ Do arithmetic:
9520  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
9521  mrs r10,cpsr ;@ r10=flags
9522  eor r10,r10,#0x20000000 ;@ Invert carry
9523
9524  ldrh r8,[r4],#2 ;@ Fetch next opcode
9525  subs r5,r5,#14 ;@ Subtract cycles
9526  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9527  b CycloneEnd
9528
9529;@ ---------- [0c68] cmpi.w #$3333, ($3333,a0) uses Op0c68 ----------
9530Op0c68:
9531;@ EaCalc : Get '#$3333' into r10:
9532  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9533;@ EaRead : Read '#$3333' (address in r10) into r10:
9534
9535;@ EaCalc : Get '($3333,a0)' into r0:
9536  ldrsh r0,[r4],#2 ;@ Fetch offset
9537  and r2,r8,#0x000f
9538  ldr r2,[r7,r2,lsl #2]
9539  add r0,r0,r2 ;@ Add on offset
9540;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
9541  mov lr,pc
9542  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
9543
9544  mov r10,r10,asl #16
9545;@ Do arithmetic:
9546  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
9547  mrs r10,cpsr ;@ r10=flags
9548  eor r10,r10,#0x20000000 ;@ Invert carry
9549
9550  ldrh r8,[r4],#2 ;@ Fetch next opcode
9551  subs r5,r5,#16 ;@ Subtract cycles
9552  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9553  b CycloneEnd
9554
9555;@ ---------- [0c70] cmpi.w #$3333, ($33,a0,d3.w*2) uses Op0c70 ----------
9556Op0c70:
9557;@ EaCalc : Get '#$3333' into r10:
9558  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9559;@ EaRead : Read '#$3333' (address in r10) into r10:
9560
9561;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
9562;@ Get extension word into r3:
9563  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
9564  mov r2,r3,lsr #10
9565  tst r3,#0x0800 ;@ Is Rn Word or Long
9566  and r2,r2,#0x3c ;@ r2=Index of Rn
9567  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
9568  ldrne   r2,[r7,r2] ;@ r2=Rn.l
9569  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
9570  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
9571  and r2,r8,#0x000f
9572  orr r2,r2,#0x8 ;@ A0-7
9573  ldr r2,[r7,r2,lsl #2]
9574  add r0,r2,r3 ;@ r0=Disp+An+Rn
9575;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
9576  mov lr,pc
9577  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
9578
9579  mov r10,r10,asl #16
9580;@ Do arithmetic:
9581  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
9582  mrs r10,cpsr ;@ r10=flags
9583  eor r10,r10,#0x20000000 ;@ Invert carry
9584
9585  ldrh r8,[r4],#2 ;@ Fetch next opcode
9586  subs r5,r5,#18 ;@ Subtract cycles
9587  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9588  b CycloneEnd
9589
9590;@ ---------- [0c78] cmpi.w #$3333, $3333.w uses Op0c78 ----------
9591Op0c78:
9592;@ EaCalc : Get '#$3333' into r10:
9593  ldrsh r10,[r4],#2 ;@ Fetch immediate value
9594;@ EaRead : Read '#$3333' (address in r10) into r10:
9595
9596;@ EaCalc : Get '$3333.w' into r0:
9597  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
9598;@ EaRead : Read '$3333.w' (address in r0) into r0:
9599  mov lr,pc
9600  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
9601
9602  mov r10,r10,asl #16
9603;@ Do arithmetic:
9604  rsbs r1,r10,r0,asl #16 ;@ Defines NZCV
9605  mrs r10,cpsr ;@ r10=flags
9606  eor r10,r10,#0x20000000 ;@ Invert carry
9607
9608  ldrh r8,[r4],#2 ;@ Fetch next opcode
9609  subs r5,r5,#16 ;@ Subtract cycles
9610  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9611  b CycloneEnd
9612
9613;@ ---------- [0c80] cmpi.l #$33333333, d0 uses Op0c80 ----------
9614Op0c80:
9615;@ EaCalc : Get '#$33333333' into r10:
9616  ldrh r2,[r4],#2 ;@ Fetch immediate value
9617  ldrh r3,[r4],#2
9618  orr r10,r3,r2,lsl #16
9619;@ EaRead : Read '#$33333333' (address in r10) into r10:
9620
9621;@ EaCalc : Get register index into r0:
9622  and r0,r8,#0x000f
9623;@ EaRead : Read register[r0] into r0:
9624  ldr r0,[r7,r0,lsl #2]
9625
9626;@ Do arithmetic:
9627  rsbs r1,r10,r0 ;@ Defines NZCV
9628  mrs r10,cpsr ;@ r10=flags
9629  eor r10,r10,#0x20000000 ;@ Invert carry
9630
9631  ldrh r8,[r4],#2 ;@ Fetch next opcode
9632  subs r5,r5,#14 ;@ Subtract cycles
9633  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9634  b CycloneEnd
9635
9636;@ ---------- [0c90] cmpi.l #$33333333, (a0) uses Op0c90 ----------
9637Op0c90:
9638;@ EaCalc : Get '#$33333333' into r10:
9639  ldrh r2,[r4],#2 ;@ Fetch immediate value
9640  ldrh r3,[r4],#2
9641  orr r10,r3,r2,lsl #16
9642;@ EaRead : Read '#$33333333' (address in r10) into r10:
9643
9644;@ EaCalc : Get '(a0)' into r0:
9645  and r2,r8,#0x000f
9646  orr r2,r2,#0x8 ;@ A0-7
9647  ldr r0,[r7,r2,lsl #2]
9648;@ EaRead : Read '(a0)' (address in r0) into r0:
9649  mov lr,pc
9650  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9651
9652;@ Do arithmetic:
9653  rsbs r1,r10,r0 ;@ Defines NZCV
9654  mrs r10,cpsr ;@ r10=flags
9655  eor r10,r10,#0x20000000 ;@ Invert carry
9656
9657  ldrh r8,[r4],#2 ;@ Fetch next opcode
9658  subs r5,r5,#20 ;@ Subtract cycles
9659  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9660  b CycloneEnd
9661
9662;@ ---------- [0c98] cmpi.l #$33333333, (a0)+ uses Op0c98 ----------
9663Op0c98:
9664;@ EaCalc : Get '#$33333333' into r10:
9665  ldrh r2,[r4],#2 ;@ Fetch immediate value
9666  ldrh r3,[r4],#2
9667  orr r10,r3,r2,lsl #16
9668;@ EaRead : Read '#$33333333' (address in r10) into r10:
9669
9670;@ EaCalc : Get '(a0)+' into r0:
9671  and r2,r8,#0x000f
9672  ldr r0,[r7,r2,lsl #2]
9673  add r3,r0,#4 ;@ Post-increment An
9674  str r3,[r7,r2,lsl #2]
9675;@ EaRead : Read '(a0)+' (address in r0) into r0:
9676  mov lr,pc
9677  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9678
9679;@ Do arithmetic:
9680  rsbs r1,r10,r0 ;@ Defines NZCV
9681  mrs r10,cpsr ;@ r10=flags
9682  eor r10,r10,#0x20000000 ;@ Invert carry
9683
9684  ldrh r8,[r4],#2 ;@ Fetch next opcode
9685  subs r5,r5,#20 ;@ Subtract cycles
9686  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9687  b CycloneEnd
9688
9689;@ ---------- [0ca0] cmpi.l #$33333333, -(a0) uses Op0ca0 ----------
9690Op0ca0:
9691;@ EaCalc : Get '#$33333333' into r10:
9692  ldrh r2,[r4],#2 ;@ Fetch immediate value
9693  ldrh r3,[r4],#2
9694  orr r10,r3,r2,lsl #16
9695;@ EaRead : Read '#$33333333' (address in r10) into r10:
9696
9697;@ EaCalc : Get '-(a0)' into r0:
9698  and r2,r8,#0x000f
9699  orr r2,r2,#0x8 ;@ A0-7
9700  ldr r0,[r7,r2,lsl #2]
9701  sub r0,r0,#4 ;@ Pre-decrement An
9702  str r0,[r7,r2,lsl #2]
9703;@ EaRead : Read '-(a0)' (address in r0) into r0:
9704  mov lr,pc
9705  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9706
9707;@ Do arithmetic:
9708  rsbs r1,r10,r0 ;@ Defines NZCV
9709  mrs r10,cpsr ;@ r10=flags
9710  eor r10,r10,#0x20000000 ;@ Invert carry
9711
9712  ldrh r8,[r4],#2 ;@ Fetch next opcode
9713  subs r5,r5,#22 ;@ Subtract cycles
9714  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9715  b CycloneEnd
9716
9717;@ ---------- [0ca8] cmpi.l #$33333333, ($3333,a0) uses Op0ca8 ----------
9718Op0ca8:
9719;@ EaCalc : Get '#$33333333' into r10:
9720  ldrh r2,[r4],#2 ;@ Fetch immediate value
9721  ldrh r3,[r4],#2
9722  orr r10,r3,r2,lsl #16
9723;@ EaRead : Read '#$33333333' (address in r10) into r10:
9724
9725;@ EaCalc : Get '($3333,a0)' into r0:
9726  ldrsh r0,[r4],#2 ;@ Fetch offset
9727  and r2,r8,#0x000f
9728  ldr r2,[r7,r2,lsl #2]
9729  add r0,r0,r2 ;@ Add on offset
9730;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
9731  mov lr,pc
9732  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9733
9734;@ Do arithmetic:
9735  rsbs r1,r10,r0 ;@ Defines NZCV
9736  mrs r10,cpsr ;@ r10=flags
9737  eor r10,r10,#0x20000000 ;@ Invert carry
9738
9739  ldrh r8,[r4],#2 ;@ Fetch next opcode
9740  subs r5,r5,#24 ;@ Subtract cycles
9741  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9742  b CycloneEnd
9743
9744;@ ---------- [0cb0] cmpi.l #$33333333, ($33,a0,d3.w*2) uses Op0cb0 ----------
9745Op0cb0:
9746;@ EaCalc : Get '#$33333333' into r10:
9747  ldrh r2,[r4],#2 ;@ Fetch immediate value
9748  ldrh r3,[r4],#2
9749  orr r10,r3,r2,lsl #16
9750;@ EaRead : Read '#$33333333' (address in r10) into r10:
9751
9752;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
9753;@ Get extension word into r3:
9754  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
9755  mov r2,r3,lsr #10
9756  tst r3,#0x0800 ;@ Is Rn Word or Long
9757  and r2,r2,#0x3c ;@ r2=Index of Rn
9758  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
9759  ldrne   r2,[r7,r2] ;@ r2=Rn.l
9760  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
9761  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
9762  and r2,r8,#0x000f
9763  orr r2,r2,#0x8 ;@ A0-7
9764  ldr r2,[r7,r2,lsl #2]
9765  add r0,r2,r3 ;@ r0=Disp+An+Rn
9766;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
9767  mov lr,pc
9768  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9769
9770;@ Do arithmetic:
9771  rsbs r1,r10,r0 ;@ Defines NZCV
9772  mrs r10,cpsr ;@ r10=flags
9773  eor r10,r10,#0x20000000 ;@ Invert carry
9774
9775  ldrh r8,[r4],#2 ;@ Fetch next opcode
9776  subs r5,r5,#26 ;@ Subtract cycles
9777  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9778  b CycloneEnd
9779
9780;@ ---------- [0cb8] cmpi.l #$33333333, $3333.w uses Op0cb8 ----------
9781Op0cb8:
9782;@ EaCalc : Get '#$33333333' into r10:
9783  ldrh r2,[r4],#2 ;@ Fetch immediate value
9784  ldrh r3,[r4],#2
9785  orr r10,r3,r2,lsl #16
9786;@ EaRead : Read '#$33333333' (address in r10) into r10:
9787
9788;@ EaCalc : Get '$3333.w' into r0:
9789  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
9790;@ EaRead : Read '$3333.w' (address in r0) into r0:
9791  mov lr,pc
9792  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9793
9794;@ Do arithmetic:
9795  rsbs r1,r10,r0 ;@ Defines NZCV
9796  mrs r10,cpsr ;@ r10=flags
9797  eor r10,r10,#0x20000000 ;@ Invert carry
9798
9799  ldrh r8,[r4],#2 ;@ Fetch next opcode
9800  subs r5,r5,#24 ;@ Subtract cycles
9801  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9802  b CycloneEnd
9803
9804;@ ---------- [0cb9] cmpi.l #$33333333, $33333333.l uses Op0cb9 ----------
9805Op0cb9:
9806;@ EaCalc : Get '#$33333333' into r10:
9807  ldrh r2,[r4],#2 ;@ Fetch immediate value
9808  ldrh r3,[r4],#2
9809  orr r10,r3,r2,lsl #16
9810;@ EaRead : Read '#$33333333' (address in r10) into r10:
9811
9812;@ EaCalc : Get '$33333333.l' into r0:
9813  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
9814  ldrh r0,[r4],#2
9815  orr r0,r0,r2,lsl #16
9816;@ EaRead : Read '$33333333.l' (address in r0) into r0:
9817  mov lr,pc
9818  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
9819
9820;@ Do arithmetic:
9821  rsbs r1,r10,r0 ;@ Defines NZCV
9822  mrs r10,cpsr ;@ r10=flags
9823  eor r10,r10,#0x20000000 ;@ Invert carry
9824
9825  ldrh r8,[r4],#2 ;@ Fetch next opcode
9826  subs r5,r5,#28 ;@ Subtract cycles
9827  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9828  b CycloneEnd
9829
9830;@ ---------- [1000] move.b d0, d0 uses Op1000 ----------
9831Op1000:
9832;@ EaCalc : Get register index into r1:
9833  and r1,r8,#0x000f
9834;@ EaRead : Read register[r1] into r1:
9835  ldrb r1,[r7,r1,lsl #2]
9836
9837  movs r2,r1,lsl #24
9838  and r10,r2,#0x80000000 ;@ r10=N_flag
9839  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9840
9841;@ EaCalc : Get register index into r0:
9842  and r0,r8,#0x0e00
9843;@ EaWrite: r1 into register[r0]:
9844  strb r1,[r7,r0,lsr #7]
9845
9846  ldrh r8,[r4],#2 ;@ Fetch next opcode
9847  subs r5,r5,#4 ;@ Subtract cycles
9848  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9849  b CycloneEnd
9850
9851;@ ---------- [1010] move.b (a0), d0 uses Op1010 ----------
9852Op1010:
9853;@ EaCalc : Get '(a0)' into r0:
9854  and r2,r8,#0x000f
9855  orr r2,r2,#0x8 ;@ A0-7
9856  ldr r0,[r7,r2,lsl #2]
9857;@ EaRead : Read '(a0)' (address in r0) into r1:
9858  mov lr,pc
9859  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9860  movs r1,r0,asl #24
9861
9862  and r10,r1,#0x80000000 ;@ r10=N_flag
9863  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9864
9865;@ EaCalc : Get register index into r0:
9866  and r0,r8,#0x0e00
9867;@ EaWrite: r1 into register[r0]:
9868  mov r1,r1,lsr #24
9869  strb r1,[r7,r0,lsr #7]
9870
9871  ldrh r8,[r4],#2 ;@ Fetch next opcode
9872  subs r5,r5,#8 ;@ Subtract cycles
9873  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9874  b CycloneEnd
9875
9876;@ ---------- [101f] move.b (a7)+, d0 uses Op101f ----------
9877Op101f:
9878;@ EaCalc : Get '(a7)+' into r0:
9879  ldr r0,[r7,#0x3c] ;@ A7
9880  add r3,r0,#2 ;@ Post-increment An
9881  str r3,[r7,#0x3c] ;@ A7
9882;@ EaRead : Read '(a7)+' (address in r0) into r1:
9883  mov lr,pc
9884  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9885  movs r1,r0,asl #24
9886
9887  and r10,r1,#0x80000000 ;@ r10=N_flag
9888  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9889
9890;@ EaCalc : Get register index into r0:
9891  and r0,r8,#0x0e00
9892;@ EaWrite: r1 into register[r0]:
9893  mov r1,r1,lsr #24
9894  strb r1,[r7,r0,lsr #7]
9895
9896  ldrh r8,[r4],#2 ;@ Fetch next opcode
9897  subs r5,r5,#8 ;@ Subtract cycles
9898  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9899  b CycloneEnd
9900
9901;@ ---------- [1020] move.b -(a0), d0 uses Op1020 ----------
9902Op1020:
9903;@ EaCalc : Get '-(a0)' into r0:
9904  and r2,r8,#0x000f
9905  orr r2,r2,#0x8 ;@ A0-7
9906  ldr r0,[r7,r2,lsl #2]
9907  sub r0,r0,#1 ;@ Pre-decrement An
9908  str r0,[r7,r2,lsl #2]
9909;@ EaRead : Read '-(a0)' (address in r0) into r1:
9910  mov lr,pc
9911  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9912  movs r1,r0,asl #24
9913
9914  and r10,r1,#0x80000000 ;@ r10=N_flag
9915  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9916
9917;@ EaCalc : Get register index into r0:
9918  and r0,r8,#0x0e00
9919;@ EaWrite: r1 into register[r0]:
9920  mov r1,r1,lsr #24
9921  strb r1,[r7,r0,lsr #7]
9922
9923  ldrh r8,[r4],#2 ;@ Fetch next opcode
9924  subs r5,r5,#10 ;@ Subtract cycles
9925  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9926  b CycloneEnd
9927
9928;@ ---------- [1027] move.b -(a7), d0 uses Op1027 ----------
9929Op1027:
9930;@ EaCalc : Get '-(a7)' into r0:
9931  ldr r0,[r7,#0x3c] ;@ A7
9932  sub r0,r0,#2 ;@ Pre-decrement An
9933  str r0,[r7,#0x3c] ;@ A7
9934;@ EaRead : Read '-(a7)' (address in r0) into r1:
9935  mov lr,pc
9936  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9937  movs r1,r0,asl #24
9938
9939  and r10,r1,#0x80000000 ;@ r10=N_flag
9940  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9941
9942;@ EaCalc : Get register index into r0:
9943  and r0,r8,#0x0e00
9944;@ EaWrite: r1 into register[r0]:
9945  mov r1,r1,lsr #24
9946  strb r1,[r7,r0,lsr #7]
9947
9948  ldrh r8,[r4],#2 ;@ Fetch next opcode
9949  subs r5,r5,#10 ;@ Subtract cycles
9950  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9951  b CycloneEnd
9952
9953;@ ---------- [1028] move.b ($3333,a0), d0 uses Op1028 ----------
9954Op1028:
9955;@ EaCalc : Get '($3333,a0)' into r0:
9956  ldrsh r0,[r4],#2 ;@ Fetch offset
9957  and r2,r8,#0x000f
9958  ldr r2,[r7,r2,lsl #2]
9959  add r0,r0,r2 ;@ Add on offset
9960;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
9961  mov lr,pc
9962  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9963  movs r1,r0,asl #24
9964
9965  and r10,r1,#0x80000000 ;@ r10=N_flag
9966  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
9967
9968;@ EaCalc : Get register index into r0:
9969  and r0,r8,#0x0e00
9970;@ EaWrite: r1 into register[r0]:
9971  mov r1,r1,lsr #24
9972  strb r1,[r7,r0,lsr #7]
9973
9974  ldrh r8,[r4],#2 ;@ Fetch next opcode
9975  subs r5,r5,#12 ;@ Subtract cycles
9976  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
9977  b CycloneEnd
9978
9979;@ ---------- [1030] move.b ($33,a0,d3.w*2), d0 uses Op1030 ----------
9980Op1030:
9981;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
9982;@ Get extension word into r3:
9983  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
9984  mov r2,r3,lsr #10
9985  tst r3,#0x0800 ;@ Is Rn Word or Long
9986  and r2,r2,#0x3c ;@ r2=Index of Rn
9987  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
9988  ldrne   r2,[r7,r2] ;@ r2=Rn.l
9989  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
9990  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
9991  and r2,r8,#0x000f
9992  orr r2,r2,#0x8 ;@ A0-7
9993  ldr r2,[r7,r2,lsl #2]
9994  add r0,r2,r3 ;@ r0=Disp+An+Rn
9995;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
9996  mov lr,pc
9997  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
9998  movs r1,r0,asl #24
9999
10000  and r10,r1,#0x80000000 ;@ r10=N_flag
10001  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10002
10003;@ EaCalc : Get register index into r0:
10004  and r0,r8,#0x0e00
10005;@ EaWrite: r1 into register[r0]:
10006  mov r1,r1,lsr #24
10007  strb r1,[r7,r0,lsr #7]
10008
10009  ldrh r8,[r4],#2 ;@ Fetch next opcode
10010  subs r5,r5,#14 ;@ Subtract cycles
10011  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10012  b CycloneEnd
10013
10014;@ ---------- [1038] move.b $3333.w, d0 uses Op1038 ----------
10015Op1038:
10016;@ EaCalc : Get '$3333.w' into r0:
10017  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
10018;@ EaRead : Read '$3333.w' (address in r0) into r1:
10019  mov lr,pc
10020  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10021  movs r1,r0,asl #24
10022
10023  and r10,r1,#0x80000000 ;@ r10=N_flag
10024  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10025
10026;@ EaCalc : Get register index into r0:
10027  and r0,r8,#0x0e00
10028;@ EaWrite: r1 into register[r0]:
10029  mov r1,r1,lsr #24
10030  strb r1,[r7,r0,lsr #7]
10031
10032  ldrh r8,[r4],#2 ;@ Fetch next opcode
10033  subs r5,r5,#12 ;@ Subtract cycles
10034  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10035  b CycloneEnd
10036
10037;@ ---------- [103a] move.b ($3333,pc), d0; =3335 uses Op103a ----------
10038Op103a:
10039;@ EaCalc : Get '($3333,pc)' into r0:
10040  ldr r0,[r7,#0x60] ;@ Get Memory base
10041  sub r0,r4,r0 ;@ Real PC
10042  ldrsh r2,[r4],#2 ;@ Fetch extension
10043  add r0,r2,r0 ;@ ($nn,PC)
10044;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
10045  mov lr,pc
10046  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
10047  movs r1,r0,asl #24
10048
10049  and r10,r1,#0x80000000 ;@ r10=N_flag
10050  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10051
10052;@ EaCalc : Get register index into r0:
10053  and r0,r8,#0x0e00
10054;@ EaWrite: r1 into register[r0]:
10055  mov r1,r1,lsr #24
10056  strb r1,[r7,r0,lsr #7]
10057
10058  ldrh r8,[r4],#2 ;@ Fetch next opcode
10059  subs r5,r5,#12 ;@ Subtract cycles
10060  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10061  b CycloneEnd
10062
10063;@ ---------- [103b] move.b ($33,pc,d3.w*2), d0; =35 uses Op103b ----------
10064Op103b:
10065;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
10066  ldr r0,[r7,#0x60] ;@ Get Memory base
10067  ldrh r3,[r4] ;@ Get extension word
10068  sub r0,r4,r0 ;@ r0=PC
10069  add r4,r4,#2
10070  mov r2,r3,lsr #10
10071  tst r3,#0x0800 ;@ Is Rn Word or Long
10072  and r2,r2,#0x3c ;@ r2=Index of Rn
10073  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
10074  ldrne   r2,[r7,r2] ;@ r2=Rn.l
10075  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
10076  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
10077  add r0,r2,r0 ;@ r0=Disp+PC+Rn
10078;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
10079  mov lr,pc
10080  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
10081  movs r1,r0,asl #24
10082
10083  and r10,r1,#0x80000000 ;@ r10=N_flag
10084  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10085
10086;@ EaCalc : Get register index into r0:
10087  and r0,r8,#0x0e00
10088;@ EaWrite: r1 into register[r0]:
10089  mov r1,r1,lsr #24
10090  strb r1,[r7,r0,lsr #7]
10091
10092  ldrh r8,[r4],#2 ;@ Fetch next opcode
10093  subs r5,r5,#14 ;@ Subtract cycles
10094  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10095  b CycloneEnd
10096
10097;@ ---------- [103c] move.b #$33, d0 uses Op103c ----------
10098Op103c:
10099;@ EaCalc : Get '#$33' into r1:
10100  ldrsb r1,[r4],#2 ;@ Fetch immediate value
10101;@ EaRead : Read '#$33' (address in r1) into r1:
10102  movs r1,r1,asl #24
10103
10104  and r10,r1,#0x80000000 ;@ r10=N_flag
10105  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10106
10107;@ EaCalc : Get register index into r0:
10108  and r0,r8,#0x0e00
10109;@ EaWrite: r1 into register[r0]:
10110  mov r1,r1,lsr #24
10111  strb r1,[r7,r0,lsr #7]
10112
10113  ldrh r8,[r4],#2 ;@ Fetch next opcode
10114  subs r5,r5,#8 ;@ Subtract cycles
10115  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10116  b CycloneEnd
10117
10118;@ ---------- [1080] move.b d0, (a0) uses Op1080 ----------
10119Op1080:
10120;@ EaCalc : Get register index into r1:
10121  and r1,r8,#0x000f
10122;@ EaRead : Read register[r1] into r1:
10123  ldrb r1,[r7,r1,lsl #2]
10124
10125  movs r2,r1,lsl #24
10126  and r10,r2,#0x80000000 ;@ r10=N_flag
10127  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10128
10129;@ EaCalc : Get '(a0)' into r0:
10130  and r2,r8,#0x1e00
10131  ldr r0,[r7,r2,lsr #7]
10132;@ EaWrite: Write r1 into '(a0)' (address in r0):
10133  mov lr,pc
10134  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10135
10136  ldrh r8,[r4],#2 ;@ Fetch next opcode
10137  subs r5,r5,#8 ;@ Subtract cycles
10138  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10139  b CycloneEnd
10140
10141;@ ---------- [1090] move.b (a0), (a0) uses Op1090 ----------
10142Op1090:
10143;@ EaCalc : Get '(a0)' into r0:
10144  and r2,r8,#0x000f
10145  orr r2,r2,#0x8 ;@ A0-7
10146  ldr r0,[r7,r2,lsl #2]
10147;@ EaRead : Read '(a0)' (address in r0) into r1:
10148  mov lr,pc
10149  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10150  movs r1,r0,asl #24
10151
10152  and r10,r1,#0x80000000 ;@ r10=N_flag
10153  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10154
10155;@ EaCalc : Get '(a0)' into r0:
10156  and r2,r8,#0x1e00
10157  ldr r0,[r7,r2,lsr #7]
10158;@ EaWrite: Write r1 into '(a0)' (address in r0):
10159  mov r1,r1,lsr #24
10160  mov lr,pc
10161  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10162
10163  ldrh r8,[r4],#2 ;@ Fetch next opcode
10164  subs r5,r5,#12 ;@ Subtract cycles
10165  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10166  b CycloneEnd
10167
10168;@ ---------- [1098] move.b (a0)+, (a0) uses Op1098 ----------
10169Op1098:
10170;@ EaCalc : Get '(a0)+' into r0:
10171  and r2,r8,#0x000f
10172  ldr r0,[r7,r2,lsl #2]
10173  add r3,r0,#1 ;@ Post-increment An
10174  str r3,[r7,r2,lsl #2]
10175;@ EaRead : Read '(a0)+' (address in r0) into r1:
10176  mov lr,pc
10177  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10178  movs r1,r0,asl #24
10179
10180  and r10,r1,#0x80000000 ;@ r10=N_flag
10181  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10182
10183;@ EaCalc : Get '(a0)' into r0:
10184  and r2,r8,#0x1e00
10185  ldr r0,[r7,r2,lsr #7]
10186;@ EaWrite: Write r1 into '(a0)' (address in r0):
10187  mov r1,r1,lsr #24
10188  mov lr,pc
10189  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10190
10191  ldrh r8,[r4],#2 ;@ Fetch next opcode
10192  subs r5,r5,#12 ;@ Subtract cycles
10193  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10194  b CycloneEnd
10195
10196;@ ---------- [109f] move.b (a7)+, (a0) uses Op109f ----------
10197Op109f:
10198;@ EaCalc : Get '(a7)+' into r0:
10199  ldr r0,[r7,#0x3c] ;@ A7
10200  add r3,r0,#2 ;@ Post-increment An
10201  str r3,[r7,#0x3c] ;@ A7
10202;@ EaRead : Read '(a7)+' (address in r0) into r1:
10203  mov lr,pc
10204  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10205  movs r1,r0,asl #24
10206
10207  and r10,r1,#0x80000000 ;@ r10=N_flag
10208  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10209
10210;@ EaCalc : Get '(a0)' into r0:
10211  and r2,r8,#0x1e00
10212  ldr r0,[r7,r2,lsr #7]
10213;@ EaWrite: Write r1 into '(a0)' (address in r0):
10214  mov r1,r1,lsr #24
10215  mov lr,pc
10216  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10217
10218  ldrh r8,[r4],#2 ;@ Fetch next opcode
10219  subs r5,r5,#12 ;@ Subtract cycles
10220  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10221  b CycloneEnd
10222
10223;@ ---------- [10a0] move.b -(a0), (a0) uses Op10a0 ----------
10224Op10a0:
10225;@ EaCalc : Get '-(a0)' into r0:
10226  and r2,r8,#0x000f
10227  orr r2,r2,#0x8 ;@ A0-7
10228  ldr r0,[r7,r2,lsl #2]
10229  sub r0,r0,#1 ;@ Pre-decrement An
10230  str r0,[r7,r2,lsl #2]
10231;@ EaRead : Read '-(a0)' (address in r0) into r1:
10232  mov lr,pc
10233  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10234  movs r1,r0,asl #24
10235
10236  and r10,r1,#0x80000000 ;@ r10=N_flag
10237  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10238
10239;@ EaCalc : Get '(a0)' into r0:
10240  and r2,r8,#0x1e00
10241  ldr r0,[r7,r2,lsr #7]
10242;@ EaWrite: Write r1 into '(a0)' (address in r0):
10243  mov r1,r1,lsr #24
10244  mov lr,pc
10245  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10246
10247  ldrh r8,[r4],#2 ;@ Fetch next opcode
10248  subs r5,r5,#14 ;@ Subtract cycles
10249  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10250  b CycloneEnd
10251
10252;@ ---------- [10a7] move.b -(a7), (a0) uses Op10a7 ----------
10253Op10a7:
10254;@ EaCalc : Get '-(a7)' into r0:
10255  ldr r0,[r7,#0x3c] ;@ A7
10256  sub r0,r0,#2 ;@ Pre-decrement An
10257  str r0,[r7,#0x3c] ;@ A7
10258;@ EaRead : Read '-(a7)' (address in r0) into r1:
10259  mov lr,pc
10260  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10261  movs r1,r0,asl #24
10262
10263  and r10,r1,#0x80000000 ;@ r10=N_flag
10264  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10265
10266;@ EaCalc : Get '(a0)' into r0:
10267  and r2,r8,#0x1e00
10268  ldr r0,[r7,r2,lsr #7]
10269;@ EaWrite: Write r1 into '(a0)' (address in r0):
10270  mov r1,r1,lsr #24
10271  mov lr,pc
10272  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10273
10274  ldrh r8,[r4],#2 ;@ Fetch next opcode
10275  subs r5,r5,#14 ;@ Subtract cycles
10276  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10277  b CycloneEnd
10278
10279;@ ---------- [10a8] move.b ($3333,a0), (a0) uses Op10a8 ----------
10280Op10a8:
10281;@ EaCalc : Get '($3333,a0)' into r0:
10282  ldrsh r0,[r4],#2 ;@ Fetch offset
10283  and r2,r8,#0x000f
10284  ldr r2,[r7,r2,lsl #2]
10285  add r0,r0,r2 ;@ Add on offset
10286;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
10287  mov lr,pc
10288  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10289  movs r1,r0,asl #24
10290
10291  and r10,r1,#0x80000000 ;@ r10=N_flag
10292  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10293
10294;@ EaCalc : Get '(a0)' into r0:
10295  and r2,r8,#0x1e00
10296  ldr r0,[r7,r2,lsr #7]
10297;@ EaWrite: Write r1 into '(a0)' (address in r0):
10298  mov r1,r1,lsr #24
10299  mov lr,pc
10300  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10301
10302  ldrh r8,[r4],#2 ;@ Fetch next opcode
10303  subs r5,r5,#16 ;@ Subtract cycles
10304  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10305  b CycloneEnd
10306
10307;@ ---------- [10b0] move.b ($33,a0,d3.w*2), (a0) uses Op10b0 ----------
10308Op10b0:
10309;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
10310;@ Get extension word into r3:
10311  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
10312  mov r2,r3,lsr #10
10313  tst r3,#0x0800 ;@ Is Rn Word or Long
10314  and r2,r2,#0x3c ;@ r2=Index of Rn
10315  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
10316  ldrne   r2,[r7,r2] ;@ r2=Rn.l
10317  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
10318  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
10319  and r2,r8,#0x000f
10320  orr r2,r2,#0x8 ;@ A0-7
10321  ldr r2,[r7,r2,lsl #2]
10322  add r0,r2,r3 ;@ r0=Disp+An+Rn
10323;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
10324  mov lr,pc
10325  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10326  movs r1,r0,asl #24
10327
10328  and r10,r1,#0x80000000 ;@ r10=N_flag
10329  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10330
10331;@ EaCalc : Get '(a0)' into r0:
10332  and r2,r8,#0x1e00
10333  ldr r0,[r7,r2,lsr #7]
10334;@ EaWrite: Write r1 into '(a0)' (address in r0):
10335  mov r1,r1,lsr #24
10336  mov lr,pc
10337  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10338
10339  ldrh r8,[r4],#2 ;@ Fetch next opcode
10340  subs r5,r5,#18 ;@ Subtract cycles
10341  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10342  b CycloneEnd
10343
10344;@ ---------- [10b8] move.b $3333.w, (a0) uses Op10b8 ----------
10345Op10b8:
10346;@ EaCalc : Get '$3333.w' into r0:
10347  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
10348;@ EaRead : Read '$3333.w' (address in r0) into r1:
10349  mov lr,pc
10350  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10351  movs r1,r0,asl #24
10352
10353  and r10,r1,#0x80000000 ;@ r10=N_flag
10354  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10355
10356;@ EaCalc : Get '(a0)' into r0:
10357  and r2,r8,#0x1e00
10358  ldr r0,[r7,r2,lsr #7]
10359;@ EaWrite: Write r1 into '(a0)' (address in r0):
10360  mov r1,r1,lsr #24
10361  mov lr,pc
10362  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10363
10364  ldrh r8,[r4],#2 ;@ Fetch next opcode
10365  subs r5,r5,#16 ;@ Subtract cycles
10366  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10367  b CycloneEnd
10368
10369;@ ---------- [10b9] move.b $33333333.l, (a0) uses Op10b9 ----------
10370Op10b9:
10371;@ EaCalc : Get '$33333333.l' into r0:
10372  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
10373  ldrh r0,[r4],#2
10374  orr r0,r0,r2,lsl #16
10375;@ EaRead : Read '$33333333.l' (address in r0) into r1:
10376  mov lr,pc
10377  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10378  movs r1,r0,asl #24
10379
10380  and r10,r1,#0x80000000 ;@ r10=N_flag
10381  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10382
10383;@ EaCalc : Get '(a0)' into r0:
10384  and r2,r8,#0x1e00
10385  ldr r0,[r7,r2,lsr #7]
10386;@ EaWrite: Write r1 into '(a0)' (address in r0):
10387  mov r1,r1,lsr #24
10388  mov lr,pc
10389  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10390
10391  ldrh r8,[r4],#2 ;@ Fetch next opcode
10392  subs r5,r5,#20 ;@ Subtract cycles
10393  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10394  b CycloneEnd
10395
10396;@ ---------- [10ba] move.b ($3333,pc), (a0); =3335 uses Op10ba ----------
10397Op10ba:
10398;@ EaCalc : Get '($3333,pc)' into r0:
10399  ldr r0,[r7,#0x60] ;@ Get Memory base
10400  sub r0,r4,r0 ;@ Real PC
10401  ldrsh r2,[r4],#2 ;@ Fetch extension
10402  add r0,r2,r0 ;@ ($nn,PC)
10403;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
10404  mov lr,pc
10405  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
10406  movs r1,r0,asl #24
10407
10408  and r10,r1,#0x80000000 ;@ r10=N_flag
10409  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10410
10411;@ EaCalc : Get '(a0)' into r0:
10412  and r2,r8,#0x1e00
10413  ldr r0,[r7,r2,lsr #7]
10414;@ EaWrite: Write r1 into '(a0)' (address in r0):
10415  mov r1,r1,lsr #24
10416  mov lr,pc
10417  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10418
10419  ldrh r8,[r4],#2 ;@ Fetch next opcode
10420  subs r5,r5,#16 ;@ Subtract cycles
10421  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10422  b CycloneEnd
10423
10424;@ ---------- [10bb] move.b ($33,pc,d3.w*2), (a0); =35 uses Op10bb ----------
10425Op10bb:
10426;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
10427  ldr r0,[r7,#0x60] ;@ Get Memory base
10428  ldrh r3,[r4] ;@ Get extension word
10429  sub r0,r4,r0 ;@ r0=PC
10430  add r4,r4,#2
10431  mov r2,r3,lsr #10
10432  tst r3,#0x0800 ;@ Is Rn Word or Long
10433  and r2,r2,#0x3c ;@ r2=Index of Rn
10434  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
10435  ldrne   r2,[r7,r2] ;@ r2=Rn.l
10436  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
10437  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
10438  add r0,r2,r0 ;@ r0=Disp+PC+Rn
10439;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
10440  mov lr,pc
10441  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
10442  movs r1,r0,asl #24
10443
10444  and r10,r1,#0x80000000 ;@ r10=N_flag
10445  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10446
10447;@ EaCalc : Get '(a0)' into r0:
10448  and r2,r8,#0x1e00
10449  ldr r0,[r7,r2,lsr #7]
10450;@ EaWrite: Write r1 into '(a0)' (address in r0):
10451  mov r1,r1,lsr #24
10452  mov lr,pc
10453  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10454
10455  ldrh r8,[r4],#2 ;@ Fetch next opcode
10456  subs r5,r5,#18 ;@ Subtract cycles
10457  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10458  b CycloneEnd
10459
10460;@ ---------- [10bc] move.b #$33, (a0) uses Op10bc ----------
10461Op10bc:
10462;@ EaCalc : Get '#$33' into r1:
10463  ldrsb r1,[r4],#2 ;@ Fetch immediate value
10464;@ EaRead : Read '#$33' (address in r1) into r1:
10465  movs r1,r1,asl #24
10466
10467  and r10,r1,#0x80000000 ;@ r10=N_flag
10468  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10469
10470;@ EaCalc : Get '(a0)' into r0:
10471  and r2,r8,#0x1e00
10472  ldr r0,[r7,r2,lsr #7]
10473;@ EaWrite: Write r1 into '(a0)' (address in r0):
10474  mov r1,r1,lsr #24
10475  mov lr,pc
10476  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10477
10478  ldrh r8,[r4],#2 ;@ Fetch next opcode
10479  subs r5,r5,#12 ;@ Subtract cycles
10480  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10481  b CycloneEnd
10482
10483;@ ---------- [10d0] move.b (a0), (a0)+ uses Op10d0 ----------
10484Op10d0:
10485;@ EaCalc : Get '(a0)' into r0:
10486  and r2,r8,#0x000f
10487  orr r2,r2,#0x8 ;@ A0-7
10488  ldr r0,[r7,r2,lsl #2]
10489;@ EaRead : Read '(a0)' (address in r0) into r1:
10490  mov lr,pc
10491  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10492  movs r1,r0,asl #24
10493
10494  and r10,r1,#0x80000000 ;@ r10=N_flag
10495  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10496
10497;@ EaCalc : Get '(a0)+' into r0:
10498  and r2,r8,#0x1e00
10499  ldr r0,[r7,r2,lsr #7]
10500  add r3,r0,#1 ;@ Post-increment An
10501  str r3,[r7,r2,lsr #7]
10502;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10503  mov r1,r1,lsr #24
10504  mov lr,pc
10505  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10506
10507  ldrh r8,[r4],#2 ;@ Fetch next opcode
10508  subs r5,r5,#12 ;@ Subtract cycles
10509  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10510  b CycloneEnd
10511
10512;@ ---------- [10df] move.b (a7)+, (a0)+ uses Op10df ----------
10513Op10df:
10514;@ EaCalc : Get '(a7)+' into r0:
10515  ldr r0,[r7,#0x3c] ;@ A7
10516  add r3,r0,#2 ;@ Post-increment An
10517  str r3,[r7,#0x3c] ;@ A7
10518;@ EaRead : Read '(a7)+' (address in r0) into r1:
10519  mov lr,pc
10520  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10521  movs r1,r0,asl #24
10522
10523  and r10,r1,#0x80000000 ;@ r10=N_flag
10524  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10525
10526;@ EaCalc : Get '(a0)+' into r0:
10527  and r2,r8,#0x1e00
10528  ldr r0,[r7,r2,lsr #7]
10529  add r3,r0,#1 ;@ Post-increment An
10530  str r3,[r7,r2,lsr #7]
10531;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10532  mov r1,r1,lsr #24
10533  mov lr,pc
10534  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10535
10536  ldrh r8,[r4],#2 ;@ Fetch next opcode
10537  subs r5,r5,#12 ;@ Subtract cycles
10538  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10539  b CycloneEnd
10540
10541;@ ---------- [10e0] move.b -(a0), (a0)+ uses Op10e0 ----------
10542Op10e0:
10543;@ EaCalc : Get '-(a0)' into r0:
10544  and r2,r8,#0x000f
10545  orr r2,r2,#0x8 ;@ A0-7
10546  ldr r0,[r7,r2,lsl #2]
10547  sub r0,r0,#1 ;@ Pre-decrement An
10548  str r0,[r7,r2,lsl #2]
10549;@ EaRead : Read '-(a0)' (address in r0) into r1:
10550  mov lr,pc
10551  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10552  movs r1,r0,asl #24
10553
10554  and r10,r1,#0x80000000 ;@ r10=N_flag
10555  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10556
10557;@ EaCalc : Get '(a0)+' into r0:
10558  and r2,r8,#0x1e00
10559  ldr r0,[r7,r2,lsr #7]
10560  add r3,r0,#1 ;@ Post-increment An
10561  str r3,[r7,r2,lsr #7]
10562;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10563  mov r1,r1,lsr #24
10564  mov lr,pc
10565  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10566
10567  ldrh r8,[r4],#2 ;@ Fetch next opcode
10568  subs r5,r5,#14 ;@ Subtract cycles
10569  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10570  b CycloneEnd
10571
10572;@ ---------- [10e7] move.b -(a7), (a0)+ uses Op10e7 ----------
10573Op10e7:
10574;@ EaCalc : Get '-(a7)' into r0:
10575  ldr r0,[r7,#0x3c] ;@ A7
10576  sub r0,r0,#2 ;@ Pre-decrement An
10577  str r0,[r7,#0x3c] ;@ A7
10578;@ EaRead : Read '-(a7)' (address in r0) into r1:
10579  mov lr,pc
10580  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10581  movs r1,r0,asl #24
10582
10583  and r10,r1,#0x80000000 ;@ r10=N_flag
10584  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10585
10586;@ EaCalc : Get '(a0)+' into r0:
10587  and r2,r8,#0x1e00
10588  ldr r0,[r7,r2,lsr #7]
10589  add r3,r0,#1 ;@ Post-increment An
10590  str r3,[r7,r2,lsr #7]
10591;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10592  mov r1,r1,lsr #24
10593  mov lr,pc
10594  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10595
10596  ldrh r8,[r4],#2 ;@ Fetch next opcode
10597  subs r5,r5,#14 ;@ Subtract cycles
10598  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10599  b CycloneEnd
10600
10601;@ ---------- [10e8] move.b ($3333,a0), (a0)+ uses Op10e8 ----------
10602Op10e8:
10603;@ EaCalc : Get '($3333,a0)' into r0:
10604  ldrsh r0,[r4],#2 ;@ Fetch offset
10605  and r2,r8,#0x000f
10606  ldr r2,[r7,r2,lsl #2]
10607  add r0,r0,r2 ;@ Add on offset
10608;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
10609  mov lr,pc
10610  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10611  movs r1,r0,asl #24
10612
10613  and r10,r1,#0x80000000 ;@ r10=N_flag
10614  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10615
10616;@ EaCalc : Get '(a0)+' into r0:
10617  and r2,r8,#0x1e00
10618  ldr r0,[r7,r2,lsr #7]
10619  add r3,r0,#1 ;@ Post-increment An
10620  str r3,[r7,r2,lsr #7]
10621;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10622  mov r1,r1,lsr #24
10623  mov lr,pc
10624  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10625
10626  ldrh r8,[r4],#2 ;@ Fetch next opcode
10627  subs r5,r5,#16 ;@ Subtract cycles
10628  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10629  b CycloneEnd
10630
10631;@ ---------- [10f0] move.b ($33,a0,d3.w*2), (a0)+ uses Op10f0 ----------
10632Op10f0:
10633;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
10634;@ Get extension word into r3:
10635  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
10636  mov r2,r3,lsr #10
10637  tst r3,#0x0800 ;@ Is Rn Word or Long
10638  and r2,r2,#0x3c ;@ r2=Index of Rn
10639  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
10640  ldrne   r2,[r7,r2] ;@ r2=Rn.l
10641  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
10642  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
10643  and r2,r8,#0x000f
10644  orr r2,r2,#0x8 ;@ A0-7
10645  ldr r2,[r7,r2,lsl #2]
10646  add r0,r2,r3 ;@ r0=Disp+An+Rn
10647;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
10648  mov lr,pc
10649  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10650  movs r1,r0,asl #24
10651
10652  and r10,r1,#0x80000000 ;@ r10=N_flag
10653  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10654
10655;@ EaCalc : Get '(a0)+' into r0:
10656  and r2,r8,#0x1e00
10657  ldr r0,[r7,r2,lsr #7]
10658  add r3,r0,#1 ;@ Post-increment An
10659  str r3,[r7,r2,lsr #7]
10660;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10661  mov r1,r1,lsr #24
10662  mov lr,pc
10663  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10664
10665  ldrh r8,[r4],#2 ;@ Fetch next opcode
10666  subs r5,r5,#18 ;@ Subtract cycles
10667  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10668  b CycloneEnd
10669
10670;@ ---------- [10f8] move.b $3333.w, (a0)+ uses Op10f8 ----------
10671Op10f8:
10672;@ EaCalc : Get '$3333.w' into r0:
10673  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
10674;@ EaRead : Read '$3333.w' (address in r0) into r1:
10675  mov lr,pc
10676  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10677  movs r1,r0,asl #24
10678
10679  and r10,r1,#0x80000000 ;@ r10=N_flag
10680  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10681
10682;@ EaCalc : Get '(a0)+' into r0:
10683  and r2,r8,#0x1e00
10684  ldr r0,[r7,r2,lsr #7]
10685  add r3,r0,#1 ;@ Post-increment An
10686  str r3,[r7,r2,lsr #7]
10687;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10688  mov r1,r1,lsr #24
10689  mov lr,pc
10690  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10691
10692  ldrh r8,[r4],#2 ;@ Fetch next opcode
10693  subs r5,r5,#16 ;@ Subtract cycles
10694  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10695  b CycloneEnd
10696
10697;@ ---------- [10f9] move.b $33333333.l, (a0)+ uses Op10f9 ----------
10698Op10f9:
10699;@ EaCalc : Get '$33333333.l' into r0:
10700  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
10701  ldrh r0,[r4],#2
10702  orr r0,r0,r2,lsl #16
10703;@ EaRead : Read '$33333333.l' (address in r0) into r1:
10704  mov lr,pc
10705  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10706  movs r1,r0,asl #24
10707
10708  and r10,r1,#0x80000000 ;@ r10=N_flag
10709  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10710
10711;@ EaCalc : Get '(a0)+' into r0:
10712  and r2,r8,#0x1e00
10713  ldr r0,[r7,r2,lsr #7]
10714  add r3,r0,#1 ;@ Post-increment An
10715  str r3,[r7,r2,lsr #7]
10716;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10717  mov r1,r1,lsr #24
10718  mov lr,pc
10719  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10720
10721  ldrh r8,[r4],#2 ;@ Fetch next opcode
10722  subs r5,r5,#20 ;@ Subtract cycles
10723  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10724  b CycloneEnd
10725
10726;@ ---------- [10fa] move.b ($3333,pc), (a0)+; =3335 uses Op10fa ----------
10727Op10fa:
10728;@ EaCalc : Get '($3333,pc)' into r0:
10729  ldr r0,[r7,#0x60] ;@ Get Memory base
10730  sub r0,r4,r0 ;@ Real PC
10731  ldrsh r2,[r4],#2 ;@ Fetch extension
10732  add r0,r2,r0 ;@ ($nn,PC)
10733;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
10734  mov lr,pc
10735  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
10736  movs r1,r0,asl #24
10737
10738  and r10,r1,#0x80000000 ;@ r10=N_flag
10739  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10740
10741;@ EaCalc : Get '(a0)+' into r0:
10742  and r2,r8,#0x1e00
10743  ldr r0,[r7,r2,lsr #7]
10744  add r3,r0,#1 ;@ Post-increment An
10745  str r3,[r7,r2,lsr #7]
10746;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10747  mov r1,r1,lsr #24
10748  mov lr,pc
10749  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10750
10751  ldrh r8,[r4],#2 ;@ Fetch next opcode
10752  subs r5,r5,#16 ;@ Subtract cycles
10753  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10754  b CycloneEnd
10755
10756;@ ---------- [10fb] move.b ($33,pc,d3.w*2), (a0)+; =35 uses Op10fb ----------
10757Op10fb:
10758;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
10759  ldr r0,[r7,#0x60] ;@ Get Memory base
10760  ldrh r3,[r4] ;@ Get extension word
10761  sub r0,r4,r0 ;@ r0=PC
10762  add r4,r4,#2
10763  mov r2,r3,lsr #10
10764  tst r3,#0x0800 ;@ Is Rn Word or Long
10765  and r2,r2,#0x3c ;@ r2=Index of Rn
10766  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
10767  ldrne   r2,[r7,r2] ;@ r2=Rn.l
10768  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
10769  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
10770  add r0,r2,r0 ;@ r0=Disp+PC+Rn
10771;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
10772  mov lr,pc
10773  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
10774  movs r1,r0,asl #24
10775
10776  and r10,r1,#0x80000000 ;@ r10=N_flag
10777  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10778
10779;@ EaCalc : Get '(a0)+' into r0:
10780  and r2,r8,#0x1e00
10781  ldr r0,[r7,r2,lsr #7]
10782  add r3,r0,#1 ;@ Post-increment An
10783  str r3,[r7,r2,lsr #7]
10784;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10785  mov r1,r1,lsr #24
10786  mov lr,pc
10787  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10788
10789  ldrh r8,[r4],#2 ;@ Fetch next opcode
10790  subs r5,r5,#18 ;@ Subtract cycles
10791  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10792  b CycloneEnd
10793
10794;@ ---------- [10fc] move.b #$33, (a0)+ uses Op10fc ----------
10795Op10fc:
10796;@ EaCalc : Get '#$33' into r1:
10797  ldrsb r1,[r4],#2 ;@ Fetch immediate value
10798;@ EaRead : Read '#$33' (address in r1) into r1:
10799  movs r1,r1,asl #24
10800
10801  and r10,r1,#0x80000000 ;@ r10=N_flag
10802  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10803
10804;@ EaCalc : Get '(a0)+' into r0:
10805  and r2,r8,#0x1e00
10806  ldr r0,[r7,r2,lsr #7]
10807  add r3,r0,#1 ;@ Post-increment An
10808  str r3,[r7,r2,lsr #7]
10809;@ EaWrite: Write r1 into '(a0)+' (address in r0):
10810  mov r1,r1,lsr #24
10811  mov lr,pc
10812  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10813
10814  ldrh r8,[r4],#2 ;@ Fetch next opcode
10815  subs r5,r5,#12 ;@ Subtract cycles
10816  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10817  b CycloneEnd
10818
10819;@ ---------- [1100] move.b d0, -(a0) uses Op1100 ----------
10820Op1100:
10821;@ EaCalc : Get register index into r1:
10822  and r1,r8,#0x000f
10823;@ EaRead : Read register[r1] into r1:
10824  ldrb r1,[r7,r1,lsl #2]
10825
10826  movs r2,r1,lsl #24
10827  and r10,r2,#0x80000000 ;@ r10=N_flag
10828  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10829
10830;@ EaCalc : Get '-(a0)' into r0:
10831  and r2,r8,#0x1e00
10832  ldr r0,[r7,r2,lsr #7]
10833  sub r0,r0,#1 ;@ Pre-decrement An
10834  str r0,[r7,r2,lsr #7]
10835;@ EaWrite: Write r1 into '-(a0)' (address in r0):
10836  mov lr,pc
10837  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10838
10839  ldrh r8,[r4],#2 ;@ Fetch next opcode
10840  subs r5,r5,#8 ;@ Subtract cycles
10841  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10842  b CycloneEnd
10843
10844;@ ---------- [1110] move.b (a0), -(a0) uses Op1110 ----------
10845Op1110:
10846;@ EaCalc : Get '(a0)' into r0:
10847  and r2,r8,#0x000f
10848  orr r2,r2,#0x8 ;@ A0-7
10849  ldr r0,[r7,r2,lsl #2]
10850;@ EaRead : Read '(a0)' (address in r0) into r1:
10851  mov lr,pc
10852  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10853  movs r1,r0,asl #24
10854
10855  and r10,r1,#0x80000000 ;@ r10=N_flag
10856  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10857
10858;@ EaCalc : Get '-(a0)' into r0:
10859  and r2,r8,#0x1e00
10860  ldr r0,[r7,r2,lsr #7]
10861  sub r0,r0,#1 ;@ Pre-decrement An
10862  str r0,[r7,r2,lsr #7]
10863;@ EaWrite: Write r1 into '-(a0)' (address in r0):
10864  mov r1,r1,lsr #24
10865  mov lr,pc
10866  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10867
10868  ldrh r8,[r4],#2 ;@ Fetch next opcode
10869  subs r5,r5,#12 ;@ Subtract cycles
10870  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10871  b CycloneEnd
10872
10873;@ ---------- [1118] move.b (a0)+, -(a0) uses Op1118 ----------
10874Op1118:
10875;@ EaCalc : Get '(a0)+' into r0:
10876  and r2,r8,#0x000f
10877  ldr r0,[r7,r2,lsl #2]
10878  add r3,r0,#1 ;@ Post-increment An
10879  str r3,[r7,r2,lsl #2]
10880;@ EaRead : Read '(a0)+' (address in r0) into r1:
10881  mov lr,pc
10882  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10883  movs r1,r0,asl #24
10884
10885  and r10,r1,#0x80000000 ;@ r10=N_flag
10886  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10887
10888;@ EaCalc : Get '-(a0)' into r0:
10889  and r2,r8,#0x1e00
10890  ldr r0,[r7,r2,lsr #7]
10891  sub r0,r0,#1 ;@ Pre-decrement An
10892  str r0,[r7,r2,lsr #7]
10893;@ EaWrite: Write r1 into '-(a0)' (address in r0):
10894  mov r1,r1,lsr #24
10895  mov lr,pc
10896  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10897
10898  ldrh r8,[r4],#2 ;@ Fetch next opcode
10899  subs r5,r5,#12 ;@ Subtract cycles
10900  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10901  b CycloneEnd
10902
10903;@ ---------- [111f] move.b (a7)+, -(a0) uses Op111f ----------
10904Op111f:
10905;@ EaCalc : Get '(a7)+' into r0:
10906  ldr r0,[r7,#0x3c] ;@ A7
10907  add r3,r0,#2 ;@ Post-increment An
10908  str r3,[r7,#0x3c] ;@ A7
10909;@ EaRead : Read '(a7)+' (address in r0) into r1:
10910  mov lr,pc
10911  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10912  movs r1,r0,asl #24
10913
10914  and r10,r1,#0x80000000 ;@ r10=N_flag
10915  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10916
10917;@ EaCalc : Get '-(a0)' into r0:
10918  and r2,r8,#0x1e00
10919  ldr r0,[r7,r2,lsr #7]
10920  sub r0,r0,#1 ;@ Pre-decrement An
10921  str r0,[r7,r2,lsr #7]
10922;@ EaWrite: Write r1 into '-(a0)' (address in r0):
10923  mov r1,r1,lsr #24
10924  mov lr,pc
10925  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10926
10927  ldrh r8,[r4],#2 ;@ Fetch next opcode
10928  subs r5,r5,#12 ;@ Subtract cycles
10929  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10930  b CycloneEnd
10931
10932;@ ---------- [1120] move.b -(a0), -(a0) uses Op1120 ----------
10933Op1120:
10934;@ EaCalc : Get '-(a0)' into r0:
10935  and r2,r8,#0x000f
10936  orr r2,r2,#0x8 ;@ A0-7
10937  ldr r0,[r7,r2,lsl #2]
10938  sub r0,r0,#1 ;@ Pre-decrement An
10939  str r0,[r7,r2,lsl #2]
10940;@ EaRead : Read '-(a0)' (address in r0) into r1:
10941  mov lr,pc
10942  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10943  movs r1,r0,asl #24
10944
10945  and r10,r1,#0x80000000 ;@ r10=N_flag
10946  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10947
10948;@ EaCalc : Get '-(a0)' into r0:
10949  and r2,r8,#0x1e00
10950  ldr r0,[r7,r2,lsr #7]
10951  sub r0,r0,#1 ;@ Pre-decrement An
10952  str r0,[r7,r2,lsr #7]
10953;@ EaWrite: Write r1 into '-(a0)' (address in r0):
10954  mov r1,r1,lsr #24
10955  mov lr,pc
10956  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10957
10958  ldrh r8,[r4],#2 ;@ Fetch next opcode
10959  subs r5,r5,#14 ;@ Subtract cycles
10960  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10961  b CycloneEnd
10962
10963;@ ---------- [1127] move.b -(a7), -(a0) uses Op1127 ----------
10964Op1127:
10965;@ EaCalc : Get '-(a7)' into r0:
10966  ldr r0,[r7,#0x3c] ;@ A7
10967  sub r0,r0,#2 ;@ Pre-decrement An
10968  str r0,[r7,#0x3c] ;@ A7
10969;@ EaRead : Read '-(a7)' (address in r0) into r1:
10970  mov lr,pc
10971  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
10972  movs r1,r0,asl #24
10973
10974  and r10,r1,#0x80000000 ;@ r10=N_flag
10975  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
10976
10977;@ EaCalc : Get '-(a0)' into r0:
10978  and r2,r8,#0x1e00
10979  ldr r0,[r7,r2,lsr #7]
10980  sub r0,r0,#1 ;@ Pre-decrement An
10981  str r0,[r7,r2,lsr #7]
10982;@ EaWrite: Write r1 into '-(a0)' (address in r0):
10983  mov r1,r1,lsr #24
10984  mov lr,pc
10985  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
10986
10987  ldrh r8,[r4],#2 ;@ Fetch next opcode
10988  subs r5,r5,#14 ;@ Subtract cycles
10989  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
10990  b CycloneEnd
10991
10992;@ ---------- [1128] move.b ($3333,a0), -(a0) uses Op1128 ----------
10993Op1128:
10994;@ EaCalc : Get '($3333,a0)' into r0:
10995  ldrsh r0,[r4],#2 ;@ Fetch offset
10996  and r2,r8,#0x000f
10997  ldr r2,[r7,r2,lsl #2]
10998  add r0,r0,r2 ;@ Add on offset
10999;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
11000  mov lr,pc
11001  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11002  movs r1,r0,asl #24
11003
11004  and r10,r1,#0x80000000 ;@ r10=N_flag
11005  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11006
11007;@ EaCalc : Get '-(a0)' into r0:
11008  and r2,r8,#0x1e00
11009  ldr r0,[r7,r2,lsr #7]
11010  sub r0,r0,#1 ;@ Pre-decrement An
11011  str r0,[r7,r2,lsr #7]
11012;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11013  mov r1,r1,lsr #24
11014  mov lr,pc
11015  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11016
11017  ldrh r8,[r4],#2 ;@ Fetch next opcode
11018  subs r5,r5,#16 ;@ Subtract cycles
11019  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11020  b CycloneEnd
11021
11022;@ ---------- [1130] move.b ($33,a0,d3.w*2), -(a0) uses Op1130 ----------
11023Op1130:
11024;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11025;@ Get extension word into r3:
11026  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11027  mov r2,r3,lsr #10
11028  tst r3,#0x0800 ;@ Is Rn Word or Long
11029  and r2,r2,#0x3c ;@ r2=Index of Rn
11030  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11031  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11032  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11033  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11034  and r2,r8,#0x000f
11035  orr r2,r2,#0x8 ;@ A0-7
11036  ldr r2,[r7,r2,lsl #2]
11037  add r0,r2,r3 ;@ r0=Disp+An+Rn
11038;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
11039  mov lr,pc
11040  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11041  movs r1,r0,asl #24
11042
11043  and r10,r1,#0x80000000 ;@ r10=N_flag
11044  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11045
11046;@ EaCalc : Get '-(a0)' into r0:
11047  and r2,r8,#0x1e00
11048  ldr r0,[r7,r2,lsr #7]
11049  sub r0,r0,#1 ;@ Pre-decrement An
11050  str r0,[r7,r2,lsr #7]
11051;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11052  mov r1,r1,lsr #24
11053  mov lr,pc
11054  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11055
11056  ldrh r8,[r4],#2 ;@ Fetch next opcode
11057  subs r5,r5,#18 ;@ Subtract cycles
11058  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11059  b CycloneEnd
11060
11061;@ ---------- [1138] move.b $3333.w, -(a0) uses Op1138 ----------
11062Op1138:
11063;@ EaCalc : Get '$3333.w' into r0:
11064  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
11065;@ EaRead : Read '$3333.w' (address in r0) into r1:
11066  mov lr,pc
11067  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11068  movs r1,r0,asl #24
11069
11070  and r10,r1,#0x80000000 ;@ r10=N_flag
11071  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11072
11073;@ EaCalc : Get '-(a0)' into r0:
11074  and r2,r8,#0x1e00
11075  ldr r0,[r7,r2,lsr #7]
11076  sub r0,r0,#1 ;@ Pre-decrement An
11077  str r0,[r7,r2,lsr #7]
11078;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11079  mov r1,r1,lsr #24
11080  mov lr,pc
11081  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11082
11083  ldrh r8,[r4],#2 ;@ Fetch next opcode
11084  subs r5,r5,#16 ;@ Subtract cycles
11085  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11086  b CycloneEnd
11087
11088;@ ---------- [1139] move.b $33333333.l, -(a0) uses Op1139 ----------
11089Op1139:
11090;@ EaCalc : Get '$33333333.l' into r0:
11091  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
11092  ldrh r0,[r4],#2
11093  orr r0,r0,r2,lsl #16
11094;@ EaRead : Read '$33333333.l' (address in r0) into r1:
11095  mov lr,pc
11096  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11097  movs r1,r0,asl #24
11098
11099  and r10,r1,#0x80000000 ;@ r10=N_flag
11100  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11101
11102;@ EaCalc : Get '-(a0)' into r0:
11103  and r2,r8,#0x1e00
11104  ldr r0,[r7,r2,lsr #7]
11105  sub r0,r0,#1 ;@ Pre-decrement An
11106  str r0,[r7,r2,lsr #7]
11107;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11108  mov r1,r1,lsr #24
11109  mov lr,pc
11110  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11111
11112  ldrh r8,[r4],#2 ;@ Fetch next opcode
11113  subs r5,r5,#20 ;@ Subtract cycles
11114  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11115  b CycloneEnd
11116
11117;@ ---------- [113a] move.b ($3333,pc), -(a0); =3335 uses Op113a ----------
11118Op113a:
11119;@ EaCalc : Get '($3333,pc)' into r0:
11120  ldr r0,[r7,#0x60] ;@ Get Memory base
11121  sub r0,r4,r0 ;@ Real PC
11122  ldrsh r2,[r4],#2 ;@ Fetch extension
11123  add r0,r2,r0 ;@ ($nn,PC)
11124;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
11125  mov lr,pc
11126  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
11127  movs r1,r0,asl #24
11128
11129  and r10,r1,#0x80000000 ;@ r10=N_flag
11130  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11131
11132;@ EaCalc : Get '-(a0)' into r0:
11133  and r2,r8,#0x1e00
11134  ldr r0,[r7,r2,lsr #7]
11135  sub r0,r0,#1 ;@ Pre-decrement An
11136  str r0,[r7,r2,lsr #7]
11137;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11138  mov r1,r1,lsr #24
11139  mov lr,pc
11140  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11141
11142  ldrh r8,[r4],#2 ;@ Fetch next opcode
11143  subs r5,r5,#16 ;@ Subtract cycles
11144  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11145  b CycloneEnd
11146
11147;@ ---------- [113b] move.b ($33,pc,d3.w*2), -(a0); =35 uses Op113b ----------
11148Op113b:
11149;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
11150  ldr r0,[r7,#0x60] ;@ Get Memory base
11151  ldrh r3,[r4] ;@ Get extension word
11152  sub r0,r4,r0 ;@ r0=PC
11153  add r4,r4,#2
11154  mov r2,r3,lsr #10
11155  tst r3,#0x0800 ;@ Is Rn Word or Long
11156  and r2,r2,#0x3c ;@ r2=Index of Rn
11157  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11158  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11159  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
11160  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
11161  add r0,r2,r0 ;@ r0=Disp+PC+Rn
11162;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
11163  mov lr,pc
11164  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
11165  movs r1,r0,asl #24
11166
11167  and r10,r1,#0x80000000 ;@ r10=N_flag
11168  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11169
11170;@ EaCalc : Get '-(a0)' into r0:
11171  and r2,r8,#0x1e00
11172  ldr r0,[r7,r2,lsr #7]
11173  sub r0,r0,#1 ;@ Pre-decrement An
11174  str r0,[r7,r2,lsr #7]
11175;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11176  mov r1,r1,lsr #24
11177  mov lr,pc
11178  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11179
11180  ldrh r8,[r4],#2 ;@ Fetch next opcode
11181  subs r5,r5,#18 ;@ Subtract cycles
11182  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11183  b CycloneEnd
11184
11185;@ ---------- [113c] move.b #$33, -(a0) uses Op113c ----------
11186Op113c:
11187;@ EaCalc : Get '#$33' into r1:
11188  ldrsb r1,[r4],#2 ;@ Fetch immediate value
11189;@ EaRead : Read '#$33' (address in r1) into r1:
11190  movs r1,r1,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  sub r0,r0,#1 ;@ Pre-decrement An
11199  str r0,[r7,r2,lsr #7]
11200;@ EaWrite: Write r1 into '-(a0)' (address in r0):
11201  mov r1,r1,lsr #24
11202  mov lr,pc
11203  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11204
11205  ldrh r8,[r4],#2 ;@ Fetch next opcode
11206  subs r5,r5,#12 ;@ Subtract cycles
11207  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11208  b CycloneEnd
11209
11210;@ ---------- [1140] move.b d0, ($3333,a0) uses Op1140 ----------
11211Op1140:
11212;@ EaCalc : Get register index into r1:
11213  and r1,r8,#0x000f
11214;@ EaRead : Read register[r1] into r1:
11215  ldrb r1,[r7,r1,lsl #2]
11216
11217  movs r2,r1,lsl #24
11218  and r10,r2,#0x80000000 ;@ r10=N_flag
11219  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11220
11221;@ EaCalc : Get '($3333,a0)' into r0:
11222  ldrsh r0,[r4],#2 ;@ Fetch offset
11223  and r2,r8,#0x1e00
11224  mov r2,r2,lsr #9
11225  ldr r2,[r7,r2,lsl #2]
11226  add r0,r0,r2 ;@ Add on offset
11227;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11228  mov lr,pc
11229  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11230
11231  ldrh r8,[r4],#2 ;@ Fetch next opcode
11232  subs r5,r5,#12 ;@ Subtract cycles
11233  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11234  b CycloneEnd
11235
11236;@ ---------- [1150] move.b (a0), ($3333,a0) uses Op1150 ----------
11237Op1150:
11238;@ EaCalc : Get '(a0)' into r0:
11239  and r2,r8,#0x000f
11240  orr r2,r2,#0x8 ;@ A0-7
11241  ldr r0,[r7,r2,lsl #2]
11242;@ EaRead : Read '(a0)' (address in r0) into r1:
11243  mov lr,pc
11244  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11245  movs r1,r0,asl #24
11246
11247  and r10,r1,#0x80000000 ;@ r10=N_flag
11248  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11249
11250;@ EaCalc : Get '($3333,a0)' into r0:
11251  ldrsh r0,[r4],#2 ;@ Fetch offset
11252  and r2,r8,#0x1e00
11253  mov r2,r2,lsr #9
11254  ldr r2,[r7,r2,lsl #2]
11255  add r0,r0,r2 ;@ Add on offset
11256;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11257  mov r1,r1,lsr #24
11258  mov lr,pc
11259  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11260
11261  ldrh r8,[r4],#2 ;@ Fetch next opcode
11262  subs r5,r5,#16 ;@ Subtract cycles
11263  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11264  b CycloneEnd
11265
11266;@ ---------- [1158] move.b (a0)+, ($3333,a0) uses Op1158 ----------
11267Op1158:
11268;@ EaCalc : Get '(a0)+' into r0:
11269  and r2,r8,#0x000f
11270  ldr r0,[r7,r2,lsl #2]
11271  add r3,r0,#1 ;@ Post-increment An
11272  str r3,[r7,r2,lsl #2]
11273;@ EaRead : Read '(a0)+' (address in r0) into r1:
11274  mov lr,pc
11275  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11276  movs r1,r0,asl #24
11277
11278  and r10,r1,#0x80000000 ;@ r10=N_flag
11279  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11280
11281;@ EaCalc : Get '($3333,a0)' into r0:
11282  ldrsh r0,[r4],#2 ;@ Fetch offset
11283  and r2,r8,#0x1e00
11284  mov r2,r2,lsr #9
11285  ldr r2,[r7,r2,lsl #2]
11286  add r0,r0,r2 ;@ Add on offset
11287;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11288  mov r1,r1,lsr #24
11289  mov lr,pc
11290  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11291
11292  ldrh r8,[r4],#2 ;@ Fetch next opcode
11293  subs r5,r5,#16 ;@ Subtract cycles
11294  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11295  b CycloneEnd
11296
11297;@ ---------- [115f] move.b (a7)+, ($3333,a0) uses Op115f ----------
11298Op115f:
11299;@ EaCalc : Get '(a7)+' into r0:
11300  ldr r0,[r7,#0x3c] ;@ A7
11301  add r3,r0,#2 ;@ Post-increment An
11302  str r3,[r7,#0x3c] ;@ A7
11303;@ EaRead : Read '(a7)+' (address in r0) into r1:
11304  mov lr,pc
11305  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11306  movs r1,r0,asl #24
11307
11308  and r10,r1,#0x80000000 ;@ r10=N_flag
11309  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11310
11311;@ EaCalc : Get '($3333,a0)' into r0:
11312  ldrsh r0,[r4],#2 ;@ Fetch offset
11313  and r2,r8,#0x1e00
11314  mov r2,r2,lsr #9
11315  ldr r2,[r7,r2,lsl #2]
11316  add r0,r0,r2 ;@ Add on offset
11317;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11318  mov r1,r1,lsr #24
11319  mov lr,pc
11320  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11321
11322  ldrh r8,[r4],#2 ;@ Fetch next opcode
11323  subs r5,r5,#16 ;@ Subtract cycles
11324  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11325  b CycloneEnd
11326
11327;@ ---------- [1160] move.b -(a0), ($3333,a0) uses Op1160 ----------
11328Op1160:
11329;@ EaCalc : Get '-(a0)' into r0:
11330  and r2,r8,#0x000f
11331  orr r2,r2,#0x8 ;@ A0-7
11332  ldr r0,[r7,r2,lsl #2]
11333  sub r0,r0,#1 ;@ Pre-decrement An
11334  str r0,[r7,r2,lsl #2]
11335;@ EaRead : Read '-(a0)' (address in r0) into r1:
11336  mov lr,pc
11337  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11338  movs r1,r0,asl #24
11339
11340  and r10,r1,#0x80000000 ;@ r10=N_flag
11341  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11342
11343;@ EaCalc : Get '($3333,a0)' into r0:
11344  ldrsh r0,[r4],#2 ;@ Fetch offset
11345  and r2,r8,#0x1e00
11346  mov r2,r2,lsr #9
11347  ldr r2,[r7,r2,lsl #2]
11348  add r0,r0,r2 ;@ Add on offset
11349;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11350  mov r1,r1,lsr #24
11351  mov lr,pc
11352  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11353
11354  ldrh r8,[r4],#2 ;@ Fetch next opcode
11355  subs r5,r5,#18 ;@ Subtract cycles
11356  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11357  b CycloneEnd
11358
11359;@ ---------- [1167] move.b -(a7), ($3333,a0) uses Op1167 ----------
11360Op1167:
11361;@ EaCalc : Get '-(a7)' into r0:
11362  ldr r0,[r7,#0x3c] ;@ A7
11363  sub r0,r0,#2 ;@ Pre-decrement An
11364  str r0,[r7,#0x3c] ;@ A7
11365;@ EaRead : Read '-(a7)' (address in r0) into r1:
11366  mov lr,pc
11367  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11368  movs r1,r0,asl #24
11369
11370  and r10,r1,#0x80000000 ;@ r10=N_flag
11371  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11372
11373;@ EaCalc : Get '($3333,a0)' into r0:
11374  ldrsh r0,[r4],#2 ;@ Fetch offset
11375  and r2,r8,#0x1e00
11376  mov r2,r2,lsr #9
11377  ldr r2,[r7,r2,lsl #2]
11378  add r0,r0,r2 ;@ Add on offset
11379;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11380  mov r1,r1,lsr #24
11381  mov lr,pc
11382  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11383
11384  ldrh r8,[r4],#2 ;@ Fetch next opcode
11385  subs r5,r5,#18 ;@ Subtract cycles
11386  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11387  b CycloneEnd
11388
11389;@ ---------- [1168] move.b ($3333,a0), ($3333,a0) uses Op1168 ----------
11390Op1168:
11391;@ EaCalc : Get '($3333,a0)' into r0:
11392  ldrsh r0,[r4],#2 ;@ Fetch offset
11393  and r2,r8,#0x000f
11394  ldr r2,[r7,r2,lsl #2]
11395  add r0,r0,r2 ;@ Add on offset
11396;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
11397  mov lr,pc
11398  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11399  movs r1,r0,asl #24
11400
11401  and r10,r1,#0x80000000 ;@ r10=N_flag
11402  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11403
11404;@ EaCalc : Get '($3333,a0)' into r0:
11405  ldrsh r0,[r4],#2 ;@ Fetch offset
11406  and r2,r8,#0x1e00
11407  mov r2,r2,lsr #9
11408  ldr r2,[r7,r2,lsl #2]
11409  add r0,r0,r2 ;@ Add on offset
11410;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11411  mov r1,r1,lsr #24
11412  mov lr,pc
11413  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11414
11415  ldrh r8,[r4],#2 ;@ Fetch next opcode
11416  subs r5,r5,#20 ;@ Subtract cycles
11417  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11418  b CycloneEnd
11419
11420;@ ---------- [1170] move.b ($33,a0,d3.w*2), ($3333,a0) uses Op1170 ----------
11421Op1170:
11422;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11423;@ Get extension word into r3:
11424  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11425  mov r2,r3,lsr #10
11426  tst r3,#0x0800 ;@ Is Rn Word or Long
11427  and r2,r2,#0x3c ;@ r2=Index of Rn
11428  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11429  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11430  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11431  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11432  and r2,r8,#0x000f
11433  orr r2,r2,#0x8 ;@ A0-7
11434  ldr r2,[r7,r2,lsl #2]
11435  add r0,r2,r3 ;@ r0=Disp+An+Rn
11436;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
11437  mov lr,pc
11438  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11439  movs r1,r0,asl #24
11440
11441  and r10,r1,#0x80000000 ;@ r10=N_flag
11442  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11443
11444;@ EaCalc : Get '($3333,a0)' into r0:
11445  ldrsh r0,[r4],#2 ;@ Fetch offset
11446  and r2,r8,#0x1e00
11447  mov r2,r2,lsr #9
11448  ldr r2,[r7,r2,lsl #2]
11449  add r0,r0,r2 ;@ Add on offset
11450;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11451  mov r1,r1,lsr #24
11452  mov lr,pc
11453  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11454
11455  ldrh r8,[r4],#2 ;@ Fetch next opcode
11456  subs r5,r5,#22 ;@ Subtract cycles
11457  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11458  b CycloneEnd
11459
11460;@ ---------- [1178] move.b $3333.w, ($3333,a0) uses Op1178 ----------
11461Op1178:
11462;@ EaCalc : Get '$3333.w' into r0:
11463  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
11464;@ EaRead : Read '$3333.w' (address in r0) into r1:
11465  mov lr,pc
11466  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11467  movs r1,r0,asl #24
11468
11469  and r10,r1,#0x80000000 ;@ r10=N_flag
11470  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11471
11472;@ EaCalc : Get '($3333,a0)' into r0:
11473  ldrsh r0,[r4],#2 ;@ Fetch offset
11474  and r2,r8,#0x1e00
11475  mov r2,r2,lsr #9
11476  ldr r2,[r7,r2,lsl #2]
11477  add r0,r0,r2 ;@ Add on offset
11478;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11479  mov r1,r1,lsr #24
11480  mov lr,pc
11481  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11482
11483  ldrh r8,[r4],#2 ;@ Fetch next opcode
11484  subs r5,r5,#20 ;@ Subtract cycles
11485  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11486  b CycloneEnd
11487
11488;@ ---------- [1179] move.b $33333333.l, ($3333,a0) uses Op1179 ----------
11489Op1179:
11490;@ EaCalc : Get '$33333333.l' into r0:
11491  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
11492  ldrh r0,[r4],#2
11493  orr r0,r0,r2,lsl #16
11494;@ EaRead : Read '$33333333.l' (address in r0) into r1:
11495  mov lr,pc
11496  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11497  movs r1,r0,asl #24
11498
11499  and r10,r1,#0x80000000 ;@ r10=N_flag
11500  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11501
11502;@ EaCalc : Get '($3333,a0)' into r0:
11503  ldrsh r0,[r4],#2 ;@ Fetch offset
11504  and r2,r8,#0x1e00
11505  mov r2,r2,lsr #9
11506  ldr r2,[r7,r2,lsl #2]
11507  add r0,r0,r2 ;@ Add on offset
11508;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11509  mov r1,r1,lsr #24
11510  mov lr,pc
11511  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11512
11513  ldrh r8,[r4],#2 ;@ Fetch next opcode
11514  subs r5,r5,#24 ;@ Subtract cycles
11515  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11516  b CycloneEnd
11517
11518;@ ---------- [117a] move.b ($3333,pc), ($3333,a0); =3335 uses Op117a ----------
11519Op117a:
11520;@ EaCalc : Get '($3333,pc)' into r0:
11521  ldr r0,[r7,#0x60] ;@ Get Memory base
11522  sub r0,r4,r0 ;@ Real PC
11523  ldrsh r2,[r4],#2 ;@ Fetch extension
11524  add r0,r2,r0 ;@ ($nn,PC)
11525;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
11526  mov lr,pc
11527  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
11528  movs r1,r0,asl #24
11529
11530  and r10,r1,#0x80000000 ;@ r10=N_flag
11531  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11532
11533;@ EaCalc : Get '($3333,a0)' into r0:
11534  ldrsh r0,[r4],#2 ;@ Fetch offset
11535  and r2,r8,#0x1e00
11536  mov r2,r2,lsr #9
11537  ldr r2,[r7,r2,lsl #2]
11538  add r0,r0,r2 ;@ Add on offset
11539;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11540  mov r1,r1,lsr #24
11541  mov lr,pc
11542  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11543
11544  ldrh r8,[r4],#2 ;@ Fetch next opcode
11545  subs r5,r5,#20 ;@ Subtract cycles
11546  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11547  b CycloneEnd
11548
11549;@ ---------- [117b] move.b ($33,pc,d3.w*2), ($3333,a0); =35 uses Op117b ----------
11550Op117b:
11551;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
11552  ldr r0,[r7,#0x60] ;@ Get Memory base
11553  ldrh r3,[r4] ;@ Get extension word
11554  sub r0,r4,r0 ;@ r0=PC
11555  add r4,r4,#2
11556  mov r2,r3,lsr #10
11557  tst r3,#0x0800 ;@ Is Rn Word or Long
11558  and r2,r2,#0x3c ;@ r2=Index of Rn
11559  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11560  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11561  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
11562  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
11563  add r0,r2,r0 ;@ r0=Disp+PC+Rn
11564;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
11565  mov lr,pc
11566  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
11567  movs r1,r0,asl #24
11568
11569  and r10,r1,#0x80000000 ;@ r10=N_flag
11570  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11571
11572;@ EaCalc : Get '($3333,a0)' into r0:
11573  ldrsh r0,[r4],#2 ;@ Fetch offset
11574  and r2,r8,#0x1e00
11575  mov r2,r2,lsr #9
11576  ldr r2,[r7,r2,lsl #2]
11577  add r0,r0,r2 ;@ Add on offset
11578;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11579  mov r1,r1,lsr #24
11580  mov lr,pc
11581  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11582
11583  ldrh r8,[r4],#2 ;@ Fetch next opcode
11584  subs r5,r5,#22 ;@ Subtract cycles
11585  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11586  b CycloneEnd
11587
11588;@ ---------- [117c] move.b #$33, ($3333,a0) uses Op117c ----------
11589Op117c:
11590;@ EaCalc : Get '#$33' into r1:
11591  ldrsb r1,[r4],#2 ;@ Fetch immediate value
11592;@ EaRead : Read '#$33' (address in r1) into r1:
11593  movs r1,r1,asl #24
11594
11595  and r10,r1,#0x80000000 ;@ r10=N_flag
11596  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11597
11598;@ EaCalc : Get '($3333,a0)' into r0:
11599  ldrsh r0,[r4],#2 ;@ Fetch offset
11600  and r2,r8,#0x1e00
11601  mov r2,r2,lsr #9
11602  ldr r2,[r7,r2,lsl #2]
11603  add r0,r0,r2 ;@ Add on offset
11604;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
11605  mov r1,r1,lsr #24
11606  mov lr,pc
11607  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11608
11609  ldrh r8,[r4],#2 ;@ Fetch next opcode
11610  subs r5,r5,#16 ;@ Subtract cycles
11611  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11612  b CycloneEnd
11613
11614;@ ---------- [1180] move.b d0, ($33,a0,d3.w*2) uses Op1180 ----------
11615Op1180:
11616;@ EaCalc : Get register index into r1:
11617  and r1,r8,#0x000f
11618;@ EaRead : Read register[r1] into r1:
11619  ldrb r1,[r7,r1,lsl #2]
11620
11621  movs r2,r1,lsl #24
11622  and r10,r2,#0x80000000 ;@ r10=N_flag
11623  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11624
11625;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11626;@ Get extension word into r3:
11627  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11628  mov r2,r3,lsr #10
11629  tst r3,#0x0800 ;@ Is Rn Word or Long
11630  and r2,r2,#0x3c ;@ r2=Index of Rn
11631  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11632  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11633  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11634  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11635  and r2,r8,#0x1e00
11636  orr r2,r2,#0x1000 ;@ A0-7
11637  mov r2,r2,lsr #9
11638  ldr r2,[r7,r2,lsl #2]
11639  add r0,r2,r3 ;@ r0=Disp+An+Rn
11640;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
11641  mov lr,pc
11642  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11643
11644  ldrh r8,[r4],#2 ;@ Fetch next opcode
11645  subs r5,r5,#14 ;@ Subtract cycles
11646  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11647  b CycloneEnd
11648
11649;@ ---------- [1190] move.b (a0), ($33,a0,d3.w*2) uses Op1190 ----------
11650Op1190:
11651;@ EaCalc : Get '(a0)' into r0:
11652  and r2,r8,#0x000f
11653  orr r2,r2,#0x8 ;@ A0-7
11654  ldr r0,[r7,r2,lsl #2]
11655;@ EaRead : Read '(a0)' (address in r0) into r1:
11656  mov lr,pc
11657  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11658  movs r1,r0,asl #24
11659
11660  and r10,r1,#0x80000000 ;@ r10=N_flag
11661  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11662
11663;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11664;@ Get extension word into r3:
11665  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11666  mov r2,r3,lsr #10
11667  tst r3,#0x0800 ;@ Is Rn Word or Long
11668  and r2,r2,#0x3c ;@ r2=Index of Rn
11669  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11670  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11671  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11672  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11673  and r2,r8,#0x1e00
11674  orr r2,r2,#0x1000 ;@ A0-7
11675  mov r2,r2,lsr #9
11676  ldr r2,[r7,r2,lsl #2]
11677  add r0,r2,r3 ;@ r0=Disp+An+Rn
11678;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
11679  mov r1,r1,lsr #24
11680  mov lr,pc
11681  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11682
11683  ldrh r8,[r4],#2 ;@ Fetch next opcode
11684  subs r5,r5,#18 ;@ Subtract cycles
11685  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11686  b CycloneEnd
11687
11688;@ ---------- [119f] move.b (a7)+, ($33,a0,d3.w*2) uses Op119f ----------
11689Op119f:
11690;@ EaCalc : Get '(a7)+' into r0:
11691  ldr r0,[r7,#0x3c] ;@ A7
11692  add r3,r0,#2 ;@ Post-increment An
11693  str r3,[r7,#0x3c] ;@ A7
11694;@ EaRead : Read '(a7)+' (address in r0) into r1:
11695  mov lr,pc
11696  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11697  movs r1,r0,asl #24
11698
11699  and r10,r1,#0x80000000 ;@ r10=N_flag
11700  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11701
11702;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11703;@ Get extension word into r3:
11704  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11705  mov r2,r3,lsr #10
11706  tst r3,#0x0800 ;@ Is Rn Word or Long
11707  and r2,r2,#0x3c ;@ r2=Index of Rn
11708  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11709  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11710  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11711  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11712  and r2,r8,#0x1e00
11713  orr r2,r2,#0x1000 ;@ A0-7
11714  mov r2,r2,lsr #9
11715  ldr r2,[r7,r2,lsl #2]
11716  add r0,r2,r3 ;@ r0=Disp+An+Rn
11717;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
11718  mov r1,r1,lsr #24
11719  mov lr,pc
11720  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11721
11722  ldrh r8,[r4],#2 ;@ Fetch next opcode
11723  subs r5,r5,#18 ;@ Subtract cycles
11724  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11725  b CycloneEnd
11726
11727;@ ---------- [11a0] move.b -(a0), ($33,a0,d3.w*2) uses Op11a0 ----------
11728Op11a0:
11729;@ EaCalc : Get '-(a0)' into r0:
11730  and r2,r8,#0x000f
11731  orr r2,r2,#0x8 ;@ A0-7
11732  ldr r0,[r7,r2,lsl #2]
11733  sub r0,r0,#1 ;@ Pre-decrement An
11734  str r0,[r7,r2,lsl #2]
11735;@ EaRead : Read '-(a0)' (address in r0) into r1:
11736  mov lr,pc
11737  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11738  movs r1,r0,asl #24
11739
11740  and r10,r1,#0x80000000 ;@ r10=N_flag
11741  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11742
11743;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11744;@ Get extension word into r3:
11745  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11746  mov r2,r3,lsr #10
11747  tst r3,#0x0800 ;@ Is Rn Word or Long
11748  and r2,r2,#0x3c ;@ r2=Index of Rn
11749  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11750  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11751  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11752  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11753  and r2,r8,#0x1e00
11754  orr r2,r2,#0x1000 ;@ A0-7
11755  mov r2,r2,lsr #9
11756  ldr r2,[r7,r2,lsl #2]
11757  add r0,r2,r3 ;@ r0=Disp+An+Rn
11758;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
11759  mov r1,r1,lsr #24
11760  mov lr,pc
11761  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11762
11763  ldrh r8,[r4],#2 ;@ Fetch next opcode
11764  subs r5,r5,#20 ;@ Subtract cycles
11765  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11766  b CycloneEnd
11767
11768;@ ---------- [11a7] move.b -(a7), ($33,a0,d3.w*2) uses Op11a7 ----------
11769Op11a7:
11770;@ EaCalc : Get '-(a7)' into r0:
11771  ldr r0,[r7,#0x3c] ;@ A7
11772  sub r0,r0,#2 ;@ Pre-decrement An
11773  str r0,[r7,#0x3c] ;@ A7
11774;@ EaRead : Read '-(a7)' (address in r0) into r1:
11775  mov lr,pc
11776  ldr pc,[r7,#0x68] ;@ Call read8(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 '($33,a0,d3.w*2)' into r0:
11783;@ Get extension word into r3:
11784  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11785  mov r2,r3,lsr #10
11786  tst r3,#0x0800 ;@ Is Rn Word or Long
11787  and r2,r2,#0x3c ;@ r2=Index of Rn
11788  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11789  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11790  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11791  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11792  and r2,r8,#0x1e00
11793  orr r2,r2,#0x1000 ;@ A0-7
11794  mov r2,r2,lsr #9
11795  ldr r2,[r7,r2,lsl #2]
11796  add r0,r2,r3 ;@ r0=Disp+An+Rn
11797;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
11798  mov r1,r1,lsr #24
11799  mov lr,pc
11800  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11801
11802  ldrh r8,[r4],#2 ;@ Fetch next opcode
11803  subs r5,r5,#20 ;@ Subtract cycles
11804  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11805  b CycloneEnd
11806
11807;@ ---------- [11a8] move.b ($3333,a0), ($33,a0,d3.w*2) uses Op11a8 ----------
11808Op11a8:
11809;@ EaCalc : Get '($3333,a0)' into r0:
11810  ldrsh r0,[r4],#2 ;@ Fetch offset
11811  and r2,r8,#0x000f
11812  ldr r2,[r7,r2,lsl #2]
11813  add r0,r0,r2 ;@ Add on offset
11814;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
11815  mov lr,pc
11816  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11817  movs r1,r0,asl #24
11818
11819  and r10,r1,#0x80000000 ;@ r10=N_flag
11820  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11821
11822;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11823;@ Get extension word into r3:
11824  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11825  mov r2,r3,lsr #10
11826  tst r3,#0x0800 ;@ Is Rn Word or Long
11827  and r2,r2,#0x3c ;@ r2=Index of Rn
11828  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11829  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11830  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11831  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11832  and r2,r8,#0x1e00
11833  orr r2,r2,#0x1000 ;@ A0-7
11834  mov r2,r2,lsr #9
11835  ldr r2,[r7,r2,lsl #2]
11836  add r0,r2,r3 ;@ r0=Disp+An+Rn
11837;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
11838  mov r1,r1,lsr #24
11839  mov lr,pc
11840  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11841
11842  ldrh r8,[r4],#2 ;@ Fetch next opcode
11843  subs r5,r5,#22 ;@ Subtract cycles
11844  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11845  b CycloneEnd
11846
11847;@ ---------- [11b0] move.b ($33,a0,d3.w*2), ($33,a0,d3.w*2) uses Op11b0 ----------
11848Op11b0:
11849;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11850;@ Get extension word into r3:
11851  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11852  mov r2,r3,lsr #10
11853  tst r3,#0x0800 ;@ Is Rn Word or Long
11854  and r2,r2,#0x3c ;@ r2=Index of Rn
11855  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11856  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11857  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11858  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11859  and r2,r8,#0x000f
11860  orr r2,r2,#0x8 ;@ A0-7
11861  ldr r2,[r7,r2,lsl #2]
11862  add r0,r2,r3 ;@ r0=Disp+An+Rn
11863;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
11864  mov lr,pc
11865  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11866  movs r1,r0,asl #24
11867
11868  and r10,r1,#0x80000000 ;@ r10=N_flag
11869  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11870
11871;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11872;@ Get extension word into r3:
11873  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11874  mov r2,r3,lsr #10
11875  tst r3,#0x0800 ;@ Is Rn Word or Long
11876  and r2,r2,#0x3c ;@ r2=Index of Rn
11877  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11878  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11879  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11880  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11881  and r2,r8,#0x1e00
11882  orr r2,r2,#0x1000 ;@ A0-7
11883  mov r2,r2,lsr #9
11884  ldr r2,[r7,r2,lsl #2]
11885  add r0,r2,r3 ;@ r0=Disp+An+Rn
11886;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
11887  mov r1,r1,lsr #24
11888  mov lr,pc
11889  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11890
11891  ldrh r8,[r4],#2 ;@ Fetch next opcode
11892  subs r5,r5,#24 ;@ Subtract cycles
11893  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11894  b CycloneEnd
11895
11896;@ ---------- [11b8] move.b $3333.w, ($33,a0,d3.w*2) uses Op11b8 ----------
11897Op11b8:
11898;@ EaCalc : Get '$3333.w' into r0:
11899  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
11900;@ EaRead : Read '$3333.w' (address in r0) into r1:
11901  mov lr,pc
11902  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11903  movs r1,r0,asl #24
11904
11905  and r10,r1,#0x80000000 ;@ r10=N_flag
11906  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11907
11908;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11909;@ Get extension word into r3:
11910  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11911  mov r2,r3,lsr #10
11912  tst r3,#0x0800 ;@ Is Rn Word or Long
11913  and r2,r2,#0x3c ;@ r2=Index of Rn
11914  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11915  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11916  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11917  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11918  and r2,r8,#0x1e00
11919  orr r2,r2,#0x1000 ;@ A0-7
11920  mov r2,r2,lsr #9
11921  ldr r2,[r7,r2,lsl #2]
11922  add r0,r2,r3 ;@ r0=Disp+An+Rn
11923;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
11924  mov r1,r1,lsr #24
11925  mov lr,pc
11926  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11927
11928  ldrh r8,[r4],#2 ;@ Fetch next opcode
11929  subs r5,r5,#22 ;@ Subtract cycles
11930  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11931  b CycloneEnd
11932
11933;@ ---------- [11b9] move.b $33333333.l, ($33,a0,d3.w*2) uses Op11b9 ----------
11934Op11b9:
11935;@ EaCalc : Get '$33333333.l' into r0:
11936  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
11937  ldrh r0,[r4],#2
11938  orr r0,r0,r2,lsl #16
11939;@ EaRead : Read '$33333333.l' (address in r0) into r1:
11940  mov lr,pc
11941  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
11942  movs r1,r0,asl #24
11943
11944  and r10,r1,#0x80000000 ;@ r10=N_flag
11945  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11946
11947;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11948;@ Get extension word into r3:
11949  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11950  mov r2,r3,lsr #10
11951  tst r3,#0x0800 ;@ Is Rn Word or Long
11952  and r2,r2,#0x3c ;@ r2=Index of Rn
11953  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11954  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11955  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11956  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11957  and r2,r8,#0x1e00
11958  orr r2,r2,#0x1000 ;@ A0-7
11959  mov r2,r2,lsr #9
11960  ldr r2,[r7,r2,lsl #2]
11961  add r0,r2,r3 ;@ r0=Disp+An+Rn
11962;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
11963  mov r1,r1,lsr #24
11964  mov lr,pc
11965  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
11966
11967  ldrh r8,[r4],#2 ;@ Fetch next opcode
11968  subs r5,r5,#26 ;@ Subtract cycles
11969  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
11970  b CycloneEnd
11971
11972;@ ---------- [11ba] move.b ($3333,pc), ($33,a0,d3.w*2); =3335 uses Op11ba ----------
11973Op11ba:
11974;@ EaCalc : Get '($3333,pc)' into r0:
11975  ldr r0,[r7,#0x60] ;@ Get Memory base
11976  sub r0,r4,r0 ;@ Real PC
11977  ldrsh r2,[r4],#2 ;@ Fetch extension
11978  add r0,r2,r0 ;@ ($nn,PC)
11979;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
11980  mov lr,pc
11981  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
11982  movs r1,r0,asl #24
11983
11984  and r10,r1,#0x80000000 ;@ r10=N_flag
11985  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
11986
11987;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
11988;@ Get extension word into r3:
11989  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
11990  mov r2,r3,lsr #10
11991  tst r3,#0x0800 ;@ Is Rn Word or Long
11992  and r2,r2,#0x3c ;@ r2=Index of Rn
11993  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
11994  ldrne   r2,[r7,r2] ;@ r2=Rn.l
11995  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
11996  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
11997  and r2,r8,#0x1e00
11998  orr r2,r2,#0x1000 ;@ A0-7
11999  mov r2,r2,lsr #9
12000  ldr r2,[r7,r2,lsl #2]
12001  add r0,r2,r3 ;@ r0=Disp+An+Rn
12002;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
12003  mov r1,r1,lsr #24
12004  mov lr,pc
12005  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12006
12007  ldrh r8,[r4],#2 ;@ Fetch next opcode
12008  subs r5,r5,#22 ;@ Subtract cycles
12009  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12010  b CycloneEnd
12011
12012;@ ---------- [11bb] move.b ($33,pc,d3.w*2), ($33,a0,d3.w*2); =35 uses Op11bb ----------
12013Op11bb:
12014;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
12015  ldr r0,[r7,#0x60] ;@ Get Memory base
12016  ldrh r3,[r4] ;@ Get extension word
12017  sub r0,r4,r0 ;@ r0=PC
12018  add r4,r4,#2
12019  mov r2,r3,lsr #10
12020  tst r3,#0x0800 ;@ Is Rn Word or Long
12021  and r2,r2,#0x3c ;@ r2=Index of Rn
12022  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12023  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12024  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
12025  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
12026  add r0,r2,r0 ;@ r0=Disp+PC+Rn
12027;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
12028  mov lr,pc
12029  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
12030  movs r1,r0,asl #24
12031
12032  and r10,r1,#0x80000000 ;@ r10=N_flag
12033  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12034
12035;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
12036;@ Get extension word into r3:
12037  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
12038  mov r2,r3,lsr #10
12039  tst r3,#0x0800 ;@ Is Rn Word or Long
12040  and r2,r2,#0x3c ;@ r2=Index of Rn
12041  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12042  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12043  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
12044  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
12045  and r2,r8,#0x1e00
12046  orr r2,r2,#0x1000 ;@ A0-7
12047  mov r2,r2,lsr #9
12048  ldr r2,[r7,r2,lsl #2]
12049  add r0,r2,r3 ;@ r0=Disp+An+Rn
12050;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
12051  mov r1,r1,lsr #24
12052  mov lr,pc
12053  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12054
12055  ldrh r8,[r4],#2 ;@ Fetch next opcode
12056  subs r5,r5,#24 ;@ Subtract cycles
12057  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12058  b CycloneEnd
12059
12060;@ ---------- [11bc] move.b #$33, ($33,a0,d3.w*2) uses Op11bc ----------
12061Op11bc:
12062;@ EaCalc : Get '#$33' into r1:
12063  ldrsb r1,[r4],#2 ;@ Fetch immediate value
12064;@ EaRead : Read '#$33' (address in r1) into r1:
12065  movs r1,r1,asl #24
12066
12067  and r10,r1,#0x80000000 ;@ r10=N_flag
12068  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12069
12070;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
12071;@ Get extension word into r3:
12072  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
12073  mov r2,r3,lsr #10
12074  tst r3,#0x0800 ;@ Is Rn Word or Long
12075  and r2,r2,#0x3c ;@ r2=Index of Rn
12076  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12077  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12078  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
12079  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
12080  and r2,r8,#0x1e00
12081  orr r2,r2,#0x1000 ;@ A0-7
12082  mov r2,r2,lsr #9
12083  ldr r2,[r7,r2,lsl #2]
12084  add r0,r2,r3 ;@ r0=Disp+An+Rn
12085;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
12086  mov r1,r1,lsr #24
12087  mov lr,pc
12088  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12089
12090  ldrh r8,[r4],#2 ;@ Fetch next opcode
12091  subs r5,r5,#18 ;@ Subtract cycles
12092  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12093  b CycloneEnd
12094
12095;@ ---------- [11c0] move.b d0, $3333.w uses Op11c0 ----------
12096Op11c0:
12097;@ EaCalc : Get register index into r1:
12098  and r1,r8,#0x000f
12099;@ EaRead : Read register[r1] into r1:
12100  ldrb r1,[r7,r1,lsl #2]
12101
12102  movs r2,r1,lsl #24
12103  and r10,r2,#0x80000000 ;@ r10=N_flag
12104  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12105
12106;@ EaCalc : Get '$3333.w' into r0:
12107  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12108;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12109  mov lr,pc
12110  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12111
12112  ldrh r8,[r4],#2 ;@ Fetch next opcode
12113  subs r5,r5,#12 ;@ Subtract cycles
12114  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12115  b CycloneEnd
12116
12117;@ ---------- [11d0] move.b (a0), $3333.w uses Op11d0 ----------
12118Op11d0:
12119;@ EaCalc : Get '(a0)' into r0:
12120  and r2,r8,#0x000f
12121  orr r2,r2,#0x8 ;@ A0-7
12122  ldr r0,[r7,r2,lsl #2]
12123;@ EaRead : Read '(a0)' (address in r0) into r1:
12124  mov lr,pc
12125  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12126  movs r1,r0,asl #24
12127
12128  and r10,r1,#0x80000000 ;@ r10=N_flag
12129  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12130
12131;@ EaCalc : Get '$3333.w' into r0:
12132  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12133;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12134  mov r1,r1,lsr #24
12135  mov lr,pc
12136  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12137
12138  ldrh r8,[r4],#2 ;@ Fetch next opcode
12139  subs r5,r5,#16 ;@ Subtract cycles
12140  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12141  b CycloneEnd
12142
12143;@ ---------- [11d8] move.b (a0)+, $3333.w uses Op11d8 ----------
12144Op11d8:
12145;@ EaCalc : Get '(a0)+' into r0:
12146  and r2,r8,#0x000f
12147  ldr r0,[r7,r2,lsl #2]
12148  add r3,r0,#1 ;@ Post-increment An
12149  str r3,[r7,r2,lsl #2]
12150;@ EaRead : Read '(a0)+' (address in r0) into r1:
12151  mov lr,pc
12152  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12153  movs r1,r0,asl #24
12154
12155  and r10,r1,#0x80000000 ;@ r10=N_flag
12156  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12157
12158;@ EaCalc : Get '$3333.w' into r0:
12159  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12160;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12161  mov r1,r1,lsr #24
12162  mov lr,pc
12163  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12164
12165  ldrh r8,[r4],#2 ;@ Fetch next opcode
12166  subs r5,r5,#16 ;@ Subtract cycles
12167  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12168  b CycloneEnd
12169
12170;@ ---------- [11df] move.b (a7)+, $3333.w uses Op11df ----------
12171Op11df:
12172;@ EaCalc : Get '(a7)+' into r0:
12173  ldr r0,[r7,#0x3c] ;@ A7
12174  add r3,r0,#2 ;@ Post-increment An
12175  str r3,[r7,#0x3c] ;@ A7
12176;@ EaRead : Read '(a7)+' (address in r0) into r1:
12177  mov lr,pc
12178  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12179  movs r1,r0,asl #24
12180
12181  and r10,r1,#0x80000000 ;@ r10=N_flag
12182  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12183
12184;@ EaCalc : Get '$3333.w' into r0:
12185  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12186;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12187  mov r1,r1,lsr #24
12188  mov lr,pc
12189  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12190
12191  ldrh r8,[r4],#2 ;@ Fetch next opcode
12192  subs r5,r5,#16 ;@ Subtract cycles
12193  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12194  b CycloneEnd
12195
12196;@ ---------- [11e0] move.b -(a0), $3333.w uses Op11e0 ----------
12197Op11e0:
12198;@ EaCalc : Get '-(a0)' into r0:
12199  and r2,r8,#0x000f
12200  orr r2,r2,#0x8 ;@ A0-7
12201  ldr r0,[r7,r2,lsl #2]
12202  sub r0,r0,#1 ;@ Pre-decrement An
12203  str r0,[r7,r2,lsl #2]
12204;@ EaRead : Read '-(a0)' (address in r0) into r1:
12205  mov lr,pc
12206  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12207  movs r1,r0,asl #24
12208
12209  and r10,r1,#0x80000000 ;@ r10=N_flag
12210  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12211
12212;@ EaCalc : Get '$3333.w' into r0:
12213  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12214;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12215  mov r1,r1,lsr #24
12216  mov lr,pc
12217  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12218
12219  ldrh r8,[r4],#2 ;@ Fetch next opcode
12220  subs r5,r5,#18 ;@ Subtract cycles
12221  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12222  b CycloneEnd
12223
12224;@ ---------- [11e7] move.b -(a7), $3333.w uses Op11e7 ----------
12225Op11e7:
12226;@ EaCalc : Get '-(a7)' into r0:
12227  ldr r0,[r7,#0x3c] ;@ A7
12228  sub r0,r0,#2 ;@ Pre-decrement An
12229  str r0,[r7,#0x3c] ;@ A7
12230;@ EaRead : Read '-(a7)' (address in r0) into r1:
12231  mov lr,pc
12232  ldr pc,[r7,#0x68] ;@ Call read8(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 '$3333.w' into r0:
12239  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12240;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12241  mov r1,r1,lsr #24
12242  mov lr,pc
12243  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12244
12245  ldrh r8,[r4],#2 ;@ Fetch next opcode
12246  subs r5,r5,#18 ;@ Subtract cycles
12247  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12248  b CycloneEnd
12249
12250;@ ---------- [11e8] move.b ($3333,a0), $3333.w uses Op11e8 ----------
12251Op11e8:
12252;@ EaCalc : Get '($3333,a0)' into r0:
12253  ldrsh r0,[r4],#2 ;@ Fetch offset
12254  and r2,r8,#0x000f
12255  ldr r2,[r7,r2,lsl #2]
12256  add r0,r0,r2 ;@ Add on offset
12257;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
12258  mov lr,pc
12259  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12260  movs r1,r0,asl #24
12261
12262  and r10,r1,#0x80000000 ;@ r10=N_flag
12263  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12264
12265;@ EaCalc : Get '$3333.w' into r0:
12266  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12267;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12268  mov r1,r1,lsr #24
12269  mov lr,pc
12270  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12271
12272  ldrh r8,[r4],#2 ;@ Fetch next opcode
12273  subs r5,r5,#20 ;@ Subtract cycles
12274  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12275  b CycloneEnd
12276
12277;@ ---------- [11f0] move.b ($33,a0,d3.w*2), $3333.w uses Op11f0 ----------
12278Op11f0:
12279;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
12280;@ Get extension word into r3:
12281  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
12282  mov r2,r3,lsr #10
12283  tst r3,#0x0800 ;@ Is Rn Word or Long
12284  and r2,r2,#0x3c ;@ r2=Index of Rn
12285  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12286  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12287  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
12288  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
12289  and r2,r8,#0x000f
12290  orr r2,r2,#0x8 ;@ A0-7
12291  ldr r2,[r7,r2,lsl #2]
12292  add r0,r2,r3 ;@ r0=Disp+An+Rn
12293;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
12294  mov lr,pc
12295  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12296  movs r1,r0,asl #24
12297
12298  and r10,r1,#0x80000000 ;@ r10=N_flag
12299  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12300
12301;@ EaCalc : Get '$3333.w' into r0:
12302  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12303;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12304  mov r1,r1,lsr #24
12305  mov lr,pc
12306  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12307
12308  ldrh r8,[r4],#2 ;@ Fetch next opcode
12309  subs r5,r5,#22 ;@ Subtract cycles
12310  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12311  b CycloneEnd
12312
12313;@ ---------- [11f8] move.b $3333.w, $3333.w uses Op11f8 ----------
12314Op11f8:
12315;@ EaCalc : Get '$3333.w' into r0:
12316  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12317;@ EaRead : Read '$3333.w' (address in r0) into r1:
12318  mov lr,pc
12319  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12320  movs r1,r0,asl #24
12321
12322  and r10,r1,#0x80000000 ;@ r10=N_flag
12323  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12324
12325;@ EaCalc : Get '$3333.w' into r0:
12326  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12327;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12328  mov r1,r1,lsr #24
12329  mov lr,pc
12330  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12331
12332  ldrh r8,[r4],#2 ;@ Fetch next opcode
12333  subs r5,r5,#20 ;@ Subtract cycles
12334  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12335  b CycloneEnd
12336
12337;@ ---------- [11f9] move.b $33333333.l, $3333.w uses Op11f9 ----------
12338Op11f9:
12339;@ EaCalc : Get '$33333333.l' into r0:
12340  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12341  ldrh r0,[r4],#2
12342  orr r0,r0,r2,lsl #16
12343;@ EaRead : Read '$33333333.l' (address in r0) into r1:
12344  mov lr,pc
12345  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12346  movs r1,r0,asl #24
12347
12348  and r10,r1,#0x80000000 ;@ r10=N_flag
12349  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12350
12351;@ EaCalc : Get '$3333.w' into r0:
12352  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12353;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12354  mov r1,r1,lsr #24
12355  mov lr,pc
12356  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12357
12358  ldrh r8,[r4],#2 ;@ Fetch next opcode
12359  subs r5,r5,#24 ;@ Subtract cycles
12360  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12361  b CycloneEnd
12362
12363;@ ---------- [11fa] move.b ($3333,pc), $3333.w; =3335 uses Op11fa ----------
12364Op11fa:
12365;@ EaCalc : Get '($3333,pc)' into r0:
12366  ldr r0,[r7,#0x60] ;@ Get Memory base
12367  sub r0,r4,r0 ;@ Real PC
12368  ldrsh r2,[r4],#2 ;@ Fetch extension
12369  add r0,r2,r0 ;@ ($nn,PC)
12370;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
12371  mov lr,pc
12372  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
12373  movs r1,r0,asl #24
12374
12375  and r10,r1,#0x80000000 ;@ r10=N_flag
12376  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12377
12378;@ EaCalc : Get '$3333.w' into r0:
12379  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12380;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12381  mov r1,r1,lsr #24
12382  mov lr,pc
12383  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12384
12385  ldrh r8,[r4],#2 ;@ Fetch next opcode
12386  subs r5,r5,#20 ;@ Subtract cycles
12387  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12388  b CycloneEnd
12389
12390;@ ---------- [11fb] move.b ($33,pc,d3.w*2), $3333.w; =35 uses Op11fb ----------
12391Op11fb:
12392;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
12393  ldr r0,[r7,#0x60] ;@ Get Memory base
12394  ldrh r3,[r4] ;@ Get extension word
12395  sub r0,r4,r0 ;@ r0=PC
12396  add r4,r4,#2
12397  mov r2,r3,lsr #10
12398  tst r3,#0x0800 ;@ Is Rn Word or Long
12399  and r2,r2,#0x3c ;@ r2=Index of Rn
12400  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12401  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12402  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
12403  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
12404  add r0,r2,r0 ;@ r0=Disp+PC+Rn
12405;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
12406  mov lr,pc
12407  ldr pc,[r7,#0x80] ;@ Call fetch8(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.w' into r0:
12414  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12415;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12416  mov r1,r1,lsr #24
12417  mov lr,pc
12418  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12419
12420  ldrh r8,[r4],#2 ;@ Fetch next opcode
12421  subs r5,r5,#22 ;@ Subtract cycles
12422  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12423  b CycloneEnd
12424
12425;@ ---------- [11fc] move.b #$33, $3333.w uses Op11fc ----------
12426Op11fc:
12427;@ EaCalc : Get '#$33' into r1:
12428  ldrsb r1,[r4],#2 ;@ Fetch immediate value
12429;@ EaRead : Read '#$33' (address in r1) into r1:
12430  movs r1,r1,asl #24
12431
12432  and r10,r1,#0x80000000 ;@ r10=N_flag
12433  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12434
12435;@ EaCalc : Get '$3333.w' into r0:
12436  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12437;@ EaWrite: Write r1 into '$3333.w' (address in r0):
12438  mov r1,r1,lsr #24
12439  mov lr,pc
12440  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12441
12442  ldrh r8,[r4],#2 ;@ Fetch next opcode
12443  subs r5,r5,#16 ;@ Subtract cycles
12444  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12445  b CycloneEnd
12446
12447;@ ---------- [13c0] move.b d0, $33333333.l uses Op13c0 ----------
12448Op13c0:
12449;@ EaCalc : Get register index into r1:
12450  and r1,r8,#0x000f
12451;@ EaRead : Read register[r1] into r1:
12452  ldrb r1,[r7,r1,lsl #2]
12453
12454  movs r2,r1,lsl #24
12455  and r10,r2,#0x80000000 ;@ r10=N_flag
12456  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12457
12458;@ EaCalc : Get '$33333333.l' into r0:
12459  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12460  ldrh r0,[r4],#2
12461  orr r0,r0,r2,lsl #16
12462;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12463  mov lr,pc
12464  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12465
12466  ldrh r8,[r4],#2 ;@ Fetch next opcode
12467  subs r5,r5,#16 ;@ Subtract cycles
12468  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12469  b CycloneEnd
12470
12471;@ ---------- [13d0] move.b (a0), $33333333.l uses Op13d0 ----------
12472Op13d0:
12473;@ EaCalc : Get '(a0)' into r0:
12474  and r2,r8,#0x000f
12475  orr r2,r2,#0x8 ;@ A0-7
12476  ldr r0,[r7,r2,lsl #2]
12477;@ EaRead : Read '(a0)' (address in r0) into r1:
12478  mov lr,pc
12479  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12480  movs r1,r0,asl #24
12481
12482  and r10,r1,#0x80000000 ;@ r10=N_flag
12483  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12484
12485;@ EaCalc : Get '$33333333.l' into r0:
12486  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12487  ldrh r0,[r4],#2
12488  orr r0,r0,r2,lsl #16
12489;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12490  mov r1,r1,lsr #24
12491  mov lr,pc
12492  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12493
12494  ldrh r8,[r4],#2 ;@ Fetch next opcode
12495  subs r5,r5,#20 ;@ Subtract cycles
12496  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12497  b CycloneEnd
12498
12499;@ ---------- [13d8] move.b (a0)+, $33333333.l uses Op13d8 ----------
12500Op13d8:
12501;@ EaCalc : Get '(a0)+' into r0:
12502  and r2,r8,#0x000f
12503  ldr r0,[r7,r2,lsl #2]
12504  add r3,r0,#1 ;@ Post-increment An
12505  str r3,[r7,r2,lsl #2]
12506;@ EaRead : Read '(a0)+' (address in r0) into r1:
12507  mov lr,pc
12508  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12509  movs r1,r0,asl #24
12510
12511  and r10,r1,#0x80000000 ;@ r10=N_flag
12512  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12513
12514;@ EaCalc : Get '$33333333.l' into r0:
12515  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12516  ldrh r0,[r4],#2
12517  orr r0,r0,r2,lsl #16
12518;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12519  mov r1,r1,lsr #24
12520  mov lr,pc
12521  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12522
12523  ldrh r8,[r4],#2 ;@ Fetch next opcode
12524  subs r5,r5,#20 ;@ Subtract cycles
12525  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12526  b CycloneEnd
12527
12528;@ ---------- [13df] move.b (a7)+, $33333333.l uses Op13df ----------
12529Op13df:
12530;@ EaCalc : Get '(a7)+' into r0:
12531  ldr r0,[r7,#0x3c] ;@ A7
12532  add r3,r0,#2 ;@ Post-increment An
12533  str r3,[r7,#0x3c] ;@ A7
12534;@ EaRead : Read '(a7)+' (address in r0) into r1:
12535  mov lr,pc
12536  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12537  movs r1,r0,asl #24
12538
12539  and r10,r1,#0x80000000 ;@ r10=N_flag
12540  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12541
12542;@ EaCalc : Get '$33333333.l' into r0:
12543  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12544  ldrh r0,[r4],#2
12545  orr r0,r0,r2,lsl #16
12546;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12547  mov r1,r1,lsr #24
12548  mov lr,pc
12549  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12550
12551  ldrh r8,[r4],#2 ;@ Fetch next opcode
12552  subs r5,r5,#20 ;@ Subtract cycles
12553  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12554  b CycloneEnd
12555
12556;@ ---------- [13e0] move.b -(a0), $33333333.l uses Op13e0 ----------
12557Op13e0:
12558;@ EaCalc : Get '-(a0)' into r0:
12559  and r2,r8,#0x000f
12560  orr r2,r2,#0x8 ;@ A0-7
12561  ldr r0,[r7,r2,lsl #2]
12562  sub r0,r0,#1 ;@ Pre-decrement An
12563  str r0,[r7,r2,lsl #2]
12564;@ EaRead : Read '-(a0)' (address in r0) into r1:
12565  mov lr,pc
12566  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12567  movs r1,r0,asl #24
12568
12569  and r10,r1,#0x80000000 ;@ r10=N_flag
12570  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12571
12572;@ EaCalc : Get '$33333333.l' into r0:
12573  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12574  ldrh r0,[r4],#2
12575  orr r0,r0,r2,lsl #16
12576;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12577  mov r1,r1,lsr #24
12578  mov lr,pc
12579  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12580
12581  ldrh r8,[r4],#2 ;@ Fetch next opcode
12582  subs r5,r5,#22 ;@ Subtract cycles
12583  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12584  b CycloneEnd
12585
12586;@ ---------- [13e7] move.b -(a7), $33333333.l uses Op13e7 ----------
12587Op13e7:
12588;@ EaCalc : Get '-(a7)' into r0:
12589  ldr r0,[r7,#0x3c] ;@ A7
12590  sub r0,r0,#2 ;@ Pre-decrement An
12591  str r0,[r7,#0x3c] ;@ A7
12592;@ EaRead : Read '-(a7)' (address in r0) into r1:
12593  mov lr,pc
12594  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12595  movs r1,r0,asl #24
12596
12597  and r10,r1,#0x80000000 ;@ r10=N_flag
12598  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12599
12600;@ EaCalc : Get '$33333333.l' into r0:
12601  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12602  ldrh r0,[r4],#2
12603  orr r0,r0,r2,lsl #16
12604;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12605  mov r1,r1,lsr #24
12606  mov lr,pc
12607  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12608
12609  ldrh r8,[r4],#2 ;@ Fetch next opcode
12610  subs r5,r5,#22 ;@ Subtract cycles
12611  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12612  b CycloneEnd
12613
12614;@ ---------- [13e8] move.b ($3333,a0), $33333333.l uses Op13e8 ----------
12615Op13e8:
12616;@ EaCalc : Get '($3333,a0)' into r0:
12617  ldrsh r0,[r4],#2 ;@ Fetch offset
12618  and r2,r8,#0x000f
12619  ldr r2,[r7,r2,lsl #2]
12620  add r0,r0,r2 ;@ Add on offset
12621;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
12622  mov lr,pc
12623  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12624  movs r1,r0,asl #24
12625
12626  and r10,r1,#0x80000000 ;@ r10=N_flag
12627  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12628
12629;@ EaCalc : Get '$33333333.l' into r0:
12630  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12631  ldrh r0,[r4],#2
12632  orr r0,r0,r2,lsl #16
12633;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12634  mov r1,r1,lsr #24
12635  mov lr,pc
12636  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12637
12638  ldrh r8,[r4],#2 ;@ Fetch next opcode
12639  subs r5,r5,#24 ;@ Subtract cycles
12640  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12641  b CycloneEnd
12642
12643;@ ---------- [13f0] move.b ($33,a0,d3.w*2), $33333333.l uses Op13f0 ----------
12644Op13f0:
12645;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
12646;@ Get extension word into r3:
12647  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
12648  mov r2,r3,lsr #10
12649  tst r3,#0x0800 ;@ Is Rn Word or Long
12650  and r2,r2,#0x3c ;@ r2=Index of Rn
12651  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12652  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12653  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
12654  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
12655  and r2,r8,#0x000f
12656  orr r2,r2,#0x8 ;@ A0-7
12657  ldr r2,[r7,r2,lsl #2]
12658  add r0,r2,r3 ;@ r0=Disp+An+Rn
12659;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
12660  mov lr,pc
12661  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12662  movs r1,r0,asl #24
12663
12664  and r10,r1,#0x80000000 ;@ r10=N_flag
12665  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12666
12667;@ EaCalc : Get '$33333333.l' into r0:
12668  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12669  ldrh r0,[r4],#2
12670  orr r0,r0,r2,lsl #16
12671;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12672  mov r1,r1,lsr #24
12673  mov lr,pc
12674  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12675
12676  ldrh r8,[r4],#2 ;@ Fetch next opcode
12677  subs r5,r5,#26 ;@ Subtract cycles
12678  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12679  b CycloneEnd
12680
12681;@ ---------- [13f8] move.b $3333.w, $33333333.l uses Op13f8 ----------
12682Op13f8:
12683;@ EaCalc : Get '$3333.w' into r0:
12684  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
12685;@ EaRead : Read '$3333.w' (address in r0) into r1:
12686  mov lr,pc
12687  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12688  movs r1,r0,asl #24
12689
12690  and r10,r1,#0x80000000 ;@ r10=N_flag
12691  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12692
12693;@ EaCalc : Get '$33333333.l' into r0:
12694  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12695  ldrh r0,[r4],#2
12696  orr r0,r0,r2,lsl #16
12697;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12698  mov r1,r1,lsr #24
12699  mov lr,pc
12700  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12701
12702  ldrh r8,[r4],#2 ;@ Fetch next opcode
12703  subs r5,r5,#24 ;@ Subtract cycles
12704  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12705  b CycloneEnd
12706
12707;@ ---------- [13f9] move.b $33333333.l, $33333333.l uses Op13f9 ----------
12708Op13f9:
12709;@ EaCalc : Get '$33333333.l' into r0:
12710  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12711  ldrh r0,[r4],#2
12712  orr r0,r0,r2,lsl #16
12713;@ EaRead : Read '$33333333.l' (address in r0) into r1:
12714  mov lr,pc
12715  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12716  movs r1,r0,asl #24
12717
12718  and r10,r1,#0x80000000 ;@ r10=N_flag
12719  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12720
12721;@ EaCalc : Get '$33333333.l' into r0:
12722  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12723  ldrh r0,[r4],#2
12724  orr r0,r0,r2,lsl #16
12725;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12726  mov r1,r1,lsr #24
12727  mov lr,pc
12728  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12729
12730  ldrh r8,[r4],#2 ;@ Fetch next opcode
12731  subs r5,r5,#28 ;@ Subtract cycles
12732  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12733  b CycloneEnd
12734
12735;@ ---------- [13fa] move.b ($3333,pc), $33333333.l; =3335 uses Op13fa ----------
12736Op13fa:
12737;@ EaCalc : Get '($3333,pc)' into r0:
12738  ldr r0,[r7,#0x60] ;@ Get Memory base
12739  sub r0,r4,r0 ;@ Real PC
12740  ldrsh r2,[r4],#2 ;@ Fetch extension
12741  add r0,r2,r0 ;@ ($nn,PC)
12742;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
12743  mov lr,pc
12744  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
12745  movs r1,r0,asl #24
12746
12747  and r10,r1,#0x80000000 ;@ r10=N_flag
12748  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12749
12750;@ EaCalc : Get '$33333333.l' into r0:
12751  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12752  ldrh r0,[r4],#2
12753  orr r0,r0,r2,lsl #16
12754;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12755  mov r1,r1,lsr #24
12756  mov lr,pc
12757  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12758
12759  ldrh r8,[r4],#2 ;@ Fetch next opcode
12760  subs r5,r5,#24 ;@ Subtract cycles
12761  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12762  b CycloneEnd
12763
12764;@ ---------- [13fb] move.b ($33,pc,d3.w*2), $33333333.l; =35 uses Op13fb ----------
12765Op13fb:
12766;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
12767  ldr r0,[r7,#0x60] ;@ Get Memory base
12768  ldrh r3,[r4] ;@ Get extension word
12769  sub r0,r4,r0 ;@ r0=PC
12770  add r4,r4,#2
12771  mov r2,r3,lsr #10
12772  tst r3,#0x0800 ;@ Is Rn Word or Long
12773  and r2,r2,#0x3c ;@ r2=Index of Rn
12774  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
12775  ldrne   r2,[r7,r2] ;@ r2=Rn.l
12776  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
12777  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
12778  add r0,r2,r0 ;@ r0=Disp+PC+Rn
12779;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
12780  mov lr,pc
12781  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
12782  movs r1,r0,asl #24
12783
12784  and r10,r1,#0x80000000 ;@ r10=N_flag
12785  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12786
12787;@ EaCalc : Get '$33333333.l' into r0:
12788  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12789  ldrh r0,[r4],#2
12790  orr r0,r0,r2,lsl #16
12791;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12792  mov r1,r1,lsr #24
12793  mov lr,pc
12794  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12795
12796  ldrh r8,[r4],#2 ;@ Fetch next opcode
12797  subs r5,r5,#26 ;@ Subtract cycles
12798  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12799  b CycloneEnd
12800
12801;@ ---------- [13fc] move.b #$33, $33333333.l uses Op13fc ----------
12802Op13fc:
12803;@ EaCalc : Get '#$33' into r1:
12804  ldrsb r1,[r4],#2 ;@ Fetch immediate value
12805;@ EaRead : Read '#$33' (address in r1) into r1:
12806  movs r1,r1,asl #24
12807
12808  and r10,r1,#0x80000000 ;@ r10=N_flag
12809  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12810
12811;@ EaCalc : Get '$33333333.l' into r0:
12812  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
12813  ldrh r0,[r4],#2
12814  orr r0,r0,r2,lsl #16
12815;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
12816  mov r1,r1,lsr #24
12817  mov lr,pc
12818  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12819
12820  ldrh r8,[r4],#2 ;@ Fetch next opcode
12821  subs r5,r5,#20 ;@ Subtract cycles
12822  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12823  b CycloneEnd
12824
12825;@ ---------- [1ec0] move.b d0, (a7)+ uses Op1ec0 ----------
12826Op1ec0:
12827;@ EaCalc : Get register index into r1:
12828  and r1,r8,#0x000f
12829;@ EaRead : Read register[r1] into r1:
12830  ldrb r1,[r7,r1,lsl #2]
12831
12832  movs r2,r1,lsl #24
12833  and r10,r2,#0x80000000 ;@ r10=N_flag
12834  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12835
12836;@ EaCalc : Get '(a7)+' into r0:
12837  ldr r0,[r7,#0x3c] ;@ A7
12838  add r3,r0,#2 ;@ Post-increment An
12839  str r3,[r7,#0x3c] ;@ A7
12840;@ EaWrite: Write r1 into '(a7)+' (address in r0):
12841  mov lr,pc
12842  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12843
12844  ldrh r8,[r4],#2 ;@ Fetch next opcode
12845  subs r5,r5,#8 ;@ Subtract cycles
12846  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12847  b CycloneEnd
12848
12849;@ ---------- [1ed0] move.b (a0), (a7)+ uses Op1ed0 ----------
12850Op1ed0:
12851;@ EaCalc : Get '(a0)' into r0:
12852  and r2,r8,#0x000f
12853  orr r2,r2,#0x8 ;@ A0-7
12854  ldr r0,[r7,r2,lsl #2]
12855;@ EaRead : Read '(a0)' (address in r0) into r1:
12856  mov lr,pc
12857  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12858  movs r1,r0,asl #24
12859
12860  and r10,r1,#0x80000000 ;@ r10=N_flag
12861  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12862
12863;@ EaCalc : Get '(a7)+' into r0:
12864  ldr r0,[r7,#0x3c] ;@ A7
12865  add r3,r0,#2 ;@ Post-increment An
12866  str r3,[r7,#0x3c] ;@ A7
12867;@ EaWrite: Write r1 into '(a7)+' (address in r0):
12868  mov r1,r1,lsr #24
12869  mov lr,pc
12870  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12871
12872  ldrh r8,[r4],#2 ;@ Fetch next opcode
12873  subs r5,r5,#12 ;@ Subtract cycles
12874  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12875  b CycloneEnd
12876
12877;@ ---------- [1ed8] move.b (a0)+, (a7)+ uses Op1ed8 ----------
12878Op1ed8:
12879;@ EaCalc : Get '(a0)+' into r0:
12880  and r2,r8,#0x000f
12881  ldr r0,[r7,r2,lsl #2]
12882  add r3,r0,#1 ;@ Post-increment An
12883  str r3,[r7,r2,lsl #2]
12884;@ EaRead : Read '(a0)+' (address in r0) into r1:
12885  mov lr,pc
12886  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12887  movs r1,r0,asl #24
12888
12889  and r10,r1,#0x80000000 ;@ r10=N_flag
12890  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12891
12892;@ EaCalc : Get '(a7)+' into r0:
12893  ldr r0,[r7,#0x3c] ;@ A7
12894  add r3,r0,#2 ;@ Post-increment An
12895  str r3,[r7,#0x3c] ;@ A7
12896;@ EaWrite: Write r1 into '(a7)+' (address in r0):
12897  mov r1,r1,lsr #24
12898  mov lr,pc
12899  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12900
12901  ldrh r8,[r4],#2 ;@ Fetch next opcode
12902  subs r5,r5,#12 ;@ Subtract cycles
12903  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12904  b CycloneEnd
12905
12906;@ ---------- [1edf] move.b (a7)+, (a7)+ uses Op1edf ----------
12907Op1edf:
12908;@ EaCalc : Get '(a7)+' into r0:
12909  ldr r0,[r7,#0x3c] ;@ A7
12910  add r3,r0,#2 ;@ Post-increment An
12911  str r3,[r7,#0x3c] ;@ A7
12912;@ EaRead : Read '(a7)+' (address in r0) into r1:
12913  mov lr,pc
12914  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12915  movs r1,r0,asl #24
12916
12917  and r10,r1,#0x80000000 ;@ r10=N_flag
12918  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12919
12920;@ EaCalc : Get '(a7)+' into r0:
12921  ldr r0,[r7,#0x3c] ;@ A7
12922  add r3,r0,#2 ;@ Post-increment An
12923  str r3,[r7,#0x3c] ;@ A7
12924;@ EaWrite: Write r1 into '(a7)+' (address in r0):
12925  mov r1,r1,lsr #24
12926  mov lr,pc
12927  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12928
12929  ldrh r8,[r4],#2 ;@ Fetch next opcode
12930  subs r5,r5,#12 ;@ Subtract cycles
12931  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12932  b CycloneEnd
12933
12934;@ ---------- [1ee0] move.b -(a0), (a7)+ uses Op1ee0 ----------
12935Op1ee0:
12936;@ EaCalc : Get '-(a0)' into r0:
12937  and r2,r8,#0x000f
12938  orr r2,r2,#0x8 ;@ A0-7
12939  ldr r0,[r7,r2,lsl #2]
12940  sub r0,r0,#1 ;@ Pre-decrement An
12941  str r0,[r7,r2,lsl #2]
12942;@ EaRead : Read '-(a0)' (address in r0) into r1:
12943  mov lr,pc
12944  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12945  movs r1,r0,asl #24
12946
12947  and r10,r1,#0x80000000 ;@ r10=N_flag
12948  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12949
12950;@ EaCalc : Get '(a7)+' into r0:
12951  ldr r0,[r7,#0x3c] ;@ A7
12952  add r3,r0,#2 ;@ Post-increment An
12953  str r3,[r7,#0x3c] ;@ A7
12954;@ EaWrite: Write r1 into '(a7)+' (address in r0):
12955  mov r1,r1,lsr #24
12956  mov lr,pc
12957  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12958
12959  ldrh r8,[r4],#2 ;@ Fetch next opcode
12960  subs r5,r5,#14 ;@ Subtract cycles
12961  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12962  b CycloneEnd
12963
12964;@ ---------- [1ee7] move.b -(a7), (a7)+ uses Op1ee7 ----------
12965Op1ee7:
12966;@ EaCalc : Get '-(a7)' into r0:
12967  ldr r0,[r7,#0x3c] ;@ A7
12968  sub r0,r0,#2 ;@ Pre-decrement An
12969  str r0,[r7,#0x3c] ;@ A7
12970;@ EaRead : Read '-(a7)' (address in r0) into r1:
12971  mov lr,pc
12972  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
12973  movs r1,r0,asl #24
12974
12975  and r10,r1,#0x80000000 ;@ r10=N_flag
12976  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
12977
12978;@ EaCalc : Get '(a7)+' into r0:
12979  ldr r0,[r7,#0x3c] ;@ A7
12980  add r3,r0,#2 ;@ Post-increment An
12981  str r3,[r7,#0x3c] ;@ A7
12982;@ EaWrite: Write r1 into '(a7)+' (address in r0):
12983  mov r1,r1,lsr #24
12984  mov lr,pc
12985  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
12986
12987  ldrh r8,[r4],#2 ;@ Fetch next opcode
12988  subs r5,r5,#14 ;@ Subtract cycles
12989  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
12990  b CycloneEnd
12991
12992;@ ---------- [1ee8] move.b ($3333,a0), (a7)+ uses Op1ee8 ----------
12993Op1ee8:
12994;@ EaCalc : Get '($3333,a0)' into r0:
12995  ldrsh r0,[r4],#2 ;@ Fetch offset
12996  and r2,r8,#0x000f
12997  ldr r2,[r7,r2,lsl #2]
12998  add r0,r0,r2 ;@ Add on offset
12999;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
13000  mov lr,pc
13001  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13002  movs r1,r0,asl #24
13003
13004  and r10,r1,#0x80000000 ;@ r10=N_flag
13005  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13006
13007;@ EaCalc : Get '(a7)+' into r0:
13008  ldr r0,[r7,#0x3c] ;@ A7
13009  add r3,r0,#2 ;@ Post-increment An
13010  str r3,[r7,#0x3c] ;@ A7
13011;@ EaWrite: Write r1 into '(a7)+' (address in r0):
13012  mov r1,r1,lsr #24
13013  mov lr,pc
13014  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13015
13016  ldrh r8,[r4],#2 ;@ Fetch next opcode
13017  subs r5,r5,#16 ;@ Subtract cycles
13018  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13019  b CycloneEnd
13020
13021;@ ---------- [1ef0] move.b ($33,a0,d3.w*2), (a7)+ uses Op1ef0 ----------
13022Op1ef0:
13023;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13024;@ Get extension word into r3:
13025  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13026  mov r2,r3,lsr #10
13027  tst r3,#0x0800 ;@ Is Rn Word or Long
13028  and r2,r2,#0x3c ;@ r2=Index of Rn
13029  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13030  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13031  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13032  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13033  and r2,r8,#0x000f
13034  orr r2,r2,#0x8 ;@ A0-7
13035  ldr r2,[r7,r2,lsl #2]
13036  add r0,r2,r3 ;@ r0=Disp+An+Rn
13037;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
13038  mov lr,pc
13039  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13040  movs r1,r0,asl #24
13041
13042  and r10,r1,#0x80000000 ;@ r10=N_flag
13043  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13044
13045;@ EaCalc : Get '(a7)+' into r0:
13046  ldr r0,[r7,#0x3c] ;@ A7
13047  add r3,r0,#2 ;@ Post-increment An
13048  str r3,[r7,#0x3c] ;@ A7
13049;@ EaWrite: Write r1 into '(a7)+' (address in r0):
13050  mov r1,r1,lsr #24
13051  mov lr,pc
13052  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13053
13054  ldrh r8,[r4],#2 ;@ Fetch next opcode
13055  subs r5,r5,#18 ;@ Subtract cycles
13056  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13057  b CycloneEnd
13058
13059;@ ---------- [1ef8] move.b $3333.w, (a7)+ uses Op1ef8 ----------
13060Op1ef8:
13061;@ EaCalc : Get '$3333.w' into r0:
13062  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13063;@ EaRead : Read '$3333.w' (address in r0) into r1:
13064  mov lr,pc
13065  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13066  movs r1,r0,asl #24
13067
13068  and r10,r1,#0x80000000 ;@ r10=N_flag
13069  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13070
13071;@ EaCalc : Get '(a7)+' into r0:
13072  ldr r0,[r7,#0x3c] ;@ A7
13073  add r3,r0,#2 ;@ Post-increment An
13074  str r3,[r7,#0x3c] ;@ A7
13075;@ EaWrite: Write r1 into '(a7)+' (address in r0):
13076  mov r1,r1,lsr #24
13077  mov lr,pc
13078  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13079
13080  ldrh r8,[r4],#2 ;@ Fetch next opcode
13081  subs r5,r5,#16 ;@ Subtract cycles
13082  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13083  b CycloneEnd
13084
13085;@ ---------- [1ef9] move.b $33333333.l, (a7)+ uses Op1ef9 ----------
13086Op1ef9:
13087;@ EaCalc : Get '$33333333.l' into r0:
13088  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13089  ldrh r0,[r4],#2
13090  orr r0,r0,r2,lsl #16
13091;@ EaRead : Read '$33333333.l' (address in r0) into r1:
13092  mov lr,pc
13093  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13094  movs r1,r0,asl #24
13095
13096  and r10,r1,#0x80000000 ;@ r10=N_flag
13097  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13098
13099;@ EaCalc : Get '(a7)+' into r0:
13100  ldr r0,[r7,#0x3c] ;@ A7
13101  add r3,r0,#2 ;@ Post-increment An
13102  str r3,[r7,#0x3c] ;@ A7
13103;@ EaWrite: Write r1 into '(a7)+' (address in r0):
13104  mov r1,r1,lsr #24
13105  mov lr,pc
13106  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13107
13108  ldrh r8,[r4],#2 ;@ Fetch next opcode
13109  subs r5,r5,#20 ;@ Subtract cycles
13110  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13111  b CycloneEnd
13112
13113;@ ---------- [1efa] move.b ($3333,pc), (a7)+; =3335 uses Op1efa ----------
13114Op1efa:
13115;@ EaCalc : Get '($3333,pc)' into r0:
13116  ldr r0,[r7,#0x60] ;@ Get Memory base
13117  sub r0,r4,r0 ;@ Real PC
13118  ldrsh r2,[r4],#2 ;@ Fetch extension
13119  add r0,r2,r0 ;@ ($nn,PC)
13120;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
13121  mov lr,pc
13122  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
13123  movs r1,r0,asl #24
13124
13125  and r10,r1,#0x80000000 ;@ r10=N_flag
13126  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13127
13128;@ EaCalc : Get '(a7)+' into r0:
13129  ldr r0,[r7,#0x3c] ;@ A7
13130  add r3,r0,#2 ;@ Post-increment An
13131  str r3,[r7,#0x3c] ;@ A7
13132;@ EaWrite: Write r1 into '(a7)+' (address in r0):
13133  mov r1,r1,lsr #24
13134  mov lr,pc
13135  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13136
13137  ldrh r8,[r4],#2 ;@ Fetch next opcode
13138  subs r5,r5,#16 ;@ Subtract cycles
13139  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13140  b CycloneEnd
13141
13142;@ ---------- [1efb] move.b ($33,pc,d3.w*2), (a7)+; =35 uses Op1efb ----------
13143Op1efb:
13144;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
13145  ldr r0,[r7,#0x60] ;@ Get Memory base
13146  ldrh r3,[r4] ;@ Get extension word
13147  sub r0,r4,r0 ;@ r0=PC
13148  add r4,r4,#2
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 r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
13155  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
13156  add r0,r2,r0 ;@ r0=Disp+PC+Rn
13157;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
13158  mov lr,pc
13159  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
13160  movs r1,r0,asl #24
13161
13162  and r10,r1,#0x80000000 ;@ r10=N_flag
13163  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13164
13165;@ EaCalc : Get '(a7)+' into r0:
13166  ldr r0,[r7,#0x3c] ;@ A7
13167  add r3,r0,#2 ;@ Post-increment An
13168  str r3,[r7,#0x3c] ;@ A7
13169;@ EaWrite: Write r1 into '(a7)+' (address in r0):
13170  mov r1,r1,lsr #24
13171  mov lr,pc
13172  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13173
13174  ldrh r8,[r4],#2 ;@ Fetch next opcode
13175  subs r5,r5,#18 ;@ Subtract cycles
13176  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13177  b CycloneEnd
13178
13179;@ ---------- [1efc] move.b #$33, (a7)+ uses Op1efc ----------
13180Op1efc:
13181;@ EaCalc : Get '#$33' into r1:
13182  ldrsb r1,[r4],#2 ;@ Fetch immediate value
13183;@ EaRead : Read '#$33' (address in r1) into r1:
13184  movs r1,r1,asl #24
13185
13186  and r10,r1,#0x80000000 ;@ r10=N_flag
13187  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13188
13189;@ EaCalc : Get '(a7)+' into r0:
13190  ldr r0,[r7,#0x3c] ;@ A7
13191  add r3,r0,#2 ;@ Post-increment An
13192  str r3,[r7,#0x3c] ;@ A7
13193;@ EaWrite: Write r1 into '(a7)+' (address in r0):
13194  mov r1,r1,lsr #24
13195  mov lr,pc
13196  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13197
13198  ldrh r8,[r4],#2 ;@ Fetch next opcode
13199  subs r5,r5,#12 ;@ Subtract cycles
13200  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13201  b CycloneEnd
13202
13203;@ ---------- [1f00] move.b d0, -(a7) uses Op1f00 ----------
13204Op1f00:
13205;@ EaCalc : Get register index into r1:
13206  and r1,r8,#0x000f
13207;@ EaRead : Read register[r1] into r1:
13208  ldrb r1,[r7,r1,lsl #2]
13209
13210  movs r2,r1,lsl #24
13211  and r10,r2,#0x80000000 ;@ r10=N_flag
13212  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13213
13214;@ EaCalc : Get '-(a7)' into r0:
13215  ldr r0,[r7,#0x3c] ;@ A7
13216  sub r0,r0,#2 ;@ Pre-decrement An
13217  str r0,[r7,#0x3c] ;@ A7
13218;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13219  mov lr,pc
13220  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13221
13222  ldrh r8,[r4],#2 ;@ Fetch next opcode
13223  subs r5,r5,#8 ;@ Subtract cycles
13224  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13225  b CycloneEnd
13226
13227;@ ---------- [1f10] move.b (a0), -(a7) uses Op1f10 ----------
13228Op1f10:
13229;@ EaCalc : Get '(a0)' into r0:
13230  and r2,r8,#0x000f
13231  orr r2,r2,#0x8 ;@ A0-7
13232  ldr r0,[r7,r2,lsl #2]
13233;@ EaRead : Read '(a0)' (address in r0) into r1:
13234  mov lr,pc
13235  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13236  movs r1,r0,asl #24
13237
13238  and r10,r1,#0x80000000 ;@ r10=N_flag
13239  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13240
13241;@ EaCalc : Get '-(a7)' into r0:
13242  ldr r0,[r7,#0x3c] ;@ A7
13243  sub r0,r0,#2 ;@ Pre-decrement An
13244  str r0,[r7,#0x3c] ;@ A7
13245;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13246  mov r1,r1,lsr #24
13247  mov lr,pc
13248  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13249
13250  ldrh r8,[r4],#2 ;@ Fetch next opcode
13251  subs r5,r5,#12 ;@ Subtract cycles
13252  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13253  b CycloneEnd
13254
13255;@ ---------- [1f18] move.b (a0)+, -(a7) uses Op1f18 ----------
13256Op1f18:
13257;@ EaCalc : Get '(a0)+' into r0:
13258  and r2,r8,#0x000f
13259  ldr r0,[r7,r2,lsl #2]
13260  add r3,r0,#1 ;@ Post-increment An
13261  str r3,[r7,r2,lsl #2]
13262;@ EaRead : Read '(a0)+' (address in r0) into r1:
13263  mov lr,pc
13264  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13265  movs r1,r0,asl #24
13266
13267  and r10,r1,#0x80000000 ;@ r10=N_flag
13268  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13269
13270;@ EaCalc : Get '-(a7)' into r0:
13271  ldr r0,[r7,#0x3c] ;@ A7
13272  sub r0,r0,#2 ;@ Pre-decrement An
13273  str r0,[r7,#0x3c] ;@ A7
13274;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13275  mov r1,r1,lsr #24
13276  mov lr,pc
13277  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13278
13279  ldrh r8,[r4],#2 ;@ Fetch next opcode
13280  subs r5,r5,#12 ;@ Subtract cycles
13281  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13282  b CycloneEnd
13283
13284;@ ---------- [1f1f] move.b (a7)+, -(a7) uses Op1f1f ----------
13285Op1f1f:
13286;@ EaCalc : Get '(a7)+' into r0:
13287  ldr r0,[r7,#0x3c] ;@ A7
13288  add r3,r0,#2 ;@ Post-increment An
13289  str r3,[r7,#0x3c] ;@ A7
13290;@ EaRead : Read '(a7)+' (address in r0) into r1:
13291  mov lr,pc
13292  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13293  movs r1,r0,asl #24
13294
13295  and r10,r1,#0x80000000 ;@ r10=N_flag
13296  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13297
13298;@ EaCalc : Get '-(a7)' into r0:
13299  ldr r0,[r7,#0x3c] ;@ A7
13300  sub r0,r0,#2 ;@ Pre-decrement An
13301  str r0,[r7,#0x3c] ;@ A7
13302;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13303  mov r1,r1,lsr #24
13304  mov lr,pc
13305  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13306
13307  ldrh r8,[r4],#2 ;@ Fetch next opcode
13308  subs r5,r5,#12 ;@ Subtract cycles
13309  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13310  b CycloneEnd
13311
13312;@ ---------- [1f20] move.b -(a0), -(a7) uses Op1f20 ----------
13313Op1f20:
13314;@ EaCalc : Get '-(a0)' into r0:
13315  and r2,r8,#0x000f
13316  orr r2,r2,#0x8 ;@ A0-7
13317  ldr r0,[r7,r2,lsl #2]
13318  sub r0,r0,#1 ;@ Pre-decrement An
13319  str r0,[r7,r2,lsl #2]
13320;@ EaRead : Read '-(a0)' (address in r0) into r1:
13321  mov lr,pc
13322  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13323  movs r1,r0,asl #24
13324
13325  and r10,r1,#0x80000000 ;@ r10=N_flag
13326  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13327
13328;@ EaCalc : Get '-(a7)' into r0:
13329  ldr r0,[r7,#0x3c] ;@ A7
13330  sub r0,r0,#2 ;@ Pre-decrement An
13331  str r0,[r7,#0x3c] ;@ A7
13332;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13333  mov r1,r1,lsr #24
13334  mov lr,pc
13335  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13336
13337  ldrh r8,[r4],#2 ;@ Fetch next opcode
13338  subs r5,r5,#14 ;@ Subtract cycles
13339  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13340  b CycloneEnd
13341
13342;@ ---------- [1f27] move.b -(a7), -(a7) uses Op1f27 ----------
13343Op1f27:
13344;@ EaCalc : Get '-(a7)' into r0:
13345  ldr r0,[r7,#0x3c] ;@ A7
13346  sub r0,r0,#2 ;@ Pre-decrement An
13347  str r0,[r7,#0x3c] ;@ A7
13348;@ EaRead : Read '-(a7)' (address in r0) into r1:
13349  mov lr,pc
13350  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13351  movs r1,r0,asl #24
13352
13353  and r10,r1,#0x80000000 ;@ r10=N_flag
13354  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13355
13356;@ EaCalc : Get '-(a7)' into r0:
13357  ldr r0,[r7,#0x3c] ;@ A7
13358  sub r0,r0,#2 ;@ Pre-decrement An
13359  str r0,[r7,#0x3c] ;@ A7
13360;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13361  mov r1,r1,lsr #24
13362  mov lr,pc
13363  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13364
13365  ldrh r8,[r4],#2 ;@ Fetch next opcode
13366  subs r5,r5,#14 ;@ Subtract cycles
13367  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13368  b CycloneEnd
13369
13370;@ ---------- [1f28] move.b ($3333,a0), -(a7) uses Op1f28 ----------
13371Op1f28:
13372;@ EaCalc : Get '($3333,a0)' into r0:
13373  ldrsh r0,[r4],#2 ;@ Fetch offset
13374  and r2,r8,#0x000f
13375  ldr r2,[r7,r2,lsl #2]
13376  add r0,r0,r2 ;@ Add on offset
13377;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
13378  mov lr,pc
13379  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13380  movs r1,r0,asl #24
13381
13382  and r10,r1,#0x80000000 ;@ r10=N_flag
13383  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13384
13385;@ EaCalc : Get '-(a7)' into r0:
13386  ldr r0,[r7,#0x3c] ;@ A7
13387  sub r0,r0,#2 ;@ Pre-decrement An
13388  str r0,[r7,#0x3c] ;@ A7
13389;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13390  mov r1,r1,lsr #24
13391  mov lr,pc
13392  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13393
13394  ldrh r8,[r4],#2 ;@ Fetch next opcode
13395  subs r5,r5,#16 ;@ Subtract cycles
13396  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13397  b CycloneEnd
13398
13399;@ ---------- [1f30] move.b ($33,a0,d3.w*2), -(a7) uses Op1f30 ----------
13400Op1f30:
13401;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13402;@ Get extension word into r3:
13403  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13404  mov r2,r3,lsr #10
13405  tst r3,#0x0800 ;@ Is Rn Word or Long
13406  and r2,r2,#0x3c ;@ r2=Index of Rn
13407  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13408  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13409  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13410  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13411  and r2,r8,#0x000f
13412  orr r2,r2,#0x8 ;@ A0-7
13413  ldr r2,[r7,r2,lsl #2]
13414  add r0,r2,r3 ;@ r0=Disp+An+Rn
13415;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
13416  mov lr,pc
13417  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13418  movs r1,r0,asl #24
13419
13420  and r10,r1,#0x80000000 ;@ r10=N_flag
13421  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13422
13423;@ EaCalc : Get '-(a7)' into r0:
13424  ldr r0,[r7,#0x3c] ;@ A7
13425  sub r0,r0,#2 ;@ Pre-decrement An
13426  str r0,[r7,#0x3c] ;@ A7
13427;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13428  mov r1,r1,lsr #24
13429  mov lr,pc
13430  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13431
13432  ldrh r8,[r4],#2 ;@ Fetch next opcode
13433  subs r5,r5,#18 ;@ Subtract cycles
13434  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13435  b CycloneEnd
13436
13437;@ ---------- [1f38] move.b $3333.w, -(a7) uses Op1f38 ----------
13438Op1f38:
13439;@ EaCalc : Get '$3333.w' into r0:
13440  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13441;@ EaRead : Read '$3333.w' (address in r0) into r1:
13442  mov lr,pc
13443  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13444  movs r1,r0,asl #24
13445
13446  and r10,r1,#0x80000000 ;@ r10=N_flag
13447  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13448
13449;@ EaCalc : Get '-(a7)' into r0:
13450  ldr r0,[r7,#0x3c] ;@ A7
13451  sub r0,r0,#2 ;@ Pre-decrement An
13452  str r0,[r7,#0x3c] ;@ A7
13453;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13454  mov r1,r1,lsr #24
13455  mov lr,pc
13456  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13457
13458  ldrh r8,[r4],#2 ;@ Fetch next opcode
13459  subs r5,r5,#16 ;@ Subtract cycles
13460  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13461  b CycloneEnd
13462
13463;@ ---------- [1f39] move.b $33333333.l, -(a7) uses Op1f39 ----------
13464Op1f39:
13465;@ EaCalc : Get '$33333333.l' into r0:
13466  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13467  ldrh r0,[r4],#2
13468  orr r0,r0,r2,lsl #16
13469;@ EaRead : Read '$33333333.l' (address in r0) into r1:
13470  mov lr,pc
13471  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
13472  movs r1,r0,asl #24
13473
13474  and r10,r1,#0x80000000 ;@ r10=N_flag
13475  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13476
13477;@ EaCalc : Get '-(a7)' into r0:
13478  ldr r0,[r7,#0x3c] ;@ A7
13479  sub r0,r0,#2 ;@ Pre-decrement An
13480  str r0,[r7,#0x3c] ;@ A7
13481;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13482  mov r1,r1,lsr #24
13483  mov lr,pc
13484  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13485
13486  ldrh r8,[r4],#2 ;@ Fetch next opcode
13487  subs r5,r5,#20 ;@ Subtract cycles
13488  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13489  b CycloneEnd
13490
13491;@ ---------- [1f3a] move.b ($3333,pc), -(a7); =3335 uses Op1f3a ----------
13492Op1f3a:
13493;@ EaCalc : Get '($3333,pc)' into r0:
13494  ldr r0,[r7,#0x60] ;@ Get Memory base
13495  sub r0,r4,r0 ;@ Real PC
13496  ldrsh r2,[r4],#2 ;@ Fetch extension
13497  add r0,r2,r0 ;@ ($nn,PC)
13498;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
13499  mov lr,pc
13500  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
13501  movs r1,r0,asl #24
13502
13503  and r10,r1,#0x80000000 ;@ r10=N_flag
13504  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13505
13506;@ EaCalc : Get '-(a7)' into r0:
13507  ldr r0,[r7,#0x3c] ;@ A7
13508  sub r0,r0,#2 ;@ Pre-decrement An
13509  str r0,[r7,#0x3c] ;@ A7
13510;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13511  mov r1,r1,lsr #24
13512  mov lr,pc
13513  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13514
13515  ldrh r8,[r4],#2 ;@ Fetch next opcode
13516  subs r5,r5,#16 ;@ Subtract cycles
13517  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13518  b CycloneEnd
13519
13520;@ ---------- [1f3b] move.b ($33,pc,d3.w*2), -(a7); =35 uses Op1f3b ----------
13521Op1f3b:
13522;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
13523  ldr r0,[r7,#0x60] ;@ Get Memory base
13524  ldrh r3,[r4] ;@ Get extension word
13525  sub r0,r4,r0 ;@ r0=PC
13526  add r4,r4,#2
13527  mov r2,r3,lsr #10
13528  tst r3,#0x0800 ;@ Is Rn Word or Long
13529  and r2,r2,#0x3c ;@ r2=Index of Rn
13530  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13531  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13532  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
13533  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
13534  add r0,r2,r0 ;@ r0=Disp+PC+Rn
13535;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
13536  mov lr,pc
13537  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
13538  movs r1,r0,asl #24
13539
13540  and r10,r1,#0x80000000 ;@ r10=N_flag
13541  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13542
13543;@ EaCalc : Get '-(a7)' into r0:
13544  ldr r0,[r7,#0x3c] ;@ A7
13545  sub r0,r0,#2 ;@ Pre-decrement An
13546  str r0,[r7,#0x3c] ;@ A7
13547;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13548  mov r1,r1,lsr #24
13549  mov lr,pc
13550  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13551
13552  ldrh r8,[r4],#2 ;@ Fetch next opcode
13553  subs r5,r5,#18 ;@ Subtract cycles
13554  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13555  b CycloneEnd
13556
13557;@ ---------- [1f3c] move.b #$33, -(a7) uses Op1f3c ----------
13558Op1f3c:
13559;@ EaCalc : Get '#$33' into r1:
13560  ldrsb r1,[r4],#2 ;@ Fetch immediate value
13561;@ EaRead : Read '#$33' (address in r1) into r1:
13562  movs r1,r1,asl #24
13563
13564  and r10,r1,#0x80000000 ;@ r10=N_flag
13565  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13566
13567;@ EaCalc : Get '-(a7)' into r0:
13568  ldr r0,[r7,#0x3c] ;@ A7
13569  sub r0,r0,#2 ;@ Pre-decrement An
13570  str r0,[r7,#0x3c] ;@ A7
13571;@ EaWrite: Write r1 into '-(a7)' (address in r0):
13572  mov r1,r1,lsr #24
13573  mov lr,pc
13574  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
13575
13576  ldrh r8,[r4],#2 ;@ Fetch next opcode
13577  subs r5,r5,#12 ;@ Subtract cycles
13578  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13579  b CycloneEnd
13580
13581;@ ---------- [2000] move.l d0, d0 uses Op2000 ----------
13582Op2000:
13583;@ EaCalc : Get register index into r1:
13584  and r1,r8,#0x000f
13585;@ EaRead : Read register[r1] into r1:
13586  ldr r1,[r7,r1,lsl #2]
13587  tst r1,r1
13588
13589  and r10,r1,#0x80000000 ;@ r10=N_flag
13590  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13591
13592;@ EaCalc : Get register index into r0:
13593  and r0,r8,#0x0e00
13594;@ EaWrite: r1 into register[r0]:
13595  str r1,[r7,r0,lsr #7]
13596
13597  ldrh r8,[r4],#2 ;@ Fetch next opcode
13598  subs r5,r5,#4 ;@ Subtract cycles
13599  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13600  b CycloneEnd
13601
13602;@ ---------- [2010] move.l (a0), d0 uses Op2010 ----------
13603Op2010:
13604;@ EaCalc : Get '(a0)' into r0:
13605  and r2,r8,#0x000f
13606  orr r2,r2,#0x8 ;@ A0-7
13607  ldr r0,[r7,r2,lsl #2]
13608;@ EaRead : Read '(a0)' (address in r0) into r1:
13609  mov lr,pc
13610  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13611  movs r1,r0
13612
13613  and r10,r1,#0x80000000 ;@ r10=N_flag
13614  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13615
13616;@ EaCalc : Get register index into r0:
13617  and r0,r8,#0x0e00
13618;@ EaWrite: r1 into register[r0]:
13619  str r1,[r7,r0,lsr #7]
13620
13621  ldrh r8,[r4],#2 ;@ Fetch next opcode
13622  subs r5,r5,#12 ;@ Subtract cycles
13623  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13624  b CycloneEnd
13625
13626;@ ---------- [2018] move.l (a0)+, d0 uses Op2018 ----------
13627Op2018:
13628;@ EaCalc : Get '(a0)+' into r0:
13629  and r2,r8,#0x000f
13630  ldr r0,[r7,r2,lsl #2]
13631  add r3,r0,#4 ;@ Post-increment An
13632  str r3,[r7,r2,lsl #2]
13633;@ EaRead : Read '(a0)+' (address in r0) into r1:
13634  mov lr,pc
13635  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13636  movs r1,r0
13637
13638  and r10,r1,#0x80000000 ;@ r10=N_flag
13639  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13640
13641;@ EaCalc : Get register index into r0:
13642  and r0,r8,#0x0e00
13643;@ EaWrite: r1 into register[r0]:
13644  str r1,[r7,r0,lsr #7]
13645
13646  ldrh r8,[r4],#2 ;@ Fetch next opcode
13647  subs r5,r5,#12 ;@ Subtract cycles
13648  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13649  b CycloneEnd
13650
13651;@ ---------- [2020] move.l -(a0), d0 uses Op2020 ----------
13652Op2020:
13653;@ EaCalc : Get '-(a0)' into r0:
13654  and r2,r8,#0x000f
13655  orr r2,r2,#0x8 ;@ A0-7
13656  ldr r0,[r7,r2,lsl #2]
13657  sub r0,r0,#4 ;@ Pre-decrement An
13658  str r0,[r7,r2,lsl #2]
13659;@ EaRead : Read '-(a0)' (address in r0) into r1:
13660  mov lr,pc
13661  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13662  movs r1,r0
13663
13664  and r10,r1,#0x80000000 ;@ r10=N_flag
13665  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13666
13667;@ EaCalc : Get register index into r0:
13668  and r0,r8,#0x0e00
13669;@ EaWrite: r1 into register[r0]:
13670  str r1,[r7,r0,lsr #7]
13671
13672  ldrh r8,[r4],#2 ;@ Fetch next opcode
13673  subs r5,r5,#14 ;@ Subtract cycles
13674  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13675  b CycloneEnd
13676
13677;@ ---------- [2028] move.l ($3333,a0), d0 uses Op2028 ----------
13678Op2028:
13679;@ EaCalc : Get '($3333,a0)' into r0:
13680  ldrsh r0,[r4],#2 ;@ Fetch offset
13681  and r2,r8,#0x000f
13682  ldr r2,[r7,r2,lsl #2]
13683  add r0,r0,r2 ;@ Add on offset
13684;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
13685  mov lr,pc
13686  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13687  movs r1,r0
13688
13689  and r10,r1,#0x80000000 ;@ r10=N_flag
13690  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13691
13692;@ EaCalc : Get register index into r0:
13693  and r0,r8,#0x0e00
13694;@ EaWrite: r1 into register[r0]:
13695  str r1,[r7,r0,lsr #7]
13696
13697  ldrh r8,[r4],#2 ;@ Fetch next opcode
13698  subs r5,r5,#16 ;@ Subtract cycles
13699  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13700  b CycloneEnd
13701
13702;@ ---------- [2030] move.l ($33,a0,d3.w*2), d0 uses Op2030 ----------
13703Op2030:
13704;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13705;@ Get extension word into r3:
13706  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13707  mov r2,r3,lsr #10
13708  tst r3,#0x0800 ;@ Is Rn Word or Long
13709  and r2,r2,#0x3c ;@ r2=Index of Rn
13710  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13711  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13712  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13713  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13714  and r2,r8,#0x000f
13715  orr r2,r2,#0x8 ;@ A0-7
13716  ldr r2,[r7,r2,lsl #2]
13717  add r0,r2,r3 ;@ r0=Disp+An+Rn
13718;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
13719  mov lr,pc
13720  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13721  movs r1,r0
13722
13723  and r10,r1,#0x80000000 ;@ r10=N_flag
13724  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13725
13726;@ EaCalc : Get register index into r0:
13727  and r0,r8,#0x0e00
13728;@ EaWrite: r1 into register[r0]:
13729  str r1,[r7,r0,lsr #7]
13730
13731  ldrh r8,[r4],#2 ;@ Fetch next opcode
13732  subs r5,r5,#18 ;@ Subtract cycles
13733  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13734  b CycloneEnd
13735
13736;@ ---------- [2039] move.l $33333333.l, d0 uses Op2039 ----------
13737Op2039:
13738;@ EaCalc : Get '$33333333.l' into r0:
13739  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
13740  ldrh r0,[r4],#2
13741  orr r0,r0,r2,lsl #16
13742;@ EaRead : Read '$33333333.l' (address in r0) into r1:
13743  mov lr,pc
13744  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13745  movs r1,r0
13746
13747  and r10,r1,#0x80000000 ;@ r10=N_flag
13748  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13749
13750;@ EaCalc : Get register index into r0:
13751  and r0,r8,#0x0e00
13752;@ EaWrite: r1 into register[r0]:
13753  str r1,[r7,r0,lsr #7]
13754
13755  ldrh r8,[r4],#2 ;@ Fetch next opcode
13756  subs r5,r5,#20 ;@ Subtract cycles
13757  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13758  b CycloneEnd
13759
13760;@ ---------- [203a] move.l ($3333,pc), d0; =3335 uses Op203a ----------
13761Op203a:
13762;@ EaCalc : Get '($3333,pc)' into r0:
13763  ldr r0,[r7,#0x60] ;@ Get Memory base
13764  sub r0,r4,r0 ;@ Real PC
13765  ldrsh r2,[r4],#2 ;@ Fetch extension
13766  add r0,r2,r0 ;@ ($nn,PC)
13767;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
13768  mov lr,pc
13769  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
13770  movs r1,r0
13771
13772  and r10,r1,#0x80000000 ;@ r10=N_flag
13773  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13774
13775;@ EaCalc : Get register index into r0:
13776  and r0,r8,#0x0e00
13777;@ EaWrite: r1 into register[r0]:
13778  str r1,[r7,r0,lsr #7]
13779
13780  ldrh r8,[r4],#2 ;@ Fetch next opcode
13781  subs r5,r5,#16 ;@ Subtract cycles
13782  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13783  b CycloneEnd
13784
13785;@ ---------- [203b] move.l ($33,pc,d3.w*2), d0; =35 uses Op203b ----------
13786Op203b:
13787;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
13788  ldr r0,[r7,#0x60] ;@ Get Memory base
13789  ldrh r3,[r4] ;@ Get extension word
13790  sub r0,r4,r0 ;@ r0=PC
13791  add r4,r4,#2
13792  mov r2,r3,lsr #10
13793  tst r3,#0x0800 ;@ Is Rn Word or Long
13794  and r2,r2,#0x3c ;@ r2=Index of Rn
13795  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13796  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13797  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
13798  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
13799  add r0,r2,r0 ;@ r0=Disp+PC+Rn
13800;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
13801  mov lr,pc
13802  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
13803  movs r1,r0
13804
13805  and r10,r1,#0x80000000 ;@ r10=N_flag
13806  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13807
13808;@ EaCalc : Get register index into r0:
13809  and r0,r8,#0x0e00
13810;@ EaWrite: r1 into register[r0]:
13811  str r1,[r7,r0,lsr #7]
13812
13813  ldrh r8,[r4],#2 ;@ Fetch next opcode
13814  subs r5,r5,#18 ;@ Subtract cycles
13815  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13816  b CycloneEnd
13817
13818;@ ---------- [203c] move.l #$33333333, d0 uses Op203c ----------
13819Op203c:
13820;@ EaCalc : Get '#$33333333' into r1:
13821  ldrh r2,[r4],#2 ;@ Fetch immediate value
13822  ldrh r3,[r4],#2
13823  orr r1,r3,r2,lsl #16
13824;@ EaRead : Read '#$33333333' (address in r1) into r1:
13825  tst r1,r1
13826
13827  and r10,r1,#0x80000000 ;@ r10=N_flag
13828  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
13829
13830;@ EaCalc : Get register index into r0:
13831  and r0,r8,#0x0e00
13832;@ EaWrite: r1 into register[r0]:
13833  str r1,[r7,r0,lsr #7]
13834
13835  ldrh r8,[r4],#2 ;@ Fetch next opcode
13836  subs r5,r5,#12 ;@ Subtract cycles
13837  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13838  b CycloneEnd
13839
13840;@ ---------- [2040] movea.l d0, a0 uses Op2040 ----------
13841Op2040:
13842;@ EaCalc : Get register index into r1:
13843  and r1,r8,#0x000f
13844;@ EaRead : Read register[r1] into r1:
13845  ldr r1,[r7,r1,lsl #2]
13846
13847;@ EaCalc : Get register index into r0:
13848  and r0,r8,#0x0e00
13849  orr r0,r0,#0x1000 ;@ A0-7
13850;@ EaWrite: r1 into register[r0]:
13851  str r1,[r7,r0,lsr #7]
13852
13853  ldrh r8,[r4],#2 ;@ Fetch next opcode
13854  subs r5,r5,#4 ;@ Subtract cycles
13855  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13856  b CycloneEnd
13857
13858;@ ---------- [2050] movea.l (a0), a0 uses Op2050 ----------
13859Op2050:
13860;@ EaCalc : Get '(a0)' into r0:
13861  and r2,r8,#0x000f
13862  orr r2,r2,#0x8 ;@ A0-7
13863  ldr r0,[r7,r2,lsl #2]
13864;@ EaRead : Read '(a0)' (address in r0) into r1:
13865  mov lr,pc
13866  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13867  mov r1,r0
13868
13869;@ EaCalc : Get register index into r0:
13870  and r0,r8,#0x0e00
13871  orr r0,r0,#0x1000 ;@ A0-7
13872;@ EaWrite: r1 into register[r0]:
13873  str r1,[r7,r0,lsr #7]
13874
13875  ldrh r8,[r4],#2 ;@ Fetch next opcode
13876  subs r5,r5,#12 ;@ Subtract cycles
13877  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13878  b CycloneEnd
13879
13880;@ ---------- [2058] movea.l (a0)+, a0 uses Op2058 ----------
13881Op2058:
13882;@ EaCalc : Get '(a0)+' into r0:
13883  and r2,r8,#0x000f
13884  ldr r0,[r7,r2,lsl #2]
13885  add r3,r0,#4 ;@ Post-increment An
13886  str r3,[r7,r2,lsl #2]
13887;@ EaRead : Read '(a0)+' (address in r0) into r1:
13888  mov lr,pc
13889  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13890  mov r1,r0
13891
13892;@ EaCalc : Get register index into r0:
13893  and r0,r8,#0x0e00
13894  orr r0,r0,#0x1000 ;@ A0-7
13895;@ EaWrite: r1 into register[r0]:
13896  str r1,[r7,r0,lsr #7]
13897
13898  ldrh r8,[r4],#2 ;@ Fetch next opcode
13899  subs r5,r5,#12 ;@ Subtract cycles
13900  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13901  b CycloneEnd
13902
13903;@ ---------- [2060] movea.l -(a0), a0 uses Op2060 ----------
13904Op2060:
13905;@ EaCalc : Get '-(a0)' into r0:
13906  and r2,r8,#0x000f
13907  orr r2,r2,#0x8 ;@ A0-7
13908  ldr r0,[r7,r2,lsl #2]
13909  sub r0,r0,#4 ;@ Pre-decrement An
13910  str r0,[r7,r2,lsl #2]
13911;@ EaRead : Read '-(a0)' (address in r0) into r1:
13912  mov lr,pc
13913  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13914  mov r1,r0
13915
13916;@ EaCalc : Get register index into r0:
13917  and r0,r8,#0x0e00
13918  orr r0,r0,#0x1000 ;@ A0-7
13919;@ EaWrite: r1 into register[r0]:
13920  str r1,[r7,r0,lsr #7]
13921
13922  ldrh r8,[r4],#2 ;@ Fetch next opcode
13923  subs r5,r5,#14 ;@ Subtract cycles
13924  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13925  b CycloneEnd
13926
13927;@ ---------- [2068] movea.l ($3333,a0), a0 uses Op2068 ----------
13928Op2068:
13929;@ EaCalc : Get '($3333,a0)' into r0:
13930  ldrsh r0,[r4],#2 ;@ Fetch offset
13931  and r2,r8,#0x000f
13932  ldr r2,[r7,r2,lsl #2]
13933  add r0,r0,r2 ;@ Add on offset
13934;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
13935  mov lr,pc
13936  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13937  mov r1,r0
13938
13939;@ EaCalc : Get register index into r0:
13940  and r0,r8,#0x0e00
13941  orr r0,r0,#0x1000 ;@ A0-7
13942;@ EaWrite: r1 into register[r0]:
13943  str r1,[r7,r0,lsr #7]
13944
13945  ldrh r8,[r4],#2 ;@ Fetch next opcode
13946  subs r5,r5,#16 ;@ Subtract cycles
13947  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13948  b CycloneEnd
13949
13950;@ ---------- [2070] movea.l ($33,a0,d3.w*2), a0 uses Op2070 ----------
13951Op2070:
13952;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
13953;@ Get extension word into r3:
13954  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
13955  mov r2,r3,lsr #10
13956  tst r3,#0x0800 ;@ Is Rn Word or Long
13957  and r2,r2,#0x3c ;@ r2=Index of Rn
13958  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
13959  ldrne   r2,[r7,r2] ;@ r2=Rn.l
13960  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
13961  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
13962  and r2,r8,#0x000f
13963  orr r2,r2,#0x8 ;@ A0-7
13964  ldr r2,[r7,r2,lsl #2]
13965  add r0,r2,r3 ;@ r0=Disp+An+Rn
13966;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
13967  mov lr,pc
13968  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13969  mov r1,r0
13970
13971;@ EaCalc : Get register index into r0:
13972  and r0,r8,#0x0e00
13973  orr r0,r0,#0x1000 ;@ A0-7
13974;@ EaWrite: r1 into register[r0]:
13975  str r1,[r7,r0,lsr #7]
13976
13977  ldrh r8,[r4],#2 ;@ Fetch next opcode
13978  subs r5,r5,#18 ;@ Subtract cycles
13979  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
13980  b CycloneEnd
13981
13982;@ ---------- [2078] movea.l $3333.w, a0 uses Op2078 ----------
13983Op2078:
13984;@ EaCalc : Get '$3333.w' into r0:
13985  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
13986;@ EaRead : Read '$3333.w' (address in r0) into r1:
13987  mov lr,pc
13988  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
13989  mov r1,r0
13990
13991;@ EaCalc : Get register index into r0:
13992  and r0,r8,#0x0e00
13993  orr r0,r0,#0x1000 ;@ A0-7
13994;@ EaWrite: r1 into register[r0]:
13995  str r1,[r7,r0,lsr #7]
13996
13997  ldrh r8,[r4],#2 ;@ Fetch next opcode
13998  subs r5,r5,#16 ;@ Subtract cycles
13999  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14000  b CycloneEnd
14001
14002;@ ---------- [2079] movea.l $33333333.l, a0 uses Op2079 ----------
14003Op2079:
14004;@ EaCalc : Get '$33333333.l' into r0:
14005  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14006  ldrh r0,[r4],#2
14007  orr r0,r0,r2,lsl #16
14008;@ EaRead : Read '$33333333.l' (address in r0) into r1:
14009  mov lr,pc
14010  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14011  mov r1,r0
14012
14013;@ EaCalc : Get register index into r0:
14014  and r0,r8,#0x0e00
14015  orr r0,r0,#0x1000 ;@ A0-7
14016;@ EaWrite: r1 into register[r0]:
14017  str r1,[r7,r0,lsr #7]
14018
14019  ldrh r8,[r4],#2 ;@ Fetch next opcode
14020  subs r5,r5,#20 ;@ Subtract cycles
14021  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14022  b CycloneEnd
14023
14024;@ ---------- [207a] movea.l ($3333,pc), a0; =3335 uses Op207a ----------
14025Op207a:
14026;@ EaCalc : Get '($3333,pc)' into r0:
14027  ldr r0,[r7,#0x60] ;@ Get Memory base
14028  sub r0,r4,r0 ;@ Real PC
14029  ldrsh r2,[r4],#2 ;@ Fetch extension
14030  add r0,r2,r0 ;@ ($nn,PC)
14031;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
14032  mov lr,pc
14033  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
14034  mov r1,r0
14035
14036;@ EaCalc : Get register index into r0:
14037  and r0,r8,#0x0e00
14038  orr r0,r0,#0x1000 ;@ A0-7
14039;@ EaWrite: r1 into register[r0]:
14040  str r1,[r7,r0,lsr #7]
14041
14042  ldrh r8,[r4],#2 ;@ Fetch next opcode
14043  subs r5,r5,#16 ;@ Subtract cycles
14044  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14045  b CycloneEnd
14046
14047;@ ---------- [207b] movea.l ($33,pc,d3.w*2), a0; =35 uses Op207b ----------
14048Op207b:
14049;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
14050  ldr r0,[r7,#0x60] ;@ Get Memory base
14051  ldrh r3,[r4] ;@ Get extension word
14052  sub r0,r4,r0 ;@ r0=PC
14053  add r4,r4,#2
14054  mov r2,r3,lsr #10
14055  tst r3,#0x0800 ;@ Is Rn Word or Long
14056  and r2,r2,#0x3c ;@ r2=Index of Rn
14057  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14058  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14059  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
14060  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
14061  add r0,r2,r0 ;@ r0=Disp+PC+Rn
14062;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
14063  mov lr,pc
14064  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
14065  mov r1,r0
14066
14067;@ EaCalc : Get register index into r0:
14068  and r0,r8,#0x0e00
14069  orr r0,r0,#0x1000 ;@ A0-7
14070;@ EaWrite: r1 into register[r0]:
14071  str r1,[r7,r0,lsr #7]
14072
14073  ldrh r8,[r4],#2 ;@ Fetch next opcode
14074  subs r5,r5,#18 ;@ Subtract cycles
14075  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14076  b CycloneEnd
14077
14078;@ ---------- [207c] movea.l #$33333333, a0 uses Op207c ----------
14079Op207c:
14080;@ EaCalc : Get '#$33333333' into r1:
14081  ldrh r2,[r4],#2 ;@ Fetch immediate value
14082  ldrh r3,[r4],#2
14083  orr r1,r3,r2,lsl #16
14084;@ EaRead : Read '#$33333333' (address in r1) into r1:
14085
14086;@ EaCalc : Get register index into r0:
14087  and r0,r8,#0x0e00
14088  orr r0,r0,#0x1000 ;@ A0-7
14089;@ EaWrite: r1 into register[r0]:
14090  str r1,[r7,r0,lsr #7]
14091
14092  ldrh r8,[r4],#2 ;@ Fetch next opcode
14093  subs r5,r5,#12 ;@ Subtract cycles
14094  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14095  b CycloneEnd
14096
14097;@ ---------- [2080] move.l d0, (a0) uses Op2080 ----------
14098Op2080:
14099;@ EaCalc : Get register index into r1:
14100  and r1,r8,#0x000f
14101;@ EaRead : Read register[r1] into r1:
14102  ldr r1,[r7,r1,lsl #2]
14103  tst r1,r1
14104
14105  and r10,r1,#0x80000000 ;@ r10=N_flag
14106  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14107
14108;@ EaCalc : Get '(a0)' into r0:
14109  and r2,r8,#0x0e00
14110  orr r2,r2,#0x1000 ;@ A0-7
14111  ldr r0,[r7,r2,lsr #7]
14112;@ EaWrite: Write r1 into '(a0)' (address in r0):
14113  mov lr,pc
14114  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14115
14116  ldrh r8,[r4],#2 ;@ Fetch next opcode
14117  subs r5,r5,#12 ;@ Subtract cycles
14118  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14119  b CycloneEnd
14120
14121;@ ---------- [2090] move.l (a0), (a0) uses Op2090 ----------
14122Op2090:
14123;@ EaCalc : Get '(a0)' into r0:
14124  and r2,r8,#0x000f
14125  orr r2,r2,#0x8 ;@ A0-7
14126  ldr r0,[r7,r2,lsl #2]
14127;@ EaRead : Read '(a0)' (address in r0) into r1:
14128  mov lr,pc
14129  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14130  movs r1,r0
14131
14132  and r10,r1,#0x80000000 ;@ r10=N_flag
14133  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14134
14135;@ EaCalc : Get '(a0)' into r0:
14136  and r2,r8,#0x0e00
14137  orr r2,r2,#0x1000 ;@ A0-7
14138  ldr r0,[r7,r2,lsr #7]
14139;@ EaWrite: Write r1 into '(a0)' (address in r0):
14140  mov lr,pc
14141  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14142
14143  ldrh r8,[r4],#2 ;@ Fetch next opcode
14144  subs r5,r5,#20 ;@ Subtract cycles
14145  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14146  b CycloneEnd
14147
14148;@ ---------- [2098] move.l (a0)+, (a0) uses Op2098 ----------
14149Op2098:
14150;@ EaCalc : Get '(a0)+' into r0:
14151  and r2,r8,#0x000f
14152  ldr r0,[r7,r2,lsl #2]
14153  add r3,r0,#4 ;@ Post-increment An
14154  str r3,[r7,r2,lsl #2]
14155;@ EaRead : Read '(a0)+' (address in r0) into r1:
14156  mov lr,pc
14157  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14158  movs r1,r0
14159
14160  and r10,r1,#0x80000000 ;@ r10=N_flag
14161  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14162
14163;@ EaCalc : Get '(a0)' into r0:
14164  and r2,r8,#0x0e00
14165  orr r2,r2,#0x1000 ;@ A0-7
14166  ldr r0,[r7,r2,lsr #7]
14167;@ EaWrite: Write r1 into '(a0)' (address in r0):
14168  mov lr,pc
14169  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14170
14171  ldrh r8,[r4],#2 ;@ Fetch next opcode
14172  subs r5,r5,#20 ;@ Subtract cycles
14173  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14174  b CycloneEnd
14175
14176;@ ---------- [20a0] move.l -(a0), (a0) uses Op20a0 ----------
14177Op20a0:
14178;@ EaCalc : Get '-(a0)' into r0:
14179  and r2,r8,#0x000f
14180  orr r2,r2,#0x8 ;@ A0-7
14181  ldr r0,[r7,r2,lsl #2]
14182  sub r0,r0,#4 ;@ Pre-decrement An
14183  str r0,[r7,r2,lsl #2]
14184;@ EaRead : Read '-(a0)' (address in r0) into r1:
14185  mov lr,pc
14186  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14187  movs r1,r0
14188
14189  and r10,r1,#0x80000000 ;@ r10=N_flag
14190  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14191
14192;@ EaCalc : Get '(a0)' into r0:
14193  and r2,r8,#0x0e00
14194  orr r2,r2,#0x1000 ;@ A0-7
14195  ldr r0,[r7,r2,lsr #7]
14196;@ EaWrite: Write r1 into '(a0)' (address in r0):
14197  mov lr,pc
14198  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14199
14200  ldrh r8,[r4],#2 ;@ Fetch next opcode
14201  subs r5,r5,#22 ;@ Subtract cycles
14202  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14203  b CycloneEnd
14204
14205;@ ---------- [20a8] move.l ($3333,a0), (a0) uses Op20a8 ----------
14206Op20a8:
14207;@ EaCalc : Get '($3333,a0)' into r0:
14208  ldrsh r0,[r4],#2 ;@ Fetch offset
14209  and r2,r8,#0x000f
14210  ldr r2,[r7,r2,lsl #2]
14211  add r0,r0,r2 ;@ Add on offset
14212;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
14213  mov lr,pc
14214  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14215  movs r1,r0
14216
14217  and r10,r1,#0x80000000 ;@ r10=N_flag
14218  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14219
14220;@ EaCalc : Get '(a0)' into r0:
14221  and r2,r8,#0x0e00
14222  orr r2,r2,#0x1000 ;@ A0-7
14223  ldr r0,[r7,r2,lsr #7]
14224;@ EaWrite: Write r1 into '(a0)' (address in r0):
14225  mov lr,pc
14226  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14227
14228  ldrh r8,[r4],#2 ;@ Fetch next opcode
14229  subs r5,r5,#24 ;@ Subtract cycles
14230  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14231  b CycloneEnd
14232
14233;@ ---------- [20b0] move.l ($33,a0,d3.w*2), (a0) uses Op20b0 ----------
14234Op20b0:
14235;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
14236;@ Get extension word into r3:
14237  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
14238  mov r2,r3,lsr #10
14239  tst r3,#0x0800 ;@ Is Rn Word or Long
14240  and r2,r2,#0x3c ;@ r2=Index of Rn
14241  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14242  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14243  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
14244  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
14245  and r2,r8,#0x000f
14246  orr r2,r2,#0x8 ;@ A0-7
14247  ldr r2,[r7,r2,lsl #2]
14248  add r0,r2,r3 ;@ r0=Disp+An+Rn
14249;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
14250  mov lr,pc
14251  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14252  movs r1,r0
14253
14254  and r10,r1,#0x80000000 ;@ r10=N_flag
14255  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14256
14257;@ EaCalc : Get '(a0)' into r0:
14258  and r2,r8,#0x0e00
14259  orr r2,r2,#0x1000 ;@ A0-7
14260  ldr r0,[r7,r2,lsr #7]
14261;@ EaWrite: Write r1 into '(a0)' (address in r0):
14262  mov lr,pc
14263  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14264
14265  ldrh r8,[r4],#2 ;@ Fetch next opcode
14266  subs r5,r5,#26 ;@ Subtract cycles
14267  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14268  b CycloneEnd
14269
14270;@ ---------- [20b8] move.l $3333.w, (a0) uses Op20b8 ----------
14271Op20b8:
14272;@ EaCalc : Get '$3333.w' into r0:
14273  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
14274;@ EaRead : Read '$3333.w' (address in r0) into r1:
14275  mov lr,pc
14276  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14277  movs r1,r0
14278
14279  and r10,r1,#0x80000000 ;@ r10=N_flag
14280  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14281
14282;@ EaCalc : Get '(a0)' into r0:
14283  and r2,r8,#0x0e00
14284  orr r2,r2,#0x1000 ;@ A0-7
14285  ldr r0,[r7,r2,lsr #7]
14286;@ EaWrite: Write r1 into '(a0)' (address in r0):
14287  mov lr,pc
14288  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14289
14290  ldrh r8,[r4],#2 ;@ Fetch next opcode
14291  subs r5,r5,#24 ;@ Subtract cycles
14292  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14293  b CycloneEnd
14294
14295;@ ---------- [20b9] move.l $33333333.l, (a0) uses Op20b9 ----------
14296Op20b9:
14297;@ EaCalc : Get '$33333333.l' into r0:
14298  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14299  ldrh r0,[r4],#2
14300  orr r0,r0,r2,lsl #16
14301;@ EaRead : Read '$33333333.l' (address in r0) into r1:
14302  mov lr,pc
14303  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14304  movs r1,r0
14305
14306  and r10,r1,#0x80000000 ;@ r10=N_flag
14307  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14308
14309;@ EaCalc : Get '(a0)' into r0:
14310  and r2,r8,#0x0e00
14311  orr r2,r2,#0x1000 ;@ A0-7
14312  ldr r0,[r7,r2,lsr #7]
14313;@ EaWrite: Write r1 into '(a0)' (address in r0):
14314  mov lr,pc
14315  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14316
14317  ldrh r8,[r4],#2 ;@ Fetch next opcode
14318  subs r5,r5,#28 ;@ Subtract cycles
14319  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14320  b CycloneEnd
14321
14322;@ ---------- [20ba] move.l ($3333,pc), (a0); =3335 uses Op20ba ----------
14323Op20ba:
14324;@ EaCalc : Get '($3333,pc)' into r0:
14325  ldr r0,[r7,#0x60] ;@ Get Memory base
14326  sub r0,r4,r0 ;@ Real PC
14327  ldrsh r2,[r4],#2 ;@ Fetch extension
14328  add r0,r2,r0 ;@ ($nn,PC)
14329;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
14330  mov lr,pc
14331  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
14332  movs r1,r0
14333
14334  and r10,r1,#0x80000000 ;@ r10=N_flag
14335  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14336
14337;@ EaCalc : Get '(a0)' into r0:
14338  and r2,r8,#0x0e00
14339  orr r2,r2,#0x1000 ;@ A0-7
14340  ldr r0,[r7,r2,lsr #7]
14341;@ EaWrite: Write r1 into '(a0)' (address in r0):
14342  mov lr,pc
14343  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14344
14345  ldrh r8,[r4],#2 ;@ Fetch next opcode
14346  subs r5,r5,#24 ;@ Subtract cycles
14347  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14348  b CycloneEnd
14349
14350;@ ---------- [20bb] move.l ($33,pc,d3.w*2), (a0); =35 uses Op20bb ----------
14351Op20bb:
14352;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
14353  ldr r0,[r7,#0x60] ;@ Get Memory base
14354  ldrh r3,[r4] ;@ Get extension word
14355  sub r0,r4,r0 ;@ r0=PC
14356  add r4,r4,#2
14357  mov r2,r3,lsr #10
14358  tst r3,#0x0800 ;@ Is Rn Word or Long
14359  and r2,r2,#0x3c ;@ r2=Index of Rn
14360  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14361  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14362  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
14363  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
14364  add r0,r2,r0 ;@ r0=Disp+PC+Rn
14365;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
14366  mov lr,pc
14367  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
14368  movs r1,r0
14369
14370  and r10,r1,#0x80000000 ;@ r10=N_flag
14371  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14372
14373;@ EaCalc : Get '(a0)' into r0:
14374  and r2,r8,#0x0e00
14375  orr r2,r2,#0x1000 ;@ A0-7
14376  ldr r0,[r7,r2,lsr #7]
14377;@ EaWrite: Write r1 into '(a0)' (address in r0):
14378  mov lr,pc
14379  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14380
14381  ldrh r8,[r4],#2 ;@ Fetch next opcode
14382  subs r5,r5,#26 ;@ Subtract cycles
14383  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14384  b CycloneEnd
14385
14386;@ ---------- [20bc] move.l #$33333333, (a0) uses Op20bc ----------
14387Op20bc:
14388;@ EaCalc : Get '#$33333333' into r1:
14389  ldrh r2,[r4],#2 ;@ Fetch immediate value
14390  ldrh r3,[r4],#2
14391  orr r1,r3,r2,lsl #16
14392;@ EaRead : Read '#$33333333' (address in r1) into r1:
14393  tst r1,r1
14394
14395  and r10,r1,#0x80000000 ;@ r10=N_flag
14396  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14397
14398;@ EaCalc : Get '(a0)' into r0:
14399  and r2,r8,#0x0e00
14400  orr r2,r2,#0x1000 ;@ A0-7
14401  ldr r0,[r7,r2,lsr #7]
14402;@ EaWrite: Write r1 into '(a0)' (address in r0):
14403  mov lr,pc
14404  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14405
14406  ldrh r8,[r4],#2 ;@ Fetch next opcode
14407  subs r5,r5,#20 ;@ Subtract cycles
14408  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14409  b CycloneEnd
14410
14411;@ ---------- [20d0] move.l (a0), (a0)+ uses Op20d0 ----------
14412Op20d0:
14413;@ EaCalc : Get '(a0)' into r0:
14414  and r2,r8,#0x000f
14415  orr r2,r2,#0x8 ;@ A0-7
14416  ldr r0,[r7,r2,lsl #2]
14417;@ EaRead : Read '(a0)' (address in r0) into r1:
14418  mov lr,pc
14419  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14420  movs r1,r0
14421
14422  and r10,r1,#0x80000000 ;@ r10=N_flag
14423  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14424
14425;@ EaCalc : Get '(a0)+' into r0:
14426  and r2,r8,#0x0e00
14427  orr r2,r2,#0x1000 ;@ A0-7
14428  ldr r0,[r7,r2,lsr #7]
14429  add r3,r0,#4 ;@ Post-increment An
14430  str r3,[r7,r2,lsr #7]
14431;@ EaWrite: Write r1 into '(a0)+' (address in r0):
14432  mov lr,pc
14433  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14434
14435  ldrh r8,[r4],#2 ;@ Fetch next opcode
14436  subs r5,r5,#20 ;@ Subtract cycles
14437  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14438  b CycloneEnd
14439
14440;@ ---------- [20d8] move.l (a0)+, (a0)+ uses Op20d8 ----------
14441Op20d8:
14442;@ EaCalc : Get '(a0)+' into r0:
14443  and r2,r8,#0x000f
14444  ldr r0,[r7,r2,lsl #2]
14445  add r3,r0,#4 ;@ Post-increment An
14446  str r3,[r7,r2,lsl #2]
14447;@ EaRead : Read '(a0)+' (address in r0) into r1:
14448  mov lr,pc
14449  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14450  movs r1,r0
14451
14452  and r10,r1,#0x80000000 ;@ r10=N_flag
14453  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14454
14455;@ EaCalc : Get '(a0)+' into r0:
14456  and r2,r8,#0x0e00
14457  orr r2,r2,#0x1000 ;@ A0-7
14458  ldr r0,[r7,r2,lsr #7]
14459  add r3,r0,#4 ;@ Post-increment An
14460  str r3,[r7,r2,lsr #7]
14461;@ EaWrite: Write r1 into '(a0)+' (address in r0):
14462  mov lr,pc
14463  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14464
14465  ldrh r8,[r4],#2 ;@ Fetch next opcode
14466  subs r5,r5,#20 ;@ Subtract cycles
14467  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14468  b CycloneEnd
14469
14470;@ ---------- [20e0] move.l -(a0), (a0)+ uses Op20e0 ----------
14471Op20e0:
14472;@ EaCalc : Get '-(a0)' into r0:
14473  and r2,r8,#0x000f
14474  orr r2,r2,#0x8 ;@ A0-7
14475  ldr r0,[r7,r2,lsl #2]
14476  sub r0,r0,#4 ;@ Pre-decrement An
14477  str r0,[r7,r2,lsl #2]
14478;@ EaRead : Read '-(a0)' (address in r0) into r1:
14479  mov lr,pc
14480  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14481  movs r1,r0
14482
14483  and r10,r1,#0x80000000 ;@ r10=N_flag
14484  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14485
14486;@ EaCalc : Get '(a0)+' into r0:
14487  and r2,r8,#0x0e00
14488  orr r2,r2,#0x1000 ;@ A0-7
14489  ldr r0,[r7,r2,lsr #7]
14490  add r3,r0,#4 ;@ Post-increment An
14491  str r3,[r7,r2,lsr #7]
14492;@ EaWrite: Write r1 into '(a0)+' (address in r0):
14493  mov lr,pc
14494  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14495
14496  ldrh r8,[r4],#2 ;@ Fetch next opcode
14497  subs r5,r5,#22 ;@ Subtract cycles
14498  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14499  b CycloneEnd
14500
14501;@ ---------- [20e8] move.l ($3333,a0), (a0)+ uses Op20e8 ----------
14502Op20e8:
14503;@ EaCalc : Get '($3333,a0)' into r0:
14504  ldrsh r0,[r4],#2 ;@ Fetch offset
14505  and r2,r8,#0x000f
14506  ldr r2,[r7,r2,lsl #2]
14507  add r0,r0,r2 ;@ Add on offset
14508;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
14509  mov lr,pc
14510  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14511  movs r1,r0
14512
14513  and r10,r1,#0x80000000 ;@ r10=N_flag
14514  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14515
14516;@ EaCalc : Get '(a0)+' into r0:
14517  and r2,r8,#0x0e00
14518  orr r2,r2,#0x1000 ;@ A0-7
14519  ldr r0,[r7,r2,lsr #7]
14520  add r3,r0,#4 ;@ Post-increment An
14521  str r3,[r7,r2,lsr #7]
14522;@ EaWrite: Write r1 into '(a0)+' (address in r0):
14523  mov lr,pc
14524  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14525
14526  ldrh r8,[r4],#2 ;@ Fetch next opcode
14527  subs r5,r5,#24 ;@ Subtract cycles
14528  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14529  b CycloneEnd
14530
14531;@ ---------- [20f0] move.l ($33,a0,d3.w*2), (a0)+ uses Op20f0 ----------
14532Op20f0:
14533;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
14534;@ Get extension word into r3:
14535  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
14536  mov r2,r3,lsr #10
14537  tst r3,#0x0800 ;@ Is Rn Word or Long
14538  and r2,r2,#0x3c ;@ r2=Index of Rn
14539  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14540  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14541  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
14542  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
14543  and r2,r8,#0x000f
14544  orr r2,r2,#0x8 ;@ A0-7
14545  ldr r2,[r7,r2,lsl #2]
14546  add r0,r2,r3 ;@ r0=Disp+An+Rn
14547;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
14548  mov lr,pc
14549  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14550  movs r1,r0
14551
14552  and r10,r1,#0x80000000 ;@ r10=N_flag
14553  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14554
14555;@ EaCalc : Get '(a0)+' into r0:
14556  and r2,r8,#0x0e00
14557  orr r2,r2,#0x1000 ;@ A0-7
14558  ldr r0,[r7,r2,lsr #7]
14559  add r3,r0,#4 ;@ Post-increment An
14560  str r3,[r7,r2,lsr #7]
14561;@ EaWrite: Write r1 into '(a0)+' (address in r0):
14562  mov lr,pc
14563  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14564
14565  ldrh r8,[r4],#2 ;@ Fetch next opcode
14566  subs r5,r5,#26 ;@ Subtract cycles
14567  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14568  b CycloneEnd
14569
14570;@ ---------- [20f8] move.l $3333.w, (a0)+ uses Op20f8 ----------
14571Op20f8:
14572;@ EaCalc : Get '$3333.w' into r0:
14573  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
14574;@ EaRead : Read '$3333.w' (address in r0) into r1:
14575  mov lr,pc
14576  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14577  movs r1,r0
14578
14579  and r10,r1,#0x80000000 ;@ r10=N_flag
14580  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14581
14582;@ EaCalc : Get '(a0)+' into r0:
14583  and r2,r8,#0x0e00
14584  orr r2,r2,#0x1000 ;@ A0-7
14585  ldr r0,[r7,r2,lsr #7]
14586  add r3,r0,#4 ;@ Post-increment An
14587  str r3,[r7,r2,lsr #7]
14588;@ EaWrite: Write r1 into '(a0)+' (address in r0):
14589  mov lr,pc
14590  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14591
14592  ldrh r8,[r4],#2 ;@ Fetch next opcode
14593  subs r5,r5,#24 ;@ Subtract cycles
14594  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14595  b CycloneEnd
14596
14597;@ ---------- [20f9] move.l $33333333.l, (a0)+ uses Op20f9 ----------
14598Op20f9:
14599;@ EaCalc : Get '$33333333.l' into r0:
14600  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14601  ldrh r0,[r4],#2
14602  orr r0,r0,r2,lsl #16
14603;@ EaRead : Read '$33333333.l' (address in r0) into r1:
14604  mov lr,pc
14605  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14606  movs r1,r0
14607
14608  and r10,r1,#0x80000000 ;@ r10=N_flag
14609  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14610
14611;@ EaCalc : Get '(a0)+' into r0:
14612  and r2,r8,#0x0e00
14613  orr r2,r2,#0x1000 ;@ A0-7
14614  ldr r0,[r7,r2,lsr #7]
14615  add r3,r0,#4 ;@ Post-increment An
14616  str r3,[r7,r2,lsr #7]
14617;@ EaWrite: Write r1 into '(a0)+' (address in r0):
14618  mov lr,pc
14619  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14620
14621  ldrh r8,[r4],#2 ;@ Fetch next opcode
14622  subs r5,r5,#28 ;@ Subtract cycles
14623  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14624  b CycloneEnd
14625
14626;@ ---------- [20fa] move.l ($3333,pc), (a0)+; =3335 uses Op20fa ----------
14627Op20fa:
14628;@ EaCalc : Get '($3333,pc)' into r0:
14629  ldr r0,[r7,#0x60] ;@ Get Memory base
14630  sub r0,r4,r0 ;@ Real PC
14631  ldrsh r2,[r4],#2 ;@ Fetch extension
14632  add r0,r2,r0 ;@ ($nn,PC)
14633;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
14634  mov lr,pc
14635  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
14636  movs r1,r0
14637
14638  and r10,r1,#0x80000000 ;@ r10=N_flag
14639  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14640
14641;@ EaCalc : Get '(a0)+' into r0:
14642  and r2,r8,#0x0e00
14643  orr r2,r2,#0x1000 ;@ A0-7
14644  ldr r0,[r7,r2,lsr #7]
14645  add r3,r0,#4 ;@ Post-increment An
14646  str r3,[r7,r2,lsr #7]
14647;@ EaWrite: Write r1 into '(a0)+' (address in r0):
14648  mov lr,pc
14649  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14650
14651  ldrh r8,[r4],#2 ;@ Fetch next opcode
14652  subs r5,r5,#24 ;@ Subtract cycles
14653  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14654  b CycloneEnd
14655
14656;@ ---------- [20fb] move.l ($33,pc,d3.w*2), (a0)+; =35 uses Op20fb ----------
14657Op20fb:
14658;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
14659  ldr r0,[r7,#0x60] ;@ Get Memory base
14660  ldrh r3,[r4] ;@ Get extension word
14661  sub r0,r4,r0 ;@ r0=PC
14662  add r4,r4,#2
14663  mov r2,r3,lsr #10
14664  tst r3,#0x0800 ;@ Is Rn Word or Long
14665  and r2,r2,#0x3c ;@ r2=Index of Rn
14666  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14667  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14668  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
14669  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
14670  add r0,r2,r0 ;@ r0=Disp+PC+Rn
14671;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
14672  mov lr,pc
14673  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
14674  movs r1,r0
14675
14676  and r10,r1,#0x80000000 ;@ r10=N_flag
14677  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14678
14679;@ EaCalc : Get '(a0)+' into r0:
14680  and r2,r8,#0x0e00
14681  orr r2,r2,#0x1000 ;@ A0-7
14682  ldr r0,[r7,r2,lsr #7]
14683  add r3,r0,#4 ;@ Post-increment An
14684  str r3,[r7,r2,lsr #7]
14685;@ EaWrite: Write r1 into '(a0)+' (address in r0):
14686  mov lr,pc
14687  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14688
14689  ldrh r8,[r4],#2 ;@ Fetch next opcode
14690  subs r5,r5,#26 ;@ Subtract cycles
14691  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14692  b CycloneEnd
14693
14694;@ ---------- [20fc] move.l #$33333333, (a0)+ uses Op20fc ----------
14695Op20fc:
14696;@ EaCalc : Get '#$33333333' into r1:
14697  ldrh r2,[r4],#2 ;@ Fetch immediate value
14698  ldrh r3,[r4],#2
14699  orr r1,r3,r2,lsl #16
14700;@ EaRead : Read '#$33333333' (address in r1) into r1:
14701  tst r1,r1
14702
14703  and r10,r1,#0x80000000 ;@ r10=N_flag
14704  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14705
14706;@ EaCalc : Get '(a0)+' into r0:
14707  and r2,r8,#0x0e00
14708  orr r2,r2,#0x1000 ;@ A0-7
14709  ldr r0,[r7,r2,lsr #7]
14710  add r3,r0,#4 ;@ Post-increment An
14711  str r3,[r7,r2,lsr #7]
14712;@ EaWrite: Write r1 into '(a0)+' (address in r0):
14713  mov lr,pc
14714  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14715
14716  ldrh r8,[r4],#2 ;@ Fetch next opcode
14717  subs r5,r5,#20 ;@ Subtract cycles
14718  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14719  b CycloneEnd
14720
14721;@ ---------- [2100] move.l d0, -(a0) uses Op2100 ----------
14722Op2100:
14723;@ EaCalc : Get register index into r1:
14724  and r1,r8,#0x000f
14725;@ EaRead : Read register[r1] into r1:
14726  ldr r1,[r7,r1,lsl #2]
14727  tst r1,r1
14728
14729  and r10,r1,#0x80000000 ;@ r10=N_flag
14730  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14731
14732;@ EaCalc : Get '-(a0)' into r0:
14733  and r2,r8,#0x0e00
14734  orr r2,r2,#0x1000 ;@ A0-7
14735  ldr r0,[r7,r2,lsr #7]
14736  sub r0,r0,#4 ;@ Pre-decrement An
14737  str r0,[r7,r2,lsr #7]
14738;@ EaWrite: Write r1 into '-(a0)' (address in r0):
14739  mov lr,pc
14740  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14741
14742  ldrh r8,[r4],#2 ;@ Fetch next opcode
14743  subs r5,r5,#12 ;@ Subtract cycles
14744  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14745  b CycloneEnd
14746
14747;@ ---------- [2110] move.l (a0), -(a0) uses Op2110 ----------
14748Op2110:
14749;@ EaCalc : Get '(a0)' into r0:
14750  and r2,r8,#0x000f
14751  orr r2,r2,#0x8 ;@ A0-7
14752  ldr r0,[r7,r2,lsl #2]
14753;@ EaRead : Read '(a0)' (address in r0) into r1:
14754  mov lr,pc
14755  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14756  movs r1,r0
14757
14758  and r10,r1,#0x80000000 ;@ r10=N_flag
14759  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14760
14761;@ EaCalc : Get '-(a0)' into r0:
14762  and r2,r8,#0x0e00
14763  orr r2,r2,#0x1000 ;@ A0-7
14764  ldr r0,[r7,r2,lsr #7]
14765  sub r0,r0,#4 ;@ Pre-decrement An
14766  str r0,[r7,r2,lsr #7]
14767;@ EaWrite: Write r1 into '-(a0)' (address in r0):
14768  mov lr,pc
14769  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14770
14771  ldrh r8,[r4],#2 ;@ Fetch next opcode
14772  subs r5,r5,#20 ;@ Subtract cycles
14773  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14774  b CycloneEnd
14775
14776;@ ---------- [2118] move.l (a0)+, -(a0) uses Op2118 ----------
14777Op2118:
14778;@ EaCalc : Get '(a0)+' into r0:
14779  and r2,r8,#0x000f
14780  ldr r0,[r7,r2,lsl #2]
14781  add r3,r0,#4 ;@ Post-increment An
14782  str r3,[r7,r2,lsl #2]
14783;@ EaRead : Read '(a0)+' (address in r0) into r1:
14784  mov lr,pc
14785  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14786  movs r1,r0
14787
14788  and r10,r1,#0x80000000 ;@ r10=N_flag
14789  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14790
14791;@ EaCalc : Get '-(a0)' into r0:
14792  and r2,r8,#0x0e00
14793  orr r2,r2,#0x1000 ;@ A0-7
14794  ldr r0,[r7,r2,lsr #7]
14795  sub r0,r0,#4 ;@ Pre-decrement An
14796  str r0,[r7,r2,lsr #7]
14797;@ EaWrite: Write r1 into '-(a0)' (address in r0):
14798  mov lr,pc
14799  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14800
14801  ldrh r8,[r4],#2 ;@ Fetch next opcode
14802  subs r5,r5,#20 ;@ Subtract cycles
14803  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14804  b CycloneEnd
14805
14806;@ ---------- [2120] move.l -(a0), -(a0) uses Op2120 ----------
14807Op2120:
14808;@ EaCalc : Get '-(a0)' into r0:
14809  and r2,r8,#0x000f
14810  orr r2,r2,#0x8 ;@ A0-7
14811  ldr r0,[r7,r2,lsl #2]
14812  sub r0,r0,#4 ;@ Pre-decrement An
14813  str r0,[r7,r2,lsl #2]
14814;@ EaRead : Read '-(a0)' (address in r0) into r1:
14815  mov lr,pc
14816  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14817  movs r1,r0
14818
14819  and r10,r1,#0x80000000 ;@ r10=N_flag
14820  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14821
14822;@ EaCalc : Get '-(a0)' into r0:
14823  and r2,r8,#0x0e00
14824  orr r2,r2,#0x1000 ;@ A0-7
14825  ldr r0,[r7,r2,lsr #7]
14826  sub r0,r0,#4 ;@ Pre-decrement An
14827  str r0,[r7,r2,lsr #7]
14828;@ EaWrite: Write r1 into '-(a0)' (address in r0):
14829  mov lr,pc
14830  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14831
14832  ldrh r8,[r4],#2 ;@ Fetch next opcode
14833  subs r5,r5,#22 ;@ Subtract cycles
14834  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14835  b CycloneEnd
14836
14837;@ ---------- [2128] move.l ($3333,a0), -(a0) uses Op2128 ----------
14838Op2128:
14839;@ EaCalc : Get '($3333,a0)' into r0:
14840  ldrsh r0,[r4],#2 ;@ Fetch offset
14841  and r2,r8,#0x000f
14842  ldr r2,[r7,r2,lsl #2]
14843  add r0,r0,r2 ;@ Add on offset
14844;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
14845  mov lr,pc
14846  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14847  movs r1,r0
14848
14849  and r10,r1,#0x80000000 ;@ r10=N_flag
14850  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14851
14852;@ EaCalc : Get '-(a0)' into r0:
14853  and r2,r8,#0x0e00
14854  orr r2,r2,#0x1000 ;@ A0-7
14855  ldr r0,[r7,r2,lsr #7]
14856  sub r0,r0,#4 ;@ Pre-decrement An
14857  str r0,[r7,r2,lsr #7]
14858;@ EaWrite: Write r1 into '-(a0)' (address in r0):
14859  mov lr,pc
14860  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14861
14862  ldrh r8,[r4],#2 ;@ Fetch next opcode
14863  subs r5,r5,#24 ;@ Subtract cycles
14864  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14865  b CycloneEnd
14866
14867;@ ---------- [2130] move.l ($33,a0,d3.w*2), -(a0) uses Op2130 ----------
14868Op2130:
14869;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
14870;@ Get extension word into r3:
14871  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
14872  mov r2,r3,lsr #10
14873  tst r3,#0x0800 ;@ Is Rn Word or Long
14874  and r2,r2,#0x3c ;@ r2=Index of Rn
14875  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
14876  ldrne   r2,[r7,r2] ;@ r2=Rn.l
14877  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
14878  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
14879  and r2,r8,#0x000f
14880  orr r2,r2,#0x8 ;@ A0-7
14881  ldr r2,[r7,r2,lsl #2]
14882  add r0,r2,r3 ;@ r0=Disp+An+Rn
14883;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
14884  mov lr,pc
14885  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14886  movs r1,r0
14887
14888  and r10,r1,#0x80000000 ;@ r10=N_flag
14889  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14890
14891;@ EaCalc : Get '-(a0)' into r0:
14892  and r2,r8,#0x0e00
14893  orr r2,r2,#0x1000 ;@ A0-7
14894  ldr r0,[r7,r2,lsr #7]
14895  sub r0,r0,#4 ;@ Pre-decrement An
14896  str r0,[r7,r2,lsr #7]
14897;@ EaWrite: Write r1 into '-(a0)' (address in r0):
14898  mov lr,pc
14899  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14900
14901  ldrh r8,[r4],#2 ;@ Fetch next opcode
14902  subs r5,r5,#26 ;@ Subtract cycles
14903  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14904  b CycloneEnd
14905
14906;@ ---------- [2138] move.l $3333.w, -(a0) uses Op2138 ----------
14907Op2138:
14908;@ EaCalc : Get '$3333.w' into r0:
14909  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
14910;@ EaRead : Read '$3333.w' (address in r0) into r1:
14911  mov lr,pc
14912  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14913  movs r1,r0
14914
14915  and r10,r1,#0x80000000 ;@ r10=N_flag
14916  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14917
14918;@ EaCalc : Get '-(a0)' into r0:
14919  and r2,r8,#0x0e00
14920  orr r2,r2,#0x1000 ;@ A0-7
14921  ldr r0,[r7,r2,lsr #7]
14922  sub r0,r0,#4 ;@ Pre-decrement An
14923  str r0,[r7,r2,lsr #7]
14924;@ EaWrite: Write r1 into '-(a0)' (address in r0):
14925  mov lr,pc
14926  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14927
14928  ldrh r8,[r4],#2 ;@ Fetch next opcode
14929  subs r5,r5,#24 ;@ Subtract cycles
14930  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14931  b CycloneEnd
14932
14933;@ ---------- [2139] move.l $33333333.l, -(a0) uses Op2139 ----------
14934Op2139:
14935;@ EaCalc : Get '$33333333.l' into r0:
14936  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
14937  ldrh r0,[r4],#2
14938  orr r0,r0,r2,lsl #16
14939;@ EaRead : Read '$33333333.l' (address in r0) into r1:
14940  mov lr,pc
14941  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
14942  movs r1,r0
14943
14944  and r10,r1,#0x80000000 ;@ r10=N_flag
14945  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14946
14947;@ EaCalc : Get '-(a0)' into r0:
14948  and r2,r8,#0x0e00
14949  orr r2,r2,#0x1000 ;@ A0-7
14950  ldr r0,[r7,r2,lsr #7]
14951  sub r0,r0,#4 ;@ Pre-decrement An
14952  str r0,[r7,r2,lsr #7]
14953;@ EaWrite: Write r1 into '-(a0)' (address in r0):
14954  mov lr,pc
14955  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14956
14957  ldrh r8,[r4],#2 ;@ Fetch next opcode
14958  subs r5,r5,#28 ;@ Subtract cycles
14959  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14960  b CycloneEnd
14961
14962;@ ---------- [213a] move.l ($3333,pc), -(a0); =3335 uses Op213a ----------
14963Op213a:
14964;@ EaCalc : Get '($3333,pc)' into r0:
14965  ldr r0,[r7,#0x60] ;@ Get Memory base
14966  sub r0,r4,r0 ;@ Real PC
14967  ldrsh r2,[r4],#2 ;@ Fetch extension
14968  add r0,r2,r0 ;@ ($nn,PC)
14969;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
14970  mov lr,pc
14971  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
14972  movs r1,r0
14973
14974  and r10,r1,#0x80000000 ;@ r10=N_flag
14975  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
14976
14977;@ EaCalc : Get '-(a0)' into r0:
14978  and r2,r8,#0x0e00
14979  orr r2,r2,#0x1000 ;@ A0-7
14980  ldr r0,[r7,r2,lsr #7]
14981  sub r0,r0,#4 ;@ Pre-decrement An
14982  str r0,[r7,r2,lsr #7]
14983;@ EaWrite: Write r1 into '-(a0)' (address in r0):
14984  mov lr,pc
14985  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
14986
14987  ldrh r8,[r4],#2 ;@ Fetch next opcode
14988  subs r5,r5,#24 ;@ Subtract cycles
14989  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
14990  b CycloneEnd
14991
14992;@ ---------- [213b] move.l ($33,pc,d3.w*2), -(a0); =35 uses Op213b ----------
14993Op213b:
14994;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
14995  ldr r0,[r7,#0x60] ;@ Get Memory base
14996  ldrh r3,[r4] ;@ Get extension word
14997  sub r0,r4,r0 ;@ r0=PC
14998  add r4,r4,#2
14999  mov r2,r3,lsr #10
15000  tst r3,#0x0800 ;@ Is Rn Word or Long
15001  and r2,r2,#0x3c ;@ r2=Index of Rn
15002  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15003  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15004  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
15005  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
15006  add r0,r2,r0 ;@ r0=Disp+PC+Rn
15007;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
15008  mov lr,pc
15009  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
15010  movs r1,r0
15011
15012  and r10,r1,#0x80000000 ;@ r10=N_flag
15013  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15014
15015;@ EaCalc : Get '-(a0)' into r0:
15016  and r2,r8,#0x0e00
15017  orr r2,r2,#0x1000 ;@ A0-7
15018  ldr r0,[r7,r2,lsr #7]
15019  sub r0,r0,#4 ;@ Pre-decrement An
15020  str r0,[r7,r2,lsr #7]
15021;@ EaWrite: Write r1 into '-(a0)' (address in r0):
15022  mov lr,pc
15023  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15024
15025  ldrh r8,[r4],#2 ;@ Fetch next opcode
15026  subs r5,r5,#26 ;@ Subtract cycles
15027  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15028  b CycloneEnd
15029
15030;@ ---------- [213c] move.l #$33333333, -(a0) uses Op213c ----------
15031Op213c:
15032;@ EaCalc : Get '#$33333333' into r1:
15033  ldrh r2,[r4],#2 ;@ Fetch immediate value
15034  ldrh r3,[r4],#2
15035  orr r1,r3,r2,lsl #16
15036;@ EaRead : Read '#$33333333' (address in r1) into r1:
15037  tst r1,r1
15038
15039  and r10,r1,#0x80000000 ;@ r10=N_flag
15040  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15041
15042;@ EaCalc : Get '-(a0)' into r0:
15043  and r2,r8,#0x0e00
15044  orr r2,r2,#0x1000 ;@ A0-7
15045  ldr r0,[r7,r2,lsr #7]
15046  sub r0,r0,#4 ;@ Pre-decrement An
15047  str r0,[r7,r2,lsr #7]
15048;@ EaWrite: Write r1 into '-(a0)' (address in r0):
15049  mov lr,pc
15050  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15051
15052  ldrh r8,[r4],#2 ;@ Fetch next opcode
15053  subs r5,r5,#20 ;@ Subtract cycles
15054  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15055  b CycloneEnd
15056
15057;@ ---------- [2140] move.l d0, ($3333,a0) uses Op2140 ----------
15058Op2140:
15059;@ EaCalc : Get register index into r1:
15060  and r1,r8,#0x000f
15061;@ EaRead : Read register[r1] into r1:
15062  ldr r1,[r7,r1,lsl #2]
15063  tst r1,r1
15064
15065  and r10,r1,#0x80000000 ;@ r10=N_flag
15066  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15067
15068;@ EaCalc : Get '($3333,a0)' into r0:
15069  ldrsh r0,[r4],#2 ;@ Fetch offset
15070  and r2,r8,#0x0e00
15071  orr r2,r2,#0x1000 ;@ A0-7
15072  mov r2,r2,lsr #9
15073  ldr r2,[r7,r2,lsl #2]
15074  add r0,r0,r2 ;@ Add on offset
15075;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15076  mov lr,pc
15077  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15078
15079  ldrh r8,[r4],#2 ;@ Fetch next opcode
15080  subs r5,r5,#16 ;@ Subtract cycles
15081  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15082  b CycloneEnd
15083
15084;@ ---------- [2150] move.l (a0), ($3333,a0) uses Op2150 ----------
15085Op2150:
15086;@ EaCalc : Get '(a0)' into r0:
15087  and r2,r8,#0x000f
15088  orr r2,r2,#0x8 ;@ A0-7
15089  ldr r0,[r7,r2,lsl #2]
15090;@ EaRead : Read '(a0)' (address in r0) into r1:
15091  mov lr,pc
15092  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15093  movs r1,r0
15094
15095  and r10,r1,#0x80000000 ;@ r10=N_flag
15096  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15097
15098;@ EaCalc : Get '($3333,a0)' into r0:
15099  ldrsh r0,[r4],#2 ;@ Fetch offset
15100  and r2,r8,#0x0e00
15101  orr r2,r2,#0x1000 ;@ A0-7
15102  mov r2,r2,lsr #9
15103  ldr r2,[r7,r2,lsl #2]
15104  add r0,r0,r2 ;@ Add on offset
15105;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15106  mov lr,pc
15107  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15108
15109  ldrh r8,[r4],#2 ;@ Fetch next opcode
15110  subs r5,r5,#24 ;@ Subtract cycles
15111  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15112  b CycloneEnd
15113
15114;@ ---------- [2158] move.l (a0)+, ($3333,a0) uses Op2158 ----------
15115Op2158:
15116;@ EaCalc : Get '(a0)+' into r0:
15117  and r2,r8,#0x000f
15118  ldr r0,[r7,r2,lsl #2]
15119  add r3,r0,#4 ;@ Post-increment An
15120  str r3,[r7,r2,lsl #2]
15121;@ EaRead : Read '(a0)+' (address in r0) into r1:
15122  mov lr,pc
15123  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15124  movs r1,r0
15125
15126  and r10,r1,#0x80000000 ;@ r10=N_flag
15127  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15128
15129;@ EaCalc : Get '($3333,a0)' into r0:
15130  ldrsh r0,[r4],#2 ;@ Fetch offset
15131  and r2,r8,#0x0e00
15132  orr r2,r2,#0x1000 ;@ A0-7
15133  mov r2,r2,lsr #9
15134  ldr r2,[r7,r2,lsl #2]
15135  add r0,r0,r2 ;@ Add on offset
15136;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15137  mov lr,pc
15138  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15139
15140  ldrh r8,[r4],#2 ;@ Fetch next opcode
15141  subs r5,r5,#24 ;@ Subtract cycles
15142  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15143  b CycloneEnd
15144
15145;@ ---------- [2160] move.l -(a0), ($3333,a0) uses Op2160 ----------
15146Op2160:
15147;@ EaCalc : Get '-(a0)' into r0:
15148  and r2,r8,#0x000f
15149  orr r2,r2,#0x8 ;@ A0-7
15150  ldr r0,[r7,r2,lsl #2]
15151  sub r0,r0,#4 ;@ Pre-decrement An
15152  str r0,[r7,r2,lsl #2]
15153;@ EaRead : Read '-(a0)' (address in r0) into r1:
15154  mov lr,pc
15155  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15156  movs r1,r0
15157
15158  and r10,r1,#0x80000000 ;@ r10=N_flag
15159  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15160
15161;@ EaCalc : Get '($3333,a0)' into r0:
15162  ldrsh r0,[r4],#2 ;@ Fetch offset
15163  and r2,r8,#0x0e00
15164  orr r2,r2,#0x1000 ;@ A0-7
15165  mov r2,r2,lsr #9
15166  ldr r2,[r7,r2,lsl #2]
15167  add r0,r0,r2 ;@ Add on offset
15168;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15169  mov lr,pc
15170  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15171
15172  ldrh r8,[r4],#2 ;@ Fetch next opcode
15173  subs r5,r5,#26 ;@ Subtract cycles
15174  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15175  b CycloneEnd
15176
15177;@ ---------- [2168] move.l ($3333,a0), ($3333,a0) uses Op2168 ----------
15178Op2168:
15179;@ EaCalc : Get '($3333,a0)' into r0:
15180  ldrsh r0,[r4],#2 ;@ Fetch offset
15181  and r2,r8,#0x000f
15182  ldr r2,[r7,r2,lsl #2]
15183  add r0,r0,r2 ;@ Add on offset
15184;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
15185  mov lr,pc
15186  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15187  movs r1,r0
15188
15189  and r10,r1,#0x80000000 ;@ r10=N_flag
15190  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15191
15192;@ EaCalc : Get '($3333,a0)' into r0:
15193  ldrsh r0,[r4],#2 ;@ Fetch offset
15194  and r2,r8,#0x0e00
15195  orr r2,r2,#0x1000 ;@ A0-7
15196  mov r2,r2,lsr #9
15197  ldr r2,[r7,r2,lsl #2]
15198  add r0,r0,r2 ;@ Add on offset
15199;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15200  mov lr,pc
15201  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15202
15203  ldrh r8,[r4],#2 ;@ Fetch next opcode
15204  subs r5,r5,#28 ;@ Subtract cycles
15205  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15206  b CycloneEnd
15207
15208;@ ---------- [2170] move.l ($33,a0,d3.w*2), ($3333,a0) uses Op2170 ----------
15209Op2170:
15210;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15211;@ Get extension word into r3:
15212  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15213  mov r2,r3,lsr #10
15214  tst r3,#0x0800 ;@ Is Rn Word or Long
15215  and r2,r2,#0x3c ;@ r2=Index of Rn
15216  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15217  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15218  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15219  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15220  and r2,r8,#0x000f
15221  orr r2,r2,#0x8 ;@ A0-7
15222  ldr r2,[r7,r2,lsl #2]
15223  add r0,r2,r3 ;@ r0=Disp+An+Rn
15224;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
15225  mov lr,pc
15226  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15227  movs r1,r0
15228
15229  and r10,r1,#0x80000000 ;@ r10=N_flag
15230  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15231
15232;@ EaCalc : Get '($3333,a0)' into r0:
15233  ldrsh r0,[r4],#2 ;@ Fetch offset
15234  and r2,r8,#0x0e00
15235  orr r2,r2,#0x1000 ;@ A0-7
15236  mov r2,r2,lsr #9
15237  ldr r2,[r7,r2,lsl #2]
15238  add r0,r0,r2 ;@ Add on offset
15239;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15240  mov lr,pc
15241  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15242
15243  ldrh r8,[r4],#2 ;@ Fetch next opcode
15244  subs r5,r5,#30 ;@ Subtract cycles
15245  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15246  b CycloneEnd
15247
15248;@ ---------- [2178] move.l $3333.w, ($3333,a0) uses Op2178 ----------
15249Op2178:
15250;@ EaCalc : Get '$3333.w' into r0:
15251  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
15252;@ EaRead : Read '$3333.w' (address in r0) into r1:
15253  mov lr,pc
15254  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15255  movs r1,r0
15256
15257  and r10,r1,#0x80000000 ;@ r10=N_flag
15258  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15259
15260;@ EaCalc : Get '($3333,a0)' into r0:
15261  ldrsh r0,[r4],#2 ;@ Fetch offset
15262  and r2,r8,#0x0e00
15263  orr r2,r2,#0x1000 ;@ A0-7
15264  mov r2,r2,lsr #9
15265  ldr r2,[r7,r2,lsl #2]
15266  add r0,r0,r2 ;@ Add on offset
15267;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15268  mov lr,pc
15269  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15270
15271  ldrh r8,[r4],#2 ;@ Fetch next opcode
15272  subs r5,r5,#28 ;@ Subtract cycles
15273  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15274  b CycloneEnd
15275
15276;@ ---------- [2179] move.l $33333333.l, ($3333,a0) uses Op2179 ----------
15277Op2179:
15278;@ EaCalc : Get '$33333333.l' into r0:
15279  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
15280  ldrh r0,[r4],#2
15281  orr r0,r0,r2,lsl #16
15282;@ EaRead : Read '$33333333.l' (address in r0) into r1:
15283  mov lr,pc
15284  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15285  movs r1,r0
15286
15287  and r10,r1,#0x80000000 ;@ r10=N_flag
15288  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15289
15290;@ EaCalc : Get '($3333,a0)' into r0:
15291  ldrsh r0,[r4],#2 ;@ Fetch offset
15292  and r2,r8,#0x0e00
15293  orr r2,r2,#0x1000 ;@ A0-7
15294  mov r2,r2,lsr #9
15295  ldr r2,[r7,r2,lsl #2]
15296  add r0,r0,r2 ;@ Add on offset
15297;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15298  mov lr,pc
15299  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15300
15301  ldrh r8,[r4],#2 ;@ Fetch next opcode
15302  subs r5,r5,#32 ;@ Subtract cycles
15303  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15304  b CycloneEnd
15305
15306;@ ---------- [217a] move.l ($3333,pc), ($3333,a0); =3335 uses Op217a ----------
15307Op217a:
15308;@ EaCalc : Get '($3333,pc)' into r0:
15309  ldr r0,[r7,#0x60] ;@ Get Memory base
15310  sub r0,r4,r0 ;@ Real PC
15311  ldrsh r2,[r4],#2 ;@ Fetch extension
15312  add r0,r2,r0 ;@ ($nn,PC)
15313;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
15314  mov lr,pc
15315  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
15316  movs r1,r0
15317
15318  and r10,r1,#0x80000000 ;@ r10=N_flag
15319  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15320
15321;@ EaCalc : Get '($3333,a0)' into r0:
15322  ldrsh r0,[r4],#2 ;@ Fetch offset
15323  and r2,r8,#0x0e00
15324  orr r2,r2,#0x1000 ;@ A0-7
15325  mov r2,r2,lsr #9
15326  ldr r2,[r7,r2,lsl #2]
15327  add r0,r0,r2 ;@ Add on offset
15328;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15329  mov lr,pc
15330  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15331
15332  ldrh r8,[r4],#2 ;@ Fetch next opcode
15333  subs r5,r5,#28 ;@ Subtract cycles
15334  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15335  b CycloneEnd
15336
15337;@ ---------- [217b] move.l ($33,pc,d3.w*2), ($3333,a0); =35 uses Op217b ----------
15338Op217b:
15339;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
15340  ldr r0,[r7,#0x60] ;@ Get Memory base
15341  ldrh r3,[r4] ;@ Get extension word
15342  sub r0,r4,r0 ;@ r0=PC
15343  add r4,r4,#2
15344  mov r2,r3,lsr #10
15345  tst r3,#0x0800 ;@ Is Rn Word or Long
15346  and r2,r2,#0x3c ;@ r2=Index of Rn
15347  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15348  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15349  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
15350  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
15351  add r0,r2,r0 ;@ r0=Disp+PC+Rn
15352;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
15353  mov lr,pc
15354  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
15355  movs r1,r0
15356
15357  and r10,r1,#0x80000000 ;@ r10=N_flag
15358  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15359
15360;@ EaCalc : Get '($3333,a0)' into r0:
15361  ldrsh r0,[r4],#2 ;@ Fetch offset
15362  and r2,r8,#0x0e00
15363  orr r2,r2,#0x1000 ;@ A0-7
15364  mov r2,r2,lsr #9
15365  ldr r2,[r7,r2,lsl #2]
15366  add r0,r0,r2 ;@ Add on offset
15367;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15368  mov lr,pc
15369  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15370
15371  ldrh r8,[r4],#2 ;@ Fetch next opcode
15372  subs r5,r5,#30 ;@ Subtract cycles
15373  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15374  b CycloneEnd
15375
15376;@ ---------- [217c] move.l #$33333333, ($3333,a0) uses Op217c ----------
15377Op217c:
15378;@ EaCalc : Get '#$33333333' into r1:
15379  ldrh r2,[r4],#2 ;@ Fetch immediate value
15380  ldrh r3,[r4],#2
15381  orr r1,r3,r2,lsl #16
15382;@ EaRead : Read '#$33333333' (address in r1) into r1:
15383  tst r1,r1
15384
15385  and r10,r1,#0x80000000 ;@ r10=N_flag
15386  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15387
15388;@ EaCalc : Get '($3333,a0)' into r0:
15389  ldrsh r0,[r4],#2 ;@ Fetch offset
15390  and r2,r8,#0x0e00
15391  orr r2,r2,#0x1000 ;@ A0-7
15392  mov r2,r2,lsr #9
15393  ldr r2,[r7,r2,lsl #2]
15394  add r0,r0,r2 ;@ Add on offset
15395;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
15396  mov lr,pc
15397  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15398
15399  ldrh r8,[r4],#2 ;@ Fetch next opcode
15400  subs r5,r5,#24 ;@ Subtract cycles
15401  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15402  b CycloneEnd
15403
15404;@ ---------- [2180] move.l d0, ($33,a0,d3.w*2) uses Op2180 ----------
15405Op2180:
15406;@ EaCalc : Get register index into r1:
15407  and r1,r8,#0x000f
15408;@ EaRead : Read register[r1] into r1:
15409  ldr r1,[r7,r1,lsl #2]
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 '($33,a0,d3.w*2)' into r0:
15416;@ Get extension word into r3:
15417  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15418  mov r2,r3,lsr #10
15419  tst r3,#0x0800 ;@ Is Rn Word or Long
15420  and r2,r2,#0x3c ;@ r2=Index of Rn
15421  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15422  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15423  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15424  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15425  and r2,r8,#0x0e00
15426  orr r2,r2,#0x1000 ;@ A0-7
15427  mov r2,r2,lsr #9
15428  ldr r2,[r7,r2,lsl #2]
15429  add r0,r2,r3 ;@ r0=Disp+An+Rn
15430;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15431  mov lr,pc
15432  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15433
15434  ldrh r8,[r4],#2 ;@ Fetch next opcode
15435  subs r5,r5,#18 ;@ Subtract cycles
15436  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15437  b CycloneEnd
15438
15439;@ ---------- [2190] move.l (a0), ($33,a0,d3.w*2) uses Op2190 ----------
15440Op2190:
15441;@ EaCalc : Get '(a0)' into r0:
15442  and r2,r8,#0x000f
15443  orr r2,r2,#0x8 ;@ A0-7
15444  ldr r0,[r7,r2,lsl #2]
15445;@ EaRead : Read '(a0)' (address in r0) into r1:
15446  mov lr,pc
15447  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15448  movs r1,r0
15449
15450  and r10,r1,#0x80000000 ;@ r10=N_flag
15451  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15452
15453;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15454;@ Get extension word into r3:
15455  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15456  mov r2,r3,lsr #10
15457  tst r3,#0x0800 ;@ Is Rn Word or Long
15458  and r2,r2,#0x3c ;@ r2=Index of Rn
15459  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15460  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15461  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15462  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15463  and r2,r8,#0x0e00
15464  orr r2,r2,#0x1000 ;@ A0-7
15465  mov r2,r2,lsr #9
15466  ldr r2,[r7,r2,lsl #2]
15467  add r0,r2,r3 ;@ r0=Disp+An+Rn
15468;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15469  mov lr,pc
15470  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15471
15472  ldrh r8,[r4],#2 ;@ Fetch next opcode
15473  subs r5,r5,#26 ;@ Subtract cycles
15474  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15475  b CycloneEnd
15476
15477;@ ---------- [2198] move.l (a0)+, ($33,a0,d3.w*2) uses Op2198 ----------
15478Op2198:
15479;@ EaCalc : Get '(a0)+' into r0:
15480  and r2,r8,#0x000f
15481  ldr r0,[r7,r2,lsl #2]
15482  add r3,r0,#4 ;@ Post-increment An
15483  str r3,[r7,r2,lsl #2]
15484;@ EaRead : Read '(a0)+' (address in r0) into r1:
15485  mov lr,pc
15486  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15487  movs r1,r0
15488
15489  and r10,r1,#0x80000000 ;@ r10=N_flag
15490  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15491
15492;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15493;@ Get extension word into r3:
15494  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15495  mov r2,r3,lsr #10
15496  tst r3,#0x0800 ;@ Is Rn Word or Long
15497  and r2,r2,#0x3c ;@ r2=Index of Rn
15498  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15499  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15500  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15501  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15502  and r2,r8,#0x0e00
15503  orr r2,r2,#0x1000 ;@ A0-7
15504  mov r2,r2,lsr #9
15505  ldr r2,[r7,r2,lsl #2]
15506  add r0,r2,r3 ;@ r0=Disp+An+Rn
15507;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15508  mov lr,pc
15509  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15510
15511  ldrh r8,[r4],#2 ;@ Fetch next opcode
15512  subs r5,r5,#26 ;@ Subtract cycles
15513  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15514  b CycloneEnd
15515
15516;@ ---------- [21a0] move.l -(a0), ($33,a0,d3.w*2) uses Op21a0 ----------
15517Op21a0:
15518;@ EaCalc : Get '-(a0)' into r0:
15519  and r2,r8,#0x000f
15520  orr r2,r2,#0x8 ;@ A0-7
15521  ldr r0,[r7,r2,lsl #2]
15522  sub r0,r0,#4 ;@ Pre-decrement An
15523  str r0,[r7,r2,lsl #2]
15524;@ EaRead : Read '-(a0)' (address in r0) into r1:
15525  mov lr,pc
15526  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15527  movs r1,r0
15528
15529  and r10,r1,#0x80000000 ;@ r10=N_flag
15530  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15531
15532;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15533;@ Get extension word into r3:
15534  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15535  mov r2,r3,lsr #10
15536  tst r3,#0x0800 ;@ Is Rn Word or Long
15537  and r2,r2,#0x3c ;@ r2=Index of Rn
15538  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15539  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15540  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15541  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15542  and r2,r8,#0x0e00
15543  orr r2,r2,#0x1000 ;@ A0-7
15544  mov r2,r2,lsr #9
15545  ldr r2,[r7,r2,lsl #2]
15546  add r0,r2,r3 ;@ r0=Disp+An+Rn
15547;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15548  mov lr,pc
15549  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15550
15551  ldrh r8,[r4],#2 ;@ Fetch next opcode
15552  subs r5,r5,#28 ;@ Subtract cycles
15553  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15554  b CycloneEnd
15555
15556;@ ---------- [21a8] move.l ($3333,a0), ($33,a0,d3.w*2) uses Op21a8 ----------
15557Op21a8:
15558;@ EaCalc : Get '($3333,a0)' into r0:
15559  ldrsh r0,[r4],#2 ;@ Fetch offset
15560  and r2,r8,#0x000f
15561  ldr r2,[r7,r2,lsl #2]
15562  add r0,r0,r2 ;@ Add on offset
15563;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
15564  mov lr,pc
15565  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15566  movs r1,r0
15567
15568  and r10,r1,#0x80000000 ;@ r10=N_flag
15569  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15570
15571;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15572;@ Get extension word into r3:
15573  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15574  mov r2,r3,lsr #10
15575  tst r3,#0x0800 ;@ Is Rn Word or Long
15576  and r2,r2,#0x3c ;@ r2=Index of Rn
15577  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15578  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15579  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15580  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15581  and r2,r8,#0x0e00
15582  orr r2,r2,#0x1000 ;@ A0-7
15583  mov r2,r2,lsr #9
15584  ldr r2,[r7,r2,lsl #2]
15585  add r0,r2,r3 ;@ r0=Disp+An+Rn
15586;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15587  mov lr,pc
15588  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15589
15590  ldrh r8,[r4],#2 ;@ Fetch next opcode
15591  subs r5,r5,#30 ;@ Subtract cycles
15592  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15593  b CycloneEnd
15594
15595;@ ---------- [21b0] move.l ($33,a0,d3.w*2), ($33,a0,d3.w*2) uses Op21b0 ----------
15596Op21b0:
15597;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15598;@ Get extension word into r3:
15599  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15600  mov r2,r3,lsr #10
15601  tst r3,#0x0800 ;@ Is Rn Word or Long
15602  and r2,r2,#0x3c ;@ r2=Index of Rn
15603  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15604  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15605  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15606  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15607  and r2,r8,#0x000f
15608  orr r2,r2,#0x8 ;@ A0-7
15609  ldr r2,[r7,r2,lsl #2]
15610  add r0,r2,r3 ;@ r0=Disp+An+Rn
15611;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
15612  mov lr,pc
15613  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15614  movs r1,r0
15615
15616  and r10,r1,#0x80000000 ;@ r10=N_flag
15617  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15618
15619;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15620;@ Get extension word into r3:
15621  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15622  mov r2,r3,lsr #10
15623  tst r3,#0x0800 ;@ Is Rn Word or Long
15624  and r2,r2,#0x3c ;@ r2=Index of Rn
15625  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15626  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15627  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15628  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15629  and r2,r8,#0x0e00
15630  orr r2,r2,#0x1000 ;@ A0-7
15631  mov r2,r2,lsr #9
15632  ldr r2,[r7,r2,lsl #2]
15633  add r0,r2,r3 ;@ r0=Disp+An+Rn
15634;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15635  mov lr,pc
15636  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15637
15638  ldrh r8,[r4],#2 ;@ Fetch next opcode
15639  subs r5,r5,#32 ;@ Subtract cycles
15640  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15641  b CycloneEnd
15642
15643;@ ---------- [21b8] move.l $3333.w, ($33,a0,d3.w*2) uses Op21b8 ----------
15644Op21b8:
15645;@ EaCalc : Get '$3333.w' into r0:
15646  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
15647;@ EaRead : Read '$3333.w' (address in r0) into r1:
15648  mov lr,pc
15649  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15650  movs r1,r0
15651
15652  and r10,r1,#0x80000000 ;@ r10=N_flag
15653  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15654
15655;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15656;@ Get extension word into r3:
15657  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15658  mov r2,r3,lsr #10
15659  tst r3,#0x0800 ;@ Is Rn Word or Long
15660  and r2,r2,#0x3c ;@ r2=Index of Rn
15661  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15662  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15663  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15664  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15665  and r2,r8,#0x0e00
15666  orr r2,r2,#0x1000 ;@ A0-7
15667  mov r2,r2,lsr #9
15668  ldr r2,[r7,r2,lsl #2]
15669  add r0,r2,r3 ;@ r0=Disp+An+Rn
15670;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15671  mov lr,pc
15672  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15673
15674  ldrh r8,[r4],#2 ;@ Fetch next opcode
15675  subs r5,r5,#30 ;@ Subtract cycles
15676  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15677  b CycloneEnd
15678
15679;@ ---------- [21b9] move.l $33333333.l, ($33,a0,d3.w*2) uses Op21b9 ----------
15680Op21b9:
15681;@ EaCalc : Get '$33333333.l' into r0:
15682  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
15683  ldrh r0,[r4],#2
15684  orr r0,r0,r2,lsl #16
15685;@ EaRead : Read '$33333333.l' (address in r0) into r1:
15686  mov lr,pc
15687  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15688  movs r1,r0
15689
15690  and r10,r1,#0x80000000 ;@ r10=N_flag
15691  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15692
15693;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15694;@ Get extension word into r3:
15695  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15696  mov r2,r3,lsr #10
15697  tst r3,#0x0800 ;@ Is Rn Word or Long
15698  and r2,r2,#0x3c ;@ r2=Index of Rn
15699  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15700  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15701  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15702  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15703  and r2,r8,#0x0e00
15704  orr r2,r2,#0x1000 ;@ A0-7
15705  mov r2,r2,lsr #9
15706  ldr r2,[r7,r2,lsl #2]
15707  add r0,r2,r3 ;@ r0=Disp+An+Rn
15708;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15709  mov lr,pc
15710  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15711
15712  ldrh r8,[r4],#2 ;@ Fetch next opcode
15713  subs r5,r5,#34 ;@ Subtract cycles
15714  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15715  b CycloneEnd
15716
15717;@ ---------- [21ba] move.l ($3333,pc), ($33,a0,d3.w*2); =3335 uses Op21ba ----------
15718Op21ba:
15719;@ EaCalc : Get '($3333,pc)' into r0:
15720  ldr r0,[r7,#0x60] ;@ Get Memory base
15721  sub r0,r4,r0 ;@ Real PC
15722  ldrsh r2,[r4],#2 ;@ Fetch extension
15723  add r0,r2,r0 ;@ ($nn,PC)
15724;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
15725  mov lr,pc
15726  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
15727  movs r1,r0
15728
15729  and r10,r1,#0x80000000 ;@ r10=N_flag
15730  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15731
15732;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15733;@ Get extension word into r3:
15734  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15735  mov r2,r3,lsr #10
15736  tst r3,#0x0800 ;@ Is Rn Word or Long
15737  and r2,r2,#0x3c ;@ r2=Index of Rn
15738  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15739  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15740  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15741  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15742  and r2,r8,#0x0e00
15743  orr r2,r2,#0x1000 ;@ A0-7
15744  mov r2,r2,lsr #9
15745  ldr r2,[r7,r2,lsl #2]
15746  add r0,r2,r3 ;@ r0=Disp+An+Rn
15747;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15748  mov lr,pc
15749  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15750
15751  ldrh r8,[r4],#2 ;@ Fetch next opcode
15752  subs r5,r5,#30 ;@ Subtract cycles
15753  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15754  b CycloneEnd
15755
15756;@ ---------- [21bb] move.l ($33,pc,d3.w*2), ($33,a0,d3.w*2); =35 uses Op21bb ----------
15757Op21bb:
15758;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
15759  ldr r0,[r7,#0x60] ;@ Get Memory base
15760  ldrh r3,[r4] ;@ Get extension word
15761  sub r0,r4,r0 ;@ r0=PC
15762  add r4,r4,#2
15763  mov r2,r3,lsr #10
15764  tst r3,#0x0800 ;@ Is Rn Word or Long
15765  and r2,r2,#0x3c ;@ r2=Index of Rn
15766  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15767  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15768  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
15769  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
15770  add r0,r2,r0 ;@ r0=Disp+PC+Rn
15771;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
15772  mov lr,pc
15773  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
15774  movs r1,r0
15775
15776  and r10,r1,#0x80000000 ;@ r10=N_flag
15777  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15778
15779;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15780;@ Get extension word into r3:
15781  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15782  mov r2,r3,lsr #10
15783  tst r3,#0x0800 ;@ Is Rn Word or Long
15784  and r2,r2,#0x3c ;@ r2=Index of Rn
15785  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15786  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15787  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15788  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15789  and r2,r8,#0x0e00
15790  orr r2,r2,#0x1000 ;@ A0-7
15791  mov r2,r2,lsr #9
15792  ldr r2,[r7,r2,lsl #2]
15793  add r0,r2,r3 ;@ r0=Disp+An+Rn
15794;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15795  mov lr,pc
15796  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15797
15798  ldrh r8,[r4],#2 ;@ Fetch next opcode
15799  subs r5,r5,#32 ;@ Subtract cycles
15800  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15801  b CycloneEnd
15802
15803;@ ---------- [21bc] move.l #$33333333, ($33,a0,d3.w*2) uses Op21bc ----------
15804Op21bc:
15805;@ EaCalc : Get '#$33333333' into r1:
15806  ldrh r2,[r4],#2 ;@ Fetch immediate value
15807  ldrh r3,[r4],#2
15808  orr r1,r3,r2,lsl #16
15809;@ EaRead : Read '#$33333333' (address in r1) into r1:
15810  tst r1,r1
15811
15812  and r10,r1,#0x80000000 ;@ r10=N_flag
15813  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15814
15815;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15816;@ Get extension word into r3:
15817  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15818  mov r2,r3,lsr #10
15819  tst r3,#0x0800 ;@ Is Rn Word or Long
15820  and r2,r2,#0x3c ;@ r2=Index of Rn
15821  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15822  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15823  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15824  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15825  and r2,r8,#0x0e00
15826  orr r2,r2,#0x1000 ;@ A0-7
15827  mov r2,r2,lsr #9
15828  ldr r2,[r7,r2,lsl #2]
15829  add r0,r2,r3 ;@ r0=Disp+An+Rn
15830;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
15831  mov lr,pc
15832  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15833
15834  ldrh r8,[r4],#2 ;@ Fetch next opcode
15835  subs r5,r5,#26 ;@ Subtract cycles
15836  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15837  b CycloneEnd
15838
15839;@ ---------- [21c0] move.l d0, $3333.w uses Op21c0 ----------
15840Op21c0:
15841;@ EaCalc : Get register index into r1:
15842  and r1,r8,#0x000f
15843;@ EaRead : Read register[r1] into r1:
15844  ldr r1,[r7,r1,lsl #2]
15845  tst r1,r1
15846
15847  and r10,r1,#0x80000000 ;@ r10=N_flag
15848  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15849
15850;@ EaCalc : Get '$3333.w' into r0:
15851  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
15852;@ EaWrite: Write r1 into '$3333.w' (address in r0):
15853  mov lr,pc
15854  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15855
15856  ldrh r8,[r4],#2 ;@ Fetch next opcode
15857  subs r5,r5,#16 ;@ Subtract cycles
15858  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15859  b CycloneEnd
15860
15861;@ ---------- [21d0] move.l (a0), $3333.w uses Op21d0 ----------
15862Op21d0:
15863;@ EaCalc : Get '(a0)' into r0:
15864  and r2,r8,#0x000f
15865  orr r2,r2,#0x8 ;@ A0-7
15866  ldr r0,[r7,r2,lsl #2]
15867;@ EaRead : Read '(a0)' (address in r0) into r1:
15868  mov lr,pc
15869  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15870  movs r1,r0
15871
15872  and r10,r1,#0x80000000 ;@ r10=N_flag
15873  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15874
15875;@ EaCalc : Get '$3333.w' into r0:
15876  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
15877;@ EaWrite: Write r1 into '$3333.w' (address in r0):
15878  mov lr,pc
15879  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15880
15881  ldrh r8,[r4],#2 ;@ Fetch next opcode
15882  subs r5,r5,#24 ;@ Subtract cycles
15883  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15884  b CycloneEnd
15885
15886;@ ---------- [21d8] move.l (a0)+, $3333.w uses Op21d8 ----------
15887Op21d8:
15888;@ EaCalc : Get '(a0)+' into r0:
15889  and r2,r8,#0x000f
15890  ldr r0,[r7,r2,lsl #2]
15891  add r3,r0,#4 ;@ Post-increment An
15892  str r3,[r7,r2,lsl #2]
15893;@ EaRead : Read '(a0)+' (address in r0) into r1:
15894  mov lr,pc
15895  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15896  movs r1,r0
15897
15898  and r10,r1,#0x80000000 ;@ r10=N_flag
15899  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15900
15901;@ EaCalc : Get '$3333.w' into r0:
15902  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
15903;@ EaWrite: Write r1 into '$3333.w' (address in r0):
15904  mov lr,pc
15905  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15906
15907  ldrh r8,[r4],#2 ;@ Fetch next opcode
15908  subs r5,r5,#24 ;@ Subtract cycles
15909  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15910  b CycloneEnd
15911
15912;@ ---------- [21e0] move.l -(a0), $3333.w uses Op21e0 ----------
15913Op21e0:
15914;@ EaCalc : Get '-(a0)' into r0:
15915  and r2,r8,#0x000f
15916  orr r2,r2,#0x8 ;@ A0-7
15917  ldr r0,[r7,r2,lsl #2]
15918  sub r0,r0,#4 ;@ Pre-decrement An
15919  str r0,[r7,r2,lsl #2]
15920;@ EaRead : Read '-(a0)' (address in r0) into r1:
15921  mov lr,pc
15922  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15923  movs r1,r0
15924
15925  and r10,r1,#0x80000000 ;@ r10=N_flag
15926  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15927
15928;@ EaCalc : Get '$3333.w' into r0:
15929  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
15930;@ EaWrite: Write r1 into '$3333.w' (address in r0):
15931  mov lr,pc
15932  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15933
15934  ldrh r8,[r4],#2 ;@ Fetch next opcode
15935  subs r5,r5,#26 ;@ Subtract cycles
15936  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15937  b CycloneEnd
15938
15939;@ ---------- [21e8] move.l ($3333,a0), $3333.w uses Op21e8 ----------
15940Op21e8:
15941;@ EaCalc : Get '($3333,a0)' into r0:
15942  ldrsh r0,[r4],#2 ;@ Fetch offset
15943  and r2,r8,#0x000f
15944  ldr r2,[r7,r2,lsl #2]
15945  add r0,r0,r2 ;@ Add on offset
15946;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
15947  mov lr,pc
15948  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15949  movs r1,r0
15950
15951  and r10,r1,#0x80000000 ;@ r10=N_flag
15952  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15953
15954;@ EaCalc : Get '$3333.w' into r0:
15955  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
15956;@ EaWrite: Write r1 into '$3333.w' (address in r0):
15957  mov lr,pc
15958  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15959
15960  ldrh r8,[r4],#2 ;@ Fetch next opcode
15961  subs r5,r5,#28 ;@ Subtract cycles
15962  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15963  b CycloneEnd
15964
15965;@ ---------- [21f0] move.l ($33,a0,d3.w*2), $3333.w uses Op21f0 ----------
15966Op21f0:
15967;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
15968;@ Get extension word into r3:
15969  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
15970  mov r2,r3,lsr #10
15971  tst r3,#0x0800 ;@ Is Rn Word or Long
15972  and r2,r2,#0x3c ;@ r2=Index of Rn
15973  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
15974  ldrne   r2,[r7,r2] ;@ r2=Rn.l
15975  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
15976  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
15977  and r2,r8,#0x000f
15978  orr r2,r2,#0x8 ;@ A0-7
15979  ldr r2,[r7,r2,lsl #2]
15980  add r0,r2,r3 ;@ r0=Disp+An+Rn
15981;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
15982  mov lr,pc
15983  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
15984  movs r1,r0
15985
15986  and r10,r1,#0x80000000 ;@ r10=N_flag
15987  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
15988
15989;@ EaCalc : Get '$3333.w' into r0:
15990  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
15991;@ EaWrite: Write r1 into '$3333.w' (address in r0):
15992  mov lr,pc
15993  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
15994
15995  ldrh r8,[r4],#2 ;@ Fetch next opcode
15996  subs r5,r5,#30 ;@ Subtract cycles
15997  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
15998  b CycloneEnd
15999
16000;@ ---------- [21f8] move.l $3333.w, $3333.w uses Op21f8 ----------
16001Op21f8:
16002;@ EaCalc : Get '$3333.w' into r0:
16003  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16004;@ EaRead : Read '$3333.w' (address in r0) into r1:
16005  mov lr,pc
16006  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16007  movs r1,r0
16008
16009  and r10,r1,#0x80000000 ;@ r10=N_flag
16010  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16011
16012;@ EaCalc : Get '$3333.w' into r0:
16013  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16014;@ EaWrite: Write r1 into '$3333.w' (address in r0):
16015  mov lr,pc
16016  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16017
16018  ldrh r8,[r4],#2 ;@ Fetch next opcode
16019  subs r5,r5,#28 ;@ Subtract cycles
16020  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16021  b CycloneEnd
16022
16023;@ ---------- [21f9] move.l $33333333.l, $3333.w uses Op21f9 ----------
16024Op21f9:
16025;@ EaCalc : Get '$33333333.l' into r0:
16026  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16027  ldrh r0,[r4],#2
16028  orr r0,r0,r2,lsl #16
16029;@ EaRead : Read '$33333333.l' (address in r0) into r1:
16030  mov lr,pc
16031  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16032  movs r1,r0
16033
16034  and r10,r1,#0x80000000 ;@ r10=N_flag
16035  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16036
16037;@ EaCalc : Get '$3333.w' into r0:
16038  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16039;@ EaWrite: Write r1 into '$3333.w' (address in r0):
16040  mov lr,pc
16041  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16042
16043  ldrh r8,[r4],#2 ;@ Fetch next opcode
16044  subs r5,r5,#32 ;@ Subtract cycles
16045  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16046  b CycloneEnd
16047
16048;@ ---------- [21fa] move.l ($3333,pc), $3333.w; =3335 uses Op21fa ----------
16049Op21fa:
16050;@ EaCalc : Get '($3333,pc)' into r0:
16051  ldr r0,[r7,#0x60] ;@ Get Memory base
16052  sub r0,r4,r0 ;@ Real PC
16053  ldrsh r2,[r4],#2 ;@ Fetch extension
16054  add r0,r2,r0 ;@ ($nn,PC)
16055;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
16056  mov lr,pc
16057  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
16058  movs r1,r0
16059
16060  and r10,r1,#0x80000000 ;@ r10=N_flag
16061  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16062
16063;@ EaCalc : Get '$3333.w' into r0:
16064  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16065;@ EaWrite: Write r1 into '$3333.w' (address in r0):
16066  mov lr,pc
16067  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16068
16069  ldrh r8,[r4],#2 ;@ Fetch next opcode
16070  subs r5,r5,#28 ;@ Subtract cycles
16071  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16072  b CycloneEnd
16073
16074;@ ---------- [21fb] move.l ($33,pc,d3.w*2), $3333.w; =35 uses Op21fb ----------
16075Op21fb:
16076;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
16077  ldr r0,[r7,#0x60] ;@ Get Memory base
16078  ldrh r3,[r4] ;@ Get extension word
16079  sub r0,r4,r0 ;@ r0=PC
16080  add r4,r4,#2
16081  mov r2,r3,lsr #10
16082  tst r3,#0x0800 ;@ Is Rn Word or Long
16083  and r2,r2,#0x3c ;@ r2=Index of Rn
16084  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
16085  ldrne   r2,[r7,r2] ;@ r2=Rn.l
16086  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
16087  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
16088  add r0,r2,r0 ;@ r0=Disp+PC+Rn
16089;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
16090  mov lr,pc
16091  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
16092  movs r1,r0
16093
16094  and r10,r1,#0x80000000 ;@ r10=N_flag
16095  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16096
16097;@ EaCalc : Get '$3333.w' into r0:
16098  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16099;@ EaWrite: Write r1 into '$3333.w' (address in r0):
16100  mov lr,pc
16101  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16102
16103  ldrh r8,[r4],#2 ;@ Fetch next opcode
16104  subs r5,r5,#30 ;@ Subtract cycles
16105  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16106  b CycloneEnd
16107
16108;@ ---------- [21fc] move.l #$33333333, $3333.w uses Op21fc ----------
16109Op21fc:
16110;@ EaCalc : Get '#$33333333' into r1:
16111  ldrh r2,[r4],#2 ;@ Fetch immediate value
16112  ldrh r3,[r4],#2
16113  orr r1,r3,r2,lsl #16
16114;@ EaRead : Read '#$33333333' (address in r1) into r1:
16115  tst r1,r1
16116
16117  and r10,r1,#0x80000000 ;@ r10=N_flag
16118  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16119
16120;@ EaCalc : Get '$3333.w' into r0:
16121  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16122;@ EaWrite: Write r1 into '$3333.w' (address in r0):
16123  mov lr,pc
16124  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16125
16126  ldrh r8,[r4],#2 ;@ Fetch next opcode
16127  subs r5,r5,#24 ;@ Subtract cycles
16128  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16129  b CycloneEnd
16130
16131;@ ---------- [23c0] move.l d0, $33333333.l uses Op23c0 ----------
16132Op23c0:
16133;@ EaCalc : Get register index into r1:
16134  and r1,r8,#0x000f
16135;@ EaRead : Read register[r1] into r1:
16136  ldr r1,[r7,r1,lsl #2]
16137  tst r1,r1
16138
16139  and r10,r1,#0x80000000 ;@ r10=N_flag
16140  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16141
16142;@ EaCalc : Get '$33333333.l' into r0:
16143  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16144  ldrh r0,[r4],#2
16145  orr r0,r0,r2,lsl #16
16146;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16147  mov lr,pc
16148  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16149
16150  ldrh r8,[r4],#2 ;@ Fetch next opcode
16151  subs r5,r5,#20 ;@ Subtract cycles
16152  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16153  b CycloneEnd
16154
16155;@ ---------- [23d0] move.l (a0), $33333333.l uses Op23d0 ----------
16156Op23d0:
16157;@ EaCalc : Get '(a0)' into r0:
16158  and r2,r8,#0x000f
16159  orr r2,r2,#0x8 ;@ A0-7
16160  ldr r0,[r7,r2,lsl #2]
16161;@ EaRead : Read '(a0)' (address in r0) into r1:
16162  mov lr,pc
16163  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16164  movs r1,r0
16165
16166  and r10,r1,#0x80000000 ;@ r10=N_flag
16167  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16168
16169;@ EaCalc : Get '$33333333.l' into r0:
16170  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16171  ldrh r0,[r4],#2
16172  orr r0,r0,r2,lsl #16
16173;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16174  mov lr,pc
16175  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16176
16177  ldrh r8,[r4],#2 ;@ Fetch next opcode
16178  subs r5,r5,#28 ;@ Subtract cycles
16179  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16180  b CycloneEnd
16181
16182;@ ---------- [23d8] move.l (a0)+, $33333333.l uses Op23d8 ----------
16183Op23d8:
16184;@ EaCalc : Get '(a0)+' into r0:
16185  and r2,r8,#0x000f
16186  ldr r0,[r7,r2,lsl #2]
16187  add r3,r0,#4 ;@ Post-increment An
16188  str r3,[r7,r2,lsl #2]
16189;@ EaRead : Read '(a0)+' (address in r0) into r1:
16190  mov lr,pc
16191  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16192  movs r1,r0
16193
16194  and r10,r1,#0x80000000 ;@ r10=N_flag
16195  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16196
16197;@ EaCalc : Get '$33333333.l' into r0:
16198  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16199  ldrh r0,[r4],#2
16200  orr r0,r0,r2,lsl #16
16201;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16202  mov lr,pc
16203  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16204
16205  ldrh r8,[r4],#2 ;@ Fetch next opcode
16206  subs r5,r5,#28 ;@ Subtract cycles
16207  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16208  b CycloneEnd
16209
16210;@ ---------- [23e0] move.l -(a0), $33333333.l uses Op23e0 ----------
16211Op23e0:
16212;@ EaCalc : Get '-(a0)' into r0:
16213  and r2,r8,#0x000f
16214  orr r2,r2,#0x8 ;@ A0-7
16215  ldr r0,[r7,r2,lsl #2]
16216  sub r0,r0,#4 ;@ Pre-decrement An
16217  str r0,[r7,r2,lsl #2]
16218;@ EaRead : Read '-(a0)' (address in r0) into r1:
16219  mov lr,pc
16220  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16221  movs r1,r0
16222
16223  and r10,r1,#0x80000000 ;@ r10=N_flag
16224  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16225
16226;@ EaCalc : Get '$33333333.l' into r0:
16227  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16228  ldrh r0,[r4],#2
16229  orr r0,r0,r2,lsl #16
16230;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16231  mov lr,pc
16232  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16233
16234  ldrh r8,[r4],#2 ;@ Fetch next opcode
16235  subs r5,r5,#30 ;@ Subtract cycles
16236  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16237  b CycloneEnd
16238
16239;@ ---------- [23e8] move.l ($3333,a0), $33333333.l uses Op23e8 ----------
16240Op23e8:
16241;@ EaCalc : Get '($3333,a0)' into r0:
16242  ldrsh r0,[r4],#2 ;@ Fetch offset
16243  and r2,r8,#0x000f
16244  ldr r2,[r7,r2,lsl #2]
16245  add r0,r0,r2 ;@ Add on offset
16246;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
16247  mov lr,pc
16248  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16249  movs r1,r0
16250
16251  and r10,r1,#0x80000000 ;@ r10=N_flag
16252  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16253
16254;@ EaCalc : Get '$33333333.l' into r0:
16255  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16256  ldrh r0,[r4],#2
16257  orr r0,r0,r2,lsl #16
16258;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16259  mov lr,pc
16260  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16261
16262  ldrh r8,[r4],#2 ;@ Fetch next opcode
16263  subs r5,r5,#32 ;@ Subtract cycles
16264  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16265  b CycloneEnd
16266
16267;@ ---------- [23f0] move.l ($33,a0,d3.w*2), $33333333.l uses Op23f0 ----------
16268Op23f0:
16269;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
16270;@ Get extension word into r3:
16271  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
16272  mov r2,r3,lsr #10
16273  tst r3,#0x0800 ;@ Is Rn Word or Long
16274  and r2,r2,#0x3c ;@ r2=Index of Rn
16275  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
16276  ldrne   r2,[r7,r2] ;@ r2=Rn.l
16277  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
16278  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
16279  and r2,r8,#0x000f
16280  orr r2,r2,#0x8 ;@ A0-7
16281  ldr r2,[r7,r2,lsl #2]
16282  add r0,r2,r3 ;@ r0=Disp+An+Rn
16283;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
16284  mov lr,pc
16285  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16286  movs r1,r0
16287
16288  and r10,r1,#0x80000000 ;@ r10=N_flag
16289  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16290
16291;@ EaCalc : Get '$33333333.l' into r0:
16292  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16293  ldrh r0,[r4],#2
16294  orr r0,r0,r2,lsl #16
16295;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16296  mov lr,pc
16297  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16298
16299  ldrh r8,[r4],#2 ;@ Fetch next opcode
16300  subs r5,r5,#34 ;@ Subtract cycles
16301  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16302  b CycloneEnd
16303
16304;@ ---------- [23f8] move.l $3333.w, $33333333.l uses Op23f8 ----------
16305Op23f8:
16306;@ EaCalc : Get '$3333.w' into r0:
16307  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16308;@ EaRead : Read '$3333.w' (address in r0) into r1:
16309  mov lr,pc
16310  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16311  movs r1,r0
16312
16313  and r10,r1,#0x80000000 ;@ r10=N_flag
16314  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16315
16316;@ EaCalc : Get '$33333333.l' into r0:
16317  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16318  ldrh r0,[r4],#2
16319  orr r0,r0,r2,lsl #16
16320;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16321  mov lr,pc
16322  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16323
16324  ldrh r8,[r4],#2 ;@ Fetch next opcode
16325  subs r5,r5,#32 ;@ Subtract cycles
16326  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16327  b CycloneEnd
16328
16329;@ ---------- [23f9] move.l $33333333.l, $33333333.l uses Op23f9 ----------
16330Op23f9:
16331;@ EaCalc : Get '$33333333.l' into r0:
16332  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16333  ldrh r0,[r4],#2
16334  orr r0,r0,r2,lsl #16
16335;@ EaRead : Read '$33333333.l' (address in r0) into r1:
16336  mov lr,pc
16337  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16338  movs r1,r0
16339
16340  and r10,r1,#0x80000000 ;@ r10=N_flag
16341  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16342
16343;@ EaCalc : Get '$33333333.l' into r0:
16344  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16345  ldrh r0,[r4],#2
16346  orr r0,r0,r2,lsl #16
16347;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16348  mov lr,pc
16349  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16350
16351  ldrh r8,[r4],#2 ;@ Fetch next opcode
16352  subs r5,r5,#36 ;@ Subtract cycles
16353  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16354  b CycloneEnd
16355
16356;@ ---------- [23fa] move.l ($3333,pc), $33333333.l; =3335 uses Op23fa ----------
16357Op23fa:
16358;@ EaCalc : Get '($3333,pc)' into r0:
16359  ldr r0,[r7,#0x60] ;@ Get Memory base
16360  sub r0,r4,r0 ;@ Real PC
16361  ldrsh r2,[r4],#2 ;@ Fetch extension
16362  add r0,r2,r0 ;@ ($nn,PC)
16363;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
16364  mov lr,pc
16365  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
16366  movs r1,r0
16367
16368  and r10,r1,#0x80000000 ;@ r10=N_flag
16369  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16370
16371;@ EaCalc : Get '$33333333.l' into r0:
16372  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16373  ldrh r0,[r4],#2
16374  orr r0,r0,r2,lsl #16
16375;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16376  mov lr,pc
16377  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16378
16379  ldrh r8,[r4],#2 ;@ Fetch next opcode
16380  subs r5,r5,#32 ;@ Subtract cycles
16381  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16382  b CycloneEnd
16383
16384;@ ---------- [23fb] move.l ($33,pc,d3.w*2), $33333333.l; =35 uses Op23fb ----------
16385Op23fb:
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  mov lr,pc
16401  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
16402  movs r1,r0
16403
16404  and r10,r1,#0x80000000 ;@ r10=N_flag
16405  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16406
16407;@ EaCalc : Get '$33333333.l' into r0:
16408  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16409  ldrh r0,[r4],#2
16410  orr r0,r0,r2,lsl #16
16411;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16412  mov lr,pc
16413  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16414
16415  ldrh r8,[r4],#2 ;@ Fetch next opcode
16416  subs r5,r5,#34 ;@ Subtract cycles
16417  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16418  b CycloneEnd
16419
16420;@ ---------- [23fc] move.l #$33333333, $33333333.l uses Op23fc ----------
16421Op23fc:
16422;@ EaCalc : Get '#$33333333' into r1:
16423  ldrh r2,[r4],#2 ;@ Fetch immediate value
16424  ldrh r3,[r4],#2
16425  orr r1,r3,r2,lsl #16
16426;@ EaRead : Read '#$33333333' (address in r1) into r1:
16427  tst r1,r1
16428
16429  and r10,r1,#0x80000000 ;@ r10=N_flag
16430  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16431
16432;@ EaCalc : Get '$33333333.l' into r0:
16433  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16434  ldrh r0,[r4],#2
16435  orr r0,r0,r2,lsl #16
16436;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
16437  mov lr,pc
16438  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16439
16440  ldrh r8,[r4],#2 ;@ Fetch next opcode
16441  subs r5,r5,#28 ;@ Subtract cycles
16442  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16443  b CycloneEnd
16444
16445;@ ---------- [2ec0] move.l d0, (a7)+ uses Op2ec0 ----------
16446Op2ec0:
16447;@ EaCalc : Get register index into r1:
16448  and r1,r8,#0x000f
16449;@ EaRead : Read register[r1] into r1:
16450  ldr r1,[r7,r1,lsl #2]
16451  tst r1,r1
16452
16453  and r10,r1,#0x80000000 ;@ r10=N_flag
16454  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16455
16456;@ EaCalc : Get '(a7)+' into r0:
16457  ldr r0,[r7,#0x3c] ;@ A7
16458  add r3,r0,#4 ;@ Post-increment An
16459  str r3,[r7,#0x3c] ;@ A7
16460;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16461  mov lr,pc
16462  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16463
16464  ldrh r8,[r4],#2 ;@ Fetch next opcode
16465  subs r5,r5,#12 ;@ Subtract cycles
16466  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16467  b CycloneEnd
16468
16469;@ ---------- [2ed0] move.l (a0), (a7)+ uses Op2ed0 ----------
16470Op2ed0:
16471;@ EaCalc : Get '(a0)' into r0:
16472  and r2,r8,#0x000f
16473  orr r2,r2,#0x8 ;@ A0-7
16474  ldr r0,[r7,r2,lsl #2]
16475;@ EaRead : Read '(a0)' (address in r0) into r1:
16476  mov lr,pc
16477  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16478  movs r1,r0
16479
16480  and r10,r1,#0x80000000 ;@ r10=N_flag
16481  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16482
16483;@ EaCalc : Get '(a7)+' into r0:
16484  ldr r0,[r7,#0x3c] ;@ A7
16485  add r3,r0,#4 ;@ Post-increment An
16486  str r3,[r7,#0x3c] ;@ A7
16487;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16488  mov lr,pc
16489  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16490
16491  ldrh r8,[r4],#2 ;@ Fetch next opcode
16492  subs r5,r5,#20 ;@ Subtract cycles
16493  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16494  b CycloneEnd
16495
16496;@ ---------- [2ed8] move.l (a0)+, (a7)+ uses Op2ed8 ----------
16497Op2ed8:
16498;@ EaCalc : Get '(a0)+' into r0:
16499  and r2,r8,#0x000f
16500  ldr r0,[r7,r2,lsl #2]
16501  add r3,r0,#4 ;@ Post-increment An
16502  str r3,[r7,r2,lsl #2]
16503;@ EaRead : Read '(a0)+' (address in r0) into r1:
16504  mov lr,pc
16505  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16506  movs r1,r0
16507
16508  and r10,r1,#0x80000000 ;@ r10=N_flag
16509  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16510
16511;@ EaCalc : Get '(a7)+' into r0:
16512  ldr r0,[r7,#0x3c] ;@ A7
16513  add r3,r0,#4 ;@ Post-increment An
16514  str r3,[r7,#0x3c] ;@ A7
16515;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16516  mov lr,pc
16517  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16518
16519  ldrh r8,[r4],#2 ;@ Fetch next opcode
16520  subs r5,r5,#20 ;@ Subtract cycles
16521  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16522  b CycloneEnd
16523
16524;@ ---------- [2ee0] move.l -(a0), (a7)+ uses Op2ee0 ----------
16525Op2ee0:
16526;@ EaCalc : Get '-(a0)' into r0:
16527  and r2,r8,#0x000f
16528  orr r2,r2,#0x8 ;@ A0-7
16529  ldr r0,[r7,r2,lsl #2]
16530  sub r0,r0,#4 ;@ Pre-decrement An
16531  str r0,[r7,r2,lsl #2]
16532;@ EaRead : Read '-(a0)' (address in r0) into r1:
16533  mov lr,pc
16534  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16535  movs r1,r0
16536
16537  and r10,r1,#0x80000000 ;@ r10=N_flag
16538  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16539
16540;@ EaCalc : Get '(a7)+' into r0:
16541  ldr r0,[r7,#0x3c] ;@ A7
16542  add r3,r0,#4 ;@ Post-increment An
16543  str r3,[r7,#0x3c] ;@ A7
16544;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16545  mov lr,pc
16546  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16547
16548  ldrh r8,[r4],#2 ;@ Fetch next opcode
16549  subs r5,r5,#22 ;@ Subtract cycles
16550  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16551  b CycloneEnd
16552
16553;@ ---------- [2ee8] move.l ($3333,a0), (a7)+ uses Op2ee8 ----------
16554Op2ee8:
16555;@ EaCalc : Get '($3333,a0)' into r0:
16556  ldrsh r0,[r4],#2 ;@ Fetch offset
16557  and r2,r8,#0x000f
16558  ldr r2,[r7,r2,lsl #2]
16559  add r0,r0,r2 ;@ Add on offset
16560;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
16561  mov lr,pc
16562  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16563  movs r1,r0
16564
16565  and r10,r1,#0x80000000 ;@ r10=N_flag
16566  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16567
16568;@ EaCalc : Get '(a7)+' into r0:
16569  ldr r0,[r7,#0x3c] ;@ A7
16570  add r3,r0,#4 ;@ Post-increment An
16571  str r3,[r7,#0x3c] ;@ A7
16572;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16573  mov lr,pc
16574  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16575
16576  ldrh r8,[r4],#2 ;@ Fetch next opcode
16577  subs r5,r5,#24 ;@ Subtract cycles
16578  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16579  b CycloneEnd
16580
16581;@ ---------- [2ef0] move.l ($33,a0,d3.w*2), (a7)+ uses Op2ef0 ----------
16582Op2ef0:
16583;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
16584;@ Get extension word into r3:
16585  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
16586  mov r2,r3,lsr #10
16587  tst r3,#0x0800 ;@ Is Rn Word or Long
16588  and r2,r2,#0x3c ;@ r2=Index of Rn
16589  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
16590  ldrne   r2,[r7,r2] ;@ r2=Rn.l
16591  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
16592  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
16593  and r2,r8,#0x000f
16594  orr r2,r2,#0x8 ;@ A0-7
16595  ldr r2,[r7,r2,lsl #2]
16596  add r0,r2,r3 ;@ r0=Disp+An+Rn
16597;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
16598  mov lr,pc
16599  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16600  movs r1,r0
16601
16602  and r10,r1,#0x80000000 ;@ r10=N_flag
16603  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16604
16605;@ EaCalc : Get '(a7)+' into r0:
16606  ldr r0,[r7,#0x3c] ;@ A7
16607  add r3,r0,#4 ;@ Post-increment An
16608  str r3,[r7,#0x3c] ;@ A7
16609;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16610  mov lr,pc
16611  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16612
16613  ldrh r8,[r4],#2 ;@ Fetch next opcode
16614  subs r5,r5,#26 ;@ Subtract cycles
16615  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16616  b CycloneEnd
16617
16618;@ ---------- [2ef8] move.l $3333.w, (a7)+ uses Op2ef8 ----------
16619Op2ef8:
16620;@ EaCalc : Get '$3333.w' into r0:
16621  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16622;@ EaRead : Read '$3333.w' (address in r0) into r1:
16623  mov lr,pc
16624  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16625  movs r1,r0
16626
16627  and r10,r1,#0x80000000 ;@ r10=N_flag
16628  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16629
16630;@ EaCalc : Get '(a7)+' into r0:
16631  ldr r0,[r7,#0x3c] ;@ A7
16632  add r3,r0,#4 ;@ Post-increment An
16633  str r3,[r7,#0x3c] ;@ A7
16634;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16635  mov lr,pc
16636  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16637
16638  ldrh r8,[r4],#2 ;@ Fetch next opcode
16639  subs r5,r5,#24 ;@ Subtract cycles
16640  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16641  b CycloneEnd
16642
16643;@ ---------- [2ef9] move.l $33333333.l, (a7)+ uses Op2ef9 ----------
16644Op2ef9:
16645;@ EaCalc : Get '$33333333.l' into r0:
16646  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16647  ldrh r0,[r4],#2
16648  orr r0,r0,r2,lsl #16
16649;@ EaRead : Read '$33333333.l' (address in r0) into r1:
16650  mov lr,pc
16651  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16652  movs r1,r0
16653
16654  and r10,r1,#0x80000000 ;@ r10=N_flag
16655  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16656
16657;@ EaCalc : Get '(a7)+' into r0:
16658  ldr r0,[r7,#0x3c] ;@ A7
16659  add r3,r0,#4 ;@ Post-increment An
16660  str r3,[r7,#0x3c] ;@ A7
16661;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16662  mov lr,pc
16663  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16664
16665  ldrh r8,[r4],#2 ;@ Fetch next opcode
16666  subs r5,r5,#28 ;@ Subtract cycles
16667  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16668  b CycloneEnd
16669
16670;@ ---------- [2efa] move.l ($3333,pc), (a7)+; =3335 uses Op2efa ----------
16671Op2efa:
16672;@ EaCalc : Get '($3333,pc)' into r0:
16673  ldr r0,[r7,#0x60] ;@ Get Memory base
16674  sub r0,r4,r0 ;@ Real PC
16675  ldrsh r2,[r4],#2 ;@ Fetch extension
16676  add r0,r2,r0 ;@ ($nn,PC)
16677;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
16678  mov lr,pc
16679  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
16680  movs r1,r0
16681
16682  and r10,r1,#0x80000000 ;@ r10=N_flag
16683  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16684
16685;@ EaCalc : Get '(a7)+' into r0:
16686  ldr r0,[r7,#0x3c] ;@ A7
16687  add r3,r0,#4 ;@ Post-increment An
16688  str r3,[r7,#0x3c] ;@ A7
16689;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16690  mov lr,pc
16691  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16692
16693  ldrh r8,[r4],#2 ;@ Fetch next opcode
16694  subs r5,r5,#24 ;@ Subtract cycles
16695  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16696  b CycloneEnd
16697
16698;@ ---------- [2efb] move.l ($33,pc,d3.w*2), (a7)+; =35 uses Op2efb ----------
16699Op2efb:
16700;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
16701  ldr r0,[r7,#0x60] ;@ Get Memory base
16702  ldrh r3,[r4] ;@ Get extension word
16703  sub r0,r4,r0 ;@ r0=PC
16704  add r4,r4,#2
16705  mov r2,r3,lsr #10
16706  tst r3,#0x0800 ;@ Is Rn Word or Long
16707  and r2,r2,#0x3c ;@ r2=Index of Rn
16708  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
16709  ldrne   r2,[r7,r2] ;@ r2=Rn.l
16710  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
16711  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
16712  add r0,r2,r0 ;@ r0=Disp+PC+Rn
16713;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
16714  mov lr,pc
16715  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
16716  movs r1,r0
16717
16718  and r10,r1,#0x80000000 ;@ r10=N_flag
16719  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16720
16721;@ EaCalc : Get '(a7)+' into r0:
16722  ldr r0,[r7,#0x3c] ;@ A7
16723  add r3,r0,#4 ;@ Post-increment An
16724  str r3,[r7,#0x3c] ;@ A7
16725;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16726  mov lr,pc
16727  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16728
16729  ldrh r8,[r4],#2 ;@ Fetch next opcode
16730  subs r5,r5,#26 ;@ Subtract cycles
16731  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16732  b CycloneEnd
16733
16734;@ ---------- [2efc] move.l #$33333333, (a7)+ uses Op2efc ----------
16735Op2efc:
16736;@ EaCalc : Get '#$33333333' into r1:
16737  ldrh r2,[r4],#2 ;@ Fetch immediate value
16738  ldrh r3,[r4],#2
16739  orr r1,r3,r2,lsl #16
16740;@ EaRead : Read '#$33333333' (address in r1) into r1:
16741  tst r1,r1
16742
16743  and r10,r1,#0x80000000 ;@ r10=N_flag
16744  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16745
16746;@ EaCalc : Get '(a7)+' into r0:
16747  ldr r0,[r7,#0x3c] ;@ A7
16748  add r3,r0,#4 ;@ Post-increment An
16749  str r3,[r7,#0x3c] ;@ A7
16750;@ EaWrite: Write r1 into '(a7)+' (address in r0):
16751  mov lr,pc
16752  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16753
16754  ldrh r8,[r4],#2 ;@ Fetch next opcode
16755  subs r5,r5,#20 ;@ Subtract cycles
16756  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16757  b CycloneEnd
16758
16759;@ ---------- [2f00] move.l d0, -(a7) uses Op2f00 ----------
16760Op2f00:
16761;@ EaCalc : Get register index into r1:
16762  and r1,r8,#0x000f
16763;@ EaRead : Read register[r1] into r1:
16764  ldr r1,[r7,r1,lsl #2]
16765  tst r1,r1
16766
16767  and r10,r1,#0x80000000 ;@ r10=N_flag
16768  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16769
16770;@ EaCalc : Get '-(a7)' into r0:
16771  ldr r0,[r7,#0x3c] ;@ A7
16772  sub r0,r0,#4 ;@ Pre-decrement An
16773  str r0,[r7,#0x3c] ;@ A7
16774;@ EaWrite: Write r1 into '-(a7)' (address in r0):
16775  mov lr,pc
16776  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16777
16778  ldrh r8,[r4],#2 ;@ Fetch next opcode
16779  subs r5,r5,#12 ;@ Subtract cycles
16780  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16781  b CycloneEnd
16782
16783;@ ---------- [2f10] move.l (a0), -(a7) uses Op2f10 ----------
16784Op2f10:
16785;@ EaCalc : Get '(a0)' into r0:
16786  and r2,r8,#0x000f
16787  orr r2,r2,#0x8 ;@ A0-7
16788  ldr r0,[r7,r2,lsl #2]
16789;@ EaRead : Read '(a0)' (address in r0) into r1:
16790  mov lr,pc
16791  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16792  movs r1,r0
16793
16794  and r10,r1,#0x80000000 ;@ r10=N_flag
16795  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16796
16797;@ EaCalc : Get '-(a7)' into r0:
16798  ldr r0,[r7,#0x3c] ;@ A7
16799  sub r0,r0,#4 ;@ Pre-decrement An
16800  str r0,[r7,#0x3c] ;@ A7
16801;@ EaWrite: Write r1 into '-(a7)' (address in r0):
16802  mov lr,pc
16803  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16804
16805  ldrh r8,[r4],#2 ;@ Fetch next opcode
16806  subs r5,r5,#20 ;@ Subtract cycles
16807  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16808  b CycloneEnd
16809
16810;@ ---------- [2f18] move.l (a0)+, -(a7) uses Op2f18 ----------
16811Op2f18:
16812;@ EaCalc : Get '(a0)+' into r0:
16813  and r2,r8,#0x000f
16814  ldr r0,[r7,r2,lsl #2]
16815  add r3,r0,#4 ;@ Post-increment An
16816  str r3,[r7,r2,lsl #2]
16817;@ EaRead : Read '(a0)+' (address in r0) into r1:
16818  mov lr,pc
16819  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16820  movs r1,r0
16821
16822  and r10,r1,#0x80000000 ;@ r10=N_flag
16823  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16824
16825;@ EaCalc : Get '-(a7)' into r0:
16826  ldr r0,[r7,#0x3c] ;@ A7
16827  sub r0,r0,#4 ;@ Pre-decrement An
16828  str r0,[r7,#0x3c] ;@ A7
16829;@ EaWrite: Write r1 into '-(a7)' (address in r0):
16830  mov lr,pc
16831  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16832
16833  ldrh r8,[r4],#2 ;@ Fetch next opcode
16834  subs r5,r5,#20 ;@ Subtract cycles
16835  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16836  b CycloneEnd
16837
16838;@ ---------- [2f20] move.l -(a0), -(a7) uses Op2f20 ----------
16839Op2f20:
16840;@ EaCalc : Get '-(a0)' into r0:
16841  and r2,r8,#0x000f
16842  orr r2,r2,#0x8 ;@ A0-7
16843  ldr r0,[r7,r2,lsl #2]
16844  sub r0,r0,#4 ;@ Pre-decrement An
16845  str r0,[r7,r2,lsl #2]
16846;@ EaRead : Read '-(a0)' (address in r0) into r1:
16847  mov lr,pc
16848  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16849  movs r1,r0
16850
16851  and r10,r1,#0x80000000 ;@ r10=N_flag
16852  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16853
16854;@ EaCalc : Get '-(a7)' into r0:
16855  ldr r0,[r7,#0x3c] ;@ A7
16856  sub r0,r0,#4 ;@ Pre-decrement An
16857  str r0,[r7,#0x3c] ;@ A7
16858;@ EaWrite: Write r1 into '-(a7)' (address in r0):
16859  mov lr,pc
16860  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16861
16862  ldrh r8,[r4],#2 ;@ Fetch next opcode
16863  subs r5,r5,#22 ;@ Subtract cycles
16864  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16865  b CycloneEnd
16866
16867;@ ---------- [2f28] move.l ($3333,a0), -(a7) uses Op2f28 ----------
16868Op2f28:
16869;@ EaCalc : Get '($3333,a0)' into r0:
16870  ldrsh r0,[r4],#2 ;@ Fetch offset
16871  and r2,r8,#0x000f
16872  ldr r2,[r7,r2,lsl #2]
16873  add r0,r0,r2 ;@ Add on offset
16874;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
16875  mov lr,pc
16876  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16877  movs r1,r0
16878
16879  and r10,r1,#0x80000000 ;@ r10=N_flag
16880  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16881
16882;@ EaCalc : Get '-(a7)' into r0:
16883  ldr r0,[r7,#0x3c] ;@ A7
16884  sub r0,r0,#4 ;@ Pre-decrement An
16885  str r0,[r7,#0x3c] ;@ A7
16886;@ EaWrite: Write r1 into '-(a7)' (address in r0):
16887  mov lr,pc
16888  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16889
16890  ldrh r8,[r4],#2 ;@ Fetch next opcode
16891  subs r5,r5,#24 ;@ Subtract cycles
16892  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16893  b CycloneEnd
16894
16895;@ ---------- [2f30] move.l ($33,a0,d3.w*2), -(a7) uses Op2f30 ----------
16896Op2f30:
16897;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
16898;@ Get extension word into r3:
16899  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
16900  mov r2,r3,lsr #10
16901  tst r3,#0x0800 ;@ Is Rn Word or Long
16902  and r2,r2,#0x3c ;@ r2=Index of Rn
16903  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
16904  ldrne   r2,[r7,r2] ;@ r2=Rn.l
16905  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
16906  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
16907  and r2,r8,#0x000f
16908  orr r2,r2,#0x8 ;@ A0-7
16909  ldr r2,[r7,r2,lsl #2]
16910  add r0,r2,r3 ;@ r0=Disp+An+Rn
16911;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
16912  mov lr,pc
16913  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16914  movs r1,r0
16915
16916  and r10,r1,#0x80000000 ;@ r10=N_flag
16917  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16918
16919;@ EaCalc : Get '-(a7)' into r0:
16920  ldr r0,[r7,#0x3c] ;@ A7
16921  sub r0,r0,#4 ;@ Pre-decrement An
16922  str r0,[r7,#0x3c] ;@ A7
16923;@ EaWrite: Write r1 into '-(a7)' (address in r0):
16924  mov lr,pc
16925  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16926
16927  ldrh r8,[r4],#2 ;@ Fetch next opcode
16928  subs r5,r5,#26 ;@ Subtract cycles
16929  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16930  b CycloneEnd
16931
16932;@ ---------- [2f38] move.l $3333.w, -(a7) uses Op2f38 ----------
16933Op2f38:
16934;@ EaCalc : Get '$3333.w' into r0:
16935  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
16936;@ EaRead : Read '$3333.w' (address in r0) into r1:
16937  mov lr,pc
16938  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16939  movs r1,r0
16940
16941  and r10,r1,#0x80000000 ;@ r10=N_flag
16942  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16943
16944;@ EaCalc : Get '-(a7)' into r0:
16945  ldr r0,[r7,#0x3c] ;@ A7
16946  sub r0,r0,#4 ;@ Pre-decrement An
16947  str r0,[r7,#0x3c] ;@ A7
16948;@ EaWrite: Write r1 into '-(a7)' (address in r0):
16949  mov lr,pc
16950  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16951
16952  ldrh r8,[r4],#2 ;@ Fetch next opcode
16953  subs r5,r5,#24 ;@ Subtract cycles
16954  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16955  b CycloneEnd
16956
16957;@ ---------- [2f39] move.l $33333333.l, -(a7) uses Op2f39 ----------
16958Op2f39:
16959;@ EaCalc : Get '$33333333.l' into r0:
16960  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
16961  ldrh r0,[r4],#2
16962  orr r0,r0,r2,lsl #16
16963;@ EaRead : Read '$33333333.l' (address in r0) into r1:
16964  mov lr,pc
16965  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
16966  movs r1,r0
16967
16968  and r10,r1,#0x80000000 ;@ r10=N_flag
16969  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16970
16971;@ EaCalc : Get '-(a7)' into r0:
16972  ldr r0,[r7,#0x3c] ;@ A7
16973  sub r0,r0,#4 ;@ Pre-decrement An
16974  str r0,[r7,#0x3c] ;@ A7
16975;@ EaWrite: Write r1 into '-(a7)' (address in r0):
16976  mov lr,pc
16977  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
16978
16979  ldrh r8,[r4],#2 ;@ Fetch next opcode
16980  subs r5,r5,#28 ;@ Subtract cycles
16981  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
16982  b CycloneEnd
16983
16984;@ ---------- [2f3a] move.l ($3333,pc), -(a7); =3335 uses Op2f3a ----------
16985Op2f3a:
16986;@ EaCalc : Get '($3333,pc)' into r0:
16987  ldr r0,[r7,#0x60] ;@ Get Memory base
16988  sub r0,r4,r0 ;@ Real PC
16989  ldrsh r2,[r4],#2 ;@ Fetch extension
16990  add r0,r2,r0 ;@ ($nn,PC)
16991;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
16992  mov lr,pc
16993  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
16994  movs r1,r0
16995
16996  and r10,r1,#0x80000000 ;@ r10=N_flag
16997  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
16998
16999;@ EaCalc : Get '-(a7)' into r0:
17000  ldr r0,[r7,#0x3c] ;@ A7
17001  sub r0,r0,#4 ;@ Pre-decrement An
17002  str r0,[r7,#0x3c] ;@ A7
17003;@ EaWrite: Write r1 into '-(a7)' (address in r0):
17004  mov lr,pc
17005  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
17006
17007  ldrh r8,[r4],#2 ;@ Fetch next opcode
17008  subs r5,r5,#24 ;@ Subtract cycles
17009  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17010  b CycloneEnd
17011
17012;@ ---------- [2f3b] move.l ($33,pc,d3.w*2), -(a7); =35 uses Op2f3b ----------
17013Op2f3b:
17014;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
17015  ldr r0,[r7,#0x60] ;@ Get Memory base
17016  ldrh r3,[r4] ;@ Get extension word
17017  sub r0,r4,r0 ;@ r0=PC
17018  add r4,r4,#2
17019  mov r2,r3,lsr #10
17020  tst r3,#0x0800 ;@ Is Rn Word or Long
17021  and r2,r2,#0x3c ;@ r2=Index of Rn
17022  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17023  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17024  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
17025  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
17026  add r0,r2,r0 ;@ r0=Disp+PC+Rn
17027;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
17028  mov lr,pc
17029  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
17030  movs r1,r0
17031
17032  and r10,r1,#0x80000000 ;@ r10=N_flag
17033  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17034
17035;@ EaCalc : Get '-(a7)' into r0:
17036  ldr r0,[r7,#0x3c] ;@ A7
17037  sub r0,r0,#4 ;@ Pre-decrement An
17038  str r0,[r7,#0x3c] ;@ A7
17039;@ EaWrite: Write r1 into '-(a7)' (address in r0):
17040  mov lr,pc
17041  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
17042
17043  ldrh r8,[r4],#2 ;@ Fetch next opcode
17044  subs r5,r5,#26 ;@ Subtract cycles
17045  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17046  b CycloneEnd
17047
17048;@ ---------- [2f3c] move.l #$33333333, -(a7) uses Op2f3c ----------
17049Op2f3c:
17050;@ EaCalc : Get '#$33333333' into r1:
17051  ldrh r2,[r4],#2 ;@ Fetch immediate value
17052  ldrh r3,[r4],#2
17053  orr r1,r3,r2,lsl #16
17054;@ EaRead : Read '#$33333333' (address in r1) into r1:
17055  tst r1,r1
17056
17057  and r10,r1,#0x80000000 ;@ r10=N_flag
17058  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17059
17060;@ EaCalc : Get '-(a7)' into r0:
17061  ldr r0,[r7,#0x3c] ;@ A7
17062  sub r0,r0,#4 ;@ Pre-decrement An
17063  str r0,[r7,#0x3c] ;@ A7
17064;@ EaWrite: Write r1 into '-(a7)' (address in r0):
17065  mov lr,pc
17066  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
17067
17068  ldrh r8,[r4],#2 ;@ Fetch next opcode
17069  subs r5,r5,#20 ;@ Subtract cycles
17070  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17071  b CycloneEnd
17072
17073;@ ---------- [3010] move.w (a0), d0 uses Op3010 ----------
17074Op3010:
17075;@ EaCalc : Get '(a0)' into r0:
17076  and r2,r8,#0x000f
17077  orr r2,r2,#0x8 ;@ A0-7
17078  ldr r0,[r7,r2,lsl #2]
17079;@ EaRead : Read '(a0)' (address in r0) into r1:
17080  mov lr,pc
17081  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17082  movs r1,r0,asl #16
17083
17084  and r10,r1,#0x80000000 ;@ r10=N_flag
17085  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17086
17087;@ EaCalc : Get register index into r0:
17088  and r0,r8,#0x0e00
17089  mov r0,r0,lsr #7
17090;@ EaWrite: r1 into register[r0]:
17091  mov r1,r1,lsr #16
17092  strh r1,[r7,r0]
17093
17094  ldrh r8,[r4],#2 ;@ Fetch next opcode
17095  subs r5,r5,#8 ;@ Subtract cycles
17096  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17097  b CycloneEnd
17098
17099;@ ---------- [3020] move.w -(a0), d0 uses Op3020 ----------
17100Op3020:
17101;@ EaCalc : Get '-(a0)' into r0:
17102  and r2,r8,#0x000f
17103  orr r2,r2,#0x8 ;@ A0-7
17104  ldr r0,[r7,r2,lsl #2]
17105  sub r0,r0,#2 ;@ Pre-decrement An
17106  str r0,[r7,r2,lsl #2]
17107;@ EaRead : Read '-(a0)' (address in r0) into r1:
17108  mov lr,pc
17109  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17110  movs r1,r0,asl #16
17111
17112  and r10,r1,#0x80000000 ;@ r10=N_flag
17113  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17114
17115;@ EaCalc : Get register index into r0:
17116  and r0,r8,#0x0e00
17117  mov r0,r0,lsr #7
17118;@ EaWrite: r1 into register[r0]:
17119  mov r1,r1,lsr #16
17120  strh r1,[r7,r0]
17121
17122  ldrh r8,[r4],#2 ;@ Fetch next opcode
17123  subs r5,r5,#10 ;@ Subtract cycles
17124  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17125  b CycloneEnd
17126
17127;@ ---------- [3030] move.w ($33,a0,d3.w*2), d0 uses Op3030 ----------
17128Op3030:
17129;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17130;@ Get extension word into r3:
17131  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17132  mov r2,r3,lsr #10
17133  tst r3,#0x0800 ;@ Is Rn Word or Long
17134  and r2,r2,#0x3c ;@ r2=Index of Rn
17135  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17136  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17137  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17138  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17139  and r2,r8,#0x000f
17140  orr r2,r2,#0x8 ;@ A0-7
17141  ldr r2,[r7,r2,lsl #2]
17142  add r0,r2,r3 ;@ r0=Disp+An+Rn
17143;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
17144  mov lr,pc
17145  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17146  movs r1,r0,asl #16
17147
17148  and r10,r1,#0x80000000 ;@ r10=N_flag
17149  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17150
17151;@ EaCalc : Get register index into r0:
17152  and r0,r8,#0x0e00
17153  mov r0,r0,lsr #7
17154;@ EaWrite: r1 into register[r0]:
17155  mov r1,r1,lsr #16
17156  strh r1,[r7,r0]
17157
17158  ldrh r8,[r4],#2 ;@ Fetch next opcode
17159  subs r5,r5,#14 ;@ Subtract cycles
17160  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17161  b CycloneEnd
17162
17163;@ ---------- [3038] move.w $3333.w, d0 uses Op3038 ----------
17164Op3038:
17165;@ EaCalc : Get '$3333.w' into r0:
17166  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17167;@ EaRead : Read '$3333.w' (address in r0) into r1:
17168  mov lr,pc
17169  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17170  movs r1,r0,asl #16
17171
17172  and r10,r1,#0x80000000 ;@ r10=N_flag
17173  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17174
17175;@ EaCalc : Get register index into r0:
17176  and r0,r8,#0x0e00
17177  mov r0,r0,lsr #7
17178;@ EaWrite: r1 into register[r0]:
17179  mov r1,r1,lsr #16
17180  strh r1,[r7,r0]
17181
17182  ldrh r8,[r4],#2 ;@ Fetch next opcode
17183  subs r5,r5,#12 ;@ Subtract cycles
17184  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17185  b CycloneEnd
17186
17187;@ ---------- [303a] move.w ($3333,pc), d0; =3335 uses Op303a ----------
17188Op303a:
17189;@ EaCalc : Get '($3333,pc)' into r0:
17190  ldr r0,[r7,#0x60] ;@ Get Memory base
17191  sub r0,r4,r0 ;@ Real PC
17192  ldrsh r2,[r4],#2 ;@ Fetch extension
17193  add r0,r2,r0 ;@ ($nn,PC)
17194;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
17195  mov lr,pc
17196  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
17197  movs r1,r0,asl #16
17198
17199  and r10,r1,#0x80000000 ;@ r10=N_flag
17200  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17201
17202;@ EaCalc : Get register index into r0:
17203  and r0,r8,#0x0e00
17204  mov r0,r0,lsr #7
17205;@ EaWrite: r1 into register[r0]:
17206  mov r1,r1,lsr #16
17207  strh r1,[r7,r0]
17208
17209  ldrh r8,[r4],#2 ;@ Fetch next opcode
17210  subs r5,r5,#12 ;@ Subtract cycles
17211  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17212  b CycloneEnd
17213
17214;@ ---------- [303b] move.w ($33,pc,d3.w*2), d0; =35 uses Op303b ----------
17215Op303b:
17216;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
17217  ldr r0,[r7,#0x60] ;@ Get Memory base
17218  ldrh r3,[r4] ;@ Get extension word
17219  sub r0,r4,r0 ;@ r0=PC
17220  add r4,r4,#2
17221  mov r2,r3,lsr #10
17222  tst r3,#0x0800 ;@ Is Rn Word or Long
17223  and r2,r2,#0x3c ;@ r2=Index of Rn
17224  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17225  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17226  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
17227  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
17228  add r0,r2,r0 ;@ r0=Disp+PC+Rn
17229;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
17230  mov lr,pc
17231  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
17232  movs r1,r0,asl #16
17233
17234  and r10,r1,#0x80000000 ;@ r10=N_flag
17235  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17236
17237;@ EaCalc : Get register index into r0:
17238  and r0,r8,#0x0e00
17239  mov r0,r0,lsr #7
17240;@ EaWrite: r1 into register[r0]:
17241  mov r1,r1,lsr #16
17242  strh r1,[r7,r0]
17243
17244  ldrh r8,[r4],#2 ;@ Fetch next opcode
17245  subs r5,r5,#14 ;@ Subtract cycles
17246  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17247  b CycloneEnd
17248
17249;@ ---------- [303c] move.w #$3333, d0 uses Op303c ----------
17250Op303c:
17251;@ EaCalc : Get '#$3333' into r1:
17252  ldrsh r1,[r4],#2 ;@ Fetch immediate value
17253;@ EaRead : Read '#$3333' (address in r1) into r1:
17254  movs r1,r1,asl #16
17255
17256  and r10,r1,#0x80000000 ;@ r10=N_flag
17257  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17258
17259;@ EaCalc : Get register index into r0:
17260  and r0,r8,#0x0e00
17261  mov r0,r0,lsr #7
17262;@ EaWrite: r1 into register[r0]:
17263  mov r1,r1,lsr #16
17264  strh r1,[r7,r0]
17265
17266  ldrh r8,[r4],#2 ;@ Fetch next opcode
17267  subs r5,r5,#8 ;@ Subtract cycles
17268  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17269  b CycloneEnd
17270
17271;@ ---------- [3050] movea.w (a0), a0 uses Op3050 ----------
17272Op3050:
17273;@ EaCalc : Get '(a0)' into r0:
17274  and r2,r8,#0x000f
17275  orr r2,r2,#0x8 ;@ A0-7
17276  ldr r0,[r7,r2,lsl #2]
17277;@ EaRead : Read '(a0)' (address in r0) into r1:
17278  mov lr,pc
17279  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17280  sxth r1,r0 ;@ sign extend
17281
17282;@ EaCalc : Get register index into r0:
17283  and r0,r8,#0x1e00
17284;@ EaWrite: r1 into register[r0]:
17285  str r1,[r7,r0,lsr #7]
17286
17287  ldrh r8,[r4],#2 ;@ Fetch next opcode
17288  subs r5,r5,#8 ;@ Subtract cycles
17289  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17290  b CycloneEnd
17291
17292;@ ---------- [3058] movea.w (a0)+, a0 uses Op3058 ----------
17293Op3058:
17294;@ EaCalc : Get '(a0)+' into r0:
17295  and r2,r8,#0x000f
17296  ldr r0,[r7,r2,lsl #2]
17297  add r3,r0,#2 ;@ Post-increment An
17298  str r3,[r7,r2,lsl #2]
17299;@ EaRead : Read '(a0)+' (address in r0) into r1:
17300  mov lr,pc
17301  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17302  sxth r1,r0 ;@ sign extend
17303
17304;@ EaCalc : Get register index into r0:
17305  and r0,r8,#0x1e00
17306;@ EaWrite: r1 into register[r0]:
17307  str r1,[r7,r0,lsr #7]
17308
17309  ldrh r8,[r4],#2 ;@ Fetch next opcode
17310  subs r5,r5,#8 ;@ Subtract cycles
17311  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17312  b CycloneEnd
17313
17314;@ ---------- [3060] movea.w -(a0), a0 uses Op3060 ----------
17315Op3060:
17316;@ EaCalc : Get '-(a0)' into r0:
17317  and r2,r8,#0x000f
17318  orr r2,r2,#0x8 ;@ A0-7
17319  ldr r0,[r7,r2,lsl #2]
17320  sub r0,r0,#2 ;@ Pre-decrement An
17321  str r0,[r7,r2,lsl #2]
17322;@ EaRead : Read '-(a0)' (address in r0) into r1:
17323  mov lr,pc
17324  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17325  sxth r1,r0 ;@ sign extend
17326
17327;@ EaCalc : Get register index into r0:
17328  and r0,r8,#0x1e00
17329;@ EaWrite: r1 into register[r0]:
17330  str r1,[r7,r0,lsr #7]
17331
17332  ldrh r8,[r4],#2 ;@ Fetch next opcode
17333  subs r5,r5,#10 ;@ Subtract cycles
17334  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17335  b CycloneEnd
17336
17337;@ ---------- [3068] movea.w ($3333,a0), a0 uses Op3068 ----------
17338Op3068:
17339;@ EaCalc : Get '($3333,a0)' into r0:
17340  ldrsh r0,[r4],#2 ;@ Fetch offset
17341  and r2,r8,#0x000f
17342  ldr r2,[r7,r2,lsl #2]
17343  add r0,r0,r2 ;@ Add on offset
17344;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
17345  mov lr,pc
17346  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17347  sxth r1,r0 ;@ sign extend
17348
17349;@ EaCalc : Get register index into r0:
17350  and r0,r8,#0x1e00
17351;@ EaWrite: r1 into register[r0]:
17352  str r1,[r7,r0,lsr #7]
17353
17354  ldrh r8,[r4],#2 ;@ Fetch next opcode
17355  subs r5,r5,#12 ;@ Subtract cycles
17356  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17357  b CycloneEnd
17358
17359;@ ---------- [3070] movea.w ($33,a0,d3.w*2), a0 uses Op3070 ----------
17360Op3070:
17361;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17362;@ Get extension word into r3:
17363  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17364  mov r2,r3,lsr #10
17365  tst r3,#0x0800 ;@ Is Rn Word or Long
17366  and r2,r2,#0x3c ;@ r2=Index of Rn
17367  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17368  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17369  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17370  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17371  and r2,r8,#0x000f
17372  orr r2,r2,#0x8 ;@ A0-7
17373  ldr r2,[r7,r2,lsl #2]
17374  add r0,r2,r3 ;@ r0=Disp+An+Rn
17375;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
17376  mov lr,pc
17377  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17378  sxth r1,r0 ;@ sign extend
17379
17380;@ EaCalc : Get register index into r0:
17381  and r0,r8,#0x1e00
17382;@ EaWrite: r1 into register[r0]:
17383  str r1,[r7,r0,lsr #7]
17384
17385  ldrh r8,[r4],#2 ;@ Fetch next opcode
17386  subs r5,r5,#14 ;@ Subtract cycles
17387  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17388  b CycloneEnd
17389
17390;@ ---------- [3078] movea.w $3333.w, a0 uses Op3078 ----------
17391Op3078:
17392;@ EaCalc : Get '$3333.w' into r0:
17393  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17394;@ EaRead : Read '$3333.w' (address in r0) into r1:
17395  mov lr,pc
17396  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17397  sxth r1,r0 ;@ sign extend
17398
17399;@ EaCalc : Get register index into r0:
17400  and r0,r8,#0x1e00
17401;@ EaWrite: r1 into register[r0]:
17402  str r1,[r7,r0,lsr #7]
17403
17404  ldrh r8,[r4],#2 ;@ Fetch next opcode
17405  subs r5,r5,#12 ;@ Subtract cycles
17406  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17407  b CycloneEnd
17408
17409;@ ---------- [3079] movea.w $33333333.l, a0 uses Op3079 ----------
17410Op3079:
17411;@ EaCalc : Get '$33333333.l' into r0:
17412  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
17413  ldrh r0,[r4],#2
17414  orr r0,r0,r2,lsl #16
17415;@ EaRead : Read '$33333333.l' (address in r0) into r1:
17416  mov lr,pc
17417  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17418  sxth r1,r0 ;@ sign extend
17419
17420;@ EaCalc : Get register index into r0:
17421  and r0,r8,#0x1e00
17422;@ EaWrite: r1 into register[r0]:
17423  str r1,[r7,r0,lsr #7]
17424
17425  ldrh r8,[r4],#2 ;@ Fetch next opcode
17426  subs r5,r5,#16 ;@ Subtract cycles
17427  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17428  b CycloneEnd
17429
17430;@ ---------- [307a] movea.w ($3333,pc), a0; =3335 uses Op307a ----------
17431Op307a:
17432;@ EaCalc : Get '($3333,pc)' into r0:
17433  ldr r0,[r7,#0x60] ;@ Get Memory base
17434  sub r0,r4,r0 ;@ Real PC
17435  ldrsh r2,[r4],#2 ;@ Fetch extension
17436  add r0,r2,r0 ;@ ($nn,PC)
17437;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
17438  mov lr,pc
17439  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
17440  sxth r1,r0 ;@ sign extend
17441
17442;@ EaCalc : Get register index into r0:
17443  and r0,r8,#0x1e00
17444;@ EaWrite: r1 into register[r0]:
17445  str r1,[r7,r0,lsr #7]
17446
17447  ldrh r8,[r4],#2 ;@ Fetch next opcode
17448  subs r5,r5,#12 ;@ Subtract cycles
17449  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17450  b CycloneEnd
17451
17452;@ ---------- [307b] movea.w ($33,pc,d3.w*2), a0; =35 uses Op307b ----------
17453Op307b:
17454;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
17455  ldr r0,[r7,#0x60] ;@ Get Memory base
17456  ldrh r3,[r4] ;@ Get extension word
17457  sub r0,r4,r0 ;@ r0=PC
17458  add r4,r4,#2
17459  mov r2,r3,lsr #10
17460  tst r3,#0x0800 ;@ Is Rn Word or Long
17461  and r2,r2,#0x3c ;@ r2=Index of Rn
17462  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17463  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17464  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
17465  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
17466  add r0,r2,r0 ;@ r0=Disp+PC+Rn
17467;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
17468  mov lr,pc
17469  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
17470  sxth r1,r0 ;@ sign extend
17471
17472;@ EaCalc : Get register index into r0:
17473  and r0,r8,#0x1e00
17474;@ EaWrite: r1 into register[r0]:
17475  str r1,[r7,r0,lsr #7]
17476
17477  ldrh r8,[r4],#2 ;@ Fetch next opcode
17478  subs r5,r5,#14 ;@ Subtract cycles
17479  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17480  b CycloneEnd
17481
17482;@ ---------- [307c] movea.w #$3333, a0 uses Op307c ----------
17483Op307c:
17484;@ EaCalc : Get '#$3333' into r1:
17485  ldrsh r1,[r4],#2 ;@ Fetch immediate value
17486;@ EaRead : Read '#$3333' (address in r1) into r1:
17487
17488;@ EaCalc : Get register index into r0:
17489  and r0,r8,#0x1e00
17490;@ EaWrite: r1 into register[r0]:
17491  str r1,[r7,r0,lsr #7]
17492
17493  ldrh r8,[r4],#2 ;@ Fetch next opcode
17494  subs r5,r5,#8 ;@ Subtract cycles
17495  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17496  b CycloneEnd
17497
17498;@ ---------- [3090] move.w (a0), (a0) uses Op3090 ----------
17499Op3090:
17500;@ EaCalc : Get '(a0)' into r0:
17501  and r2,r8,#0x000f
17502  orr r2,r2,#0x8 ;@ A0-7
17503  ldr r0,[r7,r2,lsl #2]
17504;@ EaRead : Read '(a0)' (address in r0) into r1:
17505  mov lr,pc
17506  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17507  movs r1,r0,asl #16
17508
17509  and r10,r1,#0x80000000 ;@ r10=N_flag
17510  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17511
17512;@ EaCalc : Get '(a0)' into r0:
17513  and r2,r8,#0x1e00
17514  ldr r0,[r7,r2,lsr #7]
17515;@ EaWrite: Write r1 into '(a0)' (address in r0):
17516  mov r1,r1,lsr #16
17517  mov lr,pc
17518  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17519
17520  ldrh r8,[r4],#2 ;@ Fetch next opcode
17521  subs r5,r5,#12 ;@ Subtract cycles
17522  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17523  b CycloneEnd
17524
17525;@ ---------- [3098] move.w (a0)+, (a0) uses Op3098 ----------
17526Op3098:
17527;@ EaCalc : Get '(a0)+' into r0:
17528  and r2,r8,#0x000f
17529  ldr r0,[r7,r2,lsl #2]
17530  add r3,r0,#2 ;@ Post-increment An
17531  str r3,[r7,r2,lsl #2]
17532;@ EaRead : Read '(a0)+' (address in r0) into r1:
17533  mov lr,pc
17534  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17535  movs r1,r0,asl #16
17536
17537  and r10,r1,#0x80000000 ;@ r10=N_flag
17538  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17539
17540;@ EaCalc : Get '(a0)' into r0:
17541  and r2,r8,#0x1e00
17542  ldr r0,[r7,r2,lsr #7]
17543;@ EaWrite: Write r1 into '(a0)' (address in r0):
17544  mov r1,r1,lsr #16
17545  mov lr,pc
17546  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17547
17548  ldrh r8,[r4],#2 ;@ Fetch next opcode
17549  subs r5,r5,#12 ;@ Subtract cycles
17550  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17551  b CycloneEnd
17552
17553;@ ---------- [30a0] move.w -(a0), (a0) uses Op30a0 ----------
17554Op30a0:
17555;@ EaCalc : Get '-(a0)' into r0:
17556  and r2,r8,#0x000f
17557  orr r2,r2,#0x8 ;@ A0-7
17558  ldr r0,[r7,r2,lsl #2]
17559  sub r0,r0,#2 ;@ Pre-decrement An
17560  str r0,[r7,r2,lsl #2]
17561;@ EaRead : Read '-(a0)' (address in r0) into r1:
17562  mov lr,pc
17563  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17564  movs r1,r0,asl #16
17565
17566  and r10,r1,#0x80000000 ;@ r10=N_flag
17567  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17568
17569;@ EaCalc : Get '(a0)' into r0:
17570  and r2,r8,#0x1e00
17571  ldr r0,[r7,r2,lsr #7]
17572;@ EaWrite: Write r1 into '(a0)' (address in r0):
17573  mov r1,r1,lsr #16
17574  mov lr,pc
17575  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17576
17577  ldrh r8,[r4],#2 ;@ Fetch next opcode
17578  subs r5,r5,#14 ;@ Subtract cycles
17579  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17580  b CycloneEnd
17581
17582;@ ---------- [30a8] move.w ($3333,a0), (a0) uses Op30a8 ----------
17583Op30a8:
17584;@ EaCalc : Get '($3333,a0)' into r0:
17585  ldrsh r0,[r4],#2 ;@ Fetch offset
17586  and r2,r8,#0x000f
17587  ldr r2,[r7,r2,lsl #2]
17588  add r0,r0,r2 ;@ Add on offset
17589;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
17590  mov lr,pc
17591  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17592  movs r1,r0,asl #16
17593
17594  and r10,r1,#0x80000000 ;@ r10=N_flag
17595  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17596
17597;@ EaCalc : Get '(a0)' into r0:
17598  and r2,r8,#0x1e00
17599  ldr r0,[r7,r2,lsr #7]
17600;@ EaWrite: Write r1 into '(a0)' (address in r0):
17601  mov r1,r1,lsr #16
17602  mov lr,pc
17603  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17604
17605  ldrh r8,[r4],#2 ;@ Fetch next opcode
17606  subs r5,r5,#16 ;@ Subtract cycles
17607  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17608  b CycloneEnd
17609
17610;@ ---------- [30b0] move.w ($33,a0,d3.w*2), (a0) uses Op30b0 ----------
17611Op30b0:
17612;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17613;@ Get extension word into r3:
17614  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17615  mov r2,r3,lsr #10
17616  tst r3,#0x0800 ;@ Is Rn Word or Long
17617  and r2,r2,#0x3c ;@ r2=Index of Rn
17618  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17619  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17620  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17621  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17622  and r2,r8,#0x000f
17623  orr r2,r2,#0x8 ;@ A0-7
17624  ldr r2,[r7,r2,lsl #2]
17625  add r0,r2,r3 ;@ r0=Disp+An+Rn
17626;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
17627  mov lr,pc
17628  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17629  movs r1,r0,asl #16
17630
17631  and r10,r1,#0x80000000 ;@ r10=N_flag
17632  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17633
17634;@ EaCalc : Get '(a0)' into r0:
17635  and r2,r8,#0x1e00
17636  ldr r0,[r7,r2,lsr #7]
17637;@ EaWrite: Write r1 into '(a0)' (address in r0):
17638  mov r1,r1,lsr #16
17639  mov lr,pc
17640  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17641
17642  ldrh r8,[r4],#2 ;@ Fetch next opcode
17643  subs r5,r5,#18 ;@ Subtract cycles
17644  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17645  b CycloneEnd
17646
17647;@ ---------- [30b8] move.w $3333.w, (a0) uses Op30b8 ----------
17648Op30b8:
17649;@ EaCalc : Get '$3333.w' into r0:
17650  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17651;@ EaRead : Read '$3333.w' (address in r0) into r1:
17652  mov lr,pc
17653  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17654  movs r1,r0,asl #16
17655
17656  and r10,r1,#0x80000000 ;@ r10=N_flag
17657  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17658
17659;@ EaCalc : Get '(a0)' into r0:
17660  and r2,r8,#0x1e00
17661  ldr r0,[r7,r2,lsr #7]
17662;@ EaWrite: Write r1 into '(a0)' (address in r0):
17663  mov r1,r1,lsr #16
17664  mov lr,pc
17665  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17666
17667  ldrh r8,[r4],#2 ;@ Fetch next opcode
17668  subs r5,r5,#16 ;@ Subtract cycles
17669  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17670  b CycloneEnd
17671
17672;@ ---------- [30b9] move.w $33333333.l, (a0) uses Op30b9 ----------
17673Op30b9:
17674;@ EaCalc : Get '$33333333.l' into r0:
17675  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
17676  ldrh r0,[r4],#2
17677  orr r0,r0,r2,lsl #16
17678;@ EaRead : Read '$33333333.l' (address in r0) into r1:
17679  mov lr,pc
17680  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17681  movs r1,r0,asl #16
17682
17683  and r10,r1,#0x80000000 ;@ r10=N_flag
17684  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17685
17686;@ EaCalc : Get '(a0)' into r0:
17687  and r2,r8,#0x1e00
17688  ldr r0,[r7,r2,lsr #7]
17689;@ EaWrite: Write r1 into '(a0)' (address in r0):
17690  mov r1,r1,lsr #16
17691  mov lr,pc
17692  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17693
17694  ldrh r8,[r4],#2 ;@ Fetch next opcode
17695  subs r5,r5,#20 ;@ Subtract cycles
17696  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17697  b CycloneEnd
17698
17699;@ ---------- [30ba] move.w ($3333,pc), (a0); =3335 uses Op30ba ----------
17700Op30ba:
17701;@ EaCalc : Get '($3333,pc)' into r0:
17702  ldr r0,[r7,#0x60] ;@ Get Memory base
17703  sub r0,r4,r0 ;@ Real PC
17704  ldrsh r2,[r4],#2 ;@ Fetch extension
17705  add r0,r2,r0 ;@ ($nn,PC)
17706;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
17707  mov lr,pc
17708  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
17709  movs r1,r0,asl #16
17710
17711  and r10,r1,#0x80000000 ;@ r10=N_flag
17712  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17713
17714;@ EaCalc : Get '(a0)' into r0:
17715  and r2,r8,#0x1e00
17716  ldr r0,[r7,r2,lsr #7]
17717;@ EaWrite: Write r1 into '(a0)' (address in r0):
17718  mov r1,r1,lsr #16
17719  mov lr,pc
17720  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17721
17722  ldrh r8,[r4],#2 ;@ Fetch next opcode
17723  subs r5,r5,#16 ;@ Subtract cycles
17724  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17725  b CycloneEnd
17726
17727;@ ---------- [30bb] move.w ($33,pc,d3.w*2), (a0); =35 uses Op30bb ----------
17728Op30bb:
17729;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
17730  ldr r0,[r7,#0x60] ;@ Get Memory base
17731  ldrh r3,[r4] ;@ Get extension word
17732  sub r0,r4,r0 ;@ r0=PC
17733  add r4,r4,#2
17734  mov r2,r3,lsr #10
17735  tst r3,#0x0800 ;@ Is Rn Word or Long
17736  and r2,r2,#0x3c ;@ r2=Index of Rn
17737  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17738  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17739  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
17740  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
17741  add r0,r2,r0 ;@ r0=Disp+PC+Rn
17742;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
17743  mov lr,pc
17744  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
17745  movs r1,r0,asl #16
17746
17747  and r10,r1,#0x80000000 ;@ r10=N_flag
17748  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17749
17750;@ EaCalc : Get '(a0)' into r0:
17751  and r2,r8,#0x1e00
17752  ldr r0,[r7,r2,lsr #7]
17753;@ EaWrite: Write r1 into '(a0)' (address in r0):
17754  mov r1,r1,lsr #16
17755  mov lr,pc
17756  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17757
17758  ldrh r8,[r4],#2 ;@ Fetch next opcode
17759  subs r5,r5,#18 ;@ Subtract cycles
17760  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17761  b CycloneEnd
17762
17763;@ ---------- [30bc] move.w #$3333, (a0) uses Op30bc ----------
17764Op30bc:
17765;@ EaCalc : Get '#$3333' into r1:
17766  ldrsh r1,[r4],#2 ;@ Fetch immediate value
17767;@ EaRead : Read '#$3333' (address in r1) into r1:
17768  movs r1,r1,asl #16
17769
17770  and r10,r1,#0x80000000 ;@ r10=N_flag
17771  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17772
17773;@ EaCalc : Get '(a0)' into r0:
17774  and r2,r8,#0x1e00
17775  ldr r0,[r7,r2,lsr #7]
17776;@ EaWrite: Write r1 into '(a0)' (address in r0):
17777  mov r1,r1,lsr #16
17778  mov lr,pc
17779  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17780
17781  ldrh r8,[r4],#2 ;@ Fetch next opcode
17782  subs r5,r5,#12 ;@ Subtract cycles
17783  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17784  b CycloneEnd
17785
17786;@ ---------- [30d8] move.w (a0)+, (a0)+ uses Op30d8 ----------
17787Op30d8:
17788;@ EaCalc : Get '(a0)+' into r0:
17789  and r2,r8,#0x000f
17790  ldr r0,[r7,r2,lsl #2]
17791  add r3,r0,#2 ;@ Post-increment An
17792  str r3,[r7,r2,lsl #2]
17793;@ EaRead : Read '(a0)+' (address in r0) into r1:
17794  mov lr,pc
17795  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17796  movs r1,r0,asl #16
17797
17798  and r10,r1,#0x80000000 ;@ r10=N_flag
17799  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17800
17801;@ EaCalc : Get '(a0)+' into r0:
17802  and r2,r8,#0x1e00
17803  ldr r0,[r7,r2,lsr #7]
17804  add r3,r0,#2 ;@ Post-increment An
17805  str r3,[r7,r2,lsr #7]
17806;@ EaWrite: Write r1 into '(a0)+' (address in r0):
17807  mov r1,r1,lsr #16
17808  mov lr,pc
17809  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17810
17811  ldrh r8,[r4],#2 ;@ Fetch next opcode
17812  subs r5,r5,#12 ;@ Subtract cycles
17813  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17814  b CycloneEnd
17815
17816;@ ---------- [30e0] move.w -(a0), (a0)+ uses Op30e0 ----------
17817Op30e0:
17818;@ EaCalc : Get '-(a0)' into r0:
17819  and r2,r8,#0x000f
17820  orr r2,r2,#0x8 ;@ A0-7
17821  ldr r0,[r7,r2,lsl #2]
17822  sub r0,r0,#2 ;@ Pre-decrement An
17823  str r0,[r7,r2,lsl #2]
17824;@ EaRead : Read '-(a0)' (address in r0) into r1:
17825  mov lr,pc
17826  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17827  movs r1,r0,asl #16
17828
17829  and r10,r1,#0x80000000 ;@ r10=N_flag
17830  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17831
17832;@ EaCalc : Get '(a0)+' into r0:
17833  and r2,r8,#0x1e00
17834  ldr r0,[r7,r2,lsr #7]
17835  add r3,r0,#2 ;@ Post-increment An
17836  str r3,[r7,r2,lsr #7]
17837;@ EaWrite: Write r1 into '(a0)+' (address in r0):
17838  mov r1,r1,lsr #16
17839  mov lr,pc
17840  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17841
17842  ldrh r8,[r4],#2 ;@ Fetch next opcode
17843  subs r5,r5,#14 ;@ Subtract cycles
17844  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17845  b CycloneEnd
17846
17847;@ ---------- [30e8] move.w ($3333,a0), (a0)+ uses Op30e8 ----------
17848Op30e8:
17849;@ EaCalc : Get '($3333,a0)' into r0:
17850  ldrsh r0,[r4],#2 ;@ Fetch offset
17851  and r2,r8,#0x000f
17852  ldr r2,[r7,r2,lsl #2]
17853  add r0,r0,r2 ;@ Add on offset
17854;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
17855  mov lr,pc
17856  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17857  movs r1,r0,asl #16
17858
17859  and r10,r1,#0x80000000 ;@ r10=N_flag
17860  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17861
17862;@ EaCalc : Get '(a0)+' into r0:
17863  and r2,r8,#0x1e00
17864  ldr r0,[r7,r2,lsr #7]
17865  add r3,r0,#2 ;@ Post-increment An
17866  str r3,[r7,r2,lsr #7]
17867;@ EaWrite: Write r1 into '(a0)+' (address in r0):
17868  mov r1,r1,lsr #16
17869  mov lr,pc
17870  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17871
17872  ldrh r8,[r4],#2 ;@ Fetch next opcode
17873  subs r5,r5,#16 ;@ Subtract cycles
17874  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17875  b CycloneEnd
17876
17877;@ ---------- [30f0] move.w ($33,a0,d3.w*2), (a0)+ uses Op30f0 ----------
17878Op30f0:
17879;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
17880;@ Get extension word into r3:
17881  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
17882  mov r2,r3,lsr #10
17883  tst r3,#0x0800 ;@ Is Rn Word or Long
17884  and r2,r2,#0x3c ;@ r2=Index of Rn
17885  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
17886  ldrne   r2,[r7,r2] ;@ r2=Rn.l
17887  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
17888  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
17889  and r2,r8,#0x000f
17890  orr r2,r2,#0x8 ;@ A0-7
17891  ldr r2,[r7,r2,lsl #2]
17892  add r0,r2,r3 ;@ r0=Disp+An+Rn
17893;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
17894  mov lr,pc
17895  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17896  movs r1,r0,asl #16
17897
17898  and r10,r1,#0x80000000 ;@ r10=N_flag
17899  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17900
17901;@ EaCalc : Get '(a0)+' into r0:
17902  and r2,r8,#0x1e00
17903  ldr r0,[r7,r2,lsr #7]
17904  add r3,r0,#2 ;@ Post-increment An
17905  str r3,[r7,r2,lsr #7]
17906;@ EaWrite: Write r1 into '(a0)+' (address in r0):
17907  mov r1,r1,lsr #16
17908  mov lr,pc
17909  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17910
17911  ldrh r8,[r4],#2 ;@ Fetch next opcode
17912  subs r5,r5,#18 ;@ Subtract cycles
17913  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17914  b CycloneEnd
17915
17916;@ ---------- [30f8] move.w $3333.w, (a0)+ uses Op30f8 ----------
17917Op30f8:
17918;@ EaCalc : Get '$3333.w' into r0:
17919  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
17920;@ EaRead : Read '$3333.w' (address in r0) into r1:
17921  mov lr,pc
17922  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17923  movs r1,r0,asl #16
17924
17925  and r10,r1,#0x80000000 ;@ r10=N_flag
17926  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17927
17928;@ EaCalc : Get '(a0)+' into r0:
17929  and r2,r8,#0x1e00
17930  ldr r0,[r7,r2,lsr #7]
17931  add r3,r0,#2 ;@ Post-increment An
17932  str r3,[r7,r2,lsr #7]
17933;@ EaWrite: Write r1 into '(a0)+' (address in r0):
17934  mov r1,r1,lsr #16
17935  mov lr,pc
17936  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17937
17938  ldrh r8,[r4],#2 ;@ Fetch next opcode
17939  subs r5,r5,#16 ;@ Subtract cycles
17940  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17941  b CycloneEnd
17942
17943;@ ---------- [30f9] move.w $33333333.l, (a0)+ uses Op30f9 ----------
17944Op30f9:
17945;@ EaCalc : Get '$33333333.l' into r0:
17946  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
17947  ldrh r0,[r4],#2
17948  orr r0,r0,r2,lsl #16
17949;@ EaRead : Read '$33333333.l' (address in r0) into r1:
17950  mov lr,pc
17951  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
17952  movs r1,r0,asl #16
17953
17954  and r10,r1,#0x80000000 ;@ r10=N_flag
17955  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17956
17957;@ EaCalc : Get '(a0)+' into r0:
17958  and r2,r8,#0x1e00
17959  ldr r0,[r7,r2,lsr #7]
17960  add r3,r0,#2 ;@ Post-increment An
17961  str r3,[r7,r2,lsr #7]
17962;@ EaWrite: Write r1 into '(a0)+' (address in r0):
17963  mov r1,r1,lsr #16
17964  mov lr,pc
17965  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17966
17967  ldrh r8,[r4],#2 ;@ Fetch next opcode
17968  subs r5,r5,#20 ;@ Subtract cycles
17969  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
17970  b CycloneEnd
17971
17972;@ ---------- [30fa] move.w ($3333,pc), (a0)+; =3335 uses Op30fa ----------
17973Op30fa:
17974;@ EaCalc : Get '($3333,pc)' into r0:
17975  ldr r0,[r7,#0x60] ;@ Get Memory base
17976  sub r0,r4,r0 ;@ Real PC
17977  ldrsh r2,[r4],#2 ;@ Fetch extension
17978  add r0,r2,r0 ;@ ($nn,PC)
17979;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
17980  mov lr,pc
17981  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
17982  movs r1,r0,asl #16
17983
17984  and r10,r1,#0x80000000 ;@ r10=N_flag
17985  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
17986
17987;@ EaCalc : Get '(a0)+' into r0:
17988  and r2,r8,#0x1e00
17989  ldr r0,[r7,r2,lsr #7]
17990  add r3,r0,#2 ;@ Post-increment An
17991  str r3,[r7,r2,lsr #7]
17992;@ EaWrite: Write r1 into '(a0)+' (address in r0):
17993  mov r1,r1,lsr #16
17994  mov lr,pc
17995  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
17996
17997  ldrh r8,[r4],#2 ;@ Fetch next opcode
17998  subs r5,r5,#16 ;@ Subtract cycles
17999  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18000  b CycloneEnd
18001
18002;@ ---------- [30fb] move.w ($33,pc,d3.w*2), (a0)+; =35 uses Op30fb ----------
18003Op30fb:
18004;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
18005  ldr r0,[r7,#0x60] ;@ Get Memory base
18006  ldrh r3,[r4] ;@ Get extension word
18007  sub r0,r4,r0 ;@ r0=PC
18008  add r4,r4,#2
18009  mov r2,r3,lsr #10
18010  tst r3,#0x0800 ;@ Is Rn Word or Long
18011  and r2,r2,#0x3c ;@ r2=Index of Rn
18012  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18013  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18014  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
18015  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
18016  add r0,r2,r0 ;@ r0=Disp+PC+Rn
18017;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
18018  mov lr,pc
18019  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
18020  movs r1,r0,asl #16
18021
18022  and r10,r1,#0x80000000 ;@ r10=N_flag
18023  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18024
18025;@ EaCalc : Get '(a0)+' into r0:
18026  and r2,r8,#0x1e00
18027  ldr r0,[r7,r2,lsr #7]
18028  add r3,r0,#2 ;@ Post-increment An
18029  str r3,[r7,r2,lsr #7]
18030;@ EaWrite: Write r1 into '(a0)+' (address in r0):
18031  mov r1,r1,lsr #16
18032  mov lr,pc
18033  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18034
18035  ldrh r8,[r4],#2 ;@ Fetch next opcode
18036  subs r5,r5,#18 ;@ Subtract cycles
18037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18038  b CycloneEnd
18039
18040;@ ---------- [30fc] move.w #$3333, (a0)+ uses Op30fc ----------
18041Op30fc:
18042;@ EaCalc : Get '#$3333' into r1:
18043  ldrsh r1,[r4],#2 ;@ Fetch immediate value
18044;@ EaRead : Read '#$3333' (address in r1) into r1:
18045  movs r1,r1,asl #16
18046
18047  and r10,r1,#0x80000000 ;@ r10=N_flag
18048  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18049
18050;@ EaCalc : Get '(a0)+' into r0:
18051  and r2,r8,#0x1e00
18052  ldr r0,[r7,r2,lsr #7]
18053  add r3,r0,#2 ;@ Post-increment An
18054  str r3,[r7,r2,lsr #7]
18055;@ EaWrite: Write r1 into '(a0)+' (address in r0):
18056  mov r1,r1,lsr #16
18057  mov lr,pc
18058  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18059
18060  ldrh r8,[r4],#2 ;@ Fetch next opcode
18061  subs r5,r5,#12 ;@ Subtract cycles
18062  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18063  b CycloneEnd
18064
18065;@ ---------- [3100] move.w d0, -(a0) uses Op3100 ----------
18066Op3100:
18067;@ EaCalc : Get register index into r1:
18068  and r1,r8,#0x000f
18069  mov r1,r1,lsl #2
18070;@ EaRead : Read register[r1] into r1:
18071  ldrh r1,[r7,r1]
18072
18073  movs r2,r1,lsl #16
18074  and r10,r2,#0x80000000 ;@ r10=N_flag
18075  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18076
18077;@ EaCalc : Get '-(a0)' into r0:
18078  and r2,r8,#0x1e00
18079  ldr r0,[r7,r2,lsr #7]
18080  sub r0,r0,#2 ;@ Pre-decrement An
18081  str r0,[r7,r2,lsr #7]
18082;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18083  mov lr,pc
18084  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18085
18086  ldrh r8,[r4],#2 ;@ Fetch next opcode
18087  subs r5,r5,#8 ;@ Subtract cycles
18088  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18089  b CycloneEnd
18090
18091;@ ---------- [3110] move.w (a0), -(a0) uses Op3110 ----------
18092Op3110:
18093;@ EaCalc : Get '(a0)' into r0:
18094  and r2,r8,#0x000f
18095  orr r2,r2,#0x8 ;@ A0-7
18096  ldr r0,[r7,r2,lsl #2]
18097;@ EaRead : Read '(a0)' (address in r0) into r1:
18098  mov lr,pc
18099  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18100  movs r1,r0,asl #16
18101
18102  and r10,r1,#0x80000000 ;@ r10=N_flag
18103  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18104
18105;@ EaCalc : Get '-(a0)' into r0:
18106  and r2,r8,#0x1e00
18107  ldr r0,[r7,r2,lsr #7]
18108  sub r0,r0,#2 ;@ Pre-decrement An
18109  str r0,[r7,r2,lsr #7]
18110;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18111  mov r1,r1,lsr #16
18112  mov lr,pc
18113  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18114
18115  ldrh r8,[r4],#2 ;@ Fetch next opcode
18116  subs r5,r5,#12 ;@ Subtract cycles
18117  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18118  b CycloneEnd
18119
18120;@ ---------- [3118] move.w (a0)+, -(a0) uses Op3118 ----------
18121Op3118:
18122;@ EaCalc : Get '(a0)+' into r0:
18123  and r2,r8,#0x000f
18124  ldr r0,[r7,r2,lsl #2]
18125  add r3,r0,#2 ;@ Post-increment An
18126  str r3,[r7,r2,lsl #2]
18127;@ EaRead : Read '(a0)+' (address in r0) into r1:
18128  mov lr,pc
18129  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18130  movs r1,r0,asl #16
18131
18132  and r10,r1,#0x80000000 ;@ r10=N_flag
18133  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18134
18135;@ EaCalc : Get '-(a0)' into r0:
18136  and r2,r8,#0x1e00
18137  ldr r0,[r7,r2,lsr #7]
18138  sub r0,r0,#2 ;@ Pre-decrement An
18139  str r0,[r7,r2,lsr #7]
18140;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18141  mov r1,r1,lsr #16
18142  mov lr,pc
18143  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18144
18145  ldrh r8,[r4],#2 ;@ Fetch next opcode
18146  subs r5,r5,#12 ;@ Subtract cycles
18147  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18148  b CycloneEnd
18149
18150;@ ---------- [3120] move.w -(a0), -(a0) uses Op3120 ----------
18151Op3120:
18152;@ EaCalc : Get '-(a0)' into r0:
18153  and r2,r8,#0x000f
18154  orr r2,r2,#0x8 ;@ A0-7
18155  ldr r0,[r7,r2,lsl #2]
18156  sub r0,r0,#2 ;@ Pre-decrement An
18157  str r0,[r7,r2,lsl #2]
18158;@ EaRead : Read '-(a0)' (address in r0) into r1:
18159  mov lr,pc
18160  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18161  movs r1,r0,asl #16
18162
18163  and r10,r1,#0x80000000 ;@ r10=N_flag
18164  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18165
18166;@ EaCalc : Get '-(a0)' into r0:
18167  and r2,r8,#0x1e00
18168  ldr r0,[r7,r2,lsr #7]
18169  sub r0,r0,#2 ;@ Pre-decrement An
18170  str r0,[r7,r2,lsr #7]
18171;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18172  mov r1,r1,lsr #16
18173  mov lr,pc
18174  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18175
18176  ldrh r8,[r4],#2 ;@ Fetch next opcode
18177  subs r5,r5,#14 ;@ Subtract cycles
18178  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18179  b CycloneEnd
18180
18181;@ ---------- [3128] move.w ($3333,a0), -(a0) uses Op3128 ----------
18182Op3128:
18183;@ EaCalc : Get '($3333,a0)' into r0:
18184  ldrsh r0,[r4],#2 ;@ Fetch offset
18185  and r2,r8,#0x000f
18186  ldr r2,[r7,r2,lsl #2]
18187  add r0,r0,r2 ;@ Add on offset
18188;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
18189  mov lr,pc
18190  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18191  movs r1,r0,asl #16
18192
18193  and r10,r1,#0x80000000 ;@ r10=N_flag
18194  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18195
18196;@ EaCalc : Get '-(a0)' into r0:
18197  and r2,r8,#0x1e00
18198  ldr r0,[r7,r2,lsr #7]
18199  sub r0,r0,#2 ;@ Pre-decrement An
18200  str r0,[r7,r2,lsr #7]
18201;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18202  mov r1,r1,lsr #16
18203  mov lr,pc
18204  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18205
18206  ldrh r8,[r4],#2 ;@ Fetch next opcode
18207  subs r5,r5,#16 ;@ Subtract cycles
18208  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18209  b CycloneEnd
18210
18211;@ ---------- [3130] move.w ($33,a0,d3.w*2), -(a0) uses Op3130 ----------
18212Op3130:
18213;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18214;@ Get extension word into r3:
18215  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18216  mov r2,r3,lsr #10
18217  tst r3,#0x0800 ;@ Is Rn Word or Long
18218  and r2,r2,#0x3c ;@ r2=Index of Rn
18219  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18220  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18221  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18222  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18223  and r2,r8,#0x000f
18224  orr r2,r2,#0x8 ;@ A0-7
18225  ldr r2,[r7,r2,lsl #2]
18226  add r0,r2,r3 ;@ r0=Disp+An+Rn
18227;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
18228  mov lr,pc
18229  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18230  movs r1,r0,asl #16
18231
18232  and r10,r1,#0x80000000 ;@ r10=N_flag
18233  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18234
18235;@ EaCalc : Get '-(a0)' into r0:
18236  and r2,r8,#0x1e00
18237  ldr r0,[r7,r2,lsr #7]
18238  sub r0,r0,#2 ;@ Pre-decrement An
18239  str r0,[r7,r2,lsr #7]
18240;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18241  mov r1,r1,lsr #16
18242  mov lr,pc
18243  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18244
18245  ldrh r8,[r4],#2 ;@ Fetch next opcode
18246  subs r5,r5,#18 ;@ Subtract cycles
18247  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18248  b CycloneEnd
18249
18250;@ ---------- [3138] move.w $3333.w, -(a0) uses Op3138 ----------
18251Op3138:
18252;@ EaCalc : Get '$3333.w' into r0:
18253  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18254;@ EaRead : Read '$3333.w' (address in r0) into r1:
18255  mov lr,pc
18256  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18257  movs r1,r0,asl #16
18258
18259  and r10,r1,#0x80000000 ;@ r10=N_flag
18260  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18261
18262;@ EaCalc : Get '-(a0)' into r0:
18263  and r2,r8,#0x1e00
18264  ldr r0,[r7,r2,lsr #7]
18265  sub r0,r0,#2 ;@ Pre-decrement An
18266  str r0,[r7,r2,lsr #7]
18267;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18268  mov r1,r1,lsr #16
18269  mov lr,pc
18270  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18271
18272  ldrh r8,[r4],#2 ;@ Fetch next opcode
18273  subs r5,r5,#16 ;@ Subtract cycles
18274  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18275  b CycloneEnd
18276
18277;@ ---------- [3139] move.w $33333333.l, -(a0) uses Op3139 ----------
18278Op3139:
18279;@ EaCalc : Get '$33333333.l' into r0:
18280  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18281  ldrh r0,[r4],#2
18282  orr r0,r0,r2,lsl #16
18283;@ EaRead : Read '$33333333.l' (address in r0) into r1:
18284  mov lr,pc
18285  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18286  movs r1,r0,asl #16
18287
18288  and r10,r1,#0x80000000 ;@ r10=N_flag
18289  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18290
18291;@ EaCalc : Get '-(a0)' into r0:
18292  and r2,r8,#0x1e00
18293  ldr r0,[r7,r2,lsr #7]
18294  sub r0,r0,#2 ;@ Pre-decrement An
18295  str r0,[r7,r2,lsr #7]
18296;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18297  mov r1,r1,lsr #16
18298  mov lr,pc
18299  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18300
18301  ldrh r8,[r4],#2 ;@ Fetch next opcode
18302  subs r5,r5,#20 ;@ Subtract cycles
18303  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18304  b CycloneEnd
18305
18306;@ ---------- [313a] move.w ($3333,pc), -(a0); =3335 uses Op313a ----------
18307Op313a:
18308;@ EaCalc : Get '($3333,pc)' into r0:
18309  ldr r0,[r7,#0x60] ;@ Get Memory base
18310  sub r0,r4,r0 ;@ Real PC
18311  ldrsh r2,[r4],#2 ;@ Fetch extension
18312  add r0,r2,r0 ;@ ($nn,PC)
18313;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
18314  mov lr,pc
18315  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
18316  movs r1,r0,asl #16
18317
18318  and r10,r1,#0x80000000 ;@ r10=N_flag
18319  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18320
18321;@ EaCalc : Get '-(a0)' into r0:
18322  and r2,r8,#0x1e00
18323  ldr r0,[r7,r2,lsr #7]
18324  sub r0,r0,#2 ;@ Pre-decrement An
18325  str r0,[r7,r2,lsr #7]
18326;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18327  mov r1,r1,lsr #16
18328  mov lr,pc
18329  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18330
18331  ldrh r8,[r4],#2 ;@ Fetch next opcode
18332  subs r5,r5,#16 ;@ Subtract cycles
18333  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18334  b CycloneEnd
18335
18336;@ ---------- [313b] move.w ($33,pc,d3.w*2), -(a0); =35 uses Op313b ----------
18337Op313b:
18338;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
18339  ldr r0,[r7,#0x60] ;@ Get Memory base
18340  ldrh r3,[r4] ;@ Get extension word
18341  sub r0,r4,r0 ;@ r0=PC
18342  add r4,r4,#2
18343  mov r2,r3,lsr #10
18344  tst r3,#0x0800 ;@ Is Rn Word or Long
18345  and r2,r2,#0x3c ;@ r2=Index of Rn
18346  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18347  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18348  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
18349  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
18350  add r0,r2,r0 ;@ r0=Disp+PC+Rn
18351;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
18352  mov lr,pc
18353  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
18354  movs r1,r0,asl #16
18355
18356  and r10,r1,#0x80000000 ;@ r10=N_flag
18357  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18358
18359;@ EaCalc : Get '-(a0)' into r0:
18360  and r2,r8,#0x1e00
18361  ldr r0,[r7,r2,lsr #7]
18362  sub r0,r0,#2 ;@ Pre-decrement An
18363  str r0,[r7,r2,lsr #7]
18364;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18365  mov r1,r1,lsr #16
18366  mov lr,pc
18367  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18368
18369  ldrh r8,[r4],#2 ;@ Fetch next opcode
18370  subs r5,r5,#18 ;@ Subtract cycles
18371  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18372  b CycloneEnd
18373
18374;@ ---------- [313c] move.w #$3333, -(a0) uses Op313c ----------
18375Op313c:
18376;@ EaCalc : Get '#$3333' into r1:
18377  ldrsh r1,[r4],#2 ;@ Fetch immediate value
18378;@ EaRead : Read '#$3333' (address in r1) into r1:
18379  movs r1,r1,asl #16
18380
18381  and r10,r1,#0x80000000 ;@ r10=N_flag
18382  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18383
18384;@ EaCalc : Get '-(a0)' into r0:
18385  and r2,r8,#0x1e00
18386  ldr r0,[r7,r2,lsr #7]
18387  sub r0,r0,#2 ;@ Pre-decrement An
18388  str r0,[r7,r2,lsr #7]
18389;@ EaWrite: Write r1 into '-(a0)' (address in r0):
18390  mov r1,r1,lsr #16
18391  mov lr,pc
18392  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18393
18394  ldrh r8,[r4],#2 ;@ Fetch next opcode
18395  subs r5,r5,#12 ;@ Subtract cycles
18396  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18397  b CycloneEnd
18398
18399;@ ---------- [3140] move.w d0, ($3333,a0) uses Op3140 ----------
18400Op3140:
18401;@ EaCalc : Get register index into r1:
18402  and r1,r8,#0x000f
18403  mov r1,r1,lsl #2
18404;@ EaRead : Read register[r1] into r1:
18405  ldrh r1,[r7,r1]
18406
18407  movs r2,r1,lsl #16
18408  and r10,r2,#0x80000000 ;@ r10=N_flag
18409  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18410
18411;@ EaCalc : Get '($3333,a0)' into r0:
18412  ldrsh r0,[r4],#2 ;@ Fetch offset
18413  and r2,r8,#0x1e00
18414  mov r2,r2,lsr #9
18415  ldr r2,[r7,r2,lsl #2]
18416  add r0,r0,r2 ;@ Add on offset
18417;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18418  mov lr,pc
18419  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18420
18421  ldrh r8,[r4],#2 ;@ Fetch next opcode
18422  subs r5,r5,#12 ;@ Subtract cycles
18423  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18424  b CycloneEnd
18425
18426;@ ---------- [3150] move.w (a0), ($3333,a0) uses Op3150 ----------
18427Op3150:
18428;@ EaCalc : Get '(a0)' into r0:
18429  and r2,r8,#0x000f
18430  orr r2,r2,#0x8 ;@ A0-7
18431  ldr r0,[r7,r2,lsl #2]
18432;@ EaRead : Read '(a0)' (address in r0) into r1:
18433  mov lr,pc
18434  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18435  movs r1,r0,asl #16
18436
18437  and r10,r1,#0x80000000 ;@ r10=N_flag
18438  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18439
18440;@ EaCalc : Get '($3333,a0)' into r0:
18441  ldrsh r0,[r4],#2 ;@ Fetch offset
18442  and r2,r8,#0x1e00
18443  mov r2,r2,lsr #9
18444  ldr r2,[r7,r2,lsl #2]
18445  add r0,r0,r2 ;@ Add on offset
18446;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18447  mov r1,r1,lsr #16
18448  mov lr,pc
18449  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18450
18451  ldrh r8,[r4],#2 ;@ Fetch next opcode
18452  subs r5,r5,#16 ;@ Subtract cycles
18453  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18454  b CycloneEnd
18455
18456;@ ---------- [3158] move.w (a0)+, ($3333,a0) uses Op3158 ----------
18457Op3158:
18458;@ EaCalc : Get '(a0)+' into r0:
18459  and r2,r8,#0x000f
18460  ldr r0,[r7,r2,lsl #2]
18461  add r3,r0,#2 ;@ Post-increment An
18462  str r3,[r7,r2,lsl #2]
18463;@ EaRead : Read '(a0)+' (address in r0) into r1:
18464  mov lr,pc
18465  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18466  movs r1,r0,asl #16
18467
18468  and r10,r1,#0x80000000 ;@ r10=N_flag
18469  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18470
18471;@ EaCalc : Get '($3333,a0)' into r0:
18472  ldrsh r0,[r4],#2 ;@ Fetch offset
18473  and r2,r8,#0x1e00
18474  mov r2,r2,lsr #9
18475  ldr r2,[r7,r2,lsl #2]
18476  add r0,r0,r2 ;@ Add on offset
18477;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18478  mov r1,r1,lsr #16
18479  mov lr,pc
18480  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18481
18482  ldrh r8,[r4],#2 ;@ Fetch next opcode
18483  subs r5,r5,#16 ;@ Subtract cycles
18484  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18485  b CycloneEnd
18486
18487;@ ---------- [3160] move.w -(a0), ($3333,a0) uses Op3160 ----------
18488Op3160:
18489;@ EaCalc : Get '-(a0)' into r0:
18490  and r2,r8,#0x000f
18491  orr r2,r2,#0x8 ;@ A0-7
18492  ldr r0,[r7,r2,lsl #2]
18493  sub r0,r0,#2 ;@ Pre-decrement An
18494  str r0,[r7,r2,lsl #2]
18495;@ EaRead : Read '-(a0)' (address in r0) into r1:
18496  mov lr,pc
18497  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18498  movs r1,r0,asl #16
18499
18500  and r10,r1,#0x80000000 ;@ r10=N_flag
18501  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18502
18503;@ EaCalc : Get '($3333,a0)' into r0:
18504  ldrsh r0,[r4],#2 ;@ Fetch offset
18505  and r2,r8,#0x1e00
18506  mov r2,r2,lsr #9
18507  ldr r2,[r7,r2,lsl #2]
18508  add r0,r0,r2 ;@ Add on offset
18509;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18510  mov r1,r1,lsr #16
18511  mov lr,pc
18512  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18513
18514  ldrh r8,[r4],#2 ;@ Fetch next opcode
18515  subs r5,r5,#18 ;@ Subtract cycles
18516  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18517  b CycloneEnd
18518
18519;@ ---------- [3168] move.w ($3333,a0), ($3333,a0) uses Op3168 ----------
18520Op3168:
18521;@ EaCalc : Get '($3333,a0)' into r0:
18522  ldrsh r0,[r4],#2 ;@ Fetch offset
18523  and r2,r8,#0x000f
18524  ldr r2,[r7,r2,lsl #2]
18525  add r0,r0,r2 ;@ Add on offset
18526;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
18527  mov lr,pc
18528  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18529  movs r1,r0,asl #16
18530
18531  and r10,r1,#0x80000000 ;@ r10=N_flag
18532  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18533
18534;@ EaCalc : Get '($3333,a0)' into r0:
18535  ldrsh r0,[r4],#2 ;@ Fetch offset
18536  and r2,r8,#0x1e00
18537  mov r2,r2,lsr #9
18538  ldr r2,[r7,r2,lsl #2]
18539  add r0,r0,r2 ;@ Add on offset
18540;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18541  mov r1,r1,lsr #16
18542  mov lr,pc
18543  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18544
18545  ldrh r8,[r4],#2 ;@ Fetch next opcode
18546  subs r5,r5,#20 ;@ Subtract cycles
18547  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18548  b CycloneEnd
18549
18550;@ ---------- [3170] move.w ($33,a0,d3.w*2), ($3333,a0) uses Op3170 ----------
18551Op3170:
18552;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18553;@ Get extension word into r3:
18554  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18555  mov r2,r3,lsr #10
18556  tst r3,#0x0800 ;@ Is Rn Word or Long
18557  and r2,r2,#0x3c ;@ r2=Index of Rn
18558  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18559  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18560  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18561  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18562  and r2,r8,#0x000f
18563  orr r2,r2,#0x8 ;@ A0-7
18564  ldr r2,[r7,r2,lsl #2]
18565  add r0,r2,r3 ;@ r0=Disp+An+Rn
18566;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
18567  mov lr,pc
18568  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18569  movs r1,r0,asl #16
18570
18571  and r10,r1,#0x80000000 ;@ r10=N_flag
18572  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18573
18574;@ EaCalc : Get '($3333,a0)' into r0:
18575  ldrsh r0,[r4],#2 ;@ Fetch offset
18576  and r2,r8,#0x1e00
18577  mov r2,r2,lsr #9
18578  ldr r2,[r7,r2,lsl #2]
18579  add r0,r0,r2 ;@ Add on offset
18580;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18581  mov r1,r1,lsr #16
18582  mov lr,pc
18583  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18584
18585  ldrh r8,[r4],#2 ;@ Fetch next opcode
18586  subs r5,r5,#22 ;@ Subtract cycles
18587  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18588  b CycloneEnd
18589
18590;@ ---------- [3178] move.w $3333.w, ($3333,a0) uses Op3178 ----------
18591Op3178:
18592;@ EaCalc : Get '$3333.w' into r0:
18593  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18594;@ EaRead : Read '$3333.w' (address in r0) into r1:
18595  mov lr,pc
18596  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18597  movs r1,r0,asl #16
18598
18599  and r10,r1,#0x80000000 ;@ r10=N_flag
18600  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18601
18602;@ EaCalc : Get '($3333,a0)' into r0:
18603  ldrsh r0,[r4],#2 ;@ Fetch offset
18604  and r2,r8,#0x1e00
18605  mov r2,r2,lsr #9
18606  ldr r2,[r7,r2,lsl #2]
18607  add r0,r0,r2 ;@ Add on offset
18608;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18609  mov r1,r1,lsr #16
18610  mov lr,pc
18611  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18612
18613  ldrh r8,[r4],#2 ;@ Fetch next opcode
18614  subs r5,r5,#20 ;@ Subtract cycles
18615  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18616  b CycloneEnd
18617
18618;@ ---------- [3179] move.w $33333333.l, ($3333,a0) uses Op3179 ----------
18619Op3179:
18620;@ EaCalc : Get '$33333333.l' into r0:
18621  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18622  ldrh r0,[r4],#2
18623  orr r0,r0,r2,lsl #16
18624;@ EaRead : Read '$33333333.l' (address in r0) into r1:
18625  mov lr,pc
18626  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18627  movs r1,r0,asl #16
18628
18629  and r10,r1,#0x80000000 ;@ r10=N_flag
18630  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18631
18632;@ EaCalc : Get '($3333,a0)' into r0:
18633  ldrsh r0,[r4],#2 ;@ Fetch offset
18634  and r2,r8,#0x1e00
18635  mov r2,r2,lsr #9
18636  ldr r2,[r7,r2,lsl #2]
18637  add r0,r0,r2 ;@ Add on offset
18638;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18639  mov r1,r1,lsr #16
18640  mov lr,pc
18641  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18642
18643  ldrh r8,[r4],#2 ;@ Fetch next opcode
18644  subs r5,r5,#24 ;@ Subtract cycles
18645  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18646  b CycloneEnd
18647
18648;@ ---------- [317a] move.w ($3333,pc), ($3333,a0); =3335 uses Op317a ----------
18649Op317a:
18650;@ EaCalc : Get '($3333,pc)' into r0:
18651  ldr r0,[r7,#0x60] ;@ Get Memory base
18652  sub r0,r4,r0 ;@ Real PC
18653  ldrsh r2,[r4],#2 ;@ Fetch extension
18654  add r0,r2,r0 ;@ ($nn,PC)
18655;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
18656  mov lr,pc
18657  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
18658  movs r1,r0,asl #16
18659
18660  and r10,r1,#0x80000000 ;@ r10=N_flag
18661  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18662
18663;@ EaCalc : Get '($3333,a0)' into r0:
18664  ldrsh r0,[r4],#2 ;@ Fetch offset
18665  and r2,r8,#0x1e00
18666  mov r2,r2,lsr #9
18667  ldr r2,[r7,r2,lsl #2]
18668  add r0,r0,r2 ;@ Add on offset
18669;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18670  mov r1,r1,lsr #16
18671  mov lr,pc
18672  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18673
18674  ldrh r8,[r4],#2 ;@ Fetch next opcode
18675  subs r5,r5,#20 ;@ Subtract cycles
18676  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18677  b CycloneEnd
18678
18679;@ ---------- [317b] move.w ($33,pc,d3.w*2), ($3333,a0); =35 uses Op317b ----------
18680Op317b:
18681;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
18682  ldr r0,[r7,#0x60] ;@ Get Memory base
18683  ldrh r3,[r4] ;@ Get extension word
18684  sub r0,r4,r0 ;@ r0=PC
18685  add r4,r4,#2
18686  mov r2,r3,lsr #10
18687  tst r3,#0x0800 ;@ Is Rn Word or Long
18688  and r2,r2,#0x3c ;@ r2=Index of Rn
18689  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18690  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18691  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
18692  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
18693  add r0,r2,r0 ;@ r0=Disp+PC+Rn
18694;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
18695  mov lr,pc
18696  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
18697  movs r1,r0,asl #16
18698
18699  and r10,r1,#0x80000000 ;@ r10=N_flag
18700  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18701
18702;@ EaCalc : Get '($3333,a0)' into r0:
18703  ldrsh r0,[r4],#2 ;@ Fetch offset
18704  and r2,r8,#0x1e00
18705  mov r2,r2,lsr #9
18706  ldr r2,[r7,r2,lsl #2]
18707  add r0,r0,r2 ;@ Add on offset
18708;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18709  mov r1,r1,lsr #16
18710  mov lr,pc
18711  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18712
18713  ldrh r8,[r4],#2 ;@ Fetch next opcode
18714  subs r5,r5,#22 ;@ Subtract cycles
18715  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18716  b CycloneEnd
18717
18718;@ ---------- [317c] move.w #$3333, ($3333,a0) uses Op317c ----------
18719Op317c:
18720;@ EaCalc : Get '#$3333' into r1:
18721  ldrsh r1,[r4],#2 ;@ Fetch immediate value
18722;@ EaRead : Read '#$3333' (address in r1) into r1:
18723  movs r1,r1,asl #16
18724
18725  and r10,r1,#0x80000000 ;@ r10=N_flag
18726  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18727
18728;@ EaCalc : Get '($3333,a0)' into r0:
18729  ldrsh r0,[r4],#2 ;@ Fetch offset
18730  and r2,r8,#0x1e00
18731  mov r2,r2,lsr #9
18732  ldr r2,[r7,r2,lsl #2]
18733  add r0,r0,r2 ;@ Add on offset
18734;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
18735  mov r1,r1,lsr #16
18736  mov lr,pc
18737  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18738
18739  ldrh r8,[r4],#2 ;@ Fetch next opcode
18740  subs r5,r5,#16 ;@ Subtract cycles
18741  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18742  b CycloneEnd
18743
18744;@ ---------- [3190] move.w (a0), ($33,a0,d3.w*2) uses Op3190 ----------
18745Op3190:
18746;@ EaCalc : Get '(a0)' into r0:
18747  and r2,r8,#0x000f
18748  orr r2,r2,#0x8 ;@ A0-7
18749  ldr r0,[r7,r2,lsl #2]
18750;@ EaRead : Read '(a0)' (address in r0) into r1:
18751  mov lr,pc
18752  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18753  movs r1,r0,asl #16
18754
18755  and r10,r1,#0x80000000 ;@ r10=N_flag
18756  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18757
18758;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18759;@ Get extension word into r3:
18760  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18761  mov r2,r3,lsr #10
18762  tst r3,#0x0800 ;@ Is Rn Word or Long
18763  and r2,r2,#0x3c ;@ r2=Index of Rn
18764  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18765  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18766  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18767  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18768  and r2,r8,#0x1e00
18769  orr r2,r2,#0x1000 ;@ A0-7
18770  mov r2,r2,lsr #9
18771  ldr r2,[r7,r2,lsl #2]
18772  add r0,r2,r3 ;@ r0=Disp+An+Rn
18773;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
18774  mov r1,r1,lsr #16
18775  mov lr,pc
18776  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18777
18778  ldrh r8,[r4],#2 ;@ Fetch next opcode
18779  subs r5,r5,#18 ;@ Subtract cycles
18780  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18781  b CycloneEnd
18782
18783;@ ---------- [3198] move.w (a0)+, ($33,a0,d3.w*2) uses Op3198 ----------
18784Op3198:
18785;@ EaCalc : Get '(a0)+' into r0:
18786  and r2,r8,#0x000f
18787  ldr r0,[r7,r2,lsl #2]
18788  add r3,r0,#2 ;@ Post-increment An
18789  str r3,[r7,r2,lsl #2]
18790;@ EaRead : Read '(a0)+' (address in r0) into r1:
18791  mov lr,pc
18792  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18793  movs r1,r0,asl #16
18794
18795  and r10,r1,#0x80000000 ;@ r10=N_flag
18796  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18797
18798;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18799;@ Get extension word into r3:
18800  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18801  mov r2,r3,lsr #10
18802  tst r3,#0x0800 ;@ Is Rn Word or Long
18803  and r2,r2,#0x3c ;@ r2=Index of Rn
18804  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18805  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18806  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18807  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18808  and r2,r8,#0x1e00
18809  orr r2,r2,#0x1000 ;@ A0-7
18810  mov r2,r2,lsr #9
18811  ldr r2,[r7,r2,lsl #2]
18812  add r0,r2,r3 ;@ r0=Disp+An+Rn
18813;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
18814  mov r1,r1,lsr #16
18815  mov lr,pc
18816  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18817
18818  ldrh r8,[r4],#2 ;@ Fetch next opcode
18819  subs r5,r5,#18 ;@ Subtract cycles
18820  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18821  b CycloneEnd
18822
18823;@ ---------- [31a0] move.w -(a0), ($33,a0,d3.w*2) uses Op31a0 ----------
18824Op31a0:
18825;@ EaCalc : Get '-(a0)' into r0:
18826  and r2,r8,#0x000f
18827  orr r2,r2,#0x8 ;@ A0-7
18828  ldr r0,[r7,r2,lsl #2]
18829  sub r0,r0,#2 ;@ Pre-decrement An
18830  str r0,[r7,r2,lsl #2]
18831;@ EaRead : Read '-(a0)' (address in r0) into r1:
18832  mov lr,pc
18833  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18834  movs r1,r0,asl #16
18835
18836  and r10,r1,#0x80000000 ;@ r10=N_flag
18837  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18838
18839;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18840;@ Get extension word into r3:
18841  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18842  mov r2,r3,lsr #10
18843  tst r3,#0x0800 ;@ Is Rn Word or Long
18844  and r2,r2,#0x3c ;@ r2=Index of Rn
18845  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18846  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18847  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18848  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18849  and r2,r8,#0x1e00
18850  orr r2,r2,#0x1000 ;@ A0-7
18851  mov r2,r2,lsr #9
18852  ldr r2,[r7,r2,lsl #2]
18853  add r0,r2,r3 ;@ r0=Disp+An+Rn
18854;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
18855  mov r1,r1,lsr #16
18856  mov lr,pc
18857  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18858
18859  ldrh r8,[r4],#2 ;@ Fetch next opcode
18860  subs r5,r5,#20 ;@ Subtract cycles
18861  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18862  b CycloneEnd
18863
18864;@ ---------- [31a8] move.w ($3333,a0), ($33,a0,d3.w*2) uses Op31a8 ----------
18865Op31a8:
18866;@ EaCalc : Get '($3333,a0)' into r0:
18867  ldrsh r0,[r4],#2 ;@ Fetch offset
18868  and r2,r8,#0x000f
18869  ldr r2,[r7,r2,lsl #2]
18870  add r0,r0,r2 ;@ Add on offset
18871;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
18872  mov lr,pc
18873  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18874  movs r1,r0,asl #16
18875
18876  and r10,r1,#0x80000000 ;@ r10=N_flag
18877  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18878
18879;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18880;@ Get extension word into r3:
18881  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18882  mov r2,r3,lsr #10
18883  tst r3,#0x0800 ;@ Is Rn Word or Long
18884  and r2,r2,#0x3c ;@ r2=Index of Rn
18885  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18886  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18887  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18888  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18889  and r2,r8,#0x1e00
18890  orr r2,r2,#0x1000 ;@ A0-7
18891  mov r2,r2,lsr #9
18892  ldr r2,[r7,r2,lsl #2]
18893  add r0,r2,r3 ;@ r0=Disp+An+Rn
18894;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
18895  mov r1,r1,lsr #16
18896  mov lr,pc
18897  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18898
18899  ldrh r8,[r4],#2 ;@ Fetch next opcode
18900  subs r5,r5,#22 ;@ Subtract cycles
18901  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18902  b CycloneEnd
18903
18904;@ ---------- [31b0] move.w ($33,a0,d3.w*2), ($33,a0,d3.w*2) uses Op31b0 ----------
18905Op31b0:
18906;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18907;@ Get extension word into r3:
18908  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18909  mov r2,r3,lsr #10
18910  tst r3,#0x0800 ;@ Is Rn Word or Long
18911  and r2,r2,#0x3c ;@ r2=Index of Rn
18912  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18913  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18914  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18915  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18916  and r2,r8,#0x000f
18917  orr r2,r2,#0x8 ;@ A0-7
18918  ldr r2,[r7,r2,lsl #2]
18919  add r0,r2,r3 ;@ r0=Disp+An+Rn
18920;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
18921  mov lr,pc
18922  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18923  movs r1,r0,asl #16
18924
18925  and r10,r1,#0x80000000 ;@ r10=N_flag
18926  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18927
18928;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18929;@ Get extension word into r3:
18930  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18931  mov r2,r3,lsr #10
18932  tst r3,#0x0800 ;@ Is Rn Word or Long
18933  and r2,r2,#0x3c ;@ r2=Index of Rn
18934  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18935  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18936  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18937  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18938  and r2,r8,#0x1e00
18939  orr r2,r2,#0x1000 ;@ A0-7
18940  mov r2,r2,lsr #9
18941  ldr r2,[r7,r2,lsl #2]
18942  add r0,r2,r3 ;@ r0=Disp+An+Rn
18943;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
18944  mov r1,r1,lsr #16
18945  mov lr,pc
18946  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18947
18948  ldrh r8,[r4],#2 ;@ Fetch next opcode
18949  subs r5,r5,#24 ;@ Subtract cycles
18950  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18951  b CycloneEnd
18952
18953;@ ---------- [31b8] move.w $3333.w, ($33,a0,d3.w*2) uses Op31b8 ----------
18954Op31b8:
18955;@ EaCalc : Get '$3333.w' into r0:
18956  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
18957;@ EaRead : Read '$3333.w' (address in r0) into r1:
18958  mov lr,pc
18959  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18960  movs r1,r0,asl #16
18961
18962  and r10,r1,#0x80000000 ;@ r10=N_flag
18963  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
18964
18965;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
18966;@ Get extension word into r3:
18967  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
18968  mov r2,r3,lsr #10
18969  tst r3,#0x0800 ;@ Is Rn Word or Long
18970  and r2,r2,#0x3c ;@ r2=Index of Rn
18971  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
18972  ldrne   r2,[r7,r2] ;@ r2=Rn.l
18973  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
18974  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
18975  and r2,r8,#0x1e00
18976  orr r2,r2,#0x1000 ;@ A0-7
18977  mov r2,r2,lsr #9
18978  ldr r2,[r7,r2,lsl #2]
18979  add r0,r2,r3 ;@ r0=Disp+An+Rn
18980;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
18981  mov r1,r1,lsr #16
18982  mov lr,pc
18983  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
18984
18985  ldrh r8,[r4],#2 ;@ Fetch next opcode
18986  subs r5,r5,#22 ;@ Subtract cycles
18987  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
18988  b CycloneEnd
18989
18990;@ ---------- [31b9] move.w $33333333.l, ($33,a0,d3.w*2) uses Op31b9 ----------
18991Op31b9:
18992;@ EaCalc : Get '$33333333.l' into r0:
18993  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
18994  ldrh r0,[r4],#2
18995  orr r0,r0,r2,lsl #16
18996;@ EaRead : Read '$33333333.l' (address in r0) into r1:
18997  mov lr,pc
18998  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
18999  movs r1,r0,asl #16
19000
19001  and r10,r1,#0x80000000 ;@ r10=N_flag
19002  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19003
19004;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
19005;@ Get extension word into r3:
19006  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
19007  mov r2,r3,lsr #10
19008  tst r3,#0x0800 ;@ Is Rn Word or Long
19009  and r2,r2,#0x3c ;@ r2=Index of Rn
19010  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19011  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19012  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
19013  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
19014  and r2,r8,#0x1e00
19015  orr r2,r2,#0x1000 ;@ A0-7
19016  mov r2,r2,lsr #9
19017  ldr r2,[r7,r2,lsl #2]
19018  add r0,r2,r3 ;@ r0=Disp+An+Rn
19019;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
19020  mov r1,r1,lsr #16
19021  mov lr,pc
19022  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19023
19024  ldrh r8,[r4],#2 ;@ Fetch next opcode
19025  subs r5,r5,#26 ;@ Subtract cycles
19026  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19027  b CycloneEnd
19028
19029;@ ---------- [31ba] move.w ($3333,pc), ($33,a0,d3.w*2); =3335 uses Op31ba ----------
19030Op31ba:
19031;@ EaCalc : Get '($3333,pc)' into r0:
19032  ldr r0,[r7,#0x60] ;@ Get Memory base
19033  sub r0,r4,r0 ;@ Real PC
19034  ldrsh r2,[r4],#2 ;@ Fetch extension
19035  add r0,r2,r0 ;@ ($nn,PC)
19036;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
19037  mov lr,pc
19038  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
19039  movs r1,r0,asl #16
19040
19041  and r10,r1,#0x80000000 ;@ r10=N_flag
19042  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19043
19044;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
19045;@ Get extension word into r3:
19046  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
19047  mov r2,r3,lsr #10
19048  tst r3,#0x0800 ;@ Is Rn Word or Long
19049  and r2,r2,#0x3c ;@ r2=Index of Rn
19050  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19051  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19052  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
19053  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
19054  and r2,r8,#0x1e00
19055  orr r2,r2,#0x1000 ;@ A0-7
19056  mov r2,r2,lsr #9
19057  ldr r2,[r7,r2,lsl #2]
19058  add r0,r2,r3 ;@ r0=Disp+An+Rn
19059;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
19060  mov r1,r1,lsr #16
19061  mov lr,pc
19062  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19063
19064  ldrh r8,[r4],#2 ;@ Fetch next opcode
19065  subs r5,r5,#22 ;@ Subtract cycles
19066  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19067  b CycloneEnd
19068
19069;@ ---------- [31bb] move.w ($33,pc,d3.w*2), ($33,a0,d3.w*2); =35 uses Op31bb ----------
19070Op31bb:
19071;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
19072  ldr r0,[r7,#0x60] ;@ Get Memory base
19073  ldrh r3,[r4] ;@ Get extension word
19074  sub r0,r4,r0 ;@ r0=PC
19075  add r4,r4,#2
19076  mov r2,r3,lsr #10
19077  tst r3,#0x0800 ;@ Is Rn Word or Long
19078  and r2,r2,#0x3c ;@ r2=Index of Rn
19079  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19080  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19081  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
19082  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
19083  add r0,r2,r0 ;@ r0=Disp+PC+Rn
19084;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
19085  mov lr,pc
19086  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
19087  movs r1,r0,asl #16
19088
19089  and r10,r1,#0x80000000 ;@ r10=N_flag
19090  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19091
19092;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
19093;@ Get extension word into r3:
19094  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
19095  mov r2,r3,lsr #10
19096  tst r3,#0x0800 ;@ Is Rn Word or Long
19097  and r2,r2,#0x3c ;@ r2=Index of Rn
19098  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19099  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19100  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
19101  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
19102  and r2,r8,#0x1e00
19103  orr r2,r2,#0x1000 ;@ A0-7
19104  mov r2,r2,lsr #9
19105  ldr r2,[r7,r2,lsl #2]
19106  add r0,r2,r3 ;@ r0=Disp+An+Rn
19107;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
19108  mov r1,r1,lsr #16
19109  mov lr,pc
19110  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19111
19112  ldrh r8,[r4],#2 ;@ Fetch next opcode
19113  subs r5,r5,#24 ;@ Subtract cycles
19114  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19115  b CycloneEnd
19116
19117;@ ---------- [31bc] move.w #$3333, ($33,a0,d3.w*2) uses Op31bc ----------
19118Op31bc:
19119;@ EaCalc : Get '#$3333' into r1:
19120  ldrsh r1,[r4],#2 ;@ Fetch immediate value
19121;@ EaRead : Read '#$3333' (address in r1) into r1:
19122  movs r1,r1,asl #16
19123
19124  and r10,r1,#0x80000000 ;@ r10=N_flag
19125  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19126
19127;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
19128;@ Get extension word into r3:
19129  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
19130  mov r2,r3,lsr #10
19131  tst r3,#0x0800 ;@ Is Rn Word or Long
19132  and r2,r2,#0x3c ;@ r2=Index of Rn
19133  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19134  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19135  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
19136  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
19137  and r2,r8,#0x1e00
19138  orr r2,r2,#0x1000 ;@ A0-7
19139  mov r2,r2,lsr #9
19140  ldr r2,[r7,r2,lsl #2]
19141  add r0,r2,r3 ;@ r0=Disp+An+Rn
19142;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
19143  mov r1,r1,lsr #16
19144  mov lr,pc
19145  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19146
19147  ldrh r8,[r4],#2 ;@ Fetch next opcode
19148  subs r5,r5,#18 ;@ Subtract cycles
19149  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19150  b CycloneEnd
19151
19152;@ ---------- [31c0] move.w d0, $3333.w uses Op31c0 ----------
19153Op31c0:
19154;@ EaCalc : Get register index into r1:
19155  and r1,r8,#0x000f
19156  mov r1,r1,lsl #2
19157;@ EaRead : Read register[r1] into r1:
19158  ldrh r1,[r7,r1]
19159
19160  movs r2,r1,lsl #16
19161  and r10,r2,#0x80000000 ;@ r10=N_flag
19162  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19163
19164;@ EaCalc : Get '$3333.w' into r0:
19165  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19166;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19167  mov lr,pc
19168  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19169
19170  ldrh r8,[r4],#2 ;@ Fetch next opcode
19171  subs r5,r5,#12 ;@ Subtract cycles
19172  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19173  b CycloneEnd
19174
19175;@ ---------- [31d0] move.w (a0), $3333.w uses Op31d0 ----------
19176Op31d0:
19177;@ EaCalc : Get '(a0)' into r0:
19178  and r2,r8,#0x000f
19179  orr r2,r2,#0x8 ;@ A0-7
19180  ldr r0,[r7,r2,lsl #2]
19181;@ EaRead : Read '(a0)' (address in r0) into r1:
19182  mov lr,pc
19183  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19184  movs r1,r0,asl #16
19185
19186  and r10,r1,#0x80000000 ;@ r10=N_flag
19187  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19188
19189;@ EaCalc : Get '$3333.w' into r0:
19190  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19191;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19192  mov r1,r1,lsr #16
19193  mov lr,pc
19194  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19195
19196  ldrh r8,[r4],#2 ;@ Fetch next opcode
19197  subs r5,r5,#16 ;@ Subtract cycles
19198  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19199  b CycloneEnd
19200
19201;@ ---------- [31d8] move.w (a0)+, $3333.w uses Op31d8 ----------
19202Op31d8:
19203;@ EaCalc : Get '(a0)+' into r0:
19204  and r2,r8,#0x000f
19205  ldr r0,[r7,r2,lsl #2]
19206  add r3,r0,#2 ;@ Post-increment An
19207  str r3,[r7,r2,lsl #2]
19208;@ EaRead : Read '(a0)+' (address in r0) into r1:
19209  mov lr,pc
19210  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19211  movs r1,r0,asl #16
19212
19213  and r10,r1,#0x80000000 ;@ r10=N_flag
19214  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19215
19216;@ EaCalc : Get '$3333.w' into r0:
19217  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19218;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19219  mov r1,r1,lsr #16
19220  mov lr,pc
19221  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19222
19223  ldrh r8,[r4],#2 ;@ Fetch next opcode
19224  subs r5,r5,#16 ;@ Subtract cycles
19225  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19226  b CycloneEnd
19227
19228;@ ---------- [31e0] move.w -(a0), $3333.w uses Op31e0 ----------
19229Op31e0:
19230;@ EaCalc : Get '-(a0)' into r0:
19231  and r2,r8,#0x000f
19232  orr r2,r2,#0x8 ;@ A0-7
19233  ldr r0,[r7,r2,lsl #2]
19234  sub r0,r0,#2 ;@ Pre-decrement An
19235  str r0,[r7,r2,lsl #2]
19236;@ EaRead : Read '-(a0)' (address in r0) into r1:
19237  mov lr,pc
19238  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19239  movs r1,r0,asl #16
19240
19241  and r10,r1,#0x80000000 ;@ r10=N_flag
19242  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19243
19244;@ EaCalc : Get '$3333.w' into r0:
19245  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19246;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19247  mov r1,r1,lsr #16
19248  mov lr,pc
19249  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19250
19251  ldrh r8,[r4],#2 ;@ Fetch next opcode
19252  subs r5,r5,#18 ;@ Subtract cycles
19253  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19254  b CycloneEnd
19255
19256;@ ---------- [31e8] move.w ($3333,a0), $3333.w uses Op31e8 ----------
19257Op31e8:
19258;@ EaCalc : Get '($3333,a0)' into r0:
19259  ldrsh r0,[r4],#2 ;@ Fetch offset
19260  and r2,r8,#0x000f
19261  ldr r2,[r7,r2,lsl #2]
19262  add r0,r0,r2 ;@ Add on offset
19263;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
19264  mov lr,pc
19265  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19266  movs r1,r0,asl #16
19267
19268  and r10,r1,#0x80000000 ;@ r10=N_flag
19269  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19270
19271;@ EaCalc : Get '$3333.w' into r0:
19272  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19273;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19274  mov r1,r1,lsr #16
19275  mov lr,pc
19276  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19277
19278  ldrh r8,[r4],#2 ;@ Fetch next opcode
19279  subs r5,r5,#20 ;@ Subtract cycles
19280  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19281  b CycloneEnd
19282
19283;@ ---------- [31f0] move.w ($33,a0,d3.w*2), $3333.w uses Op31f0 ----------
19284Op31f0:
19285;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
19286;@ Get extension word into r3:
19287  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
19288  mov r2,r3,lsr #10
19289  tst r3,#0x0800 ;@ Is Rn Word or Long
19290  and r2,r2,#0x3c ;@ r2=Index of Rn
19291  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19292  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19293  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
19294  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
19295  and r2,r8,#0x000f
19296  orr r2,r2,#0x8 ;@ A0-7
19297  ldr r2,[r7,r2,lsl #2]
19298  add r0,r2,r3 ;@ r0=Disp+An+Rn
19299;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
19300  mov lr,pc
19301  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19302  movs r1,r0,asl #16
19303
19304  and r10,r1,#0x80000000 ;@ r10=N_flag
19305  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19306
19307;@ EaCalc : Get '$3333.w' into r0:
19308  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19309;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19310  mov r1,r1,lsr #16
19311  mov lr,pc
19312  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19313
19314  ldrh r8,[r4],#2 ;@ Fetch next opcode
19315  subs r5,r5,#22 ;@ Subtract cycles
19316  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19317  b CycloneEnd
19318
19319;@ ---------- [31f8] move.w $3333.w, $3333.w uses Op31f8 ----------
19320Op31f8:
19321;@ EaCalc : Get '$3333.w' into r0:
19322  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19323;@ EaRead : Read '$3333.w' (address in r0) into r1:
19324  mov lr,pc
19325  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19326  movs r1,r0,asl #16
19327
19328  and r10,r1,#0x80000000 ;@ r10=N_flag
19329  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19330
19331;@ EaCalc : Get '$3333.w' into r0:
19332  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19333;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19334  mov r1,r1,lsr #16
19335  mov lr,pc
19336  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19337
19338  ldrh r8,[r4],#2 ;@ Fetch next opcode
19339  subs r5,r5,#20 ;@ Subtract cycles
19340  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19341  b CycloneEnd
19342
19343;@ ---------- [31f9] move.w $33333333.l, $3333.w uses Op31f9 ----------
19344Op31f9:
19345;@ EaCalc : Get '$33333333.l' into r0:
19346  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19347  ldrh r0,[r4],#2
19348  orr r0,r0,r2,lsl #16
19349;@ EaRead : Read '$33333333.l' (address in r0) into r1:
19350  mov lr,pc
19351  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19352  movs r1,r0,asl #16
19353
19354  and r10,r1,#0x80000000 ;@ r10=N_flag
19355  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19356
19357;@ EaCalc : Get '$3333.w' into r0:
19358  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19359;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19360  mov r1,r1,lsr #16
19361  mov lr,pc
19362  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19363
19364  ldrh r8,[r4],#2 ;@ Fetch next opcode
19365  subs r5,r5,#24 ;@ Subtract cycles
19366  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19367  b CycloneEnd
19368
19369;@ ---------- [31fa] move.w ($3333,pc), $3333.w; =3335 uses Op31fa ----------
19370Op31fa:
19371;@ EaCalc : Get '($3333,pc)' into r0:
19372  ldr r0,[r7,#0x60] ;@ Get Memory base
19373  sub r0,r4,r0 ;@ Real PC
19374  ldrsh r2,[r4],#2 ;@ Fetch extension
19375  add r0,r2,r0 ;@ ($nn,PC)
19376;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
19377  mov lr,pc
19378  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
19379  movs r1,r0,asl #16
19380
19381  and r10,r1,#0x80000000 ;@ r10=N_flag
19382  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19383
19384;@ EaCalc : Get '$3333.w' into r0:
19385  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19386;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19387  mov r1,r1,lsr #16
19388  mov lr,pc
19389  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19390
19391  ldrh r8,[r4],#2 ;@ Fetch next opcode
19392  subs r5,r5,#20 ;@ Subtract cycles
19393  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19394  b CycloneEnd
19395
19396;@ ---------- [31fb] move.w ($33,pc,d3.w*2), $3333.w; =35 uses Op31fb ----------
19397Op31fb:
19398;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
19399  ldr r0,[r7,#0x60] ;@ Get Memory base
19400  ldrh r3,[r4] ;@ Get extension word
19401  sub r0,r4,r0 ;@ r0=PC
19402  add r4,r4,#2
19403  mov r2,r3,lsr #10
19404  tst r3,#0x0800 ;@ Is Rn Word or Long
19405  and r2,r2,#0x3c ;@ r2=Index of Rn
19406  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19407  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19408  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
19409  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
19410  add r0,r2,r0 ;@ r0=Disp+PC+Rn
19411;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
19412  mov lr,pc
19413  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
19414  movs r1,r0,asl #16
19415
19416  and r10,r1,#0x80000000 ;@ r10=N_flag
19417  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19418
19419;@ EaCalc : Get '$3333.w' into r0:
19420  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19421;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19422  mov r1,r1,lsr #16
19423  mov lr,pc
19424  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19425
19426  ldrh r8,[r4],#2 ;@ Fetch next opcode
19427  subs r5,r5,#22 ;@ Subtract cycles
19428  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19429  b CycloneEnd
19430
19431;@ ---------- [31fc] move.w #$3333, $3333.w uses Op31fc ----------
19432Op31fc:
19433;@ EaCalc : Get '#$3333' into r1:
19434  ldrsh r1,[r4],#2 ;@ Fetch immediate value
19435;@ EaRead : Read '#$3333' (address in r1) into r1:
19436  movs r1,r1,asl #16
19437
19438  and r10,r1,#0x80000000 ;@ r10=N_flag
19439  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19440
19441;@ EaCalc : Get '$3333.w' into r0:
19442  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19443;@ EaWrite: Write r1 into '$3333.w' (address in r0):
19444  mov r1,r1,lsr #16
19445  mov lr,pc
19446  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19447
19448  ldrh r8,[r4],#2 ;@ Fetch next opcode
19449  subs r5,r5,#16 ;@ Subtract cycles
19450  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19451  b CycloneEnd
19452
19453;@ ---------- [33c0] move.w d0, $33333333.l uses Op33c0 ----------
19454Op33c0:
19455;@ EaCalc : Get register index into r1:
19456  and r1,r8,#0x000f
19457  mov r1,r1,lsl #2
19458;@ EaRead : Read register[r1] into r1:
19459  ldrh r1,[r7,r1]
19460
19461  movs r2,r1,lsl #16
19462  and r10,r2,#0x80000000 ;@ r10=N_flag
19463  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19464
19465;@ EaCalc : Get '$33333333.l' into r0:
19466  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19467  ldrh r0,[r4],#2
19468  orr r0,r0,r2,lsl #16
19469;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
19470  mov lr,pc
19471  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19472
19473  ldrh r8,[r4],#2 ;@ Fetch next opcode
19474  subs r5,r5,#16 ;@ Subtract cycles
19475  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19476  b CycloneEnd
19477
19478;@ ---------- [33d0] move.w (a0), $33333333.l uses Op33d0 ----------
19479Op33d0:
19480;@ EaCalc : Get '(a0)' into r0:
19481  and r2,r8,#0x000f
19482  orr r2,r2,#0x8 ;@ A0-7
19483  ldr r0,[r7,r2,lsl #2]
19484;@ EaRead : Read '(a0)' (address in r0) into r1:
19485  mov lr,pc
19486  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19487  movs r1,r0,asl #16
19488
19489  and r10,r1,#0x80000000 ;@ r10=N_flag
19490  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19491
19492;@ EaCalc : Get '$33333333.l' into r0:
19493  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19494  ldrh r0,[r4],#2
19495  orr r0,r0,r2,lsl #16
19496;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
19497  mov r1,r1,lsr #16
19498  mov lr,pc
19499  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19500
19501  ldrh r8,[r4],#2 ;@ Fetch next opcode
19502  subs r5,r5,#20 ;@ Subtract cycles
19503  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19504  b CycloneEnd
19505
19506;@ ---------- [33e0] move.w -(a0), $33333333.l uses Op33e0 ----------
19507Op33e0:
19508;@ EaCalc : Get '-(a0)' into r0:
19509  and r2,r8,#0x000f
19510  orr r2,r2,#0x8 ;@ A0-7
19511  ldr r0,[r7,r2,lsl #2]
19512  sub r0,r0,#2 ;@ Pre-decrement An
19513  str r0,[r7,r2,lsl #2]
19514;@ EaRead : Read '-(a0)' (address in r0) into r1:
19515  mov lr,pc
19516  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19517  movs r1,r0,asl #16
19518
19519  and r10,r1,#0x80000000 ;@ r10=N_flag
19520  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19521
19522;@ EaCalc : Get '$33333333.l' into r0:
19523  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19524  ldrh r0,[r4],#2
19525  orr r0,r0,r2,lsl #16
19526;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
19527  mov r1,r1,lsr #16
19528  mov lr,pc
19529  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19530
19531  ldrh r8,[r4],#2 ;@ Fetch next opcode
19532  subs r5,r5,#22 ;@ Subtract cycles
19533  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19534  b CycloneEnd
19535
19536;@ ---------- [33e8] move.w ($3333,a0), $33333333.l uses Op33e8 ----------
19537Op33e8:
19538;@ EaCalc : Get '($3333,a0)' into r0:
19539  ldrsh r0,[r4],#2 ;@ Fetch offset
19540  and r2,r8,#0x000f
19541  ldr r2,[r7,r2,lsl #2]
19542  add r0,r0,r2 ;@ Add on offset
19543;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
19544  mov lr,pc
19545  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19546  movs r1,r0,asl #16
19547
19548  and r10,r1,#0x80000000 ;@ r10=N_flag
19549  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19550
19551;@ EaCalc : Get '$33333333.l' into r0:
19552  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19553  ldrh r0,[r4],#2
19554  orr r0,r0,r2,lsl #16
19555;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
19556  mov r1,r1,lsr #16
19557  mov lr,pc
19558  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19559
19560  ldrh r8,[r4],#2 ;@ Fetch next opcode
19561  subs r5,r5,#24 ;@ Subtract cycles
19562  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19563  b CycloneEnd
19564
19565;@ ---------- [33f0] move.w ($33,a0,d3.w*2), $33333333.l uses Op33f0 ----------
19566Op33f0:
19567;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
19568;@ Get extension word into r3:
19569  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
19570  mov r2,r3,lsr #10
19571  tst r3,#0x0800 ;@ Is Rn Word or Long
19572  and r2,r2,#0x3c ;@ r2=Index of Rn
19573  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19574  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19575  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
19576  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
19577  and r2,r8,#0x000f
19578  orr r2,r2,#0x8 ;@ A0-7
19579  ldr r2,[r7,r2,lsl #2]
19580  add r0,r2,r3 ;@ r0=Disp+An+Rn
19581;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
19582  mov lr,pc
19583  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19584  movs r1,r0,asl #16
19585
19586  and r10,r1,#0x80000000 ;@ r10=N_flag
19587  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19588
19589;@ EaCalc : Get '$33333333.l' into r0:
19590  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19591  ldrh r0,[r4],#2
19592  orr r0,r0,r2,lsl #16
19593;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
19594  mov r1,r1,lsr #16
19595  mov lr,pc
19596  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19597
19598  ldrh r8,[r4],#2 ;@ Fetch next opcode
19599  subs r5,r5,#26 ;@ Subtract cycles
19600  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19601  b CycloneEnd
19602
19603;@ ---------- [33f8] move.w $3333.w, $33333333.l uses Op33f8 ----------
19604Op33f8:
19605;@ EaCalc : Get '$3333.w' into r0:
19606  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19607;@ EaRead : Read '$3333.w' (address in r0) into r1:
19608  mov lr,pc
19609  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19610  movs r1,r0,asl #16
19611
19612  and r10,r1,#0x80000000 ;@ r10=N_flag
19613  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19614
19615;@ EaCalc : Get '$33333333.l' into r0:
19616  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19617  ldrh r0,[r4],#2
19618  orr r0,r0,r2,lsl #16
19619;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
19620  mov r1,r1,lsr #16
19621  mov lr,pc
19622  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19623
19624  ldrh r8,[r4],#2 ;@ Fetch next opcode
19625  subs r5,r5,#24 ;@ Subtract cycles
19626  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19627  b CycloneEnd
19628
19629;@ ---------- [33f9] move.w $33333333.l, $33333333.l uses Op33f9 ----------
19630Op33f9:
19631;@ EaCalc : Get '$33333333.l' into r0:
19632  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19633  ldrh r0,[r4],#2
19634  orr r0,r0,r2,lsl #16
19635;@ EaRead : Read '$33333333.l' (address in r0) into r1:
19636  mov lr,pc
19637  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19638  movs r1,r0,asl #16
19639
19640  and r10,r1,#0x80000000 ;@ r10=N_flag
19641  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19642
19643;@ EaCalc : Get '$33333333.l' into r0:
19644  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19645  ldrh r0,[r4],#2
19646  orr r0,r0,r2,lsl #16
19647;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
19648  mov r1,r1,lsr #16
19649  mov lr,pc
19650  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19651
19652  ldrh r8,[r4],#2 ;@ Fetch next opcode
19653  subs r5,r5,#28 ;@ Subtract cycles
19654  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19655  b CycloneEnd
19656
19657;@ ---------- [33fa] move.w ($3333,pc), $33333333.l; =3335 uses Op33fa ----------
19658Op33fa:
19659;@ EaCalc : Get '($3333,pc)' into r0:
19660  ldr r0,[r7,#0x60] ;@ Get Memory base
19661  sub r0,r4,r0 ;@ Real PC
19662  ldrsh r2,[r4],#2 ;@ Fetch extension
19663  add r0,r2,r0 ;@ ($nn,PC)
19664;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
19665  mov lr,pc
19666  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
19667  movs r1,r0,asl #16
19668
19669  and r10,r1,#0x80000000 ;@ r10=N_flag
19670  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19671
19672;@ EaCalc : Get '$33333333.l' into r0:
19673  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19674  ldrh r0,[r4],#2
19675  orr r0,r0,r2,lsl #16
19676;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
19677  mov r1,r1,lsr #16
19678  mov lr,pc
19679  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19680
19681  ldrh r8,[r4],#2 ;@ Fetch next opcode
19682  subs r5,r5,#24 ;@ Subtract cycles
19683  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19684  b CycloneEnd
19685
19686;@ ---------- [33fb] move.w ($33,pc,d3.w*2), $33333333.l; =35 uses Op33fb ----------
19687Op33fb:
19688;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
19689  ldr r0,[r7,#0x60] ;@ Get Memory base
19690  ldrh r3,[r4] ;@ Get extension word
19691  sub r0,r4,r0 ;@ r0=PC
19692  add r4,r4,#2
19693  mov r2,r3,lsr #10
19694  tst r3,#0x0800 ;@ Is Rn Word or Long
19695  and r2,r2,#0x3c ;@ r2=Index of Rn
19696  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19697  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19698  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
19699  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
19700  add r0,r2,r0 ;@ r0=Disp+PC+Rn
19701;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
19702  mov lr,pc
19703  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
19704  movs r1,r0,asl #16
19705
19706  and r10,r1,#0x80000000 ;@ r10=N_flag
19707  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19708
19709;@ EaCalc : Get '$33333333.l' into r0:
19710  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19711  ldrh r0,[r4],#2
19712  orr r0,r0,r2,lsl #16
19713;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
19714  mov r1,r1,lsr #16
19715  mov lr,pc
19716  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19717
19718  ldrh r8,[r4],#2 ;@ Fetch next opcode
19719  subs r5,r5,#26 ;@ Subtract cycles
19720  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19721  b CycloneEnd
19722
19723;@ ---------- [33fc] move.w #$3333, $33333333.l uses Op33fc ----------
19724Op33fc:
19725;@ EaCalc : Get '#$3333' into r1:
19726  ldrsh r1,[r4],#2 ;@ Fetch immediate value
19727;@ EaRead : Read '#$3333' (address in r1) into r1:
19728  movs r1,r1,asl #16
19729
19730  and r10,r1,#0x80000000 ;@ r10=N_flag
19731  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19732
19733;@ EaCalc : Get '$33333333.l' into r0:
19734  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19735  ldrh r0,[r4],#2
19736  orr r0,r0,r2,lsl #16
19737;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
19738  mov r1,r1,lsr #16
19739  mov lr,pc
19740  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19741
19742  ldrh r8,[r4],#2 ;@ Fetch next opcode
19743  subs r5,r5,#20 ;@ Subtract cycles
19744  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19745  b CycloneEnd
19746
19747;@ ---------- [3ec0] move.w d0, (a7)+ uses Op3ec0 ----------
19748Op3ec0:
19749;@ EaCalc : Get register index into r1:
19750  and r1,r8,#0x000f
19751  mov r1,r1,lsl #2
19752;@ EaRead : Read register[r1] into r1:
19753  ldrh r1,[r7,r1]
19754
19755  movs r2,r1,lsl #16
19756  and r10,r2,#0x80000000 ;@ r10=N_flag
19757  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19758
19759;@ EaCalc : Get '(a7)+' into r0:
19760  ldr r0,[r7,#0x3c] ;@ A7
19761  add r3,r0,#2 ;@ Post-increment An
19762  str r3,[r7,#0x3c] ;@ A7
19763;@ EaWrite: Write r1 into '(a7)+' (address in r0):
19764  mov lr,pc
19765  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19766
19767  ldrh r8,[r4],#2 ;@ Fetch next opcode
19768  subs r5,r5,#8 ;@ Subtract cycles
19769  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19770  b CycloneEnd
19771
19772;@ ---------- [3ed0] move.w (a0), (a7)+ uses Op3ed0 ----------
19773Op3ed0:
19774;@ EaCalc : Get '(a0)' into r0:
19775  and r2,r8,#0x000f
19776  orr r2,r2,#0x8 ;@ A0-7
19777  ldr r0,[r7,r2,lsl #2]
19778;@ EaRead : Read '(a0)' (address in r0) into r1:
19779  mov lr,pc
19780  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19781  movs r1,r0,asl #16
19782
19783  and r10,r1,#0x80000000 ;@ r10=N_flag
19784  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19785
19786;@ EaCalc : Get '(a7)+' into r0:
19787  ldr r0,[r7,#0x3c] ;@ A7
19788  add r3,r0,#2 ;@ Post-increment An
19789  str r3,[r7,#0x3c] ;@ A7
19790;@ EaWrite: Write r1 into '(a7)+' (address in r0):
19791  mov r1,r1,lsr #16
19792  mov lr,pc
19793  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19794
19795  ldrh r8,[r4],#2 ;@ Fetch next opcode
19796  subs r5,r5,#12 ;@ Subtract cycles
19797  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19798  b CycloneEnd
19799
19800;@ ---------- [3ed8] move.w (a0)+, (a7)+ uses Op3ed8 ----------
19801Op3ed8:
19802;@ EaCalc : Get '(a0)+' into r0:
19803  and r2,r8,#0x000f
19804  ldr r0,[r7,r2,lsl #2]
19805  add r3,r0,#2 ;@ Post-increment An
19806  str r3,[r7,r2,lsl #2]
19807;@ EaRead : Read '(a0)+' (address in r0) into r1:
19808  mov lr,pc
19809  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19810  movs r1,r0,asl #16
19811
19812  and r10,r1,#0x80000000 ;@ r10=N_flag
19813  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19814
19815;@ EaCalc : Get '(a7)+' into r0:
19816  ldr r0,[r7,#0x3c] ;@ A7
19817  add r3,r0,#2 ;@ Post-increment An
19818  str r3,[r7,#0x3c] ;@ A7
19819;@ EaWrite: Write r1 into '(a7)+' (address in r0):
19820  mov r1,r1,lsr #16
19821  mov lr,pc
19822  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19823
19824  ldrh r8,[r4],#2 ;@ Fetch next opcode
19825  subs r5,r5,#12 ;@ Subtract cycles
19826  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19827  b CycloneEnd
19828
19829;@ ---------- [3ee0] move.w -(a0), (a7)+ uses Op3ee0 ----------
19830Op3ee0:
19831;@ EaCalc : Get '-(a0)' into r0:
19832  and r2,r8,#0x000f
19833  orr r2,r2,#0x8 ;@ A0-7
19834  ldr r0,[r7,r2,lsl #2]
19835  sub r0,r0,#2 ;@ Pre-decrement An
19836  str r0,[r7,r2,lsl #2]
19837;@ EaRead : Read '-(a0)' (address in r0) into r1:
19838  mov lr,pc
19839  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19840  movs r1,r0,asl #16
19841
19842  and r10,r1,#0x80000000 ;@ r10=N_flag
19843  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19844
19845;@ EaCalc : Get '(a7)+' into r0:
19846  ldr r0,[r7,#0x3c] ;@ A7
19847  add r3,r0,#2 ;@ Post-increment An
19848  str r3,[r7,#0x3c] ;@ A7
19849;@ EaWrite: Write r1 into '(a7)+' (address in r0):
19850  mov r1,r1,lsr #16
19851  mov lr,pc
19852  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19853
19854  ldrh r8,[r4],#2 ;@ Fetch next opcode
19855  subs r5,r5,#14 ;@ Subtract cycles
19856  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19857  b CycloneEnd
19858
19859;@ ---------- [3ee8] move.w ($3333,a0), (a7)+ uses Op3ee8 ----------
19860Op3ee8:
19861;@ EaCalc : Get '($3333,a0)' into r0:
19862  ldrsh r0,[r4],#2 ;@ Fetch offset
19863  and r2,r8,#0x000f
19864  ldr r2,[r7,r2,lsl #2]
19865  add r0,r0,r2 ;@ Add on offset
19866;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
19867  mov lr,pc
19868  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19869  movs r1,r0,asl #16
19870
19871  and r10,r1,#0x80000000 ;@ r10=N_flag
19872  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19873
19874;@ EaCalc : Get '(a7)+' into r0:
19875  ldr r0,[r7,#0x3c] ;@ A7
19876  add r3,r0,#2 ;@ Post-increment An
19877  str r3,[r7,#0x3c] ;@ A7
19878;@ EaWrite: Write r1 into '(a7)+' (address in r0):
19879  mov r1,r1,lsr #16
19880  mov lr,pc
19881  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19882
19883  ldrh r8,[r4],#2 ;@ Fetch next opcode
19884  subs r5,r5,#16 ;@ Subtract cycles
19885  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19886  b CycloneEnd
19887
19888;@ ---------- [3ef0] move.w ($33,a0,d3.w*2), (a7)+ uses Op3ef0 ----------
19889Op3ef0:
19890;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
19891;@ Get extension word into r3:
19892  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
19893  mov r2,r3,lsr #10
19894  tst r3,#0x0800 ;@ Is Rn Word or Long
19895  and r2,r2,#0x3c ;@ r2=Index of Rn
19896  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
19897  ldrne   r2,[r7,r2] ;@ r2=Rn.l
19898  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
19899  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
19900  and r2,r8,#0x000f
19901  orr r2,r2,#0x8 ;@ A0-7
19902  ldr r2,[r7,r2,lsl #2]
19903  add r0,r2,r3 ;@ r0=Disp+An+Rn
19904;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
19905  mov lr,pc
19906  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19907  movs r1,r0,asl #16
19908
19909  and r10,r1,#0x80000000 ;@ r10=N_flag
19910  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19911
19912;@ EaCalc : Get '(a7)+' into r0:
19913  ldr r0,[r7,#0x3c] ;@ A7
19914  add r3,r0,#2 ;@ Post-increment An
19915  str r3,[r7,#0x3c] ;@ A7
19916;@ EaWrite: Write r1 into '(a7)+' (address in r0):
19917  mov r1,r1,lsr #16
19918  mov lr,pc
19919  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19920
19921  ldrh r8,[r4],#2 ;@ Fetch next opcode
19922  subs r5,r5,#18 ;@ Subtract cycles
19923  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19924  b CycloneEnd
19925
19926;@ ---------- [3ef8] move.w $3333.w, (a7)+ uses Op3ef8 ----------
19927Op3ef8:
19928;@ EaCalc : Get '$3333.w' into r0:
19929  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
19930;@ EaRead : Read '$3333.w' (address in r0) into r1:
19931  mov lr,pc
19932  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19933  movs r1,r0,asl #16
19934
19935  and r10,r1,#0x80000000 ;@ r10=N_flag
19936  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19937
19938;@ EaCalc : Get '(a7)+' into r0:
19939  ldr r0,[r7,#0x3c] ;@ A7
19940  add r3,r0,#2 ;@ Post-increment An
19941  str r3,[r7,#0x3c] ;@ A7
19942;@ EaWrite: Write r1 into '(a7)+' (address in r0):
19943  mov r1,r1,lsr #16
19944  mov lr,pc
19945  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19946
19947  ldrh r8,[r4],#2 ;@ Fetch next opcode
19948  subs r5,r5,#16 ;@ Subtract cycles
19949  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19950  b CycloneEnd
19951
19952;@ ---------- [3ef9] move.w $33333333.l, (a7)+ uses Op3ef9 ----------
19953Op3ef9:
19954;@ EaCalc : Get '$33333333.l' into r0:
19955  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
19956  ldrh r0,[r4],#2
19957  orr r0,r0,r2,lsl #16
19958;@ EaRead : Read '$33333333.l' (address in r0) into r1:
19959  mov lr,pc
19960  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
19961  movs r1,r0,asl #16
19962
19963  and r10,r1,#0x80000000 ;@ r10=N_flag
19964  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19965
19966;@ EaCalc : Get '(a7)+' into r0:
19967  ldr r0,[r7,#0x3c] ;@ A7
19968  add r3,r0,#2 ;@ Post-increment An
19969  str r3,[r7,#0x3c] ;@ A7
19970;@ EaWrite: Write r1 into '(a7)+' (address in r0):
19971  mov r1,r1,lsr #16
19972  mov lr,pc
19973  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
19974
19975  ldrh r8,[r4],#2 ;@ Fetch next opcode
19976  subs r5,r5,#20 ;@ Subtract cycles
19977  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
19978  b CycloneEnd
19979
19980;@ ---------- [3efa] move.w ($3333,pc), (a7)+; =3335 uses Op3efa ----------
19981Op3efa:
19982;@ EaCalc : Get '($3333,pc)' into r0:
19983  ldr r0,[r7,#0x60] ;@ Get Memory base
19984  sub r0,r4,r0 ;@ Real PC
19985  ldrsh r2,[r4],#2 ;@ Fetch extension
19986  add r0,r2,r0 ;@ ($nn,PC)
19987;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
19988  mov lr,pc
19989  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
19990  movs r1,r0,asl #16
19991
19992  and r10,r1,#0x80000000 ;@ r10=N_flag
19993  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
19994
19995;@ EaCalc : Get '(a7)+' into r0:
19996  ldr r0,[r7,#0x3c] ;@ A7
19997  add r3,r0,#2 ;@ Post-increment An
19998  str r3,[r7,#0x3c] ;@ A7
19999;@ EaWrite: Write r1 into '(a7)+' (address in r0):
20000  mov r1,r1,lsr #16
20001  mov lr,pc
20002  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20003
20004  ldrh r8,[r4],#2 ;@ Fetch next opcode
20005  subs r5,r5,#16 ;@ Subtract cycles
20006  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20007  b CycloneEnd
20008
20009;@ ---------- [3efb] move.w ($33,pc,d3.w*2), (a7)+; =35 uses Op3efb ----------
20010Op3efb:
20011;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
20012  ldr r0,[r7,#0x60] ;@ Get Memory base
20013  ldrh r3,[r4] ;@ Get extension word
20014  sub r0,r4,r0 ;@ r0=PC
20015  add r4,r4,#2
20016  mov r2,r3,lsr #10
20017  tst r3,#0x0800 ;@ Is Rn Word or Long
20018  and r2,r2,#0x3c ;@ r2=Index of Rn
20019  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20020  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20021  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
20022  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
20023  add r0,r2,r0 ;@ r0=Disp+PC+Rn
20024;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
20025  mov lr,pc
20026  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
20027  movs r1,r0,asl #16
20028
20029  and r10,r1,#0x80000000 ;@ r10=N_flag
20030  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20031
20032;@ EaCalc : Get '(a7)+' into r0:
20033  ldr r0,[r7,#0x3c] ;@ A7
20034  add r3,r0,#2 ;@ Post-increment An
20035  str r3,[r7,#0x3c] ;@ A7
20036;@ EaWrite: Write r1 into '(a7)+' (address in r0):
20037  mov r1,r1,lsr #16
20038  mov lr,pc
20039  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20040
20041  ldrh r8,[r4],#2 ;@ Fetch next opcode
20042  subs r5,r5,#18 ;@ Subtract cycles
20043  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20044  b CycloneEnd
20045
20046;@ ---------- [3efc] move.w #$3333, (a7)+ uses Op3efc ----------
20047Op3efc:
20048;@ EaCalc : Get '#$3333' into r1:
20049  ldrsh r1,[r4],#2 ;@ Fetch immediate value
20050;@ EaRead : Read '#$3333' (address in r1) into r1:
20051  movs r1,r1,asl #16
20052
20053  and r10,r1,#0x80000000 ;@ r10=N_flag
20054  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20055
20056;@ EaCalc : Get '(a7)+' into r0:
20057  ldr r0,[r7,#0x3c] ;@ A7
20058  add r3,r0,#2 ;@ Post-increment An
20059  str r3,[r7,#0x3c] ;@ A7
20060;@ EaWrite: Write r1 into '(a7)+' (address in r0):
20061  mov r1,r1,lsr #16
20062  mov lr,pc
20063  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20064
20065  ldrh r8,[r4],#2 ;@ Fetch next opcode
20066  subs r5,r5,#12 ;@ Subtract cycles
20067  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20068  b CycloneEnd
20069
20070;@ ---------- [3f00] move.w d0, -(a7) uses Op3f00 ----------
20071Op3f00:
20072;@ EaCalc : Get register index into r1:
20073  and r1,r8,#0x000f
20074  mov r1,r1,lsl #2
20075;@ EaRead : Read register[r1] into r1:
20076  ldrh r1,[r7,r1]
20077
20078  movs r2,r1,lsl #16
20079  and r10,r2,#0x80000000 ;@ r10=N_flag
20080  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20081
20082;@ EaCalc : Get '-(a7)' into r0:
20083  ldr r0,[r7,#0x3c] ;@ A7
20084  sub r0,r0,#2 ;@ Pre-decrement An
20085  str r0,[r7,#0x3c] ;@ A7
20086;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20087  mov lr,pc
20088  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20089
20090  ldrh r8,[r4],#2 ;@ Fetch next opcode
20091  subs r5,r5,#8 ;@ Subtract cycles
20092  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20093  b CycloneEnd
20094
20095;@ ---------- [3f10] move.w (a0), -(a7) uses Op3f10 ----------
20096Op3f10:
20097;@ EaCalc : Get '(a0)' into r0:
20098  and r2,r8,#0x000f
20099  orr r2,r2,#0x8 ;@ A0-7
20100  ldr r0,[r7,r2,lsl #2]
20101;@ EaRead : Read '(a0)' (address in r0) into r1:
20102  mov lr,pc
20103  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20104  movs r1,r0,asl #16
20105
20106  and r10,r1,#0x80000000 ;@ r10=N_flag
20107  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20108
20109;@ EaCalc : Get '-(a7)' into r0:
20110  ldr r0,[r7,#0x3c] ;@ A7
20111  sub r0,r0,#2 ;@ Pre-decrement An
20112  str r0,[r7,#0x3c] ;@ A7
20113;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20114  mov r1,r1,lsr #16
20115  mov lr,pc
20116  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20117
20118  ldrh r8,[r4],#2 ;@ Fetch next opcode
20119  subs r5,r5,#12 ;@ Subtract cycles
20120  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20121  b CycloneEnd
20122
20123;@ ---------- [3f18] move.w (a0)+, -(a7) uses Op3f18 ----------
20124Op3f18:
20125;@ EaCalc : Get '(a0)+' into r0:
20126  and r2,r8,#0x000f
20127  ldr r0,[r7,r2,lsl #2]
20128  add r3,r0,#2 ;@ Post-increment An
20129  str r3,[r7,r2,lsl #2]
20130;@ EaRead : Read '(a0)+' (address in r0) into r1:
20131  mov lr,pc
20132  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20133  movs r1,r0,asl #16
20134
20135  and r10,r1,#0x80000000 ;@ r10=N_flag
20136  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20137
20138;@ EaCalc : Get '-(a7)' into r0:
20139  ldr r0,[r7,#0x3c] ;@ A7
20140  sub r0,r0,#2 ;@ Pre-decrement An
20141  str r0,[r7,#0x3c] ;@ A7
20142;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20143  mov r1,r1,lsr #16
20144  mov lr,pc
20145  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20146
20147  ldrh r8,[r4],#2 ;@ Fetch next opcode
20148  subs r5,r5,#12 ;@ Subtract cycles
20149  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20150  b CycloneEnd
20151
20152;@ ---------- [3f20] move.w -(a0), -(a7) uses Op3f20 ----------
20153Op3f20:
20154;@ EaCalc : Get '-(a0)' into r0:
20155  and r2,r8,#0x000f
20156  orr r2,r2,#0x8 ;@ A0-7
20157  ldr r0,[r7,r2,lsl #2]
20158  sub r0,r0,#2 ;@ Pre-decrement An
20159  str r0,[r7,r2,lsl #2]
20160;@ EaRead : Read '-(a0)' (address in r0) into r1:
20161  mov lr,pc
20162  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20163  movs r1,r0,asl #16
20164
20165  and r10,r1,#0x80000000 ;@ r10=N_flag
20166  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20167
20168;@ EaCalc : Get '-(a7)' into r0:
20169  ldr r0,[r7,#0x3c] ;@ A7
20170  sub r0,r0,#2 ;@ Pre-decrement An
20171  str r0,[r7,#0x3c] ;@ A7
20172;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20173  mov r1,r1,lsr #16
20174  mov lr,pc
20175  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20176
20177  ldrh r8,[r4],#2 ;@ Fetch next opcode
20178  subs r5,r5,#14 ;@ Subtract cycles
20179  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20180  b CycloneEnd
20181
20182;@ ---------- [3f28] move.w ($3333,a0), -(a7) uses Op3f28 ----------
20183Op3f28:
20184;@ EaCalc : Get '($3333,a0)' into r0:
20185  ldrsh r0,[r4],#2 ;@ Fetch offset
20186  and r2,r8,#0x000f
20187  ldr r2,[r7,r2,lsl #2]
20188  add r0,r0,r2 ;@ Add on offset
20189;@ EaRead : Read '($3333,a0)' (address in r0) into r1:
20190  mov lr,pc
20191  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20192  movs r1,r0,asl #16
20193
20194  and r10,r1,#0x80000000 ;@ r10=N_flag
20195  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20196
20197;@ EaCalc : Get '-(a7)' into r0:
20198  ldr r0,[r7,#0x3c] ;@ A7
20199  sub r0,r0,#2 ;@ Pre-decrement An
20200  str r0,[r7,#0x3c] ;@ A7
20201;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20202  mov r1,r1,lsr #16
20203  mov lr,pc
20204  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20205
20206  ldrh r8,[r4],#2 ;@ Fetch next opcode
20207  subs r5,r5,#16 ;@ Subtract cycles
20208  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20209  b CycloneEnd
20210
20211;@ ---------- [3f30] move.w ($33,a0,d3.w*2), -(a7) uses Op3f30 ----------
20212Op3f30:
20213;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
20214;@ Get extension word into r3:
20215  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
20216  mov r2,r3,lsr #10
20217  tst r3,#0x0800 ;@ Is Rn Word or Long
20218  and r2,r2,#0x3c ;@ r2=Index of Rn
20219  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20220  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20221  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
20222  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
20223  and r2,r8,#0x000f
20224  orr r2,r2,#0x8 ;@ A0-7
20225  ldr r2,[r7,r2,lsl #2]
20226  add r0,r2,r3 ;@ r0=Disp+An+Rn
20227;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r1:
20228  mov lr,pc
20229  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20230  movs r1,r0,asl #16
20231
20232  and r10,r1,#0x80000000 ;@ r10=N_flag
20233  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20234
20235;@ EaCalc : Get '-(a7)' into r0:
20236  ldr r0,[r7,#0x3c] ;@ A7
20237  sub r0,r0,#2 ;@ Pre-decrement An
20238  str r0,[r7,#0x3c] ;@ A7
20239;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20240  mov r1,r1,lsr #16
20241  mov lr,pc
20242  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20243
20244  ldrh r8,[r4],#2 ;@ Fetch next opcode
20245  subs r5,r5,#18 ;@ Subtract cycles
20246  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20247  b CycloneEnd
20248
20249;@ ---------- [3f38] move.w $3333.w, -(a7) uses Op3f38 ----------
20250Op3f38:
20251;@ EaCalc : Get '$3333.w' into r0:
20252  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
20253;@ EaRead : Read '$3333.w' (address in r0) into r1:
20254  mov lr,pc
20255  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20256  movs r1,r0,asl #16
20257
20258  and r10,r1,#0x80000000 ;@ r10=N_flag
20259  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20260
20261;@ EaCalc : Get '-(a7)' into r0:
20262  ldr r0,[r7,#0x3c] ;@ A7
20263  sub r0,r0,#2 ;@ Pre-decrement An
20264  str r0,[r7,#0x3c] ;@ A7
20265;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20266  mov r1,r1,lsr #16
20267  mov lr,pc
20268  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20269
20270  ldrh r8,[r4],#2 ;@ Fetch next opcode
20271  subs r5,r5,#16 ;@ Subtract cycles
20272  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20273  b CycloneEnd
20274
20275;@ ---------- [3f39] move.w $33333333.l, -(a7) uses Op3f39 ----------
20276Op3f39:
20277;@ EaCalc : Get '$33333333.l' into r0:
20278  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
20279  ldrh r0,[r4],#2
20280  orr r0,r0,r2,lsl #16
20281;@ EaRead : Read '$33333333.l' (address in r0) into r1:
20282  mov lr,pc
20283  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20284  movs r1,r0,asl #16
20285
20286  and r10,r1,#0x80000000 ;@ r10=N_flag
20287  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20288
20289;@ EaCalc : Get '-(a7)' into r0:
20290  ldr r0,[r7,#0x3c] ;@ A7
20291  sub r0,r0,#2 ;@ Pre-decrement An
20292  str r0,[r7,#0x3c] ;@ A7
20293;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20294  mov r1,r1,lsr #16
20295  mov lr,pc
20296  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20297
20298  ldrh r8,[r4],#2 ;@ Fetch next opcode
20299  subs r5,r5,#20 ;@ Subtract cycles
20300  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20301  b CycloneEnd
20302
20303;@ ---------- [3f3a] move.w ($3333,pc), -(a7); =3335 uses Op3f3a ----------
20304Op3f3a:
20305;@ EaCalc : Get '($3333,pc)' into r0:
20306  ldr r0,[r7,#0x60] ;@ Get Memory base
20307  sub r0,r4,r0 ;@ Real PC
20308  ldrsh r2,[r4],#2 ;@ Fetch extension
20309  add r0,r2,r0 ;@ ($nn,PC)
20310;@ EaRead : Read '($3333,pc)' (address in r0) into r1:
20311  mov lr,pc
20312  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
20313  movs r1,r0,asl #16
20314
20315  and r10,r1,#0x80000000 ;@ r10=N_flag
20316  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20317
20318;@ EaCalc : Get '-(a7)' into r0:
20319  ldr r0,[r7,#0x3c] ;@ A7
20320  sub r0,r0,#2 ;@ Pre-decrement An
20321  str r0,[r7,#0x3c] ;@ A7
20322;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20323  mov r1,r1,lsr #16
20324  mov lr,pc
20325  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20326
20327  ldrh r8,[r4],#2 ;@ Fetch next opcode
20328  subs r5,r5,#16 ;@ Subtract cycles
20329  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20330  b CycloneEnd
20331
20332;@ ---------- [3f3b] move.w ($33,pc,d3.w*2), -(a7); =35 uses Op3f3b ----------
20333Op3f3b:
20334;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
20335  ldr r0,[r7,#0x60] ;@ Get Memory base
20336  ldrh r3,[r4] ;@ Get extension word
20337  sub r0,r4,r0 ;@ r0=PC
20338  add r4,r4,#2
20339  mov r2,r3,lsr #10
20340  tst r3,#0x0800 ;@ Is Rn Word or Long
20341  and r2,r2,#0x3c ;@ r2=Index of Rn
20342  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20343  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20344  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
20345  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
20346  add r0,r2,r0 ;@ r0=Disp+PC+Rn
20347;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r1:
20348  mov lr,pc
20349  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
20350  movs r1,r0,asl #16
20351
20352  and r10,r1,#0x80000000 ;@ r10=N_flag
20353  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20354
20355;@ EaCalc : Get '-(a7)' into r0:
20356  ldr r0,[r7,#0x3c] ;@ A7
20357  sub r0,r0,#2 ;@ Pre-decrement An
20358  str r0,[r7,#0x3c] ;@ A7
20359;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20360  mov r1,r1,lsr #16
20361  mov lr,pc
20362  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20363
20364  ldrh r8,[r4],#2 ;@ Fetch next opcode
20365  subs r5,r5,#18 ;@ Subtract cycles
20366  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20367  b CycloneEnd
20368
20369;@ ---------- [3f3c] move.w #$3333, -(a7) uses Op3f3c ----------
20370Op3f3c:
20371;@ EaCalc : Get '#$3333' into r1:
20372  ldrsh r1,[r4],#2 ;@ Fetch immediate value
20373;@ EaRead : Read '#$3333' (address in r1) into r1:
20374  movs r1,r1,asl #16
20375
20376  and r10,r1,#0x80000000 ;@ r10=N_flag
20377  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
20378
20379;@ EaCalc : Get '-(a7)' into r0:
20380  ldr r0,[r7,#0x3c] ;@ A7
20381  sub r0,r0,#2 ;@ Pre-decrement An
20382  str r0,[r7,#0x3c] ;@ A7
20383;@ EaWrite: Write r1 into '-(a7)' (address in r0):
20384  mov r1,r1,lsr #16
20385  mov lr,pc
20386  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20387
20388  ldrh r8,[r4],#2 ;@ Fetch next opcode
20389  subs r5,r5,#12 ;@ Subtract cycles
20390  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20391  b CycloneEnd
20392
20393;@ ---------- [4000] negx.b d0 uses Op4000 ----------
20394Op4000:
20395;@ EaCalc : Get register index into r11:
20396  and r11,r8,#0x000f
20397;@ EaRead : Read register[r11] into r0:
20398  ldr r0,[r7,r11,lsl #2]
20399
20400;@ Negx:
20401;@ Get X bit:
20402  ldr r2,[r7,#0x4c]
20403  mvn r2,r2 ;@ Invert it
20404  tst r2,r2,lsl #3 ;@ Get into Carry
20405
20406  mov r0,r0,asl #24
20407  rscs r1,r0,#0 ;@ do arithmetic
20408  orr r3,r10,#0xb0000000 ;@ for old Z
20409  mrs r10,cpsr ;@ r10=flags
20410  eor r10,r10,#0x20000000 ;@ Invert carry
20411  str r10,[r7,#0x4c] ;@ Save X bit
20412  movs r1,r1,asr #24
20413  orreq r10,r10,#0x40000000 ;@ possily missed Z
20414  andeq r10,r10,r3 ;@ fix Z
20415
20416;@ EaWrite: r1 into register[r11]:
20417  strb r1,[r7,r11,lsl #2]
20418
20419  ldrh r8,[r4],#2 ;@ Fetch next opcode
20420  subs r5,r5,#4 ;@ Subtract cycles
20421  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20422  b CycloneEnd
20423
20424;@ ---------- [4010] negx.b (a0) uses Op4010 ----------
20425Op4010:
20426;@ EaCalc : Get '(a0)' into r11:
20427  and r2,r8,#0x000f
20428  orr r2,r2,#0x8 ;@ A0-7
20429  ldr r11,[r7,r2,lsl #2]
20430;@ EaRead : Read '(a0)' (address in r11) into r0:
20431  add lr,pc,#4
20432  mov r0,r11
20433  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
20434
20435;@ Negx:
20436;@ Get X bit:
20437  ldr r2,[r7,#0x4c]
20438  mvn r2,r2 ;@ Invert it
20439  tst r2,r2,lsl #3 ;@ Get into Carry
20440
20441  mov r0,r0,asl #24
20442  rscs r1,r0,#0 ;@ do arithmetic
20443  orr r3,r10,#0xb0000000 ;@ for old Z
20444  mrs r10,cpsr ;@ r10=flags
20445  eor r10,r10,#0x20000000 ;@ Invert carry
20446  str r10,[r7,#0x4c] ;@ Save X bit
20447  movs r1,r1,asr #24
20448  orreq r10,r10,#0x40000000 ;@ possily missed Z
20449  andeq r10,r10,r3 ;@ fix Z
20450
20451;@ EaWrite: Write r1 into '(a0)' (address in r11):
20452  and r1,r1,#0xff
20453  add lr,pc,#4
20454  mov r0,r11
20455  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
20456
20457  ldrh r8,[r4],#2 ;@ Fetch next opcode
20458  subs r5,r5,#12 ;@ Subtract cycles
20459  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20460  b CycloneEnd
20461
20462;@ ---------- [4018] negx.b (a0)+ uses Op4018 ----------
20463Op4018:
20464;@ EaCalc : Get '(a0)+' into r11:
20465  and r2,r8,#0x000f
20466  ldr r11,[r7,r2,lsl #2]
20467  add r3,r11,#1 ;@ Post-increment An
20468  str r3,[r7,r2,lsl #2]
20469;@ EaRead : Read '(a0)+' (address in r11) into r0:
20470  add lr,pc,#4
20471  mov r0,r11
20472  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
20473
20474;@ Negx:
20475;@ Get X bit:
20476  ldr r2,[r7,#0x4c]
20477  mvn r2,r2 ;@ Invert it
20478  tst r2,r2,lsl #3 ;@ Get into Carry
20479
20480  mov r0,r0,asl #24
20481  rscs r1,r0,#0 ;@ do arithmetic
20482  orr r3,r10,#0xb0000000 ;@ for old Z
20483  mrs r10,cpsr ;@ r10=flags
20484  eor r10,r10,#0x20000000 ;@ Invert carry
20485  str r10,[r7,#0x4c] ;@ Save X bit
20486  movs r1,r1,asr #24
20487  orreq r10,r10,#0x40000000 ;@ possily missed Z
20488  andeq r10,r10,r3 ;@ fix Z
20489
20490;@ EaWrite: Write r1 into '(a0)+' (address in r11):
20491  and r1,r1,#0xff
20492  add lr,pc,#4
20493  mov r0,r11
20494  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
20495
20496  ldrh r8,[r4],#2 ;@ Fetch next opcode
20497  subs r5,r5,#12 ;@ Subtract cycles
20498  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20499  b CycloneEnd
20500
20501;@ ---------- [401f] negx.b (a7)+ uses Op401f ----------
20502Op401f:
20503;@ EaCalc : Get '(a7)+' into r11:
20504  ldr r11,[r7,#0x3c] ;@ A7
20505  add r3,r11,#2 ;@ Post-increment An
20506  str r3,[r7,#0x3c] ;@ A7
20507;@ EaRead : Read '(a7)+' (address in r11) into r0:
20508  add lr,pc,#4
20509  mov r0,r11
20510  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
20511
20512;@ Negx:
20513;@ Get X bit:
20514  ldr r2,[r7,#0x4c]
20515  mvn r2,r2 ;@ Invert it
20516  tst r2,r2,lsl #3 ;@ Get into Carry
20517
20518  mov r0,r0,asl #24
20519  rscs r1,r0,#0 ;@ do arithmetic
20520  orr r3,r10,#0xb0000000 ;@ for old Z
20521  mrs r10,cpsr ;@ r10=flags
20522  eor r10,r10,#0x20000000 ;@ Invert carry
20523  str r10,[r7,#0x4c] ;@ Save X bit
20524  movs r1,r1,asr #24
20525  orreq r10,r10,#0x40000000 ;@ possily missed Z
20526  andeq r10,r10,r3 ;@ fix Z
20527
20528;@ EaWrite: Write r1 into '(a7)+' (address in r11):
20529  and r1,r1,#0xff
20530  add lr,pc,#4
20531  mov r0,r11
20532  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
20533
20534  ldrh r8,[r4],#2 ;@ Fetch next opcode
20535  subs r5,r5,#12 ;@ Subtract cycles
20536  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20537  b CycloneEnd
20538
20539;@ ---------- [4020] negx.b -(a0) uses Op4020 ----------
20540Op4020:
20541;@ EaCalc : Get '-(a0)' into r11:
20542  and r2,r8,#0x000f
20543  orr r2,r2,#0x8 ;@ A0-7
20544  ldr r11,[r7,r2,lsl #2]
20545  sub r11,r11,#1 ;@ Pre-decrement An
20546  str r11,[r7,r2,lsl #2]
20547;@ EaRead : Read '-(a0)' (address in r11) into r0:
20548  add lr,pc,#4
20549  mov r0,r11
20550  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
20551
20552;@ Negx:
20553;@ Get X bit:
20554  ldr r2,[r7,#0x4c]
20555  mvn r2,r2 ;@ Invert it
20556  tst r2,r2,lsl #3 ;@ Get into Carry
20557
20558  mov r0,r0,asl #24
20559  rscs r1,r0,#0 ;@ do arithmetic
20560  orr r3,r10,#0xb0000000 ;@ for old Z
20561  mrs r10,cpsr ;@ r10=flags
20562  eor r10,r10,#0x20000000 ;@ Invert carry
20563  str r10,[r7,#0x4c] ;@ Save X bit
20564  movs r1,r1,asr #24
20565  orreq r10,r10,#0x40000000 ;@ possily missed Z
20566  andeq r10,r10,r3 ;@ fix Z
20567
20568;@ EaWrite: Write r1 into '-(a0)' (address in r11):
20569  and r1,r1,#0xff
20570  add lr,pc,#4
20571  mov r0,r11
20572  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
20573
20574  ldrh r8,[r4],#2 ;@ Fetch next opcode
20575  subs r5,r5,#14 ;@ Subtract cycles
20576  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20577  b CycloneEnd
20578
20579;@ ---------- [4027] negx.b -(a7) uses Op4027 ----------
20580Op4027:
20581;@ EaCalc : Get '-(a7)' into r11:
20582  ldr r11,[r7,#0x3c] ;@ A7
20583  sub r11,r11,#2 ;@ Pre-decrement An
20584  str r11,[r7,#0x3c] ;@ A7
20585;@ EaRead : Read '-(a7)' (address in r11) into r0:
20586  add lr,pc,#4
20587  mov r0,r11
20588  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
20589
20590;@ Negx:
20591;@ Get X bit:
20592  ldr r2,[r7,#0x4c]
20593  mvn r2,r2 ;@ Invert it
20594  tst r2,r2,lsl #3 ;@ Get into Carry
20595
20596  mov r0,r0,asl #24
20597  rscs r1,r0,#0 ;@ do arithmetic
20598  orr r3,r10,#0xb0000000 ;@ for old Z
20599  mrs r10,cpsr ;@ r10=flags
20600  eor r10,r10,#0x20000000 ;@ Invert carry
20601  str r10,[r7,#0x4c] ;@ Save X bit
20602  movs r1,r1,asr #24
20603  orreq r10,r10,#0x40000000 ;@ possily missed Z
20604  andeq r10,r10,r3 ;@ fix Z
20605
20606;@ EaWrite: Write r1 into '-(a7)' (address in r11):
20607  and r1,r1,#0xff
20608  add lr,pc,#4
20609  mov r0,r11
20610  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
20611
20612  ldrh r8,[r4],#2 ;@ Fetch next opcode
20613  subs r5,r5,#14 ;@ Subtract cycles
20614  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20615  b CycloneEnd
20616
20617;@ ---------- [4028] negx.b ($3333,a0) uses Op4028 ----------
20618Op4028:
20619;@ EaCalc : Get '($3333,a0)' into r11:
20620  ldrsh r0,[r4],#2 ;@ Fetch offset
20621  and r2,r8,#0x000f
20622  ldr r2,[r7,r2,lsl #2]
20623  add r11,r0,r2 ;@ Add on offset
20624;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
20625  add lr,pc,#4
20626  mov r0,r11
20627  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
20628
20629;@ Negx:
20630;@ Get X bit:
20631  ldr r2,[r7,#0x4c]
20632  mvn r2,r2 ;@ Invert it
20633  tst r2,r2,lsl #3 ;@ Get into Carry
20634
20635  mov r0,r0,asl #24
20636  rscs r1,r0,#0 ;@ do arithmetic
20637  orr r3,r10,#0xb0000000 ;@ for old Z
20638  mrs r10,cpsr ;@ r10=flags
20639  eor r10,r10,#0x20000000 ;@ Invert carry
20640  str r10,[r7,#0x4c] ;@ Save X bit
20641  movs r1,r1,asr #24
20642  orreq r10,r10,#0x40000000 ;@ possily missed Z
20643  andeq r10,r10,r3 ;@ fix Z
20644
20645;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
20646  and r1,r1,#0xff
20647  add lr,pc,#4
20648  mov r0,r11
20649  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
20650
20651  ldrh r8,[r4],#2 ;@ Fetch next opcode
20652  subs r5,r5,#16 ;@ Subtract cycles
20653  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20654  b CycloneEnd
20655
20656;@ ---------- [4030] negx.b ($33,a0,d3.w*2) uses Op4030 ----------
20657Op4030:
20658;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
20659;@ Get extension word into r3:
20660  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
20661  mov r2,r3,lsr #10
20662  tst r3,#0x0800 ;@ Is Rn Word or Long
20663  and r2,r2,#0x3c ;@ r2=Index of Rn
20664  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20665  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20666  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
20667  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
20668  and r2,r8,#0x000f
20669  orr r2,r2,#0x8 ;@ A0-7
20670  ldr r2,[r7,r2,lsl #2]
20671  add r11,r2,r3 ;@ r11=Disp+An+Rn
20672;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
20673  add lr,pc,#4
20674  mov r0,r11
20675  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
20676
20677;@ Negx:
20678;@ Get X bit:
20679  ldr r2,[r7,#0x4c]
20680  mvn r2,r2 ;@ Invert it
20681  tst r2,r2,lsl #3 ;@ Get into Carry
20682
20683  mov r0,r0,asl #24
20684  rscs r1,r0,#0 ;@ do arithmetic
20685  orr r3,r10,#0xb0000000 ;@ for old Z
20686  mrs r10,cpsr ;@ r10=flags
20687  eor r10,r10,#0x20000000 ;@ Invert carry
20688  str r10,[r7,#0x4c] ;@ Save X bit
20689  movs r1,r1,asr #24
20690  orreq r10,r10,#0x40000000 ;@ possily missed Z
20691  andeq r10,r10,r3 ;@ fix Z
20692
20693;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
20694  and r1,r1,#0xff
20695  add lr,pc,#4
20696  mov r0,r11
20697  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
20698
20699  ldrh r8,[r4],#2 ;@ Fetch next opcode
20700  subs r5,r5,#18 ;@ Subtract cycles
20701  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20702  b CycloneEnd
20703
20704;@ ---------- [4038] negx.b $3333.w uses Op4038 ----------
20705Op4038:
20706;@ EaCalc : Get '$3333.w' into r11:
20707  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
20708;@ EaRead : Read '$3333.w' (address in r11) into r0:
20709  add lr,pc,#4
20710  mov r0,r11
20711  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
20712
20713;@ Negx:
20714;@ Get X bit:
20715  ldr r2,[r7,#0x4c]
20716  mvn r2,r2 ;@ Invert it
20717  tst r2,r2,lsl #3 ;@ Get into Carry
20718
20719  mov r0,r0,asl #24
20720  rscs r1,r0,#0 ;@ do arithmetic
20721  orr r3,r10,#0xb0000000 ;@ for old Z
20722  mrs r10,cpsr ;@ r10=flags
20723  eor r10,r10,#0x20000000 ;@ Invert carry
20724  str r10,[r7,#0x4c] ;@ Save X bit
20725  movs r1,r1,asr #24
20726  orreq r10,r10,#0x40000000 ;@ possily missed Z
20727  andeq r10,r10,r3 ;@ fix Z
20728
20729;@ EaWrite: Write r1 into '$3333.w' (address in r11):
20730  and r1,r1,#0xff
20731  add lr,pc,#4
20732  mov r0,r11
20733  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
20734
20735  ldrh r8,[r4],#2 ;@ Fetch next opcode
20736  subs r5,r5,#16 ;@ Subtract cycles
20737  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20738  b CycloneEnd
20739
20740;@ ---------- [4039] negx.b $33333333.l uses Op4039 ----------
20741Op4039:
20742;@ EaCalc : Get '$33333333.l' into r11:
20743  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
20744  ldrh r0,[r4],#2
20745  orr r11,r0,r2,lsl #16
20746;@ EaRead : Read '$33333333.l' (address in r11) into r0:
20747  add lr,pc,#4
20748  mov r0,r11
20749  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
20750
20751;@ Negx:
20752;@ Get X bit:
20753  ldr r2,[r7,#0x4c]
20754  mvn r2,r2 ;@ Invert it
20755  tst r2,r2,lsl #3 ;@ Get into Carry
20756
20757  mov r0,r0,asl #24
20758  rscs r1,r0,#0 ;@ do arithmetic
20759  orr r3,r10,#0xb0000000 ;@ for old Z
20760  mrs r10,cpsr ;@ r10=flags
20761  eor r10,r10,#0x20000000 ;@ Invert carry
20762  str r10,[r7,#0x4c] ;@ Save X bit
20763  movs r1,r1,asr #24
20764  orreq r10,r10,#0x40000000 ;@ possily missed Z
20765  andeq r10,r10,r3 ;@ fix Z
20766
20767;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
20768  and r1,r1,#0xff
20769  add lr,pc,#4
20770  mov r0,r11
20771  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
20772
20773  ldrh r8,[r4],#2 ;@ Fetch next opcode
20774  subs r5,r5,#20 ;@ Subtract cycles
20775  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20776  b CycloneEnd
20777
20778;@ ---------- [4040] negx.w d0 uses Op4040 ----------
20779Op4040:
20780;@ EaCalc : Get register index into r11:
20781  and r11,r8,#0x000f
20782  mov r11,r11,lsl #2
20783;@ EaRead : Read register[r11] into r0:
20784  ldr r0,[r7,r11]
20785
20786;@ Negx:
20787;@ Get X bit:
20788  ldr r2,[r7,#0x4c]
20789  mvn r2,r2 ;@ Invert it
20790  tst r2,r2,lsl #3 ;@ Get into Carry
20791
20792  mov r0,r0,asl #16
20793  rscs r1,r0,#0 ;@ do arithmetic
20794  orr r3,r10,#0xb0000000 ;@ for old Z
20795  mrs r10,cpsr ;@ r10=flags
20796  eor r10,r10,#0x20000000 ;@ Invert carry
20797  str r10,[r7,#0x4c] ;@ Save X bit
20798  movs r1,r1,asr #16
20799  orreq r10,r10,#0x40000000 ;@ possily missed Z
20800  andeq r10,r10,r3 ;@ fix Z
20801
20802;@ EaWrite: r1 into register[r11]:
20803  strh r1,[r7,r11]
20804
20805  ldrh r8,[r4],#2 ;@ Fetch next opcode
20806  subs r5,r5,#4 ;@ Subtract cycles
20807  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20808  b CycloneEnd
20809
20810;@ ---------- [4050] negx.w (a0) uses Op4050 ----------
20811Op4050:
20812;@ EaCalc : Get '(a0)' into r11:
20813  and r2,r8,#0x000f
20814  orr r2,r2,#0x8 ;@ A0-7
20815  ldr r11,[r7,r2,lsl #2]
20816;@ EaRead : Read '(a0)' (address in r11) into r0:
20817  add lr,pc,#4
20818  mov r0,r11
20819  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20820
20821;@ Negx:
20822;@ Get X bit:
20823  ldr r2,[r7,#0x4c]
20824  mvn r2,r2 ;@ Invert it
20825  tst r2,r2,lsl #3 ;@ Get into Carry
20826
20827  mov r0,r0,asl #16
20828  rscs r1,r0,#0 ;@ do arithmetic
20829  orr r3,r10,#0xb0000000 ;@ for old Z
20830  mrs r10,cpsr ;@ r10=flags
20831  eor r10,r10,#0x20000000 ;@ Invert carry
20832  str r10,[r7,#0x4c] ;@ Save X bit
20833  movs r1,r1,asr #16
20834  orreq r10,r10,#0x40000000 ;@ possily missed Z
20835  andeq r10,r10,r3 ;@ fix Z
20836
20837;@ EaWrite: Write r1 into '(a0)' (address in r11):
20838  uxth r1,r1 ;@ zero extend
20839  add lr,pc,#4
20840  mov r0,r11
20841  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20842
20843  ldrh r8,[r4],#2 ;@ Fetch next opcode
20844  subs r5,r5,#12 ;@ Subtract cycles
20845  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20846  b CycloneEnd
20847
20848;@ ---------- [4058] negx.w (a0)+ uses Op4058 ----------
20849Op4058:
20850;@ EaCalc : Get '(a0)+' into r11:
20851  and r2,r8,#0x000f
20852  ldr r11,[r7,r2,lsl #2]
20853  add r3,r11,#2 ;@ Post-increment An
20854  str r3,[r7,r2,lsl #2]
20855;@ EaRead : Read '(a0)+' (address in r11) into r0:
20856  add lr,pc,#4
20857  mov r0,r11
20858  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20859
20860;@ Negx:
20861;@ Get X bit:
20862  ldr r2,[r7,#0x4c]
20863  mvn r2,r2 ;@ Invert it
20864  tst r2,r2,lsl #3 ;@ Get into Carry
20865
20866  mov r0,r0,asl #16
20867  rscs r1,r0,#0 ;@ do arithmetic
20868  orr r3,r10,#0xb0000000 ;@ for old Z
20869  mrs r10,cpsr ;@ r10=flags
20870  eor r10,r10,#0x20000000 ;@ Invert carry
20871  str r10,[r7,#0x4c] ;@ Save X bit
20872  movs r1,r1,asr #16
20873  orreq r10,r10,#0x40000000 ;@ possily missed Z
20874  andeq r10,r10,r3 ;@ fix Z
20875
20876;@ EaWrite: Write r1 into '(a0)+' (address in r11):
20877  uxth r1,r1 ;@ zero extend
20878  add lr,pc,#4
20879  mov r0,r11
20880  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20881
20882  ldrh r8,[r4],#2 ;@ Fetch next opcode
20883  subs r5,r5,#12 ;@ Subtract cycles
20884  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20885  b CycloneEnd
20886
20887;@ ---------- [4060] negx.w -(a0) uses Op4060 ----------
20888Op4060:
20889;@ EaCalc : Get '-(a0)' into r11:
20890  and r2,r8,#0x000f
20891  orr r2,r2,#0x8 ;@ A0-7
20892  ldr r11,[r7,r2,lsl #2]
20893  sub r11,r11,#2 ;@ Pre-decrement An
20894  str r11,[r7,r2,lsl #2]
20895;@ EaRead : Read '-(a0)' (address in r11) into r0:
20896  add lr,pc,#4
20897  mov r0,r11
20898  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20899
20900;@ Negx:
20901;@ Get X bit:
20902  ldr r2,[r7,#0x4c]
20903  mvn r2,r2 ;@ Invert it
20904  tst r2,r2,lsl #3 ;@ Get into Carry
20905
20906  mov r0,r0,asl #16
20907  rscs r1,r0,#0 ;@ do arithmetic
20908  orr r3,r10,#0xb0000000 ;@ for old Z
20909  mrs r10,cpsr ;@ r10=flags
20910  eor r10,r10,#0x20000000 ;@ Invert carry
20911  str r10,[r7,#0x4c] ;@ Save X bit
20912  movs r1,r1,asr #16
20913  orreq r10,r10,#0x40000000 ;@ possily missed Z
20914  andeq r10,r10,r3 ;@ fix Z
20915
20916;@ EaWrite: Write r1 into '-(a0)' (address in r11):
20917  uxth r1,r1 ;@ zero extend
20918  add lr,pc,#4
20919  mov r0,r11
20920  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20921
20922  ldrh r8,[r4],#2 ;@ Fetch next opcode
20923  subs r5,r5,#14 ;@ Subtract cycles
20924  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20925  b CycloneEnd
20926
20927;@ ---------- [4068] negx.w ($3333,a0) uses Op4068 ----------
20928Op4068:
20929;@ EaCalc : Get '($3333,a0)' into r11:
20930  ldrsh r0,[r4],#2 ;@ Fetch offset
20931  and r2,r8,#0x000f
20932  ldr r2,[r7,r2,lsl #2]
20933  add r11,r0,r2 ;@ Add on offset
20934;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
20935  add lr,pc,#4
20936  mov r0,r11
20937  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20938
20939;@ Negx:
20940;@ Get X bit:
20941  ldr r2,[r7,#0x4c]
20942  mvn r2,r2 ;@ Invert it
20943  tst r2,r2,lsl #3 ;@ Get into Carry
20944
20945  mov r0,r0,asl #16
20946  rscs r1,r0,#0 ;@ do arithmetic
20947  orr r3,r10,#0xb0000000 ;@ for old Z
20948  mrs r10,cpsr ;@ r10=flags
20949  eor r10,r10,#0x20000000 ;@ Invert carry
20950  str r10,[r7,#0x4c] ;@ Save X bit
20951  movs r1,r1,asr #16
20952  orreq r10,r10,#0x40000000 ;@ possily missed Z
20953  andeq r10,r10,r3 ;@ fix Z
20954
20955;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
20956  uxth r1,r1 ;@ zero extend
20957  add lr,pc,#4
20958  mov r0,r11
20959  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
20960
20961  ldrh r8,[r4],#2 ;@ Fetch next opcode
20962  subs r5,r5,#16 ;@ Subtract cycles
20963  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
20964  b CycloneEnd
20965
20966;@ ---------- [4070] negx.w ($33,a0,d3.w*2) uses Op4070 ----------
20967Op4070:
20968;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
20969;@ Get extension word into r3:
20970  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
20971  mov r2,r3,lsr #10
20972  tst r3,#0x0800 ;@ Is Rn Word or Long
20973  and r2,r2,#0x3c ;@ r2=Index of Rn
20974  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
20975  ldrne   r2,[r7,r2] ;@ r2=Rn.l
20976  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
20977  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
20978  and r2,r8,#0x000f
20979  orr r2,r2,#0x8 ;@ A0-7
20980  ldr r2,[r7,r2,lsl #2]
20981  add r11,r2,r3 ;@ r11=Disp+An+Rn
20982;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
20983  add lr,pc,#4
20984  mov r0,r11
20985  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
20986
20987;@ Negx:
20988;@ Get X bit:
20989  ldr r2,[r7,#0x4c]
20990  mvn r2,r2 ;@ Invert it
20991  tst r2,r2,lsl #3 ;@ Get into Carry
20992
20993  mov r0,r0,asl #16
20994  rscs r1,r0,#0 ;@ do arithmetic
20995  orr r3,r10,#0xb0000000 ;@ for old Z
20996  mrs r10,cpsr ;@ r10=flags
20997  eor r10,r10,#0x20000000 ;@ Invert carry
20998  str r10,[r7,#0x4c] ;@ Save X bit
20999  movs r1,r1,asr #16
21000  orreq r10,r10,#0x40000000 ;@ possily missed Z
21001  andeq r10,r10,r3 ;@ fix Z
21002
21003;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
21004  uxth r1,r1 ;@ zero extend
21005  add lr,pc,#4
21006  mov r0,r11
21007  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
21008
21009  ldrh r8,[r4],#2 ;@ Fetch next opcode
21010  subs r5,r5,#18 ;@ Subtract cycles
21011  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21012  b CycloneEnd
21013
21014;@ ---------- [4078] negx.w $3333.w uses Op4078 ----------
21015Op4078:
21016;@ EaCalc : Get '$3333.w' into r11:
21017  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
21018;@ EaRead : Read '$3333.w' (address in r11) into r0:
21019  add lr,pc,#4
21020  mov r0,r11
21021  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
21022
21023;@ Negx:
21024;@ Get X bit:
21025  ldr r2,[r7,#0x4c]
21026  mvn r2,r2 ;@ Invert it
21027  tst r2,r2,lsl #3 ;@ Get into Carry
21028
21029  mov r0,r0,asl #16
21030  rscs r1,r0,#0 ;@ do arithmetic
21031  orr r3,r10,#0xb0000000 ;@ for old Z
21032  mrs r10,cpsr ;@ r10=flags
21033  eor r10,r10,#0x20000000 ;@ Invert carry
21034  str r10,[r7,#0x4c] ;@ Save X bit
21035  movs r1,r1,asr #16
21036  orreq r10,r10,#0x40000000 ;@ possily missed Z
21037  andeq r10,r10,r3 ;@ fix Z
21038
21039;@ EaWrite: Write r1 into '$3333.w' (address in r11):
21040  uxth r1,r1 ;@ zero extend
21041  add lr,pc,#4
21042  mov r0,r11
21043  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
21044
21045  ldrh r8,[r4],#2 ;@ Fetch next opcode
21046  subs r5,r5,#16 ;@ Subtract cycles
21047  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21048  b CycloneEnd
21049
21050;@ ---------- [4079] negx.w $33333333.l uses Op4079 ----------
21051Op4079:
21052;@ EaCalc : Get '$33333333.l' into r11:
21053  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
21054  ldrh r0,[r4],#2
21055  orr r11,r0,r2,lsl #16
21056;@ EaRead : Read '$33333333.l' (address in r11) into r0:
21057  add lr,pc,#4
21058  mov r0,r11
21059  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
21060
21061;@ Negx:
21062;@ Get X bit:
21063  ldr r2,[r7,#0x4c]
21064  mvn r2,r2 ;@ Invert it
21065  tst r2,r2,lsl #3 ;@ Get into Carry
21066
21067  mov r0,r0,asl #16
21068  rscs r1,r0,#0 ;@ do arithmetic
21069  orr r3,r10,#0xb0000000 ;@ for old Z
21070  mrs r10,cpsr ;@ r10=flags
21071  eor r10,r10,#0x20000000 ;@ Invert carry
21072  str r10,[r7,#0x4c] ;@ Save X bit
21073  movs r1,r1,asr #16
21074  orreq r10,r10,#0x40000000 ;@ possily missed Z
21075  andeq r10,r10,r3 ;@ fix Z
21076
21077;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
21078  uxth r1,r1 ;@ zero extend
21079  add lr,pc,#4
21080  mov r0,r11
21081  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
21082
21083  ldrh r8,[r4],#2 ;@ Fetch next opcode
21084  subs r5,r5,#20 ;@ Subtract cycles
21085  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21086  b CycloneEnd
21087
21088;@ ---------- [4080] negx.l d0 uses Op4080 ----------
21089Op4080:
21090;@ EaCalc : Get register index into r11:
21091  and r11,r8,#0x000f
21092;@ EaRead : Read register[r11] into r0:
21093  ldr r0,[r7,r11,lsl #2]
21094
21095;@ Negx:
21096;@ Get X bit:
21097  ldr r2,[r7,#0x4c]
21098  mvn r2,r2 ;@ Invert it
21099  tst r2,r2,lsl #3 ;@ Get into Carry
21100
21101  rscs r1,r0,#0 ;@ do arithmetic
21102  orr r3,r10,#0xb0000000 ;@ for old Z
21103  mrs r10,cpsr ;@ r10=flags
21104  eor r10,r10,#0x20000000 ;@ Invert carry
21105  str r10,[r7,#0x4c] ;@ Save X bit
21106  andeq r10,r10,r3 ;@ fix Z
21107
21108;@ EaWrite: r1 into register[r11]:
21109  str r1,[r7,r11,lsl #2]
21110
21111  ldrh r8,[r4],#2 ;@ Fetch next opcode
21112  subs r5,r5,#6 ;@ Subtract cycles
21113  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21114  b CycloneEnd
21115
21116;@ ---------- [4090] negx.l (a0) uses Op4090 ----------
21117Op4090:
21118;@ EaCalc : Get '(a0)' into r11:
21119  and r2,r8,#0x000f
21120  orr r2,r2,#0x8 ;@ A0-7
21121  ldr r11,[r7,r2,lsl #2]
21122;@ EaRead : Read '(a0)' (address in r11) into r0:
21123  add lr,pc,#4
21124  mov r0,r11
21125  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
21126
21127;@ Negx:
21128;@ Get X bit:
21129  ldr r2,[r7,#0x4c]
21130  mvn r2,r2 ;@ Invert it
21131  tst r2,r2,lsl #3 ;@ Get into Carry
21132
21133  rscs r1,r0,#0 ;@ do arithmetic
21134  orr r3,r10,#0xb0000000 ;@ for old Z
21135  mrs r10,cpsr ;@ r10=flags
21136  eor r10,r10,#0x20000000 ;@ Invert carry
21137  str r10,[r7,#0x4c] ;@ Save X bit
21138  andeq r10,r10,r3 ;@ fix Z
21139
21140;@ EaWrite: Write r1 into '(a0)' (address in r11):
21141  add lr,pc,#4
21142  mov r0,r11
21143  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
21144
21145  ldrh r8,[r4],#2 ;@ Fetch next opcode
21146  subs r5,r5,#20 ;@ Subtract cycles
21147  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21148  b CycloneEnd
21149
21150;@ ---------- [4098] negx.l (a0)+ uses Op4098 ----------
21151Op4098:
21152;@ EaCalc : Get '(a0)+' into r11:
21153  and r2,r8,#0x000f
21154  ldr r11,[r7,r2,lsl #2]
21155  add r3,r11,#4 ;@ Post-increment An
21156  str r3,[r7,r2,lsl #2]
21157;@ EaRead : Read '(a0)+' (address in r11) into r0:
21158  add lr,pc,#4
21159  mov r0,r11
21160  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
21161
21162;@ Negx:
21163;@ Get X bit:
21164  ldr r2,[r7,#0x4c]
21165  mvn r2,r2 ;@ Invert it
21166  tst r2,r2,lsl #3 ;@ Get into Carry
21167
21168  rscs r1,r0,#0 ;@ do arithmetic
21169  orr r3,r10,#0xb0000000 ;@ for old Z
21170  mrs r10,cpsr ;@ r10=flags
21171  eor r10,r10,#0x20000000 ;@ Invert carry
21172  str r10,[r7,#0x4c] ;@ Save X bit
21173  andeq r10,r10,r3 ;@ fix Z
21174
21175;@ EaWrite: Write r1 into '(a0)+' (address in r11):
21176  add lr,pc,#4
21177  mov r0,r11
21178  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
21179
21180  ldrh r8,[r4],#2 ;@ Fetch next opcode
21181  subs r5,r5,#20 ;@ Subtract cycles
21182  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21183  b CycloneEnd
21184
21185;@ ---------- [40a0] negx.l -(a0) uses Op40a0 ----------
21186Op40a0:
21187;@ EaCalc : Get '-(a0)' into r11:
21188  and r2,r8,#0x000f
21189  orr r2,r2,#0x8 ;@ A0-7
21190  ldr r11,[r7,r2,lsl #2]
21191  sub r11,r11,#4 ;@ Pre-decrement An
21192  str r11,[r7,r2,lsl #2]
21193;@ EaRead : Read '-(a0)' (address in r11) into r0:
21194  add lr,pc,#4
21195  mov r0,r11
21196  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
21197
21198;@ Negx:
21199;@ Get X bit:
21200  ldr r2,[r7,#0x4c]
21201  mvn r2,r2 ;@ Invert it
21202  tst r2,r2,lsl #3 ;@ Get into Carry
21203
21204  rscs r1,r0,#0 ;@ do arithmetic
21205  orr r3,r10,#0xb0000000 ;@ for old Z
21206  mrs r10,cpsr ;@ r10=flags
21207  eor r10,r10,#0x20000000 ;@ Invert carry
21208  str r10,[r7,#0x4c] ;@ Save X bit
21209  andeq r10,r10,r3 ;@ fix Z
21210
21211;@ EaWrite: Write r1 into '-(a0)' (address in r11):
21212  add lr,pc,#4
21213  mov r0,r11
21214  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
21215
21216  ldrh r8,[r4],#2 ;@ Fetch next opcode
21217  subs r5,r5,#22 ;@ Subtract cycles
21218  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21219  b CycloneEnd
21220
21221;@ ---------- [40a8] negx.l ($3333,a0) uses Op40a8 ----------
21222Op40a8:
21223;@ EaCalc : Get '($3333,a0)' into r11:
21224  ldrsh r0,[r4],#2 ;@ Fetch offset
21225  and r2,r8,#0x000f
21226  ldr r2,[r7,r2,lsl #2]
21227  add r11,r0,r2 ;@ Add on offset
21228;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
21229  add lr,pc,#4
21230  mov r0,r11
21231  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
21232
21233;@ Negx:
21234;@ Get X bit:
21235  ldr r2,[r7,#0x4c]
21236  mvn r2,r2 ;@ Invert it
21237  tst r2,r2,lsl #3 ;@ Get into Carry
21238
21239  rscs r1,r0,#0 ;@ do arithmetic
21240  orr r3,r10,#0xb0000000 ;@ for old Z
21241  mrs r10,cpsr ;@ r10=flags
21242  eor r10,r10,#0x20000000 ;@ Invert carry
21243  str r10,[r7,#0x4c] ;@ Save X bit
21244  andeq r10,r10,r3 ;@ fix Z
21245
21246;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
21247  add lr,pc,#4
21248  mov r0,r11
21249  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
21250
21251  ldrh r8,[r4],#2 ;@ Fetch next opcode
21252  subs r5,r5,#24 ;@ Subtract cycles
21253  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21254  b CycloneEnd
21255
21256;@ ---------- [40b0] negx.l ($33,a0,d3.w*2) uses Op40b0 ----------
21257Op40b0:
21258;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
21259;@ Get extension word into r3:
21260  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21261  mov r2,r3,lsr #10
21262  tst r3,#0x0800 ;@ Is Rn Word or Long
21263  and r2,r2,#0x3c ;@ r2=Index of Rn
21264  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21265  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21266  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21267  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21268  and r2,r8,#0x000f
21269  orr r2,r2,#0x8 ;@ A0-7
21270  ldr r2,[r7,r2,lsl #2]
21271  add r11,r2,r3 ;@ r11=Disp+An+Rn
21272;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
21273  add lr,pc,#4
21274  mov r0,r11
21275  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
21276
21277;@ Negx:
21278;@ Get X bit:
21279  ldr r2,[r7,#0x4c]
21280  mvn r2,r2 ;@ Invert it
21281  tst r2,r2,lsl #3 ;@ Get into Carry
21282
21283  rscs r1,r0,#0 ;@ do arithmetic
21284  orr r3,r10,#0xb0000000 ;@ for old Z
21285  mrs r10,cpsr ;@ r10=flags
21286  eor r10,r10,#0x20000000 ;@ Invert carry
21287  str r10,[r7,#0x4c] ;@ Save X bit
21288  andeq r10,r10,r3 ;@ fix Z
21289
21290;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
21291  add lr,pc,#4
21292  mov r0,r11
21293  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
21294
21295  ldrh r8,[r4],#2 ;@ Fetch next opcode
21296  subs r5,r5,#26 ;@ Subtract cycles
21297  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21298  b CycloneEnd
21299
21300;@ ---------- [40b8] negx.l $3333.w uses Op40b8 ----------
21301Op40b8:
21302;@ EaCalc : Get '$3333.w' into r11:
21303  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
21304;@ EaRead : Read '$3333.w' (address in r11) into r0:
21305  add lr,pc,#4
21306  mov r0,r11
21307  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
21308
21309;@ Negx:
21310;@ Get X bit:
21311  ldr r2,[r7,#0x4c]
21312  mvn r2,r2 ;@ Invert it
21313  tst r2,r2,lsl #3 ;@ Get into Carry
21314
21315  rscs r1,r0,#0 ;@ do arithmetic
21316  orr r3,r10,#0xb0000000 ;@ for old Z
21317  mrs r10,cpsr ;@ r10=flags
21318  eor r10,r10,#0x20000000 ;@ Invert carry
21319  str r10,[r7,#0x4c] ;@ Save X bit
21320  andeq r10,r10,r3 ;@ fix Z
21321
21322;@ EaWrite: Write r1 into '$3333.w' (address in r11):
21323  add lr,pc,#4
21324  mov r0,r11
21325  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
21326
21327  ldrh r8,[r4],#2 ;@ Fetch next opcode
21328  subs r5,r5,#24 ;@ Subtract cycles
21329  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21330  b CycloneEnd
21331
21332;@ ---------- [40b9] negx.l $33333333.l uses Op40b9 ----------
21333Op40b9:
21334;@ EaCalc : Get '$33333333.l' into r11:
21335  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
21336  ldrh r0,[r4],#2
21337  orr r11,r0,r2,lsl #16
21338;@ EaRead : Read '$33333333.l' (address in r11) into r0:
21339  add lr,pc,#4
21340  mov r0,r11
21341  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
21342
21343;@ Negx:
21344;@ Get X bit:
21345  ldr r2,[r7,#0x4c]
21346  mvn r2,r2 ;@ Invert it
21347  tst r2,r2,lsl #3 ;@ Get into Carry
21348
21349  rscs r1,r0,#0 ;@ do arithmetic
21350  orr r3,r10,#0xb0000000 ;@ for old Z
21351  mrs r10,cpsr ;@ r10=flags
21352  eor r10,r10,#0x20000000 ;@ Invert carry
21353  str r10,[r7,#0x4c] ;@ Save X bit
21354  andeq r10,r10,r3 ;@ fix Z
21355
21356;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
21357  add lr,pc,#4
21358  mov r0,r11
21359  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
21360
21361  ldrh r8,[r4],#2 ;@ Fetch next opcode
21362  subs r5,r5,#28 ;@ Subtract cycles
21363  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21364  b CycloneEnd
21365
21366;@ ---------- [40c0] move sr, d0 uses Op40c0 ----------
21367Op40c0:
21368  ldr r0,[r7,#0x4c]   ;@ X bit
21369  mov r1,r10,lsr #28  ;@ ____NZCV
21370  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
21371  tst r2,#1           ;@ 1 if C!=V
21372  eorne r1,r1,#3      ;@ ____NZVC
21373
21374  ldrb r2,[r7,#0x44]  ;@ Include SR high
21375  and r0,r0,#0x20000000
21376  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
21377  orr r1,r1,r2,lsl #8
21378
21379;@ EaCalc : Get register index into r0:
21380  and r0,r8,#0x000f
21381  mov r0,r0,lsl #2
21382;@ EaWrite: r1 into register[r0]:
21383  strh r1,[r7,r0]
21384
21385  ldrh r8,[r4],#2 ;@ Fetch next opcode
21386  subs r5,r5,#6 ;@ Subtract cycles
21387  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21388  b CycloneEnd
21389
21390;@ ---------- [40d0] move sr, (a0) uses Op40d0 ----------
21391Op40d0:
21392  ldr r0,[r7,#0x4c]   ;@ X bit
21393  mov r1,r10,lsr #28  ;@ ____NZCV
21394  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
21395  tst r2,#1           ;@ 1 if C!=V
21396  eorne r1,r1,#3      ;@ ____NZVC
21397
21398  ldrb r2,[r7,#0x44]  ;@ Include SR high
21399  and r0,r0,#0x20000000
21400  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
21401  orr r1,r1,r2,lsl #8
21402
21403;@ EaCalc : Get '(a0)' into r0:
21404  and r2,r8,#0x000f
21405  orr r2,r2,#0x8 ;@ A0-7
21406  ldr r0,[r7,r2,lsl #2]
21407;@ EaWrite: Write r1 into '(a0)' (address in r0):
21408  uxth r1,r1 ;@ zero extend
21409  mov lr,pc
21410  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
21411
21412  ldrh r8,[r4],#2 ;@ Fetch next opcode
21413  subs r5,r5,#12 ;@ Subtract cycles
21414  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21415  b CycloneEnd
21416
21417;@ ---------- [40d8] move sr, (a0)+ uses Op40d8 ----------
21418Op40d8:
21419  ldr r0,[r7,#0x4c]   ;@ X bit
21420  mov r1,r10,lsr #28  ;@ ____NZCV
21421  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
21422  tst r2,#1           ;@ 1 if C!=V
21423  eorne r1,r1,#3      ;@ ____NZVC
21424
21425  ldrb r2,[r7,#0x44]  ;@ Include SR high
21426  and r0,r0,#0x20000000
21427  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
21428  orr r1,r1,r2,lsl #8
21429
21430;@ EaCalc : Get '(a0)+' into r0:
21431  and r2,r8,#0x000f
21432  ldr r0,[r7,r2,lsl #2]
21433  add r3,r0,#2 ;@ Post-increment An
21434  str r3,[r7,r2,lsl #2]
21435;@ EaWrite: Write r1 into '(a0)+' (address in r0):
21436  uxth r1,r1 ;@ zero extend
21437  mov lr,pc
21438  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
21439
21440  ldrh r8,[r4],#2 ;@ Fetch next opcode
21441  subs r5,r5,#12 ;@ Subtract cycles
21442  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21443  b CycloneEnd
21444
21445;@ ---------- [40e0] move sr, -(a0) uses Op40e0 ----------
21446Op40e0:
21447  ldr r0,[r7,#0x4c]   ;@ X bit
21448  mov r1,r10,lsr #28  ;@ ____NZCV
21449  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
21450  tst r2,#1           ;@ 1 if C!=V
21451  eorne r1,r1,#3      ;@ ____NZVC
21452
21453  ldrb r2,[r7,#0x44]  ;@ Include SR high
21454  and r0,r0,#0x20000000
21455  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
21456  orr r1,r1,r2,lsl #8
21457
21458;@ EaCalc : Get '-(a0)' into r0:
21459  and r2,r8,#0x000f
21460  orr r2,r2,#0x8 ;@ A0-7
21461  ldr r0,[r7,r2,lsl #2]
21462  sub r0,r0,#2 ;@ Pre-decrement An
21463  str r0,[r7,r2,lsl #2]
21464;@ EaWrite: Write r1 into '-(a0)' (address in r0):
21465  uxth r1,r1 ;@ zero extend
21466  mov lr,pc
21467  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
21468
21469  ldrh r8,[r4],#2 ;@ Fetch next opcode
21470  subs r5,r5,#14 ;@ Subtract cycles
21471  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21472  b CycloneEnd
21473
21474;@ ---------- [40e8] move sr, ($3333,a0) uses Op40e8 ----------
21475Op40e8:
21476  ldr r0,[r7,#0x4c]   ;@ X bit
21477  mov r1,r10,lsr #28  ;@ ____NZCV
21478  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
21479  tst r2,#1           ;@ 1 if C!=V
21480  eorne r1,r1,#3      ;@ ____NZVC
21481
21482  ldrb r2,[r7,#0x44]  ;@ Include SR high
21483  and r0,r0,#0x20000000
21484  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
21485  orr r1,r1,r2,lsl #8
21486
21487;@ EaCalc : Get '($3333,a0)' into r0:
21488  ldrsh r0,[r4],#2 ;@ Fetch offset
21489  and r2,r8,#0x000f
21490  ldr r2,[r7,r2,lsl #2]
21491  add r0,r0,r2 ;@ Add on offset
21492;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
21493  uxth r1,r1 ;@ zero extend
21494  mov lr,pc
21495  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
21496
21497  ldrh r8,[r4],#2 ;@ Fetch next opcode
21498  subs r5,r5,#16 ;@ Subtract cycles
21499  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21500  b CycloneEnd
21501
21502;@ ---------- [40f0] move sr, ($33,a0,d3.w*2) uses Op40f0 ----------
21503Op40f0:
21504  ldr r0,[r7,#0x4c]   ;@ X bit
21505  mov r1,r10,lsr #28  ;@ ____NZCV
21506  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
21507  tst r2,#1           ;@ 1 if C!=V
21508  eorne r1,r1,#3      ;@ ____NZVC
21509
21510  ldrb r2,[r7,#0x44]  ;@ Include SR high
21511  and r0,r0,#0x20000000
21512  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
21513  orr r1,r1,r2,lsl #8
21514
21515;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21516;@ Get extension word into r3:
21517  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21518  mov r2,r3,lsr #10
21519  tst r3,#0x0800 ;@ Is Rn Word or Long
21520  and r2,r2,#0x3c ;@ r2=Index of Rn
21521  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21522  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21523  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21524  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21525  and r2,r8,#0x000f
21526  orr r2,r2,#0x8 ;@ A0-7
21527  ldr r2,[r7,r2,lsl #2]
21528  add r0,r2,r3 ;@ r0=Disp+An+Rn
21529;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
21530  uxth r1,r1 ;@ zero extend
21531  mov lr,pc
21532  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
21533
21534  ldrh r8,[r4],#2 ;@ Fetch next opcode
21535  subs r5,r5,#18 ;@ Subtract cycles
21536  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21537  b CycloneEnd
21538
21539;@ ---------- [40f8] move sr, $3333.w uses Op40f8 ----------
21540Op40f8:
21541  ldr r0,[r7,#0x4c]   ;@ X bit
21542  mov r1,r10,lsr #28  ;@ ____NZCV
21543  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
21544  tst r2,#1           ;@ 1 if C!=V
21545  eorne r1,r1,#3      ;@ ____NZVC
21546
21547  ldrb r2,[r7,#0x44]  ;@ Include SR high
21548  and r0,r0,#0x20000000
21549  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
21550  orr r1,r1,r2,lsl #8
21551
21552;@ EaCalc : Get '$3333.w' into r0:
21553  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
21554;@ EaWrite: Write r1 into '$3333.w' (address in r0):
21555  uxth r1,r1 ;@ zero extend
21556  mov lr,pc
21557  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
21558
21559  ldrh r8,[r4],#2 ;@ Fetch next opcode
21560  subs r5,r5,#16 ;@ Subtract cycles
21561  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21562  b CycloneEnd
21563
21564;@ ---------- [40f9] move sr, $33333333.l uses Op40f9 ----------
21565Op40f9:
21566  ldr r0,[r7,#0x4c]   ;@ X bit
21567  mov r1,r10,lsr #28  ;@ ____NZCV
21568  eor r2,r1,r1,ror #1 ;@ Bit 0=C^V
21569  tst r2,#1           ;@ 1 if C!=V
21570  eorne r1,r1,#3      ;@ ____NZVC
21571
21572  ldrb r2,[r7,#0x44]  ;@ Include SR high
21573  and r0,r0,#0x20000000
21574  orr r1,r1,r0,lsr #25 ;@ ___XNZVC
21575  orr r1,r1,r2,lsl #8
21576
21577;@ EaCalc : Get '$33333333.l' into r0:
21578  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
21579  ldrh r0,[r4],#2
21580  orr r0,r0,r2,lsl #16
21581;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
21582  uxth r1,r1 ;@ zero extend
21583  mov lr,pc
21584  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
21585
21586  ldrh r8,[r4],#2 ;@ Fetch next opcode
21587  subs r5,r5,#20 ;@ Subtract cycles
21588  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21589  b CycloneEnd
21590
21591;@ ---------- [4180] chk d0, a0 uses Op4180 ----------
21592Op4180:
21593;@ Get value into r0:
21594;@ EaCalc : Get register index into r0:
21595  and r0,r8,#0x000f
21596;@ EaRead : Read register[r0] into r0:
21597  ldr r0,[r7,r0,lsl #2]
21598
21599;@ Get register operand into r1:
21600;@ EaCalc : Get register index into r1:
21601  and r1,r8,#0x0e00
21602;@ EaRead : Read register[r1] into r1:
21603  ldr r1,[r7,r1,lsr #7]
21604
21605  mov r0,r0,asl #16
21606  movs r1,r1,asl #16
21607
21608;@ get flags, including undocumented ones
21609  and r3,r10,#0x80000000
21610  and r10,r1,#0x80000000 ;@ r10=N_flag
21611  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21612;@ is reg negative?
21613  bmi chktrap4180
21614;@ Do arithmetic:
21615  cmp r1,r0
21616  bgt chktrap4180
21617;@ old N remains
21618  orr r10,r10,r3
21619  ldrh r8,[r4],#2 ;@ Fetch next opcode
21620  subs r5,r5,#10 ;@ Subtract cycles
21621  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21622  b CycloneEnd
21623
21624chktrap4180: ;@ CHK exception:
21625  mov r0,#6
21626  bl Exception
21627  ldrh r8,[r4],#2 ;@ Fetch next opcode
21628  subs r5,r5,#50 ;@ Subtract cycles
21629  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21630  b CycloneEnd
21631
21632;@ ---------- [4190] chk (a0), a0 uses Op4190 ----------
21633Op4190:
21634;@ Get value into r0:
21635;@ EaCalc : Get '(a0)' into r0:
21636  and r2,r8,#0x000f
21637  orr r2,r2,#0x8 ;@ A0-7
21638  ldr r0,[r7,r2,lsl #2]
21639;@ EaRead : Read '(a0)' (address in r0) into r0:
21640  mov lr,pc
21641  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
21642
21643;@ Get register operand into r1:
21644;@ EaCalc : Get register index into r1:
21645  and r1,r8,#0x0e00
21646;@ EaRead : Read register[r1] into r1:
21647  ldr r1,[r7,r1,lsr #7]
21648
21649  mov r0,r0,asl #16
21650  movs r1,r1,asl #16
21651
21652;@ get flags, including undocumented ones
21653  and r3,r10,#0x80000000
21654  and r10,r1,#0x80000000 ;@ r10=N_flag
21655  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21656;@ is reg negative?
21657  bmi chktrap4190
21658;@ Do arithmetic:
21659  cmp r1,r0
21660  bgt chktrap4190
21661;@ old N remains
21662  orr r10,r10,r3
21663  ldrh r8,[r4],#2 ;@ Fetch next opcode
21664  subs r5,r5,#14 ;@ Subtract cycles
21665  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21666  b CycloneEnd
21667
21668chktrap4190: ;@ CHK exception:
21669  mov r0,#6
21670  bl Exception
21671  ldrh r8,[r4],#2 ;@ Fetch next opcode
21672  subs r5,r5,#54 ;@ Subtract cycles
21673  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21674  b CycloneEnd
21675
21676;@ ---------- [4198] chk (a0)+, a0 uses Op4198 ----------
21677Op4198:
21678;@ Get value into r0:
21679;@ EaCalc : Get '(a0)+' into r0:
21680  and r2,r8,#0x000f
21681  ldr r0,[r7,r2,lsl #2]
21682  add r3,r0,#2 ;@ Post-increment An
21683  str r3,[r7,r2,lsl #2]
21684;@ EaRead : Read '(a0)+' (address in r0) into r0:
21685  mov lr,pc
21686  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
21687
21688;@ Get register operand into r1:
21689;@ EaCalc : Get register index into r1:
21690  and r1,r8,#0x0e00
21691;@ EaRead : Read register[r1] into r1:
21692  ldr r1,[r7,r1,lsr #7]
21693
21694  mov r0,r0,asl #16
21695  movs r1,r1,asl #16
21696
21697;@ get flags, including undocumented ones
21698  and r3,r10,#0x80000000
21699  and r10,r1,#0x80000000 ;@ r10=N_flag
21700  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21701;@ is reg negative?
21702  bmi chktrap4198
21703;@ Do arithmetic:
21704  cmp r1,r0
21705  bgt chktrap4198
21706;@ old N remains
21707  orr r10,r10,r3
21708  ldrh r8,[r4],#2 ;@ Fetch next opcode
21709  subs r5,r5,#14 ;@ Subtract cycles
21710  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21711  b CycloneEnd
21712
21713chktrap4198: ;@ CHK exception:
21714  mov r0,#6
21715  bl Exception
21716  ldrh r8,[r4],#2 ;@ Fetch next opcode
21717  subs r5,r5,#54 ;@ Subtract cycles
21718  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21719  b CycloneEnd
21720
21721;@ ---------- [41a0] chk -(a0), a0 uses Op41a0 ----------
21722Op41a0:
21723;@ Get value into r0:
21724;@ EaCalc : Get '-(a0)' into r0:
21725  and r2,r8,#0x000f
21726  orr r2,r2,#0x8 ;@ A0-7
21727  ldr r0,[r7,r2,lsl #2]
21728  sub r0,r0,#2 ;@ Pre-decrement An
21729  str r0,[r7,r2,lsl #2]
21730;@ EaRead : Read '-(a0)' (address in r0) into r0:
21731  mov lr,pc
21732  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
21733
21734;@ Get register operand into r1:
21735;@ EaCalc : Get register index into r1:
21736  and r1,r8,#0x0e00
21737;@ EaRead : Read register[r1] into r1:
21738  ldr r1,[r7,r1,lsr #7]
21739
21740  mov r0,r0,asl #16
21741  movs r1,r1,asl #16
21742
21743;@ get flags, including undocumented ones
21744  and r3,r10,#0x80000000
21745  and r10,r1,#0x80000000 ;@ r10=N_flag
21746  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21747;@ is reg negative?
21748  bmi chktrap41a0
21749;@ Do arithmetic:
21750  cmp r1,r0
21751  bgt chktrap41a0
21752;@ old N remains
21753  orr r10,r10,r3
21754  ldrh r8,[r4],#2 ;@ Fetch next opcode
21755  subs r5,r5,#16 ;@ Subtract cycles
21756  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21757  b CycloneEnd
21758
21759chktrap41a0: ;@ CHK exception:
21760  mov r0,#6
21761  bl Exception
21762  ldrh r8,[r4],#2 ;@ Fetch next opcode
21763  subs r5,r5,#56 ;@ Subtract cycles
21764  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21765  b CycloneEnd
21766
21767;@ ---------- [41a8] chk ($3333,a0), a0 uses Op41a8 ----------
21768Op41a8:
21769;@ Get value into r0:
21770;@ EaCalc : Get '($3333,a0)' into r0:
21771  ldrsh r0,[r4],#2 ;@ Fetch offset
21772  and r2,r8,#0x000f
21773  ldr r2,[r7,r2,lsl #2]
21774  add r0,r0,r2 ;@ Add on offset
21775;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
21776  mov lr,pc
21777  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
21778
21779;@ Get register operand into r1:
21780;@ EaCalc : Get register index into r1:
21781  and r1,r8,#0x0e00
21782;@ EaRead : Read register[r1] into r1:
21783  ldr r1,[r7,r1,lsr #7]
21784
21785  mov r0,r0,asl #16
21786  movs r1,r1,asl #16
21787
21788;@ get flags, including undocumented ones
21789  and r3,r10,#0x80000000
21790  and r10,r1,#0x80000000 ;@ r10=N_flag
21791  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21792;@ is reg negative?
21793  bmi chktrap41a8
21794;@ Do arithmetic:
21795  cmp r1,r0
21796  bgt chktrap41a8
21797;@ old N remains
21798  orr r10,r10,r3
21799  ldrh r8,[r4],#2 ;@ Fetch next opcode
21800  subs r5,r5,#18 ;@ Subtract cycles
21801  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21802  b CycloneEnd
21803
21804chktrap41a8: ;@ CHK exception:
21805  mov r0,#6
21806  bl Exception
21807  ldrh r8,[r4],#2 ;@ Fetch next opcode
21808  subs r5,r5,#58 ;@ Subtract cycles
21809  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21810  b CycloneEnd
21811
21812;@ ---------- [41b0] chk ($33,a0,d3.w*2), a0 uses Op41b0 ----------
21813Op41b0:
21814;@ Get value into r0:
21815;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
21816;@ Get extension word into r3:
21817  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
21818  mov r2,r3,lsr #10
21819  tst r3,#0x0800 ;@ Is Rn Word or Long
21820  and r2,r2,#0x3c ;@ r2=Index of Rn
21821  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
21822  ldrne   r2,[r7,r2] ;@ r2=Rn.l
21823  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
21824  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
21825  and r2,r8,#0x000f
21826  orr r2,r2,#0x8 ;@ A0-7
21827  ldr r2,[r7,r2,lsl #2]
21828  add r0,r2,r3 ;@ r0=Disp+An+Rn
21829;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
21830  mov lr,pc
21831  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
21832
21833;@ Get register operand into r1:
21834;@ EaCalc : Get register index into r1:
21835  and r1,r8,#0x0e00
21836;@ EaRead : Read register[r1] into r1:
21837  ldr r1,[r7,r1,lsr #7]
21838
21839  mov r0,r0,asl #16
21840  movs r1,r1,asl #16
21841
21842;@ get flags, including undocumented ones
21843  and r3,r10,#0x80000000
21844  and r10,r1,#0x80000000 ;@ r10=N_flag
21845  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21846;@ is reg negative?
21847  bmi chktrap41b0
21848;@ Do arithmetic:
21849  cmp r1,r0
21850  bgt chktrap41b0
21851;@ old N remains
21852  orr r10,r10,r3
21853  ldrh r8,[r4],#2 ;@ Fetch next opcode
21854  subs r5,r5,#20 ;@ Subtract cycles
21855  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21856  b CycloneEnd
21857
21858chktrap41b0: ;@ CHK exception:
21859  mov r0,#6
21860  bl Exception
21861  ldrh r8,[r4],#2 ;@ Fetch next opcode
21862  subs r5,r5,#60 ;@ Subtract cycles
21863  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21864  b CycloneEnd
21865
21866;@ ---------- [41b8] chk $3333.w, a0 uses Op41b8 ----------
21867Op41b8:
21868;@ Get value into r0:
21869;@ EaCalc : Get '$3333.w' into r0:
21870  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
21871;@ EaRead : Read '$3333.w' (address in r0) into r0:
21872  mov lr,pc
21873  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
21874
21875;@ Get register operand into r1:
21876;@ EaCalc : Get register index into r1:
21877  and r1,r8,#0x0e00
21878;@ EaRead : Read register[r1] into r1:
21879  ldr r1,[r7,r1,lsr #7]
21880
21881  mov r0,r0,asl #16
21882  movs r1,r1,asl #16
21883
21884;@ get flags, including undocumented ones
21885  and r3,r10,#0x80000000
21886  and r10,r1,#0x80000000 ;@ r10=N_flag
21887  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21888;@ is reg negative?
21889  bmi chktrap41b8
21890;@ Do arithmetic:
21891  cmp r1,r0
21892  bgt chktrap41b8
21893;@ old N remains
21894  orr r10,r10,r3
21895  ldrh r8,[r4],#2 ;@ Fetch next opcode
21896  subs r5,r5,#18 ;@ Subtract cycles
21897  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21898  b CycloneEnd
21899
21900chktrap41b8: ;@ CHK exception:
21901  mov r0,#6
21902  bl Exception
21903  ldrh r8,[r4],#2 ;@ Fetch next opcode
21904  subs r5,r5,#58 ;@ Subtract cycles
21905  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21906  b CycloneEnd
21907
21908;@ ---------- [41b9] chk $33333333.l, a0 uses Op41b9 ----------
21909Op41b9:
21910;@ Get value into r0:
21911;@ EaCalc : Get '$33333333.l' into r0:
21912  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
21913  ldrh r0,[r4],#2
21914  orr r0,r0,r2,lsl #16
21915;@ EaRead : Read '$33333333.l' (address in r0) into r0:
21916  mov lr,pc
21917  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
21918
21919;@ Get register operand into r1:
21920;@ EaCalc : Get register index into r1:
21921  and r1,r8,#0x0e00
21922;@ EaRead : Read register[r1] into r1:
21923  ldr r1,[r7,r1,lsr #7]
21924
21925  mov r0,r0,asl #16
21926  movs r1,r1,asl #16
21927
21928;@ get flags, including undocumented ones
21929  and r3,r10,#0x80000000
21930  and r10,r1,#0x80000000 ;@ r10=N_flag
21931  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21932;@ is reg negative?
21933  bmi chktrap41b9
21934;@ Do arithmetic:
21935  cmp r1,r0
21936  bgt chktrap41b9
21937;@ old N remains
21938  orr r10,r10,r3
21939  ldrh r8,[r4],#2 ;@ Fetch next opcode
21940  subs r5,r5,#22 ;@ Subtract cycles
21941  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21942  b CycloneEnd
21943
21944chktrap41b9: ;@ CHK exception:
21945  mov r0,#6
21946  bl Exception
21947  ldrh r8,[r4],#2 ;@ Fetch next opcode
21948  subs r5,r5,#62 ;@ Subtract cycles
21949  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21950  b CycloneEnd
21951
21952;@ ---------- [41ba] chk ($3333,pc), a0; =3335 uses Op41ba ----------
21953Op41ba:
21954;@ Get value into r0:
21955;@ EaCalc : Get '($3333,pc)' into r0:
21956  ldr r0,[r7,#0x60] ;@ Get Memory base
21957  sub r0,r4,r0 ;@ Real PC
21958  ldrsh r2,[r4],#2 ;@ Fetch extension
21959  add r0,r2,r0 ;@ ($nn,PC)
21960;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
21961  mov lr,pc
21962  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
21963
21964;@ Get register operand into r1:
21965;@ EaCalc : Get register index into r1:
21966  and r1,r8,#0x0e00
21967;@ EaRead : Read register[r1] into r1:
21968  ldr r1,[r7,r1,lsr #7]
21969
21970  mov r0,r0,asl #16
21971  movs r1,r1,asl #16
21972
21973;@ get flags, including undocumented ones
21974  and r3,r10,#0x80000000
21975  and r10,r1,#0x80000000 ;@ r10=N_flag
21976  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
21977;@ is reg negative?
21978  bmi chktrap41ba
21979;@ Do arithmetic:
21980  cmp r1,r0
21981  bgt chktrap41ba
21982;@ old N remains
21983  orr r10,r10,r3
21984  ldrh r8,[r4],#2 ;@ Fetch next opcode
21985  subs r5,r5,#18 ;@ Subtract cycles
21986  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21987  b CycloneEnd
21988
21989chktrap41ba: ;@ CHK exception:
21990  mov r0,#6
21991  bl Exception
21992  ldrh r8,[r4],#2 ;@ Fetch next opcode
21993  subs r5,r5,#58 ;@ Subtract cycles
21994  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
21995  b CycloneEnd
21996
21997;@ ---------- [41bb] chk ($33,pc,d3.w*2), a0; =35 uses Op41bb ----------
21998Op41bb:
21999;@ Get value into r0:
22000;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
22001  ldr r0,[r7,#0x60] ;@ Get Memory base
22002  ldrh r3,[r4] ;@ Get extension word
22003  sub r0,r4,r0 ;@ r0=PC
22004  add r4,r4,#2
22005  mov r2,r3,lsr #10
22006  tst r3,#0x0800 ;@ Is Rn Word or Long
22007  and r2,r2,#0x3c ;@ r2=Index of Rn
22008  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22009  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22010  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
22011  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
22012  add r0,r2,r0 ;@ r0=Disp+PC+Rn
22013;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
22014  mov lr,pc
22015  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
22016
22017;@ Get register operand into r1:
22018;@ EaCalc : Get register index into r1:
22019  and r1,r8,#0x0e00
22020;@ EaRead : Read register[r1] into r1:
22021  ldr r1,[r7,r1,lsr #7]
22022
22023  mov r0,r0,asl #16
22024  movs r1,r1,asl #16
22025
22026;@ get flags, including undocumented ones
22027  and r3,r10,#0x80000000
22028  and r10,r1,#0x80000000 ;@ r10=N_flag
22029  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22030;@ is reg negative?
22031  bmi chktrap41bb
22032;@ Do arithmetic:
22033  cmp r1,r0
22034  bgt chktrap41bb
22035;@ old N remains
22036  orr r10,r10,r3
22037  ldrh r8,[r4],#2 ;@ Fetch next opcode
22038  subs r5,r5,#20 ;@ Subtract cycles
22039  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22040  b CycloneEnd
22041
22042chktrap41bb: ;@ CHK exception:
22043  mov r0,#6
22044  bl Exception
22045  ldrh r8,[r4],#2 ;@ Fetch next opcode
22046  subs r5,r5,#60 ;@ Subtract cycles
22047  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22048  b CycloneEnd
22049
22050;@ ---------- [41bc] chk #$33, a0 uses Op41bc ----------
22051Op41bc:
22052;@ Get value into r0:
22053;@ EaCalc : Get '#$3333' into r0:
22054  ldrsh r0,[r4],#2 ;@ Fetch immediate value
22055;@ EaRead : Read '#$3333' (address in r0) into r0:
22056
22057;@ Get register operand into r1:
22058;@ EaCalc : Get register index into r1:
22059  and r1,r8,#0x0e00
22060;@ EaRead : Read register[r1] into r1:
22061  ldr r1,[r7,r1,lsr #7]
22062
22063  mov r0,r0,asl #16
22064  movs r1,r1,asl #16
22065
22066;@ get flags, including undocumented ones
22067  and r3,r10,#0x80000000
22068  and r10,r1,#0x80000000 ;@ r10=N_flag
22069  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
22070;@ is reg negative?
22071  bmi chktrap41bc
22072;@ Do arithmetic:
22073  cmp r1,r0
22074  bgt chktrap41bc
22075;@ old N remains
22076  orr r10,r10,r3
22077  ldrh r8,[r4],#2 ;@ Fetch next opcode
22078  subs r5,r5,#14 ;@ Subtract cycles
22079  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22080  b CycloneEnd
22081
22082chktrap41bc: ;@ CHK exception:
22083  mov r0,#6
22084  bl Exception
22085  ldrh r8,[r4],#2 ;@ Fetch next opcode
22086  subs r5,r5,#54 ;@ Subtract cycles
22087  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22088  b CycloneEnd
22089
22090;@ ---------- [41d0] lea (a0), a0 uses Op41d0 ----------
22091Op41d0:
22092;@ EaCalc : Get '(a0)' into r1:
22093  and r2,r8,#0x000f
22094  orr r2,r2,#0x8 ;@ A0-7
22095  ldr r1,[r7,r2,lsl #2]
22096;@ EaCalc : Get register index into r0:
22097  and r0,r8,#0x0e00
22098  orr r0,r0,#0x1000 ;@ A0-7
22099;@ EaWrite: r1 into register[r0]:
22100  str r1,[r7,r0,lsr #7]
22101
22102  ldrh r8,[r4],#2 ;@ Fetch next opcode
22103  subs r5,r5,#4 ;@ Subtract cycles
22104  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22105  b CycloneEnd
22106
22107;@ ---------- [41e8] lea ($3333,a0), a0 uses Op41e8 ----------
22108Op41e8:
22109;@ EaCalc : Get '($3333,a0)' into r1:
22110  ldrsh r0,[r4],#2 ;@ Fetch offset
22111  and r2,r8,#0x000f
22112  ldr r2,[r7,r2,lsl #2]
22113  add r1,r0,r2 ;@ Add on offset
22114;@ EaCalc : Get register index into r0:
22115  and r0,r8,#0x0e00
22116  orr r0,r0,#0x1000 ;@ A0-7
22117;@ EaWrite: r1 into register[r0]:
22118  str r1,[r7,r0,lsr #7]
22119
22120  ldrh r8,[r4],#2 ;@ Fetch next opcode
22121  subs r5,r5,#8 ;@ Subtract cycles
22122  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22123  b CycloneEnd
22124
22125;@ ---------- [41f8] lea $3333.w, a0 uses Op41f8 ----------
22126Op41f8:
22127;@ EaCalc : Get '$3333.w' into r1:
22128  ldrsh r1,[r4],#2 ;@ Fetch Absolute Short address
22129;@ EaCalc : Get register index into r0:
22130  and r0,r8,#0x0e00
22131  orr r0,r0,#0x1000 ;@ A0-7
22132;@ EaWrite: r1 into register[r0]:
22133  str r1,[r7,r0,lsr #7]
22134
22135  ldrh r8,[r4],#2 ;@ Fetch next opcode
22136  subs r5,r5,#8 ;@ Subtract cycles
22137  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22138  b CycloneEnd
22139
22140;@ ---------- [41f9] lea $33333333.l, a0 uses Op41f9 ----------
22141Op41f9:
22142;@ EaCalc : Get '$33333333.l' into r1:
22143  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22144  ldrh r0,[r4],#2
22145  orr r1,r0,r2,lsl #16
22146;@ EaCalc : Get register index into r0:
22147  and r0,r8,#0x0e00
22148  orr r0,r0,#0x1000 ;@ A0-7
22149;@ EaWrite: r1 into register[r0]:
22150  str r1,[r7,r0,lsr #7]
22151
22152  ldrh r8,[r4],#2 ;@ Fetch next opcode
22153  subs r5,r5,#12 ;@ Subtract cycles
22154  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22155  b CycloneEnd
22156
22157;@ ---------- [41fa] lea ($3333,pc), a0; =3335 uses Op41fa ----------
22158Op41fa:
22159;@ EaCalc : Get '($3333,pc)' into r1:
22160  ldr r0,[r7,#0x60] ;@ Get Memory base
22161  sub r0,r4,r0 ;@ Real PC
22162  ldrsh r2,[r4],#2 ;@ Fetch extension
22163  add r1,r2,r0 ;@ ($nn,PC)
22164;@ EaCalc : Get register index into r0:
22165  and r0,r8,#0x0e00
22166  orr r0,r0,#0x1000 ;@ A0-7
22167;@ EaWrite: r1 into register[r0]:
22168  str r1,[r7,r0,lsr #7]
22169
22170  ldrh r8,[r4],#2 ;@ Fetch next opcode
22171  subs r5,r5,#8 ;@ Subtract cycles
22172  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22173  b CycloneEnd
22174
22175;@ ---------- [41fb] lea ($33,pc,d3.w*2), a0; =35 uses Op41fb ----------
22176Op41fb:
22177;@ EaCalc : Get '($33,pc,d3.w*2)' into r1:
22178  ldr r0,[r7,#0x60] ;@ Get Memory base
22179  ldrh r3,[r4] ;@ Get extension word
22180  sub r0,r4,r0 ;@ r0=PC
22181  add r4,r4,#2
22182  mov r2,r3,lsr #10
22183  tst r3,#0x0800 ;@ Is Rn Word or Long
22184  and r2,r2,#0x3c ;@ r2=Index of Rn
22185  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22186  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22187  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
22188  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
22189  add r1,r2,r0 ;@ r1=Disp+PC+Rn
22190;@ EaCalc : Get register index into r0:
22191  and r0,r8,#0x0e00
22192  orr r0,r0,#0x1000 ;@ A0-7
22193;@ EaWrite: r1 into register[r0]:
22194  str r1,[r7,r0,lsr #7]
22195
22196  ldrh r8,[r4],#2 ;@ Fetch next opcode
22197  subs r5,r5,#12 ;@ Subtract cycles
22198  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22199  b CycloneEnd
22200
22201;@ ---------- [4200] clr.b d0 uses Op4200 ----------
22202Op4200:
22203;@ EaCalc : Get register index into r11:
22204  and r11,r8,#0x000f
22205
22206;@ Clear:
22207  mov r1,#0
22208  mov r10,#0x40000000 ;@ NZCV=0100
22209
22210;@ EaWrite: r1 into register[r11]:
22211  strb r1,[r7,r11,lsl #2]
22212
22213  ldrh r8,[r4],#2 ;@ Fetch next opcode
22214  subs r5,r5,#4 ;@ Subtract cycles
22215  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22216  b CycloneEnd
22217
22218;@ ---------- [4210] clr.b (a0) uses Op4210 ----------
22219Op4210:
22220;@ EaCalc : Get '(a0)' into r11:
22221  and r2,r8,#0x000f
22222  orr r2,r2,#0x8 ;@ A0-7
22223  ldr r11,[r7,r2,lsl #2]
22224
22225;@ Clear:
22226  mov r1,#0
22227  mov r10,#0x40000000 ;@ NZCV=0100
22228
22229;@ EaWrite: Write r1 into '(a0)' (address in r11):
22230  and r1,r1,#0xff
22231  add lr,pc,#4
22232  mov r0,r11
22233  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22234
22235  ldrh r8,[r4],#2 ;@ Fetch next opcode
22236  subs r5,r5,#12 ;@ Subtract cycles
22237  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22238  b CycloneEnd
22239
22240;@ ---------- [4218] clr.b (a0)+ uses Op4218 ----------
22241Op4218:
22242;@ EaCalc : Get '(a0)+' into r11:
22243  and r2,r8,#0x000f
22244  ldr r11,[r7,r2,lsl #2]
22245  add r3,r11,#1 ;@ Post-increment An
22246  str r3,[r7,r2,lsl #2]
22247
22248;@ Clear:
22249  mov r1,#0
22250  mov r10,#0x40000000 ;@ NZCV=0100
22251
22252;@ EaWrite: Write r1 into '(a0)+' (address in r11):
22253  and r1,r1,#0xff
22254  add lr,pc,#4
22255  mov r0,r11
22256  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22257
22258  ldrh r8,[r4],#2 ;@ Fetch next opcode
22259  subs r5,r5,#12 ;@ Subtract cycles
22260  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22261  b CycloneEnd
22262
22263;@ ---------- [421f] clr.b (a7)+ uses Op421f ----------
22264Op421f:
22265;@ EaCalc : Get '(a7)+' into r11:
22266  ldr r11,[r7,#0x3c] ;@ A7
22267  add r3,r11,#2 ;@ Post-increment An
22268  str r3,[r7,#0x3c] ;@ A7
22269
22270;@ Clear:
22271  mov r1,#0
22272  mov r10,#0x40000000 ;@ NZCV=0100
22273
22274;@ EaWrite: Write r1 into '(a7)+' (address in r11):
22275  and r1,r1,#0xff
22276  add lr,pc,#4
22277  mov r0,r11
22278  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22279
22280  ldrh r8,[r4],#2 ;@ Fetch next opcode
22281  subs r5,r5,#12 ;@ Subtract cycles
22282  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22283  b CycloneEnd
22284
22285;@ ---------- [4220] clr.b -(a0) uses Op4220 ----------
22286Op4220:
22287;@ EaCalc : Get '-(a0)' into r11:
22288  and r2,r8,#0x000f
22289  orr r2,r2,#0x8 ;@ A0-7
22290  ldr r11,[r7,r2,lsl #2]
22291  sub r11,r11,#1 ;@ Pre-decrement An
22292  str r11,[r7,r2,lsl #2]
22293
22294;@ Clear:
22295  mov r1,#0
22296  mov r10,#0x40000000 ;@ NZCV=0100
22297
22298;@ EaWrite: Write r1 into '-(a0)' (address in r11):
22299  and r1,r1,#0xff
22300  add lr,pc,#4
22301  mov r0,r11
22302  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22303
22304  ldrh r8,[r4],#2 ;@ Fetch next opcode
22305  subs r5,r5,#14 ;@ Subtract cycles
22306  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22307  b CycloneEnd
22308
22309;@ ---------- [4227] clr.b -(a7) uses Op4227 ----------
22310Op4227:
22311;@ EaCalc : Get '-(a7)' into r11:
22312  ldr r11,[r7,#0x3c] ;@ A7
22313  sub r11,r11,#2 ;@ Pre-decrement An
22314  str r11,[r7,#0x3c] ;@ A7
22315
22316;@ Clear:
22317  mov r1,#0
22318  mov r10,#0x40000000 ;@ NZCV=0100
22319
22320;@ EaWrite: Write r1 into '-(a7)' (address in r11):
22321  and r1,r1,#0xff
22322  add lr,pc,#4
22323  mov r0,r11
22324  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22325
22326  ldrh r8,[r4],#2 ;@ Fetch next opcode
22327  subs r5,r5,#14 ;@ Subtract cycles
22328  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22329  b CycloneEnd
22330
22331;@ ---------- [4228] clr.b ($3333,a0) uses Op4228 ----------
22332Op4228:
22333;@ EaCalc : Get '($3333,a0)' into r11:
22334  ldrsh r0,[r4],#2 ;@ Fetch offset
22335  and r2,r8,#0x000f
22336  ldr r2,[r7,r2,lsl #2]
22337  add r11,r0,r2 ;@ Add on offset
22338
22339;@ Clear:
22340  mov r1,#0
22341  mov r10,#0x40000000 ;@ NZCV=0100
22342
22343;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
22344  and r1,r1,#0xff
22345  add lr,pc,#4
22346  mov r0,r11
22347  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22348
22349  ldrh r8,[r4],#2 ;@ Fetch next opcode
22350  subs r5,r5,#16 ;@ Subtract cycles
22351  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22352  b CycloneEnd
22353
22354;@ ---------- [4230] clr.b ($33,a0,d3.w*2) uses Op4230 ----------
22355Op4230:
22356;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
22357;@ Get extension word into r3:
22358  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
22359  mov r2,r3,lsr #10
22360  tst r3,#0x0800 ;@ Is Rn Word or Long
22361  and r2,r2,#0x3c ;@ r2=Index of Rn
22362  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22363  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22364  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
22365  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
22366  and r2,r8,#0x000f
22367  orr r2,r2,#0x8 ;@ A0-7
22368  ldr r2,[r7,r2,lsl #2]
22369  add r11,r2,r3 ;@ r11=Disp+An+Rn
22370
22371;@ Clear:
22372  mov r1,#0
22373  mov r10,#0x40000000 ;@ NZCV=0100
22374
22375;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
22376  and r1,r1,#0xff
22377  add lr,pc,#4
22378  mov r0,r11
22379  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22380
22381  ldrh r8,[r4],#2 ;@ Fetch next opcode
22382  subs r5,r5,#18 ;@ Subtract cycles
22383  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22384  b CycloneEnd
22385
22386;@ ---------- [4238] clr.b $3333.w uses Op4238 ----------
22387Op4238:
22388;@ EaCalc : Get '$3333.w' into r11:
22389  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
22390
22391;@ Clear:
22392  mov r1,#0
22393  mov r10,#0x40000000 ;@ NZCV=0100
22394
22395;@ EaWrite: Write r1 into '$3333.w' (address in r11):
22396  and r1,r1,#0xff
22397  add lr,pc,#4
22398  mov r0,r11
22399  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22400
22401  ldrh r8,[r4],#2 ;@ Fetch next opcode
22402  subs r5,r5,#16 ;@ Subtract cycles
22403  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22404  b CycloneEnd
22405
22406;@ ---------- [4239] clr.b $33333333.l uses Op4239 ----------
22407Op4239:
22408;@ EaCalc : Get '$33333333.l' into r11:
22409  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22410  ldrh r0,[r4],#2
22411  orr r11,r0,r2,lsl #16
22412
22413;@ Clear:
22414  mov r1,#0
22415  mov r10,#0x40000000 ;@ NZCV=0100
22416
22417;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
22418  and r1,r1,#0xff
22419  add lr,pc,#4
22420  mov r0,r11
22421  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22422
22423  ldrh r8,[r4],#2 ;@ Fetch next opcode
22424  subs r5,r5,#20 ;@ Subtract cycles
22425  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22426  b CycloneEnd
22427
22428;@ ---------- [4240] clr.w d0 uses Op4240 ----------
22429Op4240:
22430;@ EaCalc : Get register index into r11:
22431  and r11,r8,#0x000f
22432  mov r11,r11,lsl #2
22433
22434;@ Clear:
22435  mov r1,#0
22436  mov r10,#0x40000000 ;@ NZCV=0100
22437
22438;@ EaWrite: r1 into register[r11]:
22439  strh r1,[r7,r11]
22440
22441  ldrh r8,[r4],#2 ;@ Fetch next opcode
22442  subs r5,r5,#4 ;@ Subtract cycles
22443  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22444  b CycloneEnd
22445
22446;@ ---------- [4250] clr.w (a0) uses Op4250 ----------
22447Op4250:
22448;@ EaCalc : Get '(a0)' into r11:
22449  and r2,r8,#0x000f
22450  orr r2,r2,#0x8 ;@ A0-7
22451  ldr r11,[r7,r2,lsl #2]
22452
22453;@ Clear:
22454  mov r1,#0
22455  mov r10,#0x40000000 ;@ NZCV=0100
22456
22457;@ EaWrite: Write r1 into '(a0)' (address in r11):
22458  uxth r1,r1 ;@ zero extend
22459  add lr,pc,#4
22460  mov r0,r11
22461  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
22462
22463  ldrh r8,[r4],#2 ;@ Fetch next opcode
22464  subs r5,r5,#12 ;@ Subtract cycles
22465  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22466  b CycloneEnd
22467
22468;@ ---------- [4258] clr.w (a0)+ uses Op4258 ----------
22469Op4258:
22470;@ EaCalc : Get '(a0)+' into r11:
22471  and r2,r8,#0x000f
22472  ldr r11,[r7,r2,lsl #2]
22473  add r3,r11,#2 ;@ Post-increment An
22474  str r3,[r7,r2,lsl #2]
22475
22476;@ Clear:
22477  mov r1,#0
22478  mov r10,#0x40000000 ;@ NZCV=0100
22479
22480;@ EaWrite: Write r1 into '(a0)+' (address in r11):
22481  uxth r1,r1 ;@ zero extend
22482  add lr,pc,#4
22483  mov r0,r11
22484  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
22485
22486  ldrh r8,[r4],#2 ;@ Fetch next opcode
22487  subs r5,r5,#12 ;@ Subtract cycles
22488  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22489  b CycloneEnd
22490
22491;@ ---------- [4260] clr.w -(a0) uses Op4260 ----------
22492Op4260:
22493;@ EaCalc : Get '-(a0)' into r11:
22494  and r2,r8,#0x000f
22495  orr r2,r2,#0x8 ;@ A0-7
22496  ldr r11,[r7,r2,lsl #2]
22497  sub r11,r11,#2 ;@ Pre-decrement An
22498  str r11,[r7,r2,lsl #2]
22499
22500;@ Clear:
22501  mov r1,#0
22502  mov r10,#0x40000000 ;@ NZCV=0100
22503
22504;@ EaWrite: Write r1 into '-(a0)' (address in r11):
22505  uxth r1,r1 ;@ zero extend
22506  add lr,pc,#4
22507  mov r0,r11
22508  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
22509
22510  ldrh r8,[r4],#2 ;@ Fetch next opcode
22511  subs r5,r5,#14 ;@ Subtract cycles
22512  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22513  b CycloneEnd
22514
22515;@ ---------- [4268] clr.w ($3333,a0) uses Op4268 ----------
22516Op4268:
22517;@ EaCalc : Get '($3333,a0)' into r11:
22518  ldrsh r0,[r4],#2 ;@ Fetch offset
22519  and r2,r8,#0x000f
22520  ldr r2,[r7,r2,lsl #2]
22521  add r11,r0,r2 ;@ Add on offset
22522
22523;@ Clear:
22524  mov r1,#0
22525  mov r10,#0x40000000 ;@ NZCV=0100
22526
22527;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
22528  uxth r1,r1 ;@ zero extend
22529  add lr,pc,#4
22530  mov r0,r11
22531  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
22532
22533  ldrh r8,[r4],#2 ;@ Fetch next opcode
22534  subs r5,r5,#16 ;@ Subtract cycles
22535  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22536  b CycloneEnd
22537
22538;@ ---------- [4270] clr.w ($33,a0,d3.w*2) uses Op4270 ----------
22539Op4270:
22540;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
22541;@ Get extension word into r3:
22542  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
22543  mov r2,r3,lsr #10
22544  tst r3,#0x0800 ;@ Is Rn Word or Long
22545  and r2,r2,#0x3c ;@ r2=Index of Rn
22546  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22547  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22548  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
22549  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
22550  and r2,r8,#0x000f
22551  orr r2,r2,#0x8 ;@ A0-7
22552  ldr r2,[r7,r2,lsl #2]
22553  add r11,r2,r3 ;@ r11=Disp+An+Rn
22554
22555;@ Clear:
22556  mov r1,#0
22557  mov r10,#0x40000000 ;@ NZCV=0100
22558
22559;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
22560  uxth r1,r1 ;@ zero extend
22561  add lr,pc,#4
22562  mov r0,r11
22563  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
22564
22565  ldrh r8,[r4],#2 ;@ Fetch next opcode
22566  subs r5,r5,#18 ;@ Subtract cycles
22567  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22568  b CycloneEnd
22569
22570;@ ---------- [4278] clr.w $3333.w uses Op4278 ----------
22571Op4278:
22572;@ EaCalc : Get '$3333.w' into r11:
22573  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
22574
22575;@ Clear:
22576  mov r1,#0
22577  mov r10,#0x40000000 ;@ NZCV=0100
22578
22579;@ EaWrite: Write r1 into '$3333.w' (address in r11):
22580  uxth r1,r1 ;@ zero extend
22581  add lr,pc,#4
22582  mov r0,r11
22583  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
22584
22585  ldrh r8,[r4],#2 ;@ Fetch next opcode
22586  subs r5,r5,#16 ;@ Subtract cycles
22587  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22588  b CycloneEnd
22589
22590;@ ---------- [4279] clr.w $33333333.l uses Op4279 ----------
22591Op4279:
22592;@ EaCalc : Get '$33333333.l' into r11:
22593  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22594  ldrh r0,[r4],#2
22595  orr r11,r0,r2,lsl #16
22596
22597;@ Clear:
22598  mov r1,#0
22599  mov r10,#0x40000000 ;@ NZCV=0100
22600
22601;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
22602  uxth r1,r1 ;@ zero extend
22603  add lr,pc,#4
22604  mov r0,r11
22605  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
22606
22607  ldrh r8,[r4],#2 ;@ Fetch next opcode
22608  subs r5,r5,#20 ;@ Subtract cycles
22609  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22610  b CycloneEnd
22611
22612;@ ---------- [4280] clr.l d0 uses Op4280 ----------
22613Op4280:
22614;@ EaCalc : Get register index into r11:
22615  and r11,r8,#0x000f
22616
22617;@ Clear:
22618  mov r1,#0
22619  mov r10,#0x40000000 ;@ NZCV=0100
22620
22621;@ EaWrite: r1 into register[r11]:
22622  str r1,[r7,r11,lsl #2]
22623
22624  ldrh r8,[r4],#2 ;@ Fetch next opcode
22625  subs r5,r5,#6 ;@ Subtract cycles
22626  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22627  b CycloneEnd
22628
22629;@ ---------- [4290] clr.l (a0) uses Op4290 ----------
22630Op4290:
22631;@ EaCalc : Get '(a0)' into r11:
22632  and r2,r8,#0x000f
22633  orr r2,r2,#0x8 ;@ A0-7
22634  ldr r11,[r7,r2,lsl #2]
22635
22636;@ Clear:
22637  mov r1,#0
22638  mov r10,#0x40000000 ;@ NZCV=0100
22639
22640;@ EaWrite: Write r1 into '(a0)' (address in r11):
22641  add lr,pc,#4
22642  mov r0,r11
22643  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
22644
22645  ldrh r8,[r4],#2 ;@ Fetch next opcode
22646  subs r5,r5,#20 ;@ Subtract cycles
22647  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22648  b CycloneEnd
22649
22650;@ ---------- [4298] clr.l (a0)+ uses Op4298 ----------
22651Op4298:
22652;@ EaCalc : Get '(a0)+' into r11:
22653  and r2,r8,#0x000f
22654  ldr r11,[r7,r2,lsl #2]
22655  add r3,r11,#4 ;@ Post-increment An
22656  str r3,[r7,r2,lsl #2]
22657
22658;@ Clear:
22659  mov r1,#0
22660  mov r10,#0x40000000 ;@ NZCV=0100
22661
22662;@ EaWrite: Write r1 into '(a0)+' (address in r11):
22663  add lr,pc,#4
22664  mov r0,r11
22665  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
22666
22667  ldrh r8,[r4],#2 ;@ Fetch next opcode
22668  subs r5,r5,#20 ;@ Subtract cycles
22669  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22670  b CycloneEnd
22671
22672;@ ---------- [42a0] clr.l -(a0) uses Op42a0 ----------
22673Op42a0:
22674;@ EaCalc : Get '-(a0)' into r11:
22675  and r2,r8,#0x000f
22676  orr r2,r2,#0x8 ;@ A0-7
22677  ldr r11,[r7,r2,lsl #2]
22678  sub r11,r11,#4 ;@ Pre-decrement An
22679  str r11,[r7,r2,lsl #2]
22680
22681;@ Clear:
22682  mov r1,#0
22683  mov r10,#0x40000000 ;@ NZCV=0100
22684
22685;@ EaWrite: Write r1 into '-(a0)' (address in r11):
22686  add lr,pc,#4
22687  mov r0,r11
22688  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
22689
22690  ldrh r8,[r4],#2 ;@ Fetch next opcode
22691  subs r5,r5,#22 ;@ Subtract cycles
22692  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22693  b CycloneEnd
22694
22695;@ ---------- [42a8] clr.l ($3333,a0) uses Op42a8 ----------
22696Op42a8:
22697;@ EaCalc : Get '($3333,a0)' into r11:
22698  ldrsh r0,[r4],#2 ;@ Fetch offset
22699  and r2,r8,#0x000f
22700  ldr r2,[r7,r2,lsl #2]
22701  add r11,r0,r2 ;@ Add on offset
22702
22703;@ Clear:
22704  mov r1,#0
22705  mov r10,#0x40000000 ;@ NZCV=0100
22706
22707;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
22708  add lr,pc,#4
22709  mov r0,r11
22710  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
22711
22712  ldrh r8,[r4],#2 ;@ Fetch next opcode
22713  subs r5,r5,#24 ;@ Subtract cycles
22714  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22715  b CycloneEnd
22716
22717;@ ---------- [42b0] clr.l ($33,a0,d3.w*2) uses Op42b0 ----------
22718Op42b0:
22719;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
22720;@ Get extension word into r3:
22721  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
22722  mov r2,r3,lsr #10
22723  tst r3,#0x0800 ;@ Is Rn Word or Long
22724  and r2,r2,#0x3c ;@ r2=Index of Rn
22725  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
22726  ldrne   r2,[r7,r2] ;@ r2=Rn.l
22727  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
22728  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
22729  and r2,r8,#0x000f
22730  orr r2,r2,#0x8 ;@ A0-7
22731  ldr r2,[r7,r2,lsl #2]
22732  add r11,r2,r3 ;@ r11=Disp+An+Rn
22733
22734;@ Clear:
22735  mov r1,#0
22736  mov r10,#0x40000000 ;@ NZCV=0100
22737
22738;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
22739  add lr,pc,#4
22740  mov r0,r11
22741  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
22742
22743  ldrh r8,[r4],#2 ;@ Fetch next opcode
22744  subs r5,r5,#26 ;@ Subtract cycles
22745  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22746  b CycloneEnd
22747
22748;@ ---------- [42b8] clr.l $3333.w uses Op42b8 ----------
22749Op42b8:
22750;@ EaCalc : Get '$3333.w' into r11:
22751  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
22752
22753;@ Clear:
22754  mov r1,#0
22755  mov r10,#0x40000000 ;@ NZCV=0100
22756
22757;@ EaWrite: Write r1 into '$3333.w' (address in r11):
22758  add lr,pc,#4
22759  mov r0,r11
22760  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
22761
22762  ldrh r8,[r4],#2 ;@ Fetch next opcode
22763  subs r5,r5,#24 ;@ Subtract cycles
22764  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22765  b CycloneEnd
22766
22767;@ ---------- [42b9] clr.l $33333333.l uses Op42b9 ----------
22768Op42b9:
22769;@ EaCalc : Get '$33333333.l' into r11:
22770  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
22771  ldrh r0,[r4],#2
22772  orr r11,r0,r2,lsl #16
22773
22774;@ Clear:
22775  mov r1,#0
22776  mov r10,#0x40000000 ;@ NZCV=0100
22777
22778;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
22779  add lr,pc,#4
22780  mov r0,r11
22781  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
22782
22783  ldrh r8,[r4],#2 ;@ Fetch next opcode
22784  subs r5,r5,#28 ;@ Subtract cycles
22785  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22786  b CycloneEnd
22787
22788;@ ---------- [4400] neg.b d0 uses Op4400 ----------
22789Op4400:
22790;@ EaCalc : Get register index into r11:
22791  and r11,r8,#0x000f
22792;@ EaRead : Read register[r11] into r0:
22793  ldr r0,[r7,r11,lsl #2]
22794
22795;@ Neg:
22796  mov r0,r0,asl #24
22797  rsbs r1,r0,#0
22798  mrs r10,cpsr ;@ r10=flags
22799  eor r10,r10,#0x20000000 ;@ Invert carry
22800  str r10,[r7,#0x4c] ;@ Save X bit
22801  mov r1,r1,asr #24
22802
22803;@ EaWrite: r1 into register[r11]:
22804  strb r1,[r7,r11,lsl #2]
22805
22806  ldrh r8,[r4],#2 ;@ Fetch next opcode
22807  subs r5,r5,#4 ;@ Subtract cycles
22808  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22809  b CycloneEnd
22810
22811;@ ---------- [4410] neg.b (a0) uses Op4410 ----------
22812Op4410:
22813;@ EaCalc : Get '(a0)' into r11:
22814  and r2,r8,#0x000f
22815  orr r2,r2,#0x8 ;@ A0-7
22816  ldr r11,[r7,r2,lsl #2]
22817;@ EaRead : Read '(a0)' (address in r11) into r0:
22818  add lr,pc,#4
22819  mov r0,r11
22820  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
22821
22822;@ Neg:
22823  mov r0,r0,asl #24
22824  rsbs r1,r0,#0
22825  mrs r10,cpsr ;@ r10=flags
22826  eor r10,r10,#0x20000000 ;@ Invert carry
22827  str r10,[r7,#0x4c] ;@ Save X bit
22828  mov r1,r1,asr #24
22829
22830;@ EaWrite: Write r1 into '(a0)' (address in r11):
22831  and r1,r1,#0xff
22832  add lr,pc,#4
22833  mov r0,r11
22834  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22835
22836  ldrh r8,[r4],#2 ;@ Fetch next opcode
22837  subs r5,r5,#12 ;@ Subtract cycles
22838  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22839  b CycloneEnd
22840
22841;@ ---------- [4418] neg.b (a0)+ uses Op4418 ----------
22842Op4418:
22843;@ EaCalc : Get '(a0)+' into r11:
22844  and r2,r8,#0x000f
22845  ldr r11,[r7,r2,lsl #2]
22846  add r3,r11,#1 ;@ Post-increment An
22847  str r3,[r7,r2,lsl #2]
22848;@ EaRead : Read '(a0)+' (address in r11) into r0:
22849  add lr,pc,#4
22850  mov r0,r11
22851  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
22852
22853;@ Neg:
22854  mov r0,r0,asl #24
22855  rsbs r1,r0,#0
22856  mrs r10,cpsr ;@ r10=flags
22857  eor r10,r10,#0x20000000 ;@ Invert carry
22858  str r10,[r7,#0x4c] ;@ Save X bit
22859  mov r1,r1,asr #24
22860
22861;@ EaWrite: Write r1 into '(a0)+' (address in r11):
22862  and r1,r1,#0xff
22863  add lr,pc,#4
22864  mov r0,r11
22865  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22866
22867  ldrh r8,[r4],#2 ;@ Fetch next opcode
22868  subs r5,r5,#12 ;@ Subtract cycles
22869  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22870  b CycloneEnd
22871
22872;@ ---------- [441f] neg.b (a7)+ uses Op441f ----------
22873Op441f:
22874;@ EaCalc : Get '(a7)+' into r11:
22875  ldr r11,[r7,#0x3c] ;@ A7
22876  add r3,r11,#2 ;@ Post-increment An
22877  str r3,[r7,#0x3c] ;@ A7
22878;@ EaRead : Read '(a7)+' (address in r11) into r0:
22879  add lr,pc,#4
22880  mov r0,r11
22881  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
22882
22883;@ Neg:
22884  mov r0,r0,asl #24
22885  rsbs r1,r0,#0
22886  mrs r10,cpsr ;@ r10=flags
22887  eor r10,r10,#0x20000000 ;@ Invert carry
22888  str r10,[r7,#0x4c] ;@ Save X bit
22889  mov r1,r1,asr #24
22890
22891;@ EaWrite: Write r1 into '(a7)+' (address in r11):
22892  and r1,r1,#0xff
22893  add lr,pc,#4
22894  mov r0,r11
22895  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22896
22897  ldrh r8,[r4],#2 ;@ Fetch next opcode
22898  subs r5,r5,#12 ;@ Subtract cycles
22899  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22900  b CycloneEnd
22901
22902;@ ---------- [4420] neg.b -(a0) uses Op4420 ----------
22903Op4420:
22904;@ EaCalc : Get '-(a0)' into r11:
22905  and r2,r8,#0x000f
22906  orr r2,r2,#0x8 ;@ A0-7
22907  ldr r11,[r7,r2,lsl #2]
22908  sub r11,r11,#1 ;@ Pre-decrement An
22909  str r11,[r7,r2,lsl #2]
22910;@ EaRead : Read '-(a0)' (address in r11) into r0:
22911  add lr,pc,#4
22912  mov r0,r11
22913  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
22914
22915;@ Neg:
22916  mov r0,r0,asl #24
22917  rsbs r1,r0,#0
22918  mrs r10,cpsr ;@ r10=flags
22919  eor r10,r10,#0x20000000 ;@ Invert carry
22920  str r10,[r7,#0x4c] ;@ Save X bit
22921  mov r1,r1,asr #24
22922
22923;@ EaWrite: Write r1 into '-(a0)' (address in r11):
22924  and r1,r1,#0xff
22925  add lr,pc,#4
22926  mov r0,r11
22927  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22928
22929  ldrh r8,[r4],#2 ;@ Fetch next opcode
22930  subs r5,r5,#14 ;@ Subtract cycles
22931  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22932  b CycloneEnd
22933
22934;@ ---------- [4427] neg.b -(a7) uses Op4427 ----------
22935Op4427:
22936;@ EaCalc : Get '-(a7)' into r11:
22937  ldr r11,[r7,#0x3c] ;@ A7
22938  sub r11,r11,#2 ;@ Pre-decrement An
22939  str r11,[r7,#0x3c] ;@ A7
22940;@ EaRead : Read '-(a7)' (address in r11) into r0:
22941  add lr,pc,#4
22942  mov r0,r11
22943  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
22944
22945;@ Neg:
22946  mov r0,r0,asl #24
22947  rsbs r1,r0,#0
22948  mrs r10,cpsr ;@ r10=flags
22949  eor r10,r10,#0x20000000 ;@ Invert carry
22950  str r10,[r7,#0x4c] ;@ Save X bit
22951  mov r1,r1,asr #24
22952
22953;@ EaWrite: Write r1 into '-(a7)' (address in r11):
22954  and r1,r1,#0xff
22955  add lr,pc,#4
22956  mov r0,r11
22957  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22958
22959  ldrh r8,[r4],#2 ;@ Fetch next opcode
22960  subs r5,r5,#14 ;@ Subtract cycles
22961  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22962  b CycloneEnd
22963
22964;@ ---------- [4428] neg.b ($3333,a0) uses Op4428 ----------
22965Op4428:
22966;@ EaCalc : Get '($3333,a0)' into r11:
22967  ldrsh r0,[r4],#2 ;@ Fetch offset
22968  and r2,r8,#0x000f
22969  ldr r2,[r7,r2,lsl #2]
22970  add r11,r0,r2 ;@ Add on offset
22971;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
22972  add lr,pc,#4
22973  mov r0,r11
22974  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
22975
22976;@ Neg:
22977  mov r0,r0,asl #24
22978  rsbs r1,r0,#0
22979  mrs r10,cpsr ;@ r10=flags
22980  eor r10,r10,#0x20000000 ;@ Invert carry
22981  str r10,[r7,#0x4c] ;@ Save X bit
22982  mov r1,r1,asr #24
22983
22984;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
22985  and r1,r1,#0xff
22986  add lr,pc,#4
22987  mov r0,r11
22988  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
22989
22990  ldrh r8,[r4],#2 ;@ Fetch next opcode
22991  subs r5,r5,#16 ;@ Subtract cycles
22992  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
22993  b CycloneEnd
22994
22995;@ ---------- [4430] neg.b ($33,a0,d3.w*2) uses Op4430 ----------
22996Op4430:
22997;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
22998;@ Get extension word into r3:
22999  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
23000  mov r2,r3,lsr #10
23001  tst r3,#0x0800 ;@ Is Rn Word or Long
23002  and r2,r2,#0x3c ;@ r2=Index of Rn
23003  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
23004  ldrne   r2,[r7,r2] ;@ r2=Rn.l
23005  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
23006  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
23007  and r2,r8,#0x000f
23008  orr r2,r2,#0x8 ;@ A0-7
23009  ldr r2,[r7,r2,lsl #2]
23010  add r11,r2,r3 ;@ r11=Disp+An+Rn
23011;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
23012  add lr,pc,#4
23013  mov r0,r11
23014  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
23015
23016;@ Neg:
23017  mov r0,r0,asl #24
23018  rsbs r1,r0,#0
23019  mrs r10,cpsr ;@ r10=flags
23020  eor r10,r10,#0x20000000 ;@ Invert carry
23021  str r10,[r7,#0x4c] ;@ Save X bit
23022  mov r1,r1,asr #24
23023
23024;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
23025  and r1,r1,#0xff
23026  add lr,pc,#4
23027  mov r0,r11
23028  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
23029
23030  ldrh r8,[r4],#2 ;@ Fetch next opcode
23031  subs r5,r5,#18 ;@ Subtract cycles
23032  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23033  b CycloneEnd
23034
23035;@ ---------- [4438] neg.b $3333.w uses Op4438 ----------
23036Op4438:
23037;@ EaCalc : Get '$3333.w' into r11:
23038  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
23039;@ EaRead : Read '$3333.w' (address in r11) into r0:
23040  add lr,pc,#4
23041  mov r0,r11
23042  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
23043
23044;@ Neg:
23045  mov r0,r0,asl #24
23046  rsbs r1,r0,#0
23047  mrs r10,cpsr ;@ r10=flags
23048  eor r10,r10,#0x20000000 ;@ Invert carry
23049  str r10,[r7,#0x4c] ;@ Save X bit
23050  mov r1,r1,asr #24
23051
23052;@ EaWrite: Write r1 into '$3333.w' (address in r11):
23053  and r1,r1,#0xff
23054  add lr,pc,#4
23055  mov r0,r11
23056  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
23057
23058  ldrh r8,[r4],#2 ;@ Fetch next opcode
23059  subs r5,r5,#16 ;@ Subtract cycles
23060  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23061  b CycloneEnd
23062
23063;@ ---------- [4439] neg.b $33333333.l uses Op4439 ----------
23064Op4439:
23065;@ EaCalc : Get '$33333333.l' into r11:
23066  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
23067  ldrh r0,[r4],#2
23068  orr r11,r0,r2,lsl #16
23069;@ EaRead : Read '$33333333.l' (address in r11) into r0:
23070  add lr,pc,#4
23071  mov r0,r11
23072  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
23073
23074;@ Neg:
23075  mov r0,r0,asl #24
23076  rsbs r1,r0,#0
23077  mrs r10,cpsr ;@ r10=flags
23078  eor r10,r10,#0x20000000 ;@ Invert carry
23079  str r10,[r7,#0x4c] ;@ Save X bit
23080  mov r1,r1,asr #24
23081
23082;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
23083  and r1,r1,#0xff
23084  add lr,pc,#4
23085  mov r0,r11
23086  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
23087
23088  ldrh r8,[r4],#2 ;@ Fetch next opcode
23089  subs r5,r5,#20 ;@ Subtract cycles
23090  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23091  b CycloneEnd
23092
23093;@ ---------- [4440] neg.w d0 uses Op4440 ----------
23094Op4440:
23095;@ EaCalc : Get register index into r11:
23096  and r11,r8,#0x000f
23097  mov r11,r11,lsl #2
23098;@ EaRead : Read register[r11] into r0:
23099  ldr r0,[r7,r11]
23100
23101;@ Neg:
23102  mov r0,r0,asl #16
23103  rsbs r1,r0,#0
23104  mrs r10,cpsr ;@ r10=flags
23105  eor r10,r10,#0x20000000 ;@ Invert carry
23106  str r10,[r7,#0x4c] ;@ Save X bit
23107  mov r1,r1,asr #16
23108
23109;@ EaWrite: r1 into register[r11]:
23110  strh r1,[r7,r11]
23111
23112  ldrh r8,[r4],#2 ;@ Fetch next opcode
23113  subs r5,r5,#4 ;@ Subtract cycles
23114  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23115  b CycloneEnd
23116
23117;@ ---------- [4450] neg.w (a0) uses Op4450 ----------
23118Op4450:
23119;@ EaCalc : Get '(a0)' into r11:
23120  and r2,r8,#0x000f
23121  orr r2,r2,#0x8 ;@ A0-7
23122  ldr r11,[r7,r2,lsl #2]
23123;@ EaRead : Read '(a0)' (address in r11) into r0:
23124  add lr,pc,#4
23125  mov r0,r11
23126  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23127
23128;@ Neg:
23129  mov r0,r0,asl #16
23130  rsbs r1,r0,#0
23131  mrs r10,cpsr ;@ r10=flags
23132  eor r10,r10,#0x20000000 ;@ Invert carry
23133  str r10,[r7,#0x4c] ;@ Save X bit
23134  mov r1,r1,asr #16
23135
23136;@ EaWrite: Write r1 into '(a0)' (address in r11):
23137  uxth r1,r1 ;@ zero extend
23138  add lr,pc,#4
23139  mov r0,r11
23140  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
23141
23142  ldrh r8,[r4],#2 ;@ Fetch next opcode
23143  subs r5,r5,#12 ;@ Subtract cycles
23144  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23145  b CycloneEnd
23146
23147;@ ---------- [4458] neg.w (a0)+ uses Op4458 ----------
23148Op4458:
23149;@ EaCalc : Get '(a0)+' into r11:
23150  and r2,r8,#0x000f
23151  ldr r11,[r7,r2,lsl #2]
23152  add r3,r11,#2 ;@ Post-increment An
23153  str r3,[r7,r2,lsl #2]
23154;@ EaRead : Read '(a0)+' (address in r11) into r0:
23155  add lr,pc,#4
23156  mov r0,r11
23157  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23158
23159;@ Neg:
23160  mov r0,r0,asl #16
23161  rsbs r1,r0,#0
23162  mrs r10,cpsr ;@ r10=flags
23163  eor r10,r10,#0x20000000 ;@ Invert carry
23164  str r10,[r7,#0x4c] ;@ Save X bit
23165  mov r1,r1,asr #16
23166
23167;@ EaWrite: Write r1 into '(a0)+' (address in r11):
23168  uxth r1,r1 ;@ zero extend
23169  add lr,pc,#4
23170  mov r0,r11
23171  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
23172
23173  ldrh r8,[r4],#2 ;@ Fetch next opcode
23174  subs r5,r5,#12 ;@ Subtract cycles
23175  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23176  b CycloneEnd
23177
23178;@ ---------- [4460] neg.w -(a0) uses Op4460 ----------
23179Op4460:
23180;@ EaCalc : Get '-(a0)' into r11:
23181  and r2,r8,#0x000f
23182  orr r2,r2,#0x8 ;@ A0-7
23183  ldr r11,[r7,r2,lsl #2]
23184  sub r11,r11,#2 ;@ Pre-decrement An
23185  str r11,[r7,r2,lsl #2]
23186;@ EaRead : Read '-(a0)' (address in r11) into r0:
23187  add lr,pc,#4
23188  mov r0,r11
23189  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23190
23191;@ Neg:
23192  mov r0,r0,asl #16
23193  rsbs r1,r0,#0
23194  mrs r10,cpsr ;@ r10=flags
23195  eor r10,r10,#0x20000000 ;@ Invert carry
23196  str r10,[r7,#0x4c] ;@ Save X bit
23197  mov r1,r1,asr #16
23198
23199;@ EaWrite: Write r1 into '-(a0)' (address in r11):
23200  uxth r1,r1 ;@ zero extend
23201  add lr,pc,#4
23202  mov r0,r11
23203  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
23204
23205  ldrh r8,[r4],#2 ;@ Fetch next opcode
23206  subs r5,r5,#14 ;@ Subtract cycles
23207  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23208  b CycloneEnd
23209
23210;@ ---------- [4468] neg.w ($3333,a0) uses Op4468 ----------
23211Op4468:
23212;@ EaCalc : Get '($3333,a0)' into r11:
23213  ldrsh r0,[r4],#2 ;@ Fetch offset
23214  and r2,r8,#0x000f
23215  ldr r2,[r7,r2,lsl #2]
23216  add r11,r0,r2 ;@ Add on offset
23217;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
23218  add lr,pc,#4
23219  mov r0,r11
23220  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23221
23222;@ Neg:
23223  mov r0,r0,asl #16
23224  rsbs r1,r0,#0
23225  mrs r10,cpsr ;@ r10=flags
23226  eor r10,r10,#0x20000000 ;@ Invert carry
23227  str r10,[r7,#0x4c] ;@ Save X bit
23228  mov r1,r1,asr #16
23229
23230;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
23231  uxth r1,r1 ;@ zero extend
23232  add lr,pc,#4
23233  mov r0,r11
23234  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
23235
23236  ldrh r8,[r4],#2 ;@ Fetch next opcode
23237  subs r5,r5,#16 ;@ Subtract cycles
23238  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23239  b CycloneEnd
23240
23241;@ ---------- [4470] neg.w ($33,a0,d3.w*2) uses Op4470 ----------
23242Op4470:
23243;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
23244;@ Get extension word into r3:
23245  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
23246  mov r2,r3,lsr #10
23247  tst r3,#0x0800 ;@ Is Rn Word or Long
23248  and r2,r2,#0x3c ;@ r2=Index of Rn
23249  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
23250  ldrne   r2,[r7,r2] ;@ r2=Rn.l
23251  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
23252  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
23253  and r2,r8,#0x000f
23254  orr r2,r2,#0x8 ;@ A0-7
23255  ldr r2,[r7,r2,lsl #2]
23256  add r11,r2,r3 ;@ r11=Disp+An+Rn
23257;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
23258  add lr,pc,#4
23259  mov r0,r11
23260  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23261
23262;@ Neg:
23263  mov r0,r0,asl #16
23264  rsbs r1,r0,#0
23265  mrs r10,cpsr ;@ r10=flags
23266  eor r10,r10,#0x20000000 ;@ Invert carry
23267  str r10,[r7,#0x4c] ;@ Save X bit
23268  mov r1,r1,asr #16
23269
23270;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
23271  uxth r1,r1 ;@ zero extend
23272  add lr,pc,#4
23273  mov r0,r11
23274  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
23275
23276  ldrh r8,[r4],#2 ;@ Fetch next opcode
23277  subs r5,r5,#18 ;@ Subtract cycles
23278  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23279  b CycloneEnd
23280
23281;@ ---------- [4478] neg.w $3333.w uses Op4478 ----------
23282Op4478:
23283;@ EaCalc : Get '$3333.w' into r11:
23284  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
23285;@ EaRead : Read '$3333.w' (address in r11) into r0:
23286  add lr,pc,#4
23287  mov r0,r11
23288  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23289
23290;@ Neg:
23291  mov r0,r0,asl #16
23292  rsbs r1,r0,#0
23293  mrs r10,cpsr ;@ r10=flags
23294  eor r10,r10,#0x20000000 ;@ Invert carry
23295  str r10,[r7,#0x4c] ;@ Save X bit
23296  mov r1,r1,asr #16
23297
23298;@ EaWrite: Write r1 into '$3333.w' (address in r11):
23299  uxth r1,r1 ;@ zero extend
23300  add lr,pc,#4
23301  mov r0,r11
23302  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
23303
23304  ldrh r8,[r4],#2 ;@ Fetch next opcode
23305  subs r5,r5,#16 ;@ Subtract cycles
23306  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23307  b CycloneEnd
23308
23309;@ ---------- [4479] neg.w $33333333.l uses Op4479 ----------
23310Op4479:
23311;@ EaCalc : Get '$33333333.l' into r11:
23312  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
23313  ldrh r0,[r4],#2
23314  orr r11,r0,r2,lsl #16
23315;@ EaRead : Read '$33333333.l' (address in r11) into r0:
23316  add lr,pc,#4
23317  mov r0,r11
23318  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23319
23320;@ Neg:
23321  mov r0,r0,asl #16
23322  rsbs r1,r0,#0
23323  mrs r10,cpsr ;@ r10=flags
23324  eor r10,r10,#0x20000000 ;@ Invert carry
23325  str r10,[r7,#0x4c] ;@ Save X bit
23326  mov r1,r1,asr #16
23327
23328;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
23329  uxth r1,r1 ;@ zero extend
23330  add lr,pc,#4
23331  mov r0,r11
23332  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
23333
23334  ldrh r8,[r4],#2 ;@ Fetch next opcode
23335  subs r5,r5,#20 ;@ Subtract cycles
23336  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23337  b CycloneEnd
23338
23339;@ ---------- [4480] neg.l d0 uses Op4480 ----------
23340Op4480:
23341;@ EaCalc : Get register index into r11:
23342  and r11,r8,#0x000f
23343;@ EaRead : Read register[r11] into r0:
23344  ldr r0,[r7,r11,lsl #2]
23345
23346;@ Neg:
23347  rsbs r1,r0,#0
23348  mrs r10,cpsr ;@ r10=flags
23349  eor r10,r10,#0x20000000 ;@ Invert carry
23350  str r10,[r7,#0x4c] ;@ Save X bit
23351
23352;@ EaWrite: r1 into register[r11]:
23353  str r1,[r7,r11,lsl #2]
23354
23355  ldrh r8,[r4],#2 ;@ Fetch next opcode
23356  subs r5,r5,#6 ;@ Subtract cycles
23357  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23358  b CycloneEnd
23359
23360;@ ---------- [4490] neg.l (a0) uses Op4490 ----------
23361Op4490:
23362;@ EaCalc : Get '(a0)' into r11:
23363  and r2,r8,#0x000f
23364  orr r2,r2,#0x8 ;@ A0-7
23365  ldr r11,[r7,r2,lsl #2]
23366;@ EaRead : Read '(a0)' (address in r11) into r0:
23367  add lr,pc,#4
23368  mov r0,r11
23369  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
23370
23371;@ Neg:
23372  rsbs r1,r0,#0
23373  mrs r10,cpsr ;@ r10=flags
23374  eor r10,r10,#0x20000000 ;@ Invert carry
23375  str r10,[r7,#0x4c] ;@ Save X bit
23376
23377;@ EaWrite: Write r1 into '(a0)' (address in r11):
23378  add lr,pc,#4
23379  mov r0,r11
23380  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
23381
23382  ldrh r8,[r4],#2 ;@ Fetch next opcode
23383  subs r5,r5,#20 ;@ Subtract cycles
23384  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23385  b CycloneEnd
23386
23387;@ ---------- [4498] neg.l (a0)+ uses Op4498 ----------
23388Op4498:
23389;@ EaCalc : Get '(a0)+' into r11:
23390  and r2,r8,#0x000f
23391  ldr r11,[r7,r2,lsl #2]
23392  add r3,r11,#4 ;@ Post-increment An
23393  str r3,[r7,r2,lsl #2]
23394;@ EaRead : Read '(a0)+' (address in r11) into r0:
23395  add lr,pc,#4
23396  mov r0,r11
23397  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
23398
23399;@ Neg:
23400  rsbs r1,r0,#0
23401  mrs r10,cpsr ;@ r10=flags
23402  eor r10,r10,#0x20000000 ;@ Invert carry
23403  str r10,[r7,#0x4c] ;@ Save X bit
23404
23405;@ EaWrite: Write r1 into '(a0)+' (address in r11):
23406  add lr,pc,#4
23407  mov r0,r11
23408  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
23409
23410  ldrh r8,[r4],#2 ;@ Fetch next opcode
23411  subs r5,r5,#20 ;@ Subtract cycles
23412  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23413  b CycloneEnd
23414
23415;@ ---------- [44a0] neg.l -(a0) uses Op44a0 ----------
23416Op44a0:
23417;@ EaCalc : Get '-(a0)' into r11:
23418  and r2,r8,#0x000f
23419  orr r2,r2,#0x8 ;@ A0-7
23420  ldr r11,[r7,r2,lsl #2]
23421  sub r11,r11,#4 ;@ Pre-decrement An
23422  str r11,[r7,r2,lsl #2]
23423;@ EaRead : Read '-(a0)' (address in r11) into r0:
23424  add lr,pc,#4
23425  mov r0,r11
23426  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
23427
23428;@ Neg:
23429  rsbs r1,r0,#0
23430  mrs r10,cpsr ;@ r10=flags
23431  eor r10,r10,#0x20000000 ;@ Invert carry
23432  str r10,[r7,#0x4c] ;@ Save X bit
23433
23434;@ EaWrite: Write r1 into '-(a0)' (address in r11):
23435  add lr,pc,#4
23436  mov r0,r11
23437  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
23438
23439  ldrh r8,[r4],#2 ;@ Fetch next opcode
23440  subs r5,r5,#22 ;@ Subtract cycles
23441  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23442  b CycloneEnd
23443
23444;@ ---------- [44a8] neg.l ($3333,a0) uses Op44a8 ----------
23445Op44a8:
23446;@ EaCalc : Get '($3333,a0)' into r11:
23447  ldrsh r0,[r4],#2 ;@ Fetch offset
23448  and r2,r8,#0x000f
23449  ldr r2,[r7,r2,lsl #2]
23450  add r11,r0,r2 ;@ Add on offset
23451;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
23452  add lr,pc,#4
23453  mov r0,r11
23454  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
23455
23456;@ Neg:
23457  rsbs r1,r0,#0
23458  mrs r10,cpsr ;@ r10=flags
23459  eor r10,r10,#0x20000000 ;@ Invert carry
23460  str r10,[r7,#0x4c] ;@ Save X bit
23461
23462;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
23463  add lr,pc,#4
23464  mov r0,r11
23465  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
23466
23467  ldrh r8,[r4],#2 ;@ Fetch next opcode
23468  subs r5,r5,#24 ;@ Subtract cycles
23469  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23470  b CycloneEnd
23471
23472;@ ---------- [44b0] neg.l ($33,a0,d3.w*2) uses Op44b0 ----------
23473Op44b0:
23474;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
23475;@ Get extension word into r3:
23476  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
23477  mov r2,r3,lsr #10
23478  tst r3,#0x0800 ;@ Is Rn Word or Long
23479  and r2,r2,#0x3c ;@ r2=Index of Rn
23480  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
23481  ldrne   r2,[r7,r2] ;@ r2=Rn.l
23482  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
23483  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
23484  and r2,r8,#0x000f
23485  orr r2,r2,#0x8 ;@ A0-7
23486  ldr r2,[r7,r2,lsl #2]
23487  add r11,r2,r3 ;@ r11=Disp+An+Rn
23488;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
23489  add lr,pc,#4
23490  mov r0,r11
23491  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
23492
23493;@ Neg:
23494  rsbs r1,r0,#0
23495  mrs r10,cpsr ;@ r10=flags
23496  eor r10,r10,#0x20000000 ;@ Invert carry
23497  str r10,[r7,#0x4c] ;@ Save X bit
23498
23499;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
23500  add lr,pc,#4
23501  mov r0,r11
23502  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
23503
23504  ldrh r8,[r4],#2 ;@ Fetch next opcode
23505  subs r5,r5,#26 ;@ Subtract cycles
23506  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23507  b CycloneEnd
23508
23509;@ ---------- [44b8] neg.l $3333.w uses Op44b8 ----------
23510Op44b8:
23511;@ EaCalc : Get '$3333.w' into r11:
23512  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
23513;@ EaRead : Read '$3333.w' (address in r11) into r0:
23514  add lr,pc,#4
23515  mov r0,r11
23516  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
23517
23518;@ Neg:
23519  rsbs r1,r0,#0
23520  mrs r10,cpsr ;@ r10=flags
23521  eor r10,r10,#0x20000000 ;@ Invert carry
23522  str r10,[r7,#0x4c] ;@ Save X bit
23523
23524;@ EaWrite: Write r1 into '$3333.w' (address in r11):
23525  add lr,pc,#4
23526  mov r0,r11
23527  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
23528
23529  ldrh r8,[r4],#2 ;@ Fetch next opcode
23530  subs r5,r5,#24 ;@ Subtract cycles
23531  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23532  b CycloneEnd
23533
23534;@ ---------- [44b9] neg.l $33333333.l uses Op44b9 ----------
23535Op44b9:
23536;@ EaCalc : Get '$33333333.l' into r11:
23537  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
23538  ldrh r0,[r4],#2
23539  orr r11,r0,r2,lsl #16
23540;@ EaRead : Read '$33333333.l' (address in r11) into r0:
23541  add lr,pc,#4
23542  mov r0,r11
23543  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
23544
23545;@ Neg:
23546  rsbs r1,r0,#0
23547  mrs r10,cpsr ;@ r10=flags
23548  eor r10,r10,#0x20000000 ;@ Invert carry
23549  str r10,[r7,#0x4c] ;@ Save X bit
23550
23551;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
23552  add lr,pc,#4
23553  mov r0,r11
23554  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
23555
23556  ldrh r8,[r4],#2 ;@ Fetch next opcode
23557  subs r5,r5,#28 ;@ Subtract cycles
23558  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23559  b CycloneEnd
23560
23561;@ ---------- [44c0] move d0, ccr uses Op44c0 ----------
23562Op44c0:
23563;@ EaCalc : Get register index into r0:
23564  and r0,r8,#0x000f
23565;@ EaRead : Read register[r0] into r0:
23566  ldr r0,[r7,r0,lsl #2]
23567
23568  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23569  mov r2,r0,lsl #25
23570  tst r1,#1           ;@ 1 if C!=V
23571  eorne r0,r0,#3      ;@ ___XNZCV
23572  str r2,[r7,#0x4c]   ;@ Store X bit
23573  mov r10,r0,lsl #28  ;@ r10=NZCV...
23574
23575  ldrh r8,[r4],#2 ;@ Fetch next opcode
23576  subs r5,r5,#12 ;@ Subtract cycles
23577  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23578  b CycloneEnd
23579
23580;@ ---------- [44d0] move (a0), ccr uses Op44d0 ----------
23581Op44d0:
23582;@ EaCalc : Get '(a0)' into r0:
23583  and r2,r8,#0x000f
23584  orr r2,r2,#0x8 ;@ A0-7
23585  ldr r0,[r7,r2,lsl #2]
23586;@ EaRead : Read '(a0)' (address in r0) into r0:
23587  mov lr,pc
23588  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23589
23590  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23591  mov r2,r0,lsl #25
23592  tst r1,#1           ;@ 1 if C!=V
23593  eorne r0,r0,#3      ;@ ___XNZCV
23594  str r2,[r7,#0x4c]   ;@ Store X bit
23595  mov r10,r0,lsl #28  ;@ r10=NZCV...
23596
23597  ldrh r8,[r4],#2 ;@ Fetch next opcode
23598  subs r5,r5,#16 ;@ Subtract cycles
23599  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23600  b CycloneEnd
23601
23602;@ ---------- [44d8] move (a0)+, ccr uses Op44d8 ----------
23603Op44d8:
23604;@ EaCalc : Get '(a0)+' into r0:
23605  and r2,r8,#0x000f
23606  ldr r0,[r7,r2,lsl #2]
23607  add r3,r0,#2 ;@ Post-increment An
23608  str r3,[r7,r2,lsl #2]
23609;@ EaRead : Read '(a0)+' (address in r0) into r0:
23610  mov lr,pc
23611  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23612
23613  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23614  mov r2,r0,lsl #25
23615  tst r1,#1           ;@ 1 if C!=V
23616  eorne r0,r0,#3      ;@ ___XNZCV
23617  str r2,[r7,#0x4c]   ;@ Store X bit
23618  mov r10,r0,lsl #28  ;@ r10=NZCV...
23619
23620  ldrh r8,[r4],#2 ;@ Fetch next opcode
23621  subs r5,r5,#16 ;@ Subtract cycles
23622  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23623  b CycloneEnd
23624
23625;@ ---------- [44e0] move -(a0), ccr uses Op44e0 ----------
23626Op44e0:
23627;@ EaCalc : Get '-(a0)' into r0:
23628  and r2,r8,#0x000f
23629  orr r2,r2,#0x8 ;@ A0-7
23630  ldr r0,[r7,r2,lsl #2]
23631  sub r0,r0,#2 ;@ Pre-decrement An
23632  str r0,[r7,r2,lsl #2]
23633;@ EaRead : Read '-(a0)' (address in r0) into r0:
23634  mov lr,pc
23635  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23636
23637  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23638  mov r2,r0,lsl #25
23639  tst r1,#1           ;@ 1 if C!=V
23640  eorne r0,r0,#3      ;@ ___XNZCV
23641  str r2,[r7,#0x4c]   ;@ Store X bit
23642  mov r10,r0,lsl #28  ;@ r10=NZCV...
23643
23644  ldrh r8,[r4],#2 ;@ Fetch next opcode
23645  subs r5,r5,#18 ;@ Subtract cycles
23646  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23647  b CycloneEnd
23648
23649;@ ---------- [44e8] move ($3333,a0), ccr uses Op44e8 ----------
23650Op44e8:
23651;@ EaCalc : Get '($3333,a0)' into r0:
23652  ldrsh r0,[r4],#2 ;@ Fetch offset
23653  and r2,r8,#0x000f
23654  ldr r2,[r7,r2,lsl #2]
23655  add r0,r0,r2 ;@ Add on offset
23656;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
23657  mov lr,pc
23658  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23659
23660  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23661  mov r2,r0,lsl #25
23662  tst r1,#1           ;@ 1 if C!=V
23663  eorne r0,r0,#3      ;@ ___XNZCV
23664  str r2,[r7,#0x4c]   ;@ Store X bit
23665  mov r10,r0,lsl #28  ;@ r10=NZCV...
23666
23667  ldrh r8,[r4],#2 ;@ Fetch next opcode
23668  subs r5,r5,#20 ;@ Subtract cycles
23669  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23670  b CycloneEnd
23671
23672;@ ---------- [44f0] move ($33,a0,d3.w*2), ccr uses Op44f0 ----------
23673Op44f0:
23674;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
23675;@ Get extension word into r3:
23676  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
23677  mov r2,r3,lsr #10
23678  tst r3,#0x0800 ;@ Is Rn Word or Long
23679  and r2,r2,#0x3c ;@ r2=Index of Rn
23680  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
23681  ldrne   r2,[r7,r2] ;@ r2=Rn.l
23682  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
23683  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
23684  and r2,r8,#0x000f
23685  orr r2,r2,#0x8 ;@ A0-7
23686  ldr r2,[r7,r2,lsl #2]
23687  add r0,r2,r3 ;@ r0=Disp+An+Rn
23688;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
23689  mov lr,pc
23690  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23691
23692  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23693  mov r2,r0,lsl #25
23694  tst r1,#1           ;@ 1 if C!=V
23695  eorne r0,r0,#3      ;@ ___XNZCV
23696  str r2,[r7,#0x4c]   ;@ Store X bit
23697  mov r10,r0,lsl #28  ;@ r10=NZCV...
23698
23699  ldrh r8,[r4],#2 ;@ Fetch next opcode
23700  subs r5,r5,#22 ;@ Subtract cycles
23701  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23702  b CycloneEnd
23703
23704;@ ---------- [44f8] move $3333.w, ccr uses Op44f8 ----------
23705Op44f8:
23706;@ EaCalc : Get '$3333.w' into r0:
23707  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
23708;@ EaRead : Read '$3333.w' (address in r0) into r0:
23709  mov lr,pc
23710  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23711
23712  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23713  mov r2,r0,lsl #25
23714  tst r1,#1           ;@ 1 if C!=V
23715  eorne r0,r0,#3      ;@ ___XNZCV
23716  str r2,[r7,#0x4c]   ;@ Store X bit
23717  mov r10,r0,lsl #28  ;@ r10=NZCV...
23718
23719  ldrh r8,[r4],#2 ;@ Fetch next opcode
23720  subs r5,r5,#20 ;@ Subtract cycles
23721  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23722  b CycloneEnd
23723
23724;@ ---------- [44f9] move $33333333.l, ccr uses Op44f9 ----------
23725Op44f9:
23726;@ EaCalc : Get '$33333333.l' into r0:
23727  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
23728  ldrh r0,[r4],#2
23729  orr r0,r0,r2,lsl #16
23730;@ EaRead : Read '$33333333.l' (address in r0) into r0:
23731  mov lr,pc
23732  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
23733
23734  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23735  mov r2,r0,lsl #25
23736  tst r1,#1           ;@ 1 if C!=V
23737  eorne r0,r0,#3      ;@ ___XNZCV
23738  str r2,[r7,#0x4c]   ;@ Store X bit
23739  mov r10,r0,lsl #28  ;@ r10=NZCV...
23740
23741  ldrh r8,[r4],#2 ;@ Fetch next opcode
23742  subs r5,r5,#24 ;@ Subtract cycles
23743  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23744  b CycloneEnd
23745
23746;@ ---------- [44fa] move ($3333,pc), ccr; =3335 uses Op44fa ----------
23747Op44fa:
23748;@ EaCalc : Get '($3333,pc)' into r0:
23749  ldr r0,[r7,#0x60] ;@ Get Memory base
23750  sub r0,r4,r0 ;@ Real PC
23751  ldrsh r2,[r4],#2 ;@ Fetch extension
23752  add r0,r2,r0 ;@ ($nn,PC)
23753;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
23754  mov lr,pc
23755  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
23756
23757  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23758  mov r2,r0,lsl #25
23759  tst r1,#1           ;@ 1 if C!=V
23760  eorne r0,r0,#3      ;@ ___XNZCV
23761  str r2,[r7,#0x4c]   ;@ Store X bit
23762  mov r10,r0,lsl #28  ;@ r10=NZCV...
23763
23764  ldrh r8,[r4],#2 ;@ Fetch next opcode
23765  subs r5,r5,#20 ;@ Subtract cycles
23766  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23767  b CycloneEnd
23768
23769;@ ---------- [44fb] move ($33,pc,d3.w*2), ccr; =35 uses Op44fb ----------
23770Op44fb:
23771;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
23772  ldr r0,[r7,#0x60] ;@ Get Memory base
23773  ldrh r3,[r4] ;@ Get extension word
23774  sub r0,r4,r0 ;@ r0=PC
23775  add r4,r4,#2
23776  mov r2,r3,lsr #10
23777  tst r3,#0x0800 ;@ Is Rn Word or Long
23778  and r2,r2,#0x3c ;@ r2=Index of Rn
23779  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
23780  ldrne   r2,[r7,r2] ;@ r2=Rn.l
23781  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
23782  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
23783  add r0,r2,r0 ;@ r0=Disp+PC+Rn
23784;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
23785  mov lr,pc
23786  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
23787
23788  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23789  mov r2,r0,lsl #25
23790  tst r1,#1           ;@ 1 if C!=V
23791  eorne r0,r0,#3      ;@ ___XNZCV
23792  str r2,[r7,#0x4c]   ;@ Store X bit
23793  mov r10,r0,lsl #28  ;@ r10=NZCV...
23794
23795  ldrh r8,[r4],#2 ;@ Fetch next opcode
23796  subs r5,r5,#22 ;@ Subtract cycles
23797  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23798  b CycloneEnd
23799
23800;@ ---------- [44fc] move #$3333, ccr uses Op44fc ----------
23801Op44fc:
23802;@ EaCalc : Get '#$3333' into r0:
23803  ldrsh r0,[r4],#2 ;@ Fetch immediate value
23804;@ EaRead : Read '#$3333' (address in r0) into r0:
23805
23806  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
23807  mov r2,r0,lsl #25
23808  tst r1,#1           ;@ 1 if C!=V
23809  eorne r0,r0,#3      ;@ ___XNZCV
23810  str r2,[r7,#0x4c]   ;@ Store X bit
23811  mov r10,r0,lsl #28  ;@ r10=NZCV...
23812
23813  ldrh r8,[r4],#2 ;@ Fetch next opcode
23814  subs r5,r5,#16 ;@ Subtract cycles
23815  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23816  b CycloneEnd
23817
23818;@ ---------- [4600] not.b d0 uses Op4600 ----------
23819Op4600:
23820;@ EaCalc : Get register index into r11:
23821  and r11,r8,#0x000f
23822;@ EaRead : Read register[r11] into r0:
23823  ldr r0,[r7,r11,lsl #2]
23824
23825;@ Not:
23826  mov r0,r0,asl #24
23827  mvns r1,r0,asr #24
23828  and r10,r1,#0x80000000 ;@ r10=N_flag
23829  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23830
23831;@ EaWrite: r1 into register[r11]:
23832  strb r1,[r7,r11,lsl #2]
23833
23834  ldrh r8,[r4],#2 ;@ Fetch next opcode
23835  subs r5,r5,#4 ;@ Subtract cycles
23836  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23837  b CycloneEnd
23838
23839;@ ---------- [4610] not.b (a0) uses Op4610 ----------
23840Op4610:
23841;@ EaCalc : Get '(a0)' into r11:
23842  and r2,r8,#0x000f
23843  orr r2,r2,#0x8 ;@ A0-7
23844  ldr r11,[r7,r2,lsl #2]
23845;@ EaRead : Read '(a0)' (address in r11) into r0:
23846  add lr,pc,#4
23847  mov r0,r11
23848  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
23849
23850;@ Not:
23851  mov r0,r0,asl #24
23852  mvns r1,r0,asr #24
23853  and r10,r1,#0x80000000 ;@ r10=N_flag
23854  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23855
23856;@ EaWrite: Write r1 into '(a0)' (address in r11):
23857  and r1,r1,#0xff
23858  add lr,pc,#4
23859  mov r0,r11
23860  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
23861
23862  ldrh r8,[r4],#2 ;@ Fetch next opcode
23863  subs r5,r5,#12 ;@ Subtract cycles
23864  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23865  b CycloneEnd
23866
23867;@ ---------- [4618] not.b (a0)+ uses Op4618 ----------
23868Op4618:
23869;@ EaCalc : Get '(a0)+' into r11:
23870  and r2,r8,#0x000f
23871  ldr r11,[r7,r2,lsl #2]
23872  add r3,r11,#1 ;@ Post-increment An
23873  str r3,[r7,r2,lsl #2]
23874;@ EaRead : Read '(a0)+' (address in r11) into r0:
23875  add lr,pc,#4
23876  mov r0,r11
23877  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
23878
23879;@ Not:
23880  mov r0,r0,asl #24
23881  mvns r1,r0,asr #24
23882  and r10,r1,#0x80000000 ;@ r10=N_flag
23883  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23884
23885;@ EaWrite: Write r1 into '(a0)+' (address in r11):
23886  and r1,r1,#0xff
23887  add lr,pc,#4
23888  mov r0,r11
23889  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
23890
23891  ldrh r8,[r4],#2 ;@ Fetch next opcode
23892  subs r5,r5,#12 ;@ Subtract cycles
23893  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23894  b CycloneEnd
23895
23896;@ ---------- [461f] not.b (a7)+ uses Op461f ----------
23897Op461f:
23898;@ EaCalc : Get '(a7)+' into r11:
23899  ldr r11,[r7,#0x3c] ;@ A7
23900  add r3,r11,#2 ;@ Post-increment An
23901  str r3,[r7,#0x3c] ;@ A7
23902;@ EaRead : Read '(a7)+' (address in r11) into r0:
23903  add lr,pc,#4
23904  mov r0,r11
23905  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
23906
23907;@ Not:
23908  mov r0,r0,asl #24
23909  mvns r1,r0,asr #24
23910  and r10,r1,#0x80000000 ;@ r10=N_flag
23911  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23912
23913;@ EaWrite: Write r1 into '(a7)+' (address in r11):
23914  and r1,r1,#0xff
23915  add lr,pc,#4
23916  mov r0,r11
23917  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
23918
23919  ldrh r8,[r4],#2 ;@ Fetch next opcode
23920  subs r5,r5,#12 ;@ Subtract cycles
23921  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23922  b CycloneEnd
23923
23924;@ ---------- [4620] not.b -(a0) uses Op4620 ----------
23925Op4620:
23926;@ EaCalc : Get '-(a0)' into r11:
23927  and r2,r8,#0x000f
23928  orr r2,r2,#0x8 ;@ A0-7
23929  ldr r11,[r7,r2,lsl #2]
23930  sub r11,r11,#1 ;@ Pre-decrement An
23931  str r11,[r7,r2,lsl #2]
23932;@ EaRead : Read '-(a0)' (address in r11) into r0:
23933  add lr,pc,#4
23934  mov r0,r11
23935  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
23936
23937;@ Not:
23938  mov r0,r0,asl #24
23939  mvns r1,r0,asr #24
23940  and r10,r1,#0x80000000 ;@ r10=N_flag
23941  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23942
23943;@ EaWrite: Write r1 into '-(a0)' (address in r11):
23944  and r1,r1,#0xff
23945  add lr,pc,#4
23946  mov r0,r11
23947  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
23948
23949  ldrh r8,[r4],#2 ;@ Fetch next opcode
23950  subs r5,r5,#14 ;@ Subtract cycles
23951  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23952  b CycloneEnd
23953
23954;@ ---------- [4627] not.b -(a7) uses Op4627 ----------
23955Op4627:
23956;@ EaCalc : Get '-(a7)' into r11:
23957  ldr r11,[r7,#0x3c] ;@ A7
23958  sub r11,r11,#2 ;@ Pre-decrement An
23959  str r11,[r7,#0x3c] ;@ A7
23960;@ EaRead : Read '-(a7)' (address in r11) into r0:
23961  add lr,pc,#4
23962  mov r0,r11
23963  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
23964
23965;@ Not:
23966  mov r0,r0,asl #24
23967  mvns r1,r0,asr #24
23968  and r10,r1,#0x80000000 ;@ r10=N_flag
23969  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23970
23971;@ EaWrite: Write r1 into '-(a7)' (address in r11):
23972  and r1,r1,#0xff
23973  add lr,pc,#4
23974  mov r0,r11
23975  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
23976
23977  ldrh r8,[r4],#2 ;@ Fetch next opcode
23978  subs r5,r5,#14 ;@ Subtract cycles
23979  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
23980  b CycloneEnd
23981
23982;@ ---------- [4628] not.b ($3333,a0) uses Op4628 ----------
23983Op4628:
23984;@ EaCalc : Get '($3333,a0)' into r11:
23985  ldrsh r0,[r4],#2 ;@ Fetch offset
23986  and r2,r8,#0x000f
23987  ldr r2,[r7,r2,lsl #2]
23988  add r11,r0,r2 ;@ Add on offset
23989;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
23990  add lr,pc,#4
23991  mov r0,r11
23992  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
23993
23994;@ Not:
23995  mov r0,r0,asl #24
23996  mvns r1,r0,asr #24
23997  and r10,r1,#0x80000000 ;@ r10=N_flag
23998  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
23999
24000;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
24001  and r1,r1,#0xff
24002  add lr,pc,#4
24003  mov r0,r11
24004  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
24005
24006  ldrh r8,[r4],#2 ;@ Fetch next opcode
24007  subs r5,r5,#16 ;@ Subtract cycles
24008  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24009  b CycloneEnd
24010
24011;@ ---------- [4630] not.b ($33,a0,d3.w*2) uses Op4630 ----------
24012Op4630:
24013;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
24014;@ Get extension word into r3:
24015  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
24016  mov r2,r3,lsr #10
24017  tst r3,#0x0800 ;@ Is Rn Word or Long
24018  and r2,r2,#0x3c ;@ r2=Index of Rn
24019  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
24020  ldrne   r2,[r7,r2] ;@ r2=Rn.l
24021  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
24022  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
24023  and r2,r8,#0x000f
24024  orr r2,r2,#0x8 ;@ A0-7
24025  ldr r2,[r7,r2,lsl #2]
24026  add r11,r2,r3 ;@ r11=Disp+An+Rn
24027;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
24028  add lr,pc,#4
24029  mov r0,r11
24030  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
24031
24032;@ Not:
24033  mov r0,r0,asl #24
24034  mvns r1,r0,asr #24
24035  and r10,r1,#0x80000000 ;@ r10=N_flag
24036  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24037
24038;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
24039  and r1,r1,#0xff
24040  add lr,pc,#4
24041  mov r0,r11
24042  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
24043
24044  ldrh r8,[r4],#2 ;@ Fetch next opcode
24045  subs r5,r5,#18 ;@ Subtract cycles
24046  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24047  b CycloneEnd
24048
24049;@ ---------- [4638] not.b $3333.w uses Op4638 ----------
24050Op4638:
24051;@ EaCalc : Get '$3333.w' into r11:
24052  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
24053;@ EaRead : Read '$3333.w' (address in r11) into r0:
24054  add lr,pc,#4
24055  mov r0,r11
24056  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
24057
24058;@ Not:
24059  mov r0,r0,asl #24
24060  mvns r1,r0,asr #24
24061  and r10,r1,#0x80000000 ;@ r10=N_flag
24062  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24063
24064;@ EaWrite: Write r1 into '$3333.w' (address in r11):
24065  and r1,r1,#0xff
24066  add lr,pc,#4
24067  mov r0,r11
24068  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
24069
24070  ldrh r8,[r4],#2 ;@ Fetch next opcode
24071  subs r5,r5,#16 ;@ Subtract cycles
24072  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24073  b CycloneEnd
24074
24075;@ ---------- [4639] not.b $33333333.l uses Op4639 ----------
24076Op4639:
24077;@ EaCalc : Get '$33333333.l' into r11:
24078  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
24079  ldrh r0,[r4],#2
24080  orr r11,r0,r2,lsl #16
24081;@ EaRead : Read '$33333333.l' (address in r11) into r0:
24082  add lr,pc,#4
24083  mov r0,r11
24084  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
24085
24086;@ Not:
24087  mov r0,r0,asl #24
24088  mvns r1,r0,asr #24
24089  and r10,r1,#0x80000000 ;@ r10=N_flag
24090  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24091
24092;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
24093  and r1,r1,#0xff
24094  add lr,pc,#4
24095  mov r0,r11
24096  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
24097
24098  ldrh r8,[r4],#2 ;@ Fetch next opcode
24099  subs r5,r5,#20 ;@ Subtract cycles
24100  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24101  b CycloneEnd
24102
24103;@ ---------- [4640] not.w d0 uses Op4640 ----------
24104Op4640:
24105;@ EaCalc : Get register index into r11:
24106  and r11,r8,#0x000f
24107  mov r11,r11,lsl #2
24108;@ EaRead : Read register[r11] into r0:
24109  ldr r0,[r7,r11]
24110
24111;@ Not:
24112  mov r0,r0,asl #16
24113  mvns r1,r0,asr #16
24114  and r10,r1,#0x80000000 ;@ r10=N_flag
24115  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24116
24117;@ EaWrite: r1 into register[r11]:
24118  strh r1,[r7,r11]
24119
24120  ldrh r8,[r4],#2 ;@ Fetch next opcode
24121  subs r5,r5,#4 ;@ Subtract cycles
24122  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24123  b CycloneEnd
24124
24125;@ ---------- [4650] not.w (a0) uses Op4650 ----------
24126Op4650:
24127;@ EaCalc : Get '(a0)' into r11:
24128  and r2,r8,#0x000f
24129  orr r2,r2,#0x8 ;@ A0-7
24130  ldr r11,[r7,r2,lsl #2]
24131;@ EaRead : Read '(a0)' (address in r11) into r0:
24132  add lr,pc,#4
24133  mov r0,r11
24134  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24135
24136;@ Not:
24137  mov r0,r0,asl #16
24138  mvns r1,r0,asr #16
24139  and r10,r1,#0x80000000 ;@ r10=N_flag
24140  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24141
24142;@ EaWrite: Write r1 into '(a0)' (address in r11):
24143  uxth r1,r1 ;@ zero extend
24144  add lr,pc,#4
24145  mov r0,r11
24146  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
24147
24148  ldrh r8,[r4],#2 ;@ Fetch next opcode
24149  subs r5,r5,#12 ;@ Subtract cycles
24150  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24151  b CycloneEnd
24152
24153;@ ---------- [4658] not.w (a0)+ uses Op4658 ----------
24154Op4658:
24155;@ EaCalc : Get '(a0)+' into r11:
24156  and r2,r8,#0x000f
24157  ldr r11,[r7,r2,lsl #2]
24158  add r3,r11,#2 ;@ Post-increment An
24159  str r3,[r7,r2,lsl #2]
24160;@ EaRead : Read '(a0)+' (address in r11) into r0:
24161  add lr,pc,#4
24162  mov r0,r11
24163  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24164
24165;@ Not:
24166  mov r0,r0,asl #16
24167  mvns r1,r0,asr #16
24168  and r10,r1,#0x80000000 ;@ r10=N_flag
24169  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24170
24171;@ EaWrite: Write r1 into '(a0)+' (address in r11):
24172  uxth r1,r1 ;@ zero extend
24173  add lr,pc,#4
24174  mov r0,r11
24175  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
24176
24177  ldrh r8,[r4],#2 ;@ Fetch next opcode
24178  subs r5,r5,#12 ;@ Subtract cycles
24179  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24180  b CycloneEnd
24181
24182;@ ---------- [4660] not.w -(a0) uses Op4660 ----------
24183Op4660:
24184;@ EaCalc : Get '-(a0)' into r11:
24185  and r2,r8,#0x000f
24186  orr r2,r2,#0x8 ;@ A0-7
24187  ldr r11,[r7,r2,lsl #2]
24188  sub r11,r11,#2 ;@ Pre-decrement An
24189  str r11,[r7,r2,lsl #2]
24190;@ EaRead : Read '-(a0)' (address in r11) into r0:
24191  add lr,pc,#4
24192  mov r0,r11
24193  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24194
24195;@ Not:
24196  mov r0,r0,asl #16
24197  mvns r1,r0,asr #16
24198  and r10,r1,#0x80000000 ;@ r10=N_flag
24199  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24200
24201;@ EaWrite: Write r1 into '-(a0)' (address in r11):
24202  uxth r1,r1 ;@ zero extend
24203  add lr,pc,#4
24204  mov r0,r11
24205  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
24206
24207  ldrh r8,[r4],#2 ;@ Fetch next opcode
24208  subs r5,r5,#14 ;@ Subtract cycles
24209  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24210  b CycloneEnd
24211
24212;@ ---------- [4668] not.w ($3333,a0) uses Op4668 ----------
24213Op4668:
24214;@ EaCalc : Get '($3333,a0)' into r11:
24215  ldrsh r0,[r4],#2 ;@ Fetch offset
24216  and r2,r8,#0x000f
24217  ldr r2,[r7,r2,lsl #2]
24218  add r11,r0,r2 ;@ Add on offset
24219;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
24220  add lr,pc,#4
24221  mov r0,r11
24222  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24223
24224;@ Not:
24225  mov r0,r0,asl #16
24226  mvns r1,r0,asr #16
24227  and r10,r1,#0x80000000 ;@ r10=N_flag
24228  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24229
24230;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
24231  uxth r1,r1 ;@ zero extend
24232  add lr,pc,#4
24233  mov r0,r11
24234  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
24235
24236  ldrh r8,[r4],#2 ;@ Fetch next opcode
24237  subs r5,r5,#16 ;@ Subtract cycles
24238  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24239  b CycloneEnd
24240
24241;@ ---------- [4670] not.w ($33,a0,d3.w*2) uses Op4670 ----------
24242Op4670:
24243;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
24244;@ Get extension word into r3:
24245  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
24246  mov r2,r3,lsr #10
24247  tst r3,#0x0800 ;@ Is Rn Word or Long
24248  and r2,r2,#0x3c ;@ r2=Index of Rn
24249  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
24250  ldrne   r2,[r7,r2] ;@ r2=Rn.l
24251  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
24252  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
24253  and r2,r8,#0x000f
24254  orr r2,r2,#0x8 ;@ A0-7
24255  ldr r2,[r7,r2,lsl #2]
24256  add r11,r2,r3 ;@ r11=Disp+An+Rn
24257;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
24258  add lr,pc,#4
24259  mov r0,r11
24260  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24261
24262;@ Not:
24263  mov r0,r0,asl #16
24264  mvns r1,r0,asr #16
24265  and r10,r1,#0x80000000 ;@ r10=N_flag
24266  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24267
24268;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
24269  uxth r1,r1 ;@ zero extend
24270  add lr,pc,#4
24271  mov r0,r11
24272  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
24273
24274  ldrh r8,[r4],#2 ;@ Fetch next opcode
24275  subs r5,r5,#18 ;@ Subtract cycles
24276  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24277  b CycloneEnd
24278
24279;@ ---------- [4678] not.w $3333.w uses Op4678 ----------
24280Op4678:
24281;@ EaCalc : Get '$3333.w' into r11:
24282  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
24283;@ EaRead : Read '$3333.w' (address in r11) into r0:
24284  add lr,pc,#4
24285  mov r0,r11
24286  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24287
24288;@ Not:
24289  mov r0,r0,asl #16
24290  mvns r1,r0,asr #16
24291  and r10,r1,#0x80000000 ;@ r10=N_flag
24292  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24293
24294;@ EaWrite: Write r1 into '$3333.w' (address in r11):
24295  uxth r1,r1 ;@ zero extend
24296  add lr,pc,#4
24297  mov r0,r11
24298  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
24299
24300  ldrh r8,[r4],#2 ;@ Fetch next opcode
24301  subs r5,r5,#16 ;@ Subtract cycles
24302  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24303  b CycloneEnd
24304
24305;@ ---------- [4679] not.w $33333333.l uses Op4679 ----------
24306Op4679:
24307;@ EaCalc : Get '$33333333.l' into r11:
24308  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
24309  ldrh r0,[r4],#2
24310  orr r11,r0,r2,lsl #16
24311;@ EaRead : Read '$33333333.l' (address in r11) into r0:
24312  add lr,pc,#4
24313  mov r0,r11
24314  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24315
24316;@ Not:
24317  mov r0,r0,asl #16
24318  mvns r1,r0,asr #16
24319  and r10,r1,#0x80000000 ;@ r10=N_flag
24320  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24321
24322;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
24323  uxth r1,r1 ;@ zero extend
24324  add lr,pc,#4
24325  mov r0,r11
24326  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
24327
24328  ldrh r8,[r4],#2 ;@ Fetch next opcode
24329  subs r5,r5,#20 ;@ Subtract cycles
24330  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24331  b CycloneEnd
24332
24333;@ ---------- [4680] not.l d0 uses Op4680 ----------
24334Op4680:
24335;@ EaCalc : Get register index into r11:
24336  and r11,r8,#0x000f
24337;@ EaRead : Read register[r11] into r0:
24338  ldr r0,[r7,r11,lsl #2]
24339
24340;@ Not:
24341  mvns r1,r0
24342  and r10,r1,#0x80000000 ;@ r10=N_flag
24343  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24344
24345;@ EaWrite: r1 into register[r11]:
24346  str r1,[r7,r11,lsl #2]
24347
24348  ldrh r8,[r4],#2 ;@ Fetch next opcode
24349  subs r5,r5,#6 ;@ Subtract cycles
24350  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24351  b CycloneEnd
24352
24353;@ ---------- [4690] not.l (a0) uses Op4690 ----------
24354Op4690:
24355;@ EaCalc : Get '(a0)' into r11:
24356  and r2,r8,#0x000f
24357  orr r2,r2,#0x8 ;@ A0-7
24358  ldr r11,[r7,r2,lsl #2]
24359;@ EaRead : Read '(a0)' (address in r11) into r0:
24360  add lr,pc,#4
24361  mov r0,r11
24362  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
24363
24364;@ Not:
24365  mvns r1,r0
24366  and r10,r1,#0x80000000 ;@ r10=N_flag
24367  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24368
24369;@ EaWrite: Write r1 into '(a0)' (address in r11):
24370  add lr,pc,#4
24371  mov r0,r11
24372  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
24373
24374  ldrh r8,[r4],#2 ;@ Fetch next opcode
24375  subs r5,r5,#20 ;@ Subtract cycles
24376  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24377  b CycloneEnd
24378
24379;@ ---------- [4698] not.l (a0)+ uses Op4698 ----------
24380Op4698:
24381;@ EaCalc : Get '(a0)+' into r11:
24382  and r2,r8,#0x000f
24383  ldr r11,[r7,r2,lsl #2]
24384  add r3,r11,#4 ;@ Post-increment An
24385  str r3,[r7,r2,lsl #2]
24386;@ EaRead : Read '(a0)+' (address in r11) into r0:
24387  add lr,pc,#4
24388  mov r0,r11
24389  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
24390
24391;@ Not:
24392  mvns r1,r0
24393  and r10,r1,#0x80000000 ;@ r10=N_flag
24394  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24395
24396;@ EaWrite: Write r1 into '(a0)+' (address in r11):
24397  add lr,pc,#4
24398  mov r0,r11
24399  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
24400
24401  ldrh r8,[r4],#2 ;@ Fetch next opcode
24402  subs r5,r5,#20 ;@ Subtract cycles
24403  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24404  b CycloneEnd
24405
24406;@ ---------- [46a0] not.l -(a0) uses Op46a0 ----------
24407Op46a0:
24408;@ EaCalc : Get '-(a0)' into r11:
24409  and r2,r8,#0x000f
24410  orr r2,r2,#0x8 ;@ A0-7
24411  ldr r11,[r7,r2,lsl #2]
24412  sub r11,r11,#4 ;@ Pre-decrement An
24413  str r11,[r7,r2,lsl #2]
24414;@ EaRead : Read '-(a0)' (address in r11) into r0:
24415  add lr,pc,#4
24416  mov r0,r11
24417  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
24418
24419;@ Not:
24420  mvns r1,r0
24421  and r10,r1,#0x80000000 ;@ r10=N_flag
24422  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24423
24424;@ EaWrite: Write r1 into '-(a0)' (address in r11):
24425  add lr,pc,#4
24426  mov r0,r11
24427  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
24428
24429  ldrh r8,[r4],#2 ;@ Fetch next opcode
24430  subs r5,r5,#22 ;@ Subtract cycles
24431  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24432  b CycloneEnd
24433
24434;@ ---------- [46a8] not.l ($3333,a0) uses Op46a8 ----------
24435Op46a8:
24436;@ EaCalc : Get '($3333,a0)' into r11:
24437  ldrsh r0,[r4],#2 ;@ Fetch offset
24438  and r2,r8,#0x000f
24439  ldr r2,[r7,r2,lsl #2]
24440  add r11,r0,r2 ;@ Add on offset
24441;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
24442  add lr,pc,#4
24443  mov r0,r11
24444  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
24445
24446;@ Not:
24447  mvns r1,r0
24448  and r10,r1,#0x80000000 ;@ r10=N_flag
24449  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24450
24451;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
24452  add lr,pc,#4
24453  mov r0,r11
24454  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
24455
24456  ldrh r8,[r4],#2 ;@ Fetch next opcode
24457  subs r5,r5,#24 ;@ Subtract cycles
24458  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24459  b CycloneEnd
24460
24461;@ ---------- [46b0] not.l ($33,a0,d3.w*2) uses Op46b0 ----------
24462Op46b0:
24463;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
24464;@ Get extension word into r3:
24465  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
24466  mov r2,r3,lsr #10
24467  tst r3,#0x0800 ;@ Is Rn Word or Long
24468  and r2,r2,#0x3c ;@ r2=Index of Rn
24469  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
24470  ldrne   r2,[r7,r2] ;@ r2=Rn.l
24471  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
24472  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
24473  and r2,r8,#0x000f
24474  orr r2,r2,#0x8 ;@ A0-7
24475  ldr r2,[r7,r2,lsl #2]
24476  add r11,r2,r3 ;@ r11=Disp+An+Rn
24477;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
24478  add lr,pc,#4
24479  mov r0,r11
24480  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
24481
24482;@ Not:
24483  mvns r1,r0
24484  and r10,r1,#0x80000000 ;@ r10=N_flag
24485  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24486
24487;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
24488  add lr,pc,#4
24489  mov r0,r11
24490  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
24491
24492  ldrh r8,[r4],#2 ;@ Fetch next opcode
24493  subs r5,r5,#26 ;@ Subtract cycles
24494  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24495  b CycloneEnd
24496
24497;@ ---------- [46b8] not.l $3333.w uses Op46b8 ----------
24498Op46b8:
24499;@ EaCalc : Get '$3333.w' into r11:
24500  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
24501;@ EaRead : Read '$3333.w' (address in r11) into r0:
24502  add lr,pc,#4
24503  mov r0,r11
24504  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
24505
24506;@ Not:
24507  mvns r1,r0
24508  and r10,r1,#0x80000000 ;@ r10=N_flag
24509  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24510
24511;@ EaWrite: Write r1 into '$3333.w' (address in r11):
24512  add lr,pc,#4
24513  mov r0,r11
24514  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
24515
24516  ldrh r8,[r4],#2 ;@ Fetch next opcode
24517  subs r5,r5,#24 ;@ Subtract cycles
24518  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24519  b CycloneEnd
24520
24521;@ ---------- [46b9] not.l $33333333.l uses Op46b9 ----------
24522Op46b9:
24523;@ EaCalc : Get '$33333333.l' into r11:
24524  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
24525  ldrh r0,[r4],#2
24526  orr r11,r0,r2,lsl #16
24527;@ EaRead : Read '$33333333.l' (address in r11) into r0:
24528  add lr,pc,#4
24529  mov r0,r11
24530  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
24531
24532;@ Not:
24533  mvns r1,r0
24534  and r10,r1,#0x80000000 ;@ r10=N_flag
24535  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
24536
24537;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
24538  add lr,pc,#4
24539  mov r0,r11
24540  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
24541
24542  ldrh r8,[r4],#2 ;@ Fetch next opcode
24543  subs r5,r5,#28 ;@ Subtract cycles
24544  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
24545  b CycloneEnd
24546
24547;@ ---------- [46c0] move d0, sr uses Op46c0 ----------
24548Op46c0:
24549  ldr r11,[r7,#0x44] ;@ Get SR high
24550  tst r11,#0x20 ;@ Check we are in supervisor mode
24551  beq WrongPrivilegeMode ;@ No
24552
24553;@ EaCalc : Get register index into r0:
24554  and r0,r8,#0x000f
24555;@ EaRead : Read register[r0] into r0:
24556  ldr r0,[r7,r0,lsl #2]
24557
24558  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
24559  mov r2,r0,lsl #25
24560  tst r1,#1           ;@ 1 if C!=V
24561  eorne r0,r0,#3      ;@ ___XNZCV
24562  str r2,[r7,#0x4c]   ;@ Store X bit
24563  mov r10,r0,lsl #28  ;@ r10=NZCV...
24564  mov r1,r0,ror #8
24565  and r1,r1,#0xa7 ;@ only take defined bits
24566  strb r1,[r7,#0x44] ;@ Store SR high
24567
24568;@ A7 <-> OSP?
24569  eor r0,r1,r11
24570  tst r0,#0x20
24571  beq no_sp_swap46c0
24572 ;@ swap OSP and A7:
24573  ldr r11,[r7,#0x3C] ;@ Get A7
24574  ldr r0, [r7,#0x48] ;@ Get OSP
24575  str r11,[r7,#0x48]
24576  str r0, [r7,#0x3C]
24577no_sp_swap46c0:
24578  ldrh r8,[r4],#2 ;@ Fetch next opcode
24579  ldr r1,[r7,#0x44]
24580  subs r5,r5,#12 ;@ Subtract cycles
24581;@ CheckTrace:
24582  tst r1,#0x80
24583  bne CycloneDoTraceWithChecks
24584  cmp r5,#0
24585  ble CycloneEnd
24586;@ CheckInterrupt:
24587  movs r0,r1,lsr #24 ;@ Get IRQ level
24588  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24589  cmp r0,#6 ;@ irq>6 ?
24590  andle r1,r1,#7 ;@ Get interrupt mask
24591  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
24592  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24593  b CycloneDoInterruptGoBack
24594
24595;@ ---------- [46d0] move (a0), sr uses Op46d0 ----------
24596Op46d0:
24597  ldr r11,[r7,#0x44] ;@ Get SR high
24598  tst r11,#0x20 ;@ Check we are in supervisor mode
24599  beq WrongPrivilegeMode ;@ No
24600
24601;@ EaCalc : Get '(a0)' into r0:
24602  and r2,r8,#0x000f
24603  orr r2,r2,#0x8 ;@ A0-7
24604  ldr r0,[r7,r2,lsl #2]
24605;@ EaRead : Read '(a0)' (address in r0) into r0:
24606  mov lr,pc
24607  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24608
24609  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
24610  mov r2,r0,lsl #25
24611  tst r1,#1           ;@ 1 if C!=V
24612  eorne r0,r0,#3      ;@ ___XNZCV
24613  str r2,[r7,#0x4c]   ;@ Store X bit
24614  mov r10,r0,lsl #28  ;@ r10=NZCV...
24615  mov r1,r0,ror #8
24616  and r1,r1,#0xa7 ;@ only take defined bits
24617  strb r1,[r7,#0x44] ;@ Store SR high
24618
24619;@ A7 <-> OSP?
24620  eor r0,r1,r11
24621  tst r0,#0x20
24622  beq no_sp_swap46d0
24623 ;@ swap OSP and A7:
24624  ldr r11,[r7,#0x3C] ;@ Get A7
24625  ldr r0, [r7,#0x48] ;@ Get OSP
24626  str r11,[r7,#0x48]
24627  str r0, [r7,#0x3C]
24628no_sp_swap46d0:
24629  ldrh r8,[r4],#2 ;@ Fetch next opcode
24630  ldr r1,[r7,#0x44]
24631  subs r5,r5,#16 ;@ Subtract cycles
24632;@ CheckTrace:
24633  tst r1,#0x80
24634  bne CycloneDoTraceWithChecks
24635  cmp r5,#0
24636  ble CycloneEnd
24637;@ CheckInterrupt:
24638  movs r0,r1,lsr #24 ;@ Get IRQ level
24639  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24640  cmp r0,#6 ;@ irq>6 ?
24641  andle r1,r1,#7 ;@ Get interrupt mask
24642  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
24643  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24644  b CycloneDoInterruptGoBack
24645
24646;@ ---------- [46d8] move (a0)+, sr uses Op46d8 ----------
24647Op46d8:
24648  ldr r11,[r7,#0x44] ;@ Get SR high
24649  tst r11,#0x20 ;@ Check we are in supervisor mode
24650  beq WrongPrivilegeMode ;@ No
24651
24652;@ EaCalc : Get '(a0)+' into r0:
24653  and r2,r8,#0x000f
24654  ldr r0,[r7,r2,lsl #2]
24655  add r3,r0,#2 ;@ Post-increment An
24656  str r3,[r7,r2,lsl #2]
24657;@ EaRead : Read '(a0)+' (address in r0) into r0:
24658  mov lr,pc
24659  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24660
24661  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
24662  mov r2,r0,lsl #25
24663  tst r1,#1           ;@ 1 if C!=V
24664  eorne r0,r0,#3      ;@ ___XNZCV
24665  str r2,[r7,#0x4c]   ;@ Store X bit
24666  mov r10,r0,lsl #28  ;@ r10=NZCV...
24667  mov r1,r0,ror #8
24668  and r1,r1,#0xa7 ;@ only take defined bits
24669  strb r1,[r7,#0x44] ;@ Store SR high
24670
24671;@ A7 <-> OSP?
24672  eor r0,r1,r11
24673  tst r0,#0x20
24674  beq no_sp_swap46d8
24675 ;@ swap OSP and A7:
24676  ldr r11,[r7,#0x3C] ;@ Get A7
24677  ldr r0, [r7,#0x48] ;@ Get OSP
24678  str r11,[r7,#0x48]
24679  str r0, [r7,#0x3C]
24680no_sp_swap46d8:
24681  ldrh r8,[r4],#2 ;@ Fetch next opcode
24682  ldr r1,[r7,#0x44]
24683  subs r5,r5,#16 ;@ Subtract cycles
24684;@ CheckTrace:
24685  tst r1,#0x80
24686  bne CycloneDoTraceWithChecks
24687  cmp r5,#0
24688  ble CycloneEnd
24689;@ CheckInterrupt:
24690  movs r0,r1,lsr #24 ;@ Get IRQ level
24691  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24692  cmp r0,#6 ;@ irq>6 ?
24693  andle r1,r1,#7 ;@ Get interrupt mask
24694  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
24695  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24696  b CycloneDoInterruptGoBack
24697
24698;@ ---------- [46e0] move -(a0), sr uses Op46e0 ----------
24699Op46e0:
24700  ldr r11,[r7,#0x44] ;@ Get SR high
24701  tst r11,#0x20 ;@ Check we are in supervisor mode
24702  beq WrongPrivilegeMode ;@ No
24703
24704;@ EaCalc : Get '-(a0)' into r0:
24705  and r2,r8,#0x000f
24706  orr r2,r2,#0x8 ;@ A0-7
24707  ldr r0,[r7,r2,lsl #2]
24708  sub r0,r0,#2 ;@ Pre-decrement An
24709  str r0,[r7,r2,lsl #2]
24710;@ EaRead : Read '-(a0)' (address in r0) into r0:
24711  mov lr,pc
24712  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24713
24714  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
24715  mov r2,r0,lsl #25
24716  tst r1,#1           ;@ 1 if C!=V
24717  eorne r0,r0,#3      ;@ ___XNZCV
24718  str r2,[r7,#0x4c]   ;@ Store X bit
24719  mov r10,r0,lsl #28  ;@ r10=NZCV...
24720  mov r1,r0,ror #8
24721  and r1,r1,#0xa7 ;@ only take defined bits
24722  strb r1,[r7,#0x44] ;@ Store SR high
24723
24724;@ A7 <-> OSP?
24725  eor r0,r1,r11
24726  tst r0,#0x20
24727  beq no_sp_swap46e0
24728 ;@ swap OSP and A7:
24729  ldr r11,[r7,#0x3C] ;@ Get A7
24730  ldr r0, [r7,#0x48] ;@ Get OSP
24731  str r11,[r7,#0x48]
24732  str r0, [r7,#0x3C]
24733no_sp_swap46e0:
24734  ldrh r8,[r4],#2 ;@ Fetch next opcode
24735  ldr r1,[r7,#0x44]
24736  subs r5,r5,#18 ;@ Subtract cycles
24737;@ CheckTrace:
24738  tst r1,#0x80
24739  bne CycloneDoTraceWithChecks
24740  cmp r5,#0
24741  ble CycloneEnd
24742;@ CheckInterrupt:
24743  movs r0,r1,lsr #24 ;@ Get IRQ level
24744  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24745  cmp r0,#6 ;@ irq>6 ?
24746  andle r1,r1,#7 ;@ Get interrupt mask
24747  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
24748  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24749  b CycloneDoInterruptGoBack
24750
24751;@ ---------- [46e8] move ($3333,a0), sr uses Op46e8 ----------
24752Op46e8:
24753  ldr r11,[r7,#0x44] ;@ Get SR high
24754  tst r11,#0x20 ;@ Check we are in supervisor mode
24755  beq WrongPrivilegeMode ;@ No
24756
24757;@ EaCalc : Get '($3333,a0)' into r0:
24758  ldrsh r0,[r4],#2 ;@ Fetch offset
24759  and r2,r8,#0x000f
24760  ldr r2,[r7,r2,lsl #2]
24761  add r0,r0,r2 ;@ Add on offset
24762;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
24763  mov lr,pc
24764  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24765
24766  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
24767  mov r2,r0,lsl #25
24768  tst r1,#1           ;@ 1 if C!=V
24769  eorne r0,r0,#3      ;@ ___XNZCV
24770  str r2,[r7,#0x4c]   ;@ Store X bit
24771  mov r10,r0,lsl #28  ;@ r10=NZCV...
24772  mov r1,r0,ror #8
24773  and r1,r1,#0xa7 ;@ only take defined bits
24774  strb r1,[r7,#0x44] ;@ Store SR high
24775
24776;@ A7 <-> OSP?
24777  eor r0,r1,r11
24778  tst r0,#0x20
24779  beq no_sp_swap46e8
24780 ;@ swap OSP and A7:
24781  ldr r11,[r7,#0x3C] ;@ Get A7
24782  ldr r0, [r7,#0x48] ;@ Get OSP
24783  str r11,[r7,#0x48]
24784  str r0, [r7,#0x3C]
24785no_sp_swap46e8:
24786  ldrh r8,[r4],#2 ;@ Fetch next opcode
24787  ldr r1,[r7,#0x44]
24788  subs r5,r5,#20 ;@ Subtract cycles
24789;@ CheckTrace:
24790  tst r1,#0x80
24791  bne CycloneDoTraceWithChecks
24792  cmp r5,#0
24793  ble CycloneEnd
24794;@ CheckInterrupt:
24795  movs r0,r1,lsr #24 ;@ Get IRQ level
24796  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24797  cmp r0,#6 ;@ irq>6 ?
24798  andle r1,r1,#7 ;@ Get interrupt mask
24799  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
24800  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24801  b CycloneDoInterruptGoBack
24802
24803;@ ---------- [46f0] move ($33,a0,d3.w*2), sr uses Op46f0 ----------
24804Op46f0:
24805  ldr r11,[r7,#0x44] ;@ Get SR high
24806  tst r11,#0x20 ;@ Check we are in supervisor mode
24807  beq WrongPrivilegeMode ;@ No
24808
24809;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
24810;@ Get extension word into r3:
24811  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
24812  mov r2,r3,lsr #10
24813  tst r3,#0x0800 ;@ Is Rn Word or Long
24814  and r2,r2,#0x3c ;@ r2=Index of Rn
24815  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
24816  ldrne   r2,[r7,r2] ;@ r2=Rn.l
24817  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
24818  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
24819  and r2,r8,#0x000f
24820  orr r2,r2,#0x8 ;@ A0-7
24821  ldr r2,[r7,r2,lsl #2]
24822  add r0,r2,r3 ;@ r0=Disp+An+Rn
24823;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
24824  mov lr,pc
24825  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24826
24827  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
24828  mov r2,r0,lsl #25
24829  tst r1,#1           ;@ 1 if C!=V
24830  eorne r0,r0,#3      ;@ ___XNZCV
24831  str r2,[r7,#0x4c]   ;@ Store X bit
24832  mov r10,r0,lsl #28  ;@ r10=NZCV...
24833  mov r1,r0,ror #8
24834  and r1,r1,#0xa7 ;@ only take defined bits
24835  strb r1,[r7,#0x44] ;@ Store SR high
24836
24837;@ A7 <-> OSP?
24838  eor r0,r1,r11
24839  tst r0,#0x20
24840  beq no_sp_swap46f0
24841 ;@ swap OSP and A7:
24842  ldr r11,[r7,#0x3C] ;@ Get A7
24843  ldr r0, [r7,#0x48] ;@ Get OSP
24844  str r11,[r7,#0x48]
24845  str r0, [r7,#0x3C]
24846no_sp_swap46f0:
24847  ldrh r8,[r4],#2 ;@ Fetch next opcode
24848  ldr r1,[r7,#0x44]
24849  subs r5,r5,#22 ;@ Subtract cycles
24850;@ CheckTrace:
24851  tst r1,#0x80
24852  bne CycloneDoTraceWithChecks
24853  cmp r5,#0
24854  ble CycloneEnd
24855;@ CheckInterrupt:
24856  movs r0,r1,lsr #24 ;@ Get IRQ level
24857  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24858  cmp r0,#6 ;@ irq>6 ?
24859  andle r1,r1,#7 ;@ Get interrupt mask
24860  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
24861  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24862  b CycloneDoInterruptGoBack
24863
24864;@ ---------- [46f8] move $3333.w, sr uses Op46f8 ----------
24865Op46f8:
24866  ldr r11,[r7,#0x44] ;@ Get SR high
24867  tst r11,#0x20 ;@ Check we are in supervisor mode
24868  beq WrongPrivilegeMode ;@ No
24869
24870;@ EaCalc : Get '$3333.w' into r0:
24871  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
24872;@ EaRead : Read '$3333.w' (address in r0) into r0:
24873  mov lr,pc
24874  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24875
24876  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
24877  mov r2,r0,lsl #25
24878  tst r1,#1           ;@ 1 if C!=V
24879  eorne r0,r0,#3      ;@ ___XNZCV
24880  str r2,[r7,#0x4c]   ;@ Store X bit
24881  mov r10,r0,lsl #28  ;@ r10=NZCV...
24882  mov r1,r0,ror #8
24883  and r1,r1,#0xa7 ;@ only take defined bits
24884  strb r1,[r7,#0x44] ;@ Store SR high
24885
24886;@ A7 <-> OSP?
24887  eor r0,r1,r11
24888  tst r0,#0x20
24889  beq no_sp_swap46f8
24890 ;@ swap OSP and A7:
24891  ldr r11,[r7,#0x3C] ;@ Get A7
24892  ldr r0, [r7,#0x48] ;@ Get OSP
24893  str r11,[r7,#0x48]
24894  str r0, [r7,#0x3C]
24895no_sp_swap46f8:
24896  ldrh r8,[r4],#2 ;@ Fetch next opcode
24897  ldr r1,[r7,#0x44]
24898  subs r5,r5,#20 ;@ Subtract cycles
24899;@ CheckTrace:
24900  tst r1,#0x80
24901  bne CycloneDoTraceWithChecks
24902  cmp r5,#0
24903  ble CycloneEnd
24904;@ CheckInterrupt:
24905  movs r0,r1,lsr #24 ;@ Get IRQ level
24906  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24907  cmp r0,#6 ;@ irq>6 ?
24908  andle r1,r1,#7 ;@ Get interrupt mask
24909  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
24910  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24911  b CycloneDoInterruptGoBack
24912
24913;@ ---------- [46f9] move $33333333.l, sr uses Op46f9 ----------
24914Op46f9:
24915  ldr r11,[r7,#0x44] ;@ Get SR high
24916  tst r11,#0x20 ;@ Check we are in supervisor mode
24917  beq WrongPrivilegeMode ;@ No
24918
24919;@ EaCalc : Get '$33333333.l' into r0:
24920  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
24921  ldrh r0,[r4],#2
24922  orr r0,r0,r2,lsl #16
24923;@ EaRead : Read '$33333333.l' (address in r0) into r0:
24924  mov lr,pc
24925  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
24926
24927  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
24928  mov r2,r0,lsl #25
24929  tst r1,#1           ;@ 1 if C!=V
24930  eorne r0,r0,#3      ;@ ___XNZCV
24931  str r2,[r7,#0x4c]   ;@ Store X bit
24932  mov r10,r0,lsl #28  ;@ r10=NZCV...
24933  mov r1,r0,ror #8
24934  and r1,r1,#0xa7 ;@ only take defined bits
24935  strb r1,[r7,#0x44] ;@ Store SR high
24936
24937;@ A7 <-> OSP?
24938  eor r0,r1,r11
24939  tst r0,#0x20
24940  beq no_sp_swap46f9
24941 ;@ swap OSP and A7:
24942  ldr r11,[r7,#0x3C] ;@ Get A7
24943  ldr r0, [r7,#0x48] ;@ Get OSP
24944  str r11,[r7,#0x48]
24945  str r0, [r7,#0x3C]
24946no_sp_swap46f9:
24947  ldrh r8,[r4],#2 ;@ Fetch next opcode
24948  ldr r1,[r7,#0x44]
24949  subs r5,r5,#24 ;@ Subtract cycles
24950;@ CheckTrace:
24951  tst r1,#0x80
24952  bne CycloneDoTraceWithChecks
24953  cmp r5,#0
24954  ble CycloneEnd
24955;@ CheckInterrupt:
24956  movs r0,r1,lsr #24 ;@ Get IRQ level
24957  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24958  cmp r0,#6 ;@ irq>6 ?
24959  andle r1,r1,#7 ;@ Get interrupt mask
24960  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
24961  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
24962  b CycloneDoInterruptGoBack
24963
24964;@ ---------- [46fa] move ($3333,pc), sr; =3335 uses Op46fa ----------
24965Op46fa:
24966  ldr r11,[r7,#0x44] ;@ Get SR high
24967  tst r11,#0x20 ;@ Check we are in supervisor mode
24968  beq WrongPrivilegeMode ;@ No
24969
24970;@ EaCalc : Get '($3333,pc)' into r0:
24971  ldr r0,[r7,#0x60] ;@ Get Memory base
24972  sub r0,r4,r0 ;@ Real PC
24973  ldrsh r2,[r4],#2 ;@ Fetch extension
24974  add r0,r2,r0 ;@ ($nn,PC)
24975;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
24976  mov lr,pc
24977  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
24978
24979  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
24980  mov r2,r0,lsl #25
24981  tst r1,#1           ;@ 1 if C!=V
24982  eorne r0,r0,#3      ;@ ___XNZCV
24983  str r2,[r7,#0x4c]   ;@ Store X bit
24984  mov r10,r0,lsl #28  ;@ r10=NZCV...
24985  mov r1,r0,ror #8
24986  and r1,r1,#0xa7 ;@ only take defined bits
24987  strb r1,[r7,#0x44] ;@ Store SR high
24988
24989;@ A7 <-> OSP?
24990  eor r0,r1,r11
24991  tst r0,#0x20
24992  beq no_sp_swap46fa
24993 ;@ swap OSP and A7:
24994  ldr r11,[r7,#0x3C] ;@ Get A7
24995  ldr r0, [r7,#0x48] ;@ Get OSP
24996  str r11,[r7,#0x48]
24997  str r0, [r7,#0x3C]
24998no_sp_swap46fa:
24999  ldrh r8,[r4],#2 ;@ Fetch next opcode
25000  ldr r1,[r7,#0x44]
25001  subs r5,r5,#20 ;@ Subtract cycles
25002;@ CheckTrace:
25003  tst r1,#0x80
25004  bne CycloneDoTraceWithChecks
25005  cmp r5,#0
25006  ble CycloneEnd
25007;@ CheckInterrupt:
25008  movs r0,r1,lsr #24 ;@ Get IRQ level
25009  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
25010  cmp r0,#6 ;@ irq>6 ?
25011  andle r1,r1,#7 ;@ Get interrupt mask
25012  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
25013  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
25014  b CycloneDoInterruptGoBack
25015
25016;@ ---------- [46fb] move ($33,pc,d3.w*2), sr; =35 uses Op46fb ----------
25017Op46fb:
25018  ldr r11,[r7,#0x44] ;@ Get SR high
25019  tst r11,#0x20 ;@ Check we are in supervisor mode
25020  beq WrongPrivilegeMode ;@ No
25021
25022;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
25023  ldr r0,[r7,#0x60] ;@ Get Memory base
25024  ldrh r3,[r4] ;@ Get extension word
25025  sub r0,r4,r0 ;@ r0=PC
25026  add r4,r4,#2
25027  mov r2,r3,lsr #10
25028  tst r3,#0x0800 ;@ Is Rn Word or Long
25029  and r2,r2,#0x3c ;@ r2=Index of Rn
25030  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
25031  ldrne   r2,[r7,r2] ;@ r2=Rn.l
25032  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
25033  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
25034  add r0,r2,r0 ;@ r0=Disp+PC+Rn
25035;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
25036  mov lr,pc
25037  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
25038
25039  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
25040  mov r2,r0,lsl #25
25041  tst r1,#1           ;@ 1 if C!=V
25042  eorne r0,r0,#3      ;@ ___XNZCV
25043  str r2,[r7,#0x4c]   ;@ Store X bit
25044  mov r10,r0,lsl #28  ;@ r10=NZCV...
25045  mov r1,r0,ror #8
25046  and r1,r1,#0xa7 ;@ only take defined bits
25047  strb r1,[r7,#0x44] ;@ Store SR high
25048
25049;@ A7 <-> OSP?
25050  eor r0,r1,r11
25051  tst r0,#0x20
25052  beq no_sp_swap46fb
25053 ;@ swap OSP and A7:
25054  ldr r11,[r7,#0x3C] ;@ Get A7
25055  ldr r0, [r7,#0x48] ;@ Get OSP
25056  str r11,[r7,#0x48]
25057  str r0, [r7,#0x3C]
25058no_sp_swap46fb:
25059  ldrh r8,[r4],#2 ;@ Fetch next opcode
25060  ldr r1,[r7,#0x44]
25061  subs r5,r5,#22 ;@ Subtract cycles
25062;@ CheckTrace:
25063  tst r1,#0x80
25064  bne CycloneDoTraceWithChecks
25065  cmp r5,#0
25066  ble CycloneEnd
25067;@ CheckInterrupt:
25068  movs r0,r1,lsr #24 ;@ Get IRQ level
25069  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
25070  cmp r0,#6 ;@ irq>6 ?
25071  andle r1,r1,#7 ;@ Get interrupt mask
25072  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
25073  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
25074  b CycloneDoInterruptGoBack
25075
25076;@ ---------- [46fc] move #$3333, sr uses Op46fc ----------
25077Op46fc:
25078  ldr r11,[r7,#0x44] ;@ Get SR high
25079  tst r11,#0x20 ;@ Check we are in supervisor mode
25080  beq WrongPrivilegeMode ;@ No
25081
25082;@ EaCalc : Get '#$3333' into r0:
25083  ldrsh r0,[r4],#2 ;@ Fetch immediate value
25084;@ EaRead : Read '#$3333' (address in r0) into r0:
25085
25086  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
25087  mov r2,r0,lsl #25
25088  tst r1,#1           ;@ 1 if C!=V
25089  eorne r0,r0,#3      ;@ ___XNZCV
25090  str r2,[r7,#0x4c]   ;@ Store X bit
25091  mov r10,r0,lsl #28  ;@ r10=NZCV...
25092  mov r1,r0,ror #8
25093  and r1,r1,#0xa7 ;@ only take defined bits
25094  strb r1,[r7,#0x44] ;@ Store SR high
25095
25096;@ A7 <-> OSP?
25097  eor r0,r1,r11
25098  tst r0,#0x20
25099  beq no_sp_swap46fc
25100 ;@ swap OSP and A7:
25101  ldr r11,[r7,#0x3C] ;@ Get A7
25102  ldr r0, [r7,#0x48] ;@ Get OSP
25103  str r11,[r7,#0x48]
25104  str r0, [r7,#0x3C]
25105no_sp_swap46fc:
25106  ldrh r8,[r4],#2 ;@ Fetch next opcode
25107  ldr r1,[r7,#0x44]
25108  subs r5,r5,#16 ;@ Subtract cycles
25109;@ CheckTrace:
25110  tst r1,#0x80
25111  bne CycloneDoTraceWithChecks
25112  cmp r5,#0
25113  ble CycloneEnd
25114;@ CheckInterrupt:
25115  movs r0,r1,lsr #24 ;@ Get IRQ level
25116  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
25117  cmp r0,#6 ;@ irq>6 ?
25118  andle r1,r1,#7 ;@ Get interrupt mask
25119  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
25120  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
25121  b CycloneDoInterruptGoBack
25122
25123;@ ---------- [4800] nbcd d0 uses Op4800 ----------
25124Op4800:
25125;@ EaCalc : Get register index into r6:
25126  and r6,r8,#0x000f
25127;@ EaRead : Read register[r6] into r0:
25128  ldr r0,[r7,r6,lsl #2]
25129
25130  ldr r2,[r7,#0x4c]
25131  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
25132  mov r0,r0,asl #24
25133  and r2,r2,#0x20000000
25134  add r2,r0,r2,lsr #5 ;@ add X
25135  rsb r11,r2,#0x9a000000 ;@ do arithmetic
25136  cmp r11,#0x9a000000
25137  beq finish4800
25138
25139  mvn r3,r11,lsr #31 ;@ Undefined V behavior
25140  and r2,r11,#0x0f000000
25141  cmp r2,#0x0a000000
25142  andeq r11,r11,#0xf0000000
25143  addeq r11,r11,#0x10000000
25144  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
25145  movs r1,r11,asr #24
25146  bicne r10,r10,#0x40000000 ;@ Z
25147  orr r10,r10,r3,lsl #28 ;@ save V
25148  orr r10,r10,#0x20000000 ;@ C
25149
25150;@ EaWrite: r1 into register[r6]:
25151  strb r1,[r7,r6,lsl #2]
25152
25153finish4800:
25154  tst r11,r11
25155  orrmi r10,r10,#0x80000000 ;@ N
25156  str r10,[r7,#0x4c] ;@ Save X
25157
25158  ldr r6,[r7,#0x54]
25159  ldrh r8,[r4],#2 ;@ Fetch next opcode
25160  subs r5,r5,#6 ;@ Subtract cycles
25161  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25162  b CycloneEnd
25163
25164;@ ---------- [4810] nbcd (a0) uses Op4810 ----------
25165Op4810:
25166;@ EaCalc : Get '(a0)' into r6:
25167  and r2,r8,#0x000f
25168  orr r2,r2,#0x8 ;@ A0-7
25169  ldr r6,[r7,r2,lsl #2]
25170;@ EaRead : Read '(a0)' (address in r6) into r0:
25171  add lr,pc,#4
25172  mov r0,r6
25173  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
25174
25175  ldr r2,[r7,#0x4c]
25176  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
25177  mov r0,r0,asl #24
25178  and r2,r2,#0x20000000
25179  add r2,r0,r2,lsr #5 ;@ add X
25180  rsb r11,r2,#0x9a000000 ;@ do arithmetic
25181  cmp r11,#0x9a000000
25182  beq finish4810
25183
25184  mvn r3,r11,lsr #31 ;@ Undefined V behavior
25185  and r2,r11,#0x0f000000
25186  cmp r2,#0x0a000000
25187  andeq r11,r11,#0xf0000000
25188  addeq r11,r11,#0x10000000
25189  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
25190  movs r1,r11,asr #24
25191  bicne r10,r10,#0x40000000 ;@ Z
25192  orr r10,r10,r3,lsl #28 ;@ save V
25193  orr r10,r10,#0x20000000 ;@ C
25194
25195;@ EaWrite: Write r1 into '(a0)' (address in r6):
25196  and r1,r1,#0xff
25197  add lr,pc,#4
25198  mov r0,r6
25199  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
25200
25201finish4810:
25202  tst r11,r11
25203  orrmi r10,r10,#0x80000000 ;@ N
25204  str r10,[r7,#0x4c] ;@ Save X
25205
25206  ldr r6,[r7,#0x54]
25207  ldrh r8,[r4],#2 ;@ Fetch next opcode
25208  subs r5,r5,#12 ;@ Subtract cycles
25209  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25210  b CycloneEnd
25211
25212;@ ---------- [4818] nbcd (a0)+ uses Op4818 ----------
25213Op4818:
25214;@ EaCalc : Get '(a0)+' into r6:
25215  and r2,r8,#0x000f
25216  ldr r6,[r7,r2,lsl #2]
25217  add r3,r6,#1 ;@ Post-increment An
25218  str r3,[r7,r2,lsl #2]
25219;@ EaRead : Read '(a0)+' (address in r6) into r0:
25220  add lr,pc,#4
25221  mov r0,r6
25222  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
25223
25224  ldr r2,[r7,#0x4c]
25225  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
25226  mov r0,r0,asl #24
25227  and r2,r2,#0x20000000
25228  add r2,r0,r2,lsr #5 ;@ add X
25229  rsb r11,r2,#0x9a000000 ;@ do arithmetic
25230  cmp r11,#0x9a000000
25231  beq finish4818
25232
25233  mvn r3,r11,lsr #31 ;@ Undefined V behavior
25234  and r2,r11,#0x0f000000
25235  cmp r2,#0x0a000000
25236  andeq r11,r11,#0xf0000000
25237  addeq r11,r11,#0x10000000
25238  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
25239  movs r1,r11,asr #24
25240  bicne r10,r10,#0x40000000 ;@ Z
25241  orr r10,r10,r3,lsl #28 ;@ save V
25242  orr r10,r10,#0x20000000 ;@ C
25243
25244;@ EaWrite: Write r1 into '(a0)+' (address in r6):
25245  and r1,r1,#0xff
25246  add lr,pc,#4
25247  mov r0,r6
25248  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
25249
25250finish4818:
25251  tst r11,r11
25252  orrmi r10,r10,#0x80000000 ;@ N
25253  str r10,[r7,#0x4c] ;@ Save X
25254
25255  ldr r6,[r7,#0x54]
25256  ldrh r8,[r4],#2 ;@ Fetch next opcode
25257  subs r5,r5,#12 ;@ Subtract cycles
25258  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25259  b CycloneEnd
25260
25261;@ ---------- [481f] nbcd (a7)+ uses Op481f ----------
25262Op481f:
25263;@ EaCalc : Get '(a7)+' into r6:
25264  ldr r6,[r7,#0x3c] ;@ A7
25265  add r3,r6,#2 ;@ Post-increment An
25266  str r3,[r7,#0x3c] ;@ A7
25267;@ EaRead : Read '(a7)+' (address in r6) into r0:
25268  add lr,pc,#4
25269  mov r0,r6
25270  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
25271
25272  ldr r2,[r7,#0x4c]
25273  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
25274  mov r0,r0,asl #24
25275  and r2,r2,#0x20000000
25276  add r2,r0,r2,lsr #5 ;@ add X
25277  rsb r11,r2,#0x9a000000 ;@ do arithmetic
25278  cmp r11,#0x9a000000
25279  beq finish481f
25280
25281  mvn r3,r11,lsr #31 ;@ Undefined V behavior
25282  and r2,r11,#0x0f000000
25283  cmp r2,#0x0a000000
25284  andeq r11,r11,#0xf0000000
25285  addeq r11,r11,#0x10000000
25286  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
25287  movs r1,r11,asr #24
25288  bicne r10,r10,#0x40000000 ;@ Z
25289  orr r10,r10,r3,lsl #28 ;@ save V
25290  orr r10,r10,#0x20000000 ;@ C
25291
25292;@ EaWrite: Write r1 into '(a7)+' (address in r6):
25293  and r1,r1,#0xff
25294  add lr,pc,#4
25295  mov r0,r6
25296  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
25297
25298finish481f:
25299  tst r11,r11
25300  orrmi r10,r10,#0x80000000 ;@ N
25301  str r10,[r7,#0x4c] ;@ Save X
25302
25303  ldr r6,[r7,#0x54]
25304  ldrh r8,[r4],#2 ;@ Fetch next opcode
25305  subs r5,r5,#12 ;@ Subtract cycles
25306  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25307  b CycloneEnd
25308
25309;@ ---------- [4820] nbcd -(a0) uses Op4820 ----------
25310Op4820:
25311;@ EaCalc : Get '-(a0)' into r6:
25312  and r2,r8,#0x000f
25313  orr r2,r2,#0x8 ;@ A0-7
25314  ldr r6,[r7,r2,lsl #2]
25315  sub r6,r6,#1 ;@ Pre-decrement An
25316  str r6,[r7,r2,lsl #2]
25317;@ EaRead : Read '-(a0)' (address in r6) into r0:
25318  add lr,pc,#4
25319  mov r0,r6
25320  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
25321
25322  ldr r2,[r7,#0x4c]
25323  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
25324  mov r0,r0,asl #24
25325  and r2,r2,#0x20000000
25326  add r2,r0,r2,lsr #5 ;@ add X
25327  rsb r11,r2,#0x9a000000 ;@ do arithmetic
25328  cmp r11,#0x9a000000
25329  beq finish4820
25330
25331  mvn r3,r11,lsr #31 ;@ Undefined V behavior
25332  and r2,r11,#0x0f000000
25333  cmp r2,#0x0a000000
25334  andeq r11,r11,#0xf0000000
25335  addeq r11,r11,#0x10000000
25336  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
25337  movs r1,r11,asr #24
25338  bicne r10,r10,#0x40000000 ;@ Z
25339  orr r10,r10,r3,lsl #28 ;@ save V
25340  orr r10,r10,#0x20000000 ;@ C
25341
25342;@ EaWrite: Write r1 into '-(a0)' (address in r6):
25343  and r1,r1,#0xff
25344  add lr,pc,#4
25345  mov r0,r6
25346  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
25347
25348finish4820:
25349  tst r11,r11
25350  orrmi r10,r10,#0x80000000 ;@ N
25351  str r10,[r7,#0x4c] ;@ Save X
25352
25353  ldr r6,[r7,#0x54]
25354  ldrh r8,[r4],#2 ;@ Fetch next opcode
25355  subs r5,r5,#14 ;@ Subtract cycles
25356  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25357  b CycloneEnd
25358
25359;@ ---------- [4827] nbcd -(a7) uses Op4827 ----------
25360Op4827:
25361;@ EaCalc : Get '-(a7)' into r6:
25362  ldr r6,[r7,#0x3c] ;@ A7
25363  sub r6,r6,#2 ;@ Pre-decrement An
25364  str r6,[r7,#0x3c] ;@ A7
25365;@ EaRead : Read '-(a7)' (address in r6) into r0:
25366  add lr,pc,#4
25367  mov r0,r6
25368  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
25369
25370  ldr r2,[r7,#0x4c]
25371  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
25372  mov r0,r0,asl #24
25373  and r2,r2,#0x20000000
25374  add r2,r0,r2,lsr #5 ;@ add X
25375  rsb r11,r2,#0x9a000000 ;@ do arithmetic
25376  cmp r11,#0x9a000000
25377  beq finish4827
25378
25379  mvn r3,r11,lsr #31 ;@ Undefined V behavior
25380  and r2,r11,#0x0f000000
25381  cmp r2,#0x0a000000
25382  andeq r11,r11,#0xf0000000
25383  addeq r11,r11,#0x10000000
25384  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
25385  movs r1,r11,asr #24
25386  bicne r10,r10,#0x40000000 ;@ Z
25387  orr r10,r10,r3,lsl #28 ;@ save V
25388  orr r10,r10,#0x20000000 ;@ C
25389
25390;@ EaWrite: Write r1 into '-(a7)' (address in r6):
25391  and r1,r1,#0xff
25392  add lr,pc,#4
25393  mov r0,r6
25394  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
25395
25396finish4827:
25397  tst r11,r11
25398  orrmi r10,r10,#0x80000000 ;@ N
25399  str r10,[r7,#0x4c] ;@ Save X
25400
25401  ldr r6,[r7,#0x54]
25402  ldrh r8,[r4],#2 ;@ Fetch next opcode
25403  subs r5,r5,#14 ;@ Subtract cycles
25404  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25405  b CycloneEnd
25406
25407;@ ---------- [4828] nbcd ($3333,a0) uses Op4828 ----------
25408Op4828:
25409;@ EaCalc : Get '($3333,a0)' into r6:
25410  ldrsh r0,[r4],#2 ;@ Fetch offset
25411  and r2,r8,#0x000f
25412  ldr r2,[r7,r2,lsl #2]
25413  add r6,r0,r2 ;@ Add on offset
25414;@ EaRead : Read '($3333,a0)' (address in r6) into r0:
25415  add lr,pc,#4
25416  mov r0,r6
25417  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
25418
25419  ldr r2,[r7,#0x4c]
25420  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
25421  mov r0,r0,asl #24
25422  and r2,r2,#0x20000000
25423  add r2,r0,r2,lsr #5 ;@ add X
25424  rsb r11,r2,#0x9a000000 ;@ do arithmetic
25425  cmp r11,#0x9a000000
25426  beq finish4828
25427
25428  mvn r3,r11,lsr #31 ;@ Undefined V behavior
25429  and r2,r11,#0x0f000000
25430  cmp r2,#0x0a000000
25431  andeq r11,r11,#0xf0000000
25432  addeq r11,r11,#0x10000000
25433  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
25434  movs r1,r11,asr #24
25435  bicne r10,r10,#0x40000000 ;@ Z
25436  orr r10,r10,r3,lsl #28 ;@ save V
25437  orr r10,r10,#0x20000000 ;@ C
25438
25439;@ EaWrite: Write r1 into '($3333,a0)' (address in r6):
25440  and r1,r1,#0xff
25441  add lr,pc,#4
25442  mov r0,r6
25443  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
25444
25445finish4828:
25446  tst r11,r11
25447  orrmi r10,r10,#0x80000000 ;@ N
25448  str r10,[r7,#0x4c] ;@ Save X
25449
25450  ldr r6,[r7,#0x54]
25451  ldrh r8,[r4],#2 ;@ Fetch next opcode
25452  subs r5,r5,#16 ;@ Subtract cycles
25453  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25454  b CycloneEnd
25455
25456;@ ---------- [4830] nbcd ($33,a0,d3.w*2) uses Op4830 ----------
25457Op4830:
25458;@ EaCalc : Get '($33,a0,d3.w*2)' into r6:
25459;@ Get extension word into r3:
25460  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
25461  mov r2,r3,lsr #10
25462  tst r3,#0x0800 ;@ Is Rn Word or Long
25463  and r2,r2,#0x3c ;@ r2=Index of Rn
25464  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
25465  ldrne   r2,[r7,r2] ;@ r2=Rn.l
25466  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
25467  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
25468  and r2,r8,#0x000f
25469  orr r2,r2,#0x8 ;@ A0-7
25470  ldr r2,[r7,r2,lsl #2]
25471  add r6,r2,r3 ;@ r6=Disp+An+Rn
25472;@ EaRead : Read '($33,a0,d3.w*2)' (address in r6) into r0:
25473  add lr,pc,#4
25474  mov r0,r6
25475  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
25476
25477  ldr r2,[r7,#0x4c]
25478  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
25479  mov r0,r0,asl #24
25480  and r2,r2,#0x20000000
25481  add r2,r0,r2,lsr #5 ;@ add X
25482  rsb r11,r2,#0x9a000000 ;@ do arithmetic
25483  cmp r11,#0x9a000000
25484  beq finish4830
25485
25486  mvn r3,r11,lsr #31 ;@ Undefined V behavior
25487  and r2,r11,#0x0f000000
25488  cmp r2,#0x0a000000
25489  andeq r11,r11,#0xf0000000
25490  addeq r11,r11,#0x10000000
25491  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
25492  movs r1,r11,asr #24
25493  bicne r10,r10,#0x40000000 ;@ Z
25494  orr r10,r10,r3,lsl #28 ;@ save V
25495  orr r10,r10,#0x20000000 ;@ C
25496
25497;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r6):
25498  and r1,r1,#0xff
25499  add lr,pc,#4
25500  mov r0,r6
25501  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
25502
25503finish4830:
25504  tst r11,r11
25505  orrmi r10,r10,#0x80000000 ;@ N
25506  str r10,[r7,#0x4c] ;@ Save X
25507
25508  ldr r6,[r7,#0x54]
25509  ldrh r8,[r4],#2 ;@ Fetch next opcode
25510  subs r5,r5,#18 ;@ Subtract cycles
25511  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25512  b CycloneEnd
25513
25514;@ ---------- [4838] nbcd $3333.w uses Op4838 ----------
25515Op4838:
25516;@ EaCalc : Get '$3333.w' into r6:
25517  ldrsh r6,[r4],#2 ;@ Fetch Absolute Short address
25518;@ EaRead : Read '$3333.w' (address in r6) into r0:
25519  add lr,pc,#4
25520  mov r0,r6
25521  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
25522
25523  ldr r2,[r7,#0x4c]
25524  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
25525  mov r0,r0,asl #24
25526  and r2,r2,#0x20000000
25527  add r2,r0,r2,lsr #5 ;@ add X
25528  rsb r11,r2,#0x9a000000 ;@ do arithmetic
25529  cmp r11,#0x9a000000
25530  beq finish4838
25531
25532  mvn r3,r11,lsr #31 ;@ Undefined V behavior
25533  and r2,r11,#0x0f000000
25534  cmp r2,#0x0a000000
25535  andeq r11,r11,#0xf0000000
25536  addeq r11,r11,#0x10000000
25537  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
25538  movs r1,r11,asr #24
25539  bicne r10,r10,#0x40000000 ;@ Z
25540  orr r10,r10,r3,lsl #28 ;@ save V
25541  orr r10,r10,#0x20000000 ;@ C
25542
25543;@ EaWrite: Write r1 into '$3333.w' (address in r6):
25544  and r1,r1,#0xff
25545  add lr,pc,#4
25546  mov r0,r6
25547  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
25548
25549finish4838:
25550  tst r11,r11
25551  orrmi r10,r10,#0x80000000 ;@ N
25552  str r10,[r7,#0x4c] ;@ Save X
25553
25554  ldr r6,[r7,#0x54]
25555  ldrh r8,[r4],#2 ;@ Fetch next opcode
25556  subs r5,r5,#16 ;@ Subtract cycles
25557  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25558  b CycloneEnd
25559
25560;@ ---------- [4839] nbcd $33333333.l uses Op4839 ----------
25561Op4839:
25562;@ EaCalc : Get '$33333333.l' into r6:
25563  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
25564  ldrh r0,[r4],#2
25565  orr r6,r0,r2,lsl #16
25566;@ EaRead : Read '$33333333.l' (address in r6) into r0:
25567  add lr,pc,#4
25568  mov r0,r6
25569  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
25570
25571  ldr r2,[r7,#0x4c]
25572  bic r10,r10,#0xb0000000 ;@ clear all flags, except Z
25573  mov r0,r0,asl #24
25574  and r2,r2,#0x20000000
25575  add r2,r0,r2,lsr #5 ;@ add X
25576  rsb r11,r2,#0x9a000000 ;@ do arithmetic
25577  cmp r11,#0x9a000000
25578  beq finish4839
25579
25580  mvn r3,r11,lsr #31 ;@ Undefined V behavior
25581  and r2,r11,#0x0f000000
25582  cmp r2,#0x0a000000
25583  andeq r11,r11,#0xf0000000
25584  addeq r11,r11,#0x10000000
25585  and r3,r3,r11,lsr #31 ;@ Undefined V behavior part II
25586  movs r1,r11,asr #24
25587  bicne r10,r10,#0x40000000 ;@ Z
25588  orr r10,r10,r3,lsl #28 ;@ save V
25589  orr r10,r10,#0x20000000 ;@ C
25590
25591;@ EaWrite: Write r1 into '$33333333.l' (address in r6):
25592  and r1,r1,#0xff
25593  add lr,pc,#4
25594  mov r0,r6
25595  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
25596
25597finish4839:
25598  tst r11,r11
25599  orrmi r10,r10,#0x80000000 ;@ N
25600  str r10,[r7,#0x4c] ;@ Save X
25601
25602  ldr r6,[r7,#0x54]
25603  ldrh r8,[r4],#2 ;@ Fetch next opcode
25604  subs r5,r5,#20 ;@ Subtract cycles
25605  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25606  b CycloneEnd
25607
25608;@ ---------- [4850] pea (a0) uses Op4850 ----------
25609Op4850:
25610  ldr r11,[r7,#0x3c]
25611;@ EaCalc : Get '(a0)' into r1:
25612  and r2,r8,#0x000f
25613  orr r2,r2,#0x8 ;@ A0-7
25614  ldr r1,[r7,r2,lsl #2]
25615
25616  sub r0,r11,#4 ;@ Predecrement A7
25617  str r0,[r7,#0x3c] ;@ Save A7
25618
25619  mov lr,pc
25620  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
25621
25622  ldrh r8,[r4],#2 ;@ Fetch next opcode
25623  subs r5,r5,#12 ;@ Subtract cycles
25624  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25625  b CycloneEnd
25626
25627;@ ---------- [4868] pea ($3333,a0) uses Op4868 ----------
25628Op4868:
25629  ldr r11,[r7,#0x3c]
25630;@ EaCalc : Get '($3333,a0)' into r1:
25631  ldrsh r0,[r4],#2 ;@ Fetch offset
25632  and r2,r8,#0x000f
25633  ldr r2,[r7,r2,lsl #2]
25634  add r1,r0,r2 ;@ Add on offset
25635
25636  sub r0,r11,#4 ;@ Predecrement A7
25637  str r0,[r7,#0x3c] ;@ Save A7
25638
25639  mov lr,pc
25640  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
25641
25642  ldrh r8,[r4],#2 ;@ Fetch next opcode
25643  subs r5,r5,#16 ;@ Subtract cycles
25644  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25645  b CycloneEnd
25646
25647;@ ---------- [4870] pea ($33,a0,d3.w*2) uses Op4870 ----------
25648Op4870:
25649  ldr r11,[r7,#0x3c]
25650;@ EaCalc : Get '($33,a0,d3.w*2)' into r1:
25651;@ Get extension word into r3:
25652  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
25653  mov r2,r3,lsr #10
25654  tst r3,#0x0800 ;@ Is Rn Word or Long
25655  and r2,r2,#0x3c ;@ r2=Index of Rn
25656  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
25657  ldrne   r2,[r7,r2] ;@ r2=Rn.l
25658  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
25659  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
25660  and r2,r8,#0x000f
25661  orr r2,r2,#0x8 ;@ A0-7
25662  ldr r2,[r7,r2,lsl #2]
25663  add r1,r2,r3 ;@ r1=Disp+An+Rn
25664
25665  sub r0,r11,#4 ;@ Predecrement A7
25666  str r0,[r7,#0x3c] ;@ Save A7
25667
25668  mov lr,pc
25669  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
25670
25671  ldrh r8,[r4],#2 ;@ Fetch next opcode
25672  subs r5,r5,#20 ;@ Subtract cycles
25673  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25674  b CycloneEnd
25675
25676;@ ---------- [4878] pea $3333.w uses Op4878 ----------
25677Op4878:
25678  ldr r11,[r7,#0x3c]
25679;@ EaCalc : Get '$3333.w' into r1:
25680  ldrsh r1,[r4],#2 ;@ Fetch Absolute Short address
25681
25682  sub r0,r11,#4 ;@ Predecrement A7
25683  str r0,[r7,#0x3c] ;@ Save A7
25684
25685  mov lr,pc
25686  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
25687
25688  ldrh r8,[r4],#2 ;@ Fetch next opcode
25689  subs r5,r5,#16 ;@ Subtract cycles
25690  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25691  b CycloneEnd
25692
25693;@ ---------- [4879] pea $33333333.l uses Op4879 ----------
25694Op4879:
25695  ldr r11,[r7,#0x3c]
25696;@ EaCalc : Get '$33333333.l' into r1:
25697  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
25698  ldrh r0,[r4],#2
25699  orr r1,r0,r2,lsl #16
25700
25701  sub r0,r11,#4 ;@ Predecrement A7
25702  str r0,[r7,#0x3c] ;@ Save A7
25703
25704  mov lr,pc
25705  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
25706
25707  ldrh r8,[r4],#2 ;@ Fetch next opcode
25708  subs r5,r5,#20 ;@ Subtract cycles
25709  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25710  b CycloneEnd
25711
25712;@ ---------- [487a] pea ($3333,pc); =3335 uses Op487a ----------
25713Op487a:
25714  ldr r11,[r7,#0x3c]
25715;@ EaCalc : Get '($3333,pc)' into r1:
25716  ldr r0,[r7,#0x60] ;@ Get Memory base
25717  sub r0,r4,r0 ;@ Real PC
25718  ldrsh r2,[r4],#2 ;@ Fetch extension
25719  add r1,r2,r0 ;@ ($nn,PC)
25720
25721  sub r0,r11,#4 ;@ Predecrement A7
25722  str r0,[r7,#0x3c] ;@ Save A7
25723
25724  mov lr,pc
25725  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
25726
25727  ldrh r8,[r4],#2 ;@ Fetch next opcode
25728  subs r5,r5,#16 ;@ Subtract cycles
25729  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25730  b CycloneEnd
25731
25732;@ ---------- [487b] pea ($33,pc,d3.w*2); =35 uses Op487b ----------
25733Op487b:
25734  ldr r11,[r7,#0x3c]
25735;@ EaCalc : Get '($33,pc,d3.w*2)' into r1:
25736  ldr r0,[r7,#0x60] ;@ Get Memory base
25737  ldrh r3,[r4] ;@ Get extension word
25738  sub r0,r4,r0 ;@ r0=PC
25739  add r4,r4,#2
25740  mov r2,r3,lsr #10
25741  tst r3,#0x0800 ;@ Is Rn Word or Long
25742  and r2,r2,#0x3c ;@ r2=Index of Rn
25743  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
25744  ldrne   r2,[r7,r2] ;@ r2=Rn.l
25745  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
25746  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
25747  add r1,r2,r0 ;@ r1=Disp+PC+Rn
25748
25749  sub r0,r11,#4 ;@ Predecrement A7
25750  str r0,[r7,#0x3c] ;@ Save A7
25751
25752  mov lr,pc
25753  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
25754
25755  ldrh r8,[r4],#2 ;@ Fetch next opcode
25756  subs r5,r5,#20 ;@ Subtract cycles
25757  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25758  b CycloneEnd
25759
25760;@ ---------- [4880] ext.w d0 uses Op4880 ----------
25761Op4880:
25762;@ EaCalc : Get register index into r11:
25763  and r11,r8,#0x0007
25764  mov r11,r11,lsl #2
25765;@ EaRead : Read register[r11] into r0:
25766  ldr r0,[r7,r11]
25767
25768  movs r0,r0,asl #24
25769  and r10,r0,#0x80000000 ;@ r10=N_flag
25770  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
25771  mov r1,r0,asr #24
25772
25773;@ EaWrite: r1 into register[r11]:
25774  strh r1,[r7,r11]
25775
25776  ldrh r8,[r4],#2 ;@ Fetch next opcode
25777  subs r5,r5,#4 ;@ Subtract cycles
25778  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25779  b CycloneEnd
25780
25781;@ ---------- [4890] movem.w d0-d1/d4-d5/a0-a1/a4-a5, (a0) uses Op4890 ----------
25782Op4890:
25783  ldrh r11,[r4],#2 ;@ r11=register mask
25784
25785;@ Get the address into r6:
25786;@ EaCalc : Get '(a0)' into r6:
25787  and r2,r8,#0x000f
25788  orr r2,r2,#0x8 ;@ A0-7
25789  ldr r6,[r7,r2,lsl #2]
25790  str r4,[r7,#0x40] ;@ Save PC
25791;@ r4=Register Index*4:
25792  mov r4,#-4
25793
25794  tst r11,r11
25795  beq NoRegs4890
25796
25797Movemloop4890:
25798  add r4,r4,#4 ;@ r4=Next Register
25799  movs r11,r11,lsr #1
25800  bcc Movemloop4890
25801
25802  ;@ Copy register to memory:
25803  ldr r1,[r7,r4] ;@ Load value from Dn/An
25804;@ EaWrite: Write r1 into '(a0)' (address in r6):
25805  uxth r1,r1 ;@ zero extend
25806  add lr,pc,#4
25807  mov r0,r6
25808  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
25809
25810  add r6,r6,#2 ;@ Post-increment address
25811  sub r5,r5,#4 ;@ Take some cycles
25812  tst r11,r11
25813  bne Movemloop4890
25814
25815NoRegs4890:
25816  ldr r4,[r7,#0x40]
25817  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
25818
25819  ldrh r8,[r4],#2 ;@ Fetch next opcode
25820  subs r5,r5,#8 ;@ Subtract cycles
25821  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25822  b CycloneEnd
25823
25824
25825;@ ---------- [48a0] movem.w d2-d3/d6-d7/a2-a3/a6-a7, -(a0) uses Op48a0 ----------
25826Op48a0:
25827  ldrh r11,[r4],#2 ;@ r11=register mask
25828
25829;@ Get the address into r6:
25830;@ EaCalc : Get '(a0)' into r6:
25831  and r2,r8,#0x000f
25832  orr r2,r2,#0x8 ;@ A0-7
25833  ldr r6,[r7,r2,lsl #2]
25834  str r4,[r7,#0x40] ;@ Save PC
25835;@ r4=Register Index*4:
25836  mov r4,#0x40 ;@ order reversed for -(An)
25837
25838  tst r11,r11
25839  beq NoRegs48a0
25840
25841Movemloop48a0:
25842  add r4,r4,#-4 ;@ r4=Next Register
25843  movs r11,r11,lsr #1
25844  bcc Movemloop48a0
25845
25846  sub r6,r6,#2 ;@ Pre-decrement address
25847  ;@ Copy register to memory:
25848  ldr r1,[r7,r4] ;@ Load value from Dn/An
25849;@ EaWrite: Write r1 into '-(a0)' (address in r6):
25850  uxth r1,r1 ;@ zero extend
25851  add lr,pc,#4
25852  mov r0,r6
25853  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
25854
25855  sub r5,r5,#4 ;@ Take some cycles
25856  tst r11,r11
25857  bne Movemloop48a0
25858
25859;@ Write back address:
25860;@ EaCalc : Get register index into r0:
25861  and r0,r8,#0x0007
25862  orr r0,r0,#0x8 ;@ A0-7
25863;@ EaWrite: r6 into register[r0]:
25864  str r6,[r7,r0,lsl #2]
25865
25866NoRegs48a0:
25867  ldr r4,[r7,#0x40]
25868  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
25869
25870  ldrh r8,[r4],#2 ;@ Fetch next opcode
25871  subs r5,r5,#8 ;@ Subtract cycles
25872  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25873  b CycloneEnd
25874
25875
25876;@ ---------- [48a8] movem.w d0-d1/d4-d5/a0-a1/a4-a5, ($3333,a0) uses Op48a8 ----------
25877Op48a8:
25878  ldrh r11,[r4],#2 ;@ r11=register mask
25879
25880;@ Get the address into r6:
25881;@ EaCalc : Get '($3333,a0)' into r6:
25882  ldrsh r0,[r4],#2 ;@ Fetch offset
25883  and r2,r8,#0x000f
25884  ldr r2,[r7,r2,lsl #2]
25885  add r6,r0,r2 ;@ Add on offset
25886  str r4,[r7,#0x40] ;@ Save PC
25887;@ r4=Register Index*4:
25888  mov r4,#-4
25889
25890  tst r11,r11
25891  beq NoRegs48a8
25892
25893Movemloop48a8:
25894  add r4,r4,#4 ;@ r4=Next Register
25895  movs r11,r11,lsr #1
25896  bcc Movemloop48a8
25897
25898  ;@ Copy register to memory:
25899  ldr r1,[r7,r4] ;@ Load value from Dn/An
25900;@ EaWrite: Write r1 into '($3333,a0)' (address in r6):
25901  uxth r1,r1 ;@ zero extend
25902  add lr,pc,#4
25903  mov r0,r6
25904  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
25905
25906  add r6,r6,#2 ;@ Post-increment address
25907  sub r5,r5,#4 ;@ Take some cycles
25908  tst r11,r11
25909  bne Movemloop48a8
25910
25911NoRegs48a8:
25912  ldr r4,[r7,#0x40]
25913  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
25914
25915  ldrh r8,[r4],#2 ;@ Fetch next opcode
25916  subs r5,r5,#12 ;@ Subtract cycles
25917  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25918  b CycloneEnd
25919
25920
25921;@ ---------- [48b0] movem.w d0-d1/d4-d5/a0-a1/a4-a5, ($33,a0,d3.w*2) uses Op48b0 ----------
25922Op48b0:
25923  ldrh r11,[r4],#2 ;@ r11=register mask
25924
25925;@ Get the address into r6:
25926;@ EaCalc : Get '($33,a0,d3.w*2)' into r6:
25927;@ Get extension word into r3:
25928  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
25929  mov r2,r3,lsr #10
25930  tst r3,#0x0800 ;@ Is Rn Word or Long
25931  and r2,r2,#0x3c ;@ r2=Index of Rn
25932  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
25933  ldrne   r2,[r7,r2] ;@ r2=Rn.l
25934  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
25935  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
25936  and r2,r8,#0x000f
25937  orr r2,r2,#0x8 ;@ A0-7
25938  ldr r2,[r7,r2,lsl #2]
25939  add r6,r2,r3 ;@ r6=Disp+An+Rn
25940  str r4,[r7,#0x40] ;@ Save PC
25941;@ r4=Register Index*4:
25942  mov r4,#-4
25943
25944  tst r11,r11
25945  beq NoRegs48b0
25946
25947Movemloop48b0:
25948  add r4,r4,#4 ;@ r4=Next Register
25949  movs r11,r11,lsr #1
25950  bcc Movemloop48b0
25951
25952  ;@ Copy register to memory:
25953  ldr r1,[r7,r4] ;@ Load value from Dn/An
25954;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r6):
25955  uxth r1,r1 ;@ zero extend
25956  add lr,pc,#4
25957  mov r0,r6
25958  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
25959
25960  add r6,r6,#2 ;@ Post-increment address
25961  sub r5,r5,#4 ;@ Take some cycles
25962  tst r11,r11
25963  bne Movemloop48b0
25964
25965NoRegs48b0:
25966  ldr r4,[r7,#0x40]
25967  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
25968
25969  ldrh r8,[r4],#2 ;@ Fetch next opcode
25970  subs r5,r5,#14 ;@ Subtract cycles
25971  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
25972  b CycloneEnd
25973
25974
25975;@ ---------- [48b8] movem.w d0-d1/d4-d5/a0-a1/a4-a5, $3333.w uses Op48b8 ----------
25976Op48b8:
25977  ldrh r11,[r4],#2 ;@ r11=register mask
25978
25979;@ Get the address into r6:
25980;@ EaCalc : Get '$3333.w' into r6:
25981  ldrsh r6,[r4],#2 ;@ Fetch Absolute Short address
25982  str r4,[r7,#0x40] ;@ Save PC
25983;@ r4=Register Index*4:
25984  mov r4,#-4
25985
25986  tst r11,r11
25987  beq NoRegs48b8
25988
25989Movemloop48b8:
25990  add r4,r4,#4 ;@ r4=Next Register
25991  movs r11,r11,lsr #1
25992  bcc Movemloop48b8
25993
25994  ;@ Copy register to memory:
25995  ldr r1,[r7,r4] ;@ Load value from Dn/An
25996;@ EaWrite: Write r1 into '$3333.w' (address in r6):
25997  uxth r1,r1 ;@ zero extend
25998  add lr,pc,#4
25999  mov r0,r6
26000  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
26001
26002  add r6,r6,#2 ;@ Post-increment address
26003  sub r5,r5,#4 ;@ Take some cycles
26004  tst r11,r11
26005  bne Movemloop48b8
26006
26007NoRegs48b8:
26008  ldr r4,[r7,#0x40]
26009  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
26010
26011  ldrh r8,[r4],#2 ;@ Fetch next opcode
26012  subs r5,r5,#12 ;@ Subtract cycles
26013  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26014  b CycloneEnd
26015
26016
26017;@ ---------- [48b9] movem.w d0-d1/d4-d5/a0-a1/a4-a5, $33333333.l uses Op48b9 ----------
26018Op48b9:
26019  ldrh r11,[r4],#2 ;@ r11=register mask
26020
26021;@ Get the address into r6:
26022;@ EaCalc : Get '$33333333.l' into r6:
26023  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
26024  ldrh r0,[r4],#2
26025  orr r6,r0,r2,lsl #16
26026  str r4,[r7,#0x40] ;@ Save PC
26027;@ r4=Register Index*4:
26028  mov r4,#-4
26029
26030  tst r11,r11
26031  beq NoRegs48b9
26032
26033Movemloop48b9:
26034  add r4,r4,#4 ;@ r4=Next Register
26035  movs r11,r11,lsr #1
26036  bcc Movemloop48b9
26037
26038  ;@ Copy register to memory:
26039  ldr r1,[r7,r4] ;@ Load value from Dn/An
26040;@ EaWrite: Write r1 into '$33333333.l' (address in r6):
26041  uxth r1,r1 ;@ zero extend
26042  add lr,pc,#4
26043  mov r0,r6
26044  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
26045
26046  add r6,r6,#2 ;@ Post-increment address
26047  sub r5,r5,#4 ;@ Take some cycles
26048  tst r11,r11
26049  bne Movemloop48b9
26050
26051NoRegs48b9:
26052  ldr r4,[r7,#0x40]
26053  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
26054
26055  ldrh r8,[r4],#2 ;@ Fetch next opcode
26056  subs r5,r5,#16 ;@ Subtract cycles
26057  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26058  b CycloneEnd
26059
26060
26061;@ ---------- [48c0] ext.l d0 uses Op48c0 ----------
26062Op48c0:
26063;@ EaCalc : Get register index into r11:
26064  and r11,r8,#0x0007
26065;@ EaRead : Read register[r11] into r0:
26066  ldr r0,[r7,r11,lsl #2]
26067
26068  movs r0,r0,asl #16
26069  and r10,r0,#0x80000000 ;@ r10=N_flag
26070  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26071  mov r1,r0,asr #16
26072
26073;@ EaWrite: r1 into register[r11]:
26074  str r1,[r7,r11,lsl #2]
26075
26076  ldrh r8,[r4],#2 ;@ Fetch next opcode
26077  subs r5,r5,#4 ;@ Subtract cycles
26078  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26079  b CycloneEnd
26080
26081;@ ---------- [48d0] movem.l d0-d1/d4-d5/a0-a1/a4-a5, (a0) uses Op48d0 ----------
26082Op48d0:
26083  ldrh r11,[r4],#2 ;@ r11=register mask
26084
26085;@ Get the address into r6:
26086;@ EaCalc : Get '(a0)' into r6:
26087  and r2,r8,#0x000f
26088  orr r2,r2,#0x8 ;@ A0-7
26089  ldr r6,[r7,r2,lsl #2]
26090  str r4,[r7,#0x40] ;@ Save PC
26091;@ r4=Register Index*4:
26092  mov r4,#-4
26093
26094  tst r11,r11
26095  beq NoRegs48d0
26096
26097Movemloop48d0:
26098  add r4,r4,#4 ;@ r4=Next Register
26099  movs r11,r11,lsr #1
26100  bcc Movemloop48d0
26101
26102  ;@ Copy register to memory:
26103  ldr r1,[r7,r4] ;@ Load value from Dn/An
26104;@ EaWrite: Write r1 into '(a0)' (address in r6):
26105  add lr,pc,#4
26106  mov r0,r6
26107  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
26108
26109  add r6,r6,#4 ;@ Post-increment address
26110  sub r5,r5,#8 ;@ Take some cycles
26111  tst r11,r11
26112  bne Movemloop48d0
26113
26114NoRegs48d0:
26115  ldr r4,[r7,#0x40]
26116  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
26117
26118  ldrh r8,[r4],#2 ;@ Fetch next opcode
26119  subs r5,r5,#8 ;@ Subtract cycles
26120  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26121  b CycloneEnd
26122
26123
26124;@ ---------- [48e0] movem.l d2-d3/d6-d7/a2-a3/a6-a7, -(a0) uses Op48e0 ----------
26125Op48e0:
26126  ldrh r11,[r4],#2 ;@ r11=register mask
26127
26128;@ Get the address into r6:
26129;@ EaCalc : Get '(a0)' into r6:
26130  and r2,r8,#0x000f
26131  orr r2,r2,#0x8 ;@ A0-7
26132  ldr r6,[r7,r2,lsl #2]
26133  str r4,[r7,#0x40] ;@ Save PC
26134;@ r4=Register Index*4:
26135  mov r4,#0x40 ;@ order reversed for -(An)
26136
26137  tst r11,r11
26138  beq NoRegs48e0
26139
26140Movemloop48e0:
26141  add r4,r4,#-4 ;@ r4=Next Register
26142  movs r11,r11,lsr #1
26143  bcc Movemloop48e0
26144
26145  sub r6,r6,#4 ;@ Pre-decrement address
26146  ;@ Copy register to memory:
26147  ldr r1,[r7,r4] ;@ Load value from Dn/An
26148;@ EaWrite: Write r1 into '-(a0)' (address in r6):
26149  add lr,pc,#4
26150  mov r0,r6
26151  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
26152
26153  sub r5,r5,#8 ;@ Take some cycles
26154  tst r11,r11
26155  bne Movemloop48e0
26156
26157;@ Write back address:
26158;@ EaCalc : Get register index into r0:
26159  and r0,r8,#0x0007
26160  orr r0,r0,#0x8 ;@ A0-7
26161;@ EaWrite: r6 into register[r0]:
26162  str r6,[r7,r0,lsl #2]
26163
26164NoRegs48e0:
26165  ldr r4,[r7,#0x40]
26166  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
26167
26168  ldrh r8,[r4],#2 ;@ Fetch next opcode
26169  subs r5,r5,#8 ;@ Subtract cycles
26170  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26171  b CycloneEnd
26172
26173
26174;@ ---------- [48e8] movem.l d0-d1/d4-d5/a0-a1/a4-a5, ($3333,a0) uses Op48e8 ----------
26175Op48e8:
26176  ldrh r11,[r4],#2 ;@ r11=register mask
26177
26178;@ Get the address into r6:
26179;@ EaCalc : Get '($3333,a0)' into r6:
26180  ldrsh r0,[r4],#2 ;@ Fetch offset
26181  and r2,r8,#0x000f
26182  ldr r2,[r7,r2,lsl #2]
26183  add r6,r0,r2 ;@ Add on offset
26184  str r4,[r7,#0x40] ;@ Save PC
26185;@ r4=Register Index*4:
26186  mov r4,#-4
26187
26188  tst r11,r11
26189  beq NoRegs48e8
26190
26191Movemloop48e8:
26192  add r4,r4,#4 ;@ r4=Next Register
26193  movs r11,r11,lsr #1
26194  bcc Movemloop48e8
26195
26196  ;@ Copy register to memory:
26197  ldr r1,[r7,r4] ;@ Load value from Dn/An
26198;@ EaWrite: Write r1 into '($3333,a0)' (address in r6):
26199  add lr,pc,#4
26200  mov r0,r6
26201  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
26202
26203  add r6,r6,#4 ;@ Post-increment address
26204  sub r5,r5,#8 ;@ Take some cycles
26205  tst r11,r11
26206  bne Movemloop48e8
26207
26208NoRegs48e8:
26209  ldr r4,[r7,#0x40]
26210  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
26211
26212  ldrh r8,[r4],#2 ;@ Fetch next opcode
26213  subs r5,r5,#12 ;@ Subtract cycles
26214  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26215  b CycloneEnd
26216
26217
26218;@ ---------- [48f0] movem.l d0-d1/d4-d5/a0-a1/a4-a5, ($33,a0,d3.w*2) uses Op48f0 ----------
26219Op48f0:
26220  ldrh r11,[r4],#2 ;@ r11=register mask
26221
26222;@ Get the address into r6:
26223;@ EaCalc : Get '($33,a0,d3.w*2)' into r6:
26224;@ Get extension word into r3:
26225  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
26226  mov r2,r3,lsr #10
26227  tst r3,#0x0800 ;@ Is Rn Word or Long
26228  and r2,r2,#0x3c ;@ r2=Index of Rn
26229  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
26230  ldrne   r2,[r7,r2] ;@ r2=Rn.l
26231  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
26232  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
26233  and r2,r8,#0x000f
26234  orr r2,r2,#0x8 ;@ A0-7
26235  ldr r2,[r7,r2,lsl #2]
26236  add r6,r2,r3 ;@ r6=Disp+An+Rn
26237  str r4,[r7,#0x40] ;@ Save PC
26238;@ r4=Register Index*4:
26239  mov r4,#-4
26240
26241  tst r11,r11
26242  beq NoRegs48f0
26243
26244Movemloop48f0:
26245  add r4,r4,#4 ;@ r4=Next Register
26246  movs r11,r11,lsr #1
26247  bcc Movemloop48f0
26248
26249  ;@ Copy register to memory:
26250  ldr r1,[r7,r4] ;@ Load value from Dn/An
26251;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r6):
26252  add lr,pc,#4
26253  mov r0,r6
26254  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
26255
26256  add r6,r6,#4 ;@ Post-increment address
26257  sub r5,r5,#8 ;@ Take some cycles
26258  tst r11,r11
26259  bne Movemloop48f0
26260
26261NoRegs48f0:
26262  ldr r4,[r7,#0x40]
26263  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
26264
26265  ldrh r8,[r4],#2 ;@ Fetch next opcode
26266  subs r5,r5,#14 ;@ Subtract cycles
26267  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26268  b CycloneEnd
26269
26270
26271;@ ---------- [48f8] movem.l d0-d1/d4-d5/a0-a1/a4-a5, $3333.w uses Op48f8 ----------
26272Op48f8:
26273  ldrh r11,[r4],#2 ;@ r11=register mask
26274
26275;@ Get the address into r6:
26276;@ EaCalc : Get '$3333.w' into r6:
26277  ldrsh r6,[r4],#2 ;@ Fetch Absolute Short address
26278  str r4,[r7,#0x40] ;@ Save PC
26279;@ r4=Register Index*4:
26280  mov r4,#-4
26281
26282  tst r11,r11
26283  beq NoRegs48f8
26284
26285Movemloop48f8:
26286  add r4,r4,#4 ;@ r4=Next Register
26287  movs r11,r11,lsr #1
26288  bcc Movemloop48f8
26289
26290  ;@ Copy register to memory:
26291  ldr r1,[r7,r4] ;@ Load value from Dn/An
26292;@ EaWrite: Write r1 into '$3333.w' (address in r6):
26293  add lr,pc,#4
26294  mov r0,r6
26295  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
26296
26297  add r6,r6,#4 ;@ Post-increment address
26298  sub r5,r5,#8 ;@ Take some cycles
26299  tst r11,r11
26300  bne Movemloop48f8
26301
26302NoRegs48f8:
26303  ldr r4,[r7,#0x40]
26304  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
26305
26306  ldrh r8,[r4],#2 ;@ Fetch next opcode
26307  subs r5,r5,#12 ;@ Subtract cycles
26308  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26309  b CycloneEnd
26310
26311
26312;@ ---------- [48f9] movem.l d0-d1/d4-d5/a0-a1/a4-a5, $33333333.l uses Op48f9 ----------
26313Op48f9:
26314  ldrh r11,[r4],#2 ;@ r11=register mask
26315
26316;@ Get the address into r6:
26317;@ EaCalc : Get '$33333333.l' into r6:
26318  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
26319  ldrh r0,[r4],#2
26320  orr r6,r0,r2,lsl #16
26321  str r4,[r7,#0x40] ;@ Save PC
26322;@ r4=Register Index*4:
26323  mov r4,#-4
26324
26325  tst r11,r11
26326  beq NoRegs48f9
26327
26328Movemloop48f9:
26329  add r4,r4,#4 ;@ r4=Next Register
26330  movs r11,r11,lsr #1
26331  bcc Movemloop48f9
26332
26333  ;@ Copy register to memory:
26334  ldr r1,[r7,r4] ;@ Load value from Dn/An
26335;@ EaWrite: Write r1 into '$33333333.l' (address in r6):
26336  add lr,pc,#4
26337  mov r0,r6
26338  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
26339
26340  add r6,r6,#4 ;@ Post-increment address
26341  sub r5,r5,#8 ;@ Take some cycles
26342  tst r11,r11
26343  bne Movemloop48f9
26344
26345NoRegs48f9:
26346  ldr r4,[r7,#0x40]
26347  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
26348
26349  ldrh r8,[r4],#2 ;@ Fetch next opcode
26350  subs r5,r5,#16 ;@ Subtract cycles
26351  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26352  b CycloneEnd
26353
26354
26355;@ ---------- [4a00] tst.b d0 uses Op4a00 ----------
26356Op4a00:
26357;@ EaCalc : Get register index into r0:
26358  and r0,r8,#0x000f
26359;@ EaRead : Read register[r0] into r0:
26360  ldr r0,[r7,r0,lsl #2]
26361  movs r0,r0,asl #24
26362
26363  and r10,r0,#0x80000000 ;@ r10=N_flag
26364  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26365
26366  ldrh r8,[r4],#2 ;@ Fetch next opcode
26367  subs r5,r5,#4 ;@ Subtract cycles
26368  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26369  b CycloneEnd
26370
26371;@ ---------- [4a10] tst.b (a0) uses Op4a10 ----------
26372Op4a10:
26373;@ EaCalc : Get '(a0)' into r0:
26374  and r2,r8,#0x000f
26375  orr r2,r2,#0x8 ;@ A0-7
26376  ldr r0,[r7,r2,lsl #2]
26377;@ EaRead : Read '(a0)' (address in r0) into r0:
26378  mov lr,pc
26379  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26380  movs r0,r0,asl #24
26381
26382  and r10,r0,#0x80000000 ;@ r10=N_flag
26383  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26384
26385  ldrh r8,[r4],#2 ;@ Fetch next opcode
26386  subs r5,r5,#8 ;@ Subtract cycles
26387  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26388  b CycloneEnd
26389
26390;@ ---------- [4a18] tst.b (a0)+ uses Op4a18 ----------
26391Op4a18:
26392;@ EaCalc : Get '(a0)+' into r0:
26393  and r2,r8,#0x000f
26394  ldr r0,[r7,r2,lsl #2]
26395  add r3,r0,#1 ;@ Post-increment An
26396  str r3,[r7,r2,lsl #2]
26397;@ EaRead : Read '(a0)+' (address in r0) into r0:
26398  mov lr,pc
26399  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26400  movs r0,r0,asl #24
26401
26402  and r10,r0,#0x80000000 ;@ r10=N_flag
26403  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26404
26405  ldrh r8,[r4],#2 ;@ Fetch next opcode
26406  subs r5,r5,#8 ;@ Subtract cycles
26407  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26408  b CycloneEnd
26409
26410;@ ---------- [4a1f] tst.b (a7)+ uses Op4a1f ----------
26411Op4a1f:
26412;@ EaCalc : Get '(a7)+' into r0:
26413  ldr r0,[r7,#0x3c] ;@ A7
26414  add r3,r0,#2 ;@ Post-increment An
26415  str r3,[r7,#0x3c] ;@ A7
26416;@ EaRead : Read '(a7)+' (address in r0) into r0:
26417  mov lr,pc
26418  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26419  movs r0,r0,asl #24
26420
26421  and r10,r0,#0x80000000 ;@ r10=N_flag
26422  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26423
26424  ldrh r8,[r4],#2 ;@ Fetch next opcode
26425  subs r5,r5,#8 ;@ Subtract cycles
26426  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26427  b CycloneEnd
26428
26429;@ ---------- [4a20] tst.b -(a0) uses Op4a20 ----------
26430Op4a20:
26431;@ EaCalc : Get '-(a0)' into r0:
26432  and r2,r8,#0x000f
26433  orr r2,r2,#0x8 ;@ A0-7
26434  ldr r0,[r7,r2,lsl #2]
26435  sub r0,r0,#1 ;@ Pre-decrement An
26436  str r0,[r7,r2,lsl #2]
26437;@ EaRead : Read '-(a0)' (address in r0) into r0:
26438  mov lr,pc
26439  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26440  movs r0,r0,asl #24
26441
26442  and r10,r0,#0x80000000 ;@ r10=N_flag
26443  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26444
26445  ldrh r8,[r4],#2 ;@ Fetch next opcode
26446  subs r5,r5,#10 ;@ Subtract cycles
26447  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26448  b CycloneEnd
26449
26450;@ ---------- [4a27] tst.b -(a7) uses Op4a27 ----------
26451Op4a27:
26452;@ EaCalc : Get '-(a7)' into r0:
26453  ldr r0,[r7,#0x3c] ;@ A7
26454  sub r0,r0,#2 ;@ Pre-decrement An
26455  str r0,[r7,#0x3c] ;@ A7
26456;@ EaRead : Read '-(a7)' (address in r0) into r0:
26457  mov lr,pc
26458  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26459  movs r0,r0,asl #24
26460
26461  and r10,r0,#0x80000000 ;@ r10=N_flag
26462  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26463
26464  ldrh r8,[r4],#2 ;@ Fetch next opcode
26465  subs r5,r5,#10 ;@ Subtract cycles
26466  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26467  b CycloneEnd
26468
26469;@ ---------- [4a30] tst.b ($33,a0,d3.w*2) uses Op4a30 ----------
26470Op4a30:
26471;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
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 r0,r2,r3 ;@ r0=Disp+An+Rn
26485;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
26486  mov lr,pc
26487  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26488  movs r0,r0,asl #24
26489
26490  and r10,r0,#0x80000000 ;@ r10=N_flag
26491  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26492
26493  ldrh r8,[r4],#2 ;@ Fetch next opcode
26494  subs r5,r5,#14 ;@ Subtract cycles
26495  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26496  b CycloneEnd
26497
26498;@ ---------- [4a40] tst.w d0 uses Op4a40 ----------
26499Op4a40:
26500;@ EaCalc : Get register index into r0:
26501  and r0,r8,#0x000f
26502  mov r0,r0,lsl #2
26503;@ EaRead : Read register[r0] into r0:
26504  ldr r0,[r7,r0]
26505  movs r0,r0,asl #16
26506
26507  and r10,r0,#0x80000000 ;@ r10=N_flag
26508  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26509
26510  ldrh r8,[r4],#2 ;@ Fetch next opcode
26511  subs r5,r5,#4 ;@ Subtract cycles
26512  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26513  b CycloneEnd
26514
26515;@ ---------- [4a50] tst.w (a0) uses Op4a50 ----------
26516Op4a50:
26517;@ EaCalc : Get '(a0)' into r0:
26518  and r2,r8,#0x000f
26519  orr r2,r2,#0x8 ;@ A0-7
26520  ldr r0,[r7,r2,lsl #2]
26521;@ EaRead : Read '(a0)' (address in r0) into r0:
26522  mov lr,pc
26523  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
26524  movs r0,r0,asl #16
26525
26526  and r10,r0,#0x80000000 ;@ r10=N_flag
26527  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26528
26529  ldrh r8,[r4],#2 ;@ Fetch next opcode
26530  subs r5,r5,#8 ;@ Subtract cycles
26531  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26532  b CycloneEnd
26533
26534;@ ---------- [4a58] tst.w (a0)+ uses Op4a58 ----------
26535Op4a58:
26536;@ EaCalc : Get '(a0)+' into r0:
26537  and r2,r8,#0x000f
26538  ldr r0,[r7,r2,lsl #2]
26539  add r3,r0,#2 ;@ Post-increment An
26540  str r3,[r7,r2,lsl #2]
26541;@ EaRead : Read '(a0)+' (address in r0) into r0:
26542  mov lr,pc
26543  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
26544  movs r0,r0,asl #16
26545
26546  and r10,r0,#0x80000000 ;@ r10=N_flag
26547  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26548
26549  ldrh r8,[r4],#2 ;@ Fetch next opcode
26550  subs r5,r5,#8 ;@ Subtract cycles
26551  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26552  b CycloneEnd
26553
26554;@ ---------- [4a60] tst.w -(a0) uses Op4a60 ----------
26555Op4a60:
26556;@ EaCalc : Get '-(a0)' into r0:
26557  and r2,r8,#0x000f
26558  orr r2,r2,#0x8 ;@ A0-7
26559  ldr r0,[r7,r2,lsl #2]
26560  sub r0,r0,#2 ;@ Pre-decrement An
26561  str r0,[r7,r2,lsl #2]
26562;@ EaRead : Read '-(a0)' (address in r0) into r0:
26563  mov lr,pc
26564  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
26565  movs r0,r0,asl #16
26566
26567  and r10,r0,#0x80000000 ;@ r10=N_flag
26568  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26569
26570  ldrh r8,[r4],#2 ;@ Fetch next opcode
26571  subs r5,r5,#10 ;@ Subtract cycles
26572  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26573  b CycloneEnd
26574
26575;@ ---------- [4a68] tst.w ($3333,a0) uses Op4a68 ----------
26576Op4a68:
26577;@ EaCalc : Get '($3333,a0)' into r0:
26578  ldrsh r0,[r4],#2 ;@ Fetch offset
26579  and r2,r8,#0x000f
26580  ldr r2,[r7,r2,lsl #2]
26581  add r0,r0,r2 ;@ Add on offset
26582;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
26583  mov lr,pc
26584  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
26585  movs r0,r0,asl #16
26586
26587  and r10,r0,#0x80000000 ;@ r10=N_flag
26588  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26589
26590  ldrh r8,[r4],#2 ;@ Fetch next opcode
26591  subs r5,r5,#12 ;@ Subtract cycles
26592  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26593  b CycloneEnd
26594
26595;@ ---------- [4a70] tst.w ($33,a0,d3.w*2) uses Op4a70 ----------
26596Op4a70:
26597;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
26598;@ Get extension word into r3:
26599  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
26600  mov r2,r3,lsr #10
26601  tst r3,#0x0800 ;@ Is Rn Word or Long
26602  and r2,r2,#0x3c ;@ r2=Index of Rn
26603  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
26604  ldrne   r2,[r7,r2] ;@ r2=Rn.l
26605  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
26606  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
26607  and r2,r8,#0x000f
26608  orr r2,r2,#0x8 ;@ A0-7
26609  ldr r2,[r7,r2,lsl #2]
26610  add r0,r2,r3 ;@ r0=Disp+An+Rn
26611;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
26612  mov lr,pc
26613  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
26614  movs r0,r0,asl #16
26615
26616  and r10,r0,#0x80000000 ;@ r10=N_flag
26617  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26618
26619  ldrh r8,[r4],#2 ;@ Fetch next opcode
26620  subs r5,r5,#14 ;@ Subtract cycles
26621  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26622  b CycloneEnd
26623
26624;@ ---------- [4a78] tst.w $3333.w uses Op4a78 ----------
26625Op4a78:
26626;@ EaCalc : Get '$3333.w' into r0:
26627  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
26628;@ EaRead : Read '$3333.w' (address in r0) into r0:
26629  mov lr,pc
26630  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
26631  movs r0,r0,asl #16
26632
26633  and r10,r0,#0x80000000 ;@ r10=N_flag
26634  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26635
26636  ldrh r8,[r4],#2 ;@ Fetch next opcode
26637  subs r5,r5,#12 ;@ Subtract cycles
26638  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26639  b CycloneEnd
26640
26641;@ ---------- [4a80] tst.l d0 uses Op4a80 ----------
26642Op4a80:
26643;@ EaCalc : Get register index into r0:
26644  and r0,r8,#0x000f
26645;@ EaRead : Read register[r0] into r0:
26646  ldr r0,[r7,r0,lsl #2]
26647  tst r0,r0
26648
26649  and r10,r0,#0x80000000 ;@ r10=N_flag
26650  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26651
26652  ldrh r8,[r4],#2 ;@ Fetch next opcode
26653  subs r5,r5,#4 ;@ Subtract cycles
26654  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26655  b CycloneEnd
26656
26657;@ ---------- [4a90] tst.l (a0) uses Op4a90 ----------
26658Op4a90:
26659;@ EaCalc : Get '(a0)' into r0:
26660  and r2,r8,#0x000f
26661  orr r2,r2,#0x8 ;@ A0-7
26662  ldr r0,[r7,r2,lsl #2]
26663;@ EaRead : Read '(a0)' (address in r0) into r0:
26664  mov lr,pc
26665  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
26666  tst r0,r0
26667
26668  and r10,r0,#0x80000000 ;@ r10=N_flag
26669  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26670
26671  ldrh r8,[r4],#2 ;@ Fetch next opcode
26672  subs r5,r5,#12 ;@ Subtract cycles
26673  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26674  b CycloneEnd
26675
26676;@ ---------- [4a98] tst.l (a0)+ uses Op4a98 ----------
26677Op4a98:
26678;@ EaCalc : Get '(a0)+' into r0:
26679  and r2,r8,#0x000f
26680  ldr r0,[r7,r2,lsl #2]
26681  add r3,r0,#4 ;@ Post-increment An
26682  str r3,[r7,r2,lsl #2]
26683;@ EaRead : Read '(a0)+' (address in r0) into r0:
26684  mov lr,pc
26685  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
26686  tst r0,r0
26687
26688  and r10,r0,#0x80000000 ;@ r10=N_flag
26689  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26690
26691  ldrh r8,[r4],#2 ;@ Fetch next opcode
26692  subs r5,r5,#12 ;@ Subtract cycles
26693  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26694  b CycloneEnd
26695
26696;@ ---------- [4aa0] tst.l -(a0) uses Op4aa0 ----------
26697Op4aa0:
26698;@ EaCalc : Get '-(a0)' into r0:
26699  and r2,r8,#0x000f
26700  orr r2,r2,#0x8 ;@ A0-7
26701  ldr r0,[r7,r2,lsl #2]
26702  sub r0,r0,#4 ;@ Pre-decrement An
26703  str r0,[r7,r2,lsl #2]
26704;@ EaRead : Read '-(a0)' (address in r0) into r0:
26705  mov lr,pc
26706  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
26707  tst r0,r0
26708
26709  and r10,r0,#0x80000000 ;@ r10=N_flag
26710  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26711
26712  ldrh r8,[r4],#2 ;@ Fetch next opcode
26713  subs r5,r5,#14 ;@ Subtract cycles
26714  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26715  b CycloneEnd
26716
26717;@ ---------- [4aa8] tst.l ($3333,a0) uses Op4aa8 ----------
26718Op4aa8:
26719;@ EaCalc : Get '($3333,a0)' into r0:
26720  ldrsh r0,[r4],#2 ;@ Fetch offset
26721  and r2,r8,#0x000f
26722  ldr r2,[r7,r2,lsl #2]
26723  add r0,r0,r2 ;@ Add on offset
26724;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
26725  mov lr,pc
26726  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
26727  tst r0,r0
26728
26729  and r10,r0,#0x80000000 ;@ r10=N_flag
26730  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26731
26732  ldrh r8,[r4],#2 ;@ Fetch next opcode
26733  subs r5,r5,#16 ;@ Subtract cycles
26734  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26735  b CycloneEnd
26736
26737;@ ---------- [4ab0] tst.l ($33,a0,d3.w*2) uses Op4ab0 ----------
26738Op4ab0:
26739;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
26740;@ Get extension word into r3:
26741  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
26742  mov r2,r3,lsr #10
26743  tst r3,#0x0800 ;@ Is Rn Word or Long
26744  and r2,r2,#0x3c ;@ r2=Index of Rn
26745  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
26746  ldrne   r2,[r7,r2] ;@ r2=Rn.l
26747  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
26748  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
26749  and r2,r8,#0x000f
26750  orr r2,r2,#0x8 ;@ A0-7
26751  ldr r2,[r7,r2,lsl #2]
26752  add r0,r2,r3 ;@ r0=Disp+An+Rn
26753;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
26754  mov lr,pc
26755  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
26756  tst r0,r0
26757
26758  and r10,r0,#0x80000000 ;@ r10=N_flag
26759  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26760
26761  ldrh r8,[r4],#2 ;@ Fetch next opcode
26762  subs r5,r5,#18 ;@ Subtract cycles
26763  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26764  b CycloneEnd
26765
26766;@ ---------- [4ab8] tst.l $3333.w uses Op4ab8 ----------
26767Op4ab8:
26768;@ EaCalc : Get '$3333.w' into r0:
26769  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
26770;@ EaRead : Read '$3333.w' (address in r0) into r0:
26771  mov lr,pc
26772  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
26773  tst r0,r0
26774
26775  and r10,r0,#0x80000000 ;@ r10=N_flag
26776  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26777
26778  ldrh r8,[r4],#2 ;@ Fetch next opcode
26779  subs r5,r5,#16 ;@ Subtract cycles
26780  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26781  b CycloneEnd
26782
26783;@ ---------- [4ab9] tst.l $33333333.l uses Op4ab9 ----------
26784Op4ab9:
26785;@ EaCalc : Get '$33333333.l' into r0:
26786  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
26787  ldrh r0,[r4],#2
26788  orr r0,r0,r2,lsl #16
26789;@ EaRead : Read '$33333333.l' (address in r0) into r0:
26790  mov lr,pc
26791  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
26792  tst r0,r0
26793
26794  and r10,r0,#0x80000000 ;@ r10=N_flag
26795  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26796
26797  ldrh r8,[r4],#2 ;@ Fetch next opcode
26798  subs r5,r5,#20 ;@ Subtract cycles
26799  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26800  b CycloneEnd
26801
26802;@ ---------- [4ac0] tas d0 uses Op4ac0 ----------
26803Op4ac0:
26804;@ EaCalc : Get register index into r11:
26805  and r11,r8,#0x000f
26806;@ EaRead : Read register[r11] into r1:
26807  ldr r1,[r7,r11,lsl #2]
26808  movs r1,r1,asl #24
26809
26810  and r10,r1,#0x80000000 ;@ r10=N_flag
26811  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26812
26813  orr r1,r1,#0x80000000 ;@ set bit7
26814;@ EaWrite: r1 into register[r11]:
26815  mov r1,r1,lsr #24
26816  strb r1,[r7,r11,lsl #2]
26817
26818  ldrh r8,[r4],#2 ;@ Fetch next opcode
26819  subs r5,r5,#4 ;@ Subtract cycles
26820  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26821  b CycloneEnd
26822
26823;@ ---------- [4ad0] tas (a0) uses Op4ad0 ----------
26824Op4ad0:
26825;@ EaCalc : Get '(a0)' into r11:
26826  and r2,r8,#0x000f
26827  orr r2,r2,#0x8 ;@ A0-7
26828  ldr r11,[r7,r2,lsl #2]
26829;@ EaRead : Read '(a0)' (address in r11) into r1:
26830  add lr,pc,#4
26831  mov r0,r11
26832  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26833  movs r1,r0,asl #24
26834
26835  and r10,r1,#0x80000000 ;@ r10=N_flag
26836  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26837
26838  orr r1,r1,#0x80000000 ;@ set bit7
26839;@ EaWrite: Write r1 into '(a0)' (address in r11):
26840  mov r1,r1,lsr #24
26841  add lr,pc,#4
26842  mov r0,r11
26843  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
26844
26845  ldrh r8,[r4],#2 ;@ Fetch next opcode
26846  subs r5,r5,#18 ;@ Subtract cycles
26847  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26848  b CycloneEnd
26849
26850;@ ---------- [4ad8] tas (a0)+ uses Op4ad8 ----------
26851Op4ad8:
26852;@ EaCalc : Get '(a0)+' into r11:
26853  and r2,r8,#0x000f
26854  ldr r11,[r7,r2,lsl #2]
26855  add r3,r11,#1 ;@ Post-increment An
26856  str r3,[r7,r2,lsl #2]
26857;@ EaRead : Read '(a0)+' (address in r11) into r1:
26858  add lr,pc,#4
26859  mov r0,r11
26860  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26861  movs r1,r0,asl #24
26862
26863  and r10,r1,#0x80000000 ;@ r10=N_flag
26864  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26865
26866  orr r1,r1,#0x80000000 ;@ set bit7
26867;@ EaWrite: Write r1 into '(a0)+' (address in r11):
26868  mov r1,r1,lsr #24
26869  add lr,pc,#4
26870  mov r0,r11
26871  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
26872
26873  ldrh r8,[r4],#2 ;@ Fetch next opcode
26874  subs r5,r5,#18 ;@ Subtract cycles
26875  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26876  b CycloneEnd
26877
26878;@ ---------- [4adf] tas (a7)+ uses Op4adf ----------
26879Op4adf:
26880;@ EaCalc : Get '(a7)+' into r11:
26881  ldr r11,[r7,#0x3c] ;@ A7
26882  add r3,r11,#2 ;@ Post-increment An
26883  str r3,[r7,#0x3c] ;@ A7
26884;@ EaRead : Read '(a7)+' (address in r11) into r1:
26885  add lr,pc,#4
26886  mov r0,r11
26887  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26888  movs r1,r0,asl #24
26889
26890  and r10,r1,#0x80000000 ;@ r10=N_flag
26891  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26892
26893  orr r1,r1,#0x80000000 ;@ set bit7
26894;@ EaWrite: Write r1 into '(a7)+' (address in r11):
26895  mov r1,r1,lsr #24
26896  add lr,pc,#4
26897  mov r0,r11
26898  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
26899
26900  ldrh r8,[r4],#2 ;@ Fetch next opcode
26901  subs r5,r5,#18 ;@ Subtract cycles
26902  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26903  b CycloneEnd
26904
26905;@ ---------- [4ae0] tas -(a0) uses Op4ae0 ----------
26906Op4ae0:
26907;@ EaCalc : Get '-(a0)' into r11:
26908  and r2,r8,#0x000f
26909  orr r2,r2,#0x8 ;@ A0-7
26910  ldr r11,[r7,r2,lsl #2]
26911  sub r11,r11,#1 ;@ Pre-decrement An
26912  str r11,[r7,r2,lsl #2]
26913;@ EaRead : Read '-(a0)' (address in r11) into r1:
26914  add lr,pc,#4
26915  mov r0,r11
26916  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26917  movs r1,r0,asl #24
26918
26919  and r10,r1,#0x80000000 ;@ r10=N_flag
26920  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26921
26922  orr r1,r1,#0x80000000 ;@ set bit7
26923;@ EaWrite: Write r1 into '-(a0)' (address in r11):
26924  mov r1,r1,lsr #24
26925  add lr,pc,#4
26926  mov r0,r11
26927  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
26928
26929  ldrh r8,[r4],#2 ;@ Fetch next opcode
26930  subs r5,r5,#20 ;@ Subtract cycles
26931  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26932  b CycloneEnd
26933
26934;@ ---------- [4ae7] tas -(a7) uses Op4ae7 ----------
26935Op4ae7:
26936;@ EaCalc : Get '-(a7)' into r11:
26937  ldr r11,[r7,#0x3c] ;@ A7
26938  sub r11,r11,#2 ;@ Pre-decrement An
26939  str r11,[r7,#0x3c] ;@ A7
26940;@ EaRead : Read '-(a7)' (address in r11) into r1:
26941  add lr,pc,#4
26942  mov r0,r11
26943  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26944  movs r1,r0,asl #24
26945
26946  and r10,r1,#0x80000000 ;@ r10=N_flag
26947  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26948
26949  orr r1,r1,#0x80000000 ;@ set bit7
26950;@ EaWrite: Write r1 into '-(a7)' (address in r11):
26951  mov r1,r1,lsr #24
26952  add lr,pc,#4
26953  mov r0,r11
26954  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
26955
26956  ldrh r8,[r4],#2 ;@ Fetch next opcode
26957  subs r5,r5,#20 ;@ Subtract cycles
26958  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26959  b CycloneEnd
26960
26961;@ ---------- [4ae8] tas ($3333,a0) uses Op4ae8 ----------
26962Op4ae8:
26963;@ EaCalc : Get '($3333,a0)' into r11:
26964  ldrsh r0,[r4],#2 ;@ Fetch offset
26965  and r2,r8,#0x000f
26966  ldr r2,[r7,r2,lsl #2]
26967  add r11,r0,r2 ;@ Add on offset
26968;@ EaRead : Read '($3333,a0)' (address in r11) into r1:
26969  add lr,pc,#4
26970  mov r0,r11
26971  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
26972  movs r1,r0,asl #24
26973
26974  and r10,r1,#0x80000000 ;@ r10=N_flag
26975  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
26976
26977  orr r1,r1,#0x80000000 ;@ set bit7
26978;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
26979  mov r1,r1,lsr #24
26980  add lr,pc,#4
26981  mov r0,r11
26982  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
26983
26984  ldrh r8,[r4],#2 ;@ Fetch next opcode
26985  subs r5,r5,#22 ;@ Subtract cycles
26986  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
26987  b CycloneEnd
26988
26989;@ ---------- [4af0] tas ($33,a0,d3.w*2) uses Op4af0 ----------
26990Op4af0:
26991;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
26992;@ Get extension word into r3:
26993  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
26994  mov r2,r3,lsr #10
26995  tst r3,#0x0800 ;@ Is Rn Word or Long
26996  and r2,r2,#0x3c ;@ r2=Index of Rn
26997  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
26998  ldrne   r2,[r7,r2] ;@ r2=Rn.l
26999  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
27000  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
27001  and r2,r8,#0x000f
27002  orr r2,r2,#0x8 ;@ A0-7
27003  ldr r2,[r7,r2,lsl #2]
27004  add r11,r2,r3 ;@ r11=Disp+An+Rn
27005;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r1:
27006  add lr,pc,#4
27007  mov r0,r11
27008  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
27009  movs r1,r0,asl #24
27010
27011  and r10,r1,#0x80000000 ;@ r10=N_flag
27012  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27013
27014  orr r1,r1,#0x80000000 ;@ set bit7
27015;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
27016  mov r1,r1,lsr #24
27017  add lr,pc,#4
27018  mov r0,r11
27019  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
27020
27021  ldrh r8,[r4],#2 ;@ Fetch next opcode
27022  subs r5,r5,#24 ;@ Subtract cycles
27023  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27024  b CycloneEnd
27025
27026;@ ---------- [4af8] tas $3333.w uses Op4af8 ----------
27027Op4af8:
27028;@ EaCalc : Get '$3333.w' into r11:
27029  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
27030;@ EaRead : Read '$3333.w' (address in r11) into r1:
27031  add lr,pc,#4
27032  mov r0,r11
27033  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
27034  movs r1,r0,asl #24
27035
27036  and r10,r1,#0x80000000 ;@ r10=N_flag
27037  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27038
27039  orr r1,r1,#0x80000000 ;@ set bit7
27040;@ EaWrite: Write r1 into '$3333.w' (address in r11):
27041  mov r1,r1,lsr #24
27042  add lr,pc,#4
27043  mov r0,r11
27044  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
27045
27046  ldrh r8,[r4],#2 ;@ Fetch next opcode
27047  subs r5,r5,#22 ;@ Subtract cycles
27048  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27049  b CycloneEnd
27050
27051;@ ---------- [4af9] tas $33333333.l uses Op4af9 ----------
27052Op4af9:
27053;@ EaCalc : Get '$33333333.l' into r11:
27054  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
27055  ldrh r0,[r4],#2
27056  orr r11,r0,r2,lsl #16
27057;@ EaRead : Read '$33333333.l' (address in r11) into r1:
27058  add lr,pc,#4
27059  mov r0,r11
27060  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
27061  movs r1,r0,asl #24
27062
27063  and r10,r1,#0x80000000 ;@ r10=N_flag
27064  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
27065
27066  orr r1,r1,#0x80000000 ;@ set bit7
27067;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
27068  mov r1,r1,lsr #24
27069  add lr,pc,#4
27070  mov r0,r11
27071  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
27072
27073  ldrh r8,[r4],#2 ;@ Fetch next opcode
27074  subs r5,r5,#26 ;@ Subtract cycles
27075  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27076  b CycloneEnd
27077
27078;@ ---------- [4c90] movem.w (a0), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4c90 ----------
27079Op4c90:
27080  ldrh r11,[r4],#2 ;@ r11=register mask
27081
27082;@ Get the address into r6:
27083;@ EaCalc : Get '(a0)' into r6:
27084  and r2,r8,#0x000f
27085  orr r2,r2,#0x8 ;@ A0-7
27086  ldr r6,[r7,r2,lsl #2]
27087  str r4,[r7,#0x40] ;@ Save PC
27088;@ r4=Register Index*4:
27089  mov r4,#-4
27090
27091  tst r11,r11
27092  beq NoRegs4c90
27093
27094Movemloop4c90:
27095  add r4,r4,#4 ;@ r4=Next Register
27096  movs r11,r11,lsr #1
27097  bcc Movemloop4c90
27098
27099  ;@ Copy memory to register:
27100;@ EaRead : Read '(a0)' (address in r6) into r0:
27101  add lr,pc,#4
27102  mov r0,r6
27103  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
27104  sxth r0,r0 ;@ sign extend
27105
27106  str r0,[r7,r4] ;@ Save value into Dn/An
27107  add r6,r6,#2 ;@ Post-increment address
27108  sub r5,r5,#4 ;@ Take some cycles
27109  tst r11,r11
27110  bne Movemloop4c90
27111
27112NoRegs4c90:
27113  ldr r4,[r7,#0x40]
27114  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27115
27116  ldrh r8,[r4],#2 ;@ Fetch next opcode
27117  subs r5,r5,#12 ;@ Subtract cycles
27118  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27119  b CycloneEnd
27120
27121
27122;@ ---------- [4c98] movem.w (a0)+, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4c98 ----------
27123Op4c98:
27124  ldrh r11,[r4],#2 ;@ r11=register mask
27125
27126;@ Get the address into r6:
27127;@ EaCalc : Get '(a0)' into r6:
27128  and r2,r8,#0x000f
27129  ldr r6,[r7,r2,lsl #2]
27130  str r4,[r7,#0x40] ;@ Save PC
27131;@ r4=Register Index*4:
27132  mov r4,#-4
27133
27134  tst r11,r11
27135  beq NoRegs4c98
27136
27137Movemloop4c98:
27138  add r4,r4,#4 ;@ r4=Next Register
27139  movs r11,r11,lsr #1
27140  bcc Movemloop4c98
27141
27142  ;@ Copy memory to register:
27143;@ EaRead : Read '(a0)+' (address in r6) into r0:
27144  add lr,pc,#4
27145  mov r0,r6
27146  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
27147  sxth r0,r0 ;@ sign extend
27148
27149  str r0,[r7,r4] ;@ Save value into Dn/An
27150  add r6,r6,#2 ;@ Post-increment address
27151  sub r5,r5,#4 ;@ Take some cycles
27152  tst r11,r11
27153  bne Movemloop4c98
27154
27155;@ Write back address:
27156;@ EaCalc : Get register index into r0:
27157  and r0,r8,#0x000f
27158;@ EaWrite: r6 into register[r0]:
27159  str r6,[r7,r0,lsl #2]
27160
27161NoRegs4c98:
27162  ldr r4,[r7,#0x40]
27163  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27164
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
27171;@ ---------- [4ca8] movem.w ($3333,a0), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4ca8 ----------
27172Op4ca8:
27173  ldrh r11,[r4],#2 ;@ r11=register mask
27174
27175;@ Get the address into r6:
27176;@ EaCalc : Get '($3333,a0)' into r6:
27177  ldrsh r0,[r4],#2 ;@ Fetch offset
27178  and r2,r8,#0x000f
27179  ldr r2,[r7,r2,lsl #2]
27180  add r6,r0,r2 ;@ Add on offset
27181  str r4,[r7,#0x40] ;@ Save PC
27182;@ r4=Register Index*4:
27183  mov r4,#-4
27184
27185  tst r11,r11
27186  beq NoRegs4ca8
27187
27188Movemloop4ca8:
27189  add r4,r4,#4 ;@ r4=Next Register
27190  movs r11,r11,lsr #1
27191  bcc Movemloop4ca8
27192
27193  ;@ Copy memory to register:
27194;@ EaRead : Read '($3333,a0)' (address in r6) into r0:
27195  add lr,pc,#4
27196  mov r0,r6
27197  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
27198  sxth r0,r0 ;@ sign extend
27199
27200  str r0,[r7,r4] ;@ Save value into Dn/An
27201  add r6,r6,#2 ;@ Post-increment address
27202  sub r5,r5,#4 ;@ Take some cycles
27203  tst r11,r11
27204  bne Movemloop4ca8
27205
27206NoRegs4ca8:
27207  ldr r4,[r7,#0x40]
27208  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27209
27210  ldrh r8,[r4],#2 ;@ Fetch next opcode
27211  subs r5,r5,#16 ;@ Subtract cycles
27212  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27213  b CycloneEnd
27214
27215
27216;@ ---------- [4cb0] movem.w ($33,a0,d3.w*2), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cb0 ----------
27217Op4cb0:
27218  ldrh r11,[r4],#2 ;@ r11=register mask
27219
27220;@ Get the address into r6:
27221;@ EaCalc : Get '($33,a0,d3.w*2)' into r6:
27222;@ Get extension word into r3:
27223  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
27224  mov r2,r3,lsr #10
27225  tst r3,#0x0800 ;@ Is Rn Word or Long
27226  and r2,r2,#0x3c ;@ r2=Index of Rn
27227  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
27228  ldrne   r2,[r7,r2] ;@ r2=Rn.l
27229  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
27230  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
27231  and r2,r8,#0x000f
27232  orr r2,r2,#0x8 ;@ A0-7
27233  ldr r2,[r7,r2,lsl #2]
27234  add r6,r2,r3 ;@ r6=Disp+An+Rn
27235  str r4,[r7,#0x40] ;@ Save PC
27236;@ r4=Register Index*4:
27237  mov r4,#-4
27238
27239  tst r11,r11
27240  beq NoRegs4cb0
27241
27242Movemloop4cb0:
27243  add r4,r4,#4 ;@ r4=Next Register
27244  movs r11,r11,lsr #1
27245  bcc Movemloop4cb0
27246
27247  ;@ Copy memory to register:
27248;@ EaRead : Read '($33,a0,d3.w*2)' (address in r6) into r0:
27249  add lr,pc,#4
27250  mov r0,r6
27251  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
27252  sxth r0,r0 ;@ sign extend
27253
27254  str r0,[r7,r4] ;@ Save value into Dn/An
27255  add r6,r6,#2 ;@ Post-increment address
27256  sub r5,r5,#4 ;@ Take some cycles
27257  tst r11,r11
27258  bne Movemloop4cb0
27259
27260NoRegs4cb0:
27261  ldr r4,[r7,#0x40]
27262  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27263
27264  ldrh r8,[r4],#2 ;@ Fetch next opcode
27265  subs r5,r5,#18 ;@ Subtract cycles
27266  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27267  b CycloneEnd
27268
27269
27270;@ ---------- [4cb8] movem.w $3333.w, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cb8 ----------
27271Op4cb8:
27272  ldrh r11,[r4],#2 ;@ r11=register mask
27273
27274;@ Get the address into r6:
27275;@ EaCalc : Get '$3333.w' into r6:
27276  ldrsh r6,[r4],#2 ;@ Fetch Absolute Short address
27277  str r4,[r7,#0x40] ;@ Save PC
27278;@ r4=Register Index*4:
27279  mov r4,#-4
27280
27281  tst r11,r11
27282  beq NoRegs4cb8
27283
27284Movemloop4cb8:
27285  add r4,r4,#4 ;@ r4=Next Register
27286  movs r11,r11,lsr #1
27287  bcc Movemloop4cb8
27288
27289  ;@ Copy memory to register:
27290;@ EaRead : Read '$3333.w' (address in r6) into r0:
27291  add lr,pc,#4
27292  mov r0,r6
27293  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
27294  sxth r0,r0 ;@ sign extend
27295
27296  str r0,[r7,r4] ;@ Save value into Dn/An
27297  add r6,r6,#2 ;@ Post-increment address
27298  sub r5,r5,#4 ;@ Take some cycles
27299  tst r11,r11
27300  bne Movemloop4cb8
27301
27302NoRegs4cb8:
27303  ldr r4,[r7,#0x40]
27304  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27305
27306  ldrh r8,[r4],#2 ;@ Fetch next opcode
27307  subs r5,r5,#16 ;@ Subtract cycles
27308  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27309  b CycloneEnd
27310
27311
27312;@ ---------- [4cb9] movem.w $33333333.l, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cb9 ----------
27313Op4cb9:
27314  ldrh r11,[r4],#2 ;@ r11=register mask
27315
27316;@ Get the address into r6:
27317;@ EaCalc : Get '$33333333.l' into r6:
27318  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
27319  ldrh r0,[r4],#2
27320  orr r6,r0,r2,lsl #16
27321  str r4,[r7,#0x40] ;@ Save PC
27322;@ r4=Register Index*4:
27323  mov r4,#-4
27324
27325  tst r11,r11
27326  beq NoRegs4cb9
27327
27328Movemloop4cb9:
27329  add r4,r4,#4 ;@ r4=Next Register
27330  movs r11,r11,lsr #1
27331  bcc Movemloop4cb9
27332
27333  ;@ Copy memory to register:
27334;@ EaRead : Read '$33333333.l' (address in r6) into r0:
27335  add lr,pc,#4
27336  mov r0,r6
27337  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
27338  sxth r0,r0 ;@ sign extend
27339
27340  str r0,[r7,r4] ;@ Save value into Dn/An
27341  add r6,r6,#2 ;@ Post-increment address
27342  sub r5,r5,#4 ;@ Take some cycles
27343  tst r11,r11
27344  bne Movemloop4cb9
27345
27346NoRegs4cb9:
27347  ldr r4,[r7,#0x40]
27348  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27349
27350  ldrh r8,[r4],#2 ;@ Fetch next opcode
27351  subs r5,r5,#20 ;@ Subtract cycles
27352  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27353  b CycloneEnd
27354
27355
27356;@ ---------- [4cba] movem.w ($3333,pc), d0-d1/d4-d5/a0-a1/a4-a5; =3337 uses Op4cba ----------
27357Op4cba:
27358  ldrh r11,[r4],#2 ;@ r11=register mask
27359
27360;@ Get the address into r6:
27361;@ EaCalc : Get '($3333,pc)' into r6:
27362  ldr r0,[r7,#0x60] ;@ Get Memory base
27363  sub r0,r4,r0 ;@ Real PC
27364  ldrsh r2,[r4],#2 ;@ Fetch extension
27365  add r6,r2,r0 ;@ ($nn,PC)
27366  str r4,[r7,#0x40] ;@ Save PC
27367;@ r4=Register Index*4:
27368  mov r4,#-4
27369
27370  tst r11,r11
27371  beq NoRegs4cba
27372
27373Movemloop4cba:
27374  add r4,r4,#4 ;@ r4=Next Register
27375  movs r11,r11,lsr #1
27376  bcc Movemloop4cba
27377
27378  ;@ Copy memory to register:
27379;@ EaRead : Read '($3333,pc)' (address in r6) into r0:
27380  add lr,pc,#4
27381  mov r0,r6
27382  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
27383  sxth r0,r0 ;@ sign extend
27384
27385  str r0,[r7,r4] ;@ Save value into Dn/An
27386  add r6,r6,#2 ;@ Post-increment address
27387  sub r5,r5,#4 ;@ Take some cycles
27388  tst r11,r11
27389  bne Movemloop4cba
27390
27391NoRegs4cba:
27392  ldr r4,[r7,#0x40]
27393  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27394
27395  ldrh r8,[r4],#2 ;@ Fetch next opcode
27396  subs r5,r5,#16 ;@ Subtract cycles
27397  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27398  b CycloneEnd
27399
27400
27401;@ ---------- [4cbb] movem.w ($33,pc,d3.w*2), d0-d1/d4-d5/a0-a1/a4-a5; =37 uses Op4cbb ----------
27402Op4cbb:
27403  ldrh r11,[r4],#2 ;@ r11=register mask
27404
27405;@ Get the address into r6:
27406;@ EaCalc : Get '($33,pc,d3.w*2)' into r6:
27407  ldr r0,[r7,#0x60] ;@ Get Memory base
27408  ldrh r3,[r4] ;@ Get extension word
27409  sub r0,r4,r0 ;@ r0=PC
27410  add r4,r4,#2
27411  mov r2,r3,lsr #10
27412  tst r3,#0x0800 ;@ Is Rn Word or Long
27413  and r2,r2,#0x3c ;@ r2=Index of Rn
27414  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
27415  ldrne   r2,[r7,r2] ;@ r2=Rn.l
27416  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
27417  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
27418  add r6,r2,r0 ;@ r6=Disp+PC+Rn
27419  str r4,[r7,#0x40] ;@ Save PC
27420;@ r4=Register Index*4:
27421  mov r4,#-4
27422
27423  tst r11,r11
27424  beq NoRegs4cbb
27425
27426Movemloop4cbb:
27427  add r4,r4,#4 ;@ r4=Next Register
27428  movs r11,r11,lsr #1
27429  bcc Movemloop4cbb
27430
27431  ;@ Copy memory to register:
27432;@ EaRead : Read '($33,pc,d3.w*2)' (address in r6) into r0:
27433  add lr,pc,#4
27434  mov r0,r6
27435  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
27436  sxth r0,r0 ;@ sign extend
27437
27438  str r0,[r7,r4] ;@ Save value into Dn/An
27439  add r6,r6,#2 ;@ Post-increment address
27440  sub r5,r5,#4 ;@ Take some cycles
27441  tst r11,r11
27442  bne Movemloop4cbb
27443
27444NoRegs4cbb:
27445  ldr r4,[r7,#0x40]
27446  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27447
27448  ldrh r8,[r4],#2 ;@ Fetch next opcode
27449  subs r5,r5,#18 ;@ Subtract cycles
27450  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27451  b CycloneEnd
27452
27453
27454;@ ---------- [4cd0] movem.l (a0), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cd0 ----------
27455Op4cd0:
27456  ldrh r11,[r4],#2 ;@ r11=register mask
27457
27458;@ Get the address into r6:
27459;@ EaCalc : Get '(a0)' into r6:
27460  and r2,r8,#0x000f
27461  orr r2,r2,#0x8 ;@ A0-7
27462  ldr r6,[r7,r2,lsl #2]
27463  str r4,[r7,#0x40] ;@ Save PC
27464;@ r4=Register Index*4:
27465  mov r4,#-4
27466
27467  tst r11,r11
27468  beq NoRegs4cd0
27469
27470Movemloop4cd0:
27471  add r4,r4,#4 ;@ r4=Next Register
27472  movs r11,r11,lsr #1
27473  bcc Movemloop4cd0
27474
27475  ;@ Copy memory to register:
27476;@ EaRead : Read '(a0)' (address in r6) into r0:
27477  add lr,pc,#4
27478  mov r0,r6
27479  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
27480
27481  str r0,[r7,r4] ;@ Save value into Dn/An
27482  add r6,r6,#4 ;@ Post-increment address
27483  sub r5,r5,#8 ;@ Take some cycles
27484  tst r11,r11
27485  bne Movemloop4cd0
27486
27487NoRegs4cd0:
27488  ldr r4,[r7,#0x40]
27489  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27490
27491  ldrh r8,[r4],#2 ;@ Fetch next opcode
27492  subs r5,r5,#12 ;@ Subtract cycles
27493  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27494  b CycloneEnd
27495
27496
27497;@ ---------- [4cd8] movem.l (a0)+, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cd8 ----------
27498Op4cd8:
27499  ldrh r11,[r4],#2 ;@ r11=register mask
27500
27501;@ Get the address into r6:
27502;@ EaCalc : Get '(a0)' into r6:
27503  and r2,r8,#0x000f
27504  ldr r6,[r7,r2,lsl #2]
27505  str r4,[r7,#0x40] ;@ Save PC
27506;@ r4=Register Index*4:
27507  mov r4,#-4
27508
27509  tst r11,r11
27510  beq NoRegs4cd8
27511
27512Movemloop4cd8:
27513  add r4,r4,#4 ;@ r4=Next Register
27514  movs r11,r11,lsr #1
27515  bcc Movemloop4cd8
27516
27517  ;@ Copy memory to register:
27518;@ EaRead : Read '(a0)+' (address in r6) into r0:
27519  add lr,pc,#4
27520  mov r0,r6
27521  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
27522
27523  str r0,[r7,r4] ;@ Save value into Dn/An
27524  add r6,r6,#4 ;@ Post-increment address
27525  sub r5,r5,#8 ;@ Take some cycles
27526  tst r11,r11
27527  bne Movemloop4cd8
27528
27529;@ Write back address:
27530;@ EaCalc : Get register index into r0:
27531  and r0,r8,#0x000f
27532;@ EaWrite: r6 into register[r0]:
27533  str r6,[r7,r0,lsl #2]
27534
27535NoRegs4cd8:
27536  ldr r4,[r7,#0x40]
27537  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27538
27539  ldrh r8,[r4],#2 ;@ Fetch next opcode
27540  subs r5,r5,#12 ;@ Subtract cycles
27541  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27542  b CycloneEnd
27543
27544
27545;@ ---------- [4ce8] movem.l ($3333,a0), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4ce8 ----------
27546Op4ce8:
27547  ldrh r11,[r4],#2 ;@ r11=register mask
27548
27549;@ Get the address into r6:
27550;@ EaCalc : Get '($3333,a0)' into r6:
27551  ldrsh r0,[r4],#2 ;@ Fetch offset
27552  and r2,r8,#0x000f
27553  ldr r2,[r7,r2,lsl #2]
27554  add r6,r0,r2 ;@ Add on offset
27555  str r4,[r7,#0x40] ;@ Save PC
27556;@ r4=Register Index*4:
27557  mov r4,#-4
27558
27559  tst r11,r11
27560  beq NoRegs4ce8
27561
27562Movemloop4ce8:
27563  add r4,r4,#4 ;@ r4=Next Register
27564  movs r11,r11,lsr #1
27565  bcc Movemloop4ce8
27566
27567  ;@ Copy memory to register:
27568;@ EaRead : Read '($3333,a0)' (address in r6) into r0:
27569  add lr,pc,#4
27570  mov r0,r6
27571  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
27572
27573  str r0,[r7,r4] ;@ Save value into Dn/An
27574  add r6,r6,#4 ;@ Post-increment address
27575  sub r5,r5,#8 ;@ Take some cycles
27576  tst r11,r11
27577  bne Movemloop4ce8
27578
27579NoRegs4ce8:
27580  ldr r4,[r7,#0x40]
27581  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27582
27583  ldrh r8,[r4],#2 ;@ Fetch next opcode
27584  subs r5,r5,#16 ;@ Subtract cycles
27585  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27586  b CycloneEnd
27587
27588
27589;@ ---------- [4cf0] movem.l ($33,a0,d3.w*2), d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cf0 ----------
27590Op4cf0:
27591  ldrh r11,[r4],#2 ;@ r11=register mask
27592
27593;@ Get the address into r6:
27594;@ EaCalc : Get '($33,a0,d3.w*2)' into r6:
27595;@ Get extension word into r3:
27596  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
27597  mov r2,r3,lsr #10
27598  tst r3,#0x0800 ;@ Is Rn Word or Long
27599  and r2,r2,#0x3c ;@ r2=Index of Rn
27600  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
27601  ldrne   r2,[r7,r2] ;@ r2=Rn.l
27602  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
27603  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
27604  and r2,r8,#0x000f
27605  orr r2,r2,#0x8 ;@ A0-7
27606  ldr r2,[r7,r2,lsl #2]
27607  add r6,r2,r3 ;@ r6=Disp+An+Rn
27608  str r4,[r7,#0x40] ;@ Save PC
27609;@ r4=Register Index*4:
27610  mov r4,#-4
27611
27612  tst r11,r11
27613  beq NoRegs4cf0
27614
27615Movemloop4cf0:
27616  add r4,r4,#4 ;@ r4=Next Register
27617  movs r11,r11,lsr #1
27618  bcc Movemloop4cf0
27619
27620  ;@ Copy memory to register:
27621;@ EaRead : Read '($33,a0,d3.w*2)' (address in r6) into r0:
27622  add lr,pc,#4
27623  mov r0,r6
27624  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
27625
27626  str r0,[r7,r4] ;@ Save value into Dn/An
27627  add r6,r6,#4 ;@ Post-increment address
27628  sub r5,r5,#8 ;@ Take some cycles
27629  tst r11,r11
27630  bne Movemloop4cf0
27631
27632NoRegs4cf0:
27633  ldr r4,[r7,#0x40]
27634  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27635
27636  ldrh r8,[r4],#2 ;@ Fetch next opcode
27637  subs r5,r5,#18 ;@ Subtract cycles
27638  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27639  b CycloneEnd
27640
27641
27642;@ ---------- [4cf8] movem.l $3333.w, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cf8 ----------
27643Op4cf8:
27644  ldrh r11,[r4],#2 ;@ r11=register mask
27645
27646;@ Get the address into r6:
27647;@ EaCalc : Get '$3333.w' into r6:
27648  ldrsh r6,[r4],#2 ;@ Fetch Absolute Short address
27649  str r4,[r7,#0x40] ;@ Save PC
27650;@ r4=Register Index*4:
27651  mov r4,#-4
27652
27653  tst r11,r11
27654  beq NoRegs4cf8
27655
27656Movemloop4cf8:
27657  add r4,r4,#4 ;@ r4=Next Register
27658  movs r11,r11,lsr #1
27659  bcc Movemloop4cf8
27660
27661  ;@ Copy memory to register:
27662;@ EaRead : Read '$3333.w' (address in r6) into r0:
27663  add lr,pc,#4
27664  mov r0,r6
27665  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
27666
27667  str r0,[r7,r4] ;@ Save value into Dn/An
27668  add r6,r6,#4 ;@ Post-increment address
27669  sub r5,r5,#8 ;@ Take some cycles
27670  tst r11,r11
27671  bne Movemloop4cf8
27672
27673NoRegs4cf8:
27674  ldr r4,[r7,#0x40]
27675  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27676
27677  ldrh r8,[r4],#2 ;@ Fetch next opcode
27678  subs r5,r5,#16 ;@ Subtract cycles
27679  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27680  b CycloneEnd
27681
27682
27683;@ ---------- [4cf9] movem.l $33333333.l, d0-d1/d4-d5/a0-a1/a4-a5 uses Op4cf9 ----------
27684Op4cf9:
27685  ldrh r11,[r4],#2 ;@ r11=register mask
27686
27687;@ Get the address into r6:
27688;@ EaCalc : Get '$33333333.l' into r6:
27689  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
27690  ldrh r0,[r4],#2
27691  orr r6,r0,r2,lsl #16
27692  str r4,[r7,#0x40] ;@ Save PC
27693;@ r4=Register Index*4:
27694  mov r4,#-4
27695
27696  tst r11,r11
27697  beq NoRegs4cf9
27698
27699Movemloop4cf9:
27700  add r4,r4,#4 ;@ r4=Next Register
27701  movs r11,r11,lsr #1
27702  bcc Movemloop4cf9
27703
27704  ;@ Copy memory to register:
27705;@ EaRead : Read '$33333333.l' (address in r6) into r0:
27706  add lr,pc,#4
27707  mov r0,r6
27708  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
27709
27710  str r0,[r7,r4] ;@ Save value into Dn/An
27711  add r6,r6,#4 ;@ Post-increment address
27712  sub r5,r5,#8 ;@ Take some cycles
27713  tst r11,r11
27714  bne Movemloop4cf9
27715
27716NoRegs4cf9:
27717  ldr r4,[r7,#0x40]
27718  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27719
27720  ldrh r8,[r4],#2 ;@ Fetch next opcode
27721  subs r5,r5,#20 ;@ Subtract cycles
27722  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27723  b CycloneEnd
27724
27725
27726;@ ---------- [4cfa] movem.l ($3333,pc), d0-d1/d4-d5/a0-a1/a4-a5; =3337 uses Op4cfa ----------
27727Op4cfa:
27728  ldrh r11,[r4],#2 ;@ r11=register mask
27729
27730;@ Get the address into r6:
27731;@ EaCalc : Get '($3333,pc)' into r6:
27732  ldr r0,[r7,#0x60] ;@ Get Memory base
27733  sub r0,r4,r0 ;@ Real PC
27734  ldrsh r2,[r4],#2 ;@ Fetch extension
27735  add r6,r2,r0 ;@ ($nn,PC)
27736  str r4,[r7,#0x40] ;@ Save PC
27737;@ r4=Register Index*4:
27738  mov r4,#-4
27739
27740  tst r11,r11
27741  beq NoRegs4cfa
27742
27743Movemloop4cfa:
27744  add r4,r4,#4 ;@ r4=Next Register
27745  movs r11,r11,lsr #1
27746  bcc Movemloop4cfa
27747
27748  ;@ Copy memory to register:
27749;@ EaRead : Read '($3333,pc)' (address in r6) into r0:
27750  add lr,pc,#4
27751  mov r0,r6
27752  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
27753
27754  str r0,[r7,r4] ;@ Save value into Dn/An
27755  add r6,r6,#4 ;@ Post-increment address
27756  sub r5,r5,#8 ;@ Take some cycles
27757  tst r11,r11
27758  bne Movemloop4cfa
27759
27760NoRegs4cfa:
27761  ldr r4,[r7,#0x40]
27762  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27763
27764  ldrh r8,[r4],#2 ;@ Fetch next opcode
27765  subs r5,r5,#16 ;@ Subtract cycles
27766  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27767  b CycloneEnd
27768
27769
27770;@ ---------- [4cfb] movem.l ($33,pc,d3.w*2), d0-d1/d4-d5/a0-a1/a4-a5; =37 uses Op4cfb ----------
27771Op4cfb:
27772  ldrh r11,[r4],#2 ;@ r11=register mask
27773
27774;@ Get the address into r6:
27775;@ EaCalc : Get '($33,pc,d3.w*2)' into r6:
27776  ldr r0,[r7,#0x60] ;@ Get Memory base
27777  ldrh r3,[r4] ;@ Get extension word
27778  sub r0,r4,r0 ;@ r0=PC
27779  add r4,r4,#2
27780  mov r2,r3,lsr #10
27781  tst r3,#0x0800 ;@ Is Rn Word or Long
27782  and r2,r2,#0x3c ;@ r2=Index of Rn
27783  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
27784  ldrne   r2,[r7,r2] ;@ r2=Rn.l
27785  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
27786  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
27787  add r6,r2,r0 ;@ r6=Disp+PC+Rn
27788  str r4,[r7,#0x40] ;@ Save PC
27789;@ r4=Register Index*4:
27790  mov r4,#-4
27791
27792  tst r11,r11
27793  beq NoRegs4cfb
27794
27795Movemloop4cfb:
27796  add r4,r4,#4 ;@ r4=Next Register
27797  movs r11,r11,lsr #1
27798  bcc Movemloop4cfb
27799
27800  ;@ Copy memory to register:
27801;@ EaRead : Read '($33,pc,d3.w*2)' (address in r6) into r0:
27802  add lr,pc,#4
27803  mov r0,r6
27804  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
27805
27806  str r0,[r7,r4] ;@ Save value into Dn/An
27807  add r6,r6,#4 ;@ Post-increment address
27808  sub r5,r5,#8 ;@ Take some cycles
27809  tst r11,r11
27810  bne Movemloop4cfb
27811
27812NoRegs4cfb:
27813  ldr r4,[r7,#0x40]
27814  ldr r6,[r7,#0x54] ;@ restore Opcode Jump table
27815
27816  ldrh r8,[r4],#2 ;@ Fetch next opcode
27817  subs r5,r5,#18 ;@ Subtract cycles
27818  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27819  b CycloneEnd
27820
27821
27822;@ ---------- [4e40] trap #0 uses Op4e40 ----------
27823Op4e40:
27824  and r0,r8,#0xf ;@ Get trap number
27825  orr r0,r0,#0x20 ;@ 32+n
27826  bl Exception
27827
27828  ldrh r8,[r4],#2 ;@ Fetch next opcode
27829  subs r5,r5,#38 ;@ Subtract cycles
27830  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27831  b CycloneEnd
27832
27833;@ ---------- [4e50] link a0,#$3333 uses Op4e50 ----------
27834Op4e50:
27835;@ Get An
27836;@ EaCalc : Get register index into r11:
27837  and r11,r8,#0x0007
27838  orr r11,r11,#0x8 ;@ A0-7
27839;@ EaRead : Read register[r11] into r1:
27840  ldr r1,[r7,r11,lsl #2]
27841
27842  ldr r0,[r7,#0x3c] ;@ Get A7
27843  sub r0,r0,#4 ;@ A7-=4
27844  mov r8,r0 ;@ abuse r8
27845
27846;@ Write An to Stack
27847  mov lr,pc
27848  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
27849;@ Save to An
27850;@ EaWrite: r8 into register[r11]:
27851  str r8,[r7,r11,lsl #2]
27852
27853;@ Get offset:
27854;@ EaCalc : Get '#$3333' into r0:
27855  ldrsh r0,[r4],#2 ;@ Fetch immediate value
27856;@ EaRead : Read '#$3333' (address in r0) into r0:
27857
27858  add r8,r8,r0 ;@ Add offset to A7
27859  str r8,[r7,#0x3c]
27860
27861  ldrh r8,[r4],#2 ;@ Fetch next opcode
27862  subs r5,r5,#16 ;@ Subtract cycles
27863  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27864  b CycloneEnd
27865
27866;@ ---------- [4e57] link a7,#$3333 uses Op4e57 ----------
27867Op4e57:
27868  ldr r0,[r7,#0x3c] ;@ Get A7
27869  sub r0,r0,#4 ;@ A7-=4
27870  mov r8,r0 ;@ abuse r8
27871  mov r1,r0
27872
27873;@ Write An to Stack
27874  mov lr,pc
27875  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
27876;@ Save to An
27877;@ Get offset:
27878;@ EaCalc : Get '#$3333' into r0:
27879  ldrsh r0,[r4],#2 ;@ Fetch immediate value
27880;@ EaRead : Read '#$3333' (address in r0) into r0:
27881
27882  add r8,r8,r0 ;@ Add offset to A7
27883  str r8,[r7,#0x3c]
27884
27885  ldrh r8,[r4],#2 ;@ Fetch next opcode
27886  subs r5,r5,#16 ;@ Subtract cycles
27887  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27888  b CycloneEnd
27889
27890;@ ---------- [4e58] unlk a0 uses Op4e58 ----------
27891Op4e58:
27892;@ Get An
27893;@ EaCalc : Get register index into r11:
27894  and r11,r8,#0x000f
27895;@ EaRead : Read register[r11] into r0:
27896  ldr r0,[r7,r11,lsl #2]
27897
27898  add r8,r0,#4 ;@ A7+=4, abuse r8
27899
27900;@ Pop An from stack:
27901  mov lr,pc
27902  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
27903
27904  str r8,[r7,#0x3c] ;@ Save A7
27905
27906;@ An = value from stack:
27907;@ EaWrite: r0 into register[r11]:
27908  str r0,[r7,r11,lsl #2]
27909
27910  ldrh r8,[r4],#2 ;@ Fetch next opcode
27911  subs r5,r5,#12 ;@ Subtract cycles
27912  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27913  b CycloneEnd
27914
27915;@ ---------- [4e60] move a0, usp uses Op4e60 ----------
27916Op4e60:
27917  ldr r11,[r7,#0x44] ;@ Get SR high
27918  tst r11,#0x20 ;@ Check we are in supervisor mode
27919  beq WrongPrivilegeMode ;@ No
27920
27921;@ EaCalc : Get register index into r0:
27922  and r0,r8,#0x000f
27923  orr r0,r0,#0x8 ;@ A0-7
27924;@ EaRead : Read register[r0] into r0:
27925  ldr r0,[r7,r0,lsl #2]
27926
27927  str r0,[r7,#0x48] ;@ Put in USP
27928
27929  ldrh r8,[r4],#2 ;@ Fetch next opcode
27930  subs r5,r5,#4 ;@ Subtract cycles
27931  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27932  b CycloneEnd
27933
27934;@ ---------- [4e68] move usp, a0 uses Op4e68 ----------
27935Op4e68:
27936  ldr r11,[r7,#0x44] ;@ Get SR high
27937  tst r11,#0x20 ;@ Check we are in supervisor mode
27938  beq WrongPrivilegeMode ;@ No
27939
27940  ldr r1,[r7,#0x48] ;@ Get from USP
27941
27942;@ EaCalc : Get register index into r0:
27943  and r0,r8,#0x000f
27944;@ EaWrite: r1 into register[r0]:
27945  str r1,[r7,r0,lsl #2]
27946
27947  ldrh r8,[r4],#2 ;@ Fetch next opcode
27948  subs r5,r5,#4 ;@ Subtract cycles
27949  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27950  b CycloneEnd
27951
27952;@ ---------- [4e70] reset uses Op4e70 ----------
27953Op4e70:
27954  ldr r11,[r7,#0x44] ;@ Get SR high
27955  tst r11,#0x20 ;@ Check we are in supervisor mode
27956  beq WrongPrivilegeMode ;@ No
27957
27958  ldrh r8,[r4],#2 ;@ Fetch next opcode
27959  subs r5,r5,#132 ;@ Subtract cycles
27960  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
27961  b CycloneEnd
27962
27963;@ ---------- [4e72] stop uses Op4e72 ----------
27964Op4e72:
27965  ldr r11,[r7,#0x44] ;@ Get SR high
27966  tst r11,#0x20 ;@ Check we are in supervisor mode
27967  beq WrongPrivilegeMode ;@ No
27968
27969  ldrh r0,[r4],#2 ;@ Fetch the immediate
27970  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
27971  mov r2,r0,lsl #25
27972  tst r1,#1           ;@ 1 if C!=V
27973  eorne r0,r0,#3      ;@ ___XNZCV
27974  str r2,[r7,#0x4c]   ;@ Store X bit
27975  mov r10,r0,lsl #28  ;@ r10=NZCV...
27976  mov r0,r0,ror #8
27977  and r0,r0,#0xa7 ;@ only take defined bits
27978  strb r0,[r7,#0x44] ;@ Store SR high
27979
27980;@ A7 <-> OSP?
27981  eor r0,r0,r11
27982  tst r0,#0x20
27983  beq no_sp_swap4e72
27984 ;@ swap OSP and A7:
27985  ldr r11,[r7,#0x3C] ;@ Get A7
27986  ldr r0, [r7,#0x48] ;@ Get OSP
27987  str r11,[r7,#0x48]
27988  str r0, [r7,#0x3C]
27989no_sp_swap4e72:
27990
27991  ldr r0,[r7,#0x58]
27992  mov r5,#0 ;@ eat cycles
27993  orr r0,r0,#1 ;@ stopped
27994  str r0,[r7,#0x58]
27995
27996
27997  ldrh r8,[r4],#2 ;@ Fetch next opcode
27998  subs r5,r5,#4 ;@ Subtract cycles
27999  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28000  b CycloneEnd
28001
28002;@ ---------- [4e73] rte uses Op4e73 ----------
28003Op4e73:
28004  ldr r11,[r7,#0x44] ;@ Get SR high
28005  tst r11,#0x20 ;@ Check we are in supervisor mode
28006  beq WrongPrivilegeMode ;@ No
28007
28008;@ Pop SR:
28009  ldr r0,[r7,#0x3c]
28010  add r1,r0,#2 ;@ Postincrement A7
28011  str r1,[r7,#0x3c] ;@ Save A7
28012  mov lr,pc
28013  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
28014
28015  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28016  mov r2,r0,lsl #25
28017  tst r1,#1           ;@ 1 if C!=V
28018  eorne r0,r0,#3      ;@ ___XNZCV
28019  str r2,[r7,#0x4c]   ;@ Store X bit
28020  mov r10,r0,lsl #28  ;@ r10=NZCV...
28021  mov r0,r0,ror #8
28022  and r0,r0,#0xa7 ;@ only take defined bits
28023  strb r0,[r7,#0x44] ;@ Store SR high
28024
28025;@ Pop PC:
28026  ldr r0,[r7,#0x3c]
28027  add r1,r0,#4 ;@ Postincrement A7
28028  str r1,[r7,#0x3c] ;@ Save A7
28029  mov lr,pc
28030  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
28031  ldr r1,[r7,#0x60] ;@ Get Memory base
28032  add r0,r0,r1 ;@ Memory Base+PC
28033
28034;@ Check Memory Base+pc
28035  mov lr,pc
28036  ldr pc,[r7,#0x64] ;@ Call checkpc()
28037
28038  mov r4,r0
28039  ldr r1,[r7,#0x44] ;@ reload SR high
28040;@ A7 <-> OSP?
28041  eor r0,r1,r11
28042  tst r0,#0x20
28043  beq no_sp_swap4e73
28044 ;@ swap OSP and A7:
28045  ldr r11,[r7,#0x3C] ;@ Get A7
28046  ldr r0, [r7,#0x48] ;@ Get OSP
28047  str r11,[r7,#0x48]
28048  str r0, [r7,#0x3C]
28049no_sp_swap4e73:
28050  ldr r1,[r7,#0x58]
28051  bic r1,r1,#0x0c ;@ clear 'not processing instruction' and 'doing addr error' bits
28052  str r1,[r7,#0x58]
28053  tst r4,#1 ;@ address error?
28054  bne ExceptionAddressError_r_prg_r4
28055  ldrh r8,[r4],#2 ;@ Fetch next opcode
28056  ldr r1,[r7,#0x44]
28057  subs r5,r5,#20 ;@ Subtract cycles
28058;@ CheckTrace:
28059  tst r1,#0x80
28060  bne CycloneDoTraceWithChecks
28061  cmp r5,#0
28062  ble CycloneEnd
28063;@ CheckInterrupt:
28064  movs r0,r1,lsr #24 ;@ Get IRQ level
28065  ldreq pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28066  cmp r0,#6 ;@ irq>6 ?
28067  andle r1,r1,#7 ;@ Get interrupt mask
28068  cmple r0,r1 ;@ irq<=6: Is irq<=mask ?
28069  ldrle pc,[r6,r8,asl #2] ;@ Jump to next opcode handler
28070  b CycloneDoInterruptGoBack
28071
28072;@ ---------- [4e76] trapv uses Op4e76 ----------
28073Op4e76:
28074  tst r10,#0x10000000
28075  subne r5,r5,#34
28076  movne r0,#7 ;@ TRAPV exception
28077  blne Exception
28078  ldrh r8,[r4],#2 ;@ Fetch next opcode
28079  subs r5,r5,#4 ;@ Subtract cycles
28080  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28081  b CycloneEnd
28082
28083;@ ---------- [4e77] rtr uses Op4e77 ----------
28084Op4e77:
28085;@ Pop SR:
28086  ldr r0,[r7,#0x3c]
28087  add r1,r0,#2 ;@ Postincrement A7
28088  str r1,[r7,#0x3c] ;@ Save A7
28089  mov lr,pc
28090  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
28091
28092  eor r1,r0,r0,ror #1 ;@ Bit 0=C^V
28093  mov r2,r0,lsl #25
28094  tst r1,#1           ;@ 1 if C!=V
28095  eorne r0,r0,#3      ;@ ___XNZCV
28096  str r2,[r7,#0x4c]   ;@ Store X bit
28097  mov r10,r0,lsl #28  ;@ r10=NZCV...
28098
28099;@ Pop PC:
28100  ldr r0,[r7,#0x3c]
28101  add r1,r0,#4 ;@ Postincrement A7
28102  str r1,[r7,#0x3c] ;@ Save A7
28103  mov lr,pc
28104  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
28105  ldr r1,[r7,#0x60] ;@ Get Memory base
28106  add r0,r0,r1 ;@ Memory Base+PC
28107
28108;@ Check Memory Base+pc
28109  mov lr,pc
28110  ldr pc,[r7,#0x64] ;@ Call checkpc()
28111
28112  mov r4,r0
28113  tst r4,#1 ;@ address error?
28114  bne ExceptionAddressError_r_prg_r4
28115  ldrh r8,[r4],#2 ;@ Fetch next opcode
28116  subs r5,r5,#20 ;@ Subtract cycles
28117  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28118  b CycloneEnd
28119
28120;@ ---------- [4e90] jsr (a0) uses Op4e90 ----------
28121Op4e90:
28122  ldr r11,[r7,#0x60] ;@ Get Memory base
28123
28124;@ EaCalc : Get '(a0)' into r12:
28125  and r2,r8,#0x000f
28126  orr r2,r2,#0x8 ;@ A0-7
28127  ldr r12,[r7,r2,lsl #2]
28128;@ Jump - Get new PC from r12
28129  add r0,r12,r11 ;@ Memory Base + New PC
28130
28131;@ Check Memory Base+pc
28132  mov lr,pc
28133  ldr pc,[r7,#0x64] ;@ Call checkpc()
28134
28135  ldr r2,[r7,#0x3c]
28136  sub r1,r4,r11 ;@ r1 = Old PC
28137  mov r4,r0
28138  tst r4,#1 ;@ address error?
28139  bne ExceptionAddressError_r_prg_r4
28140;@ Push old PC onto stack
28141  sub r0,r2,#4 ;@ Predecrement A7
28142  str r0,[r7,#0x3c] ;@ Save A7
28143  mov lr,pc
28144  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
28145  ldrh r8,[r4],#2 ;@ Fetch next opcode
28146  subs r5,r5,#16 ;@ Subtract cycles
28147  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28148  b CycloneEnd
28149
28150;@ ---------- [4ea8] jsr ($3333,a0) uses Op4ea8 ----------
28151Op4ea8:
28152  ldr r11,[r7,#0x60] ;@ Get Memory base
28153
28154;@ EaCalc : Get '($3333,a0)' into r12:
28155  ldrsh r0,[r4],#2 ;@ Fetch offset
28156  and r2,r8,#0x000f
28157  ldr r2,[r7,r2,lsl #2]
28158  add r12,r0,r2 ;@ Add on offset
28159;@ Jump - Get new PC from r12
28160  add r0,r12,r11 ;@ Memory Base + New PC
28161
28162;@ Check Memory Base+pc
28163  mov lr,pc
28164  ldr pc,[r7,#0x64] ;@ Call checkpc()
28165
28166  ldr r2,[r7,#0x3c]
28167  sub r1,r4,r11 ;@ r1 = Old PC
28168  mov r4,r0
28169  tst r4,#1 ;@ address error?
28170  bne ExceptionAddressError_r_prg_r4
28171;@ Push old PC onto stack
28172  sub r0,r2,#4 ;@ Predecrement A7
28173  str r0,[r7,#0x3c] ;@ Save A7
28174  mov lr,pc
28175  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
28176  ldrh r8,[r4],#2 ;@ Fetch next opcode
28177  subs r5,r5,#18 ;@ Subtract cycles
28178  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28179  b CycloneEnd
28180
28181;@ ---------- [4eb0] jsr ($33,a0,d3.w*2) uses Op4eb0 ----------
28182Op4eb0:
28183  ldr r11,[r7,#0x60] ;@ Get Memory base
28184
28185;@ EaCalc : Get '($33,a0,d3.w*2)' into r12:
28186;@ Get extension word into r3:
28187  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
28188  mov r2,r3,lsr #10
28189  tst r3,#0x0800 ;@ Is Rn Word or Long
28190  and r2,r2,#0x3c ;@ r2=Index of Rn
28191  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
28192  ldrne   r2,[r7,r2] ;@ r2=Rn.l
28193  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
28194  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
28195  and r2,r8,#0x000f
28196  orr r2,r2,#0x8 ;@ A0-7
28197  ldr r2,[r7,r2,lsl #2]
28198  add r12,r2,r3 ;@ r12=Disp+An+Rn
28199;@ Jump - Get new PC from r12
28200  add r0,r12,r11 ;@ Memory Base + New PC
28201
28202;@ Check Memory Base+pc
28203  mov lr,pc
28204  ldr pc,[r7,#0x64] ;@ Call checkpc()
28205
28206  ldr r2,[r7,#0x3c]
28207  sub r1,r4,r11 ;@ r1 = Old PC
28208  mov r4,r0
28209  tst r4,#1 ;@ address error?
28210  bne ExceptionAddressError_r_prg_r4
28211;@ Push old PC onto stack
28212  sub r0,r2,#4 ;@ Predecrement A7
28213  str r0,[r7,#0x3c] ;@ Save A7
28214  mov lr,pc
28215  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
28216  ldrh r8,[r4],#2 ;@ Fetch next opcode
28217  subs r5,r5,#22 ;@ Subtract cycles
28218  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28219  b CycloneEnd
28220
28221;@ ---------- [4eb8] jsr $3333.w uses Op4eb8 ----------
28222Op4eb8:
28223  ldr r11,[r7,#0x60] ;@ Get Memory base
28224
28225;@ EaCalc : Get '$3333.w' into r12:
28226  ldrsh r12,[r4],#2 ;@ Fetch Absolute Short address
28227;@ Jump - Get new PC from r12
28228  add r0,r12,r11 ;@ Memory Base + New PC
28229
28230;@ Check Memory Base+pc
28231  mov lr,pc
28232  ldr pc,[r7,#0x64] ;@ Call checkpc()
28233
28234  ldr r2,[r7,#0x3c]
28235  sub r1,r4,r11 ;@ r1 = Old PC
28236  mov r4,r0
28237  tst r4,#1 ;@ address error?
28238  bne ExceptionAddressError_r_prg_r4
28239;@ Push old PC onto stack
28240  sub r0,r2,#4 ;@ Predecrement A7
28241  str r0,[r7,#0x3c] ;@ Save A7
28242  mov lr,pc
28243  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
28244  ldrh r8,[r4],#2 ;@ Fetch next opcode
28245  subs r5,r5,#18 ;@ Subtract cycles
28246  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28247  b CycloneEnd
28248
28249;@ ---------- [4eb9] jsr $33333333.l uses Op4eb9 ----------
28250Op4eb9:
28251  ldr r11,[r7,#0x60] ;@ Get Memory base
28252
28253;@ EaCalc : Get '$33333333.l' into r12:
28254  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
28255  ldrh r0,[r4],#2
28256  orr r12,r0,r2,lsl #16
28257;@ Jump - Get new PC from r12
28258  add r0,r12,r11 ;@ Memory Base + New PC
28259
28260;@ Check Memory Base+pc
28261  mov lr,pc
28262  ldr pc,[r7,#0x64] ;@ Call checkpc()
28263
28264  ldr r2,[r7,#0x3c]
28265  sub r1,r4,r11 ;@ r1 = Old PC
28266  mov r4,r0
28267  tst r4,#1 ;@ address error?
28268  bne ExceptionAddressError_r_prg_r4
28269;@ Push old PC onto stack
28270  sub r0,r2,#4 ;@ Predecrement A7
28271  str r0,[r7,#0x3c] ;@ Save A7
28272  mov lr,pc
28273  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
28274  ldrh r8,[r4],#2 ;@ Fetch next opcode
28275  subs r5,r5,#20 ;@ Subtract cycles
28276  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28277  b CycloneEnd
28278
28279;@ ---------- [4eba] jsr ($3333,pc); =3335 uses Op4eba ----------
28280Op4eba:
28281  ldr r11,[r7,#0x60] ;@ Get Memory base
28282
28283;@ EaCalc : Get '($3333,pc)' into r12:
28284  ldr r0,[r7,#0x60] ;@ Get Memory base
28285  sub r0,r4,r0 ;@ Real PC
28286  ldrsh r2,[r4],#2 ;@ Fetch extension
28287  add r12,r2,r0 ;@ ($nn,PC)
28288;@ Jump - Get new PC from r12
28289  add r0,r12,r11 ;@ Memory Base + New PC
28290
28291;@ Check Memory Base+pc
28292  mov lr,pc
28293  ldr pc,[r7,#0x64] ;@ Call checkpc()
28294
28295  ldr r2,[r7,#0x3c]
28296  sub r1,r4,r11 ;@ r1 = Old PC
28297  mov r4,r0
28298  tst r4,#1 ;@ address error?
28299  bne ExceptionAddressError_r_prg_r4
28300;@ Push old PC onto stack
28301  sub r0,r2,#4 ;@ Predecrement A7
28302  str r0,[r7,#0x3c] ;@ Save A7
28303  mov lr,pc
28304  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
28305  ldrh r8,[r4],#2 ;@ Fetch next opcode
28306  subs r5,r5,#18 ;@ Subtract cycles
28307  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28308  b CycloneEnd
28309
28310;@ ---------- [4ebb] jsr ($33,pc,d3.w*2); =35 uses Op4ebb ----------
28311Op4ebb:
28312  ldr r11,[r7,#0x60] ;@ Get Memory base
28313
28314;@ EaCalc : Get '($33,pc,d3.w*2)' into r12:
28315  ldr r0,[r7,#0x60] ;@ Get Memory base
28316  ldrh r3,[r4] ;@ Get extension word
28317  sub r0,r4,r0 ;@ r0=PC
28318  add r4,r4,#2
28319  mov r2,r3,lsr #10
28320  tst r3,#0x0800 ;@ Is Rn Word or Long
28321  and r2,r2,#0x3c ;@ r2=Index of Rn
28322  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
28323  ldrne   r2,[r7,r2] ;@ r2=Rn.l
28324  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
28325  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
28326  add r12,r2,r0 ;@ r12=Disp+PC+Rn
28327;@ Jump - Get new PC from r12
28328  add r0,r12,r11 ;@ Memory Base + New PC
28329
28330;@ Check Memory Base+pc
28331  mov lr,pc
28332  ldr pc,[r7,#0x64] ;@ Call checkpc()
28333
28334  ldr r2,[r7,#0x3c]
28335  sub r1,r4,r11 ;@ r1 = Old PC
28336  mov r4,r0
28337  tst r4,#1 ;@ address error?
28338  bne ExceptionAddressError_r_prg_r4
28339;@ Push old PC onto stack
28340  sub r0,r2,#4 ;@ Predecrement A7
28341  str r0,[r7,#0x3c] ;@ Save A7
28342  mov lr,pc
28343  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
28344  ldrh r8,[r4],#2 ;@ Fetch next opcode
28345  subs r5,r5,#22 ;@ Subtract cycles
28346  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28347  b CycloneEnd
28348
28349;@ ---------- [4ed0] jmp (a0) uses Op4ed0 ----------
28350Op4ed0:
28351  ldr r11,[r7,#0x60] ;@ Get Memory base
28352
28353;@ EaCalc : Get '(a0)' into r12:
28354  and r2,r8,#0x000f
28355  orr r2,r2,#0x8 ;@ A0-7
28356  ldr r12,[r7,r2,lsl #2]
28357;@ Jump - Get new PC from r12
28358  add r0,r12,r11 ;@ Memory Base + New PC
28359
28360;@ Check Memory Base+pc
28361  mov lr,pc
28362  ldr pc,[r7,#0x64] ;@ Call checkpc()
28363
28364  mov r4,r0
28365  tst r4,#1 ;@ address error?
28366  bne ExceptionAddressError_r_prg_r4
28367  ldrh r8,[r4],#2 ;@ Fetch next opcode
28368  subs r5,r5,#8 ;@ Subtract cycles
28369  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28370  b CycloneEnd
28371
28372;@ ---------- [4ee8] jmp ($3333,a0) uses Op4ee8 ----------
28373Op4ee8:
28374  ldr r11,[r7,#0x60] ;@ Get Memory base
28375
28376;@ EaCalc : Get '($3333,a0)' into r12:
28377  ldrsh r0,[r4],#2 ;@ Fetch offset
28378  and r2,r8,#0x000f
28379  ldr r2,[r7,r2,lsl #2]
28380  add r12,r0,r2 ;@ Add on offset
28381;@ Jump - Get new PC from r12
28382  add r0,r12,r11 ;@ Memory Base + New PC
28383
28384;@ Check Memory Base+pc
28385  mov lr,pc
28386  ldr pc,[r7,#0x64] ;@ Call checkpc()
28387
28388  mov r4,r0
28389  tst r4,#1 ;@ address error?
28390  bne ExceptionAddressError_r_prg_r4
28391  ldrh r8,[r4],#2 ;@ Fetch next opcode
28392  subs r5,r5,#10 ;@ Subtract cycles
28393  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28394  b CycloneEnd
28395
28396;@ ---------- [4ef0] jmp ($33,a0,d3.w*2) uses Op4ef0 ----------
28397Op4ef0:
28398  ldr r11,[r7,#0x60] ;@ Get Memory base
28399
28400;@ EaCalc : Get '($33,a0,d3.w*2)' into r12:
28401;@ Get extension word into r3:
28402  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
28403  mov r2,r3,lsr #10
28404  tst r3,#0x0800 ;@ Is Rn Word or Long
28405  and r2,r2,#0x3c ;@ r2=Index of Rn
28406  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
28407  ldrne   r2,[r7,r2] ;@ r2=Rn.l
28408  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
28409  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
28410  and r2,r8,#0x000f
28411  orr r2,r2,#0x8 ;@ A0-7
28412  ldr r2,[r7,r2,lsl #2]
28413  add r12,r2,r3 ;@ r12=Disp+An+Rn
28414;@ Jump - Get new PC from r12
28415  add r0,r12,r11 ;@ Memory Base + New PC
28416
28417;@ Check Memory Base+pc
28418  mov lr,pc
28419  ldr pc,[r7,#0x64] ;@ Call checkpc()
28420
28421  mov r4,r0
28422  tst r4,#1 ;@ address error?
28423  bne ExceptionAddressError_r_prg_r4
28424  ldrh r8,[r4],#2 ;@ Fetch next opcode
28425  subs r5,r5,#14 ;@ Subtract cycles
28426  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28427  b CycloneEnd
28428
28429;@ ---------- [4ef8] jmp $3333.w uses Op4ef8 ----------
28430Op4ef8:
28431  ldr r11,[r7,#0x60] ;@ Get Memory base
28432
28433;@ EaCalc : Get '$3333.w' into r12:
28434  ldrsh r12,[r4],#2 ;@ Fetch Absolute Short address
28435;@ Jump - Get new PC from r12
28436  add r0,r12,r11 ;@ Memory Base + New PC
28437
28438;@ Check Memory Base+pc
28439  mov lr,pc
28440  ldr pc,[r7,#0x64] ;@ Call checkpc()
28441
28442  mov r4,r0
28443  tst r4,#1 ;@ address error?
28444  bne ExceptionAddressError_r_prg_r4
28445  ldrh r8,[r4],#2 ;@ Fetch next opcode
28446  subs r5,r5,#10 ;@ Subtract cycles
28447  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28448  b CycloneEnd
28449
28450;@ ---------- [4ef9] jmp $33333333.l uses Op4ef9 ----------
28451Op4ef9:
28452  ldr r11,[r7,#0x60] ;@ Get Memory base
28453
28454;@ EaCalc : Get '$33333333.l' into r12:
28455  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
28456  ldrh r0,[r4],#2
28457  orr r12,r0,r2,lsl #16
28458;@ Jump - Get new PC from r12
28459  add r0,r12,r11 ;@ Memory Base + New PC
28460
28461;@ Check Memory Base+pc
28462  mov lr,pc
28463  ldr pc,[r7,#0x64] ;@ Call checkpc()
28464
28465  mov r4,r0
28466  tst r4,#1 ;@ address error?
28467  bne ExceptionAddressError_r_prg_r4
28468  ldrh r8,[r4],#2 ;@ Fetch next opcode
28469  subs r5,r5,#12 ;@ Subtract cycles
28470  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28471  b CycloneEnd
28472
28473;@ ---------- [4efa] jmp ($3333,pc); =3335 uses Op4efa ----------
28474Op4efa:
28475  ldr r11,[r7,#0x60] ;@ Get Memory base
28476
28477;@ EaCalc : Get '($3333,pc)' into r12:
28478  ldr r0,[r7,#0x60] ;@ Get Memory base
28479  sub r0,r4,r0 ;@ Real PC
28480  ldrsh r2,[r4],#2 ;@ Fetch extension
28481  add r12,r2,r0 ;@ ($nn,PC)
28482;@ Jump - Get new PC from r12
28483  add r0,r12,r11 ;@ Memory Base + New PC
28484
28485;@ Check Memory Base+pc
28486  mov lr,pc
28487  ldr pc,[r7,#0x64] ;@ Call checkpc()
28488
28489  mov r4,r0
28490  tst r4,#1 ;@ address error?
28491  bne ExceptionAddressError_r_prg_r4
28492  ldrh r8,[r4],#2 ;@ Fetch next opcode
28493  subs r5,r5,#10 ;@ Subtract cycles
28494  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28495  b CycloneEnd
28496
28497;@ ---------- [4efb] jmp ($33,pc,d3.w*2); =35 uses Op4efb ----------
28498Op4efb:
28499  ldr r11,[r7,#0x60] ;@ Get Memory base
28500
28501;@ EaCalc : Get '($33,pc,d3.w*2)' into r12:
28502  ldr r0,[r7,#0x60] ;@ Get Memory base
28503  ldrh r3,[r4] ;@ Get extension word
28504  sub r0,r4,r0 ;@ r0=PC
28505  add r4,r4,#2
28506  mov r2,r3,lsr #10
28507  tst r3,#0x0800 ;@ Is Rn Word or Long
28508  and r2,r2,#0x3c ;@ r2=Index of Rn
28509  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
28510  ldrne   r2,[r7,r2] ;@ r2=Rn.l
28511  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
28512  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
28513  add r12,r2,r0 ;@ r12=Disp+PC+Rn
28514;@ Jump - Get new PC from r12
28515  add r0,r12,r11 ;@ Memory Base + New PC
28516
28517;@ Check Memory Base+pc
28518  mov lr,pc
28519  ldr pc,[r7,#0x64] ;@ Call checkpc()
28520
28521  mov r4,r0
28522  tst r4,#1 ;@ address error?
28523  bne ExceptionAddressError_r_prg_r4
28524  ldrh r8,[r4],#2 ;@ Fetch next opcode
28525  subs r5,r5,#14 ;@ Subtract cycles
28526  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28527  b CycloneEnd
28528
28529;@ ---------- [5000] addq.b #8, d0 uses Op5000 ----------
28530Op5000:
28531;@ EaCalc : Get register index into r11:
28532  and r11,r8,#0x000f
28533;@ EaRead : Read register[r11] into r0:
28534  ldr r0,[r7,r11,lsl #2]
28535
28536  mov r0,r0,asl #24
28537
28538  adds r1,r0,#0x8000000
28539  mrs r10,cpsr ;@ r10=flags
28540  str r10,[r7,#0x4c] ;@ Save X bit
28541
28542;@ EaWrite: r1 into register[r11]:
28543  mov r1,r1,lsr #24
28544  strb r1,[r7,r11,lsl #2]
28545
28546  ldrh r8,[r4],#2 ;@ Fetch next opcode
28547  subs r5,r5,#4 ;@ Subtract cycles
28548  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28549  b CycloneEnd
28550
28551;@ ---------- [5010] addq.b #8, (a0) uses Op5010 ----------
28552Op5010:
28553;@ EaCalc : Get '(a0)' into r11:
28554  and r2,r8,#0x000f
28555  orr r2,r2,#0x8 ;@ A0-7
28556  ldr r11,[r7,r2,lsl #2]
28557;@ EaRead : Read '(a0)' (address in r11) into r0:
28558  add lr,pc,#4
28559  mov r0,r11
28560  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
28561
28562  mov r0,r0,asl #24
28563
28564  adds r1,r0,#0x8000000
28565  mrs r10,cpsr ;@ r10=flags
28566  str r10,[r7,#0x4c] ;@ Save X bit
28567
28568;@ EaWrite: Write r1 into '(a0)' (address in r11):
28569  mov r1,r1,lsr #24
28570  add lr,pc,#4
28571  mov r0,r11
28572  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
28573
28574  ldrh r8,[r4],#2 ;@ Fetch next opcode
28575  subs r5,r5,#12 ;@ Subtract cycles
28576  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28577  b CycloneEnd
28578
28579;@ ---------- [5018] addq.b #8, (a0)+ uses Op5018 ----------
28580Op5018:
28581;@ EaCalc : Get '(a0)+' into r11:
28582  and r2,r8,#0x000f
28583  ldr r11,[r7,r2,lsl #2]
28584  add r3,r11,#1 ;@ Post-increment An
28585  str r3,[r7,r2,lsl #2]
28586;@ EaRead : Read '(a0)+' (address in r11) into r0:
28587  add lr,pc,#4
28588  mov r0,r11
28589  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
28590
28591  mov r0,r0,asl #24
28592
28593  adds r1,r0,#0x8000000
28594  mrs r10,cpsr ;@ r10=flags
28595  str r10,[r7,#0x4c] ;@ Save X bit
28596
28597;@ EaWrite: Write r1 into '(a0)+' (address in r11):
28598  mov r1,r1,lsr #24
28599  add lr,pc,#4
28600  mov r0,r11
28601  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
28602
28603  ldrh r8,[r4],#2 ;@ Fetch next opcode
28604  subs r5,r5,#12 ;@ Subtract cycles
28605  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28606  b CycloneEnd
28607
28608;@ ---------- [501f] addq.b #8, (a7)+ uses Op501f ----------
28609Op501f:
28610;@ EaCalc : Get '(a7)+' into r11:
28611  ldr r11,[r7,#0x3c] ;@ A7
28612  add r3,r11,#2 ;@ Post-increment An
28613  str r3,[r7,#0x3c] ;@ A7
28614;@ EaRead : Read '(a7)+' (address in r11) into r0:
28615  add lr,pc,#4
28616  mov r0,r11
28617  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
28618
28619  mov r0,r0,asl #24
28620
28621  adds r1,r0,#0x8000000
28622  mrs r10,cpsr ;@ r10=flags
28623  str r10,[r7,#0x4c] ;@ Save X bit
28624
28625;@ EaWrite: Write r1 into '(a7)+' (address in r11):
28626  mov r1,r1,lsr #24
28627  add lr,pc,#4
28628  mov r0,r11
28629  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
28630
28631  ldrh r8,[r4],#2 ;@ Fetch next opcode
28632  subs r5,r5,#12 ;@ Subtract cycles
28633  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28634  b CycloneEnd
28635
28636;@ ---------- [5020] addq.b #8, -(a0) uses Op5020 ----------
28637Op5020:
28638;@ EaCalc : Get '-(a0)' into r11:
28639  and r2,r8,#0x000f
28640  orr r2,r2,#0x8 ;@ A0-7
28641  ldr r11,[r7,r2,lsl #2]
28642  sub r11,r11,#1 ;@ Pre-decrement An
28643  str r11,[r7,r2,lsl #2]
28644;@ EaRead : Read '-(a0)' (address in r11) into r0:
28645  add lr,pc,#4
28646  mov r0,r11
28647  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
28648
28649  mov r0,r0,asl #24
28650
28651  adds r1,r0,#0x8000000
28652  mrs r10,cpsr ;@ r10=flags
28653  str r10,[r7,#0x4c] ;@ Save X bit
28654
28655;@ EaWrite: Write r1 into '-(a0)' (address in r11):
28656  mov r1,r1,lsr #24
28657  add lr,pc,#4
28658  mov r0,r11
28659  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
28660
28661  ldrh r8,[r4],#2 ;@ Fetch next opcode
28662  subs r5,r5,#14 ;@ Subtract cycles
28663  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28664  b CycloneEnd
28665
28666;@ ---------- [5027] addq.b #8, -(a7) uses Op5027 ----------
28667Op5027:
28668;@ EaCalc : Get '-(a7)' into r11:
28669  ldr r11,[r7,#0x3c] ;@ A7
28670  sub r11,r11,#2 ;@ Pre-decrement An
28671  str r11,[r7,#0x3c] ;@ A7
28672;@ EaRead : Read '-(a7)' (address in r11) into r0:
28673  add lr,pc,#4
28674  mov r0,r11
28675  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
28676
28677  mov r0,r0,asl #24
28678
28679  adds r1,r0,#0x8000000
28680  mrs r10,cpsr ;@ r10=flags
28681  str r10,[r7,#0x4c] ;@ Save X bit
28682
28683;@ EaWrite: Write r1 into '-(a7)' (address in r11):
28684  mov r1,r1,lsr #24
28685  add lr,pc,#4
28686  mov r0,r11
28687  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
28688
28689  ldrh r8,[r4],#2 ;@ Fetch next opcode
28690  subs r5,r5,#14 ;@ Subtract cycles
28691  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28692  b CycloneEnd
28693
28694;@ ---------- [5028] addq.b #8, ($3333,a0) uses Op5028 ----------
28695Op5028:
28696;@ EaCalc : Get '($3333,a0)' into r11:
28697  ldrsh r0,[r4],#2 ;@ Fetch offset
28698  and r2,r8,#0x000f
28699  ldr r2,[r7,r2,lsl #2]
28700  add r11,r0,r2 ;@ Add on offset
28701;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
28702  add lr,pc,#4
28703  mov r0,r11
28704  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
28705
28706  mov r0,r0,asl #24
28707
28708  adds r1,r0,#0x8000000
28709  mrs r10,cpsr ;@ r10=flags
28710  str r10,[r7,#0x4c] ;@ Save X bit
28711
28712;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
28713  mov r1,r1,lsr #24
28714  add lr,pc,#4
28715  mov r0,r11
28716  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
28717
28718  ldrh r8,[r4],#2 ;@ Fetch next opcode
28719  subs r5,r5,#16 ;@ Subtract cycles
28720  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28721  b CycloneEnd
28722
28723;@ ---------- [5030] addq.b #8, ($33,a0,d3.w*2) uses Op5030 ----------
28724Op5030:
28725;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
28726;@ Get extension word into r3:
28727  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
28728  mov r2,r3,lsr #10
28729  tst r3,#0x0800 ;@ Is Rn Word or Long
28730  and r2,r2,#0x3c ;@ r2=Index of Rn
28731  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
28732  ldrne   r2,[r7,r2] ;@ r2=Rn.l
28733  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
28734  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
28735  and r2,r8,#0x000f
28736  orr r2,r2,#0x8 ;@ A0-7
28737  ldr r2,[r7,r2,lsl #2]
28738  add r11,r2,r3 ;@ r11=Disp+An+Rn
28739;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
28740  add lr,pc,#4
28741  mov r0,r11
28742  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
28743
28744  mov r0,r0,asl #24
28745
28746  adds r1,r0,#0x8000000
28747  mrs r10,cpsr ;@ r10=flags
28748  str r10,[r7,#0x4c] ;@ Save X bit
28749
28750;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
28751  mov r1,r1,lsr #24
28752  add lr,pc,#4
28753  mov r0,r11
28754  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
28755
28756  ldrh r8,[r4],#2 ;@ Fetch next opcode
28757  subs r5,r5,#18 ;@ Subtract cycles
28758  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28759  b CycloneEnd
28760
28761;@ ---------- [5038] addq.b #8, $3333.w uses Op5038 ----------
28762Op5038:
28763;@ EaCalc : Get '$3333.w' into r11:
28764  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
28765;@ EaRead : Read '$3333.w' (address in r11) into r0:
28766  add lr,pc,#4
28767  mov r0,r11
28768  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
28769
28770  mov r0,r0,asl #24
28771
28772  adds r1,r0,#0x8000000
28773  mrs r10,cpsr ;@ r10=flags
28774  str r10,[r7,#0x4c] ;@ Save X bit
28775
28776;@ EaWrite: Write r1 into '$3333.w' (address in r11):
28777  mov r1,r1,lsr #24
28778  add lr,pc,#4
28779  mov r0,r11
28780  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
28781
28782  ldrh r8,[r4],#2 ;@ Fetch next opcode
28783  subs r5,r5,#16 ;@ Subtract cycles
28784  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28785  b CycloneEnd
28786
28787;@ ---------- [5039] addq.b #8, $33333333.l uses Op5039 ----------
28788Op5039:
28789;@ EaCalc : Get '$33333333.l' into r11:
28790  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
28791  ldrh r0,[r4],#2
28792  orr r11,r0,r2,lsl #16
28793;@ EaRead : Read '$33333333.l' (address in r11) into r0:
28794  add lr,pc,#4
28795  mov r0,r11
28796  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
28797
28798  mov r0,r0,asl #24
28799
28800  adds r1,r0,#0x8000000
28801  mrs r10,cpsr ;@ r10=flags
28802  str r10,[r7,#0x4c] ;@ Save X bit
28803
28804;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
28805  mov r1,r1,lsr #24
28806  add lr,pc,#4
28807  mov r0,r11
28808  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
28809
28810  ldrh r8,[r4],#2 ;@ Fetch next opcode
28811  subs r5,r5,#20 ;@ Subtract cycles
28812  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28813  b CycloneEnd
28814
28815;@ ---------- [5040] addq.w #8, d0 uses Op5040 ----------
28816Op5040:
28817;@ EaCalc : Get register index into r11:
28818  and r11,r8,#0x000f
28819  mov r11,r11,lsl #2
28820;@ EaRead : Read register[r11] into r0:
28821  ldr r0,[r7,r11]
28822
28823  mov r0,r0,asl #16
28824
28825  adds r1,r0,#0x80000
28826  mrs r10,cpsr ;@ r10=flags
28827  str r10,[r7,#0x4c] ;@ Save X bit
28828
28829;@ EaWrite: r1 into register[r11]:
28830  mov r1,r1,lsr #16
28831  strh r1,[r7,r11]
28832
28833  ldrh r8,[r4],#2 ;@ Fetch next opcode
28834  subs r5,r5,#4 ;@ Subtract cycles
28835  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28836  b CycloneEnd
28837
28838;@ ---------- [5048] addq.w #8, a0 uses Op5048 ----------
28839Op5048:
28840;@ EaCalc : Get register index into r11:
28841  and r11,r8,#0x000f
28842;@ EaRead : Read register[r11] into r0:
28843  ldr r0,[r7,r11,lsl #2]
28844
28845  adds r1,r0,#0x0008
28846
28847;@ EaWrite: r1 into register[r11]:
28848  str r1,[r7,r11,lsl #2]
28849
28850  ldrh r8,[r4],#2 ;@ Fetch next opcode
28851  subs r5,r5,#4 ;@ Subtract cycles
28852  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28853  b CycloneEnd
28854
28855;@ ---------- [5050] addq.w #8, (a0) uses Op5050 ----------
28856Op5050:
28857;@ EaCalc : Get '(a0)' into r11:
28858  and r2,r8,#0x000f
28859  orr r2,r2,#0x8 ;@ A0-7
28860  ldr r11,[r7,r2,lsl #2]
28861;@ EaRead : Read '(a0)' (address in r11) into r0:
28862  add lr,pc,#4
28863  mov r0,r11
28864  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
28865
28866  mov r0,r0,asl #16
28867
28868  adds r1,r0,#0x80000
28869  mrs r10,cpsr ;@ r10=flags
28870  str r10,[r7,#0x4c] ;@ Save X bit
28871
28872;@ EaWrite: Write r1 into '(a0)' (address in r11):
28873  mov r1,r1,lsr #16
28874  add lr,pc,#4
28875  mov r0,r11
28876  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
28877
28878  ldrh r8,[r4],#2 ;@ Fetch next opcode
28879  subs r5,r5,#12 ;@ Subtract cycles
28880  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28881  b CycloneEnd
28882
28883;@ ---------- [5058] addq.w #8, (a0)+ uses Op5058 ----------
28884Op5058:
28885;@ EaCalc : Get '(a0)+' into r11:
28886  and r2,r8,#0x000f
28887  ldr r11,[r7,r2,lsl #2]
28888  add r3,r11,#2 ;@ Post-increment An
28889  str r3,[r7,r2,lsl #2]
28890;@ EaRead : Read '(a0)+' (address in r11) into r0:
28891  add lr,pc,#4
28892  mov r0,r11
28893  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
28894
28895  mov r0,r0,asl #16
28896
28897  adds r1,r0,#0x80000
28898  mrs r10,cpsr ;@ r10=flags
28899  str r10,[r7,#0x4c] ;@ Save X bit
28900
28901;@ EaWrite: Write r1 into '(a0)+' (address in r11):
28902  mov r1,r1,lsr #16
28903  add lr,pc,#4
28904  mov r0,r11
28905  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
28906
28907  ldrh r8,[r4],#2 ;@ Fetch next opcode
28908  subs r5,r5,#12 ;@ Subtract cycles
28909  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28910  b CycloneEnd
28911
28912;@ ---------- [5060] addq.w #8, -(a0) uses Op5060 ----------
28913Op5060:
28914;@ EaCalc : Get '-(a0)' into r11:
28915  and r2,r8,#0x000f
28916  orr r2,r2,#0x8 ;@ A0-7
28917  ldr r11,[r7,r2,lsl #2]
28918  sub r11,r11,#2 ;@ Pre-decrement An
28919  str r11,[r7,r2,lsl #2]
28920;@ EaRead : Read '-(a0)' (address in r11) into r0:
28921  add lr,pc,#4
28922  mov r0,r11
28923  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
28924
28925  mov r0,r0,asl #16
28926
28927  adds r1,r0,#0x80000
28928  mrs r10,cpsr ;@ r10=flags
28929  str r10,[r7,#0x4c] ;@ Save X bit
28930
28931;@ EaWrite: Write r1 into '-(a0)' (address in r11):
28932  mov r1,r1,lsr #16
28933  add lr,pc,#4
28934  mov r0,r11
28935  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
28936
28937  ldrh r8,[r4],#2 ;@ Fetch next opcode
28938  subs r5,r5,#14 ;@ Subtract cycles
28939  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28940  b CycloneEnd
28941
28942;@ ---------- [5068] addq.w #8, ($3333,a0) uses Op5068 ----------
28943Op5068:
28944;@ EaCalc : Get '($3333,a0)' into r11:
28945  ldrsh r0,[r4],#2 ;@ Fetch offset
28946  and r2,r8,#0x000f
28947  ldr r2,[r7,r2,lsl #2]
28948  add r11,r0,r2 ;@ Add on offset
28949;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
28950  add lr,pc,#4
28951  mov r0,r11
28952  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
28953
28954  mov r0,r0,asl #16
28955
28956  adds r1,r0,#0x80000
28957  mrs r10,cpsr ;@ r10=flags
28958  str r10,[r7,#0x4c] ;@ Save X bit
28959
28960;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
28961  mov r1,r1,lsr #16
28962  add lr,pc,#4
28963  mov r0,r11
28964  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
28965
28966  ldrh r8,[r4],#2 ;@ Fetch next opcode
28967  subs r5,r5,#16 ;@ Subtract cycles
28968  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
28969  b CycloneEnd
28970
28971;@ ---------- [5070] addq.w #8, ($33,a0,d3.w*2) uses Op5070 ----------
28972Op5070:
28973;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
28974;@ Get extension word into r3:
28975  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
28976  mov r2,r3,lsr #10
28977  tst r3,#0x0800 ;@ Is Rn Word or Long
28978  and r2,r2,#0x3c ;@ r2=Index of Rn
28979  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
28980  ldrne   r2,[r7,r2] ;@ r2=Rn.l
28981  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
28982  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
28983  and r2,r8,#0x000f
28984  orr r2,r2,#0x8 ;@ A0-7
28985  ldr r2,[r7,r2,lsl #2]
28986  add r11,r2,r3 ;@ r11=Disp+An+Rn
28987;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
28988  add lr,pc,#4
28989  mov r0,r11
28990  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
28991
28992  mov r0,r0,asl #16
28993
28994  adds r1,r0,#0x80000
28995  mrs r10,cpsr ;@ r10=flags
28996  str r10,[r7,#0x4c] ;@ Save X bit
28997
28998;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
28999  mov r1,r1,lsr #16
29000  add lr,pc,#4
29001  mov r0,r11
29002  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
29003
29004  ldrh r8,[r4],#2 ;@ Fetch next opcode
29005  subs r5,r5,#18 ;@ Subtract cycles
29006  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29007  b CycloneEnd
29008
29009;@ ---------- [5078] addq.w #8, $3333.w uses Op5078 ----------
29010Op5078:
29011;@ EaCalc : Get '$3333.w' into r11:
29012  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
29013;@ EaRead : Read '$3333.w' (address in r11) into r0:
29014  add lr,pc,#4
29015  mov r0,r11
29016  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
29017
29018  mov r0,r0,asl #16
29019
29020  adds r1,r0,#0x80000
29021  mrs r10,cpsr ;@ r10=flags
29022  str r10,[r7,#0x4c] ;@ Save X bit
29023
29024;@ EaWrite: Write r1 into '$3333.w' (address in r11):
29025  mov r1,r1,lsr #16
29026  add lr,pc,#4
29027  mov r0,r11
29028  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
29029
29030  ldrh r8,[r4],#2 ;@ Fetch next opcode
29031  subs r5,r5,#16 ;@ Subtract cycles
29032  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29033  b CycloneEnd
29034
29035;@ ---------- [5079] addq.w #8, $33333333.l uses Op5079 ----------
29036Op5079:
29037;@ EaCalc : Get '$33333333.l' into r11:
29038  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
29039  ldrh r0,[r4],#2
29040  orr r11,r0,r2,lsl #16
29041;@ EaRead : Read '$33333333.l' (address in r11) into r0:
29042  add lr,pc,#4
29043  mov r0,r11
29044  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
29045
29046  mov r0,r0,asl #16
29047
29048  adds r1,r0,#0x80000
29049  mrs r10,cpsr ;@ r10=flags
29050  str r10,[r7,#0x4c] ;@ Save X bit
29051
29052;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
29053  mov r1,r1,lsr #16
29054  add lr,pc,#4
29055  mov r0,r11
29056  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
29057
29058  ldrh r8,[r4],#2 ;@ Fetch next opcode
29059  subs r5,r5,#20 ;@ Subtract cycles
29060  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29061  b CycloneEnd
29062
29063;@ ---------- [5080] addq.l #8, d0 uses Op5080 ----------
29064Op5080:
29065;@ EaCalc : Get register index into r11:
29066  and r11,r8,#0x000f
29067;@ EaRead : Read register[r11] into r0:
29068  ldr r0,[r7,r11,lsl #2]
29069
29070  adds r1,r0,#0x0008
29071  mrs r10,cpsr ;@ r10=flags
29072  str r10,[r7,#0x4c] ;@ Save X bit
29073
29074;@ EaWrite: r1 into register[r11]:
29075  str r1,[r7,r11,lsl #2]
29076
29077  ldrh r8,[r4],#2 ;@ Fetch next opcode
29078  subs r5,r5,#8 ;@ Subtract cycles
29079  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29080  b CycloneEnd
29081
29082;@ ---------- [5088] addq.l #8, a0 uses Op5088 ----------
29083Op5088:
29084;@ EaCalc : Get register index into r11:
29085  and r11,r8,#0x000f
29086;@ EaRead : Read register[r11] into r0:
29087  ldr r0,[r7,r11,lsl #2]
29088
29089  adds r1,r0,#0x0008
29090
29091;@ EaWrite: r1 into register[r11]:
29092  str r1,[r7,r11,lsl #2]
29093
29094  ldrh r8,[r4],#2 ;@ Fetch next opcode
29095  subs r5,r5,#8 ;@ Subtract cycles
29096  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29097  b CycloneEnd
29098
29099;@ ---------- [5090] addq.l #8, (a0) uses Op5090 ----------
29100Op5090:
29101;@ EaCalc : Get '(a0)' into r11:
29102  and r2,r8,#0x000f
29103  orr r2,r2,#0x8 ;@ A0-7
29104  ldr r11,[r7,r2,lsl #2]
29105;@ EaRead : Read '(a0)' (address in r11) into r0:
29106  add lr,pc,#4
29107  mov r0,r11
29108  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
29109
29110  adds r1,r0,#0x0008
29111  mrs r10,cpsr ;@ r10=flags
29112  str r10,[r7,#0x4c] ;@ Save X bit
29113
29114;@ EaWrite: Write r1 into '(a0)' (address in r11):
29115  add lr,pc,#4
29116  mov r0,r11
29117  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
29118
29119  ldrh r8,[r4],#2 ;@ Fetch next opcode
29120  subs r5,r5,#20 ;@ Subtract cycles
29121  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29122  b CycloneEnd
29123
29124;@ ---------- [5098] addq.l #8, (a0)+ uses Op5098 ----------
29125Op5098:
29126;@ EaCalc : Get '(a0)+' into r11:
29127  and r2,r8,#0x000f
29128  ldr r11,[r7,r2,lsl #2]
29129  add r3,r11,#4 ;@ Post-increment An
29130  str r3,[r7,r2,lsl #2]
29131;@ EaRead : Read '(a0)+' (address in r11) into r0:
29132  add lr,pc,#4
29133  mov r0,r11
29134  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
29135
29136  adds r1,r0,#0x0008
29137  mrs r10,cpsr ;@ r10=flags
29138  str r10,[r7,#0x4c] ;@ Save X bit
29139
29140;@ EaWrite: Write r1 into '(a0)+' (address in r11):
29141  add lr,pc,#4
29142  mov r0,r11
29143  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
29144
29145  ldrh r8,[r4],#2 ;@ Fetch next opcode
29146  subs r5,r5,#20 ;@ Subtract cycles
29147  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29148  b CycloneEnd
29149
29150;@ ---------- [50a0] addq.l #8, -(a0) uses Op50a0 ----------
29151Op50a0:
29152;@ EaCalc : Get '-(a0)' into r11:
29153  and r2,r8,#0x000f
29154  orr r2,r2,#0x8 ;@ A0-7
29155  ldr r11,[r7,r2,lsl #2]
29156  sub r11,r11,#4 ;@ Pre-decrement An
29157  str r11,[r7,r2,lsl #2]
29158;@ EaRead : Read '-(a0)' (address in r11) into r0:
29159  add lr,pc,#4
29160  mov r0,r11
29161  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
29162
29163  adds r1,r0,#0x0008
29164  mrs r10,cpsr ;@ r10=flags
29165  str r10,[r7,#0x4c] ;@ Save X bit
29166
29167;@ EaWrite: Write r1 into '-(a0)' (address in r11):
29168  add lr,pc,#4
29169  mov r0,r11
29170  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
29171
29172  ldrh r8,[r4],#2 ;@ Fetch next opcode
29173  subs r5,r5,#22 ;@ Subtract cycles
29174  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29175  b CycloneEnd
29176
29177;@ ---------- [50a8] addq.l #8, ($3333,a0) uses Op50a8 ----------
29178Op50a8:
29179;@ EaCalc : Get '($3333,a0)' into r11:
29180  ldrsh r0,[r4],#2 ;@ Fetch offset
29181  and r2,r8,#0x000f
29182  ldr r2,[r7,r2,lsl #2]
29183  add r11,r0,r2 ;@ Add on offset
29184;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
29185  add lr,pc,#4
29186  mov r0,r11
29187  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
29188
29189  adds r1,r0,#0x0008
29190  mrs r10,cpsr ;@ r10=flags
29191  str r10,[r7,#0x4c] ;@ Save X bit
29192
29193;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
29194  add lr,pc,#4
29195  mov r0,r11
29196  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
29197
29198  ldrh r8,[r4],#2 ;@ Fetch next opcode
29199  subs r5,r5,#24 ;@ Subtract cycles
29200  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29201  b CycloneEnd
29202
29203;@ ---------- [50b0] addq.l #8, ($33,a0,d3.w*2) uses Op50b0 ----------
29204Op50b0:
29205;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
29206;@ Get extension word into r3:
29207  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
29208  mov r2,r3,lsr #10
29209  tst r3,#0x0800 ;@ Is Rn Word or Long
29210  and r2,r2,#0x3c ;@ r2=Index of Rn
29211  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
29212  ldrne   r2,[r7,r2] ;@ r2=Rn.l
29213  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
29214  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
29215  and r2,r8,#0x000f
29216  orr r2,r2,#0x8 ;@ A0-7
29217  ldr r2,[r7,r2,lsl #2]
29218  add r11,r2,r3 ;@ r11=Disp+An+Rn
29219;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
29220  add lr,pc,#4
29221  mov r0,r11
29222  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
29223
29224  adds r1,r0,#0x0008
29225  mrs r10,cpsr ;@ r10=flags
29226  str r10,[r7,#0x4c] ;@ Save X bit
29227
29228;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
29229  add lr,pc,#4
29230  mov r0,r11
29231  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
29232
29233  ldrh r8,[r4],#2 ;@ Fetch next opcode
29234  subs r5,r5,#26 ;@ Subtract cycles
29235  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29236  b CycloneEnd
29237
29238;@ ---------- [50b8] addq.l #8, $3333.w uses Op50b8 ----------
29239Op50b8:
29240;@ EaCalc : Get '$3333.w' into r11:
29241  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
29242;@ EaRead : Read '$3333.w' (address in r11) into r0:
29243  add lr,pc,#4
29244  mov r0,r11
29245  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
29246
29247  adds r1,r0,#0x0008
29248  mrs r10,cpsr ;@ r10=flags
29249  str r10,[r7,#0x4c] ;@ Save X bit
29250
29251;@ EaWrite: Write r1 into '$3333.w' (address in r11):
29252  add lr,pc,#4
29253  mov r0,r11
29254  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
29255
29256  ldrh r8,[r4],#2 ;@ Fetch next opcode
29257  subs r5,r5,#24 ;@ Subtract cycles
29258  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29259  b CycloneEnd
29260
29261;@ ---------- [50b9] addq.l #8, $33333333.l uses Op50b9 ----------
29262Op50b9:
29263;@ EaCalc : Get '$33333333.l' into r11:
29264  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
29265  ldrh r0,[r4],#2
29266  orr r11,r0,r2,lsl #16
29267;@ EaRead : Read '$33333333.l' (address in r11) into r0:
29268  add lr,pc,#4
29269  mov r0,r11
29270  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
29271
29272  adds r1,r0,#0x0008
29273  mrs r10,cpsr ;@ r10=flags
29274  str r10,[r7,#0x4c] ;@ Save X bit
29275
29276;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
29277  add lr,pc,#4
29278  mov r0,r11
29279  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
29280
29281  ldrh r8,[r4],#2 ;@ Fetch next opcode
29282  subs r5,r5,#28 ;@ Subtract cycles
29283  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29284  b CycloneEnd
29285
29286;@ ---------- [50c0] st d0 uses Op50c0 ----------
29287Op50c0:
29288  mvn r1,#0
29289
29290;@ EaCalc : Get register index into r0:
29291  and r0,r8,#0x000f
29292;@ EaWrite: r1 into register[r0]:
29293  strb r1,[r7,r0,lsl #2]
29294
29295  ldrh r8,[r4],#2 ;@ Fetch next opcode
29296  subs r5,r5,#6 ;@ Subtract cycles
29297  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29298  b CycloneEnd
29299
29300;@ ---------- [50c8] dbt d0, 3335 uses Op50c8 ----------
29301Op50c8:
29302;@ condition true:
29303DbraTrue:
29304  add r4,r4,#2 ;@ Skip branch offset
29305
29306  ldrh r8,[r4],#2 ;@ Fetch next opcode
29307  subs r5,r5,#12 ;@ Subtract cycles
29308  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29309  b CycloneEnd
29310
29311;@ ---------- [50d0] st (a0) uses Op50d0 ----------
29312Op50d0:
29313  mvn r1,#0
29314
29315;@ EaCalc : Get '(a0)' into r0:
29316  and r2,r8,#0x000f
29317  orr r2,r2,#0x8 ;@ A0-7
29318  ldr r0,[r7,r2,lsl #2]
29319;@ EaWrite: Write r1 into '(a0)' (address in r0):
29320  and r1,r1,#0xff
29321  mov lr,pc
29322  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29323
29324  ldrh r8,[r4],#2 ;@ Fetch next opcode
29325  subs r5,r5,#12 ;@ Subtract cycles
29326  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29327  b CycloneEnd
29328
29329;@ ---------- [50d8] st (a0)+ uses Op50d8 ----------
29330Op50d8:
29331  mvn r1,#0
29332
29333;@ EaCalc : Get '(a0)+' into r0:
29334  and r2,r8,#0x000f
29335  ldr r0,[r7,r2,lsl #2]
29336  add r3,r0,#1 ;@ Post-increment An
29337  str r3,[r7,r2,lsl #2]
29338;@ EaWrite: Write r1 into '(a0)+' (address in r0):
29339  and r1,r1,#0xff
29340  mov lr,pc
29341  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29342
29343  ldrh r8,[r4],#2 ;@ Fetch next opcode
29344  subs r5,r5,#12 ;@ Subtract cycles
29345  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29346  b CycloneEnd
29347
29348;@ ---------- [50df] st (a7)+ uses Op50df ----------
29349Op50df:
29350  mvn r1,#0
29351
29352;@ EaCalc : Get '(a7)+' into r0:
29353  ldr r0,[r7,#0x3c] ;@ A7
29354  add r3,r0,#2 ;@ Post-increment An
29355  str r3,[r7,#0x3c] ;@ A7
29356;@ EaWrite: Write r1 into '(a7)+' (address in r0):
29357  and r1,r1,#0xff
29358  mov lr,pc
29359  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29360
29361  ldrh r8,[r4],#2 ;@ Fetch next opcode
29362  subs r5,r5,#12 ;@ Subtract cycles
29363  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29364  b CycloneEnd
29365
29366;@ ---------- [50e0] st -(a0) uses Op50e0 ----------
29367Op50e0:
29368  mvn r1,#0
29369
29370;@ EaCalc : Get '-(a0)' into r0:
29371  and r2,r8,#0x000f
29372  orr r2,r2,#0x8 ;@ A0-7
29373  ldr r0,[r7,r2,lsl #2]
29374  sub r0,r0,#1 ;@ Pre-decrement An
29375  str r0,[r7,r2,lsl #2]
29376;@ EaWrite: Write r1 into '-(a0)' (address in r0):
29377  and r1,r1,#0xff
29378  mov lr,pc
29379  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29380
29381  ldrh r8,[r4],#2 ;@ Fetch next opcode
29382  subs r5,r5,#14 ;@ Subtract cycles
29383  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29384  b CycloneEnd
29385
29386;@ ---------- [50e7] st -(a7) uses Op50e7 ----------
29387Op50e7:
29388  mvn r1,#0
29389
29390;@ EaCalc : Get '-(a7)' into r0:
29391  ldr r0,[r7,#0x3c] ;@ A7
29392  sub r0,r0,#2 ;@ Pre-decrement An
29393  str r0,[r7,#0x3c] ;@ A7
29394;@ EaWrite: Write r1 into '-(a7)' (address in r0):
29395  and r1,r1,#0xff
29396  mov lr,pc
29397  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29398
29399  ldrh r8,[r4],#2 ;@ Fetch next opcode
29400  subs r5,r5,#14 ;@ Subtract cycles
29401  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29402  b CycloneEnd
29403
29404;@ ---------- [50e8] st ($3333,a0) uses Op50e8 ----------
29405Op50e8:
29406  mvn r1,#0
29407
29408;@ EaCalc : Get '($3333,a0)' into r0:
29409  ldrsh r0,[r4],#2 ;@ Fetch offset
29410  and r2,r8,#0x000f
29411  ldr r2,[r7,r2,lsl #2]
29412  add r0,r0,r2 ;@ Add on offset
29413;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
29414  and r1,r1,#0xff
29415  mov lr,pc
29416  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29417
29418  ldrh r8,[r4],#2 ;@ Fetch next opcode
29419  subs r5,r5,#16 ;@ Subtract cycles
29420  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29421  b CycloneEnd
29422
29423;@ ---------- [50f0] st ($33,a0,d3.w*2) uses Op50f0 ----------
29424Op50f0:
29425  mvn r1,#0
29426
29427;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
29428;@ Get extension word into r3:
29429  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
29430  mov r2,r3,lsr #10
29431  tst r3,#0x0800 ;@ Is Rn Word or Long
29432  and r2,r2,#0x3c ;@ r2=Index of Rn
29433  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
29434  ldrne   r2,[r7,r2] ;@ r2=Rn.l
29435  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
29436  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
29437  and r2,r8,#0x000f
29438  orr r2,r2,#0x8 ;@ A0-7
29439  ldr r2,[r7,r2,lsl #2]
29440  add r0,r2,r3 ;@ r0=Disp+An+Rn
29441;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
29442  and r1,r1,#0xff
29443  mov lr,pc
29444  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29445
29446  ldrh r8,[r4],#2 ;@ Fetch next opcode
29447  subs r5,r5,#18 ;@ Subtract cycles
29448  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29449  b CycloneEnd
29450
29451;@ ---------- [50f8] st $3333.w uses Op50f8 ----------
29452Op50f8:
29453  mvn r1,#0
29454
29455;@ EaCalc : Get '$3333.w' into r0:
29456  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
29457;@ EaWrite: Write r1 into '$3333.w' (address in r0):
29458  and r1,r1,#0xff
29459  mov lr,pc
29460  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29461
29462  ldrh r8,[r4],#2 ;@ Fetch next opcode
29463  subs r5,r5,#16 ;@ Subtract cycles
29464  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29465  b CycloneEnd
29466
29467;@ ---------- [50f9] st $33333333.l uses Op50f9 ----------
29468Op50f9:
29469  mvn r1,#0
29470
29471;@ EaCalc : Get '$33333333.l' into r0:
29472  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
29473  ldrh r0,[r4],#2
29474  orr r0,r0,r2,lsl #16
29475;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
29476  and r1,r1,#0xff
29477  mov lr,pc
29478  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29479
29480  ldrh r8,[r4],#2 ;@ Fetch next opcode
29481  subs r5,r5,#20 ;@ Subtract cycles
29482  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29483  b CycloneEnd
29484
29485;@ ---------- [5100] subq.b #8, d0 uses Op5100 ----------
29486Op5100:
29487;@ EaCalc : Get register index into r11:
29488  and r11,r8,#0x000f
29489;@ EaRead : Read register[r11] into r0:
29490  ldr r0,[r7,r11,lsl #2]
29491
29492  mov r0,r0,asl #24
29493
29494  subs r1,r0,#0x8000000
29495  mrs r10,cpsr ;@ r10=flags
29496  eor r10,r10,#0x20000000 ;@ Invert carry
29497  str r10,[r7,#0x4c] ;@ Save X bit
29498
29499;@ EaWrite: r1 into register[r11]:
29500  mov r1,r1,lsr #24
29501  strb r1,[r7,r11,lsl #2]
29502
29503  ldrh r8,[r4],#2 ;@ Fetch next opcode
29504  subs r5,r5,#4 ;@ Subtract cycles
29505  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29506  b CycloneEnd
29507
29508;@ ---------- [5110] subq.b #8, (a0) uses Op5110 ----------
29509Op5110:
29510;@ EaCalc : Get '(a0)' into r11:
29511  and r2,r8,#0x000f
29512  orr r2,r2,#0x8 ;@ A0-7
29513  ldr r11,[r7,r2,lsl #2]
29514;@ EaRead : Read '(a0)' (address in r11) into r0:
29515  add lr,pc,#4
29516  mov r0,r11
29517  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
29518
29519  mov r0,r0,asl #24
29520
29521  subs r1,r0,#0x8000000
29522  mrs r10,cpsr ;@ r10=flags
29523  eor r10,r10,#0x20000000 ;@ Invert carry
29524  str r10,[r7,#0x4c] ;@ Save X bit
29525
29526;@ EaWrite: Write r1 into '(a0)' (address in r11):
29527  mov r1,r1,lsr #24
29528  add lr,pc,#4
29529  mov r0,r11
29530  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29531
29532  ldrh r8,[r4],#2 ;@ Fetch next opcode
29533  subs r5,r5,#12 ;@ Subtract cycles
29534  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29535  b CycloneEnd
29536
29537;@ ---------- [5118] subq.b #8, (a0)+ uses Op5118 ----------
29538Op5118:
29539;@ EaCalc : Get '(a0)+' into r11:
29540  and r2,r8,#0x000f
29541  ldr r11,[r7,r2,lsl #2]
29542  add r3,r11,#1 ;@ Post-increment An
29543  str r3,[r7,r2,lsl #2]
29544;@ EaRead : Read '(a0)+' (address in r11) into r0:
29545  add lr,pc,#4
29546  mov r0,r11
29547  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
29548
29549  mov r0,r0,asl #24
29550
29551  subs r1,r0,#0x8000000
29552  mrs r10,cpsr ;@ r10=flags
29553  eor r10,r10,#0x20000000 ;@ Invert carry
29554  str r10,[r7,#0x4c] ;@ Save X bit
29555
29556;@ EaWrite: Write r1 into '(a0)+' (address in r11):
29557  mov r1,r1,lsr #24
29558  add lr,pc,#4
29559  mov r0,r11
29560  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29561
29562  ldrh r8,[r4],#2 ;@ Fetch next opcode
29563  subs r5,r5,#12 ;@ Subtract cycles
29564  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29565  b CycloneEnd
29566
29567;@ ---------- [511f] subq.b #8, (a7)+ uses Op511f ----------
29568Op511f:
29569;@ EaCalc : Get '(a7)+' into r11:
29570  ldr r11,[r7,#0x3c] ;@ A7
29571  add r3,r11,#2 ;@ Post-increment An
29572  str r3,[r7,#0x3c] ;@ A7
29573;@ EaRead : Read '(a7)+' (address in r11) into r0:
29574  add lr,pc,#4
29575  mov r0,r11
29576  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
29577
29578  mov r0,r0,asl #24
29579
29580  subs r1,r0,#0x8000000
29581  mrs r10,cpsr ;@ r10=flags
29582  eor r10,r10,#0x20000000 ;@ Invert carry
29583  str r10,[r7,#0x4c] ;@ Save X bit
29584
29585;@ EaWrite: Write r1 into '(a7)+' (address in r11):
29586  mov r1,r1,lsr #24
29587  add lr,pc,#4
29588  mov r0,r11
29589  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29590
29591  ldrh r8,[r4],#2 ;@ Fetch next opcode
29592  subs r5,r5,#12 ;@ Subtract cycles
29593  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29594  b CycloneEnd
29595
29596;@ ---------- [5120] subq.b #8, -(a0) uses Op5120 ----------
29597Op5120:
29598;@ EaCalc : Get '-(a0)' into r11:
29599  and r2,r8,#0x000f
29600  orr r2,r2,#0x8 ;@ A0-7
29601  ldr r11,[r7,r2,lsl #2]
29602  sub r11,r11,#1 ;@ Pre-decrement An
29603  str r11,[r7,r2,lsl #2]
29604;@ EaRead : Read '-(a0)' (address in r11) into r0:
29605  add lr,pc,#4
29606  mov r0,r11
29607  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
29608
29609  mov r0,r0,asl #24
29610
29611  subs r1,r0,#0x8000000
29612  mrs r10,cpsr ;@ r10=flags
29613  eor r10,r10,#0x20000000 ;@ Invert carry
29614  str r10,[r7,#0x4c] ;@ Save X bit
29615
29616;@ EaWrite: Write r1 into '-(a0)' (address in r11):
29617  mov r1,r1,lsr #24
29618  add lr,pc,#4
29619  mov r0,r11
29620  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29621
29622  ldrh r8,[r4],#2 ;@ Fetch next opcode
29623  subs r5,r5,#14 ;@ Subtract cycles
29624  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29625  b CycloneEnd
29626
29627;@ ---------- [5127] subq.b #8, -(a7) uses Op5127 ----------
29628Op5127:
29629;@ EaCalc : Get '-(a7)' into r11:
29630  ldr r11,[r7,#0x3c] ;@ A7
29631  sub r11,r11,#2 ;@ Pre-decrement An
29632  str r11,[r7,#0x3c] ;@ A7
29633;@ EaRead : Read '-(a7)' (address in r11) into r0:
29634  add lr,pc,#4
29635  mov r0,r11
29636  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
29637
29638  mov r0,r0,asl #24
29639
29640  subs r1,r0,#0x8000000
29641  mrs r10,cpsr ;@ r10=flags
29642  eor r10,r10,#0x20000000 ;@ Invert carry
29643  str r10,[r7,#0x4c] ;@ Save X bit
29644
29645;@ EaWrite: Write r1 into '-(a7)' (address in r11):
29646  mov r1,r1,lsr #24
29647  add lr,pc,#4
29648  mov r0,r11
29649  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29650
29651  ldrh r8,[r4],#2 ;@ Fetch next opcode
29652  subs r5,r5,#14 ;@ Subtract cycles
29653  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29654  b CycloneEnd
29655
29656;@ ---------- [5128] subq.b #8, ($3333,a0) uses Op5128 ----------
29657Op5128:
29658;@ EaCalc : Get '($3333,a0)' into r11:
29659  ldrsh r0,[r4],#2 ;@ Fetch offset
29660  and r2,r8,#0x000f
29661  ldr r2,[r7,r2,lsl #2]
29662  add r11,r0,r2 ;@ Add on offset
29663;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
29664  add lr,pc,#4
29665  mov r0,r11
29666  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
29667
29668  mov r0,r0,asl #24
29669
29670  subs r1,r0,#0x8000000
29671  mrs r10,cpsr ;@ r10=flags
29672  eor r10,r10,#0x20000000 ;@ Invert carry
29673  str r10,[r7,#0x4c] ;@ Save X bit
29674
29675;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
29676  mov r1,r1,lsr #24
29677  add lr,pc,#4
29678  mov r0,r11
29679  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29680
29681  ldrh r8,[r4],#2 ;@ Fetch next opcode
29682  subs r5,r5,#16 ;@ Subtract cycles
29683  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29684  b CycloneEnd
29685
29686;@ ---------- [5130] subq.b #8, ($33,a0,d3.w*2) uses Op5130 ----------
29687Op5130:
29688;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
29689;@ Get extension word into r3:
29690  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
29691  mov r2,r3,lsr #10
29692  tst r3,#0x0800 ;@ Is Rn Word or Long
29693  and r2,r2,#0x3c ;@ r2=Index of Rn
29694  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
29695  ldrne   r2,[r7,r2] ;@ r2=Rn.l
29696  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
29697  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
29698  and r2,r8,#0x000f
29699  orr r2,r2,#0x8 ;@ A0-7
29700  ldr r2,[r7,r2,lsl #2]
29701  add r11,r2,r3 ;@ r11=Disp+An+Rn
29702;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
29703  add lr,pc,#4
29704  mov r0,r11
29705  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
29706
29707  mov r0,r0,asl #24
29708
29709  subs r1,r0,#0x8000000
29710  mrs r10,cpsr ;@ r10=flags
29711  eor r10,r10,#0x20000000 ;@ Invert carry
29712  str r10,[r7,#0x4c] ;@ Save X bit
29713
29714;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
29715  mov r1,r1,lsr #24
29716  add lr,pc,#4
29717  mov r0,r11
29718  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29719
29720  ldrh r8,[r4],#2 ;@ Fetch next opcode
29721  subs r5,r5,#18 ;@ Subtract cycles
29722  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29723  b CycloneEnd
29724
29725;@ ---------- [5138] subq.b #8, $3333.w uses Op5138 ----------
29726Op5138:
29727;@ EaCalc : Get '$3333.w' into r11:
29728  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
29729;@ EaRead : Read '$3333.w' (address in r11) into r0:
29730  add lr,pc,#4
29731  mov r0,r11
29732  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
29733
29734  mov r0,r0,asl #24
29735
29736  subs r1,r0,#0x8000000
29737  mrs r10,cpsr ;@ r10=flags
29738  eor r10,r10,#0x20000000 ;@ Invert carry
29739  str r10,[r7,#0x4c] ;@ Save X bit
29740
29741;@ EaWrite: Write r1 into '$3333.w' (address in r11):
29742  mov r1,r1,lsr #24
29743  add lr,pc,#4
29744  mov r0,r11
29745  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29746
29747  ldrh r8,[r4],#2 ;@ Fetch next opcode
29748  subs r5,r5,#16 ;@ Subtract cycles
29749  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29750  b CycloneEnd
29751
29752;@ ---------- [5139] subq.b #8, $33333333.l uses Op5139 ----------
29753Op5139:
29754;@ EaCalc : Get '$33333333.l' into r11:
29755  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
29756  ldrh r0,[r4],#2
29757  orr r11,r0,r2,lsl #16
29758;@ EaRead : Read '$33333333.l' (address in r11) into r0:
29759  add lr,pc,#4
29760  mov r0,r11
29761  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
29762
29763  mov r0,r0,asl #24
29764
29765  subs r1,r0,#0x8000000
29766  mrs r10,cpsr ;@ r10=flags
29767  eor r10,r10,#0x20000000 ;@ Invert carry
29768  str r10,[r7,#0x4c] ;@ Save X bit
29769
29770;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
29771  mov r1,r1,lsr #24
29772  add lr,pc,#4
29773  mov r0,r11
29774  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
29775
29776  ldrh r8,[r4],#2 ;@ Fetch next opcode
29777  subs r5,r5,#20 ;@ Subtract cycles
29778  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29779  b CycloneEnd
29780
29781;@ ---------- [5140] subq.w #8, d0 uses Op5140 ----------
29782Op5140:
29783;@ EaCalc : Get register index into r11:
29784  and r11,r8,#0x000f
29785  mov r11,r11,lsl #2
29786;@ EaRead : Read register[r11] into r0:
29787  ldr r0,[r7,r11]
29788
29789  mov r0,r0,asl #16
29790
29791  subs r1,r0,#0x80000
29792  mrs r10,cpsr ;@ r10=flags
29793  eor r10,r10,#0x20000000 ;@ Invert carry
29794  str r10,[r7,#0x4c] ;@ Save X bit
29795
29796;@ EaWrite: r1 into register[r11]:
29797  mov r1,r1,lsr #16
29798  strh r1,[r7,r11]
29799
29800  ldrh r8,[r4],#2 ;@ Fetch next opcode
29801  subs r5,r5,#4 ;@ Subtract cycles
29802  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29803  b CycloneEnd
29804
29805;@ ---------- [5148] subq.w #8, a0 uses Op5148 ----------
29806Op5148:
29807;@ EaCalc : Get register index into r11:
29808  and r11,r8,#0x000f
29809;@ EaRead : Read register[r11] into r0:
29810  ldr r0,[r7,r11,lsl #2]
29811
29812  subs r1,r0,#0x0008
29813
29814;@ EaWrite: r1 into register[r11]:
29815  str r1,[r7,r11,lsl #2]
29816
29817  ldrh r8,[r4],#2 ;@ Fetch next opcode
29818  subs r5,r5,#8 ;@ Subtract cycles
29819  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29820  b CycloneEnd
29821
29822;@ ---------- [5150] subq.w #8, (a0) uses Op5150 ----------
29823Op5150:
29824;@ EaCalc : Get '(a0)' into r11:
29825  and r2,r8,#0x000f
29826  orr r2,r2,#0x8 ;@ A0-7
29827  ldr r11,[r7,r2,lsl #2]
29828;@ EaRead : Read '(a0)' (address in r11) into r0:
29829  add lr,pc,#4
29830  mov r0,r11
29831  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
29832
29833  mov r0,r0,asl #16
29834
29835  subs r1,r0,#0x80000
29836  mrs r10,cpsr ;@ r10=flags
29837  eor r10,r10,#0x20000000 ;@ Invert carry
29838  str r10,[r7,#0x4c] ;@ Save X bit
29839
29840;@ EaWrite: Write r1 into '(a0)' (address in r11):
29841  mov r1,r1,lsr #16
29842  add lr,pc,#4
29843  mov r0,r11
29844  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
29845
29846  ldrh r8,[r4],#2 ;@ Fetch next opcode
29847  subs r5,r5,#12 ;@ Subtract cycles
29848  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29849  b CycloneEnd
29850
29851;@ ---------- [5158] subq.w #8, (a0)+ uses Op5158 ----------
29852Op5158:
29853;@ EaCalc : Get '(a0)+' into r11:
29854  and r2,r8,#0x000f
29855  ldr r11,[r7,r2,lsl #2]
29856  add r3,r11,#2 ;@ Post-increment An
29857  str r3,[r7,r2,lsl #2]
29858;@ EaRead : Read '(a0)+' (address in r11) into r0:
29859  add lr,pc,#4
29860  mov r0,r11
29861  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
29862
29863  mov r0,r0,asl #16
29864
29865  subs r1,r0,#0x80000
29866  mrs r10,cpsr ;@ r10=flags
29867  eor r10,r10,#0x20000000 ;@ Invert carry
29868  str r10,[r7,#0x4c] ;@ Save X bit
29869
29870;@ EaWrite: Write r1 into '(a0)+' (address in r11):
29871  mov r1,r1,lsr #16
29872  add lr,pc,#4
29873  mov r0,r11
29874  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
29875
29876  ldrh r8,[r4],#2 ;@ Fetch next opcode
29877  subs r5,r5,#12 ;@ Subtract cycles
29878  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29879  b CycloneEnd
29880
29881;@ ---------- [5160] subq.w #8, -(a0) uses Op5160 ----------
29882Op5160:
29883;@ EaCalc : Get '-(a0)' into r11:
29884  and r2,r8,#0x000f
29885  orr r2,r2,#0x8 ;@ A0-7
29886  ldr r11,[r7,r2,lsl #2]
29887  sub r11,r11,#2 ;@ Pre-decrement An
29888  str r11,[r7,r2,lsl #2]
29889;@ EaRead : Read '-(a0)' (address in r11) into r0:
29890  add lr,pc,#4
29891  mov r0,r11
29892  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
29893
29894  mov r0,r0,asl #16
29895
29896  subs r1,r0,#0x80000
29897  mrs r10,cpsr ;@ r10=flags
29898  eor r10,r10,#0x20000000 ;@ Invert carry
29899  str r10,[r7,#0x4c] ;@ Save X bit
29900
29901;@ EaWrite: Write r1 into '-(a0)' (address in r11):
29902  mov r1,r1,lsr #16
29903  add lr,pc,#4
29904  mov r0,r11
29905  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
29906
29907  ldrh r8,[r4],#2 ;@ Fetch next opcode
29908  subs r5,r5,#14 ;@ Subtract cycles
29909  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29910  b CycloneEnd
29911
29912;@ ---------- [5168] subq.w #8, ($3333,a0) uses Op5168 ----------
29913Op5168:
29914;@ EaCalc : Get '($3333,a0)' into r11:
29915  ldrsh r0,[r4],#2 ;@ Fetch offset
29916  and r2,r8,#0x000f
29917  ldr r2,[r7,r2,lsl #2]
29918  add r11,r0,r2 ;@ Add on offset
29919;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
29920  add lr,pc,#4
29921  mov r0,r11
29922  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
29923
29924  mov r0,r0,asl #16
29925
29926  subs r1,r0,#0x80000
29927  mrs r10,cpsr ;@ r10=flags
29928  eor r10,r10,#0x20000000 ;@ Invert carry
29929  str r10,[r7,#0x4c] ;@ Save X bit
29930
29931;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
29932  mov r1,r1,lsr #16
29933  add lr,pc,#4
29934  mov r0,r11
29935  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
29936
29937  ldrh r8,[r4],#2 ;@ Fetch next opcode
29938  subs r5,r5,#16 ;@ Subtract cycles
29939  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29940  b CycloneEnd
29941
29942;@ ---------- [5170] subq.w #8, ($33,a0,d3.w*2) uses Op5170 ----------
29943Op5170:
29944;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
29945;@ Get extension word into r3:
29946  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
29947  mov r2,r3,lsr #10
29948  tst r3,#0x0800 ;@ Is Rn Word or Long
29949  and r2,r2,#0x3c ;@ r2=Index of Rn
29950  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
29951  ldrne   r2,[r7,r2] ;@ r2=Rn.l
29952  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
29953  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
29954  and r2,r8,#0x000f
29955  orr r2,r2,#0x8 ;@ A0-7
29956  ldr r2,[r7,r2,lsl #2]
29957  add r11,r2,r3 ;@ r11=Disp+An+Rn
29958;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
29959  add lr,pc,#4
29960  mov r0,r11
29961  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
29962
29963  mov r0,r0,asl #16
29964
29965  subs r1,r0,#0x80000
29966  mrs r10,cpsr ;@ r10=flags
29967  eor r10,r10,#0x20000000 ;@ Invert carry
29968  str r10,[r7,#0x4c] ;@ Save X bit
29969
29970;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
29971  mov r1,r1,lsr #16
29972  add lr,pc,#4
29973  mov r0,r11
29974  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
29975
29976  ldrh r8,[r4],#2 ;@ Fetch next opcode
29977  subs r5,r5,#18 ;@ Subtract cycles
29978  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
29979  b CycloneEnd
29980
29981;@ ---------- [5178] subq.w #8, $3333.w uses Op5178 ----------
29982Op5178:
29983;@ EaCalc : Get '$3333.w' into r11:
29984  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
29985;@ EaRead : Read '$3333.w' (address in r11) into r0:
29986  add lr,pc,#4
29987  mov r0,r11
29988  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
29989
29990  mov r0,r0,asl #16
29991
29992  subs r1,r0,#0x80000
29993  mrs r10,cpsr ;@ r10=flags
29994  eor r10,r10,#0x20000000 ;@ Invert carry
29995  str r10,[r7,#0x4c] ;@ Save X bit
29996
29997;@ EaWrite: Write r1 into '$3333.w' (address in r11):
29998  mov r1,r1,lsr #16
29999  add lr,pc,#4
30000  mov r0,r11
30001  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
30002
30003  ldrh r8,[r4],#2 ;@ Fetch next opcode
30004  subs r5,r5,#16 ;@ Subtract cycles
30005  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30006  b CycloneEnd
30007
30008;@ ---------- [5179] subq.w #8, $33333333.l uses Op5179 ----------
30009Op5179:
30010;@ EaCalc : Get '$33333333.l' into r11:
30011  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
30012  ldrh r0,[r4],#2
30013  orr r11,r0,r2,lsl #16
30014;@ EaRead : Read '$33333333.l' (address in r11) into r0:
30015  add lr,pc,#4
30016  mov r0,r11
30017  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
30018
30019  mov r0,r0,asl #16
30020
30021  subs r1,r0,#0x80000
30022  mrs r10,cpsr ;@ r10=flags
30023  eor r10,r10,#0x20000000 ;@ Invert carry
30024  str r10,[r7,#0x4c] ;@ Save X bit
30025
30026;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
30027  mov r1,r1,lsr #16
30028  add lr,pc,#4
30029  mov r0,r11
30030  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
30031
30032  ldrh r8,[r4],#2 ;@ Fetch next opcode
30033  subs r5,r5,#20 ;@ Subtract cycles
30034  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30035  b CycloneEnd
30036
30037;@ ---------- [5180] subq.l #8, d0 uses Op5180 ----------
30038Op5180:
30039;@ EaCalc : Get register index into r11:
30040  and r11,r8,#0x000f
30041;@ EaRead : Read register[r11] into r0:
30042  ldr r0,[r7,r11,lsl #2]
30043
30044  subs r1,r0,#0x0008
30045  mrs r10,cpsr ;@ r10=flags
30046  eor r10,r10,#0x20000000 ;@ Invert carry
30047  str r10,[r7,#0x4c] ;@ Save X bit
30048
30049;@ EaWrite: r1 into register[r11]:
30050  str r1,[r7,r11,lsl #2]
30051
30052  ldrh r8,[r4],#2 ;@ Fetch next opcode
30053  subs r5,r5,#8 ;@ Subtract cycles
30054  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30055  b CycloneEnd
30056
30057;@ ---------- [5188] subq.l #8, a0 uses Op5188 ----------
30058Op5188:
30059;@ EaCalc : Get register index into r11:
30060  and r11,r8,#0x000f
30061;@ EaRead : Read register[r11] into r0:
30062  ldr r0,[r7,r11,lsl #2]
30063
30064  subs r1,r0,#0x0008
30065
30066;@ EaWrite: r1 into register[r11]:
30067  str r1,[r7,r11,lsl #2]
30068
30069  ldrh r8,[r4],#2 ;@ Fetch next opcode
30070  subs r5,r5,#8 ;@ Subtract cycles
30071  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30072  b CycloneEnd
30073
30074;@ ---------- [5190] subq.l #8, (a0) uses Op5190 ----------
30075Op5190:
30076;@ EaCalc : Get '(a0)' into r11:
30077  and r2,r8,#0x000f
30078  orr r2,r2,#0x8 ;@ A0-7
30079  ldr r11,[r7,r2,lsl #2]
30080;@ EaRead : Read '(a0)' (address in r11) into r0:
30081  add lr,pc,#4
30082  mov r0,r11
30083  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
30084
30085  subs r1,r0,#0x0008
30086  mrs r10,cpsr ;@ r10=flags
30087  eor r10,r10,#0x20000000 ;@ Invert carry
30088  str r10,[r7,#0x4c] ;@ Save X bit
30089
30090;@ EaWrite: Write r1 into '(a0)' (address in r11):
30091  add lr,pc,#4
30092  mov r0,r11
30093  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
30094
30095  ldrh r8,[r4],#2 ;@ Fetch next opcode
30096  subs r5,r5,#20 ;@ Subtract cycles
30097  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30098  b CycloneEnd
30099
30100;@ ---------- [5198] subq.l #8, (a0)+ uses Op5198 ----------
30101Op5198:
30102;@ EaCalc : Get '(a0)+' into r11:
30103  and r2,r8,#0x000f
30104  ldr r11,[r7,r2,lsl #2]
30105  add r3,r11,#4 ;@ Post-increment An
30106  str r3,[r7,r2,lsl #2]
30107;@ EaRead : Read '(a0)+' (address in r11) into r0:
30108  add lr,pc,#4
30109  mov r0,r11
30110  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
30111
30112  subs r1,r0,#0x0008
30113  mrs r10,cpsr ;@ r10=flags
30114  eor r10,r10,#0x20000000 ;@ Invert carry
30115  str r10,[r7,#0x4c] ;@ Save X bit
30116
30117;@ EaWrite: Write r1 into '(a0)+' (address in r11):
30118  add lr,pc,#4
30119  mov r0,r11
30120  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
30121
30122  ldrh r8,[r4],#2 ;@ Fetch next opcode
30123  subs r5,r5,#20 ;@ Subtract cycles
30124  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30125  b CycloneEnd
30126
30127;@ ---------- [51a0] subq.l #8, -(a0) uses Op51a0 ----------
30128Op51a0:
30129;@ EaCalc : Get '-(a0)' into r11:
30130  and r2,r8,#0x000f
30131  orr r2,r2,#0x8 ;@ A0-7
30132  ldr r11,[r7,r2,lsl #2]
30133  sub r11,r11,#4 ;@ Pre-decrement An
30134  str r11,[r7,r2,lsl #2]
30135;@ EaRead : Read '-(a0)' (address in r11) into r0:
30136  add lr,pc,#4
30137  mov r0,r11
30138  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
30139
30140  subs r1,r0,#0x0008
30141  mrs r10,cpsr ;@ r10=flags
30142  eor r10,r10,#0x20000000 ;@ Invert carry
30143  str r10,[r7,#0x4c] ;@ Save X bit
30144
30145;@ EaWrite: Write r1 into '-(a0)' (address in r11):
30146  add lr,pc,#4
30147  mov r0,r11
30148  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
30149
30150  ldrh r8,[r4],#2 ;@ Fetch next opcode
30151  subs r5,r5,#22 ;@ Subtract cycles
30152  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30153  b CycloneEnd
30154
30155;@ ---------- [51a8] subq.l #8, ($3333,a0) uses Op51a8 ----------
30156Op51a8:
30157;@ EaCalc : Get '($3333,a0)' into r11:
30158  ldrsh r0,[r4],#2 ;@ Fetch offset
30159  and r2,r8,#0x000f
30160  ldr r2,[r7,r2,lsl #2]
30161  add r11,r0,r2 ;@ Add on offset
30162;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
30163  add lr,pc,#4
30164  mov r0,r11
30165  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
30166
30167  subs r1,r0,#0x0008
30168  mrs r10,cpsr ;@ r10=flags
30169  eor r10,r10,#0x20000000 ;@ Invert carry
30170  str r10,[r7,#0x4c] ;@ Save X bit
30171
30172;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
30173  add lr,pc,#4
30174  mov r0,r11
30175  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
30176
30177  ldrh r8,[r4],#2 ;@ Fetch next opcode
30178  subs r5,r5,#24 ;@ Subtract cycles
30179  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30180  b CycloneEnd
30181
30182;@ ---------- [51b0] subq.l #8, ($33,a0,d3.w*2) uses Op51b0 ----------
30183Op51b0:
30184;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
30185;@ Get extension word into r3:
30186  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
30187  mov r2,r3,lsr #10
30188  tst r3,#0x0800 ;@ Is Rn Word or Long
30189  and r2,r2,#0x3c ;@ r2=Index of Rn
30190  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
30191  ldrne   r2,[r7,r2] ;@ r2=Rn.l
30192  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
30193  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
30194  and r2,r8,#0x000f
30195  orr r2,r2,#0x8 ;@ A0-7
30196  ldr r2,[r7,r2,lsl #2]
30197  add r11,r2,r3 ;@ r11=Disp+An+Rn
30198;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
30199  add lr,pc,#4
30200  mov r0,r11
30201  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
30202
30203  subs r1,r0,#0x0008
30204  mrs r10,cpsr ;@ r10=flags
30205  eor r10,r10,#0x20000000 ;@ Invert carry
30206  str r10,[r7,#0x4c] ;@ Save X bit
30207
30208;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
30209  add lr,pc,#4
30210  mov r0,r11
30211  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
30212
30213  ldrh r8,[r4],#2 ;@ Fetch next opcode
30214  subs r5,r5,#26 ;@ Subtract cycles
30215  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30216  b CycloneEnd
30217
30218;@ ---------- [51b8] subq.l #8, $3333.w uses Op51b8 ----------
30219Op51b8:
30220;@ EaCalc : Get '$3333.w' into r11:
30221  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
30222;@ EaRead : Read '$3333.w' (address in r11) into r0:
30223  add lr,pc,#4
30224  mov r0,r11
30225  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
30226
30227  subs r1,r0,#0x0008
30228  mrs r10,cpsr ;@ r10=flags
30229  eor r10,r10,#0x20000000 ;@ Invert carry
30230  str r10,[r7,#0x4c] ;@ Save X bit
30231
30232;@ EaWrite: Write r1 into '$3333.w' (address in r11):
30233  add lr,pc,#4
30234  mov r0,r11
30235  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
30236
30237  ldrh r8,[r4],#2 ;@ Fetch next opcode
30238  subs r5,r5,#24 ;@ Subtract cycles
30239  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30240  b CycloneEnd
30241
30242;@ ---------- [51b9] subq.l #8, $33333333.l uses Op51b9 ----------
30243Op51b9:
30244;@ EaCalc : Get '$33333333.l' into r11:
30245  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
30246  ldrh r0,[r4],#2
30247  orr r11,r0,r2,lsl #16
30248;@ EaRead : Read '$33333333.l' (address in r11) into r0:
30249  add lr,pc,#4
30250  mov r0,r11
30251  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
30252
30253  subs r1,r0,#0x0008
30254  mrs r10,cpsr ;@ r10=flags
30255  eor r10,r10,#0x20000000 ;@ Invert carry
30256  str r10,[r7,#0x4c] ;@ Save X bit
30257
30258;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
30259  add lr,pc,#4
30260  mov r0,r11
30261  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
30262
30263  ldrh r8,[r4],#2 ;@ Fetch next opcode
30264  subs r5,r5,#28 ;@ Subtract cycles
30265  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30266  b CycloneEnd
30267
30268;@ ---------- [51c0] sf d0 uses Op51c0 ----------
30269Op51c0:
30270  mov r1,#0
30271
30272;@ EaCalc : Get register index into r0:
30273  and r0,r8,#0x000f
30274;@ EaWrite: r1 into register[r0]:
30275  strb r1,[r7,r0,lsl #2]
30276
30277  ldrh r8,[r4],#2 ;@ Fetch next opcode
30278  subs r5,r5,#4 ;@ Subtract cycles
30279  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30280  b CycloneEnd
30281
30282;@ ---------- [51d0] sf (a0) uses Op51d0 ----------
30283Op51d0:
30284  mov r1,#0
30285
30286;@ EaCalc : Get '(a0)' into r0:
30287  and r2,r8,#0x000f
30288  orr r2,r2,#0x8 ;@ A0-7
30289  ldr r0,[r7,r2,lsl #2]
30290;@ EaWrite: Write r1 into '(a0)' (address in r0):
30291  and r1,r1,#0xff
30292  mov lr,pc
30293  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30294
30295  ldrh r8,[r4],#2 ;@ Fetch next opcode
30296  subs r5,r5,#12 ;@ Subtract cycles
30297  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30298  b CycloneEnd
30299
30300;@ ---------- [51d8] sf (a0)+ uses Op51d8 ----------
30301Op51d8:
30302  mov r1,#0
30303
30304;@ EaCalc : Get '(a0)+' into r0:
30305  and r2,r8,#0x000f
30306  ldr r0,[r7,r2,lsl #2]
30307  add r3,r0,#1 ;@ Post-increment An
30308  str r3,[r7,r2,lsl #2]
30309;@ EaWrite: Write r1 into '(a0)+' (address in r0):
30310  and r1,r1,#0xff
30311  mov lr,pc
30312  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30313
30314  ldrh r8,[r4],#2 ;@ Fetch next opcode
30315  subs r5,r5,#12 ;@ Subtract cycles
30316  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30317  b CycloneEnd
30318
30319;@ ---------- [51df] sf (a7)+ uses Op51df ----------
30320Op51df:
30321  mov r1,#0
30322
30323;@ EaCalc : Get '(a7)+' into r0:
30324  ldr r0,[r7,#0x3c] ;@ A7
30325  add r3,r0,#2 ;@ Post-increment An
30326  str r3,[r7,#0x3c] ;@ A7
30327;@ EaWrite: Write r1 into '(a7)+' (address in r0):
30328  and r1,r1,#0xff
30329  mov lr,pc
30330  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30331
30332  ldrh r8,[r4],#2 ;@ Fetch next opcode
30333  subs r5,r5,#12 ;@ Subtract cycles
30334  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30335  b CycloneEnd
30336
30337;@ ---------- [51e0] sf -(a0) uses Op51e0 ----------
30338Op51e0:
30339  mov r1,#0
30340
30341;@ EaCalc : Get '-(a0)' into r0:
30342  and r2,r8,#0x000f
30343  orr r2,r2,#0x8 ;@ A0-7
30344  ldr r0,[r7,r2,lsl #2]
30345  sub r0,r0,#1 ;@ Pre-decrement An
30346  str r0,[r7,r2,lsl #2]
30347;@ EaWrite: Write r1 into '-(a0)' (address in r0):
30348  and r1,r1,#0xff
30349  mov lr,pc
30350  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30351
30352  ldrh r8,[r4],#2 ;@ Fetch next opcode
30353  subs r5,r5,#14 ;@ Subtract cycles
30354  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30355  b CycloneEnd
30356
30357;@ ---------- [51e7] sf -(a7) uses Op51e7 ----------
30358Op51e7:
30359  mov r1,#0
30360
30361;@ EaCalc : Get '-(a7)' into r0:
30362  ldr r0,[r7,#0x3c] ;@ A7
30363  sub r0,r0,#2 ;@ Pre-decrement An
30364  str r0,[r7,#0x3c] ;@ A7
30365;@ EaWrite: Write r1 into '-(a7)' (address in r0):
30366  and r1,r1,#0xff
30367  mov lr,pc
30368  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30369
30370  ldrh r8,[r4],#2 ;@ Fetch next opcode
30371  subs r5,r5,#14 ;@ Subtract cycles
30372  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30373  b CycloneEnd
30374
30375;@ ---------- [51e8] sf ($3333,a0) uses Op51e8 ----------
30376Op51e8:
30377  mov r1,#0
30378
30379;@ EaCalc : Get '($3333,a0)' into r0:
30380  ldrsh r0,[r4],#2 ;@ Fetch offset
30381  and r2,r8,#0x000f
30382  ldr r2,[r7,r2,lsl #2]
30383  add r0,r0,r2 ;@ Add on offset
30384;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
30385  and r1,r1,#0xff
30386  mov lr,pc
30387  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30388
30389  ldrh r8,[r4],#2 ;@ Fetch next opcode
30390  subs r5,r5,#16 ;@ Subtract cycles
30391  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30392  b CycloneEnd
30393
30394;@ ---------- [51f0] sf ($33,a0,d3.w*2) uses Op51f0 ----------
30395Op51f0:
30396  mov r1,#0
30397
30398;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
30399;@ Get extension word into r3:
30400  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
30401  mov r2,r3,lsr #10
30402  tst r3,#0x0800 ;@ Is Rn Word or Long
30403  and r2,r2,#0x3c ;@ r2=Index of Rn
30404  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
30405  ldrne   r2,[r7,r2] ;@ r2=Rn.l
30406  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
30407  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
30408  and r2,r8,#0x000f
30409  orr r2,r2,#0x8 ;@ A0-7
30410  ldr r2,[r7,r2,lsl #2]
30411  add r0,r2,r3 ;@ r0=Disp+An+Rn
30412;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
30413  and r1,r1,#0xff
30414  mov lr,pc
30415  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30416
30417  ldrh r8,[r4],#2 ;@ Fetch next opcode
30418  subs r5,r5,#18 ;@ Subtract cycles
30419  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30420  b CycloneEnd
30421
30422;@ ---------- [51f8] sf $3333.w uses Op51f8 ----------
30423Op51f8:
30424  mov r1,#0
30425
30426;@ EaCalc : Get '$3333.w' into r0:
30427  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
30428;@ EaWrite: Write r1 into '$3333.w' (address in r0):
30429  and r1,r1,#0xff
30430  mov lr,pc
30431  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30432
30433  ldrh r8,[r4],#2 ;@ Fetch next opcode
30434  subs r5,r5,#16 ;@ Subtract cycles
30435  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30436  b CycloneEnd
30437
30438;@ ---------- [51f9] sf $33333333.l uses Op51f9 ----------
30439Op51f9:
30440  mov r1,#0
30441
30442;@ EaCalc : Get '$33333333.l' into r0:
30443  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
30444  ldrh r0,[r4],#2
30445  orr r0,r0,r2,lsl #16
30446;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
30447  and r1,r1,#0xff
30448  mov lr,pc
30449  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30450
30451  ldrh r8,[r4],#2 ;@ Fetch next opcode
30452  subs r5,r5,#20 ;@ Subtract cycles
30453  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30454  b CycloneEnd
30455
30456;@ ---------- [52c0] shi d0 uses Op52c0 ----------
30457Op52c0:
30458  mov r1,#0
30459  tst r10,#0x60000000 ;@ hi: !C && !Z
30460  mvneq r1,#0
30461  subeq r5,r5,#2 ;@ Extra cycles
30462
30463;@ EaCalc : Get register index into r0:
30464  and r0,r8,#0x000f
30465;@ EaWrite: r1 into register[r0]:
30466  strb r1,[r7,r0,lsl #2]
30467
30468  ldrh r8,[r4],#2 ;@ Fetch next opcode
30469  subs r5,r5,#4 ;@ Subtract cycles
30470  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30471  b CycloneEnd
30472
30473;@ ---------- [52c8] dbhi d0, 3335 uses Op52c8 ----------
30474Op52c8:
30475;@ Is the condition true?
30476  tst r10,#0x60000000 ;@ hi: !C && !Z
30477;@ If so, don't dbra
30478  beq DbraTrue
30479
30480;@ Decrement Dn.w
30481  and r1,r8,#0x0007
30482  mov r1,r1,lsl #2
30483  ldrsh r0,[r7,r1]
30484  strb r8,[r7,#0x45] ;@ not polling
30485  sub r0,r0,#1
30486  strh r0,[r7,r1]
30487
30488;@ Check if Dn.w is -1
30489  cmn r0,#1
30490  beq DbraMin1
30491
30492;@ Get Branch offset:
30493  ldrsh r0,[r4]
30494  add r0,r4,r0 ;@ r0 = New PC
30495;@ Check Memory Base+pc
30496  mov lr,pc
30497  ldr pc,[r7,#0x64] ;@ Call checkpc()
30498
30499  mov r4,r0
30500  tst r4,#1 ;@ address error?
30501  bne ExceptionAddressError_r_prg_r4
30502  ldrh r8,[r4],#2 ;@ Fetch next opcode
30503  subs r5,r5,#10 ;@ Subtract cycles
30504  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30505  b CycloneEnd
30506
30507;@ ---------- [52d0] shi (a0) uses Op52d0 ----------
30508Op52d0:
30509  mov r1,#0
30510  tst r10,#0x60000000 ;@ hi: !C && !Z
30511  mvneq r1,#0
30512
30513;@ EaCalc : Get '(a0)' into r0:
30514  and r2,r8,#0x000f
30515  orr r2,r2,#0x8 ;@ A0-7
30516  ldr r0,[r7,r2,lsl #2]
30517;@ EaWrite: Write r1 into '(a0)' (address in r0):
30518  and r1,r1,#0xff
30519  mov lr,pc
30520  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30521
30522  ldrh r8,[r4],#2 ;@ Fetch next opcode
30523  subs r5,r5,#12 ;@ Subtract cycles
30524  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30525  b CycloneEnd
30526
30527;@ ---------- [52d8] shi (a0)+ uses Op52d8 ----------
30528Op52d8:
30529  mov r1,#0
30530  tst r10,#0x60000000 ;@ hi: !C && !Z
30531  mvneq r1,#0
30532
30533;@ EaCalc : Get '(a0)+' into r0:
30534  and r2,r8,#0x000f
30535  ldr r0,[r7,r2,lsl #2]
30536  add r3,r0,#1 ;@ Post-increment An
30537  str r3,[r7,r2,lsl #2]
30538;@ EaWrite: Write r1 into '(a0)+' (address in r0):
30539  and r1,r1,#0xff
30540  mov lr,pc
30541  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30542
30543  ldrh r8,[r4],#2 ;@ Fetch next opcode
30544  subs r5,r5,#12 ;@ Subtract cycles
30545  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30546  b CycloneEnd
30547
30548;@ ---------- [52df] shi (a7)+ uses Op52df ----------
30549Op52df:
30550  mov r1,#0
30551  tst r10,#0x60000000 ;@ hi: !C && !Z
30552  mvneq r1,#0
30553
30554;@ EaCalc : Get '(a7)+' into r0:
30555  ldr r0,[r7,#0x3c] ;@ A7
30556  add r3,r0,#2 ;@ Post-increment An
30557  str r3,[r7,#0x3c] ;@ A7
30558;@ EaWrite: Write r1 into '(a7)+' (address in r0):
30559  and r1,r1,#0xff
30560  mov lr,pc
30561  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30562
30563  ldrh r8,[r4],#2 ;@ Fetch next opcode
30564  subs r5,r5,#12 ;@ Subtract cycles
30565  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30566  b CycloneEnd
30567
30568;@ ---------- [52e0] shi -(a0) uses Op52e0 ----------
30569Op52e0:
30570  mov r1,#0
30571  tst r10,#0x60000000 ;@ hi: !C && !Z
30572  mvneq r1,#0
30573
30574;@ EaCalc : Get '-(a0)' into r0:
30575  and r2,r8,#0x000f
30576  orr r2,r2,#0x8 ;@ A0-7
30577  ldr r0,[r7,r2,lsl #2]
30578  sub r0,r0,#1 ;@ Pre-decrement An
30579  str r0,[r7,r2,lsl #2]
30580;@ EaWrite: Write r1 into '-(a0)' (address in r0):
30581  and r1,r1,#0xff
30582  mov lr,pc
30583  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30584
30585  ldrh r8,[r4],#2 ;@ Fetch next opcode
30586  subs r5,r5,#14 ;@ Subtract cycles
30587  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30588  b CycloneEnd
30589
30590;@ ---------- [52e7] shi -(a7) uses Op52e7 ----------
30591Op52e7:
30592  mov r1,#0
30593  tst r10,#0x60000000 ;@ hi: !C && !Z
30594  mvneq r1,#0
30595
30596;@ EaCalc : Get '-(a7)' into r0:
30597  ldr r0,[r7,#0x3c] ;@ A7
30598  sub r0,r0,#2 ;@ Pre-decrement An
30599  str r0,[r7,#0x3c] ;@ A7
30600;@ EaWrite: Write r1 into '-(a7)' (address in r0):
30601  and r1,r1,#0xff
30602  mov lr,pc
30603  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30604
30605  ldrh r8,[r4],#2 ;@ Fetch next opcode
30606  subs r5,r5,#14 ;@ Subtract cycles
30607  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30608  b CycloneEnd
30609
30610;@ ---------- [52e8] shi ($3333,a0) uses Op52e8 ----------
30611Op52e8:
30612  mov r1,#0
30613  tst r10,#0x60000000 ;@ hi: !C && !Z
30614  mvneq r1,#0
30615
30616;@ EaCalc : Get '($3333,a0)' into r0:
30617  ldrsh r0,[r4],#2 ;@ Fetch offset
30618  and r2,r8,#0x000f
30619  ldr r2,[r7,r2,lsl #2]
30620  add r0,r0,r2 ;@ Add on offset
30621;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
30622  and r1,r1,#0xff
30623  mov lr,pc
30624  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30625
30626  ldrh r8,[r4],#2 ;@ Fetch next opcode
30627  subs r5,r5,#16 ;@ Subtract cycles
30628  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30629  b CycloneEnd
30630
30631;@ ---------- [52f0] shi ($33,a0,d3.w*2) uses Op52f0 ----------
30632Op52f0:
30633  mov r1,#0
30634  tst r10,#0x60000000 ;@ hi: !C && !Z
30635  mvneq r1,#0
30636
30637;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
30638;@ Get extension word into r3:
30639  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
30640  mov r2,r3,lsr #10
30641  tst r3,#0x0800 ;@ Is Rn Word or Long
30642  and r2,r2,#0x3c ;@ r2=Index of Rn
30643  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
30644  ldrne   r2,[r7,r2] ;@ r2=Rn.l
30645  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
30646  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
30647  and r2,r8,#0x000f
30648  orr r2,r2,#0x8 ;@ A0-7
30649  ldr r2,[r7,r2,lsl #2]
30650  add r0,r2,r3 ;@ r0=Disp+An+Rn
30651;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
30652  and r1,r1,#0xff
30653  mov lr,pc
30654  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30655
30656  ldrh r8,[r4],#2 ;@ Fetch next opcode
30657  subs r5,r5,#18 ;@ Subtract cycles
30658  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30659  b CycloneEnd
30660
30661;@ ---------- [52f8] shi $3333.w uses Op52f8 ----------
30662Op52f8:
30663  mov r1,#0
30664  tst r10,#0x60000000 ;@ hi: !C && !Z
30665  mvneq r1,#0
30666
30667;@ EaCalc : Get '$3333.w' into r0:
30668  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
30669;@ EaWrite: Write r1 into '$3333.w' (address in r0):
30670  and r1,r1,#0xff
30671  mov lr,pc
30672  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30673
30674  ldrh r8,[r4],#2 ;@ Fetch next opcode
30675  subs r5,r5,#16 ;@ Subtract cycles
30676  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30677  b CycloneEnd
30678
30679;@ ---------- [52f9] shi $33333333.l uses Op52f9 ----------
30680Op52f9:
30681  mov r1,#0
30682  tst r10,#0x60000000 ;@ hi: !C && !Z
30683  mvneq r1,#0
30684
30685;@ EaCalc : Get '$33333333.l' into r0:
30686  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
30687  ldrh r0,[r4],#2
30688  orr r0,r0,r2,lsl #16
30689;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
30690  and r1,r1,#0xff
30691  mov lr,pc
30692  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30693
30694  ldrh r8,[r4],#2 ;@ Fetch next opcode
30695  subs r5,r5,#20 ;@ Subtract cycles
30696  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30697  b CycloneEnd
30698
30699;@ ---------- [53c0] sls d0 uses Op53c0 ----------
30700Op53c0:
30701  mov r1,#0
30702  tst r10,#0x60000000 ;@ ls: C || Z
30703  mvnne r1,#0
30704  subne r5,r5,#2 ;@ Extra cycles
30705
30706;@ EaCalc : Get register index into r0:
30707  and r0,r8,#0x000f
30708;@ EaWrite: r1 into register[r0]:
30709  strb r1,[r7,r0,lsl #2]
30710
30711  ldrh r8,[r4],#2 ;@ Fetch next opcode
30712  subs r5,r5,#4 ;@ Subtract cycles
30713  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30714  b CycloneEnd
30715
30716;@ ---------- [53c8] dbls d0, 3335 uses Op53c8 ----------
30717Op53c8:
30718;@ Is the condition true?
30719  tst r10,#0x60000000 ;@ ls: C || Z
30720;@ If so, don't dbra
30721  bne DbraTrue
30722
30723;@ Decrement Dn.w
30724  and r1,r8,#0x0007
30725  mov r1,r1,lsl #2
30726  ldrsh r0,[r7,r1]
30727  strb r8,[r7,#0x45] ;@ not polling
30728  sub r0,r0,#1
30729  strh r0,[r7,r1]
30730
30731;@ Check if Dn.w is -1
30732  cmn r0,#1
30733  beq DbraMin1
30734
30735;@ Get Branch offset:
30736  ldrsh r0,[r4]
30737  add r0,r4,r0 ;@ r0 = New PC
30738;@ Check Memory Base+pc
30739  mov lr,pc
30740  ldr pc,[r7,#0x64] ;@ Call checkpc()
30741
30742  mov r4,r0
30743  tst r4,#1 ;@ address error?
30744  bne ExceptionAddressError_r_prg_r4
30745  ldrh r8,[r4],#2 ;@ Fetch next opcode
30746  subs r5,r5,#10 ;@ Subtract cycles
30747  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30748  b CycloneEnd
30749
30750;@ ---------- [53d0] sls (a0) uses Op53d0 ----------
30751Op53d0:
30752  mov r1,#0
30753  tst r10,#0x60000000 ;@ ls: C || Z
30754  mvnne r1,#0
30755
30756;@ EaCalc : Get '(a0)' into r0:
30757  and r2,r8,#0x000f
30758  orr r2,r2,#0x8 ;@ A0-7
30759  ldr r0,[r7,r2,lsl #2]
30760;@ EaWrite: Write r1 into '(a0)' (address in r0):
30761  and r1,r1,#0xff
30762  mov lr,pc
30763  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30764
30765  ldrh r8,[r4],#2 ;@ Fetch next opcode
30766  subs r5,r5,#12 ;@ Subtract cycles
30767  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30768  b CycloneEnd
30769
30770;@ ---------- [53d8] sls (a0)+ uses Op53d8 ----------
30771Op53d8:
30772  mov r1,#0
30773  tst r10,#0x60000000 ;@ ls: C || Z
30774  mvnne r1,#0
30775
30776;@ EaCalc : Get '(a0)+' into r0:
30777  and r2,r8,#0x000f
30778  ldr r0,[r7,r2,lsl #2]
30779  add r3,r0,#1 ;@ Post-increment An
30780  str r3,[r7,r2,lsl #2]
30781;@ EaWrite: Write r1 into '(a0)+' (address in r0):
30782  and r1,r1,#0xff
30783  mov lr,pc
30784  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30785
30786  ldrh r8,[r4],#2 ;@ Fetch next opcode
30787  subs r5,r5,#12 ;@ Subtract cycles
30788  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30789  b CycloneEnd
30790
30791;@ ---------- [53df] sls (a7)+ uses Op53df ----------
30792Op53df:
30793  mov r1,#0
30794  tst r10,#0x60000000 ;@ ls: C || Z
30795  mvnne r1,#0
30796
30797;@ EaCalc : Get '(a7)+' into r0:
30798  ldr r0,[r7,#0x3c] ;@ A7
30799  add r3,r0,#2 ;@ Post-increment An
30800  str r3,[r7,#0x3c] ;@ A7
30801;@ EaWrite: Write r1 into '(a7)+' (address in r0):
30802  and r1,r1,#0xff
30803  mov lr,pc
30804  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30805
30806  ldrh r8,[r4],#2 ;@ Fetch next opcode
30807  subs r5,r5,#12 ;@ Subtract cycles
30808  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30809  b CycloneEnd
30810
30811;@ ---------- [53e0] sls -(a0) uses Op53e0 ----------
30812Op53e0:
30813  mov r1,#0
30814  tst r10,#0x60000000 ;@ ls: C || Z
30815  mvnne r1,#0
30816
30817;@ EaCalc : Get '-(a0)' into r0:
30818  and r2,r8,#0x000f
30819  orr r2,r2,#0x8 ;@ A0-7
30820  ldr r0,[r7,r2,lsl #2]
30821  sub r0,r0,#1 ;@ Pre-decrement An
30822  str r0,[r7,r2,lsl #2]
30823;@ EaWrite: Write r1 into '-(a0)' (address in r0):
30824  and r1,r1,#0xff
30825  mov lr,pc
30826  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30827
30828  ldrh r8,[r4],#2 ;@ Fetch next opcode
30829  subs r5,r5,#14 ;@ Subtract cycles
30830  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30831  b CycloneEnd
30832
30833;@ ---------- [53e7] sls -(a7) uses Op53e7 ----------
30834Op53e7:
30835  mov r1,#0
30836  tst r10,#0x60000000 ;@ ls: C || Z
30837  mvnne r1,#0
30838
30839;@ EaCalc : Get '-(a7)' into r0:
30840  ldr r0,[r7,#0x3c] ;@ A7
30841  sub r0,r0,#2 ;@ Pre-decrement An
30842  str r0,[r7,#0x3c] ;@ A7
30843;@ EaWrite: Write r1 into '-(a7)' (address in r0):
30844  and r1,r1,#0xff
30845  mov lr,pc
30846  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30847
30848  ldrh r8,[r4],#2 ;@ Fetch next opcode
30849  subs r5,r5,#14 ;@ Subtract cycles
30850  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30851  b CycloneEnd
30852
30853;@ ---------- [53e8] sls ($3333,a0) uses Op53e8 ----------
30854Op53e8:
30855  mov r1,#0
30856  tst r10,#0x60000000 ;@ ls: C || Z
30857  mvnne r1,#0
30858
30859;@ EaCalc : Get '($3333,a0)' into r0:
30860  ldrsh r0,[r4],#2 ;@ Fetch offset
30861  and r2,r8,#0x000f
30862  ldr r2,[r7,r2,lsl #2]
30863  add r0,r0,r2 ;@ Add on offset
30864;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
30865  and r1,r1,#0xff
30866  mov lr,pc
30867  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30868
30869  ldrh r8,[r4],#2 ;@ Fetch next opcode
30870  subs r5,r5,#16 ;@ Subtract cycles
30871  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30872  b CycloneEnd
30873
30874;@ ---------- [53f0] sls ($33,a0,d3.w*2) uses Op53f0 ----------
30875Op53f0:
30876  mov r1,#0
30877  tst r10,#0x60000000 ;@ ls: C || Z
30878  mvnne r1,#0
30879
30880;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
30881;@ Get extension word into r3:
30882  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
30883  mov r2,r3,lsr #10
30884  tst r3,#0x0800 ;@ Is Rn Word or Long
30885  and r2,r2,#0x3c ;@ r2=Index of Rn
30886  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
30887  ldrne   r2,[r7,r2] ;@ r2=Rn.l
30888  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
30889  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
30890  and r2,r8,#0x000f
30891  orr r2,r2,#0x8 ;@ A0-7
30892  ldr r2,[r7,r2,lsl #2]
30893  add r0,r2,r3 ;@ r0=Disp+An+Rn
30894;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
30895  and r1,r1,#0xff
30896  mov lr,pc
30897  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30898
30899  ldrh r8,[r4],#2 ;@ Fetch next opcode
30900  subs r5,r5,#18 ;@ Subtract cycles
30901  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30902  b CycloneEnd
30903
30904;@ ---------- [53f8] sls $3333.w uses Op53f8 ----------
30905Op53f8:
30906  mov r1,#0
30907  tst r10,#0x60000000 ;@ ls: C || Z
30908  mvnne r1,#0
30909
30910;@ EaCalc : Get '$3333.w' into r0:
30911  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
30912;@ EaWrite: Write r1 into '$3333.w' (address in r0):
30913  and r1,r1,#0xff
30914  mov lr,pc
30915  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30916
30917  ldrh r8,[r4],#2 ;@ Fetch next opcode
30918  subs r5,r5,#16 ;@ Subtract cycles
30919  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30920  b CycloneEnd
30921
30922;@ ---------- [53f9] sls $33333333.l uses Op53f9 ----------
30923Op53f9:
30924  mov r1,#0
30925  tst r10,#0x60000000 ;@ ls: C || Z
30926  mvnne r1,#0
30927
30928;@ EaCalc : Get '$33333333.l' into r0:
30929  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
30930  ldrh r0,[r4],#2
30931  orr r0,r0,r2,lsl #16
30932;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
30933  and r1,r1,#0xff
30934  mov lr,pc
30935  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
30936
30937  ldrh r8,[r4],#2 ;@ Fetch next opcode
30938  subs r5,r5,#20 ;@ Subtract cycles
30939  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30940  b CycloneEnd
30941
30942;@ ---------- [54c0] scc d0 uses Op54c0 ----------
30943Op54c0:
30944  mov r1,#0
30945  tst r10,#0x20000000 ;@ cc: !C
30946  mvneq r1,#0
30947  subeq r5,r5,#2 ;@ Extra cycles
30948
30949;@ EaCalc : Get register index into r0:
30950  and r0,r8,#0x000f
30951;@ EaWrite: r1 into register[r0]:
30952  strb r1,[r7,r0,lsl #2]
30953
30954  ldrh r8,[r4],#2 ;@ Fetch next opcode
30955  subs r5,r5,#4 ;@ Subtract cycles
30956  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30957  b CycloneEnd
30958
30959;@ ---------- [54c8] dbcc d0, 3335 uses Op54c8 ----------
30960Op54c8:
30961;@ Is the condition true?
30962  tst r10,#0x20000000 ;@ cc: !C
30963;@ If so, don't dbra
30964  beq DbraTrue
30965
30966;@ Decrement Dn.w
30967  and r1,r8,#0x0007
30968  mov r1,r1,lsl #2
30969  ldrsh r0,[r7,r1]
30970  strb r8,[r7,#0x45] ;@ not polling
30971  sub r0,r0,#1
30972  strh r0,[r7,r1]
30973
30974;@ Check if Dn.w is -1
30975  cmn r0,#1
30976  beq DbraMin1
30977
30978;@ Get Branch offset:
30979  ldrsh r0,[r4]
30980  add r0,r4,r0 ;@ r0 = New PC
30981;@ Check Memory Base+pc
30982  mov lr,pc
30983  ldr pc,[r7,#0x64] ;@ Call checkpc()
30984
30985  mov r4,r0
30986  tst r4,#1 ;@ address error?
30987  bne ExceptionAddressError_r_prg_r4
30988  ldrh r8,[r4],#2 ;@ Fetch next opcode
30989  subs r5,r5,#10 ;@ Subtract cycles
30990  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
30991  b CycloneEnd
30992
30993;@ ---------- [54d0] scc (a0) uses Op54d0 ----------
30994Op54d0:
30995  mov r1,#0
30996  tst r10,#0x20000000 ;@ cc: !C
30997  mvneq r1,#0
30998
30999;@ EaCalc : Get '(a0)' into r0:
31000  and r2,r8,#0x000f
31001  orr r2,r2,#0x8 ;@ A0-7
31002  ldr r0,[r7,r2,lsl #2]
31003;@ EaWrite: Write r1 into '(a0)' (address in r0):
31004  and r1,r1,#0xff
31005  mov lr,pc
31006  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31007
31008  ldrh r8,[r4],#2 ;@ Fetch next opcode
31009  subs r5,r5,#12 ;@ Subtract cycles
31010  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31011  b CycloneEnd
31012
31013;@ ---------- [54d8] scc (a0)+ uses Op54d8 ----------
31014Op54d8:
31015  mov r1,#0
31016  tst r10,#0x20000000 ;@ cc: !C
31017  mvneq r1,#0
31018
31019;@ EaCalc : Get '(a0)+' into r0:
31020  and r2,r8,#0x000f
31021  ldr r0,[r7,r2,lsl #2]
31022  add r3,r0,#1 ;@ Post-increment An
31023  str r3,[r7,r2,lsl #2]
31024;@ EaWrite: Write r1 into '(a0)+' (address in r0):
31025  and r1,r1,#0xff
31026  mov lr,pc
31027  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31028
31029  ldrh r8,[r4],#2 ;@ Fetch next opcode
31030  subs r5,r5,#12 ;@ Subtract cycles
31031  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31032  b CycloneEnd
31033
31034;@ ---------- [54df] scc (a7)+ uses Op54df ----------
31035Op54df:
31036  mov r1,#0
31037  tst r10,#0x20000000 ;@ cc: !C
31038  mvneq r1,#0
31039
31040;@ EaCalc : Get '(a7)+' into r0:
31041  ldr r0,[r7,#0x3c] ;@ A7
31042  add r3,r0,#2 ;@ Post-increment An
31043  str r3,[r7,#0x3c] ;@ A7
31044;@ EaWrite: Write r1 into '(a7)+' (address in r0):
31045  and r1,r1,#0xff
31046  mov lr,pc
31047  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31048
31049  ldrh r8,[r4],#2 ;@ Fetch next opcode
31050  subs r5,r5,#12 ;@ Subtract cycles
31051  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31052  b CycloneEnd
31053
31054;@ ---------- [54e0] scc -(a0) uses Op54e0 ----------
31055Op54e0:
31056  mov r1,#0
31057  tst r10,#0x20000000 ;@ cc: !C
31058  mvneq r1,#0
31059
31060;@ EaCalc : Get '-(a0)' into r0:
31061  and r2,r8,#0x000f
31062  orr r2,r2,#0x8 ;@ A0-7
31063  ldr r0,[r7,r2,lsl #2]
31064  sub r0,r0,#1 ;@ Pre-decrement An
31065  str r0,[r7,r2,lsl #2]
31066;@ EaWrite: Write r1 into '-(a0)' (address in r0):
31067  and r1,r1,#0xff
31068  mov lr,pc
31069  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31070
31071  ldrh r8,[r4],#2 ;@ Fetch next opcode
31072  subs r5,r5,#14 ;@ Subtract cycles
31073  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31074  b CycloneEnd
31075
31076;@ ---------- [54e7] scc -(a7) uses Op54e7 ----------
31077Op54e7:
31078  mov r1,#0
31079  tst r10,#0x20000000 ;@ cc: !C
31080  mvneq r1,#0
31081
31082;@ EaCalc : Get '-(a7)' into r0:
31083  ldr r0,[r7,#0x3c] ;@ A7
31084  sub r0,r0,#2 ;@ Pre-decrement An
31085  str r0,[r7,#0x3c] ;@ A7
31086;@ EaWrite: Write r1 into '-(a7)' (address in r0):
31087  and r1,r1,#0xff
31088  mov lr,pc
31089  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31090
31091  ldrh r8,[r4],#2 ;@ Fetch next opcode
31092  subs r5,r5,#14 ;@ Subtract cycles
31093  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31094  b CycloneEnd
31095
31096;@ ---------- [54e8] scc ($3333,a0) uses Op54e8 ----------
31097Op54e8:
31098  mov r1,#0
31099  tst r10,#0x20000000 ;@ cc: !C
31100  mvneq r1,#0
31101
31102;@ EaCalc : Get '($3333,a0)' into r0:
31103  ldrsh r0,[r4],#2 ;@ Fetch offset
31104  and r2,r8,#0x000f
31105  ldr r2,[r7,r2,lsl #2]
31106  add r0,r0,r2 ;@ Add on offset
31107;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
31108  and r1,r1,#0xff
31109  mov lr,pc
31110  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31111
31112  ldrh r8,[r4],#2 ;@ Fetch next opcode
31113  subs r5,r5,#16 ;@ Subtract cycles
31114  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31115  b CycloneEnd
31116
31117;@ ---------- [54f0] scc ($33,a0,d3.w*2) uses Op54f0 ----------
31118Op54f0:
31119  mov r1,#0
31120  tst r10,#0x20000000 ;@ cc: !C
31121  mvneq r1,#0
31122
31123;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
31124;@ Get extension word into r3:
31125  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
31126  mov r2,r3,lsr #10
31127  tst r3,#0x0800 ;@ Is Rn Word or Long
31128  and r2,r2,#0x3c ;@ r2=Index of Rn
31129  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
31130  ldrne   r2,[r7,r2] ;@ r2=Rn.l
31131  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
31132  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
31133  and r2,r8,#0x000f
31134  orr r2,r2,#0x8 ;@ A0-7
31135  ldr r2,[r7,r2,lsl #2]
31136  add r0,r2,r3 ;@ r0=Disp+An+Rn
31137;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
31138  and r1,r1,#0xff
31139  mov lr,pc
31140  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31141
31142  ldrh r8,[r4],#2 ;@ Fetch next opcode
31143  subs r5,r5,#18 ;@ Subtract cycles
31144  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31145  b CycloneEnd
31146
31147;@ ---------- [54f8] scc $3333.w uses Op54f8 ----------
31148Op54f8:
31149  mov r1,#0
31150  tst r10,#0x20000000 ;@ cc: !C
31151  mvneq r1,#0
31152
31153;@ EaCalc : Get '$3333.w' into r0:
31154  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
31155;@ EaWrite: Write r1 into '$3333.w' (address in r0):
31156  and r1,r1,#0xff
31157  mov lr,pc
31158  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31159
31160  ldrh r8,[r4],#2 ;@ Fetch next opcode
31161  subs r5,r5,#16 ;@ Subtract cycles
31162  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31163  b CycloneEnd
31164
31165;@ ---------- [54f9] scc $33333333.l uses Op54f9 ----------
31166Op54f9:
31167  mov r1,#0
31168  tst r10,#0x20000000 ;@ cc: !C
31169  mvneq r1,#0
31170
31171;@ EaCalc : Get '$33333333.l' into r0:
31172  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
31173  ldrh r0,[r4],#2
31174  orr r0,r0,r2,lsl #16
31175;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
31176  and r1,r1,#0xff
31177  mov lr,pc
31178  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31179
31180  ldrh r8,[r4],#2 ;@ Fetch next opcode
31181  subs r5,r5,#20 ;@ Subtract cycles
31182  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31183  b CycloneEnd
31184
31185;@ ---------- [55c0] scs d0 uses Op55c0 ----------
31186Op55c0:
31187  mov r1,#0
31188  tst r10,#0x20000000 ;@ cs: C
31189  mvnne r1,#0
31190  subne r5,r5,#2 ;@ Extra cycles
31191
31192;@ EaCalc : Get register index into r0:
31193  and r0,r8,#0x000f
31194;@ EaWrite: r1 into register[r0]:
31195  strb r1,[r7,r0,lsl #2]
31196
31197  ldrh r8,[r4],#2 ;@ Fetch next opcode
31198  subs r5,r5,#4 ;@ Subtract cycles
31199  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31200  b CycloneEnd
31201
31202;@ ---------- [55c8] dbcs d0, 3335 uses Op55c8 ----------
31203Op55c8:
31204;@ Is the condition true?
31205  tst r10,#0x20000000 ;@ cs: C
31206;@ If so, don't dbra
31207  bne DbraTrue
31208
31209;@ Decrement Dn.w
31210  and r1,r8,#0x0007
31211  mov r1,r1,lsl #2
31212  ldrsh r0,[r7,r1]
31213  strb r8,[r7,#0x45] ;@ not polling
31214  sub r0,r0,#1
31215  strh r0,[r7,r1]
31216
31217;@ Check if Dn.w is -1
31218  cmn r0,#1
31219  beq DbraMin1
31220
31221;@ Get Branch offset:
31222  ldrsh r0,[r4]
31223  add r0,r4,r0 ;@ r0 = New PC
31224;@ Check Memory Base+pc
31225  mov lr,pc
31226  ldr pc,[r7,#0x64] ;@ Call checkpc()
31227
31228  mov r4,r0
31229  tst r4,#1 ;@ address error?
31230  bne ExceptionAddressError_r_prg_r4
31231  ldrh r8,[r4],#2 ;@ Fetch next opcode
31232  subs r5,r5,#10 ;@ Subtract cycles
31233  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31234  b CycloneEnd
31235
31236;@ ---------- [55d0] scs (a0) uses Op55d0 ----------
31237Op55d0:
31238  mov r1,#0
31239  tst r10,#0x20000000 ;@ cs: C
31240  mvnne r1,#0
31241
31242;@ EaCalc : Get '(a0)' into r0:
31243  and r2,r8,#0x000f
31244  orr r2,r2,#0x8 ;@ A0-7
31245  ldr r0,[r7,r2,lsl #2]
31246;@ EaWrite: Write r1 into '(a0)' (address in r0):
31247  and r1,r1,#0xff
31248  mov lr,pc
31249  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31250
31251  ldrh r8,[r4],#2 ;@ Fetch next opcode
31252  subs r5,r5,#12 ;@ Subtract cycles
31253  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31254  b CycloneEnd
31255
31256;@ ---------- [55d8] scs (a0)+ uses Op55d8 ----------
31257Op55d8:
31258  mov r1,#0
31259  tst r10,#0x20000000 ;@ cs: C
31260  mvnne r1,#0
31261
31262;@ EaCalc : Get '(a0)+' into r0:
31263  and r2,r8,#0x000f
31264  ldr r0,[r7,r2,lsl #2]
31265  add r3,r0,#1 ;@ Post-increment An
31266  str r3,[r7,r2,lsl #2]
31267;@ EaWrite: Write r1 into '(a0)+' (address in r0):
31268  and r1,r1,#0xff
31269  mov lr,pc
31270  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31271
31272  ldrh r8,[r4],#2 ;@ Fetch next opcode
31273  subs r5,r5,#12 ;@ Subtract cycles
31274  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31275  b CycloneEnd
31276
31277;@ ---------- [55df] scs (a7)+ uses Op55df ----------
31278Op55df:
31279  mov r1,#0
31280  tst r10,#0x20000000 ;@ cs: C
31281  mvnne r1,#0
31282
31283;@ EaCalc : Get '(a7)+' into r0:
31284  ldr r0,[r7,#0x3c] ;@ A7
31285  add r3,r0,#2 ;@ Post-increment An
31286  str r3,[r7,#0x3c] ;@ A7
31287;@ EaWrite: Write r1 into '(a7)+' (address in r0):
31288  and r1,r1,#0xff
31289  mov lr,pc
31290  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31291
31292  ldrh r8,[r4],#2 ;@ Fetch next opcode
31293  subs r5,r5,#12 ;@ Subtract cycles
31294  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31295  b CycloneEnd
31296
31297;@ ---------- [55e0] scs -(a0) uses Op55e0 ----------
31298Op55e0:
31299  mov r1,#0
31300  tst r10,#0x20000000 ;@ cs: C
31301  mvnne r1,#0
31302
31303;@ EaCalc : Get '-(a0)' into r0:
31304  and r2,r8,#0x000f
31305  orr r2,r2,#0x8 ;@ A0-7
31306  ldr r0,[r7,r2,lsl #2]
31307  sub r0,r0,#1 ;@ Pre-decrement An
31308  str r0,[r7,r2,lsl #2]
31309;@ EaWrite: Write r1 into '-(a0)' (address in r0):
31310  and r1,r1,#0xff
31311  mov lr,pc
31312  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31313
31314  ldrh r8,[r4],#2 ;@ Fetch next opcode
31315  subs r5,r5,#14 ;@ Subtract cycles
31316  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31317  b CycloneEnd
31318
31319;@ ---------- [55e7] scs -(a7) uses Op55e7 ----------
31320Op55e7:
31321  mov r1,#0
31322  tst r10,#0x20000000 ;@ cs: C
31323  mvnne r1,#0
31324
31325;@ EaCalc : Get '-(a7)' into r0:
31326  ldr r0,[r7,#0x3c] ;@ A7
31327  sub r0,r0,#2 ;@ Pre-decrement An
31328  str r0,[r7,#0x3c] ;@ A7
31329;@ EaWrite: Write r1 into '-(a7)' (address in r0):
31330  and r1,r1,#0xff
31331  mov lr,pc
31332  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31333
31334  ldrh r8,[r4],#2 ;@ Fetch next opcode
31335  subs r5,r5,#14 ;@ Subtract cycles
31336  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31337  b CycloneEnd
31338
31339;@ ---------- [55e8] scs ($3333,a0) uses Op55e8 ----------
31340Op55e8:
31341  mov r1,#0
31342  tst r10,#0x20000000 ;@ cs: C
31343  mvnne r1,#0
31344
31345;@ EaCalc : Get '($3333,a0)' into r0:
31346  ldrsh r0,[r4],#2 ;@ Fetch offset
31347  and r2,r8,#0x000f
31348  ldr r2,[r7,r2,lsl #2]
31349  add r0,r0,r2 ;@ Add on offset
31350;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
31351  and r1,r1,#0xff
31352  mov lr,pc
31353  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31354
31355  ldrh r8,[r4],#2 ;@ Fetch next opcode
31356  subs r5,r5,#16 ;@ Subtract cycles
31357  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31358  b CycloneEnd
31359
31360;@ ---------- [55f0] scs ($33,a0,d3.w*2) uses Op55f0 ----------
31361Op55f0:
31362  mov r1,#0
31363  tst r10,#0x20000000 ;@ cs: C
31364  mvnne r1,#0
31365
31366;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
31367;@ Get extension word into r3:
31368  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
31369  mov r2,r3,lsr #10
31370  tst r3,#0x0800 ;@ Is Rn Word or Long
31371  and r2,r2,#0x3c ;@ r2=Index of Rn
31372  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
31373  ldrne   r2,[r7,r2] ;@ r2=Rn.l
31374  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
31375  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
31376  and r2,r8,#0x000f
31377  orr r2,r2,#0x8 ;@ A0-7
31378  ldr r2,[r7,r2,lsl #2]
31379  add r0,r2,r3 ;@ r0=Disp+An+Rn
31380;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
31381  and r1,r1,#0xff
31382  mov lr,pc
31383  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31384
31385  ldrh r8,[r4],#2 ;@ Fetch next opcode
31386  subs r5,r5,#18 ;@ Subtract cycles
31387  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31388  b CycloneEnd
31389
31390;@ ---------- [55f8] scs $3333.w uses Op55f8 ----------
31391Op55f8:
31392  mov r1,#0
31393  tst r10,#0x20000000 ;@ cs: C
31394  mvnne r1,#0
31395
31396;@ EaCalc : Get '$3333.w' into r0:
31397  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
31398;@ EaWrite: Write r1 into '$3333.w' (address in r0):
31399  and r1,r1,#0xff
31400  mov lr,pc
31401  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31402
31403  ldrh r8,[r4],#2 ;@ Fetch next opcode
31404  subs r5,r5,#16 ;@ Subtract cycles
31405  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31406  b CycloneEnd
31407
31408;@ ---------- [55f9] scs $33333333.l uses Op55f9 ----------
31409Op55f9:
31410  mov r1,#0
31411  tst r10,#0x20000000 ;@ cs: C
31412  mvnne r1,#0
31413
31414;@ EaCalc : Get '$33333333.l' into r0:
31415  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
31416  ldrh r0,[r4],#2
31417  orr r0,r0,r2,lsl #16
31418;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
31419  and r1,r1,#0xff
31420  mov lr,pc
31421  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31422
31423  ldrh r8,[r4],#2 ;@ Fetch next opcode
31424  subs r5,r5,#20 ;@ Subtract cycles
31425  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31426  b CycloneEnd
31427
31428;@ ---------- [56c0] sne d0 uses Op56c0 ----------
31429Op56c0:
31430  mov r1,#0
31431  tst r10,#0x40000000 ;@ ne: !Z
31432  mvneq r1,#0
31433  subeq r5,r5,#2 ;@ Extra cycles
31434
31435;@ EaCalc : Get register index into r0:
31436  and r0,r8,#0x000f
31437;@ EaWrite: r1 into register[r0]:
31438  strb r1,[r7,r0,lsl #2]
31439
31440  ldrh r8,[r4],#2 ;@ Fetch next opcode
31441  subs r5,r5,#4 ;@ Subtract cycles
31442  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31443  b CycloneEnd
31444
31445;@ ---------- [56c8] dbne d0, 3335 uses Op56c8 ----------
31446Op56c8:
31447;@ Is the condition true?
31448  tst r10,#0x40000000 ;@ ne: !Z
31449;@ If so, don't dbra
31450  beq DbraTrue
31451
31452;@ Decrement Dn.w
31453  and r1,r8,#0x0007
31454  mov r1,r1,lsl #2
31455  ldrsh r0,[r7,r1]
31456  strb r8,[r7,#0x45] ;@ not polling
31457  sub r0,r0,#1
31458  strh r0,[r7,r1]
31459
31460;@ Check if Dn.w is -1
31461  cmn r0,#1
31462  beq DbraMin1
31463
31464;@ Get Branch offset:
31465  ldrsh r0,[r4]
31466  add r0,r4,r0 ;@ r0 = New PC
31467;@ Check Memory Base+pc
31468  mov lr,pc
31469  ldr pc,[r7,#0x64] ;@ Call checkpc()
31470
31471  mov r4,r0
31472  tst r4,#1 ;@ address error?
31473  bne ExceptionAddressError_r_prg_r4
31474  ldrh r8,[r4],#2 ;@ Fetch next opcode
31475  subs r5,r5,#10 ;@ Subtract cycles
31476  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31477  b CycloneEnd
31478
31479;@ ---------- [56d0] sne (a0) uses Op56d0 ----------
31480Op56d0:
31481  mov r1,#0
31482  tst r10,#0x40000000 ;@ ne: !Z
31483  mvneq r1,#0
31484
31485;@ EaCalc : Get '(a0)' into r0:
31486  and r2,r8,#0x000f
31487  orr r2,r2,#0x8 ;@ A0-7
31488  ldr r0,[r7,r2,lsl #2]
31489;@ EaWrite: Write r1 into '(a0)' (address in r0):
31490  and r1,r1,#0xff
31491  mov lr,pc
31492  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31493
31494  ldrh r8,[r4],#2 ;@ Fetch next opcode
31495  subs r5,r5,#12 ;@ Subtract cycles
31496  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31497  b CycloneEnd
31498
31499;@ ---------- [56d8] sne (a0)+ uses Op56d8 ----------
31500Op56d8:
31501  mov r1,#0
31502  tst r10,#0x40000000 ;@ ne: !Z
31503  mvneq r1,#0
31504
31505;@ EaCalc : Get '(a0)+' into r0:
31506  and r2,r8,#0x000f
31507  ldr r0,[r7,r2,lsl #2]
31508  add r3,r0,#1 ;@ Post-increment An
31509  str r3,[r7,r2,lsl #2]
31510;@ EaWrite: Write r1 into '(a0)+' (address in r0):
31511  and r1,r1,#0xff
31512  mov lr,pc
31513  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31514
31515  ldrh r8,[r4],#2 ;@ Fetch next opcode
31516  subs r5,r5,#12 ;@ Subtract cycles
31517  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31518  b CycloneEnd
31519
31520;@ ---------- [56df] sne (a7)+ uses Op56df ----------
31521Op56df:
31522  mov r1,#0
31523  tst r10,#0x40000000 ;@ ne: !Z
31524  mvneq r1,#0
31525
31526;@ EaCalc : Get '(a7)+' into r0:
31527  ldr r0,[r7,#0x3c] ;@ A7
31528  add r3,r0,#2 ;@ Post-increment An
31529  str r3,[r7,#0x3c] ;@ A7
31530;@ EaWrite: Write r1 into '(a7)+' (address in r0):
31531  and r1,r1,#0xff
31532  mov lr,pc
31533  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31534
31535  ldrh r8,[r4],#2 ;@ Fetch next opcode
31536  subs r5,r5,#12 ;@ Subtract cycles
31537  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31538  b CycloneEnd
31539
31540;@ ---------- [56e0] sne -(a0) uses Op56e0 ----------
31541Op56e0:
31542  mov r1,#0
31543  tst r10,#0x40000000 ;@ ne: !Z
31544  mvneq r1,#0
31545
31546;@ EaCalc : Get '-(a0)' into r0:
31547  and r2,r8,#0x000f
31548  orr r2,r2,#0x8 ;@ A0-7
31549  ldr r0,[r7,r2,lsl #2]
31550  sub r0,r0,#1 ;@ Pre-decrement An
31551  str r0,[r7,r2,lsl #2]
31552;@ EaWrite: Write r1 into '-(a0)' (address in r0):
31553  and r1,r1,#0xff
31554  mov lr,pc
31555  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31556
31557  ldrh r8,[r4],#2 ;@ Fetch next opcode
31558  subs r5,r5,#14 ;@ Subtract cycles
31559  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31560  b CycloneEnd
31561
31562;@ ---------- [56e7] sne -(a7) uses Op56e7 ----------
31563Op56e7:
31564  mov r1,#0
31565  tst r10,#0x40000000 ;@ ne: !Z
31566  mvneq r1,#0
31567
31568;@ EaCalc : Get '-(a7)' into r0:
31569  ldr r0,[r7,#0x3c] ;@ A7
31570  sub r0,r0,#2 ;@ Pre-decrement An
31571  str r0,[r7,#0x3c] ;@ A7
31572;@ EaWrite: Write r1 into '-(a7)' (address in r0):
31573  and r1,r1,#0xff
31574  mov lr,pc
31575  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31576
31577  ldrh r8,[r4],#2 ;@ Fetch next opcode
31578  subs r5,r5,#14 ;@ Subtract cycles
31579  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31580  b CycloneEnd
31581
31582;@ ---------- [56e8] sne ($3333,a0) uses Op56e8 ----------
31583Op56e8:
31584  mov r1,#0
31585  tst r10,#0x40000000 ;@ ne: !Z
31586  mvneq r1,#0
31587
31588;@ EaCalc : Get '($3333,a0)' into r0:
31589  ldrsh r0,[r4],#2 ;@ Fetch offset
31590  and r2,r8,#0x000f
31591  ldr r2,[r7,r2,lsl #2]
31592  add r0,r0,r2 ;@ Add on offset
31593;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
31594  and r1,r1,#0xff
31595  mov lr,pc
31596  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31597
31598  ldrh r8,[r4],#2 ;@ Fetch next opcode
31599  subs r5,r5,#16 ;@ Subtract cycles
31600  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31601  b CycloneEnd
31602
31603;@ ---------- [56f0] sne ($33,a0,d3.w*2) uses Op56f0 ----------
31604Op56f0:
31605  mov r1,#0
31606  tst r10,#0x40000000 ;@ ne: !Z
31607  mvneq r1,#0
31608
31609;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
31610;@ Get extension word into r3:
31611  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
31612  mov r2,r3,lsr #10
31613  tst r3,#0x0800 ;@ Is Rn Word or Long
31614  and r2,r2,#0x3c ;@ r2=Index of Rn
31615  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
31616  ldrne   r2,[r7,r2] ;@ r2=Rn.l
31617  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
31618  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
31619  and r2,r8,#0x000f
31620  orr r2,r2,#0x8 ;@ A0-7
31621  ldr r2,[r7,r2,lsl #2]
31622  add r0,r2,r3 ;@ r0=Disp+An+Rn
31623;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
31624  and r1,r1,#0xff
31625  mov lr,pc
31626  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31627
31628  ldrh r8,[r4],#2 ;@ Fetch next opcode
31629  subs r5,r5,#18 ;@ Subtract cycles
31630  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31631  b CycloneEnd
31632
31633;@ ---------- [56f8] sne $3333.w uses Op56f8 ----------
31634Op56f8:
31635  mov r1,#0
31636  tst r10,#0x40000000 ;@ ne: !Z
31637  mvneq r1,#0
31638
31639;@ EaCalc : Get '$3333.w' into r0:
31640  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
31641;@ EaWrite: Write r1 into '$3333.w' (address in r0):
31642  and r1,r1,#0xff
31643  mov lr,pc
31644  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31645
31646  ldrh r8,[r4],#2 ;@ Fetch next opcode
31647  subs r5,r5,#16 ;@ Subtract cycles
31648  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31649  b CycloneEnd
31650
31651;@ ---------- [56f9] sne $33333333.l uses Op56f9 ----------
31652Op56f9:
31653  mov r1,#0
31654  tst r10,#0x40000000 ;@ ne: !Z
31655  mvneq r1,#0
31656
31657;@ EaCalc : Get '$33333333.l' into r0:
31658  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
31659  ldrh r0,[r4],#2
31660  orr r0,r0,r2,lsl #16
31661;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
31662  and r1,r1,#0xff
31663  mov lr,pc
31664  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31665
31666  ldrh r8,[r4],#2 ;@ Fetch next opcode
31667  subs r5,r5,#20 ;@ Subtract cycles
31668  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31669  b CycloneEnd
31670
31671;@ ---------- [57c0] seq d0 uses Op57c0 ----------
31672Op57c0:
31673  mov r1,#0
31674  tst r10,#0x40000000 ;@ eq: Z
31675  mvnne r1,#0
31676  subne r5,r5,#2 ;@ Extra cycles
31677
31678;@ EaCalc : Get register index into r0:
31679  and r0,r8,#0x000f
31680;@ EaWrite: r1 into register[r0]:
31681  strb r1,[r7,r0,lsl #2]
31682
31683  ldrh r8,[r4],#2 ;@ Fetch next opcode
31684  subs r5,r5,#4 ;@ Subtract cycles
31685  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31686  b CycloneEnd
31687
31688;@ ---------- [57c8] dbeq d0, 3335 uses Op57c8 ----------
31689Op57c8:
31690;@ Is the condition true?
31691  tst r10,#0x40000000 ;@ eq: Z
31692;@ If so, don't dbra
31693  bne DbraTrue
31694
31695;@ Decrement Dn.w
31696  and r1,r8,#0x0007
31697  mov r1,r1,lsl #2
31698  ldrsh r0,[r7,r1]
31699  strb r8,[r7,#0x45] ;@ not polling
31700  sub r0,r0,#1
31701  strh r0,[r7,r1]
31702
31703;@ Check if Dn.w is -1
31704  cmn r0,#1
31705  beq DbraMin1
31706
31707;@ Get Branch offset:
31708  ldrsh r0,[r4]
31709  add r0,r4,r0 ;@ r0 = New PC
31710;@ Check Memory Base+pc
31711  mov lr,pc
31712  ldr pc,[r7,#0x64] ;@ Call checkpc()
31713
31714  mov r4,r0
31715  tst r4,#1 ;@ address error?
31716  bne ExceptionAddressError_r_prg_r4
31717  ldrh r8,[r4],#2 ;@ Fetch next opcode
31718  subs r5,r5,#10 ;@ Subtract cycles
31719  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31720  b CycloneEnd
31721
31722;@ ---------- [57d0] seq (a0) uses Op57d0 ----------
31723Op57d0:
31724  mov r1,#0
31725  tst r10,#0x40000000 ;@ eq: Z
31726  mvnne r1,#0
31727
31728;@ EaCalc : Get '(a0)' into r0:
31729  and r2,r8,#0x000f
31730  orr r2,r2,#0x8 ;@ A0-7
31731  ldr r0,[r7,r2,lsl #2]
31732;@ EaWrite: Write r1 into '(a0)' (address in r0):
31733  and r1,r1,#0xff
31734  mov lr,pc
31735  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31736
31737  ldrh r8,[r4],#2 ;@ Fetch next opcode
31738  subs r5,r5,#12 ;@ Subtract cycles
31739  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31740  b CycloneEnd
31741
31742;@ ---------- [57d8] seq (a0)+ uses Op57d8 ----------
31743Op57d8:
31744  mov r1,#0
31745  tst r10,#0x40000000 ;@ eq: Z
31746  mvnne r1,#0
31747
31748;@ EaCalc : Get '(a0)+' into r0:
31749  and r2,r8,#0x000f
31750  ldr r0,[r7,r2,lsl #2]
31751  add r3,r0,#1 ;@ Post-increment An
31752  str r3,[r7,r2,lsl #2]
31753;@ EaWrite: Write r1 into '(a0)+' (address in r0):
31754  and r1,r1,#0xff
31755  mov lr,pc
31756  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31757
31758  ldrh r8,[r4],#2 ;@ Fetch next opcode
31759  subs r5,r5,#12 ;@ Subtract cycles
31760  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31761  b CycloneEnd
31762
31763;@ ---------- [57df] seq (a7)+ uses Op57df ----------
31764Op57df:
31765  mov r1,#0
31766  tst r10,#0x40000000 ;@ eq: Z
31767  mvnne r1,#0
31768
31769;@ EaCalc : Get '(a7)+' into r0:
31770  ldr r0,[r7,#0x3c] ;@ A7
31771  add r3,r0,#2 ;@ Post-increment An
31772  str r3,[r7,#0x3c] ;@ A7
31773;@ EaWrite: Write r1 into '(a7)+' (address in r0):
31774  and r1,r1,#0xff
31775  mov lr,pc
31776  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31777
31778  ldrh r8,[r4],#2 ;@ Fetch next opcode
31779  subs r5,r5,#12 ;@ Subtract cycles
31780  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31781  b CycloneEnd
31782
31783;@ ---------- [57e0] seq -(a0) uses Op57e0 ----------
31784Op57e0:
31785  mov r1,#0
31786  tst r10,#0x40000000 ;@ eq: Z
31787  mvnne r1,#0
31788
31789;@ EaCalc : Get '-(a0)' into r0:
31790  and r2,r8,#0x000f
31791  orr r2,r2,#0x8 ;@ A0-7
31792  ldr r0,[r7,r2,lsl #2]
31793  sub r0,r0,#1 ;@ Pre-decrement An
31794  str r0,[r7,r2,lsl #2]
31795;@ EaWrite: Write r1 into '-(a0)' (address in r0):
31796  and r1,r1,#0xff
31797  mov lr,pc
31798  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31799
31800  ldrh r8,[r4],#2 ;@ Fetch next opcode
31801  subs r5,r5,#14 ;@ Subtract cycles
31802  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31803  b CycloneEnd
31804
31805;@ ---------- [57e7] seq -(a7) uses Op57e7 ----------
31806Op57e7:
31807  mov r1,#0
31808  tst r10,#0x40000000 ;@ eq: Z
31809  mvnne r1,#0
31810
31811;@ EaCalc : Get '-(a7)' into r0:
31812  ldr r0,[r7,#0x3c] ;@ A7
31813  sub r0,r0,#2 ;@ Pre-decrement An
31814  str r0,[r7,#0x3c] ;@ A7
31815;@ EaWrite: Write r1 into '-(a7)' (address in r0):
31816  and r1,r1,#0xff
31817  mov lr,pc
31818  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31819
31820  ldrh r8,[r4],#2 ;@ Fetch next opcode
31821  subs r5,r5,#14 ;@ Subtract cycles
31822  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31823  b CycloneEnd
31824
31825;@ ---------- [57e8] seq ($3333,a0) uses Op57e8 ----------
31826Op57e8:
31827  mov r1,#0
31828  tst r10,#0x40000000 ;@ eq: Z
31829  mvnne r1,#0
31830
31831;@ EaCalc : Get '($3333,a0)' into r0:
31832  ldrsh r0,[r4],#2 ;@ Fetch offset
31833  and r2,r8,#0x000f
31834  ldr r2,[r7,r2,lsl #2]
31835  add r0,r0,r2 ;@ Add on offset
31836;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
31837  and r1,r1,#0xff
31838  mov lr,pc
31839  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31840
31841  ldrh r8,[r4],#2 ;@ Fetch next opcode
31842  subs r5,r5,#16 ;@ Subtract cycles
31843  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31844  b CycloneEnd
31845
31846;@ ---------- [57f0] seq ($33,a0,d3.w*2) uses Op57f0 ----------
31847Op57f0:
31848  mov r1,#0
31849  tst r10,#0x40000000 ;@ eq: Z
31850  mvnne r1,#0
31851
31852;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
31853;@ Get extension word into r3:
31854  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
31855  mov r2,r3,lsr #10
31856  tst r3,#0x0800 ;@ Is Rn Word or Long
31857  and r2,r2,#0x3c ;@ r2=Index of Rn
31858  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
31859  ldrne   r2,[r7,r2] ;@ r2=Rn.l
31860  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
31861  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
31862  and r2,r8,#0x000f
31863  orr r2,r2,#0x8 ;@ A0-7
31864  ldr r2,[r7,r2,lsl #2]
31865  add r0,r2,r3 ;@ r0=Disp+An+Rn
31866;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
31867  and r1,r1,#0xff
31868  mov lr,pc
31869  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31870
31871  ldrh r8,[r4],#2 ;@ Fetch next opcode
31872  subs r5,r5,#18 ;@ Subtract cycles
31873  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31874  b CycloneEnd
31875
31876;@ ---------- [57f8] seq $3333.w uses Op57f8 ----------
31877Op57f8:
31878  mov r1,#0
31879  tst r10,#0x40000000 ;@ eq: Z
31880  mvnne r1,#0
31881
31882;@ EaCalc : Get '$3333.w' into r0:
31883  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
31884;@ EaWrite: Write r1 into '$3333.w' (address in r0):
31885  and r1,r1,#0xff
31886  mov lr,pc
31887  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31888
31889  ldrh r8,[r4],#2 ;@ Fetch next opcode
31890  subs r5,r5,#16 ;@ Subtract cycles
31891  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31892  b CycloneEnd
31893
31894;@ ---------- [57f9] seq $33333333.l uses Op57f9 ----------
31895Op57f9:
31896  mov r1,#0
31897  tst r10,#0x40000000 ;@ eq: Z
31898  mvnne r1,#0
31899
31900;@ EaCalc : Get '$33333333.l' into r0:
31901  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
31902  ldrh r0,[r4],#2
31903  orr r0,r0,r2,lsl #16
31904;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
31905  and r1,r1,#0xff
31906  mov lr,pc
31907  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31908
31909  ldrh r8,[r4],#2 ;@ Fetch next opcode
31910  subs r5,r5,#20 ;@ Subtract cycles
31911  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31912  b CycloneEnd
31913
31914;@ ---------- [58c0] svc d0 uses Op58c0 ----------
31915Op58c0:
31916  mov r1,#0
31917  tst r10,#0x10000000 ;@ vc: !V
31918  mvneq r1,#0
31919  subeq r5,r5,#2 ;@ Extra cycles
31920
31921;@ EaCalc : Get register index into r0:
31922  and r0,r8,#0x000f
31923;@ EaWrite: r1 into register[r0]:
31924  strb r1,[r7,r0,lsl #2]
31925
31926  ldrh r8,[r4],#2 ;@ Fetch next opcode
31927  subs r5,r5,#4 ;@ Subtract cycles
31928  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31929  b CycloneEnd
31930
31931;@ ---------- [58c8] dbvc d0, 3335 uses Op58c8 ----------
31932Op58c8:
31933;@ Is the condition true?
31934  tst r10,#0x10000000 ;@ vc: !V
31935;@ If so, don't dbra
31936  beq DbraTrue
31937
31938;@ Decrement Dn.w
31939  and r1,r8,#0x0007
31940  mov r1,r1,lsl #2
31941  ldrsh r0,[r7,r1]
31942  strb r8,[r7,#0x45] ;@ not polling
31943  sub r0,r0,#1
31944  strh r0,[r7,r1]
31945
31946;@ Check if Dn.w is -1
31947  cmn r0,#1
31948  beq DbraMin1
31949
31950;@ Get Branch offset:
31951  ldrsh r0,[r4]
31952  add r0,r4,r0 ;@ r0 = New PC
31953;@ Check Memory Base+pc
31954  mov lr,pc
31955  ldr pc,[r7,#0x64] ;@ Call checkpc()
31956
31957  mov r4,r0
31958  tst r4,#1 ;@ address error?
31959  bne ExceptionAddressError_r_prg_r4
31960  ldrh r8,[r4],#2 ;@ Fetch next opcode
31961  subs r5,r5,#10 ;@ Subtract cycles
31962  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31963  b CycloneEnd
31964
31965;@ ---------- [58d0] svc (a0) uses Op58d0 ----------
31966Op58d0:
31967  mov r1,#0
31968  tst r10,#0x10000000 ;@ vc: !V
31969  mvneq r1,#0
31970
31971;@ EaCalc : Get '(a0)' into r0:
31972  and r2,r8,#0x000f
31973  orr r2,r2,#0x8 ;@ A0-7
31974  ldr r0,[r7,r2,lsl #2]
31975;@ EaWrite: Write r1 into '(a0)' (address in r0):
31976  and r1,r1,#0xff
31977  mov lr,pc
31978  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
31979
31980  ldrh r8,[r4],#2 ;@ Fetch next opcode
31981  subs r5,r5,#12 ;@ Subtract cycles
31982  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
31983  b CycloneEnd
31984
31985;@ ---------- [58d8] svc (a0)+ uses Op58d8 ----------
31986Op58d8:
31987  mov r1,#0
31988  tst r10,#0x10000000 ;@ vc: !V
31989  mvneq r1,#0
31990
31991;@ EaCalc : Get '(a0)+' into r0:
31992  and r2,r8,#0x000f
31993  ldr r0,[r7,r2,lsl #2]
31994  add r3,r0,#1 ;@ Post-increment An
31995  str r3,[r7,r2,lsl #2]
31996;@ EaWrite: Write r1 into '(a0)+' (address in r0):
31997  and r1,r1,#0xff
31998  mov lr,pc
31999  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32000
32001  ldrh r8,[r4],#2 ;@ Fetch next opcode
32002  subs r5,r5,#12 ;@ Subtract cycles
32003  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32004  b CycloneEnd
32005
32006;@ ---------- [58df] svc (a7)+ uses Op58df ----------
32007Op58df:
32008  mov r1,#0
32009  tst r10,#0x10000000 ;@ vc: !V
32010  mvneq r1,#0
32011
32012;@ EaCalc : Get '(a7)+' into r0:
32013  ldr r0,[r7,#0x3c] ;@ A7
32014  add r3,r0,#2 ;@ Post-increment An
32015  str r3,[r7,#0x3c] ;@ A7
32016;@ EaWrite: Write r1 into '(a7)+' (address in r0):
32017  and r1,r1,#0xff
32018  mov lr,pc
32019  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32020
32021  ldrh r8,[r4],#2 ;@ Fetch next opcode
32022  subs r5,r5,#12 ;@ Subtract cycles
32023  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32024  b CycloneEnd
32025
32026;@ ---------- [58e0] svc -(a0) uses Op58e0 ----------
32027Op58e0:
32028  mov r1,#0
32029  tst r10,#0x10000000 ;@ vc: !V
32030  mvneq r1,#0
32031
32032;@ EaCalc : Get '-(a0)' into r0:
32033  and r2,r8,#0x000f
32034  orr r2,r2,#0x8 ;@ A0-7
32035  ldr r0,[r7,r2,lsl #2]
32036  sub r0,r0,#1 ;@ Pre-decrement An
32037  str r0,[r7,r2,lsl #2]
32038;@ EaWrite: Write r1 into '-(a0)' (address in r0):
32039  and r1,r1,#0xff
32040  mov lr,pc
32041  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32042
32043  ldrh r8,[r4],#2 ;@ Fetch next opcode
32044  subs r5,r5,#14 ;@ Subtract cycles
32045  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32046  b CycloneEnd
32047
32048;@ ---------- [58e7] svc -(a7) uses Op58e7 ----------
32049Op58e7:
32050  mov r1,#0
32051  tst r10,#0x10000000 ;@ vc: !V
32052  mvneq r1,#0
32053
32054;@ EaCalc : Get '-(a7)' into r0:
32055  ldr r0,[r7,#0x3c] ;@ A7
32056  sub r0,r0,#2 ;@ Pre-decrement An
32057  str r0,[r7,#0x3c] ;@ A7
32058;@ EaWrite: Write r1 into '-(a7)' (address in r0):
32059  and r1,r1,#0xff
32060  mov lr,pc
32061  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32062
32063  ldrh r8,[r4],#2 ;@ Fetch next opcode
32064  subs r5,r5,#14 ;@ Subtract cycles
32065  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32066  b CycloneEnd
32067
32068;@ ---------- [58e8] svc ($3333,a0) uses Op58e8 ----------
32069Op58e8:
32070  mov r1,#0
32071  tst r10,#0x10000000 ;@ vc: !V
32072  mvneq r1,#0
32073
32074;@ EaCalc : Get '($3333,a0)' into r0:
32075  ldrsh r0,[r4],#2 ;@ Fetch offset
32076  and r2,r8,#0x000f
32077  ldr r2,[r7,r2,lsl #2]
32078  add r0,r0,r2 ;@ Add on offset
32079;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
32080  and r1,r1,#0xff
32081  mov lr,pc
32082  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32083
32084  ldrh r8,[r4],#2 ;@ Fetch next opcode
32085  subs r5,r5,#16 ;@ Subtract cycles
32086  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32087  b CycloneEnd
32088
32089;@ ---------- [58f0] svc ($33,a0,d3.w*2) uses Op58f0 ----------
32090Op58f0:
32091  mov r1,#0
32092  tst r10,#0x10000000 ;@ vc: !V
32093  mvneq r1,#0
32094
32095;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
32096;@ Get extension word into r3:
32097  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
32098  mov r2,r3,lsr #10
32099  tst r3,#0x0800 ;@ Is Rn Word or Long
32100  and r2,r2,#0x3c ;@ r2=Index of Rn
32101  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
32102  ldrne   r2,[r7,r2] ;@ r2=Rn.l
32103  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
32104  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
32105  and r2,r8,#0x000f
32106  orr r2,r2,#0x8 ;@ A0-7
32107  ldr r2,[r7,r2,lsl #2]
32108  add r0,r2,r3 ;@ r0=Disp+An+Rn
32109;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
32110  and r1,r1,#0xff
32111  mov lr,pc
32112  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32113
32114  ldrh r8,[r4],#2 ;@ Fetch next opcode
32115  subs r5,r5,#18 ;@ Subtract cycles
32116  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32117  b CycloneEnd
32118
32119;@ ---------- [58f8] svc $3333.w uses Op58f8 ----------
32120Op58f8:
32121  mov r1,#0
32122  tst r10,#0x10000000 ;@ vc: !V
32123  mvneq r1,#0
32124
32125;@ EaCalc : Get '$3333.w' into r0:
32126  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
32127;@ EaWrite: Write r1 into '$3333.w' (address in r0):
32128  and r1,r1,#0xff
32129  mov lr,pc
32130  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32131
32132  ldrh r8,[r4],#2 ;@ Fetch next opcode
32133  subs r5,r5,#16 ;@ Subtract cycles
32134  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32135  b CycloneEnd
32136
32137;@ ---------- [58f9] svc $33333333.l uses Op58f9 ----------
32138Op58f9:
32139  mov r1,#0
32140  tst r10,#0x10000000 ;@ vc: !V
32141  mvneq r1,#0
32142
32143;@ EaCalc : Get '$33333333.l' into r0:
32144  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
32145  ldrh r0,[r4],#2
32146  orr r0,r0,r2,lsl #16
32147;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
32148  and r1,r1,#0xff
32149  mov lr,pc
32150  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32151
32152  ldrh r8,[r4],#2 ;@ Fetch next opcode
32153  subs r5,r5,#20 ;@ Subtract cycles
32154  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32155  b CycloneEnd
32156
32157;@ ---------- [59c0] svs d0 uses Op59c0 ----------
32158Op59c0:
32159  mov r1,#0
32160  tst r10,#0x10000000 ;@ vs: V
32161  mvnne r1,#0
32162  subne r5,r5,#2 ;@ Extra cycles
32163
32164;@ EaCalc : Get register index into r0:
32165  and r0,r8,#0x000f
32166;@ EaWrite: r1 into register[r0]:
32167  strb r1,[r7,r0,lsl #2]
32168
32169  ldrh r8,[r4],#2 ;@ Fetch next opcode
32170  subs r5,r5,#4 ;@ Subtract cycles
32171  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32172  b CycloneEnd
32173
32174;@ ---------- [59c8] dbvs d0, 3335 uses Op59c8 ----------
32175Op59c8:
32176;@ Is the condition true?
32177  tst r10,#0x10000000 ;@ vs: V
32178;@ If so, don't dbra
32179  bne DbraTrue
32180
32181;@ Decrement Dn.w
32182  and r1,r8,#0x0007
32183  mov r1,r1,lsl #2
32184  ldrsh r0,[r7,r1]
32185  strb r8,[r7,#0x45] ;@ not polling
32186  sub r0,r0,#1
32187  strh r0,[r7,r1]
32188
32189;@ Check if Dn.w is -1
32190  cmn r0,#1
32191  beq DbraMin1
32192
32193;@ Get Branch offset:
32194  ldrsh r0,[r4]
32195  add r0,r4,r0 ;@ r0 = New PC
32196;@ Check Memory Base+pc
32197  mov lr,pc
32198  ldr pc,[r7,#0x64] ;@ Call checkpc()
32199
32200  mov r4,r0
32201  tst r4,#1 ;@ address error?
32202  bne ExceptionAddressError_r_prg_r4
32203  ldrh r8,[r4],#2 ;@ Fetch next opcode
32204  subs r5,r5,#10 ;@ Subtract cycles
32205  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32206  b CycloneEnd
32207
32208;@ ---------- [59d0] svs (a0) uses Op59d0 ----------
32209Op59d0:
32210  mov r1,#0
32211  tst r10,#0x10000000 ;@ vs: V
32212  mvnne r1,#0
32213
32214;@ EaCalc : Get '(a0)' into r0:
32215  and r2,r8,#0x000f
32216  orr r2,r2,#0x8 ;@ A0-7
32217  ldr r0,[r7,r2,lsl #2]
32218;@ EaWrite: Write r1 into '(a0)' (address in r0):
32219  and r1,r1,#0xff
32220  mov lr,pc
32221  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32222
32223  ldrh r8,[r4],#2 ;@ Fetch next opcode
32224  subs r5,r5,#12 ;@ Subtract cycles
32225  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32226  b CycloneEnd
32227
32228;@ ---------- [59d8] svs (a0)+ uses Op59d8 ----------
32229Op59d8:
32230  mov r1,#0
32231  tst r10,#0x10000000 ;@ vs: V
32232  mvnne r1,#0
32233
32234;@ EaCalc : Get '(a0)+' into r0:
32235  and r2,r8,#0x000f
32236  ldr r0,[r7,r2,lsl #2]
32237  add r3,r0,#1 ;@ Post-increment An
32238  str r3,[r7,r2,lsl #2]
32239;@ EaWrite: Write r1 into '(a0)+' (address in r0):
32240  and r1,r1,#0xff
32241  mov lr,pc
32242  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32243
32244  ldrh r8,[r4],#2 ;@ Fetch next opcode
32245  subs r5,r5,#12 ;@ Subtract cycles
32246  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32247  b CycloneEnd
32248
32249;@ ---------- [59df] svs (a7)+ uses Op59df ----------
32250Op59df:
32251  mov r1,#0
32252  tst r10,#0x10000000 ;@ vs: V
32253  mvnne r1,#0
32254
32255;@ EaCalc : Get '(a7)+' into r0:
32256  ldr r0,[r7,#0x3c] ;@ A7
32257  add r3,r0,#2 ;@ Post-increment An
32258  str r3,[r7,#0x3c] ;@ A7
32259;@ EaWrite: Write r1 into '(a7)+' (address in r0):
32260  and r1,r1,#0xff
32261  mov lr,pc
32262  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32263
32264  ldrh r8,[r4],#2 ;@ Fetch next opcode
32265  subs r5,r5,#12 ;@ Subtract cycles
32266  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32267  b CycloneEnd
32268
32269;@ ---------- [59e0] svs -(a0) uses Op59e0 ----------
32270Op59e0:
32271  mov r1,#0
32272  tst r10,#0x10000000 ;@ vs: V
32273  mvnne r1,#0
32274
32275;@ EaCalc : Get '-(a0)' into r0:
32276  and r2,r8,#0x000f
32277  orr r2,r2,#0x8 ;@ A0-7
32278  ldr r0,[r7,r2,lsl #2]
32279  sub r0,r0,#1 ;@ Pre-decrement An
32280  str r0,[r7,r2,lsl #2]
32281;@ EaWrite: Write r1 into '-(a0)' (address in r0):
32282  and r1,r1,#0xff
32283  mov lr,pc
32284  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32285
32286  ldrh r8,[r4],#2 ;@ Fetch next opcode
32287  subs r5,r5,#14 ;@ Subtract cycles
32288  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32289  b CycloneEnd
32290
32291;@ ---------- [59e7] svs -(a7) uses Op59e7 ----------
32292Op59e7:
32293  mov r1,#0
32294  tst r10,#0x10000000 ;@ vs: V
32295  mvnne r1,#0
32296
32297;@ EaCalc : Get '-(a7)' into r0:
32298  ldr r0,[r7,#0x3c] ;@ A7
32299  sub r0,r0,#2 ;@ Pre-decrement An
32300  str r0,[r7,#0x3c] ;@ A7
32301;@ EaWrite: Write r1 into '-(a7)' (address in r0):
32302  and r1,r1,#0xff
32303  mov lr,pc
32304  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32305
32306  ldrh r8,[r4],#2 ;@ Fetch next opcode
32307  subs r5,r5,#14 ;@ Subtract cycles
32308  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32309  b CycloneEnd
32310
32311;@ ---------- [59e8] svs ($3333,a0) uses Op59e8 ----------
32312Op59e8:
32313  mov r1,#0
32314  tst r10,#0x10000000 ;@ vs: V
32315  mvnne r1,#0
32316
32317;@ EaCalc : Get '($3333,a0)' into r0:
32318  ldrsh r0,[r4],#2 ;@ Fetch offset
32319  and r2,r8,#0x000f
32320  ldr r2,[r7,r2,lsl #2]
32321  add r0,r0,r2 ;@ Add on offset
32322;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
32323  and r1,r1,#0xff
32324  mov lr,pc
32325  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32326
32327  ldrh r8,[r4],#2 ;@ Fetch next opcode
32328  subs r5,r5,#16 ;@ Subtract cycles
32329  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32330  b CycloneEnd
32331
32332;@ ---------- [59f0] svs ($33,a0,d3.w*2) uses Op59f0 ----------
32333Op59f0:
32334  mov r1,#0
32335  tst r10,#0x10000000 ;@ vs: V
32336  mvnne r1,#0
32337
32338;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
32339;@ Get extension word into r3:
32340  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
32341  mov r2,r3,lsr #10
32342  tst r3,#0x0800 ;@ Is Rn Word or Long
32343  and r2,r2,#0x3c ;@ r2=Index of Rn
32344  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
32345  ldrne   r2,[r7,r2] ;@ r2=Rn.l
32346  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
32347  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
32348  and r2,r8,#0x000f
32349  orr r2,r2,#0x8 ;@ A0-7
32350  ldr r2,[r7,r2,lsl #2]
32351  add r0,r2,r3 ;@ r0=Disp+An+Rn
32352;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
32353  and r1,r1,#0xff
32354  mov lr,pc
32355  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32356
32357  ldrh r8,[r4],#2 ;@ Fetch next opcode
32358  subs r5,r5,#18 ;@ Subtract cycles
32359  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32360  b CycloneEnd
32361
32362;@ ---------- [59f8] svs $3333.w uses Op59f8 ----------
32363Op59f8:
32364  mov r1,#0
32365  tst r10,#0x10000000 ;@ vs: V
32366  mvnne r1,#0
32367
32368;@ EaCalc : Get '$3333.w' into r0:
32369  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
32370;@ EaWrite: Write r1 into '$3333.w' (address in r0):
32371  and r1,r1,#0xff
32372  mov lr,pc
32373  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32374
32375  ldrh r8,[r4],#2 ;@ Fetch next opcode
32376  subs r5,r5,#16 ;@ Subtract cycles
32377  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32378  b CycloneEnd
32379
32380;@ ---------- [59f9] svs $33333333.l uses Op59f9 ----------
32381Op59f9:
32382  mov r1,#0
32383  tst r10,#0x10000000 ;@ vs: V
32384  mvnne r1,#0
32385
32386;@ EaCalc : Get '$33333333.l' into r0:
32387  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
32388  ldrh r0,[r4],#2
32389  orr r0,r0,r2,lsl #16
32390;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
32391  and r1,r1,#0xff
32392  mov lr,pc
32393  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32394
32395  ldrh r8,[r4],#2 ;@ Fetch next opcode
32396  subs r5,r5,#20 ;@ Subtract cycles
32397  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32398  b CycloneEnd
32399
32400;@ ---------- [5ac0] spl d0 uses Op5ac0 ----------
32401Op5ac0:
32402  mov r1,#0
32403  tst r10,r10 ;@ pl: !N
32404  mvnpl r1,#0
32405  subpl r5,r5,#2 ;@ Extra cycles
32406
32407;@ EaCalc : Get register index into r0:
32408  and r0,r8,#0x000f
32409;@ EaWrite: r1 into register[r0]:
32410  strb r1,[r7,r0,lsl #2]
32411
32412  ldrh r8,[r4],#2 ;@ Fetch next opcode
32413  subs r5,r5,#4 ;@ Subtract cycles
32414  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32415  b CycloneEnd
32416
32417;@ ---------- [5ac8] dbpl d0, 3335 uses Op5ac8 ----------
32418Op5ac8:
32419;@ Is the condition true?
32420  tst r10,r10 ;@ pl: !N
32421;@ If so, don't dbra
32422  bpl DbraTrue
32423
32424;@ Decrement Dn.w
32425  and r1,r8,#0x0007
32426  mov r1,r1,lsl #2
32427  ldrsh r0,[r7,r1]
32428  strb r8,[r7,#0x45] ;@ not polling
32429  sub r0,r0,#1
32430  strh r0,[r7,r1]
32431
32432;@ Check if Dn.w is -1
32433  cmn r0,#1
32434  beq DbraMin1
32435
32436;@ Get Branch offset:
32437  ldrsh r0,[r4]
32438  add r0,r4,r0 ;@ r0 = New PC
32439;@ Check Memory Base+pc
32440  mov lr,pc
32441  ldr pc,[r7,#0x64] ;@ Call checkpc()
32442
32443  mov r4,r0
32444  tst r4,#1 ;@ address error?
32445  bne ExceptionAddressError_r_prg_r4
32446  ldrh r8,[r4],#2 ;@ Fetch next opcode
32447  subs r5,r5,#10 ;@ Subtract cycles
32448  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32449  b CycloneEnd
32450
32451;@ ---------- [5ad0] spl (a0) uses Op5ad0 ----------
32452Op5ad0:
32453  mov r1,#0
32454  tst r10,r10 ;@ pl: !N
32455  mvnpl r1,#0
32456
32457;@ EaCalc : Get '(a0)' into r0:
32458  and r2,r8,#0x000f
32459  orr r2,r2,#0x8 ;@ A0-7
32460  ldr r0,[r7,r2,lsl #2]
32461;@ EaWrite: Write r1 into '(a0)' (address in r0):
32462  and r1,r1,#0xff
32463  mov lr,pc
32464  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32465
32466  ldrh r8,[r4],#2 ;@ Fetch next opcode
32467  subs r5,r5,#12 ;@ Subtract cycles
32468  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32469  b CycloneEnd
32470
32471;@ ---------- [5ad8] spl (a0)+ uses Op5ad8 ----------
32472Op5ad8:
32473  mov r1,#0
32474  tst r10,r10 ;@ pl: !N
32475  mvnpl r1,#0
32476
32477;@ EaCalc : Get '(a0)+' into r0:
32478  and r2,r8,#0x000f
32479  ldr r0,[r7,r2,lsl #2]
32480  add r3,r0,#1 ;@ Post-increment An
32481  str r3,[r7,r2,lsl #2]
32482;@ EaWrite: Write r1 into '(a0)+' (address in r0):
32483  and r1,r1,#0xff
32484  mov lr,pc
32485  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32486
32487  ldrh r8,[r4],#2 ;@ Fetch next opcode
32488  subs r5,r5,#12 ;@ Subtract cycles
32489  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32490  b CycloneEnd
32491
32492;@ ---------- [5adf] spl (a7)+ uses Op5adf ----------
32493Op5adf:
32494  mov r1,#0
32495  tst r10,r10 ;@ pl: !N
32496  mvnpl r1,#0
32497
32498;@ EaCalc : Get '(a7)+' into r0:
32499  ldr r0,[r7,#0x3c] ;@ A7
32500  add r3,r0,#2 ;@ Post-increment An
32501  str r3,[r7,#0x3c] ;@ A7
32502;@ EaWrite: Write r1 into '(a7)+' (address in r0):
32503  and r1,r1,#0xff
32504  mov lr,pc
32505  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32506
32507  ldrh r8,[r4],#2 ;@ Fetch next opcode
32508  subs r5,r5,#12 ;@ Subtract cycles
32509  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32510  b CycloneEnd
32511
32512;@ ---------- [5ae0] spl -(a0) uses Op5ae0 ----------
32513Op5ae0:
32514  mov r1,#0
32515  tst r10,r10 ;@ pl: !N
32516  mvnpl r1,#0
32517
32518;@ EaCalc : Get '-(a0)' into r0:
32519  and r2,r8,#0x000f
32520  orr r2,r2,#0x8 ;@ A0-7
32521  ldr r0,[r7,r2,lsl #2]
32522  sub r0,r0,#1 ;@ Pre-decrement An
32523  str r0,[r7,r2,lsl #2]
32524;@ EaWrite: Write r1 into '-(a0)' (address in r0):
32525  and r1,r1,#0xff
32526  mov lr,pc
32527  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32528
32529  ldrh r8,[r4],#2 ;@ Fetch next opcode
32530  subs r5,r5,#14 ;@ Subtract cycles
32531  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32532  b CycloneEnd
32533
32534;@ ---------- [5ae7] spl -(a7) uses Op5ae7 ----------
32535Op5ae7:
32536  mov r1,#0
32537  tst r10,r10 ;@ pl: !N
32538  mvnpl r1,#0
32539
32540;@ EaCalc : Get '-(a7)' into r0:
32541  ldr r0,[r7,#0x3c] ;@ A7
32542  sub r0,r0,#2 ;@ Pre-decrement An
32543  str r0,[r7,#0x3c] ;@ A7
32544;@ EaWrite: Write r1 into '-(a7)' (address in r0):
32545  and r1,r1,#0xff
32546  mov lr,pc
32547  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32548
32549  ldrh r8,[r4],#2 ;@ Fetch next opcode
32550  subs r5,r5,#14 ;@ Subtract cycles
32551  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32552  b CycloneEnd
32553
32554;@ ---------- [5ae8] spl ($3333,a0) uses Op5ae8 ----------
32555Op5ae8:
32556  mov r1,#0
32557  tst r10,r10 ;@ pl: !N
32558  mvnpl r1,#0
32559
32560;@ EaCalc : Get '($3333,a0)' into r0:
32561  ldrsh r0,[r4],#2 ;@ Fetch offset
32562  and r2,r8,#0x000f
32563  ldr r2,[r7,r2,lsl #2]
32564  add r0,r0,r2 ;@ Add on offset
32565;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
32566  and r1,r1,#0xff
32567  mov lr,pc
32568  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32569
32570  ldrh r8,[r4],#2 ;@ Fetch next opcode
32571  subs r5,r5,#16 ;@ Subtract cycles
32572  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32573  b CycloneEnd
32574
32575;@ ---------- [5af0] spl ($33,a0,d3.w*2) uses Op5af0 ----------
32576Op5af0:
32577  mov r1,#0
32578  tst r10,r10 ;@ pl: !N
32579  mvnpl r1,#0
32580
32581;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
32582;@ Get extension word into r3:
32583  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
32584  mov r2,r3,lsr #10
32585  tst r3,#0x0800 ;@ Is Rn Word or Long
32586  and r2,r2,#0x3c ;@ r2=Index of Rn
32587  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
32588  ldrne   r2,[r7,r2] ;@ r2=Rn.l
32589  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
32590  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
32591  and r2,r8,#0x000f
32592  orr r2,r2,#0x8 ;@ A0-7
32593  ldr r2,[r7,r2,lsl #2]
32594  add r0,r2,r3 ;@ r0=Disp+An+Rn
32595;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
32596  and r1,r1,#0xff
32597  mov lr,pc
32598  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32599
32600  ldrh r8,[r4],#2 ;@ Fetch next opcode
32601  subs r5,r5,#18 ;@ Subtract cycles
32602  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32603  b CycloneEnd
32604
32605;@ ---------- [5af8] spl $3333.w uses Op5af8 ----------
32606Op5af8:
32607  mov r1,#0
32608  tst r10,r10 ;@ pl: !N
32609  mvnpl r1,#0
32610
32611;@ EaCalc : Get '$3333.w' into r0:
32612  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
32613;@ EaWrite: Write r1 into '$3333.w' (address in r0):
32614  and r1,r1,#0xff
32615  mov lr,pc
32616  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32617
32618  ldrh r8,[r4],#2 ;@ Fetch next opcode
32619  subs r5,r5,#16 ;@ Subtract cycles
32620  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32621  b CycloneEnd
32622
32623;@ ---------- [5af9] spl $33333333.l uses Op5af9 ----------
32624Op5af9:
32625  mov r1,#0
32626  tst r10,r10 ;@ pl: !N
32627  mvnpl r1,#0
32628
32629;@ EaCalc : Get '$33333333.l' into r0:
32630  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
32631  ldrh r0,[r4],#2
32632  orr r0,r0,r2,lsl #16
32633;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
32634  and r1,r1,#0xff
32635  mov lr,pc
32636  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32637
32638  ldrh r8,[r4],#2 ;@ Fetch next opcode
32639  subs r5,r5,#20 ;@ Subtract cycles
32640  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32641  b CycloneEnd
32642
32643;@ ---------- [5bc0] smi d0 uses Op5bc0 ----------
32644Op5bc0:
32645  mov r1,#0
32646  tst r10,r10 ;@ mi: N
32647  mvnmi r1,#0
32648  submi r5,r5,#2 ;@ Extra cycles
32649
32650;@ EaCalc : Get register index into r0:
32651  and r0,r8,#0x000f
32652;@ EaWrite: r1 into register[r0]:
32653  strb r1,[r7,r0,lsl #2]
32654
32655  ldrh r8,[r4],#2 ;@ Fetch next opcode
32656  subs r5,r5,#4 ;@ Subtract cycles
32657  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32658  b CycloneEnd
32659
32660;@ ---------- [5bc8] dbmi d0, 3335 uses Op5bc8 ----------
32661Op5bc8:
32662;@ Is the condition true?
32663  tst r10,r10 ;@ mi: N
32664;@ If so, don't dbra
32665  bmi DbraTrue
32666
32667;@ Decrement Dn.w
32668  and r1,r8,#0x0007
32669  mov r1,r1,lsl #2
32670  ldrsh r0,[r7,r1]
32671  strb r8,[r7,#0x45] ;@ not polling
32672  sub r0,r0,#1
32673  strh r0,[r7,r1]
32674
32675;@ Check if Dn.w is -1
32676  cmn r0,#1
32677  beq DbraMin1
32678
32679;@ Get Branch offset:
32680  ldrsh r0,[r4]
32681  add r0,r4,r0 ;@ r0 = New PC
32682;@ Check Memory Base+pc
32683  mov lr,pc
32684  ldr pc,[r7,#0x64] ;@ Call checkpc()
32685
32686  mov r4,r0
32687  tst r4,#1 ;@ address error?
32688  bne ExceptionAddressError_r_prg_r4
32689  ldrh r8,[r4],#2 ;@ Fetch next opcode
32690  subs r5,r5,#10 ;@ Subtract cycles
32691  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32692  b CycloneEnd
32693
32694;@ ---------- [5bd0] smi (a0) uses Op5bd0 ----------
32695Op5bd0:
32696  mov r1,#0
32697  tst r10,r10 ;@ mi: N
32698  mvnmi r1,#0
32699
32700;@ EaCalc : Get '(a0)' into r0:
32701  and r2,r8,#0x000f
32702  orr r2,r2,#0x8 ;@ A0-7
32703  ldr r0,[r7,r2,lsl #2]
32704;@ EaWrite: Write r1 into '(a0)' (address in r0):
32705  and r1,r1,#0xff
32706  mov lr,pc
32707  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32708
32709  ldrh r8,[r4],#2 ;@ Fetch next opcode
32710  subs r5,r5,#12 ;@ Subtract cycles
32711  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32712  b CycloneEnd
32713
32714;@ ---------- [5bd8] smi (a0)+ uses Op5bd8 ----------
32715Op5bd8:
32716  mov r1,#0
32717  tst r10,r10 ;@ mi: N
32718  mvnmi r1,#0
32719
32720;@ EaCalc : Get '(a0)+' into r0:
32721  and r2,r8,#0x000f
32722  ldr r0,[r7,r2,lsl #2]
32723  add r3,r0,#1 ;@ Post-increment An
32724  str r3,[r7,r2,lsl #2]
32725;@ EaWrite: Write r1 into '(a0)+' (address in r0):
32726  and r1,r1,#0xff
32727  mov lr,pc
32728  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32729
32730  ldrh r8,[r4],#2 ;@ Fetch next opcode
32731  subs r5,r5,#12 ;@ Subtract cycles
32732  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32733  b CycloneEnd
32734
32735;@ ---------- [5bdf] smi (a7)+ uses Op5bdf ----------
32736Op5bdf:
32737  mov r1,#0
32738  tst r10,r10 ;@ mi: N
32739  mvnmi r1,#0
32740
32741;@ EaCalc : Get '(a7)+' into r0:
32742  ldr r0,[r7,#0x3c] ;@ A7
32743  add r3,r0,#2 ;@ Post-increment An
32744  str r3,[r7,#0x3c] ;@ A7
32745;@ EaWrite: Write r1 into '(a7)+' (address in r0):
32746  and r1,r1,#0xff
32747  mov lr,pc
32748  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32749
32750  ldrh r8,[r4],#2 ;@ Fetch next opcode
32751  subs r5,r5,#12 ;@ Subtract cycles
32752  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32753  b CycloneEnd
32754
32755;@ ---------- [5be0] smi -(a0) uses Op5be0 ----------
32756Op5be0:
32757  mov r1,#0
32758  tst r10,r10 ;@ mi: N
32759  mvnmi r1,#0
32760
32761;@ EaCalc : Get '-(a0)' into r0:
32762  and r2,r8,#0x000f
32763  orr r2,r2,#0x8 ;@ A0-7
32764  ldr r0,[r7,r2,lsl #2]
32765  sub r0,r0,#1 ;@ Pre-decrement An
32766  str r0,[r7,r2,lsl #2]
32767;@ EaWrite: Write r1 into '-(a0)' (address in r0):
32768  and r1,r1,#0xff
32769  mov lr,pc
32770  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32771
32772  ldrh r8,[r4],#2 ;@ Fetch next opcode
32773  subs r5,r5,#14 ;@ Subtract cycles
32774  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32775  b CycloneEnd
32776
32777;@ ---------- [5be7] smi -(a7) uses Op5be7 ----------
32778Op5be7:
32779  mov r1,#0
32780  tst r10,r10 ;@ mi: N
32781  mvnmi r1,#0
32782
32783;@ EaCalc : Get '-(a7)' into r0:
32784  ldr r0,[r7,#0x3c] ;@ A7
32785  sub r0,r0,#2 ;@ Pre-decrement An
32786  str r0,[r7,#0x3c] ;@ A7
32787;@ EaWrite: Write r1 into '-(a7)' (address in r0):
32788  and r1,r1,#0xff
32789  mov lr,pc
32790  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32791
32792  ldrh r8,[r4],#2 ;@ Fetch next opcode
32793  subs r5,r5,#14 ;@ Subtract cycles
32794  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32795  b CycloneEnd
32796
32797;@ ---------- [5be8] smi ($3333,a0) uses Op5be8 ----------
32798Op5be8:
32799  mov r1,#0
32800  tst r10,r10 ;@ mi: N
32801  mvnmi r1,#0
32802
32803;@ EaCalc : Get '($3333,a0)' into r0:
32804  ldrsh r0,[r4],#2 ;@ Fetch offset
32805  and r2,r8,#0x000f
32806  ldr r2,[r7,r2,lsl #2]
32807  add r0,r0,r2 ;@ Add on offset
32808;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
32809  and r1,r1,#0xff
32810  mov lr,pc
32811  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32812
32813  ldrh r8,[r4],#2 ;@ Fetch next opcode
32814  subs r5,r5,#16 ;@ Subtract cycles
32815  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32816  b CycloneEnd
32817
32818;@ ---------- [5bf0] smi ($33,a0,d3.w*2) uses Op5bf0 ----------
32819Op5bf0:
32820  mov r1,#0
32821  tst r10,r10 ;@ mi: N
32822  mvnmi r1,#0
32823
32824;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
32825;@ Get extension word into r3:
32826  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
32827  mov r2,r3,lsr #10
32828  tst r3,#0x0800 ;@ Is Rn Word or Long
32829  and r2,r2,#0x3c ;@ r2=Index of Rn
32830  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
32831  ldrne   r2,[r7,r2] ;@ r2=Rn.l
32832  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
32833  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
32834  and r2,r8,#0x000f
32835  orr r2,r2,#0x8 ;@ A0-7
32836  ldr r2,[r7,r2,lsl #2]
32837  add r0,r2,r3 ;@ r0=Disp+An+Rn
32838;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
32839  and r1,r1,#0xff
32840  mov lr,pc
32841  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32842
32843  ldrh r8,[r4],#2 ;@ Fetch next opcode
32844  subs r5,r5,#18 ;@ Subtract cycles
32845  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32846  b CycloneEnd
32847
32848;@ ---------- [5bf8] smi $3333.w uses Op5bf8 ----------
32849Op5bf8:
32850  mov r1,#0
32851  tst r10,r10 ;@ mi: N
32852  mvnmi r1,#0
32853
32854;@ EaCalc : Get '$3333.w' into r0:
32855  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
32856;@ EaWrite: Write r1 into '$3333.w' (address in r0):
32857  and r1,r1,#0xff
32858  mov lr,pc
32859  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32860
32861  ldrh r8,[r4],#2 ;@ Fetch next opcode
32862  subs r5,r5,#16 ;@ Subtract cycles
32863  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32864  b CycloneEnd
32865
32866;@ ---------- [5bf9] smi $33333333.l uses Op5bf9 ----------
32867Op5bf9:
32868  mov r1,#0
32869  tst r10,r10 ;@ mi: N
32870  mvnmi r1,#0
32871
32872;@ EaCalc : Get '$33333333.l' into r0:
32873  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
32874  ldrh r0,[r4],#2
32875  orr r0,r0,r2,lsl #16
32876;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
32877  and r1,r1,#0xff
32878  mov lr,pc
32879  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32880
32881  ldrh r8,[r4],#2 ;@ Fetch next opcode
32882  subs r5,r5,#20 ;@ Subtract cycles
32883  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32884  b CycloneEnd
32885
32886;@ ---------- [5cc0] sge d0 uses Op5cc0 ----------
32887Op5cc0:
32888  mov r1,#0
32889  teq r10,r10,lsl #3 ;@ ge: N == V
32890  mvnpl r1,#0
32891  subpl r5,r5,#2 ;@ Extra cycles
32892
32893;@ EaCalc : Get register index into r0:
32894  and r0,r8,#0x000f
32895;@ EaWrite: r1 into register[r0]:
32896  strb r1,[r7,r0,lsl #2]
32897
32898  ldrh r8,[r4],#2 ;@ Fetch next opcode
32899  subs r5,r5,#4 ;@ Subtract cycles
32900  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32901  b CycloneEnd
32902
32903;@ ---------- [5cc8] dbge d0, 3335 uses Op5cc8 ----------
32904Op5cc8:
32905;@ Is the condition true?
32906  teq r10,r10,lsl #3 ;@ ge: N == V
32907;@ If so, don't dbra
32908  bpl DbraTrue
32909
32910;@ Decrement Dn.w
32911  and r1,r8,#0x0007
32912  mov r1,r1,lsl #2
32913  ldrsh r0,[r7,r1]
32914  strb r8,[r7,#0x45] ;@ not polling
32915  sub r0,r0,#1
32916  strh r0,[r7,r1]
32917
32918;@ Check if Dn.w is -1
32919  cmn r0,#1
32920  beq DbraMin1
32921
32922;@ Get Branch offset:
32923  ldrsh r0,[r4]
32924  add r0,r4,r0 ;@ r0 = New PC
32925;@ Check Memory Base+pc
32926  mov lr,pc
32927  ldr pc,[r7,#0x64] ;@ Call checkpc()
32928
32929  mov r4,r0
32930  tst r4,#1 ;@ address error?
32931  bne ExceptionAddressError_r_prg_r4
32932  ldrh r8,[r4],#2 ;@ Fetch next opcode
32933  subs r5,r5,#10 ;@ Subtract cycles
32934  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32935  b CycloneEnd
32936
32937;@ ---------- [5cd0] sge (a0) uses Op5cd0 ----------
32938Op5cd0:
32939  mov r1,#0
32940  teq r10,r10,lsl #3 ;@ ge: N == V
32941  mvnpl r1,#0
32942
32943;@ EaCalc : Get '(a0)' into r0:
32944  and r2,r8,#0x000f
32945  orr r2,r2,#0x8 ;@ A0-7
32946  ldr r0,[r7,r2,lsl #2]
32947;@ EaWrite: Write r1 into '(a0)' (address in r0):
32948  and r1,r1,#0xff
32949  mov lr,pc
32950  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32951
32952  ldrh r8,[r4],#2 ;@ Fetch next opcode
32953  subs r5,r5,#12 ;@ Subtract cycles
32954  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32955  b CycloneEnd
32956
32957;@ ---------- [5cd8] sge (a0)+ uses Op5cd8 ----------
32958Op5cd8:
32959  mov r1,#0
32960  teq r10,r10,lsl #3 ;@ ge: N == V
32961  mvnpl r1,#0
32962
32963;@ EaCalc : Get '(a0)+' into r0:
32964  and r2,r8,#0x000f
32965  ldr r0,[r7,r2,lsl #2]
32966  add r3,r0,#1 ;@ Post-increment An
32967  str r3,[r7,r2,lsl #2]
32968;@ EaWrite: Write r1 into '(a0)+' (address in r0):
32969  and r1,r1,#0xff
32970  mov lr,pc
32971  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32972
32973  ldrh r8,[r4],#2 ;@ Fetch next opcode
32974  subs r5,r5,#12 ;@ Subtract cycles
32975  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32976  b CycloneEnd
32977
32978;@ ---------- [5cdf] sge (a7)+ uses Op5cdf ----------
32979Op5cdf:
32980  mov r1,#0
32981  teq r10,r10,lsl #3 ;@ ge: N == V
32982  mvnpl r1,#0
32983
32984;@ EaCalc : Get '(a7)+' into r0:
32985  ldr r0,[r7,#0x3c] ;@ A7
32986  add r3,r0,#2 ;@ Post-increment An
32987  str r3,[r7,#0x3c] ;@ A7
32988;@ EaWrite: Write r1 into '(a7)+' (address in r0):
32989  and r1,r1,#0xff
32990  mov lr,pc
32991  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
32992
32993  ldrh r8,[r4],#2 ;@ Fetch next opcode
32994  subs r5,r5,#12 ;@ Subtract cycles
32995  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
32996  b CycloneEnd
32997
32998;@ ---------- [5ce0] sge -(a0) uses Op5ce0 ----------
32999Op5ce0:
33000  mov r1,#0
33001  teq r10,r10,lsl #3 ;@ ge: N == V
33002  mvnpl r1,#0
33003
33004;@ EaCalc : Get '-(a0)' into r0:
33005  and r2,r8,#0x000f
33006  orr r2,r2,#0x8 ;@ A0-7
33007  ldr r0,[r7,r2,lsl #2]
33008  sub r0,r0,#1 ;@ Pre-decrement An
33009  str r0,[r7,r2,lsl #2]
33010;@ EaWrite: Write r1 into '-(a0)' (address in r0):
33011  and r1,r1,#0xff
33012  mov lr,pc
33013  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33014
33015  ldrh r8,[r4],#2 ;@ Fetch next opcode
33016  subs r5,r5,#14 ;@ Subtract cycles
33017  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33018  b CycloneEnd
33019
33020;@ ---------- [5ce7] sge -(a7) uses Op5ce7 ----------
33021Op5ce7:
33022  mov r1,#0
33023  teq r10,r10,lsl #3 ;@ ge: N == V
33024  mvnpl r1,#0
33025
33026;@ EaCalc : Get '-(a7)' into r0:
33027  ldr r0,[r7,#0x3c] ;@ A7
33028  sub r0,r0,#2 ;@ Pre-decrement An
33029  str r0,[r7,#0x3c] ;@ A7
33030;@ EaWrite: Write r1 into '-(a7)' (address in r0):
33031  and r1,r1,#0xff
33032  mov lr,pc
33033  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33034
33035  ldrh r8,[r4],#2 ;@ Fetch next opcode
33036  subs r5,r5,#14 ;@ Subtract cycles
33037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33038  b CycloneEnd
33039
33040;@ ---------- [5ce8] sge ($3333,a0) uses Op5ce8 ----------
33041Op5ce8:
33042  mov r1,#0
33043  teq r10,r10,lsl #3 ;@ ge: N == V
33044  mvnpl r1,#0
33045
33046;@ EaCalc : Get '($3333,a0)' into r0:
33047  ldrsh r0,[r4],#2 ;@ Fetch offset
33048  and r2,r8,#0x000f
33049  ldr r2,[r7,r2,lsl #2]
33050  add r0,r0,r2 ;@ Add on offset
33051;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
33052  and r1,r1,#0xff
33053  mov lr,pc
33054  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33055
33056  ldrh r8,[r4],#2 ;@ Fetch next opcode
33057  subs r5,r5,#16 ;@ Subtract cycles
33058  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33059  b CycloneEnd
33060
33061;@ ---------- [5cf0] sge ($33,a0,d3.w*2) uses Op5cf0 ----------
33062Op5cf0:
33063  mov r1,#0
33064  teq r10,r10,lsl #3 ;@ ge: N == V
33065  mvnpl r1,#0
33066
33067;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
33068;@ Get extension word into r3:
33069  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
33070  mov r2,r3,lsr #10
33071  tst r3,#0x0800 ;@ Is Rn Word or Long
33072  and r2,r2,#0x3c ;@ r2=Index of Rn
33073  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
33074  ldrne   r2,[r7,r2] ;@ r2=Rn.l
33075  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
33076  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
33077  and r2,r8,#0x000f
33078  orr r2,r2,#0x8 ;@ A0-7
33079  ldr r2,[r7,r2,lsl #2]
33080  add r0,r2,r3 ;@ r0=Disp+An+Rn
33081;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
33082  and r1,r1,#0xff
33083  mov lr,pc
33084  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33085
33086  ldrh r8,[r4],#2 ;@ Fetch next opcode
33087  subs r5,r5,#18 ;@ Subtract cycles
33088  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33089  b CycloneEnd
33090
33091;@ ---------- [5cf8] sge $3333.w uses Op5cf8 ----------
33092Op5cf8:
33093  mov r1,#0
33094  teq r10,r10,lsl #3 ;@ ge: N == V
33095  mvnpl r1,#0
33096
33097;@ EaCalc : Get '$3333.w' into r0:
33098  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
33099;@ EaWrite: Write r1 into '$3333.w' (address in r0):
33100  and r1,r1,#0xff
33101  mov lr,pc
33102  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33103
33104  ldrh r8,[r4],#2 ;@ Fetch next opcode
33105  subs r5,r5,#16 ;@ Subtract cycles
33106  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33107  b CycloneEnd
33108
33109;@ ---------- [5cf9] sge $33333333.l uses Op5cf9 ----------
33110Op5cf9:
33111  mov r1,#0
33112  teq r10,r10,lsl #3 ;@ ge: N == V
33113  mvnpl r1,#0
33114
33115;@ EaCalc : Get '$33333333.l' into r0:
33116  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
33117  ldrh r0,[r4],#2
33118  orr r0,r0,r2,lsl #16
33119;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
33120  and r1,r1,#0xff
33121  mov lr,pc
33122  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33123
33124  ldrh r8,[r4],#2 ;@ Fetch next opcode
33125  subs r5,r5,#20 ;@ Subtract cycles
33126  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33127  b CycloneEnd
33128
33129;@ ---------- [5dc0] slt d0 uses Op5dc0 ----------
33130Op5dc0:
33131  mov r1,#0
33132  teq r10,r10,lsl #3 ;@ lt: N != V
33133  mvnmi r1,#0
33134  submi r5,r5,#2 ;@ Extra cycles
33135
33136;@ EaCalc : Get register index into r0:
33137  and r0,r8,#0x000f
33138;@ EaWrite: r1 into register[r0]:
33139  strb r1,[r7,r0,lsl #2]
33140
33141  ldrh r8,[r4],#2 ;@ Fetch next opcode
33142  subs r5,r5,#4 ;@ Subtract cycles
33143  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33144  b CycloneEnd
33145
33146;@ ---------- [5dc8] dblt d0, 3335 uses Op5dc8 ----------
33147Op5dc8:
33148;@ Is the condition true?
33149  teq r10,r10,lsl #3 ;@ lt: N != V
33150;@ If so, don't dbra
33151  bmi DbraTrue
33152
33153;@ Decrement Dn.w
33154  and r1,r8,#0x0007
33155  mov r1,r1,lsl #2
33156  ldrsh r0,[r7,r1]
33157  strb r8,[r7,#0x45] ;@ not polling
33158  sub r0,r0,#1
33159  strh r0,[r7,r1]
33160
33161;@ Check if Dn.w is -1
33162  cmn r0,#1
33163  beq DbraMin1
33164
33165;@ Get Branch offset:
33166  ldrsh r0,[r4]
33167  add r0,r4,r0 ;@ r0 = New PC
33168;@ Check Memory Base+pc
33169  mov lr,pc
33170  ldr pc,[r7,#0x64] ;@ Call checkpc()
33171
33172  mov r4,r0
33173  tst r4,#1 ;@ address error?
33174  bne ExceptionAddressError_r_prg_r4
33175  ldrh r8,[r4],#2 ;@ Fetch next opcode
33176  subs r5,r5,#10 ;@ Subtract cycles
33177  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33178  b CycloneEnd
33179
33180;@ ---------- [5dd0] slt (a0) uses Op5dd0 ----------
33181Op5dd0:
33182  mov r1,#0
33183  teq r10,r10,lsl #3 ;@ lt: N != V
33184  mvnmi r1,#0
33185
33186;@ EaCalc : Get '(a0)' into r0:
33187  and r2,r8,#0x000f
33188  orr r2,r2,#0x8 ;@ A0-7
33189  ldr r0,[r7,r2,lsl #2]
33190;@ EaWrite: Write r1 into '(a0)' (address in r0):
33191  and r1,r1,#0xff
33192  mov lr,pc
33193  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33194
33195  ldrh r8,[r4],#2 ;@ Fetch next opcode
33196  subs r5,r5,#12 ;@ Subtract cycles
33197  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33198  b CycloneEnd
33199
33200;@ ---------- [5dd8] slt (a0)+ uses Op5dd8 ----------
33201Op5dd8:
33202  mov r1,#0
33203  teq r10,r10,lsl #3 ;@ lt: N != V
33204  mvnmi r1,#0
33205
33206;@ EaCalc : Get '(a0)+' into r0:
33207  and r2,r8,#0x000f
33208  ldr r0,[r7,r2,lsl #2]
33209  add r3,r0,#1 ;@ Post-increment An
33210  str r3,[r7,r2,lsl #2]
33211;@ EaWrite: Write r1 into '(a0)+' (address in r0):
33212  and r1,r1,#0xff
33213  mov lr,pc
33214  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33215
33216  ldrh r8,[r4],#2 ;@ Fetch next opcode
33217  subs r5,r5,#12 ;@ Subtract cycles
33218  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33219  b CycloneEnd
33220
33221;@ ---------- [5ddf] slt (a7)+ uses Op5ddf ----------
33222Op5ddf:
33223  mov r1,#0
33224  teq r10,r10,lsl #3 ;@ lt: N != V
33225  mvnmi r1,#0
33226
33227;@ EaCalc : Get '(a7)+' into r0:
33228  ldr r0,[r7,#0x3c] ;@ A7
33229  add r3,r0,#2 ;@ Post-increment An
33230  str r3,[r7,#0x3c] ;@ A7
33231;@ EaWrite: Write r1 into '(a7)+' (address in r0):
33232  and r1,r1,#0xff
33233  mov lr,pc
33234  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33235
33236  ldrh r8,[r4],#2 ;@ Fetch next opcode
33237  subs r5,r5,#12 ;@ Subtract cycles
33238  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33239  b CycloneEnd
33240
33241;@ ---------- [5de0] slt -(a0) uses Op5de0 ----------
33242Op5de0:
33243  mov r1,#0
33244  teq r10,r10,lsl #3 ;@ lt: N != V
33245  mvnmi r1,#0
33246
33247;@ EaCalc : Get '-(a0)' into r0:
33248  and r2,r8,#0x000f
33249  orr r2,r2,#0x8 ;@ A0-7
33250  ldr r0,[r7,r2,lsl #2]
33251  sub r0,r0,#1 ;@ Pre-decrement An
33252  str r0,[r7,r2,lsl #2]
33253;@ EaWrite: Write r1 into '-(a0)' (address in r0):
33254  and r1,r1,#0xff
33255  mov lr,pc
33256  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33257
33258  ldrh r8,[r4],#2 ;@ Fetch next opcode
33259  subs r5,r5,#14 ;@ Subtract cycles
33260  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33261  b CycloneEnd
33262
33263;@ ---------- [5de7] slt -(a7) uses Op5de7 ----------
33264Op5de7:
33265  mov r1,#0
33266  teq r10,r10,lsl #3 ;@ lt: N != V
33267  mvnmi r1,#0
33268
33269;@ EaCalc : Get '-(a7)' into r0:
33270  ldr r0,[r7,#0x3c] ;@ A7
33271  sub r0,r0,#2 ;@ Pre-decrement An
33272  str r0,[r7,#0x3c] ;@ A7
33273;@ EaWrite: Write r1 into '-(a7)' (address in r0):
33274  and r1,r1,#0xff
33275  mov lr,pc
33276  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33277
33278  ldrh r8,[r4],#2 ;@ Fetch next opcode
33279  subs r5,r5,#14 ;@ Subtract cycles
33280  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33281  b CycloneEnd
33282
33283;@ ---------- [5de8] slt ($3333,a0) uses Op5de8 ----------
33284Op5de8:
33285  mov r1,#0
33286  teq r10,r10,lsl #3 ;@ lt: N != V
33287  mvnmi r1,#0
33288
33289;@ EaCalc : Get '($3333,a0)' into r0:
33290  ldrsh r0,[r4],#2 ;@ Fetch offset
33291  and r2,r8,#0x000f
33292  ldr r2,[r7,r2,lsl #2]
33293  add r0,r0,r2 ;@ Add on offset
33294;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
33295  and r1,r1,#0xff
33296  mov lr,pc
33297  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33298
33299  ldrh r8,[r4],#2 ;@ Fetch next opcode
33300  subs r5,r5,#16 ;@ Subtract cycles
33301  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33302  b CycloneEnd
33303
33304;@ ---------- [5df0] slt ($33,a0,d3.w*2) uses Op5df0 ----------
33305Op5df0:
33306  mov r1,#0
33307  teq r10,r10,lsl #3 ;@ lt: N != V
33308  mvnmi r1,#0
33309
33310;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
33311;@ Get extension word into r3:
33312  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
33313  mov r2,r3,lsr #10
33314  tst r3,#0x0800 ;@ Is Rn Word or Long
33315  and r2,r2,#0x3c ;@ r2=Index of Rn
33316  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
33317  ldrne   r2,[r7,r2] ;@ r2=Rn.l
33318  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
33319  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
33320  and r2,r8,#0x000f
33321  orr r2,r2,#0x8 ;@ A0-7
33322  ldr r2,[r7,r2,lsl #2]
33323  add r0,r2,r3 ;@ r0=Disp+An+Rn
33324;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
33325  and r1,r1,#0xff
33326  mov lr,pc
33327  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33328
33329  ldrh r8,[r4],#2 ;@ Fetch next opcode
33330  subs r5,r5,#18 ;@ Subtract cycles
33331  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33332  b CycloneEnd
33333
33334;@ ---------- [5df8] slt $3333.w uses Op5df8 ----------
33335Op5df8:
33336  mov r1,#0
33337  teq r10,r10,lsl #3 ;@ lt: N != V
33338  mvnmi r1,#0
33339
33340;@ EaCalc : Get '$3333.w' into r0:
33341  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
33342;@ EaWrite: Write r1 into '$3333.w' (address in r0):
33343  and r1,r1,#0xff
33344  mov lr,pc
33345  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33346
33347  ldrh r8,[r4],#2 ;@ Fetch next opcode
33348  subs r5,r5,#16 ;@ Subtract cycles
33349  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33350  b CycloneEnd
33351
33352;@ ---------- [5df9] slt $33333333.l uses Op5df9 ----------
33353Op5df9:
33354  mov r1,#0
33355  teq r10,r10,lsl #3 ;@ lt: N != V
33356  mvnmi r1,#0
33357
33358;@ EaCalc : Get '$33333333.l' into r0:
33359  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
33360  ldrh r0,[r4],#2
33361  orr r0,r0,r2,lsl #16
33362;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
33363  and r1,r1,#0xff
33364  mov lr,pc
33365  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33366
33367  ldrh r8,[r4],#2 ;@ Fetch next opcode
33368  subs r5,r5,#20 ;@ Subtract cycles
33369  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33370  b CycloneEnd
33371
33372;@ ---------- [5e00] addq.b #7, d0 uses Op5e00 ----------
33373Op5e00:
33374;@ EaCalc : Get register index into r11:
33375  and r11,r8,#0x000f
33376;@ EaRead : Read register[r11] into r0:
33377  ldr r0,[r7,r11,lsl #2]
33378
33379  and r2,r8,#0x0e00 ;@ Get quick value
33380
33381  mov r0,r0,asl #24
33382
33383  adds r1,r0,r2,lsl #15
33384  mrs r10,cpsr ;@ r10=flags
33385  str r10,[r7,#0x4c] ;@ Save X bit
33386
33387;@ EaWrite: r1 into register[r11]:
33388  mov r1,r1,lsr #24
33389  strb r1,[r7,r11,lsl #2]
33390
33391  ldrh r8,[r4],#2 ;@ Fetch next opcode
33392  subs r5,r5,#4 ;@ Subtract cycles
33393  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33394  b CycloneEnd
33395
33396;@ ---------- [5e10] addq.b #7, (a0) uses Op5e10 ----------
33397Op5e10:
33398;@ EaCalc : Get '(a0)' into r11:
33399  and r2,r8,#0x000f
33400  orr r2,r2,#0x8 ;@ A0-7
33401  ldr r11,[r7,r2,lsl #2]
33402;@ EaRead : Read '(a0)' (address in r11) into r0:
33403  add lr,pc,#4
33404  mov r0,r11
33405  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
33406
33407  and r2,r8,#0x0e00 ;@ Get quick value
33408
33409  mov r0,r0,asl #24
33410
33411  adds r1,r0,r2,lsl #15
33412  mrs r10,cpsr ;@ r10=flags
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  add lr,pc,#4
33418  mov r0,r11
33419  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33420
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;@ ---------- [5e18] addq.b #7, (a0)+ uses Op5e18 ----------
33427Op5e18:
33428;@ EaCalc : Get '(a0)+' into r11:
33429  and r2,r8,#0x000f
33430  ldr r11,[r7,r2,lsl #2]
33431  add r3,r11,#1 ;@ Post-increment An
33432  str r3,[r7,r2,lsl #2]
33433;@ EaRead : Read '(a0)+' (address in r11) into r0:
33434  add lr,pc,#4
33435  mov r0,r11
33436  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
33437
33438  and r2,r8,#0x0e00 ;@ Get quick value
33439
33440  mov r0,r0,asl #24
33441
33442  adds r1,r0,r2,lsl #15
33443  mrs r10,cpsr ;@ r10=flags
33444  str r10,[r7,#0x4c] ;@ Save X bit
33445
33446;@ EaWrite: Write r1 into '(a0)+' (address in r11):
33447  mov r1,r1,lsr #24
33448  add lr,pc,#4
33449  mov r0,r11
33450  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33451
33452  ldrh r8,[r4],#2 ;@ Fetch next opcode
33453  subs r5,r5,#12 ;@ Subtract cycles
33454  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33455  b CycloneEnd
33456
33457;@ ---------- [5e1f] addq.b #7, (a7)+ uses Op5e1f ----------
33458Op5e1f:
33459;@ EaCalc : Get '(a7)+' into r11:
33460  ldr r11,[r7,#0x3c] ;@ A7
33461  add r3,r11,#2 ;@ Post-increment An
33462  str r3,[r7,#0x3c] ;@ A7
33463;@ EaRead : Read '(a7)+' (address in r11) into r0:
33464  add lr,pc,#4
33465  mov r0,r11
33466  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
33467
33468  and r2,r8,#0x0e00 ;@ Get quick value
33469
33470  mov r0,r0,asl #24
33471
33472  adds r1,r0,r2,lsl #15
33473  mrs r10,cpsr ;@ r10=flags
33474  str r10,[r7,#0x4c] ;@ Save X bit
33475
33476;@ EaWrite: Write r1 into '(a7)+' (address in r11):
33477  mov r1,r1,lsr #24
33478  add lr,pc,#4
33479  mov r0,r11
33480  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33481
33482  ldrh r8,[r4],#2 ;@ Fetch next opcode
33483  subs r5,r5,#12 ;@ Subtract cycles
33484  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33485  b CycloneEnd
33486
33487;@ ---------- [5e20] addq.b #7, -(a0) uses Op5e20 ----------
33488Op5e20:
33489;@ EaCalc : Get '-(a0)' into r11:
33490  and r2,r8,#0x000f
33491  orr r2,r2,#0x8 ;@ A0-7
33492  ldr r11,[r7,r2,lsl #2]
33493  sub r11,r11,#1 ;@ Pre-decrement An
33494  str r11,[r7,r2,lsl #2]
33495;@ EaRead : Read '-(a0)' (address in r11) into r0:
33496  add lr,pc,#4
33497  mov r0,r11
33498  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
33499
33500  and r2,r8,#0x0e00 ;@ Get quick value
33501
33502  mov r0,r0,asl #24
33503
33504  adds r1,r0,r2,lsl #15
33505  mrs r10,cpsr ;@ r10=flags
33506  str r10,[r7,#0x4c] ;@ Save X bit
33507
33508;@ EaWrite: Write r1 into '-(a0)' (address in r11):
33509  mov r1,r1,lsr #24
33510  add lr,pc,#4
33511  mov r0,r11
33512  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33513
33514  ldrh r8,[r4],#2 ;@ Fetch next opcode
33515  subs r5,r5,#14 ;@ Subtract cycles
33516  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33517  b CycloneEnd
33518
33519;@ ---------- [5e27] addq.b #7, -(a7) uses Op5e27 ----------
33520Op5e27:
33521;@ EaCalc : Get '-(a7)' into r11:
33522  ldr r11,[r7,#0x3c] ;@ A7
33523  sub r11,r11,#2 ;@ Pre-decrement An
33524  str r11,[r7,#0x3c] ;@ A7
33525;@ EaRead : Read '-(a7)' (address in r11) into r0:
33526  add lr,pc,#4
33527  mov r0,r11
33528  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
33529
33530  and r2,r8,#0x0e00 ;@ Get quick value
33531
33532  mov r0,r0,asl #24
33533
33534  adds r1,r0,r2,lsl #15
33535  mrs r10,cpsr ;@ r10=flags
33536  str r10,[r7,#0x4c] ;@ Save X bit
33537
33538;@ EaWrite: Write r1 into '-(a7)' (address in r11):
33539  mov r1,r1,lsr #24
33540  add lr,pc,#4
33541  mov r0,r11
33542  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33543
33544  ldrh r8,[r4],#2 ;@ Fetch next opcode
33545  subs r5,r5,#14 ;@ Subtract cycles
33546  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33547  b CycloneEnd
33548
33549;@ ---------- [5e28] addq.b #7, ($3333,a0) uses Op5e28 ----------
33550Op5e28:
33551;@ EaCalc : Get '($3333,a0)' into r11:
33552  ldrsh r0,[r4],#2 ;@ Fetch offset
33553  and r2,r8,#0x000f
33554  ldr r2,[r7,r2,lsl #2]
33555  add r11,r0,r2 ;@ Add on offset
33556;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
33557  add lr,pc,#4
33558  mov r0,r11
33559  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
33560
33561  and r2,r8,#0x0e00 ;@ Get quick value
33562
33563  mov r0,r0,asl #24
33564
33565  adds r1,r0,r2,lsl #15
33566  mrs r10,cpsr ;@ r10=flags
33567  str r10,[r7,#0x4c] ;@ Save X bit
33568
33569;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
33570  mov r1,r1,lsr #24
33571  add lr,pc,#4
33572  mov r0,r11
33573  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33574
33575  ldrh r8,[r4],#2 ;@ Fetch next opcode
33576  subs r5,r5,#16 ;@ Subtract cycles
33577  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33578  b CycloneEnd
33579
33580;@ ---------- [5e30] addq.b #7, ($33,a0,d3.w*2) uses Op5e30 ----------
33581Op5e30:
33582;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
33583;@ Get extension word into r3:
33584  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
33585  mov r2,r3,lsr #10
33586  tst r3,#0x0800 ;@ Is Rn Word or Long
33587  and r2,r2,#0x3c ;@ r2=Index of Rn
33588  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
33589  ldrne   r2,[r7,r2] ;@ r2=Rn.l
33590  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
33591  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
33592  and r2,r8,#0x000f
33593  orr r2,r2,#0x8 ;@ A0-7
33594  ldr r2,[r7,r2,lsl #2]
33595  add r11,r2,r3 ;@ r11=Disp+An+Rn
33596;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
33597  add lr,pc,#4
33598  mov r0,r11
33599  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
33600
33601  and r2,r8,#0x0e00 ;@ Get quick value
33602
33603  mov r0,r0,asl #24
33604
33605  adds r1,r0,r2,lsl #15
33606  mrs r10,cpsr ;@ r10=flags
33607  str r10,[r7,#0x4c] ;@ Save X bit
33608
33609;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
33610  mov r1,r1,lsr #24
33611  add lr,pc,#4
33612  mov r0,r11
33613  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33614
33615  ldrh r8,[r4],#2 ;@ Fetch next opcode
33616  subs r5,r5,#18 ;@ Subtract cycles
33617  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33618  b CycloneEnd
33619
33620;@ ---------- [5e38] addq.b #7, $3333.w uses Op5e38 ----------
33621Op5e38:
33622;@ EaCalc : Get '$3333.w' into r11:
33623  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
33624;@ EaRead : Read '$3333.w' (address in r11) into r0:
33625  add lr,pc,#4
33626  mov r0,r11
33627  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
33628
33629  and r2,r8,#0x0e00 ;@ Get quick value
33630
33631  mov r0,r0,asl #24
33632
33633  adds r1,r0,r2,lsl #15
33634  mrs r10,cpsr ;@ r10=flags
33635  str r10,[r7,#0x4c] ;@ Save X bit
33636
33637;@ EaWrite: Write r1 into '$3333.w' (address in r11):
33638  mov r1,r1,lsr #24
33639  add lr,pc,#4
33640  mov r0,r11
33641  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33642
33643  ldrh r8,[r4],#2 ;@ Fetch next opcode
33644  subs r5,r5,#16 ;@ Subtract cycles
33645  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33646  b CycloneEnd
33647
33648;@ ---------- [5e39] addq.b #7, $33333333.l uses Op5e39 ----------
33649Op5e39:
33650;@ EaCalc : Get '$33333333.l' into r11:
33651  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
33652  ldrh r0,[r4],#2
33653  orr r11,r0,r2,lsl #16
33654;@ EaRead : Read '$33333333.l' (address in r11) into r0:
33655  add lr,pc,#4
33656  mov r0,r11
33657  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
33658
33659  and r2,r8,#0x0e00 ;@ Get quick value
33660
33661  mov r0,r0,asl #24
33662
33663  adds r1,r0,r2,lsl #15
33664  mrs r10,cpsr ;@ r10=flags
33665  str r10,[r7,#0x4c] ;@ Save X bit
33666
33667;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
33668  mov r1,r1,lsr #24
33669  add lr,pc,#4
33670  mov r0,r11
33671  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
33672
33673  ldrh r8,[r4],#2 ;@ Fetch next opcode
33674  subs r5,r5,#20 ;@ Subtract cycles
33675  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33676  b CycloneEnd
33677
33678;@ ---------- [5e48] addq.w #7, a0 uses Op5e48 ----------
33679Op5e48:
33680;@ EaCalc : Get register index into r11:
33681  and r11,r8,#0x000f
33682;@ EaRead : Read register[r11] into r0:
33683  ldr r0,[r7,r11,lsl #2]
33684
33685  and r2,r8,#0x0e00 ;@ Get quick value
33686
33687  adds r1,r0,r2,lsr #9
33688
33689;@ EaWrite: r1 into register[r11]:
33690  str r1,[r7,r11,lsl #2]
33691
33692  ldrh r8,[r4],#2 ;@ Fetch next opcode
33693  subs r5,r5,#4 ;@ Subtract cycles
33694  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33695  b CycloneEnd
33696
33697;@ ---------- [5e50] addq.w #7, (a0) uses Op5e50 ----------
33698Op5e50:
33699;@ EaCalc : Get '(a0)' into r11:
33700  and r2,r8,#0x000f
33701  orr r2,r2,#0x8 ;@ A0-7
33702  ldr r11,[r7,r2,lsl #2]
33703;@ EaRead : Read '(a0)' (address in r11) into r0:
33704  add lr,pc,#4
33705  mov r0,r11
33706  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
33707
33708  and r2,r8,#0x0e00 ;@ Get quick value
33709
33710  mov r0,r0,asl #16
33711
33712  adds r1,r0,r2,lsl #7
33713  mrs r10,cpsr ;@ r10=flags
33714  str r10,[r7,#0x4c] ;@ Save X bit
33715
33716;@ EaWrite: Write r1 into '(a0)' (address in r11):
33717  mov r1,r1,lsr #16
33718  add lr,pc,#4
33719  mov r0,r11
33720  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
33721
33722  ldrh r8,[r4],#2 ;@ Fetch next opcode
33723  subs r5,r5,#12 ;@ Subtract cycles
33724  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33725  b CycloneEnd
33726
33727;@ ---------- [5e58] addq.w #7, (a0)+ uses Op5e58 ----------
33728Op5e58:
33729;@ EaCalc : Get '(a0)+' into r11:
33730  and r2,r8,#0x000f
33731  ldr r11,[r7,r2,lsl #2]
33732  add r3,r11,#2 ;@ Post-increment An
33733  str r3,[r7,r2,lsl #2]
33734;@ EaRead : Read '(a0)+' (address in r11) into r0:
33735  add lr,pc,#4
33736  mov r0,r11
33737  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
33738
33739  and r2,r8,#0x0e00 ;@ Get quick value
33740
33741  mov r0,r0,asl #16
33742
33743  adds r1,r0,r2,lsl #7
33744  mrs r10,cpsr ;@ r10=flags
33745  str r10,[r7,#0x4c] ;@ Save X bit
33746
33747;@ EaWrite: Write r1 into '(a0)+' (address in r11):
33748  mov r1,r1,lsr #16
33749  add lr,pc,#4
33750  mov r0,r11
33751  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
33752
33753  ldrh r8,[r4],#2 ;@ Fetch next opcode
33754  subs r5,r5,#12 ;@ Subtract cycles
33755  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33756  b CycloneEnd
33757
33758;@ ---------- [5e60] addq.w #7, -(a0) uses Op5e60 ----------
33759Op5e60:
33760;@ EaCalc : Get '-(a0)' into r11:
33761  and r2,r8,#0x000f
33762  orr r2,r2,#0x8 ;@ A0-7
33763  ldr r11,[r7,r2,lsl #2]
33764  sub r11,r11,#2 ;@ Pre-decrement An
33765  str r11,[r7,r2,lsl #2]
33766;@ EaRead : Read '-(a0)' (address in r11) into r0:
33767  add lr,pc,#4
33768  mov r0,r11
33769  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
33770
33771  and r2,r8,#0x0e00 ;@ Get quick value
33772
33773  mov r0,r0,asl #16
33774
33775  adds r1,r0,r2,lsl #7
33776  mrs r10,cpsr ;@ r10=flags
33777  str r10,[r7,#0x4c] ;@ Save X bit
33778
33779;@ EaWrite: Write r1 into '-(a0)' (address in r11):
33780  mov r1,r1,lsr #16
33781  add lr,pc,#4
33782  mov r0,r11
33783  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
33784
33785  ldrh r8,[r4],#2 ;@ Fetch next opcode
33786  subs r5,r5,#14 ;@ Subtract cycles
33787  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33788  b CycloneEnd
33789
33790;@ ---------- [5e68] addq.w #7, ($3333,a0) uses Op5e68 ----------
33791Op5e68:
33792;@ EaCalc : Get '($3333,a0)' into r11:
33793  ldrsh r0,[r4],#2 ;@ Fetch offset
33794  and r2,r8,#0x000f
33795  ldr r2,[r7,r2,lsl #2]
33796  add r11,r0,r2 ;@ Add on offset
33797;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
33798  add lr,pc,#4
33799  mov r0,r11
33800  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
33801
33802  and r2,r8,#0x0e00 ;@ Get quick value
33803
33804  mov r0,r0,asl #16
33805
33806  adds r1,r0,r2,lsl #7
33807  mrs r10,cpsr ;@ r10=flags
33808  str r10,[r7,#0x4c] ;@ Save X bit
33809
33810;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
33811  mov r1,r1,lsr #16
33812  add lr,pc,#4
33813  mov r0,r11
33814  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
33815
33816  ldrh r8,[r4],#2 ;@ Fetch next opcode
33817  subs r5,r5,#16 ;@ Subtract cycles
33818  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33819  b CycloneEnd
33820
33821;@ ---------- [5e70] addq.w #7, ($33,a0,d3.w*2) uses Op5e70 ----------
33822Op5e70:
33823;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
33824;@ Get extension word into r3:
33825  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
33826  mov r2,r3,lsr #10
33827  tst r3,#0x0800 ;@ Is Rn Word or Long
33828  and r2,r2,#0x3c ;@ r2=Index of Rn
33829  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
33830  ldrne   r2,[r7,r2] ;@ r2=Rn.l
33831  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
33832  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
33833  and r2,r8,#0x000f
33834  orr r2,r2,#0x8 ;@ A0-7
33835  ldr r2,[r7,r2,lsl #2]
33836  add r11,r2,r3 ;@ r11=Disp+An+Rn
33837;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
33838  add lr,pc,#4
33839  mov r0,r11
33840  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
33841
33842  and r2,r8,#0x0e00 ;@ Get quick value
33843
33844  mov r0,r0,asl #16
33845
33846  adds r1,r0,r2,lsl #7
33847  mrs r10,cpsr ;@ r10=flags
33848  str r10,[r7,#0x4c] ;@ Save X bit
33849
33850;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
33851  mov r1,r1,lsr #16
33852  add lr,pc,#4
33853  mov r0,r11
33854  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
33855
33856  ldrh r8,[r4],#2 ;@ Fetch next opcode
33857  subs r5,r5,#18 ;@ Subtract cycles
33858  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33859  b CycloneEnd
33860
33861;@ ---------- [5e78] addq.w #7, $3333.w uses Op5e78 ----------
33862Op5e78:
33863;@ EaCalc : Get '$3333.w' into r11:
33864  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
33865;@ EaRead : Read '$3333.w' (address in r11) into r0:
33866  add lr,pc,#4
33867  mov r0,r11
33868  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
33869
33870  and r2,r8,#0x0e00 ;@ Get quick value
33871
33872  mov r0,r0,asl #16
33873
33874  adds r1,r0,r2,lsl #7
33875  mrs r10,cpsr ;@ r10=flags
33876  str r10,[r7,#0x4c] ;@ Save X bit
33877
33878;@ EaWrite: Write r1 into '$3333.w' (address in r11):
33879  mov r1,r1,lsr #16
33880  add lr,pc,#4
33881  mov r0,r11
33882  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
33883
33884  ldrh r8,[r4],#2 ;@ Fetch next opcode
33885  subs r5,r5,#16 ;@ Subtract cycles
33886  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33887  b CycloneEnd
33888
33889;@ ---------- [5e79] addq.w #7, $33333333.l uses Op5e79 ----------
33890Op5e79:
33891;@ EaCalc : Get '$33333333.l' into r11:
33892  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
33893  ldrh r0,[r4],#2
33894  orr r11,r0,r2,lsl #16
33895;@ EaRead : Read '$33333333.l' (address in r11) into r0:
33896  add lr,pc,#4
33897  mov r0,r11
33898  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
33899
33900  and r2,r8,#0x0e00 ;@ Get quick value
33901
33902  mov r0,r0,asl #16
33903
33904  adds r1,r0,r2,lsl #7
33905  mrs r10,cpsr ;@ r10=flags
33906  str r10,[r7,#0x4c] ;@ Save X bit
33907
33908;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
33909  mov r1,r1,lsr #16
33910  add lr,pc,#4
33911  mov r0,r11
33912  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
33913
33914  ldrh r8,[r4],#2 ;@ Fetch next opcode
33915  subs r5,r5,#20 ;@ Subtract cycles
33916  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33917  b CycloneEnd
33918
33919;@ ---------- [5e80] addq.l #7, d0 uses Op5e80 ----------
33920Op5e80:
33921;@ EaCalc : Get register index into r11:
33922  and r11,r8,#0x000f
33923;@ EaRead : Read register[r11] into r0:
33924  ldr r0,[r7,r11,lsl #2]
33925
33926  and r2,r8,#0x0e00 ;@ Get quick value
33927
33928  adds r1,r0,r2,lsr #9
33929  mrs r10,cpsr ;@ r10=flags
33930  str r10,[r7,#0x4c] ;@ Save X bit
33931
33932;@ EaWrite: r1 into register[r11]:
33933  str r1,[r7,r11,lsl #2]
33934
33935  ldrh r8,[r4],#2 ;@ Fetch next opcode
33936  subs r5,r5,#8 ;@ Subtract cycles
33937  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33938  b CycloneEnd
33939
33940;@ ---------- [5e88] addq.l #7, a0 uses Op5e88 ----------
33941Op5e88:
33942;@ EaCalc : Get register index into r11:
33943  and r11,r8,#0x000f
33944;@ EaRead : Read register[r11] into r0:
33945  ldr r0,[r7,r11,lsl #2]
33946
33947  and r2,r8,#0x0e00 ;@ Get quick value
33948
33949  adds r1,r0,r2,lsr #9
33950
33951;@ EaWrite: r1 into register[r11]:
33952  str r1,[r7,r11,lsl #2]
33953
33954  ldrh r8,[r4],#2 ;@ Fetch next opcode
33955  subs r5,r5,#8 ;@ Subtract cycles
33956  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33957  b CycloneEnd
33958
33959;@ ---------- [5e90] addq.l #7, (a0) uses Op5e90 ----------
33960Op5e90:
33961;@ EaCalc : Get '(a0)' into r11:
33962  and r2,r8,#0x000f
33963  orr r2,r2,#0x8 ;@ A0-7
33964  ldr r11,[r7,r2,lsl #2]
33965;@ EaRead : Read '(a0)' (address in r11) into r0:
33966  add lr,pc,#4
33967  mov r0,r11
33968  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
33969
33970  and r2,r8,#0x0e00 ;@ Get quick value
33971
33972  adds r1,r0,r2,lsr #9
33973  mrs r10,cpsr ;@ r10=flags
33974  str r10,[r7,#0x4c] ;@ Save X bit
33975
33976;@ EaWrite: Write r1 into '(a0)' (address in r11):
33977  add lr,pc,#4
33978  mov r0,r11
33979  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
33980
33981  ldrh r8,[r4],#2 ;@ Fetch next opcode
33982  subs r5,r5,#20 ;@ Subtract cycles
33983  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
33984  b CycloneEnd
33985
33986;@ ---------- [5e98] addq.l #7, (a0)+ uses Op5e98 ----------
33987Op5e98:
33988;@ EaCalc : Get '(a0)+' into r11:
33989  and r2,r8,#0x000f
33990  ldr r11,[r7,r2,lsl #2]
33991  add r3,r11,#4 ;@ Post-increment An
33992  str r3,[r7,r2,lsl #2]
33993;@ EaRead : Read '(a0)+' (address in r11) into r0:
33994  add lr,pc,#4
33995  mov r0,r11
33996  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
33997
33998  and r2,r8,#0x0e00 ;@ Get quick value
33999
34000  adds r1,r0,r2,lsr #9
34001  mrs r10,cpsr ;@ r10=flags
34002  str r10,[r7,#0x4c] ;@ Save X bit
34003
34004;@ EaWrite: Write r1 into '(a0)+' (address in r11):
34005  add lr,pc,#4
34006  mov r0,r11
34007  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
34008
34009  ldrh r8,[r4],#2 ;@ Fetch next opcode
34010  subs r5,r5,#20 ;@ Subtract cycles
34011  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34012  b CycloneEnd
34013
34014;@ ---------- [5ea0] addq.l #7, -(a0) uses Op5ea0 ----------
34015Op5ea0:
34016;@ EaCalc : Get '-(a0)' into r11:
34017  and r2,r8,#0x000f
34018  orr r2,r2,#0x8 ;@ A0-7
34019  ldr r11,[r7,r2,lsl #2]
34020  sub r11,r11,#4 ;@ Pre-decrement An
34021  str r11,[r7,r2,lsl #2]
34022;@ EaRead : Read '-(a0)' (address in r11) into r0:
34023  add lr,pc,#4
34024  mov r0,r11
34025  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
34026
34027  and r2,r8,#0x0e00 ;@ Get quick value
34028
34029  adds r1,r0,r2,lsr #9
34030  mrs r10,cpsr ;@ r10=flags
34031  str r10,[r7,#0x4c] ;@ Save X bit
34032
34033;@ EaWrite: Write r1 into '-(a0)' (address in r11):
34034  add lr,pc,#4
34035  mov r0,r11
34036  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
34037
34038  ldrh r8,[r4],#2 ;@ Fetch next opcode
34039  subs r5,r5,#22 ;@ Subtract cycles
34040  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34041  b CycloneEnd
34042
34043;@ ---------- [5ea8] addq.l #7, ($3333,a0) uses Op5ea8 ----------
34044Op5ea8:
34045;@ EaCalc : Get '($3333,a0)' into r11:
34046  ldrsh r0,[r4],#2 ;@ Fetch offset
34047  and r2,r8,#0x000f
34048  ldr r2,[r7,r2,lsl #2]
34049  add r11,r0,r2 ;@ Add on offset
34050;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
34051  add lr,pc,#4
34052  mov r0,r11
34053  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
34054
34055  and r2,r8,#0x0e00 ;@ Get quick value
34056
34057  adds r1,r0,r2,lsr #9
34058  mrs r10,cpsr ;@ r10=flags
34059  str r10,[r7,#0x4c] ;@ Save X bit
34060
34061;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
34062  add lr,pc,#4
34063  mov r0,r11
34064  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
34065
34066  ldrh r8,[r4],#2 ;@ Fetch next opcode
34067  subs r5,r5,#24 ;@ Subtract cycles
34068  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34069  b CycloneEnd
34070
34071;@ ---------- [5eb0] addq.l #7, ($33,a0,d3.w*2) uses Op5eb0 ----------
34072Op5eb0:
34073;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
34074;@ Get extension word into r3:
34075  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
34076  mov r2,r3,lsr #10
34077  tst r3,#0x0800 ;@ Is Rn Word or Long
34078  and r2,r2,#0x3c ;@ r2=Index of Rn
34079  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
34080  ldrne   r2,[r7,r2] ;@ r2=Rn.l
34081  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
34082  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
34083  and r2,r8,#0x000f
34084  orr r2,r2,#0x8 ;@ A0-7
34085  ldr r2,[r7,r2,lsl #2]
34086  add r11,r2,r3 ;@ r11=Disp+An+Rn
34087;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
34088  add lr,pc,#4
34089  mov r0,r11
34090  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
34091
34092  and r2,r8,#0x0e00 ;@ Get quick value
34093
34094  adds r1,r0,r2,lsr #9
34095  mrs r10,cpsr ;@ r10=flags
34096  str r10,[r7,#0x4c] ;@ Save X bit
34097
34098;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
34099  add lr,pc,#4
34100  mov r0,r11
34101  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
34102
34103  ldrh r8,[r4],#2 ;@ Fetch next opcode
34104  subs r5,r5,#26 ;@ Subtract cycles
34105  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34106  b CycloneEnd
34107
34108;@ ---------- [5eb8] addq.l #7, $3333.w uses Op5eb8 ----------
34109Op5eb8:
34110;@ EaCalc : Get '$3333.w' into r11:
34111  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
34112;@ EaRead : Read '$3333.w' (address in r11) into r0:
34113  add lr,pc,#4
34114  mov r0,r11
34115  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
34116
34117  and r2,r8,#0x0e00 ;@ Get quick value
34118
34119  adds r1,r0,r2,lsr #9
34120  mrs r10,cpsr ;@ r10=flags
34121  str r10,[r7,#0x4c] ;@ Save X bit
34122
34123;@ EaWrite: Write r1 into '$3333.w' (address in r11):
34124  add lr,pc,#4
34125  mov r0,r11
34126  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
34127
34128  ldrh r8,[r4],#2 ;@ Fetch next opcode
34129  subs r5,r5,#24 ;@ Subtract cycles
34130  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34131  b CycloneEnd
34132
34133;@ ---------- [5eb9] addq.l #7, $33333333.l uses Op5eb9 ----------
34134Op5eb9:
34135;@ EaCalc : Get '$33333333.l' into r11:
34136  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
34137  ldrh r0,[r4],#2
34138  orr r11,r0,r2,lsl #16
34139;@ EaRead : Read '$33333333.l' (address in r11) into r0:
34140  add lr,pc,#4
34141  mov r0,r11
34142  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
34143
34144  and r2,r8,#0x0e00 ;@ Get quick value
34145
34146  adds r1,r0,r2,lsr #9
34147  mrs r10,cpsr ;@ r10=flags
34148  str r10,[r7,#0x4c] ;@ Save X bit
34149
34150;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
34151  add lr,pc,#4
34152  mov r0,r11
34153  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
34154
34155  ldrh r8,[r4],#2 ;@ Fetch next opcode
34156  subs r5,r5,#28 ;@ Subtract cycles
34157  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34158  b CycloneEnd
34159
34160;@ ---------- [5ec0] sgt d0 uses Op5ec0 ----------
34161Op5ec0:
34162  mov r1,#0
34163  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34164  orrs r0,r10,lsl #1
34165  mvnpl r1,#0
34166  subpl r5,r5,#2 ;@ Extra cycles
34167
34168;@ EaCalc : Get register index into r0:
34169  and r0,r8,#0x000f
34170;@ EaWrite: r1 into register[r0]:
34171  strb r1,[r7,r0,lsl #2]
34172
34173  ldrh r8,[r4],#2 ;@ Fetch next opcode
34174  subs r5,r5,#4 ;@ Subtract cycles
34175  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34176  b CycloneEnd
34177
34178;@ ---------- [5ec8] dbgt d0, 3335 uses Op5ec8 ----------
34179Op5ec8:
34180;@ Is the condition true?
34181  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34182  orrs r0,r10,lsl #1
34183;@ If so, don't dbra
34184  bpl DbraTrue
34185
34186;@ Decrement Dn.w
34187  and r1,r8,#0x0007
34188  mov r1,r1,lsl #2
34189  ldrsh r0,[r7,r1]
34190  strb r8,[r7,#0x45] ;@ not polling
34191  sub r0,r0,#1
34192  strh r0,[r7,r1]
34193
34194;@ Check if Dn.w is -1
34195  cmn r0,#1
34196  beq DbraMin1
34197
34198;@ Get Branch offset:
34199  ldrsh r0,[r4]
34200  add r0,r4,r0 ;@ r0 = New PC
34201;@ Check Memory Base+pc
34202  mov lr,pc
34203  ldr pc,[r7,#0x64] ;@ Call checkpc()
34204
34205  mov r4,r0
34206  tst r4,#1 ;@ address error?
34207  bne ExceptionAddressError_r_prg_r4
34208  ldrh r8,[r4],#2 ;@ Fetch next opcode
34209  subs r5,r5,#10 ;@ Subtract cycles
34210  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34211  b CycloneEnd
34212
34213;@ ---------- [5ed0] sgt (a0) uses Op5ed0 ----------
34214Op5ed0:
34215  mov r1,#0
34216  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34217  orrs r0,r10,lsl #1
34218  mvnpl r1,#0
34219
34220;@ EaCalc : Get '(a0)' into r0:
34221  and r2,r8,#0x000f
34222  orr r2,r2,#0x8 ;@ A0-7
34223  ldr r0,[r7,r2,lsl #2]
34224;@ EaWrite: Write r1 into '(a0)' (address in r0):
34225  and r1,r1,#0xff
34226  mov lr,pc
34227  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34228
34229  ldrh r8,[r4],#2 ;@ Fetch next opcode
34230  subs r5,r5,#12 ;@ Subtract cycles
34231  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34232  b CycloneEnd
34233
34234;@ ---------- [5ed8] sgt (a0)+ uses Op5ed8 ----------
34235Op5ed8:
34236  mov r1,#0
34237  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34238  orrs r0,r10,lsl #1
34239  mvnpl r1,#0
34240
34241;@ EaCalc : Get '(a0)+' into r0:
34242  and r2,r8,#0x000f
34243  ldr r0,[r7,r2,lsl #2]
34244  add r3,r0,#1 ;@ Post-increment An
34245  str r3,[r7,r2,lsl #2]
34246;@ EaWrite: Write r1 into '(a0)+' (address in r0):
34247  and r1,r1,#0xff
34248  mov lr,pc
34249  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34250
34251  ldrh r8,[r4],#2 ;@ Fetch next opcode
34252  subs r5,r5,#12 ;@ Subtract cycles
34253  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34254  b CycloneEnd
34255
34256;@ ---------- [5edf] sgt (a7)+ uses Op5edf ----------
34257Op5edf:
34258  mov r1,#0
34259  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34260  orrs r0,r10,lsl #1
34261  mvnpl r1,#0
34262
34263;@ EaCalc : Get '(a7)+' into r0:
34264  ldr r0,[r7,#0x3c] ;@ A7
34265  add r3,r0,#2 ;@ Post-increment An
34266  str r3,[r7,#0x3c] ;@ A7
34267;@ EaWrite: Write r1 into '(a7)+' (address in r0):
34268  and r1,r1,#0xff
34269  mov lr,pc
34270  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34271
34272  ldrh r8,[r4],#2 ;@ Fetch next opcode
34273  subs r5,r5,#12 ;@ Subtract cycles
34274  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34275  b CycloneEnd
34276
34277;@ ---------- [5ee0] sgt -(a0) uses Op5ee0 ----------
34278Op5ee0:
34279  mov r1,#0
34280  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34281  orrs r0,r10,lsl #1
34282  mvnpl r1,#0
34283
34284;@ EaCalc : Get '-(a0)' into r0:
34285  and r2,r8,#0x000f
34286  orr r2,r2,#0x8 ;@ A0-7
34287  ldr r0,[r7,r2,lsl #2]
34288  sub r0,r0,#1 ;@ Pre-decrement An
34289  str r0,[r7,r2,lsl #2]
34290;@ EaWrite: Write r1 into '-(a0)' (address in r0):
34291  and r1,r1,#0xff
34292  mov lr,pc
34293  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34294
34295  ldrh r8,[r4],#2 ;@ Fetch next opcode
34296  subs r5,r5,#14 ;@ Subtract cycles
34297  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34298  b CycloneEnd
34299
34300;@ ---------- [5ee7] sgt -(a7) uses Op5ee7 ----------
34301Op5ee7:
34302  mov r1,#0
34303  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34304  orrs r0,r10,lsl #1
34305  mvnpl r1,#0
34306
34307;@ EaCalc : Get '-(a7)' into r0:
34308  ldr r0,[r7,#0x3c] ;@ A7
34309  sub r0,r0,#2 ;@ Pre-decrement An
34310  str r0,[r7,#0x3c] ;@ A7
34311;@ EaWrite: Write r1 into '-(a7)' (address in r0):
34312  and r1,r1,#0xff
34313  mov lr,pc
34314  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34315
34316  ldrh r8,[r4],#2 ;@ Fetch next opcode
34317  subs r5,r5,#14 ;@ Subtract cycles
34318  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34319  b CycloneEnd
34320
34321;@ ---------- [5ee8] sgt ($3333,a0) uses Op5ee8 ----------
34322Op5ee8:
34323  mov r1,#0
34324  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34325  orrs r0,r10,lsl #1
34326  mvnpl r1,#0
34327
34328;@ EaCalc : Get '($3333,a0)' into r0:
34329  ldrsh r0,[r4],#2 ;@ Fetch offset
34330  and r2,r8,#0x000f
34331  ldr r2,[r7,r2,lsl #2]
34332  add r0,r0,r2 ;@ Add on offset
34333;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
34334  and r1,r1,#0xff
34335  mov lr,pc
34336  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34337
34338  ldrh r8,[r4],#2 ;@ Fetch next opcode
34339  subs r5,r5,#16 ;@ Subtract cycles
34340  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34341  b CycloneEnd
34342
34343;@ ---------- [5ef0] sgt ($33,a0,d3.w*2) uses Op5ef0 ----------
34344Op5ef0:
34345  mov r1,#0
34346  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34347  orrs r0,r10,lsl #1
34348  mvnpl r1,#0
34349
34350;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
34351;@ Get extension word into r3:
34352  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
34353  mov r2,r3,lsr #10
34354  tst r3,#0x0800 ;@ Is Rn Word or Long
34355  and r2,r2,#0x3c ;@ r2=Index of Rn
34356  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
34357  ldrne   r2,[r7,r2] ;@ r2=Rn.l
34358  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
34359  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
34360  and r2,r8,#0x000f
34361  orr r2,r2,#0x8 ;@ A0-7
34362  ldr r2,[r7,r2,lsl #2]
34363  add r0,r2,r3 ;@ r0=Disp+An+Rn
34364;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
34365  and r1,r1,#0xff
34366  mov lr,pc
34367  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34368
34369  ldrh r8,[r4],#2 ;@ Fetch next opcode
34370  subs r5,r5,#18 ;@ Subtract cycles
34371  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34372  b CycloneEnd
34373
34374;@ ---------- [5ef8] sgt $3333.w uses Op5ef8 ----------
34375Op5ef8:
34376  mov r1,#0
34377  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34378  orrs r0,r10,lsl #1
34379  mvnpl r1,#0
34380
34381;@ EaCalc : Get '$3333.w' into r0:
34382  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
34383;@ EaWrite: Write r1 into '$3333.w' (address in r0):
34384  and r1,r1,#0xff
34385  mov lr,pc
34386  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34387
34388  ldrh r8,[r4],#2 ;@ Fetch next opcode
34389  subs r5,r5,#16 ;@ Subtract cycles
34390  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34391  b CycloneEnd
34392
34393;@ ---------- [5ef9] sgt $33333333.l uses Op5ef9 ----------
34394Op5ef9:
34395  mov r1,#0
34396  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
34397  orrs r0,r10,lsl #1
34398  mvnpl r1,#0
34399
34400;@ EaCalc : Get '$33333333.l' into r0:
34401  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
34402  ldrh r0,[r4],#2
34403  orr r0,r0,r2,lsl #16
34404;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
34405  and r1,r1,#0xff
34406  mov lr,pc
34407  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34408
34409  ldrh r8,[r4],#2 ;@ Fetch next opcode
34410  subs r5,r5,#20 ;@ Subtract cycles
34411  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34412  b CycloneEnd
34413
34414;@ ---------- [5f00] subq.b #7, d0 uses Op5f00 ----------
34415Op5f00:
34416;@ EaCalc : Get register index into r11:
34417  and r11,r8,#0x000f
34418;@ EaRead : Read register[r11] into r0:
34419  ldr r0,[r7,r11,lsl #2]
34420
34421  and r2,r8,#0x0e00 ;@ Get quick value
34422
34423  mov r0,r0,asl #24
34424
34425  subs r1,r0,r2,lsl #15
34426  mrs r10,cpsr ;@ r10=flags
34427  eor r10,r10,#0x20000000 ;@ Invert carry
34428  str r10,[r7,#0x4c] ;@ Save X bit
34429
34430;@ EaWrite: r1 into register[r11]:
34431  mov r1,r1,lsr #24
34432  strb r1,[r7,r11,lsl #2]
34433
34434  ldrh r8,[r4],#2 ;@ Fetch next opcode
34435  subs r5,r5,#4 ;@ Subtract cycles
34436  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34437  b CycloneEnd
34438
34439;@ ---------- [5f10] subq.b #7, (a0) uses Op5f10 ----------
34440Op5f10:
34441;@ EaCalc : Get '(a0)' into r11:
34442  and r2,r8,#0x000f
34443  orr r2,r2,#0x8 ;@ A0-7
34444  ldr r11,[r7,r2,lsl #2]
34445;@ EaRead : Read '(a0)' (address in r11) into r0:
34446  add lr,pc,#4
34447  mov r0,r11
34448  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
34449
34450  and r2,r8,#0x0e00 ;@ Get quick value
34451
34452  mov r0,r0,asl #24
34453
34454  subs r1,r0,r2,lsl #15
34455  mrs r10,cpsr ;@ r10=flags
34456  eor r10,r10,#0x20000000 ;@ Invert carry
34457  str r10,[r7,#0x4c] ;@ Save X bit
34458
34459;@ EaWrite: Write r1 into '(a0)' (address in r11):
34460  mov r1,r1,lsr #24
34461  add lr,pc,#4
34462  mov r0,r11
34463  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34464
34465  ldrh r8,[r4],#2 ;@ Fetch next opcode
34466  subs r5,r5,#12 ;@ Subtract cycles
34467  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34468  b CycloneEnd
34469
34470;@ ---------- [5f18] subq.b #7, (a0)+ uses Op5f18 ----------
34471Op5f18:
34472;@ EaCalc : Get '(a0)+' into r11:
34473  and r2,r8,#0x000f
34474  ldr r11,[r7,r2,lsl #2]
34475  add r3,r11,#1 ;@ Post-increment An
34476  str r3,[r7,r2,lsl #2]
34477;@ EaRead : Read '(a0)+' (address in r11) into r0:
34478  add lr,pc,#4
34479  mov r0,r11
34480  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
34481
34482  and r2,r8,#0x0e00 ;@ Get quick value
34483
34484  mov r0,r0,asl #24
34485
34486  subs r1,r0,r2,lsl #15
34487  mrs r10,cpsr ;@ r10=flags
34488  eor r10,r10,#0x20000000 ;@ Invert carry
34489  str r10,[r7,#0x4c] ;@ Save X bit
34490
34491;@ EaWrite: Write r1 into '(a0)+' (address in r11):
34492  mov r1,r1,lsr #24
34493  add lr,pc,#4
34494  mov r0,r11
34495  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34496
34497  ldrh r8,[r4],#2 ;@ Fetch next opcode
34498  subs r5,r5,#12 ;@ Subtract cycles
34499  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34500  b CycloneEnd
34501
34502;@ ---------- [5f1f] subq.b #7, (a7)+ uses Op5f1f ----------
34503Op5f1f:
34504;@ EaCalc : Get '(a7)+' into r11:
34505  ldr r11,[r7,#0x3c] ;@ A7
34506  add r3,r11,#2 ;@ Post-increment An
34507  str r3,[r7,#0x3c] ;@ A7
34508;@ EaRead : Read '(a7)+' (address in r11) into r0:
34509  add lr,pc,#4
34510  mov r0,r11
34511  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
34512
34513  and r2,r8,#0x0e00 ;@ Get quick value
34514
34515  mov r0,r0,asl #24
34516
34517  subs r1,r0,r2,lsl #15
34518  mrs r10,cpsr ;@ r10=flags
34519  eor r10,r10,#0x20000000 ;@ Invert carry
34520  str r10,[r7,#0x4c] ;@ Save X bit
34521
34522;@ EaWrite: Write r1 into '(a7)+' (address in r11):
34523  mov r1,r1,lsr #24
34524  add lr,pc,#4
34525  mov r0,r11
34526  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34527
34528  ldrh r8,[r4],#2 ;@ Fetch next opcode
34529  subs r5,r5,#12 ;@ Subtract cycles
34530  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34531  b CycloneEnd
34532
34533;@ ---------- [5f20] subq.b #7, -(a0) uses Op5f20 ----------
34534Op5f20:
34535;@ EaCalc : Get '-(a0)' into r11:
34536  and r2,r8,#0x000f
34537  orr r2,r2,#0x8 ;@ A0-7
34538  ldr r11,[r7,r2,lsl #2]
34539  sub r11,r11,#1 ;@ Pre-decrement An
34540  str r11,[r7,r2,lsl #2]
34541;@ EaRead : Read '-(a0)' (address in r11) into r0:
34542  add lr,pc,#4
34543  mov r0,r11
34544  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
34545
34546  and r2,r8,#0x0e00 ;@ Get quick value
34547
34548  mov r0,r0,asl #24
34549
34550  subs r1,r0,r2,lsl #15
34551  mrs r10,cpsr ;@ r10=flags
34552  eor r10,r10,#0x20000000 ;@ Invert carry
34553  str r10,[r7,#0x4c] ;@ Save X bit
34554
34555;@ EaWrite: Write r1 into '-(a0)' (address in r11):
34556  mov r1,r1,lsr #24
34557  add lr,pc,#4
34558  mov r0,r11
34559  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34560
34561  ldrh r8,[r4],#2 ;@ Fetch next opcode
34562  subs r5,r5,#14 ;@ Subtract cycles
34563  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34564  b CycloneEnd
34565
34566;@ ---------- [5f27] subq.b #7, -(a7) uses Op5f27 ----------
34567Op5f27:
34568;@ EaCalc : Get '-(a7)' into r11:
34569  ldr r11,[r7,#0x3c] ;@ A7
34570  sub r11,r11,#2 ;@ Pre-decrement An
34571  str r11,[r7,#0x3c] ;@ A7
34572;@ EaRead : Read '-(a7)' (address in r11) into r0:
34573  add lr,pc,#4
34574  mov r0,r11
34575  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
34576
34577  and r2,r8,#0x0e00 ;@ Get quick value
34578
34579  mov r0,r0,asl #24
34580
34581  subs r1,r0,r2,lsl #15
34582  mrs r10,cpsr ;@ r10=flags
34583  eor r10,r10,#0x20000000 ;@ Invert carry
34584  str r10,[r7,#0x4c] ;@ Save X bit
34585
34586;@ EaWrite: Write r1 into '-(a7)' (address in r11):
34587  mov r1,r1,lsr #24
34588  add lr,pc,#4
34589  mov r0,r11
34590  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34591
34592  ldrh r8,[r4],#2 ;@ Fetch next opcode
34593  subs r5,r5,#14 ;@ Subtract cycles
34594  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34595  b CycloneEnd
34596
34597;@ ---------- [5f28] subq.b #7, ($3333,a0) uses Op5f28 ----------
34598Op5f28:
34599;@ EaCalc : Get '($3333,a0)' into r11:
34600  ldrsh r0,[r4],#2 ;@ Fetch offset
34601  and r2,r8,#0x000f
34602  ldr r2,[r7,r2,lsl #2]
34603  add r11,r0,r2 ;@ Add on offset
34604;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
34605  add lr,pc,#4
34606  mov r0,r11
34607  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
34608
34609  and r2,r8,#0x0e00 ;@ Get quick value
34610
34611  mov r0,r0,asl #24
34612
34613  subs r1,r0,r2,lsl #15
34614  mrs r10,cpsr ;@ r10=flags
34615  eor r10,r10,#0x20000000 ;@ Invert carry
34616  str r10,[r7,#0x4c] ;@ Save X bit
34617
34618;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
34619  mov r1,r1,lsr #24
34620  add lr,pc,#4
34621  mov r0,r11
34622  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34623
34624  ldrh r8,[r4],#2 ;@ Fetch next opcode
34625  subs r5,r5,#16 ;@ Subtract cycles
34626  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34627  b CycloneEnd
34628
34629;@ ---------- [5f30] subq.b #7, ($33,a0,d3.w*2) uses Op5f30 ----------
34630Op5f30:
34631;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
34632;@ Get extension word into r3:
34633  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
34634  mov r2,r3,lsr #10
34635  tst r3,#0x0800 ;@ Is Rn Word or Long
34636  and r2,r2,#0x3c ;@ r2=Index of Rn
34637  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
34638  ldrne   r2,[r7,r2] ;@ r2=Rn.l
34639  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
34640  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
34641  and r2,r8,#0x000f
34642  orr r2,r2,#0x8 ;@ A0-7
34643  ldr r2,[r7,r2,lsl #2]
34644  add r11,r2,r3 ;@ r11=Disp+An+Rn
34645;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
34646  add lr,pc,#4
34647  mov r0,r11
34648  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
34649
34650  and r2,r8,#0x0e00 ;@ Get quick value
34651
34652  mov r0,r0,asl #24
34653
34654  subs r1,r0,r2,lsl #15
34655  mrs r10,cpsr ;@ r10=flags
34656  eor r10,r10,#0x20000000 ;@ Invert carry
34657  str r10,[r7,#0x4c] ;@ Save X bit
34658
34659;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
34660  mov r1,r1,lsr #24
34661  add lr,pc,#4
34662  mov r0,r11
34663  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34664
34665  ldrh r8,[r4],#2 ;@ Fetch next opcode
34666  subs r5,r5,#18 ;@ Subtract cycles
34667  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34668  b CycloneEnd
34669
34670;@ ---------- [5f38] subq.b #7, $3333.w uses Op5f38 ----------
34671Op5f38:
34672;@ EaCalc : Get '$3333.w' into r11:
34673  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
34674;@ EaRead : Read '$3333.w' (address in r11) into r0:
34675  add lr,pc,#4
34676  mov r0,r11
34677  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
34678
34679  and r2,r8,#0x0e00 ;@ Get quick value
34680
34681  mov r0,r0,asl #24
34682
34683  subs r1,r0,r2,lsl #15
34684  mrs r10,cpsr ;@ r10=flags
34685  eor r10,r10,#0x20000000 ;@ Invert carry
34686  str r10,[r7,#0x4c] ;@ Save X bit
34687
34688;@ EaWrite: Write r1 into '$3333.w' (address in r11):
34689  mov r1,r1,lsr #24
34690  add lr,pc,#4
34691  mov r0,r11
34692  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34693
34694  ldrh r8,[r4],#2 ;@ Fetch next opcode
34695  subs r5,r5,#16 ;@ Subtract cycles
34696  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34697  b CycloneEnd
34698
34699;@ ---------- [5f39] subq.b #7, $33333333.l uses Op5f39 ----------
34700Op5f39:
34701;@ EaCalc : Get '$33333333.l' into r11:
34702  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
34703  ldrh r0,[r4],#2
34704  orr r11,r0,r2,lsl #16
34705;@ EaRead : Read '$33333333.l' (address in r11) into r0:
34706  add lr,pc,#4
34707  mov r0,r11
34708  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
34709
34710  and r2,r8,#0x0e00 ;@ Get quick value
34711
34712  mov r0,r0,asl #24
34713
34714  subs r1,r0,r2,lsl #15
34715  mrs r10,cpsr ;@ r10=flags
34716  eor r10,r10,#0x20000000 ;@ Invert carry
34717  str r10,[r7,#0x4c] ;@ Save X bit
34718
34719;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
34720  mov r1,r1,lsr #24
34721  add lr,pc,#4
34722  mov r0,r11
34723  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
34724
34725  ldrh r8,[r4],#2 ;@ Fetch next opcode
34726  subs r5,r5,#20 ;@ Subtract cycles
34727  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34728  b CycloneEnd
34729
34730;@ ---------- [5f40] subq.w #7, d0 uses Op5f40 ----------
34731Op5f40:
34732;@ EaCalc : Get register index into r11:
34733  and r11,r8,#0x000f
34734  mov r11,r11,lsl #2
34735;@ EaRead : Read register[r11] into r0:
34736  ldr r0,[r7,r11]
34737
34738  and r2,r8,#0x0e00 ;@ Get quick value
34739
34740  mov r0,r0,asl #16
34741
34742  subs r1,r0,r2,lsl #7
34743  mrs r10,cpsr ;@ r10=flags
34744  eor r10,r10,#0x20000000 ;@ Invert carry
34745  str r10,[r7,#0x4c] ;@ Save X bit
34746
34747;@ EaWrite: r1 into register[r11]:
34748  mov r1,r1,lsr #16
34749  strh r1,[r7,r11]
34750
34751  ldrh r8,[r4],#2 ;@ Fetch next opcode
34752  subs r5,r5,#4 ;@ Subtract cycles
34753  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34754  b CycloneEnd
34755
34756;@ ---------- [5f48] subq.w #7, a0 uses Op5f48 ----------
34757Op5f48:
34758;@ EaCalc : Get register index into r11:
34759  and r11,r8,#0x000f
34760;@ EaRead : Read register[r11] into r0:
34761  ldr r0,[r7,r11,lsl #2]
34762
34763  and r2,r8,#0x0e00 ;@ Get quick value
34764
34765  subs r1,r0,r2,lsr #9
34766
34767;@ EaWrite: r1 into register[r11]:
34768  str r1,[r7,r11,lsl #2]
34769
34770  ldrh r8,[r4],#2 ;@ Fetch next opcode
34771  subs r5,r5,#8 ;@ Subtract cycles
34772  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34773  b CycloneEnd
34774
34775;@ ---------- [5f50] subq.w #7, (a0) uses Op5f50 ----------
34776Op5f50:
34777;@ EaCalc : Get '(a0)' into r11:
34778  and r2,r8,#0x000f
34779  orr r2,r2,#0x8 ;@ A0-7
34780  ldr r11,[r7,r2,lsl #2]
34781;@ EaRead : Read '(a0)' (address in r11) into r0:
34782  add lr,pc,#4
34783  mov r0,r11
34784  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
34785
34786  and r2,r8,#0x0e00 ;@ Get quick value
34787
34788  mov r0,r0,asl #16
34789
34790  subs r1,r0,r2,lsl #7
34791  mrs r10,cpsr ;@ r10=flags
34792  eor r10,r10,#0x20000000 ;@ Invert carry
34793  str r10,[r7,#0x4c] ;@ Save X bit
34794
34795;@ EaWrite: Write r1 into '(a0)' (address in r11):
34796  mov r1,r1,lsr #16
34797  add lr,pc,#4
34798  mov r0,r11
34799  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
34800
34801  ldrh r8,[r4],#2 ;@ Fetch next opcode
34802  subs r5,r5,#12 ;@ Subtract cycles
34803  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34804  b CycloneEnd
34805
34806;@ ---------- [5f58] subq.w #7, (a0)+ uses Op5f58 ----------
34807Op5f58:
34808;@ EaCalc : Get '(a0)+' into r11:
34809  and r2,r8,#0x000f
34810  ldr r11,[r7,r2,lsl #2]
34811  add r3,r11,#2 ;@ Post-increment An
34812  str r3,[r7,r2,lsl #2]
34813;@ EaRead : Read '(a0)+' (address in r11) into r0:
34814  add lr,pc,#4
34815  mov r0,r11
34816  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
34817
34818  and r2,r8,#0x0e00 ;@ Get quick value
34819
34820  mov r0,r0,asl #16
34821
34822  subs r1,r0,r2,lsl #7
34823  mrs r10,cpsr ;@ r10=flags
34824  eor r10,r10,#0x20000000 ;@ Invert carry
34825  str r10,[r7,#0x4c] ;@ Save X bit
34826
34827;@ EaWrite: Write r1 into '(a0)+' (address in r11):
34828  mov r1,r1,lsr #16
34829  add lr,pc,#4
34830  mov r0,r11
34831  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
34832
34833  ldrh r8,[r4],#2 ;@ Fetch next opcode
34834  subs r5,r5,#12 ;@ Subtract cycles
34835  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34836  b CycloneEnd
34837
34838;@ ---------- [5f60] subq.w #7, -(a0) uses Op5f60 ----------
34839Op5f60:
34840;@ EaCalc : Get '-(a0)' into r11:
34841  and r2,r8,#0x000f
34842  orr r2,r2,#0x8 ;@ A0-7
34843  ldr r11,[r7,r2,lsl #2]
34844  sub r11,r11,#2 ;@ Pre-decrement An
34845  str r11,[r7,r2,lsl #2]
34846;@ EaRead : Read '-(a0)' (address in r11) into r0:
34847  add lr,pc,#4
34848  mov r0,r11
34849  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
34850
34851  and r2,r8,#0x0e00 ;@ Get quick value
34852
34853  mov r0,r0,asl #16
34854
34855  subs r1,r0,r2,lsl #7
34856  mrs r10,cpsr ;@ r10=flags
34857  eor r10,r10,#0x20000000 ;@ Invert carry
34858  str r10,[r7,#0x4c] ;@ Save X bit
34859
34860;@ EaWrite: Write r1 into '-(a0)' (address in r11):
34861  mov r1,r1,lsr #16
34862  add lr,pc,#4
34863  mov r0,r11
34864  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
34865
34866  ldrh r8,[r4],#2 ;@ Fetch next opcode
34867  subs r5,r5,#14 ;@ Subtract cycles
34868  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34869  b CycloneEnd
34870
34871;@ ---------- [5f68] subq.w #7, ($3333,a0) uses Op5f68 ----------
34872Op5f68:
34873;@ EaCalc : Get '($3333,a0)' into r11:
34874  ldrsh r0,[r4],#2 ;@ Fetch offset
34875  and r2,r8,#0x000f
34876  ldr r2,[r7,r2,lsl #2]
34877  add r11,r0,r2 ;@ Add on offset
34878;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
34879  add lr,pc,#4
34880  mov r0,r11
34881  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
34882
34883  and r2,r8,#0x0e00 ;@ Get quick value
34884
34885  mov r0,r0,asl #16
34886
34887  subs r1,r0,r2,lsl #7
34888  mrs r10,cpsr ;@ r10=flags
34889  eor r10,r10,#0x20000000 ;@ Invert carry
34890  str r10,[r7,#0x4c] ;@ Save X bit
34891
34892;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
34893  mov r1,r1,lsr #16
34894  add lr,pc,#4
34895  mov r0,r11
34896  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
34897
34898  ldrh r8,[r4],#2 ;@ Fetch next opcode
34899  subs r5,r5,#16 ;@ Subtract cycles
34900  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34901  b CycloneEnd
34902
34903;@ ---------- [5f70] subq.w #7, ($33,a0,d3.w*2) uses Op5f70 ----------
34904Op5f70:
34905;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
34906;@ Get extension word into r3:
34907  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
34908  mov r2,r3,lsr #10
34909  tst r3,#0x0800 ;@ Is Rn Word or Long
34910  and r2,r2,#0x3c ;@ r2=Index of Rn
34911  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
34912  ldrne   r2,[r7,r2] ;@ r2=Rn.l
34913  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
34914  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
34915  and r2,r8,#0x000f
34916  orr r2,r2,#0x8 ;@ A0-7
34917  ldr r2,[r7,r2,lsl #2]
34918  add r11,r2,r3 ;@ r11=Disp+An+Rn
34919;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
34920  add lr,pc,#4
34921  mov r0,r11
34922  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
34923
34924  and r2,r8,#0x0e00 ;@ Get quick value
34925
34926  mov r0,r0,asl #16
34927
34928  subs r1,r0,r2,lsl #7
34929  mrs r10,cpsr ;@ r10=flags
34930  eor r10,r10,#0x20000000 ;@ Invert carry
34931  str r10,[r7,#0x4c] ;@ Save X bit
34932
34933;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
34934  mov r1,r1,lsr #16
34935  add lr,pc,#4
34936  mov r0,r11
34937  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
34938
34939  ldrh r8,[r4],#2 ;@ Fetch next opcode
34940  subs r5,r5,#18 ;@ Subtract cycles
34941  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34942  b CycloneEnd
34943
34944;@ ---------- [5f78] subq.w #7, $3333.w uses Op5f78 ----------
34945Op5f78:
34946;@ EaCalc : Get '$3333.w' into r11:
34947  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
34948;@ EaRead : Read '$3333.w' (address in r11) into r0:
34949  add lr,pc,#4
34950  mov r0,r11
34951  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
34952
34953  and r2,r8,#0x0e00 ;@ Get quick value
34954
34955  mov r0,r0,asl #16
34956
34957  subs r1,r0,r2,lsl #7
34958  mrs r10,cpsr ;@ r10=flags
34959  eor r10,r10,#0x20000000 ;@ Invert carry
34960  str r10,[r7,#0x4c] ;@ Save X bit
34961
34962;@ EaWrite: Write r1 into '$3333.w' (address in r11):
34963  mov r1,r1,lsr #16
34964  add lr,pc,#4
34965  mov r0,r11
34966  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
34967
34968  ldrh r8,[r4],#2 ;@ Fetch next opcode
34969  subs r5,r5,#16 ;@ Subtract cycles
34970  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
34971  b CycloneEnd
34972
34973;@ ---------- [5f79] subq.w #7, $33333333.l uses Op5f79 ----------
34974Op5f79:
34975;@ EaCalc : Get '$33333333.l' into r11:
34976  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
34977  ldrh r0,[r4],#2
34978  orr r11,r0,r2,lsl #16
34979;@ EaRead : Read '$33333333.l' (address in r11) into r0:
34980  add lr,pc,#4
34981  mov r0,r11
34982  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
34983
34984  and r2,r8,#0x0e00 ;@ Get quick value
34985
34986  mov r0,r0,asl #16
34987
34988  subs r1,r0,r2,lsl #7
34989  mrs r10,cpsr ;@ r10=flags
34990  eor r10,r10,#0x20000000 ;@ Invert carry
34991  str r10,[r7,#0x4c] ;@ Save X bit
34992
34993;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
34994  mov r1,r1,lsr #16
34995  add lr,pc,#4
34996  mov r0,r11
34997  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
34998
34999  ldrh r8,[r4],#2 ;@ Fetch next opcode
35000  subs r5,r5,#20 ;@ Subtract cycles
35001  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35002  b CycloneEnd
35003
35004;@ ---------- [5f80] subq.l #7, d0 uses Op5f80 ----------
35005Op5f80:
35006;@ EaCalc : Get register index into r11:
35007  and r11,r8,#0x000f
35008;@ EaRead : Read register[r11] into r0:
35009  ldr r0,[r7,r11,lsl #2]
35010
35011  and r2,r8,#0x0e00 ;@ Get quick value
35012
35013  subs r1,r0,r2,lsr #9
35014  mrs r10,cpsr ;@ r10=flags
35015  eor r10,r10,#0x20000000 ;@ Invert carry
35016  str r10,[r7,#0x4c] ;@ Save X bit
35017
35018;@ EaWrite: r1 into register[r11]:
35019  str r1,[r7,r11,lsl #2]
35020
35021  ldrh r8,[r4],#2 ;@ Fetch next opcode
35022  subs r5,r5,#8 ;@ Subtract cycles
35023  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35024  b CycloneEnd
35025
35026;@ ---------- [5f88] subq.l #7, a0 uses Op5f88 ----------
35027Op5f88:
35028;@ EaCalc : Get register index into r11:
35029  and r11,r8,#0x000f
35030;@ EaRead : Read register[r11] into r0:
35031  ldr r0,[r7,r11,lsl #2]
35032
35033  and r2,r8,#0x0e00 ;@ Get quick value
35034
35035  subs r1,r0,r2,lsr #9
35036
35037;@ EaWrite: r1 into register[r11]:
35038  str r1,[r7,r11,lsl #2]
35039
35040  ldrh r8,[r4],#2 ;@ Fetch next opcode
35041  subs r5,r5,#8 ;@ Subtract cycles
35042  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35043  b CycloneEnd
35044
35045;@ ---------- [5f90] subq.l #7, (a0) uses Op5f90 ----------
35046Op5f90:
35047;@ EaCalc : Get '(a0)' into r11:
35048  and r2,r8,#0x000f
35049  orr r2,r2,#0x8 ;@ A0-7
35050  ldr r11,[r7,r2,lsl #2]
35051;@ EaRead : Read '(a0)' (address in r11) into r0:
35052  add lr,pc,#4
35053  mov r0,r11
35054  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
35055
35056  and r2,r8,#0x0e00 ;@ Get quick value
35057
35058  subs r1,r0,r2,lsr #9
35059  mrs r10,cpsr ;@ r10=flags
35060  eor r10,r10,#0x20000000 ;@ Invert carry
35061  str r10,[r7,#0x4c] ;@ Save X bit
35062
35063;@ EaWrite: Write r1 into '(a0)' (address in r11):
35064  add lr,pc,#4
35065  mov r0,r11
35066  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
35067
35068  ldrh r8,[r4],#2 ;@ Fetch next opcode
35069  subs r5,r5,#20 ;@ Subtract cycles
35070  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35071  b CycloneEnd
35072
35073;@ ---------- [5f98] subq.l #7, (a0)+ uses Op5f98 ----------
35074Op5f98:
35075;@ EaCalc : Get '(a0)+' into r11:
35076  and r2,r8,#0x000f
35077  ldr r11,[r7,r2,lsl #2]
35078  add r3,r11,#4 ;@ Post-increment An
35079  str r3,[r7,r2,lsl #2]
35080;@ EaRead : Read '(a0)+' (address in r11) into r0:
35081  add lr,pc,#4
35082  mov r0,r11
35083  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
35084
35085  and r2,r8,#0x0e00 ;@ Get quick value
35086
35087  subs r1,r0,r2,lsr #9
35088  mrs r10,cpsr ;@ r10=flags
35089  eor r10,r10,#0x20000000 ;@ Invert carry
35090  str r10,[r7,#0x4c] ;@ Save X bit
35091
35092;@ EaWrite: Write r1 into '(a0)+' (address in r11):
35093  add lr,pc,#4
35094  mov r0,r11
35095  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
35096
35097  ldrh r8,[r4],#2 ;@ Fetch next opcode
35098  subs r5,r5,#20 ;@ Subtract cycles
35099  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35100  b CycloneEnd
35101
35102;@ ---------- [5fa0] subq.l #7, -(a0) uses Op5fa0 ----------
35103Op5fa0:
35104;@ EaCalc : Get '-(a0)' into r11:
35105  and r2,r8,#0x000f
35106  orr r2,r2,#0x8 ;@ A0-7
35107  ldr r11,[r7,r2,lsl #2]
35108  sub r11,r11,#4 ;@ Pre-decrement An
35109  str r11,[r7,r2,lsl #2]
35110;@ EaRead : Read '-(a0)' (address in r11) into r0:
35111  add lr,pc,#4
35112  mov r0,r11
35113  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
35114
35115  and r2,r8,#0x0e00 ;@ Get quick value
35116
35117  subs r1,r0,r2,lsr #9
35118  mrs r10,cpsr ;@ r10=flags
35119  eor r10,r10,#0x20000000 ;@ Invert carry
35120  str r10,[r7,#0x4c] ;@ Save X bit
35121
35122;@ EaWrite: Write r1 into '-(a0)' (address in r11):
35123  add lr,pc,#4
35124  mov r0,r11
35125  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
35126
35127  ldrh r8,[r4],#2 ;@ Fetch next opcode
35128  subs r5,r5,#22 ;@ Subtract cycles
35129  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35130  b CycloneEnd
35131
35132;@ ---------- [5fa8] subq.l #7, ($3333,a0) uses Op5fa8 ----------
35133Op5fa8:
35134;@ EaCalc : Get '($3333,a0)' into r11:
35135  ldrsh r0,[r4],#2 ;@ Fetch offset
35136  and r2,r8,#0x000f
35137  ldr r2,[r7,r2,lsl #2]
35138  add r11,r0,r2 ;@ Add on offset
35139;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
35140  add lr,pc,#4
35141  mov r0,r11
35142  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
35143
35144  and r2,r8,#0x0e00 ;@ Get quick value
35145
35146  subs r1,r0,r2,lsr #9
35147  mrs r10,cpsr ;@ r10=flags
35148  eor r10,r10,#0x20000000 ;@ Invert carry
35149  str r10,[r7,#0x4c] ;@ Save X bit
35150
35151;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
35152  add lr,pc,#4
35153  mov r0,r11
35154  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
35155
35156  ldrh r8,[r4],#2 ;@ Fetch next opcode
35157  subs r5,r5,#24 ;@ Subtract cycles
35158  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35159  b CycloneEnd
35160
35161;@ ---------- [5fb0] subq.l #7, ($33,a0,d3.w*2) uses Op5fb0 ----------
35162Op5fb0:
35163;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
35164;@ Get extension word into r3:
35165  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
35166  mov r2,r3,lsr #10
35167  tst r3,#0x0800 ;@ Is Rn Word or Long
35168  and r2,r2,#0x3c ;@ r2=Index of Rn
35169  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
35170  ldrne   r2,[r7,r2] ;@ r2=Rn.l
35171  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
35172  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
35173  and r2,r8,#0x000f
35174  orr r2,r2,#0x8 ;@ A0-7
35175  ldr r2,[r7,r2,lsl #2]
35176  add r11,r2,r3 ;@ r11=Disp+An+Rn
35177;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
35178  add lr,pc,#4
35179  mov r0,r11
35180  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
35181
35182  and r2,r8,#0x0e00 ;@ Get quick value
35183
35184  subs r1,r0,r2,lsr #9
35185  mrs r10,cpsr ;@ r10=flags
35186  eor r10,r10,#0x20000000 ;@ Invert carry
35187  str r10,[r7,#0x4c] ;@ Save X bit
35188
35189;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
35190  add lr,pc,#4
35191  mov r0,r11
35192  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
35193
35194  ldrh r8,[r4],#2 ;@ Fetch next opcode
35195  subs r5,r5,#26 ;@ Subtract cycles
35196  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35197  b CycloneEnd
35198
35199;@ ---------- [5fb8] subq.l #7, $3333.w uses Op5fb8 ----------
35200Op5fb8:
35201;@ EaCalc : Get '$3333.w' into r11:
35202  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
35203;@ EaRead : Read '$3333.w' (address in r11) into r0:
35204  add lr,pc,#4
35205  mov r0,r11
35206  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
35207
35208  and r2,r8,#0x0e00 ;@ Get quick value
35209
35210  subs r1,r0,r2,lsr #9
35211  mrs r10,cpsr ;@ r10=flags
35212  eor r10,r10,#0x20000000 ;@ Invert carry
35213  str r10,[r7,#0x4c] ;@ Save X bit
35214
35215;@ EaWrite: Write r1 into '$3333.w' (address in r11):
35216  add lr,pc,#4
35217  mov r0,r11
35218  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
35219
35220  ldrh r8,[r4],#2 ;@ Fetch next opcode
35221  subs r5,r5,#24 ;@ Subtract cycles
35222  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35223  b CycloneEnd
35224
35225;@ ---------- [5fb9] subq.l #7, $33333333.l uses Op5fb9 ----------
35226Op5fb9:
35227;@ EaCalc : Get '$33333333.l' into r11:
35228  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
35229  ldrh r0,[r4],#2
35230  orr r11,r0,r2,lsl #16
35231;@ EaRead : Read '$33333333.l' (address in r11) into r0:
35232  add lr,pc,#4
35233  mov r0,r11
35234  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
35235
35236  and r2,r8,#0x0e00 ;@ Get quick value
35237
35238  subs r1,r0,r2,lsr #9
35239  mrs r10,cpsr ;@ r10=flags
35240  eor r10,r10,#0x20000000 ;@ Invert carry
35241  str r10,[r7,#0x4c] ;@ Save X bit
35242
35243;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
35244  add lr,pc,#4
35245  mov r0,r11
35246  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
35247
35248  ldrh r8,[r4],#2 ;@ Fetch next opcode
35249  subs r5,r5,#28 ;@ Subtract cycles
35250  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35251  b CycloneEnd
35252
35253;@ ---------- [5fc0] sle d0 uses Op5fc0 ----------
35254Op5fc0:
35255  mov r1,#0
35256  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35257  orrs r0,r10,lsl #1
35258  mvnmi r1,#0
35259  submi r5,r5,#2 ;@ Extra cycles
35260
35261;@ EaCalc : Get register index into r0:
35262  and r0,r8,#0x000f
35263;@ EaWrite: r1 into register[r0]:
35264  strb r1,[r7,r0,lsl #2]
35265
35266  ldrh r8,[r4],#2 ;@ Fetch next opcode
35267  subs r5,r5,#4 ;@ Subtract cycles
35268  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35269  b CycloneEnd
35270
35271;@ ---------- [5fc8] dble d0, 3335 uses Op5fc8 ----------
35272Op5fc8:
35273;@ Is the condition true?
35274  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35275  orrs r0,r10,lsl #1
35276;@ If so, don't dbra
35277  bmi DbraTrue
35278
35279;@ Decrement Dn.w
35280  and r1,r8,#0x0007
35281  mov r1,r1,lsl #2
35282  ldrsh r0,[r7,r1]
35283  strb r8,[r7,#0x45] ;@ not polling
35284  sub r0,r0,#1
35285  strh r0,[r7,r1]
35286
35287;@ Check if Dn.w is -1
35288  cmn r0,#1
35289  beq DbraMin1
35290
35291;@ Get Branch offset:
35292  ldrsh r0,[r4]
35293  add r0,r4,r0 ;@ r0 = New PC
35294;@ Check Memory Base+pc
35295  mov lr,pc
35296  ldr pc,[r7,#0x64] ;@ Call checkpc()
35297
35298  mov r4,r0
35299  tst r4,#1 ;@ address error?
35300  bne ExceptionAddressError_r_prg_r4
35301  ldrh r8,[r4],#2 ;@ Fetch next opcode
35302  subs r5,r5,#10 ;@ Subtract cycles
35303  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35304  b CycloneEnd
35305
35306;@ ---------- [5fd0] sle (a0) uses Op5fd0 ----------
35307Op5fd0:
35308  mov r1,#0
35309  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35310  orrs r0,r10,lsl #1
35311  mvnmi r1,#0
35312
35313;@ EaCalc : Get '(a0)' into r0:
35314  and r2,r8,#0x000f
35315  orr r2,r2,#0x8 ;@ A0-7
35316  ldr r0,[r7,r2,lsl #2]
35317;@ EaWrite: Write r1 into '(a0)' (address in r0):
35318  and r1,r1,#0xff
35319  mov lr,pc
35320  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
35321
35322  ldrh r8,[r4],#2 ;@ Fetch next opcode
35323  subs r5,r5,#12 ;@ Subtract cycles
35324  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35325  b CycloneEnd
35326
35327;@ ---------- [5fd8] sle (a0)+ uses Op5fd8 ----------
35328Op5fd8:
35329  mov r1,#0
35330  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35331  orrs r0,r10,lsl #1
35332  mvnmi r1,#0
35333
35334;@ EaCalc : Get '(a0)+' into r0:
35335  and r2,r8,#0x000f
35336  ldr r0,[r7,r2,lsl #2]
35337  add r3,r0,#1 ;@ Post-increment An
35338  str r3,[r7,r2,lsl #2]
35339;@ EaWrite: Write r1 into '(a0)+' (address in r0):
35340  and r1,r1,#0xff
35341  mov lr,pc
35342  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
35343
35344  ldrh r8,[r4],#2 ;@ Fetch next opcode
35345  subs r5,r5,#12 ;@ Subtract cycles
35346  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35347  b CycloneEnd
35348
35349;@ ---------- [5fdf] sle (a7)+ uses Op5fdf ----------
35350Op5fdf:
35351  mov r1,#0
35352  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35353  orrs r0,r10,lsl #1
35354  mvnmi r1,#0
35355
35356;@ EaCalc : Get '(a7)+' into r0:
35357  ldr r0,[r7,#0x3c] ;@ A7
35358  add r3,r0,#2 ;@ Post-increment An
35359  str r3,[r7,#0x3c] ;@ A7
35360;@ EaWrite: Write r1 into '(a7)+' (address in r0):
35361  and r1,r1,#0xff
35362  mov lr,pc
35363  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
35364
35365  ldrh r8,[r4],#2 ;@ Fetch next opcode
35366  subs r5,r5,#12 ;@ Subtract cycles
35367  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35368  b CycloneEnd
35369
35370;@ ---------- [5fe0] sle -(a0) uses Op5fe0 ----------
35371Op5fe0:
35372  mov r1,#0
35373  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35374  orrs r0,r10,lsl #1
35375  mvnmi r1,#0
35376
35377;@ EaCalc : Get '-(a0)' into r0:
35378  and r2,r8,#0x000f
35379  orr r2,r2,#0x8 ;@ A0-7
35380  ldr r0,[r7,r2,lsl #2]
35381  sub r0,r0,#1 ;@ Pre-decrement An
35382  str r0,[r7,r2,lsl #2]
35383;@ EaWrite: Write r1 into '-(a0)' (address in r0):
35384  and r1,r1,#0xff
35385  mov lr,pc
35386  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
35387
35388  ldrh r8,[r4],#2 ;@ Fetch next opcode
35389  subs r5,r5,#14 ;@ Subtract cycles
35390  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35391  b CycloneEnd
35392
35393;@ ---------- [5fe7] sle -(a7) uses Op5fe7 ----------
35394Op5fe7:
35395  mov r1,#0
35396  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35397  orrs r0,r10,lsl #1
35398  mvnmi r1,#0
35399
35400;@ EaCalc : Get '-(a7)' into r0:
35401  ldr r0,[r7,#0x3c] ;@ A7
35402  sub r0,r0,#2 ;@ Pre-decrement An
35403  str r0,[r7,#0x3c] ;@ A7
35404;@ EaWrite: Write r1 into '-(a7)' (address in r0):
35405  and r1,r1,#0xff
35406  mov lr,pc
35407  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
35408
35409  ldrh r8,[r4],#2 ;@ Fetch next opcode
35410  subs r5,r5,#14 ;@ Subtract cycles
35411  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35412  b CycloneEnd
35413
35414;@ ---------- [5fe8] sle ($3333,a0) uses Op5fe8 ----------
35415Op5fe8:
35416  mov r1,#0
35417  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35418  orrs r0,r10,lsl #1
35419  mvnmi r1,#0
35420
35421;@ EaCalc : Get '($3333,a0)' into r0:
35422  ldrsh r0,[r4],#2 ;@ Fetch offset
35423  and r2,r8,#0x000f
35424  ldr r2,[r7,r2,lsl #2]
35425  add r0,r0,r2 ;@ Add on offset
35426;@ EaWrite: Write r1 into '($3333,a0)' (address in r0):
35427  and r1,r1,#0xff
35428  mov lr,pc
35429  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
35430
35431  ldrh r8,[r4],#2 ;@ Fetch next opcode
35432  subs r5,r5,#16 ;@ Subtract cycles
35433  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35434  b CycloneEnd
35435
35436;@ ---------- [5ff0] sle ($33,a0,d3.w*2) uses Op5ff0 ----------
35437Op5ff0:
35438  mov r1,#0
35439  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35440  orrs r0,r10,lsl #1
35441  mvnmi r1,#0
35442
35443;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
35444;@ Get extension word into r3:
35445  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
35446  mov r2,r3,lsr #10
35447  tst r3,#0x0800 ;@ Is Rn Word or Long
35448  and r2,r2,#0x3c ;@ r2=Index of Rn
35449  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
35450  ldrne   r2,[r7,r2] ;@ r2=Rn.l
35451  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
35452  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
35453  and r2,r8,#0x000f
35454  orr r2,r2,#0x8 ;@ A0-7
35455  ldr r2,[r7,r2,lsl #2]
35456  add r0,r2,r3 ;@ r0=Disp+An+Rn
35457;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r0):
35458  and r1,r1,#0xff
35459  mov lr,pc
35460  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
35461
35462  ldrh r8,[r4],#2 ;@ Fetch next opcode
35463  subs r5,r5,#18 ;@ Subtract cycles
35464  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35465  b CycloneEnd
35466
35467;@ ---------- [5ff8] sle $3333.w uses Op5ff8 ----------
35468Op5ff8:
35469  mov r1,#0
35470  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35471  orrs r0,r10,lsl #1
35472  mvnmi r1,#0
35473
35474;@ EaCalc : Get '$3333.w' into r0:
35475  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
35476;@ EaWrite: Write r1 into '$3333.w' (address in r0):
35477  and r1,r1,#0xff
35478  mov lr,pc
35479  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
35480
35481  ldrh r8,[r4],#2 ;@ Fetch next opcode
35482  subs r5,r5,#16 ;@ Subtract cycles
35483  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35484  b CycloneEnd
35485
35486;@ ---------- [5ff9] sle $33333333.l uses Op5ff9 ----------
35487Op5ff9:
35488  mov r1,#0
35489  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
35490  orrs r0,r10,lsl #1
35491  mvnmi r1,#0
35492
35493;@ EaCalc : Get '$33333333.l' into r0:
35494  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
35495  ldrh r0,[r4],#2
35496  orr r0,r0,r2,lsl #16
35497;@ EaWrite: Write r1 into '$33333333.l' (address in r0):
35498  and r1,r1,#0xff
35499  mov lr,pc
35500  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
35501
35502  ldrh r8,[r4],#2 ;@ Fetch next opcode
35503  subs r5,r5,#20 ;@ Subtract cycles
35504  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35505  b CycloneEnd
35506
35507;@ ---------- [6000] bra 3335 uses Op6000 ----------
35508Op6000:
35509  ldrsh r11,[r4] ;@ Fetch Branch offset
35510;@ Branch taken - Add on r0 to PC
35511  add r4,r4,r11 ;@ r4 = New PC
35512  tst r4,#1 ;@ address error?
35513  bne ExceptionAddressError_r_prg_r4
35514
35515  ldrh r8,[r4],#2 ;@ Fetch next opcode
35516  subs r5,r5,#10 ;@ Subtract cycles
35517  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35518  b CycloneEnd
35519
35520;@ ---------- [6003] bra 5 uses Op6003 ----------
35521Op6003:
35522  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35523
35524;@ Branch taken - Add on r0 to PC
35525  add r4,r4,r11,asr #24 ;@ r4 = New PC
35526  b ExceptionAddressError_r_prg_r4
35527
35528  ldrh r8,[r4],#2 ;@ Fetch next opcode
35529  subs r5,r5,#10 ;@ Subtract cycles
35530  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35531  b CycloneEnd
35532
35533;@ ---------- [6103] bsr 5 uses Op6103 ----------
35534Op6103:
35535  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35536
35537;@ Branch taken - Add on r0 to PC
35538;@ Bsr - remember old PC
35539  ldr r12,[r7,#0x60] ;@ Get Memory base
35540  ldr r2,[r7,#0x3c]
35541  sub r1,r4,r12 ;@ r1 = Old PC
35542
35543;@ Push r1 onto stack
35544  sub r0,r2,#4 ;@ Predecrement A7
35545  str r0,[r7,#0x3c] ;@ Save A7
35546  mov lr,pc
35547  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
35548
35549  add r4,r4,r11,asr #24 ;@ r4 = New PC
35550  b ExceptionAddressError_r_prg_r4
35551
35552  ldrh r8,[r4],#2 ;@ Fetch next opcode
35553  subs r5,r5,#18 ;@ Subtract cycles
35554  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35555  b CycloneEnd
35556
35557;@ ---------- [6200] bhi 3335 uses Op6200 ----------
35558Op6200:
35559  tst r10,#0x60000000 ;@ hi: !C && !Z
35560  bne BccDontBranch16
35561
35562  ldrsh r11,[r4] ;@ Fetch Branch offset
35563;@ Branch taken - Add on r0 to PC
35564  add r4,r4,r11 ;@ r4 = New PC
35565  tst r4,#1 ;@ address error?
35566  bne ExceptionAddressError_r_prg_r4
35567
35568  ldrh r8,[r4],#2 ;@ Fetch next opcode
35569  subs r5,r5,#10 ;@ Subtract cycles
35570  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35571  b CycloneEnd
35572
35573;@ ---------- [6202] bhi 4 uses Op6202 ----------
35574Op6202:
35575  tst r10,#0x60000000 ;@ hi: !C && !Z
35576  bne BccDontBranch8
35577
35578  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35579
35580;@ Branch taken - Add on r0 to PC
35581  add r4,r4,r11,asr #24 ;@ r4 = New PC
35582
35583  ldrh r8,[r4],#2 ;@ Fetch next opcode
35584  subs r5,r5,#10 ;@ Subtract cycles
35585  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35586  b CycloneEnd
35587
35588;@ ---------- [6203] bhi 5 uses Op6203 ----------
35589Op6203:
35590  tst r10,#0x60000000 ;@ hi: !C && !Z
35591  bne BccDontBranch8
35592
35593  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35594
35595;@ Branch taken - Add on r0 to PC
35596  add r4,r4,r11,asr #24 ;@ r4 = New PC
35597  b ExceptionAddressError_r_prg_r4
35598
35599  ldrh r8,[r4],#2 ;@ Fetch next opcode
35600  subs r5,r5,#10 ;@ Subtract cycles
35601  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35602  b CycloneEnd
35603
35604;@ ---------- [6300] bls 3335 uses Op6300 ----------
35605Op6300:
35606  tst r10,#0x60000000 ;@ ls: C || Z
35607  beq BccDontBranch16
35608
35609  ldrsh r11,[r4] ;@ Fetch Branch offset
35610;@ Branch taken - Add on r0 to PC
35611  add r4,r4,r11 ;@ r4 = New PC
35612  tst r4,#1 ;@ address error?
35613  bne ExceptionAddressError_r_prg_r4
35614
35615  ldrh r8,[r4],#2 ;@ Fetch next opcode
35616  subs r5,r5,#10 ;@ Subtract cycles
35617  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35618  b CycloneEnd
35619
35620;@ ---------- [6302] bls 4 uses Op6302 ----------
35621Op6302:
35622  tst r10,#0x60000000 ;@ ls: C || Z
35623  beq BccDontBranch8
35624
35625  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35626
35627;@ Branch taken - Add on r0 to PC
35628  add r4,r4,r11,asr #24 ;@ r4 = New PC
35629
35630  ldrh r8,[r4],#2 ;@ Fetch next opcode
35631  subs r5,r5,#10 ;@ Subtract cycles
35632  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35633  b CycloneEnd
35634
35635;@ ---------- [6303] bls 5 uses Op6303 ----------
35636Op6303:
35637  tst r10,#0x60000000 ;@ ls: C || Z
35638  beq BccDontBranch8
35639
35640  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35641
35642;@ Branch taken - Add on r0 to PC
35643  add r4,r4,r11,asr #24 ;@ r4 = New PC
35644  b ExceptionAddressError_r_prg_r4
35645
35646  ldrh r8,[r4],#2 ;@ Fetch next opcode
35647  subs r5,r5,#10 ;@ Subtract cycles
35648  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35649  b CycloneEnd
35650
35651;@ ---------- [6400] bcc 3335 uses Op6400 ----------
35652Op6400:
35653  tst r10,#0x20000000 ;@ cc: !C
35654  bne BccDontBranch16
35655
35656  ldrsh r11,[r4] ;@ Fetch Branch offset
35657;@ Branch taken - Add on r0 to PC
35658  add r4,r4,r11 ;@ r4 = New PC
35659  tst r4,#1 ;@ address error?
35660  bne ExceptionAddressError_r_prg_r4
35661
35662  ldrh r8,[r4],#2 ;@ Fetch next opcode
35663  subs r5,r5,#10 ;@ Subtract cycles
35664  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35665  b CycloneEnd
35666
35667;@ ---------- [6403] bcc 5 uses Op6403 ----------
35668Op6403:
35669  tst r10,#0x20000000 ;@ cc: !C
35670  bne BccDontBranch8
35671
35672  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35673
35674;@ Branch taken - Add on r0 to PC
35675  add r4,r4,r11,asr #24 ;@ r4 = New PC
35676  b ExceptionAddressError_r_prg_r4
35677
35678  ldrh r8,[r4],#2 ;@ Fetch next opcode
35679  subs r5,r5,#10 ;@ Subtract cycles
35680  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35681  b CycloneEnd
35682
35683;@ ---------- [6503] bcs 5 uses Op6503 ----------
35684Op6503:
35685  tst r10,#0x20000000 ;@ cs: C
35686  beq BccDontBranch8
35687
35688  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35689
35690;@ Branch taken - Add on r0 to PC
35691  add r4,r4,r11,asr #24 ;@ r4 = New PC
35692  b ExceptionAddressError_r_prg_r4
35693
35694  ldrh r8,[r4],#2 ;@ Fetch next opcode
35695  subs r5,r5,#10 ;@ Subtract cycles
35696  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35697  b CycloneEnd
35698
35699;@ ---------- [6600] bne 3335 uses Op6600 ----------
35700Op6600:
35701  tst r10,#0x40000000 ;@ ne: !Z
35702  bne BccDontBranch16
35703
35704  ldrsh r11,[r4] ;@ Fetch Branch offset
35705;@ Branch taken - Add on r0 to PC
35706  add r4,r4,r11 ;@ r4 = New PC
35707  tst r4,#1 ;@ address error?
35708  bne ExceptionAddressError_r_prg_r4
35709
35710  ldrh r8,[r4],#2 ;@ Fetch next opcode
35711  subs r5,r5,#10 ;@ Subtract cycles
35712  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35713  b CycloneEnd
35714
35715;@ ---------- [6603] bne 5 uses Op6603 ----------
35716Op6603:
35717  tst r10,#0x40000000 ;@ ne: !Z
35718  bne BccDontBranch8
35719
35720  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35721
35722;@ Branch taken - Add on r0 to PC
35723  add r4,r4,r11,asr #24 ;@ r4 = New PC
35724  b ExceptionAddressError_r_prg_r4
35725
35726  ldrh r8,[r4],#2 ;@ Fetch next opcode
35727  subs r5,r5,#10 ;@ Subtract cycles
35728  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35729  b CycloneEnd
35730
35731;@ ---------- [6703] beq 5 uses Op6703 ----------
35732Op6703:
35733  tst r10,#0x40000000 ;@ eq: Z
35734  beq BccDontBranch8
35735
35736  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35737
35738;@ Branch taken - Add on r0 to PC
35739  add r4,r4,r11,asr #24 ;@ r4 = New PC
35740  b ExceptionAddressError_r_prg_r4
35741
35742  ldrh r8,[r4],#2 ;@ Fetch next opcode
35743  subs r5,r5,#10 ;@ Subtract cycles
35744  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35745  b CycloneEnd
35746
35747;@ ---------- [6800] bvc 3335 uses Op6800 ----------
35748Op6800:
35749  tst r10,#0x10000000 ;@ vc: !V
35750  bne BccDontBranch16
35751
35752  ldrsh r11,[r4] ;@ Fetch Branch offset
35753;@ Branch taken - Add on r0 to PC
35754  add r4,r4,r11 ;@ r4 = New PC
35755  tst r4,#1 ;@ address error?
35756  bne ExceptionAddressError_r_prg_r4
35757
35758  ldrh r8,[r4],#2 ;@ Fetch next opcode
35759  subs r5,r5,#10 ;@ Subtract cycles
35760  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35761  b CycloneEnd
35762
35763;@ ---------- [6802] bvc 4 uses Op6802 ----------
35764Op6802:
35765  tst r10,#0x10000000 ;@ vc: !V
35766  bne BccDontBranch8
35767
35768  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35769
35770;@ Branch taken - Add on r0 to PC
35771  add r4,r4,r11,asr #24 ;@ r4 = New PC
35772
35773  ldrh r8,[r4],#2 ;@ Fetch next opcode
35774  subs r5,r5,#10 ;@ Subtract cycles
35775  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35776  b CycloneEnd
35777
35778;@ ---------- [6803] bvc 5 uses Op6803 ----------
35779Op6803:
35780  tst r10,#0x10000000 ;@ vc: !V
35781  bne BccDontBranch8
35782
35783  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35784
35785;@ Branch taken - Add on r0 to PC
35786  add r4,r4,r11,asr #24 ;@ r4 = New PC
35787  b ExceptionAddressError_r_prg_r4
35788
35789  ldrh r8,[r4],#2 ;@ Fetch next opcode
35790  subs r5,r5,#10 ;@ Subtract cycles
35791  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35792  b CycloneEnd
35793
35794;@ ---------- [6900] bvs 3335 uses Op6900 ----------
35795Op6900:
35796  tst r10,#0x10000000 ;@ vs: V
35797  beq BccDontBranch16
35798
35799  ldrsh r11,[r4] ;@ Fetch Branch offset
35800;@ Branch taken - Add on r0 to PC
35801  add r4,r4,r11 ;@ r4 = New PC
35802  tst r4,#1 ;@ address error?
35803  bne ExceptionAddressError_r_prg_r4
35804
35805  ldrh r8,[r4],#2 ;@ Fetch next opcode
35806  subs r5,r5,#10 ;@ Subtract cycles
35807  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35808  b CycloneEnd
35809
35810;@ ---------- [6902] bvs 4 uses Op6902 ----------
35811Op6902:
35812  tst r10,#0x10000000 ;@ vs: V
35813  beq BccDontBranch8
35814
35815  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35816
35817;@ Branch taken - Add on r0 to PC
35818  add r4,r4,r11,asr #24 ;@ r4 = New PC
35819
35820  ldrh r8,[r4],#2 ;@ Fetch next opcode
35821  subs r5,r5,#10 ;@ Subtract cycles
35822  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35823  b CycloneEnd
35824
35825;@ ---------- [6903] bvs 5 uses Op6903 ----------
35826Op6903:
35827  tst r10,#0x10000000 ;@ vs: V
35828  beq BccDontBranch8
35829
35830  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35831
35832;@ Branch taken - Add on r0 to PC
35833  add r4,r4,r11,asr #24 ;@ r4 = New PC
35834  b ExceptionAddressError_r_prg_r4
35835
35836  ldrh r8,[r4],#2 ;@ Fetch next opcode
35837  subs r5,r5,#10 ;@ Subtract cycles
35838  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35839  b CycloneEnd
35840
35841;@ ---------- [6a00] bpl 3335 uses Op6a00 ----------
35842Op6a00:
35843  tst r10,r10 ;@ pl: !N
35844  bmi BccDontBranch16
35845
35846  ldrsh r11,[r4] ;@ Fetch Branch offset
35847;@ Branch taken - Add on r0 to PC
35848  add r4,r4,r11 ;@ r4 = New PC
35849  tst r4,#1 ;@ address error?
35850  bne ExceptionAddressError_r_prg_r4
35851
35852  ldrh r8,[r4],#2 ;@ Fetch next opcode
35853  subs r5,r5,#10 ;@ Subtract cycles
35854  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35855  b CycloneEnd
35856
35857;@ ---------- [6a03] bpl 5 uses Op6a03 ----------
35858Op6a03:
35859  tst r10,r10 ;@ pl: !N
35860  bmi BccDontBranch8
35861
35862  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35863
35864;@ Branch taken - Add on r0 to PC
35865  add r4,r4,r11,asr #24 ;@ r4 = New PC
35866  b ExceptionAddressError_r_prg_r4
35867
35868  ldrh r8,[r4],#2 ;@ Fetch next opcode
35869  subs r5,r5,#10 ;@ Subtract cycles
35870  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35871  b CycloneEnd
35872
35873;@ ---------- [6b00] bmi 3335 uses Op6b00 ----------
35874Op6b00:
35875  tst r10,r10 ;@ mi: N
35876  bpl BccDontBranch16
35877
35878  ldrsh r11,[r4] ;@ Fetch Branch offset
35879;@ Branch taken - Add on r0 to PC
35880  add r4,r4,r11 ;@ r4 = New PC
35881  tst r4,#1 ;@ address error?
35882  bne ExceptionAddressError_r_prg_r4
35883
35884  ldrh r8,[r4],#2 ;@ Fetch next opcode
35885  subs r5,r5,#10 ;@ Subtract cycles
35886  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35887  b CycloneEnd
35888
35889;@ ---------- [6b02] bmi 4 uses Op6b02 ----------
35890Op6b02:
35891  tst r10,r10 ;@ mi: N
35892  bpl BccDontBranch8
35893
35894  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35895
35896;@ Branch taken - Add on r0 to PC
35897  add r4,r4,r11,asr #24 ;@ r4 = New PC
35898
35899  ldrh r8,[r4],#2 ;@ Fetch next opcode
35900  subs r5,r5,#10 ;@ Subtract cycles
35901  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35902  b CycloneEnd
35903
35904;@ ---------- [6b03] bmi 5 uses Op6b03 ----------
35905Op6b03:
35906  tst r10,r10 ;@ mi: N
35907  bpl BccDontBranch8
35908
35909  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35910
35911;@ Branch taken - Add on r0 to PC
35912  add r4,r4,r11,asr #24 ;@ r4 = New PC
35913  b ExceptionAddressError_r_prg_r4
35914
35915  ldrh r8,[r4],#2 ;@ Fetch next opcode
35916  subs r5,r5,#10 ;@ Subtract cycles
35917  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35918  b CycloneEnd
35919
35920;@ ---------- [6c00] bge 3335 uses Op6c00 ----------
35921Op6c00:
35922  teq r10,r10,lsl #3 ;@ ge: N == V
35923  bmi BccDontBranch16
35924
35925  ldrsh r11,[r4] ;@ Fetch Branch offset
35926;@ Branch taken - Add on r0 to PC
35927  add r4,r4,r11 ;@ r4 = New PC
35928  tst r4,#1 ;@ address error?
35929  bne ExceptionAddressError_r_prg_r4
35930
35931  ldrh r8,[r4],#2 ;@ Fetch next opcode
35932  subs r5,r5,#10 ;@ Subtract cycles
35933  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35934  b CycloneEnd
35935
35936;@ ---------- [6c02] bge 4 uses Op6c02 ----------
35937Op6c02:
35938  teq r10,r10,lsl #3 ;@ ge: N == V
35939  bmi BccDontBranch8
35940
35941  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35942
35943;@ Branch taken - Add on r0 to PC
35944  add r4,r4,r11,asr #24 ;@ r4 = New PC
35945
35946  ldrh r8,[r4],#2 ;@ Fetch next opcode
35947  subs r5,r5,#10 ;@ Subtract cycles
35948  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35949  b CycloneEnd
35950
35951;@ ---------- [6c03] bge 5 uses Op6c03 ----------
35952Op6c03:
35953  teq r10,r10,lsl #3 ;@ ge: N == V
35954  bmi BccDontBranch8
35955
35956  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35957
35958;@ Branch taken - Add on r0 to PC
35959  add r4,r4,r11,asr #24 ;@ r4 = New PC
35960  b ExceptionAddressError_r_prg_r4
35961
35962  ldrh r8,[r4],#2 ;@ Fetch next opcode
35963  subs r5,r5,#10 ;@ Subtract cycles
35964  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35965  b CycloneEnd
35966
35967;@ ---------- [6d00] blt 3335 uses Op6d00 ----------
35968Op6d00:
35969  teq r10,r10,lsl #3 ;@ lt: N != V
35970  bpl BccDontBranch16
35971
35972  ldrsh r11,[r4] ;@ Fetch Branch offset
35973;@ Branch taken - Add on r0 to PC
35974  add r4,r4,r11 ;@ r4 = New PC
35975  tst r4,#1 ;@ address error?
35976  bne ExceptionAddressError_r_prg_r4
35977
35978  ldrh r8,[r4],#2 ;@ Fetch next opcode
35979  subs r5,r5,#10 ;@ Subtract cycles
35980  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35981  b CycloneEnd
35982
35983;@ ---------- [6d02] blt 4 uses Op6d02 ----------
35984Op6d02:
35985  teq r10,r10,lsl #3 ;@ lt: N != V
35986  bpl BccDontBranch8
35987
35988  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
35989
35990;@ Branch taken - Add on r0 to PC
35991  add r4,r4,r11,asr #24 ;@ r4 = New PC
35992
35993  ldrh r8,[r4],#2 ;@ Fetch next opcode
35994  subs r5,r5,#10 ;@ Subtract cycles
35995  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
35996  b CycloneEnd
35997
35998;@ ---------- [6d03] blt 5 uses Op6d03 ----------
35999Op6d03:
36000  teq r10,r10,lsl #3 ;@ lt: N != V
36001  bpl BccDontBranch8
36002
36003  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
36004
36005;@ Branch taken - Add on r0 to PC
36006  add r4,r4,r11,asr #24 ;@ r4 = New PC
36007  b ExceptionAddressError_r_prg_r4
36008
36009  ldrh r8,[r4],#2 ;@ Fetch next opcode
36010  subs r5,r5,#10 ;@ Subtract cycles
36011  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36012  b CycloneEnd
36013
36014;@ ---------- [6e00] bgt 3335 uses Op6e00 ----------
36015Op6e00:
36016  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
36017  orrs r0,r10,lsl #1
36018  bmi BccDontBranch16
36019
36020  ldrsh r11,[r4] ;@ Fetch Branch offset
36021;@ Branch taken - Add on r0 to PC
36022  add r4,r4,r11 ;@ r4 = New PC
36023  tst r4,#1 ;@ address error?
36024  bne ExceptionAddressError_r_prg_r4
36025
36026  ldrh r8,[r4],#2 ;@ Fetch next opcode
36027  subs r5,r5,#10 ;@ Subtract cycles
36028  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36029  b CycloneEnd
36030
36031;@ ---------- [6e02] bgt 4 uses Op6e02 ----------
36032Op6e02:
36033  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
36034  orrs r0,r10,lsl #1
36035  bmi BccDontBranch8
36036
36037  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
36038
36039;@ Branch taken - Add on r0 to PC
36040  add r4,r4,r11,asr #24 ;@ r4 = New PC
36041
36042  ldrh r8,[r4],#2 ;@ Fetch next opcode
36043  subs r5,r5,#10 ;@ Subtract cycles
36044  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36045  b CycloneEnd
36046
36047;@ ---------- [6e03] bgt 5 uses Op6e03 ----------
36048Op6e03:
36049  eor r0,r10,r10,lsl #3 ;@ gt: !Z && N == V
36050  orrs r0,r10,lsl #1
36051  bmi BccDontBranch8
36052
36053  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
36054
36055;@ Branch taken - Add on r0 to PC
36056  add r4,r4,r11,asr #24 ;@ r4 = New PC
36057  b ExceptionAddressError_r_prg_r4
36058
36059  ldrh r8,[r4],#2 ;@ Fetch next opcode
36060  subs r5,r5,#10 ;@ Subtract cycles
36061  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36062  b CycloneEnd
36063
36064;@ ---------- [6f00] ble 3335 uses Op6f00 ----------
36065Op6f00:
36066  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
36067  orrs r0,r10,lsl #1
36068  bpl BccDontBranch16
36069
36070  ldrsh r11,[r4] ;@ Fetch Branch offset
36071;@ Branch taken - Add on r0 to PC
36072  add r4,r4,r11 ;@ r4 = New PC
36073  tst r4,#1 ;@ address error?
36074  bne ExceptionAddressError_r_prg_r4
36075
36076  ldrh r8,[r4],#2 ;@ Fetch next opcode
36077  subs r5,r5,#10 ;@ Subtract cycles
36078  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36079  b CycloneEnd
36080
36081;@ ---------- [6f02] ble 4 uses Op6f02 ----------
36082Op6f02:
36083  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
36084  orrs r0,r10,lsl #1
36085  bpl BccDontBranch8
36086
36087  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
36088
36089;@ Branch taken - Add on r0 to PC
36090  add r4,r4,r11,asr #24 ;@ r4 = New PC
36091
36092  ldrh r8,[r4],#2 ;@ Fetch next opcode
36093  subs r5,r5,#10 ;@ Subtract cycles
36094  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36095  b CycloneEnd
36096
36097;@ ---------- [6f03] ble 5 uses Op6f03 ----------
36098Op6f03:
36099  eor r0,r10,r10,lsl #3 ;@ le: Z || N != V
36100  orrs r0,r10,lsl #1
36101  bpl BccDontBranch8
36102
36103  mov r11,r8,asl #24 ;@ Shift 8-bit signed offset up...
36104
36105;@ Branch taken - Add on r0 to PC
36106  add r4,r4,r11,asr #24 ;@ r4 = New PC
36107  b ExceptionAddressError_r_prg_r4
36108
36109  ldrh r8,[r4],#2 ;@ Fetch next opcode
36110  subs r5,r5,#10 ;@ Subtract cycles
36111  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36112  b CycloneEnd
36113
36114;@ ---------- [8000] or.b d0, d0 uses Op8000 ----------
36115Op8000:
36116;@ EaCalc : Get register index into r0:
36117  and r0,r8,#0x000f
36118;@ EaRead : Read register[r0] into r0:
36119  ldr r0,[r7,r0,lsl #2]
36120
36121;@ EaCalc : Get register index into r11:
36122  and r11,r8,#0x0e00
36123;@ EaRead : Read register[r11] into r1:
36124  ldr r1,[r7,r11,lsr #7]
36125
36126;@ Do arithmetic:
36127  mov r0,r0,asl #24
36128  orrs r1,r0,r1,asl #24
36129  and r10,r1,#0x80000000 ;@ r10=N_flag
36130  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36131
36132;@ Save result:
36133  mov r1,r1,asr #24
36134;@ EaWrite: r1 into register[r11]:
36135  strb r1,[r7,r11,lsr #7]
36136
36137  ldrh r8,[r4],#2 ;@ Fetch next opcode
36138  subs r5,r5,#4 ;@ Subtract cycles
36139  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36140  b CycloneEnd
36141
36142;@ ---------- [8010] or.b (a0), d0 uses Op8010 ----------
36143Op8010:
36144;@ EaCalc : Get '(a0)' into r0:
36145  and r2,r8,#0x000f
36146  orr r2,r2,#0x8 ;@ A0-7
36147  ldr r0,[r7,r2,lsl #2]
36148;@ EaRead : Read '(a0)' (address in r0) into r0:
36149  mov lr,pc
36150  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
36151
36152;@ EaCalc : Get register index into r11:
36153  and r11,r8,#0x0e00
36154;@ EaRead : Read register[r11] into r1:
36155  ldr r1,[r7,r11,lsr #7]
36156
36157;@ Do arithmetic:
36158  mov r0,r0,asl #24
36159  orrs r1,r0,r1,asl #24
36160  and r10,r1,#0x80000000 ;@ r10=N_flag
36161  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36162
36163;@ Save result:
36164  mov r1,r1,asr #24
36165;@ EaWrite: r1 into register[r11]:
36166  strb r1,[r7,r11,lsr #7]
36167
36168  ldrh r8,[r4],#2 ;@ Fetch next opcode
36169  subs r5,r5,#8 ;@ Subtract cycles
36170  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36171  b CycloneEnd
36172
36173;@ ---------- [8018] or.b (a0)+, d0 uses Op8018 ----------
36174Op8018:
36175;@ EaCalc : Get '(a0)+' into r0:
36176  and r2,r8,#0x000f
36177  ldr r0,[r7,r2,lsl #2]
36178  add r3,r0,#1 ;@ Post-increment An
36179  str r3,[r7,r2,lsl #2]
36180;@ EaRead : Read '(a0)+' (address in r0) into r0:
36181  mov lr,pc
36182  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
36183
36184;@ EaCalc : Get register index into r11:
36185  and r11,r8,#0x0e00
36186;@ EaRead : Read register[r11] into r1:
36187  ldr r1,[r7,r11,lsr #7]
36188
36189;@ Do arithmetic:
36190  mov r0,r0,asl #24
36191  orrs r1,r0,r1,asl #24
36192  and r10,r1,#0x80000000 ;@ r10=N_flag
36193  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36194
36195;@ Save result:
36196  mov r1,r1,asr #24
36197;@ EaWrite: r1 into register[r11]:
36198  strb r1,[r7,r11,lsr #7]
36199
36200  ldrh r8,[r4],#2 ;@ Fetch next opcode
36201  subs r5,r5,#8 ;@ Subtract cycles
36202  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36203  b CycloneEnd
36204
36205;@ ---------- [801f] or.b (a7)+, d0 uses Op801f ----------
36206Op801f:
36207;@ EaCalc : Get '(a7)+' into r0:
36208  ldr r0,[r7,#0x3c] ;@ A7
36209  add r3,r0,#2 ;@ Post-increment An
36210  str r3,[r7,#0x3c] ;@ A7
36211;@ EaRead : Read '(a7)+' (address in r0) into r0:
36212  mov lr,pc
36213  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
36214
36215;@ EaCalc : Get register index into r11:
36216  and r11,r8,#0x0e00
36217;@ EaRead : Read register[r11] into r1:
36218  ldr r1,[r7,r11,lsr #7]
36219
36220;@ Do arithmetic:
36221  mov r0,r0,asl #24
36222  orrs r1,r0,r1,asl #24
36223  and r10,r1,#0x80000000 ;@ r10=N_flag
36224  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36225
36226;@ Save result:
36227  mov r1,r1,asr #24
36228;@ EaWrite: r1 into register[r11]:
36229  strb r1,[r7,r11,lsr #7]
36230
36231  ldrh r8,[r4],#2 ;@ Fetch next opcode
36232  subs r5,r5,#8 ;@ Subtract cycles
36233  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36234  b CycloneEnd
36235
36236;@ ---------- [8020] or.b -(a0), d0 uses Op8020 ----------
36237Op8020:
36238;@ EaCalc : Get '-(a0)' into r0:
36239  and r2,r8,#0x000f
36240  orr r2,r2,#0x8 ;@ A0-7
36241  ldr r0,[r7,r2,lsl #2]
36242  sub r0,r0,#1 ;@ Pre-decrement An
36243  str r0,[r7,r2,lsl #2]
36244;@ EaRead : Read '-(a0)' (address in r0) into r0:
36245  mov lr,pc
36246  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
36247
36248;@ EaCalc : Get register index into r11:
36249  and r11,r8,#0x0e00
36250;@ EaRead : Read register[r11] into r1:
36251  ldr r1,[r7,r11,lsr #7]
36252
36253;@ Do arithmetic:
36254  mov r0,r0,asl #24
36255  orrs r1,r0,r1,asl #24
36256  and r10,r1,#0x80000000 ;@ r10=N_flag
36257  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36258
36259;@ Save result:
36260  mov r1,r1,asr #24
36261;@ EaWrite: r1 into register[r11]:
36262  strb r1,[r7,r11,lsr #7]
36263
36264  ldrh r8,[r4],#2 ;@ Fetch next opcode
36265  subs r5,r5,#10 ;@ Subtract cycles
36266  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36267  b CycloneEnd
36268
36269;@ ---------- [8027] or.b -(a7), d0 uses Op8027 ----------
36270Op8027:
36271;@ EaCalc : Get '-(a7)' into r0:
36272  ldr r0,[r7,#0x3c] ;@ A7
36273  sub r0,r0,#2 ;@ Pre-decrement An
36274  str r0,[r7,#0x3c] ;@ A7
36275;@ EaRead : Read '-(a7)' (address in r0) into r0:
36276  mov lr,pc
36277  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
36278
36279;@ EaCalc : Get register index into r11:
36280  and r11,r8,#0x0e00
36281;@ EaRead : Read register[r11] into r1:
36282  ldr r1,[r7,r11,lsr #7]
36283
36284;@ Do arithmetic:
36285  mov r0,r0,asl #24
36286  orrs r1,r0,r1,asl #24
36287  and r10,r1,#0x80000000 ;@ r10=N_flag
36288  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36289
36290;@ Save result:
36291  mov r1,r1,asr #24
36292;@ EaWrite: r1 into register[r11]:
36293  strb r1,[r7,r11,lsr #7]
36294
36295  ldrh r8,[r4],#2 ;@ Fetch next opcode
36296  subs r5,r5,#10 ;@ Subtract cycles
36297  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36298  b CycloneEnd
36299
36300;@ ---------- [8028] or.b ($3333,a0), d0 uses Op8028 ----------
36301Op8028:
36302;@ EaCalc : Get '($3333,a0)' into r0:
36303  ldrsh r0,[r4],#2 ;@ Fetch offset
36304  and r2,r8,#0x000f
36305  ldr r2,[r7,r2,lsl #2]
36306  add r0,r0,r2 ;@ Add on offset
36307;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
36308  mov lr,pc
36309  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
36310
36311;@ EaCalc : Get register index into r11:
36312  and r11,r8,#0x0e00
36313;@ EaRead : Read register[r11] into r1:
36314  ldr r1,[r7,r11,lsr #7]
36315
36316;@ Do arithmetic:
36317  mov r0,r0,asl #24
36318  orrs r1,r0,r1,asl #24
36319  and r10,r1,#0x80000000 ;@ r10=N_flag
36320  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36321
36322;@ Save result:
36323  mov r1,r1,asr #24
36324;@ EaWrite: r1 into register[r11]:
36325  strb r1,[r7,r11,lsr #7]
36326
36327  ldrh r8,[r4],#2 ;@ Fetch next opcode
36328  subs r5,r5,#12 ;@ Subtract cycles
36329  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36330  b CycloneEnd
36331
36332;@ ---------- [8030] or.b ($33,a0,d3.w*2), d0 uses Op8030 ----------
36333Op8030:
36334;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
36335;@ Get extension word into r3:
36336  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
36337  mov r2,r3,lsr #10
36338  tst r3,#0x0800 ;@ Is Rn Word or Long
36339  and r2,r2,#0x3c ;@ r2=Index of Rn
36340  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
36341  ldrne   r2,[r7,r2] ;@ r2=Rn.l
36342  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
36343  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
36344  and r2,r8,#0x000f
36345  orr r2,r2,#0x8 ;@ A0-7
36346  ldr r2,[r7,r2,lsl #2]
36347  add r0,r2,r3 ;@ r0=Disp+An+Rn
36348;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
36349  mov lr,pc
36350  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
36351
36352;@ EaCalc : Get register index into r11:
36353  and r11,r8,#0x0e00
36354;@ EaRead : Read register[r11] into r1:
36355  ldr r1,[r7,r11,lsr #7]
36356
36357;@ Do arithmetic:
36358  mov r0,r0,asl #24
36359  orrs r1,r0,r1,asl #24
36360  and r10,r1,#0x80000000 ;@ r10=N_flag
36361  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36362
36363;@ Save result:
36364  mov r1,r1,asr #24
36365;@ EaWrite: r1 into register[r11]:
36366  strb r1,[r7,r11,lsr #7]
36367
36368  ldrh r8,[r4],#2 ;@ Fetch next opcode
36369  subs r5,r5,#14 ;@ Subtract cycles
36370  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36371  b CycloneEnd
36372
36373;@ ---------- [8038] or.b $3333.w, d0 uses Op8038 ----------
36374Op8038:
36375;@ EaCalc : Get '$3333.w' into r0:
36376  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
36377;@ EaRead : Read '$3333.w' (address in r0) into r0:
36378  mov lr,pc
36379  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
36380
36381;@ EaCalc : Get register index into r11:
36382  and r11,r8,#0x0e00
36383;@ EaRead : Read register[r11] into r1:
36384  ldr r1,[r7,r11,lsr #7]
36385
36386;@ Do arithmetic:
36387  mov r0,r0,asl #24
36388  orrs r1,r0,r1,asl #24
36389  and r10,r1,#0x80000000 ;@ r10=N_flag
36390  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36391
36392;@ Save result:
36393  mov r1,r1,asr #24
36394;@ EaWrite: r1 into register[r11]:
36395  strb r1,[r7,r11,lsr #7]
36396
36397  ldrh r8,[r4],#2 ;@ Fetch next opcode
36398  subs r5,r5,#12 ;@ Subtract cycles
36399  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36400  b CycloneEnd
36401
36402;@ ---------- [8039] or.b $33333333.l, d0 uses Op8039 ----------
36403Op8039:
36404;@ EaCalc : Get '$33333333.l' into r0:
36405  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
36406  ldrh r0,[r4],#2
36407  orr r0,r0,r2,lsl #16
36408;@ EaRead : Read '$33333333.l' (address in r0) into r0:
36409  mov lr,pc
36410  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
36411
36412;@ EaCalc : Get register index into r11:
36413  and r11,r8,#0x0e00
36414;@ EaRead : Read register[r11] into r1:
36415  ldr r1,[r7,r11,lsr #7]
36416
36417;@ Do arithmetic:
36418  mov r0,r0,asl #24
36419  orrs r1,r0,r1,asl #24
36420  and r10,r1,#0x80000000 ;@ r10=N_flag
36421  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36422
36423;@ Save result:
36424  mov r1,r1,asr #24
36425;@ EaWrite: r1 into register[r11]:
36426  strb r1,[r7,r11,lsr #7]
36427
36428  ldrh r8,[r4],#2 ;@ Fetch next opcode
36429  subs r5,r5,#16 ;@ Subtract cycles
36430  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36431  b CycloneEnd
36432
36433;@ ---------- [803a] or.b ($3333,pc), d0; =3335 uses Op803a ----------
36434Op803a:
36435;@ EaCalc : Get '($3333,pc)' into r0:
36436  ldr r0,[r7,#0x60] ;@ Get Memory base
36437  sub r0,r4,r0 ;@ Real PC
36438  ldrsh r2,[r4],#2 ;@ Fetch extension
36439  add r0,r2,r0 ;@ ($nn,PC)
36440;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
36441  mov lr,pc
36442  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
36443
36444;@ EaCalc : Get register index into r11:
36445  and r11,r8,#0x0e00
36446;@ EaRead : Read register[r11] into r1:
36447  ldr r1,[r7,r11,lsr #7]
36448
36449;@ Do arithmetic:
36450  mov r0,r0,asl #24
36451  orrs r1,r0,r1,asl #24
36452  and r10,r1,#0x80000000 ;@ r10=N_flag
36453  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36454
36455;@ Save result:
36456  mov r1,r1,asr #24
36457;@ EaWrite: r1 into register[r11]:
36458  strb r1,[r7,r11,lsr #7]
36459
36460  ldrh r8,[r4],#2 ;@ Fetch next opcode
36461  subs r5,r5,#12 ;@ Subtract cycles
36462  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36463  b CycloneEnd
36464
36465;@ ---------- [803b] or.b ($33,pc,d3.w*2), d0; =35 uses Op803b ----------
36466Op803b:
36467;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
36468  ldr r0,[r7,#0x60] ;@ Get Memory base
36469  ldrh r3,[r4] ;@ Get extension word
36470  sub r0,r4,r0 ;@ r0=PC
36471  add r4,r4,#2
36472  mov r2,r3,lsr #10
36473  tst r3,#0x0800 ;@ Is Rn Word or Long
36474  and r2,r2,#0x3c ;@ r2=Index of Rn
36475  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
36476  ldrne   r2,[r7,r2] ;@ r2=Rn.l
36477  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
36478  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
36479  add r0,r2,r0 ;@ r0=Disp+PC+Rn
36480;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
36481  mov lr,pc
36482  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
36483
36484;@ EaCalc : Get register index into r11:
36485  and r11,r8,#0x0e00
36486;@ EaRead : Read register[r11] into r1:
36487  ldr r1,[r7,r11,lsr #7]
36488
36489;@ Do arithmetic:
36490  mov r0,r0,asl #24
36491  orrs r1,r0,r1,asl #24
36492  and r10,r1,#0x80000000 ;@ r10=N_flag
36493  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36494
36495;@ Save result:
36496  mov r1,r1,asr #24
36497;@ EaWrite: r1 into register[r11]:
36498  strb r1,[r7,r11,lsr #7]
36499
36500  ldrh r8,[r4],#2 ;@ Fetch next opcode
36501  subs r5,r5,#14 ;@ Subtract cycles
36502  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36503  b CycloneEnd
36504
36505;@ ---------- [803c] or.b #$33, d0 uses Op803c ----------
36506Op803c:
36507;@ EaCalc : Get '#$33' into r0:
36508  ldrsb r0,[r4],#2 ;@ Fetch immediate value
36509;@ EaRead : Read '#$33' (address in r0) into r0:
36510
36511;@ EaCalc : Get register index into r11:
36512  and r11,r8,#0x0e00
36513;@ EaRead : Read register[r11] into r1:
36514  ldr r1,[r7,r11,lsr #7]
36515
36516;@ Do arithmetic:
36517  mov r0,r0,asl #24
36518  orrs r1,r0,r1,asl #24
36519  and r10,r1,#0x80000000 ;@ r10=N_flag
36520  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36521
36522;@ Save result:
36523  mov r1,r1,asr #24
36524;@ EaWrite: r1 into register[r11]:
36525  strb r1,[r7,r11,lsr #7]
36526
36527  ldrh r8,[r4],#2 ;@ Fetch next opcode
36528  subs r5,r5,#8 ;@ Subtract cycles
36529  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36530  b CycloneEnd
36531
36532;@ ---------- [8040] or.w d0, d0 uses Op8040 ----------
36533Op8040:
36534;@ EaCalc : Get register index into r0:
36535  and r0,r8,#0x000f
36536;@ EaRead : Read register[r0] into r0:
36537  ldr r0,[r7,r0,lsl #2]
36538
36539;@ EaCalc : Get register index into r11:
36540  and r11,r8,#0x0e00
36541  mov r11,r11,lsr #7
36542;@ EaRead : Read register[r11] into r1:
36543  ldr r1,[r7,r11]
36544
36545;@ Do arithmetic:
36546  mov r0,r0,asl #16
36547  orrs r1,r0,r1,asl #16
36548  and r10,r1,#0x80000000 ;@ r10=N_flag
36549  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36550
36551;@ Save result:
36552  mov r1,r1,asr #16
36553;@ EaWrite: r1 into register[r11]:
36554  strh r1,[r7,r11]
36555
36556  ldrh r8,[r4],#2 ;@ Fetch next opcode
36557  subs r5,r5,#4 ;@ Subtract cycles
36558  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36559  b CycloneEnd
36560
36561;@ ---------- [8050] or.w (a0), d0 uses Op8050 ----------
36562Op8050:
36563;@ EaCalc : Get '(a0)' into r0:
36564  and r2,r8,#0x000f
36565  orr r2,r2,#0x8 ;@ A0-7
36566  ldr r0,[r7,r2,lsl #2]
36567;@ EaRead : Read '(a0)' (address in r0) into r0:
36568  mov lr,pc
36569  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
36570
36571;@ EaCalc : Get register index into r11:
36572  and r11,r8,#0x0e00
36573  mov r11,r11,lsr #7
36574;@ EaRead : Read register[r11] into r1:
36575  ldr r1,[r7,r11]
36576
36577;@ Do arithmetic:
36578  mov r0,r0,asl #16
36579  orrs r1,r0,r1,asl #16
36580  and r10,r1,#0x80000000 ;@ r10=N_flag
36581  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36582
36583;@ Save result:
36584  mov r1,r1,asr #16
36585;@ EaWrite: r1 into register[r11]:
36586  strh r1,[r7,r11]
36587
36588  ldrh r8,[r4],#2 ;@ Fetch next opcode
36589  subs r5,r5,#8 ;@ Subtract cycles
36590  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36591  b CycloneEnd
36592
36593;@ ---------- [8058] or.w (a0)+, d0 uses Op8058 ----------
36594Op8058:
36595;@ EaCalc : Get '(a0)+' into r0:
36596  and r2,r8,#0x000f
36597  ldr r0,[r7,r2,lsl #2]
36598  add r3,r0,#2 ;@ Post-increment An
36599  str r3,[r7,r2,lsl #2]
36600;@ EaRead : Read '(a0)+' (address in r0) into r0:
36601  mov lr,pc
36602  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
36603
36604;@ EaCalc : Get register index into r11:
36605  and r11,r8,#0x0e00
36606  mov r11,r11,lsr #7
36607;@ EaRead : Read register[r11] into r1:
36608  ldr r1,[r7,r11]
36609
36610;@ Do arithmetic:
36611  mov r0,r0,asl #16
36612  orrs r1,r0,r1,asl #16
36613  and r10,r1,#0x80000000 ;@ r10=N_flag
36614  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36615
36616;@ Save result:
36617  mov r1,r1,asr #16
36618;@ EaWrite: r1 into register[r11]:
36619  strh r1,[r7,r11]
36620
36621  ldrh r8,[r4],#2 ;@ Fetch next opcode
36622  subs r5,r5,#8 ;@ Subtract cycles
36623  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36624  b CycloneEnd
36625
36626;@ ---------- [8060] or.w -(a0), d0 uses Op8060 ----------
36627Op8060:
36628;@ EaCalc : Get '-(a0)' into r0:
36629  and r2,r8,#0x000f
36630  orr r2,r2,#0x8 ;@ A0-7
36631  ldr r0,[r7,r2,lsl #2]
36632  sub r0,r0,#2 ;@ Pre-decrement An
36633  str r0,[r7,r2,lsl #2]
36634;@ EaRead : Read '-(a0)' (address in r0) into r0:
36635  mov lr,pc
36636  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
36637
36638;@ EaCalc : Get register index into r11:
36639  and r11,r8,#0x0e00
36640  mov r11,r11,lsr #7
36641;@ EaRead : Read register[r11] into r1:
36642  ldr r1,[r7,r11]
36643
36644;@ Do arithmetic:
36645  mov r0,r0,asl #16
36646  orrs r1,r0,r1,asl #16
36647  and r10,r1,#0x80000000 ;@ r10=N_flag
36648  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36649
36650;@ Save result:
36651  mov r1,r1,asr #16
36652;@ EaWrite: r1 into register[r11]:
36653  strh r1,[r7,r11]
36654
36655  ldrh r8,[r4],#2 ;@ Fetch next opcode
36656  subs r5,r5,#10 ;@ Subtract cycles
36657  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36658  b CycloneEnd
36659
36660;@ ---------- [8068] or.w ($3333,a0), d0 uses Op8068 ----------
36661Op8068:
36662;@ EaCalc : Get '($3333,a0)' into r0:
36663  ldrsh r0,[r4],#2 ;@ Fetch offset
36664  and r2,r8,#0x000f
36665  ldr r2,[r7,r2,lsl #2]
36666  add r0,r0,r2 ;@ Add on offset
36667;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
36668  mov lr,pc
36669  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
36670
36671;@ EaCalc : Get register index into r11:
36672  and r11,r8,#0x0e00
36673  mov r11,r11,lsr #7
36674;@ EaRead : Read register[r11] into r1:
36675  ldr r1,[r7,r11]
36676
36677;@ Do arithmetic:
36678  mov r0,r0,asl #16
36679  orrs r1,r0,r1,asl #16
36680  and r10,r1,#0x80000000 ;@ r10=N_flag
36681  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36682
36683;@ Save result:
36684  mov r1,r1,asr #16
36685;@ EaWrite: r1 into register[r11]:
36686  strh r1,[r7,r11]
36687
36688  ldrh r8,[r4],#2 ;@ Fetch next opcode
36689  subs r5,r5,#12 ;@ Subtract cycles
36690  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36691  b CycloneEnd
36692
36693;@ ---------- [8070] or.w ($33,a0,d3.w*2), d0 uses Op8070 ----------
36694Op8070:
36695;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
36696;@ Get extension word into r3:
36697  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
36698  mov r2,r3,lsr #10
36699  tst r3,#0x0800 ;@ Is Rn Word or Long
36700  and r2,r2,#0x3c ;@ r2=Index of Rn
36701  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
36702  ldrne   r2,[r7,r2] ;@ r2=Rn.l
36703  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
36704  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
36705  and r2,r8,#0x000f
36706  orr r2,r2,#0x8 ;@ A0-7
36707  ldr r2,[r7,r2,lsl #2]
36708  add r0,r2,r3 ;@ r0=Disp+An+Rn
36709;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
36710  mov lr,pc
36711  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
36712
36713;@ EaCalc : Get register index into r11:
36714  and r11,r8,#0x0e00
36715  mov r11,r11,lsr #7
36716;@ EaRead : Read register[r11] into r1:
36717  ldr r1,[r7,r11]
36718
36719;@ Do arithmetic:
36720  mov r0,r0,asl #16
36721  orrs r1,r0,r1,asl #16
36722  and r10,r1,#0x80000000 ;@ r10=N_flag
36723  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36724
36725;@ Save result:
36726  mov r1,r1,asr #16
36727;@ EaWrite: r1 into register[r11]:
36728  strh r1,[r7,r11]
36729
36730  ldrh r8,[r4],#2 ;@ Fetch next opcode
36731  subs r5,r5,#14 ;@ Subtract cycles
36732  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36733  b CycloneEnd
36734
36735;@ ---------- [8078] or.w $3333.w, d0 uses Op8078 ----------
36736Op8078:
36737;@ EaCalc : Get '$3333.w' into r0:
36738  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
36739;@ EaRead : Read '$3333.w' (address in r0) into r0:
36740  mov lr,pc
36741  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
36742
36743;@ EaCalc : Get register index into r11:
36744  and r11,r8,#0x0e00
36745  mov r11,r11,lsr #7
36746;@ EaRead : Read register[r11] into r1:
36747  ldr r1,[r7,r11]
36748
36749;@ Do arithmetic:
36750  mov r0,r0,asl #16
36751  orrs r1,r0,r1,asl #16
36752  and r10,r1,#0x80000000 ;@ r10=N_flag
36753  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36754
36755;@ Save result:
36756  mov r1,r1,asr #16
36757;@ EaWrite: r1 into register[r11]:
36758  strh r1,[r7,r11]
36759
36760  ldrh r8,[r4],#2 ;@ Fetch next opcode
36761  subs r5,r5,#12 ;@ Subtract cycles
36762  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36763  b CycloneEnd
36764
36765;@ ---------- [8079] or.w $33333333.l, d0 uses Op8079 ----------
36766Op8079:
36767;@ EaCalc : Get '$33333333.l' into r0:
36768  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
36769  ldrh r0,[r4],#2
36770  orr r0,r0,r2,lsl #16
36771;@ EaRead : Read '$33333333.l' (address in r0) into r0:
36772  mov lr,pc
36773  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
36774
36775;@ EaCalc : Get register index into r11:
36776  and r11,r8,#0x0e00
36777  mov r11,r11,lsr #7
36778;@ EaRead : Read register[r11] into r1:
36779  ldr r1,[r7,r11]
36780
36781;@ Do arithmetic:
36782  mov r0,r0,asl #16
36783  orrs r1,r0,r1,asl #16
36784  and r10,r1,#0x80000000 ;@ r10=N_flag
36785  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36786
36787;@ Save result:
36788  mov r1,r1,asr #16
36789;@ EaWrite: r1 into register[r11]:
36790  strh r1,[r7,r11]
36791
36792  ldrh r8,[r4],#2 ;@ Fetch next opcode
36793  subs r5,r5,#16 ;@ Subtract cycles
36794  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36795  b CycloneEnd
36796
36797;@ ---------- [807a] or.w ($3333,pc), d0; =3335 uses Op807a ----------
36798Op807a:
36799;@ EaCalc : Get '($3333,pc)' into r0:
36800  ldr r0,[r7,#0x60] ;@ Get Memory base
36801  sub r0,r4,r0 ;@ Real PC
36802  ldrsh r2,[r4],#2 ;@ Fetch extension
36803  add r0,r2,r0 ;@ ($nn,PC)
36804;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
36805  mov lr,pc
36806  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
36807
36808;@ EaCalc : Get register index into r11:
36809  and r11,r8,#0x0e00
36810  mov r11,r11,lsr #7
36811;@ EaRead : Read register[r11] into r1:
36812  ldr r1,[r7,r11]
36813
36814;@ Do arithmetic:
36815  mov r0,r0,asl #16
36816  orrs r1,r0,r1,asl #16
36817  and r10,r1,#0x80000000 ;@ r10=N_flag
36818  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36819
36820;@ Save result:
36821  mov r1,r1,asr #16
36822;@ EaWrite: r1 into register[r11]:
36823  strh r1,[r7,r11]
36824
36825  ldrh r8,[r4],#2 ;@ Fetch next opcode
36826  subs r5,r5,#12 ;@ Subtract cycles
36827  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36828  b CycloneEnd
36829
36830;@ ---------- [807b] or.w ($33,pc,d3.w*2), d0; =35 uses Op807b ----------
36831Op807b:
36832;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
36833  ldr r0,[r7,#0x60] ;@ Get Memory base
36834  ldrh r3,[r4] ;@ Get extension word
36835  sub r0,r4,r0 ;@ r0=PC
36836  add r4,r4,#2
36837  mov r2,r3,lsr #10
36838  tst r3,#0x0800 ;@ Is Rn Word or Long
36839  and r2,r2,#0x3c ;@ r2=Index of Rn
36840  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
36841  ldrne   r2,[r7,r2] ;@ r2=Rn.l
36842  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
36843  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
36844  add r0,r2,r0 ;@ r0=Disp+PC+Rn
36845;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
36846  mov lr,pc
36847  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
36848
36849;@ EaCalc : Get register index into r11:
36850  and r11,r8,#0x0e00
36851  mov r11,r11,lsr #7
36852;@ EaRead : Read register[r11] into r1:
36853  ldr r1,[r7,r11]
36854
36855;@ Do arithmetic:
36856  mov r0,r0,asl #16
36857  orrs r1,r0,r1,asl #16
36858  and r10,r1,#0x80000000 ;@ r10=N_flag
36859  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36860
36861;@ Save result:
36862  mov r1,r1,asr #16
36863;@ EaWrite: r1 into register[r11]:
36864  strh r1,[r7,r11]
36865
36866  ldrh r8,[r4],#2 ;@ Fetch next opcode
36867  subs r5,r5,#14 ;@ Subtract cycles
36868  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36869  b CycloneEnd
36870
36871;@ ---------- [807c] or.w #$3333, d0 uses Op807c ----------
36872Op807c:
36873;@ EaCalc : Get '#$3333' into r0:
36874  ldrsh r0,[r4],#2 ;@ Fetch immediate value
36875;@ EaRead : Read '#$3333' (address in r0) into r0:
36876
36877;@ EaCalc : Get register index into r11:
36878  and r11,r8,#0x0e00
36879  mov r11,r11,lsr #7
36880;@ EaRead : Read register[r11] into r1:
36881  ldr r1,[r7,r11]
36882
36883;@ Do arithmetic:
36884  mov r0,r0,asl #16
36885  orrs r1,r0,r1,asl #16
36886  and r10,r1,#0x80000000 ;@ r10=N_flag
36887  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36888
36889;@ Save result:
36890  mov r1,r1,asr #16
36891;@ EaWrite: r1 into register[r11]:
36892  strh r1,[r7,r11]
36893
36894  ldrh r8,[r4],#2 ;@ Fetch next opcode
36895  subs r5,r5,#8 ;@ Subtract cycles
36896  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36897  b CycloneEnd
36898
36899;@ ---------- [8080] or.l d0, d0 uses Op8080 ----------
36900Op8080:
36901;@ EaCalc : Get register index into r0:
36902  and r0,r8,#0x000f
36903;@ EaRead : Read register[r0] into r0:
36904  ldr r0,[r7,r0,lsl #2]
36905
36906;@ EaCalc : Get register index into r11:
36907  and r11,r8,#0x0e00
36908;@ EaRead : Read register[r11] into r1:
36909  ldr r1,[r7,r11,lsr #7]
36910
36911;@ Do arithmetic:
36912  orrs r1,r0,r1
36913  and r10,r1,#0x80000000 ;@ r10=N_flag
36914  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36915
36916;@ Save result:
36917;@ EaWrite: r1 into register[r11]:
36918  str r1,[r7,r11,lsr #7]
36919
36920  ldrh r8,[r4],#2 ;@ Fetch next opcode
36921  subs r5,r5,#8 ;@ Subtract cycles
36922  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36923  b CycloneEnd
36924
36925;@ ---------- [8090] or.l (a0), d0 uses Op8090 ----------
36926Op8090:
36927;@ EaCalc : Get '(a0)' into r0:
36928  and r2,r8,#0x000f
36929  orr r2,r2,#0x8 ;@ A0-7
36930  ldr r0,[r7,r2,lsl #2]
36931;@ EaRead : Read '(a0)' (address in r0) into r0:
36932  mov lr,pc
36933  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
36934
36935;@ EaCalc : Get register index into r11:
36936  and r11,r8,#0x0e00
36937;@ EaRead : Read register[r11] into r1:
36938  ldr r1,[r7,r11,lsr #7]
36939
36940;@ Do arithmetic:
36941  orrs r1,r0,r1
36942  and r10,r1,#0x80000000 ;@ r10=N_flag
36943  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36944
36945;@ Save result:
36946;@ EaWrite: r1 into register[r11]:
36947  str r1,[r7,r11,lsr #7]
36948
36949  ldrh r8,[r4],#2 ;@ Fetch next opcode
36950  subs r5,r5,#14 ;@ Subtract cycles
36951  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36952  b CycloneEnd
36953
36954;@ ---------- [8098] or.l (a0)+, d0 uses Op8098 ----------
36955Op8098:
36956;@ EaCalc : Get '(a0)+' into r0:
36957  and r2,r8,#0x000f
36958  ldr r0,[r7,r2,lsl #2]
36959  add r3,r0,#4 ;@ Post-increment An
36960  str r3,[r7,r2,lsl #2]
36961;@ EaRead : Read '(a0)+' (address in r0) into r0:
36962  mov lr,pc
36963  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
36964
36965;@ EaCalc : Get register index into r11:
36966  and r11,r8,#0x0e00
36967;@ EaRead : Read register[r11] into r1:
36968  ldr r1,[r7,r11,lsr #7]
36969
36970;@ Do arithmetic:
36971  orrs r1,r0,r1
36972  and r10,r1,#0x80000000 ;@ r10=N_flag
36973  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
36974
36975;@ Save result:
36976;@ EaWrite: r1 into register[r11]:
36977  str r1,[r7,r11,lsr #7]
36978
36979  ldrh r8,[r4],#2 ;@ Fetch next opcode
36980  subs r5,r5,#14 ;@ Subtract cycles
36981  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
36982  b CycloneEnd
36983
36984;@ ---------- [80a0] or.l -(a0), d0 uses Op80a0 ----------
36985Op80a0:
36986;@ EaCalc : Get '-(a0)' into r0:
36987  and r2,r8,#0x000f
36988  orr r2,r2,#0x8 ;@ A0-7
36989  ldr r0,[r7,r2,lsl #2]
36990  sub r0,r0,#4 ;@ Pre-decrement An
36991  str r0,[r7,r2,lsl #2]
36992;@ EaRead : Read '-(a0)' (address in r0) into r0:
36993  mov lr,pc
36994  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
36995
36996;@ EaCalc : Get register index into r11:
36997  and r11,r8,#0x0e00
36998;@ EaRead : Read register[r11] into r1:
36999  ldr r1,[r7,r11,lsr #7]
37000
37001;@ Do arithmetic:
37002  orrs r1,r0,r1
37003  and r10,r1,#0x80000000 ;@ r10=N_flag
37004  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37005
37006;@ Save result:
37007;@ EaWrite: r1 into register[r11]:
37008  str r1,[r7,r11,lsr #7]
37009
37010  ldrh r8,[r4],#2 ;@ Fetch next opcode
37011  subs r5,r5,#16 ;@ Subtract cycles
37012  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37013  b CycloneEnd
37014
37015;@ ---------- [80a8] or.l ($3333,a0), d0 uses Op80a8 ----------
37016Op80a8:
37017;@ EaCalc : Get '($3333,a0)' into r0:
37018  ldrsh r0,[r4],#2 ;@ Fetch offset
37019  and r2,r8,#0x000f
37020  ldr r2,[r7,r2,lsl #2]
37021  add r0,r0,r2 ;@ Add on offset
37022;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
37023  mov lr,pc
37024  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
37025
37026;@ EaCalc : Get register index into r11:
37027  and r11,r8,#0x0e00
37028;@ EaRead : Read register[r11] into r1:
37029  ldr r1,[r7,r11,lsr #7]
37030
37031;@ Do arithmetic:
37032  orrs r1,r0,r1
37033  and r10,r1,#0x80000000 ;@ r10=N_flag
37034  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37035
37036;@ Save result:
37037;@ EaWrite: r1 into register[r11]:
37038  str r1,[r7,r11,lsr #7]
37039
37040  ldrh r8,[r4],#2 ;@ Fetch next opcode
37041  subs r5,r5,#18 ;@ Subtract cycles
37042  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37043  b CycloneEnd
37044
37045;@ ---------- [80b0] or.l ($33,a0,d3.w*2), d0 uses Op80b0 ----------
37046Op80b0:
37047;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
37048;@ Get extension word into r3:
37049  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
37050  mov r2,r3,lsr #10
37051  tst r3,#0x0800 ;@ Is Rn Word or Long
37052  and r2,r2,#0x3c ;@ r2=Index of Rn
37053  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
37054  ldrne   r2,[r7,r2] ;@ r2=Rn.l
37055  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
37056  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
37057  and r2,r8,#0x000f
37058  orr r2,r2,#0x8 ;@ A0-7
37059  ldr r2,[r7,r2,lsl #2]
37060  add r0,r2,r3 ;@ r0=Disp+An+Rn
37061;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
37062  mov lr,pc
37063  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
37064
37065;@ EaCalc : Get register index into r11:
37066  and r11,r8,#0x0e00
37067;@ EaRead : Read register[r11] into r1:
37068  ldr r1,[r7,r11,lsr #7]
37069
37070;@ Do arithmetic:
37071  orrs r1,r0,r1
37072  and r10,r1,#0x80000000 ;@ r10=N_flag
37073  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37074
37075;@ Save result:
37076;@ EaWrite: r1 into register[r11]:
37077  str r1,[r7,r11,lsr #7]
37078
37079  ldrh r8,[r4],#2 ;@ Fetch next opcode
37080  subs r5,r5,#20 ;@ Subtract cycles
37081  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37082  b CycloneEnd
37083
37084;@ ---------- [80b8] or.l $3333.w, d0 uses Op80b8 ----------
37085Op80b8:
37086;@ EaCalc : Get '$3333.w' into r0:
37087  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
37088;@ EaRead : Read '$3333.w' (address in r0) into r0:
37089  mov lr,pc
37090  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
37091
37092;@ EaCalc : Get register index into r11:
37093  and r11,r8,#0x0e00
37094;@ EaRead : Read register[r11] into r1:
37095  ldr r1,[r7,r11,lsr #7]
37096
37097;@ Do arithmetic:
37098  orrs r1,r0,r1
37099  and r10,r1,#0x80000000 ;@ r10=N_flag
37100  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37101
37102;@ Save result:
37103;@ EaWrite: r1 into register[r11]:
37104  str r1,[r7,r11,lsr #7]
37105
37106  ldrh r8,[r4],#2 ;@ Fetch next opcode
37107  subs r5,r5,#18 ;@ Subtract cycles
37108  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37109  b CycloneEnd
37110
37111;@ ---------- [80b9] or.l $33333333.l, d0 uses Op80b9 ----------
37112Op80b9:
37113;@ EaCalc : Get '$33333333.l' into r0:
37114  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
37115  ldrh r0,[r4],#2
37116  orr r0,r0,r2,lsl #16
37117;@ EaRead : Read '$33333333.l' (address in r0) into r0:
37118  mov lr,pc
37119  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
37120
37121;@ EaCalc : Get register index into r11:
37122  and r11,r8,#0x0e00
37123;@ EaRead : Read register[r11] into r1:
37124  ldr r1,[r7,r11,lsr #7]
37125
37126;@ Do arithmetic:
37127  orrs r1,r0,r1
37128  and r10,r1,#0x80000000 ;@ r10=N_flag
37129  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37130
37131;@ Save result:
37132;@ EaWrite: r1 into register[r11]:
37133  str r1,[r7,r11,lsr #7]
37134
37135  ldrh r8,[r4],#2 ;@ Fetch next opcode
37136  subs r5,r5,#22 ;@ Subtract cycles
37137  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37138  b CycloneEnd
37139
37140;@ ---------- [80ba] or.l ($3333,pc), d0; =3335 uses Op80ba ----------
37141Op80ba:
37142;@ EaCalc : Get '($3333,pc)' into r0:
37143  ldr r0,[r7,#0x60] ;@ Get Memory base
37144  sub r0,r4,r0 ;@ Real PC
37145  ldrsh r2,[r4],#2 ;@ Fetch extension
37146  add r0,r2,r0 ;@ ($nn,PC)
37147;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
37148  mov lr,pc
37149  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
37150
37151;@ EaCalc : Get register index into r11:
37152  and r11,r8,#0x0e00
37153;@ EaRead : Read register[r11] into r1:
37154  ldr r1,[r7,r11,lsr #7]
37155
37156;@ Do arithmetic:
37157  orrs r1,r0,r1
37158  and r10,r1,#0x80000000 ;@ r10=N_flag
37159  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37160
37161;@ Save result:
37162;@ EaWrite: r1 into register[r11]:
37163  str r1,[r7,r11,lsr #7]
37164
37165  ldrh r8,[r4],#2 ;@ Fetch next opcode
37166  subs r5,r5,#18 ;@ Subtract cycles
37167  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37168  b CycloneEnd
37169
37170;@ ---------- [80bb] or.l ($33,pc,d3.w*2), d0; =35 uses Op80bb ----------
37171Op80bb:
37172;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
37173  ldr r0,[r7,#0x60] ;@ Get Memory base
37174  ldrh r3,[r4] ;@ Get extension word
37175  sub r0,r4,r0 ;@ r0=PC
37176  add r4,r4,#2
37177  mov r2,r3,lsr #10
37178  tst r3,#0x0800 ;@ Is Rn Word or Long
37179  and r2,r2,#0x3c ;@ r2=Index of Rn
37180  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
37181  ldrne   r2,[r7,r2] ;@ r2=Rn.l
37182  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
37183  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
37184  add r0,r2,r0 ;@ r0=Disp+PC+Rn
37185;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
37186  mov lr,pc
37187  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
37188
37189;@ EaCalc : Get register index into r11:
37190  and r11,r8,#0x0e00
37191;@ EaRead : Read register[r11] into r1:
37192  ldr r1,[r7,r11,lsr #7]
37193
37194;@ Do arithmetic:
37195  orrs r1,r0,r1
37196  and r10,r1,#0x80000000 ;@ r10=N_flag
37197  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37198
37199;@ Save result:
37200;@ EaWrite: r1 into register[r11]:
37201  str r1,[r7,r11,lsr #7]
37202
37203  ldrh r8,[r4],#2 ;@ Fetch next opcode
37204  subs r5,r5,#20 ;@ Subtract cycles
37205  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37206  b CycloneEnd
37207
37208;@ ---------- [80bc] or.l #$33333333, d0 uses Op80bc ----------
37209Op80bc:
37210;@ EaCalc : Get '#$33333333' into r0:
37211  ldrh r2,[r4],#2 ;@ Fetch immediate value
37212  ldrh r3,[r4],#2
37213  orr r0,r3,r2,lsl #16
37214;@ EaRead : Read '#$33333333' (address in r0) into r0:
37215
37216;@ EaCalc : Get register index into r11:
37217  and r11,r8,#0x0e00
37218;@ EaRead : Read register[r11] into r1:
37219  ldr r1,[r7,r11,lsr #7]
37220
37221;@ Do arithmetic:
37222  orrs r1,r0,r1
37223  and r10,r1,#0x80000000 ;@ r10=N_flag
37224  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37225
37226;@ Save result:
37227;@ EaWrite: r1 into register[r11]:
37228  str r1,[r7,r11,lsr #7]
37229
37230  ldrh r8,[r4],#2 ;@ Fetch next opcode
37231  subs r5,r5,#16 ;@ Subtract cycles
37232  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37233  b CycloneEnd
37234
37235;@ ---------- [80c0] divu.w d0, d0 uses Op80c0 ----------
37236Op80c0:
37237;@ EaCalc : Get register index into r0:
37238  and r0,r8,#0x000f
37239;@ EaRead : Read register[r0] into r0:
37240  ldr r0,[r7,r0,lsl #2]
37241
37242;@ EaCalc : Get register index into r11:
37243  and r11,r8,#0x0e00
37244;@ EaRead : Read register[r11] into r2:
37245  ldr r2,[r7,r11,lsr #7]
37246
37247  movs r1,r0,asl #16
37248  beq divzero80c0 ;@ division by zero
37249
37250  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37251
37252;@ Divide r2 by r0
37253  mov r3,#0
37254  mov r1,r0
37255
37256;@ Shift up divisor till it's just less than numerator
37257Shift80c0:
37258  cmp r1,r2,lsr #1
37259  movls r1,r1,lsl #1
37260  bcc Shift80c0
37261
37262Divide80c0:
37263  cmp r2,r1
37264  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37265  subcs r2,r2,r1
37266  teq r1,r0
37267  movne r1,r1,lsr #1
37268  bne Divide80c0
37269
37270;@r3==quotient,r2==remainder
37271  movs r1,r3,lsr #16 ;@ check for overflow condition
37272  orrne r10,r10,#0x10000000 ;@ set overflow flag
37273  bne endofop80c0 ;@ overflow!
37274
37275  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37276  and r10,r1,#0x80000000 ;@ r10=N_flag
37277  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37278  mov r1,r1,lsr #16
37279  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37280
37281;@ EaWrite: r1 into register[r11]:
37282  str r1,[r7,r11,lsr #7]
37283
37284endofop80c0:
37285  ldrh r8,[r4],#2 ;@ Fetch next opcode
37286  subs r5,r5,#140 ;@ Subtract cycles
37287  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37288  b CycloneEnd
37289
37290divzero80c0:
37291  mov r0,#5 ;@ Divide by zero
37292  bl Exception
37293  ldrh r8,[r4],#2 ;@ Fetch next opcode
37294  subs r5,r5,#178 ;@ Subtract cycles
37295  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37296  b CycloneEnd
37297
37298
37299;@ ---------- [80d0] divu.w (a0), d0 uses Op80d0 ----------
37300Op80d0:
37301;@ EaCalc : Get '(a0)' into r0:
37302  and r2,r8,#0x000f
37303  orr r2,r2,#0x8 ;@ A0-7
37304  ldr r0,[r7,r2,lsl #2]
37305;@ EaRead : Read '(a0)' (address in r0) into r0:
37306  mov lr,pc
37307  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
37308
37309;@ EaCalc : Get register index into r11:
37310  and r11,r8,#0x0e00
37311;@ EaRead : Read register[r11] into r2:
37312  ldr r2,[r7,r11,lsr #7]
37313
37314  movs r1,r0,asl #16
37315  beq divzero80d0 ;@ division by zero
37316
37317  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37318
37319;@ Divide r2 by r0
37320  mov r3,#0
37321  mov r1,r0
37322
37323;@ Shift up divisor till it's just less than numerator
37324Shift80d0:
37325  cmp r1,r2,lsr #1
37326  movls r1,r1,lsl #1
37327  bcc Shift80d0
37328
37329Divide80d0:
37330  cmp r2,r1
37331  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37332  subcs r2,r2,r1
37333  teq r1,r0
37334  movne r1,r1,lsr #1
37335  bne Divide80d0
37336
37337;@r3==quotient,r2==remainder
37338  movs r1,r3,lsr #16 ;@ check for overflow condition
37339  orrne r10,r10,#0x10000000 ;@ set overflow flag
37340  bne endofop80d0 ;@ overflow!
37341
37342  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37343  and r10,r1,#0x80000000 ;@ r10=N_flag
37344  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37345  mov r1,r1,lsr #16
37346  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37347
37348;@ EaWrite: r1 into register[r11]:
37349  str r1,[r7,r11,lsr #7]
37350
37351endofop80d0:
37352  ldrh r8,[r4],#2 ;@ Fetch next opcode
37353  subs r5,r5,#144 ;@ Subtract cycles
37354  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37355  b CycloneEnd
37356
37357divzero80d0:
37358  mov r0,#5 ;@ Divide by zero
37359  bl Exception
37360  ldrh r8,[r4],#2 ;@ Fetch next opcode
37361  subs r5,r5,#182 ;@ Subtract cycles
37362  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37363  b CycloneEnd
37364
37365
37366;@ ---------- [80d8] divu.w (a0)+, d0 uses Op80d8 ----------
37367Op80d8:
37368;@ EaCalc : Get '(a0)+' into r0:
37369  and r2,r8,#0x000f
37370  ldr r0,[r7,r2,lsl #2]
37371  add r3,r0,#2 ;@ Post-increment An
37372  str r3,[r7,r2,lsl #2]
37373;@ EaRead : Read '(a0)+' (address in r0) into r0:
37374  mov lr,pc
37375  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
37376
37377;@ EaCalc : Get register index into r11:
37378  and r11,r8,#0x0e00
37379;@ EaRead : Read register[r11] into r2:
37380  ldr r2,[r7,r11,lsr #7]
37381
37382  movs r1,r0,asl #16
37383  beq divzero80d8 ;@ division by zero
37384
37385  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37386
37387;@ Divide r2 by r0
37388  mov r3,#0
37389  mov r1,r0
37390
37391;@ Shift up divisor till it's just less than numerator
37392Shift80d8:
37393  cmp r1,r2,lsr #1
37394  movls r1,r1,lsl #1
37395  bcc Shift80d8
37396
37397Divide80d8:
37398  cmp r2,r1
37399  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37400  subcs r2,r2,r1
37401  teq r1,r0
37402  movne r1,r1,lsr #1
37403  bne Divide80d8
37404
37405;@r3==quotient,r2==remainder
37406  movs r1,r3,lsr #16 ;@ check for overflow condition
37407  orrne r10,r10,#0x10000000 ;@ set overflow flag
37408  bne endofop80d8 ;@ overflow!
37409
37410  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37411  and r10,r1,#0x80000000 ;@ r10=N_flag
37412  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37413  mov r1,r1,lsr #16
37414  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37415
37416;@ EaWrite: r1 into register[r11]:
37417  str r1,[r7,r11,lsr #7]
37418
37419endofop80d8:
37420  ldrh r8,[r4],#2 ;@ Fetch next opcode
37421  subs r5,r5,#144 ;@ Subtract cycles
37422  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37423  b CycloneEnd
37424
37425divzero80d8:
37426  mov r0,#5 ;@ Divide by zero
37427  bl Exception
37428  ldrh r8,[r4],#2 ;@ Fetch next opcode
37429  subs r5,r5,#182 ;@ Subtract cycles
37430  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37431  b CycloneEnd
37432
37433
37434;@ ---------- [80e0] divu.w -(a0), d0 uses Op80e0 ----------
37435Op80e0:
37436;@ EaCalc : Get '-(a0)' into r0:
37437  and r2,r8,#0x000f
37438  orr r2,r2,#0x8 ;@ A0-7
37439  ldr r0,[r7,r2,lsl #2]
37440  sub r0,r0,#2 ;@ Pre-decrement An
37441  str r0,[r7,r2,lsl #2]
37442;@ EaRead : Read '-(a0)' (address in r0) into r0:
37443  mov lr,pc
37444  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
37445
37446;@ EaCalc : Get register index into r11:
37447  and r11,r8,#0x0e00
37448;@ EaRead : Read register[r11] into r2:
37449  ldr r2,[r7,r11,lsr #7]
37450
37451  movs r1,r0,asl #16
37452  beq divzero80e0 ;@ division by zero
37453
37454  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37455
37456;@ Divide r2 by r0
37457  mov r3,#0
37458  mov r1,r0
37459
37460;@ Shift up divisor till it's just less than numerator
37461Shift80e0:
37462  cmp r1,r2,lsr #1
37463  movls r1,r1,lsl #1
37464  bcc Shift80e0
37465
37466Divide80e0:
37467  cmp r2,r1
37468  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37469  subcs r2,r2,r1
37470  teq r1,r0
37471  movne r1,r1,lsr #1
37472  bne Divide80e0
37473
37474;@r3==quotient,r2==remainder
37475  movs r1,r3,lsr #16 ;@ check for overflow condition
37476  orrne r10,r10,#0x10000000 ;@ set overflow flag
37477  bne endofop80e0 ;@ overflow!
37478
37479  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37480  and r10,r1,#0x80000000 ;@ r10=N_flag
37481  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37482  mov r1,r1,lsr #16
37483  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37484
37485;@ EaWrite: r1 into register[r11]:
37486  str r1,[r7,r11,lsr #7]
37487
37488endofop80e0:
37489  ldrh r8,[r4],#2 ;@ Fetch next opcode
37490  subs r5,r5,#146 ;@ Subtract cycles
37491  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37492  b CycloneEnd
37493
37494divzero80e0:
37495  mov r0,#5 ;@ Divide by zero
37496  bl Exception
37497  ldrh r8,[r4],#2 ;@ Fetch next opcode
37498  subs r5,r5,#184 ;@ Subtract cycles
37499  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37500  b CycloneEnd
37501
37502
37503;@ ---------- [80e8] divu.w ($3333,a0), d0 uses Op80e8 ----------
37504Op80e8:
37505;@ EaCalc : Get '($3333,a0)' into r0:
37506  ldrsh r0,[r4],#2 ;@ Fetch offset
37507  and r2,r8,#0x000f
37508  ldr r2,[r7,r2,lsl #2]
37509  add r0,r0,r2 ;@ Add on offset
37510;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
37511  mov lr,pc
37512  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
37513
37514;@ EaCalc : Get register index into r11:
37515  and r11,r8,#0x0e00
37516;@ EaRead : Read register[r11] into r2:
37517  ldr r2,[r7,r11,lsr #7]
37518
37519  movs r1,r0,asl #16
37520  beq divzero80e8 ;@ division by zero
37521
37522  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37523
37524;@ Divide r2 by r0
37525  mov r3,#0
37526  mov r1,r0
37527
37528;@ Shift up divisor till it's just less than numerator
37529Shift80e8:
37530  cmp r1,r2,lsr #1
37531  movls r1,r1,lsl #1
37532  bcc Shift80e8
37533
37534Divide80e8:
37535  cmp r2,r1
37536  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37537  subcs r2,r2,r1
37538  teq r1,r0
37539  movne r1,r1,lsr #1
37540  bne Divide80e8
37541
37542;@r3==quotient,r2==remainder
37543  movs r1,r3,lsr #16 ;@ check for overflow condition
37544  orrne r10,r10,#0x10000000 ;@ set overflow flag
37545  bne endofop80e8 ;@ overflow!
37546
37547  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37548  and r10,r1,#0x80000000 ;@ r10=N_flag
37549  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37550  mov r1,r1,lsr #16
37551  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37552
37553;@ EaWrite: r1 into register[r11]:
37554  str r1,[r7,r11,lsr #7]
37555
37556endofop80e8:
37557  ldrh r8,[r4],#2 ;@ Fetch next opcode
37558  subs r5,r5,#148 ;@ Subtract cycles
37559  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37560  b CycloneEnd
37561
37562divzero80e8:
37563  mov r0,#5 ;@ Divide by zero
37564  bl Exception
37565  ldrh r8,[r4],#2 ;@ Fetch next opcode
37566  subs r5,r5,#186 ;@ Subtract cycles
37567  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37568  b CycloneEnd
37569
37570
37571;@ ---------- [80f0] divu.w ($33,a0,d3.w*2), d0 uses Op80f0 ----------
37572Op80f0:
37573;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
37574;@ Get extension word into r3:
37575  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
37576  mov r2,r3,lsr #10
37577  tst r3,#0x0800 ;@ Is Rn Word or Long
37578  and r2,r2,#0x3c ;@ r2=Index of Rn
37579  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
37580  ldrne   r2,[r7,r2] ;@ r2=Rn.l
37581  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
37582  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
37583  and r2,r8,#0x000f
37584  orr r2,r2,#0x8 ;@ A0-7
37585  ldr r2,[r7,r2,lsl #2]
37586  add r0,r2,r3 ;@ r0=Disp+An+Rn
37587;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
37588  mov lr,pc
37589  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
37590
37591;@ EaCalc : Get register index into r11:
37592  and r11,r8,#0x0e00
37593;@ EaRead : Read register[r11] into r2:
37594  ldr r2,[r7,r11,lsr #7]
37595
37596  movs r1,r0,asl #16
37597  beq divzero80f0 ;@ division by zero
37598
37599  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37600
37601;@ Divide r2 by r0
37602  mov r3,#0
37603  mov r1,r0
37604
37605;@ Shift up divisor till it's just less than numerator
37606Shift80f0:
37607  cmp r1,r2,lsr #1
37608  movls r1,r1,lsl #1
37609  bcc Shift80f0
37610
37611Divide80f0:
37612  cmp r2,r1
37613  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37614  subcs r2,r2,r1
37615  teq r1,r0
37616  movne r1,r1,lsr #1
37617  bne Divide80f0
37618
37619;@r3==quotient,r2==remainder
37620  movs r1,r3,lsr #16 ;@ check for overflow condition
37621  orrne r10,r10,#0x10000000 ;@ set overflow flag
37622  bne endofop80f0 ;@ overflow!
37623
37624  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37625  and r10,r1,#0x80000000 ;@ r10=N_flag
37626  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37627  mov r1,r1,lsr #16
37628  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37629
37630;@ EaWrite: r1 into register[r11]:
37631  str r1,[r7,r11,lsr #7]
37632
37633endofop80f0:
37634  ldrh r8,[r4],#2 ;@ Fetch next opcode
37635  subs r5,r5,#150 ;@ Subtract cycles
37636  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37637  b CycloneEnd
37638
37639divzero80f0:
37640  mov r0,#5 ;@ Divide by zero
37641  bl Exception
37642  ldrh r8,[r4],#2 ;@ Fetch next opcode
37643  subs r5,r5,#188 ;@ Subtract cycles
37644  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37645  b CycloneEnd
37646
37647
37648;@ ---------- [80f8] divu.w $3333.w, d0 uses Op80f8 ----------
37649Op80f8:
37650;@ EaCalc : Get '$3333.w' into r0:
37651  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
37652;@ EaRead : Read '$3333.w' (address in r0) into r0:
37653  mov lr,pc
37654  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
37655
37656;@ EaCalc : Get register index into r11:
37657  and r11,r8,#0x0e00
37658;@ EaRead : Read register[r11] into r2:
37659  ldr r2,[r7,r11,lsr #7]
37660
37661  movs r1,r0,asl #16
37662  beq divzero80f8 ;@ division by zero
37663
37664  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37665
37666;@ Divide r2 by r0
37667  mov r3,#0
37668  mov r1,r0
37669
37670;@ Shift up divisor till it's just less than numerator
37671Shift80f8:
37672  cmp r1,r2,lsr #1
37673  movls r1,r1,lsl #1
37674  bcc Shift80f8
37675
37676Divide80f8:
37677  cmp r2,r1
37678  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37679  subcs r2,r2,r1
37680  teq r1,r0
37681  movne r1,r1,lsr #1
37682  bne Divide80f8
37683
37684;@r3==quotient,r2==remainder
37685  movs r1,r3,lsr #16 ;@ check for overflow condition
37686  orrne r10,r10,#0x10000000 ;@ set overflow flag
37687  bne endofop80f8 ;@ overflow!
37688
37689  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37690  and r10,r1,#0x80000000 ;@ r10=N_flag
37691  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37692  mov r1,r1,lsr #16
37693  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37694
37695;@ EaWrite: r1 into register[r11]:
37696  str r1,[r7,r11,lsr #7]
37697
37698endofop80f8:
37699  ldrh r8,[r4],#2 ;@ Fetch next opcode
37700  subs r5,r5,#148 ;@ Subtract cycles
37701  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37702  b CycloneEnd
37703
37704divzero80f8:
37705  mov r0,#5 ;@ Divide by zero
37706  bl Exception
37707  ldrh r8,[r4],#2 ;@ Fetch next opcode
37708  subs r5,r5,#186 ;@ Subtract cycles
37709  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37710  b CycloneEnd
37711
37712
37713;@ ---------- [80f9] divu.w $33333333.l, d0 uses Op80f9 ----------
37714Op80f9:
37715;@ EaCalc : Get '$33333333.l' into r0:
37716  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
37717  ldrh r0,[r4],#2
37718  orr r0,r0,r2,lsl #16
37719;@ EaRead : Read '$33333333.l' (address in r0) into r0:
37720  mov lr,pc
37721  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
37722
37723;@ EaCalc : Get register index into r11:
37724  and r11,r8,#0x0e00
37725;@ EaRead : Read register[r11] into r2:
37726  ldr r2,[r7,r11,lsr #7]
37727
37728  movs r1,r0,asl #16
37729  beq divzero80f9 ;@ division by zero
37730
37731  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37732
37733;@ Divide r2 by r0
37734  mov r3,#0
37735  mov r1,r0
37736
37737;@ Shift up divisor till it's just less than numerator
37738Shift80f9:
37739  cmp r1,r2,lsr #1
37740  movls r1,r1,lsl #1
37741  bcc Shift80f9
37742
37743Divide80f9:
37744  cmp r2,r1
37745  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37746  subcs r2,r2,r1
37747  teq r1,r0
37748  movne r1,r1,lsr #1
37749  bne Divide80f9
37750
37751;@r3==quotient,r2==remainder
37752  movs r1,r3,lsr #16 ;@ check for overflow condition
37753  orrne r10,r10,#0x10000000 ;@ set overflow flag
37754  bne endofop80f9 ;@ overflow!
37755
37756  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37757  and r10,r1,#0x80000000 ;@ r10=N_flag
37758  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37759  mov r1,r1,lsr #16
37760  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37761
37762;@ EaWrite: r1 into register[r11]:
37763  str r1,[r7,r11,lsr #7]
37764
37765endofop80f9:
37766  ldrh r8,[r4],#2 ;@ Fetch next opcode
37767  subs r5,r5,#152 ;@ Subtract cycles
37768  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37769  b CycloneEnd
37770
37771divzero80f9:
37772  mov r0,#5 ;@ Divide by zero
37773  bl Exception
37774  ldrh r8,[r4],#2 ;@ Fetch next opcode
37775  subs r5,r5,#190 ;@ Subtract cycles
37776  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37777  b CycloneEnd
37778
37779
37780;@ ---------- [80fa] divu.w ($3333,pc), d0; =3335 uses Op80fa ----------
37781Op80fa:
37782;@ EaCalc : Get '($3333,pc)' into r0:
37783  ldr r0,[r7,#0x60] ;@ Get Memory base
37784  sub r0,r4,r0 ;@ Real PC
37785  ldrsh r2,[r4],#2 ;@ Fetch extension
37786  add r0,r2,r0 ;@ ($nn,PC)
37787;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
37788  mov lr,pc
37789  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
37790
37791;@ EaCalc : Get register index into r11:
37792  and r11,r8,#0x0e00
37793;@ EaRead : Read register[r11] into r2:
37794  ldr r2,[r7,r11,lsr #7]
37795
37796  movs r1,r0,asl #16
37797  beq divzero80fa ;@ division by zero
37798
37799  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37800
37801;@ Divide r2 by r0
37802  mov r3,#0
37803  mov r1,r0
37804
37805;@ Shift up divisor till it's just less than numerator
37806Shift80fa:
37807  cmp r1,r2,lsr #1
37808  movls r1,r1,lsl #1
37809  bcc Shift80fa
37810
37811Divide80fa:
37812  cmp r2,r1
37813  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37814  subcs r2,r2,r1
37815  teq r1,r0
37816  movne r1,r1,lsr #1
37817  bne Divide80fa
37818
37819;@r3==quotient,r2==remainder
37820  movs r1,r3,lsr #16 ;@ check for overflow condition
37821  orrne r10,r10,#0x10000000 ;@ set overflow flag
37822  bne endofop80fa ;@ overflow!
37823
37824  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37825  and r10,r1,#0x80000000 ;@ r10=N_flag
37826  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37827  mov r1,r1,lsr #16
37828  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37829
37830;@ EaWrite: r1 into register[r11]:
37831  str r1,[r7,r11,lsr #7]
37832
37833endofop80fa:
37834  ldrh r8,[r4],#2 ;@ Fetch next opcode
37835  subs r5,r5,#148 ;@ Subtract cycles
37836  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37837  b CycloneEnd
37838
37839divzero80fa:
37840  mov r0,#5 ;@ Divide by zero
37841  bl Exception
37842  ldrh r8,[r4],#2 ;@ Fetch next opcode
37843  subs r5,r5,#186 ;@ Subtract cycles
37844  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37845  b CycloneEnd
37846
37847
37848;@ ---------- [80fb] divu.w ($33,pc,d3.w*2), d0; =35 uses Op80fb ----------
37849Op80fb:
37850;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
37851  ldr r0,[r7,#0x60] ;@ Get Memory base
37852  ldrh r3,[r4] ;@ Get extension word
37853  sub r0,r4,r0 ;@ r0=PC
37854  add r4,r4,#2
37855  mov r2,r3,lsr #10
37856  tst r3,#0x0800 ;@ Is Rn Word or Long
37857  and r2,r2,#0x3c ;@ r2=Index of Rn
37858  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
37859  ldrne   r2,[r7,r2] ;@ r2=Rn.l
37860  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
37861  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
37862  add r0,r2,r0 ;@ r0=Disp+PC+Rn
37863;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
37864  mov lr,pc
37865  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
37866
37867;@ EaCalc : Get register index into r11:
37868  and r11,r8,#0x0e00
37869;@ EaRead : Read register[r11] into r2:
37870  ldr r2,[r7,r11,lsr #7]
37871
37872  movs r1,r0,asl #16
37873  beq divzero80fb ;@ division by zero
37874
37875  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37876
37877;@ Divide r2 by r0
37878  mov r3,#0
37879  mov r1,r0
37880
37881;@ Shift up divisor till it's just less than numerator
37882Shift80fb:
37883  cmp r1,r2,lsr #1
37884  movls r1,r1,lsl #1
37885  bcc Shift80fb
37886
37887Divide80fb:
37888  cmp r2,r1
37889  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37890  subcs r2,r2,r1
37891  teq r1,r0
37892  movne r1,r1,lsr #1
37893  bne Divide80fb
37894
37895;@r3==quotient,r2==remainder
37896  movs r1,r3,lsr #16 ;@ check for overflow condition
37897  orrne r10,r10,#0x10000000 ;@ set overflow flag
37898  bne endofop80fb ;@ overflow!
37899
37900  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37901  and r10,r1,#0x80000000 ;@ r10=N_flag
37902  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37903  mov r1,r1,lsr #16
37904  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37905
37906;@ EaWrite: r1 into register[r11]:
37907  str r1,[r7,r11,lsr #7]
37908
37909endofop80fb:
37910  ldrh r8,[r4],#2 ;@ Fetch next opcode
37911  subs r5,r5,#150 ;@ Subtract cycles
37912  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37913  b CycloneEnd
37914
37915divzero80fb:
37916  mov r0,#5 ;@ Divide by zero
37917  bl Exception
37918  ldrh r8,[r4],#2 ;@ Fetch next opcode
37919  subs r5,r5,#188 ;@ Subtract cycles
37920  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37921  b CycloneEnd
37922
37923
37924;@ ---------- [80fc] divu.w #$3333, d0 uses Op80fc ----------
37925Op80fc:
37926;@ EaCalc : Get '#$3333' into r0:
37927  ldrsh r0,[r4],#2 ;@ Fetch immediate value
37928;@ EaRead : Read '#$3333' (address in r0) into r0:
37929
37930;@ EaCalc : Get register index into r11:
37931  and r11,r8,#0x0e00
37932;@ EaRead : Read register[r11] into r2:
37933  ldr r2,[r7,r11,lsr #7]
37934
37935  movs r1,r0,asl #16
37936  beq divzero80fc ;@ division by zero
37937
37938  mov r0,r1,lsr #16 ;@ use only 16 bits of divisor
37939
37940;@ Divide r2 by r0
37941  mov r3,#0
37942  mov r1,r0
37943
37944;@ Shift up divisor till it's just less than numerator
37945Shift80fc:
37946  cmp r1,r2,lsr #1
37947  movls r1,r1,lsl #1
37948  bcc Shift80fc
37949
37950Divide80fc:
37951  cmp r2,r1
37952  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
37953  subcs r2,r2,r1
37954  teq r1,r0
37955  movne r1,r1,lsr #1
37956  bne Divide80fc
37957
37958;@r3==quotient,r2==remainder
37959  movs r1,r3,lsr #16 ;@ check for overflow condition
37960  orrne r10,r10,#0x10000000 ;@ set overflow flag
37961  bne endofop80fc ;@ overflow!
37962
37963  movs r1,r3,lsl #16 ;@ Clip to 16-bits
37964  and r10,r1,#0x80000000 ;@ r10=N_flag
37965  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
37966  mov r1,r1,lsr #16
37967  orr r1,r1,r2,lsl #16 ;@ Insert remainder
37968
37969;@ EaWrite: r1 into register[r11]:
37970  str r1,[r7,r11,lsr #7]
37971
37972endofop80fc:
37973  ldrh r8,[r4],#2 ;@ Fetch next opcode
37974  subs r5,r5,#144 ;@ Subtract cycles
37975  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37976  b CycloneEnd
37977
37978divzero80fc:
37979  mov r0,#5 ;@ Divide by zero
37980  bl Exception
37981  ldrh r8,[r4],#2 ;@ Fetch next opcode
37982  subs r5,r5,#182 ;@ Subtract cycles
37983  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
37984  b CycloneEnd
37985
37986
37987;@ ---------- [8100] sbcd d0, d0 uses Op8100 ----------
37988Op8100:
37989;@ Get src/dest reg vals
37990;@ EaCalc : Get register index into r6:
37991  and r6,r8,#0x0007
37992;@ EaRead : Read register[r6] into r6:
37993  ldr r6,[r7,r6,lsl #2]
37994
37995;@ EaCalc : Get register index into r11:
37996  and r11,r8,#0x0e00
37997;@ EaRead : Read register[r11] into r0:
37998  ldr r0,[r7,r11,lsr #7]
37999
38000  mov r6,r6,asl #24
38001  mov r1,r0,asl #24
38002
38003  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
38004  ldr r0,[r7,#0x4c] ;@ Get X bit
38005  mov r3,#0x00f00000
38006  and r2,r3,r6,lsr #4
38007  tst r0,#0x20000000
38008  and r0,r3,r1,lsr #4
38009  sub r0,r0,r2
38010  subne r0,r0,#0x00100000
38011  cmp r0,#0x00900000
38012  subhi r0,r0,#0x00600000 ;@ Decimal adjust units
38013  mov r2,r1,lsr #28
38014  add r0,r0,r2,lsl #24
38015  mov r2,r6,lsr #28
38016  sub r0,r0,r2,lsl #24
38017  cmp r0,#0x09900000
38018  orrhi r10,r10,#0xa0000000 ;@ N and C
38019  addhi r0,r0,#0x0a000000
38020  movs r0,r0,lsl #4
38021  bicne r10,r10,#0x40000000 ;@ Z flag
38022  str r10,[r7,#0x4c] ;@ Save X bit
38023
38024;@ EaWrite: r0 into register[r11]:
38025  mov r0,r0,lsr #24
38026  strb r0,[r7,r11,lsr #7]
38027
38028  ldr r6,[r7,#0x54]
38029  ldrh r8,[r4],#2 ;@ Fetch next opcode
38030  subs r5,r5,#6 ;@ Subtract cycles
38031  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38032  b CycloneEnd
38033
38034;@ ---------- [8108] sbcd -(a0), -(a0) uses Op8108 ----------
38035Op8108:
38036;@ Get src/dest EA vals
38037;@ EaCalc : Get '-(a0)' into r0:
38038  and r2,r8,#0x000f
38039  ldr r0,[r7,r2,lsl #2]
38040  sub r0,r0,#1 ;@ Pre-decrement An
38041  str r0,[r7,r2,lsl #2]
38042;@ EaRead : Read '-(a0)' (address in r0) into r6:
38043  mov lr,pc
38044  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38045  mov r6,r0,asl #24
38046
38047;@ EaCalc : Get '-(a0)' into r11:
38048  and r2,r8,#0x0e00
38049  orr r2,r2,#0x1000 ;@ A0-7
38050  ldr r11,[r7,r2,lsr #7]
38051  sub r11,r11,#1 ;@ Pre-decrement An
38052  str r11,[r7,r2,lsr #7]
38053;@ EaRead : Read '-(a0)' (address in r11) into r0:
38054  add lr,pc,#4
38055  mov r0,r11
38056  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38057
38058  mov r1,r0,asl #24
38059
38060  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
38061  ldr r0,[r7,#0x4c] ;@ Get X bit
38062  mov r3,#0x00f00000
38063  and r2,r3,r6,lsr #4
38064  tst r0,#0x20000000
38065  and r0,r3,r1,lsr #4
38066  sub r0,r0,r2
38067  subne r0,r0,#0x00100000
38068  cmp r0,#0x00900000
38069  subhi r0,r0,#0x00600000 ;@ Decimal adjust units
38070  mov r2,r1,lsr #28
38071  add r0,r0,r2,lsl #24
38072  mov r2,r6,lsr #28
38073  sub r0,r0,r2,lsl #24
38074  cmp r0,#0x09900000
38075  orrhi r10,r10,#0xa0000000 ;@ N and C
38076  addhi r0,r0,#0x0a000000
38077  movs r0,r0,lsl #4
38078  bicne r10,r10,#0x40000000 ;@ Z flag
38079  str r10,[r7,#0x4c] ;@ Save X bit
38080
38081;@ EaWrite: Write r0 into '-(a0)' (address in r11):
38082  mov r1,r0,lsr #24
38083  add lr,pc,#4
38084  mov r0,r11
38085  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38086
38087  ldr r6,[r7,#0x54]
38088  ldrh r8,[r4],#2 ;@ Fetch next opcode
38089  subs r5,r5,#18 ;@ Subtract cycles
38090  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38091  b CycloneEnd
38092
38093;@ ---------- [810f] sbcd -(a7), -(a0) uses Op810f ----------
38094Op810f:
38095;@ Get src/dest EA vals
38096;@ EaCalc : Get '-(a7)' into r0:
38097  ldr r0,[r7,#0x3c] ;@ A7
38098  sub r0,r0,#2 ;@ Pre-decrement An
38099  str r0,[r7,#0x3c] ;@ A7
38100;@ EaRead : Read '-(a7)' (address in r0) into r6:
38101  mov lr,pc
38102  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38103  mov r6,r0,asl #24
38104
38105;@ EaCalc : Get '-(a0)' into r11:
38106  and r2,r8,#0x0e00
38107  orr r2,r2,#0x1000 ;@ A0-7
38108  ldr r11,[r7,r2,lsr #7]
38109  sub r11,r11,#1 ;@ Pre-decrement An
38110  str r11,[r7,r2,lsr #7]
38111;@ EaRead : Read '-(a0)' (address in r11) into r0:
38112  add lr,pc,#4
38113  mov r0,r11
38114  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38115
38116  mov r1,r0,asl #24
38117
38118  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
38119  ldr r0,[r7,#0x4c] ;@ Get X bit
38120  mov r3,#0x00f00000
38121  and r2,r3,r6,lsr #4
38122  tst r0,#0x20000000
38123  and r0,r3,r1,lsr #4
38124  sub r0,r0,r2
38125  subne r0,r0,#0x00100000
38126  cmp r0,#0x00900000
38127  subhi r0,r0,#0x00600000 ;@ Decimal adjust units
38128  mov r2,r1,lsr #28
38129  add r0,r0,r2,lsl #24
38130  mov r2,r6,lsr #28
38131  sub r0,r0,r2,lsl #24
38132  cmp r0,#0x09900000
38133  orrhi r10,r10,#0xa0000000 ;@ N and C
38134  addhi r0,r0,#0x0a000000
38135  movs r0,r0,lsl #4
38136  bicne r10,r10,#0x40000000 ;@ Z flag
38137  str r10,[r7,#0x4c] ;@ Save X bit
38138
38139;@ EaWrite: Write r0 into '-(a0)' (address in r11):
38140  mov r1,r0,lsr #24
38141  add lr,pc,#4
38142  mov r0,r11
38143  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38144
38145  ldr r6,[r7,#0x54]
38146  ldrh r8,[r4],#2 ;@ Fetch next opcode
38147  subs r5,r5,#18 ;@ Subtract cycles
38148  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38149  b CycloneEnd
38150
38151;@ ---------- [8110] or.b d0, (a0) uses Op8110 ----------
38152Op8110:
38153;@ EaCalc : Get '(a0)' into r11:
38154  and r2,r8,#0x000f
38155  orr r2,r2,#0x8 ;@ A0-7
38156  ldr r11,[r7,r2,lsl #2]
38157;@ EaRead : Read '(a0)' (address in r11) into r0:
38158  add lr,pc,#4
38159  mov r0,r11
38160  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38161
38162;@ EaCalc : Get register index into r1:
38163  and r1,r8,#0x0e00
38164;@ EaRead : Read register[r1] into r1:
38165  ldr r1,[r7,r1,lsr #7]
38166
38167;@ Do arithmetic:
38168  mov r0,r0,asl #24
38169  orrs r1,r0,r1,asl #24
38170  and r10,r1,#0x80000000 ;@ r10=N_flag
38171  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38172
38173;@ Save result:
38174  mov r1,r1,asr #24
38175;@ EaWrite: Write r1 into '(a0)' (address in r11):
38176  and r1,r1,#0xff
38177  add lr,pc,#4
38178  mov r0,r11
38179  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38180
38181  ldrh r8,[r4],#2 ;@ Fetch next opcode
38182  subs r5,r5,#12 ;@ Subtract cycles
38183  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38184  b CycloneEnd
38185
38186;@ ---------- [8118] or.b d0, (a0)+ uses Op8118 ----------
38187Op8118:
38188;@ EaCalc : Get '(a0)+' into r11:
38189  and r2,r8,#0x000f
38190  ldr r11,[r7,r2,lsl #2]
38191  add r3,r11,#1 ;@ Post-increment An
38192  str r3,[r7,r2,lsl #2]
38193;@ EaRead : Read '(a0)+' (address in r11) into r0:
38194  add lr,pc,#4
38195  mov r0,r11
38196  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38197
38198;@ EaCalc : Get register index into r1:
38199  and r1,r8,#0x0e00
38200;@ EaRead : Read register[r1] into r1:
38201  ldr r1,[r7,r1,lsr #7]
38202
38203;@ Do arithmetic:
38204  mov r0,r0,asl #24
38205  orrs r1,r0,r1,asl #24
38206  and r10,r1,#0x80000000 ;@ r10=N_flag
38207  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38208
38209;@ Save result:
38210  mov r1,r1,asr #24
38211;@ EaWrite: Write r1 into '(a0)+' (address in r11):
38212  and r1,r1,#0xff
38213  add lr,pc,#4
38214  mov r0,r11
38215  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38216
38217  ldrh r8,[r4],#2 ;@ Fetch next opcode
38218  subs r5,r5,#12 ;@ Subtract cycles
38219  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38220  b CycloneEnd
38221
38222;@ ---------- [811f] or.b d0, (a7)+ uses Op811f ----------
38223Op811f:
38224;@ EaCalc : Get '(a7)+' into r11:
38225  ldr r11,[r7,#0x3c] ;@ A7
38226  add r3,r11,#2 ;@ Post-increment An
38227  str r3,[r7,#0x3c] ;@ A7
38228;@ EaRead : Read '(a7)+' (address in r11) into r0:
38229  add lr,pc,#4
38230  mov r0,r11
38231  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38232
38233;@ EaCalc : Get register index into r1:
38234  and r1,r8,#0x0e00
38235;@ EaRead : Read register[r1] into r1:
38236  ldr r1,[r7,r1,lsr #7]
38237
38238;@ Do arithmetic:
38239  mov r0,r0,asl #24
38240  orrs r1,r0,r1,asl #24
38241  and r10,r1,#0x80000000 ;@ r10=N_flag
38242  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38243
38244;@ Save result:
38245  mov r1,r1,asr #24
38246;@ EaWrite: Write r1 into '(a7)+' (address in r11):
38247  and r1,r1,#0xff
38248  add lr,pc,#4
38249  mov r0,r11
38250  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38251
38252  ldrh r8,[r4],#2 ;@ Fetch next opcode
38253  subs r5,r5,#12 ;@ Subtract cycles
38254  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38255  b CycloneEnd
38256
38257;@ ---------- [8120] or.b d0, -(a0) uses Op8120 ----------
38258Op8120:
38259;@ EaCalc : Get '-(a0)' into r11:
38260  and r2,r8,#0x000f
38261  orr r2,r2,#0x8 ;@ A0-7
38262  ldr r11,[r7,r2,lsl #2]
38263  sub r11,r11,#1 ;@ Pre-decrement An
38264  str r11,[r7,r2,lsl #2]
38265;@ EaRead : Read '-(a0)' (address in r11) into r0:
38266  add lr,pc,#4
38267  mov r0,r11
38268  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38269
38270;@ EaCalc : Get register index into r1:
38271  and r1,r8,#0x0e00
38272;@ EaRead : Read register[r1] into r1:
38273  ldr r1,[r7,r1,lsr #7]
38274
38275;@ Do arithmetic:
38276  mov r0,r0,asl #24
38277  orrs r1,r0,r1,asl #24
38278  and r10,r1,#0x80000000 ;@ r10=N_flag
38279  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38280
38281;@ Save result:
38282  mov r1,r1,asr #24
38283;@ EaWrite: Write r1 into '-(a0)' (address in r11):
38284  and r1,r1,#0xff
38285  add lr,pc,#4
38286  mov r0,r11
38287  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38288
38289  ldrh r8,[r4],#2 ;@ Fetch next opcode
38290  subs r5,r5,#14 ;@ Subtract cycles
38291  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38292  b CycloneEnd
38293
38294;@ ---------- [8127] or.b d0, -(a7) uses Op8127 ----------
38295Op8127:
38296;@ EaCalc : Get '-(a7)' into r11:
38297  ldr r11,[r7,#0x3c] ;@ A7
38298  sub r11,r11,#2 ;@ Pre-decrement An
38299  str r11,[r7,#0x3c] ;@ A7
38300;@ EaRead : Read '-(a7)' (address in r11) into r0:
38301  add lr,pc,#4
38302  mov r0,r11
38303  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38304
38305;@ EaCalc : Get register index into r1:
38306  and r1,r8,#0x0e00
38307;@ EaRead : Read register[r1] into r1:
38308  ldr r1,[r7,r1,lsr #7]
38309
38310;@ Do arithmetic:
38311  mov r0,r0,asl #24
38312  orrs r1,r0,r1,asl #24
38313  and r10,r1,#0x80000000 ;@ r10=N_flag
38314  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38315
38316;@ Save result:
38317  mov r1,r1,asr #24
38318;@ EaWrite: Write r1 into '-(a7)' (address in r11):
38319  and r1,r1,#0xff
38320  add lr,pc,#4
38321  mov r0,r11
38322  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38323
38324  ldrh r8,[r4],#2 ;@ Fetch next opcode
38325  subs r5,r5,#14 ;@ Subtract cycles
38326  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38327  b CycloneEnd
38328
38329;@ ---------- [8128] or.b d0, ($3333,a0) uses Op8128 ----------
38330Op8128:
38331;@ EaCalc : Get '($3333,a0)' into r11:
38332  ldrsh r0,[r4],#2 ;@ Fetch offset
38333  and r2,r8,#0x000f
38334  ldr r2,[r7,r2,lsl #2]
38335  add r11,r0,r2 ;@ Add on offset
38336;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
38337  add lr,pc,#4
38338  mov r0,r11
38339  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38340
38341;@ EaCalc : Get register index into r1:
38342  and r1,r8,#0x0e00
38343;@ EaRead : Read register[r1] into r1:
38344  ldr r1,[r7,r1,lsr #7]
38345
38346;@ Do arithmetic:
38347  mov r0,r0,asl #24
38348  orrs r1,r0,r1,asl #24
38349  and r10,r1,#0x80000000 ;@ r10=N_flag
38350  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38351
38352;@ Save result:
38353  mov r1,r1,asr #24
38354;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
38355  and r1,r1,#0xff
38356  add lr,pc,#4
38357  mov r0,r11
38358  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38359
38360  ldrh r8,[r4],#2 ;@ Fetch next opcode
38361  subs r5,r5,#16 ;@ Subtract cycles
38362  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38363  b CycloneEnd
38364
38365;@ ---------- [8130] or.b d0, ($33,a0,d3.w*2) uses Op8130 ----------
38366Op8130:
38367;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
38368;@ Get extension word into r3:
38369  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
38370  mov r2,r3,lsr #10
38371  tst r3,#0x0800 ;@ Is Rn Word or Long
38372  and r2,r2,#0x3c ;@ r2=Index of Rn
38373  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
38374  ldrne   r2,[r7,r2] ;@ r2=Rn.l
38375  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
38376  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
38377  and r2,r8,#0x000f
38378  orr r2,r2,#0x8 ;@ A0-7
38379  ldr r2,[r7,r2,lsl #2]
38380  add r11,r2,r3 ;@ r11=Disp+An+Rn
38381;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
38382  add lr,pc,#4
38383  mov r0,r11
38384  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38385
38386;@ EaCalc : Get register index into r1:
38387  and r1,r8,#0x0e00
38388;@ EaRead : Read register[r1] into r1:
38389  ldr r1,[r7,r1,lsr #7]
38390
38391;@ Do arithmetic:
38392  mov r0,r0,asl #24
38393  orrs r1,r0,r1,asl #24
38394  and r10,r1,#0x80000000 ;@ r10=N_flag
38395  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38396
38397;@ Save result:
38398  mov r1,r1,asr #24
38399;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
38400  and r1,r1,#0xff
38401  add lr,pc,#4
38402  mov r0,r11
38403  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38404
38405  ldrh r8,[r4],#2 ;@ Fetch next opcode
38406  subs r5,r5,#18 ;@ Subtract cycles
38407  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38408  b CycloneEnd
38409
38410;@ ---------- [8138] or.b d0, $3333.w uses Op8138 ----------
38411Op8138:
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  add lr,pc,#4
38416  mov r0,r11
38417  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38418
38419;@ EaCalc : Get register index into r1:
38420  and r1,r8,#0x0e00
38421;@ EaRead : Read register[r1] into r1:
38422  ldr r1,[r7,r1,lsr #7]
38423
38424;@ Do arithmetic:
38425  mov r0,r0,asl #24
38426  orrs r1,r0,r1,asl #24
38427  and r10,r1,#0x80000000 ;@ r10=N_flag
38428  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38429
38430;@ Save result:
38431  mov r1,r1,asr #24
38432;@ EaWrite: Write r1 into '$3333.w' (address in r11):
38433  and r1,r1,#0xff
38434  add lr,pc,#4
38435  mov r0,r11
38436  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38437
38438  ldrh r8,[r4],#2 ;@ Fetch next opcode
38439  subs r5,r5,#16 ;@ Subtract cycles
38440  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38441  b CycloneEnd
38442
38443;@ ---------- [8139] or.b d0, $33333333.l uses Op8139 ----------
38444Op8139:
38445;@ EaCalc : Get '$33333333.l' into r11:
38446  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
38447  ldrh r0,[r4],#2
38448  orr r11,r0,r2,lsl #16
38449;@ EaRead : Read '$33333333.l' (address in r11) into r0:
38450  add lr,pc,#4
38451  mov r0,r11
38452  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
38453
38454;@ EaCalc : Get register index into r1:
38455  and r1,r8,#0x0e00
38456;@ EaRead : Read register[r1] into r1:
38457  ldr r1,[r7,r1,lsr #7]
38458
38459;@ Do arithmetic:
38460  mov r0,r0,asl #24
38461  orrs r1,r0,r1,asl #24
38462  and r10,r1,#0x80000000 ;@ r10=N_flag
38463  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38464
38465;@ Save result:
38466  mov r1,r1,asr #24
38467;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
38468  and r1,r1,#0xff
38469  add lr,pc,#4
38470  mov r0,r11
38471  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
38472
38473  ldrh r8,[r4],#2 ;@ Fetch next opcode
38474  subs r5,r5,#20 ;@ Subtract cycles
38475  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38476  b CycloneEnd
38477
38478;@ ---------- [8150] or.w d0, (a0) uses Op8150 ----------
38479Op8150:
38480;@ EaCalc : Get '(a0)' into r11:
38481  and r2,r8,#0x000f
38482  orr r2,r2,#0x8 ;@ A0-7
38483  ldr r11,[r7,r2,lsl #2]
38484;@ EaRead : Read '(a0)' (address in r11) into r0:
38485  add lr,pc,#4
38486  mov r0,r11
38487  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
38488
38489;@ EaCalc : Get register index into r1:
38490  and r1,r8,#0x0e00
38491;@ EaRead : Read register[r1] into r1:
38492  ldr r1,[r7,r1,lsr #7]
38493
38494;@ Do arithmetic:
38495  mov r0,r0,asl #16
38496  orrs r1,r0,r1,asl #16
38497  and r10,r1,#0x80000000 ;@ r10=N_flag
38498  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38499
38500;@ Save result:
38501  mov r1,r1,asr #16
38502;@ EaWrite: Write r1 into '(a0)' (address in r11):
38503  uxth r1,r1 ;@ zero extend
38504  add lr,pc,#4
38505  mov r0,r11
38506  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
38507
38508  ldrh r8,[r4],#2 ;@ Fetch next opcode
38509  subs r5,r5,#12 ;@ Subtract cycles
38510  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38511  b CycloneEnd
38512
38513;@ ---------- [8158] or.w d0, (a0)+ uses Op8158 ----------
38514Op8158:
38515;@ EaCalc : Get '(a0)+' into r11:
38516  and r2,r8,#0x000f
38517  ldr r11,[r7,r2,lsl #2]
38518  add r3,r11,#2 ;@ Post-increment An
38519  str r3,[r7,r2,lsl #2]
38520;@ EaRead : Read '(a0)+' (address in r11) into r0:
38521  add lr,pc,#4
38522  mov r0,r11
38523  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
38524
38525;@ EaCalc : Get register index into r1:
38526  and r1,r8,#0x0e00
38527;@ EaRead : Read register[r1] into r1:
38528  ldr r1,[r7,r1,lsr #7]
38529
38530;@ Do arithmetic:
38531  mov r0,r0,asl #16
38532  orrs r1,r0,r1,asl #16
38533  and r10,r1,#0x80000000 ;@ r10=N_flag
38534  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38535
38536;@ Save result:
38537  mov r1,r1,asr #16
38538;@ EaWrite: Write r1 into '(a0)+' (address in r11):
38539  uxth r1,r1 ;@ zero extend
38540  add lr,pc,#4
38541  mov r0,r11
38542  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
38543
38544  ldrh r8,[r4],#2 ;@ Fetch next opcode
38545  subs r5,r5,#12 ;@ Subtract cycles
38546  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38547  b CycloneEnd
38548
38549;@ ---------- [8160] or.w d0, -(a0) uses Op8160 ----------
38550Op8160:
38551;@ EaCalc : Get '-(a0)' into r11:
38552  and r2,r8,#0x000f
38553  orr r2,r2,#0x8 ;@ A0-7
38554  ldr r11,[r7,r2,lsl #2]
38555  sub r11,r11,#2 ;@ Pre-decrement An
38556  str r11,[r7,r2,lsl #2]
38557;@ EaRead : Read '-(a0)' (address in r11) into r0:
38558  add lr,pc,#4
38559  mov r0,r11
38560  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
38561
38562;@ EaCalc : Get register index into r1:
38563  and r1,r8,#0x0e00
38564;@ EaRead : Read register[r1] into r1:
38565  ldr r1,[r7,r1,lsr #7]
38566
38567;@ Do arithmetic:
38568  mov r0,r0,asl #16
38569  orrs r1,r0,r1,asl #16
38570  and r10,r1,#0x80000000 ;@ r10=N_flag
38571  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38572
38573;@ Save result:
38574  mov r1,r1,asr #16
38575;@ EaWrite: Write r1 into '-(a0)' (address in r11):
38576  uxth r1,r1 ;@ zero extend
38577  add lr,pc,#4
38578  mov r0,r11
38579  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
38580
38581  ldrh r8,[r4],#2 ;@ Fetch next opcode
38582  subs r5,r5,#14 ;@ Subtract cycles
38583  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38584  b CycloneEnd
38585
38586;@ ---------- [8168] or.w d0, ($3333,a0) uses Op8168 ----------
38587Op8168:
38588;@ EaCalc : Get '($3333,a0)' into r11:
38589  ldrsh r0,[r4],#2 ;@ Fetch offset
38590  and r2,r8,#0x000f
38591  ldr r2,[r7,r2,lsl #2]
38592  add r11,r0,r2 ;@ Add on offset
38593;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
38594  add lr,pc,#4
38595  mov r0,r11
38596  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
38597
38598;@ EaCalc : Get register index into r1:
38599  and r1,r8,#0x0e00
38600;@ EaRead : Read register[r1] into r1:
38601  ldr r1,[r7,r1,lsr #7]
38602
38603;@ Do arithmetic:
38604  mov r0,r0,asl #16
38605  orrs r1,r0,r1,asl #16
38606  and r10,r1,#0x80000000 ;@ r10=N_flag
38607  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38608
38609;@ Save result:
38610  mov r1,r1,asr #16
38611;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
38612  uxth r1,r1 ;@ zero extend
38613  add lr,pc,#4
38614  mov r0,r11
38615  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
38616
38617  ldrh r8,[r4],#2 ;@ Fetch next opcode
38618  subs r5,r5,#16 ;@ Subtract cycles
38619  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38620  b CycloneEnd
38621
38622;@ ---------- [8170] or.w d0, ($33,a0,d3.w*2) uses Op8170 ----------
38623Op8170:
38624;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
38625;@ Get extension word into r3:
38626  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
38627  mov r2,r3,lsr #10
38628  tst r3,#0x0800 ;@ Is Rn Word or Long
38629  and r2,r2,#0x3c ;@ r2=Index of Rn
38630  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
38631  ldrne   r2,[r7,r2] ;@ r2=Rn.l
38632  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
38633  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
38634  and r2,r8,#0x000f
38635  orr r2,r2,#0x8 ;@ A0-7
38636  ldr r2,[r7,r2,lsl #2]
38637  add r11,r2,r3 ;@ r11=Disp+An+Rn
38638;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
38639  add lr,pc,#4
38640  mov r0,r11
38641  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
38642
38643;@ EaCalc : Get register index into r1:
38644  and r1,r8,#0x0e00
38645;@ EaRead : Read register[r1] into r1:
38646  ldr r1,[r7,r1,lsr #7]
38647
38648;@ Do arithmetic:
38649  mov r0,r0,asl #16
38650  orrs r1,r0,r1,asl #16
38651  and r10,r1,#0x80000000 ;@ r10=N_flag
38652  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38653
38654;@ Save result:
38655  mov r1,r1,asr #16
38656;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
38657  uxth r1,r1 ;@ zero extend
38658  add lr,pc,#4
38659  mov r0,r11
38660  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
38661
38662  ldrh r8,[r4],#2 ;@ Fetch next opcode
38663  subs r5,r5,#18 ;@ Subtract cycles
38664  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38665  b CycloneEnd
38666
38667;@ ---------- [8178] or.w d0, $3333.w uses Op8178 ----------
38668Op8178:
38669;@ EaCalc : Get '$3333.w' into r11:
38670  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
38671;@ EaRead : Read '$3333.w' (address in r11) into r0:
38672  add lr,pc,#4
38673  mov r0,r11
38674  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
38675
38676;@ EaCalc : Get register index into r1:
38677  and r1,r8,#0x0e00
38678;@ EaRead : Read register[r1] into r1:
38679  ldr r1,[r7,r1,lsr #7]
38680
38681;@ Do arithmetic:
38682  mov r0,r0,asl #16
38683  orrs r1,r0,r1,asl #16
38684  and r10,r1,#0x80000000 ;@ r10=N_flag
38685  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38686
38687;@ Save result:
38688  mov r1,r1,asr #16
38689;@ EaWrite: Write r1 into '$3333.w' (address in r11):
38690  uxth r1,r1 ;@ zero extend
38691  add lr,pc,#4
38692  mov r0,r11
38693  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
38694
38695  ldrh r8,[r4],#2 ;@ Fetch next opcode
38696  subs r5,r5,#16 ;@ Subtract cycles
38697  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38698  b CycloneEnd
38699
38700;@ ---------- [8179] or.w d0, $33333333.l uses Op8179 ----------
38701Op8179:
38702;@ EaCalc : Get '$33333333.l' into r11:
38703  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
38704  ldrh r0,[r4],#2
38705  orr r11,r0,r2,lsl #16
38706;@ EaRead : Read '$33333333.l' (address in r11) into r0:
38707  add lr,pc,#4
38708  mov r0,r11
38709  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
38710
38711;@ EaCalc : Get register index into r1:
38712  and r1,r8,#0x0e00
38713;@ EaRead : Read register[r1] into r1:
38714  ldr r1,[r7,r1,lsr #7]
38715
38716;@ Do arithmetic:
38717  mov r0,r0,asl #16
38718  orrs r1,r0,r1,asl #16
38719  and r10,r1,#0x80000000 ;@ r10=N_flag
38720  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38721
38722;@ Save result:
38723  mov r1,r1,asr #16
38724;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
38725  uxth r1,r1 ;@ zero extend
38726  add lr,pc,#4
38727  mov r0,r11
38728  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
38729
38730  ldrh r8,[r4],#2 ;@ Fetch next opcode
38731  subs r5,r5,#20 ;@ Subtract cycles
38732  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38733  b CycloneEnd
38734
38735;@ ---------- [8190] or.l d0, (a0) uses Op8190 ----------
38736Op8190:
38737;@ EaCalc : Get '(a0)' into r11:
38738  and r2,r8,#0x000f
38739  orr r2,r2,#0x8 ;@ A0-7
38740  ldr r11,[r7,r2,lsl #2]
38741;@ EaRead : Read '(a0)' (address in r11) into r0:
38742  add lr,pc,#4
38743  mov r0,r11
38744  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
38745
38746;@ EaCalc : Get register index into r1:
38747  and r1,r8,#0x0e00
38748;@ EaRead : Read register[r1] into r1:
38749  ldr r1,[r7,r1,lsr #7]
38750
38751;@ Do arithmetic:
38752  orrs r1,r0,r1
38753  and r10,r1,#0x80000000 ;@ r10=N_flag
38754  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38755
38756;@ Save result:
38757;@ EaWrite: Write r1 into '(a0)' (address in r11):
38758  add lr,pc,#4
38759  mov r0,r11
38760  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
38761
38762  ldrh r8,[r4],#2 ;@ Fetch next opcode
38763  subs r5,r5,#20 ;@ Subtract cycles
38764  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38765  b CycloneEnd
38766
38767;@ ---------- [8198] or.l d0, (a0)+ uses Op8198 ----------
38768Op8198:
38769;@ EaCalc : Get '(a0)+' into r11:
38770  and r2,r8,#0x000f
38771  ldr r11,[r7,r2,lsl #2]
38772  add r3,r11,#4 ;@ Post-increment An
38773  str r3,[r7,r2,lsl #2]
38774;@ EaRead : Read '(a0)+' (address in r11) into r0:
38775  add lr,pc,#4
38776  mov r0,r11
38777  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
38778
38779;@ EaCalc : Get register index into r1:
38780  and r1,r8,#0x0e00
38781;@ EaRead : Read register[r1] into r1:
38782  ldr r1,[r7,r1,lsr #7]
38783
38784;@ Do arithmetic:
38785  orrs r1,r0,r1
38786  and r10,r1,#0x80000000 ;@ r10=N_flag
38787  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38788
38789;@ Save result:
38790;@ EaWrite: Write r1 into '(a0)+' (address in r11):
38791  add lr,pc,#4
38792  mov r0,r11
38793  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
38794
38795  ldrh r8,[r4],#2 ;@ Fetch next opcode
38796  subs r5,r5,#20 ;@ Subtract cycles
38797  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38798  b CycloneEnd
38799
38800;@ ---------- [81a0] or.l d0, -(a0) uses Op81a0 ----------
38801Op81a0:
38802;@ EaCalc : Get '-(a0)' into r11:
38803  and r2,r8,#0x000f
38804  orr r2,r2,#0x8 ;@ A0-7
38805  ldr r11,[r7,r2,lsl #2]
38806  sub r11,r11,#4 ;@ Pre-decrement An
38807  str r11,[r7,r2,lsl #2]
38808;@ EaRead : Read '-(a0)' (address in r11) into r0:
38809  add lr,pc,#4
38810  mov r0,r11
38811  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
38812
38813;@ EaCalc : Get register index into r1:
38814  and r1,r8,#0x0e00
38815;@ EaRead : Read register[r1] into r1:
38816  ldr r1,[r7,r1,lsr #7]
38817
38818;@ Do arithmetic:
38819  orrs r1,r0,r1
38820  and r10,r1,#0x80000000 ;@ r10=N_flag
38821  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38822
38823;@ Save result:
38824;@ EaWrite: Write r1 into '-(a0)' (address in r11):
38825  add lr,pc,#4
38826  mov r0,r11
38827  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
38828
38829  ldrh r8,[r4],#2 ;@ Fetch next opcode
38830  subs r5,r5,#22 ;@ Subtract cycles
38831  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38832  b CycloneEnd
38833
38834;@ ---------- [81a8] or.l d0, ($3333,a0) uses Op81a8 ----------
38835Op81a8:
38836;@ EaCalc : Get '($3333,a0)' into r11:
38837  ldrsh r0,[r4],#2 ;@ Fetch offset
38838  and r2,r8,#0x000f
38839  ldr r2,[r7,r2,lsl #2]
38840  add r11,r0,r2 ;@ Add on offset
38841;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
38842  add lr,pc,#4
38843  mov r0,r11
38844  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
38845
38846;@ EaCalc : Get register index into r1:
38847  and r1,r8,#0x0e00
38848;@ EaRead : Read register[r1] into r1:
38849  ldr r1,[r7,r1,lsr #7]
38850
38851;@ Do arithmetic:
38852  orrs r1,r0,r1
38853  and r10,r1,#0x80000000 ;@ r10=N_flag
38854  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38855
38856;@ Save result:
38857;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
38858  add lr,pc,#4
38859  mov r0,r11
38860  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
38861
38862  ldrh r8,[r4],#2 ;@ Fetch next opcode
38863  subs r5,r5,#24 ;@ Subtract cycles
38864  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38865  b CycloneEnd
38866
38867;@ ---------- [81b0] or.l d0, ($33,a0,d3.w*2) uses Op81b0 ----------
38868Op81b0:
38869;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
38870;@ Get extension word into r3:
38871  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
38872  mov r2,r3,lsr #10
38873  tst r3,#0x0800 ;@ Is Rn Word or Long
38874  and r2,r2,#0x3c ;@ r2=Index of Rn
38875  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
38876  ldrne   r2,[r7,r2] ;@ r2=Rn.l
38877  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
38878  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
38879  and r2,r8,#0x000f
38880  orr r2,r2,#0x8 ;@ A0-7
38881  ldr r2,[r7,r2,lsl #2]
38882  add r11,r2,r3 ;@ r11=Disp+An+Rn
38883;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
38884  add lr,pc,#4
38885  mov r0,r11
38886  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
38887
38888;@ EaCalc : Get register index into r1:
38889  and r1,r8,#0x0e00
38890;@ EaRead : Read register[r1] into r1:
38891  ldr r1,[r7,r1,lsr #7]
38892
38893;@ Do arithmetic:
38894  orrs r1,r0,r1
38895  and r10,r1,#0x80000000 ;@ r10=N_flag
38896  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38897
38898;@ Save result:
38899;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
38900  add lr,pc,#4
38901  mov r0,r11
38902  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
38903
38904  ldrh r8,[r4],#2 ;@ Fetch next opcode
38905  subs r5,r5,#26 ;@ Subtract cycles
38906  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38907  b CycloneEnd
38908
38909;@ ---------- [81b8] or.l d0, $3333.w uses Op81b8 ----------
38910Op81b8:
38911;@ EaCalc : Get '$3333.w' into r11:
38912  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
38913;@ EaRead : Read '$3333.w' (address in r11) into r0:
38914  add lr,pc,#4
38915  mov r0,r11
38916  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
38917
38918;@ EaCalc : Get register index into r1:
38919  and r1,r8,#0x0e00
38920;@ EaRead : Read register[r1] into r1:
38921  ldr r1,[r7,r1,lsr #7]
38922
38923;@ Do arithmetic:
38924  orrs r1,r0,r1
38925  and r10,r1,#0x80000000 ;@ r10=N_flag
38926  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38927
38928;@ Save result:
38929;@ EaWrite: Write r1 into '$3333.w' (address in r11):
38930  add lr,pc,#4
38931  mov r0,r11
38932  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
38933
38934  ldrh r8,[r4],#2 ;@ Fetch next opcode
38935  subs r5,r5,#24 ;@ Subtract cycles
38936  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38937  b CycloneEnd
38938
38939;@ ---------- [81b9] or.l d0, $33333333.l uses Op81b9 ----------
38940Op81b9:
38941;@ EaCalc : Get '$33333333.l' into r11:
38942  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
38943  ldrh r0,[r4],#2
38944  orr r11,r0,r2,lsl #16
38945;@ EaRead : Read '$33333333.l' (address in r11) into r0:
38946  add lr,pc,#4
38947  mov r0,r11
38948  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
38949
38950;@ EaCalc : Get register index into r1:
38951  and r1,r8,#0x0e00
38952;@ EaRead : Read register[r1] into r1:
38953  ldr r1,[r7,r1,lsr #7]
38954
38955;@ Do arithmetic:
38956  orrs r1,r0,r1
38957  and r10,r1,#0x80000000 ;@ r10=N_flag
38958  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
38959
38960;@ Save result:
38961;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
38962  add lr,pc,#4
38963  mov r0,r11
38964  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
38965
38966  ldrh r8,[r4],#2 ;@ Fetch next opcode
38967  subs r5,r5,#28 ;@ Subtract cycles
38968  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
38969  b CycloneEnd
38970
38971;@ ---------- [81c0] divs.w d0, d0 uses Op81c0 ----------
38972Op81c0:
38973;@ EaCalc : Get register index into r0:
38974  and r0,r8,#0x000f
38975;@ EaRead : Read register[r0] into r0:
38976  ldr r0,[r7,r0,lsl #2]
38977
38978;@ EaCalc : Get register index into r11:
38979  and r11,r8,#0x0e00
38980;@ EaRead : Read register[r11] into r2:
38981  ldr r2,[r7,r11,lsr #7]
38982
38983  movs r1,r0,asl #16
38984  beq divzero81c0 ;@ division by zero
38985
38986  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
38987  tst r2,r2
38988  orrmi r12,r12,#2
38989  rsbmi r2,r2,#0 ;@ Make r2 positive
38990
38991  movs r0,r1,asr #16
38992  orrmi r12,r12,#1
38993  rsbmi r0,r0,#0 ;@ Make r0 positive
38994
38995;@ detect the nasty 0x80000000 / -1 situation
38996  mov r3,r2,asr #31
38997  eors r3,r3,r1,asr #16
38998  beq wrendofop81c0
38999
39000;@ Divide r2 by r0
39001  mov r3,#0
39002  mov r1,r0
39003
39004;@ Shift up divisor till it's just less than numerator
39005Shift81c0:
39006  cmp r1,r2,lsr #1
39007  movls r1,r1,lsl #1
39008  bcc Shift81c0
39009
39010Divide81c0:
39011  cmp r2,r1
39012  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39013  subcs r2,r2,r1
39014  teq r1,r0
39015  movne r1,r1,lsr #1
39016  bne Divide81c0
39017
39018;@r3==quotient,r2==remainder
39019  and r1,r12,#1
39020  teq r1,r12,lsr #1
39021  rsbne r3,r3,#0 ;@ negate if quotient is negative
39022  tst r12,#2
39023  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39024
39025  mov r1,r3,asl #16
39026  cmp r3,r1,asr #16 ;@ signed overflow?
39027  orrne r10,r10,#0x10000000 ;@ set overflow flag
39028  bne endofop81c0 ;@ overflow!
39029
39030wrendofop81c0:
39031  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39032  and r10,r1,#0x80000000 ;@ r10=N_flag
39033  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39034  mov r1,r1,lsr #16
39035  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39036
39037;@ EaWrite: r1 into register[r11]:
39038  str r1,[r7,r11,lsr #7]
39039
39040endofop81c0:
39041  ldrh r8,[r4],#2 ;@ Fetch next opcode
39042  subs r5,r5,#158 ;@ Subtract cycles
39043  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39044  b CycloneEnd
39045
39046divzero81c0:
39047  mov r0,#5 ;@ Divide by zero
39048  bl Exception
39049  ldrh r8,[r4],#2 ;@ Fetch next opcode
39050  subs r5,r5,#196 ;@ Subtract cycles
39051  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39052  b CycloneEnd
39053
39054
39055;@ ---------- [81d0] divs.w (a0), d0 uses Op81d0 ----------
39056Op81d0:
39057;@ EaCalc : Get '(a0)' into r0:
39058  and r2,r8,#0x000f
39059  orr r2,r2,#0x8 ;@ A0-7
39060  ldr r0,[r7,r2,lsl #2]
39061;@ EaRead : Read '(a0)' (address in r0) into r0:
39062  mov lr,pc
39063  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
39064
39065;@ EaCalc : Get register index into r11:
39066  and r11,r8,#0x0e00
39067;@ EaRead : Read register[r11] into r2:
39068  ldr r2,[r7,r11,lsr #7]
39069
39070  movs r1,r0,asl #16
39071  beq divzero81d0 ;@ division by zero
39072
39073  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
39074  tst r2,r2
39075  orrmi r12,r12,#2
39076  rsbmi r2,r2,#0 ;@ Make r2 positive
39077
39078  movs r0,r1,asr #16
39079  orrmi r12,r12,#1
39080  rsbmi r0,r0,#0 ;@ Make r0 positive
39081
39082;@ detect the nasty 0x80000000 / -1 situation
39083  mov r3,r2,asr #31
39084  eors r3,r3,r1,asr #16
39085  beq wrendofop81d0
39086
39087;@ Divide r2 by r0
39088  mov r3,#0
39089  mov r1,r0
39090
39091;@ Shift up divisor till it's just less than numerator
39092Shift81d0:
39093  cmp r1,r2,lsr #1
39094  movls r1,r1,lsl #1
39095  bcc Shift81d0
39096
39097Divide81d0:
39098  cmp r2,r1
39099  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39100  subcs r2,r2,r1
39101  teq r1,r0
39102  movne r1,r1,lsr #1
39103  bne Divide81d0
39104
39105;@r3==quotient,r2==remainder
39106  and r1,r12,#1
39107  teq r1,r12,lsr #1
39108  rsbne r3,r3,#0 ;@ negate if quotient is negative
39109  tst r12,#2
39110  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39111
39112  mov r1,r3,asl #16
39113  cmp r3,r1,asr #16 ;@ signed overflow?
39114  orrne r10,r10,#0x10000000 ;@ set overflow flag
39115  bne endofop81d0 ;@ overflow!
39116
39117wrendofop81d0:
39118  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39119  and r10,r1,#0x80000000 ;@ r10=N_flag
39120  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39121  mov r1,r1,lsr #16
39122  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39123
39124;@ EaWrite: r1 into register[r11]:
39125  str r1,[r7,r11,lsr #7]
39126
39127endofop81d0:
39128  ldrh r8,[r4],#2 ;@ Fetch next opcode
39129  subs r5,r5,#162 ;@ Subtract cycles
39130  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39131  b CycloneEnd
39132
39133divzero81d0:
39134  mov r0,#5 ;@ Divide by zero
39135  bl Exception
39136  ldrh r8,[r4],#2 ;@ Fetch next opcode
39137  subs r5,r5,#200 ;@ Subtract cycles
39138  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39139  b CycloneEnd
39140
39141
39142;@ ---------- [81d8] divs.w (a0)+, d0 uses Op81d8 ----------
39143Op81d8:
39144;@ EaCalc : Get '(a0)+' into r0:
39145  and r2,r8,#0x000f
39146  ldr r0,[r7,r2,lsl #2]
39147  add r3,r0,#2 ;@ Post-increment An
39148  str r3,[r7,r2,lsl #2]
39149;@ EaRead : Read '(a0)+' (address in r0) into r0:
39150  mov lr,pc
39151  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
39152
39153;@ EaCalc : Get register index into r11:
39154  and r11,r8,#0x0e00
39155;@ EaRead : Read register[r11] into r2:
39156  ldr r2,[r7,r11,lsr #7]
39157
39158  movs r1,r0,asl #16
39159  beq divzero81d8 ;@ division by zero
39160
39161  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
39162  tst r2,r2
39163  orrmi r12,r12,#2
39164  rsbmi r2,r2,#0 ;@ Make r2 positive
39165
39166  movs r0,r1,asr #16
39167  orrmi r12,r12,#1
39168  rsbmi r0,r0,#0 ;@ Make r0 positive
39169
39170;@ detect the nasty 0x80000000 / -1 situation
39171  mov r3,r2,asr #31
39172  eors r3,r3,r1,asr #16
39173  beq wrendofop81d8
39174
39175;@ Divide r2 by r0
39176  mov r3,#0
39177  mov r1,r0
39178
39179;@ Shift up divisor till it's just less than numerator
39180Shift81d8:
39181  cmp r1,r2,lsr #1
39182  movls r1,r1,lsl #1
39183  bcc Shift81d8
39184
39185Divide81d8:
39186  cmp r2,r1
39187  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39188  subcs r2,r2,r1
39189  teq r1,r0
39190  movne r1,r1,lsr #1
39191  bne Divide81d8
39192
39193;@r3==quotient,r2==remainder
39194  and r1,r12,#1
39195  teq r1,r12,lsr #1
39196  rsbne r3,r3,#0 ;@ negate if quotient is negative
39197  tst r12,#2
39198  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39199
39200  mov r1,r3,asl #16
39201  cmp r3,r1,asr #16 ;@ signed overflow?
39202  orrne r10,r10,#0x10000000 ;@ set overflow flag
39203  bne endofop81d8 ;@ overflow!
39204
39205wrendofop81d8:
39206  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39207  and r10,r1,#0x80000000 ;@ r10=N_flag
39208  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39209  mov r1,r1,lsr #16
39210  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39211
39212;@ EaWrite: r1 into register[r11]:
39213  str r1,[r7,r11,lsr #7]
39214
39215endofop81d8:
39216  ldrh r8,[r4],#2 ;@ Fetch next opcode
39217  subs r5,r5,#162 ;@ Subtract cycles
39218  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39219  b CycloneEnd
39220
39221divzero81d8:
39222  mov r0,#5 ;@ Divide by zero
39223  bl Exception
39224  ldrh r8,[r4],#2 ;@ Fetch next opcode
39225  subs r5,r5,#200 ;@ Subtract cycles
39226  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39227  b CycloneEnd
39228
39229
39230;@ ---------- [81e0] divs.w -(a0), d0 uses Op81e0 ----------
39231Op81e0:
39232;@ EaCalc : Get '-(a0)' into r0:
39233  and r2,r8,#0x000f
39234  orr r2,r2,#0x8 ;@ A0-7
39235  ldr r0,[r7,r2,lsl #2]
39236  sub r0,r0,#2 ;@ Pre-decrement An
39237  str r0,[r7,r2,lsl #2]
39238;@ EaRead : Read '-(a0)' (address in r0) into r0:
39239  mov lr,pc
39240  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
39241
39242;@ EaCalc : Get register index into r11:
39243  and r11,r8,#0x0e00
39244;@ EaRead : Read register[r11] into r2:
39245  ldr r2,[r7,r11,lsr #7]
39246
39247  movs r1,r0,asl #16
39248  beq divzero81e0 ;@ division by zero
39249
39250  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
39251  tst r2,r2
39252  orrmi r12,r12,#2
39253  rsbmi r2,r2,#0 ;@ Make r2 positive
39254
39255  movs r0,r1,asr #16
39256  orrmi r12,r12,#1
39257  rsbmi r0,r0,#0 ;@ Make r0 positive
39258
39259;@ detect the nasty 0x80000000 / -1 situation
39260  mov r3,r2,asr #31
39261  eors r3,r3,r1,asr #16
39262  beq wrendofop81e0
39263
39264;@ Divide r2 by r0
39265  mov r3,#0
39266  mov r1,r0
39267
39268;@ Shift up divisor till it's just less than numerator
39269Shift81e0:
39270  cmp r1,r2,lsr #1
39271  movls r1,r1,lsl #1
39272  bcc Shift81e0
39273
39274Divide81e0:
39275  cmp r2,r1
39276  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39277  subcs r2,r2,r1
39278  teq r1,r0
39279  movne r1,r1,lsr #1
39280  bne Divide81e0
39281
39282;@r3==quotient,r2==remainder
39283  and r1,r12,#1
39284  teq r1,r12,lsr #1
39285  rsbne r3,r3,#0 ;@ negate if quotient is negative
39286  tst r12,#2
39287  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39288
39289  mov r1,r3,asl #16
39290  cmp r3,r1,asr #16 ;@ signed overflow?
39291  orrne r10,r10,#0x10000000 ;@ set overflow flag
39292  bne endofop81e0 ;@ overflow!
39293
39294wrendofop81e0:
39295  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39296  and r10,r1,#0x80000000 ;@ r10=N_flag
39297  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39298  mov r1,r1,lsr #16
39299  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39300
39301;@ EaWrite: r1 into register[r11]:
39302  str r1,[r7,r11,lsr #7]
39303
39304endofop81e0:
39305  ldrh r8,[r4],#2 ;@ Fetch next opcode
39306  subs r5,r5,#164 ;@ Subtract cycles
39307  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39308  b CycloneEnd
39309
39310divzero81e0:
39311  mov r0,#5 ;@ Divide by zero
39312  bl Exception
39313  ldrh r8,[r4],#2 ;@ Fetch next opcode
39314  subs r5,r5,#202 ;@ Subtract cycles
39315  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39316  b CycloneEnd
39317
39318
39319;@ ---------- [81e8] divs.w ($3333,a0), d0 uses Op81e8 ----------
39320Op81e8:
39321;@ EaCalc : Get '($3333,a0)' into r0:
39322  ldrsh r0,[r4],#2 ;@ Fetch offset
39323  and r2,r8,#0x000f
39324  ldr r2,[r7,r2,lsl #2]
39325  add r0,r0,r2 ;@ Add on offset
39326;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
39327  mov lr,pc
39328  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
39329
39330;@ EaCalc : Get register index into r11:
39331  and r11,r8,#0x0e00
39332;@ EaRead : Read register[r11] into r2:
39333  ldr r2,[r7,r11,lsr #7]
39334
39335  movs r1,r0,asl #16
39336  beq divzero81e8 ;@ division by zero
39337
39338  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
39339  tst r2,r2
39340  orrmi r12,r12,#2
39341  rsbmi r2,r2,#0 ;@ Make r2 positive
39342
39343  movs r0,r1,asr #16
39344  orrmi r12,r12,#1
39345  rsbmi r0,r0,#0 ;@ Make r0 positive
39346
39347;@ detect the nasty 0x80000000 / -1 situation
39348  mov r3,r2,asr #31
39349  eors r3,r3,r1,asr #16
39350  beq wrendofop81e8
39351
39352;@ Divide r2 by r0
39353  mov r3,#0
39354  mov r1,r0
39355
39356;@ Shift up divisor till it's just less than numerator
39357Shift81e8:
39358  cmp r1,r2,lsr #1
39359  movls r1,r1,lsl #1
39360  bcc Shift81e8
39361
39362Divide81e8:
39363  cmp r2,r1
39364  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39365  subcs r2,r2,r1
39366  teq r1,r0
39367  movne r1,r1,lsr #1
39368  bne Divide81e8
39369
39370;@r3==quotient,r2==remainder
39371  and r1,r12,#1
39372  teq r1,r12,lsr #1
39373  rsbne r3,r3,#0 ;@ negate if quotient is negative
39374  tst r12,#2
39375  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39376
39377  mov r1,r3,asl #16
39378  cmp r3,r1,asr #16 ;@ signed overflow?
39379  orrne r10,r10,#0x10000000 ;@ set overflow flag
39380  bne endofop81e8 ;@ overflow!
39381
39382wrendofop81e8:
39383  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39384  and r10,r1,#0x80000000 ;@ r10=N_flag
39385  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39386  mov r1,r1,lsr #16
39387  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39388
39389;@ EaWrite: r1 into register[r11]:
39390  str r1,[r7,r11,lsr #7]
39391
39392endofop81e8:
39393  ldrh r8,[r4],#2 ;@ Fetch next opcode
39394  subs r5,r5,#166 ;@ Subtract cycles
39395  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39396  b CycloneEnd
39397
39398divzero81e8:
39399  mov r0,#5 ;@ Divide by zero
39400  bl Exception
39401  ldrh r8,[r4],#2 ;@ Fetch next opcode
39402  subs r5,r5,#204 ;@ Subtract cycles
39403  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39404  b CycloneEnd
39405
39406
39407;@ ---------- [81f0] divs.w ($33,a0,d3.w*2), d0 uses Op81f0 ----------
39408Op81f0:
39409;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
39410;@ Get extension word into r3:
39411  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
39412  mov r2,r3,lsr #10
39413  tst r3,#0x0800 ;@ Is Rn Word or Long
39414  and r2,r2,#0x3c ;@ r2=Index of Rn
39415  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
39416  ldrne   r2,[r7,r2] ;@ r2=Rn.l
39417  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
39418  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
39419  and r2,r8,#0x000f
39420  orr r2,r2,#0x8 ;@ A0-7
39421  ldr r2,[r7,r2,lsl #2]
39422  add r0,r2,r3 ;@ r0=Disp+An+Rn
39423;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
39424  mov lr,pc
39425  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
39426
39427;@ EaCalc : Get register index into r11:
39428  and r11,r8,#0x0e00
39429;@ EaRead : Read register[r11] into r2:
39430  ldr r2,[r7,r11,lsr #7]
39431
39432  movs r1,r0,asl #16
39433  beq divzero81f0 ;@ division by zero
39434
39435  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
39436  tst r2,r2
39437  orrmi r12,r12,#2
39438  rsbmi r2,r2,#0 ;@ Make r2 positive
39439
39440  movs r0,r1,asr #16
39441  orrmi r12,r12,#1
39442  rsbmi r0,r0,#0 ;@ Make r0 positive
39443
39444;@ detect the nasty 0x80000000 / -1 situation
39445  mov r3,r2,asr #31
39446  eors r3,r3,r1,asr #16
39447  beq wrendofop81f0
39448
39449;@ Divide r2 by r0
39450  mov r3,#0
39451  mov r1,r0
39452
39453;@ Shift up divisor till it's just less than numerator
39454Shift81f0:
39455  cmp r1,r2,lsr #1
39456  movls r1,r1,lsl #1
39457  bcc Shift81f0
39458
39459Divide81f0:
39460  cmp r2,r1
39461  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39462  subcs r2,r2,r1
39463  teq r1,r0
39464  movne r1,r1,lsr #1
39465  bne Divide81f0
39466
39467;@r3==quotient,r2==remainder
39468  and r1,r12,#1
39469  teq r1,r12,lsr #1
39470  rsbne r3,r3,#0 ;@ negate if quotient is negative
39471  tst r12,#2
39472  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39473
39474  mov r1,r3,asl #16
39475  cmp r3,r1,asr #16 ;@ signed overflow?
39476  orrne r10,r10,#0x10000000 ;@ set overflow flag
39477  bne endofop81f0 ;@ overflow!
39478
39479wrendofop81f0:
39480  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39481  and r10,r1,#0x80000000 ;@ r10=N_flag
39482  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39483  mov r1,r1,lsr #16
39484  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39485
39486;@ EaWrite: r1 into register[r11]:
39487  str r1,[r7,r11,lsr #7]
39488
39489endofop81f0:
39490  ldrh r8,[r4],#2 ;@ Fetch next opcode
39491  subs r5,r5,#168 ;@ Subtract cycles
39492  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39493  b CycloneEnd
39494
39495divzero81f0:
39496  mov r0,#5 ;@ Divide by zero
39497  bl Exception
39498  ldrh r8,[r4],#2 ;@ Fetch next opcode
39499  subs r5,r5,#206 ;@ Subtract cycles
39500  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39501  b CycloneEnd
39502
39503
39504;@ ---------- [81f8] divs.w $3333.w, d0 uses Op81f8 ----------
39505Op81f8:
39506;@ EaCalc : Get '$3333.w' into r0:
39507  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
39508;@ EaRead : Read '$3333.w' (address in r0) into r0:
39509  mov lr,pc
39510  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
39511
39512;@ EaCalc : Get register index into r11:
39513  and r11,r8,#0x0e00
39514;@ EaRead : Read register[r11] into r2:
39515  ldr r2,[r7,r11,lsr #7]
39516
39517  movs r1,r0,asl #16
39518  beq divzero81f8 ;@ division by zero
39519
39520  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
39521  tst r2,r2
39522  orrmi r12,r12,#2
39523  rsbmi r2,r2,#0 ;@ Make r2 positive
39524
39525  movs r0,r1,asr #16
39526  orrmi r12,r12,#1
39527  rsbmi r0,r0,#0 ;@ Make r0 positive
39528
39529;@ detect the nasty 0x80000000 / -1 situation
39530  mov r3,r2,asr #31
39531  eors r3,r3,r1,asr #16
39532  beq wrendofop81f8
39533
39534;@ Divide r2 by r0
39535  mov r3,#0
39536  mov r1,r0
39537
39538;@ Shift up divisor till it's just less than numerator
39539Shift81f8:
39540  cmp r1,r2,lsr #1
39541  movls r1,r1,lsl #1
39542  bcc Shift81f8
39543
39544Divide81f8:
39545  cmp r2,r1
39546  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39547  subcs r2,r2,r1
39548  teq r1,r0
39549  movne r1,r1,lsr #1
39550  bne Divide81f8
39551
39552;@r3==quotient,r2==remainder
39553  and r1,r12,#1
39554  teq r1,r12,lsr #1
39555  rsbne r3,r3,#0 ;@ negate if quotient is negative
39556  tst r12,#2
39557  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39558
39559  mov r1,r3,asl #16
39560  cmp r3,r1,asr #16 ;@ signed overflow?
39561  orrne r10,r10,#0x10000000 ;@ set overflow flag
39562  bne endofop81f8 ;@ overflow!
39563
39564wrendofop81f8:
39565  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39566  and r10,r1,#0x80000000 ;@ r10=N_flag
39567  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39568  mov r1,r1,lsr #16
39569  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39570
39571;@ EaWrite: r1 into register[r11]:
39572  str r1,[r7,r11,lsr #7]
39573
39574endofop81f8:
39575  ldrh r8,[r4],#2 ;@ Fetch next opcode
39576  subs r5,r5,#166 ;@ Subtract cycles
39577  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39578  b CycloneEnd
39579
39580divzero81f8:
39581  mov r0,#5 ;@ Divide by zero
39582  bl Exception
39583  ldrh r8,[r4],#2 ;@ Fetch next opcode
39584  subs r5,r5,#204 ;@ Subtract cycles
39585  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39586  b CycloneEnd
39587
39588
39589;@ ---------- [81f9] divs.w $33333333.l, d0 uses Op81f9 ----------
39590Op81f9:
39591;@ EaCalc : Get '$33333333.l' into r0:
39592  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
39593  ldrh r0,[r4],#2
39594  orr r0,r0,r2,lsl #16
39595;@ EaRead : Read '$33333333.l' (address in r0) into r0:
39596  mov lr,pc
39597  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
39598
39599;@ EaCalc : Get register index into r11:
39600  and r11,r8,#0x0e00
39601;@ EaRead : Read register[r11] into r2:
39602  ldr r2,[r7,r11,lsr #7]
39603
39604  movs r1,r0,asl #16
39605  beq divzero81f9 ;@ division by zero
39606
39607  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
39608  tst r2,r2
39609  orrmi r12,r12,#2
39610  rsbmi r2,r2,#0 ;@ Make r2 positive
39611
39612  movs r0,r1,asr #16
39613  orrmi r12,r12,#1
39614  rsbmi r0,r0,#0 ;@ Make r0 positive
39615
39616;@ detect the nasty 0x80000000 / -1 situation
39617  mov r3,r2,asr #31
39618  eors r3,r3,r1,asr #16
39619  beq wrendofop81f9
39620
39621;@ Divide r2 by r0
39622  mov r3,#0
39623  mov r1,r0
39624
39625;@ Shift up divisor till it's just less than numerator
39626Shift81f9:
39627  cmp r1,r2,lsr #1
39628  movls r1,r1,lsl #1
39629  bcc Shift81f9
39630
39631Divide81f9:
39632  cmp r2,r1
39633  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39634  subcs r2,r2,r1
39635  teq r1,r0
39636  movne r1,r1,lsr #1
39637  bne Divide81f9
39638
39639;@r3==quotient,r2==remainder
39640  and r1,r12,#1
39641  teq r1,r12,lsr #1
39642  rsbne r3,r3,#0 ;@ negate if quotient is negative
39643  tst r12,#2
39644  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39645
39646  mov r1,r3,asl #16
39647  cmp r3,r1,asr #16 ;@ signed overflow?
39648  orrne r10,r10,#0x10000000 ;@ set overflow flag
39649  bne endofop81f9 ;@ overflow!
39650
39651wrendofop81f9:
39652  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39653  and r10,r1,#0x80000000 ;@ r10=N_flag
39654  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39655  mov r1,r1,lsr #16
39656  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39657
39658;@ EaWrite: r1 into register[r11]:
39659  str r1,[r7,r11,lsr #7]
39660
39661endofop81f9:
39662  ldrh r8,[r4],#2 ;@ Fetch next opcode
39663  subs r5,r5,#170 ;@ Subtract cycles
39664  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39665  b CycloneEnd
39666
39667divzero81f9:
39668  mov r0,#5 ;@ Divide by zero
39669  bl Exception
39670  ldrh r8,[r4],#2 ;@ Fetch next opcode
39671  subs r5,r5,#208 ;@ Subtract cycles
39672  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39673  b CycloneEnd
39674
39675
39676;@ ---------- [81fa] divs.w ($3333,pc), d0; =3335 uses Op81fa ----------
39677Op81fa:
39678;@ EaCalc : Get '($3333,pc)' into r0:
39679  ldr r0,[r7,#0x60] ;@ Get Memory base
39680  sub r0,r4,r0 ;@ Real PC
39681  ldrsh r2,[r4],#2 ;@ Fetch extension
39682  add r0,r2,r0 ;@ ($nn,PC)
39683;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
39684  mov lr,pc
39685  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
39686
39687;@ EaCalc : Get register index into r11:
39688  and r11,r8,#0x0e00
39689;@ EaRead : Read register[r11] into r2:
39690  ldr r2,[r7,r11,lsr #7]
39691
39692  movs r1,r0,asl #16
39693  beq divzero81fa ;@ division by zero
39694
39695  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
39696  tst r2,r2
39697  orrmi r12,r12,#2
39698  rsbmi r2,r2,#0 ;@ Make r2 positive
39699
39700  movs r0,r1,asr #16
39701  orrmi r12,r12,#1
39702  rsbmi r0,r0,#0 ;@ Make r0 positive
39703
39704;@ detect the nasty 0x80000000 / -1 situation
39705  mov r3,r2,asr #31
39706  eors r3,r3,r1,asr #16
39707  beq wrendofop81fa
39708
39709;@ Divide r2 by r0
39710  mov r3,#0
39711  mov r1,r0
39712
39713;@ Shift up divisor till it's just less than numerator
39714Shift81fa:
39715  cmp r1,r2,lsr #1
39716  movls r1,r1,lsl #1
39717  bcc Shift81fa
39718
39719Divide81fa:
39720  cmp r2,r1
39721  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39722  subcs r2,r2,r1
39723  teq r1,r0
39724  movne r1,r1,lsr #1
39725  bne Divide81fa
39726
39727;@r3==quotient,r2==remainder
39728  and r1,r12,#1
39729  teq r1,r12,lsr #1
39730  rsbne r3,r3,#0 ;@ negate if quotient is negative
39731  tst r12,#2
39732  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39733
39734  mov r1,r3,asl #16
39735  cmp r3,r1,asr #16 ;@ signed overflow?
39736  orrne r10,r10,#0x10000000 ;@ set overflow flag
39737  bne endofop81fa ;@ overflow!
39738
39739wrendofop81fa:
39740  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39741  and r10,r1,#0x80000000 ;@ r10=N_flag
39742  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39743  mov r1,r1,lsr #16
39744  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39745
39746;@ EaWrite: r1 into register[r11]:
39747  str r1,[r7,r11,lsr #7]
39748
39749endofop81fa:
39750  ldrh r8,[r4],#2 ;@ Fetch next opcode
39751  subs r5,r5,#166 ;@ Subtract cycles
39752  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39753  b CycloneEnd
39754
39755divzero81fa:
39756  mov r0,#5 ;@ Divide by zero
39757  bl Exception
39758  ldrh r8,[r4],#2 ;@ Fetch next opcode
39759  subs r5,r5,#204 ;@ Subtract cycles
39760  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39761  b CycloneEnd
39762
39763
39764;@ ---------- [81fb] divs.w ($33,pc,d3.w*2), d0; =35 uses Op81fb ----------
39765Op81fb:
39766;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
39767  ldr r0,[r7,#0x60] ;@ Get Memory base
39768  ldrh r3,[r4] ;@ Get extension word
39769  sub r0,r4,r0 ;@ r0=PC
39770  add r4,r4,#2
39771  mov r2,r3,lsr #10
39772  tst r3,#0x0800 ;@ Is Rn Word or Long
39773  and r2,r2,#0x3c ;@ r2=Index of Rn
39774  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
39775  ldrne   r2,[r7,r2] ;@ r2=Rn.l
39776  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
39777  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
39778  add r0,r2,r0 ;@ r0=Disp+PC+Rn
39779;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
39780  mov lr,pc
39781  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
39782
39783;@ EaCalc : Get register index into r11:
39784  and r11,r8,#0x0e00
39785;@ EaRead : Read register[r11] into r2:
39786  ldr r2,[r7,r11,lsr #7]
39787
39788  movs r1,r0,asl #16
39789  beq divzero81fb ;@ division by zero
39790
39791  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
39792  tst r2,r2
39793  orrmi r12,r12,#2
39794  rsbmi r2,r2,#0 ;@ Make r2 positive
39795
39796  movs r0,r1,asr #16
39797  orrmi r12,r12,#1
39798  rsbmi r0,r0,#0 ;@ Make r0 positive
39799
39800;@ detect the nasty 0x80000000 / -1 situation
39801  mov r3,r2,asr #31
39802  eors r3,r3,r1,asr #16
39803  beq wrendofop81fb
39804
39805;@ Divide r2 by r0
39806  mov r3,#0
39807  mov r1,r0
39808
39809;@ Shift up divisor till it's just less than numerator
39810Shift81fb:
39811  cmp r1,r2,lsr #1
39812  movls r1,r1,lsl #1
39813  bcc Shift81fb
39814
39815Divide81fb:
39816  cmp r2,r1
39817  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39818  subcs r2,r2,r1
39819  teq r1,r0
39820  movne r1,r1,lsr #1
39821  bne Divide81fb
39822
39823;@r3==quotient,r2==remainder
39824  and r1,r12,#1
39825  teq r1,r12,lsr #1
39826  rsbne r3,r3,#0 ;@ negate if quotient is negative
39827  tst r12,#2
39828  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39829
39830  mov r1,r3,asl #16
39831  cmp r3,r1,asr #16 ;@ signed overflow?
39832  orrne r10,r10,#0x10000000 ;@ set overflow flag
39833  bne endofop81fb ;@ overflow!
39834
39835wrendofop81fb:
39836  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39837  and r10,r1,#0x80000000 ;@ r10=N_flag
39838  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39839  mov r1,r1,lsr #16
39840  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39841
39842;@ EaWrite: r1 into register[r11]:
39843  str r1,[r7,r11,lsr #7]
39844
39845endofop81fb:
39846  ldrh r8,[r4],#2 ;@ Fetch next opcode
39847  subs r5,r5,#168 ;@ Subtract cycles
39848  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39849  b CycloneEnd
39850
39851divzero81fb:
39852  mov r0,#5 ;@ Divide by zero
39853  bl Exception
39854  ldrh r8,[r4],#2 ;@ Fetch next opcode
39855  subs r5,r5,#206 ;@ Subtract cycles
39856  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39857  b CycloneEnd
39858
39859
39860;@ ---------- [81fc] divs.w #$3333, d0 uses Op81fc ----------
39861Op81fc:
39862;@ EaCalc : Get '#$3333' into r0:
39863  ldrsh r0,[r4],#2 ;@ Fetch immediate value
39864;@ EaRead : Read '#$3333' (address in r0) into r0:
39865
39866;@ EaCalc : Get register index into r11:
39867  and r11,r8,#0x0e00
39868;@ EaRead : Read register[r11] into r2:
39869  ldr r2,[r7,r11,lsr #7]
39870
39871  movs r1,r0,asl #16
39872  beq divzero81fc ;@ division by zero
39873
39874  mov r12,#0 ;@ r12 = 1 or 2 if the result is negative
39875  tst r2,r2
39876  orrmi r12,r12,#2
39877  rsbmi r2,r2,#0 ;@ Make r2 positive
39878
39879  movs r0,r1,asr #16
39880  orrmi r12,r12,#1
39881  rsbmi r0,r0,#0 ;@ Make r0 positive
39882
39883;@ detect the nasty 0x80000000 / -1 situation
39884  mov r3,r2,asr #31
39885  eors r3,r3,r1,asr #16
39886  beq wrendofop81fc
39887
39888;@ Divide r2 by r0
39889  mov r3,#0
39890  mov r1,r0
39891
39892;@ Shift up divisor till it's just less than numerator
39893Shift81fc:
39894  cmp r1,r2,lsr #1
39895  movls r1,r1,lsl #1
39896  bcc Shift81fc
39897
39898Divide81fc:
39899  cmp r2,r1
39900  adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
39901  subcs r2,r2,r1
39902  teq r1,r0
39903  movne r1,r1,lsr #1
39904  bne Divide81fc
39905
39906;@r3==quotient,r2==remainder
39907  and r1,r12,#1
39908  teq r1,r12,lsr #1
39909  rsbne r3,r3,#0 ;@ negate if quotient is negative
39910  tst r12,#2
39911  rsbne r2,r2,#0 ;@ negate the remainder if divident was negative
39912
39913  mov r1,r3,asl #16
39914  cmp r3,r1,asr #16 ;@ signed overflow?
39915  orrne r10,r10,#0x10000000 ;@ set overflow flag
39916  bne endofop81fc ;@ overflow!
39917
39918wrendofop81fc:
39919  movs r1,r3,lsl #16 ;@ Clip to 16-bits
39920  and r10,r1,#0x80000000 ;@ r10=N_flag
39921  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
39922  mov r1,r1,lsr #16
39923  orr r1,r1,r2,lsl #16 ;@ Insert remainder
39924
39925;@ EaWrite: r1 into register[r11]:
39926  str r1,[r7,r11,lsr #7]
39927
39928endofop81fc:
39929  ldrh r8,[r4],#2 ;@ Fetch next opcode
39930  subs r5,r5,#162 ;@ Subtract cycles
39931  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39932  b CycloneEnd
39933
39934divzero81fc:
39935  mov r0,#5 ;@ Divide by zero
39936  bl Exception
39937  ldrh r8,[r4],#2 ;@ Fetch next opcode
39938  subs r5,r5,#200 ;@ Subtract cycles
39939  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39940  b CycloneEnd
39941
39942
39943;@ ---------- [8f08] sbcd -(a0), -(a7) uses Op8f08 ----------
39944Op8f08:
39945;@ Get src/dest EA vals
39946;@ EaCalc : Get '-(a0)' into r0:
39947  and r2,r8,#0x000f
39948  ldr r0,[r7,r2,lsl #2]
39949  sub r0,r0,#1 ;@ Pre-decrement An
39950  str r0,[r7,r2,lsl #2]
39951;@ EaRead : Read '-(a0)' (address in r0) into r6:
39952  mov lr,pc
39953  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
39954  mov r6,r0,asl #24
39955
39956;@ EaCalc : Get '-(a7)' into r11:
39957  ldr r11,[r7,#0x3c] ;@ A7
39958  sub r11,r11,#2 ;@ Pre-decrement An
39959  str r11,[r7,#0x3c] ;@ A7
39960;@ EaRead : Read '-(a7)' (address in r11) into r0:
39961  add lr,pc,#4
39962  mov r0,r11
39963  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
39964
39965  mov r1,r0,asl #24
39966
39967  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
39968  ldr r0,[r7,#0x4c] ;@ Get X bit
39969  mov r3,#0x00f00000
39970  and r2,r3,r6,lsr #4
39971  tst r0,#0x20000000
39972  and r0,r3,r1,lsr #4
39973  sub r0,r0,r2
39974  subne r0,r0,#0x00100000
39975  cmp r0,#0x00900000
39976  subhi r0,r0,#0x00600000 ;@ Decimal adjust units
39977  mov r2,r1,lsr #28
39978  add r0,r0,r2,lsl #24
39979  mov r2,r6,lsr #28
39980  sub r0,r0,r2,lsl #24
39981  cmp r0,#0x09900000
39982  orrhi r10,r10,#0xa0000000 ;@ N and C
39983  addhi r0,r0,#0x0a000000
39984  movs r0,r0,lsl #4
39985  bicne r10,r10,#0x40000000 ;@ Z flag
39986  str r10,[r7,#0x4c] ;@ Save X bit
39987
39988;@ EaWrite: Write r0 into '-(a7)' (address in r11):
39989  mov r1,r0,lsr #24
39990  add lr,pc,#4
39991  mov r0,r11
39992  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
39993
39994  ldr r6,[r7,#0x54]
39995  ldrh r8,[r4],#2 ;@ Fetch next opcode
39996  subs r5,r5,#18 ;@ Subtract cycles
39997  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
39998  b CycloneEnd
39999
40000;@ ---------- [8f0f] sbcd -(a7), -(a7) uses Op8f0f ----------
40001Op8f0f:
40002;@ Get src/dest EA vals
40003;@ EaCalc : Get '-(a7)' into r0:
40004  ldr r0,[r7,#0x3c] ;@ A7
40005  sub r0,r0,#2 ;@ Pre-decrement An
40006  str r0,[r7,#0x3c] ;@ A7
40007;@ EaRead : Read '-(a7)' (address in r0) into r6:
40008  mov lr,pc
40009  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40010  mov r6,r0,asl #24
40011
40012;@ EaCalc : Get '-(a7)' into r11:
40013  ldr r11,[r7,#0x3c] ;@ A7
40014  sub r11,r11,#2 ;@ Pre-decrement An
40015  str r11,[r7,#0x3c] ;@ A7
40016;@ EaRead : Read '-(a7)' (address in r11) into r0:
40017  add lr,pc,#4
40018  mov r0,r11
40019  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40020
40021  mov r1,r0,asl #24
40022
40023  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
40024  ldr r0,[r7,#0x4c] ;@ Get X bit
40025  mov r3,#0x00f00000
40026  and r2,r3,r6,lsr #4
40027  tst r0,#0x20000000
40028  and r0,r3,r1,lsr #4
40029  sub r0,r0,r2
40030  subne r0,r0,#0x00100000
40031  cmp r0,#0x00900000
40032  subhi r0,r0,#0x00600000 ;@ Decimal adjust units
40033  mov r2,r1,lsr #28
40034  add r0,r0,r2,lsl #24
40035  mov r2,r6,lsr #28
40036  sub r0,r0,r2,lsl #24
40037  cmp r0,#0x09900000
40038  orrhi r10,r10,#0xa0000000 ;@ N and C
40039  addhi r0,r0,#0x0a000000
40040  movs r0,r0,lsl #4
40041  bicne r10,r10,#0x40000000 ;@ Z flag
40042  str r10,[r7,#0x4c] ;@ Save X bit
40043
40044;@ EaWrite: Write r0 into '-(a7)' (address in r11):
40045  mov r1,r0,lsr #24
40046  add lr,pc,#4
40047  mov r0,r11
40048  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
40049
40050  ldr r6,[r7,#0x54]
40051  ldrh r8,[r4],#2 ;@ Fetch next opcode
40052  subs r5,r5,#18 ;@ Subtract cycles
40053  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40054  b CycloneEnd
40055
40056;@ ---------- [9000] sub.b d0, d0 uses Op9000 ----------
40057Op9000:
40058;@ EaCalc : Get register index into r0:
40059  and r0,r8,#0x000f
40060;@ EaRead : Read register[r0] into r0:
40061  ldr r0,[r7,r0,lsl #2]
40062
40063;@ EaCalc : Get register index into r11:
40064  and r11,r8,#0x0e00
40065;@ EaRead : Read register[r11] into r1:
40066  ldr r1,[r7,r11,lsr #7]
40067
40068;@ Do arithmetic:
40069  mov r0,r0,asl #24
40070  rsbs r1,r0,r1,asl #24
40071  mrs r10,cpsr ;@ r10=flags
40072  eor r10,r10,#0x20000000 ;@ Invert carry
40073  str r10,[r7,#0x4c] ;@ Save X bit
40074
40075;@ Save result:
40076  mov r1,r1,asr #24
40077;@ EaWrite: r1 into register[r11]:
40078  strb r1,[r7,r11,lsr #7]
40079
40080  ldrh r8,[r4],#2 ;@ Fetch next opcode
40081  subs r5,r5,#4 ;@ Subtract cycles
40082  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40083  b CycloneEnd
40084
40085;@ ---------- [9010] sub.b (a0), d0 uses Op9010 ----------
40086Op9010:
40087;@ EaCalc : Get '(a0)' into r0:
40088  and r2,r8,#0x000f
40089  orr r2,r2,#0x8 ;@ A0-7
40090  ldr r0,[r7,r2,lsl #2]
40091;@ EaRead : Read '(a0)' (address in r0) into r0:
40092  mov lr,pc
40093  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40094
40095;@ EaCalc : Get register index into r11:
40096  and r11,r8,#0x0e00
40097;@ EaRead : Read register[r11] into r1:
40098  ldr r1,[r7,r11,lsr #7]
40099
40100;@ Do arithmetic:
40101  mov r0,r0,asl #24
40102  rsbs r1,r0,r1,asl #24
40103  mrs r10,cpsr ;@ r10=flags
40104  eor r10,r10,#0x20000000 ;@ Invert carry
40105  str r10,[r7,#0x4c] ;@ Save X bit
40106
40107;@ Save result:
40108  mov r1,r1,asr #24
40109;@ EaWrite: r1 into register[r11]:
40110  strb r1,[r7,r11,lsr #7]
40111
40112  ldrh r8,[r4],#2 ;@ Fetch next opcode
40113  subs r5,r5,#8 ;@ Subtract cycles
40114  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40115  b CycloneEnd
40116
40117;@ ---------- [9018] sub.b (a0)+, d0 uses Op9018 ----------
40118Op9018:
40119;@ EaCalc : Get '(a0)+' into r0:
40120  and r2,r8,#0x000f
40121  ldr r0,[r7,r2,lsl #2]
40122  add r3,r0,#1 ;@ Post-increment An
40123  str r3,[r7,r2,lsl #2]
40124;@ EaRead : Read '(a0)+' (address in r0) into r0:
40125  mov lr,pc
40126  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40127
40128;@ EaCalc : Get register index into r11:
40129  and r11,r8,#0x0e00
40130;@ EaRead : Read register[r11] into r1:
40131  ldr r1,[r7,r11,lsr #7]
40132
40133;@ Do arithmetic:
40134  mov r0,r0,asl #24
40135  rsbs r1,r0,r1,asl #24
40136  mrs r10,cpsr ;@ r10=flags
40137  eor r10,r10,#0x20000000 ;@ Invert carry
40138  str r10,[r7,#0x4c] ;@ Save X bit
40139
40140;@ Save result:
40141  mov r1,r1,asr #24
40142;@ EaWrite: r1 into register[r11]:
40143  strb r1,[r7,r11,lsr #7]
40144
40145  ldrh r8,[r4],#2 ;@ Fetch next opcode
40146  subs r5,r5,#8 ;@ Subtract cycles
40147  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40148  b CycloneEnd
40149
40150;@ ---------- [901f] sub.b (a7)+, d0 uses Op901f ----------
40151Op901f:
40152;@ EaCalc : Get '(a7)+' into r0:
40153  ldr r0,[r7,#0x3c] ;@ A7
40154  add r3,r0,#2 ;@ Post-increment An
40155  str r3,[r7,#0x3c] ;@ A7
40156;@ EaRead : Read '(a7)+' (address in r0) into r0:
40157  mov lr,pc
40158  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40159
40160;@ EaCalc : Get register index into r11:
40161  and r11,r8,#0x0e00
40162;@ EaRead : Read register[r11] into r1:
40163  ldr r1,[r7,r11,lsr #7]
40164
40165;@ Do arithmetic:
40166  mov r0,r0,asl #24
40167  rsbs r1,r0,r1,asl #24
40168  mrs r10,cpsr ;@ r10=flags
40169  eor r10,r10,#0x20000000 ;@ Invert carry
40170  str r10,[r7,#0x4c] ;@ Save X bit
40171
40172;@ Save result:
40173  mov r1,r1,asr #24
40174;@ EaWrite: r1 into register[r11]:
40175  strb r1,[r7,r11,lsr #7]
40176
40177  ldrh r8,[r4],#2 ;@ Fetch next opcode
40178  subs r5,r5,#8 ;@ Subtract cycles
40179  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40180  b CycloneEnd
40181
40182;@ ---------- [9020] sub.b -(a0), d0 uses Op9020 ----------
40183Op9020:
40184;@ EaCalc : Get '-(a0)' into r0:
40185  and r2,r8,#0x000f
40186  orr r2,r2,#0x8 ;@ A0-7
40187  ldr r0,[r7,r2,lsl #2]
40188  sub r0,r0,#1 ;@ Pre-decrement An
40189  str r0,[r7,r2,lsl #2]
40190;@ EaRead : Read '-(a0)' (address in r0) into r0:
40191  mov lr,pc
40192  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40193
40194;@ EaCalc : Get register index into r11:
40195  and r11,r8,#0x0e00
40196;@ EaRead : Read register[r11] into r1:
40197  ldr r1,[r7,r11,lsr #7]
40198
40199;@ Do arithmetic:
40200  mov r0,r0,asl #24
40201  rsbs r1,r0,r1,asl #24
40202  mrs r10,cpsr ;@ r10=flags
40203  eor r10,r10,#0x20000000 ;@ Invert carry
40204  str r10,[r7,#0x4c] ;@ Save X bit
40205
40206;@ Save result:
40207  mov r1,r1,asr #24
40208;@ EaWrite: r1 into register[r11]:
40209  strb r1,[r7,r11,lsr #7]
40210
40211  ldrh r8,[r4],#2 ;@ Fetch next opcode
40212  subs r5,r5,#10 ;@ Subtract cycles
40213  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40214  b CycloneEnd
40215
40216;@ ---------- [9027] sub.b -(a7), d0 uses Op9027 ----------
40217Op9027:
40218;@ EaCalc : Get '-(a7)' into r0:
40219  ldr r0,[r7,#0x3c] ;@ A7
40220  sub r0,r0,#2 ;@ Pre-decrement An
40221  str r0,[r7,#0x3c] ;@ A7
40222;@ EaRead : Read '-(a7)' (address in r0) into r0:
40223  mov lr,pc
40224  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40225
40226;@ EaCalc : Get register index into r11:
40227  and r11,r8,#0x0e00
40228;@ EaRead : Read register[r11] into r1:
40229  ldr r1,[r7,r11,lsr #7]
40230
40231;@ Do arithmetic:
40232  mov r0,r0,asl #24
40233  rsbs r1,r0,r1,asl #24
40234  mrs r10,cpsr ;@ r10=flags
40235  eor r10,r10,#0x20000000 ;@ Invert carry
40236  str r10,[r7,#0x4c] ;@ Save X bit
40237
40238;@ Save result:
40239  mov r1,r1,asr #24
40240;@ EaWrite: r1 into register[r11]:
40241  strb r1,[r7,r11,lsr #7]
40242
40243  ldrh r8,[r4],#2 ;@ Fetch next opcode
40244  subs r5,r5,#10 ;@ Subtract cycles
40245  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40246  b CycloneEnd
40247
40248;@ ---------- [9028] sub.b ($3333,a0), d0 uses Op9028 ----------
40249Op9028:
40250;@ EaCalc : Get '($3333,a0)' into r0:
40251  ldrsh r0,[r4],#2 ;@ Fetch offset
40252  and r2,r8,#0x000f
40253  ldr r2,[r7,r2,lsl #2]
40254  add r0,r0,r2 ;@ Add on offset
40255;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
40256  mov lr,pc
40257  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40258
40259;@ EaCalc : Get register index into r11:
40260  and r11,r8,#0x0e00
40261;@ EaRead : Read register[r11] into r1:
40262  ldr r1,[r7,r11,lsr #7]
40263
40264;@ Do arithmetic:
40265  mov r0,r0,asl #24
40266  rsbs r1,r0,r1,asl #24
40267  mrs r10,cpsr ;@ r10=flags
40268  eor r10,r10,#0x20000000 ;@ Invert carry
40269  str r10,[r7,#0x4c] ;@ Save X bit
40270
40271;@ Save result:
40272  mov r1,r1,asr #24
40273;@ EaWrite: r1 into register[r11]:
40274  strb r1,[r7,r11,lsr #7]
40275
40276  ldrh r8,[r4],#2 ;@ Fetch next opcode
40277  subs r5,r5,#12 ;@ Subtract cycles
40278  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40279  b CycloneEnd
40280
40281;@ ---------- [9030] sub.b ($33,a0,d3.w*2), d0 uses Op9030 ----------
40282Op9030:
40283;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
40284;@ Get extension word into r3:
40285  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
40286  mov r2,r3,lsr #10
40287  tst r3,#0x0800 ;@ Is Rn Word or Long
40288  and r2,r2,#0x3c ;@ r2=Index of Rn
40289  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
40290  ldrne   r2,[r7,r2] ;@ r2=Rn.l
40291  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
40292  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
40293  and r2,r8,#0x000f
40294  orr r2,r2,#0x8 ;@ A0-7
40295  ldr r2,[r7,r2,lsl #2]
40296  add r0,r2,r3 ;@ r0=Disp+An+Rn
40297;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
40298  mov lr,pc
40299  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40300
40301;@ EaCalc : Get register index into r11:
40302  and r11,r8,#0x0e00
40303;@ EaRead : Read register[r11] into r1:
40304  ldr r1,[r7,r11,lsr #7]
40305
40306;@ Do arithmetic:
40307  mov r0,r0,asl #24
40308  rsbs r1,r0,r1,asl #24
40309  mrs r10,cpsr ;@ r10=flags
40310  eor r10,r10,#0x20000000 ;@ Invert carry
40311  str r10,[r7,#0x4c] ;@ Save X bit
40312
40313;@ Save result:
40314  mov r1,r1,asr #24
40315;@ EaWrite: r1 into register[r11]:
40316  strb r1,[r7,r11,lsr #7]
40317
40318  ldrh r8,[r4],#2 ;@ Fetch next opcode
40319  subs r5,r5,#14 ;@ Subtract cycles
40320  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40321  b CycloneEnd
40322
40323;@ ---------- [9038] sub.b $3333.w, d0 uses Op9038 ----------
40324Op9038:
40325;@ EaCalc : Get '$3333.w' into r0:
40326  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
40327;@ EaRead : Read '$3333.w' (address in r0) into r0:
40328  mov lr,pc
40329  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40330
40331;@ EaCalc : Get register index into r11:
40332  and r11,r8,#0x0e00
40333;@ EaRead : Read register[r11] into r1:
40334  ldr r1,[r7,r11,lsr #7]
40335
40336;@ Do arithmetic:
40337  mov r0,r0,asl #24
40338  rsbs r1,r0,r1,asl #24
40339  mrs r10,cpsr ;@ r10=flags
40340  eor r10,r10,#0x20000000 ;@ Invert carry
40341  str r10,[r7,#0x4c] ;@ Save X bit
40342
40343;@ Save result:
40344  mov r1,r1,asr #24
40345;@ EaWrite: r1 into register[r11]:
40346  strb r1,[r7,r11,lsr #7]
40347
40348  ldrh r8,[r4],#2 ;@ Fetch next opcode
40349  subs r5,r5,#12 ;@ Subtract cycles
40350  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40351  b CycloneEnd
40352
40353;@ ---------- [9039] sub.b $33333333.l, d0 uses Op9039 ----------
40354Op9039:
40355;@ EaCalc : Get '$33333333.l' into r0:
40356  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
40357  ldrh r0,[r4],#2
40358  orr r0,r0,r2,lsl #16
40359;@ EaRead : Read '$33333333.l' (address in r0) into r0:
40360  mov lr,pc
40361  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
40362
40363;@ EaCalc : Get register index into r11:
40364  and r11,r8,#0x0e00
40365;@ EaRead : Read register[r11] into r1:
40366  ldr r1,[r7,r11,lsr #7]
40367
40368;@ Do arithmetic:
40369  mov r0,r0,asl #24
40370  rsbs r1,r0,r1,asl #24
40371  mrs r10,cpsr ;@ r10=flags
40372  eor r10,r10,#0x20000000 ;@ Invert carry
40373  str r10,[r7,#0x4c] ;@ Save X bit
40374
40375;@ Save result:
40376  mov r1,r1,asr #24
40377;@ EaWrite: r1 into register[r11]:
40378  strb r1,[r7,r11,lsr #7]
40379
40380  ldrh r8,[r4],#2 ;@ Fetch next opcode
40381  subs r5,r5,#16 ;@ Subtract cycles
40382  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40383  b CycloneEnd
40384
40385;@ ---------- [903a] sub.b ($3333,pc), d0; =3335 uses Op903a ----------
40386Op903a:
40387;@ EaCalc : Get '($3333,pc)' into r0:
40388  ldr r0,[r7,#0x60] ;@ Get Memory base
40389  sub r0,r4,r0 ;@ Real PC
40390  ldrsh r2,[r4],#2 ;@ Fetch extension
40391  add r0,r2,r0 ;@ ($nn,PC)
40392;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
40393  mov lr,pc
40394  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
40395
40396;@ EaCalc : Get register index into r11:
40397  and r11,r8,#0x0e00
40398;@ EaRead : Read register[r11] into r1:
40399  ldr r1,[r7,r11,lsr #7]
40400
40401;@ Do arithmetic:
40402  mov r0,r0,asl #24
40403  rsbs r1,r0,r1,asl #24
40404  mrs r10,cpsr ;@ r10=flags
40405  eor r10,r10,#0x20000000 ;@ Invert carry
40406  str r10,[r7,#0x4c] ;@ Save X bit
40407
40408;@ Save result:
40409  mov r1,r1,asr #24
40410;@ EaWrite: r1 into register[r11]:
40411  strb r1,[r7,r11,lsr #7]
40412
40413  ldrh r8,[r4],#2 ;@ Fetch next opcode
40414  subs r5,r5,#12 ;@ Subtract cycles
40415  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40416  b CycloneEnd
40417
40418;@ ---------- [903b] sub.b ($33,pc,d3.w*2), d0; =35 uses Op903b ----------
40419Op903b:
40420;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
40421  ldr r0,[r7,#0x60] ;@ Get Memory base
40422  ldrh r3,[r4] ;@ Get extension word
40423  sub r0,r4,r0 ;@ r0=PC
40424  add r4,r4,#2
40425  mov r2,r3,lsr #10
40426  tst r3,#0x0800 ;@ Is Rn Word or Long
40427  and r2,r2,#0x3c ;@ r2=Index of Rn
40428  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
40429  ldrne   r2,[r7,r2] ;@ r2=Rn.l
40430  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
40431  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
40432  add r0,r2,r0 ;@ r0=Disp+PC+Rn
40433;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
40434  mov lr,pc
40435  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
40436
40437;@ EaCalc : Get register index into r11:
40438  and r11,r8,#0x0e00
40439;@ EaRead : Read register[r11] into r1:
40440  ldr r1,[r7,r11,lsr #7]
40441
40442;@ Do arithmetic:
40443  mov r0,r0,asl #24
40444  rsbs r1,r0,r1,asl #24
40445  mrs r10,cpsr ;@ r10=flags
40446  eor r10,r10,#0x20000000 ;@ Invert carry
40447  str r10,[r7,#0x4c] ;@ Save X bit
40448
40449;@ Save result:
40450  mov r1,r1,asr #24
40451;@ EaWrite: r1 into register[r11]:
40452  strb r1,[r7,r11,lsr #7]
40453
40454  ldrh r8,[r4],#2 ;@ Fetch next opcode
40455  subs r5,r5,#14 ;@ Subtract cycles
40456  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40457  b CycloneEnd
40458
40459;@ ---------- [903c] sub.b #$33, d0 uses Op903c ----------
40460Op903c:
40461;@ EaCalc : Get '#$33' into r0:
40462  ldrsb r0,[r4],#2 ;@ Fetch immediate value
40463;@ EaRead : Read '#$33' (address in r0) into r0:
40464
40465;@ EaCalc : Get register index into r11:
40466  and r11,r8,#0x0e00
40467;@ EaRead : Read register[r11] into r1:
40468  ldr r1,[r7,r11,lsr #7]
40469
40470;@ Do arithmetic:
40471  mov r0,r0,asl #24
40472  rsbs r1,r0,r1,asl #24
40473  mrs r10,cpsr ;@ r10=flags
40474  eor r10,r10,#0x20000000 ;@ Invert carry
40475  str r10,[r7,#0x4c] ;@ Save X bit
40476
40477;@ Save result:
40478  mov r1,r1,asr #24
40479;@ EaWrite: r1 into register[r11]:
40480  strb r1,[r7,r11,lsr #7]
40481
40482  ldrh r8,[r4],#2 ;@ Fetch next opcode
40483  subs r5,r5,#8 ;@ Subtract cycles
40484  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40485  b CycloneEnd
40486
40487;@ ---------- [9040] sub.w d0, d0 uses Op9040 ----------
40488Op9040:
40489;@ EaCalc : Get register index into r0:
40490  and r0,r8,#0x000f
40491;@ EaRead : Read register[r0] into r0:
40492  ldr r0,[r7,r0,lsl #2]
40493
40494;@ EaCalc : Get register index into r11:
40495  and r11,r8,#0x0e00
40496  mov r11,r11,lsr #7
40497;@ EaRead : Read register[r11] into r1:
40498  ldr r1,[r7,r11]
40499
40500;@ Do arithmetic:
40501  mov r0,r0,asl #16
40502  rsbs r1,r0,r1,asl #16
40503  mrs r10,cpsr ;@ r10=flags
40504  eor r10,r10,#0x20000000 ;@ Invert carry
40505  str r10,[r7,#0x4c] ;@ Save X bit
40506
40507;@ Save result:
40508  mov r1,r1,asr #16
40509;@ EaWrite: r1 into register[r11]:
40510  strh r1,[r7,r11]
40511
40512  ldrh r8,[r4],#2 ;@ Fetch next opcode
40513  subs r5,r5,#4 ;@ Subtract cycles
40514  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40515  b CycloneEnd
40516
40517;@ ---------- [9050] sub.w (a0), d0 uses Op9050 ----------
40518Op9050:
40519;@ EaCalc : Get '(a0)' into r0:
40520  and r2,r8,#0x000f
40521  orr r2,r2,#0x8 ;@ A0-7
40522  ldr r0,[r7,r2,lsl #2]
40523;@ EaRead : Read '(a0)' (address in r0) into r0:
40524  mov lr,pc
40525  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
40526
40527;@ EaCalc : Get register index into r11:
40528  and r11,r8,#0x0e00
40529  mov r11,r11,lsr #7
40530;@ EaRead : Read register[r11] into r1:
40531  ldr r1,[r7,r11]
40532
40533;@ Do arithmetic:
40534  mov r0,r0,asl #16
40535  rsbs r1,r0,r1,asl #16
40536  mrs r10,cpsr ;@ r10=flags
40537  eor r10,r10,#0x20000000 ;@ Invert carry
40538  str r10,[r7,#0x4c] ;@ Save X bit
40539
40540;@ Save result:
40541  mov r1,r1,asr #16
40542;@ EaWrite: r1 into register[r11]:
40543  strh r1,[r7,r11]
40544
40545  ldrh r8,[r4],#2 ;@ Fetch next opcode
40546  subs r5,r5,#8 ;@ Subtract cycles
40547  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40548  b CycloneEnd
40549
40550;@ ---------- [9058] sub.w (a0)+, d0 uses Op9058 ----------
40551Op9058:
40552;@ EaCalc : Get '(a0)+' into r0:
40553  and r2,r8,#0x000f
40554  ldr r0,[r7,r2,lsl #2]
40555  add r3,r0,#2 ;@ Post-increment An
40556  str r3,[r7,r2,lsl #2]
40557;@ EaRead : Read '(a0)+' (address in r0) into r0:
40558  mov lr,pc
40559  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
40560
40561;@ EaCalc : Get register index into r11:
40562  and r11,r8,#0x0e00
40563  mov r11,r11,lsr #7
40564;@ EaRead : Read register[r11] into r1:
40565  ldr r1,[r7,r11]
40566
40567;@ Do arithmetic:
40568  mov r0,r0,asl #16
40569  rsbs r1,r0,r1,asl #16
40570  mrs r10,cpsr ;@ r10=flags
40571  eor r10,r10,#0x20000000 ;@ Invert carry
40572  str r10,[r7,#0x4c] ;@ Save X bit
40573
40574;@ Save result:
40575  mov r1,r1,asr #16
40576;@ EaWrite: r1 into register[r11]:
40577  strh r1,[r7,r11]
40578
40579  ldrh r8,[r4],#2 ;@ Fetch next opcode
40580  subs r5,r5,#8 ;@ Subtract cycles
40581  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40582  b CycloneEnd
40583
40584;@ ---------- [9060] sub.w -(a0), d0 uses Op9060 ----------
40585Op9060:
40586;@ EaCalc : Get '-(a0)' into r0:
40587  and r2,r8,#0x000f
40588  orr r2,r2,#0x8 ;@ A0-7
40589  ldr r0,[r7,r2,lsl #2]
40590  sub r0,r0,#2 ;@ Pre-decrement An
40591  str r0,[r7,r2,lsl #2]
40592;@ EaRead : Read '-(a0)' (address in r0) into r0:
40593  mov lr,pc
40594  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
40595
40596;@ EaCalc : Get register index into r11:
40597  and r11,r8,#0x0e00
40598  mov r11,r11,lsr #7
40599;@ EaRead : Read register[r11] into r1:
40600  ldr r1,[r7,r11]
40601
40602;@ Do arithmetic:
40603  mov r0,r0,asl #16
40604  rsbs r1,r0,r1,asl #16
40605  mrs r10,cpsr ;@ r10=flags
40606  eor r10,r10,#0x20000000 ;@ Invert carry
40607  str r10,[r7,#0x4c] ;@ Save X bit
40608
40609;@ Save result:
40610  mov r1,r1,asr #16
40611;@ EaWrite: r1 into register[r11]:
40612  strh r1,[r7,r11]
40613
40614  ldrh r8,[r4],#2 ;@ Fetch next opcode
40615  subs r5,r5,#10 ;@ Subtract cycles
40616  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40617  b CycloneEnd
40618
40619;@ ---------- [9068] sub.w ($3333,a0), d0 uses Op9068 ----------
40620Op9068:
40621;@ EaCalc : Get '($3333,a0)' into r0:
40622  ldrsh r0,[r4],#2 ;@ Fetch offset
40623  and r2,r8,#0x000f
40624  ldr r2,[r7,r2,lsl #2]
40625  add r0,r0,r2 ;@ Add on offset
40626;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
40627  mov lr,pc
40628  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
40629
40630;@ EaCalc : Get register index into r11:
40631  and r11,r8,#0x0e00
40632  mov r11,r11,lsr #7
40633;@ EaRead : Read register[r11] into r1:
40634  ldr r1,[r7,r11]
40635
40636;@ Do arithmetic:
40637  mov r0,r0,asl #16
40638  rsbs r1,r0,r1,asl #16
40639  mrs r10,cpsr ;@ r10=flags
40640  eor r10,r10,#0x20000000 ;@ Invert carry
40641  str r10,[r7,#0x4c] ;@ Save X bit
40642
40643;@ Save result:
40644  mov r1,r1,asr #16
40645;@ EaWrite: r1 into register[r11]:
40646  strh r1,[r7,r11]
40647
40648  ldrh r8,[r4],#2 ;@ Fetch next opcode
40649  subs r5,r5,#12 ;@ Subtract cycles
40650  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40651  b CycloneEnd
40652
40653;@ ---------- [9070] sub.w ($33,a0,d3.w*2), d0 uses Op9070 ----------
40654Op9070:
40655;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
40656;@ Get extension word into r3:
40657  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
40658  mov r2,r3,lsr #10
40659  tst r3,#0x0800 ;@ Is Rn Word or Long
40660  and r2,r2,#0x3c ;@ r2=Index of Rn
40661  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
40662  ldrne   r2,[r7,r2] ;@ r2=Rn.l
40663  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
40664  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
40665  and r2,r8,#0x000f
40666  orr r2,r2,#0x8 ;@ A0-7
40667  ldr r2,[r7,r2,lsl #2]
40668  add r0,r2,r3 ;@ r0=Disp+An+Rn
40669;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
40670  mov lr,pc
40671  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
40672
40673;@ EaCalc : Get register index into r11:
40674  and r11,r8,#0x0e00
40675  mov r11,r11,lsr #7
40676;@ EaRead : Read register[r11] into r1:
40677  ldr r1,[r7,r11]
40678
40679;@ Do arithmetic:
40680  mov r0,r0,asl #16
40681  rsbs r1,r0,r1,asl #16
40682  mrs r10,cpsr ;@ r10=flags
40683  eor r10,r10,#0x20000000 ;@ Invert carry
40684  str r10,[r7,#0x4c] ;@ Save X bit
40685
40686;@ Save result:
40687  mov r1,r1,asr #16
40688;@ EaWrite: r1 into register[r11]:
40689  strh r1,[r7,r11]
40690
40691  ldrh r8,[r4],#2 ;@ Fetch next opcode
40692  subs r5,r5,#14 ;@ Subtract cycles
40693  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40694  b CycloneEnd
40695
40696;@ ---------- [9078] sub.w $3333.w, d0 uses Op9078 ----------
40697Op9078:
40698;@ EaCalc : Get '$3333.w' into r0:
40699  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
40700;@ EaRead : Read '$3333.w' (address in r0) into r0:
40701  mov lr,pc
40702  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
40703
40704;@ EaCalc : Get register index into r11:
40705  and r11,r8,#0x0e00
40706  mov r11,r11,lsr #7
40707;@ EaRead : Read register[r11] into r1:
40708  ldr r1,[r7,r11]
40709
40710;@ Do arithmetic:
40711  mov r0,r0,asl #16
40712  rsbs r1,r0,r1,asl #16
40713  mrs r10,cpsr ;@ r10=flags
40714  eor r10,r10,#0x20000000 ;@ Invert carry
40715  str r10,[r7,#0x4c] ;@ Save X bit
40716
40717;@ Save result:
40718  mov r1,r1,asr #16
40719;@ EaWrite: r1 into register[r11]:
40720  strh r1,[r7,r11]
40721
40722  ldrh r8,[r4],#2 ;@ Fetch next opcode
40723  subs r5,r5,#12 ;@ Subtract cycles
40724  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40725  b CycloneEnd
40726
40727;@ ---------- [9079] sub.w $33333333.l, d0 uses Op9079 ----------
40728Op9079:
40729;@ EaCalc : Get '$33333333.l' into r0:
40730  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
40731  ldrh r0,[r4],#2
40732  orr r0,r0,r2,lsl #16
40733;@ EaRead : Read '$33333333.l' (address in r0) into r0:
40734  mov lr,pc
40735  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
40736
40737;@ EaCalc : Get register index into r11:
40738  and r11,r8,#0x0e00
40739  mov r11,r11,lsr #7
40740;@ EaRead : Read register[r11] into r1:
40741  ldr r1,[r7,r11]
40742
40743;@ Do arithmetic:
40744  mov r0,r0,asl #16
40745  rsbs r1,r0,r1,asl #16
40746  mrs r10,cpsr ;@ r10=flags
40747  eor r10,r10,#0x20000000 ;@ Invert carry
40748  str r10,[r7,#0x4c] ;@ Save X bit
40749
40750;@ Save result:
40751  mov r1,r1,asr #16
40752;@ EaWrite: r1 into register[r11]:
40753  strh r1,[r7,r11]
40754
40755  ldrh r8,[r4],#2 ;@ Fetch next opcode
40756  subs r5,r5,#16 ;@ Subtract cycles
40757  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40758  b CycloneEnd
40759
40760;@ ---------- [907a] sub.w ($3333,pc), d0; =3335 uses Op907a ----------
40761Op907a:
40762;@ EaCalc : Get '($3333,pc)' into r0:
40763  ldr r0,[r7,#0x60] ;@ Get Memory base
40764  sub r0,r4,r0 ;@ Real PC
40765  ldrsh r2,[r4],#2 ;@ Fetch extension
40766  add r0,r2,r0 ;@ ($nn,PC)
40767;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
40768  mov lr,pc
40769  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
40770
40771;@ EaCalc : Get register index into r11:
40772  and r11,r8,#0x0e00
40773  mov r11,r11,lsr #7
40774;@ EaRead : Read register[r11] into r1:
40775  ldr r1,[r7,r11]
40776
40777;@ Do arithmetic:
40778  mov r0,r0,asl #16
40779  rsbs r1,r0,r1,asl #16
40780  mrs r10,cpsr ;@ r10=flags
40781  eor r10,r10,#0x20000000 ;@ Invert carry
40782  str r10,[r7,#0x4c] ;@ Save X bit
40783
40784;@ Save result:
40785  mov r1,r1,asr #16
40786;@ EaWrite: r1 into register[r11]:
40787  strh r1,[r7,r11]
40788
40789  ldrh r8,[r4],#2 ;@ Fetch next opcode
40790  subs r5,r5,#12 ;@ Subtract cycles
40791  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40792  b CycloneEnd
40793
40794;@ ---------- [907b] sub.w ($33,pc,d3.w*2), d0; =35 uses Op907b ----------
40795Op907b:
40796;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
40797  ldr r0,[r7,#0x60] ;@ Get Memory base
40798  ldrh r3,[r4] ;@ Get extension word
40799  sub r0,r4,r0 ;@ r0=PC
40800  add r4,r4,#2
40801  mov r2,r3,lsr #10
40802  tst r3,#0x0800 ;@ Is Rn Word or Long
40803  and r2,r2,#0x3c ;@ r2=Index of Rn
40804  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
40805  ldrne   r2,[r7,r2] ;@ r2=Rn.l
40806  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
40807  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
40808  add r0,r2,r0 ;@ r0=Disp+PC+Rn
40809;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
40810  mov lr,pc
40811  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
40812
40813;@ EaCalc : Get register index into r11:
40814  and r11,r8,#0x0e00
40815  mov r11,r11,lsr #7
40816;@ EaRead : Read register[r11] into r1:
40817  ldr r1,[r7,r11]
40818
40819;@ Do arithmetic:
40820  mov r0,r0,asl #16
40821  rsbs r1,r0,r1,asl #16
40822  mrs r10,cpsr ;@ r10=flags
40823  eor r10,r10,#0x20000000 ;@ Invert carry
40824  str r10,[r7,#0x4c] ;@ Save X bit
40825
40826;@ Save result:
40827  mov r1,r1,asr #16
40828;@ EaWrite: r1 into register[r11]:
40829  strh r1,[r7,r11]
40830
40831  ldrh r8,[r4],#2 ;@ Fetch next opcode
40832  subs r5,r5,#14 ;@ Subtract cycles
40833  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40834  b CycloneEnd
40835
40836;@ ---------- [907c] sub.w #$3333, d0 uses Op907c ----------
40837Op907c:
40838;@ EaCalc : Get '#$3333' into r0:
40839  ldrsh r0,[r4],#2 ;@ Fetch immediate value
40840;@ EaRead : Read '#$3333' (address in r0) into r0:
40841
40842;@ EaCalc : Get register index into r11:
40843  and r11,r8,#0x0e00
40844  mov r11,r11,lsr #7
40845;@ EaRead : Read register[r11] into r1:
40846  ldr r1,[r7,r11]
40847
40848;@ Do arithmetic:
40849  mov r0,r0,asl #16
40850  rsbs r1,r0,r1,asl #16
40851  mrs r10,cpsr ;@ r10=flags
40852  eor r10,r10,#0x20000000 ;@ Invert carry
40853  str r10,[r7,#0x4c] ;@ Save X bit
40854
40855;@ Save result:
40856  mov r1,r1,asr #16
40857;@ EaWrite: r1 into register[r11]:
40858  strh r1,[r7,r11]
40859
40860  ldrh r8,[r4],#2 ;@ Fetch next opcode
40861  subs r5,r5,#8 ;@ Subtract cycles
40862  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40863  b CycloneEnd
40864
40865;@ ---------- [9080] sub.l d0, d0 uses Op9080 ----------
40866Op9080:
40867;@ EaCalc : Get register index into r0:
40868  and r0,r8,#0x000f
40869;@ EaRead : Read register[r0] into r0:
40870  ldr r0,[r7,r0,lsl #2]
40871
40872;@ EaCalc : Get register index into r11:
40873  and r11,r8,#0x0e00
40874;@ EaRead : Read register[r11] into r1:
40875  ldr r1,[r7,r11,lsr #7]
40876
40877;@ Do arithmetic:
40878  rsbs r1,r0,r1
40879  mrs r10,cpsr ;@ r10=flags
40880  eor r10,r10,#0x20000000 ;@ Invert carry
40881  str r10,[r7,#0x4c] ;@ Save X bit
40882
40883;@ Save result:
40884;@ EaWrite: r1 into register[r11]:
40885  str r1,[r7,r11,lsr #7]
40886
40887  ldrh r8,[r4],#2 ;@ Fetch next opcode
40888  subs r5,r5,#8 ;@ Subtract cycles
40889  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40890  b CycloneEnd
40891
40892;@ ---------- [9090] sub.l (a0), d0 uses Op9090 ----------
40893Op9090:
40894;@ EaCalc : Get '(a0)' into r0:
40895  and r2,r8,#0x000f
40896  orr r2,r2,#0x8 ;@ A0-7
40897  ldr r0,[r7,r2,lsl #2]
40898;@ EaRead : Read '(a0)' (address in r0) into r0:
40899  mov lr,pc
40900  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
40901
40902;@ EaCalc : Get register index into r11:
40903  and r11,r8,#0x0e00
40904;@ EaRead : Read register[r11] into r1:
40905  ldr r1,[r7,r11,lsr #7]
40906
40907;@ Do arithmetic:
40908  rsbs r1,r0,r1
40909  mrs r10,cpsr ;@ r10=flags
40910  eor r10,r10,#0x20000000 ;@ Invert carry
40911  str r10,[r7,#0x4c] ;@ Save X bit
40912
40913;@ Save result:
40914;@ EaWrite: r1 into register[r11]:
40915  str r1,[r7,r11,lsr #7]
40916
40917  ldrh r8,[r4],#2 ;@ Fetch next opcode
40918  subs r5,r5,#14 ;@ Subtract cycles
40919  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40920  b CycloneEnd
40921
40922;@ ---------- [9098] sub.l (a0)+, d0 uses Op9098 ----------
40923Op9098:
40924;@ EaCalc : Get '(a0)+' into r0:
40925  and r2,r8,#0x000f
40926  ldr r0,[r7,r2,lsl #2]
40927  add r3,r0,#4 ;@ Post-increment An
40928  str r3,[r7,r2,lsl #2]
40929;@ EaRead : Read '(a0)+' (address in r0) into r0:
40930  mov lr,pc
40931  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
40932
40933;@ EaCalc : Get register index into r11:
40934  and r11,r8,#0x0e00
40935;@ EaRead : Read register[r11] into r1:
40936  ldr r1,[r7,r11,lsr #7]
40937
40938;@ Do arithmetic:
40939  rsbs r1,r0,r1
40940  mrs r10,cpsr ;@ r10=flags
40941  eor r10,r10,#0x20000000 ;@ Invert carry
40942  str r10,[r7,#0x4c] ;@ Save X bit
40943
40944;@ Save result:
40945;@ EaWrite: r1 into register[r11]:
40946  str r1,[r7,r11,lsr #7]
40947
40948  ldrh r8,[r4],#2 ;@ Fetch next opcode
40949  subs r5,r5,#14 ;@ Subtract cycles
40950  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40951  b CycloneEnd
40952
40953;@ ---------- [90a0] sub.l -(a0), d0 uses Op90a0 ----------
40954Op90a0:
40955;@ EaCalc : Get '-(a0)' into r0:
40956  and r2,r8,#0x000f
40957  orr r2,r2,#0x8 ;@ A0-7
40958  ldr r0,[r7,r2,lsl #2]
40959  sub r0,r0,#4 ;@ Pre-decrement An
40960  str r0,[r7,r2,lsl #2]
40961;@ EaRead : Read '-(a0)' (address in r0) into r0:
40962  mov lr,pc
40963  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
40964
40965;@ EaCalc : Get register index into r11:
40966  and r11,r8,#0x0e00
40967;@ EaRead : Read register[r11] into r1:
40968  ldr r1,[r7,r11,lsr #7]
40969
40970;@ Do arithmetic:
40971  rsbs r1,r0,r1
40972  mrs r10,cpsr ;@ r10=flags
40973  eor r10,r10,#0x20000000 ;@ Invert carry
40974  str r10,[r7,#0x4c] ;@ Save X bit
40975
40976;@ Save result:
40977;@ EaWrite: r1 into register[r11]:
40978  str r1,[r7,r11,lsr #7]
40979
40980  ldrh r8,[r4],#2 ;@ Fetch next opcode
40981  subs r5,r5,#16 ;@ Subtract cycles
40982  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
40983  b CycloneEnd
40984
40985;@ ---------- [90a8] sub.l ($3333,a0), d0 uses Op90a8 ----------
40986Op90a8:
40987;@ EaCalc : Get '($3333,a0)' into r0:
40988  ldrsh r0,[r4],#2 ;@ Fetch offset
40989  and r2,r8,#0x000f
40990  ldr r2,[r7,r2,lsl #2]
40991  add r0,r0,r2 ;@ Add on offset
40992;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
40993  mov lr,pc
40994  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
40995
40996;@ EaCalc : Get register index into r11:
40997  and r11,r8,#0x0e00
40998;@ EaRead : Read register[r11] into r1:
40999  ldr r1,[r7,r11,lsr #7]
41000
41001;@ Do arithmetic:
41002  rsbs r1,r0,r1
41003  mrs r10,cpsr ;@ r10=flags
41004  eor r10,r10,#0x20000000 ;@ Invert carry
41005  str r10,[r7,#0x4c] ;@ Save X bit
41006
41007;@ Save result:
41008;@ EaWrite: r1 into register[r11]:
41009  str r1,[r7,r11,lsr #7]
41010
41011  ldrh r8,[r4],#2 ;@ Fetch next opcode
41012  subs r5,r5,#18 ;@ Subtract cycles
41013  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41014  b CycloneEnd
41015
41016;@ ---------- [90b0] sub.l ($33,a0,d3.w*2), d0 uses Op90b0 ----------
41017Op90b0:
41018;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
41019;@ Get extension word into r3:
41020  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
41021  mov r2,r3,lsr #10
41022  tst r3,#0x0800 ;@ Is Rn Word or Long
41023  and r2,r2,#0x3c ;@ r2=Index of Rn
41024  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
41025  ldrne   r2,[r7,r2] ;@ r2=Rn.l
41026  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
41027  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
41028  and r2,r8,#0x000f
41029  orr r2,r2,#0x8 ;@ A0-7
41030  ldr r2,[r7,r2,lsl #2]
41031  add r0,r2,r3 ;@ r0=Disp+An+Rn
41032;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
41033  mov lr,pc
41034  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
41035
41036;@ EaCalc : Get register index into r11:
41037  and r11,r8,#0x0e00
41038;@ EaRead : Read register[r11] into r1:
41039  ldr r1,[r7,r11,lsr #7]
41040
41041;@ Do arithmetic:
41042  rsbs r1,r0,r1
41043  mrs r10,cpsr ;@ r10=flags
41044  eor r10,r10,#0x20000000 ;@ Invert carry
41045  str r10,[r7,#0x4c] ;@ Save X bit
41046
41047;@ Save result:
41048;@ EaWrite: r1 into register[r11]:
41049  str r1,[r7,r11,lsr #7]
41050
41051  ldrh r8,[r4],#2 ;@ Fetch next opcode
41052  subs r5,r5,#20 ;@ Subtract cycles
41053  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41054  b CycloneEnd
41055
41056;@ ---------- [90b8] sub.l $3333.w, d0 uses Op90b8 ----------
41057Op90b8:
41058;@ EaCalc : Get '$3333.w' into r0:
41059  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
41060;@ EaRead : Read '$3333.w' (address in r0) into r0:
41061  mov lr,pc
41062  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
41063
41064;@ EaCalc : Get register index into r11:
41065  and r11,r8,#0x0e00
41066;@ EaRead : Read register[r11] into r1:
41067  ldr r1,[r7,r11,lsr #7]
41068
41069;@ Do arithmetic:
41070  rsbs r1,r0,r1
41071  mrs r10,cpsr ;@ r10=flags
41072  eor r10,r10,#0x20000000 ;@ Invert carry
41073  str r10,[r7,#0x4c] ;@ Save X bit
41074
41075;@ Save result:
41076;@ EaWrite: r1 into register[r11]:
41077  str r1,[r7,r11,lsr #7]
41078
41079  ldrh r8,[r4],#2 ;@ Fetch next opcode
41080  subs r5,r5,#18 ;@ Subtract cycles
41081  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41082  b CycloneEnd
41083
41084;@ ---------- [90b9] sub.l $33333333.l, d0 uses Op90b9 ----------
41085Op90b9:
41086;@ EaCalc : Get '$33333333.l' into r0:
41087  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
41088  ldrh r0,[r4],#2
41089  orr r0,r0,r2,lsl #16
41090;@ EaRead : Read '$33333333.l' (address in r0) into r0:
41091  mov lr,pc
41092  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
41093
41094;@ EaCalc : Get register index into r11:
41095  and r11,r8,#0x0e00
41096;@ EaRead : Read register[r11] into r1:
41097  ldr r1,[r7,r11,lsr #7]
41098
41099;@ Do arithmetic:
41100  rsbs r1,r0,r1
41101  mrs r10,cpsr ;@ r10=flags
41102  eor r10,r10,#0x20000000 ;@ Invert carry
41103  str r10,[r7,#0x4c] ;@ Save X bit
41104
41105;@ Save result:
41106;@ EaWrite: r1 into register[r11]:
41107  str r1,[r7,r11,lsr #7]
41108
41109  ldrh r8,[r4],#2 ;@ Fetch next opcode
41110  subs r5,r5,#22 ;@ Subtract cycles
41111  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41112  b CycloneEnd
41113
41114;@ ---------- [90ba] sub.l ($3333,pc), d0; =3335 uses Op90ba ----------
41115Op90ba:
41116;@ EaCalc : Get '($3333,pc)' into r0:
41117  ldr r0,[r7,#0x60] ;@ Get Memory base
41118  sub r0,r4,r0 ;@ Real PC
41119  ldrsh r2,[r4],#2 ;@ Fetch extension
41120  add r0,r2,r0 ;@ ($nn,PC)
41121;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
41122  mov lr,pc
41123  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
41124
41125;@ EaCalc : Get register index into r11:
41126  and r11,r8,#0x0e00
41127;@ EaRead : Read register[r11] into r1:
41128  ldr r1,[r7,r11,lsr #7]
41129
41130;@ Do arithmetic:
41131  rsbs r1,r0,r1
41132  mrs r10,cpsr ;@ r10=flags
41133  eor r10,r10,#0x20000000 ;@ Invert carry
41134  str r10,[r7,#0x4c] ;@ Save X bit
41135
41136;@ Save result:
41137;@ EaWrite: r1 into register[r11]:
41138  str r1,[r7,r11,lsr #7]
41139
41140  ldrh r8,[r4],#2 ;@ Fetch next opcode
41141  subs r5,r5,#18 ;@ Subtract cycles
41142  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41143  b CycloneEnd
41144
41145;@ ---------- [90bb] sub.l ($33,pc,d3.w*2), d0; =35 uses Op90bb ----------
41146Op90bb:
41147;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
41148  ldr r0,[r7,#0x60] ;@ Get Memory base
41149  ldrh r3,[r4] ;@ Get extension word
41150  sub r0,r4,r0 ;@ r0=PC
41151  add r4,r4,#2
41152  mov r2,r3,lsr #10
41153  tst r3,#0x0800 ;@ Is Rn Word or Long
41154  and r2,r2,#0x3c ;@ r2=Index of Rn
41155  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
41156  ldrne   r2,[r7,r2] ;@ r2=Rn.l
41157  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
41158  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
41159  add r0,r2,r0 ;@ r0=Disp+PC+Rn
41160;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
41161  mov lr,pc
41162  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
41163
41164;@ EaCalc : Get register index into r11:
41165  and r11,r8,#0x0e00
41166;@ EaRead : Read register[r11] into r1:
41167  ldr r1,[r7,r11,lsr #7]
41168
41169;@ Do arithmetic:
41170  rsbs r1,r0,r1
41171  mrs r10,cpsr ;@ r10=flags
41172  eor r10,r10,#0x20000000 ;@ Invert carry
41173  str r10,[r7,#0x4c] ;@ Save X bit
41174
41175;@ Save result:
41176;@ EaWrite: r1 into register[r11]:
41177  str r1,[r7,r11,lsr #7]
41178
41179  ldrh r8,[r4],#2 ;@ Fetch next opcode
41180  subs r5,r5,#20 ;@ Subtract cycles
41181  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41182  b CycloneEnd
41183
41184;@ ---------- [90bc] sub.l #$33333333, d0 uses Op90bc ----------
41185Op90bc:
41186;@ EaCalc : Get '#$33333333' into r0:
41187  ldrh r2,[r4],#2 ;@ Fetch immediate value
41188  ldrh r3,[r4],#2
41189  orr r0,r3,r2,lsl #16
41190;@ EaRead : Read '#$33333333' (address in r0) into r0:
41191
41192;@ EaCalc : Get register index into r11:
41193  and r11,r8,#0x0e00
41194;@ EaRead : Read register[r11] into r1:
41195  ldr r1,[r7,r11,lsr #7]
41196
41197;@ Do arithmetic:
41198  rsbs r1,r0,r1
41199  mrs r10,cpsr ;@ r10=flags
41200  eor r10,r10,#0x20000000 ;@ Invert carry
41201  str r10,[r7,#0x4c] ;@ Save X bit
41202
41203;@ Save result:
41204;@ EaWrite: r1 into register[r11]:
41205  str r1,[r7,r11,lsr #7]
41206
41207  ldrh r8,[r4],#2 ;@ Fetch next opcode
41208  subs r5,r5,#16 ;@ Subtract cycles
41209  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41210  b CycloneEnd
41211
41212;@ ---------- [90c0] suba.w d0, a0 uses Op90c0 ----------
41213Op90c0:
41214;@ EaCalc : Get register index into r0:
41215  and r0,r8,#0x000f
41216;@ EaRead : Read register[r0] into r0:
41217  ldr r0,[r7,r0,lsl #2]
41218
41219;@ EaCalc : Get register index into r11:
41220  and r11,r8,#0x1e00
41221;@ EaRead : Read register[r11] into r1:
41222  ldr r1,[r7,r11,lsr #7]
41223
41224  mov r0,r0,asl #16
41225
41226  sub r1,r1,r0,asr #16
41227
41228;@ EaWrite: r1 into register[r11]:
41229  str r1,[r7,r11,lsr #7]
41230
41231  ldrh r8,[r4],#2 ;@ Fetch next opcode
41232  subs r5,r5,#8 ;@ Subtract cycles
41233  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41234  b CycloneEnd
41235
41236;@ ---------- [90d0] suba.w (a0), a0 uses Op90d0 ----------
41237Op90d0:
41238;@ EaCalc : Get '(a0)' into r0:
41239  and r2,r8,#0x000f
41240  orr r2,r2,#0x8 ;@ A0-7
41241  ldr r0,[r7,r2,lsl #2]
41242;@ EaRead : Read '(a0)' (address in r0) into r0:
41243  mov lr,pc
41244  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
41245
41246;@ EaCalc : Get register index into r11:
41247  and r11,r8,#0x1e00
41248;@ EaRead : Read register[r11] into r1:
41249  ldr r1,[r7,r11,lsr #7]
41250
41251  mov r0,r0,asl #16
41252
41253  sub r1,r1,r0,asr #16
41254
41255;@ EaWrite: r1 into register[r11]:
41256  str r1,[r7,r11,lsr #7]
41257
41258  ldrh r8,[r4],#2 ;@ Fetch next opcode
41259  subs r5,r5,#12 ;@ Subtract cycles
41260  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41261  b CycloneEnd
41262
41263;@ ---------- [90d8] suba.w (a0)+, a0 uses Op90d8 ----------
41264Op90d8:
41265;@ EaCalc : Get '(a0)+' into r0:
41266  and r2,r8,#0x000f
41267  ldr r0,[r7,r2,lsl #2]
41268  add r3,r0,#2 ;@ Post-increment An
41269  str r3,[r7,r2,lsl #2]
41270;@ EaRead : Read '(a0)+' (address in r0) into r0:
41271  mov lr,pc
41272  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
41273
41274;@ EaCalc : Get register index into r11:
41275  and r11,r8,#0x1e00
41276;@ EaRead : Read register[r11] into r1:
41277  ldr r1,[r7,r11,lsr #7]
41278
41279  mov r0,r0,asl #16
41280
41281  sub r1,r1,r0,asr #16
41282
41283;@ EaWrite: r1 into register[r11]:
41284  str r1,[r7,r11,lsr #7]
41285
41286  ldrh r8,[r4],#2 ;@ Fetch next opcode
41287  subs r5,r5,#12 ;@ Subtract cycles
41288  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41289  b CycloneEnd
41290
41291;@ ---------- [90e0] suba.w -(a0), a0 uses Op90e0 ----------
41292Op90e0:
41293;@ EaCalc : Get '-(a0)' into r0:
41294  and r2,r8,#0x000f
41295  orr r2,r2,#0x8 ;@ A0-7
41296  ldr r0,[r7,r2,lsl #2]
41297  sub r0,r0,#2 ;@ Pre-decrement An
41298  str r0,[r7,r2,lsl #2]
41299;@ EaRead : Read '-(a0)' (address in r0) into r0:
41300  mov lr,pc
41301  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
41302
41303;@ EaCalc : Get register index into r11:
41304  and r11,r8,#0x1e00
41305;@ EaRead : Read register[r11] into r1:
41306  ldr r1,[r7,r11,lsr #7]
41307
41308  mov r0,r0,asl #16
41309
41310  sub r1,r1,r0,asr #16
41311
41312;@ EaWrite: r1 into register[r11]:
41313  str r1,[r7,r11,lsr #7]
41314
41315  ldrh r8,[r4],#2 ;@ Fetch next opcode
41316  subs r5,r5,#14 ;@ Subtract cycles
41317  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41318  b CycloneEnd
41319
41320;@ ---------- [90e8] suba.w ($3333,a0), a0 uses Op90e8 ----------
41321Op90e8:
41322;@ EaCalc : Get '($3333,a0)' into r0:
41323  ldrsh r0,[r4],#2 ;@ Fetch offset
41324  and r2,r8,#0x000f
41325  ldr r2,[r7,r2,lsl #2]
41326  add r0,r0,r2 ;@ Add on offset
41327;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
41328  mov lr,pc
41329  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
41330
41331;@ EaCalc : Get register index into r11:
41332  and r11,r8,#0x1e00
41333;@ EaRead : Read register[r11] into r1:
41334  ldr r1,[r7,r11,lsr #7]
41335
41336  mov r0,r0,asl #16
41337
41338  sub r1,r1,r0,asr #16
41339
41340;@ EaWrite: r1 into register[r11]:
41341  str r1,[r7,r11,lsr #7]
41342
41343  ldrh r8,[r4],#2 ;@ Fetch next opcode
41344  subs r5,r5,#16 ;@ Subtract cycles
41345  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41346  b CycloneEnd
41347
41348;@ ---------- [90f0] suba.w ($33,a0,d3.w*2), a0 uses Op90f0 ----------
41349Op90f0:
41350;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
41351;@ Get extension word into r3:
41352  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
41353  mov r2,r3,lsr #10
41354  tst r3,#0x0800 ;@ Is Rn Word or Long
41355  and r2,r2,#0x3c ;@ r2=Index of Rn
41356  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
41357  ldrne   r2,[r7,r2] ;@ r2=Rn.l
41358  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
41359  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
41360  and r2,r8,#0x000f
41361  orr r2,r2,#0x8 ;@ A0-7
41362  ldr r2,[r7,r2,lsl #2]
41363  add r0,r2,r3 ;@ r0=Disp+An+Rn
41364;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
41365  mov lr,pc
41366  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
41367
41368;@ EaCalc : Get register index into r11:
41369  and r11,r8,#0x1e00
41370;@ EaRead : Read register[r11] into r1:
41371  ldr r1,[r7,r11,lsr #7]
41372
41373  mov r0,r0,asl #16
41374
41375  sub r1,r1,r0,asr #16
41376
41377;@ EaWrite: r1 into register[r11]:
41378  str r1,[r7,r11,lsr #7]
41379
41380  ldrh r8,[r4],#2 ;@ Fetch next opcode
41381  subs r5,r5,#18 ;@ Subtract cycles
41382  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41383  b CycloneEnd
41384
41385;@ ---------- [90f8] suba.w $3333.w, a0 uses Op90f8 ----------
41386Op90f8:
41387;@ EaCalc : Get '$3333.w' into r0:
41388  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
41389;@ EaRead : Read '$3333.w' (address in r0) into r0:
41390  mov lr,pc
41391  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
41392
41393;@ EaCalc : Get register index into r11:
41394  and r11,r8,#0x1e00
41395;@ EaRead : Read register[r11] into r1:
41396  ldr r1,[r7,r11,lsr #7]
41397
41398  mov r0,r0,asl #16
41399
41400  sub r1,r1,r0,asr #16
41401
41402;@ EaWrite: r1 into register[r11]:
41403  str r1,[r7,r11,lsr #7]
41404
41405  ldrh r8,[r4],#2 ;@ Fetch next opcode
41406  subs r5,r5,#16 ;@ Subtract cycles
41407  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41408  b CycloneEnd
41409
41410;@ ---------- [90f9] suba.w $33333333.l, a0 uses Op90f9 ----------
41411Op90f9:
41412;@ EaCalc : Get '$33333333.l' into r0:
41413  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
41414  ldrh r0,[r4],#2
41415  orr r0,r0,r2,lsl #16
41416;@ EaRead : Read '$33333333.l' (address in r0) into r0:
41417  mov lr,pc
41418  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
41419
41420;@ EaCalc : Get register index into r11:
41421  and r11,r8,#0x1e00
41422;@ EaRead : Read register[r11] into r1:
41423  ldr r1,[r7,r11,lsr #7]
41424
41425  mov r0,r0,asl #16
41426
41427  sub r1,r1,r0,asr #16
41428
41429;@ EaWrite: r1 into register[r11]:
41430  str r1,[r7,r11,lsr #7]
41431
41432  ldrh r8,[r4],#2 ;@ Fetch next opcode
41433  subs r5,r5,#20 ;@ Subtract cycles
41434  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41435  b CycloneEnd
41436
41437;@ ---------- [90fa] suba.w ($3333,pc), a0; =3335 uses Op90fa ----------
41438Op90fa:
41439;@ EaCalc : Get '($3333,pc)' into r0:
41440  ldr r0,[r7,#0x60] ;@ Get Memory base
41441  sub r0,r4,r0 ;@ Real PC
41442  ldrsh r2,[r4],#2 ;@ Fetch extension
41443  add r0,r2,r0 ;@ ($nn,PC)
41444;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
41445  mov lr,pc
41446  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
41447
41448;@ EaCalc : Get register index into r11:
41449  and r11,r8,#0x1e00
41450;@ EaRead : Read register[r11] into r1:
41451  ldr r1,[r7,r11,lsr #7]
41452
41453  mov r0,r0,asl #16
41454
41455  sub r1,r1,r0,asr #16
41456
41457;@ EaWrite: r1 into register[r11]:
41458  str r1,[r7,r11,lsr #7]
41459
41460  ldrh r8,[r4],#2 ;@ Fetch next opcode
41461  subs r5,r5,#16 ;@ Subtract cycles
41462  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41463  b CycloneEnd
41464
41465;@ ---------- [90fb] suba.w ($33,pc,d3.w*2), a0; =35 uses Op90fb ----------
41466Op90fb:
41467;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
41468  ldr r0,[r7,#0x60] ;@ Get Memory base
41469  ldrh r3,[r4] ;@ Get extension word
41470  sub r0,r4,r0 ;@ r0=PC
41471  add r4,r4,#2
41472  mov r2,r3,lsr #10
41473  tst r3,#0x0800 ;@ Is Rn Word or Long
41474  and r2,r2,#0x3c ;@ r2=Index of Rn
41475  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
41476  ldrne   r2,[r7,r2] ;@ r2=Rn.l
41477  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
41478  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
41479  add r0,r2,r0 ;@ r0=Disp+PC+Rn
41480;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
41481  mov lr,pc
41482  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
41483
41484;@ EaCalc : Get register index into r11:
41485  and r11,r8,#0x1e00
41486;@ EaRead : Read register[r11] into r1:
41487  ldr r1,[r7,r11,lsr #7]
41488
41489  mov r0,r0,asl #16
41490
41491  sub r1,r1,r0,asr #16
41492
41493;@ EaWrite: r1 into register[r11]:
41494  str r1,[r7,r11,lsr #7]
41495
41496  ldrh r8,[r4],#2 ;@ Fetch next opcode
41497  subs r5,r5,#18 ;@ Subtract cycles
41498  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41499  b CycloneEnd
41500
41501;@ ---------- [90fc] suba.w #$3333, a0 uses Op90fc ----------
41502Op90fc:
41503;@ EaCalc : Get '#$3333' into r0:
41504  ldrsh r0,[r4],#2 ;@ Fetch immediate value
41505;@ EaRead : Read '#$3333' (address in r0) into r0:
41506
41507;@ EaCalc : Get register index into r11:
41508  and r11,r8,#0x1e00
41509;@ EaRead : Read register[r11] into r1:
41510  ldr r1,[r7,r11,lsr #7]
41511
41512  mov r0,r0,asl #16
41513
41514  sub r1,r1,r0,asr #16
41515
41516;@ EaWrite: r1 into register[r11]:
41517  str r1,[r7,r11,lsr #7]
41518
41519  ldrh r8,[r4],#2 ;@ Fetch next opcode
41520  subs r5,r5,#12 ;@ Subtract cycles
41521  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41522  b CycloneEnd
41523
41524;@ ---------- [9100] subx.b d0, d0 uses Op9100 ----------
41525Op9100:
41526;@ Get src/dest reg vals
41527;@ EaCalc : Get register index into r6:
41528  and r6,r8,#0x0007
41529;@ EaRead : Read register[r6] into r6:
41530  ldr r6,[r7,r6,lsl #2]
41531
41532;@ EaCalc : Get register index into r11:
41533  and r11,r8,#0x0e00
41534;@ EaRead : Read register[r11] into r0:
41535  ldr r0,[r7,r11,lsr #7]
41536
41537  mov r6,r6,asl #24
41538
41539;@ Do arithmetic:
41540;@ Get X bit:
41541  ldr r2,[r7,#0x4c]
41542  mvn r2,r2 ;@ Invert it
41543  tst r2,r2,lsl #3 ;@ Get into Carry
41544
41545  rscs r1,r6,r0,asl #24
41546  orr r3,r10,#0xb0000000 ;@ for old Z
41547  mrs r10,cpsr ;@ r10=flags
41548  eor r10,r10,#0x20000000 ;@ Invert carry
41549  str r10,[r7,#0x4c] ;@ Save X bit
41550  movs r2,r1,lsr #24
41551  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
41552  andeq r10,r10,r3 ;@ fix Z
41553
41554;@ Save result:
41555;@ EaWrite: r1 into register[r11]:
41556  mov r1,r1,lsr #24
41557  strb r1,[r7,r11,lsr #7]
41558
41559  ldr r6,[r7,#0x54]
41560  ldrh r8,[r4],#2 ;@ Fetch next opcode
41561  subs r5,r5,#4 ;@ Subtract cycles
41562  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41563  b CycloneEnd
41564
41565;@ ---------- [9108] subx.b -(a0), -(a0) uses Op9108 ----------
41566Op9108:
41567;@ Get src/dest EA vals
41568;@ EaCalc : Get '-(a0)' into r0:
41569  and r2,r8,#0x000f
41570  ldr r0,[r7,r2,lsl #2]
41571  sub r0,r0,#1 ;@ Pre-decrement An
41572  str r0,[r7,r2,lsl #2]
41573;@ EaRead : Read '-(a0)' (address in r0) into r6:
41574  mov lr,pc
41575  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41576  mov r6,r0,asl #24
41577
41578;@ EaCalc : Get '-(a0)' into r11:
41579  and r2,r8,#0x1e00
41580  ldr r11,[r7,r2,lsr #7]
41581  sub r11,r11,#1 ;@ Pre-decrement An
41582  str r11,[r7,r2,lsr #7]
41583;@ EaRead : Read '-(a0)' (address in r11) into r0:
41584  add lr,pc,#4
41585  mov r0,r11
41586  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41587
41588;@ Do arithmetic:
41589;@ Get X bit:
41590  ldr r2,[r7,#0x4c]
41591  mvn r2,r2 ;@ Invert it
41592  tst r2,r2,lsl #3 ;@ Get into Carry
41593
41594  rscs r1,r6,r0,asl #24
41595  orr r3,r10,#0xb0000000 ;@ for old Z
41596  mrs r10,cpsr ;@ r10=flags
41597  eor r10,r10,#0x20000000 ;@ Invert carry
41598  str r10,[r7,#0x4c] ;@ Save X bit
41599  movs r2,r1,lsr #24
41600  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
41601  andeq r10,r10,r3 ;@ fix Z
41602
41603;@ Save result:
41604;@ EaWrite: Write r1 into '-(a0)' (address in r11):
41605  mov r1,r1,lsr #24
41606  add lr,pc,#4
41607  mov r0,r11
41608  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41609
41610  ldr r6,[r7,#0x54]
41611  ldrh r8,[r4],#2 ;@ Fetch next opcode
41612  subs r5,r5,#18 ;@ Subtract cycles
41613  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41614  b CycloneEnd
41615
41616;@ ---------- [910f] subx.b -(a7), -(a0) uses Op910f ----------
41617Op910f:
41618;@ Get src/dest EA vals
41619;@ EaCalc : Get '-(a7)' into r0:
41620  ldr r0,[r7,#0x3c] ;@ A7
41621  sub r0,r0,#2 ;@ Pre-decrement An
41622  str r0,[r7,#0x3c] ;@ A7
41623;@ EaRead : Read '-(a7)' (address in r0) into r6:
41624  mov lr,pc
41625  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41626  mov r6,r0,asl #24
41627
41628;@ EaCalc : Get '-(a0)' into r11:
41629  and r2,r8,#0x1e00
41630  ldr r11,[r7,r2,lsr #7]
41631  sub r11,r11,#1 ;@ Pre-decrement An
41632  str r11,[r7,r2,lsr #7]
41633;@ EaRead : Read '-(a0)' (address in r11) into r0:
41634  add lr,pc,#4
41635  mov r0,r11
41636  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41637
41638;@ Do arithmetic:
41639;@ Get X bit:
41640  ldr r2,[r7,#0x4c]
41641  mvn r2,r2 ;@ Invert it
41642  tst r2,r2,lsl #3 ;@ Get into Carry
41643
41644  rscs r1,r6,r0,asl #24
41645  orr r3,r10,#0xb0000000 ;@ for old Z
41646  mrs r10,cpsr ;@ r10=flags
41647  eor r10,r10,#0x20000000 ;@ Invert carry
41648  str r10,[r7,#0x4c] ;@ Save X bit
41649  movs r2,r1,lsr #24
41650  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
41651  andeq r10,r10,r3 ;@ fix Z
41652
41653;@ Save result:
41654;@ EaWrite: Write r1 into '-(a0)' (address in r11):
41655  mov r1,r1,lsr #24
41656  add lr,pc,#4
41657  mov r0,r11
41658  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41659
41660  ldr r6,[r7,#0x54]
41661  ldrh r8,[r4],#2 ;@ Fetch next opcode
41662  subs r5,r5,#18 ;@ Subtract cycles
41663  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41664  b CycloneEnd
41665
41666;@ ---------- [9110] sub.b d0, (a0) uses Op9110 ----------
41667Op9110:
41668;@ EaCalc : Get '(a0)' into r11:
41669  and r2,r8,#0x000f
41670  orr r2,r2,#0x8 ;@ A0-7
41671  ldr r11,[r7,r2,lsl #2]
41672;@ EaRead : Read '(a0)' (address in r11) into r0:
41673  add lr,pc,#4
41674  mov r0,r11
41675  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41676
41677;@ EaCalc : Get register index into r1:
41678  and r1,r8,#0x0e00
41679;@ EaRead : Read register[r1] into r1:
41680  ldr r1,[r7,r1,lsr #7]
41681
41682;@ Do arithmetic:
41683  mov r0,r0,asl #24
41684  subs r1,r0,r1,asl #24
41685  mrs r10,cpsr ;@ r10=flags
41686  eor r10,r10,#0x20000000 ;@ Invert carry
41687  str r10,[r7,#0x4c] ;@ Save X bit
41688
41689;@ Save result:
41690  mov r1,r1,asr #24
41691;@ EaWrite: Write r1 into '(a0)' (address in r11):
41692  and r1,r1,#0xff
41693  add lr,pc,#4
41694  mov r0,r11
41695  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41696
41697  ldrh r8,[r4],#2 ;@ Fetch next opcode
41698  subs r5,r5,#12 ;@ Subtract cycles
41699  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41700  b CycloneEnd
41701
41702;@ ---------- [9118] sub.b d0, (a0)+ uses Op9118 ----------
41703Op9118:
41704;@ EaCalc : Get '(a0)+' into r11:
41705  and r2,r8,#0x000f
41706  ldr r11,[r7,r2,lsl #2]
41707  add r3,r11,#1 ;@ Post-increment An
41708  str r3,[r7,r2,lsl #2]
41709;@ EaRead : Read '(a0)+' (address in r11) into r0:
41710  add lr,pc,#4
41711  mov r0,r11
41712  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41713
41714;@ EaCalc : Get register index into r1:
41715  and r1,r8,#0x0e00
41716;@ EaRead : Read register[r1] into r1:
41717  ldr r1,[r7,r1,lsr #7]
41718
41719;@ Do arithmetic:
41720  mov r0,r0,asl #24
41721  subs r1,r0,r1,asl #24
41722  mrs r10,cpsr ;@ r10=flags
41723  eor r10,r10,#0x20000000 ;@ Invert carry
41724  str r10,[r7,#0x4c] ;@ Save X bit
41725
41726;@ Save result:
41727  mov r1,r1,asr #24
41728;@ EaWrite: Write r1 into '(a0)+' (address in r11):
41729  and r1,r1,#0xff
41730  add lr,pc,#4
41731  mov r0,r11
41732  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41733
41734  ldrh r8,[r4],#2 ;@ Fetch next opcode
41735  subs r5,r5,#12 ;@ Subtract cycles
41736  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41737  b CycloneEnd
41738
41739;@ ---------- [911f] sub.b d0, (a7)+ uses Op911f ----------
41740Op911f:
41741;@ EaCalc : Get '(a7)+' into r11:
41742  ldr r11,[r7,#0x3c] ;@ A7
41743  add r3,r11,#2 ;@ Post-increment An
41744  str r3,[r7,#0x3c] ;@ A7
41745;@ EaRead : Read '(a7)+' (address in r11) into r0:
41746  add lr,pc,#4
41747  mov r0,r11
41748  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41749
41750;@ EaCalc : Get register index into r1:
41751  and r1,r8,#0x0e00
41752;@ EaRead : Read register[r1] into r1:
41753  ldr r1,[r7,r1,lsr #7]
41754
41755;@ Do arithmetic:
41756  mov r0,r0,asl #24
41757  subs r1,r0,r1,asl #24
41758  mrs r10,cpsr ;@ r10=flags
41759  eor r10,r10,#0x20000000 ;@ Invert carry
41760  str r10,[r7,#0x4c] ;@ Save X bit
41761
41762;@ Save result:
41763  mov r1,r1,asr #24
41764;@ EaWrite: Write r1 into '(a7)+' (address in r11):
41765  and r1,r1,#0xff
41766  add lr,pc,#4
41767  mov r0,r11
41768  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41769
41770  ldrh r8,[r4],#2 ;@ Fetch next opcode
41771  subs r5,r5,#12 ;@ Subtract cycles
41772  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41773  b CycloneEnd
41774
41775;@ ---------- [9120] sub.b d0, -(a0) uses Op9120 ----------
41776Op9120:
41777;@ EaCalc : Get '-(a0)' into r11:
41778  and r2,r8,#0x000f
41779  orr r2,r2,#0x8 ;@ A0-7
41780  ldr r11,[r7,r2,lsl #2]
41781  sub r11,r11,#1 ;@ Pre-decrement An
41782  str r11,[r7,r2,lsl #2]
41783;@ EaRead : Read '-(a0)' (address in r11) into r0:
41784  add lr,pc,#4
41785  mov r0,r11
41786  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41787
41788;@ EaCalc : Get register index into r1:
41789  and r1,r8,#0x0e00
41790;@ EaRead : Read register[r1] into r1:
41791  ldr r1,[r7,r1,lsr #7]
41792
41793;@ Do arithmetic:
41794  mov r0,r0,asl #24
41795  subs r1,r0,r1,asl #24
41796  mrs r10,cpsr ;@ r10=flags
41797  eor r10,r10,#0x20000000 ;@ Invert carry
41798  str r10,[r7,#0x4c] ;@ Save X bit
41799
41800;@ Save result:
41801  mov r1,r1,asr #24
41802;@ EaWrite: Write r1 into '-(a0)' (address in r11):
41803  and r1,r1,#0xff
41804  add lr,pc,#4
41805  mov r0,r11
41806  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41807
41808  ldrh r8,[r4],#2 ;@ Fetch next opcode
41809  subs r5,r5,#14 ;@ Subtract cycles
41810  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41811  b CycloneEnd
41812
41813;@ ---------- [9127] sub.b d0, -(a7) uses Op9127 ----------
41814Op9127:
41815;@ EaCalc : Get '-(a7)' into r11:
41816  ldr r11,[r7,#0x3c] ;@ A7
41817  sub r11,r11,#2 ;@ Pre-decrement An
41818  str r11,[r7,#0x3c] ;@ A7
41819;@ EaRead : Read '-(a7)' (address in r11) into r0:
41820  add lr,pc,#4
41821  mov r0,r11
41822  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41823
41824;@ EaCalc : Get register index into r1:
41825  and r1,r8,#0x0e00
41826;@ EaRead : Read register[r1] into r1:
41827  ldr r1,[r7,r1,lsr #7]
41828
41829;@ Do arithmetic:
41830  mov r0,r0,asl #24
41831  subs r1,r0,r1,asl #24
41832  mrs r10,cpsr ;@ r10=flags
41833  eor r10,r10,#0x20000000 ;@ Invert carry
41834  str r10,[r7,#0x4c] ;@ Save X bit
41835
41836;@ Save result:
41837  mov r1,r1,asr #24
41838;@ EaWrite: Write r1 into '-(a7)' (address in r11):
41839  and r1,r1,#0xff
41840  add lr,pc,#4
41841  mov r0,r11
41842  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41843
41844  ldrh r8,[r4],#2 ;@ Fetch next opcode
41845  subs r5,r5,#14 ;@ Subtract cycles
41846  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41847  b CycloneEnd
41848
41849;@ ---------- [9128] sub.b d0, ($3333,a0) uses Op9128 ----------
41850Op9128:
41851;@ EaCalc : Get '($3333,a0)' into r11:
41852  ldrsh r0,[r4],#2 ;@ Fetch offset
41853  and r2,r8,#0x000f
41854  ldr r2,[r7,r2,lsl #2]
41855  add r11,r0,r2 ;@ Add on offset
41856;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
41857  add lr,pc,#4
41858  mov r0,r11
41859  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41860
41861;@ EaCalc : Get register index into r1:
41862  and r1,r8,#0x0e00
41863;@ EaRead : Read register[r1] into r1:
41864  ldr r1,[r7,r1,lsr #7]
41865
41866;@ Do arithmetic:
41867  mov r0,r0,asl #24
41868  subs r1,r0,r1,asl #24
41869  mrs r10,cpsr ;@ r10=flags
41870  eor r10,r10,#0x20000000 ;@ Invert carry
41871  str r10,[r7,#0x4c] ;@ Save X bit
41872
41873;@ Save result:
41874  mov r1,r1,asr #24
41875;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
41876  and r1,r1,#0xff
41877  add lr,pc,#4
41878  mov r0,r11
41879  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41880
41881  ldrh r8,[r4],#2 ;@ Fetch next opcode
41882  subs r5,r5,#16 ;@ Subtract cycles
41883  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41884  b CycloneEnd
41885
41886;@ ---------- [9130] sub.b d0, ($33,a0,d3.w*2) uses Op9130 ----------
41887Op9130:
41888;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
41889;@ Get extension word into r3:
41890  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
41891  mov r2,r3,lsr #10
41892  tst r3,#0x0800 ;@ Is Rn Word or Long
41893  and r2,r2,#0x3c ;@ r2=Index of Rn
41894  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
41895  ldrne   r2,[r7,r2] ;@ r2=Rn.l
41896  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
41897  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
41898  and r2,r8,#0x000f
41899  orr r2,r2,#0x8 ;@ A0-7
41900  ldr r2,[r7,r2,lsl #2]
41901  add r11,r2,r3 ;@ r11=Disp+An+Rn
41902;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
41903  add lr,pc,#4
41904  mov r0,r11
41905  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41906
41907;@ EaCalc : Get register index into r1:
41908  and r1,r8,#0x0e00
41909;@ EaRead : Read register[r1] into r1:
41910  ldr r1,[r7,r1,lsr #7]
41911
41912;@ Do arithmetic:
41913  mov r0,r0,asl #24
41914  subs r1,r0,r1,asl #24
41915  mrs r10,cpsr ;@ r10=flags
41916  eor r10,r10,#0x20000000 ;@ Invert carry
41917  str r10,[r7,#0x4c] ;@ Save X bit
41918
41919;@ Save result:
41920  mov r1,r1,asr #24
41921;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
41922  and r1,r1,#0xff
41923  add lr,pc,#4
41924  mov r0,r11
41925  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41926
41927  ldrh r8,[r4],#2 ;@ Fetch next opcode
41928  subs r5,r5,#18 ;@ Subtract cycles
41929  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41930  b CycloneEnd
41931
41932;@ ---------- [9138] sub.b d0, $3333.w uses Op9138 ----------
41933Op9138:
41934;@ EaCalc : Get '$3333.w' into r11:
41935  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
41936;@ EaRead : Read '$3333.w' (address in r11) into r0:
41937  add lr,pc,#4
41938  mov r0,r11
41939  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41940
41941;@ EaCalc : Get register index into r1:
41942  and r1,r8,#0x0e00
41943;@ EaRead : Read register[r1] into r1:
41944  ldr r1,[r7,r1,lsr #7]
41945
41946;@ Do arithmetic:
41947  mov r0,r0,asl #24
41948  subs r1,r0,r1,asl #24
41949  mrs r10,cpsr ;@ r10=flags
41950  eor r10,r10,#0x20000000 ;@ Invert carry
41951  str r10,[r7,#0x4c] ;@ Save X bit
41952
41953;@ Save result:
41954  mov r1,r1,asr #24
41955;@ EaWrite: Write r1 into '$3333.w' (address in r11):
41956  and r1,r1,#0xff
41957  add lr,pc,#4
41958  mov r0,r11
41959  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41960
41961  ldrh r8,[r4],#2 ;@ Fetch next opcode
41962  subs r5,r5,#16 ;@ Subtract cycles
41963  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
41964  b CycloneEnd
41965
41966;@ ---------- [9139] sub.b d0, $33333333.l uses Op9139 ----------
41967Op9139:
41968;@ EaCalc : Get '$33333333.l' into r11:
41969  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
41970  ldrh r0,[r4],#2
41971  orr r11,r0,r2,lsl #16
41972;@ EaRead : Read '$33333333.l' (address in r11) into r0:
41973  add lr,pc,#4
41974  mov r0,r11
41975  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
41976
41977;@ EaCalc : Get register index into r1:
41978  and r1,r8,#0x0e00
41979;@ EaRead : Read register[r1] into r1:
41980  ldr r1,[r7,r1,lsr #7]
41981
41982;@ Do arithmetic:
41983  mov r0,r0,asl #24
41984  subs r1,r0,r1,asl #24
41985  mrs r10,cpsr ;@ r10=flags
41986  eor r10,r10,#0x20000000 ;@ Invert carry
41987  str r10,[r7,#0x4c] ;@ Save X bit
41988
41989;@ Save result:
41990  mov r1,r1,asr #24
41991;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
41992  and r1,r1,#0xff
41993  add lr,pc,#4
41994  mov r0,r11
41995  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
41996
41997  ldrh r8,[r4],#2 ;@ Fetch next opcode
41998  subs r5,r5,#20 ;@ Subtract cycles
41999  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42000  b CycloneEnd
42001
42002;@ ---------- [9140] subx.w d0, d0 uses Op9140 ----------
42003Op9140:
42004;@ Get src/dest reg vals
42005;@ EaCalc : Get register index into r6:
42006  and r6,r8,#0x0007
42007;@ EaRead : Read register[r6] into r6:
42008  ldr r6,[r7,r6,lsl #2]
42009
42010;@ EaCalc : Get register index into r11:
42011  and r11,r8,#0x0e00
42012  mov r11,r11,lsr #7
42013;@ EaRead : Read register[r11] into r0:
42014  ldr r0,[r7,r11]
42015
42016  mov r6,r6,asl #16
42017
42018;@ Do arithmetic:
42019;@ Get X bit:
42020  ldr r2,[r7,#0x4c]
42021  mvn r2,r2 ;@ Invert it
42022  tst r2,r2,lsl #3 ;@ Get into Carry
42023
42024  rscs r1,r6,r0,asl #16
42025  orr r3,r10,#0xb0000000 ;@ for old Z
42026  mrs r10,cpsr ;@ r10=flags
42027  eor r10,r10,#0x20000000 ;@ Invert carry
42028  str r10,[r7,#0x4c] ;@ Save X bit
42029  movs r2,r1,lsr #16
42030  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
42031  andeq r10,r10,r3 ;@ fix Z
42032
42033;@ Save result:
42034;@ EaWrite: r1 into register[r11]:
42035  mov r1,r1,lsr #16
42036  strh r1,[r7,r11]
42037
42038  ldr r6,[r7,#0x54]
42039  ldrh r8,[r4],#2 ;@ Fetch next opcode
42040  subs r5,r5,#4 ;@ Subtract cycles
42041  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42042  b CycloneEnd
42043
42044;@ ---------- [9148] subx.w -(a0), -(a0) uses Op9148 ----------
42045Op9148:
42046;@ Get src/dest EA vals
42047;@ EaCalc : Get '-(a0)' into r0:
42048  and r2,r8,#0x000f
42049  ldr r0,[r7,r2,lsl #2]
42050  sub r0,r0,#2 ;@ Pre-decrement An
42051  str r0,[r7,r2,lsl #2]
42052;@ EaRead : Read '-(a0)' (address in r0) into r6:
42053  mov lr,pc
42054  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
42055  mov r6,r0,asl #16
42056
42057;@ EaCalc : Get '-(a0)' into r11:
42058  and r2,r8,#0x1e00
42059  ldr r11,[r7,r2,lsr #7]
42060  sub r11,r11,#2 ;@ Pre-decrement An
42061  str r11,[r7,r2,lsr #7]
42062;@ EaRead : Read '-(a0)' (address in r11) into r0:
42063  add lr,pc,#4
42064  mov r0,r11
42065  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
42066
42067;@ Do arithmetic:
42068;@ Get X bit:
42069  ldr r2,[r7,#0x4c]
42070  mvn r2,r2 ;@ Invert it
42071  tst r2,r2,lsl #3 ;@ Get into Carry
42072
42073  rscs r1,r6,r0,asl #16
42074  orr r3,r10,#0xb0000000 ;@ for old Z
42075  mrs r10,cpsr ;@ r10=flags
42076  eor r10,r10,#0x20000000 ;@ Invert carry
42077  str r10,[r7,#0x4c] ;@ Save X bit
42078  movs r2,r1,lsr #16
42079  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
42080  andeq r10,r10,r3 ;@ fix Z
42081
42082;@ Save result:
42083;@ EaWrite: Write r1 into '-(a0)' (address in r11):
42084  mov r1,r1,lsr #16
42085  add lr,pc,#4
42086  mov r0,r11
42087  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
42088
42089  ldr r6,[r7,#0x54]
42090  ldrh r8,[r4],#2 ;@ Fetch next opcode
42091  subs r5,r5,#18 ;@ Subtract cycles
42092  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42093  b CycloneEnd
42094
42095;@ ---------- [9150] sub.w d0, (a0) uses Op9150 ----------
42096Op9150:
42097;@ EaCalc : Get '(a0)' into r11:
42098  and r2,r8,#0x000f
42099  orr r2,r2,#0x8 ;@ A0-7
42100  ldr r11,[r7,r2,lsl #2]
42101;@ EaRead : Read '(a0)' (address in r11) into r0:
42102  add lr,pc,#4
42103  mov r0,r11
42104  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
42105
42106;@ EaCalc : Get register index into r1:
42107  and r1,r8,#0x0e00
42108;@ EaRead : Read register[r1] into r1:
42109  ldr r1,[r7,r1,lsr #7]
42110
42111;@ Do arithmetic:
42112  mov r0,r0,asl #16
42113  subs r1,r0,r1,asl #16
42114  mrs r10,cpsr ;@ r10=flags
42115  eor r10,r10,#0x20000000 ;@ Invert carry
42116  str r10,[r7,#0x4c] ;@ Save X bit
42117
42118;@ Save result:
42119  mov r1,r1,asr #16
42120;@ EaWrite: Write r1 into '(a0)' (address in r11):
42121  uxth r1,r1 ;@ zero extend
42122  add lr,pc,#4
42123  mov r0,r11
42124  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
42125
42126  ldrh r8,[r4],#2 ;@ Fetch next opcode
42127  subs r5,r5,#12 ;@ Subtract cycles
42128  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42129  b CycloneEnd
42130
42131;@ ---------- [9158] sub.w d0, (a0)+ uses Op9158 ----------
42132Op9158:
42133;@ EaCalc : Get '(a0)+' into r11:
42134  and r2,r8,#0x000f
42135  ldr r11,[r7,r2,lsl #2]
42136  add r3,r11,#2 ;@ Post-increment An
42137  str r3,[r7,r2,lsl #2]
42138;@ EaRead : Read '(a0)+' (address in r11) into r0:
42139  add lr,pc,#4
42140  mov r0,r11
42141  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
42142
42143;@ EaCalc : Get register index into r1:
42144  and r1,r8,#0x0e00
42145;@ EaRead : Read register[r1] into r1:
42146  ldr r1,[r7,r1,lsr #7]
42147
42148;@ Do arithmetic:
42149  mov r0,r0,asl #16
42150  subs r1,r0,r1,asl #16
42151  mrs r10,cpsr ;@ r10=flags
42152  eor r10,r10,#0x20000000 ;@ Invert carry
42153  str r10,[r7,#0x4c] ;@ Save X bit
42154
42155;@ Save result:
42156  mov r1,r1,asr #16
42157;@ EaWrite: Write r1 into '(a0)+' (address in r11):
42158  uxth r1,r1 ;@ zero extend
42159  add lr,pc,#4
42160  mov r0,r11
42161  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
42162
42163  ldrh r8,[r4],#2 ;@ Fetch next opcode
42164  subs r5,r5,#12 ;@ Subtract cycles
42165  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42166  b CycloneEnd
42167
42168;@ ---------- [9160] sub.w d0, -(a0) uses Op9160 ----------
42169Op9160:
42170;@ EaCalc : Get '-(a0)' into r11:
42171  and r2,r8,#0x000f
42172  orr r2,r2,#0x8 ;@ A0-7
42173  ldr r11,[r7,r2,lsl #2]
42174  sub r11,r11,#2 ;@ Pre-decrement An
42175  str r11,[r7,r2,lsl #2]
42176;@ EaRead : Read '-(a0)' (address in r11) into r0:
42177  add lr,pc,#4
42178  mov r0,r11
42179  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
42180
42181;@ EaCalc : Get register index into r1:
42182  and r1,r8,#0x0e00
42183;@ EaRead : Read register[r1] into r1:
42184  ldr r1,[r7,r1,lsr #7]
42185
42186;@ Do arithmetic:
42187  mov r0,r0,asl #16
42188  subs r1,r0,r1,asl #16
42189  mrs r10,cpsr ;@ r10=flags
42190  eor r10,r10,#0x20000000 ;@ Invert carry
42191  str r10,[r7,#0x4c] ;@ Save X bit
42192
42193;@ Save result:
42194  mov r1,r1,asr #16
42195;@ EaWrite: Write r1 into '-(a0)' (address in r11):
42196  uxth r1,r1 ;@ zero extend
42197  add lr,pc,#4
42198  mov r0,r11
42199  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
42200
42201  ldrh r8,[r4],#2 ;@ Fetch next opcode
42202  subs r5,r5,#14 ;@ Subtract cycles
42203  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42204  b CycloneEnd
42205
42206;@ ---------- [9168] sub.w d0, ($3333,a0) uses Op9168 ----------
42207Op9168:
42208;@ EaCalc : Get '($3333,a0)' into r11:
42209  ldrsh r0,[r4],#2 ;@ Fetch offset
42210  and r2,r8,#0x000f
42211  ldr r2,[r7,r2,lsl #2]
42212  add r11,r0,r2 ;@ Add on offset
42213;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
42214  add lr,pc,#4
42215  mov r0,r11
42216  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
42217
42218;@ EaCalc : Get register index into r1:
42219  and r1,r8,#0x0e00
42220;@ EaRead : Read register[r1] into r1:
42221  ldr r1,[r7,r1,lsr #7]
42222
42223;@ Do arithmetic:
42224  mov r0,r0,asl #16
42225  subs r1,r0,r1,asl #16
42226  mrs r10,cpsr ;@ r10=flags
42227  eor r10,r10,#0x20000000 ;@ Invert carry
42228  str r10,[r7,#0x4c] ;@ Save X bit
42229
42230;@ Save result:
42231  mov r1,r1,asr #16
42232;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
42233  uxth r1,r1 ;@ zero extend
42234  add lr,pc,#4
42235  mov r0,r11
42236  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
42237
42238  ldrh r8,[r4],#2 ;@ Fetch next opcode
42239  subs r5,r5,#16 ;@ Subtract cycles
42240  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42241  b CycloneEnd
42242
42243;@ ---------- [9170] sub.w d0, ($33,a0,d3.w*2) uses Op9170 ----------
42244Op9170:
42245;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
42246;@ Get extension word into r3:
42247  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
42248  mov r2,r3,lsr #10
42249  tst r3,#0x0800 ;@ Is Rn Word or Long
42250  and r2,r2,#0x3c ;@ r2=Index of Rn
42251  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
42252  ldrne   r2,[r7,r2] ;@ r2=Rn.l
42253  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
42254  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
42255  and r2,r8,#0x000f
42256  orr r2,r2,#0x8 ;@ A0-7
42257  ldr r2,[r7,r2,lsl #2]
42258  add r11,r2,r3 ;@ r11=Disp+An+Rn
42259;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
42260  add lr,pc,#4
42261  mov r0,r11
42262  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
42263
42264;@ EaCalc : Get register index into r1:
42265  and r1,r8,#0x0e00
42266;@ EaRead : Read register[r1] into r1:
42267  ldr r1,[r7,r1,lsr #7]
42268
42269;@ Do arithmetic:
42270  mov r0,r0,asl #16
42271  subs r1,r0,r1,asl #16
42272  mrs r10,cpsr ;@ r10=flags
42273  eor r10,r10,#0x20000000 ;@ Invert carry
42274  str r10,[r7,#0x4c] ;@ Save X bit
42275
42276;@ Save result:
42277  mov r1,r1,asr #16
42278;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
42279  uxth r1,r1 ;@ zero extend
42280  add lr,pc,#4
42281  mov r0,r11
42282  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
42283
42284  ldrh r8,[r4],#2 ;@ Fetch next opcode
42285  subs r5,r5,#18 ;@ Subtract cycles
42286  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42287  b CycloneEnd
42288
42289;@ ---------- [9178] sub.w d0, $3333.w uses Op9178 ----------
42290Op9178:
42291;@ EaCalc : Get '$3333.w' into r11:
42292  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
42293;@ EaRead : Read '$3333.w' (address in r11) into r0:
42294  add lr,pc,#4
42295  mov r0,r11
42296  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
42297
42298;@ EaCalc : Get register index into r1:
42299  and r1,r8,#0x0e00
42300;@ EaRead : Read register[r1] into r1:
42301  ldr r1,[r7,r1,lsr #7]
42302
42303;@ Do arithmetic:
42304  mov r0,r0,asl #16
42305  subs r1,r0,r1,asl #16
42306  mrs r10,cpsr ;@ r10=flags
42307  eor r10,r10,#0x20000000 ;@ Invert carry
42308  str r10,[r7,#0x4c] ;@ Save X bit
42309
42310;@ Save result:
42311  mov r1,r1,asr #16
42312;@ EaWrite: Write r1 into '$3333.w' (address in r11):
42313  uxth r1,r1 ;@ zero extend
42314  add lr,pc,#4
42315  mov r0,r11
42316  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
42317
42318  ldrh r8,[r4],#2 ;@ Fetch next opcode
42319  subs r5,r5,#16 ;@ Subtract cycles
42320  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42321  b CycloneEnd
42322
42323;@ ---------- [9179] sub.w d0, $33333333.l uses Op9179 ----------
42324Op9179:
42325;@ EaCalc : Get '$33333333.l' into r11:
42326  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
42327  ldrh r0,[r4],#2
42328  orr r11,r0,r2,lsl #16
42329;@ EaRead : Read '$33333333.l' (address in r11) into r0:
42330  add lr,pc,#4
42331  mov r0,r11
42332  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
42333
42334;@ EaCalc : Get register index into r1:
42335  and r1,r8,#0x0e00
42336;@ EaRead : Read register[r1] into r1:
42337  ldr r1,[r7,r1,lsr #7]
42338
42339;@ Do arithmetic:
42340  mov r0,r0,asl #16
42341  subs r1,r0,r1,asl #16
42342  mrs r10,cpsr ;@ r10=flags
42343  eor r10,r10,#0x20000000 ;@ Invert carry
42344  str r10,[r7,#0x4c] ;@ Save X bit
42345
42346;@ Save result:
42347  mov r1,r1,asr #16
42348;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
42349  uxth r1,r1 ;@ zero extend
42350  add lr,pc,#4
42351  mov r0,r11
42352  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
42353
42354  ldrh r8,[r4],#2 ;@ Fetch next opcode
42355  subs r5,r5,#20 ;@ Subtract cycles
42356  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42357  b CycloneEnd
42358
42359;@ ---------- [9180] subx.l d0, d0 uses Op9180 ----------
42360Op9180:
42361;@ Get src/dest reg vals
42362;@ EaCalc : Get register index into r6:
42363  and r6,r8,#0x0007
42364;@ EaRead : Read register[r6] into r6:
42365  ldr r6,[r7,r6,lsl #2]
42366
42367;@ EaCalc : Get register index into r11:
42368  and r11,r8,#0x0e00
42369;@ EaRead : Read register[r11] into r0:
42370  ldr r0,[r7,r11,lsr #7]
42371
42372;@ Do arithmetic:
42373;@ Get X bit:
42374  ldr r2,[r7,#0x4c]
42375  mvn r2,r2 ;@ Invert it
42376  tst r2,r2,lsl #3 ;@ Get into Carry
42377
42378  rscs r1,r6,r0
42379  orr r3,r10,#0xb0000000 ;@ for old Z
42380  mrs r10,cpsr ;@ r10=flags
42381  eor r10,r10,#0x20000000 ;@ Invert carry
42382  str r10,[r7,#0x4c] ;@ Save X bit
42383  andeq r10,r10,r3 ;@ fix Z
42384
42385;@ Save result:
42386;@ EaWrite: r1 into register[r11]:
42387  str r1,[r7,r11,lsr #7]
42388
42389  ldr r6,[r7,#0x54]
42390  ldrh r8,[r4],#2 ;@ Fetch next opcode
42391  subs r5,r5,#8 ;@ Subtract cycles
42392  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42393  b CycloneEnd
42394
42395;@ ---------- [9188] subx.l -(a0), -(a0) uses Op9188 ----------
42396Op9188:
42397;@ Get src/dest EA vals
42398;@ EaCalc : Get '-(a0)' into r0:
42399  and r2,r8,#0x000f
42400  ldr r0,[r7,r2,lsl #2]
42401  sub r0,r0,#4 ;@ Pre-decrement An
42402  str r0,[r7,r2,lsl #2]
42403;@ EaRead : Read '-(a0)' (address in r0) into r6:
42404  mov lr,pc
42405  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42406  mov r6,r0
42407
42408;@ EaCalc : Get '-(a0)' into r11:
42409  and r2,r8,#0x1e00
42410  ldr r11,[r7,r2,lsr #7]
42411  sub r11,r11,#4 ;@ Pre-decrement An
42412  str r11,[r7,r2,lsr #7]
42413;@ EaRead : Read '-(a0)' (address in r11) into r0:
42414  add lr,pc,#4
42415  mov r0,r11
42416  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42417
42418;@ Do arithmetic:
42419;@ Get X bit:
42420  ldr r2,[r7,#0x4c]
42421  mvn r2,r2 ;@ Invert it
42422  tst r2,r2,lsl #3 ;@ Get into Carry
42423
42424  rscs r1,r6,r0
42425  orr r3,r10,#0xb0000000 ;@ for old Z
42426  mrs r10,cpsr ;@ r10=flags
42427  eor r10,r10,#0x20000000 ;@ Invert carry
42428  str r10,[r7,#0x4c] ;@ Save X bit
42429  andeq r10,r10,r3 ;@ fix Z
42430
42431;@ Save result:
42432;@ EaWrite: Write r1 into '-(a0)' (address in r11):
42433  add lr,pc,#4
42434  mov r0,r11
42435  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
42436
42437  ldr r6,[r7,#0x54]
42438  ldrh r8,[r4],#2 ;@ Fetch next opcode
42439  subs r5,r5,#30 ;@ Subtract cycles
42440  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42441  b CycloneEnd
42442
42443;@ ---------- [9190] sub.l d0, (a0) uses Op9190 ----------
42444Op9190:
42445;@ EaCalc : Get '(a0)' into r11:
42446  and r2,r8,#0x000f
42447  orr r2,r2,#0x8 ;@ A0-7
42448  ldr r11,[r7,r2,lsl #2]
42449;@ EaRead : Read '(a0)' (address in r11) into r0:
42450  add lr,pc,#4
42451  mov r0,r11
42452  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42453
42454;@ EaCalc : Get register index into r1:
42455  and r1,r8,#0x0e00
42456;@ EaRead : Read register[r1] into r1:
42457  ldr r1,[r7,r1,lsr #7]
42458
42459;@ Do arithmetic:
42460  subs r1,r0,r1
42461  mrs r10,cpsr ;@ r10=flags
42462  eor r10,r10,#0x20000000 ;@ Invert carry
42463  str r10,[r7,#0x4c] ;@ Save X bit
42464
42465;@ Save result:
42466;@ EaWrite: Write r1 into '(a0)' (address in r11):
42467  add lr,pc,#4
42468  mov r0,r11
42469  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
42470
42471  ldrh r8,[r4],#2 ;@ Fetch next opcode
42472  subs r5,r5,#20 ;@ Subtract cycles
42473  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42474  b CycloneEnd
42475
42476;@ ---------- [9198] sub.l d0, (a0)+ uses Op9198 ----------
42477Op9198:
42478;@ EaCalc : Get '(a0)+' into r11:
42479  and r2,r8,#0x000f
42480  ldr r11,[r7,r2,lsl #2]
42481  add r3,r11,#4 ;@ Post-increment An
42482  str r3,[r7,r2,lsl #2]
42483;@ EaRead : Read '(a0)+' (address in r11) into r0:
42484  add lr,pc,#4
42485  mov r0,r11
42486  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42487
42488;@ EaCalc : Get register index into r1:
42489  and r1,r8,#0x0e00
42490;@ EaRead : Read register[r1] into r1:
42491  ldr r1,[r7,r1,lsr #7]
42492
42493;@ Do arithmetic:
42494  subs r1,r0,r1
42495  mrs r10,cpsr ;@ r10=flags
42496  eor r10,r10,#0x20000000 ;@ Invert carry
42497  str r10,[r7,#0x4c] ;@ Save X bit
42498
42499;@ Save result:
42500;@ EaWrite: Write r1 into '(a0)+' (address in r11):
42501  add lr,pc,#4
42502  mov r0,r11
42503  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
42504
42505  ldrh r8,[r4],#2 ;@ Fetch next opcode
42506  subs r5,r5,#20 ;@ Subtract cycles
42507  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42508  b CycloneEnd
42509
42510;@ ---------- [91a0] sub.l d0, -(a0) uses Op91a0 ----------
42511Op91a0:
42512;@ EaCalc : Get '-(a0)' into r11:
42513  and r2,r8,#0x000f
42514  orr r2,r2,#0x8 ;@ A0-7
42515  ldr r11,[r7,r2,lsl #2]
42516  sub r11,r11,#4 ;@ Pre-decrement An
42517  str r11,[r7,r2,lsl #2]
42518;@ EaRead : Read '-(a0)' (address in r11) into r0:
42519  add lr,pc,#4
42520  mov r0,r11
42521  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42522
42523;@ EaCalc : Get register index into r1:
42524  and r1,r8,#0x0e00
42525;@ EaRead : Read register[r1] into r1:
42526  ldr r1,[r7,r1,lsr #7]
42527
42528;@ Do arithmetic:
42529  subs r1,r0,r1
42530  mrs r10,cpsr ;@ r10=flags
42531  eor r10,r10,#0x20000000 ;@ Invert carry
42532  str r10,[r7,#0x4c] ;@ Save X bit
42533
42534;@ Save result:
42535;@ EaWrite: Write r1 into '-(a0)' (address in r11):
42536  add lr,pc,#4
42537  mov r0,r11
42538  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
42539
42540  ldrh r8,[r4],#2 ;@ Fetch next opcode
42541  subs r5,r5,#22 ;@ Subtract cycles
42542  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42543  b CycloneEnd
42544
42545;@ ---------- [91a8] sub.l d0, ($3333,a0) uses Op91a8 ----------
42546Op91a8:
42547;@ EaCalc : Get '($3333,a0)' into r11:
42548  ldrsh r0,[r4],#2 ;@ Fetch offset
42549  and r2,r8,#0x000f
42550  ldr r2,[r7,r2,lsl #2]
42551  add r11,r0,r2 ;@ Add on offset
42552;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
42553  add lr,pc,#4
42554  mov r0,r11
42555  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42556
42557;@ EaCalc : Get register index into r1:
42558  and r1,r8,#0x0e00
42559;@ EaRead : Read register[r1] into r1:
42560  ldr r1,[r7,r1,lsr #7]
42561
42562;@ Do arithmetic:
42563  subs r1,r0,r1
42564  mrs r10,cpsr ;@ r10=flags
42565  eor r10,r10,#0x20000000 ;@ Invert carry
42566  str r10,[r7,#0x4c] ;@ Save X bit
42567
42568;@ Save result:
42569;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
42570  add lr,pc,#4
42571  mov r0,r11
42572  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
42573
42574  ldrh r8,[r4],#2 ;@ Fetch next opcode
42575  subs r5,r5,#24 ;@ Subtract cycles
42576  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42577  b CycloneEnd
42578
42579;@ ---------- [91b0] sub.l d0, ($33,a0,d3.w*2) uses Op91b0 ----------
42580Op91b0:
42581;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
42582;@ Get extension word into r3:
42583  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
42584  mov r2,r3,lsr #10
42585  tst r3,#0x0800 ;@ Is Rn Word or Long
42586  and r2,r2,#0x3c ;@ r2=Index of Rn
42587  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
42588  ldrne   r2,[r7,r2] ;@ r2=Rn.l
42589  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
42590  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
42591  and r2,r8,#0x000f
42592  orr r2,r2,#0x8 ;@ A0-7
42593  ldr r2,[r7,r2,lsl #2]
42594  add r11,r2,r3 ;@ r11=Disp+An+Rn
42595;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
42596  add lr,pc,#4
42597  mov r0,r11
42598  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42599
42600;@ EaCalc : Get register index into r1:
42601  and r1,r8,#0x0e00
42602;@ EaRead : Read register[r1] into r1:
42603  ldr r1,[r7,r1,lsr #7]
42604
42605;@ Do arithmetic:
42606  subs r1,r0,r1
42607  mrs r10,cpsr ;@ r10=flags
42608  eor r10,r10,#0x20000000 ;@ Invert carry
42609  str r10,[r7,#0x4c] ;@ Save X bit
42610
42611;@ Save result:
42612;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
42613  add lr,pc,#4
42614  mov r0,r11
42615  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
42616
42617  ldrh r8,[r4],#2 ;@ Fetch next opcode
42618  subs r5,r5,#26 ;@ Subtract cycles
42619  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42620  b CycloneEnd
42621
42622;@ ---------- [91b8] sub.l d0, $3333.w uses Op91b8 ----------
42623Op91b8:
42624;@ EaCalc : Get '$3333.w' into r11:
42625  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
42626;@ EaRead : Read '$3333.w' (address in r11) into r0:
42627  add lr,pc,#4
42628  mov r0,r11
42629  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42630
42631;@ EaCalc : Get register index into r1:
42632  and r1,r8,#0x0e00
42633;@ EaRead : Read register[r1] into r1:
42634  ldr r1,[r7,r1,lsr #7]
42635
42636;@ Do arithmetic:
42637  subs r1,r0,r1
42638  mrs r10,cpsr ;@ r10=flags
42639  eor r10,r10,#0x20000000 ;@ Invert carry
42640  str r10,[r7,#0x4c] ;@ Save X bit
42641
42642;@ Save result:
42643;@ EaWrite: Write r1 into '$3333.w' (address in r11):
42644  add lr,pc,#4
42645  mov r0,r11
42646  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
42647
42648  ldrh r8,[r4],#2 ;@ Fetch next opcode
42649  subs r5,r5,#24 ;@ Subtract cycles
42650  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42651  b CycloneEnd
42652
42653;@ ---------- [91b9] sub.l d0, $33333333.l uses Op91b9 ----------
42654Op91b9:
42655;@ EaCalc : Get '$33333333.l' into r11:
42656  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
42657  ldrh r0,[r4],#2
42658  orr r11,r0,r2,lsl #16
42659;@ EaRead : Read '$33333333.l' (address in r11) into r0:
42660  add lr,pc,#4
42661  mov r0,r11
42662  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42663
42664;@ EaCalc : Get register index into r1:
42665  and r1,r8,#0x0e00
42666;@ EaRead : Read register[r1] into r1:
42667  ldr r1,[r7,r1,lsr #7]
42668
42669;@ Do arithmetic:
42670  subs r1,r0,r1
42671  mrs r10,cpsr ;@ r10=flags
42672  eor r10,r10,#0x20000000 ;@ Invert carry
42673  str r10,[r7,#0x4c] ;@ Save X bit
42674
42675;@ Save result:
42676;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
42677  add lr,pc,#4
42678  mov r0,r11
42679  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
42680
42681  ldrh r8,[r4],#2 ;@ Fetch next opcode
42682  subs r5,r5,#28 ;@ Subtract cycles
42683  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42684  b CycloneEnd
42685
42686;@ ---------- [91c0] suba.l d0, a0 uses Op91c0 ----------
42687Op91c0:
42688;@ EaCalc : Get register index into r0:
42689  and r0,r8,#0x000f
42690;@ EaRead : Read register[r0] into r0:
42691  ldr r0,[r7,r0,lsl #2]
42692
42693;@ EaCalc : Get register index into r11:
42694  and r11,r8,#0x1e00
42695;@ EaRead : Read register[r11] into r1:
42696  ldr r1,[r7,r11,lsr #7]
42697
42698  sub r1,r1,r0
42699
42700;@ EaWrite: r1 into register[r11]:
42701  str r1,[r7,r11,lsr #7]
42702
42703  ldrh r8,[r4],#2 ;@ Fetch next opcode
42704  subs r5,r5,#8 ;@ Subtract cycles
42705  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42706  b CycloneEnd
42707
42708;@ ---------- [91d0] suba.l (a0), a0 uses Op91d0 ----------
42709Op91d0:
42710;@ EaCalc : Get '(a0)' into r0:
42711  and r2,r8,#0x000f
42712  orr r2,r2,#0x8 ;@ A0-7
42713  ldr r0,[r7,r2,lsl #2]
42714;@ EaRead : Read '(a0)' (address in r0) into r0:
42715  mov lr,pc
42716  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42717
42718;@ EaCalc : Get register index into r11:
42719  and r11,r8,#0x1e00
42720;@ EaRead : Read register[r11] into r1:
42721  ldr r1,[r7,r11,lsr #7]
42722
42723  sub r1,r1,r0
42724
42725;@ EaWrite: r1 into register[r11]:
42726  str r1,[r7,r11,lsr #7]
42727
42728  ldrh r8,[r4],#2 ;@ Fetch next opcode
42729  subs r5,r5,#14 ;@ Subtract cycles
42730  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42731  b CycloneEnd
42732
42733;@ ---------- [91d8] suba.l (a0)+, a0 uses Op91d8 ----------
42734Op91d8:
42735;@ EaCalc : Get '(a0)+' into r0:
42736  and r2,r8,#0x000f
42737  ldr r0,[r7,r2,lsl #2]
42738  add r3,r0,#4 ;@ Post-increment An
42739  str r3,[r7,r2,lsl #2]
42740;@ EaRead : Read '(a0)+' (address in r0) into r0:
42741  mov lr,pc
42742  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42743
42744;@ EaCalc : Get register index into r11:
42745  and r11,r8,#0x1e00
42746;@ EaRead : Read register[r11] into r1:
42747  ldr r1,[r7,r11,lsr #7]
42748
42749  sub r1,r1,r0
42750
42751;@ EaWrite: r1 into register[r11]:
42752  str r1,[r7,r11,lsr #7]
42753
42754  ldrh r8,[r4],#2 ;@ Fetch next opcode
42755  subs r5,r5,#14 ;@ Subtract cycles
42756  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42757  b CycloneEnd
42758
42759;@ ---------- [91e0] suba.l -(a0), a0 uses Op91e0 ----------
42760Op91e0:
42761;@ EaCalc : Get '-(a0)' into r0:
42762  and r2,r8,#0x000f
42763  orr r2,r2,#0x8 ;@ A0-7
42764  ldr r0,[r7,r2,lsl #2]
42765  sub r0,r0,#4 ;@ Pre-decrement An
42766  str r0,[r7,r2,lsl #2]
42767;@ EaRead : Read '-(a0)' (address in r0) into r0:
42768  mov lr,pc
42769  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42770
42771;@ EaCalc : Get register index into r11:
42772  and r11,r8,#0x1e00
42773;@ EaRead : Read register[r11] into r1:
42774  ldr r1,[r7,r11,lsr #7]
42775
42776  sub r1,r1,r0
42777
42778;@ EaWrite: r1 into register[r11]:
42779  str r1,[r7,r11,lsr #7]
42780
42781  ldrh r8,[r4],#2 ;@ Fetch next opcode
42782  subs r5,r5,#16 ;@ Subtract cycles
42783  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42784  b CycloneEnd
42785
42786;@ ---------- [91e8] suba.l ($3333,a0), a0 uses Op91e8 ----------
42787Op91e8:
42788;@ EaCalc : Get '($3333,a0)' into r0:
42789  ldrsh r0,[r4],#2 ;@ Fetch offset
42790  and r2,r8,#0x000f
42791  ldr r2,[r7,r2,lsl #2]
42792  add r0,r0,r2 ;@ Add on offset
42793;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
42794  mov lr,pc
42795  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42796
42797;@ EaCalc : Get register index into r11:
42798  and r11,r8,#0x1e00
42799;@ EaRead : Read register[r11] into r1:
42800  ldr r1,[r7,r11,lsr #7]
42801
42802  sub r1,r1,r0
42803
42804;@ EaWrite: r1 into register[r11]:
42805  str r1,[r7,r11,lsr #7]
42806
42807  ldrh r8,[r4],#2 ;@ Fetch next opcode
42808  subs r5,r5,#18 ;@ Subtract cycles
42809  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42810  b CycloneEnd
42811
42812;@ ---------- [91f0] suba.l ($33,a0,d3.w*2), a0 uses Op91f0 ----------
42813Op91f0:
42814;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
42815;@ Get extension word into r3:
42816  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
42817  mov r2,r3,lsr #10
42818  tst r3,#0x0800 ;@ Is Rn Word or Long
42819  and r2,r2,#0x3c ;@ r2=Index of Rn
42820  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
42821  ldrne   r2,[r7,r2] ;@ r2=Rn.l
42822  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
42823  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
42824  and r2,r8,#0x000f
42825  orr r2,r2,#0x8 ;@ A0-7
42826  ldr r2,[r7,r2,lsl #2]
42827  add r0,r2,r3 ;@ r0=Disp+An+Rn
42828;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
42829  mov lr,pc
42830  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42831
42832;@ EaCalc : Get register index into r11:
42833  and r11,r8,#0x1e00
42834;@ EaRead : Read register[r11] into r1:
42835  ldr r1,[r7,r11,lsr #7]
42836
42837  sub r1,r1,r0
42838
42839;@ EaWrite: r1 into register[r11]:
42840  str r1,[r7,r11,lsr #7]
42841
42842  ldrh r8,[r4],#2 ;@ Fetch next opcode
42843  subs r5,r5,#20 ;@ Subtract cycles
42844  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42845  b CycloneEnd
42846
42847;@ ---------- [91f8] suba.l $3333.w, a0 uses Op91f8 ----------
42848Op91f8:
42849;@ EaCalc : Get '$3333.w' into r0:
42850  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
42851;@ EaRead : Read '$3333.w' (address in r0) into r0:
42852  mov lr,pc
42853  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42854
42855;@ EaCalc : Get register index into r11:
42856  and r11,r8,#0x1e00
42857;@ EaRead : Read register[r11] into r1:
42858  ldr r1,[r7,r11,lsr #7]
42859
42860  sub r1,r1,r0
42861
42862;@ EaWrite: r1 into register[r11]:
42863  str r1,[r7,r11,lsr #7]
42864
42865  ldrh r8,[r4],#2 ;@ Fetch next opcode
42866  subs r5,r5,#18 ;@ Subtract cycles
42867  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42868  b CycloneEnd
42869
42870;@ ---------- [91f9] suba.l $33333333.l, a0 uses Op91f9 ----------
42871Op91f9:
42872;@ EaCalc : Get '$33333333.l' into r0:
42873  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
42874  ldrh r0,[r4],#2
42875  orr r0,r0,r2,lsl #16
42876;@ EaRead : Read '$33333333.l' (address in r0) into r0:
42877  mov lr,pc
42878  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
42879
42880;@ EaCalc : Get register index into r11:
42881  and r11,r8,#0x1e00
42882;@ EaRead : Read register[r11] into r1:
42883  ldr r1,[r7,r11,lsr #7]
42884
42885  sub r1,r1,r0
42886
42887;@ EaWrite: r1 into register[r11]:
42888  str r1,[r7,r11,lsr #7]
42889
42890  ldrh r8,[r4],#2 ;@ Fetch next opcode
42891  subs r5,r5,#22 ;@ Subtract cycles
42892  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42893  b CycloneEnd
42894
42895;@ ---------- [91fa] suba.l ($3333,pc), a0; =3335 uses Op91fa ----------
42896Op91fa:
42897;@ EaCalc : Get '($3333,pc)' into r0:
42898  ldr r0,[r7,#0x60] ;@ Get Memory base
42899  sub r0,r4,r0 ;@ Real PC
42900  ldrsh r2,[r4],#2 ;@ Fetch extension
42901  add r0,r2,r0 ;@ ($nn,PC)
42902;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
42903  mov lr,pc
42904  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
42905
42906;@ EaCalc : Get register index into r11:
42907  and r11,r8,#0x1e00
42908;@ EaRead : Read register[r11] into r1:
42909  ldr r1,[r7,r11,lsr #7]
42910
42911  sub r1,r1,r0
42912
42913;@ EaWrite: r1 into register[r11]:
42914  str r1,[r7,r11,lsr #7]
42915
42916  ldrh r8,[r4],#2 ;@ Fetch next opcode
42917  subs r5,r5,#18 ;@ Subtract cycles
42918  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42919  b CycloneEnd
42920
42921;@ ---------- [91fb] suba.l ($33,pc,d3.w*2), a0; =35 uses Op91fb ----------
42922Op91fb:
42923;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
42924  ldr r0,[r7,#0x60] ;@ Get Memory base
42925  ldrh r3,[r4] ;@ Get extension word
42926  sub r0,r4,r0 ;@ r0=PC
42927  add r4,r4,#2
42928  mov r2,r3,lsr #10
42929  tst r3,#0x0800 ;@ Is Rn Word or Long
42930  and r2,r2,#0x3c ;@ r2=Index of Rn
42931  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
42932  ldrne   r2,[r7,r2] ;@ r2=Rn.l
42933  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
42934  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
42935  add r0,r2,r0 ;@ r0=Disp+PC+Rn
42936;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
42937  mov lr,pc
42938  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
42939
42940;@ EaCalc : Get register index into r11:
42941  and r11,r8,#0x1e00
42942;@ EaRead : Read register[r11] into r1:
42943  ldr r1,[r7,r11,lsr #7]
42944
42945  sub r1,r1,r0
42946
42947;@ EaWrite: r1 into register[r11]:
42948  str r1,[r7,r11,lsr #7]
42949
42950  ldrh r8,[r4],#2 ;@ Fetch next opcode
42951  subs r5,r5,#20 ;@ Subtract cycles
42952  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42953  b CycloneEnd
42954
42955;@ ---------- [91fc] suba.l #$33333333, a0 uses Op91fc ----------
42956Op91fc:
42957;@ EaCalc : Get '#$33333333' into r0:
42958  ldrh r2,[r4],#2 ;@ Fetch immediate value
42959  ldrh r3,[r4],#2
42960  orr r0,r3,r2,lsl #16
42961;@ EaRead : Read '#$33333333' (address in r0) into r0:
42962
42963;@ EaCalc : Get register index into r11:
42964  and r11,r8,#0x1e00
42965;@ EaRead : Read register[r11] into r1:
42966  ldr r1,[r7,r11,lsr #7]
42967
42968  sub r1,r1,r0
42969
42970;@ EaWrite: r1 into register[r11]:
42971  str r1,[r7,r11,lsr #7]
42972
42973  ldrh r8,[r4],#2 ;@ Fetch next opcode
42974  subs r5,r5,#16 ;@ Subtract cycles
42975  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
42976  b CycloneEnd
42977
42978;@ ---------- [9f08] subx.b -(a0), -(a7) uses Op9f08 ----------
42979Op9f08:
42980;@ Get src/dest EA vals
42981;@ EaCalc : Get '-(a0)' into r0:
42982  and r2,r8,#0x000f
42983  ldr r0,[r7,r2,lsl #2]
42984  sub r0,r0,#1 ;@ Pre-decrement An
42985  str r0,[r7,r2,lsl #2]
42986;@ EaRead : Read '-(a0)' (address in r0) into r6:
42987  mov lr,pc
42988  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
42989  mov r6,r0,asl #24
42990
42991;@ EaCalc : Get '-(a7)' into r11:
42992  ldr r11,[r7,#0x3c] ;@ A7
42993  sub r11,r11,#2 ;@ Pre-decrement An
42994  str r11,[r7,#0x3c] ;@ A7
42995;@ EaRead : Read '-(a7)' (address in r11) into r0:
42996  add lr,pc,#4
42997  mov r0,r11
42998  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
42999
43000;@ Do arithmetic:
43001;@ Get X bit:
43002  ldr r2,[r7,#0x4c]
43003  mvn r2,r2 ;@ Invert it
43004  tst r2,r2,lsl #3 ;@ Get into Carry
43005
43006  rscs r1,r6,r0,asl #24
43007  orr r3,r10,#0xb0000000 ;@ for old Z
43008  mrs r10,cpsr ;@ r10=flags
43009  eor r10,r10,#0x20000000 ;@ Invert carry
43010  str r10,[r7,#0x4c] ;@ Save X bit
43011  movs r2,r1,lsr #24
43012  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
43013  andeq r10,r10,r3 ;@ fix Z
43014
43015;@ Save result:
43016;@ EaWrite: Write r1 into '-(a7)' (address in r11):
43017  mov r1,r1,lsr #24
43018  add lr,pc,#4
43019  mov r0,r11
43020  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
43021
43022  ldr r6,[r7,#0x54]
43023  ldrh r8,[r4],#2 ;@ Fetch next opcode
43024  subs r5,r5,#18 ;@ Subtract cycles
43025  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43026  b CycloneEnd
43027
43028;@ ---------- [9f0f] subx.b -(a7), -(a7) uses Op9f0f ----------
43029Op9f0f:
43030;@ Get src/dest EA vals
43031;@ EaCalc : Get '-(a7)' into r0:
43032  ldr r0,[r7,#0x3c] ;@ A7
43033  sub r0,r0,#2 ;@ Pre-decrement An
43034  str r0,[r7,#0x3c] ;@ A7
43035;@ EaRead : Read '-(a7)' (address in r0) into r6:
43036  mov lr,pc
43037  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
43038  mov r6,r0,asl #24
43039
43040;@ EaCalc : Get '-(a7)' into r11:
43041  ldr r11,[r7,#0x3c] ;@ A7
43042  sub r11,r11,#2 ;@ Pre-decrement An
43043  str r11,[r7,#0x3c] ;@ A7
43044;@ EaRead : Read '-(a7)' (address in r11) into r0:
43045  add lr,pc,#4
43046  mov r0,r11
43047  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
43048
43049;@ Do arithmetic:
43050;@ Get X bit:
43051  ldr r2,[r7,#0x4c]
43052  mvn r2,r2 ;@ Invert it
43053  tst r2,r2,lsl #3 ;@ Get into Carry
43054
43055  rscs r1,r6,r0,asl #24
43056  orr r3,r10,#0xb0000000 ;@ for old Z
43057  mrs r10,cpsr ;@ r10=flags
43058  eor r10,r10,#0x20000000 ;@ Invert carry
43059  str r10,[r7,#0x4c] ;@ Save X bit
43060  movs r2,r1,lsr #24
43061  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
43062  andeq r10,r10,r3 ;@ fix Z
43063
43064;@ Save result:
43065;@ EaWrite: Write r1 into '-(a7)' (address in r11):
43066  mov r1,r1,lsr #24
43067  add lr,pc,#4
43068  mov r0,r11
43069  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
43070
43071  ldr r6,[r7,#0x54]
43072  ldrh r8,[r4],#2 ;@ Fetch next opcode
43073  subs r5,r5,#18 ;@ Subtract cycles
43074  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43075  b CycloneEnd
43076
43077;@ ---------- [b000] cmp.b d0, d0 uses Opb000 ----------
43078Opb000:
43079;@ Get EA into r11 and value into r0:
43080;@ EaCalc : Get register index into r0:
43081  and r0,r8,#0x000f
43082;@ EaRead : Read register[r0] into r0:
43083  ldr r0,[r7,r0,lsl #2]
43084
43085;@ Get register operand into r1:
43086;@ EaCalc : Get register index into r1:
43087  and r1,r8,#0x0e00
43088;@ EaRead : Read register[r1] into r1:
43089  ldr r1,[r7,r1,lsr #7]
43090
43091  mov r0,r0,asl #24
43092
43093;@ Do arithmetic:
43094  rsbs r1,r0,r1,asl #24
43095  mrs r10,cpsr ;@ r10=flags
43096  eor r10,r10,#0x20000000 ;@ Invert carry
43097
43098  ldrh r8,[r4],#2 ;@ Fetch next opcode
43099  subs r5,r5,#4 ;@ Subtract cycles
43100  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43101  b CycloneEnd
43102
43103;@ ---------- [b010] cmp.b (a0), d0 uses Opb010 ----------
43104Opb010:
43105;@ Get EA into r11 and value into r0:
43106;@ EaCalc : Get '(a0)' into r0:
43107  and r2,r8,#0x000f
43108  orr r2,r2,#0x8 ;@ A0-7
43109  ldr r0,[r7,r2,lsl #2]
43110;@ EaRead : Read '(a0)' (address in r0) into r0:
43111  mov lr,pc
43112  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
43113
43114;@ Get register operand into r1:
43115;@ EaCalc : Get register index into r1:
43116  and r1,r8,#0x0e00
43117;@ EaRead : Read register[r1] into r1:
43118  ldr r1,[r7,r1,lsr #7]
43119
43120  mov r0,r0,asl #24
43121
43122;@ Do arithmetic:
43123  rsbs r1,r0,r1,asl #24
43124  mrs r10,cpsr ;@ r10=flags
43125  eor r10,r10,#0x20000000 ;@ Invert carry
43126
43127  ldrh r8,[r4],#2 ;@ Fetch next opcode
43128  subs r5,r5,#8 ;@ Subtract cycles
43129  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43130  b CycloneEnd
43131
43132;@ ---------- [b018] cmp.b (a0)+, d0 uses Opb018 ----------
43133Opb018:
43134;@ Get EA into r11 and value into r0:
43135;@ EaCalc : Get '(a0)+' into r0:
43136  and r2,r8,#0x000f
43137  ldr r0,[r7,r2,lsl #2]
43138  add r3,r0,#1 ;@ Post-increment An
43139  str r3,[r7,r2,lsl #2]
43140;@ EaRead : Read '(a0)+' (address in r0) into r0:
43141  mov lr,pc
43142  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
43143
43144;@ Get register operand into r1:
43145;@ EaCalc : Get register index into r1:
43146  and r1,r8,#0x0e00
43147;@ EaRead : Read register[r1] into r1:
43148  ldr r1,[r7,r1,lsr #7]
43149
43150  mov r0,r0,asl #24
43151
43152;@ Do arithmetic:
43153  rsbs r1,r0,r1,asl #24
43154  mrs r10,cpsr ;@ r10=flags
43155  eor r10,r10,#0x20000000 ;@ Invert carry
43156
43157  ldrh r8,[r4],#2 ;@ Fetch next opcode
43158  subs r5,r5,#8 ;@ Subtract cycles
43159  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43160  b CycloneEnd
43161
43162;@ ---------- [b01f] cmp.b (a7)+, d0 uses Opb01f ----------
43163Opb01f:
43164;@ Get EA into r11 and value into r0:
43165;@ EaCalc : Get '(a7)+' into r0:
43166  ldr r0,[r7,#0x3c] ;@ A7
43167  add r3,r0,#2 ;@ Post-increment An
43168  str r3,[r7,#0x3c] ;@ A7
43169;@ EaRead : Read '(a7)+' (address in r0) into r0:
43170  mov lr,pc
43171  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
43172
43173;@ Get register operand into r1:
43174;@ EaCalc : Get register index into r1:
43175  and r1,r8,#0x0e00
43176;@ EaRead : Read register[r1] into r1:
43177  ldr r1,[r7,r1,lsr #7]
43178
43179  mov r0,r0,asl #24
43180
43181;@ Do arithmetic:
43182  rsbs r1,r0,r1,asl #24
43183  mrs r10,cpsr ;@ r10=flags
43184  eor r10,r10,#0x20000000 ;@ Invert carry
43185
43186  ldrh r8,[r4],#2 ;@ Fetch next opcode
43187  subs r5,r5,#8 ;@ Subtract cycles
43188  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43189  b CycloneEnd
43190
43191;@ ---------- [b020] cmp.b -(a0), d0 uses Opb020 ----------
43192Opb020:
43193;@ Get EA into r11 and value into r0:
43194;@ EaCalc : Get '-(a0)' into r0:
43195  and r2,r8,#0x000f
43196  orr r2,r2,#0x8 ;@ A0-7
43197  ldr r0,[r7,r2,lsl #2]
43198  sub r0,r0,#1 ;@ Pre-decrement An
43199  str r0,[r7,r2,lsl #2]
43200;@ EaRead : Read '-(a0)' (address in r0) into r0:
43201  mov lr,pc
43202  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
43203
43204;@ Get register operand into r1:
43205;@ EaCalc : Get register index into r1:
43206  and r1,r8,#0x0e00
43207;@ EaRead : Read register[r1] into r1:
43208  ldr r1,[r7,r1,lsr #7]
43209
43210  mov r0,r0,asl #24
43211
43212;@ Do arithmetic:
43213  rsbs r1,r0,r1,asl #24
43214  mrs r10,cpsr ;@ r10=flags
43215  eor r10,r10,#0x20000000 ;@ Invert carry
43216
43217  ldrh r8,[r4],#2 ;@ Fetch next opcode
43218  subs r5,r5,#10 ;@ Subtract cycles
43219  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43220  b CycloneEnd
43221
43222;@ ---------- [b027] cmp.b -(a7), d0 uses Opb027 ----------
43223Opb027:
43224;@ Get EA into r11 and value into r0:
43225;@ EaCalc : Get '-(a7)' into r0:
43226  ldr r0,[r7,#0x3c] ;@ A7
43227  sub r0,r0,#2 ;@ Pre-decrement An
43228  str r0,[r7,#0x3c] ;@ A7
43229;@ EaRead : Read '-(a7)' (address in r0) into r0:
43230  mov lr,pc
43231  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
43232
43233;@ Get register operand into r1:
43234;@ EaCalc : Get register index into r1:
43235  and r1,r8,#0x0e00
43236;@ EaRead : Read register[r1] into r1:
43237  ldr r1,[r7,r1,lsr #7]
43238
43239  mov r0,r0,asl #24
43240
43241;@ Do arithmetic:
43242  rsbs r1,r0,r1,asl #24
43243  mrs r10,cpsr ;@ r10=flags
43244  eor r10,r10,#0x20000000 ;@ Invert carry
43245
43246  ldrh r8,[r4],#2 ;@ Fetch next opcode
43247  subs r5,r5,#10 ;@ Subtract cycles
43248  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43249  b CycloneEnd
43250
43251;@ ---------- [b028] cmp.b ($3333,a0), d0 uses Opb028 ----------
43252Opb028:
43253;@ Get EA into r11 and value into r0:
43254;@ EaCalc : Get '($3333,a0)' into r0:
43255  ldrsh r0,[r4],#2 ;@ Fetch offset
43256  and r2,r8,#0x000f
43257  ldr r2,[r7,r2,lsl #2]
43258  add r0,r0,r2 ;@ Add on offset
43259;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
43260  mov lr,pc
43261  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
43262
43263;@ Get register operand into r1:
43264;@ EaCalc : Get register index into r1:
43265  and r1,r8,#0x0e00
43266;@ EaRead : Read register[r1] into r1:
43267  ldr r1,[r7,r1,lsr #7]
43268
43269  mov r0,r0,asl #24
43270
43271;@ Do arithmetic:
43272  rsbs r1,r0,r1,asl #24
43273  mrs r10,cpsr ;@ r10=flags
43274  eor r10,r10,#0x20000000 ;@ Invert carry
43275
43276  ldrh r8,[r4],#2 ;@ Fetch next opcode
43277  subs r5,r5,#12 ;@ Subtract cycles
43278  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43279  b CycloneEnd
43280
43281;@ ---------- [b030] cmp.b ($33,a0,d3.w*2), d0 uses Opb030 ----------
43282Opb030:
43283;@ Get EA into r11 and value into r0:
43284;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
43285;@ Get extension word into r3:
43286  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
43287  mov r2,r3,lsr #10
43288  tst r3,#0x0800 ;@ Is Rn Word or Long
43289  and r2,r2,#0x3c ;@ r2=Index of Rn
43290  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
43291  ldrne   r2,[r7,r2] ;@ r2=Rn.l
43292  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
43293  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
43294  and r2,r8,#0x000f
43295  orr r2,r2,#0x8 ;@ A0-7
43296  ldr r2,[r7,r2,lsl #2]
43297  add r0,r2,r3 ;@ r0=Disp+An+Rn
43298;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
43299  mov lr,pc
43300  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
43301
43302;@ Get register operand into r1:
43303;@ EaCalc : Get register index into r1:
43304  and r1,r8,#0x0e00
43305;@ EaRead : Read register[r1] into r1:
43306  ldr r1,[r7,r1,lsr #7]
43307
43308  mov r0,r0,asl #24
43309
43310;@ Do arithmetic:
43311  rsbs r1,r0,r1,asl #24
43312  mrs r10,cpsr ;@ r10=flags
43313  eor r10,r10,#0x20000000 ;@ Invert carry
43314
43315  ldrh r8,[r4],#2 ;@ Fetch next opcode
43316  subs r5,r5,#14 ;@ Subtract cycles
43317  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43318  b CycloneEnd
43319
43320;@ ---------- [b039] cmp.b $33333333.l, d0 uses Opb039 ----------
43321Opb039:
43322;@ Get EA into r11 and value into r0:
43323;@ EaCalc : Get '$33333333.l' into r0:
43324  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
43325  ldrh r0,[r4],#2
43326  orr r0,r0,r2,lsl #16
43327;@ EaRead : Read '$33333333.l' (address in r0) into r0:
43328  mov lr,pc
43329  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
43330
43331;@ Get register operand into r1:
43332;@ EaCalc : Get register index into r1:
43333  and r1,r8,#0x0e00
43334;@ EaRead : Read register[r1] into r1:
43335  ldr r1,[r7,r1,lsr #7]
43336
43337  mov r0,r0,asl #24
43338
43339;@ Do arithmetic:
43340  rsbs r1,r0,r1,asl #24
43341  mrs r10,cpsr ;@ r10=flags
43342  eor r10,r10,#0x20000000 ;@ Invert carry
43343
43344  ldrh r8,[r4],#2 ;@ Fetch next opcode
43345  subs r5,r5,#16 ;@ Subtract cycles
43346  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43347  b CycloneEnd
43348
43349;@ ---------- [b03a] cmp.b ($3333,pc), d0; =3335 uses Opb03a ----------
43350Opb03a:
43351;@ Get EA into r11 and value into r0:
43352;@ EaCalc : Get '($3333,pc)' into r0:
43353  ldr r0,[r7,#0x60] ;@ Get Memory base
43354  sub r0,r4,r0 ;@ Real PC
43355  ldrsh r2,[r4],#2 ;@ Fetch extension
43356  add r0,r2,r0 ;@ ($nn,PC)
43357;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
43358  mov lr,pc
43359  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
43360
43361;@ Get register operand into r1:
43362;@ EaCalc : Get register index into r1:
43363  and r1,r8,#0x0e00
43364;@ EaRead : Read register[r1] into r1:
43365  ldr r1,[r7,r1,lsr #7]
43366
43367  mov r0,r0,asl #24
43368
43369;@ Do arithmetic:
43370  rsbs r1,r0,r1,asl #24
43371  mrs r10,cpsr ;@ r10=flags
43372  eor r10,r10,#0x20000000 ;@ Invert carry
43373
43374  ldrh r8,[r4],#2 ;@ Fetch next opcode
43375  subs r5,r5,#12 ;@ Subtract cycles
43376  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43377  b CycloneEnd
43378
43379;@ ---------- [b03b] cmp.b ($33,pc,d3.w*2), d0; =35 uses Opb03b ----------
43380Opb03b:
43381;@ Get EA into r11 and value into r0:
43382;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
43383  ldr r0,[r7,#0x60] ;@ Get Memory base
43384  ldrh r3,[r4] ;@ Get extension word
43385  sub r0,r4,r0 ;@ r0=PC
43386  add r4,r4,#2
43387  mov r2,r3,lsr #10
43388  tst r3,#0x0800 ;@ Is Rn Word or Long
43389  and r2,r2,#0x3c ;@ r2=Index of Rn
43390  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
43391  ldrne   r2,[r7,r2] ;@ r2=Rn.l
43392  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
43393  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
43394  add r0,r2,r0 ;@ r0=Disp+PC+Rn
43395;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
43396  mov lr,pc
43397  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
43398
43399;@ Get register operand into r1:
43400;@ EaCalc : Get register index into r1:
43401  and r1,r8,#0x0e00
43402;@ EaRead : Read register[r1] into r1:
43403  ldr r1,[r7,r1,lsr #7]
43404
43405  mov r0,r0,asl #24
43406
43407;@ Do arithmetic:
43408  rsbs r1,r0,r1,asl #24
43409  mrs r10,cpsr ;@ r10=flags
43410  eor r10,r10,#0x20000000 ;@ Invert carry
43411
43412  ldrh r8,[r4],#2 ;@ Fetch next opcode
43413  subs r5,r5,#14 ;@ Subtract cycles
43414  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43415  b CycloneEnd
43416
43417;@ ---------- [b03c] cmp.b #$33, d0 uses Opb03c ----------
43418Opb03c:
43419;@ Get EA into r11 and value into r0:
43420;@ EaCalc : Get '#$33' into r0:
43421  ldrsb r0,[r4],#2 ;@ Fetch immediate value
43422;@ EaRead : Read '#$33' (address in r0) into r0:
43423
43424;@ Get register operand into r1:
43425;@ EaCalc : Get register index into r1:
43426  and r1,r8,#0x0e00
43427;@ EaRead : Read register[r1] into r1:
43428  ldr r1,[r7,r1,lsr #7]
43429
43430  mov r0,r0,asl #24
43431
43432;@ Do arithmetic:
43433  rsbs r1,r0,r1,asl #24
43434  mrs r10,cpsr ;@ r10=flags
43435  eor r10,r10,#0x20000000 ;@ Invert carry
43436
43437  ldrh r8,[r4],#2 ;@ Fetch next opcode
43438  subs r5,r5,#8 ;@ Subtract cycles
43439  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43440  b CycloneEnd
43441
43442;@ ---------- [b040] cmp.w d0, d0 uses Opb040 ----------
43443Opb040:
43444;@ Get EA into r11 and value into r0:
43445;@ EaCalc : Get register index into r0:
43446  and r0,r8,#0x000f
43447;@ EaRead : Read register[r0] into r0:
43448  ldr r0,[r7,r0,lsl #2]
43449
43450;@ Get register operand into r1:
43451;@ EaCalc : Get register index into r1:
43452  and r1,r8,#0x0e00
43453;@ EaRead : Read register[r1] into r1:
43454  ldr r1,[r7,r1,lsr #7]
43455
43456  mov r0,r0,asl #16
43457
43458;@ Do arithmetic:
43459  rsbs r1,r0,r1,asl #16
43460  mrs r10,cpsr ;@ r10=flags
43461  eor r10,r10,#0x20000000 ;@ Invert carry
43462
43463  ldrh r8,[r4],#2 ;@ Fetch next opcode
43464  subs r5,r5,#4 ;@ Subtract cycles
43465  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43466  b CycloneEnd
43467
43468;@ ---------- [b050] cmp.w (a0), d0 uses Opb050 ----------
43469Opb050:
43470;@ Get EA into r11 and value into r0:
43471;@ EaCalc : Get '(a0)' into r0:
43472  and r2,r8,#0x000f
43473  orr r2,r2,#0x8 ;@ A0-7
43474  ldr r0,[r7,r2,lsl #2]
43475;@ EaRead : Read '(a0)' (address in r0) into r0:
43476  mov lr,pc
43477  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
43478
43479;@ Get register operand into r1:
43480;@ EaCalc : Get register index into r1:
43481  and r1,r8,#0x0e00
43482;@ EaRead : Read register[r1] into r1:
43483  ldr r1,[r7,r1,lsr #7]
43484
43485  mov r0,r0,asl #16
43486
43487;@ Do arithmetic:
43488  rsbs r1,r0,r1,asl #16
43489  mrs r10,cpsr ;@ r10=flags
43490  eor r10,r10,#0x20000000 ;@ Invert carry
43491
43492  ldrh r8,[r4],#2 ;@ Fetch next opcode
43493  subs r5,r5,#8 ;@ Subtract cycles
43494  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43495  b CycloneEnd
43496
43497;@ ---------- [b058] cmp.w (a0)+, d0 uses Opb058 ----------
43498Opb058:
43499;@ Get EA into r11 and value into r0:
43500;@ EaCalc : Get '(a0)+' into r0:
43501  and r2,r8,#0x000f
43502  ldr r0,[r7,r2,lsl #2]
43503  add r3,r0,#2 ;@ Post-increment An
43504  str r3,[r7,r2,lsl #2]
43505;@ EaRead : Read '(a0)+' (address in r0) into r0:
43506  mov lr,pc
43507  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
43508
43509;@ Get register operand into r1:
43510;@ EaCalc : Get register index into r1:
43511  and r1,r8,#0x0e00
43512;@ EaRead : Read register[r1] into r1:
43513  ldr r1,[r7,r1,lsr #7]
43514
43515  mov r0,r0,asl #16
43516
43517;@ Do arithmetic:
43518  rsbs r1,r0,r1,asl #16
43519  mrs r10,cpsr ;@ r10=flags
43520  eor r10,r10,#0x20000000 ;@ Invert carry
43521
43522  ldrh r8,[r4],#2 ;@ Fetch next opcode
43523  subs r5,r5,#8 ;@ Subtract cycles
43524  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43525  b CycloneEnd
43526
43527;@ ---------- [b060] cmp.w -(a0), d0 uses Opb060 ----------
43528Opb060:
43529;@ Get EA into r11 and value into r0:
43530;@ EaCalc : Get '-(a0)' into r0:
43531  and r2,r8,#0x000f
43532  orr r2,r2,#0x8 ;@ A0-7
43533  ldr r0,[r7,r2,lsl #2]
43534  sub r0,r0,#2 ;@ Pre-decrement An
43535  str r0,[r7,r2,lsl #2]
43536;@ EaRead : Read '-(a0)' (address in r0) into r0:
43537  mov lr,pc
43538  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
43539
43540;@ Get register operand into r1:
43541;@ EaCalc : Get register index into r1:
43542  and r1,r8,#0x0e00
43543;@ EaRead : Read register[r1] into r1:
43544  ldr r1,[r7,r1,lsr #7]
43545
43546  mov r0,r0,asl #16
43547
43548;@ Do arithmetic:
43549  rsbs r1,r0,r1,asl #16
43550  mrs r10,cpsr ;@ r10=flags
43551  eor r10,r10,#0x20000000 ;@ Invert carry
43552
43553  ldrh r8,[r4],#2 ;@ Fetch next opcode
43554  subs r5,r5,#10 ;@ Subtract cycles
43555  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43556  b CycloneEnd
43557
43558;@ ---------- [b068] cmp.w ($3333,a0), d0 uses Opb068 ----------
43559Opb068:
43560;@ Get EA into r11 and value into r0:
43561;@ EaCalc : Get '($3333,a0)' into r0:
43562  ldrsh r0,[r4],#2 ;@ Fetch offset
43563  and r2,r8,#0x000f
43564  ldr r2,[r7,r2,lsl #2]
43565  add r0,r0,r2 ;@ Add on offset
43566;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
43567  mov lr,pc
43568  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
43569
43570;@ Get register operand into r1:
43571;@ EaCalc : Get register index into r1:
43572  and r1,r8,#0x0e00
43573;@ EaRead : Read register[r1] into r1:
43574  ldr r1,[r7,r1,lsr #7]
43575
43576  mov r0,r0,asl #16
43577
43578;@ Do arithmetic:
43579  rsbs r1,r0,r1,asl #16
43580  mrs r10,cpsr ;@ r10=flags
43581  eor r10,r10,#0x20000000 ;@ Invert carry
43582
43583  ldrh r8,[r4],#2 ;@ Fetch next opcode
43584  subs r5,r5,#12 ;@ Subtract cycles
43585  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43586  b CycloneEnd
43587
43588;@ ---------- [b070] cmp.w ($33,a0,d3.w*2), d0 uses Opb070 ----------
43589Opb070:
43590;@ Get EA into r11 and value into r0:
43591;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
43592;@ Get extension word into r3:
43593  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
43594  mov r2,r3,lsr #10
43595  tst r3,#0x0800 ;@ Is Rn Word or Long
43596  and r2,r2,#0x3c ;@ r2=Index of Rn
43597  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
43598  ldrne   r2,[r7,r2] ;@ r2=Rn.l
43599  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
43600  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
43601  and r2,r8,#0x000f
43602  orr r2,r2,#0x8 ;@ A0-7
43603  ldr r2,[r7,r2,lsl #2]
43604  add r0,r2,r3 ;@ r0=Disp+An+Rn
43605;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
43606  mov lr,pc
43607  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
43608
43609;@ Get register operand into r1:
43610;@ EaCalc : Get register index into r1:
43611  and r1,r8,#0x0e00
43612;@ EaRead : Read register[r1] into r1:
43613  ldr r1,[r7,r1,lsr #7]
43614
43615  mov r0,r0,asl #16
43616
43617;@ Do arithmetic:
43618  rsbs r1,r0,r1,asl #16
43619  mrs r10,cpsr ;@ r10=flags
43620  eor r10,r10,#0x20000000 ;@ Invert carry
43621
43622  ldrh r8,[r4],#2 ;@ Fetch next opcode
43623  subs r5,r5,#14 ;@ Subtract cycles
43624  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43625  b CycloneEnd
43626
43627;@ ---------- [b078] cmp.w $3333.w, d0 uses Opb078 ----------
43628Opb078:
43629;@ Get EA into r11 and value into r0:
43630;@ EaCalc : Get '$3333.w' into r0:
43631  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
43632;@ EaRead : Read '$3333.w' (address in r0) into r0:
43633  mov lr,pc
43634  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
43635
43636;@ Get register operand into r1:
43637;@ EaCalc : Get register index into r1:
43638  and r1,r8,#0x0e00
43639;@ EaRead : Read register[r1] into r1:
43640  ldr r1,[r7,r1,lsr #7]
43641
43642  mov r0,r0,asl #16
43643
43644;@ Do arithmetic:
43645  rsbs r1,r0,r1,asl #16
43646  mrs r10,cpsr ;@ r10=flags
43647  eor r10,r10,#0x20000000 ;@ Invert carry
43648
43649  ldrh r8,[r4],#2 ;@ Fetch next opcode
43650  subs r5,r5,#12 ;@ Subtract cycles
43651  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43652  b CycloneEnd
43653
43654;@ ---------- [b079] cmp.w $33333333.l, d0 uses Opb079 ----------
43655Opb079:
43656;@ Get EA into r11 and value into r0:
43657;@ EaCalc : Get '$33333333.l' into r0:
43658  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
43659  ldrh r0,[r4],#2
43660  orr r0,r0,r2,lsl #16
43661;@ EaRead : Read '$33333333.l' (address in r0) into r0:
43662  mov lr,pc
43663  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
43664
43665;@ Get register operand into r1:
43666;@ EaCalc : Get register index into r1:
43667  and r1,r8,#0x0e00
43668;@ EaRead : Read register[r1] into r1:
43669  ldr r1,[r7,r1,lsr #7]
43670
43671  mov r0,r0,asl #16
43672
43673;@ Do arithmetic:
43674  rsbs r1,r0,r1,asl #16
43675  mrs r10,cpsr ;@ r10=flags
43676  eor r10,r10,#0x20000000 ;@ Invert carry
43677
43678  ldrh r8,[r4],#2 ;@ Fetch next opcode
43679  subs r5,r5,#16 ;@ Subtract cycles
43680  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43681  b CycloneEnd
43682
43683;@ ---------- [b07a] cmp.w ($3333,pc), d0; =3335 uses Opb07a ----------
43684Opb07a:
43685;@ Get EA into r11 and value into r0:
43686;@ EaCalc : Get '($3333,pc)' into r0:
43687  ldr r0,[r7,#0x60] ;@ Get Memory base
43688  sub r0,r4,r0 ;@ Real PC
43689  ldrsh r2,[r4],#2 ;@ Fetch extension
43690  add r0,r2,r0 ;@ ($nn,PC)
43691;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
43692  mov lr,pc
43693  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
43694
43695;@ Get register operand into r1:
43696;@ EaCalc : Get register index into r1:
43697  and r1,r8,#0x0e00
43698;@ EaRead : Read register[r1] into r1:
43699  ldr r1,[r7,r1,lsr #7]
43700
43701  mov r0,r0,asl #16
43702
43703;@ Do arithmetic:
43704  rsbs r1,r0,r1,asl #16
43705  mrs r10,cpsr ;@ r10=flags
43706  eor r10,r10,#0x20000000 ;@ Invert carry
43707
43708  ldrh r8,[r4],#2 ;@ Fetch next opcode
43709  subs r5,r5,#12 ;@ Subtract cycles
43710  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43711  b CycloneEnd
43712
43713;@ ---------- [b07b] cmp.w ($33,pc,d3.w*2), d0; =35 uses Opb07b ----------
43714Opb07b:
43715;@ Get EA into r11 and value into r0:
43716;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
43717  ldr r0,[r7,#0x60] ;@ Get Memory base
43718  ldrh r3,[r4] ;@ Get extension word
43719  sub r0,r4,r0 ;@ r0=PC
43720  add r4,r4,#2
43721  mov r2,r3,lsr #10
43722  tst r3,#0x0800 ;@ Is Rn Word or Long
43723  and r2,r2,#0x3c ;@ r2=Index of Rn
43724  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
43725  ldrne   r2,[r7,r2] ;@ r2=Rn.l
43726  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
43727  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
43728  add r0,r2,r0 ;@ r0=Disp+PC+Rn
43729;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
43730  mov lr,pc
43731  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
43732
43733;@ Get register operand into r1:
43734;@ EaCalc : Get register index into r1:
43735  and r1,r8,#0x0e00
43736;@ EaRead : Read register[r1] into r1:
43737  ldr r1,[r7,r1,lsr #7]
43738
43739  mov r0,r0,asl #16
43740
43741;@ Do arithmetic:
43742  rsbs r1,r0,r1,asl #16
43743  mrs r10,cpsr ;@ r10=flags
43744  eor r10,r10,#0x20000000 ;@ Invert carry
43745
43746  ldrh r8,[r4],#2 ;@ Fetch next opcode
43747  subs r5,r5,#14 ;@ Subtract cycles
43748  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43749  b CycloneEnd
43750
43751;@ ---------- [b07c] cmp.w #$3333, d0 uses Opb07c ----------
43752Opb07c:
43753;@ Get EA into r11 and value into r0:
43754;@ EaCalc : Get '#$3333' into r0:
43755  ldrsh r0,[r4],#2 ;@ Fetch immediate value
43756;@ EaRead : Read '#$3333' (address in r0) into r0:
43757
43758;@ Get register operand into r1:
43759;@ EaCalc : Get register index into r1:
43760  and r1,r8,#0x0e00
43761;@ EaRead : Read register[r1] into r1:
43762  ldr r1,[r7,r1,lsr #7]
43763
43764  mov r0,r0,asl #16
43765
43766;@ Do arithmetic:
43767  rsbs r1,r0,r1,asl #16
43768  mrs r10,cpsr ;@ r10=flags
43769  eor r10,r10,#0x20000000 ;@ Invert carry
43770
43771  ldrh r8,[r4],#2 ;@ Fetch next opcode
43772  subs r5,r5,#8 ;@ Subtract cycles
43773  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43774  b CycloneEnd
43775
43776;@ ---------- [b080] cmp.l d0, d0 uses Opb080 ----------
43777Opb080:
43778;@ Get EA into r11 and value into r0:
43779;@ EaCalc : Get register index into r0:
43780  and r0,r8,#0x000f
43781;@ EaRead : Read register[r0] into r0:
43782  ldr r0,[r7,r0,lsl #2]
43783
43784;@ Get register operand into r1:
43785;@ EaCalc : Get register index into r1:
43786  and r1,r8,#0x0e00
43787;@ EaRead : Read register[r1] into r1:
43788  ldr r1,[r7,r1,lsr #7]
43789
43790;@ Do arithmetic:
43791  rsbs r1,r0,r1
43792  mrs r10,cpsr ;@ r10=flags
43793  eor r10,r10,#0x20000000 ;@ Invert carry
43794
43795  ldrh r8,[r4],#2 ;@ Fetch next opcode
43796  subs r5,r5,#6 ;@ Subtract cycles
43797  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43798  b CycloneEnd
43799
43800;@ ---------- [b090] cmp.l (a0), d0 uses Opb090 ----------
43801Opb090:
43802;@ Get EA into r11 and value into r0:
43803;@ EaCalc : Get '(a0)' into r0:
43804  and r2,r8,#0x000f
43805  orr r2,r2,#0x8 ;@ A0-7
43806  ldr r0,[r7,r2,lsl #2]
43807;@ EaRead : Read '(a0)' (address in r0) into r0:
43808  mov lr,pc
43809  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
43810
43811;@ Get register operand into r1:
43812;@ EaCalc : Get register index into r1:
43813  and r1,r8,#0x0e00
43814;@ EaRead : Read register[r1] into r1:
43815  ldr r1,[r7,r1,lsr #7]
43816
43817;@ Do arithmetic:
43818  rsbs r1,r0,r1
43819  mrs r10,cpsr ;@ r10=flags
43820  eor r10,r10,#0x20000000 ;@ Invert carry
43821
43822  ldrh r8,[r4],#2 ;@ Fetch next opcode
43823  subs r5,r5,#14 ;@ Subtract cycles
43824  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43825  b CycloneEnd
43826
43827;@ ---------- [b098] cmp.l (a0)+, d0 uses Opb098 ----------
43828Opb098:
43829;@ Get EA into r11 and value into r0:
43830;@ EaCalc : Get '(a0)+' into r0:
43831  and r2,r8,#0x000f
43832  ldr r0,[r7,r2,lsl #2]
43833  add r3,r0,#4 ;@ Post-increment An
43834  str r3,[r7,r2,lsl #2]
43835;@ EaRead : Read '(a0)+' (address in r0) into r0:
43836  mov lr,pc
43837  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
43838
43839;@ Get register operand into r1:
43840;@ EaCalc : Get register index into r1:
43841  and r1,r8,#0x0e00
43842;@ EaRead : Read register[r1] into r1:
43843  ldr r1,[r7,r1,lsr #7]
43844
43845;@ Do arithmetic:
43846  rsbs r1,r0,r1
43847  mrs r10,cpsr ;@ r10=flags
43848  eor r10,r10,#0x20000000 ;@ Invert carry
43849
43850  ldrh r8,[r4],#2 ;@ Fetch next opcode
43851  subs r5,r5,#14 ;@ Subtract cycles
43852  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43853  b CycloneEnd
43854
43855;@ ---------- [b0a0] cmp.l -(a0), d0 uses Opb0a0 ----------
43856Opb0a0:
43857;@ Get EA into r11 and value into r0:
43858;@ EaCalc : Get '-(a0)' into r0:
43859  and r2,r8,#0x000f
43860  orr r2,r2,#0x8 ;@ A0-7
43861  ldr r0,[r7,r2,lsl #2]
43862  sub r0,r0,#4 ;@ Pre-decrement An
43863  str r0,[r7,r2,lsl #2]
43864;@ EaRead : Read '-(a0)' (address in r0) into r0:
43865  mov lr,pc
43866  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
43867
43868;@ Get register operand into r1:
43869;@ EaCalc : Get register index into r1:
43870  and r1,r8,#0x0e00
43871;@ EaRead : Read register[r1] into r1:
43872  ldr r1,[r7,r1,lsr #7]
43873
43874;@ Do arithmetic:
43875  rsbs r1,r0,r1
43876  mrs r10,cpsr ;@ r10=flags
43877  eor r10,r10,#0x20000000 ;@ Invert carry
43878
43879  ldrh r8,[r4],#2 ;@ Fetch next opcode
43880  subs r5,r5,#16 ;@ Subtract cycles
43881  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43882  b CycloneEnd
43883
43884;@ ---------- [b0a8] cmp.l ($3333,a0), d0 uses Opb0a8 ----------
43885Opb0a8:
43886;@ Get EA into r11 and value into r0:
43887;@ EaCalc : Get '($3333,a0)' into r0:
43888  ldrsh r0,[r4],#2 ;@ Fetch offset
43889  and r2,r8,#0x000f
43890  ldr r2,[r7,r2,lsl #2]
43891  add r0,r0,r2 ;@ Add on offset
43892;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
43893  mov lr,pc
43894  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
43895
43896;@ Get register operand into r1:
43897;@ EaCalc : Get register index into r1:
43898  and r1,r8,#0x0e00
43899;@ EaRead : Read register[r1] into r1:
43900  ldr r1,[r7,r1,lsr #7]
43901
43902;@ Do arithmetic:
43903  rsbs r1,r0,r1
43904  mrs r10,cpsr ;@ r10=flags
43905  eor r10,r10,#0x20000000 ;@ Invert carry
43906
43907  ldrh r8,[r4],#2 ;@ Fetch next opcode
43908  subs r5,r5,#18 ;@ Subtract cycles
43909  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43910  b CycloneEnd
43911
43912;@ ---------- [b0b0] cmp.l ($33,a0,d3.w*2), d0 uses Opb0b0 ----------
43913Opb0b0:
43914;@ Get EA into r11 and value into r0:
43915;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
43916;@ Get extension word into r3:
43917  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
43918  mov r2,r3,lsr #10
43919  tst r3,#0x0800 ;@ Is Rn Word or Long
43920  and r2,r2,#0x3c ;@ r2=Index of Rn
43921  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
43922  ldrne   r2,[r7,r2] ;@ r2=Rn.l
43923  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
43924  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
43925  and r2,r8,#0x000f
43926  orr r2,r2,#0x8 ;@ A0-7
43927  ldr r2,[r7,r2,lsl #2]
43928  add r0,r2,r3 ;@ r0=Disp+An+Rn
43929;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
43930  mov lr,pc
43931  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
43932
43933;@ Get register operand into r1:
43934;@ EaCalc : Get register index into r1:
43935  and r1,r8,#0x0e00
43936;@ EaRead : Read register[r1] into r1:
43937  ldr r1,[r7,r1,lsr #7]
43938
43939;@ Do arithmetic:
43940  rsbs r1,r0,r1
43941  mrs r10,cpsr ;@ r10=flags
43942  eor r10,r10,#0x20000000 ;@ Invert carry
43943
43944  ldrh r8,[r4],#2 ;@ Fetch next opcode
43945  subs r5,r5,#20 ;@ Subtract cycles
43946  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43947  b CycloneEnd
43948
43949;@ ---------- [b0b9] cmp.l $33333333.l, d0 uses Opb0b9 ----------
43950Opb0b9:
43951;@ Get EA into r11 and value into r0:
43952;@ EaCalc : Get '$33333333.l' into r0:
43953  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
43954  ldrh r0,[r4],#2
43955  orr r0,r0,r2,lsl #16
43956;@ EaRead : Read '$33333333.l' (address in r0) into r0:
43957  mov lr,pc
43958  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
43959
43960;@ Get register operand into r1:
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  rsbs r1,r0,r1
43968  mrs r10,cpsr ;@ r10=flags
43969  eor r10,r10,#0x20000000 ;@ Invert carry
43970
43971  ldrh r8,[r4],#2 ;@ Fetch next opcode
43972  subs r5,r5,#22 ;@ Subtract cycles
43973  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
43974  b CycloneEnd
43975
43976;@ ---------- [b0ba] cmp.l ($3333,pc), d0; =3335 uses Opb0ba ----------
43977Opb0ba:
43978;@ Get EA into r11 and value into r0:
43979;@ EaCalc : Get '($3333,pc)' into r0:
43980  ldr r0,[r7,#0x60] ;@ Get Memory base
43981  sub r0,r4,r0 ;@ Real PC
43982  ldrsh r2,[r4],#2 ;@ Fetch extension
43983  add r0,r2,r0 ;@ ($nn,PC)
43984;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
43985  mov lr,pc
43986  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
43987
43988;@ Get register operand into r1:
43989;@ EaCalc : Get register index into r1:
43990  and r1,r8,#0x0e00
43991;@ EaRead : Read register[r1] into r1:
43992  ldr r1,[r7,r1,lsr #7]
43993
43994;@ Do arithmetic:
43995  rsbs r1,r0,r1
43996  mrs r10,cpsr ;@ r10=flags
43997  eor r10,r10,#0x20000000 ;@ Invert carry
43998
43999  ldrh r8,[r4],#2 ;@ Fetch next opcode
44000  subs r5,r5,#18 ;@ Subtract cycles
44001  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44002  b CycloneEnd
44003
44004;@ ---------- [b0bb] cmp.l ($33,pc,d3.w*2), d0; =35 uses Opb0bb ----------
44005Opb0bb:
44006;@ Get EA into r11 and value into r0:
44007;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
44008  ldr r0,[r7,#0x60] ;@ Get Memory base
44009  ldrh r3,[r4] ;@ Get extension word
44010  sub r0,r4,r0 ;@ r0=PC
44011  add r4,r4,#2
44012  mov r2,r3,lsr #10
44013  tst r3,#0x0800 ;@ Is Rn Word or Long
44014  and r2,r2,#0x3c ;@ r2=Index of Rn
44015  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
44016  ldrne   r2,[r7,r2] ;@ r2=Rn.l
44017  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
44018  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
44019  add r0,r2,r0 ;@ r0=Disp+PC+Rn
44020;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
44021  mov lr,pc
44022  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
44023
44024;@ Get register operand into r1:
44025;@ EaCalc : Get register index into r1:
44026  and r1,r8,#0x0e00
44027;@ EaRead : Read register[r1] into r1:
44028  ldr r1,[r7,r1,lsr #7]
44029
44030;@ Do arithmetic:
44031  rsbs r1,r0,r1
44032  mrs r10,cpsr ;@ r10=flags
44033  eor r10,r10,#0x20000000 ;@ Invert carry
44034
44035  ldrh r8,[r4],#2 ;@ Fetch next opcode
44036  subs r5,r5,#20 ;@ Subtract cycles
44037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44038  b CycloneEnd
44039
44040;@ ---------- [b0bc] cmp.l #$33333333, d0 uses Opb0bc ----------
44041Opb0bc:
44042;@ Get EA into r11 and value into r0:
44043;@ EaCalc : Get '#$33333333' into r0:
44044  ldrh r2,[r4],#2 ;@ Fetch immediate value
44045  ldrh r3,[r4],#2
44046  orr r0,r3,r2,lsl #16
44047;@ EaRead : Read '#$33333333' (address in r0) into r0:
44048
44049;@ Get register operand into r1:
44050;@ EaCalc : Get register index into r1:
44051  and r1,r8,#0x0e00
44052;@ EaRead : Read register[r1] into r1:
44053  ldr r1,[r7,r1,lsr #7]
44054
44055;@ Do arithmetic:
44056  rsbs r1,r0,r1
44057  mrs r10,cpsr ;@ r10=flags
44058  eor r10,r10,#0x20000000 ;@ Invert carry
44059
44060  ldrh r8,[r4],#2 ;@ Fetch next opcode
44061  subs r5,r5,#14 ;@ Subtract cycles
44062  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44063  b CycloneEnd
44064
44065;@ ---------- [b0c0] cmpa.w d0, a0 uses Opb0c0 ----------
44066Opb0c0:
44067;@ EaCalc : Get register index into r0:
44068  and r0,r8,#0x000f
44069;@ EaRead : Read register[r0] into r0:
44070  ldr r0,[r7,r0,lsl #2]
44071
44072;@ EaCalc : Get register index into r1:
44073  and r1,r8,#0x1e00
44074;@ EaRead : Read register[r1] into r1:
44075  ldr r1,[r7,r1,lsr #7]
44076
44077  mov r0,r0,asl #16
44078
44079  cmp r1,r0,asr #16 ;@ Defines NZCV
44080  mrs r10,cpsr ;@ r10=flags
44081  eor r10,r10,#0x20000000 ;@ Invert carry
44082
44083  ldrh r8,[r4],#2 ;@ Fetch next opcode
44084  subs r5,r5,#6 ;@ Subtract cycles
44085  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44086  b CycloneEnd
44087
44088;@ ---------- [b0d0] cmpa.w (a0), a0 uses Opb0d0 ----------
44089Opb0d0:
44090;@ EaCalc : Get '(a0)' into r0:
44091  and r2,r8,#0x000f
44092  orr r2,r2,#0x8 ;@ A0-7
44093  ldr r0,[r7,r2,lsl #2]
44094;@ EaRead : Read '(a0)' (address in r0) into r0:
44095  mov lr,pc
44096  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44097
44098;@ EaCalc : Get register index into r1:
44099  and r1,r8,#0x1e00
44100;@ EaRead : Read register[r1] into r1:
44101  ldr r1,[r7,r1,lsr #7]
44102
44103  mov r0,r0,asl #16
44104
44105  cmp r1,r0,asr #16 ;@ Defines NZCV
44106  mrs r10,cpsr ;@ r10=flags
44107  eor r10,r10,#0x20000000 ;@ Invert carry
44108
44109  ldrh r8,[r4],#2 ;@ Fetch next opcode
44110  subs r5,r5,#10 ;@ Subtract cycles
44111  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44112  b CycloneEnd
44113
44114;@ ---------- [b0d8] cmpa.w (a0)+, a0 uses Opb0d8 ----------
44115Opb0d8:
44116;@ EaCalc : Get '(a0)+' into r0:
44117  and r2,r8,#0x000f
44118  ldr r0,[r7,r2,lsl #2]
44119  add r3,r0,#2 ;@ Post-increment An
44120  str r3,[r7,r2,lsl #2]
44121;@ EaRead : Read '(a0)+' (address in r0) into r0:
44122  mov lr,pc
44123  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44124
44125;@ EaCalc : Get register index into r1:
44126  and r1,r8,#0x1e00
44127;@ EaRead : Read register[r1] into r1:
44128  ldr r1,[r7,r1,lsr #7]
44129
44130  mov r0,r0,asl #16
44131
44132  cmp r1,r0,asr #16 ;@ Defines NZCV
44133  mrs r10,cpsr ;@ r10=flags
44134  eor r10,r10,#0x20000000 ;@ Invert carry
44135
44136  ldrh r8,[r4],#2 ;@ Fetch next opcode
44137  subs r5,r5,#10 ;@ Subtract cycles
44138  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44139  b CycloneEnd
44140
44141;@ ---------- [b0e0] cmpa.w -(a0), a0 uses Opb0e0 ----------
44142Opb0e0:
44143;@ EaCalc : Get '-(a0)' into r0:
44144  and r2,r8,#0x000f
44145  orr r2,r2,#0x8 ;@ A0-7
44146  ldr r0,[r7,r2,lsl #2]
44147  sub r0,r0,#2 ;@ Pre-decrement An
44148  str r0,[r7,r2,lsl #2]
44149;@ EaRead : Read '-(a0)' (address in r0) into r0:
44150  mov lr,pc
44151  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44152
44153;@ EaCalc : Get register index into r1:
44154  and r1,r8,#0x1e00
44155;@ EaRead : Read register[r1] into r1:
44156  ldr r1,[r7,r1,lsr #7]
44157
44158  mov r0,r0,asl #16
44159
44160  cmp r1,r0,asr #16 ;@ Defines NZCV
44161  mrs r10,cpsr ;@ r10=flags
44162  eor r10,r10,#0x20000000 ;@ Invert carry
44163
44164  ldrh r8,[r4],#2 ;@ Fetch next opcode
44165  subs r5,r5,#12 ;@ Subtract cycles
44166  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44167  b CycloneEnd
44168
44169;@ ---------- [b0e8] cmpa.w ($3333,a0), a0 uses Opb0e8 ----------
44170Opb0e8:
44171;@ EaCalc : Get '($3333,a0)' into r0:
44172  ldrsh r0,[r4],#2 ;@ Fetch offset
44173  and r2,r8,#0x000f
44174  ldr r2,[r7,r2,lsl #2]
44175  add r0,r0,r2 ;@ Add on offset
44176;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
44177  mov lr,pc
44178  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44179
44180;@ EaCalc : Get register index into r1:
44181  and r1,r8,#0x1e00
44182;@ EaRead : Read register[r1] into r1:
44183  ldr r1,[r7,r1,lsr #7]
44184
44185  mov r0,r0,asl #16
44186
44187  cmp r1,r0,asr #16 ;@ Defines NZCV
44188  mrs r10,cpsr ;@ r10=flags
44189  eor r10,r10,#0x20000000 ;@ Invert carry
44190
44191  ldrh r8,[r4],#2 ;@ Fetch next opcode
44192  subs r5,r5,#14 ;@ Subtract cycles
44193  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44194  b CycloneEnd
44195
44196;@ ---------- [b0f0] cmpa.w ($33,a0,d3.w*2), a0 uses Opb0f0 ----------
44197Opb0f0:
44198;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
44199;@ Get extension word into r3:
44200  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
44201  mov r2,r3,lsr #10
44202  tst r3,#0x0800 ;@ Is Rn Word or Long
44203  and r2,r2,#0x3c ;@ r2=Index of Rn
44204  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
44205  ldrne   r2,[r7,r2] ;@ r2=Rn.l
44206  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
44207  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
44208  and r2,r8,#0x000f
44209  orr r2,r2,#0x8 ;@ A0-7
44210  ldr r2,[r7,r2,lsl #2]
44211  add r0,r2,r3 ;@ r0=Disp+An+Rn
44212;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
44213  mov lr,pc
44214  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44215
44216;@ EaCalc : Get register index into r1:
44217  and r1,r8,#0x1e00
44218;@ EaRead : Read register[r1] into r1:
44219  ldr r1,[r7,r1,lsr #7]
44220
44221  mov r0,r0,asl #16
44222
44223  cmp r1,r0,asr #16 ;@ Defines NZCV
44224  mrs r10,cpsr ;@ r10=flags
44225  eor r10,r10,#0x20000000 ;@ Invert carry
44226
44227  ldrh r8,[r4],#2 ;@ Fetch next opcode
44228  subs r5,r5,#16 ;@ Subtract cycles
44229  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44230  b CycloneEnd
44231
44232;@ ---------- [b0f8] cmpa.w $3333.w, a0 uses Opb0f8 ----------
44233Opb0f8:
44234;@ EaCalc : Get '$3333.w' into r0:
44235  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
44236;@ EaRead : Read '$3333.w' (address in r0) into r0:
44237  mov lr,pc
44238  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44239
44240;@ EaCalc : Get register index into r1:
44241  and r1,r8,#0x1e00
44242;@ EaRead : Read register[r1] into r1:
44243  ldr r1,[r7,r1,lsr #7]
44244
44245  mov r0,r0,asl #16
44246
44247  cmp r1,r0,asr #16 ;@ Defines NZCV
44248  mrs r10,cpsr ;@ r10=flags
44249  eor r10,r10,#0x20000000 ;@ Invert carry
44250
44251  ldrh r8,[r4],#2 ;@ Fetch next opcode
44252  subs r5,r5,#14 ;@ Subtract cycles
44253  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44254  b CycloneEnd
44255
44256;@ ---------- [b0f9] cmpa.w $33333333.l, a0 uses Opb0f9 ----------
44257Opb0f9:
44258;@ EaCalc : Get '$33333333.l' into r0:
44259  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
44260  ldrh r0,[r4],#2
44261  orr r0,r0,r2,lsl #16
44262;@ EaRead : Read '$33333333.l' (address in r0) into r0:
44263  mov lr,pc
44264  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44265
44266;@ EaCalc : Get register index into r1:
44267  and r1,r8,#0x1e00
44268;@ EaRead : Read register[r1] into r1:
44269  ldr r1,[r7,r1,lsr #7]
44270
44271  mov r0,r0,asl #16
44272
44273  cmp r1,r0,asr #16 ;@ Defines NZCV
44274  mrs r10,cpsr ;@ r10=flags
44275  eor r10,r10,#0x20000000 ;@ Invert carry
44276
44277  ldrh r8,[r4],#2 ;@ Fetch next opcode
44278  subs r5,r5,#18 ;@ Subtract cycles
44279  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44280  b CycloneEnd
44281
44282;@ ---------- [b0fa] cmpa.w ($3333,pc), a0; =3335 uses Opb0fa ----------
44283Opb0fa:
44284;@ EaCalc : Get '($3333,pc)' into r0:
44285  ldr r0,[r7,#0x60] ;@ Get Memory base
44286  sub r0,r4,r0 ;@ Real PC
44287  ldrsh r2,[r4],#2 ;@ Fetch extension
44288  add r0,r2,r0 ;@ ($nn,PC)
44289;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
44290  mov lr,pc
44291  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
44292
44293;@ EaCalc : Get register index into r1:
44294  and r1,r8,#0x1e00
44295;@ EaRead : Read register[r1] into r1:
44296  ldr r1,[r7,r1,lsr #7]
44297
44298  mov r0,r0,asl #16
44299
44300  cmp r1,r0,asr #16 ;@ Defines NZCV
44301  mrs r10,cpsr ;@ r10=flags
44302  eor r10,r10,#0x20000000 ;@ Invert carry
44303
44304  ldrh r8,[r4],#2 ;@ Fetch next opcode
44305  subs r5,r5,#14 ;@ Subtract cycles
44306  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44307  b CycloneEnd
44308
44309;@ ---------- [b0fb] cmpa.w ($33,pc,d3.w*2), a0; =35 uses Opb0fb ----------
44310Opb0fb:
44311;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
44312  ldr r0,[r7,#0x60] ;@ Get Memory base
44313  ldrh r3,[r4] ;@ Get extension word
44314  sub r0,r4,r0 ;@ r0=PC
44315  add r4,r4,#2
44316  mov r2,r3,lsr #10
44317  tst r3,#0x0800 ;@ Is Rn Word or Long
44318  and r2,r2,#0x3c ;@ r2=Index of Rn
44319  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
44320  ldrne   r2,[r7,r2] ;@ r2=Rn.l
44321  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
44322  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
44323  add r0,r2,r0 ;@ r0=Disp+PC+Rn
44324;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
44325  mov lr,pc
44326  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
44327
44328;@ EaCalc : Get register index into r1:
44329  and r1,r8,#0x1e00
44330;@ EaRead : Read register[r1] into r1:
44331  ldr r1,[r7,r1,lsr #7]
44332
44333  mov r0,r0,asl #16
44334
44335  cmp r1,r0,asr #16 ;@ Defines NZCV
44336  mrs r10,cpsr ;@ r10=flags
44337  eor r10,r10,#0x20000000 ;@ Invert carry
44338
44339  ldrh r8,[r4],#2 ;@ Fetch next opcode
44340  subs r5,r5,#16 ;@ Subtract cycles
44341  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44342  b CycloneEnd
44343
44344;@ ---------- [b0fc] cmpa.w #$3333, a0 uses Opb0fc ----------
44345Opb0fc:
44346;@ EaCalc : Get '#$3333' into r0:
44347  ldrsh r0,[r4],#2 ;@ Fetch immediate value
44348;@ EaRead : Read '#$3333' (address in r0) into r0:
44349
44350;@ EaCalc : Get register index into r1:
44351  and r1,r8,#0x1e00
44352;@ EaRead : Read register[r1] into r1:
44353  ldr r1,[r7,r1,lsr #7]
44354
44355  mov r0,r0,asl #16
44356
44357  cmp r1,r0,asr #16 ;@ Defines NZCV
44358  mrs r10,cpsr ;@ r10=flags
44359  eor r10,r10,#0x20000000 ;@ Invert carry
44360
44361  ldrh r8,[r4],#2 ;@ Fetch next opcode
44362  subs r5,r5,#10 ;@ Subtract cycles
44363  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44364  b CycloneEnd
44365
44366;@ ---------- [b100] eor.b d0, d0 uses Opb100 ----------
44367Opb100:
44368;@ Get EA into r11 and value into r0:
44369;@ EaCalc : Get register index into r11:
44370  and r11,r8,#0x000f
44371;@ EaRead : Read register[r11] into r0:
44372  ldr r0,[r7,r11,lsl #2]
44373
44374;@ Get register operand into r1:
44375;@ EaCalc : Get register index into r1:
44376  and r1,r8,#0x0e00
44377;@ EaRead : Read register[r1] into r1:
44378  ldr r1,[r7,r1,lsr #7]
44379
44380  mov r0,r0,asl #24
44381
44382;@ Do arithmetic:
44383  eors r1,r0,r1,asl #24
44384  and r10,r1,#0x80000000 ;@ r10=N_flag
44385  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44386
44387;@ EaWrite: r1 into register[r11]:
44388  mov r1,r1,lsr #24
44389  strb r1,[r7,r11,lsl #2]
44390
44391  ldrh r8,[r4],#2 ;@ Fetch next opcode
44392  subs r5,r5,#4 ;@ Subtract cycles
44393  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44394  b CycloneEnd
44395
44396;@ ---------- [b108] cmpm.b (a0)+, (a0)+ uses Opb108 ----------
44397Opb108:
44398;@ Get src operand into r11:
44399;@ EaCalc : Get '(a0)+' into r0:
44400  and r2,r8,#0x000f
44401  ldr r0,[r7,r2,lsl #2]
44402  add r3,r0,#1 ;@ Post-increment An
44403  str r3,[r7,r2,lsl #2]
44404;@ EaRead : Read '(a0)+' (address in r0) into r11:
44405  mov lr,pc
44406  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44407  mov r11,r0,asl #24
44408
44409;@ Get dst operand into r0:
44410;@ EaCalc : Get '(a0)+' into r0:
44411  and r2,r8,#0x1e00
44412  ldr r0,[r7,r2,lsr #7]
44413  add r3,r0,#1 ;@ Post-increment An
44414  str r3,[r7,r2,lsr #7]
44415;@ EaRead : Read '(a0)+' (address in r0) into r0:
44416  mov lr,pc
44417  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44418
44419  rsbs r0,r11,r0,asl #24
44420  mrs r10,cpsr ;@ r10=flags
44421  eor r10,r10,#0x20000000 ;@ Invert carry
44422
44423  ldrh r8,[r4],#2 ;@ Fetch next opcode
44424  subs r5,r5,#12 ;@ Subtract cycles
44425  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44426  b CycloneEnd
44427
44428;@ ---------- [b10f] cmpm.b (a7)+, (a0)+ uses Opb10f ----------
44429Opb10f:
44430;@ Get src operand into r11:
44431;@ EaCalc : Get '(a7)+' into r0:
44432  ldr r0,[r7,#0x3c] ;@ A7
44433  add r3,r0,#2 ;@ Post-increment An
44434  str r3,[r7,#0x3c] ;@ A7
44435;@ EaRead : Read '(a7)+' (address in r0) into r11:
44436  mov lr,pc
44437  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44438  mov r11,r0,asl #24
44439
44440;@ Get dst operand into r0:
44441;@ EaCalc : Get '(a0)+' into r0:
44442  and r2,r8,#0x1e00
44443  ldr r0,[r7,r2,lsr #7]
44444  add r3,r0,#1 ;@ Post-increment An
44445  str r3,[r7,r2,lsr #7]
44446;@ EaRead : Read '(a0)+' (address in r0) into r0:
44447  mov lr,pc
44448  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44449
44450  rsbs r0,r11,r0,asl #24
44451  mrs r10,cpsr ;@ r10=flags
44452  eor r10,r10,#0x20000000 ;@ Invert carry
44453
44454  ldrh r8,[r4],#2 ;@ Fetch next opcode
44455  subs r5,r5,#12 ;@ Subtract cycles
44456  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44457  b CycloneEnd
44458
44459;@ ---------- [b110] eor.b d0, (a0) uses Opb110 ----------
44460Opb110:
44461;@ Get EA into r11 and value into r0:
44462;@ EaCalc : Get '(a0)' into r11:
44463  and r2,r8,#0x000f
44464  orr r2,r2,#0x8 ;@ A0-7
44465  ldr r11,[r7,r2,lsl #2]
44466;@ EaRead : Read '(a0)' (address in r11) into r0:
44467  add lr,pc,#4
44468  mov r0,r11
44469  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44470
44471;@ Get register operand into r1:
44472;@ EaCalc : Get register index into r1:
44473  and r1,r8,#0x0e00
44474;@ EaRead : Read register[r1] into r1:
44475  ldr r1,[r7,r1,lsr #7]
44476
44477  mov r0,r0,asl #24
44478
44479;@ Do arithmetic:
44480  eors r1,r0,r1,asl #24
44481  and r10,r1,#0x80000000 ;@ r10=N_flag
44482  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44483
44484;@ EaWrite: Write r1 into '(a0)' (address in r11):
44485  mov r1,r1,lsr #24
44486  add lr,pc,#4
44487  mov r0,r11
44488  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
44489
44490  ldrh r8,[r4],#2 ;@ Fetch next opcode
44491  subs r5,r5,#12 ;@ Subtract cycles
44492  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44493  b CycloneEnd
44494
44495;@ ---------- [b118] eor.b d0, (a0)+ uses Opb118 ----------
44496Opb118:
44497;@ Get EA into r11 and value into r0:
44498;@ EaCalc : Get '(a0)+' into r11:
44499  and r2,r8,#0x000f
44500  ldr r11,[r7,r2,lsl #2]
44501  add r3,r11,#1 ;@ Post-increment An
44502  str r3,[r7,r2,lsl #2]
44503;@ EaRead : Read '(a0)+' (address in r11) into r0:
44504  add lr,pc,#4
44505  mov r0,r11
44506  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44507
44508;@ Get register operand into r1:
44509;@ EaCalc : Get register index into r1:
44510  and r1,r8,#0x0e00
44511;@ EaRead : Read register[r1] into r1:
44512  ldr r1,[r7,r1,lsr #7]
44513
44514  mov r0,r0,asl #24
44515
44516;@ Do arithmetic:
44517  eors r1,r0,r1,asl #24
44518  and r10,r1,#0x80000000 ;@ r10=N_flag
44519  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44520
44521;@ EaWrite: Write r1 into '(a0)+' (address in r11):
44522  mov r1,r1,lsr #24
44523  add lr,pc,#4
44524  mov r0,r11
44525  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
44526
44527  ldrh r8,[r4],#2 ;@ Fetch next opcode
44528  subs r5,r5,#12 ;@ Subtract cycles
44529  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44530  b CycloneEnd
44531
44532;@ ---------- [b11f] eor.b d0, (a7)+ uses Opb11f ----------
44533Opb11f:
44534;@ Get EA into r11 and value into r0:
44535;@ EaCalc : Get '(a7)+' into r11:
44536  ldr r11,[r7,#0x3c] ;@ A7
44537  add r3,r11,#2 ;@ Post-increment An
44538  str r3,[r7,#0x3c] ;@ A7
44539;@ EaRead : Read '(a7)+' (address in r11) into r0:
44540  add lr,pc,#4
44541  mov r0,r11
44542  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44543
44544;@ Get register operand into r1:
44545;@ EaCalc : Get register index into r1:
44546  and r1,r8,#0x0e00
44547;@ EaRead : Read register[r1] into r1:
44548  ldr r1,[r7,r1,lsr #7]
44549
44550  mov r0,r0,asl #24
44551
44552;@ Do arithmetic:
44553  eors r1,r0,r1,asl #24
44554  and r10,r1,#0x80000000 ;@ r10=N_flag
44555  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44556
44557;@ EaWrite: Write r1 into '(a7)+' (address in r11):
44558  mov r1,r1,lsr #24
44559  add lr,pc,#4
44560  mov r0,r11
44561  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
44562
44563  ldrh r8,[r4],#2 ;@ Fetch next opcode
44564  subs r5,r5,#12 ;@ Subtract cycles
44565  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44566  b CycloneEnd
44567
44568;@ ---------- [b120] eor.b d0, -(a0) uses Opb120 ----------
44569Opb120:
44570;@ Get EA into r11 and value into r0:
44571;@ EaCalc : Get '-(a0)' into r11:
44572  and r2,r8,#0x000f
44573  orr r2,r2,#0x8 ;@ A0-7
44574  ldr r11,[r7,r2,lsl #2]
44575  sub r11,r11,#1 ;@ Pre-decrement An
44576  str r11,[r7,r2,lsl #2]
44577;@ EaRead : Read '-(a0)' (address in r11) into r0:
44578  add lr,pc,#4
44579  mov r0,r11
44580  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44581
44582;@ Get register operand into r1:
44583;@ EaCalc : Get register index into r1:
44584  and r1,r8,#0x0e00
44585;@ EaRead : Read register[r1] into r1:
44586  ldr r1,[r7,r1,lsr #7]
44587
44588  mov r0,r0,asl #24
44589
44590;@ Do arithmetic:
44591  eors r1,r0,r1,asl #24
44592  and r10,r1,#0x80000000 ;@ r10=N_flag
44593  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44594
44595;@ EaWrite: Write r1 into '-(a0)' (address in r11):
44596  mov r1,r1,lsr #24
44597  add lr,pc,#4
44598  mov r0,r11
44599  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
44600
44601  ldrh r8,[r4],#2 ;@ Fetch next opcode
44602  subs r5,r5,#14 ;@ Subtract cycles
44603  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44604  b CycloneEnd
44605
44606;@ ---------- [b127] eor.b d0, -(a7) uses Opb127 ----------
44607Opb127:
44608;@ Get EA into r11 and value into r0:
44609;@ EaCalc : Get '-(a7)' into r11:
44610  ldr r11,[r7,#0x3c] ;@ A7
44611  sub r11,r11,#2 ;@ Pre-decrement An
44612  str r11,[r7,#0x3c] ;@ A7
44613;@ EaRead : Read '-(a7)' (address in r11) into r0:
44614  add lr,pc,#4
44615  mov r0,r11
44616  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44617
44618;@ Get register operand into r1:
44619;@ EaCalc : Get register index into r1:
44620  and r1,r8,#0x0e00
44621;@ EaRead : Read register[r1] into r1:
44622  ldr r1,[r7,r1,lsr #7]
44623
44624  mov r0,r0,asl #24
44625
44626;@ Do arithmetic:
44627  eors r1,r0,r1,asl #24
44628  and r10,r1,#0x80000000 ;@ r10=N_flag
44629  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44630
44631;@ EaWrite: Write r1 into '-(a7)' (address in r11):
44632  mov r1,r1,lsr #24
44633  add lr,pc,#4
44634  mov r0,r11
44635  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
44636
44637  ldrh r8,[r4],#2 ;@ Fetch next opcode
44638  subs r5,r5,#14 ;@ Subtract cycles
44639  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44640  b CycloneEnd
44641
44642;@ ---------- [b128] eor.b d0, ($3333,a0) uses Opb128 ----------
44643Opb128:
44644;@ Get EA into r11 and value into r0:
44645;@ EaCalc : Get '($3333,a0)' into r11:
44646  ldrsh r0,[r4],#2 ;@ Fetch offset
44647  and r2,r8,#0x000f
44648  ldr r2,[r7,r2,lsl #2]
44649  add r11,r0,r2 ;@ Add on offset
44650;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
44651  add lr,pc,#4
44652  mov r0,r11
44653  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44654
44655;@ Get register operand into r1:
44656;@ EaCalc : Get register index into r1:
44657  and r1,r8,#0x0e00
44658;@ EaRead : Read register[r1] into r1:
44659  ldr r1,[r7,r1,lsr #7]
44660
44661  mov r0,r0,asl #24
44662
44663;@ Do arithmetic:
44664  eors r1,r0,r1,asl #24
44665  and r10,r1,#0x80000000 ;@ r10=N_flag
44666  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44667
44668;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
44669  mov r1,r1,lsr #24
44670  add lr,pc,#4
44671  mov r0,r11
44672  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
44673
44674  ldrh r8,[r4],#2 ;@ Fetch next opcode
44675  subs r5,r5,#16 ;@ Subtract cycles
44676  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44677  b CycloneEnd
44678
44679;@ ---------- [b130] eor.b d0, ($33,a0,d3.w*2) uses Opb130 ----------
44680Opb130:
44681;@ Get EA into r11 and value into r0:
44682;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
44683;@ Get extension word into r3:
44684  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
44685  mov r2,r3,lsr #10
44686  tst r3,#0x0800 ;@ Is Rn Word or Long
44687  and r2,r2,#0x3c ;@ r2=Index of Rn
44688  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
44689  ldrne   r2,[r7,r2] ;@ r2=Rn.l
44690  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
44691  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
44692  and r2,r8,#0x000f
44693  orr r2,r2,#0x8 ;@ A0-7
44694  ldr r2,[r7,r2,lsl #2]
44695  add r11,r2,r3 ;@ r11=Disp+An+Rn
44696;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
44697  add lr,pc,#4
44698  mov r0,r11
44699  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44700
44701;@ Get register operand into r1:
44702;@ EaCalc : Get register index into r1:
44703  and r1,r8,#0x0e00
44704;@ EaRead : Read register[r1] into r1:
44705  ldr r1,[r7,r1,lsr #7]
44706
44707  mov r0,r0,asl #24
44708
44709;@ Do arithmetic:
44710  eors r1,r0,r1,asl #24
44711  and r10,r1,#0x80000000 ;@ r10=N_flag
44712  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44713
44714;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
44715  mov r1,r1,lsr #24
44716  add lr,pc,#4
44717  mov r0,r11
44718  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
44719
44720  ldrh r8,[r4],#2 ;@ Fetch next opcode
44721  subs r5,r5,#18 ;@ Subtract cycles
44722  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44723  b CycloneEnd
44724
44725;@ ---------- [b138] eor.b d0, $3333.w uses Opb138 ----------
44726Opb138:
44727;@ Get EA into r11 and value into r0:
44728;@ EaCalc : Get '$3333.w' into r11:
44729  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
44730;@ EaRead : Read '$3333.w' (address in r11) into r0:
44731  add lr,pc,#4
44732  mov r0,r11
44733  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44734
44735;@ Get register operand into r1:
44736;@ EaCalc : Get register index into r1:
44737  and r1,r8,#0x0e00
44738;@ EaRead : Read register[r1] into r1:
44739  ldr r1,[r7,r1,lsr #7]
44740
44741  mov r0,r0,asl #24
44742
44743;@ Do arithmetic:
44744  eors r1,r0,r1,asl #24
44745  and r10,r1,#0x80000000 ;@ r10=N_flag
44746  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44747
44748;@ EaWrite: Write r1 into '$3333.w' (address in r11):
44749  mov r1,r1,lsr #24
44750  add lr,pc,#4
44751  mov r0,r11
44752  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
44753
44754  ldrh r8,[r4],#2 ;@ Fetch next opcode
44755  subs r5,r5,#16 ;@ Subtract cycles
44756  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44757  b CycloneEnd
44758
44759;@ ---------- [b139] eor.b d0, $33333333.l uses Opb139 ----------
44760Opb139:
44761;@ Get EA into r11 and value into r0:
44762;@ EaCalc : Get '$33333333.l' into r11:
44763  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
44764  ldrh r0,[r4],#2
44765  orr r11,r0,r2,lsl #16
44766;@ EaRead : Read '$33333333.l' (address in r11) into r0:
44767  add lr,pc,#4
44768  mov r0,r11
44769  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
44770
44771;@ Get register operand into r1:
44772;@ EaCalc : Get register index into r1:
44773  and r1,r8,#0x0e00
44774;@ EaRead : Read register[r1] into r1:
44775  ldr r1,[r7,r1,lsr #7]
44776
44777  mov r0,r0,asl #24
44778
44779;@ Do arithmetic:
44780  eors r1,r0,r1,asl #24
44781  and r10,r1,#0x80000000 ;@ r10=N_flag
44782  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44783
44784;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
44785  mov r1,r1,lsr #24
44786  add lr,pc,#4
44787  mov r0,r11
44788  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
44789
44790  ldrh r8,[r4],#2 ;@ Fetch next opcode
44791  subs r5,r5,#20 ;@ Subtract cycles
44792  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44793  b CycloneEnd
44794
44795;@ ---------- [b140] eor.w d0, d0 uses Opb140 ----------
44796Opb140:
44797;@ Get EA into r11 and value into r0:
44798;@ EaCalc : Get register index into r11:
44799  and r11,r8,#0x000f
44800  mov r11,r11,lsl #2
44801;@ EaRead : Read register[r11] into r0:
44802  ldr r0,[r7,r11]
44803
44804;@ Get register operand into r1:
44805;@ EaCalc : Get register index into r1:
44806  and r1,r8,#0x0e00
44807;@ EaRead : Read register[r1] into r1:
44808  ldr r1,[r7,r1,lsr #7]
44809
44810  mov r0,r0,asl #16
44811
44812;@ Do arithmetic:
44813  eors r1,r0,r1,asl #16
44814  and r10,r1,#0x80000000 ;@ r10=N_flag
44815  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44816
44817;@ EaWrite: r1 into register[r11]:
44818  mov r1,r1,lsr #16
44819  strh r1,[r7,r11]
44820
44821  ldrh r8,[r4],#2 ;@ Fetch next opcode
44822  subs r5,r5,#4 ;@ Subtract cycles
44823  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44824  b CycloneEnd
44825
44826;@ ---------- [b148] cmpm.w (a0)+, (a0)+ uses Opb148 ----------
44827Opb148:
44828;@ Get src operand into r11:
44829;@ EaCalc : Get '(a0)+' into r0:
44830  and r2,r8,#0x000f
44831  ldr r0,[r7,r2,lsl #2]
44832  add r3,r0,#2 ;@ Post-increment An
44833  str r3,[r7,r2,lsl #2]
44834;@ EaRead : Read '(a0)+' (address in r0) into r11:
44835  mov lr,pc
44836  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44837  mov r11,r0,asl #16
44838
44839;@ Get dst operand into r0:
44840;@ EaCalc : Get '(a0)+' into r0:
44841  and r2,r8,#0x1e00
44842  ldr r0,[r7,r2,lsr #7]
44843  add r3,r0,#2 ;@ Post-increment An
44844  str r3,[r7,r2,lsr #7]
44845;@ EaRead : Read '(a0)+' (address in r0) into r0:
44846  mov lr,pc
44847  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44848
44849  rsbs r0,r11,r0,asl #16
44850  mrs r10,cpsr ;@ r10=flags
44851  eor r10,r10,#0x20000000 ;@ Invert carry
44852
44853  ldrh r8,[r4],#2 ;@ Fetch next opcode
44854  subs r5,r5,#12 ;@ Subtract cycles
44855  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44856  b CycloneEnd
44857
44858;@ ---------- [b150] eor.w d0, (a0) uses Opb150 ----------
44859Opb150:
44860;@ Get EA into r11 and value into r0:
44861;@ EaCalc : Get '(a0)' into r11:
44862  and r2,r8,#0x000f
44863  orr r2,r2,#0x8 ;@ A0-7
44864  ldr r11,[r7,r2,lsl #2]
44865;@ EaRead : Read '(a0)' (address in r11) into r0:
44866  add lr,pc,#4
44867  mov r0,r11
44868  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44869
44870;@ Get register operand into r1:
44871;@ EaCalc : Get register index into r1:
44872  and r1,r8,#0x0e00
44873;@ EaRead : Read register[r1] into r1:
44874  ldr r1,[r7,r1,lsr #7]
44875
44876  mov r0,r0,asl #16
44877
44878;@ Do arithmetic:
44879  eors r1,r0,r1,asl #16
44880  and r10,r1,#0x80000000 ;@ r10=N_flag
44881  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44882
44883;@ EaWrite: Write r1 into '(a0)' (address in r11):
44884  mov r1,r1,lsr #16
44885  add lr,pc,#4
44886  mov r0,r11
44887  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
44888
44889  ldrh r8,[r4],#2 ;@ Fetch next opcode
44890  subs r5,r5,#12 ;@ Subtract cycles
44891  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44892  b CycloneEnd
44893
44894;@ ---------- [b158] eor.w d0, (a0)+ uses Opb158 ----------
44895Opb158:
44896;@ Get EA into r11 and value into r0:
44897;@ EaCalc : Get '(a0)+' into r11:
44898  and r2,r8,#0x000f
44899  ldr r11,[r7,r2,lsl #2]
44900  add r3,r11,#2 ;@ Post-increment An
44901  str r3,[r7,r2,lsl #2]
44902;@ EaRead : Read '(a0)+' (address in r11) into r0:
44903  add lr,pc,#4
44904  mov r0,r11
44905  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44906
44907;@ Get register operand into r1:
44908;@ EaCalc : Get register index into r1:
44909  and r1,r8,#0x0e00
44910;@ EaRead : Read register[r1] into r1:
44911  ldr r1,[r7,r1,lsr #7]
44912
44913  mov r0,r0,asl #16
44914
44915;@ Do arithmetic:
44916  eors r1,r0,r1,asl #16
44917  and r10,r1,#0x80000000 ;@ r10=N_flag
44918  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44919
44920;@ EaWrite: Write r1 into '(a0)+' (address in r11):
44921  mov r1,r1,lsr #16
44922  add lr,pc,#4
44923  mov r0,r11
44924  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
44925
44926  ldrh r8,[r4],#2 ;@ Fetch next opcode
44927  subs r5,r5,#12 ;@ Subtract cycles
44928  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44929  b CycloneEnd
44930
44931;@ ---------- [b160] eor.w d0, -(a0) uses Opb160 ----------
44932Opb160:
44933;@ Get EA into r11 and value into r0:
44934;@ EaCalc : Get '-(a0)' into r11:
44935  and r2,r8,#0x000f
44936  orr r2,r2,#0x8 ;@ A0-7
44937  ldr r11,[r7,r2,lsl #2]
44938  sub r11,r11,#2 ;@ Pre-decrement An
44939  str r11,[r7,r2,lsl #2]
44940;@ EaRead : Read '-(a0)' (address in r11) into r0:
44941  add lr,pc,#4
44942  mov r0,r11
44943  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44944
44945;@ Get register operand into r1:
44946;@ EaCalc : Get register index into r1:
44947  and r1,r8,#0x0e00
44948;@ EaRead : Read register[r1] into r1:
44949  ldr r1,[r7,r1,lsr #7]
44950
44951  mov r0,r0,asl #16
44952
44953;@ Do arithmetic:
44954  eors r1,r0,r1,asl #16
44955  and r10,r1,#0x80000000 ;@ r10=N_flag
44956  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44957
44958;@ EaWrite: Write r1 into '-(a0)' (address in r11):
44959  mov r1,r1,lsr #16
44960  add lr,pc,#4
44961  mov r0,r11
44962  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
44963
44964  ldrh r8,[r4],#2 ;@ Fetch next opcode
44965  subs r5,r5,#14 ;@ Subtract cycles
44966  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
44967  b CycloneEnd
44968
44969;@ ---------- [b168] eor.w d0, ($3333,a0) uses Opb168 ----------
44970Opb168:
44971;@ Get EA into r11 and value into r0:
44972;@ EaCalc : Get '($3333,a0)' into r11:
44973  ldrsh r0,[r4],#2 ;@ Fetch offset
44974  and r2,r8,#0x000f
44975  ldr r2,[r7,r2,lsl #2]
44976  add r11,r0,r2 ;@ Add on offset
44977;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
44978  add lr,pc,#4
44979  mov r0,r11
44980  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
44981
44982;@ Get register operand into r1:
44983;@ EaCalc : Get register index into r1:
44984  and r1,r8,#0x0e00
44985;@ EaRead : Read register[r1] into r1:
44986  ldr r1,[r7,r1,lsr #7]
44987
44988  mov r0,r0,asl #16
44989
44990;@ Do arithmetic:
44991  eors r1,r0,r1,asl #16
44992  and r10,r1,#0x80000000 ;@ r10=N_flag
44993  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
44994
44995;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
44996  mov r1,r1,lsr #16
44997  add lr,pc,#4
44998  mov r0,r11
44999  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
45000
45001  ldrh r8,[r4],#2 ;@ Fetch next opcode
45002  subs r5,r5,#16 ;@ Subtract cycles
45003  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45004  b CycloneEnd
45005
45006;@ ---------- [b170] eor.w d0, ($33,a0,d3.w*2) uses Opb170 ----------
45007Opb170:
45008;@ Get EA into r11 and value into r0:
45009;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
45010;@ Get extension word into r3:
45011  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
45012  mov r2,r3,lsr #10
45013  tst r3,#0x0800 ;@ Is Rn Word or Long
45014  and r2,r2,#0x3c ;@ r2=Index of Rn
45015  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
45016  ldrne   r2,[r7,r2] ;@ r2=Rn.l
45017  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
45018  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
45019  and r2,r8,#0x000f
45020  orr r2,r2,#0x8 ;@ A0-7
45021  ldr r2,[r7,r2,lsl #2]
45022  add r11,r2,r3 ;@ r11=Disp+An+Rn
45023;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
45024  add lr,pc,#4
45025  mov r0,r11
45026  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
45027
45028;@ Get register operand into r1:
45029;@ EaCalc : Get register index into r1:
45030  and r1,r8,#0x0e00
45031;@ EaRead : Read register[r1] into r1:
45032  ldr r1,[r7,r1,lsr #7]
45033
45034  mov r0,r0,asl #16
45035
45036;@ Do arithmetic:
45037  eors r1,r0,r1,asl #16
45038  and r10,r1,#0x80000000 ;@ r10=N_flag
45039  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45040
45041;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
45042  mov r1,r1,lsr #16
45043  add lr,pc,#4
45044  mov r0,r11
45045  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
45046
45047  ldrh r8,[r4],#2 ;@ Fetch next opcode
45048  subs r5,r5,#18 ;@ Subtract cycles
45049  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45050  b CycloneEnd
45051
45052;@ ---------- [b178] eor.w d0, $3333.w uses Opb178 ----------
45053Opb178:
45054;@ Get EA into r11 and value into r0:
45055;@ EaCalc : Get '$3333.w' into r11:
45056  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
45057;@ EaRead : Read '$3333.w' (address in r11) into r0:
45058  add lr,pc,#4
45059  mov r0,r11
45060  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
45061
45062;@ Get register operand into r1:
45063;@ EaCalc : Get register index into r1:
45064  and r1,r8,#0x0e00
45065;@ EaRead : Read register[r1] into r1:
45066  ldr r1,[r7,r1,lsr #7]
45067
45068  mov r0,r0,asl #16
45069
45070;@ Do arithmetic:
45071  eors r1,r0,r1,asl #16
45072  and r10,r1,#0x80000000 ;@ r10=N_flag
45073  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45074
45075;@ EaWrite: Write r1 into '$3333.w' (address in r11):
45076  mov r1,r1,lsr #16
45077  add lr,pc,#4
45078  mov r0,r11
45079  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
45080
45081  ldrh r8,[r4],#2 ;@ Fetch next opcode
45082  subs r5,r5,#16 ;@ Subtract cycles
45083  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45084  b CycloneEnd
45085
45086;@ ---------- [b179] eor.w d0, $33333333.l uses Opb179 ----------
45087Opb179:
45088;@ Get EA into r11 and value into r0:
45089;@ EaCalc : Get '$33333333.l' into r11:
45090  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
45091  ldrh r0,[r4],#2
45092  orr r11,r0,r2,lsl #16
45093;@ EaRead : Read '$33333333.l' (address in r11) into r0:
45094  add lr,pc,#4
45095  mov r0,r11
45096  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
45097
45098;@ Get register operand into r1:
45099;@ EaCalc : Get register index into r1:
45100  and r1,r8,#0x0e00
45101;@ EaRead : Read register[r1] into r1:
45102  ldr r1,[r7,r1,lsr #7]
45103
45104  mov r0,r0,asl #16
45105
45106;@ Do arithmetic:
45107  eors r1,r0,r1,asl #16
45108  and r10,r1,#0x80000000 ;@ r10=N_flag
45109  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45110
45111;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
45112  mov r1,r1,lsr #16
45113  add lr,pc,#4
45114  mov r0,r11
45115  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
45116
45117  ldrh r8,[r4],#2 ;@ Fetch next opcode
45118  subs r5,r5,#20 ;@ Subtract cycles
45119  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45120  b CycloneEnd
45121
45122;@ ---------- [b180] eor.l d0, d0 uses Opb180 ----------
45123Opb180:
45124;@ Get EA into r11 and value into r0:
45125;@ EaCalc : Get register index into r11:
45126  and r11,r8,#0x000f
45127;@ EaRead : Read register[r11] into r0:
45128  ldr r0,[r7,r11,lsl #2]
45129
45130;@ Get register operand into r1:
45131;@ EaCalc : Get register index into r1:
45132  and r1,r8,#0x0e00
45133;@ EaRead : Read register[r1] into r1:
45134  ldr r1,[r7,r1,lsr #7]
45135
45136;@ Do arithmetic:
45137  eors r1,r0,r1
45138  and r10,r1,#0x80000000 ;@ r10=N_flag
45139  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45140
45141;@ EaWrite: r1 into register[r11]:
45142  str r1,[r7,r11,lsl #2]
45143
45144  ldrh r8,[r4],#2 ;@ Fetch next opcode
45145  subs r5,r5,#8 ;@ Subtract cycles
45146  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45147  b CycloneEnd
45148
45149;@ ---------- [b188] cmpm.l (a0)+, (a0)+ uses Opb188 ----------
45150Opb188:
45151;@ Get src operand into r11:
45152;@ EaCalc : Get '(a0)+' into r0:
45153  and r2,r8,#0x000f
45154  ldr r0,[r7,r2,lsl #2]
45155  add r3,r0,#4 ;@ Post-increment An
45156  str r3,[r7,r2,lsl #2]
45157;@ EaRead : Read '(a0)+' (address in r0) into r11:
45158  mov lr,pc
45159  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45160  mov r11,r0
45161
45162;@ Get dst operand into r0:
45163;@ EaCalc : Get '(a0)+' into r0:
45164  and r2,r8,#0x1e00
45165  ldr r0,[r7,r2,lsr #7]
45166  add r3,r0,#4 ;@ Post-increment An
45167  str r3,[r7,r2,lsr #7]
45168;@ EaRead : Read '(a0)+' (address in r0) into r0:
45169  mov lr,pc
45170  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45171
45172  rsbs r0,r11,r0
45173  mrs r10,cpsr ;@ r10=flags
45174  eor r10,r10,#0x20000000 ;@ Invert carry
45175
45176  ldrh r8,[r4],#2 ;@ Fetch next opcode
45177  subs r5,r5,#20 ;@ Subtract cycles
45178  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45179  b CycloneEnd
45180
45181;@ ---------- [b190] eor.l d0, (a0) uses Opb190 ----------
45182Opb190:
45183;@ Get EA into r11 and value into r0:
45184;@ EaCalc : Get '(a0)' into r11:
45185  and r2,r8,#0x000f
45186  orr r2,r2,#0x8 ;@ A0-7
45187  ldr r11,[r7,r2,lsl #2]
45188;@ EaRead : Read '(a0)' (address in r11) into r0:
45189  add lr,pc,#4
45190  mov r0,r11
45191  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45192
45193;@ Get register operand into r1:
45194;@ EaCalc : Get register index into r1:
45195  and r1,r8,#0x0e00
45196;@ EaRead : Read register[r1] into r1:
45197  ldr r1,[r7,r1,lsr #7]
45198
45199;@ Do arithmetic:
45200  eors r1,r0,r1
45201  and r10,r1,#0x80000000 ;@ r10=N_flag
45202  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45203
45204;@ EaWrite: Write r1 into '(a0)' (address in r11):
45205  add lr,pc,#4
45206  mov r0,r11
45207  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
45208
45209  ldrh r8,[r4],#2 ;@ Fetch next opcode
45210  subs r5,r5,#20 ;@ Subtract cycles
45211  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45212  b CycloneEnd
45213
45214;@ ---------- [b198] eor.l d0, (a0)+ uses Opb198 ----------
45215Opb198:
45216;@ Get EA into r11 and value into r0:
45217;@ EaCalc : Get '(a0)+' into r11:
45218  and r2,r8,#0x000f
45219  ldr r11,[r7,r2,lsl #2]
45220  add r3,r11,#4 ;@ Post-increment An
45221  str r3,[r7,r2,lsl #2]
45222;@ EaRead : Read '(a0)+' (address in r11) into r0:
45223  add lr,pc,#4
45224  mov r0,r11
45225  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45226
45227;@ Get register operand into r1:
45228;@ EaCalc : Get register index into r1:
45229  and r1,r8,#0x0e00
45230;@ EaRead : Read register[r1] into r1:
45231  ldr r1,[r7,r1,lsr #7]
45232
45233;@ Do arithmetic:
45234  eors r1,r0,r1
45235  and r10,r1,#0x80000000 ;@ r10=N_flag
45236  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45237
45238;@ EaWrite: Write r1 into '(a0)+' (address in r11):
45239  add lr,pc,#4
45240  mov r0,r11
45241  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
45242
45243  ldrh r8,[r4],#2 ;@ Fetch next opcode
45244  subs r5,r5,#20 ;@ Subtract cycles
45245  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45246  b CycloneEnd
45247
45248;@ ---------- [b1a0] eor.l d0, -(a0) uses Opb1a0 ----------
45249Opb1a0:
45250;@ Get EA into r11 and value into r0:
45251;@ EaCalc : Get '-(a0)' into r11:
45252  and r2,r8,#0x000f
45253  orr r2,r2,#0x8 ;@ A0-7
45254  ldr r11,[r7,r2,lsl #2]
45255  sub r11,r11,#4 ;@ Pre-decrement An
45256  str r11,[r7,r2,lsl #2]
45257;@ EaRead : Read '-(a0)' (address in r11) into r0:
45258  add lr,pc,#4
45259  mov r0,r11
45260  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45261
45262;@ Get register operand into r1:
45263;@ EaCalc : Get register index into r1:
45264  and r1,r8,#0x0e00
45265;@ EaRead : Read register[r1] into r1:
45266  ldr r1,[r7,r1,lsr #7]
45267
45268;@ Do arithmetic:
45269  eors r1,r0,r1
45270  and r10,r1,#0x80000000 ;@ r10=N_flag
45271  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45272
45273;@ EaWrite: Write r1 into '-(a0)' (address in r11):
45274  add lr,pc,#4
45275  mov r0,r11
45276  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
45277
45278  ldrh r8,[r4],#2 ;@ Fetch next opcode
45279  subs r5,r5,#22 ;@ Subtract cycles
45280  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45281  b CycloneEnd
45282
45283;@ ---------- [b1a8] eor.l d0, ($3333,a0) uses Opb1a8 ----------
45284Opb1a8:
45285;@ Get EA into r11 and value into r0:
45286;@ EaCalc : Get '($3333,a0)' into r11:
45287  ldrsh r0,[r4],#2 ;@ Fetch offset
45288  and r2,r8,#0x000f
45289  ldr r2,[r7,r2,lsl #2]
45290  add r11,r0,r2 ;@ Add on offset
45291;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
45292  add lr,pc,#4
45293  mov r0,r11
45294  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45295
45296;@ Get register operand into r1:
45297;@ EaCalc : Get register index into r1:
45298  and r1,r8,#0x0e00
45299;@ EaRead : Read register[r1] into r1:
45300  ldr r1,[r7,r1,lsr #7]
45301
45302;@ Do arithmetic:
45303  eors r1,r0,r1
45304  and r10,r1,#0x80000000 ;@ r10=N_flag
45305  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45306
45307;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
45308  add lr,pc,#4
45309  mov r0,r11
45310  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
45311
45312  ldrh r8,[r4],#2 ;@ Fetch next opcode
45313  subs r5,r5,#24 ;@ Subtract cycles
45314  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45315  b CycloneEnd
45316
45317;@ ---------- [b1b0] eor.l d0, ($33,a0,d3.w*2) uses Opb1b0 ----------
45318Opb1b0:
45319;@ Get EA into r11 and value into r0:
45320;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
45321;@ Get extension word into r3:
45322  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
45323  mov r2,r3,lsr #10
45324  tst r3,#0x0800 ;@ Is Rn Word or Long
45325  and r2,r2,#0x3c ;@ r2=Index of Rn
45326  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
45327  ldrne   r2,[r7,r2] ;@ r2=Rn.l
45328  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
45329  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
45330  and r2,r8,#0x000f
45331  orr r2,r2,#0x8 ;@ A0-7
45332  ldr r2,[r7,r2,lsl #2]
45333  add r11,r2,r3 ;@ r11=Disp+An+Rn
45334;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
45335  add lr,pc,#4
45336  mov r0,r11
45337  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45338
45339;@ Get register operand into r1:
45340;@ EaCalc : Get register index into r1:
45341  and r1,r8,#0x0e00
45342;@ EaRead : Read register[r1] into r1:
45343  ldr r1,[r7,r1,lsr #7]
45344
45345;@ Do arithmetic:
45346  eors r1,r0,r1
45347  and r10,r1,#0x80000000 ;@ r10=N_flag
45348  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45349
45350;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
45351  add lr,pc,#4
45352  mov r0,r11
45353  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
45354
45355  ldrh r8,[r4],#2 ;@ Fetch next opcode
45356  subs r5,r5,#26 ;@ Subtract cycles
45357  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45358  b CycloneEnd
45359
45360;@ ---------- [b1b8] eor.l d0, $3333.w uses Opb1b8 ----------
45361Opb1b8:
45362;@ Get EA into r11 and value into r0:
45363;@ EaCalc : Get '$3333.w' into r11:
45364  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
45365;@ EaRead : Read '$3333.w' (address in r11) into r0:
45366  add lr,pc,#4
45367  mov r0,r11
45368  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45369
45370;@ Get register operand into r1:
45371;@ EaCalc : Get register index into r1:
45372  and r1,r8,#0x0e00
45373;@ EaRead : Read register[r1] into r1:
45374  ldr r1,[r7,r1,lsr #7]
45375
45376;@ Do arithmetic:
45377  eors r1,r0,r1
45378  and r10,r1,#0x80000000 ;@ r10=N_flag
45379  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45380
45381;@ EaWrite: Write r1 into '$3333.w' (address in r11):
45382  add lr,pc,#4
45383  mov r0,r11
45384  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
45385
45386  ldrh r8,[r4],#2 ;@ Fetch next opcode
45387  subs r5,r5,#24 ;@ Subtract cycles
45388  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45389  b CycloneEnd
45390
45391;@ ---------- [b1b9] eor.l d0, $33333333.l uses Opb1b9 ----------
45392Opb1b9:
45393;@ Get EA into r11 and value into r0:
45394;@ EaCalc : Get '$33333333.l' into r11:
45395  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
45396  ldrh r0,[r4],#2
45397  orr r11,r0,r2,lsl #16
45398;@ EaRead : Read '$33333333.l' (address in r11) into r0:
45399  add lr,pc,#4
45400  mov r0,r11
45401  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45402
45403;@ Get register operand into r1:
45404;@ EaCalc : Get register index into r1:
45405  and r1,r8,#0x0e00
45406;@ EaRead : Read register[r1] into r1:
45407  ldr r1,[r7,r1,lsr #7]
45408
45409;@ Do arithmetic:
45410  eors r1,r0,r1
45411  and r10,r1,#0x80000000 ;@ r10=N_flag
45412  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45413
45414;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
45415  add lr,pc,#4
45416  mov r0,r11
45417  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
45418
45419  ldrh r8,[r4],#2 ;@ Fetch next opcode
45420  subs r5,r5,#28 ;@ Subtract cycles
45421  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45422  b CycloneEnd
45423
45424;@ ---------- [b1c0] cmpa.l d0, a0 uses Opb1c0 ----------
45425Opb1c0:
45426;@ EaCalc : Get register index into r0:
45427  and r0,r8,#0x000f
45428;@ EaRead : Read register[r0] into r0:
45429  ldr r0,[r7,r0,lsl #2]
45430
45431;@ EaCalc : Get register index into r1:
45432  and r1,r8,#0x1e00
45433;@ EaRead : Read register[r1] into r1:
45434  ldr r1,[r7,r1,lsr #7]
45435
45436  cmp r1,r0 ;@ Defines NZCV
45437  mrs r10,cpsr ;@ r10=flags
45438  eor r10,r10,#0x20000000 ;@ Invert carry
45439
45440  ldrh r8,[r4],#2 ;@ Fetch next opcode
45441  subs r5,r5,#6 ;@ Subtract cycles
45442  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45443  b CycloneEnd
45444
45445;@ ---------- [b1d0] cmpa.l (a0), a0 uses Opb1d0 ----------
45446Opb1d0:
45447;@ EaCalc : Get '(a0)' into r0:
45448  and r2,r8,#0x000f
45449  orr r2,r2,#0x8 ;@ A0-7
45450  ldr r0,[r7,r2,lsl #2]
45451;@ EaRead : Read '(a0)' (address in r0) into r0:
45452  mov lr,pc
45453  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45454
45455;@ EaCalc : Get register index into r1:
45456  and r1,r8,#0x1e00
45457;@ EaRead : Read register[r1] into r1:
45458  ldr r1,[r7,r1,lsr #7]
45459
45460  cmp r1,r0 ;@ Defines NZCV
45461  mrs r10,cpsr ;@ r10=flags
45462  eor r10,r10,#0x20000000 ;@ Invert carry
45463
45464  ldrh r8,[r4],#2 ;@ Fetch next opcode
45465  subs r5,r5,#14 ;@ Subtract cycles
45466  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45467  b CycloneEnd
45468
45469;@ ---------- [b1d8] cmpa.l (a0)+, a0 uses Opb1d8 ----------
45470Opb1d8:
45471;@ EaCalc : Get '(a0)+' into r0:
45472  and r2,r8,#0x000f
45473  ldr r0,[r7,r2,lsl #2]
45474  add r3,r0,#4 ;@ Post-increment An
45475  str r3,[r7,r2,lsl #2]
45476;@ EaRead : Read '(a0)+' (address in r0) into r0:
45477  mov lr,pc
45478  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45479
45480;@ EaCalc : Get register index into r1:
45481  and r1,r8,#0x1e00
45482;@ EaRead : Read register[r1] into r1:
45483  ldr r1,[r7,r1,lsr #7]
45484
45485  cmp r1,r0 ;@ Defines NZCV
45486  mrs r10,cpsr ;@ r10=flags
45487  eor r10,r10,#0x20000000 ;@ Invert carry
45488
45489  ldrh r8,[r4],#2 ;@ Fetch next opcode
45490  subs r5,r5,#14 ;@ Subtract cycles
45491  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45492  b CycloneEnd
45493
45494;@ ---------- [b1e0] cmpa.l -(a0), a0 uses Opb1e0 ----------
45495Opb1e0:
45496;@ EaCalc : Get '-(a0)' into r0:
45497  and r2,r8,#0x000f
45498  orr r2,r2,#0x8 ;@ A0-7
45499  ldr r0,[r7,r2,lsl #2]
45500  sub r0,r0,#4 ;@ Pre-decrement An
45501  str r0,[r7,r2,lsl #2]
45502;@ EaRead : Read '-(a0)' (address in r0) into r0:
45503  mov lr,pc
45504  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45505
45506;@ EaCalc : Get register index into r1:
45507  and r1,r8,#0x1e00
45508;@ EaRead : Read register[r1] into r1:
45509  ldr r1,[r7,r1,lsr #7]
45510
45511  cmp r1,r0 ;@ Defines NZCV
45512  mrs r10,cpsr ;@ r10=flags
45513  eor r10,r10,#0x20000000 ;@ Invert carry
45514
45515  ldrh r8,[r4],#2 ;@ Fetch next opcode
45516  subs r5,r5,#16 ;@ Subtract cycles
45517  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45518  b CycloneEnd
45519
45520;@ ---------- [b1e8] cmpa.l ($3333,a0), a0 uses Opb1e8 ----------
45521Opb1e8:
45522;@ EaCalc : Get '($3333,a0)' into r0:
45523  ldrsh r0,[r4],#2 ;@ Fetch offset
45524  and r2,r8,#0x000f
45525  ldr r2,[r7,r2,lsl #2]
45526  add r0,r0,r2 ;@ Add on offset
45527;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
45528  mov lr,pc
45529  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45530
45531;@ EaCalc : Get register index into r1:
45532  and r1,r8,#0x1e00
45533;@ EaRead : Read register[r1] into r1:
45534  ldr r1,[r7,r1,lsr #7]
45535
45536  cmp r1,r0 ;@ Defines NZCV
45537  mrs r10,cpsr ;@ r10=flags
45538  eor r10,r10,#0x20000000 ;@ Invert carry
45539
45540  ldrh r8,[r4],#2 ;@ Fetch next opcode
45541  subs r5,r5,#18 ;@ Subtract cycles
45542  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45543  b CycloneEnd
45544
45545;@ ---------- [b1f0] cmpa.l ($33,a0,d3.w*2), a0 uses Opb1f0 ----------
45546Opb1f0:
45547;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
45548;@ Get extension word into r3:
45549  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
45550  mov r2,r3,lsr #10
45551  tst r3,#0x0800 ;@ Is Rn Word or Long
45552  and r2,r2,#0x3c ;@ r2=Index of Rn
45553  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
45554  ldrne   r2,[r7,r2] ;@ r2=Rn.l
45555  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
45556  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
45557  and r2,r8,#0x000f
45558  orr r2,r2,#0x8 ;@ A0-7
45559  ldr r2,[r7,r2,lsl #2]
45560  add r0,r2,r3 ;@ r0=Disp+An+Rn
45561;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
45562  mov lr,pc
45563  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45564
45565;@ EaCalc : Get register index into r1:
45566  and r1,r8,#0x1e00
45567;@ EaRead : Read register[r1] into r1:
45568  ldr r1,[r7,r1,lsr #7]
45569
45570  cmp r1,r0 ;@ Defines NZCV
45571  mrs r10,cpsr ;@ r10=flags
45572  eor r10,r10,#0x20000000 ;@ Invert carry
45573
45574  ldrh r8,[r4],#2 ;@ Fetch next opcode
45575  subs r5,r5,#20 ;@ Subtract cycles
45576  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45577  b CycloneEnd
45578
45579;@ ---------- [b1f8] cmpa.l $3333.w, a0 uses Opb1f8 ----------
45580Opb1f8:
45581;@ EaCalc : Get '$3333.w' into r0:
45582  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
45583;@ EaRead : Read '$3333.w' (address in r0) into r0:
45584  mov lr,pc
45585  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45586
45587;@ EaCalc : Get register index into r1:
45588  and r1,r8,#0x1e00
45589;@ EaRead : Read register[r1] into r1:
45590  ldr r1,[r7,r1,lsr #7]
45591
45592  cmp r1,r0 ;@ Defines NZCV
45593  mrs r10,cpsr ;@ r10=flags
45594  eor r10,r10,#0x20000000 ;@ Invert carry
45595
45596  ldrh r8,[r4],#2 ;@ Fetch next opcode
45597  subs r5,r5,#18 ;@ Subtract cycles
45598  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45599  b CycloneEnd
45600
45601;@ ---------- [b1f9] cmpa.l $33333333.l, a0 uses Opb1f9 ----------
45602Opb1f9:
45603;@ EaCalc : Get '$33333333.l' into r0:
45604  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
45605  ldrh r0,[r4],#2
45606  orr r0,r0,r2,lsl #16
45607;@ EaRead : Read '$33333333.l' (address in r0) into r0:
45608  mov lr,pc
45609  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
45610
45611;@ EaCalc : Get register index into r1:
45612  and r1,r8,#0x1e00
45613;@ EaRead : Read register[r1] into r1:
45614  ldr r1,[r7,r1,lsr #7]
45615
45616  cmp r1,r0 ;@ Defines NZCV
45617  mrs r10,cpsr ;@ r10=flags
45618  eor r10,r10,#0x20000000 ;@ Invert carry
45619
45620  ldrh r8,[r4],#2 ;@ Fetch next opcode
45621  subs r5,r5,#22 ;@ Subtract cycles
45622  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45623  b CycloneEnd
45624
45625;@ ---------- [b1fa] cmpa.l ($3333,pc), a0; =3335 uses Opb1fa ----------
45626Opb1fa:
45627;@ EaCalc : Get '($3333,pc)' into r0:
45628  ldr r0,[r7,#0x60] ;@ Get Memory base
45629  sub r0,r4,r0 ;@ Real PC
45630  ldrsh r2,[r4],#2 ;@ Fetch extension
45631  add r0,r2,r0 ;@ ($nn,PC)
45632;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
45633  mov lr,pc
45634  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
45635
45636;@ EaCalc : Get register index into r1:
45637  and r1,r8,#0x1e00
45638;@ EaRead : Read register[r1] into r1:
45639  ldr r1,[r7,r1,lsr #7]
45640
45641  cmp r1,r0 ;@ Defines NZCV
45642  mrs r10,cpsr ;@ r10=flags
45643  eor r10,r10,#0x20000000 ;@ Invert carry
45644
45645  ldrh r8,[r4],#2 ;@ Fetch next opcode
45646  subs r5,r5,#18 ;@ Subtract cycles
45647  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45648  b CycloneEnd
45649
45650;@ ---------- [b1fb] cmpa.l ($33,pc,d3.w*2), a0; =35 uses Opb1fb ----------
45651Opb1fb:
45652;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
45653  ldr r0,[r7,#0x60] ;@ Get Memory base
45654  ldrh r3,[r4] ;@ Get extension word
45655  sub r0,r4,r0 ;@ r0=PC
45656  add r4,r4,#2
45657  mov r2,r3,lsr #10
45658  tst r3,#0x0800 ;@ Is Rn Word or Long
45659  and r2,r2,#0x3c ;@ r2=Index of Rn
45660  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
45661  ldrne   r2,[r7,r2] ;@ r2=Rn.l
45662  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
45663  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
45664  add r0,r2,r0 ;@ r0=Disp+PC+Rn
45665;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
45666  mov lr,pc
45667  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
45668
45669;@ EaCalc : Get register index into r1:
45670  and r1,r8,#0x1e00
45671;@ EaRead : Read register[r1] into r1:
45672  ldr r1,[r7,r1,lsr #7]
45673
45674  cmp r1,r0 ;@ Defines NZCV
45675  mrs r10,cpsr ;@ r10=flags
45676  eor r10,r10,#0x20000000 ;@ Invert carry
45677
45678  ldrh r8,[r4],#2 ;@ Fetch next opcode
45679  subs r5,r5,#20 ;@ Subtract cycles
45680  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45681  b CycloneEnd
45682
45683;@ ---------- [b1fc] cmpa.l #$33333333, a0 uses Opb1fc ----------
45684Opb1fc:
45685;@ EaCalc : Get '#$33333333' into r0:
45686  ldrh r2,[r4],#2 ;@ Fetch immediate value
45687  ldrh r3,[r4],#2
45688  orr r0,r3,r2,lsl #16
45689;@ EaRead : Read '#$33333333' (address in r0) into r0:
45690
45691;@ EaCalc : Get register index into r1:
45692  and r1,r8,#0x1e00
45693;@ EaRead : Read register[r1] into r1:
45694  ldr r1,[r7,r1,lsr #7]
45695
45696  cmp r1,r0 ;@ Defines NZCV
45697  mrs r10,cpsr ;@ r10=flags
45698  eor r10,r10,#0x20000000 ;@ Invert carry
45699
45700  ldrh r8,[r4],#2 ;@ Fetch next opcode
45701  subs r5,r5,#14 ;@ Subtract cycles
45702  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45703  b CycloneEnd
45704
45705;@ ---------- [bf08] cmpm.b (a0)+, (a7)+ uses Opbf08 ----------
45706Opbf08:
45707;@ Get src operand into r11:
45708;@ EaCalc : Get '(a0)+' into r0:
45709  and r2,r8,#0x000f
45710  ldr r0,[r7,r2,lsl #2]
45711  add r3,r0,#1 ;@ Post-increment An
45712  str r3,[r7,r2,lsl #2]
45713;@ EaRead : Read '(a0)+' (address in r0) into r11:
45714  mov lr,pc
45715  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
45716  mov r11,r0,asl #24
45717
45718;@ Get dst operand into r0:
45719;@ EaCalc : Get '(a7)+' into r0:
45720  ldr r0,[r7,#0x3c] ;@ A7
45721  add r3,r0,#2 ;@ Post-increment An
45722  str r3,[r7,#0x3c] ;@ A7
45723;@ EaRead : Read '(a7)+' (address in r0) into r0:
45724  mov lr,pc
45725  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
45726
45727  rsbs r0,r11,r0,asl #24
45728  mrs r10,cpsr ;@ r10=flags
45729  eor r10,r10,#0x20000000 ;@ Invert carry
45730
45731  ldrh r8,[r4],#2 ;@ Fetch next opcode
45732  subs r5,r5,#12 ;@ Subtract cycles
45733  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45734  b CycloneEnd
45735
45736;@ ---------- [bf0f] cmpm.b (a7)+, (a7)+ uses Opbf0f ----------
45737Opbf0f:
45738;@ Get src operand into r11:
45739;@ EaCalc : Get '(a7)+' into r0:
45740  ldr r0,[r7,#0x3c] ;@ A7
45741  add r3,r0,#2 ;@ Post-increment An
45742  str r3,[r7,#0x3c] ;@ A7
45743;@ EaRead : Read '(a7)+' (address in r0) into r11:
45744  mov lr,pc
45745  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
45746  mov r11,r0,asl #24
45747
45748;@ Get dst operand into r0:
45749;@ EaCalc : Get '(a7)+' into r0:
45750  ldr r0,[r7,#0x3c] ;@ A7
45751  add r3,r0,#2 ;@ Post-increment An
45752  str r3,[r7,#0x3c] ;@ A7
45753;@ EaRead : Read '(a7)+' (address in r0) into r0:
45754  mov lr,pc
45755  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
45756
45757  rsbs r0,r11,r0,asl #24
45758  mrs r10,cpsr ;@ r10=flags
45759  eor r10,r10,#0x20000000 ;@ Invert carry
45760
45761  ldrh r8,[r4],#2 ;@ Fetch next opcode
45762  subs r5,r5,#12 ;@ Subtract cycles
45763  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45764  b CycloneEnd
45765
45766;@ ---------- [c000] and.b d0, d0 uses Opc000 ----------
45767Opc000:
45768;@ EaCalc : Get register index into r0:
45769  and r0,r8,#0x000f
45770;@ EaRead : Read register[r0] into r0:
45771  ldr r0,[r7,r0,lsl #2]
45772
45773;@ EaCalc : Get register index into r11:
45774  and r11,r8,#0x0e00
45775;@ EaRead : Read register[r11] into r1:
45776  ldr r1,[r7,r11,lsr #7]
45777
45778;@ Do arithmetic:
45779  mov r0,r0,asl #24
45780  ands r1,r0,r1,asl #24
45781  and r10,r1,#0x80000000 ;@ r10=N_flag
45782  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45783
45784;@ Save result:
45785  mov r1,r1,asr #24
45786;@ EaWrite: r1 into register[r11]:
45787  strb r1,[r7,r11,lsr #7]
45788
45789  ldrh r8,[r4],#2 ;@ Fetch next opcode
45790  subs r5,r5,#4 ;@ Subtract cycles
45791  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45792  b CycloneEnd
45793
45794;@ ---------- [c010] and.b (a0), d0 uses Opc010 ----------
45795Opc010:
45796;@ EaCalc : Get '(a0)' into r0:
45797  and r2,r8,#0x000f
45798  orr r2,r2,#0x8 ;@ A0-7
45799  ldr r0,[r7,r2,lsl #2]
45800;@ EaRead : Read '(a0)' (address in r0) into r0:
45801  mov lr,pc
45802  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
45803
45804;@ EaCalc : Get register index into r11:
45805  and r11,r8,#0x0e00
45806;@ EaRead : Read register[r11] into r1:
45807  ldr r1,[r7,r11,lsr #7]
45808
45809;@ Do arithmetic:
45810  mov r0,r0,asl #24
45811  ands r1,r0,r1,asl #24
45812  and r10,r1,#0x80000000 ;@ r10=N_flag
45813  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45814
45815;@ Save result:
45816  mov r1,r1,asr #24
45817;@ EaWrite: r1 into register[r11]:
45818  strb r1,[r7,r11,lsr #7]
45819
45820  ldrh r8,[r4],#2 ;@ Fetch next opcode
45821  subs r5,r5,#8 ;@ Subtract cycles
45822  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45823  b CycloneEnd
45824
45825;@ ---------- [c018] and.b (a0)+, d0 uses Opc018 ----------
45826Opc018:
45827;@ EaCalc : Get '(a0)+' into r0:
45828  and r2,r8,#0x000f
45829  ldr r0,[r7,r2,lsl #2]
45830  add r3,r0,#1 ;@ Post-increment An
45831  str r3,[r7,r2,lsl #2]
45832;@ EaRead : Read '(a0)+' (address in r0) into r0:
45833  mov lr,pc
45834  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
45835
45836;@ EaCalc : Get register index into r11:
45837  and r11,r8,#0x0e00
45838;@ EaRead : Read register[r11] into r1:
45839  ldr r1,[r7,r11,lsr #7]
45840
45841;@ Do arithmetic:
45842  mov r0,r0,asl #24
45843  ands r1,r0,r1,asl #24
45844  and r10,r1,#0x80000000 ;@ r10=N_flag
45845  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45846
45847;@ Save result:
45848  mov r1,r1,asr #24
45849;@ EaWrite: r1 into register[r11]:
45850  strb r1,[r7,r11,lsr #7]
45851
45852  ldrh r8,[r4],#2 ;@ Fetch next opcode
45853  subs r5,r5,#8 ;@ Subtract cycles
45854  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45855  b CycloneEnd
45856
45857;@ ---------- [c01f] and.b (a7)+, d0 uses Opc01f ----------
45858Opc01f:
45859;@ EaCalc : Get '(a7)+' into r0:
45860  ldr r0,[r7,#0x3c] ;@ A7
45861  add r3,r0,#2 ;@ Post-increment An
45862  str r3,[r7,#0x3c] ;@ A7
45863;@ EaRead : Read '(a7)+' (address in r0) into r0:
45864  mov lr,pc
45865  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
45866
45867;@ EaCalc : Get register index into r11:
45868  and r11,r8,#0x0e00
45869;@ EaRead : Read register[r11] into r1:
45870  ldr r1,[r7,r11,lsr #7]
45871
45872;@ Do arithmetic:
45873  mov r0,r0,asl #24
45874  ands r1,r0,r1,asl #24
45875  and r10,r1,#0x80000000 ;@ r10=N_flag
45876  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45877
45878;@ Save result:
45879  mov r1,r1,asr #24
45880;@ EaWrite: r1 into register[r11]:
45881  strb r1,[r7,r11,lsr #7]
45882
45883  ldrh r8,[r4],#2 ;@ Fetch next opcode
45884  subs r5,r5,#8 ;@ Subtract cycles
45885  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45886  b CycloneEnd
45887
45888;@ ---------- [c020] and.b -(a0), d0 uses Opc020 ----------
45889Opc020:
45890;@ EaCalc : Get '-(a0)' into r0:
45891  and r2,r8,#0x000f
45892  orr r2,r2,#0x8 ;@ A0-7
45893  ldr r0,[r7,r2,lsl #2]
45894  sub r0,r0,#1 ;@ Pre-decrement An
45895  str r0,[r7,r2,lsl #2]
45896;@ EaRead : Read '-(a0)' (address in r0) into r0:
45897  mov lr,pc
45898  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
45899
45900;@ EaCalc : Get register index into r11:
45901  and r11,r8,#0x0e00
45902;@ EaRead : Read register[r11] into r1:
45903  ldr r1,[r7,r11,lsr #7]
45904
45905;@ Do arithmetic:
45906  mov r0,r0,asl #24
45907  ands r1,r0,r1,asl #24
45908  and r10,r1,#0x80000000 ;@ r10=N_flag
45909  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45910
45911;@ Save result:
45912  mov r1,r1,asr #24
45913;@ EaWrite: r1 into register[r11]:
45914  strb r1,[r7,r11,lsr #7]
45915
45916  ldrh r8,[r4],#2 ;@ Fetch next opcode
45917  subs r5,r5,#10 ;@ Subtract cycles
45918  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45919  b CycloneEnd
45920
45921;@ ---------- [c027] and.b -(a7), d0 uses Opc027 ----------
45922Opc027:
45923;@ EaCalc : Get '-(a7)' into r0:
45924  ldr r0,[r7,#0x3c] ;@ A7
45925  sub r0,r0,#2 ;@ Pre-decrement An
45926  str r0,[r7,#0x3c] ;@ A7
45927;@ EaRead : Read '-(a7)' (address in r0) into r0:
45928  mov lr,pc
45929  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
45930
45931;@ EaCalc : Get register index into r11:
45932  and r11,r8,#0x0e00
45933;@ EaRead : Read register[r11] into r1:
45934  ldr r1,[r7,r11,lsr #7]
45935
45936;@ Do arithmetic:
45937  mov r0,r0,asl #24
45938  ands r1,r0,r1,asl #24
45939  and r10,r1,#0x80000000 ;@ r10=N_flag
45940  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45941
45942;@ Save result:
45943  mov r1,r1,asr #24
45944;@ EaWrite: r1 into register[r11]:
45945  strb r1,[r7,r11,lsr #7]
45946
45947  ldrh r8,[r4],#2 ;@ Fetch next opcode
45948  subs r5,r5,#10 ;@ Subtract cycles
45949  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45950  b CycloneEnd
45951
45952;@ ---------- [c028] and.b ($3333,a0), d0 uses Opc028 ----------
45953Opc028:
45954;@ EaCalc : Get '($3333,a0)' into r0:
45955  ldrsh r0,[r4],#2 ;@ Fetch offset
45956  and r2,r8,#0x000f
45957  ldr r2,[r7,r2,lsl #2]
45958  add r0,r0,r2 ;@ Add on offset
45959;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
45960  mov lr,pc
45961  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
45962
45963;@ EaCalc : Get register index into r11:
45964  and r11,r8,#0x0e00
45965;@ EaRead : Read register[r11] into r1:
45966  ldr r1,[r7,r11,lsr #7]
45967
45968;@ Do arithmetic:
45969  mov r0,r0,asl #24
45970  ands r1,r0,r1,asl #24
45971  and r10,r1,#0x80000000 ;@ r10=N_flag
45972  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
45973
45974;@ Save result:
45975  mov r1,r1,asr #24
45976;@ EaWrite: r1 into register[r11]:
45977  strb r1,[r7,r11,lsr #7]
45978
45979  ldrh r8,[r4],#2 ;@ Fetch next opcode
45980  subs r5,r5,#12 ;@ Subtract cycles
45981  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
45982  b CycloneEnd
45983
45984;@ ---------- [c030] and.b ($33,a0,d3.w*2), d0 uses Opc030 ----------
45985Opc030:
45986;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
45987;@ Get extension word into r3:
45988  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
45989  mov r2,r3,lsr #10
45990  tst r3,#0x0800 ;@ Is Rn Word or Long
45991  and r2,r2,#0x3c ;@ r2=Index of Rn
45992  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
45993  ldrne   r2,[r7,r2] ;@ r2=Rn.l
45994  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
45995  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
45996  and r2,r8,#0x000f
45997  orr r2,r2,#0x8 ;@ A0-7
45998  ldr r2,[r7,r2,lsl #2]
45999  add r0,r2,r3 ;@ r0=Disp+An+Rn
46000;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
46001  mov lr,pc
46002  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
46003
46004;@ EaCalc : Get register index into r11:
46005  and r11,r8,#0x0e00
46006;@ EaRead : Read register[r11] into r1:
46007  ldr r1,[r7,r11,lsr #7]
46008
46009;@ Do arithmetic:
46010  mov r0,r0,asl #24
46011  ands r1,r0,r1,asl #24
46012  and r10,r1,#0x80000000 ;@ r10=N_flag
46013  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46014
46015;@ Save result:
46016  mov r1,r1,asr #24
46017;@ EaWrite: r1 into register[r11]:
46018  strb r1,[r7,r11,lsr #7]
46019
46020  ldrh r8,[r4],#2 ;@ Fetch next opcode
46021  subs r5,r5,#14 ;@ Subtract cycles
46022  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46023  b CycloneEnd
46024
46025;@ ---------- [c038] and.b $3333.w, d0 uses Opc038 ----------
46026Opc038:
46027;@ EaCalc : Get '$3333.w' into r0:
46028  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
46029;@ EaRead : Read '$3333.w' (address in r0) into r0:
46030  mov lr,pc
46031  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
46032
46033;@ EaCalc : Get register index into r11:
46034  and r11,r8,#0x0e00
46035;@ EaRead : Read register[r11] into r1:
46036  ldr r1,[r7,r11,lsr #7]
46037
46038;@ Do arithmetic:
46039  mov r0,r0,asl #24
46040  ands r1,r0,r1,asl #24
46041  and r10,r1,#0x80000000 ;@ r10=N_flag
46042  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46043
46044;@ Save result:
46045  mov r1,r1,asr #24
46046;@ EaWrite: r1 into register[r11]:
46047  strb r1,[r7,r11,lsr #7]
46048
46049  ldrh r8,[r4],#2 ;@ Fetch next opcode
46050  subs r5,r5,#12 ;@ Subtract cycles
46051  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46052  b CycloneEnd
46053
46054;@ ---------- [c039] and.b $33333333.l, d0 uses Opc039 ----------
46055Opc039:
46056;@ EaCalc : Get '$33333333.l' into r0:
46057  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
46058  ldrh r0,[r4],#2
46059  orr r0,r0,r2,lsl #16
46060;@ EaRead : Read '$33333333.l' (address in r0) into r0:
46061  mov lr,pc
46062  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
46063
46064;@ EaCalc : Get register index into r11:
46065  and r11,r8,#0x0e00
46066;@ EaRead : Read register[r11] into r1:
46067  ldr r1,[r7,r11,lsr #7]
46068
46069;@ Do arithmetic:
46070  mov r0,r0,asl #24
46071  ands r1,r0,r1,asl #24
46072  and r10,r1,#0x80000000 ;@ r10=N_flag
46073  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46074
46075;@ Save result:
46076  mov r1,r1,asr #24
46077;@ EaWrite: r1 into register[r11]:
46078  strb r1,[r7,r11,lsr #7]
46079
46080  ldrh r8,[r4],#2 ;@ Fetch next opcode
46081  subs r5,r5,#16 ;@ Subtract cycles
46082  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46083  b CycloneEnd
46084
46085;@ ---------- [c03a] and.b ($3333,pc), d0; =3335 uses Opc03a ----------
46086Opc03a:
46087;@ EaCalc : Get '($3333,pc)' into r0:
46088  ldr r0,[r7,#0x60] ;@ Get Memory base
46089  sub r0,r4,r0 ;@ Real PC
46090  ldrsh r2,[r4],#2 ;@ Fetch extension
46091  add r0,r2,r0 ;@ ($nn,PC)
46092;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
46093  mov lr,pc
46094  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
46095
46096;@ EaCalc : Get register index into r11:
46097  and r11,r8,#0x0e00
46098;@ EaRead : Read register[r11] into r1:
46099  ldr r1,[r7,r11,lsr #7]
46100
46101;@ Do arithmetic:
46102  mov r0,r0,asl #24
46103  ands r1,r0,r1,asl #24
46104  and r10,r1,#0x80000000 ;@ r10=N_flag
46105  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46106
46107;@ Save result:
46108  mov r1,r1,asr #24
46109;@ EaWrite: r1 into register[r11]:
46110  strb r1,[r7,r11,lsr #7]
46111
46112  ldrh r8,[r4],#2 ;@ Fetch next opcode
46113  subs r5,r5,#12 ;@ Subtract cycles
46114  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46115  b CycloneEnd
46116
46117;@ ---------- [c03b] and.b ($33,pc,d3.w*2), d0; =35 uses Opc03b ----------
46118Opc03b:
46119;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
46120  ldr r0,[r7,#0x60] ;@ Get Memory base
46121  ldrh r3,[r4] ;@ Get extension word
46122  sub r0,r4,r0 ;@ r0=PC
46123  add r4,r4,#2
46124  mov r2,r3,lsr #10
46125  tst r3,#0x0800 ;@ Is Rn Word or Long
46126  and r2,r2,#0x3c ;@ r2=Index of Rn
46127  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
46128  ldrne   r2,[r7,r2] ;@ r2=Rn.l
46129  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
46130  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
46131  add r0,r2,r0 ;@ r0=Disp+PC+Rn
46132;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
46133  mov lr,pc
46134  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
46135
46136;@ EaCalc : Get register index into r11:
46137  and r11,r8,#0x0e00
46138;@ EaRead : Read register[r11] into r1:
46139  ldr r1,[r7,r11,lsr #7]
46140
46141;@ Do arithmetic:
46142  mov r0,r0,asl #24
46143  ands r1,r0,r1,asl #24
46144  and r10,r1,#0x80000000 ;@ r10=N_flag
46145  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46146
46147;@ Save result:
46148  mov r1,r1,asr #24
46149;@ EaWrite: r1 into register[r11]:
46150  strb r1,[r7,r11,lsr #7]
46151
46152  ldrh r8,[r4],#2 ;@ Fetch next opcode
46153  subs r5,r5,#14 ;@ Subtract cycles
46154  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46155  b CycloneEnd
46156
46157;@ ---------- [c03c] and.b #$33, d0 uses Opc03c ----------
46158Opc03c:
46159;@ EaCalc : Get '#$33' into r0:
46160  ldrsb r0,[r4],#2 ;@ Fetch immediate value
46161;@ EaRead : Read '#$33' (address in r0) into r0:
46162
46163;@ EaCalc : Get register index into r11:
46164  and r11,r8,#0x0e00
46165;@ EaRead : Read register[r11] into r1:
46166  ldr r1,[r7,r11,lsr #7]
46167
46168;@ Do arithmetic:
46169  mov r0,r0,asl #24
46170  ands r1,r0,r1,asl #24
46171  and r10,r1,#0x80000000 ;@ r10=N_flag
46172  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46173
46174;@ Save result:
46175  mov r1,r1,asr #24
46176;@ EaWrite: r1 into register[r11]:
46177  strb r1,[r7,r11,lsr #7]
46178
46179  ldrh r8,[r4],#2 ;@ Fetch next opcode
46180  subs r5,r5,#8 ;@ Subtract cycles
46181  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46182  b CycloneEnd
46183
46184;@ ---------- [c050] and.w (a0), d0 uses Opc050 ----------
46185Opc050:
46186;@ EaCalc : Get '(a0)' into r0:
46187  and r2,r8,#0x000f
46188  orr r2,r2,#0x8 ;@ A0-7
46189  ldr r0,[r7,r2,lsl #2]
46190;@ EaRead : Read '(a0)' (address in r0) into r0:
46191  mov lr,pc
46192  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
46193
46194;@ EaCalc : Get register index into r11:
46195  and r11,r8,#0x0e00
46196  mov r11,r11,lsr #7
46197;@ EaRead : Read register[r11] into r1:
46198  ldr r1,[r7,r11]
46199
46200;@ Do arithmetic:
46201  mov r0,r0,asl #16
46202  ands r1,r0,r1,asl #16
46203  and r10,r1,#0x80000000 ;@ r10=N_flag
46204  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46205
46206;@ Save result:
46207  mov r1,r1,asr #16
46208;@ EaWrite: r1 into register[r11]:
46209  strh r1,[r7,r11]
46210
46211  ldrh r8,[r4],#2 ;@ Fetch next opcode
46212  subs r5,r5,#8 ;@ Subtract cycles
46213  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46214  b CycloneEnd
46215
46216;@ ---------- [c058] and.w (a0)+, d0 uses Opc058 ----------
46217Opc058:
46218;@ EaCalc : Get '(a0)+' into r0:
46219  and r2,r8,#0x000f
46220  ldr r0,[r7,r2,lsl #2]
46221  add r3,r0,#2 ;@ Post-increment An
46222  str r3,[r7,r2,lsl #2]
46223;@ EaRead : Read '(a0)+' (address in r0) into r0:
46224  mov lr,pc
46225  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
46226
46227;@ EaCalc : Get register index into r11:
46228  and r11,r8,#0x0e00
46229  mov r11,r11,lsr #7
46230;@ EaRead : Read register[r11] into r1:
46231  ldr r1,[r7,r11]
46232
46233;@ Do arithmetic:
46234  mov r0,r0,asl #16
46235  ands r1,r0,r1,asl #16
46236  and r10,r1,#0x80000000 ;@ r10=N_flag
46237  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46238
46239;@ Save result:
46240  mov r1,r1,asr #16
46241;@ EaWrite: r1 into register[r11]:
46242  strh r1,[r7,r11]
46243
46244  ldrh r8,[r4],#2 ;@ Fetch next opcode
46245  subs r5,r5,#8 ;@ Subtract cycles
46246  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46247  b CycloneEnd
46248
46249;@ ---------- [c060] and.w -(a0), d0 uses Opc060 ----------
46250Opc060:
46251;@ EaCalc : Get '-(a0)' into r0:
46252  and r2,r8,#0x000f
46253  orr r2,r2,#0x8 ;@ A0-7
46254  ldr r0,[r7,r2,lsl #2]
46255  sub r0,r0,#2 ;@ Pre-decrement An
46256  str r0,[r7,r2,lsl #2]
46257;@ EaRead : Read '-(a0)' (address in r0) into r0:
46258  mov lr,pc
46259  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
46260
46261;@ EaCalc : Get register index into r11:
46262  and r11,r8,#0x0e00
46263  mov r11,r11,lsr #7
46264;@ EaRead : Read register[r11] into r1:
46265  ldr r1,[r7,r11]
46266
46267;@ Do arithmetic:
46268  mov r0,r0,asl #16
46269  ands r1,r0,r1,asl #16
46270  and r10,r1,#0x80000000 ;@ r10=N_flag
46271  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46272
46273;@ Save result:
46274  mov r1,r1,asr #16
46275;@ EaWrite: r1 into register[r11]:
46276  strh r1,[r7,r11]
46277
46278  ldrh r8,[r4],#2 ;@ Fetch next opcode
46279  subs r5,r5,#10 ;@ Subtract cycles
46280  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46281  b CycloneEnd
46282
46283;@ ---------- [c068] and.w ($3333,a0), d0 uses Opc068 ----------
46284Opc068:
46285;@ EaCalc : Get '($3333,a0)' into r0:
46286  ldrsh r0,[r4],#2 ;@ Fetch offset
46287  and r2,r8,#0x000f
46288  ldr r2,[r7,r2,lsl #2]
46289  add r0,r0,r2 ;@ Add on offset
46290;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
46291  mov lr,pc
46292  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
46293
46294;@ EaCalc : Get register index into r11:
46295  and r11,r8,#0x0e00
46296  mov r11,r11,lsr #7
46297;@ EaRead : Read register[r11] into r1:
46298  ldr r1,[r7,r11]
46299
46300;@ Do arithmetic:
46301  mov r0,r0,asl #16
46302  ands r1,r0,r1,asl #16
46303  and r10,r1,#0x80000000 ;@ r10=N_flag
46304  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46305
46306;@ Save result:
46307  mov r1,r1,asr #16
46308;@ EaWrite: r1 into register[r11]:
46309  strh r1,[r7,r11]
46310
46311  ldrh r8,[r4],#2 ;@ Fetch next opcode
46312  subs r5,r5,#12 ;@ Subtract cycles
46313  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46314  b CycloneEnd
46315
46316;@ ---------- [c070] and.w ($33,a0,d3.w*2), d0 uses Opc070 ----------
46317Opc070:
46318;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
46319;@ Get extension word into r3:
46320  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
46321  mov r2,r3,lsr #10
46322  tst r3,#0x0800 ;@ Is Rn Word or Long
46323  and r2,r2,#0x3c ;@ r2=Index of Rn
46324  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
46325  ldrne   r2,[r7,r2] ;@ r2=Rn.l
46326  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
46327  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
46328  and r2,r8,#0x000f
46329  orr r2,r2,#0x8 ;@ A0-7
46330  ldr r2,[r7,r2,lsl #2]
46331  add r0,r2,r3 ;@ r0=Disp+An+Rn
46332;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
46333  mov lr,pc
46334  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
46335
46336;@ EaCalc : Get register index into r11:
46337  and r11,r8,#0x0e00
46338  mov r11,r11,lsr #7
46339;@ EaRead : Read register[r11] into r1:
46340  ldr r1,[r7,r11]
46341
46342;@ Do arithmetic:
46343  mov r0,r0,asl #16
46344  ands r1,r0,r1,asl #16
46345  and r10,r1,#0x80000000 ;@ r10=N_flag
46346  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46347
46348;@ Save result:
46349  mov r1,r1,asr #16
46350;@ EaWrite: r1 into register[r11]:
46351  strh r1,[r7,r11]
46352
46353  ldrh r8,[r4],#2 ;@ Fetch next opcode
46354  subs r5,r5,#14 ;@ Subtract cycles
46355  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46356  b CycloneEnd
46357
46358;@ ---------- [c078] and.w $3333.w, d0 uses Opc078 ----------
46359Opc078:
46360;@ EaCalc : Get '$3333.w' into r0:
46361  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
46362;@ EaRead : Read '$3333.w' (address in r0) into r0:
46363  mov lr,pc
46364  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
46365
46366;@ EaCalc : Get register index into r11:
46367  and r11,r8,#0x0e00
46368  mov r11,r11,lsr #7
46369;@ EaRead : Read register[r11] into r1:
46370  ldr r1,[r7,r11]
46371
46372;@ Do arithmetic:
46373  mov r0,r0,asl #16
46374  ands r1,r0,r1,asl #16
46375  and r10,r1,#0x80000000 ;@ r10=N_flag
46376  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46377
46378;@ Save result:
46379  mov r1,r1,asr #16
46380;@ EaWrite: r1 into register[r11]:
46381  strh r1,[r7,r11]
46382
46383  ldrh r8,[r4],#2 ;@ Fetch next opcode
46384  subs r5,r5,#12 ;@ Subtract cycles
46385  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46386  b CycloneEnd
46387
46388;@ ---------- [c079] and.w $33333333.l, d0 uses Opc079 ----------
46389Opc079:
46390;@ EaCalc : Get '$33333333.l' into r0:
46391  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
46392  ldrh r0,[r4],#2
46393  orr r0,r0,r2,lsl #16
46394;@ EaRead : Read '$33333333.l' (address in r0) into r0:
46395  mov lr,pc
46396  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
46397
46398;@ EaCalc : Get register index into r11:
46399  and r11,r8,#0x0e00
46400  mov r11,r11,lsr #7
46401;@ EaRead : Read register[r11] into r1:
46402  ldr r1,[r7,r11]
46403
46404;@ Do arithmetic:
46405  mov r0,r0,asl #16
46406  ands r1,r0,r1,asl #16
46407  and r10,r1,#0x80000000 ;@ r10=N_flag
46408  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46409
46410;@ Save result:
46411  mov r1,r1,asr #16
46412;@ EaWrite: r1 into register[r11]:
46413  strh r1,[r7,r11]
46414
46415  ldrh r8,[r4],#2 ;@ Fetch next opcode
46416  subs r5,r5,#16 ;@ Subtract cycles
46417  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46418  b CycloneEnd
46419
46420;@ ---------- [c07a] and.w ($3333,pc), d0; =3335 uses Opc07a ----------
46421Opc07a:
46422;@ EaCalc : Get '($3333,pc)' into r0:
46423  ldr r0,[r7,#0x60] ;@ Get Memory base
46424  sub r0,r4,r0 ;@ Real PC
46425  ldrsh r2,[r4],#2 ;@ Fetch extension
46426  add r0,r2,r0 ;@ ($nn,PC)
46427;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
46428  mov lr,pc
46429  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
46430
46431;@ EaCalc : Get register index into r11:
46432  and r11,r8,#0x0e00
46433  mov r11,r11,lsr #7
46434;@ EaRead : Read register[r11] into r1:
46435  ldr r1,[r7,r11]
46436
46437;@ Do arithmetic:
46438  mov r0,r0,asl #16
46439  ands r1,r0,r1,asl #16
46440  and r10,r1,#0x80000000 ;@ r10=N_flag
46441  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46442
46443;@ Save result:
46444  mov r1,r1,asr #16
46445;@ EaWrite: r1 into register[r11]:
46446  strh r1,[r7,r11]
46447
46448  ldrh r8,[r4],#2 ;@ Fetch next opcode
46449  subs r5,r5,#12 ;@ Subtract cycles
46450  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46451  b CycloneEnd
46452
46453;@ ---------- [c07b] and.w ($33,pc,d3.w*2), d0; =35 uses Opc07b ----------
46454Opc07b:
46455;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
46456  ldr r0,[r7,#0x60] ;@ Get Memory base
46457  ldrh r3,[r4] ;@ Get extension word
46458  sub r0,r4,r0 ;@ r0=PC
46459  add r4,r4,#2
46460  mov r2,r3,lsr #10
46461  tst r3,#0x0800 ;@ Is Rn Word or Long
46462  and r2,r2,#0x3c ;@ r2=Index of Rn
46463  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
46464  ldrne   r2,[r7,r2] ;@ r2=Rn.l
46465  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
46466  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
46467  add r0,r2,r0 ;@ r0=Disp+PC+Rn
46468;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
46469  mov lr,pc
46470  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
46471
46472;@ EaCalc : Get register index into r11:
46473  and r11,r8,#0x0e00
46474  mov r11,r11,lsr #7
46475;@ EaRead : Read register[r11] into r1:
46476  ldr r1,[r7,r11]
46477
46478;@ Do arithmetic:
46479  mov r0,r0,asl #16
46480  ands r1,r0,r1,asl #16
46481  and r10,r1,#0x80000000 ;@ r10=N_flag
46482  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46483
46484;@ Save result:
46485  mov r1,r1,asr #16
46486;@ EaWrite: r1 into register[r11]:
46487  strh r1,[r7,r11]
46488
46489  ldrh r8,[r4],#2 ;@ Fetch next opcode
46490  subs r5,r5,#14 ;@ Subtract cycles
46491  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46492  b CycloneEnd
46493
46494;@ ---------- [c07c] and.w #$3333, d0 uses Opc07c ----------
46495Opc07c:
46496;@ EaCalc : Get '#$3333' into r0:
46497  ldrsh r0,[r4],#2 ;@ Fetch immediate value
46498;@ EaRead : Read '#$3333' (address in r0) into r0:
46499
46500;@ EaCalc : Get register index into r11:
46501  and r11,r8,#0x0e00
46502  mov r11,r11,lsr #7
46503;@ EaRead : Read register[r11] into r1:
46504  ldr r1,[r7,r11]
46505
46506;@ Do arithmetic:
46507  mov r0,r0,asl #16
46508  ands r1,r0,r1,asl #16
46509  and r10,r1,#0x80000000 ;@ r10=N_flag
46510  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46511
46512;@ Save result:
46513  mov r1,r1,asr #16
46514;@ EaWrite: r1 into register[r11]:
46515  strh r1,[r7,r11]
46516
46517  ldrh r8,[r4],#2 ;@ Fetch next opcode
46518  subs r5,r5,#8 ;@ Subtract cycles
46519  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46520  b CycloneEnd
46521
46522;@ ---------- [c080] and.l d0, d0 uses Opc080 ----------
46523Opc080:
46524;@ EaCalc : Get register index into r0:
46525  and r0,r8,#0x000f
46526;@ EaRead : Read register[r0] into r0:
46527  ldr r0,[r7,r0,lsl #2]
46528
46529;@ EaCalc : Get register index into r11:
46530  and r11,r8,#0x0e00
46531;@ EaRead : Read register[r11] into r1:
46532  ldr r1,[r7,r11,lsr #7]
46533
46534;@ Do arithmetic:
46535  ands r1,r0,r1
46536  and r10,r1,#0x80000000 ;@ r10=N_flag
46537  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46538
46539;@ Save result:
46540;@ EaWrite: r1 into register[r11]:
46541  str r1,[r7,r11,lsr #7]
46542
46543  ldrh r8,[r4],#2 ;@ Fetch next opcode
46544  subs r5,r5,#8 ;@ Subtract cycles
46545  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46546  b CycloneEnd
46547
46548;@ ---------- [c090] and.l (a0), d0 uses Opc090 ----------
46549Opc090:
46550;@ EaCalc : Get '(a0)' into r0:
46551  and r2,r8,#0x000f
46552  orr r2,r2,#0x8 ;@ A0-7
46553  ldr r0,[r7,r2,lsl #2]
46554;@ EaRead : Read '(a0)' (address in r0) into r0:
46555  mov lr,pc
46556  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
46557
46558;@ EaCalc : Get register index into r11:
46559  and r11,r8,#0x0e00
46560;@ EaRead : Read register[r11] into r1:
46561  ldr r1,[r7,r11,lsr #7]
46562
46563;@ Do arithmetic:
46564  ands r1,r0,r1
46565  and r10,r1,#0x80000000 ;@ r10=N_flag
46566  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46567
46568;@ Save result:
46569;@ EaWrite: r1 into register[r11]:
46570  str r1,[r7,r11,lsr #7]
46571
46572  ldrh r8,[r4],#2 ;@ Fetch next opcode
46573  subs r5,r5,#14 ;@ Subtract cycles
46574  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46575  b CycloneEnd
46576
46577;@ ---------- [c098] and.l (a0)+, d0 uses Opc098 ----------
46578Opc098:
46579;@ EaCalc : Get '(a0)+' into r0:
46580  and r2,r8,#0x000f
46581  ldr r0,[r7,r2,lsl #2]
46582  add r3,r0,#4 ;@ Post-increment An
46583  str r3,[r7,r2,lsl #2]
46584;@ EaRead : Read '(a0)+' (address in r0) into r0:
46585  mov lr,pc
46586  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
46587
46588;@ EaCalc : Get register index into r11:
46589  and r11,r8,#0x0e00
46590;@ EaRead : Read register[r11] into r1:
46591  ldr r1,[r7,r11,lsr #7]
46592
46593;@ Do arithmetic:
46594  ands r1,r0,r1
46595  and r10,r1,#0x80000000 ;@ r10=N_flag
46596  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46597
46598;@ Save result:
46599;@ EaWrite: r1 into register[r11]:
46600  str r1,[r7,r11,lsr #7]
46601
46602  ldrh r8,[r4],#2 ;@ Fetch next opcode
46603  subs r5,r5,#14 ;@ Subtract cycles
46604  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46605  b CycloneEnd
46606
46607;@ ---------- [c0a0] and.l -(a0), d0 uses Opc0a0 ----------
46608Opc0a0:
46609;@ EaCalc : Get '-(a0)' into r0:
46610  and r2,r8,#0x000f
46611  orr r2,r2,#0x8 ;@ A0-7
46612  ldr r0,[r7,r2,lsl #2]
46613  sub r0,r0,#4 ;@ Pre-decrement An
46614  str r0,[r7,r2,lsl #2]
46615;@ EaRead : Read '-(a0)' (address in r0) into r0:
46616  mov lr,pc
46617  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
46618
46619;@ EaCalc : Get register index into r11:
46620  and r11,r8,#0x0e00
46621;@ EaRead : Read register[r11] into r1:
46622  ldr r1,[r7,r11,lsr #7]
46623
46624;@ Do arithmetic:
46625  ands r1,r0,r1
46626  and r10,r1,#0x80000000 ;@ r10=N_flag
46627  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46628
46629;@ Save result:
46630;@ EaWrite: r1 into register[r11]:
46631  str r1,[r7,r11,lsr #7]
46632
46633  ldrh r8,[r4],#2 ;@ Fetch next opcode
46634  subs r5,r5,#16 ;@ Subtract cycles
46635  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46636  b CycloneEnd
46637
46638;@ ---------- [c0a8] and.l ($3333,a0), d0 uses Opc0a8 ----------
46639Opc0a8:
46640;@ EaCalc : Get '($3333,a0)' into r0:
46641  ldrsh r0,[r4],#2 ;@ Fetch offset
46642  and r2,r8,#0x000f
46643  ldr r2,[r7,r2,lsl #2]
46644  add r0,r0,r2 ;@ Add on offset
46645;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
46646  mov lr,pc
46647  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
46648
46649;@ EaCalc : Get register index into r11:
46650  and r11,r8,#0x0e00
46651;@ EaRead : Read register[r11] into r1:
46652  ldr r1,[r7,r11,lsr #7]
46653
46654;@ Do arithmetic:
46655  ands r1,r0,r1
46656  and r10,r1,#0x80000000 ;@ r10=N_flag
46657  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46658
46659;@ Save result:
46660;@ EaWrite: r1 into register[r11]:
46661  str r1,[r7,r11,lsr #7]
46662
46663  ldrh r8,[r4],#2 ;@ Fetch next opcode
46664  subs r5,r5,#18 ;@ Subtract cycles
46665  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46666  b CycloneEnd
46667
46668;@ ---------- [c0b0] and.l ($33,a0,d3.w*2), d0 uses Opc0b0 ----------
46669Opc0b0:
46670;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
46671;@ Get extension word into r3:
46672  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
46673  mov r2,r3,lsr #10
46674  tst r3,#0x0800 ;@ Is Rn Word or Long
46675  and r2,r2,#0x3c ;@ r2=Index of Rn
46676  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
46677  ldrne   r2,[r7,r2] ;@ r2=Rn.l
46678  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
46679  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
46680  and r2,r8,#0x000f
46681  orr r2,r2,#0x8 ;@ A0-7
46682  ldr r2,[r7,r2,lsl #2]
46683  add r0,r2,r3 ;@ r0=Disp+An+Rn
46684;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
46685  mov lr,pc
46686  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
46687
46688;@ EaCalc : Get register index into r11:
46689  and r11,r8,#0x0e00
46690;@ EaRead : Read register[r11] into r1:
46691  ldr r1,[r7,r11,lsr #7]
46692
46693;@ Do arithmetic:
46694  ands r1,r0,r1
46695  and r10,r1,#0x80000000 ;@ r10=N_flag
46696  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46697
46698;@ Save result:
46699;@ EaWrite: r1 into register[r11]:
46700  str r1,[r7,r11,lsr #7]
46701
46702  ldrh r8,[r4],#2 ;@ Fetch next opcode
46703  subs r5,r5,#20 ;@ Subtract cycles
46704  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46705  b CycloneEnd
46706
46707;@ ---------- [c0b8] and.l $3333.w, d0 uses Opc0b8 ----------
46708Opc0b8:
46709;@ EaCalc : Get '$3333.w' into r0:
46710  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
46711;@ EaRead : Read '$3333.w' (address in r0) into r0:
46712  mov lr,pc
46713  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
46714
46715;@ EaCalc : Get register index into r11:
46716  and r11,r8,#0x0e00
46717;@ EaRead : Read register[r11] into r1:
46718  ldr r1,[r7,r11,lsr #7]
46719
46720;@ Do arithmetic:
46721  ands r1,r0,r1
46722  and r10,r1,#0x80000000 ;@ r10=N_flag
46723  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46724
46725;@ Save result:
46726;@ EaWrite: r1 into register[r11]:
46727  str r1,[r7,r11,lsr #7]
46728
46729  ldrh r8,[r4],#2 ;@ Fetch next opcode
46730  subs r5,r5,#18 ;@ Subtract cycles
46731  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46732  b CycloneEnd
46733
46734;@ ---------- [c0b9] and.l $33333333.l, d0 uses Opc0b9 ----------
46735Opc0b9:
46736;@ EaCalc : Get '$33333333.l' into r0:
46737  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
46738  ldrh r0,[r4],#2
46739  orr r0,r0,r2,lsl #16
46740;@ EaRead : Read '$33333333.l' (address in r0) into r0:
46741  mov lr,pc
46742  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
46743
46744;@ EaCalc : Get register index into r11:
46745  and r11,r8,#0x0e00
46746;@ EaRead : Read register[r11] into r1:
46747  ldr r1,[r7,r11,lsr #7]
46748
46749;@ Do arithmetic:
46750  ands r1,r0,r1
46751  and r10,r1,#0x80000000 ;@ r10=N_flag
46752  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46753
46754;@ Save result:
46755;@ EaWrite: r1 into register[r11]:
46756  str r1,[r7,r11,lsr #7]
46757
46758  ldrh r8,[r4],#2 ;@ Fetch next opcode
46759  subs r5,r5,#22 ;@ Subtract cycles
46760  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46761  b CycloneEnd
46762
46763;@ ---------- [c0ba] and.l ($3333,pc), d0; =3335 uses Opc0ba ----------
46764Opc0ba:
46765;@ EaCalc : Get '($3333,pc)' into r0:
46766  ldr r0,[r7,#0x60] ;@ Get Memory base
46767  sub r0,r4,r0 ;@ Real PC
46768  ldrsh r2,[r4],#2 ;@ Fetch extension
46769  add r0,r2,r0 ;@ ($nn,PC)
46770;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
46771  mov lr,pc
46772  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
46773
46774;@ EaCalc : Get register index into r11:
46775  and r11,r8,#0x0e00
46776;@ EaRead : Read register[r11] into r1:
46777  ldr r1,[r7,r11,lsr #7]
46778
46779;@ Do arithmetic:
46780  ands r1,r0,r1
46781  and r10,r1,#0x80000000 ;@ r10=N_flag
46782  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46783
46784;@ Save result:
46785;@ EaWrite: r1 into register[r11]:
46786  str r1,[r7,r11,lsr #7]
46787
46788  ldrh r8,[r4],#2 ;@ Fetch next opcode
46789  subs r5,r5,#18 ;@ Subtract cycles
46790  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46791  b CycloneEnd
46792
46793;@ ---------- [c0bb] and.l ($33,pc,d3.w*2), d0; =35 uses Opc0bb ----------
46794Opc0bb:
46795;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
46796  ldr r0,[r7,#0x60] ;@ Get Memory base
46797  ldrh r3,[r4] ;@ Get extension word
46798  sub r0,r4,r0 ;@ r0=PC
46799  add r4,r4,#2
46800  mov r2,r3,lsr #10
46801  tst r3,#0x0800 ;@ Is Rn Word or Long
46802  and r2,r2,#0x3c ;@ r2=Index of Rn
46803  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
46804  ldrne   r2,[r7,r2] ;@ r2=Rn.l
46805  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
46806  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
46807  add r0,r2,r0 ;@ r0=Disp+PC+Rn
46808;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
46809  mov lr,pc
46810  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
46811
46812;@ EaCalc : Get register index into r11:
46813  and r11,r8,#0x0e00
46814;@ EaRead : Read register[r11] into r1:
46815  ldr r1,[r7,r11,lsr #7]
46816
46817;@ Do arithmetic:
46818  ands r1,r0,r1
46819  and r10,r1,#0x80000000 ;@ r10=N_flag
46820  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46821
46822;@ Save result:
46823;@ EaWrite: r1 into register[r11]:
46824  str r1,[r7,r11,lsr #7]
46825
46826  ldrh r8,[r4],#2 ;@ Fetch next opcode
46827  subs r5,r5,#20 ;@ Subtract cycles
46828  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46829  b CycloneEnd
46830
46831;@ ---------- [c0bc] and.l #$33333333, d0 uses Opc0bc ----------
46832Opc0bc:
46833;@ EaCalc : Get '#$33333333' into r0:
46834  ldrh r2,[r4],#2 ;@ Fetch immediate value
46835  ldrh r3,[r4],#2
46836  orr r0,r3,r2,lsl #16
46837;@ EaRead : Read '#$33333333' (address in r0) into r0:
46838
46839;@ EaCalc : Get register index into r11:
46840  and r11,r8,#0x0e00
46841;@ EaRead : Read register[r11] into r1:
46842  ldr r1,[r7,r11,lsr #7]
46843
46844;@ Do arithmetic:
46845  ands r1,r0,r1
46846  and r10,r1,#0x80000000 ;@ r10=N_flag
46847  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46848
46849;@ Save result:
46850;@ EaWrite: r1 into register[r11]:
46851  str r1,[r7,r11,lsr #7]
46852
46853  ldrh r8,[r4],#2 ;@ Fetch next opcode
46854  subs r5,r5,#16 ;@ Subtract cycles
46855  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46856  b CycloneEnd
46857
46858;@ ---------- [c0c0] mulu.w d0, d0 uses Opc0c0 ----------
46859Opc0c0:
46860;@ EaCalc : Get register index into r0:
46861  and r0,r8,#0x000f
46862;@ EaRead : Read register[r0] into r0:
46863  ldr r0,[r7,r0,lsl #2]
46864
46865;@ EaCalc : Get register index into r11:
46866  and r11,r8,#0x0e00
46867;@ EaRead : Read register[r11] into r2:
46868  ldr r2,[r7,r11,lsr #7]
46869
46870  movs r1,r0,asl #16
46871;@ Get 16-bit signs right:
46872  mov r0,r1,lsr #16
46873  mov r2,r2,lsl #16
46874  mov r2,r2,lsr #16
46875
46876  muls r1,r2,r0
46877  and r10,r1,#0x80000000 ;@ r10=N_flag
46878  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46879
46880;@ EaWrite: r1 into register[r11]:
46881  str r1,[r7,r11,lsr #7]
46882
46883  ldrh r8,[r4],#2 ;@ Fetch next opcode
46884  subs r5,r5,#54 ;@ Subtract cycles
46885  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46886  b CycloneEnd
46887
46888;@ ---------- [c0d0] mulu.w (a0), d0 uses Opc0d0 ----------
46889Opc0d0:
46890;@ EaCalc : Get '(a0)' into r0:
46891  and r2,r8,#0x000f
46892  orr r2,r2,#0x8 ;@ A0-7
46893  ldr r0,[r7,r2,lsl #2]
46894;@ EaRead : Read '(a0)' (address in r0) into r0:
46895  mov lr,pc
46896  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
46897
46898;@ EaCalc : Get register index into r11:
46899  and r11,r8,#0x0e00
46900;@ EaRead : Read register[r11] into r2:
46901  ldr r2,[r7,r11,lsr #7]
46902
46903  movs r1,r0,asl #16
46904;@ Get 16-bit signs right:
46905  mov r0,r1,lsr #16
46906  mov r2,r2,lsl #16
46907  mov r2,r2,lsr #16
46908
46909  muls r1,r2,r0
46910  and r10,r1,#0x80000000 ;@ r10=N_flag
46911  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46912
46913;@ EaWrite: r1 into register[r11]:
46914  str r1,[r7,r11,lsr #7]
46915
46916  ldrh r8,[r4],#2 ;@ Fetch next opcode
46917  subs r5,r5,#58 ;@ Subtract cycles
46918  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46919  b CycloneEnd
46920
46921;@ ---------- [c0d8] mulu.w (a0)+, d0 uses Opc0d8 ----------
46922Opc0d8:
46923;@ EaCalc : Get '(a0)+' into r0:
46924  and r2,r8,#0x000f
46925  ldr r0,[r7,r2,lsl #2]
46926  add r3,r0,#2 ;@ Post-increment An
46927  str r3,[r7,r2,lsl #2]
46928;@ EaRead : Read '(a0)+' (address in r0) into r0:
46929  mov lr,pc
46930  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
46931
46932;@ EaCalc : Get register index into r11:
46933  and r11,r8,#0x0e00
46934;@ EaRead : Read register[r11] into r2:
46935  ldr r2,[r7,r11,lsr #7]
46936
46937  movs r1,r0,asl #16
46938;@ Get 16-bit signs right:
46939  mov r0,r1,lsr #16
46940  mov r2,r2,lsl #16
46941  mov r2,r2,lsr #16
46942
46943  muls r1,r2,r0
46944  and r10,r1,#0x80000000 ;@ r10=N_flag
46945  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46946
46947;@ EaWrite: r1 into register[r11]:
46948  str r1,[r7,r11,lsr #7]
46949
46950  ldrh r8,[r4],#2 ;@ Fetch next opcode
46951  subs r5,r5,#58 ;@ Subtract cycles
46952  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46953  b CycloneEnd
46954
46955;@ ---------- [c0e0] mulu.w -(a0), d0 uses Opc0e0 ----------
46956Opc0e0:
46957;@ EaCalc : Get '-(a0)' into r0:
46958  and r2,r8,#0x000f
46959  orr r2,r2,#0x8 ;@ A0-7
46960  ldr r0,[r7,r2,lsl #2]
46961  sub r0,r0,#2 ;@ Pre-decrement An
46962  str r0,[r7,r2,lsl #2]
46963;@ EaRead : Read '-(a0)' (address in r0) into r0:
46964  mov lr,pc
46965  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
46966
46967;@ EaCalc : Get register index into r11:
46968  and r11,r8,#0x0e00
46969;@ EaRead : Read register[r11] into r2:
46970  ldr r2,[r7,r11,lsr #7]
46971
46972  movs r1,r0,asl #16
46973;@ Get 16-bit signs right:
46974  mov r0,r1,lsr #16
46975  mov r2,r2,lsl #16
46976  mov r2,r2,lsr #16
46977
46978  muls r1,r2,r0
46979  and r10,r1,#0x80000000 ;@ r10=N_flag
46980  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
46981
46982;@ EaWrite: r1 into register[r11]:
46983  str r1,[r7,r11,lsr #7]
46984
46985  ldrh r8,[r4],#2 ;@ Fetch next opcode
46986  subs r5,r5,#60 ;@ Subtract cycles
46987  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
46988  b CycloneEnd
46989
46990;@ ---------- [c0e8] mulu.w ($3333,a0), d0 uses Opc0e8 ----------
46991Opc0e8:
46992;@ EaCalc : Get '($3333,a0)' into r0:
46993  ldrsh r0,[r4],#2 ;@ Fetch offset
46994  and r2,r8,#0x000f
46995  ldr r2,[r7,r2,lsl #2]
46996  add r0,r0,r2 ;@ Add on offset
46997;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
46998  mov lr,pc
46999  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
47000
47001;@ EaCalc : Get register index into r11:
47002  and r11,r8,#0x0e00
47003;@ EaRead : Read register[r11] into r2:
47004  ldr r2,[r7,r11,lsr #7]
47005
47006  movs r1,r0,asl #16
47007;@ Get 16-bit signs right:
47008  mov r0,r1,lsr #16
47009  mov r2,r2,lsl #16
47010  mov r2,r2,lsr #16
47011
47012  muls r1,r2,r0
47013  and r10,r1,#0x80000000 ;@ r10=N_flag
47014  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47015
47016;@ EaWrite: r1 into register[r11]:
47017  str r1,[r7,r11,lsr #7]
47018
47019  ldrh r8,[r4],#2 ;@ Fetch next opcode
47020  subs r5,r5,#62 ;@ Subtract cycles
47021  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47022  b CycloneEnd
47023
47024;@ ---------- [c0f0] mulu.w ($33,a0,d3.w*2), d0 uses Opc0f0 ----------
47025Opc0f0:
47026;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
47027;@ Get extension word into r3:
47028  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
47029  mov r2,r3,lsr #10
47030  tst r3,#0x0800 ;@ Is Rn Word or Long
47031  and r2,r2,#0x3c ;@ r2=Index of Rn
47032  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
47033  ldrne   r2,[r7,r2] ;@ r2=Rn.l
47034  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
47035  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
47036  and r2,r8,#0x000f
47037  orr r2,r2,#0x8 ;@ A0-7
47038  ldr r2,[r7,r2,lsl #2]
47039  add r0,r2,r3 ;@ r0=Disp+An+Rn
47040;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
47041  mov lr,pc
47042  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
47043
47044;@ EaCalc : Get register index into r11:
47045  and r11,r8,#0x0e00
47046;@ EaRead : Read register[r11] into r2:
47047  ldr r2,[r7,r11,lsr #7]
47048
47049  movs r1,r0,asl #16
47050;@ Get 16-bit signs right:
47051  mov r0,r1,lsr #16
47052  mov r2,r2,lsl #16
47053  mov r2,r2,lsr #16
47054
47055  muls r1,r2,r0
47056  and r10,r1,#0x80000000 ;@ r10=N_flag
47057  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47058
47059;@ EaWrite: r1 into register[r11]:
47060  str r1,[r7,r11,lsr #7]
47061
47062  ldrh r8,[r4],#2 ;@ Fetch next opcode
47063  subs r5,r5,#64 ;@ Subtract cycles
47064  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47065  b CycloneEnd
47066
47067;@ ---------- [c0f8] mulu.w $3333.w, d0 uses Opc0f8 ----------
47068Opc0f8:
47069;@ EaCalc : Get '$3333.w' into r0:
47070  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
47071;@ EaRead : Read '$3333.w' (address in r0) into r0:
47072  mov lr,pc
47073  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
47074
47075;@ EaCalc : Get register index into r11:
47076  and r11,r8,#0x0e00
47077;@ EaRead : Read register[r11] into r2:
47078  ldr r2,[r7,r11,lsr #7]
47079
47080  movs r1,r0,asl #16
47081;@ Get 16-bit signs right:
47082  mov r0,r1,lsr #16
47083  mov r2,r2,lsl #16
47084  mov r2,r2,lsr #16
47085
47086  muls r1,r2,r0
47087  and r10,r1,#0x80000000 ;@ r10=N_flag
47088  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47089
47090;@ EaWrite: r1 into register[r11]:
47091  str r1,[r7,r11,lsr #7]
47092
47093  ldrh r8,[r4],#2 ;@ Fetch next opcode
47094  subs r5,r5,#62 ;@ Subtract cycles
47095  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47096  b CycloneEnd
47097
47098;@ ---------- [c0f9] mulu.w $33333333.l, d0 uses Opc0f9 ----------
47099Opc0f9:
47100;@ EaCalc : Get '$33333333.l' into r0:
47101  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
47102  ldrh r0,[r4],#2
47103  orr r0,r0,r2,lsl #16
47104;@ EaRead : Read '$33333333.l' (address in r0) into r0:
47105  mov lr,pc
47106  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
47107
47108;@ EaCalc : Get register index into r11:
47109  and r11,r8,#0x0e00
47110;@ EaRead : Read register[r11] into r2:
47111  ldr r2,[r7,r11,lsr #7]
47112
47113  movs r1,r0,asl #16
47114;@ Get 16-bit signs right:
47115  mov r0,r1,lsr #16
47116  mov r2,r2,lsl #16
47117  mov r2,r2,lsr #16
47118
47119  muls r1,r2,r0
47120  and r10,r1,#0x80000000 ;@ r10=N_flag
47121  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47122
47123;@ EaWrite: r1 into register[r11]:
47124  str r1,[r7,r11,lsr #7]
47125
47126  ldrh r8,[r4],#2 ;@ Fetch next opcode
47127  subs r5,r5,#66 ;@ Subtract cycles
47128  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47129  b CycloneEnd
47130
47131;@ ---------- [c0fa] mulu.w ($3333,pc), d0; =3335 uses Opc0fa ----------
47132Opc0fa:
47133;@ EaCalc : Get '($3333,pc)' into r0:
47134  ldr r0,[r7,#0x60] ;@ Get Memory base
47135  sub r0,r4,r0 ;@ Real PC
47136  ldrsh r2,[r4],#2 ;@ Fetch extension
47137  add r0,r2,r0 ;@ ($nn,PC)
47138;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
47139  mov lr,pc
47140  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
47141
47142;@ EaCalc : Get register index into r11:
47143  and r11,r8,#0x0e00
47144;@ EaRead : Read register[r11] into r2:
47145  ldr r2,[r7,r11,lsr #7]
47146
47147  movs r1,r0,asl #16
47148;@ Get 16-bit signs right:
47149  mov r0,r1,lsr #16
47150  mov r2,r2,lsl #16
47151  mov r2,r2,lsr #16
47152
47153  muls r1,r2,r0
47154  and r10,r1,#0x80000000 ;@ r10=N_flag
47155  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47156
47157;@ EaWrite: r1 into register[r11]:
47158  str r1,[r7,r11,lsr #7]
47159
47160  ldrh r8,[r4],#2 ;@ Fetch next opcode
47161  subs r5,r5,#62 ;@ Subtract cycles
47162  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47163  b CycloneEnd
47164
47165;@ ---------- [c0fb] mulu.w ($33,pc,d3.w*2), d0; =35 uses Opc0fb ----------
47166Opc0fb:
47167;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
47168  ldr r0,[r7,#0x60] ;@ Get Memory base
47169  ldrh r3,[r4] ;@ Get extension word
47170  sub r0,r4,r0 ;@ r0=PC
47171  add r4,r4,#2
47172  mov r2,r3,lsr #10
47173  tst r3,#0x0800 ;@ Is Rn Word or Long
47174  and r2,r2,#0x3c ;@ r2=Index of Rn
47175  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
47176  ldrne   r2,[r7,r2] ;@ r2=Rn.l
47177  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
47178  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
47179  add r0,r2,r0 ;@ r0=Disp+PC+Rn
47180;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
47181  mov lr,pc
47182  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
47183
47184;@ EaCalc : Get register index into r11:
47185  and r11,r8,#0x0e00
47186;@ EaRead : Read register[r11] into r2:
47187  ldr r2,[r7,r11,lsr #7]
47188
47189  movs r1,r0,asl #16
47190;@ Get 16-bit signs right:
47191  mov r0,r1,lsr #16
47192  mov r2,r2,lsl #16
47193  mov r2,r2,lsr #16
47194
47195  muls r1,r2,r0
47196  and r10,r1,#0x80000000 ;@ r10=N_flag
47197  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47198
47199;@ EaWrite: r1 into register[r11]:
47200  str r1,[r7,r11,lsr #7]
47201
47202  ldrh r8,[r4],#2 ;@ Fetch next opcode
47203  subs r5,r5,#64 ;@ Subtract cycles
47204  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47205  b CycloneEnd
47206
47207;@ ---------- [c0fc] mulu.w #$3333, d0 uses Opc0fc ----------
47208Opc0fc:
47209;@ EaCalc : Get '#$3333' into r0:
47210  ldrsh r0,[r4],#2 ;@ Fetch immediate value
47211;@ EaRead : Read '#$3333' (address in r0) into r0:
47212
47213;@ EaCalc : Get register index into r11:
47214  and r11,r8,#0x0e00
47215;@ EaRead : Read register[r11] into r2:
47216  ldr r2,[r7,r11,lsr #7]
47217
47218  movs r1,r0,asl #16
47219;@ Get 16-bit signs right:
47220  mov r0,r1,lsr #16
47221  mov r2,r2,lsl #16
47222  mov r2,r2,lsr #16
47223
47224  muls r1,r2,r0
47225  and r10,r1,#0x80000000 ;@ r10=N_flag
47226  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47227
47228;@ EaWrite: r1 into register[r11]:
47229  str r1,[r7,r11,lsr #7]
47230
47231  ldrh r8,[r4],#2 ;@ Fetch next opcode
47232  subs r5,r5,#58 ;@ Subtract cycles
47233  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47234  b CycloneEnd
47235
47236;@ ---------- [c100] abcd d0, d0 uses Opc100 ----------
47237Opc100:
47238;@ Get src/dest reg vals
47239;@ EaCalc : Get register index into r6:
47240  and r6,r8,#0x0007
47241;@ EaRead : Read register[r6] into r6:
47242  ldr r6,[r7,r6,lsl #2]
47243
47244;@ EaCalc : Get register index into r11:
47245  and r11,r8,#0x0e00
47246;@ EaRead : Read register[r11] into r0:
47247  ldr r0,[r7,r11,lsr #7]
47248
47249  mov r6,r6,asl #24
47250  mov r1,r0,asl #24
47251
47252  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
47253  ldr r0,[r7,#0x4c] ;@ Get X bit
47254  mov r3,#0x00f00000
47255  and r2,r3,r1,lsr #4
47256  tst r0,#0x20000000
47257  and r0,r3,r6,lsr #4
47258  add r0,r0,r2
47259  addne r0,r0,#0x00100000
47260  cmp r0,#0x00900000
47261  addhi r0,r0,#0x00600000 ;@ Decimal adjust units
47262  mov r2,r1,lsr #28
47263  add r0,r0,r2,lsl #24
47264  mov r2,r6,lsr #28
47265  add r0,r0,r2,lsl #24
47266  cmp r0,#0x09900000
47267  orrhi r10,r10,#0x20000000 ;@ C
47268  subhi r0,r0,#0x0a000000
47269  movs r0,r0,lsl #4
47270  orrmi r10,r10,#0x90000000 ;@ Undefined N+V behavior
47271  bicne r10,r10,#0x40000000 ;@ Z flag
47272  str r10,[r7,#0x4c] ;@ Save X bit
47273
47274;@ EaWrite: r0 into register[r11]:
47275  mov r0,r0,lsr #24
47276  strb r0,[r7,r11,lsr #7]
47277
47278  ldr r6,[r7,#0x54]
47279  ldrh r8,[r4],#2 ;@ Fetch next opcode
47280  subs r5,r5,#6 ;@ Subtract cycles
47281  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47282  b CycloneEnd
47283
47284;@ ---------- [c108] abcd -(a0), -(a0) uses Opc108 ----------
47285Opc108:
47286;@ Get src/dest EA vals
47287;@ EaCalc : Get '-(a0)' into r0:
47288  and r2,r8,#0x000f
47289  ldr r0,[r7,r2,lsl #2]
47290  sub r0,r0,#1 ;@ Pre-decrement An
47291  str r0,[r7,r2,lsl #2]
47292;@ EaRead : Read '-(a0)' (address in r0) into r6:
47293  mov lr,pc
47294  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47295  mov r6,r0,asl #24
47296
47297;@ EaCalc : Get '-(a0)' into r11:
47298  and r2,r8,#0x0e00
47299  orr r2,r2,#0x1000 ;@ A0-7
47300  ldr r11,[r7,r2,lsr #7]
47301  sub r11,r11,#1 ;@ Pre-decrement An
47302  str r11,[r7,r2,lsr #7]
47303;@ EaRead : Read '-(a0)' (address in r11) into r0:
47304  add lr,pc,#4
47305  mov r0,r11
47306  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47307
47308  mov r1,r0,asl #24
47309
47310  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
47311  ldr r0,[r7,#0x4c] ;@ Get X bit
47312  mov r3,#0x00f00000
47313  and r2,r3,r1,lsr #4
47314  tst r0,#0x20000000
47315  and r0,r3,r6,lsr #4
47316  add r0,r0,r2
47317  addne r0,r0,#0x00100000
47318  cmp r0,#0x00900000
47319  addhi r0,r0,#0x00600000 ;@ Decimal adjust units
47320  mov r2,r1,lsr #28
47321  add r0,r0,r2,lsl #24
47322  mov r2,r6,lsr #28
47323  add r0,r0,r2,lsl #24
47324  cmp r0,#0x09900000
47325  orrhi r10,r10,#0x20000000 ;@ C
47326  subhi r0,r0,#0x0a000000
47327  movs r0,r0,lsl #4
47328  orrmi r10,r10,#0x90000000 ;@ Undefined N+V behavior
47329  bicne r10,r10,#0x40000000 ;@ Z flag
47330  str r10,[r7,#0x4c] ;@ Save X bit
47331
47332;@ EaWrite: Write r0 into '-(a0)' (address in r11):
47333  mov r1,r0,lsr #24
47334  add lr,pc,#4
47335  mov r0,r11
47336  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47337
47338  ldr r6,[r7,#0x54]
47339  ldrh r8,[r4],#2 ;@ Fetch next opcode
47340  subs r5,r5,#18 ;@ Subtract cycles
47341  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47342  b CycloneEnd
47343
47344;@ ---------- [c10f] abcd -(a7), -(a0) uses Opc10f ----------
47345Opc10f:
47346;@ Get src/dest EA vals
47347;@ EaCalc : Get '-(a7)' into r0:
47348  ldr r0,[r7,#0x3c] ;@ A7
47349  sub r0,r0,#2 ;@ Pre-decrement An
47350  str r0,[r7,#0x3c] ;@ A7
47351;@ EaRead : Read '-(a7)' (address in r0) into r6:
47352  mov lr,pc
47353  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47354  mov r6,r0,asl #24
47355
47356;@ EaCalc : Get '-(a0)' into r11:
47357  and r2,r8,#0x0e00
47358  orr r2,r2,#0x1000 ;@ A0-7
47359  ldr r11,[r7,r2,lsr #7]
47360  sub r11,r11,#1 ;@ Pre-decrement An
47361  str r11,[r7,r2,lsr #7]
47362;@ EaRead : Read '-(a0)' (address in r11) into r0:
47363  add lr,pc,#4
47364  mov r0,r11
47365  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47366
47367  mov r1,r0,asl #24
47368
47369  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
47370  ldr r0,[r7,#0x4c] ;@ Get X bit
47371  mov r3,#0x00f00000
47372  and r2,r3,r1,lsr #4
47373  tst r0,#0x20000000
47374  and r0,r3,r6,lsr #4
47375  add r0,r0,r2
47376  addne r0,r0,#0x00100000
47377  cmp r0,#0x00900000
47378  addhi r0,r0,#0x00600000 ;@ Decimal adjust units
47379  mov r2,r1,lsr #28
47380  add r0,r0,r2,lsl #24
47381  mov r2,r6,lsr #28
47382  add r0,r0,r2,lsl #24
47383  cmp r0,#0x09900000
47384  orrhi r10,r10,#0x20000000 ;@ C
47385  subhi r0,r0,#0x0a000000
47386  movs r0,r0,lsl #4
47387  orrmi r10,r10,#0x90000000 ;@ Undefined N+V behavior
47388  bicne r10,r10,#0x40000000 ;@ Z flag
47389  str r10,[r7,#0x4c] ;@ Save X bit
47390
47391;@ EaWrite: Write r0 into '-(a0)' (address in r11):
47392  mov r1,r0,lsr #24
47393  add lr,pc,#4
47394  mov r0,r11
47395  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47396
47397  ldr r6,[r7,#0x54]
47398  ldrh r8,[r4],#2 ;@ Fetch next opcode
47399  subs r5,r5,#18 ;@ Subtract cycles
47400  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47401  b CycloneEnd
47402
47403;@ ---------- [c110] and.b d0, (a0) uses Opc110 ----------
47404Opc110:
47405;@ EaCalc : Get '(a0)' into r11:
47406  and r2,r8,#0x000f
47407  orr r2,r2,#0x8 ;@ A0-7
47408  ldr r11,[r7,r2,lsl #2]
47409;@ EaRead : Read '(a0)' (address in r11) into r0:
47410  add lr,pc,#4
47411  mov r0,r11
47412  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47413
47414;@ EaCalc : Get register index into r1:
47415  and r1,r8,#0x0e00
47416;@ EaRead : Read register[r1] into r1:
47417  ldr r1,[r7,r1,lsr #7]
47418
47419;@ Do arithmetic:
47420  mov r0,r0,asl #24
47421  ands r1,r0,r1,asl #24
47422  and r10,r1,#0x80000000 ;@ r10=N_flag
47423  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47424
47425;@ Save result:
47426  mov r1,r1,asr #24
47427;@ EaWrite: Write r1 into '(a0)' (address in r11):
47428  and r1,r1,#0xff
47429  add lr,pc,#4
47430  mov r0,r11
47431  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47432
47433  ldrh r8,[r4],#2 ;@ Fetch next opcode
47434  subs r5,r5,#12 ;@ Subtract cycles
47435  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47436  b CycloneEnd
47437
47438;@ ---------- [c118] and.b d0, (a0)+ uses Opc118 ----------
47439Opc118:
47440;@ EaCalc : Get '(a0)+' into r11:
47441  and r2,r8,#0x000f
47442  ldr r11,[r7,r2,lsl #2]
47443  add r3,r11,#1 ;@ Post-increment An
47444  str r3,[r7,r2,lsl #2]
47445;@ EaRead : Read '(a0)+' (address in r11) into r0:
47446  add lr,pc,#4
47447  mov r0,r11
47448  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47449
47450;@ EaCalc : Get register index into r1:
47451  and r1,r8,#0x0e00
47452;@ EaRead : Read register[r1] into r1:
47453  ldr r1,[r7,r1,lsr #7]
47454
47455;@ Do arithmetic:
47456  mov r0,r0,asl #24
47457  ands r1,r0,r1,asl #24
47458  and r10,r1,#0x80000000 ;@ r10=N_flag
47459  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47460
47461;@ Save result:
47462  mov r1,r1,asr #24
47463;@ EaWrite: Write r1 into '(a0)+' (address in r11):
47464  and r1,r1,#0xff
47465  add lr,pc,#4
47466  mov r0,r11
47467  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47468
47469  ldrh r8,[r4],#2 ;@ Fetch next opcode
47470  subs r5,r5,#12 ;@ Subtract cycles
47471  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47472  b CycloneEnd
47473
47474;@ ---------- [c11f] and.b d0, (a7)+ uses Opc11f ----------
47475Opc11f:
47476;@ EaCalc : Get '(a7)+' into r11:
47477  ldr r11,[r7,#0x3c] ;@ A7
47478  add r3,r11,#2 ;@ Post-increment An
47479  str r3,[r7,#0x3c] ;@ A7
47480;@ EaRead : Read '(a7)+' (address in r11) into r0:
47481  add lr,pc,#4
47482  mov r0,r11
47483  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47484
47485;@ EaCalc : Get register index into r1:
47486  and r1,r8,#0x0e00
47487;@ EaRead : Read register[r1] into r1:
47488  ldr r1,[r7,r1,lsr #7]
47489
47490;@ Do arithmetic:
47491  mov r0,r0,asl #24
47492  ands r1,r0,r1,asl #24
47493  and r10,r1,#0x80000000 ;@ r10=N_flag
47494  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47495
47496;@ Save result:
47497  mov r1,r1,asr #24
47498;@ EaWrite: Write r1 into '(a7)+' (address in r11):
47499  and r1,r1,#0xff
47500  add lr,pc,#4
47501  mov r0,r11
47502  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47503
47504  ldrh r8,[r4],#2 ;@ Fetch next opcode
47505  subs r5,r5,#12 ;@ Subtract cycles
47506  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47507  b CycloneEnd
47508
47509;@ ---------- [c120] and.b d0, -(a0) uses Opc120 ----------
47510Opc120:
47511;@ EaCalc : Get '-(a0)' into r11:
47512  and r2,r8,#0x000f
47513  orr r2,r2,#0x8 ;@ A0-7
47514  ldr r11,[r7,r2,lsl #2]
47515  sub r11,r11,#1 ;@ Pre-decrement An
47516  str r11,[r7,r2,lsl #2]
47517;@ EaRead : Read '-(a0)' (address in r11) into r0:
47518  add lr,pc,#4
47519  mov r0,r11
47520  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47521
47522;@ EaCalc : Get register index into r1:
47523  and r1,r8,#0x0e00
47524;@ EaRead : Read register[r1] into r1:
47525  ldr r1,[r7,r1,lsr #7]
47526
47527;@ Do arithmetic:
47528  mov r0,r0,asl #24
47529  ands r1,r0,r1,asl #24
47530  and r10,r1,#0x80000000 ;@ r10=N_flag
47531  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47532
47533;@ Save result:
47534  mov r1,r1,asr #24
47535;@ EaWrite: Write r1 into '-(a0)' (address in r11):
47536  and r1,r1,#0xff
47537  add lr,pc,#4
47538  mov r0,r11
47539  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47540
47541  ldrh r8,[r4],#2 ;@ Fetch next opcode
47542  subs r5,r5,#14 ;@ Subtract cycles
47543  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47544  b CycloneEnd
47545
47546;@ ---------- [c127] and.b d0, -(a7) uses Opc127 ----------
47547Opc127:
47548;@ EaCalc : Get '-(a7)' into r11:
47549  ldr r11,[r7,#0x3c] ;@ A7
47550  sub r11,r11,#2 ;@ Pre-decrement An
47551  str r11,[r7,#0x3c] ;@ A7
47552;@ EaRead : Read '-(a7)' (address in r11) into r0:
47553  add lr,pc,#4
47554  mov r0,r11
47555  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47556
47557;@ EaCalc : Get register index into r1:
47558  and r1,r8,#0x0e00
47559;@ EaRead : Read register[r1] into r1:
47560  ldr r1,[r7,r1,lsr #7]
47561
47562;@ Do arithmetic:
47563  mov r0,r0,asl #24
47564  ands r1,r0,r1,asl #24
47565  and r10,r1,#0x80000000 ;@ r10=N_flag
47566  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47567
47568;@ Save result:
47569  mov r1,r1,asr #24
47570;@ EaWrite: Write r1 into '-(a7)' (address in r11):
47571  and r1,r1,#0xff
47572  add lr,pc,#4
47573  mov r0,r11
47574  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47575
47576  ldrh r8,[r4],#2 ;@ Fetch next opcode
47577  subs r5,r5,#14 ;@ Subtract cycles
47578  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47579  b CycloneEnd
47580
47581;@ ---------- [c128] and.b d0, ($3333,a0) uses Opc128 ----------
47582Opc128:
47583;@ EaCalc : Get '($3333,a0)' into r11:
47584  ldrsh r0,[r4],#2 ;@ Fetch offset
47585  and r2,r8,#0x000f
47586  ldr r2,[r7,r2,lsl #2]
47587  add r11,r0,r2 ;@ Add on offset
47588;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
47589  add lr,pc,#4
47590  mov r0,r11
47591  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47592
47593;@ EaCalc : Get register index into r1:
47594  and r1,r8,#0x0e00
47595;@ EaRead : Read register[r1] into r1:
47596  ldr r1,[r7,r1,lsr #7]
47597
47598;@ Do arithmetic:
47599  mov r0,r0,asl #24
47600  ands r1,r0,r1,asl #24
47601  and r10,r1,#0x80000000 ;@ r10=N_flag
47602  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47603
47604;@ Save result:
47605  mov r1,r1,asr #24
47606;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
47607  and r1,r1,#0xff
47608  add lr,pc,#4
47609  mov r0,r11
47610  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47611
47612  ldrh r8,[r4],#2 ;@ Fetch next opcode
47613  subs r5,r5,#16 ;@ Subtract cycles
47614  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47615  b CycloneEnd
47616
47617;@ ---------- [c130] and.b d0, ($33,a0,d3.w*2) uses Opc130 ----------
47618Opc130:
47619;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
47620;@ Get extension word into r3:
47621  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
47622  mov r2,r3,lsr #10
47623  tst r3,#0x0800 ;@ Is Rn Word or Long
47624  and r2,r2,#0x3c ;@ r2=Index of Rn
47625  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
47626  ldrne   r2,[r7,r2] ;@ r2=Rn.l
47627  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
47628  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
47629  and r2,r8,#0x000f
47630  orr r2,r2,#0x8 ;@ A0-7
47631  ldr r2,[r7,r2,lsl #2]
47632  add r11,r2,r3 ;@ r11=Disp+An+Rn
47633;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
47634  add lr,pc,#4
47635  mov r0,r11
47636  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47637
47638;@ EaCalc : Get register index into r1:
47639  and r1,r8,#0x0e00
47640;@ EaRead : Read register[r1] into r1:
47641  ldr r1,[r7,r1,lsr #7]
47642
47643;@ Do arithmetic:
47644  mov r0,r0,asl #24
47645  ands r1,r0,r1,asl #24
47646  and r10,r1,#0x80000000 ;@ r10=N_flag
47647  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47648
47649;@ Save result:
47650  mov r1,r1,asr #24
47651;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
47652  and r1,r1,#0xff
47653  add lr,pc,#4
47654  mov r0,r11
47655  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47656
47657  ldrh r8,[r4],#2 ;@ Fetch next opcode
47658  subs r5,r5,#18 ;@ Subtract cycles
47659  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47660  b CycloneEnd
47661
47662;@ ---------- [c138] and.b d0, $3333.w uses Opc138 ----------
47663Opc138:
47664;@ EaCalc : Get '$3333.w' into r11:
47665  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
47666;@ EaRead : Read '$3333.w' (address in r11) into r0:
47667  add lr,pc,#4
47668  mov r0,r11
47669  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47670
47671;@ EaCalc : Get register index into r1:
47672  and r1,r8,#0x0e00
47673;@ EaRead : Read register[r1] into r1:
47674  ldr r1,[r7,r1,lsr #7]
47675
47676;@ Do arithmetic:
47677  mov r0,r0,asl #24
47678  ands r1,r0,r1,asl #24
47679  and r10,r1,#0x80000000 ;@ r10=N_flag
47680  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47681
47682;@ Save result:
47683  mov r1,r1,asr #24
47684;@ EaWrite: Write r1 into '$3333.w' (address in r11):
47685  and r1,r1,#0xff
47686  add lr,pc,#4
47687  mov r0,r11
47688  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47689
47690  ldrh r8,[r4],#2 ;@ Fetch next opcode
47691  subs r5,r5,#16 ;@ Subtract cycles
47692  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47693  b CycloneEnd
47694
47695;@ ---------- [c139] and.b d0, $33333333.l uses Opc139 ----------
47696Opc139:
47697;@ EaCalc : Get '$33333333.l' into r11:
47698  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
47699  ldrh r0,[r4],#2
47700  orr r11,r0,r2,lsl #16
47701;@ EaRead : Read '$33333333.l' (address in r11) into r0:
47702  add lr,pc,#4
47703  mov r0,r11
47704  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
47705
47706;@ EaCalc : Get register index into r1:
47707  and r1,r8,#0x0e00
47708;@ EaRead : Read register[r1] into r1:
47709  ldr r1,[r7,r1,lsr #7]
47710
47711;@ Do arithmetic:
47712  mov r0,r0,asl #24
47713  ands r1,r0,r1,asl #24
47714  and r10,r1,#0x80000000 ;@ r10=N_flag
47715  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47716
47717;@ Save result:
47718  mov r1,r1,asr #24
47719;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
47720  and r1,r1,#0xff
47721  add lr,pc,#4
47722  mov r0,r11
47723  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
47724
47725  ldrh r8,[r4],#2 ;@ Fetch next opcode
47726  subs r5,r5,#20 ;@ Subtract cycles
47727  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47728  b CycloneEnd
47729
47730;@ ---------- [c140] exg d0, d0 uses Opc140 ----------
47731Opc140:
47732  and r2,r8,#0x0e00 ;@ Find T register
47733  and r3,r8,#0x000f ;@ Find S register
47734
47735  ldr r0,[r7,r2,lsr #7] ;@ Get T
47736  ldr r1,[r7,r3,lsl #2] ;@ Get S
47737
47738  str r0,[r7,r3,lsl #2] ;@ T->S
47739  str r1,[r7,r2,lsr #7] ;@ S->T
47740
47741  ldrh r8,[r4],#2 ;@ Fetch next opcode
47742  subs r5,r5,#6 ;@ Subtract cycles
47743  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47744  b CycloneEnd
47745
47746;@ ---------- [c148] exg a0, a0 uses Opc148 ----------
47747Opc148:
47748  and r2,r8,#0x0e00 ;@ Find T register
47749  and r3,r8,#0x000f ;@ Find S register
47750  orr r2,r2,#0x1000 ;@ T is an address register
47751
47752  ldr r0,[r7,r2,lsr #7] ;@ Get T
47753  ldr r1,[r7,r3,lsl #2] ;@ Get S
47754
47755  str r0,[r7,r3,lsl #2] ;@ T->S
47756  str r1,[r7,r2,lsr #7] ;@ S->T
47757
47758  ldrh r8,[r4],#2 ;@ Fetch next opcode
47759  subs r5,r5,#6 ;@ Subtract cycles
47760  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47761  b CycloneEnd
47762
47763;@ ---------- [c150] and.w d0, (a0) uses Opc150 ----------
47764Opc150:
47765;@ EaCalc : Get '(a0)' into r11:
47766  and r2,r8,#0x000f
47767  orr r2,r2,#0x8 ;@ A0-7
47768  ldr r11,[r7,r2,lsl #2]
47769;@ EaRead : Read '(a0)' (address in r11) into r0:
47770  add lr,pc,#4
47771  mov r0,r11
47772  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
47773
47774;@ EaCalc : Get register index into r1:
47775  and r1,r8,#0x0e00
47776;@ EaRead : Read register[r1] into r1:
47777  ldr r1,[r7,r1,lsr #7]
47778
47779;@ Do arithmetic:
47780  mov r0,r0,asl #16
47781  ands r1,r0,r1,asl #16
47782  and r10,r1,#0x80000000 ;@ r10=N_flag
47783  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47784
47785;@ Save result:
47786  mov r1,r1,asr #16
47787;@ EaWrite: Write r1 into '(a0)' (address in r11):
47788  uxth r1,r1 ;@ zero extend
47789  add lr,pc,#4
47790  mov r0,r11
47791  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
47792
47793  ldrh r8,[r4],#2 ;@ Fetch next opcode
47794  subs r5,r5,#12 ;@ Subtract cycles
47795  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47796  b CycloneEnd
47797
47798;@ ---------- [c158] and.w d0, (a0)+ uses Opc158 ----------
47799Opc158:
47800;@ EaCalc : Get '(a0)+' into r11:
47801  and r2,r8,#0x000f
47802  ldr r11,[r7,r2,lsl #2]
47803  add r3,r11,#2 ;@ Post-increment An
47804  str r3,[r7,r2,lsl #2]
47805;@ EaRead : Read '(a0)+' (address in r11) into r0:
47806  add lr,pc,#4
47807  mov r0,r11
47808  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
47809
47810;@ EaCalc : Get register index into r1:
47811  and r1,r8,#0x0e00
47812;@ EaRead : Read register[r1] into r1:
47813  ldr r1,[r7,r1,lsr #7]
47814
47815;@ Do arithmetic:
47816  mov r0,r0,asl #16
47817  ands r1,r0,r1,asl #16
47818  and r10,r1,#0x80000000 ;@ r10=N_flag
47819  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47820
47821;@ Save result:
47822  mov r1,r1,asr #16
47823;@ EaWrite: Write r1 into '(a0)+' (address in r11):
47824  uxth r1,r1 ;@ zero extend
47825  add lr,pc,#4
47826  mov r0,r11
47827  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
47828
47829  ldrh r8,[r4],#2 ;@ Fetch next opcode
47830  subs r5,r5,#12 ;@ Subtract cycles
47831  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47832  b CycloneEnd
47833
47834;@ ---------- [c160] and.w d0, -(a0) uses Opc160 ----------
47835Opc160:
47836;@ EaCalc : Get '-(a0)' into r11:
47837  and r2,r8,#0x000f
47838  orr r2,r2,#0x8 ;@ A0-7
47839  ldr r11,[r7,r2,lsl #2]
47840  sub r11,r11,#2 ;@ Pre-decrement An
47841  str r11,[r7,r2,lsl #2]
47842;@ EaRead : Read '-(a0)' (address in r11) into r0:
47843  add lr,pc,#4
47844  mov r0,r11
47845  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
47846
47847;@ EaCalc : Get register index into r1:
47848  and r1,r8,#0x0e00
47849;@ EaRead : Read register[r1] into r1:
47850  ldr r1,[r7,r1,lsr #7]
47851
47852;@ Do arithmetic:
47853  mov r0,r0,asl #16
47854  ands r1,r0,r1,asl #16
47855  and r10,r1,#0x80000000 ;@ r10=N_flag
47856  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47857
47858;@ Save result:
47859  mov r1,r1,asr #16
47860;@ EaWrite: Write r1 into '-(a0)' (address in r11):
47861  uxth r1,r1 ;@ zero extend
47862  add lr,pc,#4
47863  mov r0,r11
47864  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
47865
47866  ldrh r8,[r4],#2 ;@ Fetch next opcode
47867  subs r5,r5,#14 ;@ Subtract cycles
47868  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47869  b CycloneEnd
47870
47871;@ ---------- [c168] and.w d0, ($3333,a0) uses Opc168 ----------
47872Opc168:
47873;@ EaCalc : Get '($3333,a0)' into r11:
47874  ldrsh r0,[r4],#2 ;@ Fetch offset
47875  and r2,r8,#0x000f
47876  ldr r2,[r7,r2,lsl #2]
47877  add r11,r0,r2 ;@ Add on offset
47878;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
47879  add lr,pc,#4
47880  mov r0,r11
47881  ldr pc,[r7,#0x6c] ;@ Call read16(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  mov r0,r0,asl #16
47890  ands r1,r0,r1,asl #16
47891  and r10,r1,#0x80000000 ;@ r10=N_flag
47892  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47893
47894;@ Save result:
47895  mov r1,r1,asr #16
47896;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
47897  uxth r1,r1 ;@ zero extend
47898  add lr,pc,#4
47899  mov r0,r11
47900  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
47901
47902  ldrh r8,[r4],#2 ;@ Fetch next opcode
47903  subs r5,r5,#16 ;@ Subtract cycles
47904  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47905  b CycloneEnd
47906
47907;@ ---------- [c170] and.w d0, ($33,a0,d3.w*2) uses Opc170 ----------
47908Opc170:
47909;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
47910;@ Get extension word into r3:
47911  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
47912  mov r2,r3,lsr #10
47913  tst r3,#0x0800 ;@ Is Rn Word or Long
47914  and r2,r2,#0x3c ;@ r2=Index of Rn
47915  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
47916  ldrne   r2,[r7,r2] ;@ r2=Rn.l
47917  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
47918  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
47919  and r2,r8,#0x000f
47920  orr r2,r2,#0x8 ;@ A0-7
47921  ldr r2,[r7,r2,lsl #2]
47922  add r11,r2,r3 ;@ r11=Disp+An+Rn
47923;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
47924  add lr,pc,#4
47925  mov r0,r11
47926  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
47927
47928;@ EaCalc : Get register index into r1:
47929  and r1,r8,#0x0e00
47930;@ EaRead : Read register[r1] into r1:
47931  ldr r1,[r7,r1,lsr #7]
47932
47933;@ Do arithmetic:
47934  mov r0,r0,asl #16
47935  ands r1,r0,r1,asl #16
47936  and r10,r1,#0x80000000 ;@ r10=N_flag
47937  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47938
47939;@ Save result:
47940  mov r1,r1,asr #16
47941;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
47942  uxth r1,r1 ;@ zero extend
47943  add lr,pc,#4
47944  mov r0,r11
47945  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
47946
47947  ldrh r8,[r4],#2 ;@ Fetch next opcode
47948  subs r5,r5,#18 ;@ Subtract cycles
47949  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47950  b CycloneEnd
47951
47952;@ ---------- [c178] and.w d0, $3333.w uses Opc178 ----------
47953Opc178:
47954;@ EaCalc : Get '$3333.w' into r11:
47955  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
47956;@ EaRead : Read '$3333.w' (address in r11) into r0:
47957  add lr,pc,#4
47958  mov r0,r11
47959  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
47960
47961;@ EaCalc : Get register index into r1:
47962  and r1,r8,#0x0e00
47963;@ EaRead : Read register[r1] into r1:
47964  ldr r1,[r7,r1,lsr #7]
47965
47966;@ Do arithmetic:
47967  mov r0,r0,asl #16
47968  ands r1,r0,r1,asl #16
47969  and r10,r1,#0x80000000 ;@ r10=N_flag
47970  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
47971
47972;@ Save result:
47973  mov r1,r1,asr #16
47974;@ EaWrite: Write r1 into '$3333.w' (address in r11):
47975  uxth r1,r1 ;@ zero extend
47976  add lr,pc,#4
47977  mov r0,r11
47978  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
47979
47980  ldrh r8,[r4],#2 ;@ Fetch next opcode
47981  subs r5,r5,#16 ;@ Subtract cycles
47982  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
47983  b CycloneEnd
47984
47985;@ ---------- [c179] and.w d0, $33333333.l uses Opc179 ----------
47986Opc179:
47987;@ EaCalc : Get '$33333333.l' into r11:
47988  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
47989  ldrh r0,[r4],#2
47990  orr r11,r0,r2,lsl #16
47991;@ EaRead : Read '$33333333.l' (address in r11) into r0:
47992  add lr,pc,#4
47993  mov r0,r11
47994  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
47995
47996;@ EaCalc : Get register index into r1:
47997  and r1,r8,#0x0e00
47998;@ EaRead : Read register[r1] into r1:
47999  ldr r1,[r7,r1,lsr #7]
48000
48001;@ Do arithmetic:
48002  mov r0,r0,asl #16
48003  ands r1,r0,r1,asl #16
48004  and r10,r1,#0x80000000 ;@ r10=N_flag
48005  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48006
48007;@ Save result:
48008  mov r1,r1,asr #16
48009;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
48010  uxth r1,r1 ;@ zero extend
48011  add lr,pc,#4
48012  mov r0,r11
48013  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
48014
48015  ldrh r8,[r4],#2 ;@ Fetch next opcode
48016  subs r5,r5,#20 ;@ Subtract cycles
48017  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48018  b CycloneEnd
48019
48020;@ ---------- [c188] exg a0, d0 uses Opc188 ----------
48021Opc188:
48022  and r2,r8,#0x0e00 ;@ Find T register
48023  and r3,r8,#0x000f ;@ Find S register
48024
48025  ldr r0,[r7,r2,lsr #7] ;@ Get T
48026  ldr r1,[r7,r3,lsl #2] ;@ Get S
48027
48028  str r0,[r7,r3,lsl #2] ;@ T->S
48029  str r1,[r7,r2,lsr #7] ;@ S->T
48030
48031  ldrh r8,[r4],#2 ;@ Fetch next opcode
48032  subs r5,r5,#6 ;@ Subtract cycles
48033  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48034  b CycloneEnd
48035
48036;@ ---------- [c190] and.l d0, (a0) uses Opc190 ----------
48037Opc190:
48038;@ EaCalc : Get '(a0)' into r11:
48039  and r2,r8,#0x000f
48040  orr r2,r2,#0x8 ;@ A0-7
48041  ldr r11,[r7,r2,lsl #2]
48042;@ EaRead : Read '(a0)' (address in r11) into r0:
48043  add lr,pc,#4
48044  mov r0,r11
48045  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
48046
48047;@ EaCalc : Get register index into r1:
48048  and r1,r8,#0x0e00
48049;@ EaRead : Read register[r1] into r1:
48050  ldr r1,[r7,r1,lsr #7]
48051
48052;@ Do arithmetic:
48053  ands r1,r0,r1
48054  and r10,r1,#0x80000000 ;@ r10=N_flag
48055  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48056
48057;@ Save result:
48058;@ EaWrite: Write r1 into '(a0)' (address in r11):
48059  add lr,pc,#4
48060  mov r0,r11
48061  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
48062
48063  ldrh r8,[r4],#2 ;@ Fetch next opcode
48064  subs r5,r5,#20 ;@ Subtract cycles
48065  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48066  b CycloneEnd
48067
48068;@ ---------- [c198] and.l d0, (a0)+ uses Opc198 ----------
48069Opc198:
48070;@ EaCalc : Get '(a0)+' into r11:
48071  and r2,r8,#0x000f
48072  ldr r11,[r7,r2,lsl #2]
48073  add r3,r11,#4 ;@ Post-increment An
48074  str r3,[r7,r2,lsl #2]
48075;@ EaRead : Read '(a0)+' (address in r11) into r0:
48076  add lr,pc,#4
48077  mov r0,r11
48078  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
48079
48080;@ EaCalc : Get register index into r1:
48081  and r1,r8,#0x0e00
48082;@ EaRead : Read register[r1] into r1:
48083  ldr r1,[r7,r1,lsr #7]
48084
48085;@ Do arithmetic:
48086  ands r1,r0,r1
48087  and r10,r1,#0x80000000 ;@ r10=N_flag
48088  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48089
48090;@ Save result:
48091;@ EaWrite: Write r1 into '(a0)+' (address in r11):
48092  add lr,pc,#4
48093  mov r0,r11
48094  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
48095
48096  ldrh r8,[r4],#2 ;@ Fetch next opcode
48097  subs r5,r5,#20 ;@ Subtract cycles
48098  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48099  b CycloneEnd
48100
48101;@ ---------- [c1a0] and.l d0, -(a0) uses Opc1a0 ----------
48102Opc1a0:
48103;@ EaCalc : Get '-(a0)' into r11:
48104  and r2,r8,#0x000f
48105  orr r2,r2,#0x8 ;@ A0-7
48106  ldr r11,[r7,r2,lsl #2]
48107  sub r11,r11,#4 ;@ Pre-decrement An
48108  str r11,[r7,r2,lsl #2]
48109;@ EaRead : Read '-(a0)' (address in r11) into r0:
48110  add lr,pc,#4
48111  mov r0,r11
48112  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
48113
48114;@ EaCalc : Get register index into r1:
48115  and r1,r8,#0x0e00
48116;@ EaRead : Read register[r1] into r1:
48117  ldr r1,[r7,r1,lsr #7]
48118
48119;@ Do arithmetic:
48120  ands r1,r0,r1
48121  and r10,r1,#0x80000000 ;@ r10=N_flag
48122  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48123
48124;@ Save result:
48125;@ EaWrite: Write r1 into '-(a0)' (address in r11):
48126  add lr,pc,#4
48127  mov r0,r11
48128  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
48129
48130  ldrh r8,[r4],#2 ;@ Fetch next opcode
48131  subs r5,r5,#22 ;@ Subtract cycles
48132  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48133  b CycloneEnd
48134
48135;@ ---------- [c1a8] and.l d0, ($3333,a0) uses Opc1a8 ----------
48136Opc1a8:
48137;@ EaCalc : Get '($3333,a0)' into r11:
48138  ldrsh r0,[r4],#2 ;@ Fetch offset
48139  and r2,r8,#0x000f
48140  ldr r2,[r7,r2,lsl #2]
48141  add r11,r0,r2 ;@ Add on offset
48142;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
48143  add lr,pc,#4
48144  mov r0,r11
48145  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
48146
48147;@ EaCalc : Get register index into r1:
48148  and r1,r8,#0x0e00
48149;@ EaRead : Read register[r1] into r1:
48150  ldr r1,[r7,r1,lsr #7]
48151
48152;@ Do arithmetic:
48153  ands r1,r0,r1
48154  and r10,r1,#0x80000000 ;@ r10=N_flag
48155  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48156
48157;@ Save result:
48158;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
48159  add lr,pc,#4
48160  mov r0,r11
48161  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
48162
48163  ldrh r8,[r4],#2 ;@ Fetch next opcode
48164  subs r5,r5,#24 ;@ Subtract cycles
48165  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48166  b CycloneEnd
48167
48168;@ ---------- [c1b0] and.l d0, ($33,a0,d3.w*2) uses Opc1b0 ----------
48169Opc1b0:
48170;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
48171;@ Get extension word into r3:
48172  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
48173  mov r2,r3,lsr #10
48174  tst r3,#0x0800 ;@ Is Rn Word or Long
48175  and r2,r2,#0x3c ;@ r2=Index of Rn
48176  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
48177  ldrne   r2,[r7,r2] ;@ r2=Rn.l
48178  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
48179  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
48180  and r2,r8,#0x000f
48181  orr r2,r2,#0x8 ;@ A0-7
48182  ldr r2,[r7,r2,lsl #2]
48183  add r11,r2,r3 ;@ r11=Disp+An+Rn
48184;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
48185  add lr,pc,#4
48186  mov r0,r11
48187  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
48188
48189;@ EaCalc : Get register index into r1:
48190  and r1,r8,#0x0e00
48191;@ EaRead : Read register[r1] into r1:
48192  ldr r1,[r7,r1,lsr #7]
48193
48194;@ Do arithmetic:
48195  ands r1,r0,r1
48196  and r10,r1,#0x80000000 ;@ r10=N_flag
48197  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48198
48199;@ Save result:
48200;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
48201  add lr,pc,#4
48202  mov r0,r11
48203  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
48204
48205  ldrh r8,[r4],#2 ;@ Fetch next opcode
48206  subs r5,r5,#26 ;@ Subtract cycles
48207  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48208  b CycloneEnd
48209
48210;@ ---------- [c1b8] and.l d0, $3333.w uses Opc1b8 ----------
48211Opc1b8:
48212;@ EaCalc : Get '$3333.w' into r11:
48213  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
48214;@ EaRead : Read '$3333.w' (address in r11) into r0:
48215  add lr,pc,#4
48216  mov r0,r11
48217  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
48218
48219;@ EaCalc : Get register index into r1:
48220  and r1,r8,#0x0e00
48221;@ EaRead : Read register[r1] into r1:
48222  ldr r1,[r7,r1,lsr #7]
48223
48224;@ Do arithmetic:
48225  ands r1,r0,r1
48226  and r10,r1,#0x80000000 ;@ r10=N_flag
48227  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48228
48229;@ Save result:
48230;@ EaWrite: Write r1 into '$3333.w' (address in r11):
48231  add lr,pc,#4
48232  mov r0,r11
48233  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
48234
48235  ldrh r8,[r4],#2 ;@ Fetch next opcode
48236  subs r5,r5,#24 ;@ Subtract cycles
48237  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48238  b CycloneEnd
48239
48240;@ ---------- [c1b9] and.l d0, $33333333.l uses Opc1b9 ----------
48241Opc1b9:
48242;@ EaCalc : Get '$33333333.l' into r11:
48243  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
48244  ldrh r0,[r4],#2
48245  orr r11,r0,r2,lsl #16
48246;@ EaRead : Read '$33333333.l' (address in r11) into r0:
48247  add lr,pc,#4
48248  mov r0,r11
48249  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
48250
48251;@ EaCalc : Get register index into r1:
48252  and r1,r8,#0x0e00
48253;@ EaRead : Read register[r1] into r1:
48254  ldr r1,[r7,r1,lsr #7]
48255
48256;@ Do arithmetic:
48257  ands r1,r0,r1
48258  and r10,r1,#0x80000000 ;@ r10=N_flag
48259  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48260
48261;@ Save result:
48262;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
48263  add lr,pc,#4
48264  mov r0,r11
48265  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
48266
48267  ldrh r8,[r4],#2 ;@ Fetch next opcode
48268  subs r5,r5,#28 ;@ Subtract cycles
48269  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48270  b CycloneEnd
48271
48272;@ ---------- [c1c0] muls.w d0, d0 uses Opc1c0 ----------
48273Opc1c0:
48274;@ EaCalc : Get register index into r0:
48275  and r0,r8,#0x000f
48276;@ EaRead : Read register[r0] into r0:
48277  ldr r0,[r7,r0,lsl #2]
48278
48279;@ EaCalc : Get register index into r11:
48280  and r11,r8,#0x0e00
48281;@ EaRead : Read register[r11] into r2:
48282  ldr r2,[r7,r11,lsr #7]
48283
48284  movs r1,r0,asl #16
48285;@ Get 16-bit signs right:
48286  mov r0,r1,asr #16
48287  mov r2,r2,lsl #16
48288  mov r2,r2,asr #16
48289
48290  muls r1,r2,r0
48291  and r10,r1,#0x80000000 ;@ r10=N_flag
48292  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48293
48294;@ EaWrite: r1 into register[r11]:
48295  str r1,[r7,r11,lsr #7]
48296
48297  ldrh r8,[r4],#2 ;@ Fetch next opcode
48298  subs r5,r5,#54 ;@ Subtract cycles
48299  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48300  b CycloneEnd
48301
48302;@ ---------- [c1d0] muls.w (a0), d0 uses Opc1d0 ----------
48303Opc1d0:
48304;@ EaCalc : Get '(a0)' into r0:
48305  and r2,r8,#0x000f
48306  orr r2,r2,#0x8 ;@ A0-7
48307  ldr r0,[r7,r2,lsl #2]
48308;@ EaRead : Read '(a0)' (address in r0) into r0:
48309  mov lr,pc
48310  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
48311
48312;@ EaCalc : Get register index into r11:
48313  and r11,r8,#0x0e00
48314;@ EaRead : Read register[r11] into r2:
48315  ldr r2,[r7,r11,lsr #7]
48316
48317  movs r1,r0,asl #16
48318;@ Get 16-bit signs right:
48319  mov r0,r1,asr #16
48320  mov r2,r2,lsl #16
48321  mov r2,r2,asr #16
48322
48323  muls r1,r2,r0
48324  and r10,r1,#0x80000000 ;@ r10=N_flag
48325  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48326
48327;@ EaWrite: r1 into register[r11]:
48328  str r1,[r7,r11,lsr #7]
48329
48330  ldrh r8,[r4],#2 ;@ Fetch next opcode
48331  subs r5,r5,#58 ;@ Subtract cycles
48332  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48333  b CycloneEnd
48334
48335;@ ---------- [c1d8] muls.w (a0)+, d0 uses Opc1d8 ----------
48336Opc1d8:
48337;@ EaCalc : Get '(a0)+' into r0:
48338  and r2,r8,#0x000f
48339  ldr r0,[r7,r2,lsl #2]
48340  add r3,r0,#2 ;@ Post-increment An
48341  str r3,[r7,r2,lsl #2]
48342;@ EaRead : Read '(a0)+' (address in r0) into r0:
48343  mov lr,pc
48344  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
48345
48346;@ EaCalc : Get register index into r11:
48347  and r11,r8,#0x0e00
48348;@ EaRead : Read register[r11] into r2:
48349  ldr r2,[r7,r11,lsr #7]
48350
48351  movs r1,r0,asl #16
48352;@ Get 16-bit signs right:
48353  mov r0,r1,asr #16
48354  mov r2,r2,lsl #16
48355  mov r2,r2,asr #16
48356
48357  muls r1,r2,r0
48358  and r10,r1,#0x80000000 ;@ r10=N_flag
48359  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48360
48361;@ EaWrite: r1 into register[r11]:
48362  str r1,[r7,r11,lsr #7]
48363
48364  ldrh r8,[r4],#2 ;@ Fetch next opcode
48365  subs r5,r5,#58 ;@ Subtract cycles
48366  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48367  b CycloneEnd
48368
48369;@ ---------- [c1e0] muls.w -(a0), d0 uses Opc1e0 ----------
48370Opc1e0:
48371;@ EaCalc : Get '-(a0)' into r0:
48372  and r2,r8,#0x000f
48373  orr r2,r2,#0x8 ;@ A0-7
48374  ldr r0,[r7,r2,lsl #2]
48375  sub r0,r0,#2 ;@ Pre-decrement An
48376  str r0,[r7,r2,lsl #2]
48377;@ EaRead : Read '-(a0)' (address in r0) into r0:
48378  mov lr,pc
48379  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
48380
48381;@ EaCalc : Get register index into r11:
48382  and r11,r8,#0x0e00
48383;@ EaRead : Read register[r11] into r2:
48384  ldr r2,[r7,r11,lsr #7]
48385
48386  movs r1,r0,asl #16
48387;@ Get 16-bit signs right:
48388  mov r0,r1,asr #16
48389  mov r2,r2,lsl #16
48390  mov r2,r2,asr #16
48391
48392  muls r1,r2,r0
48393  and r10,r1,#0x80000000 ;@ r10=N_flag
48394  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48395
48396;@ EaWrite: r1 into register[r11]:
48397  str r1,[r7,r11,lsr #7]
48398
48399  ldrh r8,[r4],#2 ;@ Fetch next opcode
48400  subs r5,r5,#60 ;@ Subtract cycles
48401  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48402  b CycloneEnd
48403
48404;@ ---------- [c1e8] muls.w ($3333,a0), d0 uses Opc1e8 ----------
48405Opc1e8:
48406;@ EaCalc : Get '($3333,a0)' into r0:
48407  ldrsh r0,[r4],#2 ;@ Fetch offset
48408  and r2,r8,#0x000f
48409  ldr r2,[r7,r2,lsl #2]
48410  add r0,r0,r2 ;@ Add on offset
48411;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
48412  mov lr,pc
48413  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
48414
48415;@ EaCalc : Get register index into r11:
48416  and r11,r8,#0x0e00
48417;@ EaRead : Read register[r11] into r2:
48418  ldr r2,[r7,r11,lsr #7]
48419
48420  movs r1,r0,asl #16
48421;@ Get 16-bit signs right:
48422  mov r0,r1,asr #16
48423  mov r2,r2,lsl #16
48424  mov r2,r2,asr #16
48425
48426  muls r1,r2,r0
48427  and r10,r1,#0x80000000 ;@ r10=N_flag
48428  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48429
48430;@ EaWrite: r1 into register[r11]:
48431  str r1,[r7,r11,lsr #7]
48432
48433  ldrh r8,[r4],#2 ;@ Fetch next opcode
48434  subs r5,r5,#62 ;@ Subtract cycles
48435  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48436  b CycloneEnd
48437
48438;@ ---------- [c1f0] muls.w ($33,a0,d3.w*2), d0 uses Opc1f0 ----------
48439Opc1f0:
48440;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
48441;@ Get extension word into r3:
48442  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
48443  mov r2,r3,lsr #10
48444  tst r3,#0x0800 ;@ Is Rn Word or Long
48445  and r2,r2,#0x3c ;@ r2=Index of Rn
48446  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
48447  ldrne   r2,[r7,r2] ;@ r2=Rn.l
48448  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
48449  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
48450  and r2,r8,#0x000f
48451  orr r2,r2,#0x8 ;@ A0-7
48452  ldr r2,[r7,r2,lsl #2]
48453  add r0,r2,r3 ;@ r0=Disp+An+Rn
48454;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
48455  mov lr,pc
48456  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
48457
48458;@ EaCalc : Get register index into r11:
48459  and r11,r8,#0x0e00
48460;@ EaRead : Read register[r11] into r2:
48461  ldr r2,[r7,r11,lsr #7]
48462
48463  movs r1,r0,asl #16
48464;@ Get 16-bit signs right:
48465  mov r0,r1,asr #16
48466  mov r2,r2,lsl #16
48467  mov r2,r2,asr #16
48468
48469  muls r1,r2,r0
48470  and r10,r1,#0x80000000 ;@ r10=N_flag
48471  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48472
48473;@ EaWrite: r1 into register[r11]:
48474  str r1,[r7,r11,lsr #7]
48475
48476  ldrh r8,[r4],#2 ;@ Fetch next opcode
48477  subs r5,r5,#64 ;@ Subtract cycles
48478  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48479  b CycloneEnd
48480
48481;@ ---------- [c1f8] muls.w $3333.w, d0 uses Opc1f8 ----------
48482Opc1f8:
48483;@ EaCalc : Get '$3333.w' into r0:
48484  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
48485;@ EaRead : Read '$3333.w' (address in r0) into r0:
48486  mov lr,pc
48487  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
48488
48489;@ EaCalc : Get register index into r11:
48490  and r11,r8,#0x0e00
48491;@ EaRead : Read register[r11] into r2:
48492  ldr r2,[r7,r11,lsr #7]
48493
48494  movs r1,r0,asl #16
48495;@ Get 16-bit signs right:
48496  mov r0,r1,asr #16
48497  mov r2,r2,lsl #16
48498  mov r2,r2,asr #16
48499
48500  muls r1,r2,r0
48501  and r10,r1,#0x80000000 ;@ r10=N_flag
48502  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48503
48504;@ EaWrite: r1 into register[r11]:
48505  str r1,[r7,r11,lsr #7]
48506
48507  ldrh r8,[r4],#2 ;@ Fetch next opcode
48508  subs r5,r5,#62 ;@ Subtract cycles
48509  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48510  b CycloneEnd
48511
48512;@ ---------- [c1f9] muls.w $33333333.l, d0 uses Opc1f9 ----------
48513Opc1f9:
48514;@ EaCalc : Get '$33333333.l' into r0:
48515  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
48516  ldrh r0,[r4],#2
48517  orr r0,r0,r2,lsl #16
48518;@ EaRead : Read '$33333333.l' (address in r0) into r0:
48519  mov lr,pc
48520  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
48521
48522;@ EaCalc : Get register index into r11:
48523  and r11,r8,#0x0e00
48524;@ EaRead : Read register[r11] into r2:
48525  ldr r2,[r7,r11,lsr #7]
48526
48527  movs r1,r0,asl #16
48528;@ Get 16-bit signs right:
48529  mov r0,r1,asr #16
48530  mov r2,r2,lsl #16
48531  mov r2,r2,asr #16
48532
48533  muls r1,r2,r0
48534  and r10,r1,#0x80000000 ;@ r10=N_flag
48535  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48536
48537;@ EaWrite: r1 into register[r11]:
48538  str r1,[r7,r11,lsr #7]
48539
48540  ldrh r8,[r4],#2 ;@ Fetch next opcode
48541  subs r5,r5,#66 ;@ Subtract cycles
48542  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48543  b CycloneEnd
48544
48545;@ ---------- [c1fa] muls.w ($3333,pc), d0; =3335 uses Opc1fa ----------
48546Opc1fa:
48547;@ EaCalc : Get '($3333,pc)' into r0:
48548  ldr r0,[r7,#0x60] ;@ Get Memory base
48549  sub r0,r4,r0 ;@ Real PC
48550  ldrsh r2,[r4],#2 ;@ Fetch extension
48551  add r0,r2,r0 ;@ ($nn,PC)
48552;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
48553  mov lr,pc
48554  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
48555
48556;@ EaCalc : Get register index into r11:
48557  and r11,r8,#0x0e00
48558;@ EaRead : Read register[r11] into r2:
48559  ldr r2,[r7,r11,lsr #7]
48560
48561  movs r1,r0,asl #16
48562;@ Get 16-bit signs right:
48563  mov r0,r1,asr #16
48564  mov r2,r2,lsl #16
48565  mov r2,r2,asr #16
48566
48567  muls r1,r2,r0
48568  and r10,r1,#0x80000000 ;@ r10=N_flag
48569  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48570
48571;@ EaWrite: r1 into register[r11]:
48572  str r1,[r7,r11,lsr #7]
48573
48574  ldrh r8,[r4],#2 ;@ Fetch next opcode
48575  subs r5,r5,#62 ;@ Subtract cycles
48576  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48577  b CycloneEnd
48578
48579;@ ---------- [c1fb] muls.w ($33,pc,d3.w*2), d0; =35 uses Opc1fb ----------
48580Opc1fb:
48581;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
48582  ldr r0,[r7,#0x60] ;@ Get Memory base
48583  ldrh r3,[r4] ;@ Get extension word
48584  sub r0,r4,r0 ;@ r0=PC
48585  add r4,r4,#2
48586  mov r2,r3,lsr #10
48587  tst r3,#0x0800 ;@ Is Rn Word or Long
48588  and r2,r2,#0x3c ;@ r2=Index of Rn
48589  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
48590  ldrne   r2,[r7,r2] ;@ r2=Rn.l
48591  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
48592  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
48593  add r0,r2,r0 ;@ r0=Disp+PC+Rn
48594;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
48595  mov lr,pc
48596  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
48597
48598;@ EaCalc : Get register index into r11:
48599  and r11,r8,#0x0e00
48600;@ EaRead : Read register[r11] into r2:
48601  ldr r2,[r7,r11,lsr #7]
48602
48603  movs r1,r0,asl #16
48604;@ Get 16-bit signs right:
48605  mov r0,r1,asr #16
48606  mov r2,r2,lsl #16
48607  mov r2,r2,asr #16
48608
48609  muls r1,r2,r0
48610  and r10,r1,#0x80000000 ;@ r10=N_flag
48611  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48612
48613;@ EaWrite: r1 into register[r11]:
48614  str r1,[r7,r11,lsr #7]
48615
48616  ldrh r8,[r4],#2 ;@ Fetch next opcode
48617  subs r5,r5,#64 ;@ Subtract cycles
48618  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48619  b CycloneEnd
48620
48621;@ ---------- [c1fc] muls.w #$3333, d0 uses Opc1fc ----------
48622Opc1fc:
48623;@ EaCalc : Get '#$3333' into r0:
48624  ldrsh r0,[r4],#2 ;@ Fetch immediate value
48625;@ EaRead : Read '#$3333' (address in r0) into r0:
48626
48627;@ EaCalc : Get register index into r11:
48628  and r11,r8,#0x0e00
48629;@ EaRead : Read register[r11] into r2:
48630  ldr r2,[r7,r11,lsr #7]
48631
48632  movs r1,r0,asl #16
48633;@ Get 16-bit signs right:
48634  mov r0,r1,asr #16
48635  mov r2,r2,lsl #16
48636  mov r2,r2,asr #16
48637
48638  muls r1,r2,r0
48639  and r10,r1,#0x80000000 ;@ r10=N_flag
48640  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
48641
48642;@ EaWrite: r1 into register[r11]:
48643  str r1,[r7,r11,lsr #7]
48644
48645  ldrh r8,[r4],#2 ;@ Fetch next opcode
48646  subs r5,r5,#58 ;@ Subtract cycles
48647  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48648  b CycloneEnd
48649
48650;@ ---------- [cf08] abcd -(a0), -(a7) uses Opcf08 ----------
48651Opcf08:
48652;@ Get src/dest EA vals
48653;@ EaCalc : Get '-(a0)' into r0:
48654  and r2,r8,#0x000f
48655  ldr r0,[r7,r2,lsl #2]
48656  sub r0,r0,#1 ;@ Pre-decrement An
48657  str r0,[r7,r2,lsl #2]
48658;@ EaRead : Read '-(a0)' (address in r0) into r6:
48659  mov lr,pc
48660  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
48661  mov r6,r0,asl #24
48662
48663;@ EaCalc : Get '-(a7)' into r11:
48664  ldr r11,[r7,#0x3c] ;@ A7
48665  sub r11,r11,#2 ;@ Pre-decrement An
48666  str r11,[r7,#0x3c] ;@ A7
48667;@ EaRead : Read '-(a7)' (address in r11) into r0:
48668  add lr,pc,#4
48669  mov r0,r11
48670  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
48671
48672  mov r1,r0,asl #24
48673
48674  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
48675  ldr r0,[r7,#0x4c] ;@ Get X bit
48676  mov r3,#0x00f00000
48677  and r2,r3,r1,lsr #4
48678  tst r0,#0x20000000
48679  and r0,r3,r6,lsr #4
48680  add r0,r0,r2
48681  addne r0,r0,#0x00100000
48682  cmp r0,#0x00900000
48683  addhi r0,r0,#0x00600000 ;@ Decimal adjust units
48684  mov r2,r1,lsr #28
48685  add r0,r0,r2,lsl #24
48686  mov r2,r6,lsr #28
48687  add r0,r0,r2,lsl #24
48688  cmp r0,#0x09900000
48689  orrhi r10,r10,#0x20000000 ;@ C
48690  subhi r0,r0,#0x0a000000
48691  movs r0,r0,lsl #4
48692  orrmi r10,r10,#0x90000000 ;@ Undefined N+V behavior
48693  bicne r10,r10,#0x40000000 ;@ Z flag
48694  str r10,[r7,#0x4c] ;@ Save X bit
48695
48696;@ EaWrite: Write r0 into '-(a7)' (address in r11):
48697  mov r1,r0,lsr #24
48698  add lr,pc,#4
48699  mov r0,r11
48700  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
48701
48702  ldr r6,[r7,#0x54]
48703  ldrh r8,[r4],#2 ;@ Fetch next opcode
48704  subs r5,r5,#18 ;@ Subtract cycles
48705  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48706  b CycloneEnd
48707
48708;@ ---------- [cf0f] abcd -(a7), -(a7) uses Opcf0f ----------
48709Opcf0f:
48710;@ Get src/dest EA vals
48711;@ EaCalc : Get '-(a7)' into r0:
48712  ldr r0,[r7,#0x3c] ;@ A7
48713  sub r0,r0,#2 ;@ Pre-decrement An
48714  str r0,[r7,#0x3c] ;@ A7
48715;@ EaRead : Read '-(a7)' (address in r0) into r6:
48716  mov lr,pc
48717  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
48718  mov r6,r0,asl #24
48719
48720;@ EaCalc : Get '-(a7)' into r11:
48721  ldr r11,[r7,#0x3c] ;@ A7
48722  sub r11,r11,#2 ;@ Pre-decrement An
48723  str r11,[r7,#0x3c] ;@ A7
48724;@ EaRead : Read '-(a7)' (address in r11) into r0:
48725  add lr,pc,#4
48726  mov r0,r11
48727  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
48728
48729  mov r1,r0,asl #24
48730
48731  bic r10,r10,#0xb1000000 ;@ clear all flags except old Z
48732  ldr r0,[r7,#0x4c] ;@ Get X bit
48733  mov r3,#0x00f00000
48734  and r2,r3,r1,lsr #4
48735  tst r0,#0x20000000
48736  and r0,r3,r6,lsr #4
48737  add r0,r0,r2
48738  addne r0,r0,#0x00100000
48739  cmp r0,#0x00900000
48740  addhi r0,r0,#0x00600000 ;@ Decimal adjust units
48741  mov r2,r1,lsr #28
48742  add r0,r0,r2,lsl #24
48743  mov r2,r6,lsr #28
48744  add r0,r0,r2,lsl #24
48745  cmp r0,#0x09900000
48746  orrhi r10,r10,#0x20000000 ;@ C
48747  subhi r0,r0,#0x0a000000
48748  movs r0,r0,lsl #4
48749  orrmi r10,r10,#0x90000000 ;@ Undefined N+V behavior
48750  bicne r10,r10,#0x40000000 ;@ Z flag
48751  str r10,[r7,#0x4c] ;@ Save X bit
48752
48753;@ EaWrite: Write r0 into '-(a7)' (address in r11):
48754  mov r1,r0,lsr #24
48755  add lr,pc,#4
48756  mov r0,r11
48757  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
48758
48759  ldr r6,[r7,#0x54]
48760  ldrh r8,[r4],#2 ;@ Fetch next opcode
48761  subs r5,r5,#18 ;@ Subtract cycles
48762  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48763  b CycloneEnd
48764
48765;@ ---------- [d000] add.b d0, d0 uses Opd000 ----------
48766Opd000:
48767;@ EaCalc : Get register index into r0:
48768  and r0,r8,#0x000f
48769;@ EaRead : Read register[r0] into r0:
48770  ldr r0,[r7,r0,lsl #2]
48771
48772;@ EaCalc : Get register index into r11:
48773  and r11,r8,#0x0e00
48774;@ EaRead : Read register[r11] into r1:
48775  ldr r1,[r7,r11,lsr #7]
48776
48777;@ Do arithmetic:
48778  mov r0,r0,asl #24
48779  adds r1,r0,r1,asl #24
48780  mrs r10,cpsr ;@ r10=flags
48781  str r10,[r7,#0x4c] ;@ Save X bit
48782
48783;@ Save result:
48784  mov r1,r1,asr #24
48785;@ EaWrite: r1 into register[r11]:
48786  strb r1,[r7,r11,lsr #7]
48787
48788  ldrh r8,[r4],#2 ;@ Fetch next opcode
48789  subs r5,r5,#4 ;@ Subtract cycles
48790  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48791  b CycloneEnd
48792
48793;@ ---------- [d010] add.b (a0), d0 uses Opd010 ----------
48794Opd010:
48795;@ EaCalc : Get '(a0)' into r0:
48796  and r2,r8,#0x000f
48797  orr r2,r2,#0x8 ;@ A0-7
48798  ldr r0,[r7,r2,lsl #2]
48799;@ EaRead : Read '(a0)' (address in r0) into r0:
48800  mov lr,pc
48801  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
48802
48803;@ EaCalc : Get register index into r11:
48804  and r11,r8,#0x0e00
48805;@ EaRead : Read register[r11] into r1:
48806  ldr r1,[r7,r11,lsr #7]
48807
48808;@ Do arithmetic:
48809  mov r0,r0,asl #24
48810  adds r1,r0,r1,asl #24
48811  mrs r10,cpsr ;@ r10=flags
48812  str r10,[r7,#0x4c] ;@ Save X bit
48813
48814;@ Save result:
48815  mov r1,r1,asr #24
48816;@ EaWrite: r1 into register[r11]:
48817  strb r1,[r7,r11,lsr #7]
48818
48819  ldrh r8,[r4],#2 ;@ Fetch next opcode
48820  subs r5,r5,#8 ;@ Subtract cycles
48821  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48822  b CycloneEnd
48823
48824;@ ---------- [d018] add.b (a0)+, d0 uses Opd018 ----------
48825Opd018:
48826;@ EaCalc : Get '(a0)+' into r0:
48827  and r2,r8,#0x000f
48828  ldr r0,[r7,r2,lsl #2]
48829  add r3,r0,#1 ;@ Post-increment An
48830  str r3,[r7,r2,lsl #2]
48831;@ EaRead : Read '(a0)+' (address in r0) into r0:
48832  mov lr,pc
48833  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
48834
48835;@ EaCalc : Get register index into r11:
48836  and r11,r8,#0x0e00
48837;@ EaRead : Read register[r11] into r1:
48838  ldr r1,[r7,r11,lsr #7]
48839
48840;@ Do arithmetic:
48841  mov r0,r0,asl #24
48842  adds r1,r0,r1,asl #24
48843  mrs r10,cpsr ;@ r10=flags
48844  str r10,[r7,#0x4c] ;@ Save X bit
48845
48846;@ Save result:
48847  mov r1,r1,asr #24
48848;@ EaWrite: r1 into register[r11]:
48849  strb r1,[r7,r11,lsr #7]
48850
48851  ldrh r8,[r4],#2 ;@ Fetch next opcode
48852  subs r5,r5,#8 ;@ Subtract cycles
48853  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48854  b CycloneEnd
48855
48856;@ ---------- [d01f] add.b (a7)+, d0 uses Opd01f ----------
48857Opd01f:
48858;@ EaCalc : Get '(a7)+' into r0:
48859  ldr r0,[r7,#0x3c] ;@ A7
48860  add r3,r0,#2 ;@ Post-increment An
48861  str r3,[r7,#0x3c] ;@ A7
48862;@ EaRead : Read '(a7)+' (address in r0) into r0:
48863  mov lr,pc
48864  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
48865
48866;@ EaCalc : Get register index into r11:
48867  and r11,r8,#0x0e00
48868;@ EaRead : Read register[r11] into r1:
48869  ldr r1,[r7,r11,lsr #7]
48870
48871;@ Do arithmetic:
48872  mov r0,r0,asl #24
48873  adds r1,r0,r1,asl #24
48874  mrs r10,cpsr ;@ r10=flags
48875  str r10,[r7,#0x4c] ;@ Save X bit
48876
48877;@ Save result:
48878  mov r1,r1,asr #24
48879;@ EaWrite: r1 into register[r11]:
48880  strb r1,[r7,r11,lsr #7]
48881
48882  ldrh r8,[r4],#2 ;@ Fetch next opcode
48883  subs r5,r5,#8 ;@ Subtract cycles
48884  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48885  b CycloneEnd
48886
48887;@ ---------- [d020] add.b -(a0), d0 uses Opd020 ----------
48888Opd020:
48889;@ EaCalc : Get '-(a0)' into r0:
48890  and r2,r8,#0x000f
48891  orr r2,r2,#0x8 ;@ A0-7
48892  ldr r0,[r7,r2,lsl #2]
48893  sub r0,r0,#1 ;@ Pre-decrement An
48894  str r0,[r7,r2,lsl #2]
48895;@ EaRead : Read '-(a0)' (address in r0) into r0:
48896  mov lr,pc
48897  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
48898
48899;@ EaCalc : Get register index into r11:
48900  and r11,r8,#0x0e00
48901;@ EaRead : Read register[r11] into r1:
48902  ldr r1,[r7,r11,lsr #7]
48903
48904;@ Do arithmetic:
48905  mov r0,r0,asl #24
48906  adds r1,r0,r1,asl #24
48907  mrs r10,cpsr ;@ r10=flags
48908  str r10,[r7,#0x4c] ;@ Save X bit
48909
48910;@ Save result:
48911  mov r1,r1,asr #24
48912;@ EaWrite: r1 into register[r11]:
48913  strb r1,[r7,r11,lsr #7]
48914
48915  ldrh r8,[r4],#2 ;@ Fetch next opcode
48916  subs r5,r5,#10 ;@ Subtract cycles
48917  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48918  b CycloneEnd
48919
48920;@ ---------- [d027] add.b -(a7), d0 uses Opd027 ----------
48921Opd027:
48922;@ EaCalc : Get '-(a7)' into r0:
48923  ldr r0,[r7,#0x3c] ;@ A7
48924  sub r0,r0,#2 ;@ Pre-decrement An
48925  str r0,[r7,#0x3c] ;@ A7
48926;@ EaRead : Read '-(a7)' (address in r0) into r0:
48927  mov lr,pc
48928  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
48929
48930;@ EaCalc : Get register index into r11:
48931  and r11,r8,#0x0e00
48932;@ EaRead : Read register[r11] into r1:
48933  ldr r1,[r7,r11,lsr #7]
48934
48935;@ Do arithmetic:
48936  mov r0,r0,asl #24
48937  adds r1,r0,r1,asl #24
48938  mrs r10,cpsr ;@ r10=flags
48939  str r10,[r7,#0x4c] ;@ Save X bit
48940
48941;@ Save result:
48942  mov r1,r1,asr #24
48943;@ EaWrite: r1 into register[r11]:
48944  strb r1,[r7,r11,lsr #7]
48945
48946  ldrh r8,[r4],#2 ;@ Fetch next opcode
48947  subs r5,r5,#10 ;@ Subtract cycles
48948  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48949  b CycloneEnd
48950
48951;@ ---------- [d028] add.b ($3333,a0), d0 uses Opd028 ----------
48952Opd028:
48953;@ EaCalc : Get '($3333,a0)' into r0:
48954  ldrsh r0,[r4],#2 ;@ Fetch offset
48955  and r2,r8,#0x000f
48956  ldr r2,[r7,r2,lsl #2]
48957  add r0,r0,r2 ;@ Add on offset
48958;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
48959  mov lr,pc
48960  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
48961
48962;@ EaCalc : Get register index into r11:
48963  and r11,r8,#0x0e00
48964;@ EaRead : Read register[r11] into r1:
48965  ldr r1,[r7,r11,lsr #7]
48966
48967;@ Do arithmetic:
48968  mov r0,r0,asl #24
48969  adds r1,r0,r1,asl #24
48970  mrs r10,cpsr ;@ r10=flags
48971  str r10,[r7,#0x4c] ;@ Save X bit
48972
48973;@ Save result:
48974  mov r1,r1,asr #24
48975;@ EaWrite: r1 into register[r11]:
48976  strb r1,[r7,r11,lsr #7]
48977
48978  ldrh r8,[r4],#2 ;@ Fetch next opcode
48979  subs r5,r5,#12 ;@ Subtract cycles
48980  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
48981  b CycloneEnd
48982
48983;@ ---------- [d030] add.b ($33,a0,d3.w*2), d0 uses Opd030 ----------
48984Opd030:
48985;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
48986;@ Get extension word into r3:
48987  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
48988  mov r2,r3,lsr #10
48989  tst r3,#0x0800 ;@ Is Rn Word or Long
48990  and r2,r2,#0x3c ;@ r2=Index of Rn
48991  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
48992  ldrne   r2,[r7,r2] ;@ r2=Rn.l
48993  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
48994  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
48995  and r2,r8,#0x000f
48996  orr r2,r2,#0x8 ;@ A0-7
48997  ldr r2,[r7,r2,lsl #2]
48998  add r0,r2,r3 ;@ r0=Disp+An+Rn
48999;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
49000  mov lr,pc
49001  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
49002
49003;@ EaCalc : Get register index into r11:
49004  and r11,r8,#0x0e00
49005;@ EaRead : Read register[r11] into r1:
49006  ldr r1,[r7,r11,lsr #7]
49007
49008;@ Do arithmetic:
49009  mov r0,r0,asl #24
49010  adds r1,r0,r1,asl #24
49011  mrs r10,cpsr ;@ r10=flags
49012  str r10,[r7,#0x4c] ;@ Save X bit
49013
49014;@ Save result:
49015  mov r1,r1,asr #24
49016;@ EaWrite: r1 into register[r11]:
49017  strb r1,[r7,r11,lsr #7]
49018
49019  ldrh r8,[r4],#2 ;@ Fetch next opcode
49020  subs r5,r5,#14 ;@ Subtract cycles
49021  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49022  b CycloneEnd
49023
49024;@ ---------- [d038] add.b $3333.w, d0 uses Opd038 ----------
49025Opd038:
49026;@ EaCalc : Get '$3333.w' into r0:
49027  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
49028;@ EaRead : Read '$3333.w' (address in r0) into r0:
49029  mov lr,pc
49030  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
49031
49032;@ EaCalc : Get register index into r11:
49033  and r11,r8,#0x0e00
49034;@ EaRead : Read register[r11] into r1:
49035  ldr r1,[r7,r11,lsr #7]
49036
49037;@ Do arithmetic:
49038  mov r0,r0,asl #24
49039  adds r1,r0,r1,asl #24
49040  mrs r10,cpsr ;@ r10=flags
49041  str r10,[r7,#0x4c] ;@ Save X bit
49042
49043;@ Save result:
49044  mov r1,r1,asr #24
49045;@ EaWrite: r1 into register[r11]:
49046  strb r1,[r7,r11,lsr #7]
49047
49048  ldrh r8,[r4],#2 ;@ Fetch next opcode
49049  subs r5,r5,#12 ;@ Subtract cycles
49050  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49051  b CycloneEnd
49052
49053;@ ---------- [d039] add.b $33333333.l, d0 uses Opd039 ----------
49054Opd039:
49055;@ EaCalc : Get '$33333333.l' into r0:
49056  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
49057  ldrh r0,[r4],#2
49058  orr r0,r0,r2,lsl #16
49059;@ EaRead : Read '$33333333.l' (address in r0) into r0:
49060  mov lr,pc
49061  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
49062
49063;@ EaCalc : Get register index into r11:
49064  and r11,r8,#0x0e00
49065;@ EaRead : Read register[r11] into r1:
49066  ldr r1,[r7,r11,lsr #7]
49067
49068;@ Do arithmetic:
49069  mov r0,r0,asl #24
49070  adds r1,r0,r1,asl #24
49071  mrs r10,cpsr ;@ r10=flags
49072  str r10,[r7,#0x4c] ;@ Save X bit
49073
49074;@ Save result:
49075  mov r1,r1,asr #24
49076;@ EaWrite: r1 into register[r11]:
49077  strb r1,[r7,r11,lsr #7]
49078
49079  ldrh r8,[r4],#2 ;@ Fetch next opcode
49080  subs r5,r5,#16 ;@ Subtract cycles
49081  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49082  b CycloneEnd
49083
49084;@ ---------- [d03a] add.b ($3333,pc), d0; =3335 uses Opd03a ----------
49085Opd03a:
49086;@ EaCalc : Get '($3333,pc)' into r0:
49087  ldr r0,[r7,#0x60] ;@ Get Memory base
49088  sub r0,r4,r0 ;@ Real PC
49089  ldrsh r2,[r4],#2 ;@ Fetch extension
49090  add r0,r2,r0 ;@ ($nn,PC)
49091;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
49092  mov lr,pc
49093  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
49094
49095;@ EaCalc : Get register index into r11:
49096  and r11,r8,#0x0e00
49097;@ EaRead : Read register[r11] into r1:
49098  ldr r1,[r7,r11,lsr #7]
49099
49100;@ Do arithmetic:
49101  mov r0,r0,asl #24
49102  adds r1,r0,r1,asl #24
49103  mrs r10,cpsr ;@ r10=flags
49104  str r10,[r7,#0x4c] ;@ Save X bit
49105
49106;@ Save result:
49107  mov r1,r1,asr #24
49108;@ EaWrite: r1 into register[r11]:
49109  strb r1,[r7,r11,lsr #7]
49110
49111  ldrh r8,[r4],#2 ;@ Fetch next opcode
49112  subs r5,r5,#12 ;@ Subtract cycles
49113  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49114  b CycloneEnd
49115
49116;@ ---------- [d03b] add.b ($33,pc,d3.w*2), d0; =35 uses Opd03b ----------
49117Opd03b:
49118;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
49119  ldr r0,[r7,#0x60] ;@ Get Memory base
49120  ldrh r3,[r4] ;@ Get extension word
49121  sub r0,r4,r0 ;@ r0=PC
49122  add r4,r4,#2
49123  mov r2,r3,lsr #10
49124  tst r3,#0x0800 ;@ Is Rn Word or Long
49125  and r2,r2,#0x3c ;@ r2=Index of Rn
49126  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49127  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49128  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
49129  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
49130  add r0,r2,r0 ;@ r0=Disp+PC+Rn
49131;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
49132  mov lr,pc
49133  ldr pc,[r7,#0x80] ;@ Call fetch8(r0) handler
49134
49135;@ EaCalc : Get register index into r11:
49136  and r11,r8,#0x0e00
49137;@ EaRead : Read register[r11] into r1:
49138  ldr r1,[r7,r11,lsr #7]
49139
49140;@ Do arithmetic:
49141  mov r0,r0,asl #24
49142  adds r1,r0,r1,asl #24
49143  mrs r10,cpsr ;@ r10=flags
49144  str r10,[r7,#0x4c] ;@ Save X bit
49145
49146;@ Save result:
49147  mov r1,r1,asr #24
49148;@ EaWrite: r1 into register[r11]:
49149  strb r1,[r7,r11,lsr #7]
49150
49151  ldrh r8,[r4],#2 ;@ Fetch next opcode
49152  subs r5,r5,#14 ;@ Subtract cycles
49153  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49154  b CycloneEnd
49155
49156;@ ---------- [d03c] add.b #$33, d0 uses Opd03c ----------
49157Opd03c:
49158;@ EaCalc : Get '#$33' into r0:
49159  ldrsb r0,[r4],#2 ;@ Fetch immediate value
49160;@ EaRead : Read '#$33' (address in r0) into r0:
49161
49162;@ EaCalc : Get register index into r11:
49163  and r11,r8,#0x0e00
49164;@ EaRead : Read register[r11] into r1:
49165  ldr r1,[r7,r11,lsr #7]
49166
49167;@ Do arithmetic:
49168  mov r0,r0,asl #24
49169  adds r1,r0,r1,asl #24
49170  mrs r10,cpsr ;@ r10=flags
49171  str r10,[r7,#0x4c] ;@ Save X bit
49172
49173;@ Save result:
49174  mov r1,r1,asr #24
49175;@ EaWrite: r1 into register[r11]:
49176  strb r1,[r7,r11,lsr #7]
49177
49178  ldrh r8,[r4],#2 ;@ Fetch next opcode
49179  subs r5,r5,#8 ;@ Subtract cycles
49180  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49181  b CycloneEnd
49182
49183;@ ---------- [d050] add.w (a0), d0 uses Opd050 ----------
49184Opd050:
49185;@ EaCalc : Get '(a0)' into r0:
49186  and r2,r8,#0x000f
49187  orr r2,r2,#0x8 ;@ A0-7
49188  ldr r0,[r7,r2,lsl #2]
49189;@ EaRead : Read '(a0)' (address in r0) into r0:
49190  mov lr,pc
49191  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49192
49193;@ EaCalc : Get register index into r11:
49194  and r11,r8,#0x0e00
49195  mov r11,r11,lsr #7
49196;@ EaRead : Read register[r11] into r1:
49197  ldr r1,[r7,r11]
49198
49199;@ Do arithmetic:
49200  mov r0,r0,asl #16
49201  adds r1,r0,r1,asl #16
49202  mrs r10,cpsr ;@ r10=flags
49203  str r10,[r7,#0x4c] ;@ Save X bit
49204
49205;@ Save result:
49206  mov r1,r1,asr #16
49207;@ EaWrite: r1 into register[r11]:
49208  strh r1,[r7,r11]
49209
49210  ldrh r8,[r4],#2 ;@ Fetch next opcode
49211  subs r5,r5,#8 ;@ Subtract cycles
49212  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49213  b CycloneEnd
49214
49215;@ ---------- [d058] add.w (a0)+, d0 uses Opd058 ----------
49216Opd058:
49217;@ EaCalc : Get '(a0)+' into r0:
49218  and r2,r8,#0x000f
49219  ldr r0,[r7,r2,lsl #2]
49220  add r3,r0,#2 ;@ Post-increment An
49221  str r3,[r7,r2,lsl #2]
49222;@ EaRead : Read '(a0)+' (address in r0) into r0:
49223  mov lr,pc
49224  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49225
49226;@ EaCalc : Get register index into r11:
49227  and r11,r8,#0x0e00
49228  mov r11,r11,lsr #7
49229;@ EaRead : Read register[r11] into r1:
49230  ldr r1,[r7,r11]
49231
49232;@ Do arithmetic:
49233  mov r0,r0,asl #16
49234  adds r1,r0,r1,asl #16
49235  mrs r10,cpsr ;@ r10=flags
49236  str r10,[r7,#0x4c] ;@ Save X bit
49237
49238;@ Save result:
49239  mov r1,r1,asr #16
49240;@ EaWrite: r1 into register[r11]:
49241  strh r1,[r7,r11]
49242
49243  ldrh r8,[r4],#2 ;@ Fetch next opcode
49244  subs r5,r5,#8 ;@ Subtract cycles
49245  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49246  b CycloneEnd
49247
49248;@ ---------- [d060] add.w -(a0), d0 uses Opd060 ----------
49249Opd060:
49250;@ EaCalc : Get '-(a0)' into r0:
49251  and r2,r8,#0x000f
49252  orr r2,r2,#0x8 ;@ A0-7
49253  ldr r0,[r7,r2,lsl #2]
49254  sub r0,r0,#2 ;@ Pre-decrement An
49255  str r0,[r7,r2,lsl #2]
49256;@ EaRead : Read '-(a0)' (address in r0) into r0:
49257  mov lr,pc
49258  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49259
49260;@ EaCalc : Get register index into r11:
49261  and r11,r8,#0x0e00
49262  mov r11,r11,lsr #7
49263;@ EaRead : Read register[r11] into r1:
49264  ldr r1,[r7,r11]
49265
49266;@ Do arithmetic:
49267  mov r0,r0,asl #16
49268  adds r1,r0,r1,asl #16
49269  mrs r10,cpsr ;@ r10=flags
49270  str r10,[r7,#0x4c] ;@ Save X bit
49271
49272;@ Save result:
49273  mov r1,r1,asr #16
49274;@ EaWrite: r1 into register[r11]:
49275  strh r1,[r7,r11]
49276
49277  ldrh r8,[r4],#2 ;@ Fetch next opcode
49278  subs r5,r5,#10 ;@ Subtract cycles
49279  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49280  b CycloneEnd
49281
49282;@ ---------- [d068] add.w ($3333,a0), d0 uses Opd068 ----------
49283Opd068:
49284;@ EaCalc : Get '($3333,a0)' into r0:
49285  ldrsh r0,[r4],#2 ;@ Fetch offset
49286  and r2,r8,#0x000f
49287  ldr r2,[r7,r2,lsl #2]
49288  add r0,r0,r2 ;@ Add on offset
49289;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
49290  mov lr,pc
49291  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49292
49293;@ EaCalc : Get register index into r11:
49294  and r11,r8,#0x0e00
49295  mov r11,r11,lsr #7
49296;@ EaRead : Read register[r11] into r1:
49297  ldr r1,[r7,r11]
49298
49299;@ Do arithmetic:
49300  mov r0,r0,asl #16
49301  adds r1,r0,r1,asl #16
49302  mrs r10,cpsr ;@ r10=flags
49303  str r10,[r7,#0x4c] ;@ Save X bit
49304
49305;@ Save result:
49306  mov r1,r1,asr #16
49307;@ EaWrite: r1 into register[r11]:
49308  strh r1,[r7,r11]
49309
49310  ldrh r8,[r4],#2 ;@ Fetch next opcode
49311  subs r5,r5,#12 ;@ Subtract cycles
49312  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49313  b CycloneEnd
49314
49315;@ ---------- [d070] add.w ($33,a0,d3.w*2), d0 uses Opd070 ----------
49316Opd070:
49317;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
49318;@ Get extension word into r3:
49319  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
49320  mov r2,r3,lsr #10
49321  tst r3,#0x0800 ;@ Is Rn Word or Long
49322  and r2,r2,#0x3c ;@ r2=Index of Rn
49323  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49324  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49325  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
49326  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
49327  and r2,r8,#0x000f
49328  orr r2,r2,#0x8 ;@ A0-7
49329  ldr r2,[r7,r2,lsl #2]
49330  add r0,r2,r3 ;@ r0=Disp+An+Rn
49331;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
49332  mov lr,pc
49333  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49334
49335;@ EaCalc : Get register index into r11:
49336  and r11,r8,#0x0e00
49337  mov r11,r11,lsr #7
49338;@ EaRead : Read register[r11] into r1:
49339  ldr r1,[r7,r11]
49340
49341;@ Do arithmetic:
49342  mov r0,r0,asl #16
49343  adds r1,r0,r1,asl #16
49344  mrs r10,cpsr ;@ r10=flags
49345  str r10,[r7,#0x4c] ;@ Save X bit
49346
49347;@ Save result:
49348  mov r1,r1,asr #16
49349;@ EaWrite: r1 into register[r11]:
49350  strh r1,[r7,r11]
49351
49352  ldrh r8,[r4],#2 ;@ Fetch next opcode
49353  subs r5,r5,#14 ;@ Subtract cycles
49354  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49355  b CycloneEnd
49356
49357;@ ---------- [d078] add.w $3333.w, d0 uses Opd078 ----------
49358Opd078:
49359;@ EaCalc : Get '$3333.w' into r0:
49360  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
49361;@ EaRead : Read '$3333.w' (address in r0) into r0:
49362  mov lr,pc
49363  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49364
49365;@ EaCalc : Get register index into r11:
49366  and r11,r8,#0x0e00
49367  mov r11,r11,lsr #7
49368;@ EaRead : Read register[r11] into r1:
49369  ldr r1,[r7,r11]
49370
49371;@ Do arithmetic:
49372  mov r0,r0,asl #16
49373  adds r1,r0,r1,asl #16
49374  mrs r10,cpsr ;@ r10=flags
49375  str r10,[r7,#0x4c] ;@ Save X bit
49376
49377;@ Save result:
49378  mov r1,r1,asr #16
49379;@ EaWrite: r1 into register[r11]:
49380  strh r1,[r7,r11]
49381
49382  ldrh r8,[r4],#2 ;@ Fetch next opcode
49383  subs r5,r5,#12 ;@ Subtract cycles
49384  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49385  b CycloneEnd
49386
49387;@ ---------- [d079] add.w $33333333.l, d0 uses Opd079 ----------
49388Opd079:
49389;@ EaCalc : Get '$33333333.l' into r0:
49390  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
49391  ldrh r0,[r4],#2
49392  orr r0,r0,r2,lsl #16
49393;@ EaRead : Read '$33333333.l' (address in r0) into r0:
49394  mov lr,pc
49395  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49396
49397;@ EaCalc : Get register index into r11:
49398  and r11,r8,#0x0e00
49399  mov r11,r11,lsr #7
49400;@ EaRead : Read register[r11] into r1:
49401  ldr r1,[r7,r11]
49402
49403;@ Do arithmetic:
49404  mov r0,r0,asl #16
49405  adds r1,r0,r1,asl #16
49406  mrs r10,cpsr ;@ r10=flags
49407  str r10,[r7,#0x4c] ;@ Save X bit
49408
49409;@ Save result:
49410  mov r1,r1,asr #16
49411;@ EaWrite: r1 into register[r11]:
49412  strh r1,[r7,r11]
49413
49414  ldrh r8,[r4],#2 ;@ Fetch next opcode
49415  subs r5,r5,#16 ;@ Subtract cycles
49416  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49417  b CycloneEnd
49418
49419;@ ---------- [d07a] add.w ($3333,pc), d0; =3335 uses Opd07a ----------
49420Opd07a:
49421;@ EaCalc : Get '($3333,pc)' into r0:
49422  ldr r0,[r7,#0x60] ;@ Get Memory base
49423  sub r0,r4,r0 ;@ Real PC
49424  ldrsh r2,[r4],#2 ;@ Fetch extension
49425  add r0,r2,r0 ;@ ($nn,PC)
49426;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
49427  mov lr,pc
49428  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
49429
49430;@ EaCalc : Get register index into r11:
49431  and r11,r8,#0x0e00
49432  mov r11,r11,lsr #7
49433;@ EaRead : Read register[r11] into r1:
49434  ldr r1,[r7,r11]
49435
49436;@ Do arithmetic:
49437  mov r0,r0,asl #16
49438  adds r1,r0,r1,asl #16
49439  mrs r10,cpsr ;@ r10=flags
49440  str r10,[r7,#0x4c] ;@ Save X bit
49441
49442;@ Save result:
49443  mov r1,r1,asr #16
49444;@ EaWrite: r1 into register[r11]:
49445  strh r1,[r7,r11]
49446
49447  ldrh r8,[r4],#2 ;@ Fetch next opcode
49448  subs r5,r5,#12 ;@ Subtract cycles
49449  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49450  b CycloneEnd
49451
49452;@ ---------- [d07b] add.w ($33,pc,d3.w*2), d0; =35 uses Opd07b ----------
49453Opd07b:
49454;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
49455  ldr r0,[r7,#0x60] ;@ Get Memory base
49456  ldrh r3,[r4] ;@ Get extension word
49457  sub r0,r4,r0 ;@ r0=PC
49458  add r4,r4,#2
49459  mov r2,r3,lsr #10
49460  tst r3,#0x0800 ;@ Is Rn Word or Long
49461  and r2,r2,#0x3c ;@ r2=Index of Rn
49462  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49463  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49464  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
49465  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
49466  add r0,r2,r0 ;@ r0=Disp+PC+Rn
49467;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
49468  mov lr,pc
49469  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
49470
49471;@ EaCalc : Get register index into r11:
49472  and r11,r8,#0x0e00
49473  mov r11,r11,lsr #7
49474;@ EaRead : Read register[r11] into r1:
49475  ldr r1,[r7,r11]
49476
49477;@ Do arithmetic:
49478  mov r0,r0,asl #16
49479  adds r1,r0,r1,asl #16
49480  mrs r10,cpsr ;@ r10=flags
49481  str r10,[r7,#0x4c] ;@ Save X bit
49482
49483;@ Save result:
49484  mov r1,r1,asr #16
49485;@ EaWrite: r1 into register[r11]:
49486  strh r1,[r7,r11]
49487
49488  ldrh r8,[r4],#2 ;@ Fetch next opcode
49489  subs r5,r5,#14 ;@ Subtract cycles
49490  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49491  b CycloneEnd
49492
49493;@ ---------- [d07c] add.w #$3333, d0 uses Opd07c ----------
49494Opd07c:
49495;@ EaCalc : Get '#$3333' into r0:
49496  ldrsh r0,[r4],#2 ;@ Fetch immediate value
49497;@ EaRead : Read '#$3333' (address in r0) into r0:
49498
49499;@ EaCalc : Get register index into r11:
49500  and r11,r8,#0x0e00
49501  mov r11,r11,lsr #7
49502;@ EaRead : Read register[r11] into r1:
49503  ldr r1,[r7,r11]
49504
49505;@ Do arithmetic:
49506  mov r0,r0,asl #16
49507  adds r1,r0,r1,asl #16
49508  mrs r10,cpsr ;@ r10=flags
49509  str r10,[r7,#0x4c] ;@ Save X bit
49510
49511;@ Save result:
49512  mov r1,r1,asr #16
49513;@ EaWrite: r1 into register[r11]:
49514  strh r1,[r7,r11]
49515
49516  ldrh r8,[r4],#2 ;@ Fetch next opcode
49517  subs r5,r5,#8 ;@ Subtract cycles
49518  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49519  b CycloneEnd
49520
49521;@ ---------- [d080] add.l d0, d0 uses Opd080 ----------
49522Opd080:
49523;@ EaCalc : Get register index into r0:
49524  and r0,r8,#0x000f
49525;@ EaRead : Read register[r0] into r0:
49526  ldr r0,[r7,r0,lsl #2]
49527
49528;@ EaCalc : Get register index into r11:
49529  and r11,r8,#0x0e00
49530;@ EaRead : Read register[r11] into r1:
49531  ldr r1,[r7,r11,lsr #7]
49532
49533;@ Do arithmetic:
49534  adds r1,r0,r1
49535  mrs r10,cpsr ;@ r10=flags
49536  str r10,[r7,#0x4c] ;@ Save X bit
49537
49538;@ Save result:
49539;@ EaWrite: r1 into register[r11]:
49540  str r1,[r7,r11,lsr #7]
49541
49542  ldrh r8,[r4],#2 ;@ Fetch next opcode
49543  subs r5,r5,#8 ;@ Subtract cycles
49544  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49545  b CycloneEnd
49546
49547;@ ---------- [d090] add.l (a0), d0 uses Opd090 ----------
49548Opd090:
49549;@ EaCalc : Get '(a0)' into r0:
49550  and r2,r8,#0x000f
49551  orr r2,r2,#0x8 ;@ A0-7
49552  ldr r0,[r7,r2,lsl #2]
49553;@ EaRead : Read '(a0)' (address in r0) into r0:
49554  mov lr,pc
49555  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
49556
49557;@ EaCalc : Get register index into r11:
49558  and r11,r8,#0x0e00
49559;@ EaRead : Read register[r11] into r1:
49560  ldr r1,[r7,r11,lsr #7]
49561
49562;@ Do arithmetic:
49563  adds r1,r0,r1
49564  mrs r10,cpsr ;@ r10=flags
49565  str r10,[r7,#0x4c] ;@ Save X bit
49566
49567;@ Save result:
49568;@ EaWrite: r1 into register[r11]:
49569  str r1,[r7,r11,lsr #7]
49570
49571  ldrh r8,[r4],#2 ;@ Fetch next opcode
49572  subs r5,r5,#14 ;@ Subtract cycles
49573  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49574  b CycloneEnd
49575
49576;@ ---------- [d098] add.l (a0)+, d0 uses Opd098 ----------
49577Opd098:
49578;@ EaCalc : Get '(a0)+' into r0:
49579  and r2,r8,#0x000f
49580  ldr r0,[r7,r2,lsl #2]
49581  add r3,r0,#4 ;@ Post-increment An
49582  str r3,[r7,r2,lsl #2]
49583;@ EaRead : Read '(a0)+' (address in r0) into r0:
49584  mov lr,pc
49585  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
49586
49587;@ EaCalc : Get register index into r11:
49588  and r11,r8,#0x0e00
49589;@ EaRead : Read register[r11] into r1:
49590  ldr r1,[r7,r11,lsr #7]
49591
49592;@ Do arithmetic:
49593  adds r1,r0,r1
49594  mrs r10,cpsr ;@ r10=flags
49595  str r10,[r7,#0x4c] ;@ Save X bit
49596
49597;@ Save result:
49598;@ EaWrite: r1 into register[r11]:
49599  str r1,[r7,r11,lsr #7]
49600
49601  ldrh r8,[r4],#2 ;@ Fetch next opcode
49602  subs r5,r5,#14 ;@ Subtract cycles
49603  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49604  b CycloneEnd
49605
49606;@ ---------- [d0a0] add.l -(a0), d0 uses Opd0a0 ----------
49607Opd0a0:
49608;@ EaCalc : Get '-(a0)' into r0:
49609  and r2,r8,#0x000f
49610  orr r2,r2,#0x8 ;@ A0-7
49611  ldr r0,[r7,r2,lsl #2]
49612  sub r0,r0,#4 ;@ Pre-decrement An
49613  str r0,[r7,r2,lsl #2]
49614;@ EaRead : Read '-(a0)' (address in r0) into r0:
49615  mov lr,pc
49616  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
49617
49618;@ EaCalc : Get register index into r11:
49619  and r11,r8,#0x0e00
49620;@ EaRead : Read register[r11] into r1:
49621  ldr r1,[r7,r11,lsr #7]
49622
49623;@ Do arithmetic:
49624  adds r1,r0,r1
49625  mrs r10,cpsr ;@ r10=flags
49626  str r10,[r7,#0x4c] ;@ Save X bit
49627
49628;@ Save result:
49629;@ EaWrite: r1 into register[r11]:
49630  str r1,[r7,r11,lsr #7]
49631
49632  ldrh r8,[r4],#2 ;@ Fetch next opcode
49633  subs r5,r5,#16 ;@ Subtract cycles
49634  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49635  b CycloneEnd
49636
49637;@ ---------- [d0a8] add.l ($3333,a0), d0 uses Opd0a8 ----------
49638Opd0a8:
49639;@ EaCalc : Get '($3333,a0)' into r0:
49640  ldrsh r0,[r4],#2 ;@ Fetch offset
49641  and r2,r8,#0x000f
49642  ldr r2,[r7,r2,lsl #2]
49643  add r0,r0,r2 ;@ Add on offset
49644;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
49645  mov lr,pc
49646  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
49647
49648;@ EaCalc : Get register index into r11:
49649  and r11,r8,#0x0e00
49650;@ EaRead : Read register[r11] into r1:
49651  ldr r1,[r7,r11,lsr #7]
49652
49653;@ Do arithmetic:
49654  adds r1,r0,r1
49655  mrs r10,cpsr ;@ r10=flags
49656  str r10,[r7,#0x4c] ;@ Save X bit
49657
49658;@ Save result:
49659;@ EaWrite: r1 into register[r11]:
49660  str r1,[r7,r11,lsr #7]
49661
49662  ldrh r8,[r4],#2 ;@ Fetch next opcode
49663  subs r5,r5,#18 ;@ Subtract cycles
49664  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49665  b CycloneEnd
49666
49667;@ ---------- [d0b0] add.l ($33,a0,d3.w*2), d0 uses Opd0b0 ----------
49668Opd0b0:
49669;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
49670;@ Get extension word into r3:
49671  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
49672  mov r2,r3,lsr #10
49673  tst r3,#0x0800 ;@ Is Rn Word or Long
49674  and r2,r2,#0x3c ;@ r2=Index of Rn
49675  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49676  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49677  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
49678  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
49679  and r2,r8,#0x000f
49680  orr r2,r2,#0x8 ;@ A0-7
49681  ldr r2,[r7,r2,lsl #2]
49682  add r0,r2,r3 ;@ r0=Disp+An+Rn
49683;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
49684  mov lr,pc
49685  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
49686
49687;@ EaCalc : Get register index into r11:
49688  and r11,r8,#0x0e00
49689;@ EaRead : Read register[r11] into r1:
49690  ldr r1,[r7,r11,lsr #7]
49691
49692;@ Do arithmetic:
49693  adds r1,r0,r1
49694  mrs r10,cpsr ;@ r10=flags
49695  str r10,[r7,#0x4c] ;@ Save X bit
49696
49697;@ Save result:
49698;@ EaWrite: r1 into register[r11]:
49699  str r1,[r7,r11,lsr #7]
49700
49701  ldrh r8,[r4],#2 ;@ Fetch next opcode
49702  subs r5,r5,#20 ;@ Subtract cycles
49703  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49704  b CycloneEnd
49705
49706;@ ---------- [d0b8] add.l $3333.w, d0 uses Opd0b8 ----------
49707Opd0b8:
49708;@ EaCalc : Get '$3333.w' into r0:
49709  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
49710;@ EaRead : Read '$3333.w' (address in r0) into r0:
49711  mov lr,pc
49712  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
49713
49714;@ EaCalc : Get register index into r11:
49715  and r11,r8,#0x0e00
49716;@ EaRead : Read register[r11] into r1:
49717  ldr r1,[r7,r11,lsr #7]
49718
49719;@ Do arithmetic:
49720  adds r1,r0,r1
49721  mrs r10,cpsr ;@ r10=flags
49722  str r10,[r7,#0x4c] ;@ Save X bit
49723
49724;@ Save result:
49725;@ EaWrite: r1 into register[r11]:
49726  str r1,[r7,r11,lsr #7]
49727
49728  ldrh r8,[r4],#2 ;@ Fetch next opcode
49729  subs r5,r5,#18 ;@ Subtract cycles
49730  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49731  b CycloneEnd
49732
49733;@ ---------- [d0b9] add.l $33333333.l, d0 uses Opd0b9 ----------
49734Opd0b9:
49735;@ EaCalc : Get '$33333333.l' into r0:
49736  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
49737  ldrh r0,[r4],#2
49738  orr r0,r0,r2,lsl #16
49739;@ EaRead : Read '$33333333.l' (address in r0) into r0:
49740  mov lr,pc
49741  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
49742
49743;@ EaCalc : Get register index into r11:
49744  and r11,r8,#0x0e00
49745;@ EaRead : Read register[r11] into r1:
49746  ldr r1,[r7,r11,lsr #7]
49747
49748;@ Do arithmetic:
49749  adds r1,r0,r1
49750  mrs r10,cpsr ;@ r10=flags
49751  str r10,[r7,#0x4c] ;@ Save X bit
49752
49753;@ Save result:
49754;@ EaWrite: r1 into register[r11]:
49755  str r1,[r7,r11,lsr #7]
49756
49757  ldrh r8,[r4],#2 ;@ Fetch next opcode
49758  subs r5,r5,#22 ;@ Subtract cycles
49759  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49760  b CycloneEnd
49761
49762;@ ---------- [d0ba] add.l ($3333,pc), d0; =3335 uses Opd0ba ----------
49763Opd0ba:
49764;@ EaCalc : Get '($3333,pc)' into r0:
49765  ldr r0,[r7,#0x60] ;@ Get Memory base
49766  sub r0,r4,r0 ;@ Real PC
49767  ldrsh r2,[r4],#2 ;@ Fetch extension
49768  add r0,r2,r0 ;@ ($nn,PC)
49769;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
49770  mov lr,pc
49771  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
49772
49773;@ EaCalc : Get register index into r11:
49774  and r11,r8,#0x0e00
49775;@ EaRead : Read register[r11] into r1:
49776  ldr r1,[r7,r11,lsr #7]
49777
49778;@ Do arithmetic:
49779  adds r1,r0,r1
49780  mrs r10,cpsr ;@ r10=flags
49781  str r10,[r7,#0x4c] ;@ Save X bit
49782
49783;@ Save result:
49784;@ EaWrite: r1 into register[r11]:
49785  str r1,[r7,r11,lsr #7]
49786
49787  ldrh r8,[r4],#2 ;@ Fetch next opcode
49788  subs r5,r5,#18 ;@ Subtract cycles
49789  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49790  b CycloneEnd
49791
49792;@ ---------- [d0bb] add.l ($33,pc,d3.w*2), d0; =35 uses Opd0bb ----------
49793Opd0bb:
49794;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
49795  ldr r0,[r7,#0x60] ;@ Get Memory base
49796  ldrh r3,[r4] ;@ Get extension word
49797  sub r0,r4,r0 ;@ r0=PC
49798  add r4,r4,#2
49799  mov r2,r3,lsr #10
49800  tst r3,#0x0800 ;@ Is Rn Word or Long
49801  and r2,r2,#0x3c ;@ r2=Index of Rn
49802  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
49803  ldrne   r2,[r7,r2] ;@ r2=Rn.l
49804  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
49805  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
49806  add r0,r2,r0 ;@ r0=Disp+PC+Rn
49807;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
49808  mov lr,pc
49809  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
49810
49811;@ EaCalc : Get register index into r11:
49812  and r11,r8,#0x0e00
49813;@ EaRead : Read register[r11] into r1:
49814  ldr r1,[r7,r11,lsr #7]
49815
49816;@ Do arithmetic:
49817  adds r1,r0,r1
49818  mrs r10,cpsr ;@ r10=flags
49819  str r10,[r7,#0x4c] ;@ Save X bit
49820
49821;@ Save result:
49822;@ EaWrite: r1 into register[r11]:
49823  str r1,[r7,r11,lsr #7]
49824
49825  ldrh r8,[r4],#2 ;@ Fetch next opcode
49826  subs r5,r5,#20 ;@ Subtract cycles
49827  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49828  b CycloneEnd
49829
49830;@ ---------- [d0bc] add.l #$33333333, d0 uses Opd0bc ----------
49831Opd0bc:
49832;@ EaCalc : Get '#$33333333' into r0:
49833  ldrh r2,[r4],#2 ;@ Fetch immediate value
49834  ldrh r3,[r4],#2
49835  orr r0,r3,r2,lsl #16
49836;@ EaRead : Read '#$33333333' (address in r0) into r0:
49837
49838;@ EaCalc : Get register index into r11:
49839  and r11,r8,#0x0e00
49840;@ EaRead : Read register[r11] into r1:
49841  ldr r1,[r7,r11,lsr #7]
49842
49843;@ Do arithmetic:
49844  adds r1,r0,r1
49845  mrs r10,cpsr ;@ r10=flags
49846  str r10,[r7,#0x4c] ;@ Save X bit
49847
49848;@ Save result:
49849;@ EaWrite: r1 into register[r11]:
49850  str r1,[r7,r11,lsr #7]
49851
49852  ldrh r8,[r4],#2 ;@ Fetch next opcode
49853  subs r5,r5,#16 ;@ Subtract cycles
49854  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49855  b CycloneEnd
49856
49857;@ ---------- [d0c0] adda.w d0, a0 uses Opd0c0 ----------
49858Opd0c0:
49859;@ EaCalc : Get register index into r0:
49860  and r0,r8,#0x000f
49861;@ EaRead : Read register[r0] into r0:
49862  ldr r0,[r7,r0,lsl #2]
49863
49864;@ EaCalc : Get register index into r11:
49865  and r11,r8,#0x1e00
49866;@ EaRead : Read register[r11] into r1:
49867  ldr r1,[r7,r11,lsr #7]
49868
49869  mov r0,r0,asl #16
49870
49871  add r1,r1,r0,asr #16
49872
49873;@ EaWrite: r1 into register[r11]:
49874  str r1,[r7,r11,lsr #7]
49875
49876  ldrh r8,[r4],#2 ;@ Fetch next opcode
49877  subs r5,r5,#8 ;@ Subtract cycles
49878  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49879  b CycloneEnd
49880
49881;@ ---------- [d0d0] adda.w (a0), a0 uses Opd0d0 ----------
49882Opd0d0:
49883;@ EaCalc : Get '(a0)' into r0:
49884  and r2,r8,#0x000f
49885  orr r2,r2,#0x8 ;@ A0-7
49886  ldr r0,[r7,r2,lsl #2]
49887;@ EaRead : Read '(a0)' (address in r0) into r0:
49888  mov lr,pc
49889  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49890
49891;@ EaCalc : Get register index into r11:
49892  and r11,r8,#0x1e00
49893;@ EaRead : Read register[r11] into r1:
49894  ldr r1,[r7,r11,lsr #7]
49895
49896  mov r0,r0,asl #16
49897
49898  add r1,r1,r0,asr #16
49899
49900;@ EaWrite: r1 into register[r11]:
49901  str r1,[r7,r11,lsr #7]
49902
49903  ldrh r8,[r4],#2 ;@ Fetch next opcode
49904  subs r5,r5,#12 ;@ Subtract cycles
49905  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49906  b CycloneEnd
49907
49908;@ ---------- [d0d8] adda.w (a0)+, a0 uses Opd0d8 ----------
49909Opd0d8:
49910;@ EaCalc : Get '(a0)+' into r0:
49911  and r2,r8,#0x000f
49912  ldr r0,[r7,r2,lsl #2]
49913  add r3,r0,#2 ;@ Post-increment An
49914  str r3,[r7,r2,lsl #2]
49915;@ EaRead : Read '(a0)+' (address in r0) into r0:
49916  mov lr,pc
49917  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49918
49919;@ EaCalc : Get register index into r11:
49920  and r11,r8,#0x1e00
49921;@ EaRead : Read register[r11] into r1:
49922  ldr r1,[r7,r11,lsr #7]
49923
49924  mov r0,r0,asl #16
49925
49926  add r1,r1,r0,asr #16
49927
49928;@ EaWrite: r1 into register[r11]:
49929  str r1,[r7,r11,lsr #7]
49930
49931  ldrh r8,[r4],#2 ;@ Fetch next opcode
49932  subs r5,r5,#12 ;@ Subtract cycles
49933  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49934  b CycloneEnd
49935
49936;@ ---------- [d0e0] adda.w -(a0), a0 uses Opd0e0 ----------
49937Opd0e0:
49938;@ EaCalc : Get '-(a0)' into r0:
49939  and r2,r8,#0x000f
49940  orr r2,r2,#0x8 ;@ A0-7
49941  ldr r0,[r7,r2,lsl #2]
49942  sub r0,r0,#2 ;@ Pre-decrement An
49943  str r0,[r7,r2,lsl #2]
49944;@ EaRead : Read '-(a0)' (address in r0) into r0:
49945  mov lr,pc
49946  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49947
49948;@ EaCalc : Get register index into r11:
49949  and r11,r8,#0x1e00
49950;@ EaRead : Read register[r11] into r1:
49951  ldr r1,[r7,r11,lsr #7]
49952
49953  mov r0,r0,asl #16
49954
49955  add r1,r1,r0,asr #16
49956
49957;@ EaWrite: r1 into register[r11]:
49958  str r1,[r7,r11,lsr #7]
49959
49960  ldrh r8,[r4],#2 ;@ Fetch next opcode
49961  subs r5,r5,#14 ;@ Subtract cycles
49962  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49963  b CycloneEnd
49964
49965;@ ---------- [d0e8] adda.w ($3333,a0), a0 uses Opd0e8 ----------
49966Opd0e8:
49967;@ EaCalc : Get '($3333,a0)' into r0:
49968  ldrsh r0,[r4],#2 ;@ Fetch offset
49969  and r2,r8,#0x000f
49970  ldr r2,[r7,r2,lsl #2]
49971  add r0,r0,r2 ;@ Add on offset
49972;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
49973  mov lr,pc
49974  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
49975
49976;@ EaCalc : Get register index into r11:
49977  and r11,r8,#0x1e00
49978;@ EaRead : Read register[r11] into r1:
49979  ldr r1,[r7,r11,lsr #7]
49980
49981  mov r0,r0,asl #16
49982
49983  add r1,r1,r0,asr #16
49984
49985;@ EaWrite: r1 into register[r11]:
49986  str r1,[r7,r11,lsr #7]
49987
49988  ldrh r8,[r4],#2 ;@ Fetch next opcode
49989  subs r5,r5,#16 ;@ Subtract cycles
49990  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
49991  b CycloneEnd
49992
49993;@ ---------- [d0f0] adda.w ($33,a0,d3.w*2), a0 uses Opd0f0 ----------
49994Opd0f0:
49995;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
49996;@ Get extension word into r3:
49997  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
49998  mov r2,r3,lsr #10
49999  tst r3,#0x0800 ;@ Is Rn Word or Long
50000  and r2,r2,#0x3c ;@ r2=Index of Rn
50001  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
50002  ldrne   r2,[r7,r2] ;@ r2=Rn.l
50003  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
50004  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
50005  and r2,r8,#0x000f
50006  orr r2,r2,#0x8 ;@ A0-7
50007  ldr r2,[r7,r2,lsl #2]
50008  add r0,r2,r3 ;@ r0=Disp+An+Rn
50009;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
50010  mov lr,pc
50011  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50012
50013;@ EaCalc : Get register index into r11:
50014  and r11,r8,#0x1e00
50015;@ EaRead : Read register[r11] into r1:
50016  ldr r1,[r7,r11,lsr #7]
50017
50018  mov r0,r0,asl #16
50019
50020  add r1,r1,r0,asr #16
50021
50022;@ EaWrite: r1 into register[r11]:
50023  str r1,[r7,r11,lsr #7]
50024
50025  ldrh r8,[r4],#2 ;@ Fetch next opcode
50026  subs r5,r5,#18 ;@ Subtract cycles
50027  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50028  b CycloneEnd
50029
50030;@ ---------- [d0f8] adda.w $3333.w, a0 uses Opd0f8 ----------
50031Opd0f8:
50032;@ EaCalc : Get '$3333.w' into r0:
50033  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
50034;@ EaRead : Read '$3333.w' (address in r0) into r0:
50035  mov lr,pc
50036  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50037
50038;@ EaCalc : Get register index into r11:
50039  and r11,r8,#0x1e00
50040;@ EaRead : Read register[r11] into r1:
50041  ldr r1,[r7,r11,lsr #7]
50042
50043  mov r0,r0,asl #16
50044
50045  add r1,r1,r0,asr #16
50046
50047;@ EaWrite: r1 into register[r11]:
50048  str r1,[r7,r11,lsr #7]
50049
50050  ldrh r8,[r4],#2 ;@ Fetch next opcode
50051  subs r5,r5,#16 ;@ Subtract cycles
50052  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50053  b CycloneEnd
50054
50055;@ ---------- [d0f9] adda.w $33333333.l, a0 uses Opd0f9 ----------
50056Opd0f9:
50057;@ EaCalc : Get '$33333333.l' into r0:
50058  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
50059  ldrh r0,[r4],#2
50060  orr r0,r0,r2,lsl #16
50061;@ EaRead : Read '$33333333.l' (address in r0) into r0:
50062  mov lr,pc
50063  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50064
50065;@ EaCalc : Get register index into r11:
50066  and r11,r8,#0x1e00
50067;@ EaRead : Read register[r11] into r1:
50068  ldr r1,[r7,r11,lsr #7]
50069
50070  mov r0,r0,asl #16
50071
50072  add r1,r1,r0,asr #16
50073
50074;@ EaWrite: r1 into register[r11]:
50075  str r1,[r7,r11,lsr #7]
50076
50077  ldrh r8,[r4],#2 ;@ Fetch next opcode
50078  subs r5,r5,#20 ;@ Subtract cycles
50079  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50080  b CycloneEnd
50081
50082;@ ---------- [d0fa] adda.w ($3333,pc), a0; =3335 uses Opd0fa ----------
50083Opd0fa:
50084;@ EaCalc : Get '($3333,pc)' into r0:
50085  ldr r0,[r7,#0x60] ;@ Get Memory base
50086  sub r0,r4,r0 ;@ Real PC
50087  ldrsh r2,[r4],#2 ;@ Fetch extension
50088  add r0,r2,r0 ;@ ($nn,PC)
50089;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
50090  mov lr,pc
50091  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
50092
50093;@ EaCalc : Get register index into r11:
50094  and r11,r8,#0x1e00
50095;@ EaRead : Read register[r11] into r1:
50096  ldr r1,[r7,r11,lsr #7]
50097
50098  mov r0,r0,asl #16
50099
50100  add r1,r1,r0,asr #16
50101
50102;@ EaWrite: r1 into register[r11]:
50103  str r1,[r7,r11,lsr #7]
50104
50105  ldrh r8,[r4],#2 ;@ Fetch next opcode
50106  subs r5,r5,#16 ;@ Subtract cycles
50107  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50108  b CycloneEnd
50109
50110;@ ---------- [d0fb] adda.w ($33,pc,d3.w*2), a0; =35 uses Opd0fb ----------
50111Opd0fb:
50112;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
50113  ldr r0,[r7,#0x60] ;@ Get Memory base
50114  ldrh r3,[r4] ;@ Get extension word
50115  sub r0,r4,r0 ;@ r0=PC
50116  add r4,r4,#2
50117  mov r2,r3,lsr #10
50118  tst r3,#0x0800 ;@ Is Rn Word or Long
50119  and r2,r2,#0x3c ;@ r2=Index of Rn
50120  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
50121  ldrne   r2,[r7,r2] ;@ r2=Rn.l
50122  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
50123  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
50124  add r0,r2,r0 ;@ r0=Disp+PC+Rn
50125;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
50126  mov lr,pc
50127  ldr pc,[r7,#0x84] ;@ Call fetch16(r0) handler
50128
50129;@ EaCalc : Get register index into r11:
50130  and r11,r8,#0x1e00
50131;@ EaRead : Read register[r11] into r1:
50132  ldr r1,[r7,r11,lsr #7]
50133
50134  mov r0,r0,asl #16
50135
50136  add r1,r1,r0,asr #16
50137
50138;@ EaWrite: r1 into register[r11]:
50139  str r1,[r7,r11,lsr #7]
50140
50141  ldrh r8,[r4],#2 ;@ Fetch next opcode
50142  subs r5,r5,#18 ;@ Subtract cycles
50143  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50144  b CycloneEnd
50145
50146;@ ---------- [d0fc] adda.w #$3333, a0 uses Opd0fc ----------
50147Opd0fc:
50148;@ EaCalc : Get '#$3333' into r0:
50149  ldrsh r0,[r4],#2 ;@ Fetch immediate value
50150;@ EaRead : Read '#$3333' (address in r0) into r0:
50151
50152;@ EaCalc : Get register index into r11:
50153  and r11,r8,#0x1e00
50154;@ EaRead : Read register[r11] into r1:
50155  ldr r1,[r7,r11,lsr #7]
50156
50157  mov r0,r0,asl #16
50158
50159  add r1,r1,r0,asr #16
50160
50161;@ EaWrite: r1 into register[r11]:
50162  str r1,[r7,r11,lsr #7]
50163
50164  ldrh r8,[r4],#2 ;@ Fetch next opcode
50165  subs r5,r5,#12 ;@ Subtract cycles
50166  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50167  b CycloneEnd
50168
50169;@ ---------- [d100] addx.b d0, d0 uses Opd100 ----------
50170Opd100:
50171;@ Get src/dest reg vals
50172;@ EaCalc : Get register index into r6:
50173  and r6,r8,#0x0007
50174;@ EaRead : Read register[r6] into r6:
50175  ldr r6,[r7,r6,lsl #2]
50176
50177;@ EaCalc : Get register index into r11:
50178  and r11,r8,#0x0e00
50179;@ EaRead : Read register[r11] into r0:
50180  ldr r0,[r7,r11,lsr #7]
50181
50182  mov r6,r6,asl #24
50183
50184;@ Do arithmetic:
50185;@ Get X bit:
50186  ldr r2,[r7,#0x4c]
50187  tst r2,r2,lsl #3 ;@ Get into Carry
50188
50189;@ Make sure the carry bit will tip the balance:
50190  mvn r2,#0
50191  orr r6,r6,r2,lsr #8
50192
50193  adcs r1,r6,r0,asl #24
50194  orr r3,r10,#0xb0000000 ;@ for old Z
50195  mrs r10,cpsr ;@ r10=flags
50196  str r10,[r7,#0x4c] ;@ Save X bit
50197  movs r2,r1,lsr #24
50198  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
50199  andeq r10,r10,r3 ;@ fix Z
50200
50201;@ Save result:
50202;@ EaWrite: r1 into register[r11]:
50203  mov r1,r1,lsr #24
50204  strb r1,[r7,r11,lsr #7]
50205
50206  ldr r6,[r7,#0x54]
50207  ldrh r8,[r4],#2 ;@ Fetch next opcode
50208  subs r5,r5,#4 ;@ Subtract cycles
50209  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50210  b CycloneEnd
50211
50212;@ ---------- [d108] addx.b -(a0), -(a0) uses Opd108 ----------
50213Opd108:
50214;@ Get src/dest EA vals
50215;@ EaCalc : Get '-(a0)' into r0:
50216  and r2,r8,#0x000f
50217  ldr r0,[r7,r2,lsl #2]
50218  sub r0,r0,#1 ;@ Pre-decrement An
50219  str r0,[r7,r2,lsl #2]
50220;@ EaRead : Read '-(a0)' (address in r0) into r6:
50221  mov lr,pc
50222  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50223  mov r6,r0,asl #24
50224
50225;@ EaCalc : Get '-(a0)' into r11:
50226  and r2,r8,#0x1e00
50227  ldr r11,[r7,r2,lsr #7]
50228  sub r11,r11,#1 ;@ Pre-decrement An
50229  str r11,[r7,r2,lsr #7]
50230;@ EaRead : Read '-(a0)' (address in r11) into r0:
50231  add lr,pc,#4
50232  mov r0,r11
50233  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50234
50235;@ Do arithmetic:
50236;@ Get X bit:
50237  ldr r2,[r7,#0x4c]
50238  tst r2,r2,lsl #3 ;@ Get into Carry
50239
50240;@ Make sure the carry bit will tip the balance:
50241  mvn r2,#0
50242  orr r6,r6,r2,lsr #8
50243
50244  adcs r1,r6,r0,asl #24
50245  orr r3,r10,#0xb0000000 ;@ for old Z
50246  mrs r10,cpsr ;@ r10=flags
50247  str r10,[r7,#0x4c] ;@ Save X bit
50248  movs r2,r1,lsr #24
50249  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
50250  andeq r10,r10,r3 ;@ fix Z
50251
50252;@ Save result:
50253;@ EaWrite: Write r1 into '-(a0)' (address in r11):
50254  mov r1,r1,lsr #24
50255  add lr,pc,#4
50256  mov r0,r11
50257  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50258
50259  ldr r6,[r7,#0x54]
50260  ldrh r8,[r4],#2 ;@ Fetch next opcode
50261  subs r5,r5,#18 ;@ Subtract cycles
50262  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50263  b CycloneEnd
50264
50265;@ ---------- [d10f] addx.b -(a7), -(a0) uses Opd10f ----------
50266Opd10f:
50267;@ Get src/dest EA vals
50268;@ EaCalc : Get '-(a7)' into r0:
50269  ldr r0,[r7,#0x3c] ;@ A7
50270  sub r0,r0,#2 ;@ Pre-decrement An
50271  str r0,[r7,#0x3c] ;@ A7
50272;@ EaRead : Read '-(a7)' (address in r0) into r6:
50273  mov lr,pc
50274  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50275  mov r6,r0,asl #24
50276
50277;@ EaCalc : Get '-(a0)' into r11:
50278  and r2,r8,#0x1e00
50279  ldr r11,[r7,r2,lsr #7]
50280  sub r11,r11,#1 ;@ Pre-decrement An
50281  str r11,[r7,r2,lsr #7]
50282;@ EaRead : Read '-(a0)' (address in r11) into r0:
50283  add lr,pc,#4
50284  mov r0,r11
50285  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50286
50287;@ Do arithmetic:
50288;@ Get X bit:
50289  ldr r2,[r7,#0x4c]
50290  tst r2,r2,lsl #3 ;@ Get into Carry
50291
50292;@ Make sure the carry bit will tip the balance:
50293  mvn r2,#0
50294  orr r6,r6,r2,lsr #8
50295
50296  adcs r1,r6,r0,asl #24
50297  orr r3,r10,#0xb0000000 ;@ for old Z
50298  mrs r10,cpsr ;@ r10=flags
50299  str r10,[r7,#0x4c] ;@ Save X bit
50300  movs r2,r1,lsr #24
50301  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
50302  andeq r10,r10,r3 ;@ fix Z
50303
50304;@ Save result:
50305;@ EaWrite: Write r1 into '-(a0)' (address in r11):
50306  mov r1,r1,lsr #24
50307  add lr,pc,#4
50308  mov r0,r11
50309  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50310
50311  ldr r6,[r7,#0x54]
50312  ldrh r8,[r4],#2 ;@ Fetch next opcode
50313  subs r5,r5,#18 ;@ Subtract cycles
50314  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50315  b CycloneEnd
50316
50317;@ ---------- [d110] add.b d0, (a0) uses Opd110 ----------
50318Opd110:
50319;@ EaCalc : Get '(a0)' into r11:
50320  and r2,r8,#0x000f
50321  orr r2,r2,#0x8 ;@ A0-7
50322  ldr r11,[r7,r2,lsl #2]
50323;@ EaRead : Read '(a0)' (address in r11) into r0:
50324  add lr,pc,#4
50325  mov r0,r11
50326  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50327
50328;@ EaCalc : Get register index into r1:
50329  and r1,r8,#0x0e00
50330;@ EaRead : Read register[r1] into r1:
50331  ldr r1,[r7,r1,lsr #7]
50332
50333;@ Do arithmetic:
50334  mov r0,r0,asl #24
50335  adds r1,r0,r1,asl #24
50336  mrs r10,cpsr ;@ r10=flags
50337  str r10,[r7,#0x4c] ;@ Save X bit
50338
50339;@ Save result:
50340  mov r1,r1,asr #24
50341;@ EaWrite: Write r1 into '(a0)' (address in r11):
50342  and r1,r1,#0xff
50343  add lr,pc,#4
50344  mov r0,r11
50345  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50346
50347  ldrh r8,[r4],#2 ;@ Fetch next opcode
50348  subs r5,r5,#12 ;@ Subtract cycles
50349  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50350  b CycloneEnd
50351
50352;@ ---------- [d118] add.b d0, (a0)+ uses Opd118 ----------
50353Opd118:
50354;@ EaCalc : Get '(a0)+' into r11:
50355  and r2,r8,#0x000f
50356  ldr r11,[r7,r2,lsl #2]
50357  add r3,r11,#1 ;@ Post-increment An
50358  str r3,[r7,r2,lsl #2]
50359;@ EaRead : Read '(a0)+' (address in r11) into r0:
50360  add lr,pc,#4
50361  mov r0,r11
50362  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50363
50364;@ EaCalc : Get register index into r1:
50365  and r1,r8,#0x0e00
50366;@ EaRead : Read register[r1] into r1:
50367  ldr r1,[r7,r1,lsr #7]
50368
50369;@ Do arithmetic:
50370  mov r0,r0,asl #24
50371  adds r1,r0,r1,asl #24
50372  mrs r10,cpsr ;@ r10=flags
50373  str r10,[r7,#0x4c] ;@ Save X bit
50374
50375;@ Save result:
50376  mov r1,r1,asr #24
50377;@ EaWrite: Write r1 into '(a0)+' (address in r11):
50378  and r1,r1,#0xff
50379  add lr,pc,#4
50380  mov r0,r11
50381  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50382
50383  ldrh r8,[r4],#2 ;@ Fetch next opcode
50384  subs r5,r5,#12 ;@ Subtract cycles
50385  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50386  b CycloneEnd
50387
50388;@ ---------- [d11f] add.b d0, (a7)+ uses Opd11f ----------
50389Opd11f:
50390;@ EaCalc : Get '(a7)+' into r11:
50391  ldr r11,[r7,#0x3c] ;@ A7
50392  add r3,r11,#2 ;@ Post-increment An
50393  str r3,[r7,#0x3c] ;@ A7
50394;@ EaRead : Read '(a7)+' (address in r11) into r0:
50395  add lr,pc,#4
50396  mov r0,r11
50397  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50398
50399;@ EaCalc : Get register index into r1:
50400  and r1,r8,#0x0e00
50401;@ EaRead : Read register[r1] into r1:
50402  ldr r1,[r7,r1,lsr #7]
50403
50404;@ Do arithmetic:
50405  mov r0,r0,asl #24
50406  adds r1,r0,r1,asl #24
50407  mrs r10,cpsr ;@ r10=flags
50408  str r10,[r7,#0x4c] ;@ Save X bit
50409
50410;@ Save result:
50411  mov r1,r1,asr #24
50412;@ EaWrite: Write r1 into '(a7)+' (address in r11):
50413  and r1,r1,#0xff
50414  add lr,pc,#4
50415  mov r0,r11
50416  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50417
50418  ldrh r8,[r4],#2 ;@ Fetch next opcode
50419  subs r5,r5,#12 ;@ Subtract cycles
50420  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50421  b CycloneEnd
50422
50423;@ ---------- [d120] add.b d0, -(a0) uses Opd120 ----------
50424Opd120:
50425;@ EaCalc : Get '-(a0)' into r11:
50426  and r2,r8,#0x000f
50427  orr r2,r2,#0x8 ;@ A0-7
50428  ldr r11,[r7,r2,lsl #2]
50429  sub r11,r11,#1 ;@ Pre-decrement An
50430  str r11,[r7,r2,lsl #2]
50431;@ EaRead : Read '-(a0)' (address in r11) into r0:
50432  add lr,pc,#4
50433  mov r0,r11
50434  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50435
50436;@ EaCalc : Get register index into r1:
50437  and r1,r8,#0x0e00
50438;@ EaRead : Read register[r1] into r1:
50439  ldr r1,[r7,r1,lsr #7]
50440
50441;@ Do arithmetic:
50442  mov r0,r0,asl #24
50443  adds r1,r0,r1,asl #24
50444  mrs r10,cpsr ;@ r10=flags
50445  str r10,[r7,#0x4c] ;@ Save X bit
50446
50447;@ Save result:
50448  mov r1,r1,asr #24
50449;@ EaWrite: Write r1 into '-(a0)' (address in r11):
50450  and r1,r1,#0xff
50451  add lr,pc,#4
50452  mov r0,r11
50453  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50454
50455  ldrh r8,[r4],#2 ;@ Fetch next opcode
50456  subs r5,r5,#14 ;@ Subtract cycles
50457  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50458  b CycloneEnd
50459
50460;@ ---------- [d127] add.b d0, -(a7) uses Opd127 ----------
50461Opd127:
50462;@ EaCalc : Get '-(a7)' into r11:
50463  ldr r11,[r7,#0x3c] ;@ A7
50464  sub r11,r11,#2 ;@ Pre-decrement An
50465  str r11,[r7,#0x3c] ;@ A7
50466;@ EaRead : Read '-(a7)' (address in r11) into r0:
50467  add lr,pc,#4
50468  mov r0,r11
50469  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50470
50471;@ EaCalc : Get register index into r1:
50472  and r1,r8,#0x0e00
50473;@ EaRead : Read register[r1] into r1:
50474  ldr r1,[r7,r1,lsr #7]
50475
50476;@ Do arithmetic:
50477  mov r0,r0,asl #24
50478  adds r1,r0,r1,asl #24
50479  mrs r10,cpsr ;@ r10=flags
50480  str r10,[r7,#0x4c] ;@ Save X bit
50481
50482;@ Save result:
50483  mov r1,r1,asr #24
50484;@ EaWrite: Write r1 into '-(a7)' (address in r11):
50485  and r1,r1,#0xff
50486  add lr,pc,#4
50487  mov r0,r11
50488  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50489
50490  ldrh r8,[r4],#2 ;@ Fetch next opcode
50491  subs r5,r5,#14 ;@ Subtract cycles
50492  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50493  b CycloneEnd
50494
50495;@ ---------- [d128] add.b d0, ($3333,a0) uses Opd128 ----------
50496Opd128:
50497;@ EaCalc : Get '($3333,a0)' into r11:
50498  ldrsh r0,[r4],#2 ;@ Fetch offset
50499  and r2,r8,#0x000f
50500  ldr r2,[r7,r2,lsl #2]
50501  add r11,r0,r2 ;@ Add on offset
50502;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
50503  add lr,pc,#4
50504  mov r0,r11
50505  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50506
50507;@ EaCalc : Get register index into r1:
50508  and r1,r8,#0x0e00
50509;@ EaRead : Read register[r1] into r1:
50510  ldr r1,[r7,r1,lsr #7]
50511
50512;@ Do arithmetic:
50513  mov r0,r0,asl #24
50514  adds r1,r0,r1,asl #24
50515  mrs r10,cpsr ;@ r10=flags
50516  str r10,[r7,#0x4c] ;@ Save X bit
50517
50518;@ Save result:
50519  mov r1,r1,asr #24
50520;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
50521  and r1,r1,#0xff
50522  add lr,pc,#4
50523  mov r0,r11
50524  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50525
50526  ldrh r8,[r4],#2 ;@ Fetch next opcode
50527  subs r5,r5,#16 ;@ Subtract cycles
50528  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50529  b CycloneEnd
50530
50531;@ ---------- [d130] add.b d0, ($33,a0,d3.w*2) uses Opd130 ----------
50532Opd130:
50533;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
50534;@ Get extension word into r3:
50535  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
50536  mov r2,r3,lsr #10
50537  tst r3,#0x0800 ;@ Is Rn Word or Long
50538  and r2,r2,#0x3c ;@ r2=Index of Rn
50539  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
50540  ldrne   r2,[r7,r2] ;@ r2=Rn.l
50541  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
50542  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
50543  and r2,r8,#0x000f
50544  orr r2,r2,#0x8 ;@ A0-7
50545  ldr r2,[r7,r2,lsl #2]
50546  add r11,r2,r3 ;@ r11=Disp+An+Rn
50547;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
50548  add lr,pc,#4
50549  mov r0,r11
50550  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50551
50552;@ EaCalc : Get register index into r1:
50553  and r1,r8,#0x0e00
50554;@ EaRead : Read register[r1] into r1:
50555  ldr r1,[r7,r1,lsr #7]
50556
50557;@ Do arithmetic:
50558  mov r0,r0,asl #24
50559  adds r1,r0,r1,asl #24
50560  mrs r10,cpsr ;@ r10=flags
50561  str r10,[r7,#0x4c] ;@ Save X bit
50562
50563;@ Save result:
50564  mov r1,r1,asr #24
50565;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
50566  and r1,r1,#0xff
50567  add lr,pc,#4
50568  mov r0,r11
50569  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50570
50571  ldrh r8,[r4],#2 ;@ Fetch next opcode
50572  subs r5,r5,#18 ;@ Subtract cycles
50573  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50574  b CycloneEnd
50575
50576;@ ---------- [d138] add.b d0, $3333.w uses Opd138 ----------
50577Opd138:
50578;@ EaCalc : Get '$3333.w' into r11:
50579  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
50580;@ EaRead : Read '$3333.w' (address in r11) into r0:
50581  add lr,pc,#4
50582  mov r0,r11
50583  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50584
50585;@ EaCalc : Get register index into r1:
50586  and r1,r8,#0x0e00
50587;@ EaRead : Read register[r1] into r1:
50588  ldr r1,[r7,r1,lsr #7]
50589
50590;@ Do arithmetic:
50591  mov r0,r0,asl #24
50592  adds r1,r0,r1,asl #24
50593  mrs r10,cpsr ;@ r10=flags
50594  str r10,[r7,#0x4c] ;@ Save X bit
50595
50596;@ Save result:
50597  mov r1,r1,asr #24
50598;@ EaWrite: Write r1 into '$3333.w' (address in r11):
50599  and r1,r1,#0xff
50600  add lr,pc,#4
50601  mov r0,r11
50602  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50603
50604  ldrh r8,[r4],#2 ;@ Fetch next opcode
50605  subs r5,r5,#16 ;@ Subtract cycles
50606  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50607  b CycloneEnd
50608
50609;@ ---------- [d139] add.b d0, $33333333.l uses Opd139 ----------
50610Opd139:
50611;@ EaCalc : Get '$33333333.l' into r11:
50612  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
50613  ldrh r0,[r4],#2
50614  orr r11,r0,r2,lsl #16
50615;@ EaRead : Read '$33333333.l' (address in r11) into r0:
50616  add lr,pc,#4
50617  mov r0,r11
50618  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
50619
50620;@ EaCalc : Get register index into r1:
50621  and r1,r8,#0x0e00
50622;@ EaRead : Read register[r1] into r1:
50623  ldr r1,[r7,r1,lsr #7]
50624
50625;@ Do arithmetic:
50626  mov r0,r0,asl #24
50627  adds r1,r0,r1,asl #24
50628  mrs r10,cpsr ;@ r10=flags
50629  str r10,[r7,#0x4c] ;@ Save X bit
50630
50631;@ Save result:
50632  mov r1,r1,asr #24
50633;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
50634  and r1,r1,#0xff
50635  add lr,pc,#4
50636  mov r0,r11
50637  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
50638
50639  ldrh r8,[r4],#2 ;@ Fetch next opcode
50640  subs r5,r5,#20 ;@ Subtract cycles
50641  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50642  b CycloneEnd
50643
50644;@ ---------- [d140] addx.w d0, d0 uses Opd140 ----------
50645Opd140:
50646;@ Get src/dest reg vals
50647;@ EaCalc : Get register index into r6:
50648  and r6,r8,#0x0007
50649;@ EaRead : Read register[r6] into r6:
50650  ldr r6,[r7,r6,lsl #2]
50651
50652;@ EaCalc : Get register index into r11:
50653  and r11,r8,#0x0e00
50654  mov r11,r11,lsr #7
50655;@ EaRead : Read register[r11] into r0:
50656  ldr r0,[r7,r11]
50657
50658  mov r6,r6,asl #16
50659
50660;@ Do arithmetic:
50661;@ Get X bit:
50662  ldr r2,[r7,#0x4c]
50663  tst r2,r2,lsl #3 ;@ Get into Carry
50664
50665;@ Make sure the carry bit will tip the balance:
50666  mvn r2,#0
50667  orr r6,r6,r2,lsr #16
50668
50669  adcs r1,r6,r0,asl #16
50670  orr r3,r10,#0xb0000000 ;@ for old Z
50671  mrs r10,cpsr ;@ r10=flags
50672  str r10,[r7,#0x4c] ;@ Save X bit
50673  movs r2,r1,lsr #16
50674  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
50675  andeq r10,r10,r3 ;@ fix Z
50676
50677;@ Save result:
50678;@ EaWrite: r1 into register[r11]:
50679  mov r1,r1,lsr #16
50680  strh r1,[r7,r11]
50681
50682  ldr r6,[r7,#0x54]
50683  ldrh r8,[r4],#2 ;@ Fetch next opcode
50684  subs r5,r5,#4 ;@ Subtract cycles
50685  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50686  b CycloneEnd
50687
50688;@ ---------- [d148] addx.w -(a0), -(a0) uses Opd148 ----------
50689Opd148:
50690;@ Get src/dest EA vals
50691;@ EaCalc : Get '-(a0)' into r0:
50692  and r2,r8,#0x000f
50693  ldr r0,[r7,r2,lsl #2]
50694  sub r0,r0,#2 ;@ Pre-decrement An
50695  str r0,[r7,r2,lsl #2]
50696;@ EaRead : Read '-(a0)' (address in r0) into r6:
50697  mov lr,pc
50698  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50699  mov r6,r0,asl #16
50700
50701;@ EaCalc : Get '-(a0)' into r11:
50702  and r2,r8,#0x1e00
50703  ldr r11,[r7,r2,lsr #7]
50704  sub r11,r11,#2 ;@ Pre-decrement An
50705  str r11,[r7,r2,lsr #7]
50706;@ EaRead : Read '-(a0)' (address in r11) into r0:
50707  add lr,pc,#4
50708  mov r0,r11
50709  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50710
50711;@ Do arithmetic:
50712;@ Get X bit:
50713  ldr r2,[r7,#0x4c]
50714  tst r2,r2,lsl #3 ;@ Get into Carry
50715
50716;@ Make sure the carry bit will tip the balance:
50717  mvn r2,#0
50718  orr r6,r6,r2,lsr #16
50719
50720  adcs r1,r6,r0,asl #16
50721  orr r3,r10,#0xb0000000 ;@ for old Z
50722  mrs r10,cpsr ;@ r10=flags
50723  str r10,[r7,#0x4c] ;@ Save X bit
50724  movs r2,r1,lsr #16
50725  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
50726  andeq r10,r10,r3 ;@ fix Z
50727
50728;@ Save result:
50729;@ EaWrite: Write r1 into '-(a0)' (address in r11):
50730  mov r1,r1,lsr #16
50731  add lr,pc,#4
50732  mov r0,r11
50733  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
50734
50735  ldr r6,[r7,#0x54]
50736  ldrh r8,[r4],#2 ;@ Fetch next opcode
50737  subs r5,r5,#18 ;@ Subtract cycles
50738  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50739  b CycloneEnd
50740
50741;@ ---------- [d150] add.w d0, (a0) uses Opd150 ----------
50742Opd150:
50743;@ EaCalc : Get '(a0)' into r11:
50744  and r2,r8,#0x000f
50745  orr r2,r2,#0x8 ;@ A0-7
50746  ldr r11,[r7,r2,lsl #2]
50747;@ EaRead : Read '(a0)' (address in r11) into r0:
50748  add lr,pc,#4
50749  mov r0,r11
50750  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50751
50752;@ EaCalc : Get register index into r1:
50753  and r1,r8,#0x0e00
50754;@ EaRead : Read register[r1] into r1:
50755  ldr r1,[r7,r1,lsr #7]
50756
50757;@ Do arithmetic:
50758  mov r0,r0,asl #16
50759  adds r1,r0,r1,asl #16
50760  mrs r10,cpsr ;@ r10=flags
50761  str r10,[r7,#0x4c] ;@ Save X bit
50762
50763;@ Save result:
50764  mov r1,r1,asr #16
50765;@ EaWrite: Write r1 into '(a0)' (address in r11):
50766  uxth r1,r1 ;@ zero extend
50767  add lr,pc,#4
50768  mov r0,r11
50769  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
50770
50771  ldrh r8,[r4],#2 ;@ Fetch next opcode
50772  subs r5,r5,#12 ;@ Subtract cycles
50773  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50774  b CycloneEnd
50775
50776;@ ---------- [d158] add.w d0, (a0)+ uses Opd158 ----------
50777Opd158:
50778;@ EaCalc : Get '(a0)+' into r11:
50779  and r2,r8,#0x000f
50780  ldr r11,[r7,r2,lsl #2]
50781  add r3,r11,#2 ;@ Post-increment An
50782  str r3,[r7,r2,lsl #2]
50783;@ EaRead : Read '(a0)+' (address in r11) into r0:
50784  add lr,pc,#4
50785  mov r0,r11
50786  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50787
50788;@ EaCalc : Get register index into r1:
50789  and r1,r8,#0x0e00
50790;@ EaRead : Read register[r1] into r1:
50791  ldr r1,[r7,r1,lsr #7]
50792
50793;@ Do arithmetic:
50794  mov r0,r0,asl #16
50795  adds r1,r0,r1,asl #16
50796  mrs r10,cpsr ;@ r10=flags
50797  str r10,[r7,#0x4c] ;@ Save X bit
50798
50799;@ Save result:
50800  mov r1,r1,asr #16
50801;@ EaWrite: Write r1 into '(a0)+' (address in r11):
50802  uxth r1,r1 ;@ zero extend
50803  add lr,pc,#4
50804  mov r0,r11
50805  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
50806
50807  ldrh r8,[r4],#2 ;@ Fetch next opcode
50808  subs r5,r5,#12 ;@ Subtract cycles
50809  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50810  b CycloneEnd
50811
50812;@ ---------- [d160] add.w d0, -(a0) uses Opd160 ----------
50813Opd160:
50814;@ EaCalc : Get '-(a0)' into r11:
50815  and r2,r8,#0x000f
50816  orr r2,r2,#0x8 ;@ A0-7
50817  ldr r11,[r7,r2,lsl #2]
50818  sub r11,r11,#2 ;@ Pre-decrement An
50819  str r11,[r7,r2,lsl #2]
50820;@ EaRead : Read '-(a0)' (address in r11) into r0:
50821  add lr,pc,#4
50822  mov r0,r11
50823  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50824
50825;@ EaCalc : Get register index into r1:
50826  and r1,r8,#0x0e00
50827;@ EaRead : Read register[r1] into r1:
50828  ldr r1,[r7,r1,lsr #7]
50829
50830;@ Do arithmetic:
50831  mov r0,r0,asl #16
50832  adds r1,r0,r1,asl #16
50833  mrs r10,cpsr ;@ r10=flags
50834  str r10,[r7,#0x4c] ;@ Save X bit
50835
50836;@ Save result:
50837  mov r1,r1,asr #16
50838;@ EaWrite: Write r1 into '-(a0)' (address in r11):
50839  uxth r1,r1 ;@ zero extend
50840  add lr,pc,#4
50841  mov r0,r11
50842  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
50843
50844  ldrh r8,[r4],#2 ;@ Fetch next opcode
50845  subs r5,r5,#14 ;@ Subtract cycles
50846  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50847  b CycloneEnd
50848
50849;@ ---------- [d168] add.w d0, ($3333,a0) uses Opd168 ----------
50850Opd168:
50851;@ EaCalc : Get '($3333,a0)' into r11:
50852  ldrsh r0,[r4],#2 ;@ Fetch offset
50853  and r2,r8,#0x000f
50854  ldr r2,[r7,r2,lsl #2]
50855  add r11,r0,r2 ;@ Add on offset
50856;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
50857  add lr,pc,#4
50858  mov r0,r11
50859  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50860
50861;@ EaCalc : Get register index into r1:
50862  and r1,r8,#0x0e00
50863;@ EaRead : Read register[r1] into r1:
50864  ldr r1,[r7,r1,lsr #7]
50865
50866;@ Do arithmetic:
50867  mov r0,r0,asl #16
50868  adds r1,r0,r1,asl #16
50869  mrs r10,cpsr ;@ r10=flags
50870  str r10,[r7,#0x4c] ;@ Save X bit
50871
50872;@ Save result:
50873  mov r1,r1,asr #16
50874;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
50875  uxth r1,r1 ;@ zero extend
50876  add lr,pc,#4
50877  mov r0,r11
50878  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
50879
50880  ldrh r8,[r4],#2 ;@ Fetch next opcode
50881  subs r5,r5,#16 ;@ Subtract cycles
50882  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50883  b CycloneEnd
50884
50885;@ ---------- [d170] add.w d0, ($33,a0,d3.w*2) uses Opd170 ----------
50886Opd170:
50887;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
50888;@ Get extension word into r3:
50889  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
50890  mov r2,r3,lsr #10
50891  tst r3,#0x0800 ;@ Is Rn Word or Long
50892  and r2,r2,#0x3c ;@ r2=Index of Rn
50893  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
50894  ldrne   r2,[r7,r2] ;@ r2=Rn.l
50895  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
50896  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
50897  and r2,r8,#0x000f
50898  orr r2,r2,#0x8 ;@ A0-7
50899  ldr r2,[r7,r2,lsl #2]
50900  add r11,r2,r3 ;@ r11=Disp+An+Rn
50901;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
50902  add lr,pc,#4
50903  mov r0,r11
50904  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50905
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  mov r0,r0,asl #16
50913  adds r1,r0,r1,asl #16
50914  mrs r10,cpsr ;@ r10=flags
50915  str r10,[r7,#0x4c] ;@ Save X bit
50916
50917;@ Save result:
50918  mov r1,r1,asr #16
50919;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
50920  uxth r1,r1 ;@ zero extend
50921  add lr,pc,#4
50922  mov r0,r11
50923  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
50924
50925  ldrh r8,[r4],#2 ;@ Fetch next opcode
50926  subs r5,r5,#18 ;@ Subtract cycles
50927  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50928  b CycloneEnd
50929
50930;@ ---------- [d178] add.w d0, $3333.w uses Opd178 ----------
50931Opd178:
50932;@ EaCalc : Get '$3333.w' into r11:
50933  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
50934;@ EaRead : Read '$3333.w' (address in r11) into r0:
50935  add lr,pc,#4
50936  mov r0,r11
50937  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50938
50939;@ EaCalc : Get register index into r1:
50940  and r1,r8,#0x0e00
50941;@ EaRead : Read register[r1] into r1:
50942  ldr r1,[r7,r1,lsr #7]
50943
50944;@ Do arithmetic:
50945  mov r0,r0,asl #16
50946  adds r1,r0,r1,asl #16
50947  mrs r10,cpsr ;@ r10=flags
50948  str r10,[r7,#0x4c] ;@ Save X bit
50949
50950;@ Save result:
50951  mov r1,r1,asr #16
50952;@ EaWrite: Write r1 into '$3333.w' (address in r11):
50953  uxth r1,r1 ;@ zero extend
50954  add lr,pc,#4
50955  mov r0,r11
50956  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
50957
50958  ldrh r8,[r4],#2 ;@ Fetch next opcode
50959  subs r5,r5,#16 ;@ Subtract cycles
50960  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50961  b CycloneEnd
50962
50963;@ ---------- [d179] add.w d0, $33333333.l uses Opd179 ----------
50964Opd179:
50965;@ EaCalc : Get '$33333333.l' into r11:
50966  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
50967  ldrh r0,[r4],#2
50968  orr r11,r0,r2,lsl #16
50969;@ EaRead : Read '$33333333.l' (address in r11) into r0:
50970  add lr,pc,#4
50971  mov r0,r11
50972  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
50973
50974;@ EaCalc : Get register index into r1:
50975  and r1,r8,#0x0e00
50976;@ EaRead : Read register[r1] into r1:
50977  ldr r1,[r7,r1,lsr #7]
50978
50979;@ Do arithmetic:
50980  mov r0,r0,asl #16
50981  adds r1,r0,r1,asl #16
50982  mrs r10,cpsr ;@ r10=flags
50983  str r10,[r7,#0x4c] ;@ Save X bit
50984
50985;@ Save result:
50986  mov r1,r1,asr #16
50987;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
50988  uxth r1,r1 ;@ zero extend
50989  add lr,pc,#4
50990  mov r0,r11
50991  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
50992
50993  ldrh r8,[r4],#2 ;@ Fetch next opcode
50994  subs r5,r5,#20 ;@ Subtract cycles
50995  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
50996  b CycloneEnd
50997
50998;@ ---------- [d180] addx.l d0, d0 uses Opd180 ----------
50999Opd180:
51000;@ Get src/dest reg vals
51001;@ EaCalc : Get register index into r6:
51002  and r6,r8,#0x0007
51003;@ EaRead : Read register[r6] into r6:
51004  ldr r6,[r7,r6,lsl #2]
51005
51006;@ EaCalc : Get register index into r11:
51007  and r11,r8,#0x0e00
51008;@ EaRead : Read register[r11] into r0:
51009  ldr r0,[r7,r11,lsr #7]
51010
51011;@ Do arithmetic:
51012;@ Get X bit:
51013  ldr r2,[r7,#0x4c]
51014  tst r2,r2,lsl #3 ;@ Get into Carry
51015
51016  adcs r1,r6,r0
51017  orr r3,r10,#0xb0000000 ;@ for old Z
51018  mrs r10,cpsr ;@ r10=flags
51019  str r10,[r7,#0x4c] ;@ Save X bit
51020  andeq r10,r10,r3 ;@ fix Z
51021
51022;@ Save result:
51023;@ EaWrite: r1 into register[r11]:
51024  str r1,[r7,r11,lsr #7]
51025
51026  ldr r6,[r7,#0x54]
51027  ldrh r8,[r4],#2 ;@ Fetch next opcode
51028  subs r5,r5,#8 ;@ Subtract cycles
51029  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51030  b CycloneEnd
51031
51032;@ ---------- [d188] addx.l -(a0), -(a0) uses Opd188 ----------
51033Opd188:
51034;@ Get src/dest EA vals
51035;@ EaCalc : Get '-(a0)' into r0:
51036  and r2,r8,#0x000f
51037  ldr r0,[r7,r2,lsl #2]
51038  sub r0,r0,#4 ;@ Pre-decrement An
51039  str r0,[r7,r2,lsl #2]
51040;@ EaRead : Read '-(a0)' (address in r0) into r6:
51041  mov lr,pc
51042  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51043  mov r6,r0
51044
51045;@ EaCalc : Get '-(a0)' into r11:
51046  and r2,r8,#0x1e00
51047  ldr r11,[r7,r2,lsr #7]
51048  sub r11,r11,#4 ;@ Pre-decrement An
51049  str r11,[r7,r2,lsr #7]
51050;@ EaRead : Read '-(a0)' (address in r11) into r0:
51051  add lr,pc,#4
51052  mov r0,r11
51053  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51054
51055;@ Do arithmetic:
51056;@ Get X bit:
51057  ldr r2,[r7,#0x4c]
51058  tst r2,r2,lsl #3 ;@ Get into Carry
51059
51060  adcs r1,r6,r0
51061  orr r3,r10,#0xb0000000 ;@ for old Z
51062  mrs r10,cpsr ;@ r10=flags
51063  str r10,[r7,#0x4c] ;@ Save X bit
51064  andeq r10,r10,r3 ;@ fix Z
51065
51066;@ Save result:
51067;@ EaWrite: Write r1 into '-(a0)' (address in r11):
51068  add lr,pc,#4
51069  mov r0,r11
51070  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
51071
51072  ldr r6,[r7,#0x54]
51073  ldrh r8,[r4],#2 ;@ Fetch next opcode
51074  subs r5,r5,#30 ;@ Subtract cycles
51075  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51076  b CycloneEnd
51077
51078;@ ---------- [d190] add.l d0, (a0) uses Opd190 ----------
51079Opd190:
51080;@ EaCalc : Get '(a0)' into r11:
51081  and r2,r8,#0x000f
51082  orr r2,r2,#0x8 ;@ A0-7
51083  ldr r11,[r7,r2,lsl #2]
51084;@ EaRead : Read '(a0)' (address in r11) into r0:
51085  add lr,pc,#4
51086  mov r0,r11
51087  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51088
51089;@ EaCalc : Get register index into r1:
51090  and r1,r8,#0x0e00
51091;@ EaRead : Read register[r1] into r1:
51092  ldr r1,[r7,r1,lsr #7]
51093
51094;@ Do arithmetic:
51095  adds r1,r0,r1
51096  mrs r10,cpsr ;@ r10=flags
51097  str r10,[r7,#0x4c] ;@ Save X bit
51098
51099;@ Save result:
51100;@ EaWrite: Write r1 into '(a0)' (address in r11):
51101  add lr,pc,#4
51102  mov r0,r11
51103  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
51104
51105  ldrh r8,[r4],#2 ;@ Fetch next opcode
51106  subs r5,r5,#20 ;@ Subtract cycles
51107  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51108  b CycloneEnd
51109
51110;@ ---------- [d198] add.l d0, (a0)+ uses Opd198 ----------
51111Opd198:
51112;@ EaCalc : Get '(a0)+' into r11:
51113  and r2,r8,#0x000f
51114  ldr r11,[r7,r2,lsl #2]
51115  add r3,r11,#4 ;@ Post-increment An
51116  str r3,[r7,r2,lsl #2]
51117;@ EaRead : Read '(a0)+' (address in r11) into r0:
51118  add lr,pc,#4
51119  mov r0,r11
51120  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51121
51122;@ EaCalc : Get register index into r1:
51123  and r1,r8,#0x0e00
51124;@ EaRead : Read register[r1] into r1:
51125  ldr r1,[r7,r1,lsr #7]
51126
51127;@ Do arithmetic:
51128  adds r1,r0,r1
51129  mrs r10,cpsr ;@ r10=flags
51130  str r10,[r7,#0x4c] ;@ Save X bit
51131
51132;@ Save result:
51133;@ EaWrite: Write r1 into '(a0)+' (address in r11):
51134  add lr,pc,#4
51135  mov r0,r11
51136  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
51137
51138  ldrh r8,[r4],#2 ;@ Fetch next opcode
51139  subs r5,r5,#20 ;@ Subtract cycles
51140  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51141  b CycloneEnd
51142
51143;@ ---------- [d1a0] add.l d0, -(a0) uses Opd1a0 ----------
51144Opd1a0:
51145;@ EaCalc : Get '-(a0)' into r11:
51146  and r2,r8,#0x000f
51147  orr r2,r2,#0x8 ;@ A0-7
51148  ldr r11,[r7,r2,lsl #2]
51149  sub r11,r11,#4 ;@ Pre-decrement An
51150  str r11,[r7,r2,lsl #2]
51151;@ EaRead : Read '-(a0)' (address in r11) into r0:
51152  add lr,pc,#4
51153  mov r0,r11
51154  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51155
51156;@ EaCalc : Get register index into r1:
51157  and r1,r8,#0x0e00
51158;@ EaRead : Read register[r1] into r1:
51159  ldr r1,[r7,r1,lsr #7]
51160
51161;@ Do arithmetic:
51162  adds r1,r0,r1
51163  mrs r10,cpsr ;@ r10=flags
51164  str r10,[r7,#0x4c] ;@ Save X bit
51165
51166;@ Save result:
51167;@ EaWrite: Write r1 into '-(a0)' (address in r11):
51168  add lr,pc,#4
51169  mov r0,r11
51170  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
51171
51172  ldrh r8,[r4],#2 ;@ Fetch next opcode
51173  subs r5,r5,#22 ;@ Subtract cycles
51174  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51175  b CycloneEnd
51176
51177;@ ---------- [d1a8] add.l d0, ($3333,a0) uses Opd1a8 ----------
51178Opd1a8:
51179;@ EaCalc : Get '($3333,a0)' into r11:
51180  ldrsh r0,[r4],#2 ;@ Fetch offset
51181  and r2,r8,#0x000f
51182  ldr r2,[r7,r2,lsl #2]
51183  add r11,r0,r2 ;@ Add on offset
51184;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
51185  add lr,pc,#4
51186  mov r0,r11
51187  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51188
51189;@ EaCalc : Get register index into r1:
51190  and r1,r8,#0x0e00
51191;@ EaRead : Read register[r1] into r1:
51192  ldr r1,[r7,r1,lsr #7]
51193
51194;@ Do arithmetic:
51195  adds r1,r0,r1
51196  mrs r10,cpsr ;@ r10=flags
51197  str r10,[r7,#0x4c] ;@ Save X bit
51198
51199;@ Save result:
51200;@ EaWrite: Write r1 into '($3333,a0)' (address in r11):
51201  add lr,pc,#4
51202  mov r0,r11
51203  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
51204
51205  ldrh r8,[r4],#2 ;@ Fetch next opcode
51206  subs r5,r5,#24 ;@ Subtract cycles
51207  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51208  b CycloneEnd
51209
51210;@ ---------- [d1b0] add.l d0, ($33,a0,d3.w*2) uses Opd1b0 ----------
51211Opd1b0:
51212;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
51213;@ Get extension word into r3:
51214  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
51215  mov r2,r3,lsr #10
51216  tst r3,#0x0800 ;@ Is Rn Word or Long
51217  and r2,r2,#0x3c ;@ r2=Index of Rn
51218  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
51219  ldrne   r2,[r7,r2] ;@ r2=Rn.l
51220  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
51221  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
51222  and r2,r8,#0x000f
51223  orr r2,r2,#0x8 ;@ A0-7
51224  ldr r2,[r7,r2,lsl #2]
51225  add r11,r2,r3 ;@ r11=Disp+An+Rn
51226;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
51227  add lr,pc,#4
51228  mov r0,r11
51229  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51230
51231;@ EaCalc : Get register index into r1:
51232  and r1,r8,#0x0e00
51233;@ EaRead : Read register[r1] into r1:
51234  ldr r1,[r7,r1,lsr #7]
51235
51236;@ Do arithmetic:
51237  adds r1,r0,r1
51238  mrs r10,cpsr ;@ r10=flags
51239  str r10,[r7,#0x4c] ;@ Save X bit
51240
51241;@ Save result:
51242;@ EaWrite: Write r1 into '($33,a0,d3.w*2)' (address in r11):
51243  add lr,pc,#4
51244  mov r0,r11
51245  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
51246
51247  ldrh r8,[r4],#2 ;@ Fetch next opcode
51248  subs r5,r5,#26 ;@ Subtract cycles
51249  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51250  b CycloneEnd
51251
51252;@ ---------- [d1b8] add.l d0, $3333.w uses Opd1b8 ----------
51253Opd1b8:
51254;@ EaCalc : Get '$3333.w' into r11:
51255  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
51256;@ EaRead : Read '$3333.w' (address in r11) into r0:
51257  add lr,pc,#4
51258  mov r0,r11
51259  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51260
51261;@ EaCalc : Get register index into r1:
51262  and r1,r8,#0x0e00
51263;@ EaRead : Read register[r1] into r1:
51264  ldr r1,[r7,r1,lsr #7]
51265
51266;@ Do arithmetic:
51267  adds r1,r0,r1
51268  mrs r10,cpsr ;@ r10=flags
51269  str r10,[r7,#0x4c] ;@ Save X bit
51270
51271;@ Save result:
51272;@ EaWrite: Write r1 into '$3333.w' (address in r11):
51273  add lr,pc,#4
51274  mov r0,r11
51275  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
51276
51277  ldrh r8,[r4],#2 ;@ Fetch next opcode
51278  subs r5,r5,#24 ;@ Subtract cycles
51279  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51280  b CycloneEnd
51281
51282;@ ---------- [d1b9] add.l d0, $33333333.l uses Opd1b9 ----------
51283Opd1b9:
51284;@ EaCalc : Get '$33333333.l' into r11:
51285  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
51286  ldrh r0,[r4],#2
51287  orr r11,r0,r2,lsl #16
51288;@ EaRead : Read '$33333333.l' (address in r11) into r0:
51289  add lr,pc,#4
51290  mov r0,r11
51291  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51292
51293;@ EaCalc : Get register index into r1:
51294  and r1,r8,#0x0e00
51295;@ EaRead : Read register[r1] into r1:
51296  ldr r1,[r7,r1,lsr #7]
51297
51298;@ Do arithmetic:
51299  adds r1,r0,r1
51300  mrs r10,cpsr ;@ r10=flags
51301  str r10,[r7,#0x4c] ;@ Save X bit
51302
51303;@ Save result:
51304;@ EaWrite: Write r1 into '$33333333.l' (address in r11):
51305  add lr,pc,#4
51306  mov r0,r11
51307  ldr pc,[r7,#0x7c] ;@ Call write32(r0,r1) handler
51308
51309  ldrh r8,[r4],#2 ;@ Fetch next opcode
51310  subs r5,r5,#28 ;@ Subtract cycles
51311  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51312  b CycloneEnd
51313
51314;@ ---------- [d1c0] adda.l d0, a0 uses Opd1c0 ----------
51315Opd1c0:
51316;@ EaCalc : Get register index into r0:
51317  and r0,r8,#0x000f
51318;@ EaRead : Read register[r0] into r0:
51319  ldr r0,[r7,r0,lsl #2]
51320
51321;@ EaCalc : Get register index into r11:
51322  and r11,r8,#0x1e00
51323;@ EaRead : Read register[r11] into r1:
51324  ldr r1,[r7,r11,lsr #7]
51325
51326  add r1,r1,r0
51327
51328;@ EaWrite: r1 into register[r11]:
51329  str r1,[r7,r11,lsr #7]
51330
51331  ldrh r8,[r4],#2 ;@ Fetch next opcode
51332  subs r5,r5,#8 ;@ Subtract cycles
51333  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51334  b CycloneEnd
51335
51336;@ ---------- [d1d0] adda.l (a0), a0 uses Opd1d0 ----------
51337Opd1d0:
51338;@ EaCalc : Get '(a0)' into r0:
51339  and r2,r8,#0x000f
51340  orr r2,r2,#0x8 ;@ A0-7
51341  ldr r0,[r7,r2,lsl #2]
51342;@ EaRead : Read '(a0)' (address in r0) into r0:
51343  mov lr,pc
51344  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51345
51346;@ EaCalc : Get register index into r11:
51347  and r11,r8,#0x1e00
51348;@ EaRead : Read register[r11] into r1:
51349  ldr r1,[r7,r11,lsr #7]
51350
51351  add r1,r1,r0
51352
51353;@ EaWrite: r1 into register[r11]:
51354  str r1,[r7,r11,lsr #7]
51355
51356  ldrh r8,[r4],#2 ;@ Fetch next opcode
51357  subs r5,r5,#14 ;@ Subtract cycles
51358  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51359  b CycloneEnd
51360
51361;@ ---------- [d1d8] adda.l (a0)+, a0 uses Opd1d8 ----------
51362Opd1d8:
51363;@ EaCalc : Get '(a0)+' into r0:
51364  and r2,r8,#0x000f
51365  ldr r0,[r7,r2,lsl #2]
51366  add r3,r0,#4 ;@ Post-increment An
51367  str r3,[r7,r2,lsl #2]
51368;@ EaRead : Read '(a0)+' (address in r0) into r0:
51369  mov lr,pc
51370  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51371
51372;@ EaCalc : Get register index into r11:
51373  and r11,r8,#0x1e00
51374;@ EaRead : Read register[r11] into r1:
51375  ldr r1,[r7,r11,lsr #7]
51376
51377  add r1,r1,r0
51378
51379;@ EaWrite: r1 into register[r11]:
51380  str r1,[r7,r11,lsr #7]
51381
51382  ldrh r8,[r4],#2 ;@ Fetch next opcode
51383  subs r5,r5,#14 ;@ Subtract cycles
51384  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51385  b CycloneEnd
51386
51387;@ ---------- [d1e0] adda.l -(a0), a0 uses Opd1e0 ----------
51388Opd1e0:
51389;@ EaCalc : Get '-(a0)' into r0:
51390  and r2,r8,#0x000f
51391  orr r2,r2,#0x8 ;@ A0-7
51392  ldr r0,[r7,r2,lsl #2]
51393  sub r0,r0,#4 ;@ Pre-decrement An
51394  str r0,[r7,r2,lsl #2]
51395;@ EaRead : Read '-(a0)' (address in r0) into r0:
51396  mov lr,pc
51397  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51398
51399;@ EaCalc : Get register index into r11:
51400  and r11,r8,#0x1e00
51401;@ EaRead : Read register[r11] into r1:
51402  ldr r1,[r7,r11,lsr #7]
51403
51404  add r1,r1,r0
51405
51406;@ EaWrite: r1 into register[r11]:
51407  str r1,[r7,r11,lsr #7]
51408
51409  ldrh r8,[r4],#2 ;@ Fetch next opcode
51410  subs r5,r5,#16 ;@ Subtract cycles
51411  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51412  b CycloneEnd
51413
51414;@ ---------- [d1e8] adda.l ($3333,a0), a0 uses Opd1e8 ----------
51415Opd1e8:
51416;@ EaCalc : Get '($3333,a0)' into r0:
51417  ldrsh r0,[r4],#2 ;@ Fetch offset
51418  and r2,r8,#0x000f
51419  ldr r2,[r7,r2,lsl #2]
51420  add r0,r0,r2 ;@ Add on offset
51421;@ EaRead : Read '($3333,a0)' (address in r0) into r0:
51422  mov lr,pc
51423  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51424
51425;@ EaCalc : Get register index into r11:
51426  and r11,r8,#0x1e00
51427;@ EaRead : Read register[r11] into r1:
51428  ldr r1,[r7,r11,lsr #7]
51429
51430  add r1,r1,r0
51431
51432;@ EaWrite: r1 into register[r11]:
51433  str r1,[r7,r11,lsr #7]
51434
51435  ldrh r8,[r4],#2 ;@ Fetch next opcode
51436  subs r5,r5,#18 ;@ Subtract cycles
51437  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51438  b CycloneEnd
51439
51440;@ ---------- [d1f0] adda.l ($33,a0,d3.w*2), a0 uses Opd1f0 ----------
51441Opd1f0:
51442;@ EaCalc : Get '($33,a0,d3.w*2)' into r0:
51443;@ Get extension word into r3:
51444  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
51445  mov r2,r3,lsr #10
51446  tst r3,#0x0800 ;@ Is Rn Word or Long
51447  and r2,r2,#0x3c ;@ r2=Index of Rn
51448  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
51449  ldrne   r2,[r7,r2] ;@ r2=Rn.l
51450  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
51451  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
51452  and r2,r8,#0x000f
51453  orr r2,r2,#0x8 ;@ A0-7
51454  ldr r2,[r7,r2,lsl #2]
51455  add r0,r2,r3 ;@ r0=Disp+An+Rn
51456;@ EaRead : Read '($33,a0,d3.w*2)' (address in r0) into r0:
51457  mov lr,pc
51458  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51459
51460;@ EaCalc : Get register index into r11:
51461  and r11,r8,#0x1e00
51462;@ EaRead : Read register[r11] into r1:
51463  ldr r1,[r7,r11,lsr #7]
51464
51465  add r1,r1,r0
51466
51467;@ EaWrite: r1 into register[r11]:
51468  str r1,[r7,r11,lsr #7]
51469
51470  ldrh r8,[r4],#2 ;@ Fetch next opcode
51471  subs r5,r5,#20 ;@ Subtract cycles
51472  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51473  b CycloneEnd
51474
51475;@ ---------- [d1f8] adda.l $3333.w, a0 uses Opd1f8 ----------
51476Opd1f8:
51477;@ EaCalc : Get '$3333.w' into r0:
51478  ldrsh r0,[r4],#2 ;@ Fetch Absolute Short address
51479;@ EaRead : Read '$3333.w' (address in r0) into r0:
51480  mov lr,pc
51481  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51482
51483;@ EaCalc : Get register index into r11:
51484  and r11,r8,#0x1e00
51485;@ EaRead : Read register[r11] into r1:
51486  ldr r1,[r7,r11,lsr #7]
51487
51488  add r1,r1,r0
51489
51490;@ EaWrite: r1 into register[r11]:
51491  str r1,[r7,r11,lsr #7]
51492
51493  ldrh r8,[r4],#2 ;@ Fetch next opcode
51494  subs r5,r5,#18 ;@ Subtract cycles
51495  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51496  b CycloneEnd
51497
51498;@ ---------- [d1f9] adda.l $33333333.l, a0 uses Opd1f9 ----------
51499Opd1f9:
51500;@ EaCalc : Get '$33333333.l' into r0:
51501  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
51502  ldrh r0,[r4],#2
51503  orr r0,r0,r2,lsl #16
51504;@ EaRead : Read '$33333333.l' (address in r0) into r0:
51505  mov lr,pc
51506  ldr pc,[r7,#0x70] ;@ Call read32(r0) handler
51507
51508;@ EaCalc : Get register index into r11:
51509  and r11,r8,#0x1e00
51510;@ EaRead : Read register[r11] into r1:
51511  ldr r1,[r7,r11,lsr #7]
51512
51513  add r1,r1,r0
51514
51515;@ EaWrite: r1 into register[r11]:
51516  str r1,[r7,r11,lsr #7]
51517
51518  ldrh r8,[r4],#2 ;@ Fetch next opcode
51519  subs r5,r5,#22 ;@ Subtract cycles
51520  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51521  b CycloneEnd
51522
51523;@ ---------- [d1fa] adda.l ($3333,pc), a0; =3335 uses Opd1fa ----------
51524Opd1fa:
51525;@ EaCalc : Get '($3333,pc)' into r0:
51526  ldr r0,[r7,#0x60] ;@ Get Memory base
51527  sub r0,r4,r0 ;@ Real PC
51528  ldrsh r2,[r4],#2 ;@ Fetch extension
51529  add r0,r2,r0 ;@ ($nn,PC)
51530;@ EaRead : Read '($3333,pc)' (address in r0) into r0:
51531  mov lr,pc
51532  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
51533
51534;@ EaCalc : Get register index into r11:
51535  and r11,r8,#0x1e00
51536;@ EaRead : Read register[r11] into r1:
51537  ldr r1,[r7,r11,lsr #7]
51538
51539  add r1,r1,r0
51540
51541;@ EaWrite: r1 into register[r11]:
51542  str r1,[r7,r11,lsr #7]
51543
51544  ldrh r8,[r4],#2 ;@ Fetch next opcode
51545  subs r5,r5,#18 ;@ Subtract cycles
51546  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51547  b CycloneEnd
51548
51549;@ ---------- [d1fb] adda.l ($33,pc,d3.w*2), a0; =35 uses Opd1fb ----------
51550Opd1fb:
51551;@ EaCalc : Get '($33,pc,d3.w*2)' into r0:
51552  ldr r0,[r7,#0x60] ;@ Get Memory base
51553  ldrh r3,[r4] ;@ Get extension word
51554  sub r0,r4,r0 ;@ r0=PC
51555  add r4,r4,#2
51556  mov r2,r3,lsr #10
51557  tst r3,#0x0800 ;@ Is Rn Word or Long
51558  and r2,r2,#0x3c ;@ r2=Index of Rn
51559  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
51560  ldrne   r2,[r7,r2] ;@ r2=Rn.l
51561  mov r3,r3,asl #24 ;@ r3=Get 8-bit signed Disp
51562  add r2,r2,r3,asr #24 ;@ r2=Disp+Rn
51563  add r0,r2,r0 ;@ r0=Disp+PC+Rn
51564;@ EaRead : Read '($33,pc,d3.w*2)' (address in r0) into r0:
51565  mov lr,pc
51566  ldr pc,[r7,#0x88] ;@ Call fetch32(r0) handler
51567
51568;@ EaCalc : Get register index into r11:
51569  and r11,r8,#0x1e00
51570;@ EaRead : Read register[r11] into r1:
51571  ldr r1,[r7,r11,lsr #7]
51572
51573  add r1,r1,r0
51574
51575;@ EaWrite: r1 into register[r11]:
51576  str r1,[r7,r11,lsr #7]
51577
51578  ldrh r8,[r4],#2 ;@ Fetch next opcode
51579  subs r5,r5,#20 ;@ Subtract cycles
51580  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51581  b CycloneEnd
51582
51583;@ ---------- [d1fc] adda.l #$33333333, a0 uses Opd1fc ----------
51584Opd1fc:
51585;@ EaCalc : Get '#$33333333' into r0:
51586  ldrh r2,[r4],#2 ;@ Fetch immediate value
51587  ldrh r3,[r4],#2
51588  orr r0,r3,r2,lsl #16
51589;@ EaRead : Read '#$33333333' (address in r0) into r0:
51590
51591;@ EaCalc : Get register index into r11:
51592  and r11,r8,#0x1e00
51593;@ EaRead : Read register[r11] into r1:
51594  ldr r1,[r7,r11,lsr #7]
51595
51596  add r1,r1,r0
51597
51598;@ EaWrite: r1 into register[r11]:
51599  str r1,[r7,r11,lsr #7]
51600
51601  ldrh r8,[r4],#2 ;@ Fetch next opcode
51602  subs r5,r5,#16 ;@ Subtract cycles
51603  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51604  b CycloneEnd
51605
51606;@ ---------- [df08] addx.b -(a0), -(a7) uses Opdf08 ----------
51607Opdf08:
51608;@ Get src/dest EA vals
51609;@ EaCalc : Get '-(a0)' into r0:
51610  and r2,r8,#0x000f
51611  ldr r0,[r7,r2,lsl #2]
51612  sub r0,r0,#1 ;@ Pre-decrement An
51613  str r0,[r7,r2,lsl #2]
51614;@ EaRead : Read '-(a0)' (address in r0) into r6:
51615  mov lr,pc
51616  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
51617  mov r6,r0,asl #24
51618
51619;@ EaCalc : Get '-(a7)' into r11:
51620  ldr r11,[r7,#0x3c] ;@ A7
51621  sub r11,r11,#2 ;@ Pre-decrement An
51622  str r11,[r7,#0x3c] ;@ A7
51623;@ EaRead : Read '-(a7)' (address in r11) into r0:
51624  add lr,pc,#4
51625  mov r0,r11
51626  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
51627
51628;@ Do arithmetic:
51629;@ Get X bit:
51630  ldr r2,[r7,#0x4c]
51631  tst r2,r2,lsl #3 ;@ Get into Carry
51632
51633;@ Make sure the carry bit will tip the balance:
51634  mvn r2,#0
51635  orr r6,r6,r2,lsr #8
51636
51637  adcs r1,r6,r0,asl #24
51638  orr r3,r10,#0xb0000000 ;@ for old Z
51639  mrs r10,cpsr ;@ r10=flags
51640  str r10,[r7,#0x4c] ;@ Save X bit
51641  movs r2,r1,lsr #24
51642  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
51643  andeq r10,r10,r3 ;@ fix Z
51644
51645;@ Save result:
51646;@ EaWrite: Write r1 into '-(a7)' (address in r11):
51647  mov r1,r1,lsr #24
51648  add lr,pc,#4
51649  mov r0,r11
51650  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
51651
51652  ldr r6,[r7,#0x54]
51653  ldrh r8,[r4],#2 ;@ Fetch next opcode
51654  subs r5,r5,#18 ;@ Subtract cycles
51655  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51656  b CycloneEnd
51657
51658;@ ---------- [df0f] addx.b -(a7), -(a7) uses Opdf0f ----------
51659Opdf0f:
51660;@ Get src/dest EA vals
51661;@ EaCalc : Get '-(a7)' into r0:
51662  ldr r0,[r7,#0x3c] ;@ A7
51663  sub r0,r0,#2 ;@ Pre-decrement An
51664  str r0,[r7,#0x3c] ;@ A7
51665;@ EaRead : Read '-(a7)' (address in r0) into r6:
51666  mov lr,pc
51667  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
51668  mov r6,r0,asl #24
51669
51670;@ EaCalc : Get '-(a7)' into r11:
51671  ldr r11,[r7,#0x3c] ;@ A7
51672  sub r11,r11,#2 ;@ Pre-decrement An
51673  str r11,[r7,#0x3c] ;@ A7
51674;@ EaRead : Read '-(a7)' (address in r11) into r0:
51675  add lr,pc,#4
51676  mov r0,r11
51677  ldr pc,[r7,#0x68] ;@ Call read8(r0) handler
51678
51679;@ Do arithmetic:
51680;@ Get X bit:
51681  ldr r2,[r7,#0x4c]
51682  tst r2,r2,lsl #3 ;@ Get into Carry
51683
51684;@ Make sure the carry bit will tip the balance:
51685  mvn r2,#0
51686  orr r6,r6,r2,lsr #8
51687
51688  adcs r1,r6,r0,asl #24
51689  orr r3,r10,#0xb0000000 ;@ for old Z
51690  mrs r10,cpsr ;@ r10=flags
51691  str r10,[r7,#0x4c] ;@ Save X bit
51692  movs r2,r1,lsr #24
51693  orreq r10,r10,#0x40000000 ;@ add potentially missed Z
51694  andeq r10,r10,r3 ;@ fix Z
51695
51696;@ Save result:
51697;@ EaWrite: Write r1 into '-(a7)' (address in r11):
51698  mov r1,r1,lsr #24
51699  add lr,pc,#4
51700  mov r0,r11
51701  ldr pc,[r7,#0x74] ;@ Call write8(r0,r1) handler
51702
51703  ldr r6,[r7,#0x54]
51704  ldrh r8,[r4],#2 ;@ Fetch next opcode
51705  subs r5,r5,#18 ;@ Subtract cycles
51706  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51707  b CycloneEnd
51708
51709;@ ---------- [e000] asr.b #8, d0 uses Ope000 ----------
51710Ope000:
51711;@ EaCalc : Get register index into r11:
51712  and r11,r8,#0x0007
51713;@ EaRead : Read register[r11] into r0:
51714  ldr r0,[r7,r11,lsl #2]
51715  mov r0,r0,asl #24
51716
51717;@ For shift right, use loworder bits for the operation:
51718  mov r0,r0,asr #24
51719
51720;@ Shift register:
51721  movs r0,r0,asr #8
51722  mrs r10,cpsr ;@ r10=flags
51723  str r10,[r7,#0x4c] ;@ Save X bit
51724
51725;@ restore after right shift:
51726  movs r0,r0,lsl #24
51727
51728;@ EaWrite: r0 into register[r11]:
51729  mov r0,r0,lsr #24
51730  strb r0,[r7,r11,lsl #2]
51731
51732  ldrh r8,[r4],#2 ;@ Fetch next opcode
51733  subs r5,r5,#22 ;@ Subtract cycles
51734  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51735  b CycloneEnd
51736
51737;@ ---------- [e008] lsr.b #8, d0 uses Ope008 ----------
51738Ope008:
51739;@ EaCalc : Get register index into r11:
51740  and r11,r8,#0x0007
51741;@ EaRead : Read register[r11] into r0:
51742  ldr r0,[r7,r11,lsl #2]
51743  mov r0,r0,asl #24
51744
51745;@ For shift right, use loworder bits for the operation:
51746  mov r0,r0,lsr #24
51747
51748;@ Shift register:
51749  movs r0,r0,lsr #8
51750  mrs r10,cpsr ;@ r10=flags
51751  str r10,[r7,#0x4c] ;@ Save X bit
51752
51753;@ restore after right shift:
51754  movs r0,r0,lsl #24
51755  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
51756
51757;@ EaWrite: r0 into register[r11]:
51758  mov r0,r0,lsr #24
51759  strb r0,[r7,r11,lsl #2]
51760
51761  ldrh r8,[r4],#2 ;@ Fetch next opcode
51762  subs r5,r5,#22 ;@ Subtract cycles
51763  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51764  b CycloneEnd
51765
51766;@ ---------- [e010] roxr.b #8, d0 uses Ope010 ----------
51767Ope010:
51768;@ EaCalc : Get register index into r11:
51769  and r11,r8,#0x0007
51770;@ EaRead : Read register[r11] into r0:
51771  ldr r0,[r7,r11,lsl #2]
51772  mov r0,r0,asl #24
51773
51774  mov r2,#8
51775  mov r0,r0,lsr #24 ;@ Shift down
51776
51777;@ First get X bit (middle):
51778  ldr r3,[r7,#0x4c]
51779  rsb r1,r2,#8
51780  and r3,r3,#0x20000000
51781  mov r3,r3,lsr #29
51782  mov r3,r3,lsl r1
51783;@ Rotate bits:
51784  orr r3,r3,r0,lsr r2 ;@ Orr right part
51785  rsbs r2,r2,#9 ;@ should also clear ARM V
51786  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
51787
51788  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
51789  mrs r10,cpsr ;@ r10=flags
51790  str r10,[r7,#0x4c] ;@ Save X bit
51791
51792;@ EaWrite: r0 into register[r11]:
51793  mov r0,r0,lsr #24
51794  strb r0,[r7,r11,lsl #2]
51795
51796  ldrh r8,[r4],#2 ;@ Fetch next opcode
51797  subs r5,r5,#22 ;@ Subtract cycles
51798  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51799  b CycloneEnd
51800
51801;@ ---------- [e018] ror.b #8, d0 uses Ope018 ----------
51802Ope018:
51803;@ EaCalc : Get register index into r11:
51804  and r11,r8,#0x0007
51805;@ EaRead : Read register[r11] into r0:
51806  ldr r0,[r7,r11,lsl #2]
51807  mov r0,r0,asl #24
51808
51809;@ Mirror value in whole 32 bits:
51810  orr r0,r0,r0,lsr #8
51811  orr r0,r0,r0,lsr #16
51812
51813;@ Rotate register:
51814  adds r0,r0,#0 ;@ first clear V and C
51815  movs r0,r0,ror #8
51816  mrs r10,cpsr ;@ r10=flags
51817
51818;@ EaWrite: r0 into register[r11]:
51819  mov r0,r0,lsr #24
51820  strb r0,[r7,r11,lsl #2]
51821
51822  ldrh r8,[r4],#2 ;@ Fetch next opcode
51823  subs r5,r5,#22 ;@ Subtract cycles
51824  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51825  b CycloneEnd
51826
51827;@ ---------- [e020] asr.b d0, d0 uses Ope020 ----------
51828Ope020:
51829;@ EaCalc : Get register index into r11:
51830  and r11,r8,#0x0007
51831;@ EaRead : Read register[r11] into r0:
51832  ldr r0,[r7,r11,lsl #2]
51833  mov r0,r0,asl #24
51834
51835;@ Use Dn for count:
51836  and r2,r8,#0x0e00
51837  ldr r2,[r7,r2,lsr #7]
51838  and r2,r2,#63
51839
51840  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
51841
51842;@ For shift right, use loworder bits for the operation:
51843  mov r0,r0,asr #24
51844
51845;@ Shift register:
51846  movs r0,r0,asr r2
51847  mrs r10,cpsr ;@ r10=flags
51848  cmp r2,#0 ;@ shifting by 0?
51849  biceq r10,r10,#0x20000000 ;@ if so, clear carry
51850  strne r10,[r7,#0x4c] ;@ else Save X bit
51851
51852;@ restore after right shift:
51853  movs r0,r0,lsl #24
51854
51855;@ EaWrite: r0 into register[r11]:
51856  mov r0,r0,lsr #24
51857  strb r0,[r7,r11,lsl #2]
51858
51859  ldrh r8,[r4],#2 ;@ Fetch next opcode
51860  subs r5,r5,#6 ;@ Subtract cycles
51861  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51862  b CycloneEnd
51863
51864;@ ---------- [e028] lsr.b d0, d0 uses Ope028 ----------
51865Ope028:
51866;@ EaCalc : Get register index into r11:
51867  and r11,r8,#0x0007
51868;@ EaRead : Read register[r11] into r0:
51869  ldr r0,[r7,r11,lsl #2]
51870  mov r0,r0,asl #24
51871
51872;@ Use Dn for count:
51873  and r2,r8,#0x0e00
51874  ldr r2,[r7,r2,lsr #7]
51875  and r2,r2,#63
51876
51877  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
51878
51879;@ For shift right, use loworder bits for the operation:
51880  mov r0,r0,lsr #24
51881
51882;@ Shift register:
51883  movs r0,r0,lsr r2
51884  mrs r10,cpsr ;@ r10=flags
51885  cmp r2,#0 ;@ shifting by 0?
51886  biceq r10,r10,#0x20000000 ;@ if so, clear carry
51887  strne r10,[r7,#0x4c] ;@ else Save X bit
51888
51889;@ restore after right shift:
51890  movs r0,r0,lsl #24
51891  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
51892
51893;@ EaWrite: r0 into register[r11]:
51894  mov r0,r0,lsr #24
51895  strb r0,[r7,r11,lsl #2]
51896
51897  ldrh r8,[r4],#2 ;@ Fetch next opcode
51898  subs r5,r5,#6 ;@ Subtract cycles
51899  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51900  b CycloneEnd
51901
51902;@ ---------- [e030] roxr.b d0, d0 uses Ope030 ----------
51903Ope030:
51904;@ EaCalc : Get register index into r11:
51905  and r11,r8,#0x0007
51906;@ EaRead : Read register[r11] into r0:
51907  ldr r0,[r7,r11,lsl #2]
51908  mov r0,r0,asl #24
51909
51910;@ Use Dn for count:
51911  and r2,r8,#0x0e00
51912  ldr r2,[r7,r2,lsr #7]
51913  and r2,r2,#63
51914
51915  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
51916
51917;@ Reduce r2 until <0:
51918Reduce_e030:
51919  subs r2,r2,#9
51920  bpl Reduce_e030
51921  adds r2,r2,#9 ;@ Now r2=0-8
51922  beq norotx_e030
51923
51924  mov r0,r0,lsr #24 ;@ Shift down
51925
51926;@ First get X bit (middle):
51927  ldr r3,[r7,#0x4c]
51928  rsb r1,r2,#8
51929  and r3,r3,#0x20000000
51930  mov r3,r3,lsr #29
51931  mov r3,r3,lsl r1
51932;@ Rotate bits:
51933  orr r3,r3,r0,lsr r2 ;@ Orr right part
51934  rsbs r2,r2,#9 ;@ should also clear ARM V
51935  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
51936
51937  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
51938  mrs r10,cpsr ;@ r10=flags
51939  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
51940  b nozeroxe030
51941norotx_e030:
51942  ldr r2,[r7,#0x4c]
51943  adds r0,r0,#0 ;@ Define flags
51944  and r10,r0,#0x80000000 ;@ r10=N_flag
51945  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
51946  and r2,r2,#0x20000000
51947  orr r10,r10,r2 ;@ C = old_X
51948nozeroxe030:
51949
51950;@ EaWrite: r0 into register[r11]:
51951  mov r0,r0,lsr #24
51952  strb r0,[r7,r11,lsl #2]
51953
51954  ldrh r8,[r4],#2 ;@ Fetch next opcode
51955  subs r5,r5,#6 ;@ Subtract cycles
51956  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51957  b CycloneEnd
51958
51959;@ ---------- [e038] ror.b d0, d0 uses Ope038 ----------
51960Ope038:
51961;@ EaCalc : Get register index into r11:
51962  and r11,r8,#0x0007
51963;@ EaRead : Read register[r11] into r0:
51964  ldr r0,[r7,r11,lsl #2]
51965  mov r0,r0,asl #24
51966
51967;@ Use Dn for count:
51968  and r2,r8,#0x0e00
51969  ldr r2,[r7,r2,lsr #7]
51970  and r2,r2,#63
51971
51972  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
51973
51974;@ Mirror value in whole 32 bits:
51975  orr r0,r0,r0,lsr #8
51976  orr r0,r0,r0,lsr #16
51977
51978;@ Rotate register:
51979  adds r0,r0,#0 ;@ first clear V and C
51980  movs r0,r0,ror r2
51981  mrs r10,cpsr ;@ r10=flags
51982
51983;@ EaWrite: r0 into register[r11]:
51984  mov r0,r0,lsr #24
51985  strb r0,[r7,r11,lsl #2]
51986
51987  ldrh r8,[r4],#2 ;@ Fetch next opcode
51988  subs r5,r5,#6 ;@ Subtract cycles
51989  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
51990  b CycloneEnd
51991
51992;@ ---------- [e040] asr.w #8, d0 uses Ope040 ----------
51993Ope040:
51994;@ EaCalc : Get register index into r11:
51995  and r11,r8,#0x0007
51996  mov r11,r11,lsl #2
51997;@ EaRead : Read register[r11] into r0:
51998  ldr r0,[r7,r11]
51999  mov r0,r0,asl #16
52000
52001;@ For shift right, use loworder bits for the operation:
52002  mov r0,r0,asr #16
52003
52004;@ Shift register:
52005  movs r0,r0,asr #8
52006  mrs r10,cpsr ;@ r10=flags
52007  str r10,[r7,#0x4c] ;@ Save X bit
52008
52009;@ restore after right shift:
52010  movs r0,r0,lsl #16
52011
52012;@ EaWrite: r0 into register[r11]:
52013  mov r0,r0,lsr #16
52014  strh r0,[r7,r11]
52015
52016  ldrh r8,[r4],#2 ;@ Fetch next opcode
52017  subs r5,r5,#22 ;@ Subtract cycles
52018  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52019  b CycloneEnd
52020
52021;@ ---------- [e048] lsr.w #8, d0 uses Ope048 ----------
52022Ope048:
52023;@ EaCalc : Get register index into r11:
52024  and r11,r8,#0x0007
52025  mov r11,r11,lsl #2
52026;@ EaRead : Read register[r11] into r0:
52027  ldr r0,[r7,r11]
52028  mov r0,r0,asl #16
52029
52030;@ For shift right, use loworder bits for the operation:
52031  mov r0,r0,lsr #16
52032
52033;@ Shift register:
52034  movs r0,r0,lsr #8
52035  mrs r10,cpsr ;@ r10=flags
52036  str r10,[r7,#0x4c] ;@ Save X bit
52037
52038;@ restore after right shift:
52039  movs r0,r0,lsl #16
52040  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
52041
52042;@ EaWrite: r0 into register[r11]:
52043  mov r0,r0,lsr #16
52044  strh r0,[r7,r11]
52045
52046  ldrh r8,[r4],#2 ;@ Fetch next opcode
52047  subs r5,r5,#22 ;@ Subtract cycles
52048  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52049  b CycloneEnd
52050
52051;@ ---------- [e050] roxr.w #8, d0 uses Ope050 ----------
52052Ope050:
52053;@ EaCalc : Get register index into r11:
52054  and r11,r8,#0x0007
52055  mov r11,r11,lsl #2
52056;@ EaRead : Read register[r11] into r0:
52057  ldr r0,[r7,r11]
52058  mov r0,r0,asl #16
52059
52060  mov r2,#8
52061  mov r0,r0,lsr #16 ;@ Shift down
52062
52063;@ First get X bit (middle):
52064  ldr r3,[r7,#0x4c]
52065  rsb r1,r2,#16
52066  and r3,r3,#0x20000000
52067  mov r3,r3,lsr #29
52068  mov r3,r3,lsl r1
52069;@ Rotate bits:
52070  orr r3,r3,r0,lsr r2 ;@ Orr right part
52071  rsbs r2,r2,#17 ;@ should also clear ARM V
52072  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
52073
52074  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
52075  mrs r10,cpsr ;@ r10=flags
52076  str r10,[r7,#0x4c] ;@ Save X bit
52077
52078;@ EaWrite: r0 into register[r11]:
52079  mov r0,r0,lsr #16
52080  strh r0,[r7,r11]
52081
52082  ldrh r8,[r4],#2 ;@ Fetch next opcode
52083  subs r5,r5,#22 ;@ Subtract cycles
52084  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52085  b CycloneEnd
52086
52087;@ ---------- [e058] ror.w #8, d0 uses Ope058 ----------
52088Ope058:
52089;@ EaCalc : Get register index into r11:
52090  and r11,r8,#0x0007
52091  mov r11,r11,lsl #2
52092;@ EaRead : Read register[r11] into r0:
52093  ldr r0,[r7,r11]
52094  mov r0,r0,asl #16
52095
52096;@ Mirror value in whole 32 bits:
52097  orr r0,r0,r0,lsr #16
52098
52099;@ Rotate register:
52100  adds r0,r0,#0 ;@ first clear V and C
52101  movs r0,r0,ror #8
52102  mrs r10,cpsr ;@ r10=flags
52103
52104;@ EaWrite: r0 into register[r11]:
52105  mov r0,r0,lsr #16
52106  strh r0,[r7,r11]
52107
52108  ldrh r8,[r4],#2 ;@ Fetch next opcode
52109  subs r5,r5,#22 ;@ Subtract cycles
52110  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52111  b CycloneEnd
52112
52113;@ ---------- [e060] asr.w d0, d0 uses Ope060 ----------
52114Ope060:
52115;@ EaCalc : Get register index into r11:
52116  and r11,r8,#0x0007
52117  mov r11,r11,lsl #2
52118;@ EaRead : Read register[r11] into r0:
52119  ldr r0,[r7,r11]
52120  mov r0,r0,asl #16
52121
52122;@ Use Dn for count:
52123  and r2,r8,#0x0e00
52124  ldr r2,[r7,r2,lsr #7]
52125  and r2,r2,#63
52126
52127  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52128
52129;@ For shift right, use loworder bits for the operation:
52130  mov r0,r0,asr #16
52131
52132;@ Shift register:
52133  movs r0,r0,asr r2
52134  mrs r10,cpsr ;@ r10=flags
52135  cmp r2,#0 ;@ shifting by 0?
52136  biceq r10,r10,#0x20000000 ;@ if so, clear carry
52137  strne r10,[r7,#0x4c] ;@ else Save X bit
52138
52139;@ restore after right shift:
52140  movs r0,r0,lsl #16
52141
52142;@ EaWrite: r0 into register[r11]:
52143  mov r0,r0,lsr #16
52144  strh r0,[r7,r11]
52145
52146  ldrh r8,[r4],#2 ;@ Fetch next opcode
52147  subs r5,r5,#6 ;@ Subtract cycles
52148  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52149  b CycloneEnd
52150
52151;@ ---------- [e068] lsr.w d0, d0 uses Ope068 ----------
52152Ope068:
52153;@ EaCalc : Get register index into r11:
52154  and r11,r8,#0x0007
52155  mov r11,r11,lsl #2
52156;@ EaRead : Read register[r11] into r0:
52157  ldr r0,[r7,r11]
52158  mov r0,r0,asl #16
52159
52160;@ Use Dn for count:
52161  and r2,r8,#0x0e00
52162  ldr r2,[r7,r2,lsr #7]
52163  and r2,r2,#63
52164
52165  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52166
52167;@ For shift right, use loworder bits for the operation:
52168  mov r0,r0,lsr #16
52169
52170;@ Shift register:
52171  movs r0,r0,lsr r2
52172  mrs r10,cpsr ;@ r10=flags
52173  cmp r2,#0 ;@ shifting by 0?
52174  biceq r10,r10,#0x20000000 ;@ if so, clear carry
52175  strne r10,[r7,#0x4c] ;@ else Save X bit
52176
52177;@ restore after right shift:
52178  movs r0,r0,lsl #16
52179  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
52180
52181;@ EaWrite: r0 into register[r11]:
52182  mov r0,r0,lsr #16
52183  strh r0,[r7,r11]
52184
52185  ldrh r8,[r4],#2 ;@ Fetch next opcode
52186  subs r5,r5,#6 ;@ Subtract cycles
52187  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52188  b CycloneEnd
52189
52190;@ ---------- [e070] roxr.w d0, d0 uses Ope070 ----------
52191Ope070:
52192;@ EaCalc : Get register index into r11:
52193  and r11,r8,#0x0007
52194  mov r11,r11,lsl #2
52195;@ EaRead : Read register[r11] into r0:
52196  ldr r0,[r7,r11]
52197  mov r0,r0,asl #16
52198
52199;@ Use Dn for count:
52200  and r2,r8,#0x0e00
52201  ldr r2,[r7,r2,lsr #7]
52202  and r2,r2,#63
52203
52204  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52205
52206;@ Reduce r2 until <0:
52207Reduce_e070:
52208  subs r2,r2,#17
52209  bpl Reduce_e070
52210  adds r2,r2,#17 ;@ Now r2=0-16
52211  beq norotx_e070
52212
52213  mov r0,r0,lsr #16 ;@ Shift down
52214
52215;@ First get X bit (middle):
52216  ldr r3,[r7,#0x4c]
52217  rsb r1,r2,#16
52218  and r3,r3,#0x20000000
52219  mov r3,r3,lsr #29
52220  mov r3,r3,lsl r1
52221;@ Rotate bits:
52222  orr r3,r3,r0,lsr r2 ;@ Orr right part
52223  rsbs r2,r2,#17 ;@ should also clear ARM V
52224  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
52225
52226  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
52227  mrs r10,cpsr ;@ r10=flags
52228  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
52229  b nozeroxe070
52230norotx_e070:
52231  ldr r2,[r7,#0x4c]
52232  adds r0,r0,#0 ;@ Define flags
52233  and r10,r0,#0x80000000 ;@ r10=N_flag
52234  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52235  and r2,r2,#0x20000000
52236  orr r10,r10,r2 ;@ C = old_X
52237nozeroxe070:
52238
52239;@ EaWrite: r0 into register[r11]:
52240  mov r0,r0,lsr #16
52241  strh r0,[r7,r11]
52242
52243  ldrh r8,[r4],#2 ;@ Fetch next opcode
52244  subs r5,r5,#6 ;@ Subtract cycles
52245  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52246  b CycloneEnd
52247
52248;@ ---------- [e078] ror.w d0, d0 uses Ope078 ----------
52249Ope078:
52250;@ EaCalc : Get register index into r11:
52251  and r11,r8,#0x0007
52252  mov r11,r11,lsl #2
52253;@ EaRead : Read register[r11] into r0:
52254  ldr r0,[r7,r11]
52255  mov r0,r0,asl #16
52256
52257;@ Use Dn for count:
52258  and r2,r8,#0x0e00
52259  ldr r2,[r7,r2,lsr #7]
52260  and r2,r2,#63
52261
52262  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52263
52264;@ Mirror value in whole 32 bits:
52265  orr r0,r0,r0,lsr #16
52266
52267;@ Rotate register:
52268  adds r0,r0,#0 ;@ first clear V and C
52269  movs r0,r0,ror r2
52270  mrs r10,cpsr ;@ r10=flags
52271
52272;@ EaWrite: r0 into register[r11]:
52273  mov r0,r0,lsr #16
52274  strh r0,[r7,r11]
52275
52276  ldrh r8,[r4],#2 ;@ Fetch next opcode
52277  subs r5,r5,#6 ;@ Subtract cycles
52278  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52279  b CycloneEnd
52280
52281;@ ---------- [e080] asr.l #8, d0 uses Ope080 ----------
52282Ope080:
52283;@ EaCalc : Get register index into r11:
52284  and r11,r8,#0x0007
52285;@ EaRead : Read register[r11] into r0:
52286  ldr r0,[r7,r11,lsl #2]
52287
52288;@ Shift register:
52289  movs r0,r0,asr #8
52290  mrs r10,cpsr ;@ r10=flags
52291  str r10,[r7,#0x4c] ;@ Save X bit
52292
52293;@ EaWrite: r0 into register[r11]:
52294  str r0,[r7,r11,lsl #2]
52295
52296  ldrh r8,[r4],#2 ;@ Fetch next opcode
52297  subs r5,r5,#24 ;@ Subtract cycles
52298  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52299  b CycloneEnd
52300
52301;@ ---------- [e088] lsr.l #8, d0 uses Ope088 ----------
52302Ope088:
52303;@ EaCalc : Get register index into r11:
52304  and r11,r8,#0x0007
52305;@ EaRead : Read register[r11] into r0:
52306  ldr r0,[r7,r11,lsl #2]
52307
52308;@ Shift register:
52309  movs r0,r0,lsr #8
52310  mrs r10,cpsr ;@ r10=flags
52311  str r10,[r7,#0x4c] ;@ Save X bit
52312
52313;@ EaWrite: r0 into register[r11]:
52314  str r0,[r7,r11,lsl #2]
52315
52316  ldrh r8,[r4],#2 ;@ Fetch next opcode
52317  subs r5,r5,#24 ;@ Subtract cycles
52318  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52319  b CycloneEnd
52320
52321;@ ---------- [e090] roxr.l #8, d0 uses Ope090 ----------
52322Ope090:
52323;@ EaCalc : Get register index into r11:
52324  and r11,r8,#0x0007
52325;@ EaRead : Read register[r11] into r0:
52326  ldr r0,[r7,r11,lsl #2]
52327
52328  mov r2,#8
52329
52330;@ First get X bit (middle):
52331  ldr r3,[r7,#0x4c]
52332  rsb r1,r2,#32
52333  and r3,r3,#0x20000000
52334  mov r3,r3,lsr #29
52335  mov r3,r3,lsl r1
52336;@ Rotate bits:
52337  orr r3,r3,r0,lsr r2 ;@ Orr right part
52338  rsbs r2,r2,#33 ;@ should also clear ARM V
52339  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
52340
52341  mrs r10,cpsr ;@ r10=flags
52342  str r10,[r7,#0x4c] ;@ Save X bit
52343
52344;@ EaWrite: r0 into register[r11]:
52345  str r0,[r7,r11,lsl #2]
52346
52347  ldrh r8,[r4],#2 ;@ Fetch next opcode
52348  subs r5,r5,#24 ;@ Subtract cycles
52349  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52350  b CycloneEnd
52351
52352;@ ---------- [e098] ror.l #8, d0 uses Ope098 ----------
52353Ope098:
52354;@ EaCalc : Get register index into r11:
52355  and r11,r8,#0x0007
52356;@ EaRead : Read register[r11] into r0:
52357  ldr r0,[r7,r11,lsl #2]
52358
52359;@ Rotate register:
52360  adds r0,r0,#0 ;@ first clear V and C
52361  movs r0,r0,ror #8
52362  mrs r10,cpsr ;@ r10=flags
52363
52364;@ EaWrite: r0 into register[r11]:
52365  str r0,[r7,r11,lsl #2]
52366
52367  ldrh r8,[r4],#2 ;@ Fetch next opcode
52368  subs r5,r5,#24 ;@ Subtract cycles
52369  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52370  b CycloneEnd
52371
52372;@ ---------- [e0a0] asr.l d0, d0 uses Ope0a0 ----------
52373Ope0a0:
52374;@ EaCalc : Get register index into r11:
52375  and r11,r8,#0x0007
52376;@ EaRead : Read register[r11] into r0:
52377  ldr r0,[r7,r11,lsl #2]
52378
52379;@ Use Dn for count:
52380  and r2,r8,#0x0e00
52381  ldr r2,[r7,r2,lsr #7]
52382  and r2,r2,#63
52383
52384  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52385
52386;@ Shift register:
52387  movs r0,r0,asr r2
52388  mrs r10,cpsr ;@ r10=flags
52389  cmp r2,#0 ;@ shifting by 0?
52390  biceq r10,r10,#0x20000000 ;@ if so, clear carry
52391  strne r10,[r7,#0x4c] ;@ else Save X bit
52392
52393;@ EaWrite: r0 into register[r11]:
52394  str r0,[r7,r11,lsl #2]
52395
52396  ldrh r8,[r4],#2 ;@ Fetch next opcode
52397  subs r5,r5,#8 ;@ Subtract cycles
52398  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52399  b CycloneEnd
52400
52401;@ ---------- [e0a8] lsr.l d0, d0 uses Ope0a8 ----------
52402Ope0a8:
52403;@ EaCalc : Get register index into r11:
52404  and r11,r8,#0x0007
52405;@ EaRead : Read register[r11] into r0:
52406  ldr r0,[r7,r11,lsl #2]
52407
52408;@ Use Dn for count:
52409  and r2,r8,#0x0e00
52410  ldr r2,[r7,r2,lsr #7]
52411  and r2,r2,#63
52412
52413  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52414
52415;@ Shift register:
52416  movs r0,r0,lsr r2
52417  mrs r10,cpsr ;@ r10=flags
52418  cmp r2,#0 ;@ shifting by 0?
52419  biceq r10,r10,#0x20000000 ;@ if so, clear carry
52420  strne r10,[r7,#0x4c] ;@ else Save X bit
52421
52422;@ EaWrite: r0 into register[r11]:
52423  str r0,[r7,r11,lsl #2]
52424
52425  ldrh r8,[r4],#2 ;@ Fetch next opcode
52426  subs r5,r5,#8 ;@ Subtract cycles
52427  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52428  b CycloneEnd
52429
52430;@ ---------- [e0b0] roxr.l d0, d0 uses Ope0b0 ----------
52431Ope0b0:
52432;@ EaCalc : Get register index into r11:
52433  and r11,r8,#0x0007
52434;@ EaRead : Read register[r11] into r0:
52435  ldr r0,[r7,r11,lsl #2]
52436
52437;@ Use Dn for count:
52438  and r2,r8,#0x0e00
52439  ldr r2,[r7,r2,lsr #7]
52440  and r2,r2,#63
52441
52442  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52443
52444  subs r2,r2,#33
52445  addmis r2,r2,#33 ;@ Now r2=0-32
52446  beq norotx_e0b0
52447
52448
52449;@ First get X bit (middle):
52450  ldr r3,[r7,#0x4c]
52451  rsb r1,r2,#32
52452  and r3,r3,#0x20000000
52453  mov r3,r3,lsr #29
52454  mov r3,r3,lsl r1
52455;@ Rotate bits:
52456  orr r3,r3,r0,lsr r2 ;@ Orr right part
52457  rsbs r2,r2,#33 ;@ should also clear ARM V
52458  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
52459
52460  mrs r10,cpsr ;@ r10=flags
52461  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
52462  b nozeroxe0b0
52463norotx_e0b0:
52464  ldr r2,[r7,#0x4c]
52465  adds r0,r0,#0 ;@ Define flags
52466  and r10,r0,#0x80000000 ;@ r10=N_flag
52467  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52468  and r2,r2,#0x20000000
52469  orr r10,r10,r2 ;@ C = old_X
52470nozeroxe0b0:
52471
52472;@ EaWrite: r0 into register[r11]:
52473  str r0,[r7,r11,lsl #2]
52474
52475  ldrh r8,[r4],#2 ;@ Fetch next opcode
52476  subs r5,r5,#8 ;@ Subtract cycles
52477  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52478  b CycloneEnd
52479
52480;@ ---------- [e0b8] ror.l d0, d0 uses Ope0b8 ----------
52481Ope0b8:
52482;@ EaCalc : Get register index into r11:
52483  and r11,r8,#0x0007
52484;@ EaRead : Read register[r11] into r0:
52485  ldr r0,[r7,r11,lsl #2]
52486
52487;@ Use Dn for count:
52488  and r2,r8,#0x0e00
52489  ldr r2,[r7,r2,lsr #7]
52490  and r2,r2,#63
52491
52492  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52493
52494;@ Rotate register:
52495  adds r0,r0,#0 ;@ first clear V and C
52496  movs r0,r0,ror r2
52497  mrs r10,cpsr ;@ r10=flags
52498
52499;@ EaWrite: r0 into register[r11]:
52500  str r0,[r7,r11,lsl #2]
52501
52502  ldrh r8,[r4],#2 ;@ Fetch next opcode
52503  subs r5,r5,#8 ;@ Subtract cycles
52504  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52505  b CycloneEnd
52506
52507;@ ---------- [e0d0] asr.w (a0) uses Ope0d0 ----------
52508Ope0d0:
52509;@ EaCalc : Get '(a0)' into r11:
52510  and r2,r8,#0x000f
52511  orr r2,r2,#0x8 ;@ A0-7
52512  ldr r11,[r7,r2,lsl #2]
52513;@ EaRead : Read '(a0)' (address in r11) into r0:
52514  add lr,pc,#4
52515  mov r0,r11
52516  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
52517  mov r0,r0,asl #16
52518
52519;@ For shift right, use loworder bits for the operation:
52520  mov r0,r0,asr #16
52521
52522;@ Shift register:
52523  movs r0,r0,asr #1
52524  mrs r10,cpsr ;@ r10=flags
52525  str r10,[r7,#0x4c] ;@ Save X bit
52526
52527;@ restore after right shift:
52528  movs r0,r0,lsl #16
52529
52530;@ EaWrite: Write r0 into '(a0)' (address in r11):
52531  mov r1,r0,lsr #16
52532  add lr,pc,#4
52533  mov r0,r11
52534  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
52535
52536  ldrh r8,[r4],#2 ;@ Fetch next opcode
52537  subs r5,r5,#12 ;@ Subtract cycles
52538  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52539  b CycloneEnd
52540
52541;@ ---------- [e0d8] asr.w (a0)+ uses Ope0d8 ----------
52542Ope0d8:
52543;@ EaCalc : Get '(a0)+' into r11:
52544  and r2,r8,#0x000f
52545  ldr r11,[r7,r2,lsl #2]
52546  add r3,r11,#2 ;@ Post-increment An
52547  str r3,[r7,r2,lsl #2]
52548;@ EaRead : Read '(a0)+' (address in r11) into r0:
52549  add lr,pc,#4
52550  mov r0,r11
52551  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
52552  mov r0,r0,asl #16
52553
52554;@ For shift right, use loworder bits for the operation:
52555  mov r0,r0,asr #16
52556
52557;@ Shift register:
52558  movs r0,r0,asr #1
52559  mrs r10,cpsr ;@ r10=flags
52560  str r10,[r7,#0x4c] ;@ Save X bit
52561
52562;@ restore after right shift:
52563  movs r0,r0,lsl #16
52564
52565;@ EaWrite: Write r0 into '(a0)+' (address in r11):
52566  mov r1,r0,lsr #16
52567  add lr,pc,#4
52568  mov r0,r11
52569  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
52570
52571  ldrh r8,[r4],#2 ;@ Fetch next opcode
52572  subs r5,r5,#12 ;@ Subtract cycles
52573  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52574  b CycloneEnd
52575
52576;@ ---------- [e0e0] asr.w -(a0) uses Ope0e0 ----------
52577Ope0e0:
52578;@ EaCalc : Get '-(a0)' into r11:
52579  and r2,r8,#0x000f
52580  orr r2,r2,#0x8 ;@ A0-7
52581  ldr r11,[r7,r2,lsl #2]
52582  sub r11,r11,#2 ;@ Pre-decrement An
52583  str r11,[r7,r2,lsl #2]
52584;@ EaRead : Read '-(a0)' (address in r11) into r0:
52585  add lr,pc,#4
52586  mov r0,r11
52587  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
52588  mov r0,r0,asl #16
52589
52590;@ For shift right, use loworder bits for the operation:
52591  mov r0,r0,asr #16
52592
52593;@ Shift register:
52594  movs r0,r0,asr #1
52595  mrs r10,cpsr ;@ r10=flags
52596  str r10,[r7,#0x4c] ;@ Save X bit
52597
52598;@ restore after right shift:
52599  movs r0,r0,lsl #16
52600
52601;@ EaWrite: Write r0 into '-(a0)' (address in r11):
52602  mov r1,r0,lsr #16
52603  add lr,pc,#4
52604  mov r0,r11
52605  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
52606
52607  ldrh r8,[r4],#2 ;@ Fetch next opcode
52608  subs r5,r5,#14 ;@ Subtract cycles
52609  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52610  b CycloneEnd
52611
52612;@ ---------- [e0e8] asr.w ($3333,a0) uses Ope0e8 ----------
52613Ope0e8:
52614;@ EaCalc : Get '($3333,a0)' into r11:
52615  ldrsh r0,[r4],#2 ;@ Fetch offset
52616  and r2,r8,#0x000f
52617  ldr r2,[r7,r2,lsl #2]
52618  add r11,r0,r2 ;@ Add on offset
52619;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
52620  add lr,pc,#4
52621  mov r0,r11
52622  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
52623  mov r0,r0,asl #16
52624
52625;@ For shift right, use loworder bits for the operation:
52626  mov r0,r0,asr #16
52627
52628;@ Shift register:
52629  movs r0,r0,asr #1
52630  mrs r10,cpsr ;@ r10=flags
52631  str r10,[r7,#0x4c] ;@ Save X bit
52632
52633;@ restore after right shift:
52634  movs r0,r0,lsl #16
52635
52636;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
52637  mov r1,r0,lsr #16
52638  add lr,pc,#4
52639  mov r0,r11
52640  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
52641
52642  ldrh r8,[r4],#2 ;@ Fetch next opcode
52643  subs r5,r5,#16 ;@ Subtract cycles
52644  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52645  b CycloneEnd
52646
52647;@ ---------- [e0f0] asr.w ($33,a0,d3.w*2) uses Ope0f0 ----------
52648Ope0f0:
52649;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
52650;@ Get extension word into r3:
52651  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
52652  mov r2,r3,lsr #10
52653  tst r3,#0x0800 ;@ Is Rn Word or Long
52654  and r2,r2,#0x3c ;@ r2=Index of Rn
52655  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
52656  ldrne   r2,[r7,r2] ;@ r2=Rn.l
52657  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
52658  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
52659  and r2,r8,#0x000f
52660  orr r2,r2,#0x8 ;@ A0-7
52661  ldr r2,[r7,r2,lsl #2]
52662  add r11,r2,r3 ;@ r11=Disp+An+Rn
52663;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
52664  add lr,pc,#4
52665  mov r0,r11
52666  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
52667  mov r0,r0,asl #16
52668
52669;@ For shift right, use loworder bits for the operation:
52670  mov r0,r0,asr #16
52671
52672;@ Shift register:
52673  movs r0,r0,asr #1
52674  mrs r10,cpsr ;@ r10=flags
52675  str r10,[r7,#0x4c] ;@ Save X bit
52676
52677;@ restore after right shift:
52678  movs r0,r0,lsl #16
52679
52680;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
52681  mov r1,r0,lsr #16
52682  add lr,pc,#4
52683  mov r0,r11
52684  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
52685
52686  ldrh r8,[r4],#2 ;@ Fetch next opcode
52687  subs r5,r5,#18 ;@ Subtract cycles
52688  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52689  b CycloneEnd
52690
52691;@ ---------- [e0f8] asr.w $3333.w uses Ope0f8 ----------
52692Ope0f8:
52693;@ EaCalc : Get '$3333.w' into r11:
52694  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
52695;@ EaRead : Read '$3333.w' (address in r11) into r0:
52696  add lr,pc,#4
52697  mov r0,r11
52698  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
52699  mov r0,r0,asl #16
52700
52701;@ For shift right, use loworder bits for the operation:
52702  mov r0,r0,asr #16
52703
52704;@ Shift register:
52705  movs r0,r0,asr #1
52706  mrs r10,cpsr ;@ r10=flags
52707  str r10,[r7,#0x4c] ;@ Save X bit
52708
52709;@ restore after right shift:
52710  movs r0,r0,lsl #16
52711
52712;@ EaWrite: Write r0 into '$3333.w' (address in r11):
52713  mov r1,r0,lsr #16
52714  add lr,pc,#4
52715  mov r0,r11
52716  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
52717
52718  ldrh r8,[r4],#2 ;@ Fetch next opcode
52719  subs r5,r5,#16 ;@ Subtract cycles
52720  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52721  b CycloneEnd
52722
52723;@ ---------- [e0f9] asr.w $33333333.l uses Ope0f9 ----------
52724Ope0f9:
52725;@ EaCalc : Get '$33333333.l' into r11:
52726  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
52727  ldrh r0,[r4],#2
52728  orr r11,r0,r2,lsl #16
52729;@ EaRead : Read '$33333333.l' (address in r11) into r0:
52730  add lr,pc,#4
52731  mov r0,r11
52732  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
52733  mov r0,r0,asl #16
52734
52735;@ For shift right, use loworder bits for the operation:
52736  mov r0,r0,asr #16
52737
52738;@ Shift register:
52739  movs r0,r0,asr #1
52740  mrs r10,cpsr ;@ r10=flags
52741  str r10,[r7,#0x4c] ;@ Save X bit
52742
52743;@ restore after right shift:
52744  movs r0,r0,lsl #16
52745
52746;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
52747  mov r1,r0,lsr #16
52748  add lr,pc,#4
52749  mov r0,r11
52750  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
52751
52752  ldrh r8,[r4],#2 ;@ Fetch next opcode
52753  subs r5,r5,#20 ;@ Subtract cycles
52754  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52755  b CycloneEnd
52756
52757;@ ---------- [e100] asl.b #8, d0 uses Ope100 ----------
52758Ope100:
52759;@ EaCalc : Get register index into r11:
52760  and r11,r8,#0x0007
52761;@ EaRead : Read register[r11] into r0:
52762  ldr r0,[r7,r11,lsl #2]
52763  mov r0,r0,asl #24
52764
52765  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
52766;@ Shift register:
52767  movs r0,r0,asl #8
52768  mrs r10,cpsr ;@ r10=flags
52769  str r10,[r7,#0x4c] ;@ Save X bit
52770
52771;@ calculate V flag (set if sign bit changes at anytime):
52772  mov r1,#0x80000000
52773  ands r3,r3,r1,asr #8
52774  cmpne r3,r1,asr #8
52775  eoreq r1,r0,r3
52776  tsteq r1,#0x80000000
52777  orrne r10,r10,#0x10000000
52778
52779;@ EaWrite: r0 into register[r11]:
52780  mov r0,r0,lsr #24
52781  strb r0,[r7,r11,lsl #2]
52782
52783  ldrh r8,[r4],#2 ;@ Fetch next opcode
52784  subs r5,r5,#22 ;@ Subtract cycles
52785  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52786  b CycloneEnd
52787
52788;@ ---------- [e108] lsl.b #8, d0 uses Ope108 ----------
52789Ope108:
52790;@ EaCalc : Get register index into r11:
52791  and r11,r8,#0x0007
52792;@ EaRead : Read register[r11] into r0:
52793  ldr r0,[r7,r11,lsl #2]
52794  mov r0,r0,asl #24
52795
52796;@ Shift register:
52797  movs r0,r0,lsl #8
52798  mrs r10,cpsr ;@ r10=flags
52799  str r10,[r7,#0x4c] ;@ Save X bit
52800
52801;@ EaWrite: r0 into register[r11]:
52802  mov r0,r0,lsr #24
52803  strb r0,[r7,r11,lsl #2]
52804
52805  ldrh r8,[r4],#2 ;@ Fetch next opcode
52806  subs r5,r5,#22 ;@ Subtract cycles
52807  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52808  b CycloneEnd
52809
52810;@ ---------- [e110] roxl.b #8, d0 uses Ope110 ----------
52811Ope110:
52812;@ EaCalc : Get register index into r11:
52813  and r11,r8,#0x0007
52814;@ EaRead : Read register[r11] into r0:
52815  ldr r0,[r7,r11,lsl #2]
52816  mov r0,r0,asl #24
52817
52818  mov r2,#1 ;@ Reversed
52819  mov r0,r0,lsr #24 ;@ Shift down
52820
52821;@ First get X bit (middle):
52822  ldr r3,[r7,#0x4c]
52823  rsb r1,r2,#8
52824  and r3,r3,#0x20000000
52825  mov r3,r3,lsr #29
52826  mov r3,r3,lsl r1
52827;@ Rotate bits:
52828  orr r3,r3,r0,lsr r2 ;@ Orr right part
52829  rsbs r2,r2,#9 ;@ should also clear ARM V
52830  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
52831
52832  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
52833  mrs r10,cpsr ;@ r10=flags
52834  str r10,[r7,#0x4c] ;@ Save X bit
52835
52836;@ EaWrite: r0 into register[r11]:
52837  mov r0,r0,lsr #24
52838  strb r0,[r7,r11,lsl #2]
52839
52840  ldrh r8,[r4],#2 ;@ Fetch next opcode
52841  subs r5,r5,#22 ;@ Subtract cycles
52842  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52843  b CycloneEnd
52844
52845;@ ---------- [e118] rol.b #8, d0 uses Ope118 ----------
52846Ope118:
52847;@ EaCalc : Get register index into r11:
52848  and r11,r8,#0x0007
52849;@ EaRead : Read register[r11] into r0:
52850  ldr r0,[r7,r11,lsl #2]
52851  mov r0,r0,asl #24
52852
52853;@ Mirror value in whole 32 bits:
52854  orr r0,r0,r0,lsr #8
52855  orr r0,r0,r0,lsr #16
52856
52857;@ Rotate register:
52858  movs r0,r0,ror #24
52859  mrs r10,cpsr ;@ r10=flags
52860  bic r10,r10,#0x30000000 ;@ clear CV
52861;@ Get carry bit from bit 0:
52862  tst r0,#1
52863  orrne r10,r10,#0x20000000
52864
52865;@ EaWrite: r0 into register[r11]:
52866  mov r0,r0,lsr #24
52867  strb r0,[r7,r11,lsl #2]
52868
52869  ldrh r8,[r4],#2 ;@ Fetch next opcode
52870  subs r5,r5,#22 ;@ Subtract cycles
52871  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52872  b CycloneEnd
52873
52874;@ ---------- [e120] asl.b d0, d0 uses Ope120 ----------
52875Ope120:
52876;@ EaCalc : Get register index into r11:
52877  and r11,r8,#0x0007
52878;@ EaRead : Read register[r11] into r0:
52879  ldr r0,[r7,r11,lsl #2]
52880  mov r0,r0,asl #24
52881
52882;@ Use Dn for count:
52883  and r2,r8,#0x0e00
52884  ldr r2,[r7,r2,lsr #7]
52885  and r2,r2,#63
52886
52887  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52888
52889  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
52890;@ Shift register:
52891  movs r0,r0,asl r2
52892  mrs r10,cpsr ;@ r10=flags
52893  cmp r2,#0 ;@ shifting by 0?
52894  biceq r10,r10,#0x20000000 ;@ if so, clear carry
52895  strne r10,[r7,#0x4c] ;@ else Save X bit
52896
52897;@ calculate V flag (set if sign bit changes at anytime):
52898  mov r1,#0x80000000
52899  ands r3,r3,r1,asr r2
52900  cmpne r3,r1,asr r2
52901  eoreq r1,r0,r3
52902  tsteq r1,#0x80000000
52903  orrne r10,r10,#0x10000000
52904
52905;@ EaWrite: r0 into register[r11]:
52906  mov r0,r0,lsr #24
52907  strb r0,[r7,r11,lsl #2]
52908
52909  ldrh r8,[r4],#2 ;@ Fetch next opcode
52910  subs r5,r5,#6 ;@ Subtract cycles
52911  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52912  b CycloneEnd
52913
52914;@ ---------- [e128] lsl.b d0, d0 uses Ope128 ----------
52915Ope128:
52916;@ EaCalc : Get register index into r11:
52917  and r11,r8,#0x0007
52918;@ EaRead : Read register[r11] into r0:
52919  ldr r0,[r7,r11,lsl #2]
52920  mov r0,r0,asl #24
52921
52922;@ Use Dn for count:
52923  and r2,r8,#0x0e00
52924  ldr r2,[r7,r2,lsr #7]
52925  and r2,r2,#63
52926
52927  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52928
52929;@ Shift register:
52930  movs r0,r0,lsl r2
52931  mrs r10,cpsr ;@ r10=flags
52932  cmp r2,#0 ;@ shifting by 0?
52933  biceq r10,r10,#0x20000000 ;@ if so, clear carry
52934  strne r10,[r7,#0x4c] ;@ else Save X bit
52935
52936;@ EaWrite: r0 into register[r11]:
52937  mov r0,r0,lsr #24
52938  strb r0,[r7,r11,lsl #2]
52939
52940  ldrh r8,[r4],#2 ;@ Fetch next opcode
52941  subs r5,r5,#6 ;@ Subtract cycles
52942  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
52943  b CycloneEnd
52944
52945;@ ---------- [e130] roxl.b d0, d0 uses Ope130 ----------
52946Ope130:
52947;@ EaCalc : Get register index into r11:
52948  and r11,r8,#0x0007
52949;@ EaRead : Read register[r11] into r0:
52950  ldr r0,[r7,r11,lsl #2]
52951  mov r0,r0,asl #24
52952
52953;@ Use Dn for count:
52954  and r2,r8,#0x0e00
52955  ldr r2,[r7,r2,lsr #7]
52956  and r2,r2,#63
52957
52958  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
52959
52960;@ Reduce r2 until <0:
52961Reduce_e130:
52962  subs r2,r2,#9
52963  bpl Reduce_e130
52964  adds r2,r2,#9 ;@ Now r2=0-8
52965  beq norotx_e130
52966
52967  rsb r2,r2,#9 ;@ Reverse direction
52968  mov r0,r0,lsr #24 ;@ Shift down
52969
52970;@ First get X bit (middle):
52971  ldr r3,[r7,#0x4c]
52972  rsb r1,r2,#8
52973  and r3,r3,#0x20000000
52974  mov r3,r3,lsr #29
52975  mov r3,r3,lsl r1
52976;@ Rotate bits:
52977  orr r3,r3,r0,lsr r2 ;@ Orr right part
52978  rsbs r2,r2,#9 ;@ should also clear ARM V
52979  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
52980
52981  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
52982  mrs r10,cpsr ;@ r10=flags
52983  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
52984  b nozeroxe130
52985norotx_e130:
52986  ldr r2,[r7,#0x4c]
52987  adds r0,r0,#0 ;@ Define flags
52988  and r10,r0,#0x80000000 ;@ r10=N_flag
52989  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
52990  and r2,r2,#0x20000000
52991  orr r10,r10,r2 ;@ C = old_X
52992nozeroxe130:
52993
52994;@ EaWrite: r0 into register[r11]:
52995  mov r0,r0,lsr #24
52996  strb r0,[r7,r11,lsl #2]
52997
52998  ldrh r8,[r4],#2 ;@ Fetch next opcode
52999  subs r5,r5,#6 ;@ Subtract cycles
53000  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53001  b CycloneEnd
53002
53003;@ ---------- [e138] rol.b d0, d0 uses Ope138 ----------
53004Ope138:
53005;@ EaCalc : Get register index into r11:
53006  and r11,r8,#0x0007
53007;@ EaRead : Read register[r11] into r0:
53008  ldr r0,[r7,r11,lsl #2]
53009  mov r0,r0,asl #24
53010
53011;@ Use Dn for count:
53012  and r2,r8,#0x0e00
53013  ldr r2,[r7,r2,lsr #7]
53014  and r2,r2,#63
53015
53016  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
53017
53018;@ Mirror value in whole 32 bits:
53019  orr r0,r0,r0,lsr #8
53020  orr r0,r0,r0,lsr #16
53021
53022;@ Rotate register:
53023  rsb r2,r2,#32
53024  movs r0,r0,ror r2
53025  mrs r10,cpsr ;@ r10=flags
53026  bic r10,r10,#0x30000000 ;@ clear CV
53027;@ Get carry bit from bit 0:
53028  cmp r2,#32 ;@ rotating by 0?
53029  tstne r0,#1 ;@ no, check bit 0
53030  orrne r10,r10,#0x20000000
53031
53032;@ EaWrite: r0 into register[r11]:
53033  mov r0,r0,lsr #24
53034  strb r0,[r7,r11,lsl #2]
53035
53036  ldrh r8,[r4],#2 ;@ Fetch next opcode
53037  subs r5,r5,#6 ;@ Subtract cycles
53038  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53039  b CycloneEnd
53040
53041;@ ---------- [e140] asl.w #8, d0 uses Ope140 ----------
53042Ope140:
53043;@ EaCalc : Get register index into r11:
53044  and r11,r8,#0x0007
53045  mov r11,r11,lsl #2
53046;@ EaRead : Read register[r11] into r0:
53047  ldr r0,[r7,r11]
53048  mov r0,r0,asl #16
53049
53050  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53051;@ Shift register:
53052  movs r0,r0,asl #8
53053  mrs r10,cpsr ;@ r10=flags
53054  str r10,[r7,#0x4c] ;@ Save X bit
53055
53056;@ calculate V flag (set if sign bit changes at anytime):
53057  mov r1,#0x80000000
53058  ands r3,r3,r1,asr #8
53059  cmpne r3,r1,asr #8
53060  eoreq r1,r0,r3
53061  tsteq r1,#0x80000000
53062  orrne r10,r10,#0x10000000
53063
53064;@ EaWrite: r0 into register[r11]:
53065  mov r0,r0,lsr #16
53066  strh r0,[r7,r11]
53067
53068  ldrh r8,[r4],#2 ;@ Fetch next opcode
53069  subs r5,r5,#22 ;@ Subtract cycles
53070  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53071  b CycloneEnd
53072
53073;@ ---------- [e148] lsl.w #8, d0 uses Ope148 ----------
53074Ope148:
53075;@ EaCalc : Get register index into r11:
53076  and r11,r8,#0x0007
53077  mov r11,r11,lsl #2
53078;@ EaRead : Read register[r11] into r0:
53079  ldr r0,[r7,r11]
53080  mov r0,r0,asl #16
53081
53082;@ Shift register:
53083  movs r0,r0,lsl #8
53084  mrs r10,cpsr ;@ r10=flags
53085  str r10,[r7,#0x4c] ;@ Save X bit
53086
53087;@ EaWrite: r0 into register[r11]:
53088  mov r0,r0,lsr #16
53089  strh r0,[r7,r11]
53090
53091  ldrh r8,[r4],#2 ;@ Fetch next opcode
53092  subs r5,r5,#22 ;@ Subtract cycles
53093  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53094  b CycloneEnd
53095
53096;@ ---------- [e150] roxl.w #8, d0 uses Ope150 ----------
53097Ope150:
53098;@ EaCalc : Get register index into r11:
53099  and r11,r8,#0x0007
53100  mov r11,r11,lsl #2
53101;@ EaRead : Read register[r11] into r0:
53102  ldr r0,[r7,r11]
53103  mov r0,r0,asl #16
53104
53105  mov r2,#9 ;@ Reversed
53106  mov r0,r0,lsr #16 ;@ Shift down
53107
53108;@ First get X bit (middle):
53109  ldr r3,[r7,#0x4c]
53110  rsb r1,r2,#16
53111  and r3,r3,#0x20000000
53112  mov r3,r3,lsr #29
53113  mov r3,r3,lsl r1
53114;@ Rotate bits:
53115  orr r3,r3,r0,lsr r2 ;@ Orr right part
53116  rsbs r2,r2,#17 ;@ should also clear ARM V
53117  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
53118
53119  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
53120  mrs r10,cpsr ;@ r10=flags
53121  str r10,[r7,#0x4c] ;@ Save X bit
53122
53123;@ EaWrite: r0 into register[r11]:
53124  mov r0,r0,lsr #16
53125  strh r0,[r7,r11]
53126
53127  ldrh r8,[r4],#2 ;@ Fetch next opcode
53128  subs r5,r5,#22 ;@ Subtract cycles
53129  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53130  b CycloneEnd
53131
53132;@ ---------- [e158] rol.w #8, d0 uses Ope158 ----------
53133Ope158:
53134;@ EaCalc : Get register index into r11:
53135  and r11,r8,#0x0007
53136  mov r11,r11,lsl #2
53137;@ EaRead : Read register[r11] into r0:
53138  ldr r0,[r7,r11]
53139  mov r0,r0,asl #16
53140
53141;@ Mirror value in whole 32 bits:
53142  orr r0,r0,r0,lsr #16
53143
53144;@ Rotate register:
53145  movs r0,r0,ror #24
53146  mrs r10,cpsr ;@ r10=flags
53147  bic r10,r10,#0x30000000 ;@ clear CV
53148;@ Get carry bit from bit 0:
53149  tst r0,#1
53150  orrne r10,r10,#0x20000000
53151
53152;@ EaWrite: r0 into register[r11]:
53153  mov r0,r0,lsr #16
53154  strh r0,[r7,r11]
53155
53156  ldrh r8,[r4],#2 ;@ Fetch next opcode
53157  subs r5,r5,#22 ;@ Subtract cycles
53158  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53159  b CycloneEnd
53160
53161;@ ---------- [e160] asl.w d0, d0 uses Ope160 ----------
53162Ope160:
53163;@ EaCalc : Get register index into r11:
53164  and r11,r8,#0x0007
53165  mov r11,r11,lsl #2
53166;@ EaRead : Read register[r11] into r0:
53167  ldr r0,[r7,r11]
53168  mov r0,r0,asl #16
53169
53170;@ Use Dn for count:
53171  and r2,r8,#0x0e00
53172  ldr r2,[r7,r2,lsr #7]
53173  and r2,r2,#63
53174
53175  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
53176
53177  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53178;@ Shift register:
53179  movs r0,r0,asl r2
53180  mrs r10,cpsr ;@ r10=flags
53181  cmp r2,#0 ;@ shifting by 0?
53182  biceq r10,r10,#0x20000000 ;@ if so, clear carry
53183  strne r10,[r7,#0x4c] ;@ else Save X bit
53184
53185;@ calculate V flag (set if sign bit changes at anytime):
53186  mov r1,#0x80000000
53187  ands r3,r3,r1,asr r2
53188  cmpne r3,r1,asr r2
53189  eoreq r1,r0,r3
53190  tsteq r1,#0x80000000
53191  orrne r10,r10,#0x10000000
53192
53193;@ EaWrite: r0 into register[r11]:
53194  mov r0,r0,lsr #16
53195  strh r0,[r7,r11]
53196
53197  ldrh r8,[r4],#2 ;@ Fetch next opcode
53198  subs r5,r5,#6 ;@ Subtract cycles
53199  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53200  b CycloneEnd
53201
53202;@ ---------- [e168] lsl.w d0, d0 uses Ope168 ----------
53203Ope168:
53204;@ EaCalc : Get register index into r11:
53205  and r11,r8,#0x0007
53206  mov r11,r11,lsl #2
53207;@ EaRead : Read register[r11] into r0:
53208  ldr r0,[r7,r11]
53209  mov r0,r0,asl #16
53210
53211;@ Use Dn for count:
53212  and r2,r8,#0x0e00
53213  ldr r2,[r7,r2,lsr #7]
53214  and r2,r2,#63
53215
53216  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
53217
53218;@ Shift register:
53219  movs r0,r0,lsl r2
53220  mrs r10,cpsr ;@ r10=flags
53221  cmp r2,#0 ;@ shifting by 0?
53222  biceq r10,r10,#0x20000000 ;@ if so, clear carry
53223  strne r10,[r7,#0x4c] ;@ else Save X bit
53224
53225;@ EaWrite: r0 into register[r11]:
53226  mov r0,r0,lsr #16
53227  strh r0,[r7,r11]
53228
53229  ldrh r8,[r4],#2 ;@ Fetch next opcode
53230  subs r5,r5,#6 ;@ Subtract cycles
53231  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53232  b CycloneEnd
53233
53234;@ ---------- [e170] roxl.w d0, d0 uses Ope170 ----------
53235Ope170:
53236;@ EaCalc : Get register index into r11:
53237  and r11,r8,#0x0007
53238  mov r11,r11,lsl #2
53239;@ EaRead : Read register[r11] into r0:
53240  ldr r0,[r7,r11]
53241  mov r0,r0,asl #16
53242
53243;@ Use Dn for count:
53244  and r2,r8,#0x0e00
53245  ldr r2,[r7,r2,lsr #7]
53246  and r2,r2,#63
53247
53248  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
53249
53250;@ Reduce r2 until <0:
53251Reduce_e170:
53252  subs r2,r2,#17
53253  bpl Reduce_e170
53254  adds r2,r2,#17 ;@ Now r2=0-16
53255  beq norotx_e170
53256
53257  rsb r2,r2,#17 ;@ Reverse direction
53258  mov r0,r0,lsr #16 ;@ Shift down
53259
53260;@ First get X bit (middle):
53261  ldr r3,[r7,#0x4c]
53262  rsb r1,r2,#16
53263  and r3,r3,#0x20000000
53264  mov r3,r3,lsr #29
53265  mov r3,r3,lsl r1
53266;@ Rotate bits:
53267  orr r3,r3,r0,lsr r2 ;@ Orr right part
53268  rsbs r2,r2,#17 ;@ should also clear ARM V
53269  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
53270
53271  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
53272  mrs r10,cpsr ;@ r10=flags
53273  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
53274  b nozeroxe170
53275norotx_e170:
53276  ldr r2,[r7,#0x4c]
53277  adds r0,r0,#0 ;@ Define flags
53278  and r10,r0,#0x80000000 ;@ r10=N_flag
53279  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53280  and r2,r2,#0x20000000
53281  orr r10,r10,r2 ;@ C = old_X
53282nozeroxe170:
53283
53284;@ EaWrite: r0 into register[r11]:
53285  mov r0,r0,lsr #16
53286  strh r0,[r7,r11]
53287
53288  ldrh r8,[r4],#2 ;@ Fetch next opcode
53289  subs r5,r5,#6 ;@ Subtract cycles
53290  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53291  b CycloneEnd
53292
53293;@ ---------- [e178] rol.w d0, d0 uses Ope178 ----------
53294Ope178:
53295;@ EaCalc : Get register index into r11:
53296  and r11,r8,#0x0007
53297  mov r11,r11,lsl #2
53298;@ EaRead : Read register[r11] into r0:
53299  ldr r0,[r7,r11]
53300  mov r0,r0,asl #16
53301
53302;@ Use Dn for count:
53303  and r2,r8,#0x0e00
53304  ldr r2,[r7,r2,lsr #7]
53305  and r2,r2,#63
53306
53307  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
53308
53309;@ Mirror value in whole 32 bits:
53310  orr r0,r0,r0,lsr #16
53311
53312;@ Rotate register:
53313  rsb r2,r2,#32
53314  movs r0,r0,ror r2
53315  mrs r10,cpsr ;@ r10=flags
53316  bic r10,r10,#0x30000000 ;@ clear CV
53317;@ Get carry bit from bit 0:
53318  cmp r2,#32 ;@ rotating by 0?
53319  tstne r0,#1 ;@ no, check bit 0
53320  orrne r10,r10,#0x20000000
53321
53322;@ EaWrite: r0 into register[r11]:
53323  mov r0,r0,lsr #16
53324  strh r0,[r7,r11]
53325
53326  ldrh r8,[r4],#2 ;@ Fetch next opcode
53327  subs r5,r5,#6 ;@ Subtract cycles
53328  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53329  b CycloneEnd
53330
53331;@ ---------- [e180] asl.l #8, d0 uses Ope180 ----------
53332Ope180:
53333;@ EaCalc : Get register index into r11:
53334  and r11,r8,#0x0007
53335;@ EaRead : Read register[r11] into r0:
53336  ldr r0,[r7,r11,lsl #2]
53337
53338  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53339;@ Shift register:
53340  movs r0,r0,asl #8
53341  mrs r10,cpsr ;@ r10=flags
53342  str r10,[r7,#0x4c] ;@ Save X bit
53343
53344;@ calculate V flag (set if sign bit changes at anytime):
53345  mov r1,#0x80000000
53346  ands r3,r3,r1,asr #8
53347  cmpne r3,r1,asr #8
53348  eoreq r1,r0,r3
53349  tsteq r1,#0x80000000
53350  orrne r10,r10,#0x10000000
53351
53352;@ EaWrite: r0 into register[r11]:
53353  str r0,[r7,r11,lsl #2]
53354
53355  ldrh r8,[r4],#2 ;@ Fetch next opcode
53356  subs r5,r5,#24 ;@ Subtract cycles
53357  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53358  b CycloneEnd
53359
53360;@ ---------- [e188] lsl.l #8, d0 uses Ope188 ----------
53361Ope188:
53362;@ EaCalc : Get register index into r11:
53363  and r11,r8,#0x0007
53364;@ EaRead : Read register[r11] into r0:
53365  ldr r0,[r7,r11,lsl #2]
53366
53367;@ Shift register:
53368  movs r0,r0,lsl #8
53369  mrs r10,cpsr ;@ r10=flags
53370  str r10,[r7,#0x4c] ;@ Save X bit
53371
53372;@ EaWrite: r0 into register[r11]:
53373  str r0,[r7,r11,lsl #2]
53374
53375  ldrh r8,[r4],#2 ;@ Fetch next opcode
53376  subs r5,r5,#24 ;@ Subtract cycles
53377  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53378  b CycloneEnd
53379
53380;@ ---------- [e190] roxl.l #8, d0 uses Ope190 ----------
53381Ope190:
53382;@ EaCalc : Get register index into r11:
53383  and r11,r8,#0x0007
53384;@ EaRead : Read register[r11] into r0:
53385  ldr r0,[r7,r11,lsl #2]
53386
53387  mov r2,#25 ;@ Reversed
53388
53389;@ First get X bit (middle):
53390  ldr r3,[r7,#0x4c]
53391  rsb r1,r2,#32
53392  and r3,r3,#0x20000000
53393  mov r3,r3,lsr #29
53394  mov r3,r3,lsl r1
53395;@ Rotate bits:
53396  orr r3,r3,r0,lsr r2 ;@ Orr right part
53397  rsbs r2,r2,#33 ;@ should also clear ARM V
53398  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
53399
53400  mrs r10,cpsr ;@ r10=flags
53401  str r10,[r7,#0x4c] ;@ Save X bit
53402
53403;@ EaWrite: r0 into register[r11]:
53404  str r0,[r7,r11,lsl #2]
53405
53406  ldrh r8,[r4],#2 ;@ Fetch next opcode
53407  subs r5,r5,#24 ;@ Subtract cycles
53408  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53409  b CycloneEnd
53410
53411;@ ---------- [e198] rol.l #8, d0 uses Ope198 ----------
53412Ope198:
53413;@ EaCalc : Get register index into r11:
53414  and r11,r8,#0x0007
53415;@ EaRead : Read register[r11] into r0:
53416  ldr r0,[r7,r11,lsl #2]
53417
53418;@ Rotate register:
53419  movs r0,r0,ror #24
53420  mrs r10,cpsr ;@ r10=flags
53421  bic r10,r10,#0x30000000 ;@ clear CV
53422;@ Get carry bit from bit 0:
53423  tst r0,#1
53424  orrne r10,r10,#0x20000000
53425
53426;@ EaWrite: r0 into register[r11]:
53427  str r0,[r7,r11,lsl #2]
53428
53429  ldrh r8,[r4],#2 ;@ Fetch next opcode
53430  subs r5,r5,#24 ;@ Subtract cycles
53431  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53432  b CycloneEnd
53433
53434;@ ---------- [e1a0] asl.l d0, d0 uses Ope1a0 ----------
53435Ope1a0:
53436;@ EaCalc : Get register index into r11:
53437  and r11,r8,#0x0007
53438;@ EaRead : Read register[r11] into r0:
53439  ldr r0,[r7,r11,lsl #2]
53440
53441;@ Use Dn for count:
53442  and r2,r8,#0x0e00
53443  ldr r2,[r7,r2,lsr #7]
53444  and r2,r2,#63
53445
53446  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
53447
53448  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53449;@ Shift register:
53450  movs r0,r0,asl r2
53451  mrs r10,cpsr ;@ r10=flags
53452  cmp r2,#0 ;@ shifting by 0?
53453  biceq r10,r10,#0x20000000 ;@ if so, clear carry
53454  strne r10,[r7,#0x4c] ;@ else Save X bit
53455
53456;@ calculate V flag (set if sign bit changes at anytime):
53457  mov r1,#0x80000000
53458  ands r3,r3,r1,asr r2
53459  cmpne r3,r1,asr r2
53460  eoreq r1,r0,r3
53461  tsteq r1,#0x80000000
53462  orrne r10,r10,#0x10000000
53463
53464;@ EaWrite: r0 into register[r11]:
53465  str r0,[r7,r11,lsl #2]
53466
53467  ldrh r8,[r4],#2 ;@ Fetch next opcode
53468  subs r5,r5,#8 ;@ Subtract cycles
53469  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53470  b CycloneEnd
53471
53472;@ ---------- [e1a8] lsl.l d0, d0 uses Ope1a8 ----------
53473Ope1a8:
53474;@ EaCalc : Get register index into r11:
53475  and r11,r8,#0x0007
53476;@ EaRead : Read register[r11] into r0:
53477  ldr r0,[r7,r11,lsl #2]
53478
53479;@ Use Dn for count:
53480  and r2,r8,#0x0e00
53481  ldr r2,[r7,r2,lsr #7]
53482  and r2,r2,#63
53483
53484  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
53485
53486;@ Shift register:
53487  movs r0,r0,lsl r2
53488  mrs r10,cpsr ;@ r10=flags
53489  cmp r2,#0 ;@ shifting by 0?
53490  biceq r10,r10,#0x20000000 ;@ if so, clear carry
53491  strne r10,[r7,#0x4c] ;@ else Save X bit
53492
53493;@ EaWrite: r0 into register[r11]:
53494  str r0,[r7,r11,lsl #2]
53495
53496  ldrh r8,[r4],#2 ;@ Fetch next opcode
53497  subs r5,r5,#8 ;@ Subtract cycles
53498  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53499  b CycloneEnd
53500
53501;@ ---------- [e1b0] roxl.l d0, d0 uses Ope1b0 ----------
53502Ope1b0:
53503;@ EaCalc : Get register index into r11:
53504  and r11,r8,#0x0007
53505;@ EaRead : Read register[r11] into r0:
53506  ldr r0,[r7,r11,lsl #2]
53507
53508;@ Use Dn for count:
53509  and r2,r8,#0x0e00
53510  ldr r2,[r7,r2,lsr #7]
53511  and r2,r2,#63
53512
53513  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
53514
53515  subs r2,r2,#33
53516  addmis r2,r2,#33 ;@ Now r2=0-32
53517  beq norotx_e1b0
53518
53519  rsb r2,r2,#33 ;@ Reverse direction
53520
53521;@ First get X bit (middle):
53522  ldr r3,[r7,#0x4c]
53523  rsb r1,r2,#32
53524  and r3,r3,#0x20000000
53525  mov r3,r3,lsr #29
53526  mov r3,r3,lsl r1
53527;@ Rotate bits:
53528  orr r3,r3,r0,lsr r2 ;@ Orr right part
53529  rsbs r2,r2,#33 ;@ should also clear ARM V
53530  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
53531
53532  mrs r10,cpsr ;@ r10=flags
53533  str r10,[r7,#0x4c] ;@ if not 0, Save X bit
53534  b nozeroxe1b0
53535norotx_e1b0:
53536  ldr r2,[r7,#0x4c]
53537  adds r0,r0,#0 ;@ Define flags
53538  and r10,r0,#0x80000000 ;@ r10=N_flag
53539  orreq r10,r10,#0x40000000 ;@ get NZ, clear CV
53540  and r2,r2,#0x20000000
53541  orr r10,r10,r2 ;@ C = old_X
53542nozeroxe1b0:
53543
53544;@ EaWrite: r0 into register[r11]:
53545  str r0,[r7,r11,lsl #2]
53546
53547  ldrh r8,[r4],#2 ;@ Fetch next opcode
53548  subs r5,r5,#8 ;@ Subtract cycles
53549  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53550  b CycloneEnd
53551
53552;@ ---------- [e1b8] rol.l d0, d0 uses Ope1b8 ----------
53553Ope1b8:
53554;@ EaCalc : Get register index into r11:
53555  and r11,r8,#0x0007
53556;@ EaRead : Read register[r11] into r0:
53557  ldr r0,[r7,r11,lsl #2]
53558
53559;@ Use Dn for count:
53560  and r2,r8,#0x0e00
53561  ldr r2,[r7,r2,lsr #7]
53562  and r2,r2,#63
53563
53564  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
53565
53566;@ Rotate register:
53567  rsb r2,r2,#32
53568  movs r0,r0,ror r2
53569  mrs r10,cpsr ;@ r10=flags
53570  bic r10,r10,#0x30000000 ;@ clear CV
53571;@ Get carry bit from bit 0:
53572  cmp r2,#32 ;@ rotating by 0?
53573  tstne r0,#1 ;@ no, check bit 0
53574  orrne r10,r10,#0x20000000
53575
53576;@ EaWrite: r0 into register[r11]:
53577  str r0,[r7,r11,lsl #2]
53578
53579  ldrh r8,[r4],#2 ;@ Fetch next opcode
53580  subs r5,r5,#8 ;@ Subtract cycles
53581  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53582  b CycloneEnd
53583
53584;@ ---------- [e1d0] asl.w (a0) uses Ope1d0 ----------
53585Ope1d0:
53586;@ EaCalc : Get '(a0)' into r11:
53587  and r2,r8,#0x000f
53588  orr r2,r2,#0x8 ;@ A0-7
53589  ldr r11,[r7,r2,lsl #2]
53590;@ EaRead : Read '(a0)' (address in r11) into r0:
53591  add lr,pc,#4
53592  mov r0,r11
53593  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
53594  mov r0,r0,asl #16
53595
53596  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53597;@ Shift register:
53598  movs r0,r0,asl #1
53599  mrs r10,cpsr ;@ r10=flags
53600  str r10,[r7,#0x4c] ;@ Save X bit
53601
53602;@ calculate V flag (set if sign bit changes at anytime):
53603  mov r1,#0x80000000
53604  ands r3,r3,r1,asr #1
53605  cmpne r3,r1,asr #1
53606  eoreq r1,r0,r3
53607  tsteq r1,#0x80000000
53608  orrne r10,r10,#0x10000000
53609
53610;@ EaWrite: Write r0 into '(a0)' (address in r11):
53611  mov r1,r0,lsr #16
53612  add lr,pc,#4
53613  mov r0,r11
53614  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
53615
53616  ldrh r8,[r4],#2 ;@ Fetch next opcode
53617  subs r5,r5,#12 ;@ Subtract cycles
53618  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53619  b CycloneEnd
53620
53621;@ ---------- [e1d8] asl.w (a0)+ uses Ope1d8 ----------
53622Ope1d8:
53623;@ EaCalc : Get '(a0)+' into r11:
53624  and r2,r8,#0x000f
53625  ldr r11,[r7,r2,lsl #2]
53626  add r3,r11,#2 ;@ Post-increment An
53627  str r3,[r7,r2,lsl #2]
53628;@ EaRead : Read '(a0)+' (address in r11) into r0:
53629  add lr,pc,#4
53630  mov r0,r11
53631  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
53632  mov r0,r0,asl #16
53633
53634  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53635;@ Shift register:
53636  movs r0,r0,asl #1
53637  mrs r10,cpsr ;@ r10=flags
53638  str r10,[r7,#0x4c] ;@ Save X bit
53639
53640;@ calculate V flag (set if sign bit changes at anytime):
53641  mov r1,#0x80000000
53642  ands r3,r3,r1,asr #1
53643  cmpne r3,r1,asr #1
53644  eoreq r1,r0,r3
53645  tsteq r1,#0x80000000
53646  orrne r10,r10,#0x10000000
53647
53648;@ EaWrite: Write r0 into '(a0)+' (address in r11):
53649  mov r1,r0,lsr #16
53650  add lr,pc,#4
53651  mov r0,r11
53652  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
53653
53654  ldrh r8,[r4],#2 ;@ Fetch next opcode
53655  subs r5,r5,#12 ;@ Subtract cycles
53656  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53657  b CycloneEnd
53658
53659;@ ---------- [e1e0] asl.w -(a0) uses Ope1e0 ----------
53660Ope1e0:
53661;@ EaCalc : Get '-(a0)' into r11:
53662  and r2,r8,#0x000f
53663  orr r2,r2,#0x8 ;@ A0-7
53664  ldr r11,[r7,r2,lsl #2]
53665  sub r11,r11,#2 ;@ Pre-decrement An
53666  str r11,[r7,r2,lsl #2]
53667;@ EaRead : Read '-(a0)' (address in r11) into r0:
53668  add lr,pc,#4
53669  mov r0,r11
53670  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
53671  mov r0,r0,asl #16
53672
53673  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53674;@ Shift register:
53675  movs r0,r0,asl #1
53676  mrs r10,cpsr ;@ r10=flags
53677  str r10,[r7,#0x4c] ;@ Save X bit
53678
53679;@ calculate V flag (set if sign bit changes at anytime):
53680  mov r1,#0x80000000
53681  ands r3,r3,r1,asr #1
53682  cmpne r3,r1,asr #1
53683  eoreq r1,r0,r3
53684  tsteq r1,#0x80000000
53685  orrne r10,r10,#0x10000000
53686
53687;@ EaWrite: Write r0 into '-(a0)' (address in r11):
53688  mov r1,r0,lsr #16
53689  add lr,pc,#4
53690  mov r0,r11
53691  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
53692
53693  ldrh r8,[r4],#2 ;@ Fetch next opcode
53694  subs r5,r5,#14 ;@ Subtract cycles
53695  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53696  b CycloneEnd
53697
53698;@ ---------- [e1e8] asl.w ($3333,a0) uses Ope1e8 ----------
53699Ope1e8:
53700;@ EaCalc : Get '($3333,a0)' into r11:
53701  ldrsh r0,[r4],#2 ;@ Fetch offset
53702  and r2,r8,#0x000f
53703  ldr r2,[r7,r2,lsl #2]
53704  add r11,r0,r2 ;@ Add on offset
53705;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
53706  add lr,pc,#4
53707  mov r0,r11
53708  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
53709  mov r0,r0,asl #16
53710
53711  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53712;@ Shift register:
53713  movs r0,r0,asl #1
53714  mrs r10,cpsr ;@ r10=flags
53715  str r10,[r7,#0x4c] ;@ Save X bit
53716
53717;@ calculate V flag (set if sign bit changes at anytime):
53718  mov r1,#0x80000000
53719  ands r3,r3,r1,asr #1
53720  cmpne r3,r1,asr #1
53721  eoreq r1,r0,r3
53722  tsteq r1,#0x80000000
53723  orrne r10,r10,#0x10000000
53724
53725;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
53726  mov r1,r0,lsr #16
53727  add lr,pc,#4
53728  mov r0,r11
53729  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
53730
53731  ldrh r8,[r4],#2 ;@ Fetch next opcode
53732  subs r5,r5,#16 ;@ Subtract cycles
53733  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53734  b CycloneEnd
53735
53736;@ ---------- [e1f0] asl.w ($33,a0,d3.w*2) uses Ope1f0 ----------
53737Ope1f0:
53738;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
53739;@ Get extension word into r3:
53740  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
53741  mov r2,r3,lsr #10
53742  tst r3,#0x0800 ;@ Is Rn Word or Long
53743  and r2,r2,#0x3c ;@ r2=Index of Rn
53744  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
53745  ldrne   r2,[r7,r2] ;@ r2=Rn.l
53746  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
53747  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
53748  and r2,r8,#0x000f
53749  orr r2,r2,#0x8 ;@ A0-7
53750  ldr r2,[r7,r2,lsl #2]
53751  add r11,r2,r3 ;@ r11=Disp+An+Rn
53752;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
53753  add lr,pc,#4
53754  mov r0,r11
53755  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
53756  mov r0,r0,asl #16
53757
53758  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53759;@ Shift register:
53760  movs r0,r0,asl #1
53761  mrs r10,cpsr ;@ r10=flags
53762  str r10,[r7,#0x4c] ;@ Save X bit
53763
53764;@ calculate V flag (set if sign bit changes at anytime):
53765  mov r1,#0x80000000
53766  ands r3,r3,r1,asr #1
53767  cmpne r3,r1,asr #1
53768  eoreq r1,r0,r3
53769  tsteq r1,#0x80000000
53770  orrne r10,r10,#0x10000000
53771
53772;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
53773  mov r1,r0,lsr #16
53774  add lr,pc,#4
53775  mov r0,r11
53776  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
53777
53778  ldrh r8,[r4],#2 ;@ Fetch next opcode
53779  subs r5,r5,#18 ;@ Subtract cycles
53780  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53781  b CycloneEnd
53782
53783;@ ---------- [e1f8] asl.w $3333.w uses Ope1f8 ----------
53784Ope1f8:
53785;@ EaCalc : Get '$3333.w' into r11:
53786  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
53787;@ EaRead : Read '$3333.w' (address in r11) into r0:
53788  add lr,pc,#4
53789  mov r0,r11
53790  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
53791  mov r0,r0,asl #16
53792
53793  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53794;@ Shift register:
53795  movs r0,r0,asl #1
53796  mrs r10,cpsr ;@ r10=flags
53797  str r10,[r7,#0x4c] ;@ Save X bit
53798
53799;@ calculate V flag (set if sign bit changes at anytime):
53800  mov r1,#0x80000000
53801  ands r3,r3,r1,asr #1
53802  cmpne r3,r1,asr #1
53803  eoreq r1,r0,r3
53804  tsteq r1,#0x80000000
53805  orrne r10,r10,#0x10000000
53806
53807;@ EaWrite: Write r0 into '$3333.w' (address in r11):
53808  mov r1,r0,lsr #16
53809  add lr,pc,#4
53810  mov r0,r11
53811  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
53812
53813  ldrh r8,[r4],#2 ;@ Fetch next opcode
53814  subs r5,r5,#16 ;@ Subtract cycles
53815  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53816  b CycloneEnd
53817
53818;@ ---------- [e1f9] asl.w $33333333.l uses Ope1f9 ----------
53819Ope1f9:
53820;@ EaCalc : Get '$33333333.l' into r11:
53821  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
53822  ldrh r0,[r4],#2
53823  orr r11,r0,r2,lsl #16
53824;@ EaRead : Read '$33333333.l' (address in r11) into r0:
53825  add lr,pc,#4
53826  mov r0,r11
53827  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
53828  mov r0,r0,asl #16
53829
53830  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
53831;@ Shift register:
53832  movs r0,r0,asl #1
53833  mrs r10,cpsr ;@ r10=flags
53834  str r10,[r7,#0x4c] ;@ Save X bit
53835
53836;@ calculate V flag (set if sign bit changes at anytime):
53837  mov r1,#0x80000000
53838  ands r3,r3,r1,asr #1
53839  cmpne r3,r1,asr #1
53840  eoreq r1,r0,r3
53841  tsteq r1,#0x80000000
53842  orrne r10,r10,#0x10000000
53843
53844;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
53845  mov r1,r0,lsr #16
53846  add lr,pc,#4
53847  mov r0,r11
53848  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
53849
53850  ldrh r8,[r4],#2 ;@ Fetch next opcode
53851  subs r5,r5,#20 ;@ Subtract cycles
53852  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53853  b CycloneEnd
53854
53855;@ ---------- [e210] roxr.b #1, d0 uses Ope210 ----------
53856Ope210:
53857;@ EaCalc : Get register index into r11:
53858  and r11,r8,#0x0007
53859;@ EaRead : Read register[r11] into r0:
53860  ldr r0,[r7,r11,lsl #2]
53861  mov r0,r0,asl #24
53862
53863  orr r0,r0,r0,lsr #24
53864  bic r0,r0,#0x1000000
53865;@ Get X bit:
53866  ldr r2,[r7,#0x4c]
53867  tst r2,r2,lsl #3 ;@ Get into Carry
53868
53869  movs r0,r0,rrx
53870  mrs r10,cpsr ;@ r10=flags
53871  str r10,[r7,#0x4c] ;@ Save X bit
53872  bic r10,r10,#0x10000000 ;@ make suve V is clear
53873;@ EaWrite: r0 into register[r11]:
53874  mov r0,r0,lsr #24
53875  strb r0,[r7,r11,lsl #2]
53876
53877  ldrh r8,[r4],#2 ;@ Fetch next opcode
53878  subs r5,r5,#8 ;@ Subtract cycles
53879  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53880  b CycloneEnd
53881
53882;@ ---------- [e250] roxr.w #1, d0 uses Ope250 ----------
53883Ope250:
53884;@ EaCalc : Get register index into r11:
53885  and r11,r8,#0x0007
53886  mov r11,r11,lsl #2
53887;@ EaRead : Read register[r11] into r0:
53888  ldr r0,[r7,r11]
53889  mov r0,r0,asl #16
53890
53891  orr r0,r0,r0,lsr #16
53892  bic r0,r0,#0x10000
53893;@ Get X bit:
53894  ldr r2,[r7,#0x4c]
53895  tst r2,r2,lsl #3 ;@ Get into Carry
53896
53897  movs r0,r0,rrx
53898  mrs r10,cpsr ;@ r10=flags
53899  str r10,[r7,#0x4c] ;@ Save X bit
53900  bic r10,r10,#0x10000000 ;@ make suve V is clear
53901;@ EaWrite: r0 into register[r11]:
53902  mov r0,r0,lsr #16
53903  strh r0,[r7,r11]
53904
53905  ldrh r8,[r4],#2 ;@ Fetch next opcode
53906  subs r5,r5,#8 ;@ Subtract cycles
53907  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53908  b CycloneEnd
53909
53910;@ ---------- [e290] roxr.l #1, d0 uses Ope290 ----------
53911Ope290:
53912;@ EaCalc : Get register index into r11:
53913  and r11,r8,#0x0007
53914;@ EaRead : Read register[r11] into r0:
53915  ldr r0,[r7,r11,lsl #2]
53916
53917;@ Get X bit:
53918  ldr r2,[r7,#0x4c]
53919  tst r2,r2,lsl #3 ;@ Get into Carry
53920
53921  movs r0,r0,rrx
53922  mrs r10,cpsr ;@ r10=flags
53923  str r10,[r7,#0x4c] ;@ Save X bit
53924  bic r10,r10,#0x10000000 ;@ make suve V is clear
53925;@ EaWrite: r0 into register[r11]:
53926  str r0,[r7,r11,lsl #2]
53927
53928  ldrh r8,[r4],#2 ;@ Fetch next opcode
53929  subs r5,r5,#10 ;@ Subtract cycles
53930  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53931  b CycloneEnd
53932
53933;@ ---------- [e2d0] lsr.w (a0) uses Ope2d0 ----------
53934Ope2d0:
53935;@ EaCalc : Get '(a0)' into r11:
53936  and r2,r8,#0x000f
53937  orr r2,r2,#0x8 ;@ A0-7
53938  ldr r11,[r7,r2,lsl #2]
53939;@ EaRead : Read '(a0)' (address in r11) into r0:
53940  add lr,pc,#4
53941  mov r0,r11
53942  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
53943  mov r0,r0,asl #16
53944
53945;@ For shift right, use loworder bits for the operation:
53946  mov r0,r0,lsr #16
53947
53948;@ Shift register:
53949  movs r0,r0,lsr #1
53950  mrs r10,cpsr ;@ r10=flags
53951  str r10,[r7,#0x4c] ;@ Save X bit
53952
53953;@ restore after right shift:
53954  movs r0,r0,lsl #16
53955  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
53956
53957;@ EaWrite: Write r0 into '(a0)' (address in r11):
53958  mov r1,r0,lsr #16
53959  add lr,pc,#4
53960  mov r0,r11
53961  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
53962
53963  ldrh r8,[r4],#2 ;@ Fetch next opcode
53964  subs r5,r5,#12 ;@ Subtract cycles
53965  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
53966  b CycloneEnd
53967
53968;@ ---------- [e2d8] lsr.w (a0)+ uses Ope2d8 ----------
53969Ope2d8:
53970;@ EaCalc : Get '(a0)+' into r11:
53971  and r2,r8,#0x000f
53972  ldr r11,[r7,r2,lsl #2]
53973  add r3,r11,#2 ;@ Post-increment An
53974  str r3,[r7,r2,lsl #2]
53975;@ EaRead : Read '(a0)+' (address in r11) into r0:
53976  add lr,pc,#4
53977  mov r0,r11
53978  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
53979  mov r0,r0,asl #16
53980
53981;@ For shift right, use loworder bits for the operation:
53982  mov r0,r0,lsr #16
53983
53984;@ Shift register:
53985  movs r0,r0,lsr #1
53986  mrs r10,cpsr ;@ r10=flags
53987  str r10,[r7,#0x4c] ;@ Save X bit
53988
53989;@ restore after right shift:
53990  movs r0,r0,lsl #16
53991  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
53992
53993;@ EaWrite: Write r0 into '(a0)+' (address in r11):
53994  mov r1,r0,lsr #16
53995  add lr,pc,#4
53996  mov r0,r11
53997  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
53998
53999  ldrh r8,[r4],#2 ;@ Fetch next opcode
54000  subs r5,r5,#12 ;@ Subtract cycles
54001  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54002  b CycloneEnd
54003
54004;@ ---------- [e2e0] lsr.w -(a0) uses Ope2e0 ----------
54005Ope2e0:
54006;@ EaCalc : Get '-(a0)' into r11:
54007  and r2,r8,#0x000f
54008  orr r2,r2,#0x8 ;@ A0-7
54009  ldr r11,[r7,r2,lsl #2]
54010  sub r11,r11,#2 ;@ Pre-decrement An
54011  str r11,[r7,r2,lsl #2]
54012;@ EaRead : Read '-(a0)' (address in r11) into r0:
54013  add lr,pc,#4
54014  mov r0,r11
54015  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54016  mov r0,r0,asl #16
54017
54018;@ For shift right, use loworder bits for the operation:
54019  mov r0,r0,lsr #16
54020
54021;@ Shift register:
54022  movs r0,r0,lsr #1
54023  mrs r10,cpsr ;@ r10=flags
54024  str r10,[r7,#0x4c] ;@ Save X bit
54025
54026;@ restore after right shift:
54027  movs r0,r0,lsl #16
54028  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
54029
54030;@ EaWrite: Write r0 into '-(a0)' (address in r11):
54031  mov r1,r0,lsr #16
54032  add lr,pc,#4
54033  mov r0,r11
54034  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54035
54036  ldrh r8,[r4],#2 ;@ Fetch next opcode
54037  subs r5,r5,#14 ;@ Subtract cycles
54038  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54039  b CycloneEnd
54040
54041;@ ---------- [e2e8] lsr.w ($3333,a0) uses Ope2e8 ----------
54042Ope2e8:
54043;@ EaCalc : Get '($3333,a0)' into r11:
54044  ldrsh r0,[r4],#2 ;@ Fetch offset
54045  and r2,r8,#0x000f
54046  ldr r2,[r7,r2,lsl #2]
54047  add r11,r0,r2 ;@ Add on offset
54048;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
54049  add lr,pc,#4
54050  mov r0,r11
54051  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54052  mov r0,r0,asl #16
54053
54054;@ For shift right, use loworder bits for the operation:
54055  mov r0,r0,lsr #16
54056
54057;@ Shift register:
54058  movs r0,r0,lsr #1
54059  mrs r10,cpsr ;@ r10=flags
54060  str r10,[r7,#0x4c] ;@ Save X bit
54061
54062;@ restore after right shift:
54063  movs r0,r0,lsl #16
54064  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
54065
54066;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
54067  mov r1,r0,lsr #16
54068  add lr,pc,#4
54069  mov r0,r11
54070  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54071
54072  ldrh r8,[r4],#2 ;@ Fetch next opcode
54073  subs r5,r5,#16 ;@ Subtract cycles
54074  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54075  b CycloneEnd
54076
54077;@ ---------- [e2f0] lsr.w ($33,a0,d3.w*2) uses Ope2f0 ----------
54078Ope2f0:
54079;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
54080;@ Get extension word into r3:
54081  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
54082  mov r2,r3,lsr #10
54083  tst r3,#0x0800 ;@ Is Rn Word or Long
54084  and r2,r2,#0x3c ;@ r2=Index of Rn
54085  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
54086  ldrne   r2,[r7,r2] ;@ r2=Rn.l
54087  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
54088  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
54089  and r2,r8,#0x000f
54090  orr r2,r2,#0x8 ;@ A0-7
54091  ldr r2,[r7,r2,lsl #2]
54092  add r11,r2,r3 ;@ r11=Disp+An+Rn
54093;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
54094  add lr,pc,#4
54095  mov r0,r11
54096  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54097  mov r0,r0,asl #16
54098
54099;@ For shift right, use loworder bits for the operation:
54100  mov r0,r0,lsr #16
54101
54102;@ Shift register:
54103  movs r0,r0,lsr #1
54104  mrs r10,cpsr ;@ r10=flags
54105  str r10,[r7,#0x4c] ;@ Save X bit
54106
54107;@ restore after right shift:
54108  movs r0,r0,lsl #16
54109  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
54110
54111;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
54112  mov r1,r0,lsr #16
54113  add lr,pc,#4
54114  mov r0,r11
54115  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54116
54117  ldrh r8,[r4],#2 ;@ Fetch next opcode
54118  subs r5,r5,#18 ;@ Subtract cycles
54119  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54120  b CycloneEnd
54121
54122;@ ---------- [e2f8] lsr.w $3333.w uses Ope2f8 ----------
54123Ope2f8:
54124;@ EaCalc : Get '$3333.w' into r11:
54125  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
54126;@ EaRead : Read '$3333.w' (address in r11) into r0:
54127  add lr,pc,#4
54128  mov r0,r11
54129  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54130  mov r0,r0,asl #16
54131
54132;@ For shift right, use loworder bits for the operation:
54133  mov r0,r0,lsr #16
54134
54135;@ Shift register:
54136  movs r0,r0,lsr #1
54137  mrs r10,cpsr ;@ r10=flags
54138  str r10,[r7,#0x4c] ;@ Save X bit
54139
54140;@ restore after right shift:
54141  movs r0,r0,lsl #16
54142  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
54143
54144;@ EaWrite: Write r0 into '$3333.w' (address in r11):
54145  mov r1,r0,lsr #16
54146  add lr,pc,#4
54147  mov r0,r11
54148  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54149
54150  ldrh r8,[r4],#2 ;@ Fetch next opcode
54151  subs r5,r5,#16 ;@ Subtract cycles
54152  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54153  b CycloneEnd
54154
54155;@ ---------- [e2f9] lsr.w $33333333.l uses Ope2f9 ----------
54156Ope2f9:
54157;@ EaCalc : Get '$33333333.l' into r11:
54158  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
54159  ldrh r0,[r4],#2
54160  orr r11,r0,r2,lsl #16
54161;@ EaRead : Read '$33333333.l' (address in r11) into r0:
54162  add lr,pc,#4
54163  mov r0,r11
54164  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54165  mov r0,r0,asl #16
54166
54167;@ For shift right, use loworder bits for the operation:
54168  mov r0,r0,lsr #16
54169
54170;@ Shift register:
54171  movs r0,r0,lsr #1
54172  mrs r10,cpsr ;@ r10=flags
54173  str r10,[r7,#0x4c] ;@ Save X bit
54174
54175;@ restore after right shift:
54176  movs r0,r0,lsl #16
54177  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
54178
54179;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
54180  mov r1,r0,lsr #16
54181  add lr,pc,#4
54182  mov r0,r11
54183  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54184
54185  ldrh r8,[r4],#2 ;@ Fetch next opcode
54186  subs r5,r5,#20 ;@ Subtract cycles
54187  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54188  b CycloneEnd
54189
54190;@ ---------- [e310] roxl.b #1, d0 uses Ope310 ----------
54191Ope310:
54192;@ EaCalc : Get register index into r11:
54193  and r11,r8,#0x0007
54194;@ EaRead : Read register[r11] into r0:
54195  ldr r0,[r7,r11,lsl #2]
54196  mov r0,r0,asl #24
54197
54198  ldr r3,[r7,#0x4c]
54199  movs r0,r0,lsl #1
54200  mrs r10,cpsr ;@ r10=flags
54201  str r10,[r7,#0x4c] ;@ Save X bit
54202  tst r3,#0x20000000
54203  orrne r0,r0,#0x1000000
54204  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
54205  bic r10,r10,#0x10000000 ;@ make suve V is clear
54206;@ EaWrite: r0 into register[r11]:
54207  mov r0,r0,lsr #24
54208  strb r0,[r7,r11,lsl #2]
54209
54210  ldrh r8,[r4],#2 ;@ Fetch next opcode
54211  subs r5,r5,#8 ;@ Subtract cycles
54212  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54213  b CycloneEnd
54214
54215;@ ---------- [e350] roxl.w #1, d0 uses Ope350 ----------
54216Ope350:
54217;@ EaCalc : Get register index into r11:
54218  and r11,r8,#0x0007
54219  mov r11,r11,lsl #2
54220;@ EaRead : Read register[r11] into r0:
54221  ldr r0,[r7,r11]
54222  mov r0,r0,asl #16
54223
54224  ldr r3,[r7,#0x4c]
54225  movs r0,r0,lsl #1
54226  mrs r10,cpsr ;@ r10=flags
54227  str r10,[r7,#0x4c] ;@ Save X bit
54228  tst r3,#0x20000000
54229  orrne r0,r0,#0x10000
54230  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
54231  bic r10,r10,#0x10000000 ;@ make suve V is clear
54232;@ EaWrite: r0 into register[r11]:
54233  mov r0,r0,lsr #16
54234  strh r0,[r7,r11]
54235
54236  ldrh r8,[r4],#2 ;@ Fetch next opcode
54237  subs r5,r5,#8 ;@ Subtract cycles
54238  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54239  b CycloneEnd
54240
54241;@ ---------- [e390] roxl.l #1, d0 uses Ope390 ----------
54242Ope390:
54243;@ EaCalc : Get register index into r11:
54244  and r11,r8,#0x0007
54245;@ EaRead : Read register[r11] into r0:
54246  ldr r0,[r7,r11,lsl #2]
54247
54248  ldr r3,[r7,#0x4c]
54249  movs r0,r0,lsl #1
54250  mrs r10,cpsr ;@ r10=flags
54251  str r10,[r7,#0x4c] ;@ Save X bit
54252  tst r3,#0x20000000
54253  orrne r0,r0,#0x1
54254  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
54255  bic r10,r10,#0x10000000 ;@ make suve V is clear
54256;@ EaWrite: r0 into register[r11]:
54257  str r0,[r7,r11,lsl #2]
54258
54259  ldrh r8,[r4],#2 ;@ Fetch next opcode
54260  subs r5,r5,#10 ;@ Subtract cycles
54261  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54262  b CycloneEnd
54263
54264;@ ---------- [e3d0] lsl.w (a0) uses Ope3d0 ----------
54265Ope3d0:
54266;@ EaCalc : Get '(a0)' into r11:
54267  and r2,r8,#0x000f
54268  orr r2,r2,#0x8 ;@ A0-7
54269  ldr r11,[r7,r2,lsl #2]
54270;@ EaRead : Read '(a0)' (address in r11) into r0:
54271  add lr,pc,#4
54272  mov r0,r11
54273  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54274  mov r0,r0,asl #16
54275
54276;@ Shift register:
54277  movs r0,r0,lsl #1
54278  mrs r10,cpsr ;@ r10=flags
54279  str r10,[r7,#0x4c] ;@ Save X bit
54280
54281;@ EaWrite: Write r0 into '(a0)' (address in r11):
54282  mov r1,r0,lsr #16
54283  add lr,pc,#4
54284  mov r0,r11
54285  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54286
54287  ldrh r8,[r4],#2 ;@ Fetch next opcode
54288  subs r5,r5,#12 ;@ Subtract cycles
54289  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54290  b CycloneEnd
54291
54292;@ ---------- [e3d8] lsl.w (a0)+ uses Ope3d8 ----------
54293Ope3d8:
54294;@ EaCalc : Get '(a0)+' into r11:
54295  and r2,r8,#0x000f
54296  ldr r11,[r7,r2,lsl #2]
54297  add r3,r11,#2 ;@ Post-increment An
54298  str r3,[r7,r2,lsl #2]
54299;@ EaRead : Read '(a0)+' (address in r11) into r0:
54300  add lr,pc,#4
54301  mov r0,r11
54302  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54303  mov r0,r0,asl #16
54304
54305;@ Shift register:
54306  movs r0,r0,lsl #1
54307  mrs r10,cpsr ;@ r10=flags
54308  str r10,[r7,#0x4c] ;@ Save X bit
54309
54310;@ EaWrite: Write r0 into '(a0)+' (address in r11):
54311  mov r1,r0,lsr #16
54312  add lr,pc,#4
54313  mov r0,r11
54314  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54315
54316  ldrh r8,[r4],#2 ;@ Fetch next opcode
54317  subs r5,r5,#12 ;@ Subtract cycles
54318  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54319  b CycloneEnd
54320
54321;@ ---------- [e3e0] lsl.w -(a0) uses Ope3e0 ----------
54322Ope3e0:
54323;@ EaCalc : Get '-(a0)' into r11:
54324  and r2,r8,#0x000f
54325  orr r2,r2,#0x8 ;@ A0-7
54326  ldr r11,[r7,r2,lsl #2]
54327  sub r11,r11,#2 ;@ Pre-decrement An
54328  str r11,[r7,r2,lsl #2]
54329;@ EaRead : Read '-(a0)' (address in r11) into r0:
54330  add lr,pc,#4
54331  mov r0,r11
54332  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54333  mov r0,r0,asl #16
54334
54335;@ Shift register:
54336  movs r0,r0,lsl #1
54337  mrs r10,cpsr ;@ r10=flags
54338  str r10,[r7,#0x4c] ;@ Save X bit
54339
54340;@ EaWrite: Write r0 into '-(a0)' (address in r11):
54341  mov r1,r0,lsr #16
54342  add lr,pc,#4
54343  mov r0,r11
54344  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54345
54346  ldrh r8,[r4],#2 ;@ Fetch next opcode
54347  subs r5,r5,#14 ;@ Subtract cycles
54348  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54349  b CycloneEnd
54350
54351;@ ---------- [e3e8] lsl.w ($3333,a0) uses Ope3e8 ----------
54352Ope3e8:
54353;@ EaCalc : Get '($3333,a0)' into r11:
54354  ldrsh r0,[r4],#2 ;@ Fetch offset
54355  and r2,r8,#0x000f
54356  ldr r2,[r7,r2,lsl #2]
54357  add r11,r0,r2 ;@ Add on offset
54358;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
54359  add lr,pc,#4
54360  mov r0,r11
54361  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54362  mov r0,r0,asl #16
54363
54364;@ Shift register:
54365  movs r0,r0,lsl #1
54366  mrs r10,cpsr ;@ r10=flags
54367  str r10,[r7,#0x4c] ;@ Save X bit
54368
54369;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
54370  mov r1,r0,lsr #16
54371  add lr,pc,#4
54372  mov r0,r11
54373  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54374
54375  ldrh r8,[r4],#2 ;@ Fetch next opcode
54376  subs r5,r5,#16 ;@ Subtract cycles
54377  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54378  b CycloneEnd
54379
54380;@ ---------- [e3f0] lsl.w ($33,a0,d3.w*2) uses Ope3f0 ----------
54381Ope3f0:
54382;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
54383;@ Get extension word into r3:
54384  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
54385  mov r2,r3,lsr #10
54386  tst r3,#0x0800 ;@ Is Rn Word or Long
54387  and r2,r2,#0x3c ;@ r2=Index of Rn
54388  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
54389  ldrne   r2,[r7,r2] ;@ r2=Rn.l
54390  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
54391  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
54392  and r2,r8,#0x000f
54393  orr r2,r2,#0x8 ;@ A0-7
54394  ldr r2,[r7,r2,lsl #2]
54395  add r11,r2,r3 ;@ r11=Disp+An+Rn
54396;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
54397  add lr,pc,#4
54398  mov r0,r11
54399  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54400  mov r0,r0,asl #16
54401
54402;@ Shift register:
54403  movs r0,r0,lsl #1
54404  mrs r10,cpsr ;@ r10=flags
54405  str r10,[r7,#0x4c] ;@ Save X bit
54406
54407;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
54408  mov r1,r0,lsr #16
54409  add lr,pc,#4
54410  mov r0,r11
54411  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54412
54413  ldrh r8,[r4],#2 ;@ Fetch next opcode
54414  subs r5,r5,#18 ;@ Subtract cycles
54415  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54416  b CycloneEnd
54417
54418;@ ---------- [e3f8] lsl.w $3333.w uses Ope3f8 ----------
54419Ope3f8:
54420;@ EaCalc : Get '$3333.w' into r11:
54421  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
54422;@ EaRead : Read '$3333.w' (address in r11) into r0:
54423  add lr,pc,#4
54424  mov r0,r11
54425  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54426  mov r0,r0,asl #16
54427
54428;@ Shift register:
54429  movs r0,r0,lsl #1
54430  mrs r10,cpsr ;@ r10=flags
54431  str r10,[r7,#0x4c] ;@ Save X bit
54432
54433;@ EaWrite: Write r0 into '$3333.w' (address in r11):
54434  mov r1,r0,lsr #16
54435  add lr,pc,#4
54436  mov r0,r11
54437  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54438
54439  ldrh r8,[r4],#2 ;@ Fetch next opcode
54440  subs r5,r5,#16 ;@ Subtract cycles
54441  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54442  b CycloneEnd
54443
54444;@ ---------- [e3f9] lsl.w $33333333.l uses Ope3f9 ----------
54445Ope3f9:
54446;@ EaCalc : Get '$33333333.l' into r11:
54447  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
54448  ldrh r0,[r4],#2
54449  orr r11,r0,r2,lsl #16
54450;@ EaRead : Read '$33333333.l' (address in r11) into r0:
54451  add lr,pc,#4
54452  mov r0,r11
54453  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54454  mov r0,r0,asl #16
54455
54456;@ Shift register:
54457  movs r0,r0,lsl #1
54458  mrs r10,cpsr ;@ r10=flags
54459  str r10,[r7,#0x4c] ;@ Save X bit
54460
54461;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
54462  mov r1,r0,lsr #16
54463  add lr,pc,#4
54464  mov r0,r11
54465  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54466
54467  ldrh r8,[r4],#2 ;@ Fetch next opcode
54468  subs r5,r5,#20 ;@ Subtract cycles
54469  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54470  b CycloneEnd
54471
54472;@ ---------- [e4d0] roxr.w (a0) uses Ope4d0 ----------
54473Ope4d0:
54474;@ EaCalc : Get '(a0)' into r11:
54475  and r2,r8,#0x000f
54476  orr r2,r2,#0x8 ;@ A0-7
54477  ldr r11,[r7,r2,lsl #2]
54478;@ EaRead : Read '(a0)' (address in r11) into r0:
54479  add lr,pc,#4
54480  mov r0,r11
54481  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54482  mov r0,r0,asl #16
54483
54484  orr r0,r0,r0,lsr #16
54485  bic r0,r0,#0x10000
54486;@ Get X bit:
54487  ldr r2,[r7,#0x4c]
54488  tst r2,r2,lsl #3 ;@ Get into Carry
54489
54490  movs r0,r0,rrx
54491  mrs r10,cpsr ;@ r10=flags
54492  str r10,[r7,#0x4c] ;@ Save X bit
54493  bic r10,r10,#0x10000000 ;@ make suve V is clear
54494;@ EaWrite: Write r0 into '(a0)' (address in r11):
54495  mov r1,r0,lsr #16
54496  add lr,pc,#4
54497  mov r0,r11
54498  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54499
54500  ldrh r8,[r4],#2 ;@ Fetch next opcode
54501  subs r5,r5,#12 ;@ Subtract cycles
54502  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54503  b CycloneEnd
54504
54505;@ ---------- [e4d8] roxr.w (a0)+ uses Ope4d8 ----------
54506Ope4d8:
54507;@ EaCalc : Get '(a0)+' into r11:
54508  and r2,r8,#0x000f
54509  ldr r11,[r7,r2,lsl #2]
54510  add r3,r11,#2 ;@ Post-increment An
54511  str r3,[r7,r2,lsl #2]
54512;@ EaRead : Read '(a0)+' (address in r11) into r0:
54513  add lr,pc,#4
54514  mov r0,r11
54515  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54516  mov r0,r0,asl #16
54517
54518  orr r0,r0,r0,lsr #16
54519  bic r0,r0,#0x10000
54520;@ Get X bit:
54521  ldr r2,[r7,#0x4c]
54522  tst r2,r2,lsl #3 ;@ Get into Carry
54523
54524  movs r0,r0,rrx
54525  mrs r10,cpsr ;@ r10=flags
54526  str r10,[r7,#0x4c] ;@ Save X bit
54527  bic r10,r10,#0x10000000 ;@ make suve V is clear
54528;@ EaWrite: Write r0 into '(a0)+' (address in r11):
54529  mov r1,r0,lsr #16
54530  add lr,pc,#4
54531  mov r0,r11
54532  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54533
54534  ldrh r8,[r4],#2 ;@ Fetch next opcode
54535  subs r5,r5,#12 ;@ Subtract cycles
54536  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54537  b CycloneEnd
54538
54539;@ ---------- [e4e0] roxr.w -(a0) uses Ope4e0 ----------
54540Ope4e0:
54541;@ EaCalc : Get '-(a0)' into r11:
54542  and r2,r8,#0x000f
54543  orr r2,r2,#0x8 ;@ A0-7
54544  ldr r11,[r7,r2,lsl #2]
54545  sub r11,r11,#2 ;@ Pre-decrement An
54546  str r11,[r7,r2,lsl #2]
54547;@ EaRead : Read '-(a0)' (address in r11) into r0:
54548  add lr,pc,#4
54549  mov r0,r11
54550  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54551  mov r0,r0,asl #16
54552
54553  orr r0,r0,r0,lsr #16
54554  bic r0,r0,#0x10000
54555;@ Get X bit:
54556  ldr r2,[r7,#0x4c]
54557  tst r2,r2,lsl #3 ;@ Get into Carry
54558
54559  movs r0,r0,rrx
54560  mrs r10,cpsr ;@ r10=flags
54561  str r10,[r7,#0x4c] ;@ Save X bit
54562  bic r10,r10,#0x10000000 ;@ make suve V is clear
54563;@ EaWrite: Write r0 into '-(a0)' (address in r11):
54564  mov r1,r0,lsr #16
54565  add lr,pc,#4
54566  mov r0,r11
54567  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54568
54569  ldrh r8,[r4],#2 ;@ Fetch next opcode
54570  subs r5,r5,#14 ;@ Subtract cycles
54571  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54572  b CycloneEnd
54573
54574;@ ---------- [e4e8] roxr.w ($3333,a0) uses Ope4e8 ----------
54575Ope4e8:
54576;@ EaCalc : Get '($3333,a0)' into r11:
54577  ldrsh r0,[r4],#2 ;@ Fetch offset
54578  and r2,r8,#0x000f
54579  ldr r2,[r7,r2,lsl #2]
54580  add r11,r0,r2 ;@ Add on offset
54581;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
54582  add lr,pc,#4
54583  mov r0,r11
54584  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54585  mov r0,r0,asl #16
54586
54587  orr r0,r0,r0,lsr #16
54588  bic r0,r0,#0x10000
54589;@ Get X bit:
54590  ldr r2,[r7,#0x4c]
54591  tst r2,r2,lsl #3 ;@ Get into Carry
54592
54593  movs r0,r0,rrx
54594  mrs r10,cpsr ;@ r10=flags
54595  str r10,[r7,#0x4c] ;@ Save X bit
54596  bic r10,r10,#0x10000000 ;@ make suve V is clear
54597;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
54598  mov r1,r0,lsr #16
54599  add lr,pc,#4
54600  mov r0,r11
54601  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54602
54603  ldrh r8,[r4],#2 ;@ Fetch next opcode
54604  subs r5,r5,#16 ;@ Subtract cycles
54605  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54606  b CycloneEnd
54607
54608;@ ---------- [e4f0] roxr.w ($33,a0,d3.w*2) uses Ope4f0 ----------
54609Ope4f0:
54610;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
54611;@ Get extension word into r3:
54612  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
54613  mov r2,r3,lsr #10
54614  tst r3,#0x0800 ;@ Is Rn Word or Long
54615  and r2,r2,#0x3c ;@ r2=Index of Rn
54616  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
54617  ldrne   r2,[r7,r2] ;@ r2=Rn.l
54618  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
54619  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
54620  and r2,r8,#0x000f
54621  orr r2,r2,#0x8 ;@ A0-7
54622  ldr r2,[r7,r2,lsl #2]
54623  add r11,r2,r3 ;@ r11=Disp+An+Rn
54624;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
54625  add lr,pc,#4
54626  mov r0,r11
54627  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54628  mov r0,r0,asl #16
54629
54630  orr r0,r0,r0,lsr #16
54631  bic r0,r0,#0x10000
54632;@ Get X bit:
54633  ldr r2,[r7,#0x4c]
54634  tst r2,r2,lsl #3 ;@ Get into Carry
54635
54636  movs r0,r0,rrx
54637  mrs r10,cpsr ;@ r10=flags
54638  str r10,[r7,#0x4c] ;@ Save X bit
54639  bic r10,r10,#0x10000000 ;@ make suve V is clear
54640;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
54641  mov r1,r0,lsr #16
54642  add lr,pc,#4
54643  mov r0,r11
54644  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54645
54646  ldrh r8,[r4],#2 ;@ Fetch next opcode
54647  subs r5,r5,#18 ;@ Subtract cycles
54648  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54649  b CycloneEnd
54650
54651;@ ---------- [e4f8] roxr.w $3333.w uses Ope4f8 ----------
54652Ope4f8:
54653;@ EaCalc : Get '$3333.w' into r11:
54654  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
54655;@ EaRead : Read '$3333.w' (address in r11) into r0:
54656  add lr,pc,#4
54657  mov r0,r11
54658  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54659  mov r0,r0,asl #16
54660
54661  orr r0,r0,r0,lsr #16
54662  bic r0,r0,#0x10000
54663;@ Get X bit:
54664  ldr r2,[r7,#0x4c]
54665  tst r2,r2,lsl #3 ;@ Get into Carry
54666
54667  movs r0,r0,rrx
54668  mrs r10,cpsr ;@ r10=flags
54669  str r10,[r7,#0x4c] ;@ Save X bit
54670  bic r10,r10,#0x10000000 ;@ make suve V is clear
54671;@ EaWrite: Write r0 into '$3333.w' (address in r11):
54672  mov r1,r0,lsr #16
54673  add lr,pc,#4
54674  mov r0,r11
54675  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54676
54677  ldrh r8,[r4],#2 ;@ Fetch next opcode
54678  subs r5,r5,#16 ;@ Subtract cycles
54679  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54680  b CycloneEnd
54681
54682;@ ---------- [e4f9] roxr.w $33333333.l uses Ope4f9 ----------
54683Ope4f9:
54684;@ EaCalc : Get '$33333333.l' into r11:
54685  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
54686  ldrh r0,[r4],#2
54687  orr r11,r0,r2,lsl #16
54688;@ EaRead : Read '$33333333.l' (address in r11) into r0:
54689  add lr,pc,#4
54690  mov r0,r11
54691  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54692  mov r0,r0,asl #16
54693
54694  orr r0,r0,r0,lsr #16
54695  bic r0,r0,#0x10000
54696;@ Get X bit:
54697  ldr r2,[r7,#0x4c]
54698  tst r2,r2,lsl #3 ;@ Get into Carry
54699
54700  movs r0,r0,rrx
54701  mrs r10,cpsr ;@ r10=flags
54702  str r10,[r7,#0x4c] ;@ Save X bit
54703  bic r10,r10,#0x10000000 ;@ make suve V is clear
54704;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
54705  mov r1,r0,lsr #16
54706  add lr,pc,#4
54707  mov r0,r11
54708  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54709
54710  ldrh r8,[r4],#2 ;@ Fetch next opcode
54711  subs r5,r5,#20 ;@ Subtract cycles
54712  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54713  b CycloneEnd
54714
54715;@ ---------- [e5d0] roxl.w (a0) uses Ope5d0 ----------
54716Ope5d0:
54717;@ EaCalc : Get '(a0)' into r11:
54718  and r2,r8,#0x000f
54719  orr r2,r2,#0x8 ;@ A0-7
54720  ldr r11,[r7,r2,lsl #2]
54721;@ EaRead : Read '(a0)' (address in r11) into r0:
54722  add lr,pc,#4
54723  mov r0,r11
54724  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54725  mov r0,r0,asl #16
54726
54727  ldr r3,[r7,#0x4c]
54728  movs r0,r0,lsl #1
54729  mrs r10,cpsr ;@ r10=flags
54730  str r10,[r7,#0x4c] ;@ Save X bit
54731  tst r3,#0x20000000
54732  orrne r0,r0,#0x10000
54733  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
54734  bic r10,r10,#0x10000000 ;@ make suve V is clear
54735;@ EaWrite: Write r0 into '(a0)' (address in r11):
54736  mov r1,r0,lsr #16
54737  add lr,pc,#4
54738  mov r0,r11
54739  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54740
54741  ldrh r8,[r4],#2 ;@ Fetch next opcode
54742  subs r5,r5,#12 ;@ Subtract cycles
54743  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54744  b CycloneEnd
54745
54746;@ ---------- [e5d8] roxl.w (a0)+ uses Ope5d8 ----------
54747Ope5d8:
54748;@ EaCalc : Get '(a0)+' into r11:
54749  and r2,r8,#0x000f
54750  ldr r11,[r7,r2,lsl #2]
54751  add r3,r11,#2 ;@ Post-increment An
54752  str r3,[r7,r2,lsl #2]
54753;@ EaRead : Read '(a0)+' (address in r11) into r0:
54754  add lr,pc,#4
54755  mov r0,r11
54756  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54757  mov r0,r0,asl #16
54758
54759  ldr r3,[r7,#0x4c]
54760  movs r0,r0,lsl #1
54761  mrs r10,cpsr ;@ r10=flags
54762  str r10,[r7,#0x4c] ;@ Save X bit
54763  tst r3,#0x20000000
54764  orrne r0,r0,#0x10000
54765  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
54766  bic r10,r10,#0x10000000 ;@ make suve V is clear
54767;@ EaWrite: Write r0 into '(a0)+' (address in r11):
54768  mov r1,r0,lsr #16
54769  add lr,pc,#4
54770  mov r0,r11
54771  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54772
54773  ldrh r8,[r4],#2 ;@ Fetch next opcode
54774  subs r5,r5,#12 ;@ Subtract cycles
54775  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54776  b CycloneEnd
54777
54778;@ ---------- [e5e0] roxl.w -(a0) uses Ope5e0 ----------
54779Ope5e0:
54780;@ EaCalc : Get '-(a0)' into r11:
54781  and r2,r8,#0x000f
54782  orr r2,r2,#0x8 ;@ A0-7
54783  ldr r11,[r7,r2,lsl #2]
54784  sub r11,r11,#2 ;@ Pre-decrement An
54785  str r11,[r7,r2,lsl #2]
54786;@ EaRead : Read '-(a0)' (address in r11) into r0:
54787  add lr,pc,#4
54788  mov r0,r11
54789  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54790  mov r0,r0,asl #16
54791
54792  ldr r3,[r7,#0x4c]
54793  movs r0,r0,lsl #1
54794  mrs r10,cpsr ;@ r10=flags
54795  str r10,[r7,#0x4c] ;@ Save X bit
54796  tst r3,#0x20000000
54797  orrne r0,r0,#0x10000
54798  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
54799  bic r10,r10,#0x10000000 ;@ make suve V is clear
54800;@ EaWrite: Write r0 into '-(a0)' (address in r11):
54801  mov r1,r0,lsr #16
54802  add lr,pc,#4
54803  mov r0,r11
54804  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54805
54806  ldrh r8,[r4],#2 ;@ Fetch next opcode
54807  subs r5,r5,#14 ;@ Subtract cycles
54808  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54809  b CycloneEnd
54810
54811;@ ---------- [e5e8] roxl.w ($3333,a0) uses Ope5e8 ----------
54812Ope5e8:
54813;@ EaCalc : Get '($3333,a0)' into r11:
54814  ldrsh r0,[r4],#2 ;@ Fetch offset
54815  and r2,r8,#0x000f
54816  ldr r2,[r7,r2,lsl #2]
54817  add r11,r0,r2 ;@ Add on offset
54818;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
54819  add lr,pc,#4
54820  mov r0,r11
54821  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54822  mov r0,r0,asl #16
54823
54824  ldr r3,[r7,#0x4c]
54825  movs r0,r0,lsl #1
54826  mrs r10,cpsr ;@ r10=flags
54827  str r10,[r7,#0x4c] ;@ Save X bit
54828  tst r3,#0x20000000
54829  orrne r0,r0,#0x10000
54830  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
54831  bic r10,r10,#0x10000000 ;@ make suve V is clear
54832;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
54833  mov r1,r0,lsr #16
54834  add lr,pc,#4
54835  mov r0,r11
54836  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54837
54838  ldrh r8,[r4],#2 ;@ Fetch next opcode
54839  subs r5,r5,#16 ;@ Subtract cycles
54840  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54841  b CycloneEnd
54842
54843;@ ---------- [e5f0] roxl.w ($33,a0,d3.w*2) uses Ope5f0 ----------
54844Ope5f0:
54845;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
54846;@ Get extension word into r3:
54847  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
54848  mov r2,r3,lsr #10
54849  tst r3,#0x0800 ;@ Is Rn Word or Long
54850  and r2,r2,#0x3c ;@ r2=Index of Rn
54851  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
54852  ldrne   r2,[r7,r2] ;@ r2=Rn.l
54853  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
54854  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
54855  and r2,r8,#0x000f
54856  orr r2,r2,#0x8 ;@ A0-7
54857  ldr r2,[r7,r2,lsl #2]
54858  add r11,r2,r3 ;@ r11=Disp+An+Rn
54859;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
54860  add lr,pc,#4
54861  mov r0,r11
54862  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54863  mov r0,r0,asl #16
54864
54865  ldr r3,[r7,#0x4c]
54866  movs r0,r0,lsl #1
54867  mrs r10,cpsr ;@ r10=flags
54868  str r10,[r7,#0x4c] ;@ Save X bit
54869  tst r3,#0x20000000
54870  orrne r0,r0,#0x10000
54871  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
54872  bic r10,r10,#0x10000000 ;@ make suve V is clear
54873;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
54874  mov r1,r0,lsr #16
54875  add lr,pc,#4
54876  mov r0,r11
54877  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54878
54879  ldrh r8,[r4],#2 ;@ Fetch next opcode
54880  subs r5,r5,#18 ;@ Subtract cycles
54881  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54882  b CycloneEnd
54883
54884;@ ---------- [e5f8] roxl.w $3333.w uses Ope5f8 ----------
54885Ope5f8:
54886;@ EaCalc : Get '$3333.w' into r11:
54887  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
54888;@ EaRead : Read '$3333.w' (address in r11) into r0:
54889  add lr,pc,#4
54890  mov r0,r11
54891  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54892  mov r0,r0,asl #16
54893
54894  ldr r3,[r7,#0x4c]
54895  movs r0,r0,lsl #1
54896  mrs r10,cpsr ;@ r10=flags
54897  str r10,[r7,#0x4c] ;@ Save X bit
54898  tst r3,#0x20000000
54899  orrne r0,r0,#0x10000
54900  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
54901  bic r10,r10,#0x10000000 ;@ make suve V is clear
54902;@ EaWrite: Write r0 into '$3333.w' (address in r11):
54903  mov r1,r0,lsr #16
54904  add lr,pc,#4
54905  mov r0,r11
54906  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54907
54908  ldrh r8,[r4],#2 ;@ Fetch next opcode
54909  subs r5,r5,#16 ;@ Subtract cycles
54910  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54911  b CycloneEnd
54912
54913;@ ---------- [e5f9] roxl.w $33333333.l uses Ope5f9 ----------
54914Ope5f9:
54915;@ EaCalc : Get '$33333333.l' into r11:
54916  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
54917  ldrh r0,[r4],#2
54918  orr r11,r0,r2,lsl #16
54919;@ EaRead : Read '$33333333.l' (address in r11) into r0:
54920  add lr,pc,#4
54921  mov r0,r11
54922  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54923  mov r0,r0,asl #16
54924
54925  ldr r3,[r7,#0x4c]
54926  movs r0,r0,lsl #1
54927  mrs r10,cpsr ;@ r10=flags
54928  str r10,[r7,#0x4c] ;@ Save X bit
54929  tst r3,#0x20000000
54930  orrne r0,r0,#0x10000
54931  bicne r10,r10,#0x40000000 ;@ clear Z in case it got there
54932  bic r10,r10,#0x10000000 ;@ make suve V is clear
54933;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
54934  mov r1,r0,lsr #16
54935  add lr,pc,#4
54936  mov r0,r11
54937  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54938
54939  ldrh r8,[r4],#2 ;@ Fetch next opcode
54940  subs r5,r5,#20 ;@ Subtract cycles
54941  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54942  b CycloneEnd
54943
54944;@ ---------- [e6d0] ror.w (a0) uses Ope6d0 ----------
54945Ope6d0:
54946;@ EaCalc : Get '(a0)' into r11:
54947  and r2,r8,#0x000f
54948  orr r2,r2,#0x8 ;@ A0-7
54949  ldr r11,[r7,r2,lsl #2]
54950;@ EaRead : Read '(a0)' (address in r11) into r0:
54951  add lr,pc,#4
54952  mov r0,r11
54953  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54954  mov r0,r0,asl #16
54955
54956;@ Mirror value in whole 32 bits:
54957  orr r0,r0,r0,lsr #16
54958
54959;@ Rotate register:
54960  adds r0,r0,#0 ;@ first clear V and C
54961  movs r0,r0,ror #1
54962  mrs r10,cpsr ;@ r10=flags
54963
54964;@ EaWrite: Write r0 into '(a0)' (address in r11):
54965  mov r1,r0,lsr #16
54966  add lr,pc,#4
54967  mov r0,r11
54968  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
54969
54970  ldrh r8,[r4],#2 ;@ Fetch next opcode
54971  subs r5,r5,#12 ;@ Subtract cycles
54972  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
54973  b CycloneEnd
54974
54975;@ ---------- [e6d8] ror.w (a0)+ uses Ope6d8 ----------
54976Ope6d8:
54977;@ EaCalc : Get '(a0)+' into r11:
54978  and r2,r8,#0x000f
54979  ldr r11,[r7,r2,lsl #2]
54980  add r3,r11,#2 ;@ Post-increment An
54981  str r3,[r7,r2,lsl #2]
54982;@ EaRead : Read '(a0)+' (address in r11) into r0:
54983  add lr,pc,#4
54984  mov r0,r11
54985  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
54986  mov r0,r0,asl #16
54987
54988;@ Mirror value in whole 32 bits:
54989  orr r0,r0,r0,lsr #16
54990
54991;@ Rotate register:
54992  adds r0,r0,#0 ;@ first clear V and C
54993  movs r0,r0,ror #1
54994  mrs r10,cpsr ;@ r10=flags
54995
54996;@ EaWrite: Write r0 into '(a0)+' (address in r11):
54997  mov r1,r0,lsr #16
54998  add lr,pc,#4
54999  mov r0,r11
55000  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55001
55002  ldrh r8,[r4],#2 ;@ Fetch next opcode
55003  subs r5,r5,#12 ;@ Subtract cycles
55004  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55005  b CycloneEnd
55006
55007;@ ---------- [e6e0] ror.w -(a0) uses Ope6e0 ----------
55008Ope6e0:
55009;@ EaCalc : Get '-(a0)' into r11:
55010  and r2,r8,#0x000f
55011  orr r2,r2,#0x8 ;@ A0-7
55012  ldr r11,[r7,r2,lsl #2]
55013  sub r11,r11,#2 ;@ Pre-decrement An
55014  str r11,[r7,r2,lsl #2]
55015;@ EaRead : Read '-(a0)' (address in r11) into r0:
55016  add lr,pc,#4
55017  mov r0,r11
55018  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55019  mov r0,r0,asl #16
55020
55021;@ Mirror value in whole 32 bits:
55022  orr r0,r0,r0,lsr #16
55023
55024;@ Rotate register:
55025  adds r0,r0,#0 ;@ first clear V and C
55026  movs r0,r0,ror #1
55027  mrs r10,cpsr ;@ r10=flags
55028
55029;@ EaWrite: Write r0 into '-(a0)' (address in r11):
55030  mov r1,r0,lsr #16
55031  add lr,pc,#4
55032  mov r0,r11
55033  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55034
55035  ldrh r8,[r4],#2 ;@ Fetch next opcode
55036  subs r5,r5,#14 ;@ Subtract cycles
55037  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55038  b CycloneEnd
55039
55040;@ ---------- [e6e8] ror.w ($3333,a0) uses Ope6e8 ----------
55041Ope6e8:
55042;@ EaCalc : Get '($3333,a0)' into r11:
55043  ldrsh r0,[r4],#2 ;@ Fetch offset
55044  and r2,r8,#0x000f
55045  ldr r2,[r7,r2,lsl #2]
55046  add r11,r0,r2 ;@ Add on offset
55047;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
55048  add lr,pc,#4
55049  mov r0,r11
55050  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55051  mov r0,r0,asl #16
55052
55053;@ Mirror value in whole 32 bits:
55054  orr r0,r0,r0,lsr #16
55055
55056;@ Rotate register:
55057  adds r0,r0,#0 ;@ first clear V and C
55058  movs r0,r0,ror #1
55059  mrs r10,cpsr ;@ r10=flags
55060
55061;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
55062  mov r1,r0,lsr #16
55063  add lr,pc,#4
55064  mov r0,r11
55065  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55066
55067  ldrh r8,[r4],#2 ;@ Fetch next opcode
55068  subs r5,r5,#16 ;@ Subtract cycles
55069  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55070  b CycloneEnd
55071
55072;@ ---------- [e6f0] ror.w ($33,a0,d3.w*2) uses Ope6f0 ----------
55073Ope6f0:
55074;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
55075;@ Get extension word into r3:
55076  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
55077  mov r2,r3,lsr #10
55078  tst r3,#0x0800 ;@ Is Rn Word or Long
55079  and r2,r2,#0x3c ;@ r2=Index of Rn
55080  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
55081  ldrne   r2,[r7,r2] ;@ r2=Rn.l
55082  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
55083  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
55084  and r2,r8,#0x000f
55085  orr r2,r2,#0x8 ;@ A0-7
55086  ldr r2,[r7,r2,lsl #2]
55087  add r11,r2,r3 ;@ r11=Disp+An+Rn
55088;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
55089  add lr,pc,#4
55090  mov r0,r11
55091  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55092  mov r0,r0,asl #16
55093
55094;@ Mirror value in whole 32 bits:
55095  orr r0,r0,r0,lsr #16
55096
55097;@ Rotate register:
55098  adds r0,r0,#0 ;@ first clear V and C
55099  movs r0,r0,ror #1
55100  mrs r10,cpsr ;@ r10=flags
55101
55102;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
55103  mov r1,r0,lsr #16
55104  add lr,pc,#4
55105  mov r0,r11
55106  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55107
55108  ldrh r8,[r4],#2 ;@ Fetch next opcode
55109  subs r5,r5,#18 ;@ Subtract cycles
55110  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55111  b CycloneEnd
55112
55113;@ ---------- [e6f8] ror.w $3333.w uses Ope6f8 ----------
55114Ope6f8:
55115;@ EaCalc : Get '$3333.w' into r11:
55116  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
55117;@ EaRead : Read '$3333.w' (address in r11) into r0:
55118  add lr,pc,#4
55119  mov r0,r11
55120  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55121  mov r0,r0,asl #16
55122
55123;@ Mirror value in whole 32 bits:
55124  orr r0,r0,r0,lsr #16
55125
55126;@ Rotate register:
55127  adds r0,r0,#0 ;@ first clear V and C
55128  movs r0,r0,ror #1
55129  mrs r10,cpsr ;@ r10=flags
55130
55131;@ EaWrite: Write r0 into '$3333.w' (address in r11):
55132  mov r1,r0,lsr #16
55133  add lr,pc,#4
55134  mov r0,r11
55135  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55136
55137  ldrh r8,[r4],#2 ;@ Fetch next opcode
55138  subs r5,r5,#16 ;@ Subtract cycles
55139  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55140  b CycloneEnd
55141
55142;@ ---------- [e6f9] ror.w $33333333.l uses Ope6f9 ----------
55143Ope6f9:
55144;@ EaCalc : Get '$33333333.l' into r11:
55145  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
55146  ldrh r0,[r4],#2
55147  orr r11,r0,r2,lsl #16
55148;@ EaRead : Read '$33333333.l' (address in r11) into r0:
55149  add lr,pc,#4
55150  mov r0,r11
55151  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55152  mov r0,r0,asl #16
55153
55154;@ Mirror value in whole 32 bits:
55155  orr r0,r0,r0,lsr #16
55156
55157;@ Rotate register:
55158  adds r0,r0,#0 ;@ first clear V and C
55159  movs r0,r0,ror #1
55160  mrs r10,cpsr ;@ r10=flags
55161
55162;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
55163  mov r1,r0,lsr #16
55164  add lr,pc,#4
55165  mov r0,r11
55166  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55167
55168  ldrh r8,[r4],#2 ;@ Fetch next opcode
55169  subs r5,r5,#20 ;@ Subtract cycles
55170  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55171  b CycloneEnd
55172
55173;@ ---------- [e7d0] rol.w (a0) uses Ope7d0 ----------
55174Ope7d0:
55175;@ EaCalc : Get '(a0)' into r11:
55176  and r2,r8,#0x000f
55177  orr r2,r2,#0x8 ;@ A0-7
55178  ldr r11,[r7,r2,lsl #2]
55179;@ EaRead : Read '(a0)' (address in r11) into r0:
55180  add lr,pc,#4
55181  mov r0,r11
55182  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55183  mov r0,r0,asl #16
55184
55185;@ Mirror value in whole 32 bits:
55186  orr r0,r0,r0,lsr #16
55187
55188;@ Rotate register:
55189  movs r0,r0,ror #31
55190  mrs r10,cpsr ;@ r10=flags
55191  bic r10,r10,#0x30000000 ;@ clear CV
55192;@ Get carry bit from bit 0:
55193  tst r0,#1
55194  orrne r10,r10,#0x20000000
55195
55196;@ EaWrite: Write r0 into '(a0)' (address in r11):
55197  mov r1,r0,lsr #16
55198  add lr,pc,#4
55199  mov r0,r11
55200  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55201
55202  ldrh r8,[r4],#2 ;@ Fetch next opcode
55203  subs r5,r5,#12 ;@ Subtract cycles
55204  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55205  b CycloneEnd
55206
55207;@ ---------- [e7d8] rol.w (a0)+ uses Ope7d8 ----------
55208Ope7d8:
55209;@ EaCalc : Get '(a0)+' into r11:
55210  and r2,r8,#0x000f
55211  ldr r11,[r7,r2,lsl #2]
55212  add r3,r11,#2 ;@ Post-increment An
55213  str r3,[r7,r2,lsl #2]
55214;@ EaRead : Read '(a0)+' (address in r11) into r0:
55215  add lr,pc,#4
55216  mov r0,r11
55217  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55218  mov r0,r0,asl #16
55219
55220;@ Mirror value in whole 32 bits:
55221  orr r0,r0,r0,lsr #16
55222
55223;@ Rotate register:
55224  movs r0,r0,ror #31
55225  mrs r10,cpsr ;@ r10=flags
55226  bic r10,r10,#0x30000000 ;@ clear CV
55227;@ Get carry bit from bit 0:
55228  tst r0,#1
55229  orrne r10,r10,#0x20000000
55230
55231;@ EaWrite: Write r0 into '(a0)+' (address in r11):
55232  mov r1,r0,lsr #16
55233  add lr,pc,#4
55234  mov r0,r11
55235  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55236
55237  ldrh r8,[r4],#2 ;@ Fetch next opcode
55238  subs r5,r5,#12 ;@ Subtract cycles
55239  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55240  b CycloneEnd
55241
55242;@ ---------- [e7e0] rol.w -(a0) uses Ope7e0 ----------
55243Ope7e0:
55244;@ EaCalc : Get '-(a0)' into r11:
55245  and r2,r8,#0x000f
55246  orr r2,r2,#0x8 ;@ A0-7
55247  ldr r11,[r7,r2,lsl #2]
55248  sub r11,r11,#2 ;@ Pre-decrement An
55249  str r11,[r7,r2,lsl #2]
55250;@ EaRead : Read '-(a0)' (address in r11) into r0:
55251  add lr,pc,#4
55252  mov r0,r11
55253  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55254  mov r0,r0,asl #16
55255
55256;@ Mirror value in whole 32 bits:
55257  orr r0,r0,r0,lsr #16
55258
55259;@ Rotate register:
55260  movs r0,r0,ror #31
55261  mrs r10,cpsr ;@ r10=flags
55262  bic r10,r10,#0x30000000 ;@ clear CV
55263;@ Get carry bit from bit 0:
55264  tst r0,#1
55265  orrne r10,r10,#0x20000000
55266
55267;@ EaWrite: Write r0 into '-(a0)' (address in r11):
55268  mov r1,r0,lsr #16
55269  add lr,pc,#4
55270  mov r0,r11
55271  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55272
55273  ldrh r8,[r4],#2 ;@ Fetch next opcode
55274  subs r5,r5,#14 ;@ Subtract cycles
55275  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55276  b CycloneEnd
55277
55278;@ ---------- [e7e8] rol.w ($3333,a0) uses Ope7e8 ----------
55279Ope7e8:
55280;@ EaCalc : Get '($3333,a0)' into r11:
55281  ldrsh r0,[r4],#2 ;@ Fetch offset
55282  and r2,r8,#0x000f
55283  ldr r2,[r7,r2,lsl #2]
55284  add r11,r0,r2 ;@ Add on offset
55285;@ EaRead : Read '($3333,a0)' (address in r11) into r0:
55286  add lr,pc,#4
55287  mov r0,r11
55288  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55289  mov r0,r0,asl #16
55290
55291;@ Mirror value in whole 32 bits:
55292  orr r0,r0,r0,lsr #16
55293
55294;@ Rotate register:
55295  movs r0,r0,ror #31
55296  mrs r10,cpsr ;@ r10=flags
55297  bic r10,r10,#0x30000000 ;@ clear CV
55298;@ Get carry bit from bit 0:
55299  tst r0,#1
55300  orrne r10,r10,#0x20000000
55301
55302;@ EaWrite: Write r0 into '($3333,a0)' (address in r11):
55303  mov r1,r0,lsr #16
55304  add lr,pc,#4
55305  mov r0,r11
55306  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55307
55308  ldrh r8,[r4],#2 ;@ Fetch next opcode
55309  subs r5,r5,#16 ;@ Subtract cycles
55310  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55311  b CycloneEnd
55312
55313;@ ---------- [e7f0] rol.w ($33,a0,d3.w*2) uses Ope7f0 ----------
55314Ope7f0:
55315;@ EaCalc : Get '($33,a0,d3.w*2)' into r11:
55316;@ Get extension word into r3:
55317  ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)
55318  mov r2,r3,lsr #10
55319  tst r3,#0x0800 ;@ Is Rn Word or Long
55320  and r2,r2,#0x3c ;@ r2=Index of Rn
55321  ldreqsh r2,[r7,r2] ;@ r2=Rn.w
55322  ldrne   r2,[r7,r2] ;@ r2=Rn.l
55323  mov r0,r3,asl #24 ;@ r0=Get 8-bit signed Disp
55324  add r3,r2,r0,asr #24 ;@ r3=Disp+Rn
55325  and r2,r8,#0x000f
55326  orr r2,r2,#0x8 ;@ A0-7
55327  ldr r2,[r7,r2,lsl #2]
55328  add r11,r2,r3 ;@ r11=Disp+An+Rn
55329;@ EaRead : Read '($33,a0,d3.w*2)' (address in r11) into r0:
55330  add lr,pc,#4
55331  mov r0,r11
55332  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55333  mov r0,r0,asl #16
55334
55335;@ Mirror value in whole 32 bits:
55336  orr r0,r0,r0,lsr #16
55337
55338;@ Rotate register:
55339  movs r0,r0,ror #31
55340  mrs r10,cpsr ;@ r10=flags
55341  bic r10,r10,#0x30000000 ;@ clear CV
55342;@ Get carry bit from bit 0:
55343  tst r0,#1
55344  orrne r10,r10,#0x20000000
55345
55346;@ EaWrite: Write r0 into '($33,a0,d3.w*2)' (address in r11):
55347  mov r1,r0,lsr #16
55348  add lr,pc,#4
55349  mov r0,r11
55350  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55351
55352  ldrh r8,[r4],#2 ;@ Fetch next opcode
55353  subs r5,r5,#18 ;@ Subtract cycles
55354  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55355  b CycloneEnd
55356
55357;@ ---------- [e7f8] rol.w $3333.w uses Ope7f8 ----------
55358Ope7f8:
55359;@ EaCalc : Get '$3333.w' into r11:
55360  ldrsh r11,[r4],#2 ;@ Fetch Absolute Short address
55361;@ EaRead : Read '$3333.w' (address in r11) into r0:
55362  add lr,pc,#4
55363  mov r0,r11
55364  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55365  mov r0,r0,asl #16
55366
55367;@ Mirror value in whole 32 bits:
55368  orr r0,r0,r0,lsr #16
55369
55370;@ Rotate register:
55371  movs r0,r0,ror #31
55372  mrs r10,cpsr ;@ r10=flags
55373  bic r10,r10,#0x30000000 ;@ clear CV
55374;@ Get carry bit from bit 0:
55375  tst r0,#1
55376  orrne r10,r10,#0x20000000
55377
55378;@ EaWrite: Write r0 into '$3333.w' (address in r11):
55379  mov r1,r0,lsr #16
55380  add lr,pc,#4
55381  mov r0,r11
55382  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55383
55384  ldrh r8,[r4],#2 ;@ Fetch next opcode
55385  subs r5,r5,#16 ;@ Subtract cycles
55386  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55387  b CycloneEnd
55388
55389;@ ---------- [e7f9] rol.w $33333333.l uses Ope7f9 ----------
55390Ope7f9:
55391;@ EaCalc : Get '$33333333.l' into r11:
55392  ldrh r2,[r4],#2 ;@ Fetch Absolute Long address
55393  ldrh r0,[r4],#2
55394  orr r11,r0,r2,lsl #16
55395;@ EaRead : Read '$33333333.l' (address in r11) into r0:
55396  add lr,pc,#4
55397  mov r0,r11
55398  ldr pc,[r7,#0x6c] ;@ Call read16(r0) handler
55399  mov r0,r0,asl #16
55400
55401;@ Mirror value in whole 32 bits:
55402  orr r0,r0,r0,lsr #16
55403
55404;@ Rotate register:
55405  movs r0,r0,ror #31
55406  mrs r10,cpsr ;@ r10=flags
55407  bic r10,r10,#0x30000000 ;@ clear CV
55408;@ Get carry bit from bit 0:
55409  tst r0,#1
55410  orrne r10,r10,#0x20000000
55411
55412;@ EaWrite: Write r0 into '$33333333.l' (address in r11):
55413  mov r1,r0,lsr #16
55414  add lr,pc,#4
55415  mov r0,r11
55416  ldr pc,[r7,#0x78] ;@ Call write16(r0,r1) handler
55417
55418  ldrh r8,[r4],#2 ;@ Fetch next opcode
55419  subs r5,r5,#20 ;@ Subtract cycles
55420  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55421  b CycloneEnd
55422
55423;@ ---------- [ee00] asr.b #7, d0 uses Opee00 ----------
55424Opee00:
55425;@ EaCalc : Get register index into r11:
55426  and r11,r8,#0x0007
55427;@ EaRead : Read register[r11] into r0:
55428  ldr r0,[r7,r11,lsl #2]
55429  mov r0,r0,asl #24
55430
55431  mov r2,r8,lsr #9 ;@ Get 'n'
55432  and r2,r2,#7
55433
55434  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55435
55436;@ For shift right, use loworder bits for the operation:
55437  mov r0,r0,asr #24
55438
55439;@ Shift register:
55440  movs r0,r0,asr r2
55441  mrs r10,cpsr ;@ r10=flags
55442  str r10,[r7,#0x4c] ;@ Save X bit
55443
55444;@ restore after right shift:
55445  movs r0,r0,lsl #24
55446
55447;@ EaWrite: r0 into register[r11]:
55448  mov r0,r0,lsr #24
55449  strb r0,[r7,r11,lsl #2]
55450
55451  ldrh r8,[r4],#2 ;@ Fetch next opcode
55452  subs r5,r5,#6 ;@ Subtract cycles
55453  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55454  b CycloneEnd
55455
55456;@ ---------- [ee08] lsr.b #7, d0 uses Opee08 ----------
55457Opee08:
55458;@ EaCalc : Get register index into r11:
55459  and r11,r8,#0x0007
55460;@ EaRead : Read register[r11] into r0:
55461  ldr r0,[r7,r11,lsl #2]
55462  mov r0,r0,asl #24
55463
55464  mov r2,r8,lsr #9 ;@ Get 'n'
55465  and r2,r2,#7
55466
55467  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55468
55469;@ For shift right, use loworder bits for the operation:
55470  mov r0,r0,lsr #24
55471
55472;@ Shift register:
55473  movs r0,r0,lsr r2
55474  mrs r10,cpsr ;@ r10=flags
55475  str r10,[r7,#0x4c] ;@ Save X bit
55476
55477;@ restore after right shift:
55478  movs r0,r0,lsl #24
55479  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
55480
55481;@ EaWrite: r0 into register[r11]:
55482  mov r0,r0,lsr #24
55483  strb r0,[r7,r11,lsl #2]
55484
55485  ldrh r8,[r4],#2 ;@ Fetch next opcode
55486  subs r5,r5,#6 ;@ Subtract cycles
55487  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55488  b CycloneEnd
55489
55490;@ ---------- [ee10] roxr.b #7, d0 uses Opee10 ----------
55491Opee10:
55492;@ EaCalc : Get register index into r11:
55493  and r11,r8,#0x0007
55494;@ EaRead : Read register[r11] into r0:
55495  ldr r0,[r7,r11,lsl #2]
55496  mov r0,r0,asl #24
55497
55498  mov r2,r8,lsr #9 ;@ Get 'n'
55499  and r2,r2,#7
55500
55501  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55502
55503  mov r0,r0,lsr #24 ;@ Shift down
55504
55505;@ First get X bit (middle):
55506  ldr r3,[r7,#0x4c]
55507  rsb r1,r2,#8
55508  and r3,r3,#0x20000000
55509  mov r3,r3,lsr #29
55510  mov r3,r3,lsl r1
55511;@ Rotate bits:
55512  orr r3,r3,r0,lsr r2 ;@ Orr right part
55513  rsbs r2,r2,#9 ;@ should also clear ARM V
55514  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
55515
55516  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
55517  mrs r10,cpsr ;@ r10=flags
55518  str r10,[r7,#0x4c] ;@ Save X bit
55519
55520;@ EaWrite: r0 into register[r11]:
55521  mov r0,r0,lsr #24
55522  strb r0,[r7,r11,lsl #2]
55523
55524  ldrh r8,[r4],#2 ;@ Fetch next opcode
55525  subs r5,r5,#6 ;@ Subtract cycles
55526  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55527  b CycloneEnd
55528
55529;@ ---------- [ee18] ror.b #7, d0 uses Opee18 ----------
55530Opee18:
55531;@ EaCalc : Get register index into r11:
55532  and r11,r8,#0x0007
55533;@ EaRead : Read register[r11] into r0:
55534  ldr r0,[r7,r11,lsl #2]
55535  mov r0,r0,asl #24
55536
55537  mov r2,r8,lsr #9 ;@ Get 'n'
55538  and r2,r2,#7
55539
55540  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55541
55542;@ Mirror value in whole 32 bits:
55543  orr r0,r0,r0,lsr #8
55544  orr r0,r0,r0,lsr #16
55545
55546;@ Rotate register:
55547  adds r0,r0,#0 ;@ first clear V and C
55548  movs r0,r0,ror r2
55549  mrs r10,cpsr ;@ r10=flags
55550
55551;@ EaWrite: r0 into register[r11]:
55552  mov r0,r0,lsr #24
55553  strb r0,[r7,r11,lsl #2]
55554
55555  ldrh r8,[r4],#2 ;@ Fetch next opcode
55556  subs r5,r5,#6 ;@ Subtract cycles
55557  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55558  b CycloneEnd
55559
55560;@ ---------- [ee40] asr.w #7, d0 uses Opee40 ----------
55561Opee40:
55562;@ EaCalc : Get register index into r11:
55563  and r11,r8,#0x0007
55564  mov r11,r11,lsl #2
55565;@ EaRead : Read register[r11] into r0:
55566  ldr r0,[r7,r11]
55567  mov r0,r0,asl #16
55568
55569  mov r2,r8,lsr #9 ;@ Get 'n'
55570  and r2,r2,#7
55571
55572  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55573
55574;@ For shift right, use loworder bits for the operation:
55575  mov r0,r0,asr #16
55576
55577;@ Shift register:
55578  movs r0,r0,asr r2
55579  mrs r10,cpsr ;@ r10=flags
55580  str r10,[r7,#0x4c] ;@ Save X bit
55581
55582;@ restore after right shift:
55583  movs r0,r0,lsl #16
55584
55585;@ EaWrite: r0 into register[r11]:
55586  mov r0,r0,lsr #16
55587  strh r0,[r7,r11]
55588
55589  ldrh r8,[r4],#2 ;@ Fetch next opcode
55590  subs r5,r5,#6 ;@ Subtract cycles
55591  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55592  b CycloneEnd
55593
55594;@ ---------- [ee48] lsr.w #7, d0 uses Opee48 ----------
55595Opee48:
55596;@ EaCalc : Get register index into r11:
55597  and r11,r8,#0x0007
55598  mov r11,r11,lsl #2
55599;@ EaRead : Read register[r11] into r0:
55600  ldr r0,[r7,r11]
55601  mov r0,r0,asl #16
55602
55603  mov r2,r8,lsr #9 ;@ Get 'n'
55604  and r2,r2,#7
55605
55606  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55607
55608;@ For shift right, use loworder bits for the operation:
55609  mov r0,r0,lsr #16
55610
55611;@ Shift register:
55612  movs r0,r0,lsr r2
55613  mrs r10,cpsr ;@ r10=flags
55614  str r10,[r7,#0x4c] ;@ Save X bit
55615
55616;@ restore after right shift:
55617  movs r0,r0,lsl #16
55618  orrmi r10,r10,#0x80000000 ;@ Potentially missed N flag
55619
55620;@ EaWrite: r0 into register[r11]:
55621  mov r0,r0,lsr #16
55622  strh r0,[r7,r11]
55623
55624  ldrh r8,[r4],#2 ;@ Fetch next opcode
55625  subs r5,r5,#6 ;@ Subtract cycles
55626  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55627  b CycloneEnd
55628
55629;@ ---------- [ee50] roxr.w #7, d0 uses Opee50 ----------
55630Opee50:
55631;@ EaCalc : Get register index into r11:
55632  and r11,r8,#0x0007
55633  mov r11,r11,lsl #2
55634;@ EaRead : Read register[r11] into r0:
55635  ldr r0,[r7,r11]
55636  mov r0,r0,asl #16
55637
55638  mov r2,r8,lsr #9 ;@ Get 'n'
55639  and r2,r2,#7
55640
55641  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55642
55643  mov r0,r0,lsr #16 ;@ Shift down
55644
55645;@ First get X bit (middle):
55646  ldr r3,[r7,#0x4c]
55647  rsb r1,r2,#16
55648  and r3,r3,#0x20000000
55649  mov r3,r3,lsr #29
55650  mov r3,r3,lsl r1
55651;@ Rotate bits:
55652  orr r3,r3,r0,lsr r2 ;@ Orr right part
55653  rsbs r2,r2,#17 ;@ should also clear ARM V
55654  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
55655
55656  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
55657  mrs r10,cpsr ;@ r10=flags
55658  str r10,[r7,#0x4c] ;@ Save X bit
55659
55660;@ EaWrite: r0 into register[r11]:
55661  mov r0,r0,lsr #16
55662  strh r0,[r7,r11]
55663
55664  ldrh r8,[r4],#2 ;@ Fetch next opcode
55665  subs r5,r5,#6 ;@ Subtract cycles
55666  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55667  b CycloneEnd
55668
55669;@ ---------- [ee58] ror.w #7, d0 uses Opee58 ----------
55670Opee58:
55671;@ EaCalc : Get register index into r11:
55672  and r11,r8,#0x0007
55673  mov r11,r11,lsl #2
55674;@ EaRead : Read register[r11] into r0:
55675  ldr r0,[r7,r11]
55676  mov r0,r0,asl #16
55677
55678  mov r2,r8,lsr #9 ;@ Get 'n'
55679  and r2,r2,#7
55680
55681  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55682
55683;@ Mirror value in whole 32 bits:
55684  orr r0,r0,r0,lsr #16
55685
55686;@ Rotate register:
55687  adds r0,r0,#0 ;@ first clear V and C
55688  movs r0,r0,ror r2
55689  mrs r10,cpsr ;@ r10=flags
55690
55691;@ EaWrite: r0 into register[r11]:
55692  mov r0,r0,lsr #16
55693  strh r0,[r7,r11]
55694
55695  ldrh r8,[r4],#2 ;@ Fetch next opcode
55696  subs r5,r5,#6 ;@ Subtract cycles
55697  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55698  b CycloneEnd
55699
55700;@ ---------- [ee80] asr.l #7, d0 uses Opee80 ----------
55701Opee80:
55702;@ EaCalc : Get register index into r11:
55703  and r11,r8,#0x0007
55704;@ EaRead : Read register[r11] into r0:
55705  ldr r0,[r7,r11,lsl #2]
55706
55707  mov r2,r8,lsr #9 ;@ Get 'n'
55708  and r2,r2,#7
55709
55710  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55711
55712;@ Shift register:
55713  movs r0,r0,asr r2
55714  mrs r10,cpsr ;@ r10=flags
55715  str r10,[r7,#0x4c] ;@ Save X bit
55716
55717;@ EaWrite: r0 into register[r11]:
55718  str r0,[r7,r11,lsl #2]
55719
55720  ldrh r8,[r4],#2 ;@ Fetch next opcode
55721  subs r5,r5,#8 ;@ Subtract cycles
55722  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55723  b CycloneEnd
55724
55725;@ ---------- [ee88] lsr.l #7, d0 uses Opee88 ----------
55726Opee88:
55727;@ EaCalc : Get register index into r11:
55728  and r11,r8,#0x0007
55729;@ EaRead : Read register[r11] into r0:
55730  ldr r0,[r7,r11,lsl #2]
55731
55732  mov r2,r8,lsr #9 ;@ Get 'n'
55733  and r2,r2,#7
55734
55735  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55736
55737;@ Shift register:
55738  movs r0,r0,lsr r2
55739  mrs r10,cpsr ;@ r10=flags
55740  str r10,[r7,#0x4c] ;@ Save X bit
55741
55742;@ EaWrite: r0 into register[r11]:
55743  str r0,[r7,r11,lsl #2]
55744
55745  ldrh r8,[r4],#2 ;@ Fetch next opcode
55746  subs r5,r5,#8 ;@ Subtract cycles
55747  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55748  b CycloneEnd
55749
55750;@ ---------- [ee90] roxr.l #7, d0 uses Opee90 ----------
55751Opee90:
55752;@ EaCalc : Get register index into r11:
55753  and r11,r8,#0x0007
55754;@ EaRead : Read register[r11] into r0:
55755  ldr r0,[r7,r11,lsl #2]
55756
55757  mov r2,r8,lsr #9 ;@ Get 'n'
55758  and r2,r2,#7
55759
55760  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55761
55762
55763;@ First get X bit (middle):
55764  ldr r3,[r7,#0x4c]
55765  rsb r1,r2,#32
55766  and r3,r3,#0x20000000
55767  mov r3,r3,lsr #29
55768  mov r3,r3,lsl r1
55769;@ Rotate bits:
55770  orr r3,r3,r0,lsr r2 ;@ Orr right part
55771  rsbs r2,r2,#33 ;@ should also clear ARM V
55772  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
55773
55774  mrs r10,cpsr ;@ r10=flags
55775  str r10,[r7,#0x4c] ;@ Save X bit
55776
55777;@ EaWrite: r0 into register[r11]:
55778  str r0,[r7,r11,lsl #2]
55779
55780  ldrh r8,[r4],#2 ;@ Fetch next opcode
55781  subs r5,r5,#8 ;@ Subtract cycles
55782  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55783  b CycloneEnd
55784
55785;@ ---------- [ee98] ror.l #7, d0 uses Opee98 ----------
55786Opee98:
55787;@ EaCalc : Get register index into r11:
55788  and r11,r8,#0x0007
55789;@ EaRead : Read register[r11] into r0:
55790  ldr r0,[r7,r11,lsl #2]
55791
55792  mov r2,r8,lsr #9 ;@ Get 'n'
55793  and r2,r2,#7
55794
55795  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55796
55797;@ Rotate register:
55798  adds r0,r0,#0 ;@ first clear V and C
55799  movs r0,r0,ror r2
55800  mrs r10,cpsr ;@ r10=flags
55801
55802;@ EaWrite: r0 into register[r11]:
55803  str r0,[r7,r11,lsl #2]
55804
55805  ldrh r8,[r4],#2 ;@ Fetch next opcode
55806  subs r5,r5,#8 ;@ Subtract cycles
55807  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55808  b CycloneEnd
55809
55810;@ ---------- [ef00] asl.b #7, d0 uses Opef00 ----------
55811Opef00:
55812;@ EaCalc : Get register index into r11:
55813  and r11,r8,#0x0007
55814;@ EaRead : Read register[r11] into r0:
55815  ldr r0,[r7,r11,lsl #2]
55816  mov r0,r0,asl #24
55817
55818  mov r2,r8,lsr #9 ;@ Get 'n'
55819  and r2,r2,#7
55820
55821  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55822
55823  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
55824;@ Shift register:
55825  movs r0,r0,asl r2
55826  mrs r10,cpsr ;@ r10=flags
55827  str r10,[r7,#0x4c] ;@ Save X bit
55828
55829;@ calculate V flag (set if sign bit changes at anytime):
55830  mov r1,#0x80000000
55831  ands r3,r3,r1,asr r2
55832  cmpne r3,r1,asr r2
55833  eoreq r1,r0,r3
55834  tsteq r1,#0x80000000
55835  orrne r10,r10,#0x10000000
55836
55837;@ EaWrite: r0 into register[r11]:
55838  mov r0,r0,lsr #24
55839  strb r0,[r7,r11,lsl #2]
55840
55841  ldrh r8,[r4],#2 ;@ Fetch next opcode
55842  subs r5,r5,#6 ;@ Subtract cycles
55843  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55844  b CycloneEnd
55845
55846;@ ---------- [ef08] lsl.b #7, d0 uses Opef08 ----------
55847Opef08:
55848;@ EaCalc : Get register index into r11:
55849  and r11,r8,#0x0007
55850;@ EaRead : Read register[r11] into r0:
55851  ldr r0,[r7,r11,lsl #2]
55852  mov r0,r0,asl #24
55853
55854  mov r2,r8,lsr #9 ;@ Get 'n'
55855  and r2,r2,#7
55856
55857  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55858
55859;@ Shift register:
55860  movs r0,r0,lsl r2
55861  mrs r10,cpsr ;@ r10=flags
55862  str r10,[r7,#0x4c] ;@ Save X bit
55863
55864;@ EaWrite: r0 into register[r11]:
55865  mov r0,r0,lsr #24
55866  strb r0,[r7,r11,lsl #2]
55867
55868  ldrh r8,[r4],#2 ;@ Fetch next opcode
55869  subs r5,r5,#6 ;@ Subtract cycles
55870  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55871  b CycloneEnd
55872
55873;@ ---------- [ef10] roxl.b #7, d0 uses Opef10 ----------
55874Opef10:
55875;@ EaCalc : Get register index into r11:
55876  and r11,r8,#0x0007
55877;@ EaRead : Read register[r11] into r0:
55878  ldr r0,[r7,r11,lsl #2]
55879  mov r0,r0,asl #24
55880
55881  mov r2,r8,lsr #9 ;@ Get 'n'
55882  and r2,r2,#7
55883
55884  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55885
55886  rsb r2,r2,#9 ;@ Reverse direction
55887  mov r0,r0,lsr #24 ;@ Shift down
55888
55889;@ First get X bit (middle):
55890  ldr r3,[r7,#0x4c]
55891  rsb r1,r2,#8
55892  and r3,r3,#0x20000000
55893  mov r3,r3,lsr #29
55894  mov r3,r3,lsl r1
55895;@ Rotate bits:
55896  orr r3,r3,r0,lsr r2 ;@ Orr right part
55897  rsbs r2,r2,#9 ;@ should also clear ARM V
55898  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
55899
55900  movs r0,r0,lsl #24 ;@ Shift up and get correct NC flags
55901  mrs r10,cpsr ;@ r10=flags
55902  str r10,[r7,#0x4c] ;@ Save X bit
55903
55904;@ EaWrite: r0 into register[r11]:
55905  mov r0,r0,lsr #24
55906  strb r0,[r7,r11,lsl #2]
55907
55908  ldrh r8,[r4],#2 ;@ Fetch next opcode
55909  subs r5,r5,#6 ;@ Subtract cycles
55910  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55911  b CycloneEnd
55912
55913;@ ---------- [ef18] rol.b #7, d0 uses Opef18 ----------
55914Opef18:
55915;@ EaCalc : Get register index into r11:
55916  and r11,r8,#0x0007
55917;@ EaRead : Read register[r11] into r0:
55918  ldr r0,[r7,r11,lsl #2]
55919  mov r0,r0,asl #24
55920
55921  mov r2,r8,lsr #9 ;@ Get 'n'
55922  and r2,r2,#7
55923
55924  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55925
55926;@ Mirror value in whole 32 bits:
55927  orr r0,r0,r0,lsr #8
55928  orr r0,r0,r0,lsr #16
55929
55930;@ Rotate register:
55931  rsb r2,r2,#32
55932  movs r0,r0,ror r2
55933  mrs r10,cpsr ;@ r10=flags
55934  bic r10,r10,#0x30000000 ;@ clear CV
55935;@ Get carry bit from bit 0:
55936  tst r0,#1
55937  orrne r10,r10,#0x20000000
55938
55939;@ EaWrite: r0 into register[r11]:
55940  mov r0,r0,lsr #24
55941  strb r0,[r7,r11,lsl #2]
55942
55943  ldrh r8,[r4],#2 ;@ Fetch next opcode
55944  subs r5,r5,#6 ;@ Subtract cycles
55945  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55946  b CycloneEnd
55947
55948;@ ---------- [ef40] asl.w #7, d0 uses Opef40 ----------
55949Opef40:
55950;@ EaCalc : Get register index into r11:
55951  and r11,r8,#0x0007
55952  mov r11,r11,lsl #2
55953;@ EaRead : Read register[r11] into r0:
55954  ldr r0,[r7,r11]
55955  mov r0,r0,asl #16
55956
55957  mov r2,r8,lsr #9 ;@ Get 'n'
55958  and r2,r2,#7
55959
55960  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55961
55962  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
55963;@ Shift register:
55964  movs r0,r0,asl r2
55965  mrs r10,cpsr ;@ r10=flags
55966  str r10,[r7,#0x4c] ;@ Save X bit
55967
55968;@ calculate V flag (set if sign bit changes at anytime):
55969  mov r1,#0x80000000
55970  ands r3,r3,r1,asr r2
55971  cmpne r3,r1,asr r2
55972  eoreq r1,r0,r3
55973  tsteq r1,#0x80000000
55974  orrne r10,r10,#0x10000000
55975
55976;@ EaWrite: r0 into register[r11]:
55977  mov r0,r0,lsr #16
55978  strh r0,[r7,r11]
55979
55980  ldrh r8,[r4],#2 ;@ Fetch next opcode
55981  subs r5,r5,#6 ;@ Subtract cycles
55982  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
55983  b CycloneEnd
55984
55985;@ ---------- [ef48] lsl.w #7, d0 uses Opef48 ----------
55986Opef48:
55987;@ EaCalc : Get register index into r11:
55988  and r11,r8,#0x0007
55989  mov r11,r11,lsl #2
55990;@ EaRead : Read register[r11] into r0:
55991  ldr r0,[r7,r11]
55992  mov r0,r0,asl #16
55993
55994  mov r2,r8,lsr #9 ;@ Get 'n'
55995  and r2,r2,#7
55996
55997  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
55998
55999;@ Shift register:
56000  movs r0,r0,lsl r2
56001  mrs r10,cpsr ;@ r10=flags
56002  str r10,[r7,#0x4c] ;@ Save X bit
56003
56004;@ EaWrite: r0 into register[r11]:
56005  mov r0,r0,lsr #16
56006  strh r0,[r7,r11]
56007
56008  ldrh r8,[r4],#2 ;@ Fetch next opcode
56009  subs r5,r5,#6 ;@ Subtract cycles
56010  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56011  b CycloneEnd
56012
56013;@ ---------- [ef50] roxl.w #7, d0 uses Opef50 ----------
56014Opef50:
56015;@ EaCalc : Get register index into r11:
56016  and r11,r8,#0x0007
56017  mov r11,r11,lsl #2
56018;@ EaRead : Read register[r11] into r0:
56019  ldr r0,[r7,r11]
56020  mov r0,r0,asl #16
56021
56022  mov r2,r8,lsr #9 ;@ Get 'n'
56023  and r2,r2,#7
56024
56025  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
56026
56027  rsb r2,r2,#17 ;@ Reverse direction
56028  mov r0,r0,lsr #16 ;@ Shift down
56029
56030;@ First get X bit (middle):
56031  ldr r3,[r7,#0x4c]
56032  rsb r1,r2,#16
56033  and r3,r3,#0x20000000
56034  mov r3,r3,lsr #29
56035  mov r3,r3,lsl r1
56036;@ Rotate bits:
56037  orr r3,r3,r0,lsr r2 ;@ Orr right part
56038  rsbs r2,r2,#17 ;@ should also clear ARM V
56039  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
56040
56041  movs r0,r0,lsl #16 ;@ Shift up and get correct NC flags
56042  mrs r10,cpsr ;@ r10=flags
56043  str r10,[r7,#0x4c] ;@ Save X bit
56044
56045;@ EaWrite: r0 into register[r11]:
56046  mov r0,r0,lsr #16
56047  strh r0,[r7,r11]
56048
56049  ldrh r8,[r4],#2 ;@ Fetch next opcode
56050  subs r5,r5,#6 ;@ Subtract cycles
56051  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56052  b CycloneEnd
56053
56054;@ ---------- [ef58] rol.w #7, d0 uses Opef58 ----------
56055Opef58:
56056;@ EaCalc : Get register index into r11:
56057  and r11,r8,#0x0007
56058  mov r11,r11,lsl #2
56059;@ EaRead : Read register[r11] into r0:
56060  ldr r0,[r7,r11]
56061  mov r0,r0,asl #16
56062
56063  mov r2,r8,lsr #9 ;@ Get 'n'
56064  and r2,r2,#7
56065
56066  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
56067
56068;@ Mirror value in whole 32 bits:
56069  orr r0,r0,r0,lsr #16
56070
56071;@ Rotate register:
56072  rsb r2,r2,#32
56073  movs r0,r0,ror r2
56074  mrs r10,cpsr ;@ r10=flags
56075  bic r10,r10,#0x30000000 ;@ clear CV
56076;@ Get carry bit from bit 0:
56077  tst r0,#1
56078  orrne r10,r10,#0x20000000
56079
56080;@ EaWrite: r0 into register[r11]:
56081  mov r0,r0,lsr #16
56082  strh r0,[r7,r11]
56083
56084  ldrh r8,[r4],#2 ;@ Fetch next opcode
56085  subs r5,r5,#6 ;@ Subtract cycles
56086  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56087  b CycloneEnd
56088
56089;@ ---------- [ef80] asl.l #7, d0 uses Opef80 ----------
56090Opef80:
56091;@ EaCalc : Get register index into r11:
56092  and r11,r8,#0x0007
56093;@ EaRead : Read register[r11] into r0:
56094  ldr r0,[r7,r11,lsl #2]
56095
56096  mov r2,r8,lsr #9 ;@ Get 'n'
56097  and r2,r2,#7
56098
56099  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
56100
56101  adds r3,r0,#0 ;@ save old value for V flag calculation, also clear V
56102;@ Shift register:
56103  movs r0,r0,asl r2
56104  mrs r10,cpsr ;@ r10=flags
56105  str r10,[r7,#0x4c] ;@ Save X bit
56106
56107;@ calculate V flag (set if sign bit changes at anytime):
56108  mov r1,#0x80000000
56109  ands r3,r3,r1,asr r2
56110  cmpne r3,r1,asr r2
56111  eoreq r1,r0,r3
56112  tsteq r1,#0x80000000
56113  orrne r10,r10,#0x10000000
56114
56115;@ EaWrite: r0 into register[r11]:
56116  str r0,[r7,r11,lsl #2]
56117
56118  ldrh r8,[r4],#2 ;@ Fetch next opcode
56119  subs r5,r5,#8 ;@ Subtract cycles
56120  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56121  b CycloneEnd
56122
56123;@ ---------- [ef88] lsl.l #7, d0 uses Opef88 ----------
56124Opef88:
56125;@ EaCalc : Get register index into r11:
56126  and r11,r8,#0x0007
56127;@ EaRead : Read register[r11] into r0:
56128  ldr r0,[r7,r11,lsl #2]
56129
56130  mov r2,r8,lsr #9 ;@ Get 'n'
56131  and r2,r2,#7
56132
56133  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
56134
56135;@ Shift register:
56136  movs r0,r0,lsl r2
56137  mrs r10,cpsr ;@ r10=flags
56138  str r10,[r7,#0x4c] ;@ Save X bit
56139
56140;@ EaWrite: r0 into register[r11]:
56141  str r0,[r7,r11,lsl #2]
56142
56143  ldrh r8,[r4],#2 ;@ Fetch next opcode
56144  subs r5,r5,#8 ;@ Subtract cycles
56145  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56146  b CycloneEnd
56147
56148;@ ---------- [ef90] roxl.l #7, d0 uses Opef90 ----------
56149Opef90:
56150;@ EaCalc : Get register index into r11:
56151  and r11,r8,#0x0007
56152;@ EaRead : Read register[r11] into r0:
56153  ldr r0,[r7,r11,lsl #2]
56154
56155  mov r2,r8,lsr #9 ;@ Get 'n'
56156  and r2,r2,#7
56157
56158  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
56159
56160  rsb r2,r2,#33 ;@ Reverse direction
56161
56162;@ First get X bit (middle):
56163  ldr r3,[r7,#0x4c]
56164  rsb r1,r2,#32
56165  and r3,r3,#0x20000000
56166  mov r3,r3,lsr #29
56167  mov r3,r3,lsl r1
56168;@ Rotate bits:
56169  orr r3,r3,r0,lsr r2 ;@ Orr right part
56170  rsbs r2,r2,#33 ;@ should also clear ARM V
56171  orrs r0,r3,r0,lsl r2 ;@ Orr left part, set flags
56172
56173  mrs r10,cpsr ;@ r10=flags
56174  str r10,[r7,#0x4c] ;@ Save X bit
56175
56176;@ EaWrite: r0 into register[r11]:
56177  str r0,[r7,r11,lsl #2]
56178
56179  ldrh r8,[r4],#2 ;@ Fetch next opcode
56180  subs r5,r5,#8 ;@ Subtract cycles
56181  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56182  b CycloneEnd
56183
56184;@ ---------- [ef98] rol.l #7, d0 uses Opef98 ----------
56185Opef98:
56186;@ EaCalc : Get register index into r11:
56187  and r11,r8,#0x0007
56188;@ EaRead : Read register[r11] into r0:
56189  ldr r0,[r7,r11,lsl #2]
56190
56191  mov r2,r8,lsr #9 ;@ Get 'n'
56192  and r2,r2,#7
56193
56194  sub r5,r5,r2,asl #1 ;@ Take 2*n cycles
56195
56196;@ Rotate register:
56197  rsb r2,r2,#32
56198  movs r0,r0,ror r2
56199  mrs r10,cpsr ;@ r10=flags
56200  bic r10,r10,#0x30000000 ;@ clear CV
56201;@ Get carry bit from bit 0:
56202  tst r0,#1
56203  orrne r10,r10,#0x20000000
56204
56205;@ EaWrite: r0 into register[r11]:
56206  str r0,[r7,r11,lsl #2]
56207
56208  ldrh r8,[r4],#2 ;@ Fetch next opcode
56209  subs r5,r5,#8 ;@ Subtract cycles
56210  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56211  b CycloneEnd
56212
56213;@ ----------
56214;@ tried execute privileged instruction in user mode
56215WrongPrivilegeMode:
56216  ldr r1,[r7,#0x58]
56217  sub r4,r4,#2 ;@ last opcode wasn't executed - go back
56218  orr r1,r1,#4 ;@ set activity bit: 'not processing instruction'
56219  str r1,[r7,#0x58]
56220  mov r0,#8 ;@ privilege violation
56221  bl Exception
56222  ldrh r8,[r4],#2 ;@ Fetch next opcode
56223  subs r5,r5,#34 ;@ Subtract cycles
56224  ldrgt pc,[r6,r8,asl #2] ;@ Jump to opcode handler
56225  b CycloneEnd
56226
56227
56228;@ -------------------------- Jump Table --------------------------
56229  .data
56230  .align 4
56231
56232CycloneJumpTab:
56233  .rept 0x1400
56234  .long 0,0,0,0,0,0,0,0
56235  .endr
56236  .long Op____,Op__al,Op__fl,Op0000,Op0010,Op0018,Op001f,Op0020 ;@ 0020
56237  .long Op0027,Op0028,Op0030,Op0038,Op0039,Op003c,Op0040,Op0050 ;@ 0050
56238  .long Op0058,Op0060,Op0068,Op0070,Op0078,Op0079,Op007c,Op0080 ;@ 0080
56239  .long Op0090,Op0098,Op00a0,Op00a8,Op00b0,Op00b8,Op00b9,Op0100 ;@ 0100
56240  .long Op0108,Op0110,Op0118,Op011f,Op0120,Op0127,Op0128,Op0130 ;@ 0130
56241  .long Op0138,Op0139,Op013a,Op013b,Op013c,Op0140,Op0148,Op0150 ;@ 0150
56242  .long Op0158,Op015f,Op0160,Op0167,Op0168,Op0170,Op0178,Op0179 ;@ 0179
56243  .long Op0180,Op0188,Op0190,Op0198,Op019f,Op01a0,Op01a7,Op01a8 ;@ 01a8
56244  .long Op01b0,Op01b8,Op01b9,Op01c0,Op01c8,Op01d0,Op01d8,Op01df ;@ 01df
56245  .long Op01e0,Op01e7,Op01e8,Op01f0,Op01f8,Op01f9,Op0200,Op0210 ;@ 0210
56246  .long Op0218,Op021f,Op0220,Op0227,Op0228,Op0230,Op0238,Op0239 ;@ 0239
56247  .long Op023c,Op0240,Op0250,Op0258,Op0260,Op0268,Op0270,Op0278 ;@ 0278
56248  .long Op0279,Op027c,Op0280,Op0290,Op0298,Op02a0,Op02a8,Op02b0 ;@ 02b0
56249  .long Op02b8,Op02b9,Op0400,Op0410,Op0418,Op041f,Op0420,Op0427 ;@ 0427
56250  .long Op0428,Op0430,Op0438,Op0439,Op0440,Op0450,Op0458,Op0460 ;@ 0460
56251  .long Op0468,Op0470,Op0478,Op0479,Op0480,Op0490,Op0498,Op04a0 ;@ 04a0
56252  .long Op04a8,Op04b0,Op04b8,Op04b9,Op0600,Op0610,Op0618,Op061f ;@ 061f
56253  .long Op0620,Op0627,Op0628,Op0630,Op0638,Op0639,Op0640,Op0650 ;@ 0650
56254  .long Op0658,Op0660,Op0668,Op0670,Op0678,Op0679,Op0680,Op0690 ;@ 0690
56255  .long Op0698,Op06a0,Op06a8,Op06b0,Op06b8,Op06b9,Op0800,Op0810 ;@ 0810
56256  .long Op0818,Op081f,Op0820,Op0827,Op0828,Op0830,Op0838,Op0839 ;@ 0839
56257  .long Op083a,Op083b,Op0840,Op0850,Op0858,Op085f,Op0860,Op0867 ;@ 0867
56258  .long Op0868,Op0870,Op0878,Op0879,Op0880,Op0890,Op0898,Op089f ;@ 089f
56259  .long Op08a0,Op08a7,Op08a8,Op08b0,Op08b8,Op08b9,Op08c0,Op08d0 ;@ 08d0
56260  .long Op08d8,Op08df,Op08e0,Op08e7,Op08e8,Op08f0,Op08f8,Op08f9 ;@ 08f9
56261  .long Op0a00,Op0a10,Op0a18,Op0a1f,Op0a20,Op0a27,Op0a28,Op0a30 ;@ 0a30
56262  .long Op0a38,Op0a39,Op0a3c,Op0a40,Op0a50,Op0a58,Op0a60,Op0a68 ;@ 0a68
56263  .long Op0a70,Op0a78,Op0a79,Op0a7c,Op0a80,Op0a90,Op0a98,Op0aa0 ;@ 0aa0
56264  .long Op0aa8,Op0ab0,Op0ab8,Op0ab9,Op0c00,Op0c10,Op0c18,Op0c1f ;@ 0c1f
56265  .long Op0c20,Op0c27,Op0c28,Op0c30,Op0c38,Op0c39,Op0c40,Op0c50 ;@ 0c50
56266  .long Op0c58,Op0c60,Op0c68,Op0c70,Op0c78,Op0c79,Op0c80,Op0c90 ;@ 0c90
56267  .long Op0c98,Op0ca0,Op0ca8,Op0cb0,Op0cb8,Op0cb9,Op1000,Op1010 ;@ 1010
56268  .long Op1018,Op101f,Op1020,Op1027,Op1028,Op1030,Op1038,Op1039 ;@ 1039
56269  .long Op103a,Op103b,Op103c,Op1080,Op1090,Op1098,Op109f,Op10a0 ;@ 10a0
56270  .long Op10a7,Op10a8,Op10b0,Op10b8,Op10b9,Op10ba,Op10bb,Op10bc ;@ 10bc
56271  .long Op10c0,Op10d0,Op10d8,Op10df,Op10e0,Op10e7,Op10e8,Op10f0 ;@ 10f0
56272  .long Op10f8,Op10f9,Op10fa,Op10fb,Op10fc,Op1100,Op1110,Op1118 ;@ 1118
56273  .long Op111f,Op1120,Op1127,Op1128,Op1130,Op1138,Op1139,Op113a ;@ 113a
56274  .long Op113b,Op113c,Op1140,Op1150,Op1158,Op115f,Op1160,Op1167 ;@ 1167
56275  .long Op1168,Op1170,Op1178,Op1179,Op117a,Op117b,Op117c,Op1180 ;@ 1180
56276  .long Op1190,Op1198,Op119f,Op11a0,Op11a7,Op11a8,Op11b0,Op11b8 ;@ 11b8
56277  .long Op11b9,Op11ba,Op11bb,Op11bc,Op11c0,Op11d0,Op11d8,Op11df ;@ 11df
56278  .long Op11e0,Op11e7,Op11e8,Op11f0,Op11f8,Op11f9,Op11fa,Op11fb ;@ 11fb
56279  .long Op11fc,Op13c0,Op13d0,Op13d8,Op13df,Op13e0,Op13e7,Op13e8 ;@ 13e8
56280  .long Op13f0,Op13f8,Op13f9,Op13fa,Op13fb,Op13fc,Op1ec0,Op1ed0 ;@ 1ed0
56281  .long Op1ed8,Op1edf,Op1ee0,Op1ee7,Op1ee8,Op1ef0,Op1ef8,Op1ef9 ;@ 1ef9
56282  .long Op1efa,Op1efb,Op1efc,Op1f00,Op1f10,Op1f18,Op1f1f,Op1f20 ;@ 1f20
56283  .long Op1f27,Op1f28,Op1f30,Op1f38,Op1f39,Op1f3a,Op1f3b,Op1f3c ;@ 1f3c
56284  .long Op2000,Op2010,Op2018,Op2020,Op2028,Op2030,Op2038,Op2039 ;@ 2039
56285  .long Op203a,Op203b,Op203c,Op2040,Op2050,Op2058,Op2060,Op2068 ;@ 2068
56286  .long Op2070,Op2078,Op2079,Op207a,Op207b,Op207c,Op2080,Op2090 ;@ 2090
56287  .long Op2098,Op20a0,Op20a8,Op20b0,Op20b8,Op20b9,Op20ba,Op20bb ;@ 20bb
56288  .long Op20bc,Op20c0,Op20d0,Op20d8,Op20e0,Op20e8,Op20f0,Op20f8 ;@ 20f8
56289  .long Op20f9,Op20fa,Op20fb,Op20fc,Op2100,Op2110,Op2118,Op2120 ;@ 2120
56290  .long Op2128,Op2130,Op2138,Op2139,Op213a,Op213b,Op213c,Op2140 ;@ 2140
56291  .long Op2150,Op2158,Op2160,Op2168,Op2170,Op2178,Op2179,Op217a ;@ 217a
56292  .long Op217b,Op217c,Op2180,Op2190,Op2198,Op21a0,Op21a8,Op21b0 ;@ 21b0
56293  .long Op21b8,Op21b9,Op21ba,Op21bb,Op21bc,Op21c0,Op21d0,Op21d8 ;@ 21d8
56294  .long Op21e0,Op21e8,Op21f0,Op21f8,Op21f9,Op21fa,Op21fb,Op21fc ;@ 21fc
56295  .long Op23c0,Op23d0,Op23d8,Op23e0,Op23e8,Op23f0,Op23f8,Op23f9 ;@ 23f9
56296  .long Op23fa,Op23fb,Op23fc,Op2ec0,Op2ed0,Op2ed8,Op2ee0,Op2ee8 ;@ 2ee8
56297  .long Op2ef0,Op2ef8,Op2ef9,Op2efa,Op2efb,Op2efc,Op2f00,Op2f10 ;@ 2f10
56298  .long Op2f18,Op2f20,Op2f28,Op2f30,Op2f38,Op2f39,Op2f3a,Op2f3b ;@ 2f3b
56299  .long Op2f3c,Op3000,Op3010,Op3018,Op3020,Op3028,Op3030,Op3038 ;@ 3038
56300  .long Op3039,Op303a,Op303b,Op303c,Op3040,Op3050,Op3058,Op3060 ;@ 3060
56301  .long Op3068,Op3070,Op3078,Op3079,Op307a,Op307b,Op307c,Op3080 ;@ 3080
56302  .long Op3090,Op3098,Op30a0,Op30a8,Op30b0,Op30b8,Op30b9,Op30ba ;@ 30ba
56303  .long Op30bb,Op30bc,Op30c0,Op30d0,Op30d8,Op30e0,Op30e8,Op30f0 ;@ 30f0
56304  .long Op30f8,Op30f9,Op30fa,Op30fb,Op30fc,Op3100,Op3110,Op3118 ;@ 3118
56305  .long Op3120,Op3128,Op3130,Op3138,Op3139,Op313a,Op313b,Op313c ;@ 313c
56306  .long Op3140,Op3150,Op3158,Op3160,Op3168,Op3170,Op3178,Op3179 ;@ 3179
56307  .long Op317a,Op317b,Op317c,Op3180,Op3190,Op3198,Op31a0,Op31a8 ;@ 31a8
56308  .long Op31b0,Op31b8,Op31b9,Op31ba,Op31bb,Op31bc,Op31c0,Op31d0 ;@ 31d0
56309  .long Op31d8,Op31e0,Op31e8,Op31f0,Op31f8,Op31f9,Op31fa,Op31fb ;@ 31fb
56310  .long Op31fc,Op33c0,Op33d0,Op33d8,Op33e0,Op33e8,Op33f0,Op33f8 ;@ 33f8
56311  .long Op33f9,Op33fa,Op33fb,Op33fc,Op3ec0,Op3ed0,Op3ed8,Op3ee0 ;@ 3ee0
56312  .long Op3ee8,Op3ef0,Op3ef8,Op3ef9,Op3efa,Op3efb,Op3efc,Op3f00 ;@ 3f00
56313  .long Op3f10,Op3f18,Op3f20,Op3f28,Op3f30,Op3f38,Op3f39,Op3f3a ;@ 3f3a
56314  .long Op3f3b,Op3f3c,Op4000,Op4010,Op4018,Op401f,Op4020,Op4027 ;@ 4027
56315  .long Op4028,Op4030,Op4038,Op4039,Op4040,Op4050,Op4058,Op4060 ;@ 4060
56316  .long Op4068,Op4070,Op4078,Op4079,Op4080,Op4090,Op4098,Op40a0 ;@ 40a0
56317  .long Op40a8,Op40b0,Op40b8,Op40b9,Op40c0,Op40d0,Op40d8,Op40e0 ;@ 40e0
56318  .long Op40e8,Op40f0,Op40f8,Op40f9,Op4180,Op4190,Op4198,Op41a0 ;@ 41a0
56319  .long Op41a8,Op41b0,Op41b8,Op41b9,Op41ba,Op41bb,Op41bc,Op41d0 ;@ 41d0
56320  .long Op41e8,Op41f0,Op41f8,Op41f9,Op41fa,Op41fb,Op4200,Op4210 ;@ 4210
56321  .long Op4218,Op421f,Op4220,Op4227,Op4228,Op4230,Op4238,Op4239 ;@ 4239
56322  .long Op4240,Op4250,Op4258,Op4260,Op4268,Op4270,Op4278,Op4279 ;@ 4279
56323  .long Op4280,Op4290,Op4298,Op42a0,Op42a8,Op42b0,Op42b8,Op42b9 ;@ 42b9
56324  .long Op4400,Op4410,Op4418,Op441f,Op4420,Op4427,Op4428,Op4430 ;@ 4430
56325  .long Op4438,Op4439,Op4440,Op4450,Op4458,Op4460,Op4468,Op4470 ;@ 4470
56326  .long Op4478,Op4479,Op4480,Op4490,Op4498,Op44a0,Op44a8,Op44b0 ;@ 44b0
56327  .long Op44b8,Op44b9,Op44c0,Op44d0,Op44d8,Op44e0,Op44e8,Op44f0 ;@ 44f0
56328  .long Op44f8,Op44f9,Op44fa,Op44fb,Op44fc,Op4600,Op4610,Op4618 ;@ 4618
56329  .long Op461f,Op4620,Op4627,Op4628,Op4630,Op4638,Op4639,Op4640 ;@ 4640
56330  .long Op4650,Op4658,Op4660,Op4668,Op4670,Op4678,Op4679,Op4680 ;@ 4680
56331  .long Op4690,Op4698,Op46a0,Op46a8,Op46b0,Op46b8,Op46b9,Op46c0 ;@ 46c0
56332  .long Op46d0,Op46d8,Op46e0,Op46e8,Op46f0,Op46f8,Op46f9,Op46fa ;@ 46fa
56333  .long Op46fb,Op46fc,Op4800,Op4810,Op4818,Op481f,Op4820,Op4827 ;@ 4827
56334  .long Op4828,Op4830,Op4838,Op4839,Op4840,Op4850,Op4868,Op4870 ;@ 4870
56335  .long Op4878,Op4879,Op487a,Op487b,Op4880,Op4890,Op48a0,Op48a8 ;@ 48a8
56336  .long Op48b0,Op48b8,Op48b9,Op48c0,Op48d0,Op48e0,Op48e8,Op48f0 ;@ 48f0
56337  .long Op48f8,Op48f9,Op4a00,Op4a10,Op4a18,Op4a1f,Op4a20,Op4a27 ;@ 4a27
56338  .long Op4a28,Op4a30,Op4a38,Op4a39,Op4a40,Op4a50,Op4a58,Op4a60 ;@ 4a60
56339  .long Op4a68,Op4a70,Op4a78,Op4a79,Op4a80,Op4a90,Op4a98,Op4aa0 ;@ 4aa0
56340  .long Op4aa8,Op4ab0,Op4ab8,Op4ab9,Op4ac0,Op4ad0,Op4ad8,Op4adf ;@ 4adf
56341  .long Op4ae0,Op4ae7,Op4ae8,Op4af0,Op4af8,Op4af9,Op4c90,Op4c98 ;@ 4c98
56342  .long Op4ca8,Op4cb0,Op4cb8,Op4cb9,Op4cba,Op4cbb,Op4cd0,Op4cd8 ;@ 4cd8
56343  .long Op4ce8,Op4cf0,Op4cf8,Op4cf9,Op4cfa,Op4cfb,Op4e40,Op4e50 ;@ 4e50
56344  .long Op4e57,Op4e58,Op4e60,Op4e68,Op4e70,Op4e71,Op4e72,Op4e73 ;@ 4e73
56345  .long Op4e75,Op4e76,Op4e77,Op4e90,Op4ea8,Op4eb0,Op4eb8,Op4eb9 ;@ 4eb9
56346  .long Op4eba,Op4ebb,Op4ed0,Op4ee8,Op4ef0,Op4ef8,Op4ef9,Op4efa ;@ 4efa
56347  .long Op4efb,Op5000,Op5010,Op5018,Op501f,Op5020,Op5027,Op5028 ;@ 5028
56348  .long Op5030,Op5038,Op5039,Op5040,Op5048,Op5050,Op5058,Op5060 ;@ 5060
56349  .long Op5068,Op5070,Op5078,Op5079,Op5080,Op5088,Op5090,Op5098 ;@ 5098
56350  .long Op50a0,Op50a8,Op50b0,Op50b8,Op50b9,Op50c0,Op50c8,Op50d0 ;@ 50d0
56351  .long Op50d8,Op50df,Op50e0,Op50e7,Op50e8,Op50f0,Op50f8,Op50f9 ;@ 50f9
56352  .long Op5100,Op5110,Op5118,Op511f,Op5120,Op5127,Op5128,Op5130 ;@ 5130
56353  .long Op5138,Op5139,Op5140,Op5148,Op5150,Op5158,Op5160,Op5168 ;@ 5168
56354  .long Op5170,Op5178,Op5179,Op5180,Op5188,Op5190,Op5198,Op51a0 ;@ 51a0
56355  .long Op51a8,Op51b0,Op51b8,Op51b9,Op51c0,Op51c8,Op51d0,Op51d8 ;@ 51d8
56356  .long Op51df,Op51e0,Op51e7,Op51e8,Op51f0,Op51f8,Op51f9,Op5e00 ;@ 5200
56357  .long Op5e10,Op5e18,Op5e1f,Op5e20,Op5e27,Op5e28,Op5e30,Op5e38 ;@ 5238
56358  .long Op5e39,Op5e40,Op5e48,Op5e50,Op5e58,Op5e60,Op5e68,Op5e70 ;@ 5270
56359  .long Op5e78,Op5e79,Op5e80,Op5e88,Op5e90,Op5e98,Op5ea0,Op5ea8 ;@ 52a8
56360  .long Op5eb0,Op5eb8,Op5eb9,Op52c0,Op52c8,Op52d0,Op52d8,Op52df ;@ 52df
56361  .long Op52e0,Op52e7,Op52e8,Op52f0,Op52f8,Op52f9,Op5f00,Op5f10 ;@ 5310
56362  .long Op5f18,Op5f1f,Op5f20,Op5f27,Op5f28,Op5f30,Op5f38,Op5f39 ;@ 5339
56363  .long Op5f40,Op5f48,Op5f50,Op5f58,Op5f60,Op5f68,Op5f70,Op5f78 ;@ 5378
56364  .long Op5f79,Op5f80,Op5f88,Op5f90,Op5f98,Op5fa0,Op5fa8,Op5fb0 ;@ 53b0
56365  .long Op5fb8,Op5fb9,Op53c0,Op53c8,Op53d0,Op53d8,Op53df,Op53e0 ;@ 53e0
56366  .long Op53e7,Op53e8,Op53f0,Op53f8,Op53f9,Op54c0,Op54c8,Op54d0 ;@ 54d0
56367  .long Op54d8,Op54df,Op54e0,Op54e7,Op54e8,Op54f0,Op54f8,Op54f9 ;@ 54f9
56368  .long Op55c0,Op55c8,Op55d0,Op55d8,Op55df,Op55e0,Op55e7,Op55e8 ;@ 55e8
56369  .long Op55f0,Op55f8,Op55f9,Op56c0,Op56c8,Op56d0,Op56d8,Op56df ;@ 56df
56370  .long Op56e0,Op56e7,Op56e8,Op56f0,Op56f8,Op56f9,Op57c0,Op57c8 ;@ 57c8
56371  .long Op57d0,Op57d8,Op57df,Op57e0,Op57e7,Op57e8,Op57f0,Op57f8 ;@ 57f8
56372  .long Op57f9,Op58c0,Op58c8,Op58d0,Op58d8,Op58df,Op58e0,Op58e7 ;@ 58e7
56373  .long Op58e8,Op58f0,Op58f8,Op58f9,Op59c0,Op59c8,Op59d0,Op59d8 ;@ 59d8
56374  .long Op59df,Op59e0,Op59e7,Op59e8,Op59f0,Op59f8,Op59f9,Op5ac0 ;@ 5ac0
56375  .long Op5ac8,Op5ad0,Op5ad8,Op5adf,Op5ae0,Op5ae7,Op5ae8,Op5af0 ;@ 5af0
56376  .long Op5af8,Op5af9,Op5bc0,Op5bc8,Op5bd0,Op5bd8,Op5bdf,Op5be0 ;@ 5be0
56377  .long Op5be7,Op5be8,Op5bf0,Op5bf8,Op5bf9,Op5cc0,Op5cc8,Op5cd0 ;@ 5cd0
56378  .long Op5cd8,Op5cdf,Op5ce0,Op5ce7,Op5ce8,Op5cf0,Op5cf8,Op5cf9 ;@ 5cf9
56379  .long Op5dc0,Op5dc8,Op5dd0,Op5dd8,Op5ddf,Op5de0,Op5de7,Op5de8 ;@ 5de8
56380  .long Op5df0,Op5df8,Op5df9,Op5ec0,Op5ec8,Op5ed0,Op5ed8,Op5edf ;@ 5edf
56381  .long Op5ee0,Op5ee7,Op5ee8,Op5ef0,Op5ef8,Op5ef9,Op5fc0,Op5fc8 ;@ 5fc8
56382  .long Op5fd0,Op5fd8,Op5fdf,Op5fe0,Op5fe7,Op5fe8,Op5ff0,Op5ff8 ;@ 5ff8
56383  .long Op5ff9,Op6000,Op6003,Op6002,Op6100,Op6103,Op6102,Op6200 ;@ 6200
56384  .long Op6203,Op6202,Op6300,Op6303,Op6302,Op6400,Op6403,Op6402 ;@ 6402
56385  .long Op6500,Op6503,Op6502,Op6600,Op6603,Op6602,Op6700,Op6703 ;@ 6701
56386  .long Op6702,Op6800,Op6803,Op6802,Op6900,Op6903,Op6902,Op6a00 ;@ 6a00
56387  .long Op6a03,Op6a02,Op6b00,Op6b03,Op6b02,Op6c00,Op6c03,Op6c02 ;@ 6c02
56388  .long Op6d00,Op6d03,Op6d02,Op6e00,Op6e03,Op6e02,Op6f00,Op6f03 ;@ 6f01
56389  .long Op6f02,Op7000,Op8000,Op8010,Op8018,Op801f,Op8020,Op8027 ;@ 8027
56390  .long Op8028,Op8030,Op8038,Op8039,Op803a,Op803b,Op803c,Op8040 ;@ 8040
56391  .long Op8050,Op8058,Op8060,Op8068,Op8070,Op8078,Op8079,Op807a ;@ 807a
56392  .long Op807b,Op807c,Op8080,Op8090,Op8098,Op80a0,Op80a8,Op80b0 ;@ 80b0
56393  .long Op80b8,Op80b9,Op80ba,Op80bb,Op80bc,Op80c0,Op80d0,Op80d8 ;@ 80d8
56394  .long Op80e0,Op80e8,Op80f0,Op80f8,Op80f9,Op80fa,Op80fb,Op80fc ;@ 80fc
56395  .long Op8100,Op8108,Op810f,Op8110,Op8118,Op811f,Op8120,Op8127 ;@ 8127
56396  .long Op8128,Op8130,Op8138,Op8139,Op8150,Op8158,Op8160,Op8168 ;@ 8168
56397  .long Op8170,Op8178,Op8179,Op8190,Op8198,Op81a0,Op81a8,Op81b0 ;@ 81b0
56398  .long Op81b8,Op81b9,Op81c0,Op81d0,Op81d8,Op81e0,Op81e8,Op81f0 ;@ 81f0
56399  .long Op81f8,Op81f9,Op81fa,Op81fb,Op81fc,Op8f08,Op8f0f,Op9000 ;@ 9000
56400  .long Op9010,Op9018,Op901f,Op9020,Op9027,Op9028,Op9030,Op9038 ;@ 9038
56401  .long Op9039,Op903a,Op903b,Op903c,Op9040,Op9050,Op9058,Op9060 ;@ 9060
56402  .long Op9068,Op9070,Op9078,Op9079,Op907a,Op907b,Op907c,Op9080 ;@ 9080
56403  .long Op9090,Op9098,Op90a0,Op90a8,Op90b0,Op90b8,Op90b9,Op90ba ;@ 90ba
56404  .long Op90bb,Op90bc,Op90c0,Op90d0,Op90d8,Op90e0,Op90e8,Op90f0 ;@ 90f0
56405  .long Op90f8,Op90f9,Op90fa,Op90fb,Op90fc,Op9100,Op9108,Op910f ;@ 910f
56406  .long Op9110,Op9118,Op911f,Op9120,Op9127,Op9128,Op9130,Op9138 ;@ 9138
56407  .long Op9139,Op9140,Op9148,Op9150,Op9158,Op9160,Op9168,Op9170 ;@ 9170
56408  .long Op9178,Op9179,Op9180,Op9188,Op9190,Op9198,Op91a0,Op91a8 ;@ 91a8
56409  .long Op91b0,Op91b8,Op91b9,Op91c0,Op91d0,Op91d8,Op91e0,Op91e8 ;@ 91e8
56410  .long Op91f0,Op91f8,Op91f9,Op91fa,Op91fb,Op91fc,Op9f08,Op9f0f ;@ 9f0f
56411  .long Opb000,Opb010,Opb018,Opb01f,Opb020,Opb027,Opb028,Opb030 ;@ b030
56412  .long Opb038,Opb039,Opb03a,Opb03b,Opb03c,Opb040,Opb050,Opb058 ;@ b058
56413  .long Opb060,Opb068,Opb070,Opb078,Opb079,Opb07a,Opb07b,Opb07c ;@ b07c
56414  .long Opb080,Opb090,Opb098,Opb0a0,Opb0a8,Opb0b0,Opb0b8,Opb0b9 ;@ b0b9
56415  .long Opb0ba,Opb0bb,Opb0bc,Opb0c0,Opb0d0,Opb0d8,Opb0e0,Opb0e8 ;@ b0e8
56416  .long Opb0f0,Opb0f8,Opb0f9,Opb0fa,Opb0fb,Opb0fc,Opb100,Opb108 ;@ b108
56417  .long Opb10f,Opb110,Opb118,Opb11f,Opb120,Opb127,Opb128,Opb130 ;@ b130
56418  .long Opb138,Opb139,Opb140,Opb148,Opb150,Opb158,Opb160,Opb168 ;@ b168
56419  .long Opb170,Opb178,Opb179,Opb180,Opb188,Opb190,Opb198,Opb1a0 ;@ b1a0
56420  .long Opb1a8,Opb1b0,Opb1b8,Opb1b9,Opb1c0,Opb1d0,Opb1d8,Opb1e0 ;@ b1e0
56421  .long Opb1e8,Opb1f0,Opb1f8,Opb1f9,Opb1fa,Opb1fb,Opb1fc,Opbf08 ;@ bf08
56422  .long Opbf0f,Opc000,Opc010,Opc018,Opc01f,Opc020,Opc027,Opc028 ;@ c028
56423  .long Opc030,Opc038,Opc039,Opc03a,Opc03b,Opc03c,Opc040,Opc050 ;@ c050
56424  .long Opc058,Opc060,Opc068,Opc070,Opc078,Opc079,Opc07a,Opc07b ;@ c07b
56425  .long Opc07c,Opc080,Opc090,Opc098,Opc0a0,Opc0a8,Opc0b0,Opc0b8 ;@ c0b8
56426  .long Opc0b9,Opc0ba,Opc0bb,Opc0bc,Opc0c0,Opc0d0,Opc0d8,Opc0e0 ;@ c0e0
56427  .long Opc0e8,Opc0f0,Opc0f8,Opc0f9,Opc0fa,Opc0fb,Opc0fc,Opc100 ;@ c100
56428  .long Opc108,Opc10f,Opc110,Opc118,Opc11f,Opc120,Opc127,Opc128 ;@ c128
56429  .long Opc130,Opc138,Opc139,Opc140,Opc148,Opc150,Opc158,Opc160 ;@ c160
56430  .long Opc168,Opc170,Opc178,Opc179,Opc188,Opc190,Opc198,Opc1a0 ;@ c1a0
56431  .long Opc1a8,Opc1b0,Opc1b8,Opc1b9,Opc1c0,Opc1d0,Opc1d8,Opc1e0 ;@ c1e0
56432  .long Opc1e8,Opc1f0,Opc1f8,Opc1f9,Opc1fa,Opc1fb,Opc1fc,Opcf08 ;@ cf08
56433  .long Opcf0f,Opd000,Opd010,Opd018,Opd01f,Opd020,Opd027,Opd028 ;@ d028
56434  .long Opd030,Opd038,Opd039,Opd03a,Opd03b,Opd03c,Opd040,Opd050 ;@ d050
56435  .long Opd058,Opd060,Opd068,Opd070,Opd078,Opd079,Opd07a,Opd07b ;@ d07b
56436  .long Opd07c,Opd080,Opd090,Opd098,Opd0a0,Opd0a8,Opd0b0,Opd0b8 ;@ d0b8
56437  .long Opd0b9,Opd0ba,Opd0bb,Opd0bc,Opd0c0,Opd0d0,Opd0d8,Opd0e0 ;@ d0e0
56438  .long Opd0e8,Opd0f0,Opd0f8,Opd0f9,Opd0fa,Opd0fb,Opd0fc,Opd100 ;@ d100
56439  .long Opd108,Opd10f,Opd110,Opd118,Opd11f,Opd120,Opd127,Opd128 ;@ d128
56440  .long Opd130,Opd138,Opd139,Opd140,Opd148,Opd150,Opd158,Opd160 ;@ d160
56441  .long Opd168,Opd170,Opd178,Opd179,Opd180,Opd188,Opd190,Opd198 ;@ d198
56442  .long Opd1a0,Opd1a8,Opd1b0,Opd1b8,Opd1b9,Opd1c0,Opd1d0,Opd1d8 ;@ d1d8
56443  .long Opd1e0,Opd1e8,Opd1f0,Opd1f8,Opd1f9,Opd1fa,Opd1fb,Opd1fc ;@ d1fc
56444  .long Opdf08,Opdf0f,Ope000,Ope008,Ope010,Ope018,Ope020,Ope028 ;@ e028
56445  .long Ope030,Ope038,Ope040,Ope048,Ope050,Ope058,Ope060,Ope068 ;@ e068
56446  .long Ope070,Ope078,Ope080,Ope088,Ope090,Ope098,Ope0a0,Ope0a8 ;@ e0a8
56447  .long Ope0b0,Ope0b8,Ope0d0,Ope0d8,Ope0e0,Ope0e8,Ope0f0,Ope0f8 ;@ e0f8
56448  .long Ope0f9,Ope100,Ope108,Ope110,Ope118,Ope120,Ope128,Ope130 ;@ e130
56449  .long Ope138,Ope140,Ope148,Ope150,Ope158,Ope160,Ope168,Ope170 ;@ e170
56450  .long Ope178,Ope180,Ope188,Ope190,Ope198,Ope1a0,Ope1a8,Ope1b0 ;@ e1b0
56451  .long Ope1b8,Ope1d0,Ope1d8,Ope1e0,Ope1e8,Ope1f0,Ope1f8,Ope1f9 ;@ e1f9
56452  .long Opee00,Opee08,Ope210,Opee18,Opee40,Opee48,Ope250,Opee58 ;@ e258
56453  .long Opee80,Opee88,Ope290,Opee98,Ope2d0,Ope2d8,Ope2e0,Ope2e8 ;@ e2e8
56454  .long Ope2f0,Ope2f8,Ope2f9,Opef00,Opef08,Ope310,Opef18,Opef40 ;@ e340
56455  .long Opef48,Ope350,Opef58,Opef80,Opef88,Ope390,Opef98,Ope3d0 ;@ e3d0
56456  .long Ope3d8,Ope3e0,Ope3e8,Ope3f0,Ope3f8,Ope3f9,Opee10,Opee50 ;@ e450
56457  .long Opee90,Ope4d0,Ope4d8,Ope4e0,Ope4e8,Ope4f0,Ope4f8,Ope4f9 ;@ e4f9
56458  .long Opef10,Opef50,Opef90,Ope5d0,Ope5d8,Ope5e0,Ope5e8,Ope5f0 ;@ e5f0
56459  .long Ope5f8,Ope5f9,Ope6d0,Ope6d8,Ope6e0,Ope6e8,Ope6f0,Ope6f8 ;@ e6f8
56460  .long Ope6f9,Ope7d0,Ope7d8,Ope7e0,Ope7e8,Ope7f0,Ope7f8,Ope7f9 ;@ e7f9
56461  .rept 0x71f
56462  .long 0,0,0,0,0,0,0,0
56463  .endr
56464  .hword 0x0038,0x0008,0x0048,0x0057,0x0061,0x0077,0x0081,0x0098
56465  .hword 0x00a8,0x00b1,0x00c1,0x0002,0x00d1,0x0003,0x00e8,0x0008
56466  .hword 0x00f8,0x0108,0x0118,0x0128,0x0138,0x0141,0x0151,0x0002
56467  .hword 0x0161,0x0003,0x0178,0x0008,0x0188,0x0198,0x01a8,0x01b8
56468  .hword 0x01c8,0x01d1,0x01e1,0x0000,0x0046,0x01f8,0x0208,0x0218
56469  .hword 0x0227,0x0231,0x0247,0x0251,0x0268,0x0278,0x0281,0x0291
56470  .hword 0x02a1,0x02b1,0x02c1,0x0003,0x02d8,0x02e8,0x02f8,0x0307
56471  .hword 0x0311,0x0327,0x0331,0x0348,0x0358,0x0361,0x0371,0x0006
56472  .hword 0x0388,0x0398,0x03a8,0x03b7,0x03c1,0x03d7,0x03e1,0x03f8
56473  .hword 0x0408,0x0411,0x0421,0x0006,0x0438,0x0448,0x0458,0x0467
56474  .hword 0x0471,0x0487,0x0491,0x04a8,0x04b8,0x04c1,0x04d1,0x0006
56475  .hword 0x04e8,0x0008,0x04f8,0x0507,0x0511,0x0527,0x0531,0x0548
56476  .hword 0x0558,0x0561,0x0571,0x0002,0x0581,0x0003,0x0598,0x0008
56477  .hword 0x05a8,0x05b8,0x05c8,0x05d8,0x05e8,0x05f1,0x0601,0x0002
56478  .hword 0x0611,0x0003,0x0628,0x0008,0x0638,0x0648,0x0658,0x0668
56479  .hword 0x0678,0x0681,0x0691,0x0000,0x0046,0x01f8,0x0208,0x0218
56480  .hword 0x0227,0x0231,0x0247,0x0251,0x0268,0x0278,0x0281,0x0291
56481  .hword 0x02a1,0x02b1,0x02c1,0x0003,0x02d8,0x02e8,0x02f8,0x0307
56482  .hword 0x0311,0x0327,0x0331,0x0348,0x0358,0x0361,0x0371,0x0006
56483  .hword 0x0388,0x0398,0x03a8,0x03b7,0x03c1,0x03d7,0x03e1,0x03f8
56484  .hword 0x0408,0x0411,0x0421,0x0006,0x0438,0x0448,0x0458,0x0467
56485  .hword 0x0471,0x0487,0x0491,0x04a8,0x04b8,0x04c1,0x04d1,0x0006
56486  .hword 0x06a8,0x0008,0x06b8,0x06c7,0x06d1,0x06e7,0x06f1,0x0708
56487  .hword 0x0718,0x0721,0x0731,0x0006,0x0748,0x0008,0x0758,0x0768
56488  .hword 0x0778,0x0788,0x0798,0x07a1,0x07b1,0x0006,0x07c8,0x0008
56489  .hword 0x07d8,0x07e8,0x07f8,0x0808,0x0818,0x0821,0x0831,0x0000
56490  .hword 0x0046,0x01f8,0x0208,0x0218,0x0227,0x0231,0x0247,0x0251
56491  .hword 0x0268,0x0278,0x0281,0x0291,0x02a1,0x02b1,0x02c1,0x0003
56492  .hword 0x02d8,0x02e8,0x02f8,0x0307,0x0311,0x0327,0x0331,0x0348
56493  .hword 0x0358,0x0361,0x0371,0x0006,0x0388,0x0398,0x03a8,0x03b7
56494  .hword 0x03c1,0x03d7,0x03e1,0x03f8,0x0408,0x0411,0x0421,0x0006
56495  .hword 0x0438,0x0448,0x0458,0x0467,0x0471,0x0487,0x0491,0x04a8
56496  .hword 0x04b8,0x04c1,0x04d1,0x0006,0x0848,0x0008,0x0858,0x0867
56497  .hword 0x0871,0x0887,0x0891,0x08a8,0x08b8,0x08c1,0x08d1,0x0006
56498  .hword 0x08e8,0x0008,0x08f8,0x0908,0x0918,0x0928,0x0938,0x0941
56499  .hword 0x0951,0x0006,0x0968,0x0008,0x0978,0x0988,0x0998,0x09a8
56500  .hword 0x09b8,0x09c1,0x09d1,0x0000,0x0046,0x01f8,0x0208,0x0218
56501  .hword 0x0227,0x0231,0x0247,0x0251,0x0268,0x0278,0x0281,0x0291
56502  .hword 0x02a1,0x02b1,0x02c1,0x0003,0x02d8,0x02e8,0x02f8,0x0307
56503  .hword 0x0311,0x0327,0x0331,0x0348,0x0358,0x0361,0x0371,0x0006
56504  .hword 0x0388,0x0398,0x03a8,0x03b7,0x03c1,0x03d7,0x03e1,0x03f8
56505  .hword 0x0408,0x0411,0x0421,0x0006,0x0438,0x0448,0x0458,0x0467
56506  .hword 0x0471,0x0487,0x0491,0x04a8,0x04b8,0x04c1,0x04d1,0x0006
56507  .hword 0x09e8,0x0008,0x09f8,0x0a07,0x0a11,0x0a27,0x0a31,0x0a48
56508  .hword 0x0a58,0x0a61,0x0a71,0x0a81,0x0a91,0x0004,0x0aa8,0x0008
56509  .hword 0x0ab8,0x0ac7,0x0ad1,0x0ae7,0x0af1,0x0b08,0x0b18,0x0b21
56510  .hword 0x0b31,0x0006,0x0b48,0x0008,0x0b58,0x0b67,0x0b71,0x0b87
56511  .hword 0x0b91,0x0ba8,0x0bb8,0x0bc1,0x0bd1,0x0006,0x0be8,0x0008
56512  .hword 0x0bf8,0x0c07,0x0c11,0x0c27,0x0c31,0x0c48,0x0c58,0x0c61
56513  .hword 0x0c71,0x0006,0x01f8,0x0208,0x0218,0x0227,0x0231,0x0247
56514  .hword 0x0251,0x0268,0x0278,0x0281,0x0291,0x02a1,0x02b1,0x02c1
56515  .hword 0x0003,0x02d8,0x02e8,0x02f8,0x0307,0x0311,0x0327,0x0331
56516  .hword 0x0348,0x0358,0x0361,0x0371,0x0006,0x0388,0x0398,0x03a8
56517  .hword 0x03b7,0x03c1,0x03d7,0x03e1,0x03f8,0x0408,0x0411,0x0421
56518  .hword 0x0006,0x0438,0x0448,0x0458,0x0467,0x0471,0x0487,0x0491
56519  .hword 0x04a8,0x04b8,0x04c1,0x04d1,0x0006,0x0c88,0x0008,0x0c98
56520  .hword 0x0ca7,0x0cb1,0x0cc7,0x0cd1,0x0ce8,0x0cf8,0x0d01,0x0d11
56521  .hword 0x0002,0x0d21,0x0003,0x0d38,0x0008,0x0d48,0x0d58,0x0d68
56522  .hword 0x0d78,0x0d88,0x0d91,0x0da1,0x0002,0x0db1,0x0003,0x0dc8
56523  .hword 0x0008,0x0dd8,0x0de8,0x0df8,0x0e08,0x0e18,0x0e21,0x0e31
56524  .hword 0x0000,0x0046,0x01f8,0x0208,0x0218,0x0227,0x0231,0x0247
56525  .hword 0x0251,0x0268,0x0278,0x0281,0x0291,0x02a1,0x02b1,0x02c1
56526  .hword 0x0003,0x02d8,0x02e8,0x02f8,0x0307,0x0311,0x0327,0x0331
56527  .hword 0x0348,0x0358,0x0361,0x0371,0x0006,0x0388,0x0398,0x03a8
56528  .hword 0x03b7,0x03c1,0x03d7,0x03e1,0x03f8,0x0408,0x0411,0x0421
56529  .hword 0x0006,0x0438,0x0448,0x0458,0x0467,0x0471,0x0487,0x0491
56530  .hword 0x04a8,0x04b8,0x04c1,0x04d1,0x0006,0x0e48,0x0008,0x0e58
56531  .hword 0x0e67,0x0e71,0x0e87,0x0e91,0x0ea8,0x0eb8,0x0ec1,0x0ed1
56532  .hword 0x0006,0x0ee8,0x0008,0x0ef8,0x0f08,0x0f18,0x0f28,0x0f38
56533  .hword 0x0f41,0x0f51,0x0006,0x0f68,0x0008,0x0f78,0x0f88,0x0f98
56534  .hword 0x0fa8,0x0fb8,0x0fc1,0x0fd1,0x0000,0x0046,0x01f8,0x0208
56535  .hword 0x0218,0x0227,0x0231,0x0247,0x0251,0x0268,0x0278,0x0281
56536  .hword 0x0291,0x02a1,0x02b1,0x02c1,0x0003,0x02d8,0x02e8,0x02f8
56537  .hword 0x0307,0x0311,0x0327,0x0331,0x0348,0x0358,0x0361,0x0371
56538  .hword 0x0006,0x0388,0x0398,0x03a8,0x03b7,0x03c1,0x03d7,0x03e1
56539  .hword 0x03f8,0x0408,0x0411,0x0421,0x0006,0x0438,0x0448,0x0458
56540  .hword 0x0467,0x0471,0x0487,0x0491,0x04a8,0x04b8,0x04c1,0x04d1
56541  .hword 0x0000,0x0106,0x01f8,0x0208,0x0218,0x0227,0x0231,0x0247
56542  .hword 0x0251,0x0268,0x0278,0x0281,0x0291,0x02a1,0x02b1,0x02c1
56543  .hword 0x0003,0x02d8,0x02e8,0x02f8,0x0307,0x0311,0x0327,0x0331
56544  .hword 0x0348,0x0358,0x0361,0x0371,0x0006,0x0388,0x0398,0x03a8
56545  .hword 0x03b7,0x03c1,0x03d7,0x03e1,0x03f8,0x0408,0x0411,0x0421
56546  .hword 0x0006,0x0438,0x0448,0x0458,0x0467,0x0471,0x0487,0x0491
56547  .hword 0x04a8,0x04b8,0x04c1,0x04d1,0x0006,0x0fe8,0x0008,0x0ff8
56548  .hword 0x1007,0x1011,0x1027,0x1031,0x1048,0x1058,0x1061,0x1071
56549  .hword 0x1081,0x1091,0x10a1,0x0000,0x0043,0x10b8,0x0008,0x10c8
56550  .hword 0x10d7,0x10e1,0x10f7,0x1101,0x1118,0x1128,0x1131,0x1141
56551  .hword 0x1151,0x1161,0x1171,0x0003,0x1188,0x0008,0x1198,0x11a7
56552  .hword 0x11b1,0x11c7,0x11d1,0x11e8,0x11f8,0x1201,0x1211,0x1221
56553  .hword 0x1231,0x1241,0x0003,0x1258,0x0008,0x1268,0x1277,0x1281
56554  .hword 0x1297,0x12a1,0x12b8,0x12c8,0x12d1,0x12e1,0x12f1,0x1301
56555  .hword 0x1311,0x0003,0x1328,0x0008,0x1338,0x1347,0x1351,0x1367
56556  .hword 0x1371,0x1388,0x1398,0x13a1,0x13b1,0x13c1,0x13d1,0x13e1
56557  .hword 0x0003,0x13f8,0x0008,0x1408,0x1417,0x1421,0x1437,0x1441
56558  .hword 0x1458,0x1468,0x1471,0x1481,0x1491,0x14a1,0x14b1,0x0003
56559  .hword 0x14c8,0x0008,0x14d8,0x14e7,0x14f1,0x1507,0x1511,0x1528
56560  .hword 0x1538,0x1541,0x1551,0x1561,0x1571,0x1581,0x0003,0x0fe8
56561  .hword 0x0008,0x0ff8,0x1007,0x1011,0x1027,0x1031,0x1048,0x1058
56562  .hword 0x1061,0x1071,0x1081,0x1091,0x10a1,0x0000,0x0043,0x10b8
56563  .hword 0x0008,0x10c8,0x10d7,0x10e1,0x10f7,0x1101,0x1118,0x1128
56564  .hword 0x1131,0x1141,0x1151,0x1161,0x1171,0x0003,0x1188,0x0008
56565  .hword 0x1198,0x11a7,0x11b1,0x11c7,0x11d1,0x11e8,0x11f8,0x1201
56566  .hword 0x1211,0x1221,0x1231,0x1241,0x0003,0x1258,0x0008,0x1268
56567  .hword 0x1277,0x1281,0x1297,0x12a1,0x12b8,0x12c8,0x12d1,0x12e1
56568  .hword 0x12f1,0x1301,0x1311,0x0003,0x1328,0x0008,0x1338,0x1347
56569  .hword 0x1351,0x1367,0x1371,0x1388,0x1398,0x13a1,0x13b1,0x13c1
56570  .hword 0x13d1,0x13e1,0x0003,0x13f8,0x0008,0x1408,0x1417,0x1421
56571  .hword 0x1437,0x1441,0x1458,0x1468,0x1471,0x1481,0x1491,0x14a1
56572  .hword 0x14b1,0x0003,0x1598,0x0008,0x15a8,0x15b7,0x15c1,0x15d7
56573  .hword 0x15e1,0x15f8,0x1608,0x1611,0x1621,0x1631,0x1641,0x1651
56574  .hword 0x0003,0x0fe8,0x0008,0x0ff8,0x1007,0x1011,0x1027,0x1031
56575  .hword 0x1048,0x1058,0x1061,0x1071,0x1081,0x1091,0x10a1,0x0000
56576  .hword 0x0043,0x10b8,0x0008,0x10c8,0x10d7,0x10e1,0x10f7,0x1101
56577  .hword 0x1118,0x1128,0x1131,0x1141,0x1151,0x1161,0x1171,0x0003
56578  .hword 0x1188,0x0008,0x1198,0x11a7,0x11b1,0x11c7,0x11d1,0x11e8
56579  .hword 0x11f8,0x1201,0x1211,0x1221,0x1231,0x1241,0x0003,0x1258
56580  .hword 0x0008,0x1268,0x1277,0x1281,0x1297,0x12a1,0x12b8,0x12c8
56581  .hword 0x12d1,0x12e1,0x12f1,0x1301,0x1311,0x0003,0x1328,0x0008
56582  .hword 0x1338,0x1347,0x1351,0x1367,0x1371,0x1388,0x1398,0x13a1
56583  .hword 0x13b1,0x13c1,0x13d1,0x13e1,0x0003,0x13f8,0x0008,0x1408
56584  .hword 0x1417,0x1421,0x1437,0x1441,0x1458,0x1468,0x1471,0x1481
56585  .hword 0x1491,0x14a1,0x14b1,0x0000,0x0043,0x0fe8,0x0008,0x0ff8
56586  .hword 0x1007,0x1011,0x1027,0x1031,0x1048,0x1058,0x1061,0x1071
56587  .hword 0x1081,0x1091,0x10a1,0x0000,0x0043,0x10b8,0x0008,0x10c8
56588  .hword 0x10d7,0x10e1,0x10f7,0x1101,0x1118,0x1128,0x1131,0x1141
56589  .hword 0x1151,0x1161,0x1171,0x0003,0x1188,0x0008,0x1198,0x11a7
56590  .hword 0x11b1,0x11c7,0x11d1,0x11e8,0x11f8,0x1201,0x1211,0x1221
56591  .hword 0x1231,0x1241,0x0003,0x1258,0x0008,0x1268,0x1277,0x1281
56592  .hword 0x1297,0x12a1,0x12b8,0x12c8,0x12d1,0x12e1,0x12f1,0x1301
56593  .hword 0x1311,0x0003,0x1328,0x0008,0x1338,0x1347,0x1351,0x1367
56594  .hword 0x1371,0x1388,0x1398,0x13a1,0x13b1,0x13c1,0x13d1,0x13e1
56595  .hword 0x0003,0x13f8,0x0008,0x1408,0x1417,0x1421,0x1437,0x1441
56596  .hword 0x1458,0x1468,0x1471,0x1481,0x1491,0x14a1,0x14b1,0x0000
56597  .hword 0x0043,0x0fe8,0x0008,0x0ff8,0x1007,0x1011,0x1027,0x1031
56598  .hword 0x1048,0x1058,0x1061,0x1071,0x1081,0x1091,0x10a1,0x0000
56599  .hword 0x0043,0x10b8,0x0008,0x10c8,0x10d7,0x10e1,0x10f7,0x1101
56600  .hword 0x1118,0x1128,0x1131,0x1141,0x1151,0x1161,0x1171,0x0003
56601  .hword 0x1188,0x0008,0x1198,0x11a7,0x11b1,0x11c7,0x11d1,0x11e8
56602  .hword 0x11f8,0x1201,0x1211,0x1221,0x1231,0x1241,0x0003,0x1258
56603  .hword 0x0008,0x1268,0x1277,0x1281,0x1297,0x12a1,0x12b8,0x12c8
56604  .hword 0x12d1,0x12e1,0x12f1,0x1301,0x1311,0x0003,0x1328,0x0008
56605  .hword 0x1338,0x1347,0x1351,0x1367,0x1371,0x1388,0x1398,0x13a1
56606  .hword 0x13b1,0x13c1,0x13d1,0x13e1,0x0003,0x13f8,0x0008,0x1408
56607  .hword 0x1417,0x1421,0x1437,0x1441,0x1458,0x1468,0x1471,0x1481
56608  .hword 0x1491,0x14a1,0x14b1,0x0000,0x0043,0x0fe8,0x0008,0x0ff8
56609  .hword 0x1007,0x1011,0x1027,0x1031,0x1048,0x1058,0x1061,0x1071
56610  .hword 0x1081,0x1091,0x10a1,0x0000,0x0043,0x10b8,0x0008,0x10c8
56611  .hword 0x10d7,0x10e1,0x10f7,0x1101,0x1118,0x1128,0x1131,0x1141
56612  .hword 0x1151,0x1161,0x1171,0x0003,0x1188,0x0008,0x1198,0x11a7
56613  .hword 0x11b1,0x11c7,0x11d1,0x11e8,0x11f8,0x1201,0x1211,0x1221
56614  .hword 0x1231,0x1241,0x0003,0x1258,0x0008,0x1268,0x1277,0x1281
56615  .hword 0x1297,0x12a1,0x12b8,0x12c8,0x12d1,0x12e1,0x12f1,0x1301
56616  .hword 0x1311,0x0003,0x1328,0x0008,0x1338,0x1347,0x1351,0x1367
56617  .hword 0x1371,0x1388,0x1398,0x13a1,0x13b1,0x13c1,0x13d1,0x13e1
56618  .hword 0x0003,0x13f8,0x0008,0x1408,0x1417,0x1421,0x1437,0x1441
56619  .hword 0x1458,0x1468,0x1471,0x1481,0x1491,0x14a1,0x14b1,0x0000
56620  .hword 0x0043,0x0fe8,0x0008,0x0ff8,0x1007,0x1011,0x1027,0x1031
56621  .hword 0x1048,0x1058,0x1061,0x1071,0x1081,0x1091,0x10a1,0x0000
56622  .hword 0x0043,0x10b8,0x0008,0x10c8,0x10d7,0x10e1,0x10f7,0x1101
56623  .hword 0x1118,0x1128,0x1131,0x1141,0x1151,0x1161,0x1171,0x0003
56624  .hword 0x1188,0x0008,0x1198,0x11a7,0x11b1,0x11c7,0x11d1,0x11e8
56625  .hword 0x11f8,0x1201,0x1211,0x1221,0x1231,0x1241,0x0003,0x1258
56626  .hword 0x0008,0x1268,0x1277,0x1281,0x1297,0x12a1,0x12b8,0x12c8
56627  .hword 0x12d1,0x12e1,0x12f1,0x1301,0x1311,0x0003,0x1328,0x0008
56628  .hword 0x1338,0x1347,0x1351,0x1367,0x1371,0x1388,0x1398,0x13a1
56629  .hword 0x13b1,0x13c1,0x13d1,0x13e1,0x0003,0x13f8,0x0008,0x1408
56630  .hword 0x1417,0x1421,0x1437,0x1441,0x1458,0x1468,0x1471,0x1481
56631  .hword 0x1491,0x14a1,0x14b1,0x0000,0x0043,0x0fe8,0x0008,0x0ff8
56632  .hword 0x1007,0x1011,0x1027,0x1031,0x1048,0x1058,0x1061,0x1071
56633  .hword 0x1081,0x1091,0x10a1,0x0000,0x0043,0x10b8,0x0008,0x10c8
56634  .hword 0x10d7,0x10e1,0x10f7,0x1101,0x1118,0x1128,0x1131,0x1141
56635  .hword 0x1151,0x1161,0x1171,0x0003,0x1668,0x0008,0x1678,0x1687
56636  .hword 0x1691,0x16a7,0x16b1,0x16c8,0x16d8,0x16e1,0x16f1,0x1701
56637  .hword 0x1711,0x1721,0x0003,0x1738,0x0008,0x1748,0x1757,0x1761
56638  .hword 0x1777,0x1781,0x1798,0x17a8,0x17b1,0x17c1,0x17d1,0x17e1
56639  .hword 0x17f1,0x0003,0x1328,0x0008,0x1338,0x1347,0x1351,0x1367
56640  .hword 0x1371,0x1388,0x1398,0x13a1,0x13b1,0x13c1,0x13d1,0x13e1
56641  .hword 0x0003,0x13f8,0x0008,0x1408,0x1417,0x1421,0x1437,0x1441
56642  .hword 0x1458,0x1468,0x1471,0x1481,0x1491,0x14a1,0x14b1,0x0000
56643  .hword 0x0043,0x180f,0x1818,0x1828,0x1838,0x1848,0x1858,0x1861
56644  .hword 0x1871,0x1881,0x1891,0x18a1,0x0003,0x18bf,0x18c8,0x18d8
56645  .hword 0x18e8,0x18f8,0x1908,0x1911,0x1921,0x1931,0x1941,0x1951
56646  .hword 0x0003,0x196f,0x1978,0x1988,0x1998,0x19a8,0x19b8,0x19c1
56647  .hword 0x19d1,0x19e1,0x19f1,0x1a01,0x0003,0x1a1f,0x1a28,0x1a38
56648  .hword 0x1a48,0x1a58,0x1a68,0x1a71,0x1a81,0x1a91,0x1aa1,0x1ab1
56649  .hword 0x0003,0x1acf,0x1ad8,0x1ae8,0x1af8,0x1b08,0x1b18,0x1b21
56650  .hword 0x1b31,0x1b41,0x1b51,0x1b61,0x0003,0x1b7f,0x1b88,0x1b98
56651  .hword 0x1ba8,0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1,0x1c01,0x1c11
56652  .hword 0x0003,0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68,0x1c78,0x1c81
56653  .hword 0x1c91,0x1ca1,0x1cb1,0x1cc1,0x0003,0x1cdf,0x1ce8,0x1cf8
56654  .hword 0x1d08,0x1d18,0x1d28,0x1d31,0x1d41,0x1d51,0x1d61,0x1d71
56655  .hword 0x0003,0x180f,0x1818,0x1828,0x1838,0x1848,0x1858,0x1861
56656  .hword 0x1871,0x1881,0x1891,0x18a1,0x0003,0x18bf,0x18c8,0x18d8
56657  .hword 0x18e8,0x18f8,0x1908,0x1911,0x1921,0x1931,0x1941,0x1951
56658  .hword 0x0003,0x196f,0x1978,0x1988,0x1998,0x19a8,0x19b8,0x19c1
56659  .hword 0x19d1,0x19e1,0x19f1,0x1a01,0x0003,0x1a1f,0x1a28,0x1a38
56660  .hword 0x1a48,0x1a58,0x1a68,0x1a71,0x1a81,0x1a91,0x1aa1,0x1ab1
56661  .hword 0x0003,0x1acf,0x1ad8,0x1ae8,0x1af8,0x1b08,0x1b18,0x1b21
56662  .hword 0x1b31,0x1b41,0x1b51,0x1b61,0x0003,0x1b7f,0x1b88,0x1b98
56663  .hword 0x1ba8,0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1,0x1c01,0x1c11
56664  .hword 0x0003,0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68,0x1c78,0x1c81
56665  .hword 0x1c91,0x1ca1,0x1cb1,0x1cc1,0x0003,0x1d8f,0x1d98,0x1da8
56666  .hword 0x1db8,0x1dc8,0x1dd8,0x1de1,0x1df1,0x1e01,0x1e11,0x1e21
56667  .hword 0x0003,0x180f,0x1818,0x1828,0x1838,0x1848,0x1858,0x1861
56668  .hword 0x1871,0x1881,0x1891,0x18a1,0x0003,0x18bf,0x18c8,0x18d8
56669  .hword 0x18e8,0x18f8,0x1908,0x1911,0x1921,0x1931,0x1941,0x1951
56670  .hword 0x0003,0x196f,0x1978,0x1988,0x1998,0x19a8,0x19b8,0x19c1
56671  .hword 0x19d1,0x19e1,0x19f1,0x1a01,0x0003,0x1a1f,0x1a28,0x1a38
56672  .hword 0x1a48,0x1a58,0x1a68,0x1a71,0x1a81,0x1a91,0x1aa1,0x1ab1
56673  .hword 0x0003,0x1acf,0x1ad8,0x1ae8,0x1af8,0x1b08,0x1b18,0x1b21
56674  .hword 0x1b31,0x1b41,0x1b51,0x1b61,0x0003,0x1b7f,0x1b88,0x1b98
56675  .hword 0x1ba8,0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1,0x1c01,0x1c11
56676  .hword 0x0003,0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68,0x1c78,0x1c81
56677  .hword 0x1c91,0x1ca1,0x1cb1,0x1cc1,0x0000,0x0043,0x180f,0x1818
56678  .hword 0x1828,0x1838,0x1848,0x1858,0x1861,0x1871,0x1881,0x1891
56679  .hword 0x18a1,0x0003,0x18bf,0x18c8,0x18d8,0x18e8,0x18f8,0x1908
56680  .hword 0x1911,0x1921,0x1931,0x1941,0x1951,0x0003,0x196f,0x1978
56681  .hword 0x1988,0x1998,0x19a8,0x19b8,0x19c1,0x19d1,0x19e1,0x19f1
56682  .hword 0x1a01,0x0003,0x1a1f,0x1a28,0x1a38,0x1a48,0x1a58,0x1a68
56683  .hword 0x1a71,0x1a81,0x1a91,0x1aa1,0x1ab1,0x0003,0x1acf,0x1ad8
56684  .hword 0x1ae8,0x1af8,0x1b08,0x1b18,0x1b21,0x1b31,0x1b41,0x1b51
56685  .hword 0x1b61,0x0003,0x1b7f,0x1b88,0x1b98,0x1ba8,0x1bb8,0x1bc8
56686  .hword 0x1bd1,0x1be1,0x1bf1,0x1c01,0x1c11,0x0003,0x1c2f,0x1c38
56687  .hword 0x1c48,0x1c58,0x1c68,0x1c78,0x1c81,0x1c91,0x1ca1,0x1cb1
56688  .hword 0x1cc1,0x0000,0x0043,0x180f,0x1818,0x1828,0x1838,0x1848
56689  .hword 0x1858,0x1861,0x1871,0x1881,0x1891,0x18a1,0x0003,0x18bf
56690  .hword 0x18c8,0x18d8,0x18e8,0x18f8,0x1908,0x1911,0x1921,0x1931
56691  .hword 0x1941,0x1951,0x0003,0x196f,0x1978,0x1988,0x1998,0x19a8
56692  .hword 0x19b8,0x19c1,0x19d1,0x19e1,0x19f1,0x1a01,0x0003,0x1a1f
56693  .hword 0x1a28,0x1a38,0x1a48,0x1a58,0x1a68,0x1a71,0x1a81,0x1a91
56694  .hword 0x1aa1,0x1ab1,0x0003,0x1acf,0x1ad8,0x1ae8,0x1af8,0x1b08
56695  .hword 0x1b18,0x1b21,0x1b31,0x1b41,0x1b51,0x1b61,0x0003,0x1b7f
56696  .hword 0x1b88,0x1b98,0x1ba8,0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1
56697  .hword 0x1c01,0x1c11,0x0003,0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68
56698  .hword 0x1c78,0x1c81,0x1c91,0x1ca1,0x1cb1,0x1cc1,0x0000,0x0043
56699  .hword 0x180f,0x1818,0x1828,0x1838,0x1848,0x1858,0x1861,0x1871
56700  .hword 0x1881,0x1891,0x18a1,0x0003,0x18bf,0x18c8,0x18d8,0x18e8
56701  .hword 0x18f8,0x1908,0x1911,0x1921,0x1931,0x1941,0x1951,0x0003
56702  .hword 0x196f,0x1978,0x1988,0x1998,0x19a8,0x19b8,0x19c1,0x19d1
56703  .hword 0x19e1,0x19f1,0x1a01,0x0003,0x1a1f,0x1a28,0x1a38,0x1a48
56704  .hword 0x1a58,0x1a68,0x1a71,0x1a81,0x1a91,0x1aa1,0x1ab1,0x0003
56705  .hword 0x1acf,0x1ad8,0x1ae8,0x1af8,0x1b08,0x1b18,0x1b21,0x1b31
56706  .hword 0x1b41,0x1b51,0x1b61,0x0003,0x1b7f,0x1b88,0x1b98,0x1ba8
56707  .hword 0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1,0x1c01,0x1c11,0x0003
56708  .hword 0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68,0x1c78,0x1c81,0x1c91
56709  .hword 0x1ca1,0x1cb1,0x1cc1,0x0000,0x0043,0x180f,0x1818,0x1828
56710  .hword 0x1838,0x1848,0x1858,0x1861,0x1871,0x1881,0x1891,0x18a1
56711  .hword 0x0003,0x18bf,0x18c8,0x18d8,0x18e8,0x18f8,0x1908,0x1911
56712  .hword 0x1921,0x1931,0x1941,0x1951,0x0003,0x196f,0x1978,0x1988
56713  .hword 0x1998,0x19a8,0x19b8,0x19c1,0x19d1,0x19e1,0x19f1,0x1a01
56714  .hword 0x0003,0x1a1f,0x1a28,0x1a38,0x1a48,0x1a58,0x1a68,0x1a71
56715  .hword 0x1a81,0x1a91,0x1aa1,0x1ab1,0x0003,0x1acf,0x1ad8,0x1ae8
56716  .hword 0x1af8,0x1b08,0x1b18,0x1b21,0x1b31,0x1b41,0x1b51,0x1b61
56717  .hword 0x0003,0x1b7f,0x1b88,0x1b98,0x1ba8,0x1bb8,0x1bc8,0x1bd1
56718  .hword 0x1be1,0x1bf1,0x1c01,0x1c11,0x0003,0x1c2f,0x1c38,0x1c48
56719  .hword 0x1c58,0x1c68,0x1c78,0x1c81,0x1c91,0x1ca1,0x1cb1,0x1cc1
56720  .hword 0x0000,0x0043,0x180f,0x1818,0x1828,0x1838,0x1848,0x1858
56721  .hword 0x1861,0x1871,0x1881,0x1891,0x18a1,0x0003,0x18bf,0x18c8
56722  .hword 0x18d8,0x18e8,0x18f8,0x1908,0x1911,0x1921,0x1931,0x1941
56723  .hword 0x1951,0x0003,0x196f,0x1978,0x1988,0x1998,0x19a8,0x19b8
56724  .hword 0x19c1,0x19d1,0x19e1,0x19f1,0x1a01,0x0003,0x1e3f,0x1e48
56725  .hword 0x1e58,0x1e68,0x1e78,0x1e88,0x1e91,0x1ea1,0x1eb1,0x1ec1
56726  .hword 0x1ed1,0x0003,0x1eef,0x1ef8,0x1f08,0x1f18,0x1f28,0x1f38
56727  .hword 0x1f41,0x1f51,0x1f61,0x1f71,0x1f81,0x0003,0x1b7f,0x1b88
56728  .hword 0x1b98,0x1ba8,0x1bb8,0x1bc8,0x1bd1,0x1be1,0x1bf1,0x1c01
56729  .hword 0x1c11,0x0003,0x1c2f,0x1c38,0x1c48,0x1c58,0x1c68,0x1c78
56730  .hword 0x1c81,0x1c91,0x1ca1,0x1cb1,0x1cc1,0x0000,0x0043,0x1f9f
56731  .hword 0x1fa8,0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1,0x2001,0x2011
56732  .hword 0x2021,0x2031,0x0003,0x204f,0x2058,0x2068,0x2078,0x2088
56733  .hword 0x2098,0x20a1,0x20b1,0x20c1,0x20d1,0x20e1,0x0003,0x20ff
56734  .hword 0x2108,0x2118,0x2128,0x2138,0x2148,0x2151,0x2161,0x2171
56735  .hword 0x2181,0x2191,0x0003,0x21af,0x21b8,0x21c8,0x21d8,0x21e8
56736  .hword 0x21f8,0x2201,0x2211,0x2221,0x2231,0x2241,0x0003,0x225f
56737  .hword 0x2268,0x2278,0x2288,0x2298,0x22a8,0x22b1,0x22c1,0x22d1
56738  .hword 0x22e1,0x22f1,0x0003,0x230f,0x2318,0x2328,0x2338,0x2348
56739  .hword 0x2358,0x2361,0x2371,0x2381,0x2391,0x23a1,0x0003,0x23bf
56740  .hword 0x23c8,0x23d8,0x23e8,0x23f8,0x2408,0x2411,0x2421,0x2431
56741  .hword 0x2441,0x2451,0x0003,0x246f,0x2478,0x2488,0x2498,0x24a8
56742  .hword 0x24b8,0x24c1,0x24d1,0x24e1,0x24f1,0x2501,0x0003,0x1f9f
56743  .hword 0x1fa8,0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1,0x2001,0x2011
56744  .hword 0x2021,0x2031,0x0003,0x204f,0x2058,0x2068,0x2078,0x2088
56745  .hword 0x2098,0x20a1,0x20b1,0x20c1,0x20d1,0x20e1,0x0003,0x20ff
56746  .hword 0x2108,0x2118,0x2128,0x2138,0x2148,0x2151,0x2161,0x2171
56747  .hword 0x2181,0x2191,0x0003,0x21af,0x21b8,0x21c8,0x21d8,0x21e8
56748  .hword 0x21f8,0x2201,0x2211,0x2221,0x2231,0x2241,0x0003,0x225f
56749  .hword 0x2268,0x2278,0x2288,0x2298,0x22a8,0x22b1,0x22c1,0x22d1
56750  .hword 0x22e1,0x22f1,0x0003,0x230f,0x2318,0x2328,0x2338,0x2348
56751  .hword 0x2358,0x2361,0x2371,0x2381,0x2391,0x23a1,0x0003,0x23bf
56752  .hword 0x23c8,0x23d8,0x23e8,0x23f8,0x2408,0x2411,0x2421,0x2431
56753  .hword 0x2441,0x2451,0x0003,0x251f,0x2528,0x2538,0x2548,0x2558
56754  .hword 0x2568,0x2571,0x2581,0x2591,0x25a1,0x25b1,0x0003,0x1f9f
56755  .hword 0x1fa8,0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1,0x2001,0x2011
56756  .hword 0x2021,0x2031,0x0003,0x204f,0x2058,0x2068,0x2078,0x2088
56757  .hword 0x2098,0x20a1,0x20b1,0x20c1,0x20d1,0x20e1,0x0003,0x20ff
56758  .hword 0x2108,0x2118,0x2128,0x2138,0x2148,0x2151,0x2161,0x2171
56759  .hword 0x2181,0x2191,0x0003,0x21af,0x21b8,0x21c8,0x21d8,0x21e8
56760  .hword 0x21f8,0x2201,0x2211,0x2221,0x2231,0x2241,0x0003,0x225f
56761  .hword 0x2268,0x2278,0x2288,0x2298,0x22a8,0x22b1,0x22c1,0x22d1
56762  .hword 0x22e1,0x22f1,0x0003,0x230f,0x2318,0x2328,0x2338,0x2348
56763  .hword 0x2358,0x2361,0x2371,0x2381,0x2391,0x23a1,0x0003,0x23bf
56764  .hword 0x23c8,0x23d8,0x23e8,0x23f8,0x2408,0x2411,0x2421,0x2431
56765  .hword 0x2441,0x2451,0x0000,0x0043,0x1f9f,0x1fa8,0x1fb8,0x1fc8
56766  .hword 0x1fd8,0x1fe8,0x1ff1,0x2001,0x2011,0x2021,0x2031,0x0003
56767  .hword 0x204f,0x2058,0x2068,0x2078,0x2088,0x2098,0x20a1,0x20b1
56768  .hword 0x20c1,0x20d1,0x20e1,0x0003,0x20ff,0x2108,0x2118,0x2128
56769  .hword 0x2138,0x2148,0x2151,0x2161,0x2171,0x2181,0x2191,0x0003
56770  .hword 0x21af,0x21b8,0x21c8,0x21d8,0x21e8,0x21f8,0x2201,0x2211
56771  .hword 0x2221,0x2231,0x2241,0x0003,0x225f,0x2268,0x2278,0x2288
56772  .hword 0x2298,0x22a8,0x22b1,0x22c1,0x22d1,0x22e1,0x22f1,0x0003
56773  .hword 0x230f,0x2318,0x2328,0x2338,0x2348,0x2358,0x2361,0x2371
56774  .hword 0x2381,0x2391,0x23a1,0x0003,0x23bf,0x23c8,0x23d8,0x23e8
56775  .hword 0x23f8,0x2408,0x2411,0x2421,0x2431,0x2441,0x2451,0x0000
56776  .hword 0x0043,0x1f9f,0x1fa8,0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1
56777  .hword 0x2001,0x2011,0x2021,0x2031,0x0003,0x204f,0x2058,0x2068
56778  .hword 0x2078,0x2088,0x2098,0x20a1,0x20b1,0x20c1,0x20d1,0x20e1
56779  .hword 0x0003,0x20ff,0x2108,0x2118,0x2128,0x2138,0x2148,0x2151
56780  .hword 0x2161,0x2171,0x2181,0x2191,0x0003,0x21af,0x21b8,0x21c8
56781  .hword 0x21d8,0x21e8,0x21f8,0x2201,0x2211,0x2221,0x2231,0x2241
56782  .hword 0x0003,0x225f,0x2268,0x2278,0x2288,0x2298,0x22a8,0x22b1
56783  .hword 0x22c1,0x22d1,0x22e1,0x22f1,0x0003,0x230f,0x2318,0x2328
56784  .hword 0x2338,0x2348,0x2358,0x2361,0x2371,0x2381,0x2391,0x23a1
56785  .hword 0x0003,0x23bf,0x23c8,0x23d8,0x23e8,0x23f8,0x2408,0x2411
56786  .hword 0x2421,0x2431,0x2441,0x2451,0x0000,0x0043,0x1f9f,0x1fa8
56787  .hword 0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1,0x2001,0x2011,0x2021
56788  .hword 0x2031,0x0003,0x204f,0x2058,0x2068,0x2078,0x2088,0x2098
56789  .hword 0x20a1,0x20b1,0x20c1,0x20d1,0x20e1,0x0003,0x20ff,0x2108
56790  .hword 0x2118,0x2128,0x2138,0x2148,0x2151,0x2161,0x2171,0x2181
56791  .hword 0x2191,0x0003,0x21af,0x21b8,0x21c8,0x21d8,0x21e8,0x21f8
56792  .hword 0x2201,0x2211,0x2221,0x2231,0x2241,0x0003,0x225f,0x2268
56793  .hword 0x2278,0x2288,0x2298,0x22a8,0x22b1,0x22c1,0x22d1,0x22e1
56794  .hword 0x22f1,0x0003,0x230f,0x2318,0x2328,0x2338,0x2348,0x2358
56795  .hword 0x2361,0x2371,0x2381,0x2391,0x23a1,0x0003,0x23bf,0x23c8
56796  .hword 0x23d8,0x23e8,0x23f8,0x2408,0x2411,0x2421,0x2431,0x2441
56797  .hword 0x2451,0x0000,0x0043,0x1f9f,0x1fa8,0x1fb8,0x1fc8,0x1fd8
56798  .hword 0x1fe8,0x1ff1,0x2001,0x2011,0x2021,0x2031,0x0003,0x204f
56799  .hword 0x2058,0x2068,0x2078,0x2088,0x2098,0x20a1,0x20b1,0x20c1
56800  .hword 0x20d1,0x20e1,0x0003,0x20ff,0x2108,0x2118,0x2128,0x2138
56801  .hword 0x2148,0x2151,0x2161,0x2171,0x2181,0x2191,0x0003,0x21af
56802  .hword 0x21b8,0x21c8,0x21d8,0x21e8,0x21f8,0x2201,0x2211,0x2221
56803  .hword 0x2231,0x2241,0x0003,0x225f,0x2268,0x2278,0x2288,0x2298
56804  .hword 0x22a8,0x22b1,0x22c1,0x22d1,0x22e1,0x22f1,0x0003,0x230f
56805  .hword 0x2318,0x2328,0x2338,0x2348,0x2358,0x2361,0x2371,0x2381
56806  .hword 0x2391,0x23a1,0x0003,0x23bf,0x23c8,0x23d8,0x23e8,0x23f8
56807  .hword 0x2408,0x2411,0x2421,0x2431,0x2441,0x2451,0x0000,0x0043
56808  .hword 0x1f9f,0x1fa8,0x1fb8,0x1fc8,0x1fd8,0x1fe8,0x1ff1,0x2001
56809  .hword 0x2011,0x2021,0x2031,0x0003,0x204f,0x2058,0x2068,0x2078
56810  .hword 0x2088,0x2098,0x20a1,0x20b1,0x20c1,0x20d1,0x20e1,0x0003
56811  .hword 0x20ff,0x2108,0x2118,0x2128,0x2138,0x2148,0x2151,0x2161
56812  .hword 0x2171,0x2181,0x2191,0x0003,0x25cf,0x25d8,0x25e8,0x25f8
56813  .hword 0x2608,0x2618,0x2621,0x2631,0x2641,0x2651,0x2661,0x0003
56814  .hword 0x267f,0x2688,0x2698,0x26a8,0x26b8,0x26c8,0x26d1,0x26e1
56815  .hword 0x26f1,0x2701,0x2711,0x0003,0x230f,0x2318,0x2328,0x2338
56816  .hword 0x2348,0x2358,0x2361,0x2371,0x2381,0x2391,0x23a1,0x0003
56817  .hword 0x23bf,0x23c8,0x23d8,0x23e8,0x23f8,0x2408,0x2411,0x2421
56818  .hword 0x2431,0x2441,0x2451,0x0000,0x0043,0x2728,0x0008,0x2738
56819  .hword 0x2747,0x2751,0x2767,0x2771,0x2788,0x2798,0x27a1,0x27b1
56820  .hword 0x0006,0x27c8,0x0008,0x27d8,0x27e8,0x27f8,0x2808,0x2818
56821  .hword 0x2821,0x2831,0x0006,0x2848,0x0008,0x2858,0x2868,0x2878
56822  .hword 0x2888,0x2898,0x28a1,0x28b1,0x0006,0x28c8,0x0008,0x28d8
56823  .hword 0x28e8,0x28f8,0x2908,0x2918,0x2921,0x2931,0x0000,0x0086
56824  .hword 0x2948,0x0008,0x2958,0x2968,0x2978,0x2988,0x2998,0x29a1
56825  .hword 0x29b1,0x29c1,0x29d1,0x29e1,0x0000,0x0013,0x29f8,0x000f
56826  .hword 0x2a08,0x2a18,0x2a21,0x2a31,0x2a41,0x2a51,0x0004,0x2a68
56827  .hword 0x0008,0x2a78,0x2a87,0x2a91,0x2aa7,0x2ab1,0x2ac8,0x2ad8
56828  .hword 0x2ae1,0x2af1,0x0006,0x2b08,0x0008,0x2b18,0x2b28,0x2b38
56829  .hword 0x2b48,0x2b58,0x2b61,0x2b71,0x0006,0x2b88,0x0008,0x2b98
56830  .hword 0x2ba8,0x2bb8,0x2bc8,0x2bd8,0x2be1,0x2bf1,0x0000,0x00c6
56831  .hword 0x2948,0x0008,0x2958,0x2968,0x2978,0x2988,0x2998,0x29a1
56832  .hword 0x29b1,0x29c1,0x29d1,0x29e1,0x0000,0x0013,0x29f8,0x000f
56833  .hword 0x2a08,0x2a18,0x2a21,0x2a31,0x2a41,0x2a51,0x0004,0x2c08
56834  .hword 0x0008,0x2c18,0x2c27,0x2c31,0x2c47,0x2c51,0x2c68,0x2c78
56835  .hword 0x2c81,0x2c91,0x0006,0x2ca8,0x0008,0x2cb8,0x2cc8,0x2cd8
56836  .hword 0x2ce8,0x2cf8,0x2d01,0x2d11,0x0006,0x2d28,0x0008,0x2d38
56837  .hword 0x2d48,0x2d58,0x2d68,0x2d78,0x2d81,0x2d91,0x0006,0x2da8
56838  .hword 0x0008,0x2db8,0x2dc8,0x2dd8,0x2de8,0x2df8,0x2e01,0x2e11
56839  .hword 0x2e21,0x2e31,0x2e41,0x0000,0x0083,0x2948,0x0008,0x2958
56840  .hword 0x2968,0x2978,0x2988,0x2998,0x29a1,0x29b1,0x29c1,0x29d1
56841  .hword 0x29e1,0x0000,0x0013,0x29f8,0x000f,0x2a08,0x2a18,0x2a21
56842  .hword 0x2a31,0x2a41,0x2a51,0x0004,0x2e58,0x0008,0x2e68,0x2e77
56843  .hword 0x2e81,0x2e97,0x2ea1,0x2eb8,0x2ec8,0x2ed1,0x2ee1,0x0006
56844  .hword 0x2ef8,0x0008,0x2f08,0x2f18,0x2f28,0x2f38,0x2f48,0x2f51
56845  .hword 0x2f61,0x0006,0x2f78,0x0008,0x2f88,0x2f98,0x2fa8,0x2fb8
56846  .hword 0x2fc8,0x2fd1,0x2fe1,0x0006,0x2ff8,0x0008,0x3008,0x3018
56847  .hword 0x3028,0x3038,0x3048,0x3051,0x3061,0x3071,0x3081,0x3091
56848  .hword 0x0000,0x0083,0x2948,0x0008,0x2958,0x2968,0x2978,0x2988
56849  .hword 0x2998,0x29a1,0x29b1,0x29c1,0x29d1,0x29e1,0x0000,0x0013
56850  .hword 0x29f8,0x000f,0x2a08,0x2a18,0x2a21,0x2a31,0x2a41,0x2a51
56851  .hword 0x0004,0x30a8,0x0008,0x30b8,0x30c7,0x30d1,0x30e7,0x30f1
56852  .hword 0x3108,0x3118,0x3121,0x3131,0x0006,0x3148,0x0008,0x3158
56853  .hword 0x000f,0x3168,0x3178,0x3181,0x3191,0x31a1,0x31b1,0x0004
56854  .hword 0x31c8,0x0008,0x31d8,0x0008,0x31e8,0x31f8,0x3208,0x3211
56855  .hword 0x3221,0x0006,0x3238,0x0008,0x3248,0x0008,0x3258,0x3268
56856  .hword 0x3278,0x3281,0x3291,0x0000,0x0086,0x2948,0x0008,0x2958
56857  .hword 0x2968,0x2978,0x2988,0x2998,0x29a1,0x29b1,0x29c1,0x29d1
56858  .hword 0x29e1,0x0000,0x0013,0x29f8,0x000f,0x2a08,0x2a18,0x2a21
56859  .hword 0x2a31,0x2a41,0x2a51,0x0004,0x32a8,0x0008,0x32b8,0x32c7
56860  .hword 0x32d1,0x32e7,0x32f1,0x3308,0x3318,0x3321,0x3331,0x0006
56861  .hword 0x3348,0x0008,0x3358,0x3368,0x3378,0x3388,0x3398,0x33a1
56862  .hword 0x33b1,0x0006,0x33c8,0x0008,0x33d8,0x33e8,0x33f8,0x3408
56863  .hword 0x3418,0x3421,0x3431,0x0006,0x3448,0x0008,0x3458,0x3467
56864  .hword 0x3471,0x3487,0x3491,0x34a8,0x34b8,0x34c1,0x34d1,0x0000
56865  .hword 0x0086,0x2948,0x0008,0x2958,0x2968,0x2978,0x2988,0x2998
56866  .hword 0x29a1,0x29b1,0x29c1,0x29d1,0x29e1,0x0000,0x0013,0x29f8
56867  .hword 0x000f,0x2a08,0x2a18,0x2a21,0x2a31,0x2a41,0x2a51,0x0000
56868  .hword 0x0094,0x34e8,0x34f8,0x0008,0x3508,0x3518,0x3521,0x3531
56869  .hword 0x3541,0x3551,0x0000,0x0014,0x3568,0x3578,0x0008,0x3588
56870  .hword 0x3598,0x35a1,0x35b1,0x35c1,0x35d1,0x0000,0x0084,0x2948
56871  .hword 0x0008,0x2958,0x2968,0x2978,0x2988,0x2998,0x29a1,0x29b1
56872  .hword 0x29c1,0x29d1,0x29e1,0x0000,0x0013,0x29f8,0x000f,0x2a08
56873  .hword 0x2a18,0x2a21,0x2a31,0x2a41,0x2a51,0x0000,0x0044,0x35ef
56874  .hword 0x35f7,0x3601,0x3618,0x3628,0x3638,0x3641,0x3651,0x3661
56875  .hword 0x3671,0x0001,0x3681,0x3691,0x36a1,0x0000,0x0018,0x36b8
56876  .hword 0x000f,0x36c8,0x36d8,0x36e1,0x36f1,0x3701,0x3711,0x0000
56877  .hword 0x0014,0x3728,0x000f,0x3738,0x3748,0x3751,0x3761,0x3771
56878  .hword 0x3781,0x0000,0x0084,0x2948,0x0008,0x2958,0x2968,0x2978
56879  .hword 0x2988,0x2998,0x29a1,0x29b1,0x29c1,0x29d1,0x29e1,0x0000
56880  .hword 0x0013,0x29f8,0x000f,0x2a08,0x2a18,0x2a21,0x2a31,0x2a41
56881  .hword 0x2a51,0x0004,0x3798,0x0008,0x37a8,0x37b7,0x37c1,0x37d7
56882  .hword 0x37e1,0x37f8,0x3808,0x3811,0x3821,0x0006,0x3838,0x3848
56883  .hword 0x3858,0x3868,0x3878,0x3888,0x3898,0x38a1,0x38b1,0x0006
56884  .hword 0x38c8,0x38d8,0x38e8,0x38f8,0x3908,0x3918,0x3928,0x3931
56885  .hword 0x3941,0x0006,0x3958,0x3968,0x3978,0x3987,0x3991,0x39a7
56886  .hword 0x39b1,0x39c8,0x39d8,0x39e1,0x39f1,0x0006,0x3a08,0x0008
56887  .hword 0x3a18,0x3a27,0x3a31,0x3a47,0x3a51,0x3a68,0x3a78,0x3a81
56888  .hword 0x3a91,0x0006,0x3aa8,0x3ab8,0x3ac8,0x3ad8,0x3ae8,0x3af8
56889  .hword 0x3b08,0x3b11,0x3b21,0x0006,0x3b38,0x3b48,0x3b58,0x3b68
56890  .hword 0x3b78,0x3b88,0x3b98,0x3ba1,0x3bb1,0x0006,0x3bc8,0x3bd8
56891  .hword 0x3be8,0x3bf7,0x3c01,0x3c17,0x3c21,0x3c38,0x3c48,0x3c51
56892  .hword 0x3c61,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
56893  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
56894  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
56895  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
56896  .hword 0x3e21,0x0006,0x3e38,0x3e48,0x3e58,0x3e67,0x3e71,0x3e87
56897  .hword 0x3e91,0x3ea8,0x3eb8,0x3ec1,0x3ed1,0x0006,0x3ee8,0x0008
56898  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
56899  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
56900  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
56901  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x40a8,0x40b8
56902  .hword 0x40c8,0x40d7,0x40e1,0x40f7,0x4101,0x4118,0x4128,0x4131
56903  .hword 0x4141,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
56904  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
56905  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
56906  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
56907  .hword 0x3e21,0x0006,0x4158,0x4168,0x4178,0x4187,0x4191,0x41a7
56908  .hword 0x41b1,0x41c8,0x41d8,0x41e1,0x41f1,0x0006,0x3ee8,0x0008
56909  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
56910  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
56911  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
56912  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x4208,0x4218
56913  .hword 0x4228,0x4237,0x4241,0x4257,0x4261,0x4278,0x4288,0x4291
56914  .hword 0x42a1,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
56915  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
56916  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
56917  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
56918  .hword 0x3e21,0x0006,0x42b8,0x42c8,0x42d8,0x42e7,0x42f1,0x4307
56919  .hword 0x4311,0x4328,0x4338,0x4341,0x4351,0x0006,0x3ee8,0x0008
56920  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
56921  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
56922  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
56923  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x4368,0x4378
56924  .hword 0x4388,0x4397,0x43a1,0x43b7,0x43c1,0x43d8,0x43e8,0x43f1
56925  .hword 0x4401,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
56926  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
56927  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
56928  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
56929  .hword 0x3e21,0x0006,0x4418,0x4428,0x4438,0x4447,0x4451,0x4467
56930  .hword 0x4471,0x4488,0x4498,0x44a1,0x44b1,0x0006,0x3ee8,0x0008
56931  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
56932  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
56933  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
56934  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x44c8,0x44d8
56935  .hword 0x44e8,0x44f7,0x4501,0x4517,0x4521,0x4538,0x4548,0x4551
56936  .hword 0x4561,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
56937  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
56938  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
56939  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
56940  .hword 0x3e21,0x0006,0x4578,0x4588,0x4598,0x45a7,0x45b1,0x45c7
56941  .hword 0x45d1,0x45e8,0x45f8,0x4601,0x4611,0x0006,0x3ee8,0x0008
56942  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
56943  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
56944  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
56945  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x4628,0x4638
56946  .hword 0x4648,0x4657,0x4661,0x4677,0x4681,0x4698,0x46a8,0x46b1
56947  .hword 0x46c1,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
56948  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
56949  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
56950  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
56951  .hword 0x3e21,0x0006,0x46d8,0x46e8,0x46f8,0x4707,0x4711,0x4727
56952  .hword 0x4731,0x4748,0x4758,0x4761,0x4771,0x0006,0x3ee8,0x0008
56953  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
56954  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
56955  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
56956  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x4788,0x4798
56957  .hword 0x47a8,0x47b7,0x47c1,0x47d7,0x47e1,0x47f8,0x4808,0x4811
56958  .hword 0x4821,0x0006,0x3c78,0x0008,0x3c88,0x3c97,0x3ca1,0x3cb7
56959  .hword 0x3cc1,0x3cd8,0x3ce8,0x3cf1,0x3d01,0x0006,0x3d18,0x3d28
56960  .hword 0x3d38,0x3d48,0x3d58,0x3d68,0x3d78,0x3d81,0x3d91,0x0006
56961  .hword 0x3da8,0x3db8,0x3dc8,0x3dd8,0x3de8,0x3df8,0x3e08,0x3e11
56962  .hword 0x3e21,0x0006,0x4838,0x4848,0x4858,0x4867,0x4871,0x4887
56963  .hword 0x4891,0x48a8,0x48b8,0x48c1,0x48d1,0x0006,0x3ee8,0x0008
56964  .hword 0x3ef8,0x3f07,0x3f11,0x3f27,0x3f31,0x3f48,0x3f58,0x3f61
56965  .hword 0x3f71,0x0006,0x3f88,0x3f98,0x3fa8,0x3fb8,0x3fc8,0x3fd8
56966  .hword 0x3fe8,0x3ff1,0x4001,0x0006,0x4018,0x4028,0x4038,0x4048
56967  .hword 0x4058,0x4068,0x4078,0x4081,0x4091,0x0006,0x48e8,0x48f8
56968  .hword 0x4908,0x4917,0x4921,0x4937,0x4941,0x4958,0x4968,0x4971
56969  .hword 0x4981,0x0006,0x4991,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56970  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56971  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56972  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56973  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56974  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56975  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56976  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56977  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56978  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56979  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56980  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56981  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56982  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56983  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56984  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56985  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56986  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56987  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56988  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56989  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56990  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56991  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56992  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56993  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56994  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56995  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56996  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56997  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56998  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
56999  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
57000  .hword 0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1,0x49b1,0x49a1
57001  .hword 0x49b1,0x49a1,0x49c1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57002  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57003  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57004  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57005  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57006  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57007  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57008  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57009  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57010  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57011  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57012  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57013  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57014  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57015  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57016  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57017  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57018  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57019  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57020  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57021  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57022  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57023  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57024  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57025  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57026  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57027  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57028  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57029  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57030  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57031  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57032  .hword 0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1,0x49e1,0x49d1
57033  .hword 0x49e1,0x49d1,0x49f1,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57034  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57035  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57036  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57037  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57038  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57039  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57040  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57041  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57042  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57043  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57044  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57045  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57046  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57047  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57048  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57049  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57050  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57051  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57052  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57053  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57054  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57055  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57056  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57057  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57058  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57059  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57060  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57061  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57062  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57063  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57064  .hword 0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01,0x4a11,0x4a01
57065  .hword 0x4a11,0x4a01,0x4a21,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57066  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57067  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57068  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57069  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57070  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57071  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57072  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57073  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57074  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57075  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57076  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57077  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57078  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57079  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57080  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57081  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57082  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57083  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57084  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57085  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57086  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57087  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57088  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57089  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57090  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57091  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57092  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57093  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57094  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57095  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57096  .hword 0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31,0x4a41,0x4a31
57097  .hword 0x4a41,0x4a31,0x4a51,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57098  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57099  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57100  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57101  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57102  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57103  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57104  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57105  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57106  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57107  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57108  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57109  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57110  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57111  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57112  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57113  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57114  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57115  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57116  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57117  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57118  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57119  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57120  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57121  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57122  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57123  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57124  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57125  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57126  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57127  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57128  .hword 0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61,0x4a71,0x4a61
57129  .hword 0x4a71,0x4a61,0x4a81,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57130  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57131  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57132  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57133  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57134  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57135  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57136  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57137  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57138  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57139  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57140  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57141  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57142  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57143  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57144  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57145  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57146  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57147  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57148  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57149  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57150  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57151  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57152  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57153  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57154  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57155  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57156  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57157  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57158  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57159  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57160  .hword 0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91,0x4aa1,0x4a91
57161  .hword 0x4aa1,0x4a91,0x4ab1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57162  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57163  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57164  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57165  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57166  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57167  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57168  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57169  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57170  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57171  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57172  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57173  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57174  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57175  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57176  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57177  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57178  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57179  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57180  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57181  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57182  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57183  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57184  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57185  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57186  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57187  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57188  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57189  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57190  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57191  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57192  .hword 0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1,0x4ad1,0x4ac1
57193  .hword 0x4ad1,0x4ac1,0x4ae1,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57194  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57195  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57196  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57197  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57198  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57199  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57200  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57201  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57202  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57203  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57204  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57205  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57206  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57207  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57208  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57209  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57210  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57211  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57212  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57213  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57214  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57215  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57216  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57217  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57218  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57219  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57220  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57221  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57222  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57223  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57224  .hword 0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1,0x4b01,0x4af1
57225  .hword 0x4b01,0x4af1,0x4b11,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57226  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57227  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57228  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57229  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57230  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57231  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57232  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57233  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57234  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57235  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57236  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57237  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57238  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57239  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57240  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57241  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57242  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57243  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57244  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57245  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57246  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57247  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57248  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57249  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57250  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57251  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57252  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57253  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57254  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57255  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57256  .hword 0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21,0x4b31,0x4b21
57257  .hword 0x4b31,0x4b21,0x4b41,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57258  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57259  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57260  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57261  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57262  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57263  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57264  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57265  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57266  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57267  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57268  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57269  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57270  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57271  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57272  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57273  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57274  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57275  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57276  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57277  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57278  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57279  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57280  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57281  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57282  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57283  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57284  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57285  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57286  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57287  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57288  .hword 0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51,0x4b61,0x4b51
57289  .hword 0x4b61,0x4b51,0x4b71,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57290  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57291  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57292  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57293  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57294  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57295  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57296  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57297  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57298  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57299  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57300  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57301  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57302  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57303  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57304  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57305  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57306  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57307  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57308  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57309  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57310  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57311  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57312  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57313  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57314  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57315  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57316  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57317  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57318  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57319  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57320  .hword 0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81,0x4b91,0x4b81
57321  .hword 0x4b91,0x4b81,0x4ba1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57322  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57323  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57324  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57325  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57326  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57327  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57328  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57329  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57330  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57331  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57332  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57333  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57334  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57335  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57336  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57337  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57338  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57339  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57340  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57341  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57342  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57343  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57344  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57345  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57346  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57347  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57348  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57349  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57350  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57351  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57352  .hword 0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1,0x4bc1,0x4bb1
57353  .hword 0x4bc1,0x4bb1,0x4bd1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57354  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57355  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57356  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57357  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57358  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57359  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57360  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57361  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57362  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57363  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57364  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57365  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57366  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57367  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57368  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57369  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57370  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57371  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57372  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57373  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57374  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57375  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57376  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57377  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57378  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57379  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57380  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57381  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57382  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57383  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57384  .hword 0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1,0x4bf1,0x4be1
57385  .hword 0x4bf1,0x4be1,0x4c01,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57386  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57387  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57388  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57389  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57390  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57391  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57392  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57393  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57394  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57395  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57396  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57397  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57398  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57399  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57400  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57401  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57402  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57403  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57404  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57405  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57406  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57407  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57408  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57409  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57410  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57411  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57412  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57413  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57414  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57415  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57416  .hword 0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11,0x4c21,0x4c11
57417  .hword 0x4c21,0x4c11,0x4c31,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57418  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57419  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57420  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57421  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57422  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57423  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57424  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57425  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57426  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57427  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57428  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57429  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57430  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57431  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57432  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57433  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57434  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57435  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57436  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57437  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57438  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57439  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57440  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57441  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57442  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57443  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57444  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57445  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57446  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57447  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57448  .hword 0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41,0x4c51,0x4c41
57449  .hword 0x4c51,0x4c41,0x4c61,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57450  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57451  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57452  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57453  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57454  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57455  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57456  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57457  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57458  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57459  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57460  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57461  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57462  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57463  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57464  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57465  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57466  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57467  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57468  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57469  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57470  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57471  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57472  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57473  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57474  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57475  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57476  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57477  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57478  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57479  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57480  .hword 0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71,0x4c81,0x4c71
57481  .hword 0x4c81,0x4c71,0x4c90,0x0100,0x0000,0x0100,0x4c90,0x0100
57482  .hword 0x0000,0x0100,0x4c90,0x0100,0x0000,0x0100,0x4c90,0x0100
57483  .hword 0x0000,0x0100,0x4c90,0x0100,0x0000,0x0100,0x4c90,0x0100
57484  .hword 0x0000,0x0100,0x4c90,0x0100,0x0000,0x0100,0x4c90,0x0100
57485  .hword 0x0000,0x0100,0x4ca8,0x0008,0x4cb8,0x4cc7,0x4cd1,0x4ce7
57486  .hword 0x4cf1,0x4d08,0x4d18,0x4d21,0x4d31,0x4d41,0x4d51,0x4d61
57487  .hword 0x0003,0x4d78,0x0008,0x4d88,0x4d98,0x4da8,0x4db8,0x4dc8
57488  .hword 0x4dd1,0x4de1,0x4df1,0x4e01,0x4e11,0x0003,0x4e28,0x0008
57489  .hword 0x4e38,0x4e48,0x4e58,0x4e68,0x4e78,0x4e81,0x4e91,0x4ea1
57490  .hword 0x4eb1,0x4ec1,0x0003,0x4ed8,0x0008,0x4ee8,0x4ef8,0x4f08
57491  .hword 0x4f18,0x4f28,0x4f31,0x4f41,0x4f51,0x4f61,0x4f71,0x0003
57492  .hword 0x4f88,0x4f97,0x4fa1,0x4fb8,0x4fc7,0x4fd1,0x4fe7,0x4ff1
57493  .hword 0x5008,0x5018,0x5021,0x5031,0x0000,0x0016,0x5048,0x5058
57494  .hword 0x5068,0x5078,0x5088,0x5091,0x50a1,0x0000,0x0016,0x50b8
57495  .hword 0x50c8,0x50d8,0x50e8,0x50f8,0x5101,0x5111,0x0006,0x5128
57496  .hword 0x0008,0x5138,0x5148,0x5158,0x5168,0x5178,0x5181,0x5191
57497  .hword 0x51a1,0x51b1,0x51c1,0x0003,0x4ca8,0x0008,0x4cb8,0x4cc7
57498  .hword 0x4cd1,0x4ce7,0x4cf1,0x4d08,0x4d18,0x4d21,0x4d31,0x4d41
57499  .hword 0x4d51,0x4d61,0x0003,0x4d78,0x0008,0x4d88,0x4d98,0x4da8
57500  .hword 0x4db8,0x4dc8,0x4dd1,0x4de1,0x4df1,0x4e01,0x4e11,0x0003
57501  .hword 0x4e28,0x0008,0x4e38,0x4e48,0x4e58,0x4e68,0x4e78,0x4e81
57502  .hword 0x4e91,0x4ea1,0x4eb1,0x4ec1,0x0003,0x4ed8,0x0008,0x4ee8
57503  .hword 0x4ef8,0x4f08,0x4f18,0x4f28,0x4f31,0x4f41,0x4f51,0x4f61
57504  .hword 0x4f71,0x0003,0x4f88,0x4f97,0x4fa1,0x4fb8,0x4fc7,0x4fd1
57505  .hword 0x4fe7,0x4ff1,0x5008,0x5018,0x5021,0x5031,0x0000,0x0016
57506  .hword 0x5048,0x5058,0x5068,0x5078,0x5088,0x5091,0x50a1,0x0000
57507  .hword 0x0016,0x50b8,0x50c8,0x50d8,0x50e8,0x50f8,0x5101,0x5111
57508  .hword 0x0006,0x5128,0x0008,0x5138,0x5148,0x5158,0x5168,0x5178
57509  .hword 0x5181,0x5191,0x51a1,0x51b1,0x51c1,0x0003,0x4ca8,0x0008
57510  .hword 0x4cb8,0x4cc7,0x4cd1,0x4ce7,0x4cf1,0x4d08,0x4d18,0x4d21
57511  .hword 0x4d31,0x4d41,0x4d51,0x4d61,0x0003,0x4d78,0x0008,0x4d88
57512  .hword 0x4d98,0x4da8,0x4db8,0x4dc8,0x4dd1,0x4de1,0x4df1,0x4e01
57513  .hword 0x4e11,0x0003,0x4e28,0x0008,0x4e38,0x4e48,0x4e58,0x4e68
57514  .hword 0x4e78,0x4e81,0x4e91,0x4ea1,0x4eb1,0x4ec1,0x0003,0x4ed8
57515  .hword 0x0008,0x4ee8,0x4ef8,0x4f08,0x4f18,0x4f28,0x4f31,0x4f41
57516  .hword 0x4f51,0x4f61,0x4f71,0x0003,0x4f88,0x4f97,0x4fa1,0x4fb8
57517  .hword 0x4fc7,0x4fd1,0x4fe7,0x4ff1,0x5008,0x5018,0x5021,0x5031
57518  .hword 0x0000,0x0016,0x5048,0x5058,0x5068,0x5078,0x5088,0x5091
57519  .hword 0x50a1,0x0000,0x0016,0x50b8,0x50c8,0x50d8,0x50e8,0x50f8
57520  .hword 0x5101,0x5111,0x0006,0x5128,0x0008,0x5138,0x5148,0x5158
57521  .hword 0x5168,0x5178,0x5181,0x5191,0x51a1,0x51b1,0x51c1,0x0003
57522  .hword 0x4ca8,0x0008,0x4cb8,0x4cc7,0x4cd1,0x4ce7,0x4cf1,0x4d08
57523  .hword 0x4d18,0x4d21,0x4d31,0x4d41,0x4d51,0x4d61,0x0003,0x4d78
57524  .hword 0x0008,0x4d88,0x4d98,0x4da8,0x4db8,0x4dc8,0x4dd1,0x4de1
57525  .hword 0x4df1,0x4e01,0x4e11,0x0003,0x4e28,0x0008,0x4e38,0x4e48
57526  .hword 0x4e58,0x4e68,0x4e78,0x4e81,0x4e91,0x4ea1,0x4eb1,0x4ec1
57527  .hword 0x0003,0x4ed8,0x0008,0x4ee8,0x4ef8,0x4f08,0x4f18,0x4f28
57528  .hword 0x4f31,0x4f41,0x4f51,0x4f61,0x4f71,0x0003,0x4f88,0x4f97
57529  .hword 0x4fa1,0x4fb8,0x4fc7,0x4fd1,0x4fe7,0x4ff1,0x5008,0x5018
57530  .hword 0x5021,0x5031,0x0000,0x0016,0x5048,0x5058,0x5068,0x5078
57531  .hword 0x5088,0x5091,0x50a1,0x0000,0x0016,0x50b8,0x50c8,0x50d8
57532  .hword 0x50e8,0x50f8,0x5101,0x5111,0x0006,0x5128,0x0008,0x5138
57533  .hword 0x5148,0x5158,0x5168,0x5178,0x5181,0x5191,0x51a1,0x51b1
57534  .hword 0x51c1,0x0003,0x4ca8,0x0008,0x4cb8,0x4cc7,0x4cd1,0x4ce7
57535  .hword 0x4cf1,0x4d08,0x4d18,0x4d21,0x4d31,0x4d41,0x4d51,0x4d61
57536  .hword 0x0003,0x4d78,0x0008,0x4d88,0x4d98,0x4da8,0x4db8,0x4dc8
57537  .hword 0x4dd1,0x4de1,0x4df1,0x4e01,0x4e11,0x0003,0x4e28,0x0008
57538  .hword 0x4e38,0x4e48,0x4e58,0x4e68,0x4e78,0x4e81,0x4e91,0x4ea1
57539  .hword 0x4eb1,0x4ec1,0x0003,0x4ed8,0x0008,0x4ee8,0x4ef8,0x4f08
57540  .hword 0x4f18,0x4f28,0x4f31,0x4f41,0x4f51,0x4f61,0x4f71,0x0003
57541  .hword 0x4f88,0x4f97,0x4fa1,0x4fb8,0x4fc7,0x4fd1,0x4fe7,0x4ff1
57542  .hword 0x5008,0x5018,0x5021,0x5031,0x0000,0x0016,0x5048,0x5058
57543  .hword 0x5068,0x5078,0x5088,0x5091,0x50a1,0x0000,0x0016,0x50b8
57544  .hword 0x50c8,0x50d8,0x50e8,0x50f8,0x5101,0x5111,0x0006,0x5128
57545  .hword 0x0008,0x5138,0x5148,0x5158,0x5168,0x5178,0x5181,0x5191
57546  .hword 0x51a1,0x51b1,0x51c1,0x0003,0x4ca8,0x0008,0x4cb8,0x4cc7
57547  .hword 0x4cd1,0x4ce7,0x4cf1,0x4d08,0x4d18,0x4d21,0x4d31,0x4d41
57548  .hword 0x4d51,0x4d61,0x0003,0x4d78,0x0008,0x4d88,0x4d98,0x4da8
57549  .hword 0x4db8,0x4dc8,0x4dd1,0x4de1,0x4df1,0x4e01,0x4e11,0x0003
57550  .hword 0x4e28,0x0008,0x4e38,0x4e48,0x4e58,0x4e68,0x4e78,0x4e81
57551  .hword 0x4e91,0x4ea1,0x4eb1,0x4ec1,0x0003,0x4ed8,0x0008,0x4ee8
57552  .hword 0x4ef8,0x4f08,0x4f18,0x4f28,0x4f31,0x4f41,0x4f51,0x4f61
57553  .hword 0x4f71,0x0003,0x4f88,0x4f97,0x4fa1,0x4fb8,0x4fc7,0x4fd1
57554  .hword 0x4fe7,0x4ff1,0x5008,0x5018,0x5021,0x5031,0x0000,0x0016
57555  .hword 0x5048,0x5058,0x5068,0x5078,0x5088,0x5091,0x50a1,0x0000
57556  .hword 0x0016,0x50b8,0x50c8,0x50d8,0x50e8,0x50f8,0x5101,0x5111
57557  .hword 0x0006,0x5128,0x0008,0x5138,0x5148,0x5158,0x5168,0x5178
57558  .hword 0x5181,0x5191,0x51a1,0x51b1,0x51c1,0x0003,0x4ca8,0x0008
57559  .hword 0x4cb8,0x4cc7,0x4cd1,0x4ce7,0x4cf1,0x4d08,0x4d18,0x4d21
57560  .hword 0x4d31,0x4d41,0x4d51,0x4d61,0x0003,0x4d78,0x0008,0x4d88
57561  .hword 0x4d98,0x4da8,0x4db8,0x4dc8,0x4dd1,0x4de1,0x4df1,0x4e01
57562  .hword 0x4e11,0x0003,0x4e28,0x0008,0x4e38,0x4e48,0x4e58,0x4e68
57563  .hword 0x4e78,0x4e81,0x4e91,0x4ea1,0x4eb1,0x4ec1,0x0003,0x4ed8
57564  .hword 0x0008,0x4ee8,0x4ef8,0x4f08,0x4f18,0x4f28,0x4f31,0x4f41
57565  .hword 0x4f51,0x4f61,0x4f71,0x0003,0x4f88,0x4f97,0x4fa1,0x4fb8
57566  .hword 0x4fc7,0x4fd1,0x4fe7,0x4ff1,0x5008,0x5018,0x5021,0x5031
57567  .hword 0x0000,0x0016,0x5048,0x5058,0x5068,0x5078,0x5088,0x5091
57568  .hword 0x50a1,0x0000,0x0016,0x50b8,0x50c8,0x50d8,0x50e8,0x50f8
57569  .hword 0x5101,0x5111,0x0006,0x5128,0x0008,0x5138,0x5148,0x5158
57570  .hword 0x5168,0x5178,0x5181,0x5191,0x51a1,0x51b1,0x51c1,0x0003
57571  .hword 0x4ca8,0x0008,0x4cb8,0x4cc7,0x4cd1,0x4ce7,0x4cf1,0x4d08
57572  .hword 0x4d18,0x4d21,0x4d31,0x4d41,0x4d51,0x4d61,0x0003,0x4d78
57573  .hword 0x0008,0x4d88,0x4d98,0x4da8,0x4db8,0x4dc8,0x4dd1,0x4de1
57574  .hword 0x4df1,0x4e01,0x4e11,0x0003,0x4e28,0x0008,0x4e38,0x4e48
57575  .hword 0x4e58,0x4e68,0x4e78,0x4e81,0x4e91,0x4ea1,0x4eb1,0x4ec1
57576  .hword 0x0003,0x4ed8,0x0008,0x4ee8,0x4ef8,0x4f08,0x4f18,0x4f28
57577  .hword 0x4f31,0x4f41,0x4f51,0x4f61,0x4f71,0x0003,0x4f88,0x51d7
57578  .hword 0x51e1,0x4fb8,0x4fc7,0x4fd1,0x4fe7,0x4ff1,0x5008,0x5018
57579  .hword 0x5021,0x5031,0x0000,0x0016,0x5048,0x5058,0x5068,0x5078
57580  .hword 0x5088,0x5091,0x50a1,0x0000,0x0016,0x50b8,0x50c8,0x50d8
57581  .hword 0x50e8,0x50f8,0x5101,0x5111,0x0006,0x5128,0x0008,0x5138
57582  .hword 0x5148,0x5158,0x5168,0x5178,0x5181,0x5191,0x51a1,0x51b1
57583  .hword 0x51c1,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
57584  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
57585  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
57586  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
57587  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
57588  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
57589  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
57590  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
57591  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
57592  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
57593  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
57594  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
57595  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
57596  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
57597  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
57598  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
57599  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
57600  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
57601  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
57602  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
57603  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
57604  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
57605  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
57606  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
57607  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
57608  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
57609  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
57610  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
57611  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
57612  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
57613  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
57614  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
57615  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
57616  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
57617  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
57618  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
57619  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
57620  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
57621  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
57622  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
57623  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
57624  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
57625  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
57626  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
57627  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
57628  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
57629  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
57630  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
57631  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
57632  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
57633  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
57634  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
57635  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
57636  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
57637  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
57638  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
57639  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
57640  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
57641  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
57642  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
57643  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
57644  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
57645  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
57646  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
57647  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
57648  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
57649  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
57650  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
57651  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
57652  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
57653  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
57654  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
57655  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
57656  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
57657  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
57658  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
57659  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
57660  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
57661  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x54e7,0x54f1
57662  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
57663  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
57664  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
57665  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
57666  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
57667  .hword 0x5751,0x0003,0x51f8,0x0008,0x5208,0x5217,0x5221,0x5237
57668  .hword 0x5241,0x5258,0x5268,0x5271,0x5281,0x5291,0x52a1,0x52b1
57669  .hword 0x0003,0x52cf,0x52d8,0x52e8,0x52f8,0x5308,0x5318,0x5321
57670  .hword 0x5331,0x5341,0x5351,0x5361,0x0003,0x537f,0x5388,0x5398
57671  .hword 0x53a8,0x53b8,0x53c8,0x53d1,0x53e1,0x53f1,0x5401,0x5411
57672  .hword 0x0003,0x542f,0x5438,0x5448,0x5458,0x5468,0x5478,0x5481
57673  .hword 0x5491,0x54a1,0x54b1,0x54c1,0x0003,0x54d8,0x5767,0x5771
57674  .hword 0x5508,0x5517,0x5521,0x5537,0x5541,0x5558,0x5568,0x5571
57675  .hword 0x5581,0x0006,0x5598,0x55a8,0x55b8,0x55c8,0x55d8,0x55e8
57676  .hword 0x55f8,0x5601,0x5611,0x0006,0x5628,0x5638,0x5648,0x5658
57677  .hword 0x5668,0x5678,0x5688,0x5691,0x56a1,0x0006,0x56bf,0x56c8
57678  .hword 0x56d8,0x56e8,0x56f8,0x5708,0x5711,0x5721,0x5731,0x5741
57679  .hword 0x5751,0x0003,0x7080,0x1000,0x5788,0x0008,0x5798,0x57a7
57680  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
57681  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
57682  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
57683  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
57684  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
57685  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
57686  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
57687  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
57688  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
57689  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
57690  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
57691  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
57692  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
57693  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
57694  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
57695  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
57696  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
57697  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
57698  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
57699  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
57700  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
57701  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
57702  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
57703  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
57704  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
57705  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
57706  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
57707  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
57708  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
57709  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
57710  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
57711  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
57712  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
57713  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
57714  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
57715  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
57716  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
57717  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
57718  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
57719  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
57720  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
57721  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
57722  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
57723  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
57724  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
57725  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
57726  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
57727  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
57728  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
57729  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
57730  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
57731  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
57732  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
57733  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
57734  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
57735  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
57736  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
57737  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
57738  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
57739  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
57740  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
57741  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
57742  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
57743  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
57744  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
57745  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
57746  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
57747  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
57748  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
57749  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
57750  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
57751  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
57752  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
57753  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
57754  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
57755  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
57756  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
57757  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
57758  .hword 0x5a77,0x5a81,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
57759  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
57760  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
57761  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
57762  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
57763  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5788,0x0008,0x5798,0x57a7
57764  .hword 0x57b1,0x57c7,0x57d1,0x57e8,0x57f8,0x5801,0x5811,0x5821
57765  .hword 0x5831,0x5841,0x0003,0x585f,0x5868,0x5878,0x5888,0x5898
57766  .hword 0x58a8,0x58b1,0x58c1,0x58d1,0x58e1,0x58f1,0x0003,0x590f
57767  .hword 0x5918,0x5928,0x5938,0x5948,0x5958,0x5961,0x5971,0x5981
57768  .hword 0x5991,0x59a1,0x0003,0x59bf,0x59c8,0x59d8,0x59e8,0x59f8
57769  .hword 0x5a08,0x5a11,0x5a21,0x5a31,0x5a41,0x5a51,0x0003,0x5a68
57770  .hword 0x5cf7,0x5d01,0x5a98,0x5aa7,0x5ab1,0x5ac7,0x5ad1,0x5ae8
57771  .hword 0x5af8,0x5b01,0x5b11,0x0006,0x5b28,0x5b38,0x5b48,0x5b58
57772  .hword 0x5b68,0x5b78,0x5b88,0x5b91,0x5ba1,0x0006,0x5bb8,0x5bc8
57773  .hword 0x5bd8,0x5be8,0x5bf8,0x5c08,0x5c18,0x5c21,0x5c31,0x0006
57774  .hword 0x5c4f,0x5c58,0x5c68,0x5c78,0x5c88,0x5c98,0x5ca1,0x5cb1
57775  .hword 0x5cc1,0x5cd1,0x5ce1,0x0003,0x5d18,0x0008,0x5d28,0x5d37
57776  .hword 0x5d41,0x5d57,0x5d61,0x5d78,0x5d88,0x5d91,0x5da1,0x5db1
57777  .hword 0x5dc1,0x5dd1,0x0003,0x5de8,0x0008,0x5df8,0x5e08,0x5e18
57778  .hword 0x5e28,0x5e38,0x5e41,0x5e51,0x5e61,0x5e71,0x5e81,0x0003
57779  .hword 0x5e98,0x0008,0x5ea8,0x5eb8,0x5ec8,0x5ed8,0x5ee8,0x5ef1
57780  .hword 0x5f01,0x5f11,0x5f21,0x5f31,0x0003,0x5f48,0x0008,0x5f58
57781  .hword 0x5f68,0x5f78,0x5f88,0x5f98,0x5fa1,0x5fb1,0x5fc1,0x5fd1
57782  .hword 0x5fe1,0x0003,0x5ff8,0x6007,0x6011,0x6028,0x6037,0x6041
57783  .hword 0x6057,0x6061,0x6078,0x6088,0x6091,0x60a1,0x0006,0x60b8
57784  .hword 0x60c8,0x60d8,0x60e8,0x60f8,0x6108,0x6118,0x6121,0x6131
57785  .hword 0x000e,0x6148,0x6158,0x6168,0x6178,0x6188,0x6198,0x61a1
57786  .hword 0x61b1,0x0006,0x61c8,0x0008,0x61d8,0x61e8,0x61f8,0x6208
57787  .hword 0x6218,0x6221,0x6231,0x6241,0x6251,0x6261,0x0003,0x5d18
57788  .hword 0x0008,0x5d28,0x5d37,0x5d41,0x5d57,0x5d61,0x5d78,0x5d88
57789  .hword 0x5d91,0x5da1,0x5db1,0x5dc1,0x5dd1,0x0003,0x5de8,0x0008
57790  .hword 0x5df8,0x5e08,0x5e18,0x5e28,0x5e38,0x5e41,0x5e51,0x5e61
57791  .hword 0x5e71,0x5e81,0x0003,0x5e98,0x0008,0x5ea8,0x5eb8,0x5ec8
57792  .hword 0x5ed8,0x5ee8,0x5ef1,0x5f01,0x5f11,0x5f21,0x5f31,0x0003
57793  .hword 0x5f48,0x0008,0x5f58,0x5f68,0x5f78,0x5f88,0x5f98,0x5fa1
57794  .hword 0x5fb1,0x5fc1,0x5fd1,0x5fe1,0x0003,0x5ff8,0x6007,0x6011
57795  .hword 0x6028,0x6037,0x6041,0x6057,0x6061,0x6078,0x6088,0x6091
57796  .hword 0x60a1,0x0006,0x60b8,0x60c8,0x60d8,0x60e8,0x60f8,0x6108
57797  .hword 0x6118,0x6121,0x6131,0x000e,0x6148,0x6158,0x6168,0x6178
57798  .hword 0x6188,0x6198,0x61a1,0x61b1,0x0006,0x61c8,0x0008,0x61d8
57799  .hword 0x61e8,0x61f8,0x6208,0x6218,0x6221,0x6231,0x6241,0x6251
57800  .hword 0x6261,0x0003,0x5d18,0x0008,0x5d28,0x5d37,0x5d41,0x5d57
57801  .hword 0x5d61,0x5d78,0x5d88,0x5d91,0x5da1,0x5db1,0x5dc1,0x5dd1
57802  .hword 0x0003,0x5de8,0x0008,0x5df8,0x5e08,0x5e18,0x5e28,0x5e38
57803  .hword 0x5e41,0x5e51,0x5e61,0x5e71,0x5e81,0x0003,0x5e98,0x0008
57804  .hword 0x5ea8,0x5eb8,0x5ec8,0x5ed8,0x5ee8,0x5ef1,0x5f01,0x5f11
57805  .hword 0x5f21,0x5f31,0x0003,0x5f48,0x0008,0x5f58,0x5f68,0x5f78
57806  .hword 0x5f88,0x5f98,0x5fa1,0x5fb1,0x5fc1,0x5fd1,0x5fe1,0x0003
57807  .hword 0x5ff8,0x6007,0x6011,0x6028,0x6037,0x6041,0x6057,0x6061
57808  .hword 0x6078,0x6088,0x6091,0x60a1,0x0006,0x60b8,0x60c8,0x60d8
57809  .hword 0x60e8,0x60f8,0x6108,0x6118,0x6121,0x6131,0x000e,0x6148
57810  .hword 0x6158,0x6168,0x6178,0x6188,0x6198,0x61a1,0x61b1,0x0006
57811  .hword 0x61c8,0x0008,0x61d8,0x61e8,0x61f8,0x6208,0x6218,0x6221
57812  .hword 0x6231,0x6241,0x6251,0x6261,0x0003,0x5d18,0x0008,0x5d28
57813  .hword 0x5d37,0x5d41,0x5d57,0x5d61,0x5d78,0x5d88,0x5d91,0x5da1
57814  .hword 0x5db1,0x5dc1,0x5dd1,0x0003,0x5de8,0x0008,0x5df8,0x5e08
57815  .hword 0x5e18,0x5e28,0x5e38,0x5e41,0x5e51,0x5e61,0x5e71,0x5e81
57816  .hword 0x0003,0x5e98,0x0008,0x5ea8,0x5eb8,0x5ec8,0x5ed8,0x5ee8
57817  .hword 0x5ef1,0x5f01,0x5f11,0x5f21,0x5f31,0x0003,0x5f48,0x0008
57818  .hword 0x5f58,0x5f68,0x5f78,0x5f88,0x5f98,0x5fa1,0x5fb1,0x5fc1
57819  .hword 0x5fd1,0x5fe1,0x0003,0x5ff8,0x6007,0x6011,0x6028,0x6037
57820  .hword 0x6041,0x6057,0x6061,0x6078,0x6088,0x6091,0x60a1,0x0006
57821  .hword 0x60b8,0x60c8,0x60d8,0x60e8,0x60f8,0x6108,0x6118,0x6121
57822  .hword 0x6131,0x000e,0x6148,0x6158,0x6168,0x6178,0x6188,0x6198
57823  .hword 0x61a1,0x61b1,0x0006,0x61c8,0x0008,0x61d8,0x61e8,0x61f8
57824  .hword 0x6208,0x6218,0x6221,0x6231,0x6241,0x6251,0x6261,0x0003
57825  .hword 0x5d18,0x0008,0x5d28,0x5d37,0x5d41,0x5d57,0x5d61,0x5d78
57826  .hword 0x5d88,0x5d91,0x5da1,0x5db1,0x5dc1,0x5dd1,0x0003,0x5de8
57827  .hword 0x0008,0x5df8,0x5e08,0x5e18,0x5e28,0x5e38,0x5e41,0x5e51
57828  .hword 0x5e61,0x5e71,0x5e81,0x0003,0x5e98,0x0008,0x5ea8,0x5eb8
57829  .hword 0x5ec8,0x5ed8,0x5ee8,0x5ef1,0x5f01,0x5f11,0x5f21,0x5f31
57830  .hword 0x0003,0x5f48,0x0008,0x5f58,0x5f68,0x5f78,0x5f88,0x5f98
57831  .hword 0x5fa1,0x5fb1,0x5fc1,0x5fd1,0x5fe1,0x0003,0x5ff8,0x6007
57832  .hword 0x6011,0x6028,0x6037,0x6041,0x6057,0x6061,0x6078,0x6088
57833  .hword 0x6091,0x60a1,0x0006,0x60b8,0x60c8,0x60d8,0x60e8,0x60f8
57834  .hword 0x6108,0x6118,0x6121,0x6131,0x000e,0x6148,0x6158,0x6168
57835  .hword 0x6178,0x6188,0x6198,0x61a1,0x61b1,0x0006,0x61c8,0x0008
57836  .hword 0x61d8,0x61e8,0x61f8,0x6208,0x6218,0x6221,0x6231,0x6241
57837  .hword 0x6251,0x6261,0x0003,0x5d18,0x0008,0x5d28,0x5d37,0x5d41
57838  .hword 0x5d57,0x5d61,0x5d78,0x5d88,0x5d91,0x5da1,0x5db1,0x5dc1
57839  .hword 0x5dd1,0x0003,0x5de8,0x0008,0x5df8,0x5e08,0x5e18,0x5e28
57840  .hword 0x5e38,0x5e41,0x5e51,0x5e61,0x5e71,0x5e81,0x0003,0x5e98
57841  .hword 0x0008,0x5ea8,0x5eb8,0x5ec8,0x5ed8,0x5ee8,0x5ef1,0x5f01
57842  .hword 0x5f11,0x5f21,0x5f31,0x0003,0x5f48,0x0008,0x5f58,0x5f68
57843  .hword 0x5f78,0x5f88,0x5f98,0x5fa1,0x5fb1,0x5fc1,0x5fd1,0x5fe1
57844  .hword 0x0003,0x5ff8,0x6007,0x6011,0x6028,0x6037,0x6041,0x6057
57845  .hword 0x6061,0x6078,0x6088,0x6091,0x60a1,0x0006,0x60b8,0x60c8
57846  .hword 0x60d8,0x60e8,0x60f8,0x6108,0x6118,0x6121,0x6131,0x000e
57847  .hword 0x6148,0x6158,0x6168,0x6178,0x6188,0x6198,0x61a1,0x61b1
57848  .hword 0x0006,0x61c8,0x0008,0x61d8,0x61e8,0x61f8,0x6208,0x6218
57849  .hword 0x6221,0x6231,0x6241,0x6251,0x6261,0x0003,0x5d18,0x0008
57850  .hword 0x5d28,0x5d37,0x5d41,0x5d57,0x5d61,0x5d78,0x5d88,0x5d91
57851  .hword 0x5da1,0x5db1,0x5dc1,0x5dd1,0x0003,0x5de8,0x0008,0x5df8
57852  .hword 0x5e08,0x5e18,0x5e28,0x5e38,0x5e41,0x5e51,0x5e61,0x5e71
57853  .hword 0x5e81,0x0003,0x5e98,0x0008,0x5ea8,0x5eb8,0x5ec8,0x5ed8
57854  .hword 0x5ee8,0x5ef1,0x5f01,0x5f11,0x5f21,0x5f31,0x0003,0x5f48
57855  .hword 0x0008,0x5f58,0x5f68,0x5f78,0x5f88,0x5f98,0x5fa1,0x5fb1
57856  .hword 0x5fc1,0x5fd1,0x5fe1,0x0003,0x5ff8,0x6007,0x6011,0x6028
57857  .hword 0x6037,0x6041,0x6057,0x6061,0x6078,0x6088,0x6091,0x60a1
57858  .hword 0x0006,0x60b8,0x60c8,0x60d8,0x60e8,0x60f8,0x6108,0x6118
57859  .hword 0x6121,0x6131,0x000e,0x6148,0x6158,0x6168,0x6178,0x6188
57860  .hword 0x6198,0x61a1,0x61b1,0x0006,0x61c8,0x0008,0x61d8,0x61e8
57861  .hword 0x61f8,0x6208,0x6218,0x6221,0x6231,0x6241,0x6251,0x6261
57862  .hword 0x0003,0x5d18,0x0008,0x5d28,0x5d37,0x5d41,0x5d57,0x5d61
57863  .hword 0x5d78,0x5d88,0x5d91,0x5da1,0x5db1,0x5dc1,0x5dd1,0x0003
57864  .hword 0x5de8,0x0008,0x5df8,0x5e08,0x5e18,0x5e28,0x5e38,0x5e41
57865  .hword 0x5e51,0x5e61,0x5e71,0x5e81,0x0003,0x5e98,0x0008,0x5ea8
57866  .hword 0x5eb8,0x5ec8,0x5ed8,0x5ee8,0x5ef1,0x5f01,0x5f11,0x5f21
57867  .hword 0x5f31,0x0003,0x5f48,0x0008,0x5f58,0x5f68,0x5f78,0x5f88
57868  .hword 0x5f98,0x5fa1,0x5fb1,0x5fc1,0x5fd1,0x5fe1,0x0003,0x5ff8
57869  .hword 0x6277,0x6281,0x6028,0x6037,0x6041,0x6057,0x6061,0x6078
57870  .hword 0x6088,0x6091,0x60a1,0x0006,0x60b8,0x60c8,0x60d8,0x60e8
57871  .hword 0x60f8,0x6108,0x6118,0x6121,0x6131,0x000e,0x6148,0x6158
57872  .hword 0x6168,0x6178,0x6188,0x6198,0x61a1,0x61b1,0x0006,0x61c8
57873  .hword 0x0008,0x61d8,0x61e8,0x61f8,0x6208,0x6218,0x6221,0x6231
57874  .hword 0x6241,0x6251,0x6261,0x0003,0x6298,0x0008,0x62a8,0x62b7
57875  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
57876  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
57877  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
57878  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
57879  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
57880  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
57881  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
57882  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
57883  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
57884  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
57885  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
57886  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
57887  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
57888  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
57889  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
57890  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
57891  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
57892  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
57893  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
57894  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
57895  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
57896  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
57897  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
57898  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
57899  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
57900  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
57901  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
57902  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
57903  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
57904  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
57905  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
57906  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
57907  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
57908  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
57909  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
57910  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
57911  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
57912  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
57913  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
57914  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
57915  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
57916  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
57917  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
57918  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
57919  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
57920  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
57921  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
57922  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
57923  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
57924  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
57925  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
57926  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
57927  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
57928  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
57929  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
57930  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
57931  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
57932  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
57933  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
57934  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
57935  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
57936  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
57937  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
57938  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
57939  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
57940  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
57941  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
57942  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
57943  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
57944  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
57945  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
57946  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
57947  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
57948  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
57949  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
57950  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
57951  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
57952  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
57953  .hword 0x6587,0x6591,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
57954  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
57955  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
57956  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
57957  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
57958  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6298,0x0008,0x62a8,0x62b7
57959  .hword 0x62c1,0x62d7,0x62e1,0x62f8,0x6308,0x6311,0x6321,0x6331
57960  .hword 0x6341,0x6351,0x0003,0x636f,0x6378,0x6388,0x6398,0x63a8
57961  .hword 0x63b8,0x63c1,0x63d1,0x63e1,0x63f1,0x6401,0x0003,0x641f
57962  .hword 0x6428,0x6438,0x6448,0x6458,0x6468,0x6471,0x6481,0x6491
57963  .hword 0x64a1,0x64b1,0x0003,0x64cf,0x64d8,0x64e8,0x64f8,0x6508
57964  .hword 0x6518,0x6521,0x6531,0x6541,0x6551,0x6561,0x0003,0x6578
57965  .hword 0x6807,0x6811,0x65a8,0x65b7,0x65c1,0x65d7,0x65e1,0x65f8
57966  .hword 0x6608,0x6611,0x6621,0x0006,0x6638,0x6648,0x6658,0x6668
57967  .hword 0x6678,0x6688,0x6698,0x66a1,0x66b1,0x0006,0x66c8,0x66d8
57968  .hword 0x66e8,0x66f8,0x6708,0x6718,0x6728,0x6731,0x6741,0x0006
57969  .hword 0x675f,0x6768,0x6778,0x6788,0x6798,0x67a8,0x67b1,0x67c1
57970  .hword 0x67d1,0x67e1,0x67f1,0x0003,0x6828,0x6838,0x6848,0x6858
57971  .hword 0x6868,0x6878,0x6888,0x6898,0x68a8,0x68b8,0x68c8,0x68d8
57972  .hword 0x68e8,0x68f8,0x6908,0x6918,0x6928,0x6938,0x6948,0x6958
57973  .hword 0x6968,0x6978,0x6988,0x6998,0x000f,0x69a8,0x69b8,0x69c8
57974  .hword 0x69d8,0x69e8,0x69f1,0x6a01,0x0006,0x6a18,0x6a28,0x6a38
57975  .hword 0x6a48,0x6a58,0x6a68,0x6a78,0x6a88,0x6a98,0x6aa8,0x6ab8
57976  .hword 0x6ac8,0x6ad8,0x6ae8,0x6af8,0x6b08,0x6b18,0x6b28,0x6b38
57977  .hword 0x6b48,0x6b58,0x6b68,0x6b78,0x6b88,0x000f,0x6b98,0x6ba8
57978  .hword 0x6bb8,0x6bc8,0x6bd8,0x6be1,0x6bf1,0x0006,0x6c08,0x6c18
57979  .hword 0x6c28,0x6c38,0x6868,0x6878,0x6888,0x6898,0x6c48,0x6c58
57980  .hword 0x6c68,0x6c78,0x68e8,0x68f8,0x6908,0x6918,0x6c88,0x6c98
57981  .hword 0x6ca8,0x6cb8,0x6968,0x6978,0x6988,0x6998,0x000f,0x6cc8
57982  .hword 0x6cd8,0x6ce8,0x6cf8,0x6d08,0x6d11,0x6d21,0x0006,0x6d38
57983  .hword 0x6d48,0x6d58,0x6d68,0x6a58,0x6a68,0x6a78,0x6a88,0x6d78
57984  .hword 0x6d88,0x6d98,0x6da8,0x6ad8,0x6ae8,0x6af8,0x6b08,0x6db8
57985  .hword 0x6dc8,0x6dd8,0x6de8,0x6b58,0x6b68,0x6b78,0x6b88,0x000f
57986  .hword 0x6df8,0x6e08,0x6e18,0x6e28,0x6e38,0x6e41,0x6e51,0x0006
57987  .hword 0x6c08,0x6c18,0x6e68,0x6c38,0x6868,0x6878,0x6888,0x6898
57988  .hword 0x6c48,0x6c58,0x6e78,0x6c78,0x68e8,0x68f8,0x6908,0x6918
57989  .hword 0x6c88,0x6c98,0x6e88,0x6cb8,0x6968,0x6978,0x6988,0x6998
57990  .hword 0x000f,0x6e98,0x6ea8,0x6eb8,0x6ec8,0x6ed8,0x6ee1,0x6ef1
57991  .hword 0x0006,0x6d38,0x6d48,0x6f08,0x6d68,0x6a58,0x6a68,0x6a78
57992  .hword 0x6a88,0x6d78,0x6d88,0x6f18,0x6da8,0x6ad8,0x6ae8,0x6af8
57993  .hword 0x6b08,0x6db8,0x6dc8,0x6f28,0x6de8,0x6b58,0x6b68,0x6b78
57994  .hword 0x6b88,0x000f,0x6f38,0x6f48,0x6f58,0x6f68,0x6f78,0x6f81
57995  .hword 0x6f91,0x0006,0x6c08,0x6c18,0x6e68,0x6c38,0x6868,0x6878
57996  .hword 0x6888,0x6898,0x6c48,0x6c58,0x6e78,0x6c78,0x68e8,0x68f8
57997  .hword 0x6908,0x6918,0x6c88,0x6c98,0x6e88,0x6cb8,0x6968,0x6978
57998  .hword 0x6988,0x6998,0x000f,0x6fa8,0x6fb8,0x6fc8,0x6fd8,0x6fe8
57999  .hword 0x6ff1,0x7001,0x0006,0x6d38,0x6d48,0x6f08,0x6d68,0x6a58
58000  .hword 0x6a68,0x6a78,0x6a88,0x6d78,0x6d88,0x6f18,0x6da8,0x6ad8
58001  .hword 0x6ae8,0x6af8,0x6b08,0x6db8,0x6dc8,0x6f28,0x6de8,0x6b58
58002  .hword 0x6b68,0x6b78,0x6b88,0x000f,0x7018,0x7028,0x7038,0x7048
58003  .hword 0x7058,0x7061,0x7071,0x0006,0x6c08,0x6c18,0x6e68,0x6c38
58004  .hword 0x6868,0x6878,0x6888,0x6898,0x6c48,0x6c58,0x6e78,0x6c78
58005  .hword 0x68e8,0x68f8,0x6908,0x6918,0x6c88,0x6c98,0x6e88,0x6cb8
58006  .hword 0x6968,0x6978,0x6988,0x6998,0x0000,0x0040,0x6d38,0x6d48
58007  .hword 0x6f08,0x6d68,0x6a58,0x6a68,0x6a78,0x6a88,0x6d78,0x6d88
58008  .hword 0x6f18,0x6da8,0x6ad8,0x6ae8,0x6af8,0x6b08,0x6db8,0x6dc8
58009  .hword 0x6f28,0x6de8,0x6b58,0x6b68,0x6b78,0x6b88,0x0000,0x0040
58010  .hword 0x6c08,0x6c18,0x6e68,0x6c38,0x6868,0x6878,0x6888,0x6898
58011  .hword 0x6c48,0x6c58,0x6e78,0x6c78,0x68e8,0x68f8,0x6908,0x6918
58012  .hword 0x6c88,0x6c98,0x6e88,0x6cb8,0x6968,0x6978,0x6988,0x6998
58013  .hword 0x0000,0x0040,0x6d38,0x6d48,0x6f08,0x6d68,0x6a58,0x6a68
58014  .hword 0x6a78,0x6a88,0x6d78,0x6d88,0x6f18,0x6da8,0x6ad8,0x6ae8
58015  .hword 0x6af8,0x6b08,0x6db8,0x6dc8,0x6f28,0x6de8,0x6b58,0x6b68
58016  .hword 0x6b78,0x6b88,0x0000,0x0040,0x6c08,0x6c18,0x6e68,0x6c38
58017  .hword 0x6868,0x6878,0x6888,0x6898,0x6c48,0x6c58,0x6e78,0x6c78
58018  .hword 0x68e8,0x68f8,0x6908,0x6918,0x6c88,0x6c98,0x6e88,0x6cb8
58019  .hword 0x6968,0x6978,0x6988,0x6998,0x0000,0x0040,0x6d38,0x6d48
58020  .hword 0x6f08,0x6d68,0x6a58,0x6a68,0x6a78,0x6a88,0x6d78,0x6d88
58021  .hword 0x6f18,0x6da8,0x6ad8,0x6ae8,0x6af8,0x6b08,0x6db8,0x6dc8
58022  .hword 0x6f28,0x6de8,0x6b58,0x6b68,0x6b78,0x6b88,0x0000,0x0040
58023  .hword 0x6c08,0x6c18,0x6e68,0x6c38,0x6868,0x6878,0x6888,0x6898
58024  .hword 0x6c48,0x6c58,0x6e78,0x6c78,0x68e8,0x68f8,0x6908,0x6918
58025  .hword 0x6c88,0x6c98,0x6e88,0x6cb8,0x6968,0x6978,0x6988,0x6998
58026  .hword 0x0000,0x0040,0x6d38,0x6d48,0x6f08,0x6d68,0x6a58,0x6a68
58027  .hword 0x6a78,0x6a88,0x6d78,0x6d88,0x6f18,0x6da8,0x6ad8,0x6ae8
58028  .hword 0x6af8,0x6b08,0x6db8,0x6dc8,0x6f28,0x6de8,0x6b58,0x6b68
58029  .hword 0x6b78,0x6b88,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000
58030  .rept 0xf2
58031  .long 0,0,0,0,0,0,0,0
58032  .endr
58033
58034
58035
58036;@ vim:filetype=armasm
58037