32x and sms savestates. Core-independent z80 state. SS bugfixing/refactoring.
[picodrive.git] / cpu / DrZ80 / drz80.s
1 ;@ Reesy's Z80 Emulator Version 0.001\r
2 \r
3 ;@ (c) Copyright 2004 Reesy, All rights reserved\r
4 ;@ DrZ80 is free for non-commercial use.\r
5 \r
6 ;@ For commercial use, separate licencing terms must be obtained.\r
7 \r
8       .data\r
9       .align 4\r
10 \r
11       .global DrZ80Run\r
12       .global DrZ80Ver\r
13 \r
14       .equiv INTERRUPT_MODE,         0  ;@0 = Use internal int handler, 1 = Use Mames int handler\r
15       .equiv FAST_Z80SP,             1  ;@0 = Use mem functions for stack pointer, 1 = Use direct mem pointer\r
16       .equiv UPDATE_CONTEXT,         0\r
17       .equiv DRZ80_XMAP,             1\r
18       .equiv DRZ80_XMAP_MORE_INLINE, 1\r
19 \r
20 .if DRZ80_XMAP\r
21       .equ Z80_MEM_SHIFT, 13\r
22 .endif\r
23 \r
24 .if INTERRUPT_MODE\r
25       .extern Interrupt\r
26 .endif\r
27 \r
28 DrZ80Ver: .long 0x0001\r
29 \r
30 ;@ --------------------------- Defines ----------------------------\r
31 ;@ Make sure that regs/pointers for z80pc to z80sp match up!\r
32 \r
33         z80_icount .req r3\r
34         opcodes    .req r4\r
35         cpucontext .req r5\r
36         z80pc      .req r6\r
37         z80a       .req r7\r
38         z80f       .req r8\r
39         z80bc      .req r9\r
40         z80de      .req r10\r
41         z80hl      .req r11\r
42         z80sp      .req r12     \r
43         z80xx      .req lr\r
44 \r
45         .equ z80pc_pointer,           0                  ;@  0\r
46         .equ z80a_pointer,            z80pc_pointer+4    ;@  4\r
47         .equ z80f_pointer,            z80a_pointer+4     ;@  8\r
48         .equ z80bc_pointer,           z80f_pointer+4     ;@  \r
49         .equ z80de_pointer,           z80bc_pointer+4\r
50         .equ z80hl_pointer,           z80de_pointer+4\r
51         .equ z80sp_pointer,           z80hl_pointer+4\r
52         .equ z80pc_base,              z80sp_pointer+4\r
53         .equ z80sp_base,              z80pc_base+4\r
54         .equ z80ix,                   z80sp_base+4\r
55         .equ z80iy,                   z80ix+4\r
56         .equ z80i,                    z80iy+4\r
57         .equ z80a2,                   z80i+4\r
58         .equ z80f2,                   z80a2+4\r
59         .equ z80bc2,                  z80f2+4\r
60         .equ z80de2,                  z80bc2+4\r
61         .equ z80hl2,                  z80de2+4\r
62         .equ cycles_pointer,          z80hl2+4     \r
63         .equ previouspc,              cycles_pointer+4     \r
64         .equ z80irq,                  previouspc+4\r
65         .equ z80if,                   z80irq+1\r
66         .equ z80im,                   z80if+1\r
67         .equ z80r,                    z80im+1\r
68         .equ z80irqvector,            z80r+1\r
69         .equ z80irqcallback,          z80irqvector+4\r
70         .equ z80_write8,              z80irqcallback+4\r
71         .equ z80_write16,             z80_write8+4\r
72         .equ z80_in,                  z80_write16+4\r
73         .equ z80_out,                 z80_in+4\r
74         .equ z80_read8,               z80_out+4\r
75         .equ z80_read16,              z80_read8+4\r
76         .equ z80_rebaseSP,            z80_read16+4\r
77         .equ z80_rebasePC,            z80_rebaseSP+4\r
78 \r
79         .equ VFlag, 0\r
80         .equ CFlag, 1\r
81         .equ ZFlag, 2\r
82         .equ SFlag, 3\r
83         .equ HFlag, 4\r
84         .equ NFlag, 5\r
85         .equ Flag3, 6\r
86         .equ Flag5, 7\r
87 \r
88         .equ Z80_CFlag, 0\r
89         .equ Z80_NFlag, 1\r
90         .equ Z80_VFlag, 2\r
91         .equ Z80_Flag3, 3\r
92         .equ Z80_HFlag, 4\r
93         .equ Z80_Flag5, 5\r
94         .equ Z80_ZFlag, 6\r
95         .equ Z80_SFlag, 7\r
96 \r
97         .equ Z80_IF1, 1<<0\r
98         .equ Z80_IF2, 1<<1\r
99         .equ Z80_HALT, 1<<2\r
100 \r
101 ;@---------------------------------------\r
102 \r
103 .text\r
104 \r
105 .if DRZ80_XMAP\r
106 \r
107 z80_xmap_read8: @ addr\r
108     ldr r1,[cpucontext,#z80_read8]\r
109     mov r2,r0,lsr #Z80_MEM_SHIFT\r
110     ldr r1,[r1,r2,lsl #2]\r
111     movs r1,r1,lsl #1\r
112     ldrccb r0,[r1,r0]\r
113     bxcc lr\r
114 \r
115 z80_xmap_read8_handler: @ addr, func\r
116     str z80_icount,[cpucontext,#cycles_pointer]\r
117     stmfd sp!,{r12,lr}\r
118     mov lr,pc\r
119     bx r1\r
120     ldr z80_icount,[cpucontext,#cycles_pointer]\r
121     ldmfd sp!,{r12,pc}\r
122 \r
123 z80_xmap_write8: @ data, addr\r
124     ldr r2,[cpucontext,#z80_write8]\r
125     add r2,r2,r1,lsr #Z80_MEM_SHIFT-2\r
126     bic r2,r2,#3\r
127     ldr r2,[r2]\r
128     movs r2,r2,lsl #1\r
129     strccb r0,[r2,r1]\r
130     bxcc lr\r
131 \r
132 z80_xmap_write8_handler: @ data, addr, func\r
133     str z80_icount,[cpucontext,#cycles_pointer]\r
134     mov r3,r0\r
135     mov r0,r1\r
136     mov r1,r3\r
137     stmfd sp!,{r12,lr}\r
138     mov lr,pc\r
139     bx r2\r
140     ldr z80_icount,[cpucontext,#cycles_pointer]\r
141     ldmfd sp!,{r12,pc}\r
142 \r
143 z80_xmap_read16: @ addr\r
144     @ check if we cross bank boundary\r
145     add r1,r0,#1\r
146     eor r1,r1,r0\r
147     tst r1,#1<<Z80_MEM_SHIFT\r
148     bne 0f\r
149 \r
150     ldr r1,[cpucontext,#z80_read8]\r
151     mov r2,r0,lsr #Z80_MEM_SHIFT\r
152     ldr r1,[r1,r2,lsl #2]\r
153     movs r1,r1,lsl #1\r
154     bcs 0f\r
155     ldrb r0,[r1,r0]!\r
156     ldrb r1,[r1,#1]\r
157     orr r0,r0,r1,lsl #8\r
158     bx lr\r
159 \r
160 0:\r
161     @ z80_xmap_read8 will save r3 and r12 for us\r
162     stmfd sp!,{r8,r9,lr}\r
163     mov r8,r0\r
164     bl z80_xmap_read8\r
165     mov r9,r0\r
166     add r0,r8,#1\r
167     bl z80_xmap_read8\r
168     orr r0,r9,r0,lsl #8\r
169     ldmfd sp!,{r8,r9,pc}\r
170 \r
171 z80_xmap_write16: @ data, addr\r
172     add r2,r1,#1\r
173     eor r2,r2,r1\r
174     tst r2,#1<<Z80_MEM_SHIFT\r
175     bne 0f\r
176 \r
177     ldr r2,[cpucontext,#z80_write8]\r
178     add r2,r2,r1,lsr #Z80_MEM_SHIFT-2\r
179     bic r2,r2,#3\r
180     ldr r2,[r2]\r
181     movs r2,r2,lsl #1\r
182     bcs 0f\r
183     strb r0,[r2,r1]!\r
184     mov r0,r0,lsr #8\r
185     strb r0,[r2,#1]\r
186     bx lr\r
187 \r
188 0:\r
189     stmfd sp!,{r8,r9,lr}\r
190     mov r8,r0\r
191     mov r9,r1\r
192     bl z80_xmap_write8\r
193     mov r0,r8,lsr #8\r
194     add r1,r9,#1\r
195     bl z80_xmap_write8\r
196     ldmfd sp!,{r8,r9,pc}\r
197 \r
198 z80_xmap_rebase_pc:\r
199     ldr r1,[cpucontext,#z80_read8]\r
200     mov r2,r0,lsr #Z80_MEM_SHIFT\r
201     ldr r1,[r1,r2,lsl #2]\r
202     movs r1,r1,lsl #1\r
203     strcc r1,[cpucontext,#z80pc_base]\r
204     addcc z80pc,r1,r0\r
205     bxcc lr\r
206 \r
207 z80_bad_jump:\r
208     stmfd sp!,{r3,r12,lr}\r
209     mov lr,pc\r
210     ldr pc,[cpucontext,#z80_rebasePC]\r
211     mov z80pc,r0\r
212     ldmfd sp!,{r3,r12,pc}\r
213 \r
214 z80_xmap_rebase_sp:\r
215     ldr r1,[cpucontext,#z80_read8]\r
216     sub r2,r0,#1\r
217     mov r2,r2,lsl #16\r
218     mov r2,r2,lsr #(Z80_MEM_SHIFT+16)\r
219     ldr r1,[r1,r2,lsl #2]\r
220     movs r1,r1,lsl #1\r
221     strcc r1,[cpucontext,#z80sp_base]\r
222     addcc z80sp,r1,r0\r
223     bxcc lr\r
224 \r
225     stmfd sp!,{r3,r12,lr}\r
226     mov lr,pc\r
227     ldr pc,[cpucontext,#z80_rebaseSP]\r
228     mov z80sp,r0\r
229     ldmfd sp!,{r3,r12,pc}\r
230  \r
231 .endif @ DRZ80_XMAP\r
232 \r
233 \r
234 .macro fetch cycs\r
235         subs z80_icount,z80_icount,#\cycs\r
236 .if UPDATE_CONTEXT\r
237     str z80pc,[cpucontext,#z80pc_pointer]\r
238         str z80_icount,[cpucontext,#cycles_pointer]\r
239         ldr r1,[cpucontext,#z80pc_base]\r
240         sub r2,z80pc,r1\r
241         str r2,[cpucontext,#previouspc]\r
242 .endif\r
243         ldrplb r0,[z80pc],#1\r
244         ldrpl pc,[opcodes,r0, lsl #2]\r
245         bmi z80_execute_end\r
246 .endm\r
247 \r
248 .macro eatcycles cycs\r
249         sub z80_icount,z80_icount,#\cycs\r
250 .if UPDATE_CONTEXT\r
251         str z80_icount,[cpucontext,#cycles_pointer]\r
252 .endif\r
253 .endm\r
254 \r
255 .macro readmem8\r
256 .if UPDATE_CONTEXT\r
257     str z80pc,[cpucontext,#z80pc_pointer]\r
258 .endif\r
259 .if DRZ80_XMAP\r
260 .if !DRZ80_XMAP_MORE_INLINE\r
261     ldr r1,[cpucontext,#z80_read8]\r
262     mov r2,r0,lsr #Z80_MEM_SHIFT\r
263     ldr r1,[r1,r2,lsl #2]\r
264     movs r1,r1,lsl #1\r
265     ldrccb r0,[r1,r0]\r
266     blcs z80_xmap_read8_handler\r
267 .else\r
268     bl z80_xmap_read8\r
269 .endif\r
270 .else ;@ if !DRZ80_XMAP\r
271     stmfd sp!,{r3,r12}\r
272         mov lr,pc\r
273         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
274         ldmfd sp!,{r3,r12}\r
275 .endif\r
276 .endm\r
277 \r
278 .macro readmem8HL\r
279         mov r0,z80hl, lsr #16\r
280         readmem8\r
281 .endm\r
282 \r
283 .macro readmem16\r
284 .if UPDATE_CONTEXT\r
285      str z80pc,[cpucontext,#z80pc_pointer]\r
286 .endif\r
287 .if DRZ80_XMAP\r
288     bl z80_xmap_read16\r
289 .else\r
290         stmfd sp!,{r3,r12}\r
291         mov lr,pc\r
292         ldr pc,[cpucontext,#z80_read16]\r
293         ldmfd sp!,{r3,r12}\r
294 .endif\r
295 .endm\r
296 \r
297 .macro writemem8\r
298 .if UPDATE_CONTEXT\r
299      str z80pc,[cpucontext,#z80pc_pointer]\r
300 .endif\r
301 .if DRZ80_XMAP\r
302 .if DRZ80_XMAP_MORE_INLINE\r
303     ldr r2,[cpucontext,#z80_write8]\r
304     mov lr,r1,lsr #Z80_MEM_SHIFT\r
305     ldr r2,[r2,lr,lsl #2]\r
306     movs r2,r2,lsl #1\r
307     strccb r0,[r2,r1]\r
308     blcs z80_xmap_write8_handler\r
309 .else\r
310     bl z80_xmap_write8\r
311 .endif\r
312 .else ;@ if !DRZ80_XMAP\r
313         stmfd sp!,{r3,r12}\r
314         mov lr,pc\r
315         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
316         ldmfd sp!,{r3,r12}\r
317 .endif\r
318 .endm\r
319 \r
320 .macro writemem8DE\r
321         mov r1,z80de, lsr #16\r
322         writemem8\r
323 .endm\r
324 \r
325 .macro writemem8HL\r
326         mov r1,z80hl, lsr #16\r
327         writemem8\r
328 .endm\r
329 \r
330 .macro writemem16\r
331 .if UPDATE_CONTEXT\r
332      str z80pc,[cpucontext,#z80pc_pointer]\r
333 .endif\r
334 .if DRZ80_XMAP\r
335     bl z80_xmap_write16\r
336 .else\r
337         stmfd sp!,{r3,r12}\r
338         mov lr,pc\r
339         ldr pc,[cpucontext,#z80_write16]                ;@ r0=data r1=addr\r
340         ldmfd sp!,{r3,r12}\r
341 .endif\r
342 .endm\r
343 \r
344 .macro copymem8HL_DE\r
345 .if UPDATE_CONTEXT\r
346      str z80pc,[cpucontext,#z80pc_pointer]\r
347 .endif\r
348         mov r0,z80hl, lsr #16\r
349 .if DRZ80_XMAP\r
350     bl z80_xmap_read8\r
351 .else\r
352     stmfd sp!,{r3,r12}\r
353         mov lr,pc\r
354         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
355 .endif\r
356         mov r1,z80de, lsr #16\r
357 .if DRZ80_XMAP\r
358     bl z80_xmap_write8\r
359 .else\r
360         mov lr,pc\r
361         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
362         ldmfd sp!,{r3,r12}\r
363 .endif\r
364 .endm\r
365 ;@---------------------------------------\r
366 \r
367 .macro rebasepc\r
368 .if UPDATE_CONTEXT\r
369      str z80pc,[cpucontext,#z80pc_pointer]\r
370 .endif\r
371 .if DRZ80_XMAP\r
372     bl z80_xmap_rebase_pc\r
373 .else\r
374     stmfd sp!,{r3,r12}\r
375         mov lr,pc\r
376         ldr pc,[cpucontext,#z80_rebasePC]               ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
377         ldmfd sp!,{r3,r12}\r
378         mov z80pc,r0\r
379 .endif\r
380 .endm\r
381 \r
382 .macro rebasesp\r
383 .if UPDATE_CONTEXT\r
384      str z80pc,[cpucontext,#z80pc_pointer]\r
385 .endif\r
386 .if DRZ80_XMAP\r
387     bl z80_xmap_rebase_sp\r
388 .else\r
389         stmfd sp!,{r3,r12}\r
390         mov lr,pc\r
391         ldr pc,[cpucontext,#z80_rebaseSP]               ;@ external function must rebase sp\r
392         ldmfd sp!,{r3,r12}\r
393         mov z80sp,r0\r
394 .endif\r
395 .endm\r
396 ;@----------------------------------------------------------------------------\r
397 \r
398 .macro opADC\r
399         movs z80f,z80f,lsr#2                                    ;@ get C\r
400         subcs r0,r0,#0x100\r
401         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of half carry\r
402         adcs z80a,z80a,r0,ror#8\r
403         mrs r0,cpsr                                                             ;@ S,Z,V&C\r
404         eor z80f,z80f,z80a,lsr#24\r
405         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
406         orr z80f,z80f,r0,lsr#28\r
407 .endm\r
408 \r
409 .macro opADCA\r
410         movs z80f,z80f,lsr#2                                    ;@ get C\r
411         orrcs z80a,z80a,#0x00800000\r
412         adds z80a,z80a,z80a\r
413         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
414         mov z80f,z80f,lsr#28\r
415         tst z80a,#0x10000000                                    ;@ H, correct\r
416         orrne z80f,z80f,#1<<HFlag\r
417         fetch 4\r
418 .endm\r
419 \r
420 .macro opADCH reg\r
421         mov r0,\reg,lsr#24\r
422         opADC\r
423         fetch 4\r
424 .endm\r
425 \r
426 .macro opADCL reg\r
427         movs z80f,z80f,lsr#2                                    ;@ get C\r
428         adc r0,\reg,\reg,lsr#15\r
429         orrcs z80a,z80a,#0x00800000\r
430         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
431         adds z80a,z80a,r0,lsl#23\r
432         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
433         mov z80f,z80f,lsr#28\r
434         cmn r1,r0,lsl#27\r
435         orrcs z80f,z80f,#1<<HFlag                               ;@ H, correct\r
436         fetch 4\r
437 .endm\r
438 \r
439 .macro opADCb\r
440         opADC\r
441 .endm\r
442 ;@---------------------------------------\r
443 \r
444 .macro opADD reg shift\r
445         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
446         adds z80a,z80a,\reg,lsl#\shift\r
447         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
448         mov z80f,z80f,lsr#28\r
449         cmn r1,\reg,lsl#\shift+4\r
450         orrcs z80f,z80f,#1<<HFlag\r
451 .endm\r
452 \r
453 .macro opADDA\r
454         adds z80a,z80a,z80a\r
455         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
456         mov z80f,z80f,lsr#28\r
457         tst z80a,#0x10000000                                    ;@ H, correct\r
458         orrne z80f,z80f,#1<<HFlag\r
459         fetch 4\r
460 .endm\r
461 \r
462 .macro opADDH reg\r
463         and r0,\reg,#0xFF000000\r
464         opADD r0 0\r
465         fetch 4\r
466 .endm\r
467 \r
468 .macro opADDL reg\r
469         opADD \reg 8\r
470         fetch 4\r
471 .endm\r
472 \r
473 .macro opADDb \r
474         opADD r0 24\r
475 .endm\r
476 ;@---------------------------------------\r
477 \r
478 .macro opADC16 reg\r
479         movs z80f,z80f,lsr#2                                    ;@ get C\r
480         adc r0,z80a,\reg,lsr#15\r
481         orrcs z80hl,z80hl,#0x00008000\r
482         mov r1,z80hl,lsl#4\r
483         adds z80hl,z80hl,r0,lsl#15\r
484         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
485         mov z80f,z80f,lsr#28\r
486         cmn r1,r0,lsl#19\r
487         orrcs z80f,z80f,#1<<HFlag\r
488         fetch 15\r
489 .endm\r
490 \r
491 .macro opADC16HL\r
492         movs z80f,z80f,lsr#2                                    ;@ get C\r
493         orrcs z80hl,z80hl,#0x00008000\r
494         adds z80hl,z80hl,z80hl\r
495         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
496         mov z80f,z80f,lsr#28\r
497         tst z80hl,#0x10000000                                   ;@ H, correct.\r
498         orrne z80f,z80f,#1<<HFlag\r
499         fetch 15\r
500 .endm\r
501 \r
502 .macro opADD16 reg1 reg2\r
503         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
504         adds \reg1,\reg1,\reg2\r
505         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
506         orrcs z80f,z80f,#1<<CFlag\r
507         cmn r1,\reg2,lsl#4\r
508         orrcs z80f,z80f,#1<<HFlag\r
509 .endm\r
510 \r
511 .macro opADD16s reg1 reg2 shift\r
512         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
513         adds \reg1,\reg1,\reg2,lsl#\shift\r
514         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
515         orrcs z80f,z80f,#1<<CFlag\r
516         cmn r1,\reg2,lsl#4+\shift\r
517         orrcs z80f,z80f,#1<<HFlag\r
518 .endm\r
519 \r
520 .macro opADD16_2 reg\r
521         adds \reg,\reg,\reg\r
522         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
523         orrcs z80f,z80f,#1<<CFlag\r
524         tst \reg,#0x10000000                                    ;@ H, correct.\r
525         orrne z80f,z80f,#1<<HFlag\r
526 .endm\r
527 ;@---------------------------------------\r
528 \r
529 .macro opAND reg shift\r
530         and z80a,z80a,\reg,lsl#\shift\r
531         sub r0,opcodes,#0x100\r
532         ldrb z80f,[r0,z80a, lsr #24]\r
533         orr z80f,z80f,#1<<HFlag\r
534 .endm\r
535 \r
536 .macro opANDA\r
537         sub r0,opcodes,#0x100\r
538         ldrb z80f,[r0,z80a, lsr #24]\r
539         orr z80f,z80f,#1<<HFlag\r
540         fetch 4\r
541 .endm\r
542 \r
543 .macro opANDH reg\r
544         opAND \reg 0\r
545         fetch 4\r
546 .endm\r
547 \r
548 .macro opANDL reg\r
549         opAND \reg 8\r
550         fetch 4\r
551 .endm\r
552 \r
553 .macro opANDb\r
554         opAND r0 24\r
555 .endm\r
556 ;@---------------------------------------\r
557 \r
558 .macro opBITH reg bit\r
559         and z80f,z80f,#1<<CFlag\r
560         tst \reg,#1<<(24+\bit)\r
561         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
562         orrne z80f,z80f,#(1<<HFlag)\r
563         fetch 8\r
564 .endm\r
565 \r
566 .macro opBIT7H reg\r
567         and z80f,z80f,#1<<CFlag\r
568         tst \reg,#1<<(24+7)\r
569         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
570         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
571         fetch 8\r
572 .endm\r
573 \r
574 .macro opBITL reg bit\r
575         and z80f,z80f,#1<<CFlag\r
576         tst \reg,#1<<(16+\bit)\r
577         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
578         orrne z80f,z80f,#(1<<HFlag)\r
579         fetch 8\r
580 .endm\r
581 \r
582 .macro opBIT7L reg\r
583         and z80f,z80f,#1<<CFlag\r
584         tst \reg,#1<<(16+7)\r
585         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
586         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
587         fetch 8\r
588 .endm\r
589 \r
590 .macro opBITb bit\r
591         and z80f,z80f,#1<<CFlag\r
592         tst r0,#1<<\bit\r
593         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
594         orrne z80f,z80f,#(1<<HFlag)\r
595 .endm\r
596 \r
597 .macro opBIT7b\r
598         and z80f,z80f,#1<<CFlag\r
599         tst r0,#1<<7\r
600         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
601         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
602 .endm\r
603 ;@---------------------------------------\r
604 \r
605 .macro opCP reg shift\r
606         mov r1,z80a,lsl#4                                               ;@ prepare for check of half carry\r
607         cmp z80a,\reg,lsl#\shift\r
608         mrs z80f,cpsr\r
609         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
610         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
611         cmp r1,\reg,lsl#\shift+4\r
612         orrcc z80f,z80f,#1<<HFlag\r
613 .endm\r
614 \r
615 .macro opCPA\r
616         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
617         fetch 4\r
618 .endm\r
619 \r
620 .macro opCPH reg\r
621         and r0,\reg,#0xFF000000\r
622         opCP r0 0\r
623         fetch 4\r
624 .endm\r
625 \r
626 .macro opCPL reg\r
627         opCP \reg 8\r
628         fetch 4\r
629 .endm\r
630 \r
631 .macro opCPb\r
632         opCP r0 24\r
633 .endm\r
634 ;@---------------------------------------\r
635 \r
636 .macro opDEC8 reg                                                       ;@for A and memory\r
637         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
638         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
639         tst \reg,#0x0f000000\r
640         orreq z80f,z80f,#1<<HFlag\r
641         subs \reg,\reg,#0x01000000\r
642         orrmi z80f,z80f,#1<<SFlag\r
643         orrvs z80f,z80f,#1<<VFlag\r
644         orreq z80f,z80f,#1<<ZFlag\r
645 .endm\r
646 \r
647 .macro opDEC8H reg                                                      ;@for B, D & H\r
648         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
649         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
650         tst \reg,#0x0f000000\r
651         orreq z80f,z80f,#1<<HFlag\r
652         subs \reg,\reg,#0x01000000\r
653         orrmi z80f,z80f,#1<<SFlag\r
654         orrvs z80f,z80f,#1<<VFlag\r
655         tst \reg,#0xff000000                                    ;@Z\r
656         orreq z80f,z80f,#1<<ZFlag\r
657 .endm\r
658 \r
659 .macro opDEC8L reg                                                      ;@for C, E & L\r
660         mov \reg,\reg,ror#24\r
661         opDEC8H \reg\r
662         mov \reg,\reg,ror#8\r
663 .endm\r
664 \r
665 .macro opDEC8b                                                          ;@for memory\r
666         mov r0,r0,lsl#24\r
667         opDEC8 r0\r
668         mov r0,r0,lsr#24\r
669 .endm\r
670 ;@---------------------------------------\r
671 \r
672 .macro opIN\r
673         stmfd sp!,{r3,r12}\r
674         mov lr,pc\r
675         ldr pc,[cpucontext,#z80_in]                             ;@ r0=port - data returned in r0\r
676         ldmfd sp!,{r3,r12}\r
677 .endm\r
678 \r
679 .macro opIN_C\r
680         mov r0,z80bc, lsr #16\r
681         opIN\r
682 .endm\r
683 ;@---------------------------------------\r
684 \r
685 .macro opINC8 reg                                                       ;@for A and memory\r
686         and z80f,z80f,#1<<CFlag                                 ;@save carry, clear n\r
687         adds \reg,\reg,#0x01000000\r
688         orrmi z80f,z80f,#1<<SFlag\r
689         orrvs z80f,z80f,#1<<VFlag\r
690         orrcs z80f,z80f,#1<<ZFlag                               ;@cs when going from 0xFF to 0x00\r
691         tst \reg,#0x0f000000\r
692         orreq z80f,z80f,#1<<HFlag\r
693 .endm\r
694 \r
695 .macro opINC8H reg                                                      ;@for B, D & H\r
696         opINC8 \reg\r
697 .endm\r
698 \r
699 .macro opINC8L reg                                                      ;@for C, E & L\r
700         mov \reg,\reg,ror#24\r
701         opINC8 \reg\r
702         mov \reg,\reg,ror#8\r
703 .endm\r
704 \r
705 .macro opINC8b                                                          ;@for memory\r
706         mov r0,r0,lsl#24\r
707         opINC8 r0\r
708         mov r0,r0,lsr#24\r
709 .endm\r
710 ;@---------------------------------------\r
711 \r
712 .macro opOR reg shift\r
713         orr z80a,z80a,\reg,lsl#\shift\r
714         sub r0,opcodes,#0x100\r
715         ldrb z80f,[r0,z80a, lsr #24]\r
716 .endm\r
717 \r
718 .macro opORA\r
719         sub r0,opcodes,#0x100\r
720         ldrb z80f,[r0,z80a, lsr #24]\r
721         fetch 4\r
722 .endm\r
723 \r
724 .macro opORH reg\r
725         and r0,\reg,#0xFF000000\r
726         opOR r0 0\r
727         fetch 4\r
728 .endm\r
729 \r
730 .macro opORL reg\r
731         opOR \reg 8\r
732         fetch 4\r
733 .endm\r
734 \r
735 .macro opORb\r
736         opOR r0 24\r
737 .endm\r
738 ;@---------------------------------------\r
739 \r
740 .macro opOUT\r
741         stmfd sp!,{r3,r12}\r
742         mov lr,pc\r
743         ldr pc,[cpucontext,#z80_out]                    ;@ r0=port r1=data\r
744         ldmfd sp!,{r3,r12}\r
745 .endm\r
746 \r
747 .macro opOUT_C\r
748         mov r0,z80bc, lsr #16\r
749         opOUT\r
750 .endm\r
751 ;@---------------------------------------\r
752 \r
753 .macro opPOP\r
754 .if FAST_Z80SP\r
755         ldrb r0,[z80sp],#1\r
756         ldrb r1,[z80sp],#1\r
757         orr r0,r0,r1, lsl #8\r
758 .else\r
759         mov r0,z80sp\r
760         readmem16\r
761         add z80sp,z80sp,#2\r
762 .endif\r
763 .endm\r
764 \r
765 .macro opPOPreg reg\r
766         opPOP\r
767         mov \reg,r0, lsl #16\r
768         fetch 10\r
769 .endm\r
770 ;@---------------------------------------\r
771 \r
772 .macro stack_check\r
773     @ try to protect against stack overflows, lock into current bank\r
774     ldr r1,[cpucontext,#z80sp_base]\r
775     sub r1,z80sp,r1\r
776     cmp r1,#2\r
777     addlt z80sp,z80sp,#1<<Z80_MEM_SHIFT\r
778 .endm\r
779 \r
780 .macro opPUSHareg reg @ reg > r1\r
781 .if FAST_Z80SP\r
782 .if DRZ80_XMAP\r
783         stack_check\r
784 .endif\r
785         mov r1,\reg, lsr #8\r
786         strb r1,[z80sp,#-1]!\r
787         strb \reg,[z80sp,#-1]!\r
788 .else\r
789     mov r0,\reg\r
790         sub z80sp,z80sp,#2\r
791         mov r1,z80sp\r
792         writemem16\r
793 .endif\r
794 .endm\r
795 \r
796 .macro opPUSHreg reg\r
797 .if FAST_Z80SP\r
798 .if DRZ80_XMAP\r
799         stack_check\r
800 .endif\r
801     mov r1,\reg, lsr #24\r
802         strb r1,[z80sp,#-1]!\r
803         mov r1,\reg, lsr #16\r
804         strb r1,[z80sp,#-1]!\r
805 .else\r
806         mov r0,\reg,lsr #16\r
807         sub z80sp,z80sp,#2\r
808         mov r1,z80sp\r
809         writemem16\r
810 .endif\r
811 .endm\r
812 ;@---------------------------------------\r
813 \r
814 .macro opRESmemHL bit\r
815         mov r0,z80hl, lsr #16\r
816 .if DRZ80_XMAP\r
817         bl z80_xmap_read8\r
818         bic r0,r0,#1<<\bit\r
819         mov r1,z80hl, lsr #16\r
820         bl z80_xmap_write8\r
821 .else\r
822         stmfd sp!,{r3,r12}\r
823         mov lr,pc\r
824         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
825         bic r0,r0,#1<<\bit\r
826         mov r1,z80hl, lsr #16\r
827         mov lr,pc\r
828         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
829         ldmfd sp!,{r3,r12}\r
830 .endif\r
831     fetch 15\r
832 .endm\r
833 ;@---------------------------------------\r
834 \r
835 .macro opRESmem bit\r
836 .if DRZ80_XMAP\r
837         stmfd sp!,{r0}                                                  ;@ save addr as well\r
838         bl z80_xmap_read8\r
839         bic r0,r0,#1<<\bit\r
840         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
841         bl z80_xmap_write8\r
842 .else\r
843         stmfd sp!,{r3,r12}\r
844         stmfd sp!,{r0}                                                  ;@ save addr as well\r
845         mov lr,pc\r
846         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
847         bic r0,r0,#1<<\bit\r
848         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
849         mov lr,pc\r
850         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
851         ldmfd sp!,{r3,r12}\r
852 .endif\r
853         fetch 23\r
854 .endm\r
855 ;@---------------------------------------\r
856 \r
857 .macro opRL reg1 reg2 shift\r
858         movs \reg1,\reg2,lsl \shift\r
859         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
860         orrne \reg1,\reg1,#0x01000000\r
861 ;@      and r2,z80f,#1<<CFlag\r
862 ;@      orr $x,$x,r2,lsl#23\r
863         sub r1,opcodes,#0x100\r
864         ldrb z80f,[r1,\reg1,lsr#24]                             ;@get PZS\r
865         orrcs z80f,z80f,#1<<CFlag\r
866 .endm\r
867 \r
868 .macro opRLA\r
869         opRL z80a, z80a, #1\r
870         fetch 8\r
871 .endm\r
872 \r
873 .macro opRLH reg\r
874         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
875         adds \reg,\reg,r0\r
876         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
877         orrne \reg,\reg,#0x01000000\r
878         sub r1,opcodes,#0x100\r
879         ldrb z80f,[r1,\reg,lsr#24]                              ;@get PZS\r
880         orrcs z80f,z80f,#1<<CFlag\r
881         fetch 8\r
882 .endm\r
883 \r
884 .macro opRLL reg\r
885         opRL r0, \reg, #9\r
886         and \reg,\reg,#0xFF000000                               ;@mask out high\r
887         orr \reg,\reg,r0,lsr#8\r
888         fetch 8\r
889 .endm\r
890 \r
891 .macro opRLb\r
892         opRL r0, r0, #25\r
893         mov r0,r0,lsr#24\r
894 .endm\r
895 ;@---------------------------------------\r
896 \r
897 .macro opRLC reg1 reg2 shift\r
898         movs \reg1,\reg2,lsl#\shift\r
899         orrcs \reg1,\reg1,#0x01000000\r
900         sub r1,opcodes,#0x100\r
901         ldrb z80f,[r1,\reg1,lsr#24]\r
902         orrcs z80f,z80f,#1<<CFlag\r
903 .endm\r
904 \r
905 .macro opRLCA\r
906         opRLC z80a, z80a, 1\r
907         fetch 8\r
908 .endm\r
909 \r
910 .macro opRLCH reg\r
911         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
912         adds \reg,\reg,r0\r
913         orrcs \reg,\reg,#0x01000000\r
914         sub r1,opcodes,#0x100\r
915         ldrb z80f,[r1,\reg,lsr#24]\r
916         orrcs z80f,z80f,#1<<CFlag\r
917         fetch 8\r
918 .endm\r
919 \r
920 .macro opRLCL reg\r
921         opRLC r0, \reg, 9\r
922         and \reg,\reg,#0xFF000000                               ;@mask out high\r
923         orr \reg,\reg,r0,lsr#8\r
924         fetch 8\r
925 .endm\r
926 \r
927 .macro opRLCb\r
928         opRLC r0, r0, 25\r
929         mov r0,r0,lsr#24\r
930 .endm\r
931 ;@---------------------------------------\r
932 \r
933 .macro opRR reg1 reg2 shift\r
934         movs \reg1,\reg2,lsr#\shift\r
935         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
936         orrne \reg1,\reg1,#0x00000080\r
937 ;@      and r2,z80_f,#PSR_C\r
938 ;@      orr \reg1,\reg1,r2,lsl#6\r
939         sub r1,opcodes,#0x100\r
940         ldrb z80f,[r1,\reg1]\r
941         orrcs z80f,z80f,#1<<CFlag\r
942 .endm\r
943 \r
944 .macro opRRA\r
945         orr z80a,z80a,z80f,lsr#1                                ;@get C\r
946         movs z80a,z80a,ror#25\r
947         mov z80a,z80a,lsl#24\r
948         sub r1,opcodes,#0x100\r
949         ldrb z80f,[r1,z80a,lsr#24]\r
950         orrcs z80f,z80f,#1<<CFlag\r
951         fetch 8\r
952 .endm\r
953 \r
954 .macro opRRH reg\r
955         orr r0,\reg,z80f,lsr#1                                  ;@get C\r
956         movs r0,r0,ror#25\r
957         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
958         orr \reg,\reg,r0,lsl#24\r
959         sub r1,opcodes,#0x100\r
960         ldrb z80f,[r1,\reg,lsr#24]\r
961         orrcs z80f,z80f,#1<<CFlag\r
962         fetch 8\r
963 .endm\r
964 \r
965 .macro opRRL reg\r
966         and r0,\reg,#0x00FF0000                                 ;@mask out low to r0\r
967         opRR r0 r0 17\r
968         and \reg,\reg,#0xFF000000                               ;@mask out high\r
969         orr \reg,\reg,r0,lsl#16\r
970         fetch 8\r
971 .endm\r
972 \r
973 .macro opRRb\r
974         opRR r0 r0 1\r
975 .endm\r
976 ;@---------------------------------------\r
977 \r
978 .macro opRRC reg1 reg2 shift\r
979         movs \reg1,\reg2,lsr#\shift\r
980         orrcs \reg1,\reg1,#0x00000080\r
981         sub r1,opcodes,#0x100\r
982         ldrb z80f,[r1,\reg1]\r
983         orrcs z80f,z80f,#1<<CFlag\r
984 .endm\r
985 \r
986 .macro opRRCA\r
987         opRRC z80a, z80a, 25\r
988         mov z80a,z80a,lsl#24\r
989         fetch 8\r
990 .endm\r
991 \r
992 .macro opRRCH reg\r
993         opRRC r0, \reg, 25\r
994         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
995         orr \reg,\reg,r0,lsl#24\r
996         fetch 8\r
997 .endm\r
998 \r
999 .macro opRRCL reg\r
1000         and r0,\reg,#0x00FF0000                                 ;@mask low to r0\r
1001         opRRC r0, r0, 17\r
1002         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1003         orr \reg,\reg,r0,lsl#16\r
1004         fetch 8\r
1005 .endm\r
1006 \r
1007 .macro opRRCb\r
1008         opRRC r0, r0, 1\r
1009 .endm\r
1010 ;@---------------------------------------\r
1011 \r
1012 .macro opRST addr\r
1013         ldr r0,[cpucontext,#z80pc_base]\r
1014         sub r2,z80pc,r0\r
1015     opPUSHareg r2\r
1016         mov r0,#\addr\r
1017         rebasepc\r
1018         fetch 11\r
1019 .endm\r
1020 ;@---------------------------------------\r
1021 \r
1022 .macro opSBC\r
1023         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1024         movs z80f,z80f,lsr#2                                    ;@ get C\r
1025         subcc r0,r0,#0x100\r
1026         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of H\r
1027         sbcs z80a,z80a,r0,ror#8\r
1028         mrs r0,cpsr\r
1029         eor z80f,z80f,z80a,lsr#24\r
1030         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
1031         orr z80f,z80f,r0,lsr#28                                 ;@ S,Z,V&C\r
1032         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1033 .endm\r
1034 \r
1035 .macro opSBCA\r
1036         movs z80f,z80f,lsr#2                                    ;@ get C\r
1037         movcc z80a,#0x00000000\r
1038         movcs z80a,#0xFF000000\r
1039         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1040         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1041         fetch 4\r
1042 .endm\r
1043 \r
1044 .macro opSBCH reg\r
1045         mov r0,\reg,lsr#24\r
1046         opSBC\r
1047         fetch 4\r
1048 .endm\r
1049 \r
1050 .macro opSBCL reg\r
1051         mov r0,\reg,lsl#8\r
1052         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1053         movs z80f,z80f,lsr#2                                    ;@ get C\r
1054         sbccc r0,r0,#0xFF000000\r
1055         mov r1,z80a,lsl#4                                               ;@ prepare for check of H\r
1056         sbcs z80a,z80a,r0\r
1057         mrs z80f,cpsr\r
1058         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1059         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1060         cmp r1,r0,lsl#4\r
1061         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1062         fetch 4\r
1063 .endm\r
1064 \r
1065 .macro opSBCb\r
1066         opSBC\r
1067 .endm\r
1068 ;@---------------------------------------\r
1069 \r
1070 .macro opSBC16 reg\r
1071         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1072         movs z80f,z80f,lsr#2                                    ;@ get C\r
1073         sbc r1,r1,r1                                                    ;@ set r1 to -1 or 0.\r
1074         orr r0,\reg,r1,lsr#16\r
1075         mov r1,z80hl,lsl#4                                              ;@ prepare for check of H\r
1076         sbcs z80hl,z80hl,r0\r
1077         mrs z80f,cpsr\r
1078         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1079         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1080         cmp r1,r0,lsl#4\r
1081         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1082         fetch 15\r
1083 .endm\r
1084 \r
1085 .macro opSBC16HL\r
1086         movs z80f,z80f,lsr#2                                    ;@ get C\r
1087         mov z80hl,#0x00000000\r
1088         subcs z80hl,z80hl,#0x00010000\r
1089         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1090         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1091         fetch 15\r
1092 .endm\r
1093 ;@---------------------------------------\r
1094 \r
1095 .macro opSETmemHL bit\r
1096         mov r0,z80hl, lsr #16\r
1097 .if DRZ80_XMAP\r
1098         bl z80_xmap_read8\r
1099         orr r0,r0,#1<<\bit\r
1100         mov r1,z80hl, lsr #16\r
1101         bl z80_xmap_write8\r
1102 .else\r
1103         stmfd sp!,{r3,r12}\r
1104         mov lr,pc\r
1105         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
1106         orr r0,r0,#1<<\bit\r
1107         mov r1,z80hl, lsr #16\r
1108         mov lr,pc\r
1109         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1110         ldmfd sp!,{r3,r12}\r
1111 .endif\r
1112     fetch 15\r
1113 .endm\r
1114 ;@---------------------------------------\r
1115 \r
1116 .macro opSETmem bit\r
1117 .if DRZ80_XMAP\r
1118         stmfd sp!,{r0}  ;@ save addr as well\r
1119         bl z80_xmap_read8\r
1120         orr r0,r0,#1<<\bit\r
1121         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1122         bl z80_xmap_write8\r
1123 .else\r
1124         stmfd sp!,{r3,r12}\r
1125         stmfd sp!,{r0}  ;@ save addr as well\r
1126         mov lr,pc\r
1127         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
1128         orr r0,r0,#1<<\bit\r
1129         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1130         mov lr,pc\r
1131         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1132         ldmfd sp!,{r3,r12}\r
1133 .endif\r
1134         fetch 23\r
1135 .endm\r
1136 ;@---------------------------------------\r
1137 \r
1138 .macro opSLA reg1 reg2 shift\r
1139         movs \reg1,\reg2,lsl#\shift\r
1140         sub r1,opcodes,#0x100\r
1141         ldrb z80f,[r1,\reg1,lsr#24]\r
1142         orrcs z80f,z80f,#1<<CFlag\r
1143 .endm\r
1144 \r
1145 .macro opSLAA\r
1146         opSLA z80a, z80a, 1\r
1147         fetch 8\r
1148 .endm\r
1149 \r
1150 .macro opSLAH reg\r
1151         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1152         adds \reg,\reg,r0\r
1153         sub r1,opcodes,#0x100\r
1154         ldrb z80f,[r1,\reg,lsr#24]\r
1155         orrcs z80f,z80f,#1<<CFlag\r
1156         fetch 8\r
1157 .endm\r
1158 \r
1159 .macro opSLAL reg\r
1160         opSLA r0, \reg, 9\r
1161         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1162         orr \reg,\reg,r0,lsr#8\r
1163         fetch 8\r
1164 .endm\r
1165 \r
1166 .macro opSLAb\r
1167         opSLA r0, r0, 25\r
1168         mov r0,r0,lsr#24\r
1169 .endm\r
1170 ;@---------------------------------------\r
1171 \r
1172 .macro opSLL reg1 reg2 shift\r
1173         movs \reg1,\reg2,lsl#\shift\r
1174         orr \reg1,\reg1,#0x01000000\r
1175         sub r1,opcodes,#0x100\r
1176         ldrb z80f,[r1,\reg1,lsr#24]\r
1177         orrcs z80f,z80f,#1<<CFlag\r
1178 .endm\r
1179 \r
1180 .macro opSLLA\r
1181         opSLL z80a, z80a, 1\r
1182         fetch 8\r
1183 .endm\r
1184 \r
1185 .macro opSLLH reg\r
1186         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1187         adds \reg,\reg,r0\r
1188         orr \reg,\reg,#0x01000000\r
1189         sub r1,opcodes,#0x100\r
1190         ldrb z80f,[r1,\reg,lsr#24]\r
1191         orrcs z80f,z80f,#1<<CFlag\r
1192         fetch 8\r
1193 .endm\r
1194 \r
1195 .macro opSLLL reg\r
1196         opSLL r0, \reg, 9\r
1197         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1198         orr \reg,\reg,r0,lsr#8\r
1199         fetch 8\r
1200 .endm\r
1201 \r
1202 .macro opSLLb\r
1203         opSLL r0, r0, 25\r
1204         mov r0,r0,lsr#24\r
1205 .endm\r
1206 ;@---------------------------------------\r
1207 \r
1208 .macro opSRA reg1 reg2\r
1209         movs \reg1,\reg2,asr#25\r
1210         and \reg1,\reg1,#0xFF\r
1211         sub r1,opcodes,#0x100\r
1212         ldrb z80f,[r1,\reg1]\r
1213         orrcs z80f,z80f,#1<<CFlag\r
1214 .endm\r
1215 \r
1216 .macro opSRAA\r
1217         movs r0,z80a,asr#25\r
1218         mov z80a,r0,lsl#24\r
1219         sub r1,opcodes,#0x100\r
1220         ldrb z80f,[r1,z80a,lsr#24]\r
1221         orrcs z80f,z80f,#1<<CFlag\r
1222         fetch 8\r
1223 .endm\r
1224 \r
1225 .macro opSRAH reg\r
1226         movs r0,\reg,asr#25\r
1227         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1228         orr \reg,\reg,r0,lsl#24\r
1229         sub r1,opcodes,#0x100\r
1230         ldrb z80f,[r1,\reg,lsr#24]\r
1231         orrcs z80f,z80f,#1<<CFlag\r
1232         fetch 8\r
1233 .endm\r
1234 \r
1235 .macro opSRAL reg\r
1236         mov r0,\reg,lsl#8\r
1237         opSRA r0, r0\r
1238         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1239         orr \reg,\reg,r0,lsl#16\r
1240         fetch 8\r
1241 .endm\r
1242 \r
1243 .macro opSRAb\r
1244         mov r0,r0,lsl#24\r
1245         opSRA r0, r0\r
1246 .endm\r
1247 ;@---------------------------------------\r
1248 \r
1249 .macro opSRL reg1 reg2 shift\r
1250         movs \reg1,\reg2,lsr#\shift\r
1251         sub r1,opcodes,#0x100\r
1252         ldrb z80f,[r1,\reg1]\r
1253         orrcs z80f,z80f,#1<<CFlag\r
1254 .endm\r
1255 \r
1256 .macro opSRLA\r
1257         opSRL z80a, z80a, 25\r
1258         mov z80a,z80a,lsl#24\r
1259         fetch 8\r
1260 .endm\r
1261 \r
1262 .macro opSRLH reg\r
1263         opSRL r0, \reg, 25\r
1264         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1265         orr \reg,\reg,r0,lsl#24\r
1266         fetch 8\r
1267 .endm\r
1268 \r
1269 .macro opSRLL reg\r
1270         mov r0,\reg,lsl#8\r
1271         opSRL r0, r0, 25\r
1272         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1273         orr \reg,\reg,r0,lsl#16\r
1274         fetch 8\r
1275 .endm\r
1276 \r
1277 .macro opSRLb\r
1278         opSRL r0, r0, 1\r
1279 .endm\r
1280 ;@---------------------------------------\r
1281 \r
1282 .macro opSUB reg shift\r
1283         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
1284         subs z80a,z80a,\reg,lsl#\shift\r
1285         mrs z80f,cpsr\r
1286         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1287         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
1288         cmp r1,\reg,lsl#\shift+4\r
1289         orrcc z80f,z80f,#1<<HFlag\r
1290 .endm\r
1291 \r
1292 .macro opSUBA\r
1293         mov z80a,#0\r
1294         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
1295         fetch 4\r
1296 .endm\r
1297 \r
1298 .macro opSUBH reg\r
1299         and r0,\reg,#0xFF000000\r
1300         opSUB r0, 0\r
1301         fetch 4\r
1302 .endm\r
1303 \r
1304 .macro opSUBL reg\r
1305         opSUB \reg, 8\r
1306         fetch 4\r
1307 .endm\r
1308 \r
1309 .macro opSUBb\r
1310         opSUB r0, 24\r
1311 .endm\r
1312 ;@---------------------------------------\r
1313 \r
1314 .macro opXOR reg shift\r
1315         eor z80a,z80a,\reg,lsl#\shift\r
1316         sub r0,opcodes,#0x100\r
1317         ldrb z80f,[r0,z80a, lsr #24]\r
1318 .endm\r
1319 \r
1320 .macro opXORA\r
1321         mov z80a,#0\r
1322         mov z80f,#(1<<ZFlag)|(1<<VFlag)\r
1323         fetch 4\r
1324 .endm\r
1325 \r
1326 .macro opXORH reg\r
1327         and r0,\reg,#0xFF000000\r
1328         opXOR r0, 0\r
1329         fetch 4\r
1330 .endm\r
1331 \r
1332 .macro opXORL reg\r
1333         opXOR \reg, 8\r
1334         fetch 4\r
1335 .endm\r
1336 \r
1337 .macro opXORb\r
1338         opXOR r0, 24\r
1339 .endm\r
1340 ;@---------------------------------------\r
1341 \r
1342 \r
1343 ;@ --------------------------- Framework --------------------------\r
1344     \r
1345 .text\r
1346 \r
1347 DrZ80Run:\r
1348         ;@ r0 = pointer to cpu context\r
1349         ;@ r1 = ISTATES to execute  \r
1350         ;@#########################################   \r
1351         stmdb sp!,{r4-r12,lr}                                   ;@ save registers on stack\r
1352         mov cpucontext,r0                                               ;@ setup main memory pointer\r
1353         mov z80_icount,r1                                               ;@ setup number of Tstates to execute\r
1354 \r
1355 .if INTERRUPT_MODE == 0\r
1356         ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
1357 .endif\r
1358         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1359 \r
1360 .if INTERRUPT_MODE == 0\r
1361         ;@ check ints\r
1362         tst r0,#0xff\r
1363         movne r0,r0,lsr #8\r
1364         tstne r0,#1\r
1365         blne DoInterrupt\r
1366 .endif\r
1367 \r
1368         ldr opcodes,MAIN_opcodes_POINTER2\r
1369 \r
1370         cmp z80_icount,#0     ;@ irq might have used all cycles\r
1371         ldrplb r0,[z80pc],#1\r
1372         ldrpl pc,[opcodes,r0, lsl #2]\r
1373 \r
1374 \r
1375 z80_execute_end:\r
1376         ;@ save registers in CPU context\r
1377         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1378         mov r0,z80_icount\r
1379         ldmia sp!,{r4-r12,pc}                                   ;@ restore registers from stack and return to C code\r
1380 \r
1381 MAIN_opcodes_POINTER2: .word MAIN_opcodes\r
1382 .if INTERRUPT_MODE\r
1383 Interrupt_local: .word Interrupt\r
1384 .endif\r
1385 \r
1386 DoInterrupt:\r
1387 .if INTERRUPT_MODE\r
1388         ;@ Don't do own int handler, call mames instead\r
1389 \r
1390         ;@ save everything back into DrZ80 context\r
1391         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1392         stmfd sp!,{r3,r4,r5,lr}                                 ;@ save rest of regs on stack\r
1393         mov lr,pc\r
1394         ldr pc,Interrupt_local\r
1395         ldmfd sp!,{r3,r4,r5,lr}                                 ;@ load regs from stack\r
1396         ;@ reload regs from DrZ80 context\r
1397         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1398         mov pc,lr ;@ return\r
1399 .else\r
1400 \r
1401         ;@ r0 == z80if\r
1402         stmfd sp!,{lr}\r
1403 \r
1404         tst r0,#4 ;@ check halt\r
1405         addne z80pc,z80pc,#1\r
1406 \r
1407         ldrb r1,[cpucontext,#z80im]\r
1408 \r
1409     ;@ clear halt and int flags\r
1410         eor r0,r0,r0\r
1411         strb r0,[cpucontext,#z80if]\r
1412 \r
1413         ;@ now check int mode\r
1414         cmp r1,#1\r
1415         beq DoInterrupt_mode1\r
1416         bgt DoInterrupt_mode2\r
1417 \r
1418 DoInterrupt_mode0:\r
1419         ;@ get 3 byte vector\r
1420         ldr r2,[cpucontext, #z80irqvector]\r
1421         and r1,r2,#0xFF0000\r
1422         cmp r1,#0xCD0000  ;@ call\r
1423         bne 1f\r
1424         ;@ ########\r
1425         ;@ # call\r
1426         ;@ ########\r
1427         ;@ save current pc on stack\r
1428         ldr r0,[cpucontext,#z80pc_base]\r
1429         sub r0,z80pc,r0\r
1430 .if FAST_Z80SP\r
1431         mov r1,r0, lsr #8\r
1432         strb r1,[z80sp,#-1]!\r
1433         strb r0,[z80sp,#-1]!\r
1434 .else\r
1435         sub z80sp,z80sp,#2\r
1436         mov r1,z80sp\r
1437         writemem16\r
1438         ldr r2,[cpucontext, #z80irqvector]\r
1439 .endif\r
1440         ;@ jump to vector\r
1441         mov r2,r2,lsl#16\r
1442         mov r0,r2,lsr#16\r
1443         ;@ rebase new pc\r
1444         rebasepc\r
1445 \r
1446         eatcycles 13\r
1447         b DoInterrupt_end\r
1448 \r
1449 1:\r
1450         cmp r1,#0xC30000  ;@ jump\r
1451         bne DoInterrupt_mode1    ;@ rst\r
1452         ;@ #######\r
1453         ;@ # jump\r
1454         ;@ #######\r
1455         ;@ jump to vector\r
1456         mov r2,r2,lsl#16\r
1457         mov r0,r2,lsr#16\r
1458         ;@ rebase new pc\r
1459         rebasepc\r
1460 \r
1461         eatcycles 13\r
1462         b DoInterrupt_end\r
1463 \r
1464 DoInterrupt_mode1:\r
1465         ldr r0,[cpucontext,#z80pc_base]\r
1466         sub r2,z80pc,r0\r
1467     opPUSHareg r2\r
1468         mov r0,#0x38\r
1469         rebasepc\r
1470 \r
1471         eatcycles 13\r
1472         b DoInterrupt_end\r
1473 \r
1474 DoInterrupt_mode2:\r
1475         ;@ push pc on stack\r
1476         ldr r0,[cpucontext,#z80pc_base]\r
1477         sub r2,z80pc,r0\r
1478     opPUSHareg r2\r
1479 \r
1480         ;@ get 1 byte vector address\r
1481         ldrb r0,[cpucontext, #z80irqvector]\r
1482         ldr r1,[cpucontext, #z80i]\r
1483         orr r0,r0,r1,lsr#16\r
1484 \r
1485         ;@ read new pc from vector address\r
1486 .if UPDATE_CONTEXT\r
1487      str z80pc,[cpucontext,#z80pc_pointer]\r
1488 .endif\r
1489 .if DRZ80_XMAP\r
1490     bl z80_xmap_read16\r
1491     rebasepc\r
1492 .else\r
1493         stmfd sp!,{r3,r12}\r
1494         mov lr,pc\r
1495         ldr pc,[cpucontext,#z80_read16]\r
1496 \r
1497         ;@ rebase new pc\r
1498         mov lr,pc\r
1499         ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
1500         ldmfd sp!,{r3,r12}\r
1501         mov z80pc,r0    \r
1502 .endif\r
1503         eatcycles 17\r
1504 \r
1505 DoInterrupt_end:\r
1506         ;@ interupt accepted so callback irq interface\r
1507         ldr r0,[cpucontext, #z80irqcallback]\r
1508         tst r0,r0\r
1509         streqb r0,[cpucontext,#z80irq]       ;@ default handling\r
1510         ldmeqfd sp!,{pc}\r
1511         stmfd sp!,{r3,r12}\r
1512         mov lr,pc\r
1513         mov pc,r0    ;@ call callback function\r
1514         ldmfd sp!,{r3,r12}\r
1515         ldmfd sp!,{pc} ;@ return\r
1516 .endif\r
1517 \r
1518 .data\r
1519 .align 4\r
1520 \r
1521 DAATable: .hword  (0x00<<8)|(1<<ZFlag)|(1<<VFlag)\r
1522          .hword  (0x01<<8)                  \r
1523          .hword  (0x02<<8)                  \r
1524          .hword  (0x03<<8)               |(1<<VFlag)\r
1525          .hword  (0x04<<8)                  \r
1526          .hword  (0x05<<8)               |(1<<VFlag)\r
1527          .hword  (0x06<<8)               |(1<<VFlag)\r
1528          .hword  (0x07<<8)                  \r
1529          .hword  (0x08<<8)               \r
1530          .hword  (0x09<<8)            |(1<<VFlag)\r
1531          .hword  (0x10<<8)         |(1<<HFlag)      \r
1532          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1533          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1534          .hword  (0x13<<8)         |(1<<HFlag)      \r
1535          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1536          .hword  (0x15<<8)         |(1<<HFlag)      \r
1537          .hword  (0x10<<8)                  \r
1538          .hword  (0x11<<8)               |(1<<VFlag)\r
1539          .hword  (0x12<<8)               |(1<<VFlag)\r
1540          .hword  (0x13<<8)                  \r
1541          .hword  (0x14<<8)               |(1<<VFlag)\r
1542          .hword  (0x15<<8)                  \r
1543          .hword  (0x16<<8)                  \r
1544          .hword  (0x17<<8)               |(1<<VFlag)\r
1545          .hword  (0x18<<8)            |(1<<VFlag)\r
1546          .hword  (0x19<<8)               \r
1547          .hword  (0x20<<8)      |(1<<HFlag)      \r
1548          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1549          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1550          .hword  (0x23<<8)      |(1<<HFlag)      \r
1551          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1552          .hword  (0x25<<8)      |(1<<HFlag)      \r
1553          .hword  (0x20<<8)               \r
1554          .hword  (0x21<<8)            |(1<<VFlag)\r
1555          .hword  (0x22<<8)            |(1<<VFlag)\r
1556          .hword  (0x23<<8)               \r
1557          .hword  (0x24<<8)            |(1<<VFlag)\r
1558          .hword  (0x25<<8)               \r
1559          .hword  (0x26<<8)               \r
1560          .hword  (0x27<<8)            |(1<<VFlag)\r
1561          .hword  (0x28<<8)         |(1<<VFlag)\r
1562          .hword  (0x29<<8)            \r
1563          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1564          .hword  (0x31<<8)      |(1<<HFlag)      \r
1565          .hword  (0x32<<8)      |(1<<HFlag)      \r
1566          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1567          .hword  (0x34<<8)      |(1<<HFlag)      \r
1568          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1569          .hword  (0x30<<8)            |(1<<VFlag)\r
1570          .hword  (0x31<<8)               \r
1571          .hword  (0x32<<8)               \r
1572          .hword  (0x33<<8)            |(1<<VFlag)\r
1573          .hword  (0x34<<8)               \r
1574          .hword  (0x35<<8)            |(1<<VFlag)\r
1575          .hword  (0x36<<8)            |(1<<VFlag)\r
1576          .hword  (0x37<<8)               \r
1577          .hword  (0x38<<8)            \r
1578          .hword  (0x39<<8)         |(1<<VFlag)\r
1579          .hword  (0x40<<8)         |(1<<HFlag)      \r
1580          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1581          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1582          .hword  (0x43<<8)         |(1<<HFlag)      \r
1583          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1584          .hword  (0x45<<8)         |(1<<HFlag)      \r
1585          .hword  (0x40<<8)                  \r
1586          .hword  (0x41<<8)               |(1<<VFlag)\r
1587          .hword  (0x42<<8)               |(1<<VFlag)\r
1588          .hword  (0x43<<8)                  \r
1589          .hword  (0x44<<8)               |(1<<VFlag)\r
1590          .hword  (0x45<<8)                  \r
1591          .hword  (0x46<<8)                  \r
1592          .hword  (0x47<<8)               |(1<<VFlag)\r
1593          .hword  (0x48<<8)            |(1<<VFlag)\r
1594          .hword  (0x49<<8)               \r
1595          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1596          .hword  (0x51<<8)         |(1<<HFlag)      \r
1597          .hword  (0x52<<8)         |(1<<HFlag)      \r
1598          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1599          .hword  (0x54<<8)         |(1<<HFlag)      \r
1600          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1601          .hword  (0x50<<8)               |(1<<VFlag)\r
1602          .hword  (0x51<<8)                  \r
1603          .hword  (0x52<<8)                  \r
1604          .hword  (0x53<<8)               |(1<<VFlag)\r
1605          .hword  (0x54<<8)                  \r
1606          .hword  (0x55<<8)               |(1<<VFlag)\r
1607          .hword  (0x56<<8)               |(1<<VFlag)\r
1608          .hword  (0x57<<8)                  \r
1609          .hword  (0x58<<8)               \r
1610          .hword  (0x59<<8)            |(1<<VFlag)\r
1611          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1612          .hword  (0x61<<8)      |(1<<HFlag)      \r
1613          .hword  (0x62<<8)      |(1<<HFlag)      \r
1614          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1615          .hword  (0x64<<8)      |(1<<HFlag)      \r
1616          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1617          .hword  (0x60<<8)            |(1<<VFlag)\r
1618          .hword  (0x61<<8)               \r
1619          .hword  (0x62<<8)               \r
1620          .hword  (0x63<<8)            |(1<<VFlag)\r
1621          .hword  (0x64<<8)               \r
1622          .hword  (0x65<<8)            |(1<<VFlag)\r
1623          .hword  (0x66<<8)            |(1<<VFlag)\r
1624          .hword  (0x67<<8)               \r
1625          .hword  (0x68<<8)            \r
1626          .hword  (0x69<<8)         |(1<<VFlag)\r
1627          .hword  (0x70<<8)      |(1<<HFlag)      \r
1628          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1629          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1630          .hword  (0x73<<8)      |(1<<HFlag)      \r
1631          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1632          .hword  (0x75<<8)      |(1<<HFlag)      \r
1633          .hword  (0x70<<8)               \r
1634          .hword  (0x71<<8)            |(1<<VFlag)\r
1635          .hword  (0x72<<8)            |(1<<VFlag)\r
1636          .hword  (0x73<<8)               \r
1637          .hword  (0x74<<8)            |(1<<VFlag)\r
1638          .hword  (0x75<<8)               \r
1639          .hword  (0x76<<8)               \r
1640          .hword  (0x77<<8)            |(1<<VFlag)\r
1641          .hword  (0x78<<8)         |(1<<VFlag)\r
1642          .hword  (0x79<<8)            \r
1643          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1644          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1645          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1646          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1647          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1648          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1649          .hword  (0x80<<8)|(1<<SFlag)               \r
1650          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)\r
1651          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)\r
1652          .hword  (0x83<<8)|(1<<SFlag)               \r
1653          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)\r
1654          .hword  (0x85<<8)|(1<<SFlag)               \r
1655          .hword  (0x86<<8)|(1<<SFlag)               \r
1656          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
1657          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
1658          .hword  (0x89<<8)|(1<<SFlag)            \r
1659          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1660          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1661          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1662          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1663          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1664          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1665          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)\r
1666          .hword  (0x91<<8)|(1<<SFlag)               \r
1667          .hword  (0x92<<8)|(1<<SFlag)               \r
1668          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)\r
1669          .hword  (0x94<<8)|(1<<SFlag)               \r
1670          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)\r
1671          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
1672          .hword  (0x97<<8)|(1<<SFlag)               \r
1673          .hword  (0x98<<8)|(1<<SFlag)            \r
1674          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
1675          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1676          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1677          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1678          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1679          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1680          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1681          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1682          .hword  (0x01<<8)                     |(1<<CFlag)\r
1683          .hword  (0x02<<8)                     |(1<<CFlag)\r
1684          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1685          .hword  (0x04<<8)                     |(1<<CFlag)\r
1686          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1687          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1688          .hword  (0x07<<8)                     |(1<<CFlag)\r
1689          .hword  (0x08<<8)                  |(1<<CFlag)\r
1690          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1691          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1692          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1693          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1694          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1695          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1696          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1697          .hword  (0x10<<8)                     |(1<<CFlag)\r
1698          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1699          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1700          .hword  (0x13<<8)                     |(1<<CFlag)\r
1701          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1702          .hword  (0x15<<8)                     |(1<<CFlag)\r
1703          .hword  (0x16<<8)                     |(1<<CFlag)\r
1704          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1705          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1706          .hword  (0x19<<8)                  |(1<<CFlag)\r
1707          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1708          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1709          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1710          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1711          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1712          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1713          .hword  (0x20<<8)                  |(1<<CFlag)\r
1714          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1715          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1716          .hword  (0x23<<8)                  |(1<<CFlag)\r
1717          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1718          .hword  (0x25<<8)                  |(1<<CFlag)\r
1719          .hword  (0x26<<8)                  |(1<<CFlag)\r
1720          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1721          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1722          .hword  (0x29<<8)               |(1<<CFlag)\r
1723          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1724          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1725          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1726          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1727          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1728          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1729          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1730          .hword  (0x31<<8)                  |(1<<CFlag)\r
1731          .hword  (0x32<<8)                  |(1<<CFlag)\r
1732          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1733          .hword  (0x34<<8)                  |(1<<CFlag)\r
1734          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1735          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1736          .hword  (0x37<<8)                  |(1<<CFlag)\r
1737          .hword  (0x38<<8)               |(1<<CFlag)\r
1738          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1739          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1740          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1741          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1742          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1743          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1744          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1745          .hword  (0x40<<8)                     |(1<<CFlag)\r
1746          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1747          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1748          .hword  (0x43<<8)                     |(1<<CFlag)\r
1749          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1750          .hword  (0x45<<8)                     |(1<<CFlag)\r
1751          .hword  (0x46<<8)                     |(1<<CFlag)\r
1752          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1753          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1754          .hword  (0x49<<8)                  |(1<<CFlag)\r
1755          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1756          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1757          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1758          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1759          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1760          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1761          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1762          .hword  (0x51<<8)                     |(1<<CFlag)\r
1763          .hword  (0x52<<8)                     |(1<<CFlag)\r
1764          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1765          .hword  (0x54<<8)                     |(1<<CFlag)\r
1766          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1767          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1768          .hword  (0x57<<8)                     |(1<<CFlag)\r
1769          .hword  (0x58<<8)                  |(1<<CFlag)\r
1770          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1771          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1772          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1773          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1774          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1775          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1776          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1777          .hword  (0x60<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1778          .hword  (0x61<<8)                  |(1<<CFlag)\r
1779          .hword  (0x62<<8)                  |(1<<CFlag)\r
1780          .hword  (0x63<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1781          .hword  (0x64<<8)                  |(1<<CFlag)\r
1782          .hword  (0x65<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1783          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1784          .hword  (0x67<<8)                  |(1<<CFlag)\r
1785          .hword  (0x68<<8)               |(1<<CFlag)\r
1786          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1787          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1788          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1789          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1790          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1791          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1792          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1793          .hword  (0x70<<8)                  |(1<<CFlag)\r
1794          .hword  (0x71<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1795          .hword  (0x72<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1796          .hword  (0x73<<8)                  |(1<<CFlag)\r
1797          .hword  (0x74<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1798          .hword  (0x75<<8)                  |(1<<CFlag)\r
1799          .hword  (0x76<<8)                  |(1<<CFlag)\r
1800          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1801          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1802          .hword  (0x79<<8)               |(1<<CFlag)\r
1803          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1804          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1805          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1806          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1807          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1808          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1809          .hword  (0x80<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1810          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1811          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1812          .hword  (0x83<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1813          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1814          .hword  (0x85<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1815          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1816          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1817          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1818          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
1819          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1820          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1821          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1822          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1823          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1824          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1825          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1826          .hword  (0x91<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1827          .hword  (0x92<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1828          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1829          .hword  (0x94<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1830          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1831          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1832          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1833          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
1834          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1835          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1836          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1837          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1838          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1839          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1840          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1841          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1842          .hword  (0xA1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1843          .hword  (0xA2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1844          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1845          .hword  (0xA4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1846          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1847          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1848          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1849          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1850          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1851          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1852          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1853          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1854          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1855          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1856          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1857          .hword  (0xB0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1858          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1859          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1860          .hword  (0xB3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1861          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1862          .hword  (0xB5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1863          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1864          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1865          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1866          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1867          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1868          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1869          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1870          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1871          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1872          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1873          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1874          .hword  (0xC1<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1875          .hword  (0xC2<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1876          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1877          .hword  (0xC4<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1878          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1879          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1880          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1881          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
1882          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1883          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1884          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1885          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1886          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1887          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1888          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1889          .hword  (0xD0<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1890          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1891          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1892          .hword  (0xD3<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1893          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1894          .hword  (0xD5<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1895          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1896          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1897          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1898          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
1899          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1900          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1901          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1902          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1903          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1904          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1905          .hword  (0xE0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1906          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1907          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1908          .hword  (0xE3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1909          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1910          .hword  (0xE5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1911          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1912          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1913          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1914          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1915          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1916          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1917          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1918          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1919          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1920          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1921          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1922          .hword  (0xF1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1923          .hword  (0xF2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1924          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1925          .hword  (0xF4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1926          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1927          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1928          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1929          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1930          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1931          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1932          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1933          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1934          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1935          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1936          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1937          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1938          .hword  (0x01<<8)                     |(1<<CFlag)\r
1939          .hword  (0x02<<8)                     |(1<<CFlag)\r
1940          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1941          .hword  (0x04<<8)                     |(1<<CFlag)\r
1942          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1943          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1944          .hword  (0x07<<8)                     |(1<<CFlag)\r
1945          .hword  (0x08<<8)                  |(1<<CFlag)\r
1946          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1947          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1948          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1949          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1950          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1951          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1952          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1953          .hword  (0x10<<8)                     |(1<<CFlag)\r
1954          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1955          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1956          .hword  (0x13<<8)                     |(1<<CFlag)\r
1957          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1958          .hword  (0x15<<8)                     |(1<<CFlag)\r
1959          .hword  (0x16<<8)                     |(1<<CFlag)\r
1960          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1961          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1962          .hword  (0x19<<8)                  |(1<<CFlag)\r
1963          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1964          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1965          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1966          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1967          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1968          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1969          .hword  (0x20<<8)                  |(1<<CFlag)\r
1970          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1971          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1972          .hword  (0x23<<8)                  |(1<<CFlag)\r
1973          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1974          .hword  (0x25<<8)                  |(1<<CFlag)\r
1975          .hword  (0x26<<8)                  |(1<<CFlag)\r
1976          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1977          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1978          .hword  (0x29<<8)               |(1<<CFlag)\r
1979          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1980          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1981          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1982          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1983          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1984          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1985          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1986          .hword  (0x31<<8)                  |(1<<CFlag)\r
1987          .hword  (0x32<<8)                  |(1<<CFlag)\r
1988          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1989          .hword  (0x34<<8)                  |(1<<CFlag)\r
1990          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1991          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1992          .hword  (0x37<<8)                  |(1<<CFlag)\r
1993          .hword  (0x38<<8)               |(1<<CFlag)\r
1994          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1995          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1996          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1997          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1998          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1999          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2000          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2001          .hword  (0x40<<8)                     |(1<<CFlag)\r
2002          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2003          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2004          .hword  (0x43<<8)                     |(1<<CFlag)\r
2005          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2006          .hword  (0x45<<8)                     |(1<<CFlag)\r
2007          .hword  (0x46<<8)                     |(1<<CFlag)\r
2008          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2009          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2010          .hword  (0x49<<8)                  |(1<<CFlag)\r
2011          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2012          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2013          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2014          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2015          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2016          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2017          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2018          .hword  (0x51<<8)                     |(1<<CFlag)\r
2019          .hword  (0x52<<8)                     |(1<<CFlag)\r
2020          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2021          .hword  (0x54<<8)                     |(1<<CFlag)\r
2022          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2023          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2024          .hword  (0x57<<8)                     |(1<<CFlag)\r
2025          .hword  (0x58<<8)                  |(1<<CFlag)\r
2026          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2027          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2028          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2029          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2030          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2031          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2032          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2033          .hword  (0x06<<8)               |(1<<VFlag)\r
2034          .hword  (0x07<<8)                  \r
2035          .hword  (0x08<<8)               \r
2036          .hword  (0x09<<8)            |(1<<VFlag)\r
2037          .hword  (0x0A<<8)            |(1<<VFlag)\r
2038          .hword  (0x0B<<8)               \r
2039          .hword  (0x0C<<8)            |(1<<VFlag)\r
2040          .hword  (0x0D<<8)               \r
2041          .hword  (0x0E<<8)               \r
2042          .hword  (0x0F<<8)            |(1<<VFlag)\r
2043          .hword  (0x10<<8)         |(1<<HFlag)      \r
2044          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2045          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2046          .hword  (0x13<<8)         |(1<<HFlag)      \r
2047          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2048          .hword  (0x15<<8)         |(1<<HFlag)      \r
2049          .hword  (0x16<<8)                  \r
2050          .hword  (0x17<<8)               |(1<<VFlag)\r
2051          .hword  (0x18<<8)            |(1<<VFlag)\r
2052          .hword  (0x19<<8)               \r
2053          .hword  (0x1A<<8)               \r
2054          .hword  (0x1B<<8)            |(1<<VFlag)\r
2055          .hword  (0x1C<<8)               \r
2056          .hword  (0x1D<<8)            |(1<<VFlag)\r
2057          .hword  (0x1E<<8)            |(1<<VFlag)\r
2058          .hword  (0x1F<<8)               \r
2059          .hword  (0x20<<8)      |(1<<HFlag)      \r
2060          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2061          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2062          .hword  (0x23<<8)      |(1<<HFlag)      \r
2063          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2064          .hword  (0x25<<8)      |(1<<HFlag)      \r
2065          .hword  (0x26<<8)               \r
2066          .hword  (0x27<<8)            |(1<<VFlag)\r
2067          .hword  (0x28<<8)         |(1<<VFlag)\r
2068          .hword  (0x29<<8)            \r
2069          .hword  (0x2A<<8)            \r
2070          .hword  (0x2B<<8)         |(1<<VFlag)\r
2071          .hword  (0x2C<<8)            \r
2072          .hword  (0x2D<<8)         |(1<<VFlag)\r
2073          .hword  (0x2E<<8)         |(1<<VFlag)\r
2074          .hword  (0x2F<<8)            \r
2075          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2076          .hword  (0x31<<8)      |(1<<HFlag)      \r
2077          .hword  (0x32<<8)      |(1<<HFlag)      \r
2078          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2079          .hword  (0x34<<8)      |(1<<HFlag)      \r
2080          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2081          .hword  (0x36<<8)            |(1<<VFlag)\r
2082          .hword  (0x37<<8)               \r
2083          .hword  (0x38<<8)            \r
2084          .hword  (0x39<<8)         |(1<<VFlag)\r
2085          .hword  (0x3A<<8)         |(1<<VFlag)\r
2086          .hword  (0x3B<<8)            \r
2087          .hword  (0x3C<<8)         |(1<<VFlag)\r
2088          .hword  (0x3D<<8)            \r
2089          .hword  (0x3E<<8)            \r
2090          .hword  (0x3F<<8)         |(1<<VFlag)\r
2091          .hword  (0x40<<8)         |(1<<HFlag)      \r
2092          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2093          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2094          .hword  (0x43<<8)         |(1<<HFlag)      \r
2095          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2096          .hword  (0x45<<8)         |(1<<HFlag)      \r
2097          .hword  (0x46<<8)                  \r
2098          .hword  (0x47<<8)               |(1<<VFlag)\r
2099          .hword  (0x48<<8)            |(1<<VFlag)\r
2100          .hword  (0x49<<8)               \r
2101          .hword  (0x4A<<8)               \r
2102          .hword  (0x4B<<8)            |(1<<VFlag)\r
2103          .hword  (0x4C<<8)               \r
2104          .hword  (0x4D<<8)            |(1<<VFlag)\r
2105          .hword  (0x4E<<8)            |(1<<VFlag)\r
2106          .hword  (0x4F<<8)               \r
2107          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2108          .hword  (0x51<<8)         |(1<<HFlag)      \r
2109          .hword  (0x52<<8)         |(1<<HFlag)      \r
2110          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2111          .hword  (0x54<<8)         |(1<<HFlag)      \r
2112          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2113          .hword  (0x56<<8)               |(1<<VFlag)\r
2114          .hword  (0x57<<8)                  \r
2115          .hword  (0x58<<8)               \r
2116          .hword  (0x59<<8)            |(1<<VFlag)\r
2117          .hword  (0x5A<<8)            |(1<<VFlag)\r
2118          .hword  (0x5B<<8)               \r
2119          .hword  (0x5C<<8)            |(1<<VFlag)\r
2120          .hword  (0x5D<<8)               \r
2121          .hword  (0x5E<<8)               \r
2122          .hword  (0x5F<<8)            |(1<<VFlag)\r
2123          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2124          .hword  (0x61<<8)      |(1<<HFlag)      \r
2125          .hword  (0x62<<8)      |(1<<HFlag)      \r
2126          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2127          .hword  (0x64<<8)      |(1<<HFlag)      \r
2128          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2129          .hword  (0x66<<8)            |(1<<VFlag)\r
2130          .hword  (0x67<<8)               \r
2131          .hword  (0x68<<8)            \r
2132          .hword  (0x69<<8)         |(1<<VFlag)\r
2133          .hword  (0x6A<<8)         |(1<<VFlag)\r
2134          .hword  (0x6B<<8)            \r
2135          .hword  (0x6C<<8)         |(1<<VFlag)\r
2136          .hword  (0x6D<<8)            \r
2137          .hword  (0x6E<<8)            \r
2138          .hword  (0x6F<<8)         |(1<<VFlag)\r
2139          .hword  (0x70<<8)      |(1<<HFlag)      \r
2140          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2141          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2142          .hword  (0x73<<8)      |(1<<HFlag)      \r
2143          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2144          .hword  (0x75<<8)      |(1<<HFlag)      \r
2145          .hword  (0x76<<8)               \r
2146          .hword  (0x77<<8)            |(1<<VFlag)\r
2147          .hword  (0x78<<8)         |(1<<VFlag)\r
2148          .hword  (0x79<<8)            \r
2149          .hword  (0x7A<<8)            \r
2150          .hword  (0x7B<<8)         |(1<<VFlag)\r
2151          .hword  (0x7C<<8)            \r
2152          .hword  (0x7D<<8)         |(1<<VFlag)\r
2153          .hword  (0x7E<<8)         |(1<<VFlag)\r
2154          .hword  (0x7F<<8)            \r
2155          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2156          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2157          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2158          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2159          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2160          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2161          .hword  (0x86<<8)|(1<<SFlag)               \r
2162          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
2163          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
2164          .hword  (0x89<<8)|(1<<SFlag)            \r
2165          .hword  (0x8A<<8)|(1<<SFlag)            \r
2166          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)\r
2167          .hword  (0x8C<<8)|(1<<SFlag)            \r
2168          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)\r
2169          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)\r
2170          .hword  (0x8F<<8)|(1<<SFlag)            \r
2171          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2172          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2173          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2174          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2175          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2176          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2177          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
2178          .hword  (0x97<<8)|(1<<SFlag)               \r
2179          .hword  (0x98<<8)|(1<<SFlag)            \r
2180          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
2181          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)\r
2182          .hword  (0x9B<<8)|(1<<SFlag)            \r
2183          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)\r
2184          .hword  (0x9D<<8)|(1<<SFlag)            \r
2185          .hword  (0x9E<<8)|(1<<SFlag)            \r
2186          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)\r
2187          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2188          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2189          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2190          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2191          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2192          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2193          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2194          .hword  (0x07<<8)                     |(1<<CFlag)\r
2195          .hword  (0x08<<8)                  |(1<<CFlag)\r
2196          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2197          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2198          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2199          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2200          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2201          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2202          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2203          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2204          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2205          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2206          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2207          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2208          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2209          .hword  (0x16<<8)                     |(1<<CFlag)\r
2210          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2211          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2212          .hword  (0x19<<8)                  |(1<<CFlag)\r
2213          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2214          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2215          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2216          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2217          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2218          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2219          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2220          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2221          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2222          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2223          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2224          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2225          .hword  (0x26<<8)                  |(1<<CFlag)\r
2226          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2227          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2228          .hword  (0x29<<8)               |(1<<CFlag)\r
2229          .hword  (0x2A<<8)               |(1<<CFlag)\r
2230          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2231          .hword  (0x2C<<8)               |(1<<CFlag)\r
2232          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2233          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2234          .hword  (0x2F<<8)               |(1<<CFlag)\r
2235          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2236          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2237          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2238          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2239          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2240          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2241          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2242          .hword  (0x37<<8)                  |(1<<CFlag)\r
2243          .hword  (0x38<<8)               |(1<<CFlag)\r
2244          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2245          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2246          .hword  (0x3B<<8)               |(1<<CFlag)\r
2247          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2248          .hword  (0x3D<<8)               |(1<<CFlag)\r
2249          .hword  (0x3E<<8)               |(1<<CFlag)\r
2250          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2251          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2252          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2253          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2254          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2255          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2256          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2257          .hword  (0x46<<8)                     |(1<<CFlag)\r
2258          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2259          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2260          .hword  (0x49<<8)                  |(1<<CFlag)\r
2261          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2262          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2263          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2264          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2265          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2266          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2267          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2268          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2269          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2270          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2271          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2272          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2273          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2274          .hword  (0x57<<8)                     |(1<<CFlag)\r
2275          .hword  (0x58<<8)                  |(1<<CFlag)\r
2276          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2277          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2278          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2279          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2280          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2281          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2282          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2283          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2284          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2285          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2286          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2287          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2288          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2289          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2290          .hword  (0x67<<8)                  |(1<<CFlag)\r
2291          .hword  (0x68<<8)               |(1<<CFlag)\r
2292          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2293          .hword  (0x6A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2294          .hword  (0x6B<<8)               |(1<<CFlag)\r
2295          .hword  (0x6C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2296          .hword  (0x6D<<8)               |(1<<CFlag)\r
2297          .hword  (0x6E<<8)               |(1<<CFlag)\r
2298          .hword  (0x6F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2299          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2300          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2301          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2302          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2303          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2304          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2305          .hword  (0x76<<8)                  |(1<<CFlag)\r
2306          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2307          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2308          .hword  (0x79<<8)               |(1<<CFlag)\r
2309          .hword  (0x7A<<8)               |(1<<CFlag)\r
2310          .hword  (0x7B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2311          .hword  (0x7C<<8)               |(1<<CFlag)\r
2312          .hword  (0x7D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2313          .hword  (0x7E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2314          .hword  (0x7F<<8)               |(1<<CFlag)\r
2315          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2316          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2317          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2318          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2319          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2320          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2321          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2322          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2323          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2324          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
2325          .hword  (0x8A<<8)|(1<<SFlag)               |(1<<CFlag)\r
2326          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2327          .hword  (0x8C<<8)|(1<<SFlag)               |(1<<CFlag)\r
2328          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2329          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2330          .hword  (0x8F<<8)|(1<<SFlag)               |(1<<CFlag)\r
2331          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2332          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2333          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2334          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2335          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2336          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2337          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2338          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2339          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
2340          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2341          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2342          .hword  (0x9B<<8)|(1<<SFlag)               |(1<<CFlag)\r
2343          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2344          .hword  (0x9D<<8)|(1<<SFlag)               |(1<<CFlag)\r
2345          .hword  (0x9E<<8)|(1<<SFlag)               |(1<<CFlag)\r
2346          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2347          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2348          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2349          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2350          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2351          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2352          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2353          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2354          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2355          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2356          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2357          .hword  (0xAA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2358          .hword  (0xAB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2359          .hword  (0xAC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2360          .hword  (0xAD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2361          .hword  (0xAE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2362          .hword  (0xAF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2363          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2364          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2365          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2366          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2367          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2368          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2369          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2370          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2371          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2372          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2373          .hword  (0xBA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2374          .hword  (0xBB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2375          .hword  (0xBC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2376          .hword  (0xBD<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2377          .hword  (0xBE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2378          .hword  (0xBF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2379          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2380          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2381          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2382          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2383          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2384          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2385          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2386          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2387          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
2388          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2389          .hword  (0xCA<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2390          .hword  (0xCB<<8)|(1<<SFlag)               |(1<<CFlag)\r
2391          .hword  (0xCC<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2392          .hword  (0xCD<<8)|(1<<SFlag)               |(1<<CFlag)\r
2393          .hword  (0xCE<<8)|(1<<SFlag)               |(1<<CFlag)\r
2394          .hword  (0xCF<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2395          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2396          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2397          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2398          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2399          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2400          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2401          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2402          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2403          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2404          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
2405          .hword  (0xDA<<8)|(1<<SFlag)               |(1<<CFlag)\r
2406          .hword  (0xDB<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2407          .hword  (0xDC<<8)|(1<<SFlag)               |(1<<CFlag)\r
2408          .hword  (0xDD<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2409          .hword  (0xDE<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2410          .hword  (0xDF<<8)|(1<<SFlag)               |(1<<CFlag)\r
2411          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2412          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2413          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2414          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2415          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2416          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2417          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2418          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2419          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2420          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2421          .hword  (0xEA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2422          .hword  (0xEB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2423          .hword  (0xEC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2424          .hword  (0xED<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2425          .hword  (0xEE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2426          .hword  (0xEF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2427          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2428          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2429          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2430          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2431          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2432          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2433          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2434          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2435          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2436          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2437          .hword  (0xFA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2438          .hword  (0xFB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2439          .hword  (0xFC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2440          .hword  (0xFD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2441          .hword  (0xFE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2442          .hword  (0xFF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2443          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2444          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2445          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2446          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2447          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2448          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2449          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2450          .hword  (0x07<<8)                     |(1<<CFlag)\r
2451          .hword  (0x08<<8)                  |(1<<CFlag)\r
2452          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2453          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2454          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2455          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2456          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2457          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2458          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2459          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2460          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2461          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2462          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2463          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2464          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2465          .hword  (0x16<<8)                     |(1<<CFlag)\r
2466          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2467          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2468          .hword  (0x19<<8)                  |(1<<CFlag)\r
2469          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2470          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2471          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2472          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2473          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2474          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2475          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2476          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2477          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2478          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2479          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2480          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2481          .hword  (0x26<<8)                  |(1<<CFlag)\r
2482          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2483          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2484          .hword  (0x29<<8)               |(1<<CFlag)\r
2485          .hword  (0x2A<<8)               |(1<<CFlag)\r
2486          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2487          .hword  (0x2C<<8)               |(1<<CFlag)\r
2488          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2489          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2490          .hword  (0x2F<<8)               |(1<<CFlag)\r
2491          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2492          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2493          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2494          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2495          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2496          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2497          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2498          .hword  (0x37<<8)                  |(1<<CFlag)\r
2499          .hword  (0x38<<8)               |(1<<CFlag)\r
2500          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2501          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2502          .hword  (0x3B<<8)               |(1<<CFlag)\r
2503          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2504          .hword  (0x3D<<8)               |(1<<CFlag)\r
2505          .hword  (0x3E<<8)               |(1<<CFlag)\r
2506          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2507          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2508          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2509          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2510          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2511          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2512          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2513          .hword  (0x46<<8)                     |(1<<CFlag)\r
2514          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2515          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2516          .hword  (0x49<<8)                  |(1<<CFlag)\r
2517          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2518          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2519          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2520          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2521          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2522          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2523          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2524          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2525          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2526          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2527          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2528          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2529          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2530          .hword  (0x57<<8)                     |(1<<CFlag)\r
2531          .hword  (0x58<<8)                  |(1<<CFlag)\r
2532          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2533          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2534          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2535          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2536          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2537          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2538          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2539          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2540          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2541          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2542          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2543          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2544          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2545          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2546          .hword  (0x01<<8)                  |(1<<NFlag)   \r
2547          .hword  (0x02<<8)                  |(1<<NFlag)   \r
2548          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2549          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2550          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2551          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2552          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2553          .hword  (0x08<<8)               |(1<<NFlag)   \r
2554          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2555          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2556          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2557          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2558          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2559          .hword  (0x08<<8)               |(1<<NFlag)   \r
2560          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2561          .hword  (0x10<<8)                  |(1<<NFlag)   \r
2562          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2563          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2564          .hword  (0x13<<8)                  |(1<<NFlag)   \r
2565          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2566          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2567          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2568          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2569          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2570          .hword  (0x19<<8)               |(1<<NFlag)   \r
2571          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2572          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2573          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2574          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2575          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2576          .hword  (0x19<<8)               |(1<<NFlag)   \r
2577          .hword  (0x20<<8)               |(1<<NFlag)   \r
2578          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2579          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2580          .hword  (0x23<<8)               |(1<<NFlag)   \r
2581          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2582          .hword  (0x25<<8)               |(1<<NFlag)   \r
2583          .hword  (0x26<<8)               |(1<<NFlag)   \r
2584          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2585          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2586          .hword  (0x29<<8)            |(1<<NFlag)   \r
2587          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2588          .hword  (0x25<<8)               |(1<<NFlag)   \r
2589          .hword  (0x26<<8)               |(1<<NFlag)   \r
2590          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2591          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2592          .hword  (0x29<<8)            |(1<<NFlag)   \r
2593          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2594          .hword  (0x31<<8)               |(1<<NFlag)   \r
2595          .hword  (0x32<<8)               |(1<<NFlag)   \r
2596          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2597          .hword  (0x34<<8)               |(1<<NFlag)   \r
2598          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2599          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2600          .hword  (0x37<<8)               |(1<<NFlag)   \r
2601          .hword  (0x38<<8)            |(1<<NFlag)   \r
2602          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2603          .hword  (0x34<<8)               |(1<<NFlag)   \r
2604          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2605          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2606          .hword  (0x37<<8)               |(1<<NFlag)   \r
2607          .hword  (0x38<<8)            |(1<<NFlag)   \r
2608          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2609          .hword  (0x40<<8)                  |(1<<NFlag)   \r
2610          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2611          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2612          .hword  (0x43<<8)                  |(1<<NFlag)   \r
2613          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2614          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2615          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2616          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2617          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2618          .hword  (0x49<<8)               |(1<<NFlag)   \r
2619          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2620          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2621          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2622          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2623          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2624          .hword  (0x49<<8)               |(1<<NFlag)   \r
2625          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2626          .hword  (0x51<<8)                  |(1<<NFlag)   \r
2627          .hword  (0x52<<8)                  |(1<<NFlag)   \r
2628          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2629          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2630          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2631          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2632          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2633          .hword  (0x58<<8)               |(1<<NFlag)   \r
2634          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2635          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2636          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2637          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2638          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2639          .hword  (0x58<<8)               |(1<<NFlag)   \r
2640          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2641          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2642          .hword  (0x61<<8)               |(1<<NFlag)   \r
2643          .hword  (0x62<<8)               |(1<<NFlag)   \r
2644          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2645          .hword  (0x64<<8)               |(1<<NFlag)   \r
2646          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2647          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2648          .hword  (0x67<<8)               |(1<<NFlag)   \r
2649          .hword  (0x68<<8)            |(1<<NFlag)   \r
2650          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2651          .hword  (0x64<<8)               |(1<<NFlag)   \r
2652          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2653          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2654          .hword  (0x67<<8)               |(1<<NFlag)   \r
2655          .hword  (0x68<<8)            |(1<<NFlag)   \r
2656          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2657          .hword  (0x70<<8)               |(1<<NFlag)   \r
2658          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2659          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2660          .hword  (0x73<<8)               |(1<<NFlag)   \r
2661          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2662          .hword  (0x75<<8)               |(1<<NFlag)   \r
2663          .hword  (0x76<<8)               |(1<<NFlag)   \r
2664          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2665          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2666          .hword  (0x79<<8)            |(1<<NFlag)   \r
2667          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2668          .hword  (0x75<<8)               |(1<<NFlag)   \r
2669          .hword  (0x76<<8)               |(1<<NFlag)   \r
2670          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2671          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2672          .hword  (0x79<<8)            |(1<<NFlag)   \r
2673          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2674          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2675          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2676          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2677          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2678          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2679          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2680          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2681          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2682          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2683          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2684          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2685          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2686          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2687          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2688          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2689          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2690          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2691          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2692          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2693          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2694          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2695          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2696          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2697          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2698          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2699          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2700          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2701          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2702          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2703          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2704          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2705          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2706          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2707          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2708          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2709          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2710          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2711          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2712          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2713          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2714          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2715          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2716          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2717          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2718          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2719          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2720          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2721          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2722          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2723          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2724          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2725          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2726          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2727          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2728          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2729          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2730          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2731          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2732          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2733          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2734          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2735          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2736          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2737          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2738          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
2739          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
2740          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2741          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2742          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2743          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2744          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2745          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2746          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2747          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2748          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2749          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2750          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2751          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2752          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2753          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
2754          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2755          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2756          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
2757          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2758          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2759          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2760          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2761          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2762          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2763          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2764          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2765          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2766          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2767          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2768          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2769          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2770          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2771          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2772          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2773          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2774          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2775          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2776          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2777          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2778          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2779          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2780          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2781          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2782          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2783          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2784          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2785          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2786          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2787          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2788          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2789          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2790          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2791          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2792          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2793          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2794          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2795          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2796          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2797          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2798          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2799          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2800          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2801          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2802          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2803          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2804          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2805          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2806          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2807          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2808          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2809          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2810          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2811          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2812          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2813          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2814          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2815          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2816          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2817          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2818          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2819          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2820          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2821          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2822          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2823          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2824          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2825          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2826          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2827          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2828          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2829          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2830          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2831          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2832          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2833          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2834          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2835          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2836          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2837          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2838          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2839          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2840          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2841          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2842          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2843          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2844          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2845          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2846          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2847          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2848          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2849          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2850          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2851          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2852          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2853          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2854          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2855          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2856          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2857          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2858          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2859          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2860          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2861          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2862          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2863          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2864          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2865          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2866          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2867          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2868          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2869          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2870          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2871          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2872          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2873          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2874          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2875          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2876          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2877          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2878          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2879          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2880          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2881          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2882          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2883          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2884          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2885          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2886          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2887          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2888          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2889          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2890          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2891          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2892          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2893          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2894          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2895          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2896          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2897          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2898          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2899          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2900          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2901          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2902          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2903          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2904          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2905          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2906          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2907          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2908          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2909          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2910          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2911          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2912          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2913          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2914          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2915          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2916          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2917          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2918          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2919          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2920          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2921          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2922          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2923          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2924          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2925          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2926          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2927          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2928          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2929          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
2930          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2931          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2932          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
2933          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2934          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2935          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2936          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2937          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2938          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2939          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2940          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2941          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2942          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2943          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2944          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2945          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2946          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
2947          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
2948          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2949          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2950          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2951          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2952          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2953          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2954          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2955          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2956          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2957          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2958          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2959          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2960          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2961          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2962          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2963          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2964          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2965          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2966          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2967          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2968          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2969          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2970          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2971          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2972          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2973          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2974          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2975          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2976          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2977          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2978          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2979          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2980          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2981          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2982          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2983          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2984          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2985          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2986          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2987          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2988          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2989          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2990          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2991          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2992          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2993          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2994          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
2995          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
2996          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2997          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2998          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2999          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3000          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3001          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3002          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3003          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3004          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3005          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3006          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3007          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3008          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3009          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3010          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3011          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3012          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3013          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3014          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3015          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3016          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3017          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3018          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3019          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3020          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3021          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3022          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3023          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3024          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3025          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3026          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3027          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3028          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3029          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3030          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3031          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3032          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3033          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3034          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3035          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3036          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3037          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3038          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3039          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3040          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3041          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3042          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3043          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3044          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3045          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3046          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3047          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3048          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3049          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3050          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3051          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3052          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3053          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3054          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3055          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3056          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3057          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3058          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3059          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3060          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3061          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3062          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3063          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3064          .hword  (0x01<<8)                  |(1<<NFlag)   \r
3065          .hword  (0x02<<8)                  |(1<<NFlag)   \r
3066          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3067          .hword  (0x04<<8)                  |(1<<NFlag)   \r
3068          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3069          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3070          .hword  (0x07<<8)                  |(1<<NFlag)   \r
3071          .hword  (0x08<<8)               |(1<<NFlag)   \r
3072          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3073          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3074          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3075          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3076          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3077          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3078          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3079          .hword  (0x10<<8)                  |(1<<NFlag)   \r
3080          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3081          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3082          .hword  (0x13<<8)                  |(1<<NFlag)   \r
3083          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3084          .hword  (0x15<<8)                  |(1<<NFlag)   \r
3085          .hword  (0x16<<8)                  |(1<<NFlag)   \r
3086          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3087          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3088          .hword  (0x19<<8)               |(1<<NFlag)   \r
3089          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3090          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3091          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3092          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3093          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3094          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3095          .hword  (0x20<<8)               |(1<<NFlag)   \r
3096          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3097          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3098          .hword  (0x23<<8)               |(1<<NFlag)   \r
3099          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3100          .hword  (0x25<<8)               |(1<<NFlag)   \r
3101          .hword  (0x26<<8)               |(1<<NFlag)   \r
3102          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3103          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3104          .hword  (0x29<<8)            |(1<<NFlag)   \r
3105          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3106          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3107          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3108          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3109          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3110          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3111          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3112          .hword  (0x31<<8)               |(1<<NFlag)   \r
3113          .hword  (0x32<<8)               |(1<<NFlag)   \r
3114          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3115          .hword  (0x34<<8)               |(1<<NFlag)   \r
3116          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3117          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3118          .hword  (0x37<<8)               |(1<<NFlag)   \r
3119          .hword  (0x38<<8)            |(1<<NFlag)   \r
3120          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3121          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3122          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3123          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3124          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3125          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3126          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3127          .hword  (0x40<<8)                  |(1<<NFlag)   \r
3128          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3129          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3130          .hword  (0x43<<8)                  |(1<<NFlag)   \r
3131          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3132          .hword  (0x45<<8)                  |(1<<NFlag)   \r
3133          .hword  (0x46<<8)                  |(1<<NFlag)   \r
3134          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3135          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3136          .hword  (0x49<<8)               |(1<<NFlag)   \r
3137          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3138          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3139          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3140          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3141          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3142          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3143          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3144          .hword  (0x51<<8)                  |(1<<NFlag)   \r
3145          .hword  (0x52<<8)                  |(1<<NFlag)   \r
3146          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3147          .hword  (0x54<<8)                  |(1<<NFlag)   \r
3148          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3149          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3150          .hword  (0x57<<8)                  |(1<<NFlag)   \r
3151          .hword  (0x58<<8)               |(1<<NFlag)   \r
3152          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3153          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3154          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3155          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3156          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3157          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3158          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3159          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3160          .hword  (0x61<<8)               |(1<<NFlag)   \r
3161          .hword  (0x62<<8)               |(1<<NFlag)   \r
3162          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3163          .hword  (0x64<<8)               |(1<<NFlag)   \r
3164          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3165          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3166          .hword  (0x67<<8)               |(1<<NFlag)   \r
3167          .hword  (0x68<<8)            |(1<<NFlag)   \r
3168          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3169          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3170          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3171          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3172          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3173          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3174          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3175          .hword  (0x70<<8)               |(1<<NFlag)   \r
3176          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3177          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3178          .hword  (0x73<<8)               |(1<<NFlag)   \r
3179          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3180          .hword  (0x75<<8)               |(1<<NFlag)   \r
3181          .hword  (0x76<<8)               |(1<<NFlag)   \r
3182          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3183          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3184          .hword  (0x79<<8)            |(1<<NFlag)   \r
3185          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3186          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3187          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3188          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3189          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3190          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3191          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3192          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3193          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3194          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3195          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3196          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3197          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3198          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3199          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3200          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
3201          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3202          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3203          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3204          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3205          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3206          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3207          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3208          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3209          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3210          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3211          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3212          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3213          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3214          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3215          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3216          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3217          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3218          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3219          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3220          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3221          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3222          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3223          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3224          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3225          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3226          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3227          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3228          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3229          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3230          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3231          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3232          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3233          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3234          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3235          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3236          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3237          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3238          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3239          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3240          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3241          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3242          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3243          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3244          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3245          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3246          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3247          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3248          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3249          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3250          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3251          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3252          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3253          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3254          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3255          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3256          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3257          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3258          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3259          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3260          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3261          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3262          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3263          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3264          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3265          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3266          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3267          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3268          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3269          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3270          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3271          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3272          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3273          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3274          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3275          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3276          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3277          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3278          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3279          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3280          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3281          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3282          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3283          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3284          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3285          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3286          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3287          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3288          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3289          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3290          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3291          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3292          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3293          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3294          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3295          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3296          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3297          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3298          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3299          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3300          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3301          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3302          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3303          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3304          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3305          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3306          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3307          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3308          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3309          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3310          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3311          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3312          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3313          .hword  (0x9A<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3314          .hword  (0x9B<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3315          .hword  (0x9C<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3316          .hword  (0x9D<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3317          .hword  (0x9E<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3318          .hword  (0x9F<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3319          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3320          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3321          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3322          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3323          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3324          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3325          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3326          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3327          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3328          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3329          .hword  (0xAA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3330          .hword  (0xAB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3331          .hword  (0xAC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3332          .hword  (0xAD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3333          .hword  (0xAE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3334          .hword  (0xAF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3335          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3336          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3337          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3338          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3339          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3340          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3341          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3342          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3343          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3344          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3345          .hword  (0xBA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3346          .hword  (0xBB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3347          .hword  (0xBC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3348          .hword  (0xBD<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3349          .hword  (0xBE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3350          .hword  (0xBF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3351          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3352          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3353          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3354          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3355          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3356          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3357          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3358          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3359          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3360          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3361          .hword  (0xCA<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3362          .hword  (0xCB<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3363          .hword  (0xCC<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3364          .hword  (0xCD<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3365          .hword  (0xCE<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3366          .hword  (0xCF<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3367          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3368          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3369          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3370          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3371          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3372          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3373          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3374          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3375          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3376          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3377          .hword  (0xDA<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3378          .hword  (0xDB<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3379          .hword  (0xDC<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3380          .hword  (0xDD<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3381          .hword  (0xDE<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3382          .hword  (0xDF<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3383          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3384          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3385          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3386          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3387          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3388          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3389          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3390          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3391          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3392          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3393          .hword  (0xEA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3394          .hword  (0xEB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3395          .hword  (0xEC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3396          .hword  (0xED<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3397          .hword  (0xEE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3398          .hword  (0xEF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3399          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3400          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3401          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3402          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3403          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3404          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3405          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3406          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3407          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3408          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3409          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3410          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3411          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3412          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3413          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3414          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3415          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3416          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3417          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3418          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3419          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3420          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3421          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3422          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3423          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
3424          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3425          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3426          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3427          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3428          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3429          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3430          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3431          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3432          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3433          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3434          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3435          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3436          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3437          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3438          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3439          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3440          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
3441          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3442          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3443          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3444          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3445          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3446          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3447          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
3448          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3449          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3450          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
3451          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3452          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
3453          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
3454          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3455          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3456          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
3457          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3458          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3459          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3460          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3461          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3462          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3463          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3464          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
3465          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
3466          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3467          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3468          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3469          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3470          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3471          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3472          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3473          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3474          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3475          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3476          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3477          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3478          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3479          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3480          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3481          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3482          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3483          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3484          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3485          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3486          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3487          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3488          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3489          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3490          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3491          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3492          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3493          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3494          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3495          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3496          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3497          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3498          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3499          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3500          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3501          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3502          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3503          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3504          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3505          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3506          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3507          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3508          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3509          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3510          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3511          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3512          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3513          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3514          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3515          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3516          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3517          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3518          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3519          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3520          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3521          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3522          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3523          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3524          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3525          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3526          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3527          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3528          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3529          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3530          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3531          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3532          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3533          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3534          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3535          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3536          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3537          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3538          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3539          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3540          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3541          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3542          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3543          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3544          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3545          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3546          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3547          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3548          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3549          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3550          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3551          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3552          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3553          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3554          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3555          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3556          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3557          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3558          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3559          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3560          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3561          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3562          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3563          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3564          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3565          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3566          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3567          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3568          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3569          \r
3570 .align 4\r
3571 \r
3572 AF_Z80:  .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 0\r
3573          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 1\r
3574          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 2\r
3575          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 3\r
3576          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 4\r
3577          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 5\r
3578          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 6\r
3579          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 7\r
3580          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 8\r
3581          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 9\r
3582          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 10\r
3583          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 11\r
3584          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 12\r
3585          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 13\r
3586          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 14\r
3587          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 15\r
3588          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 16\r
3589          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 17\r
3590          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 18\r
3591          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 19\r
3592          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 20\r
3593          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 21\r
3594          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 22\r
3595          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 23\r
3596          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 24\r
3597          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 25\r
3598          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 26\r
3599          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 27\r
3600          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 28\r
3601          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 29\r
3602          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 30\r
3603          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 31\r
3604          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 32\r
3605          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 33\r
3606          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 34\r
3607          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 35\r
3608          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 36\r
3609          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 37\r
3610          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 38\r
3611          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 39\r
3612          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 40\r
3613          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 41\r
3614          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 42\r
3615          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 43\r
3616          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 44\r
3617          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 45\r
3618          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 46\r
3619          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 47\r
3620          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 48\r
3621          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 49\r
3622          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 50\r
3623          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 51\r
3624          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 52\r
3625          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 53\r
3626          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 54\r
3627          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 55\r
3628          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 56\r
3629          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 57\r
3630          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 58\r
3631          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 59\r
3632          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 60\r
3633          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 61\r
3634          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 62\r
3635          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 63\r
3636          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 64\r
3637          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 65\r
3638          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 66\r
3639          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 67\r
3640          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 68\r
3641          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 69\r
3642          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 70\r
3643          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 71\r
3644          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 72\r
3645          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 73\r
3646          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 74\r
3647          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 75\r
3648          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 76\r
3649          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 77\r
3650          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 78\r
3651          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 79\r
3652          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 80\r
3653          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 81\r
3654          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 82\r
3655          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 83\r
3656          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 84\r
3657          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 85\r
3658          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 86\r
3659          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 87\r
3660          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 88\r
3661          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 89\r
3662          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 90\r
3663          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 91\r
3664          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 92\r
3665          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 93\r
3666          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 94\r
3667          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 95\r
3668          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 96\r
3669          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 97\r
3670          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 98\r
3671          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 99\r
3672          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 100\r
3673          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 101\r
3674          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 102\r
3675          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 103\r
3676          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 104\r
3677          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 105\r
3678          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 106\r
3679          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 107\r
3680          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 108\r
3681          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 109\r
3682          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 110\r
3683          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 111\r
3684          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 112\r
3685          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 113\r
3686          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 114\r
3687          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 115\r
3688          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 116\r
3689          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 117\r
3690          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 118\r
3691          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 119\r
3692          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 120\r
3693          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 121\r
3694          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 122\r
3695          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 123\r
3696          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 124\r
3697          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 125\r
3698          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 126\r
3699          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 127\r
3700          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 128\r
3701          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 129\r
3702          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 130\r
3703          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 131\r
3704          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 132\r
3705          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 133\r
3706          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 134\r
3707          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 135\r
3708          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 136\r
3709          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 137\r
3710          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 138\r
3711          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 139\r
3712          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 140\r
3713          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 141\r
3714          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 142\r
3715          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 143\r
3716          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 144\r
3717          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 145\r
3718          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 146\r
3719          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 147\r
3720          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 148\r
3721          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 149\r
3722          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 150\r
3723          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 151\r
3724          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 152\r
3725          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 153\r
3726          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 154\r
3727          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 155\r
3728          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 156\r
3729          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 157\r
3730          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 158\r
3731          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 159\r
3732          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 160\r
3733          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 161\r
3734          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 162\r
3735          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 163\r
3736          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 164\r
3737          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 165\r
3738          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 166\r
3739          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 167\r
3740          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 168\r
3741          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 169\r
3742          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 170\r
3743          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 171\r
3744          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 172\r
3745          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 173\r
3746          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 174\r
3747          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 175\r
3748          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 176\r
3749          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 177\r
3750          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 178\r
3751          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 179\r
3752          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 180\r
3753          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 181\r
3754          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 182\r
3755          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 183\r
3756          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 184\r
3757          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 185\r
3758          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 186\r
3759          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 187\r
3760          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 188\r
3761          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 189\r
3762          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 190\r
3763          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 191\r
3764          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 192\r
3765          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 193\r
3766          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 194\r
3767          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 195\r
3768          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 196\r
3769          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 197\r
3770          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 198\r
3771          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 199\r
3772          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 200\r
3773          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 201\r
3774          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 202\r
3775          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 203\r
3776          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 204\r
3777          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 205\r
3778          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 206\r
3779          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 207\r
3780          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 208\r
3781          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 209\r
3782          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 210\r
3783          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 211\r
3784          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 212\r
3785          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 213\r
3786          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 214\r
3787          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 215\r
3788          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 216\r
3789          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 217\r
3790          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 218\r
3791          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 219\r
3792          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 220\r
3793          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 221\r
3794          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 222\r
3795          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 223\r
3796          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 224\r
3797          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 225\r
3798          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 226\r
3799          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 227\r
3800          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 228\r
3801          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 229\r
3802          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 230\r
3803          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 231\r
3804          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 232\r
3805          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 233\r
3806          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 234\r
3807          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 235\r
3808          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 236\r
3809          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 237\r
3810          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 238\r
3811          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 239\r
3812          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 240\r
3813          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 241\r
3814          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 242\r
3815          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 243\r
3816          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 244\r
3817          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 245\r
3818          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 246\r
3819          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 247\r
3820          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 248\r
3821          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 249\r
3822          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 250\r
3823          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 251\r
3824          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 252\r
3825          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 253\r
3826          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 254\r
3827          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 255\r
3828 \r
3829 .align 4\r
3830 \r
3831 AF_ARM:  .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 0\r
3832          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 1\r
3833          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 2\r
3834          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 3\r
3835          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 4\r
3836          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 5\r
3837          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 6\r
3838          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 7\r
3839          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 8\r
3840          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 9\r
3841          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 10\r
3842          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 11\r
3843          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 12\r
3844          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 13\r
3845          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 14\r
3846          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 15\r
3847          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 16\r
3848          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 17\r
3849          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 18\r
3850          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 19\r
3851          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 20\r
3852          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 21\r
3853          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 22\r
3854          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 23\r
3855          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 24\r
3856          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 25\r
3857          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 26\r
3858          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 27\r
3859          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 28\r
3860          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 29\r
3861          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 30\r
3862          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 31\r
3863          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 32\r
3864          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 33\r
3865          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 34\r
3866          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 35\r
3867          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 36\r
3868          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 37\r
3869          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 38\r
3870          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 39\r
3871          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 40\r
3872          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 41\r
3873          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 42\r
3874          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 43\r
3875          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 44\r
3876          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 45\r
3877          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 46\r
3878          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 47\r
3879          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 48\r
3880          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 49\r
3881          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 50\r
3882          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 51\r
3883          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 52\r
3884          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 53\r
3885          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 54\r
3886          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 55\r
3887          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 56\r
3888          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 57\r
3889          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 58\r
3890          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 59\r
3891          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 60\r
3892          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 61\r
3893          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 62\r
3894          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 63\r
3895          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 64\r
3896          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 65\r
3897          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 66\r
3898          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 67\r
3899          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 68\r
3900          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 69\r
3901          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 70\r
3902          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 71\r
3903          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 72\r
3904          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 73\r
3905          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 74\r
3906          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 75\r
3907          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 76\r
3908          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 77\r
3909          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 78\r
3910          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 79\r
3911          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 80\r
3912          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 81\r
3913          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 82\r
3914          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 83\r
3915          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 84\r
3916          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 85\r
3917          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 86\r
3918          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 87\r
3919          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 88\r
3920          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 89\r
3921          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 90\r
3922          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 91\r
3923          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 92\r
3924          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 93\r
3925          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 94\r
3926          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 95\r
3927          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 96\r
3928          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 97\r
3929          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 98\r
3930          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 99\r
3931          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 100\r
3932          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 101\r
3933          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 102\r
3934          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 103\r
3935          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 104\r
3936          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 105\r
3937          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 106\r
3938          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 107\r
3939          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 108\r
3940          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 109\r
3941          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 110\r
3942          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 111\r
3943          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 112\r
3944          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 113\r
3945          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 114\r
3946          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 115\r
3947          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 116\r
3948          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 117\r
3949          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 118\r
3950          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 119\r
3951          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 120\r
3952          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 121\r
3953          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 122\r
3954          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 123\r
3955          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 124\r
3956          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 125\r
3957          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 126\r
3958          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 127\r
3959          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 128\r
3960          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 129\r
3961          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 130\r
3962          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 131\r
3963          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 132\r
3964          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 133\r
3965          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 134\r
3966          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 135\r
3967          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 136\r
3968          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 137\r
3969          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 138\r
3970          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 139\r
3971          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 140\r
3972          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 141\r
3973          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 142\r
3974          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 143\r
3975          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 144\r
3976          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 145\r
3977          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 146\r
3978          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 147\r
3979          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 148\r
3980          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 149\r
3981          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 150\r
3982          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 151\r
3983          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 152\r
3984          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 153\r
3985          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 154\r
3986          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 155\r
3987          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 156\r
3988          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 157\r
3989          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 158\r
3990          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 159\r
3991          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 160\r
3992          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 161\r
3993          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 162\r
3994          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 163\r
3995          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 164\r
3996          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 165\r
3997          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 166\r
3998          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 167\r
3999          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 168\r
4000          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 169\r
4001          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 170\r
4002          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 171\r
4003          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 172\r
4004          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 173\r
4005          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 174\r
4006          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 175\r
4007          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 176\r
4008          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 177\r
4009          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 178\r
4010          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 179\r
4011          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 180\r
4012          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 181\r
4013          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 182\r
4014          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 183\r
4015          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 184\r
4016          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 185\r
4017          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 186\r
4018          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 187\r
4019          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 188\r
4020          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 189\r
4021          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 190\r
4022          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 191\r
4023          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 192\r
4024          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 193\r
4025          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 194\r
4026          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 195\r
4027          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 196\r
4028          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 197\r
4029          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 198\r
4030          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 199\r
4031          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 200\r
4032          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 201\r
4033          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 202\r
4034          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 203\r
4035          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 204\r
4036          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 205\r
4037          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 206\r
4038          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 207\r
4039          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 208\r
4040          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 209\r
4041          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 210\r
4042          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 211\r
4043          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 212\r
4044          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 213\r
4045          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 214\r
4046          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 215\r
4047          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 216\r
4048          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 217\r
4049          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 218\r
4050          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 219\r
4051          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 220\r
4052          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 221\r
4053          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 222\r
4054          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 223\r
4055          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 224\r
4056          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 225\r
4057          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 226\r
4058          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 227\r
4059          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 228\r
4060          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 229\r
4061          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 230\r
4062          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 231\r
4063          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 232\r
4064          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 233\r
4065          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 234\r
4066          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 235\r
4067          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 236\r
4068          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 237\r
4069          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 238\r
4070          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 239\r
4071          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 240\r
4072          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 241\r
4073          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 242\r
4074          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 243\r
4075          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 244\r
4076          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 245\r
4077          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 246\r
4078          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 247\r
4079          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 248\r
4080          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 249\r
4081          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 250\r
4082          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 251\r
4083          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 252\r
4084          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 253\r
4085          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 254\r
4086          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 255\r
4087 \r
4088 .align 4\r
4089 \r
4090 PZSTable_data: .byte (1<<ZFlag)|(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4091         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4092         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag),(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4093         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag),(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4094         .byte  (1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0,0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4095         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag),(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4096         .byte  (1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0,0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4097         .byte  (1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0,0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4098         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag),(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4099         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4100         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4101         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4102         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4103         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4104         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4105         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4106         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4107         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4108         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4109         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4110         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4111         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4112         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4113         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4114         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4115         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4116         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4117         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4118         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4119         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4120         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4121         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4122         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4123         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4124         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4125         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4126         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4127         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4128         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4129         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4130         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)       \r
4131 \r
4132 .align 4\r
4133 \r
4134 MAIN_opcodes:   \r
4135         .word opcode_0_0,opcode_0_1,opcode_0_2,opcode_0_3,opcode_0_4,opcode_0_5,opcode_0_6,opcode_0_7\r
4136         .word opcode_0_8,opcode_0_9,opcode_0_A,opcode_0_B,opcode_0_C,opcode_0_D,opcode_0_E,opcode_0_F\r
4137         .word opcode_1_0,opcode_1_1,opcode_1_2,opcode_1_3,opcode_1_4,opcode_1_5,opcode_1_6,opcode_1_7\r
4138         .word opcode_1_8,opcode_1_9,opcode_1_A,opcode_1_B,opcode_1_C,opcode_1_D,opcode_1_E,opcode_1_F\r
4139         .word opcode_2_0,opcode_2_1,opcode_2_2,opcode_2_3,opcode_2_4,opcode_2_5,opcode_2_6,opcode_2_7\r
4140         .word opcode_2_8,opcode_2_9,opcode_2_A,opcode_2_B,opcode_2_C,opcode_2_D,opcode_2_E,opcode_2_F\r
4141         .word opcode_3_0,opcode_3_1,opcode_3_2,opcode_3_3,opcode_3_4,opcode_3_5,opcode_3_6,opcode_3_7\r
4142         .word opcode_3_8,opcode_3_9,opcode_3_A,opcode_3_B,opcode_3_C,opcode_3_D,opcode_3_E,opcode_3_F\r
4143         .word opcode_4_0,opcode_4_1,opcode_4_2,opcode_4_3,opcode_4_4,opcode_4_5,opcode_4_6,opcode_4_7\r
4144         .word opcode_4_8,opcode_4_9,opcode_4_A,opcode_4_B,opcode_4_C,opcode_4_D,opcode_4_E,opcode_4_F\r
4145         .word opcode_5_0,opcode_5_1,opcode_5_2,opcode_5_3,opcode_5_4,opcode_5_5,opcode_5_6,opcode_5_7\r
4146         .word opcode_5_8,opcode_5_9,opcode_5_A,opcode_5_B,opcode_5_C,opcode_5_D,opcode_5_E,opcode_5_F\r
4147         .word opcode_6_0,opcode_6_1,opcode_6_2,opcode_6_3,opcode_6_4,opcode_6_5,opcode_6_6,opcode_6_7\r
4148         .word opcode_6_8,opcode_6_9,opcode_6_A,opcode_6_B,opcode_6_C,opcode_6_D,opcode_6_E,opcode_6_F\r
4149         .word opcode_7_0,opcode_7_1,opcode_7_2,opcode_7_3,opcode_7_4,opcode_7_5,opcode_7_6,opcode_7_7\r
4150         .word opcode_7_8,opcode_7_9,opcode_7_A,opcode_7_B,opcode_7_C,opcode_7_D,opcode_7_E,opcode_7_F\r
4151         .word opcode_8_0,opcode_8_1,opcode_8_2,opcode_8_3,opcode_8_4,opcode_8_5,opcode_8_6,opcode_8_7\r
4152         .word opcode_8_8,opcode_8_9,opcode_8_A,opcode_8_B,opcode_8_C,opcode_8_D,opcode_8_E,opcode_8_F\r
4153         .word opcode_9_0,opcode_9_1,opcode_9_2,opcode_9_3,opcode_9_4,opcode_9_5,opcode_9_6,opcode_9_7\r
4154         .word opcode_9_8,opcode_9_9,opcode_9_A,opcode_9_B,opcode_9_C,opcode_9_D,opcode_9_E,opcode_9_F\r
4155         .word opcode_A_0,opcode_A_1,opcode_A_2,opcode_A_3,opcode_A_4,opcode_A_5,opcode_A_6,opcode_A_7\r
4156         .word opcode_A_8,opcode_A_9,opcode_A_A,opcode_A_B,opcode_A_C,opcode_A_D,opcode_A_E,opcode_A_F\r
4157         .word opcode_B_0,opcode_B_1,opcode_B_2,opcode_B_3,opcode_B_4,opcode_B_5,opcode_B_6,opcode_B_7\r
4158         .word opcode_B_8,opcode_B_9,opcode_B_A,opcode_B_B,opcode_B_C,opcode_B_D,opcode_B_E,opcode_B_F\r
4159         .word opcode_C_0,opcode_C_1,opcode_C_2,opcode_C_3,opcode_C_4,opcode_C_5,opcode_C_6,opcode_C_7\r
4160         .word opcode_C_8,opcode_C_9,opcode_C_A,opcode_C_B,opcode_C_C,opcode_C_D,opcode_C_E,opcode_C_F\r
4161         .word opcode_D_0,opcode_D_1,opcode_D_2,opcode_D_3,opcode_D_4,opcode_D_5,opcode_D_6,opcode_D_7\r
4162         .word opcode_D_8,opcode_D_9,opcode_D_A,opcode_D_B,opcode_D_C,opcode_D_D,opcode_D_E,opcode_D_F\r
4163         .word opcode_E_0,opcode_E_1,opcode_E_2,opcode_E_3,opcode_E_4,opcode_E_5,opcode_E_6,opcode_E_7\r
4164         .word opcode_E_8,opcode_E_9,opcode_E_A,opcode_E_B,opcode_E_C,opcode_E_D,opcode_E_E,opcode_E_F\r
4165         .word opcode_F_0,opcode_F_1,opcode_F_2,opcode_F_3,opcode_F_4,opcode_F_5,opcode_F_6,opcode_F_7\r
4166         .word opcode_F_8,opcode_F_9,opcode_F_A,opcode_F_B,opcode_F_C,opcode_F_D,opcode_F_E,opcode_F_F\r
4167 \r
4168 .align 4\r
4169 \r
4170 EI_DUMMY_opcodes:\r
4171         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4172         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4173         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4174         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4175         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4176         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4177         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4178         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4179         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4180         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4181         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4182         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4183         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4184         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4185         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4186         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4187         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4188         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4189         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4190         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4191         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4192         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4193         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4194         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4195         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4196         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4197         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4198         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4199         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4200         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4201         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4202         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4203 \r
4204 .text\r
4205 .align 4\r
4206 \r
4207 ;@NOP\r
4208 opcode_0_0:\r
4209 ;@LD B,B\r
4210 opcode_4_0:\r
4211 ;@LD C,C\r
4212 opcode_4_9:\r
4213 ;@LD D,D\r
4214 opcode_5_2:\r
4215 ;@LD E,E\r
4216 opcode_5_B:\r
4217 ;@LD H,H\r
4218 opcode_6_4:\r
4219 ;@LD L,L\r
4220 opcode_6_D:\r
4221 ;@LD A,A\r
4222 opcode_7_F:\r
4223         fetch 4\r
4224 ;@LD BC,NN\r
4225 opcode_0_1:\r
4226         ldrb r0,[z80pc],#1\r
4227         ldrb r1,[z80pc],#1\r
4228         orr r0,r0,r1, lsl #8\r
4229         mov z80bc,r0, lsl #16\r
4230         fetch 10\r
4231 ;@LD (BC),A\r
4232 opcode_0_2:\r
4233         mov r0,z80a, lsr #24\r
4234         mov r1,z80bc, lsr #16\r
4235         writemem8\r
4236         fetch 7\r
4237 ;@INC BC\r
4238 opcode_0_3:\r
4239         add z80bc,z80bc,#1<<16\r
4240         fetch 6\r
4241 ;@INC B\r
4242 opcode_0_4:\r
4243         opINC8H z80bc\r
4244         fetch 4\r
4245 ;@DEC B\r
4246 opcode_0_5:\r
4247         opDEC8H z80bc\r
4248         fetch 4\r
4249 ;@LD B,N\r
4250 opcode_0_6:\r
4251         ldrb r1,[z80pc],#1\r
4252         and z80bc,z80bc,#0xFF<<16\r
4253         orr z80bc,z80bc,r1, lsl #24\r
4254         fetch 7\r
4255 ;@RLCA\r
4256 opcode_0_7:\r
4257         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4258         movs z80a,z80a, lsl #1\r
4259         orrcs z80a,z80a,#1<<24\r
4260         orrcs z80f,z80f,#1<<CFlag\r
4261         fetch 4\r
4262 ;@EX AF,AF'\r
4263 opcode_0_8:\r
4264         add r1,cpucontext,#z80a2\r
4265         swp z80a,z80a,[r1]\r
4266         add r1,cpucontext,#z80f2\r
4267         swp z80f,z80f,[r1]\r
4268         fetch 4\r
4269 ;@ADD HL,BC\r
4270 opcode_0_9:\r
4271         opADD16 z80hl z80bc\r
4272         fetch 11\r
4273 ;@LD A,(BC)\r
4274 opcode_0_A:\r
4275         mov r0,z80bc, lsr #16\r
4276         readmem8\r
4277         mov z80a,r0, lsl #24\r
4278         fetch 7\r
4279 ;@DEC BC\r
4280 opcode_0_B:\r
4281         sub z80bc,z80bc,#1<<16\r
4282         fetch 6\r
4283 ;@INC C\r
4284 opcode_0_C:\r
4285         opINC8L z80bc\r
4286         fetch 4\r
4287 ;@DEC C\r
4288 opcode_0_D:\r
4289         opDEC8L z80bc\r
4290         fetch 4\r
4291 ;@LD C,N\r
4292 opcode_0_E:\r
4293         ldrb r1,[z80pc],#1\r
4294         and z80bc,z80bc,#0xFF<<24\r
4295         orr z80bc,z80bc,r1, lsl #16\r
4296         fetch 7\r
4297 ;@RRCA\r
4298 opcode_0_F:\r
4299         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4300         movs z80a,z80a, lsr #25\r
4301         orrcs z80a,z80a,#1<<7\r
4302         orrcs z80f,z80f,#1<<CFlag\r
4303         mov z80a,z80a, lsl #24\r
4304         fetch 4\r
4305 ;@DJNZ $+2\r
4306 opcode_1_0:\r
4307         sub z80bc,z80bc,#1<<24\r
4308         tst z80bc,#0xFF<<24\r
4309         ldrsb r1,[z80pc],#1\r
4310         addne z80pc,z80pc,r1\r
4311         subne z80_icount,z80_icount,#5\r
4312         fetch 8\r
4313 \r
4314 ;@LD DE,NN\r
4315 opcode_1_1:\r
4316         ldrb r0,[z80pc],#1\r
4317         ldrb r1,[z80pc],#1\r
4318         orr r0,r0,r1, lsl #8\r
4319         mov z80de,r0, lsl #16\r
4320         fetch 10\r
4321 ;@LD (DE),A\r
4322 opcode_1_2:\r
4323         mov r0,z80a, lsr #24\r
4324         writemem8DE\r
4325         fetch 7\r
4326 ;@INC DE\r
4327 opcode_1_3:\r
4328         add z80de,z80de,#1<<16\r
4329         fetch 6\r
4330 ;@INC D\r
4331 opcode_1_4:\r
4332         opINC8H z80de\r
4333         fetch 4\r
4334 ;@DEC D\r
4335 opcode_1_5:\r
4336         opDEC8H z80de\r
4337         fetch 4\r
4338 ;@LD D,N\r
4339 opcode_1_6:\r
4340         ldrb r1,[z80pc],#1\r
4341         and z80de,z80de,#0xFF<<16\r
4342         orr z80de,z80de,r1, lsl #24\r
4343         fetch 7\r
4344 ;@RLA\r
4345 opcode_1_7:\r
4346         tst z80f,#1<<CFlag\r
4347         orrne z80a,z80a,#1<<23\r
4348         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4349         movs z80a,z80a, lsl #1\r
4350         orrcs z80f,z80f,#1<<CFlag\r
4351         fetch 4\r
4352 ;@JR $+2\r
4353 opcode_1_8:\r
4354         ldrsb r1,[z80pc],#1\r
4355         add z80pc,z80pc,r1\r
4356         fetch 12\r
4357 ;@ADD HL,DE\r
4358 opcode_1_9:\r
4359         opADD16 z80hl z80de\r
4360         fetch 11\r
4361 ;@LD A,(DE)\r
4362 opcode_1_A:\r
4363         mov r0,z80de, lsr #16\r
4364         readmem8\r
4365         mov z80a,r0, lsl #24\r
4366         fetch 7\r
4367 ;@DEC DE\r
4368 opcode_1_B:\r
4369         sub z80de,z80de,#1<<16\r
4370         fetch 6\r
4371 ;@INC E\r
4372 opcode_1_C:\r
4373         opINC8L z80de\r
4374         fetch 4\r
4375 ;@DEC E\r
4376 opcode_1_D:\r
4377         opDEC8L z80de\r
4378         fetch 4\r
4379 ;@LD E,N\r
4380 opcode_1_E:\r
4381         ldrb r0,[z80pc],#1\r
4382         and z80de,z80de,#0xFF<<24\r
4383         orr z80de,z80de,r0, lsl #16\r
4384         fetch 7\r
4385 ;@RRA\r
4386 opcode_1_F:\r
4387         orr z80a,z80a,z80f,lsr#1                ;@get C\r
4388         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4389         movs z80a,z80a,ror#25\r
4390         orrcs z80f,z80f,#1<<CFlag\r
4391         mov z80a,z80a,lsl#24\r
4392         fetch 4\r
4393 ;@JR NZ,$+2\r
4394 opcode_2_0:\r
4395         tst z80f,#1<<ZFlag\r
4396         beq opcode_1_8\r
4397         add z80pc,z80pc,#1\r
4398         fetch 7\r
4399 ;@LD HL,NN\r
4400 opcode_2_1:\r
4401         ldrb r0,[z80pc],#1\r
4402         ldrb r1,[z80pc],#1\r
4403         orr r0,r0,r1, lsl #8\r
4404         mov z80hl,r0, lsl #16\r
4405         fetch 10\r
4406 ;@LD (NN),HL\r
4407 opcode_ED_63:\r
4408         eatcycles 4\r
4409 ;@LD (NN),HL\r
4410 opcode_2_2:\r
4411         ldrb r0,[z80pc],#1\r
4412         ldrb r1,[z80pc],#1\r
4413         orr r1,r0,r1, lsl #8\r
4414         mov r0,z80hl, lsr #16\r
4415         writemem16\r
4416         fetch 16\r
4417 ;@INC HL\r
4418 opcode_2_3:\r
4419         add z80hl,z80hl,#1<<16\r
4420         fetch 6\r
4421 ;@INC H\r
4422 opcode_2_4:\r
4423         opINC8H z80hl\r
4424         fetch 4\r
4425 ;@DEC H\r
4426 opcode_2_5:\r
4427         opDEC8H z80hl\r
4428         fetch 4\r
4429 ;@LD H,N\r
4430 opcode_2_6:\r
4431         ldrb r1,[z80pc],#1\r
4432         and z80hl,z80hl,#0xFF<<16\r
4433         orr z80hl,z80hl,r1, lsl #24\r
4434         fetch 7\r
4435 DAATABLE_LOCAL: .word DAATable\r
4436 ;@DAA\r
4437 opcode_2_7:\r
4438         mov r1,z80a, lsr #24\r
4439         tst z80f,#1<<CFlag\r
4440         orrne r1,r1,#256\r
4441         tst z80f,#1<<HFlag\r
4442         orrne r1,r1,#512\r
4443         tst z80f,#1<<NFlag\r
4444         orrne r1,r1,#1024\r
4445         ldr r2,DAATABLE_LOCAL\r
4446         add r2,r2,r1, lsl #1\r
4447         ldrh r1,[r2]\r
4448         and z80f,r1,#0xFF\r
4449         and r2,r1,#0xFF<<8\r
4450         mov z80a,r2, lsl #16\r
4451         fetch 4\r
4452 ;@JR Z,$+2\r
4453 opcode_2_8:\r
4454         tst z80f,#1<<ZFlag\r
4455         bne opcode_1_8\r
4456         add z80pc,z80pc,#1\r
4457         fetch 7\r
4458 ;@ADD HL,HL\r
4459 opcode_2_9:\r
4460         opADD16_2 z80hl\r
4461         fetch 11\r
4462 ;@LD HL,(NN)\r
4463 opcode_ED_6B:\r
4464         eatcycles 4\r
4465 ;@LD HL,(NN)\r
4466 opcode_2_A:\r
4467         ldrb r0,[z80pc],#1\r
4468         ldrb r1,[z80pc],#1\r
4469         orr r0,r0,r1, lsl #8\r
4470         readmem16\r
4471         mov z80hl,r0, lsl #16\r
4472         fetch 16\r
4473 ;@DEC HL\r
4474 opcode_2_B:\r
4475         sub z80hl,z80hl,#1<<16\r
4476         fetch 6\r
4477 ;@INC L\r
4478 opcode_2_C:\r
4479         opINC8L z80hl\r
4480         fetch 4\r
4481 ;@DEC L\r
4482 opcode_2_D:\r
4483         opDEC8L z80hl\r
4484         fetch 4\r
4485 ;@LD L,N\r
4486 opcode_2_E:\r
4487         ldrb r0,[z80pc],#1\r
4488         and z80hl,z80hl,#0xFF<<24\r
4489         orr z80hl,z80hl,r0, lsl #16\r
4490         fetch 7\r
4491 ;@CPL\r
4492 opcode_2_F:\r
4493         eor z80a,z80a,#0xFF<<24\r
4494         orr z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4495         fetch 4\r
4496 ;@JR NC,$+2\r
4497 opcode_3_0:\r
4498         tst z80f,#1<<CFlag\r
4499         beq opcode_1_8\r
4500         add z80pc,z80pc,#1\r
4501         fetch 7\r
4502 ;@LD SP,NN\r
4503 opcode_3_1:\r
4504         ldrb r0,[z80pc],#1\r
4505         ldrb r1,[z80pc],#1\r
4506 \r
4507 .if FAST_Z80SP\r
4508         orr r0,r0,r1, lsl #8\r
4509         rebasesp\r
4510 .else\r
4511         orr z80sp,r0,r1, lsl #8\r
4512 .endif\r
4513         fetch 10\r
4514 ;@LD (NN),A\r
4515 opcode_3_2:\r
4516         ldrb r0,[z80pc],#1\r
4517         ldrb r1,[z80pc],#1\r
4518         orr r1,r0,r1, lsl #8\r
4519         mov r0,z80a, lsr #24\r
4520         writemem8\r
4521         fetch 13\r
4522 ;@INC SP\r
4523 opcode_3_3:\r
4524         add z80sp,z80sp,#1\r
4525         fetch 6\r
4526 ;@INC (HL)\r
4527 opcode_3_4:\r
4528         readmem8HL\r
4529         opINC8b\r
4530         writemem8HL\r
4531         fetch 11\r
4532 ;@DEC (HL)\r
4533 opcode_3_5:\r
4534         readmem8HL\r
4535         opDEC8b\r
4536         writemem8HL\r
4537         fetch 11\r
4538 ;@LD (HL),N\r
4539 opcode_3_6:\r
4540         ldrb r0,[z80pc],#1\r
4541         writemem8HL\r
4542         fetch 10\r
4543 ;@SCF\r
4544 opcode_3_7:\r
4545         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4546         orr z80f,z80f,#1<<CFlag\r
4547         fetch 4\r
4548 ;@JR C,$+2\r
4549 opcode_3_8:\r
4550         tst z80f,#1<<CFlag\r
4551         bne opcode_1_8\r
4552         add z80pc,z80pc,#1\r
4553         fetch 7\r
4554 ;@ADD HL,SP\r
4555 opcode_3_9:\r
4556 .if FAST_Z80SP\r
4557         ldr r0,[cpucontext,#z80sp_base]\r
4558         sub r0,z80sp,r0\r
4559         opADD16s z80hl r0 16\r
4560 .else\r
4561         opADD16s z80hl z80sp 16\r
4562 .endif\r
4563         fetch 11\r
4564 ;@LD A,(NN)\r
4565 opcode_3_A:\r
4566         ldrb r0,[z80pc],#1\r
4567         ldrb r1,[z80pc],#1\r
4568         orr r0,r0,r1, lsl #8\r
4569         readmem8\r
4570         mov z80a,r0, lsl #24\r
4571         fetch 13\r
4572 ;@DEC SP\r
4573 opcode_3_B:\r
4574         sub z80sp,z80sp,#1\r
4575         fetch 6\r
4576 ;@INC A\r
4577 opcode_3_C:\r
4578         opINC8 z80a\r
4579         fetch 4\r
4580 ;@DEC A\r
4581 opcode_3_D:\r
4582         opDEC8 z80a\r
4583         fetch 4\r
4584 ;@LD A,N\r
4585 opcode_3_E:\r
4586         ldrb r0,[z80pc],#1\r
4587         mov z80a,r0, lsl #24\r
4588         fetch 7\r
4589 ;@CCF\r
4590 opcode_3_F:\r
4591         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4592         tst z80f,#1<<CFlag\r
4593         orrne z80f,z80f,#1<<HFlag\r
4594         eor z80f,z80f,#1<<CFlag\r
4595         fetch 4\r
4596 \r
4597 ;@LD B,C\r
4598 opcode_4_1:\r
4599         and z80bc,z80bc,#0xFF<<16\r
4600         orr z80bc,z80bc,z80bc, lsl #8\r
4601         fetch 4\r
4602 ;@LD B,D\r
4603 opcode_4_2:\r
4604         and z80bc,z80bc,#0xFF<<16\r
4605         and r1,z80de,#0xFF<<24\r
4606         orr z80bc,z80bc,r1\r
4607         fetch 4\r
4608 ;@LD B,E\r
4609 opcode_4_3:\r
4610         and z80bc,z80bc,#0xFF<<16\r
4611         and r1,z80de,#0xFF<<16\r
4612         orr z80bc,z80bc,r1, lsl #8\r
4613         fetch 4\r
4614 ;@LD B,H\r
4615 opcode_4_4:\r
4616         and z80bc,z80bc,#0xFF<<16\r
4617         and r1,z80hl,#0xFF<<24\r
4618         orr z80bc,z80bc,r1\r
4619         fetch 4\r
4620 ;@LD B,L\r
4621 opcode_4_5:\r
4622         and z80bc,z80bc,#0xFF<<16\r
4623         and r1,z80hl,#0xFF<<16\r
4624         orr z80bc,z80bc,r1, lsl #8\r
4625         fetch 4\r
4626 ;@LD B,(HL)\r
4627 opcode_4_6:\r
4628         readmem8HL\r
4629         and z80bc,z80bc,#0xFF<<16\r
4630         orr z80bc,z80bc,r0, lsl #24\r
4631         fetch 7\r
4632 ;@LD B,A\r
4633 opcode_4_7:\r
4634         and z80bc,z80bc,#0xFF<<16\r
4635         orr z80bc,z80bc,z80a\r
4636         fetch 4\r
4637 ;@LD C,B\r
4638 opcode_4_8:\r
4639         and z80bc,z80bc,#0xFF<<24\r
4640         orr z80bc,z80bc,z80bc, lsr #8\r
4641         fetch 4\r
4642 ;@LD C,D\r
4643 opcode_4_A:\r
4644         and z80bc,z80bc,#0xFF<<24\r
4645         and r1,z80de,#0xFF<<24\r
4646         orr z80bc,z80bc,r1, lsr #8\r
4647         fetch 4\r
4648 ;@LD C,E\r
4649 opcode_4_B:\r
4650         and z80bc,z80bc,#0xFF<<24\r
4651         and r1,z80de,#0xFF<<16\r
4652         orr z80bc,z80bc,r1 \r
4653         fetch 4\r
4654 ;@LD C,H\r
4655 opcode_4_C:\r
4656         and z80bc,z80bc,#0xFF<<24\r
4657         and r1,z80hl,#0xFF<<24\r
4658         orr z80bc,z80bc,r1, lsr #8\r
4659         fetch 4\r
4660 ;@LD C,L\r
4661 opcode_4_D:\r
4662         and z80bc,z80bc,#0xFF<<24\r
4663         and r1,z80hl,#0xFF<<16\r
4664         orr z80bc,z80bc,r1 \r
4665         fetch 4\r
4666 ;@LD C,(HL)\r
4667 opcode_4_E:\r
4668         readmem8HL\r
4669         and z80bc,z80bc,#0xFF<<24\r
4670         orr z80bc,z80bc,r0, lsl #16\r
4671         fetch 7\r
4672 ;@LD C,A\r
4673 opcode_4_F:\r
4674         and z80bc,z80bc,#0xFF<<24\r
4675         orr z80bc,z80bc,z80a, lsr #8\r
4676         fetch 4\r
4677 ;@LD D,B\r
4678 opcode_5_0:\r
4679         and z80de,z80de,#0xFF<<16\r
4680         and r1,z80bc,#0xFF<<24\r
4681         orr z80de,z80de,r1\r
4682         fetch 4\r
4683 ;@LD D,C\r
4684 opcode_5_1:\r
4685         and z80de,z80de,#0xFF<<16\r
4686         orr z80de,z80de,z80bc, lsl #8\r
4687         fetch 4\r
4688 ;@LD D,E\r
4689 opcode_5_3:\r
4690         and z80de,z80de,#0xFF<<16\r
4691         orr z80de,z80de,z80de, lsl #8\r
4692         fetch 4\r
4693 ;@LD D,H\r
4694 opcode_5_4:\r
4695         and z80de,z80de,#0xFF<<16\r
4696         and r1,z80hl,#0xFF<<24\r
4697         orr z80de,z80de,r1\r
4698         fetch 4\r
4699 ;@LD D,L\r
4700 opcode_5_5:\r
4701         and z80de,z80de,#0xFF<<16\r
4702         orr z80de,z80de,z80hl, lsl #8\r
4703         fetch 4\r
4704 ;@LD D,(HL)\r
4705 opcode_5_6:\r
4706         readmem8HL\r
4707         and z80de,z80de,#0xFF<<16\r
4708         orr z80de,z80de,r0, lsl #24\r
4709         fetch 7\r
4710 ;@LD D,A\r
4711 opcode_5_7:\r
4712         and z80de,z80de,#0xFF<<16\r
4713         orr z80de,z80de,z80a\r
4714         fetch 4\r
4715 ;@LD E,B\r
4716 opcode_5_8:\r
4717         and z80de,z80de,#0xFF<<24\r
4718         and r1,z80bc,#0xFF<<24\r
4719         orr z80de,z80de,r1, lsr #8\r
4720         fetch 4\r
4721 ;@LD E,C\r
4722 opcode_5_9:\r
4723         and z80de,z80de,#0xFF<<24\r
4724         and r1,z80bc,#0xFF<<16\r
4725         orr z80de,z80de,r1 \r
4726         fetch 4\r
4727 ;@LD E,D\r
4728 opcode_5_A:\r
4729         and z80de,z80de,#0xFF<<24\r
4730         orr z80de,z80de,z80de, lsr #8\r
4731         fetch 4\r
4732 ;@LD E,H\r
4733 opcode_5_C:\r
4734         and z80de,z80de,#0xFF<<24\r
4735         and r1,z80hl,#0xFF<<24\r
4736         orr z80de,z80de,r1, lsr #8\r
4737         fetch 4\r
4738 ;@LD E,L\r
4739 opcode_5_D:\r
4740         and z80de,z80de,#0xFF<<24\r
4741         and r1,z80hl,#0xFF<<16\r
4742         orr z80de,z80de,r1 \r
4743         fetch 4\r
4744 ;@LD E,(HL)\r
4745 opcode_5_E:\r
4746         readmem8HL\r
4747         and z80de,z80de,#0xFF<<24\r
4748         orr z80de,z80de,r0, lsl #16\r
4749         fetch 7\r
4750 ;@LD E,A\r
4751 opcode_5_F:\r
4752         and z80de,z80de,#0xFF<<24\r
4753         orr z80de,z80de,z80a, lsr #8\r
4754         fetch 4\r
4755 \r
4756 ;@LD H,B\r
4757 opcode_6_0:\r
4758         and z80hl,z80hl,#0xFF<<16\r
4759         and r1,z80bc,#0xFF<<24\r
4760         orr z80hl,z80hl,r1\r
4761         fetch 4\r
4762 ;@LD H,C\r
4763 opcode_6_1:\r
4764         and z80hl,z80hl,#0xFF<<16\r
4765         orr z80hl,z80hl,z80bc, lsl #8\r
4766         fetch 4\r
4767 ;@LD H,D\r
4768 opcode_6_2:\r
4769         and z80hl,z80hl,#0xFF<<16\r
4770         and r1,z80de,#0xFF<<24\r
4771         orr z80hl,z80hl,r1\r
4772         fetch 4\r
4773 ;@LD H,E\r
4774 opcode_6_3:\r
4775         and z80hl,z80hl,#0xFF<<16\r
4776         orr z80hl,z80hl,z80de, lsl #8\r
4777         fetch 4\r
4778 ;@LD H,L\r
4779 opcode_6_5:\r
4780         and z80hl,z80hl,#0xFF<<16\r
4781         orr z80hl,z80hl,z80hl, lsl #8\r
4782         fetch 4\r
4783 ;@LD H,(HL)\r
4784 opcode_6_6:\r
4785         readmem8HL\r
4786         and z80hl,z80hl,#0xFF<<16\r
4787         orr z80hl,z80hl,r0, lsl #24\r
4788         fetch 7\r
4789 ;@LD H,A\r
4790 opcode_6_7:\r
4791         and z80hl,z80hl,#0xFF<<16\r
4792         orr z80hl,z80hl,z80a\r
4793         fetch 4\r
4794 \r
4795 ;@LD L,B\r
4796 opcode_6_8:\r
4797         and z80hl,z80hl,#0xFF<<24\r
4798         and r1,z80bc,#0xFF<<24\r
4799         orr z80hl,z80hl,r1, lsr #8\r
4800         fetch 4\r
4801 ;@LD L,C\r
4802 opcode_6_9:\r
4803         and z80hl,z80hl,#0xFF<<24\r
4804         and r1,z80bc,#0xFF<<16\r
4805         orr z80hl,z80hl,r1\r
4806         fetch 4\r
4807 ;@LD L,D\r
4808 opcode_6_A:\r
4809         and z80hl,z80hl,#0xFF<<24\r
4810         and r1,z80de,#0xFF<<24\r
4811         orr z80hl,z80hl,r1, lsr #8\r
4812         fetch 4\r
4813 ;@LD L,E\r
4814 opcode_6_B:\r
4815         and z80hl,z80hl,#0xFF<<24\r
4816         and r1,z80de,#0xFF<<16\r
4817         orr z80hl,z80hl,r1\r
4818         fetch 4\r
4819 ;@LD L,H\r
4820 opcode_6_C:\r
4821         and z80hl,z80hl,#0xFF<<24\r
4822         orr z80hl,z80hl,z80hl, lsr #8\r
4823         fetch 4\r
4824 ;@LD L,(HL)\r
4825 opcode_6_E:\r
4826         readmem8HL\r
4827         and z80hl,z80hl,#0xFF<<24\r
4828         orr z80hl,z80hl,r0, lsl #16\r
4829         fetch 7\r
4830 ;@LD L,A\r
4831 opcode_6_F:\r
4832         and z80hl,z80hl,#0xFF<<24\r
4833         orr z80hl,z80hl,z80a, lsr #8\r
4834         fetch 4\r
4835 \r
4836 ;@LD (HL),B\r
4837 opcode_7_0:\r
4838         mov r0,z80bc, lsr #24\r
4839         writemem8HL\r
4840         fetch 7\r
4841 ;@LD (HL),C\r
4842 opcode_7_1:\r
4843         mov r0,z80bc, lsr #16\r
4844         and r0,r0,#0xFF\r
4845         writemem8HL\r
4846         fetch 7\r
4847 ;@LD (HL),D\r
4848 opcode_7_2:\r
4849         mov r0,z80de, lsr #24\r
4850         writemem8HL\r
4851         fetch 7\r
4852 ;@LD (HL),E\r
4853 opcode_7_3:\r
4854         mov r0,z80de, lsr #16\r
4855         and r0,r0,#0xFF\r
4856         writemem8HL\r
4857         fetch 7\r
4858 ;@LD (HL),H\r
4859 opcode_7_4:\r
4860         mov r0,z80hl, lsr #24\r
4861         writemem8HL\r
4862         fetch 7\r
4863 ;@LD (HL),L\r
4864 opcode_7_5:\r
4865         mov r1,z80hl, lsr #16\r
4866         and r0,r1,#0xFF\r
4867         writemem8\r
4868         fetch 7\r
4869 ;@HALT\r
4870 opcode_7_6:\r
4871         sub z80pc,z80pc,#1\r
4872         ldrb r0,[cpucontext,#z80if]\r
4873         orr r0,r0,#Z80_HALT\r
4874         strb r0,[cpucontext,#z80if]\r
4875         mov z80_icount,#0\r
4876         b z80_execute_end\r
4877 ;@LD (HL),A\r
4878 opcode_7_7:\r
4879         mov r0,z80a, lsr #24\r
4880         writemem8HL\r
4881         fetch 7\r
4882 \r
4883 ;@LD A,B\r
4884 opcode_7_8:\r
4885         and z80a,z80bc,#0xFF<<24\r
4886         fetch 4\r
4887 ;@LD A,C\r
4888 opcode_7_9:\r
4889         mov z80a,z80bc, lsl #8\r
4890         fetch 4\r
4891 ;@LD A,D\r
4892 opcode_7_A:\r
4893         and z80a,z80de,#0xFF<<24\r
4894         fetch 4\r
4895 ;@LD A,E\r
4896 opcode_7_B:\r
4897         mov z80a,z80de, lsl #8\r
4898         fetch 4\r
4899 ;@LD A,H\r
4900 opcode_7_C:\r
4901         and z80a,z80hl,#0xFF<<24\r
4902         fetch 4\r
4903 ;@LD A,L\r
4904 opcode_7_D:\r
4905         mov z80a,z80hl, lsl #8\r
4906         fetch 4\r
4907 ;@LD A,(HL)\r
4908 opcode_7_E:\r
4909         readmem8HL\r
4910         mov z80a,r0, lsl #24\r
4911         fetch 7\r
4912 \r
4913 ;@ADD A,B\r
4914 opcode_8_0:\r
4915         opADDH z80bc\r
4916 ;@ADD A,C\r
4917 opcode_8_1:\r
4918         opADDL z80bc\r
4919 ;@ADD A,D\r
4920 opcode_8_2:\r
4921         opADDH z80de\r
4922 ;@ADD A,E\r
4923 opcode_8_3:\r
4924         opADDL z80de\r
4925 ;@ADD A,H\r
4926 opcode_8_4:\r
4927         opADDH z80hl\r
4928 ;@ADD A,L\r
4929 opcode_8_5:\r
4930         opADDL z80hl\r
4931 ;@ADD A,(HL)\r
4932 opcode_8_6:\r
4933         readmem8HL\r
4934         opADDb\r
4935         fetch 7\r
4936 ;@ADD A,A\r
4937 opcode_8_7:\r
4938         opADDA\r
4939 \r
4940 ;@ADC A,B\r
4941 opcode_8_8:\r
4942         opADCH z80bc\r
4943 ;@ADC A,C\r
4944 opcode_8_9:\r
4945         opADCL z80bc\r
4946 ;@ADC A,D\r
4947 opcode_8_A:\r
4948         opADCH z80de\r
4949 ;@ADC A,E\r
4950 opcode_8_B:\r
4951         opADCL z80de\r
4952 ;@ADC A,H\r
4953 opcode_8_C:\r
4954         opADCH z80hl\r
4955 ;@ADC A,L\r
4956 opcode_8_D:\r
4957         opADCL z80hl\r
4958 ;@ADC A,(HL)\r
4959 opcode_8_E:\r
4960         readmem8HL\r
4961         opADCb\r
4962         fetch 7\r
4963 ;@ADC A,A\r
4964 opcode_8_F:\r
4965         opADCA\r
4966 \r
4967 ;@SUB B\r
4968 opcode_9_0:\r
4969         opSUBH z80bc\r
4970 ;@SUB C\r
4971 opcode_9_1:\r
4972         opSUBL z80bc\r
4973 ;@SUB D\r
4974 opcode_9_2:\r
4975         opSUBH z80de\r
4976 ;@SUB E\r
4977 opcode_9_3:\r
4978         opSUBL z80de\r
4979 ;@SUB H\r
4980 opcode_9_4:\r
4981         opSUBH z80hl\r
4982 ;@SUB L\r
4983 opcode_9_5:\r
4984         opSUBL z80hl\r
4985 ;@SUB (HL)\r
4986 opcode_9_6:\r
4987         readmem8HL\r
4988         opSUBb\r
4989         fetch 7\r
4990 ;@SUB A\r
4991 opcode_9_7:\r
4992         opSUBA\r
4993 \r
4994 ;@SBC B \r
4995 opcode_9_8:\r
4996         opSBCH z80bc\r
4997 ;@SBC C\r
4998 opcode_9_9:\r
4999         opSBCL z80bc\r
5000 ;@SBC D\r
5001 opcode_9_A:\r
5002         opSBCH z80de\r
5003 ;@SBC E\r
5004 opcode_9_B:\r
5005         opSBCL z80de\r
5006 ;@SBC H\r
5007 opcode_9_C:\r
5008         opSBCH z80hl\r
5009 ;@SBC L\r
5010 opcode_9_D:\r
5011         opSBCL z80hl\r
5012 ;@SBC (HL)\r
5013 opcode_9_E:\r
5014         readmem8HL\r
5015         opSBCb\r
5016         fetch 7\r
5017 ;@SBC A\r
5018 opcode_9_F:\r
5019         opSBCA\r
5020 \r
5021 ;@AND B\r
5022 opcode_A_0:\r
5023         opANDH z80bc\r
5024 ;@AND C\r
5025 opcode_A_1:\r
5026         opANDL z80bc\r
5027 ;@AND D\r
5028 opcode_A_2:\r
5029         opANDH z80de\r
5030 ;@AND E\r
5031 opcode_A_3:\r
5032         opANDL z80de\r
5033 ;@AND H\r
5034 opcode_A_4:\r
5035         opANDH z80hl\r
5036 ;@AND L\r
5037 opcode_A_5:\r
5038         opANDL z80hl\r
5039 ;@AND (HL)\r
5040 opcode_A_6:\r
5041         readmem8HL\r
5042         opANDb\r
5043         fetch 7\r
5044 ;@AND A\r
5045 opcode_A_7:\r
5046         opANDA\r
5047 \r
5048 ;@XOR B\r
5049 opcode_A_8:\r
5050         opXORH z80bc\r
5051 ;@XOR C\r
5052 opcode_A_9:\r
5053         opXORL z80bc\r
5054 ;@XOR D\r
5055 opcode_A_A:\r
5056         opXORH z80de\r
5057 ;@XOR E\r
5058 opcode_A_B:\r
5059         opXORL z80de\r
5060 ;@XOR H\r
5061 opcode_A_C:\r
5062         opXORH z80hl\r
5063 ;@XOR L\r
5064 opcode_A_D:\r
5065         opXORL z80hl\r
5066 ;@XOR (HL)\r
5067 opcode_A_E:\r
5068         readmem8HL\r
5069         opXORb\r
5070         fetch 7\r
5071 ;@XOR A\r
5072 opcode_A_F:\r
5073         opXORA\r
5074 \r
5075 ;@OR B\r
5076 opcode_B_0:\r
5077         opORH z80bc\r
5078 ;@OR C\r
5079 opcode_B_1:\r
5080         opORL z80bc\r
5081 ;@OR D\r
5082 opcode_B_2:\r
5083         opORH z80de\r
5084 ;@OR E\r
5085 opcode_B_3:\r
5086         opORL z80de\r
5087 ;@OR H\r
5088 opcode_B_4:\r
5089         opORH z80hl\r
5090 ;@OR L\r
5091 opcode_B_5:\r
5092         opORL z80hl\r
5093 ;@OR (HL)\r
5094 opcode_B_6:\r
5095         readmem8HL\r
5096         opORb\r
5097         fetch 7\r
5098 ;@OR A\r
5099 opcode_B_7:\r
5100         opORA\r
5101 \r
5102 ;@CP B\r
5103 opcode_B_8:\r
5104         opCPH z80bc\r
5105 ;@CP C\r
5106 opcode_B_9:\r
5107         opCPL z80bc\r
5108 ;@CP D\r
5109 opcode_B_A:\r
5110         opCPH z80de\r
5111 ;@CP E\r
5112 opcode_B_B:\r
5113         opCPL z80de\r
5114 ;@CP H\r
5115 opcode_B_C:\r
5116         opCPH z80hl\r
5117 ;@CP L\r
5118 opcode_B_D:\r
5119         opCPL z80hl\r
5120 ;@CP (HL)\r
5121 opcode_B_E:\r
5122         readmem8HL\r
5123         opCPb\r
5124         fetch 7\r
5125 ;@CP A\r
5126 opcode_B_F:\r
5127         opCPA\r
5128 \r
5129 ;@RET NZ\r
5130 opcode_C_0:\r
5131         tst z80f,#1<<ZFlag\r
5132         beq opcode_C_9_cond             ;@unconditional RET\r
5133         fetch 5\r
5134 \r
5135 ;@POP BC\r
5136 opcode_C_1:\r
5137         opPOPreg z80bc\r
5138 \r
5139 ;@JP NZ,$+3\r
5140 opcode_C_2:\r
5141         tst z80f,#1<<ZFlag\r
5142         beq opcode_C_3          ;@unconditional JP\r
5143         add z80pc,z80pc,#2\r
5144         fetch 10\r
5145 ;@JP $+3\r
5146 opcode_C_3:\r
5147         ldrb r0,[z80pc],#1\r
5148         ldrb r1,[z80pc],#1\r
5149         orr r0,r0,r1, lsl #8\r
5150         rebasepc\r
5151         fetch 10\r
5152 ;@CALL NZ,NN\r
5153 opcode_C_4:\r
5154         tst z80f,#1<<ZFlag\r
5155         beq opcode_C_D          ;@unconditional CALL\r
5156         add z80pc,z80pc,#2\r
5157         fetch 10\r
5158 \r
5159 ;@PUSH BC\r
5160 opcode_C_5:\r
5161         opPUSHreg z80bc\r
5162         fetch 11\r
5163 ;@ADD A,N\r
5164 opcode_C_6:\r
5165         ldrb r0,[z80pc],#1\r
5166         opADDb\r
5167         fetch 7\r
5168 ;@RST 0\r
5169 opcode_C_7:\r
5170         opRST 0x00\r
5171 \r
5172 ;@RET Z\r
5173 opcode_C_8:\r
5174         tst z80f,#1<<ZFlag\r
5175         bne opcode_C_9_cond             ;@unconditional RET\r
5176         fetch 5\r
5177 \r
5178 opcode_C_9_cond:\r
5179         eatcycles 1\r
5180 ;@RET\r
5181 opcode_C_9:\r
5182     opPOP\r
5183         rebasepc\r
5184         fetch 10\r
5185 ;@JP Z,$+3\r
5186 opcode_C_A:\r
5187         tst z80f,#1<<ZFlag\r
5188         bne opcode_C_3  ;@unconditional JP\r
5189         add z80pc,z80pc,#2\r
5190         fetch 10\r
5191 \r
5192 ;@This reads this opcodes_CB lookup table to find the location of\r
5193 ;@the CB sub for the intruction and then branches to that location\r
5194 opcode_C_B:\r
5195         ldrb r0,[z80pc],#1\r
5196         ldr pc,[pc,r0, lsl #2]\r
5197 opcodes_CB:     .word 0x00000000\r
5198                         .word opcode_CB_00,opcode_CB_01,opcode_CB_02,opcode_CB_03,opcode_CB_04,opcode_CB_05,opcode_CB_06,opcode_CB_07\r
5199                         .word opcode_CB_08,opcode_CB_09,opcode_CB_0A,opcode_CB_0B,opcode_CB_0C,opcode_CB_0D,opcode_CB_0E,opcode_CB_0F\r
5200                         .word opcode_CB_10,opcode_CB_11,opcode_CB_12,opcode_CB_13,opcode_CB_14,opcode_CB_15,opcode_CB_16,opcode_CB_17\r
5201                         .word opcode_CB_18,opcode_CB_19,opcode_CB_1A,opcode_CB_1B,opcode_CB_1C,opcode_CB_1D,opcode_CB_1E,opcode_CB_1F\r
5202                         .word opcode_CB_20,opcode_CB_21,opcode_CB_22,opcode_CB_23,opcode_CB_24,opcode_CB_25,opcode_CB_26,opcode_CB_27\r
5203                         .word opcode_CB_28,opcode_CB_29,opcode_CB_2A,opcode_CB_2B,opcode_CB_2C,opcode_CB_2D,opcode_CB_2E,opcode_CB_2F\r
5204                         .word opcode_CB_30,opcode_CB_31,opcode_CB_32,opcode_CB_33,opcode_CB_34,opcode_CB_35,opcode_CB_36,opcode_CB_37\r
5205                         .word opcode_CB_38,opcode_CB_39,opcode_CB_3A,opcode_CB_3B,opcode_CB_3C,opcode_CB_3D,opcode_CB_3E,opcode_CB_3F\r
5206                         .word opcode_CB_40,opcode_CB_41,opcode_CB_42,opcode_CB_43,opcode_CB_44,opcode_CB_45,opcode_CB_46,opcode_CB_47\r
5207                         .word opcode_CB_48,opcode_CB_49,opcode_CB_4A,opcode_CB_4B,opcode_CB_4C,opcode_CB_4D,opcode_CB_4E,opcode_CB_4F\r
5208                         .word opcode_CB_50,opcode_CB_51,opcode_CB_52,opcode_CB_53,opcode_CB_54,opcode_CB_55,opcode_CB_56,opcode_CB_57\r
5209                         .word opcode_CB_58,opcode_CB_59,opcode_CB_5A,opcode_CB_5B,opcode_CB_5C,opcode_CB_5D,opcode_CB_5E,opcode_CB_5F\r
5210                         .word opcode_CB_60,opcode_CB_61,opcode_CB_62,opcode_CB_63,opcode_CB_64,opcode_CB_65,opcode_CB_66,opcode_CB_67\r
5211                         .word opcode_CB_68,opcode_CB_69,opcode_CB_6A,opcode_CB_6B,opcode_CB_6C,opcode_CB_6D,opcode_CB_6E,opcode_CB_6F\r
5212                         .word opcode_CB_70,opcode_CB_71,opcode_CB_72,opcode_CB_73,opcode_CB_74,opcode_CB_75,opcode_CB_76,opcode_CB_77\r
5213                         .word opcode_CB_78,opcode_CB_79,opcode_CB_7A,opcode_CB_7B,opcode_CB_7C,opcode_CB_7D,opcode_CB_7E,opcode_CB_7F\r
5214                         .word opcode_CB_80,opcode_CB_81,opcode_CB_82,opcode_CB_83,opcode_CB_84,opcode_CB_85,opcode_CB_86,opcode_CB_87\r
5215                         .word opcode_CB_88,opcode_CB_89,opcode_CB_8A,opcode_CB_8B,opcode_CB_8C,opcode_CB_8D,opcode_CB_8E,opcode_CB_8F\r
5216                         .word opcode_CB_90,opcode_CB_91,opcode_CB_92,opcode_CB_93,opcode_CB_94,opcode_CB_95,opcode_CB_96,opcode_CB_97\r
5217                         .word opcode_CB_98,opcode_CB_99,opcode_CB_9A,opcode_CB_9B,opcode_CB_9C,opcode_CB_9D,opcode_CB_9E,opcode_CB_9F\r
5218                         .word opcode_CB_A0,opcode_CB_A1,opcode_CB_A2,opcode_CB_A3,opcode_CB_A4,opcode_CB_A5,opcode_CB_A6,opcode_CB_A7\r
5219                         .word opcode_CB_A8,opcode_CB_A9,opcode_CB_AA,opcode_CB_AB,opcode_CB_AC,opcode_CB_AD,opcode_CB_AE,opcode_CB_AF\r
5220                         .word opcode_CB_B0,opcode_CB_B1,opcode_CB_B2,opcode_CB_B3,opcode_CB_B4,opcode_CB_B5,opcode_CB_B6,opcode_CB_B7\r
5221                         .word opcode_CB_B8,opcode_CB_B9,opcode_CB_BA,opcode_CB_BB,opcode_CB_BC,opcode_CB_BD,opcode_CB_BE,opcode_CB_BF\r
5222                         .word opcode_CB_C0,opcode_CB_C1,opcode_CB_C2,opcode_CB_C3,opcode_CB_C4,opcode_CB_C5,opcode_CB_C6,opcode_CB_C7\r
5223                         .word opcode_CB_C8,opcode_CB_C9,opcode_CB_CA,opcode_CB_CB,opcode_CB_CC,opcode_CB_CD,opcode_CB_CE,opcode_CB_CF\r
5224                         .word opcode_CB_D0,opcode_CB_D1,opcode_CB_D2,opcode_CB_D3,opcode_CB_D4,opcode_CB_D5,opcode_CB_D6,opcode_CB_D7\r
5225                         .word opcode_CB_D8,opcode_CB_D9,opcode_CB_DA,opcode_CB_DB,opcode_CB_DC,opcode_CB_DD,opcode_CB_DE,opcode_CB_DF\r
5226                         .word opcode_CB_E0,opcode_CB_E1,opcode_CB_E2,opcode_CB_E3,opcode_CB_E4,opcode_CB_E5,opcode_CB_E6,opcode_CB_E7\r
5227                         .word opcode_CB_E8,opcode_CB_E9,opcode_CB_EA,opcode_CB_EB,opcode_CB_EC,opcode_CB_ED,opcode_CB_EE,opcode_CB_EF\r
5228                         .word opcode_CB_F0,opcode_CB_F1,opcode_CB_F2,opcode_CB_F3,opcode_CB_F4,opcode_CB_F5,opcode_CB_F6,opcode_CB_F7\r
5229                         .word opcode_CB_F8,opcode_CB_F9,opcode_CB_FA,opcode_CB_FB,opcode_CB_FC,opcode_CB_FD,opcode_CB_FE,opcode_CB_FF\r
5230 \r
5231 ;@CALL Z,NN\r
5232 opcode_C_C:\r
5233         tst z80f,#1<<ZFlag\r
5234         bne opcode_C_D          ;@unconditional CALL\r
5235         add z80pc,z80pc,#2\r
5236         fetch 10\r
5237 ;@CALL NN\r
5238 opcode_C_D:\r
5239         ldrb r0,[z80pc],#1\r
5240         ldrb r1,[z80pc],#1\r
5241         ldr r2,[cpucontext,#z80pc_base]\r
5242         sub r2,z80pc,r2\r
5243         orr z80pc,r0,r1, lsl #8\r
5244     opPUSHareg r2\r
5245     mov r0,z80pc\r
5246         rebasepc\r
5247         fetch 17\r
5248 ;@ADC A,N\r
5249 opcode_C_E:\r
5250         ldrb r0,[z80pc],#1\r
5251         opADCb\r
5252         fetch 7\r
5253 ;@RST 8H\r
5254 opcode_C_F:\r
5255         opRST 0x08\r
5256 \r
5257 ;@RET NC\r
5258 opcode_D_0:\r
5259         tst z80f,#1<<CFlag\r
5260         beq opcode_C_9_cond             ;@unconditional RET\r
5261         fetch 5\r
5262 ;@POP DE\r
5263 opcode_D_1:\r
5264         opPOPreg z80de\r
5265 \r
5266 ;@JP NC, $+3\r
5267 opcode_D_2 :\r
5268         tst z80f,#1<<CFlag\r
5269         beq opcode_C_3          ;@unconditional JP\r
5270         add z80pc,z80pc,#2\r
5271         fetch 10\r
5272 ;@OUT (N),A\r
5273 opcode_D_3:\r
5274         ldrb r0,[z80pc],#1\r
5275         orr r0,r0,z80a,lsr#16\r
5276         mov r1,z80a, lsr #24\r
5277         opOUT\r
5278         fetch 11\r
5279 ;@CALL NC,NN\r
5280 opcode_D_4:\r
5281         tst z80f,#1<<CFlag\r
5282         beq opcode_C_D          ;@unconditional CALL\r
5283         add z80pc,z80pc,#2\r
5284         fetch 10\r
5285 ;@PUSH DE\r
5286 opcode_D_5:\r
5287         opPUSHreg z80de\r
5288         fetch 11\r
5289 ;@SUB N\r
5290 opcode_D_6:\r
5291         ldrb r0,[z80pc],#1\r
5292         opSUBb\r
5293         fetch 7\r
5294 \r
5295 ;@RST 10H\r
5296 opcode_D_7:\r
5297         opRST 0x10\r
5298 \r
5299 ;@RET C\r
5300 opcode_D_8:\r
5301         tst z80f,#1<<CFlag\r
5302         bne opcode_C_9_cond             ;@unconditional RET\r
5303         fetch 5\r
5304 ;@EXX\r
5305 opcode_D_9:\r
5306         add r1,cpucontext,#z80bc2\r
5307         swp z80bc,z80bc,[r1]\r
5308         add r1,cpucontext,#z80de2\r
5309         swp z80de,z80de,[r1]\r
5310         add r1,cpucontext,#z80hl2\r
5311         swp z80hl,z80hl,[r1]\r
5312         fetch 4\r
5313 ;@JP C,$+3\r
5314 opcode_D_A:\r
5315         tst z80f,#1<<CFlag\r
5316         bne opcode_C_3          ;@unconditional JP\r
5317         add z80pc,z80pc,#2\r
5318         fetch 10\r
5319 ;@IN A,(N)\r
5320 opcode_D_B:\r
5321         ldrb r0,[z80pc],#1\r
5322         orr r0,r0,z80a,lsr#16\r
5323         opIN\r
5324         mov z80a,r0, lsl #24    ;@ r0 = data read\r
5325         fetch 11\r
5326 ;@CALL C,NN\r
5327 opcode_D_C:\r
5328         tst z80f,#1<<CFlag\r
5329         bne opcode_C_D          ;@unconditional CALL\r
5330         add z80pc,z80pc,#2\r
5331         fetch 10\r
5332 \r
5333 ;@opcodes_DD\r
5334 opcode_D_D:\r
5335         add z80xx,cpucontext,#z80ix\r
5336         b opcode_D_D_F_D\r
5337 opcode_F_D:\r
5338         add z80xx,cpucontext,#z80iy\r
5339 opcode_D_D_F_D:\r
5340         ldrb r0,[z80pc],#1\r
5341         ldr pc,[pc,r0, lsl #2]\r
5342 opcodes_DD:     .word 0x00000000\r
5343                         .word opcode_0_0,  opcode_0_1,  opcode_0_2,  opcode_0_3,  opcode_0_4,  opcode_0_5,  opcode_0_6,  opcode_0_7\r
5344                         .word opcode_0_8,  opcode_DD_09,opcode_0_A,  opcode_0_B,  opcode_0_C,  opcode_0_D,  opcode_0_E,  opcode_0_F\r
5345                         .word opcode_1_0,  opcode_1_1,  opcode_1_2,  opcode_1_3,  opcode_1_4,  opcode_1_5,  opcode_1_6,  opcode_1_7\r
5346                         .word opcode_1_8,  opcode_DD_19,opcode_1_A,  opcode_1_B,  opcode_1_C,  opcode_1_D,  opcode_1_E,  opcode_1_F\r
5347                         .word opcode_2_0,  opcode_DD_21,opcode_DD_22,opcode_DD_23,opcode_DD_24,opcode_DD_25,opcode_DD_26,opcode_2_7\r
5348                         .word opcode_2_8,  opcode_DD_29,opcode_DD_2A,opcode_DD_2B,opcode_DD_2C,opcode_DD_2D,opcode_DD_2E,opcode_2_F\r
5349                         .word opcode_3_0,  opcode_3_1,  opcode_3_2,  opcode_3_3,  opcode_DD_34,opcode_DD_35,opcode_DD_36,opcode_3_7\r
5350                         .word opcode_3_8,  opcode_DD_39,opcode_3_A,  opcode_3_B,  opcode_3_C,  opcode_3_D,  opcode_3_E,  opcode_3_F\r
5351                         .word opcode_4_0,  opcode_4_1,  opcode_4_2,  opcode_4_3,  opcode_DD_44,opcode_DD_45,opcode_DD_46,opcode_4_7\r
5352                         .word opcode_4_8,  opcode_4_9,  opcode_4_A,  opcode_4_B,  opcode_DD_4C,opcode_DD_4D,opcode_DD_4E,opcode_4_F\r
5353                         .word opcode_5_0,  opcode_5_1,  opcode_5_2,  opcode_5_3,  opcode_DD_54,opcode_DD_55,opcode_DD_56,opcode_5_7\r
5354                         .word opcode_5_8,  opcode_5_9,  opcode_5_A,  opcode_5_B,  opcode_DD_5C,opcode_DD_5D,opcode_DD_5E,opcode_5_F\r
5355                         .word opcode_DD_60,opcode_DD_61,opcode_DD_62,opcode_DD_63,opcode_DD_64,opcode_DD_65,opcode_DD_66,opcode_DD_67\r
5356                         .word opcode_DD_68,opcode_DD_69,opcode_DD_6A,opcode_DD_6B,opcode_DD_6C,opcode_DD_6D,opcode_DD_6E,opcode_DD_6F\r
5357                         .word opcode_DD_70,opcode_DD_71,opcode_DD_72,opcode_DD_73,opcode_DD_74,opcode_DD_75,opcode_7_6,  opcode_DD_77\r
5358                         .word opcode_7_8,  opcode_7_9,  opcode_7_A,  opcode_7_B,  opcode_DD_7C,opcode_DD_7D,opcode_DD_7E,opcode_7_F\r
5359                         .word opcode_8_0,  opcode_8_1,  opcode_8_2,  opcode_8_3,  opcode_DD_84,opcode_DD_85,opcode_DD_86,opcode_8_7\r
5360                         .word opcode_8_8,  opcode_8_9,  opcode_8_A,  opcode_8_B,  opcode_DD_8C,opcode_DD_8D,opcode_DD_8E,opcode_8_F\r
5361                         .word opcode_9_0,  opcode_9_1,  opcode_9_2,  opcode_9_3,  opcode_DD_94,opcode_DD_95,opcode_DD_96,opcode_9_7\r
5362                         .word opcode_9_8,  opcode_9_9,  opcode_9_A,  opcode_9_B,  opcode_DD_9C,opcode_DD_9D,opcode_DD_9E,opcode_9_F\r
5363                         .word opcode_A_0,  opcode_A_1,  opcode_A_2,  opcode_A_3,  opcode_DD_A4,opcode_DD_A5,opcode_DD_A6,opcode_A_7\r
5364                         .word opcode_A_8,  opcode_A_9,  opcode_A_A,  opcode_A_B,  opcode_DD_AC,opcode_DD_AD,opcode_DD_AE,opcode_A_F\r
5365                         .word opcode_B_0,  opcode_B_1,  opcode_B_2,  opcode_B_3,  opcode_DD_B4,opcode_DD_B5,opcode_DD_B6,opcode_B_7\r
5366                         .word opcode_B_8,  opcode_B_9,  opcode_B_A,  opcode_B_B,  opcode_DD_BC,opcode_DD_BD,opcode_DD_BE,opcode_B_F\r
5367                         .word opcode_C_0,  opcode_C_1,  opcode_C_2,  opcode_C_3,  opcode_C_4,  opcode_C_5,  opcode_C_6,  opcode_C_7\r
5368                         .word opcode_C_8,  opcode_C_9,  opcode_C_A,  opcode_DD_CB,opcode_C_C,  opcode_C_D,  opcode_C_E,  opcode_C_F\r
5369                         .word opcode_D_0,  opcode_D_1,  opcode_D_2,  opcode_D_3,  opcode_D_4,  opcode_D_5,  opcode_D_6,  opcode_D_7\r
5370                         .word opcode_D_8,  opcode_D_9,  opcode_D_A,  opcode_D_B,  opcode_D_C,  opcode_D_D,  opcode_D_E,  opcode_D_F\r
5371                         .word opcode_E_0,  opcode_DD_E1,opcode_E_2,  opcode_DD_E3,opcode_E_4,  opcode_DD_E5,opcode_E_6,  opcode_E_7\r
5372                         .word opcode_E_8,  opcode_DD_E9,opcode_E_A,  opcode_E_B,  opcode_E_C,  opcode_E_D,  opcode_E_E,  opcode_E_F\r
5373                         .word opcode_F_0,  opcode_F_1,  opcode_F_2,  opcode_F_3,  opcode_F_4,  opcode_F_5,  opcode_F_6,  opcode_F_7\r
5374                         .word opcode_F_8,  opcode_DD_F9,opcode_F_A,  opcode_F_B,  opcode_F_C,  opcode_F_D,  opcode_F_E,  opcode_F_F\r
5375 \r
5376 ;@SBC A,N\r
5377 opcode_D_E:\r
5378         ldrb r0,[z80pc],#1\r
5379         opSBCb\r
5380         fetch 7\r
5381 ;@RST 18H\r
5382 opcode_D_F:\r
5383         opRST 0x18\r
5384 \r
5385 ;@RET PO\r
5386 opcode_E_0:\r
5387         tst z80f,#1<<VFlag\r
5388         beq opcode_C_9_cond             ;@unconditional RET\r
5389         fetch 5\r
5390 ;@POP HL\r
5391 opcode_E_1:\r
5392         opPOPreg z80hl\r
5393 \r
5394 ;@JP PO,$+3\r
5395 opcode_E_2:\r
5396         tst z80f,#1<<VFlag\r
5397         beq opcode_C_3          ;@unconditional JP\r
5398         add z80pc,z80pc,#2\r
5399         fetch 10\r
5400 ;@EX (SP),HL\r
5401 opcode_E_3:\r
5402 .if FAST_Z80SP\r
5403         ldrb r0,[z80sp]\r
5404         ldrb r1,[z80sp,#1]\r
5405         orr r0,r0,r1, lsl #8\r
5406         mov r1,z80hl, lsr #24\r
5407         strb r1,[z80sp,#1]\r
5408         mov r1,z80hl, lsr #16\r
5409         strb r1,[z80sp]\r
5410         mov z80hl,r0, lsl #16\r
5411 .else\r
5412         mov r0,z80sp\r
5413         readmem16\r
5414         mov r1,r0\r
5415         mov r0,z80hl,lsr#16\r
5416         mov z80hl,r1,lsl#16\r
5417         mov r1,z80sp\r
5418         writemem16\r
5419 .endif\r
5420         fetch 19\r
5421 ;@CALL PO,NN\r
5422 opcode_E_4:\r
5423         tst z80f,#1<<VFlag\r
5424         beq opcode_C_D          ;@unconditional CALL\r
5425         add z80pc,z80pc,#2\r
5426         fetch 10\r
5427 ;@PUSH HL\r
5428 opcode_E_5:\r
5429         opPUSHreg z80hl\r
5430         fetch 11\r
5431 ;@AND N\r
5432 opcode_E_6:\r
5433         ldrb r0,[z80pc],#1\r
5434         opANDb\r
5435         fetch 7\r
5436 ;@RST 20H\r
5437 opcode_E_7:\r
5438         opRST 0x20\r
5439 \r
5440 ;@RET PE\r
5441 opcode_E_8:\r
5442         tst z80f,#1<<VFlag\r
5443         bne opcode_C_9_cond             ;@unconditional RET\r
5444         fetch 5\r
5445 ;@JP (HL)\r
5446 opcode_E_9:\r
5447         mov r0,z80hl, lsr #16\r
5448         rebasepc\r
5449         fetch 4\r
5450 ;@JP PE,$+3\r
5451 opcode_E_A:\r
5452         tst z80f,#1<<VFlag\r
5453         bne opcode_C_3          ;@unconditional JP\r
5454         add z80pc,z80pc,#2\r
5455         fetch 10\r
5456 ;@EX DE,HL\r
5457 opcode_E_B:\r
5458         mov r1,z80de\r
5459         mov z80de,z80hl\r
5460         mov z80hl,r1\r
5461         fetch 4\r
5462 ;@CALL PE,NN\r
5463 opcode_E_C:\r
5464         tst z80f,#1<<VFlag\r
5465         bne opcode_C_D          ;@unconditional CALL\r
5466         add z80pc,z80pc,#2\r
5467         fetch 10\r
5468 \r
5469 ;@This should be caught at start\r
5470 opcode_E_D:\r
5471         ldrb r1,[z80pc],#1\r
5472         ldr pc,[pc,r1, lsl #2]\r
5473 opcodes_ED:     .word 0x00000000\r
5474                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5475                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5476                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5477                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5478                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5479                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5480                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5481                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5482                         .word opcode_ED_40,opcode_ED_41,opcode_ED_42,opcode_ED_43,opcode_ED_44,opcode_ED_45,opcode_ED_46,opcode_ED_47\r
5483                         .word opcode_ED_48,opcode_ED_49,opcode_ED_4A,opcode_ED_4B,opcode_ED_44,opcode_ED_4D,opcode_ED_46,opcode_ED_4F\r
5484                         .word opcode_ED_50,opcode_ED_51,opcode_ED_52,opcode_ED_53,opcode_ED_44,opcode_ED_45,opcode_ED_56,opcode_ED_57\r
5485                         .word opcode_ED_58,opcode_ED_59,opcode_ED_5A,opcode_ED_5B,opcode_ED_44,opcode_ED_45,opcode_ED_5E,opcode_ED_5F\r
5486                         .word opcode_ED_60,opcode_ED_61,opcode_ED_62,opcode_ED_63,opcode_ED_44,opcode_ED_45,opcode_ED_46,opcode_ED_67\r
5487                         .word opcode_ED_68,opcode_ED_69,opcode_ED_6A,opcode_ED_6B,opcode_ED_44,opcode_ED_45,opcode_ED_46,opcode_ED_6F\r
5488                         .word opcode_ED_70,opcode_ED_71,opcode_ED_72,opcode_ED_73,opcode_ED_44,opcode_ED_45,opcode_ED_56,opcode_ED_NF\r
5489                         .word opcode_ED_78,opcode_ED_79,opcode_ED_7A,opcode_ED_7B,opcode_ED_44,opcode_ED_45,opcode_ED_5E,opcode_ED_NF\r
5490                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5491                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5492                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5493                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5494                         .word opcode_ED_A0,opcode_ED_A1,opcode_ED_A2,opcode_ED_A3,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5495                         .word opcode_ED_A8,opcode_ED_A9,opcode_ED_AA,opcode_ED_AB,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5496                         .word opcode_ED_B0,opcode_ED_B1,opcode_ED_B2,opcode_ED_B3,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5497                         .word opcode_ED_B8,opcode_ED_B9,opcode_ED_BA,opcode_ED_BB,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5498                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5499                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5500                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5501                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5502                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5503                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5504                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5505                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5506 \r
5507 ;@XOR N\r
5508 opcode_E_E:\r
5509         ldrb r0,[z80pc],#1\r
5510         opXORb\r
5511         fetch 7\r
5512 ;@RST 28H\r
5513 opcode_E_F:\r
5514         opRST 0x28\r
5515 \r
5516 ;@RET P\r
5517 opcode_F_0:\r
5518         tst z80f,#1<<SFlag\r
5519         beq opcode_C_9_cond             ;@unconditional RET\r
5520         fetch 5\r
5521 ;@POP AF\r
5522 opcode_F_1:\r
5523 .if FAST_Z80SP\r
5524         ldrb z80f,[z80sp],#1\r
5525         sub r0,opcodes,#0x200\r
5526         ldrb z80f,[r0,z80f]\r
5527         ldrb z80a,[z80sp],#1\r
5528         mov z80a,z80a, lsl #24\r
5529 .else\r
5530         mov r0,z80sp\r
5531         readmem16\r
5532         add z80sp,z80sp,#2\r
5533         and z80a,r0,#0xFF00\r
5534         mov z80a,z80a,lsl#16\r
5535         and z80f,r0,#0xFF\r
5536         sub r0,opcodes,#0x200\r
5537         ldrb z80f,[r0,z80f]\r
5538 .endif\r
5539         fetch 10\r
5540 ;@JP P,$+3\r
5541 opcode_F_2:\r
5542         tst z80f,#1<<SFlag\r
5543         beq opcode_C_3          ;@unconditional JP\r
5544         add z80pc,z80pc,#2\r
5545         fetch 10\r
5546 ;@DI\r
5547 opcode_F_3:\r
5548         ldrb r1,[cpucontext,#z80if]\r
5549         bic r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5550         strb r1,[cpucontext,#z80if]\r
5551         fetch 4\r
5552 ;@CALL P,NN\r
5553 opcode_F_4:\r
5554         tst z80f,#1<<SFlag\r
5555         beq opcode_C_D          ;@unconditional CALL\r
5556         add z80pc,z80pc,#2\r
5557         fetch 10\r
5558 ;@PUSH AF\r
5559 opcode_F_5:\r
5560         sub r0,opcodes,#0x300\r
5561         ldrb r0,[r0,z80f]\r
5562         orr r2,r0,z80a,lsr#16\r
5563     opPUSHareg r2\r
5564         fetch 11\r
5565 ;@OR N\r
5566 opcode_F_6:\r
5567         ldrb r0,[z80pc],#1\r
5568         opORb\r
5569         fetch 7\r
5570 ;@RST 30H\r
5571 opcode_F_7:\r
5572         opRST 0x30\r
5573 \r
5574 ;@RET M\r
5575 opcode_F_8:\r
5576         tst z80f,#1<<SFlag\r
5577         bne opcode_C_9_cond             ;@unconditional RET\r
5578         fetch 5\r
5579 ;@LD SP,HL\r
5580 opcode_F_9:\r
5581 .if FAST_Z80SP\r
5582         mov r0,z80hl, lsr #16\r
5583         rebasesp\r
5584 .else\r
5585         mov z80sp,z80hl, lsr #16\r
5586 .endif\r
5587         fetch 6\r
5588 ;@JP M,$+3\r
5589 opcode_F_A:\r
5590         tst z80f,#1<<SFlag\r
5591         bne opcode_C_3          ;@unconditional JP\r
5592         add z80pc,z80pc,#2\r
5593         fetch 10\r
5594 MAIN_opcodes_POINTER: .word MAIN_opcodes\r
5595 EI_DUMMY_opcodes_POINTER: .word EI_DUMMY_opcodes\r
5596 ;@EI\r
5597 opcode_F_B:\r
5598         ldrb r1,[cpucontext,#z80if]\r
5599         mov r2,opcodes\r
5600         orr r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5601         strb r1,[cpucontext,#z80if]\r
5602 \r
5603         ldrb r0,[z80pc],#1\r
5604         eatcycles 4\r
5605         ldr opcodes,EI_DUMMY_opcodes_POINTER\r
5606         ldr pc,[r2,r0, lsl #2]\r
5607 \r
5608 ei_return:\r
5609         ;@point that program returns from EI to check interupts\r
5610         ;@an interupt can not be taken directly after a EI opcode\r
5611         ;@ reset z80pc and opcode pointer\r
5612         ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
5613         sub z80pc,z80pc,#1\r
5614         ldr opcodes,MAIN_opcodes_POINTER\r
5615         ;@ check ints\r
5616         tst r0,#0xff\r
5617         movne r0,r0,lsr #8\r
5618         tstne r0,#1\r
5619         blne DoInterrupt\r
5620 \r
5621         ;@ continue\r
5622         fetch 0\r
5623 \r
5624 ;@CALL M,NN\r
5625 opcode_F_C:\r
5626         tst z80f,#1<<SFlag\r
5627         bne opcode_C_D          ;@unconditional CALL\r
5628         add z80pc,z80pc,#2\r
5629         fetch 10\r
5630 \r
5631 ;@SHOULD BE CAUGHT AT START - FD SECTION\r
5632 \r
5633 ;@CP N\r
5634 opcode_F_E:\r
5635         ldrb r0,[z80pc],#1\r
5636         opCPb\r
5637         fetch 7\r
5638 ;@RST 38H\r
5639 opcode_F_F:\r
5640         opRST 0x38\r
5641 \r
5642 \r
5643 ;@##################################\r
5644 ;@##################################\r
5645 ;@###  opcodes CB  #########################\r
5646 ;@##################################\r
5647 ;@##################################\r
5648 \r
5649 \r
5650 ;@RLC B\r
5651 opcode_CB_00:\r
5652         opRLCH z80bc\r
5653 ;@RLC C\r
5654 opcode_CB_01:\r
5655         opRLCL z80bc\r
5656 ;@RLC D\r
5657 opcode_CB_02:\r
5658         opRLCH z80de\r
5659 ;@RLC E\r
5660 opcode_CB_03:\r
5661         opRLCL z80de\r
5662 ;@RLC H\r
5663 opcode_CB_04:\r
5664         opRLCH z80hl\r
5665 ;@RLC L\r
5666 opcode_CB_05:\r
5667         opRLCL z80hl\r
5668 ;@RLC (HL)\r
5669 opcode_CB_06:\r
5670         readmem8HL\r
5671         opRLCb\r
5672         writemem8HL\r
5673         fetch 15\r
5674 ;@RLC A\r
5675 opcode_CB_07:\r
5676         opRLCA\r
5677 \r
5678 ;@RRC B\r
5679 opcode_CB_08:\r
5680         opRRCH z80bc\r
5681 ;@RRC C\r
5682 opcode_CB_09:\r
5683         opRRCL z80bc\r
5684 ;@RRC D\r
5685 opcode_CB_0A:\r
5686         opRRCH z80de\r
5687 ;@RRC E\r
5688 opcode_CB_0B:\r
5689         opRRCL z80de\r
5690 ;@RRC H\r
5691 opcode_CB_0C:\r
5692         opRRCH z80hl\r
5693 ;@RRC L\r
5694 opcode_CB_0D:\r
5695         opRRCL z80hl\r
5696 ;@RRC (HL)\r
5697 opcode_CB_0E :\r
5698         readmem8HL\r
5699         opRRCb\r
5700         writemem8HL\r
5701         fetch 15\r
5702 ;@RRC A\r
5703 opcode_CB_0F:\r
5704         opRRCA\r
5705 \r
5706 ;@RL B\r
5707 opcode_CB_10:\r
5708         opRLH z80bc\r
5709 ;@RL C\r
5710 opcode_CB_11:\r
5711         opRLL z80bc\r
5712 ;@RL D\r
5713 opcode_CB_12:\r
5714         opRLH z80de\r
5715 ;@RL E\r
5716 opcode_CB_13:\r
5717         opRLL z80de\r
5718 ;@RL H\r
5719 opcode_CB_14:\r
5720         opRLH z80hl\r
5721 ;@RL L\r
5722 opcode_CB_15:\r
5723         opRLL z80hl\r
5724 ;@RL (HL)\r
5725 opcode_CB_16:\r
5726         readmem8HL\r
5727         opRLb\r
5728         writemem8HL\r
5729         fetch 15\r
5730 ;@RL A\r
5731 opcode_CB_17:\r
5732         opRLA\r
5733 \r
5734 ;@RR B \r
5735 opcode_CB_18:\r
5736         opRRH z80bc\r
5737 ;@RR C\r
5738 opcode_CB_19:\r
5739         opRRL z80bc\r
5740 ;@RR D\r
5741 opcode_CB_1A:\r
5742         opRRH z80de\r
5743 ;@RR E\r
5744 opcode_CB_1B:\r
5745         opRRL z80de\r
5746 ;@RR H\r
5747 opcode_CB_1C:\r
5748         opRRH z80hl\r
5749 ;@RR L\r
5750 opcode_CB_1D:\r
5751         opRRL z80hl\r
5752 ;@RR (HL)\r
5753 opcode_CB_1E:\r
5754         readmem8HL\r
5755         opRRb\r
5756         writemem8HL\r
5757         fetch 15\r
5758 ;@RR A\r
5759 opcode_CB_1F:\r
5760         opRRA\r
5761 \r
5762 ;@SLA B\r
5763 opcode_CB_20:\r
5764         opSLAH z80bc\r
5765 ;@SLA C\r
5766 opcode_CB_21:\r
5767         opSLAL z80bc\r
5768 ;@SLA D\r
5769 opcode_CB_22:\r
5770         opSLAH z80de\r
5771 ;@SLA E\r
5772 opcode_CB_23:\r
5773         opSLAL z80de\r
5774 ;@SLA H\r
5775 opcode_CB_24:\r
5776         opSLAH z80hl\r
5777 ;@SLA L\r
5778 opcode_CB_25:\r
5779         opSLAL z80hl\r
5780 ;@SLA (HL)\r
5781 opcode_CB_26:\r
5782         readmem8HL\r
5783         opSLAb\r
5784         writemem8HL\r
5785         fetch 15\r
5786 ;@SLA A\r
5787 opcode_CB_27:\r
5788         opSLAA\r
5789 \r
5790 ;@SRA B\r
5791 opcode_CB_28:\r
5792         opSRAH z80bc\r
5793 ;@SRA C\r
5794 opcode_CB_29:\r
5795         opSRAL z80bc\r
5796 ;@SRA D\r
5797 opcode_CB_2A:\r
5798         opSRAH z80de\r
5799 ;@SRA E\r
5800 opcode_CB_2B:\r
5801         opSRAL z80de\r
5802 ;@SRA H\r
5803 opcode_CB_2C:\r
5804         opSRAH z80hl\r
5805 ;@SRA L\r
5806 opcode_CB_2D:\r
5807         opSRAL z80hl\r
5808 ;@SRA (HL)\r
5809 opcode_CB_2E:\r
5810         readmem8HL\r
5811         opSRAb\r
5812         writemem8HL\r
5813         fetch 15\r
5814 ;@SRA A\r
5815 opcode_CB_2F:\r
5816         opSRAA\r
5817 \r
5818 ;@SLL B\r
5819 opcode_CB_30:\r
5820         opSLLH z80bc\r
5821 ;@SLL C\r
5822 opcode_CB_31:\r
5823         opSLLL z80bc\r
5824 ;@SLL D\r
5825 opcode_CB_32:\r
5826         opSLLH z80de\r
5827 ;@SLL E\r
5828 opcode_CB_33:\r
5829         opSLLL z80de\r
5830 ;@SLL H\r
5831 opcode_CB_34:\r
5832         opSLLH z80hl\r
5833 ;@SLL L\r
5834 opcode_CB_35:\r
5835         opSLLL z80hl\r
5836 ;@SLL (HL)\r
5837 opcode_CB_36:\r
5838         readmem8HL\r
5839         opSLLb\r
5840         writemem8HL\r
5841         fetch 15\r
5842 ;@SLL A\r
5843 opcode_CB_37:\r
5844         opSLLA\r
5845 \r
5846 ;@SRL B\r
5847 opcode_CB_38:\r
5848         opSRLH z80bc\r
5849 ;@SRL C\r
5850 opcode_CB_39:\r
5851         opSRLL z80bc\r
5852 ;@SRL D\r
5853 opcode_CB_3A:\r
5854         opSRLH z80de\r
5855 ;@SRL E\r
5856 opcode_CB_3B:\r
5857         opSRLL z80de\r
5858 ;@SRL H\r
5859 opcode_CB_3C:\r
5860         opSRLH z80hl\r
5861 ;@SRL L\r
5862 opcode_CB_3D:\r
5863         opSRLL z80hl\r
5864 ;@SRL (HL)\r
5865 opcode_CB_3E:\r
5866         readmem8HL\r
5867         opSRLb\r
5868         writemem8HL\r
5869         fetch 15\r
5870 ;@SRL A\r
5871 opcode_CB_3F:\r
5872         opSRLA\r
5873 \r
5874 \r
5875 ;@BIT 0,B\r
5876 opcode_CB_40:\r
5877         opBITH z80bc 0\r
5878 ;@BIT 0,C\r
5879 opcode_CB_41:\r
5880         opBITL z80bc 0\r
5881 ;@BIT 0,D\r
5882 opcode_CB_42:\r
5883         opBITH z80de 0\r
5884 ;@BIT 0,E\r
5885 opcode_CB_43:\r
5886         opBITL z80de 0\r
5887 ;@BIT 0,H\r
5888 opcode_CB_44:\r
5889         opBITH z80hl 0\r
5890 ;@BIT 0,L\r
5891 opcode_CB_45:\r
5892         opBITL z80hl 0\r
5893 ;@BIT 0,(HL)\r
5894 opcode_CB_46:\r
5895         readmem8HL\r
5896         opBITb 0\r
5897         fetch 12\r
5898 ;@BIT 0,A\r
5899 opcode_CB_47:\r
5900         opBITH z80a 0\r
5901 \r
5902 ;@BIT 1,B\r
5903 opcode_CB_48:\r
5904         opBITH z80bc 1\r
5905 ;@BIT 1,C\r
5906 opcode_CB_49:\r
5907         opBITL z80bc 1\r
5908 ;@BIT 1,D\r
5909 opcode_CB_4A:\r
5910         opBITH z80de 1\r
5911 ;@BIT 1,E\r
5912 opcode_CB_4B:\r
5913         opBITL z80de 1\r
5914 ;@BIT 1,H\r
5915 opcode_CB_4C:\r
5916         opBITH z80hl 1\r
5917 ;@BIT 1,L\r
5918 opcode_CB_4D:\r
5919         opBITL z80hl 1\r
5920 ;@BIT 1,(HL)\r
5921 opcode_CB_4E:\r
5922         readmem8HL\r
5923         opBITb 1\r
5924         fetch 12\r
5925 ;@BIT 1,A\r
5926 opcode_CB_4F:\r
5927         opBITH z80a 1\r
5928 \r
5929 ;@BIT 2,B\r
5930 opcode_CB_50:\r
5931         opBITH z80bc 2\r
5932 ;@BIT 2,C\r
5933 opcode_CB_51:\r
5934         opBITL z80bc 2\r
5935 ;@BIT 2,D\r
5936 opcode_CB_52:\r
5937         opBITH z80de 2\r
5938 ;@BIT 2,E\r
5939 opcode_CB_53:\r
5940         opBITL z80de 2\r
5941 ;@BIT 2,H\r
5942 opcode_CB_54:\r
5943         opBITH z80hl 2\r
5944 ;@BIT 2,L\r
5945 opcode_CB_55:\r
5946         opBITL z80hl 2\r
5947 ;@BIT 2,(HL)\r
5948 opcode_CB_56:\r
5949         readmem8HL\r
5950         opBITb 2\r
5951         fetch 12\r
5952 ;@BIT 2,A\r
5953 opcode_CB_57:\r
5954         opBITH z80a 2\r
5955 \r
5956 ;@BIT 3,B\r
5957 opcode_CB_58:\r
5958         opBITH z80bc 3\r
5959 ;@BIT 3,C\r
5960 opcode_CB_59:\r
5961         opBITL z80bc 3\r
5962 ;@BIT 3,D\r
5963 opcode_CB_5A:\r
5964         opBITH z80de 3\r
5965 ;@BIT 3,E\r
5966 opcode_CB_5B:\r
5967         opBITL z80de 3\r
5968 ;@BIT 3,H\r
5969 opcode_CB_5C:\r
5970         opBITH z80hl 3\r
5971 ;@BIT 3,L\r
5972 opcode_CB_5D:\r
5973         opBITL z80hl 3\r
5974 ;@BIT 3,(HL)\r
5975 opcode_CB_5E:\r
5976         readmem8HL\r
5977         opBITb 3\r
5978         fetch 12\r
5979 ;@BIT 3,A\r
5980 opcode_CB_5F:\r
5981         opBITH z80a 3\r
5982 \r
5983 ;@BIT 4,B\r
5984 opcode_CB_60:\r
5985         opBITH z80bc 4\r
5986 ;@BIT 4,C\r
5987 opcode_CB_61:\r
5988         opBITL z80bc 4\r
5989 ;@BIT 4,D\r
5990 opcode_CB_62:\r
5991         opBITH z80de 4\r
5992 ;@BIT 4,E\r
5993 opcode_CB_63:\r
5994         opBITL z80de 4\r
5995 ;@BIT 4,H\r
5996 opcode_CB_64:\r
5997         opBITH z80hl 4\r
5998 ;@BIT 4,L\r
5999 opcode_CB_65:\r
6000         opBITL z80hl 4\r
6001 ;@BIT 4,(HL)\r
6002 opcode_CB_66:\r
6003         readmem8HL\r
6004         opBITb 4\r
6005         fetch 12\r
6006 ;@BIT 4,A\r
6007 opcode_CB_67:\r
6008         opBITH z80a 4\r
6009 \r
6010 ;@BIT 5,B\r
6011 opcode_CB_68:\r
6012         opBITH z80bc 5\r
6013 ;@BIT 5,C\r
6014 opcode_CB_69:\r
6015         opBITL z80bc 5\r
6016 ;@BIT 5,D\r
6017 opcode_CB_6A:\r
6018         opBITH z80de 5\r
6019 ;@BIT 5,E\r
6020 opcode_CB_6B:\r
6021         opBITL z80de 5\r
6022 ;@BIT 5,H\r
6023 opcode_CB_6C:\r
6024         opBITH z80hl 5\r
6025 ;@BIT 5,L\r
6026 opcode_CB_6D:\r
6027         opBITL z80hl 5\r
6028 ;@BIT 5,(HL)\r
6029 opcode_CB_6E:\r
6030         readmem8HL\r
6031         opBITb 5\r
6032         fetch 12\r
6033 ;@BIT 5,A\r
6034 opcode_CB_6F:\r
6035         opBITH z80a 5\r
6036 \r
6037 ;@BIT 6,B\r
6038 opcode_CB_70:\r
6039         opBITH z80bc 6\r
6040 ;@BIT 6,C\r
6041 opcode_CB_71:\r
6042         opBITL z80bc 6\r
6043 ;@BIT 6,D\r
6044 opcode_CB_72:\r
6045         opBITH z80de 6\r
6046 ;@BIT 6,E\r
6047 opcode_CB_73:\r
6048         opBITL z80de 6\r
6049 ;@BIT 6,H\r
6050 opcode_CB_74:\r
6051         opBITH z80hl 6\r
6052 ;@BIT 6,L\r
6053 opcode_CB_75:\r
6054         opBITL z80hl 6\r
6055 ;@BIT 6,(HL)\r
6056 opcode_CB_76:\r
6057         readmem8HL\r
6058         opBITb 6\r
6059         fetch 12\r
6060 ;@BIT 6,A\r
6061 opcode_CB_77:\r
6062         opBITH z80a 6\r
6063 \r
6064 ;@BIT 7,B\r
6065 opcode_CB_78:\r
6066         opBIT7H z80bc\r
6067 ;@BIT 7,C\r
6068 opcode_CB_79:\r
6069         opBIT7L z80bc\r
6070 ;@BIT 7,D\r
6071 opcode_CB_7A:\r
6072         opBIT7H z80de\r
6073 ;@BIT 7,E\r
6074 opcode_CB_7B:\r
6075         opBIT7L z80de\r
6076 ;@BIT 7,H\r
6077 opcode_CB_7C:\r
6078         opBIT7H z80hl\r
6079 ;@BIT 7,L\r
6080 opcode_CB_7D:\r
6081         opBIT7L z80hl\r
6082 ;@BIT 7,(HL)\r
6083 opcode_CB_7E:\r
6084         readmem8HL\r
6085         opBIT7b\r
6086         fetch 12\r
6087 ;@BIT 7,A\r
6088 opcode_CB_7F:\r
6089         opBIT7H z80a\r
6090 \r
6091 ;@RES 0,B\r
6092 opcode_CB_80:\r
6093         bic z80bc,z80bc,#1<<24\r
6094         fetch 8\r
6095 ;@RES 0,C\r
6096 opcode_CB_81:\r
6097         bic z80bc,z80bc,#1<<16\r
6098         fetch 8\r
6099 ;@RES 0,D\r
6100 opcode_CB_82:\r
6101         bic z80de,z80de,#1<<24\r
6102         fetch 8\r
6103 ;@RES 0,E\r
6104 opcode_CB_83:\r
6105         bic z80de,z80de,#1<<16\r
6106         fetch 8\r
6107 ;@RES 0,H\r
6108 opcode_CB_84:\r
6109         bic z80hl,z80hl,#1<<24\r
6110         fetch 8\r
6111 ;@RES 0,L\r
6112 opcode_CB_85:\r
6113         bic z80hl,z80hl,#1<<16\r
6114         fetch 8\r
6115 ;@RES 0,(HL)\r
6116 opcode_CB_86:\r
6117         opRESmemHL 0\r
6118 ;@RES 0,A\r
6119 opcode_CB_87:\r
6120         bic z80a,z80a,#1<<24\r
6121         fetch 8\r
6122 \r
6123 ;@RES 1,B\r
6124 opcode_CB_88:\r
6125         bic z80bc,z80bc,#1<<25\r
6126         fetch 8\r
6127 ;@RES 1,C\r
6128 opcode_CB_89:\r
6129         bic z80bc,z80bc,#1<<17\r
6130         fetch 8\r
6131 ;@RES 1,D\r
6132 opcode_CB_8A:\r
6133         bic z80de,z80de,#1<<25\r
6134         fetch 8\r
6135 ;@RES 1,E\r
6136 opcode_CB_8B:\r
6137         bic z80de,z80de,#1<<17\r
6138         fetch 8\r
6139 ;@RES 1,H\r
6140 opcode_CB_8C:\r
6141         bic z80hl,z80hl,#1<<25\r
6142         fetch 8\r
6143 ;@RES 1,L\r
6144 opcode_CB_8D:\r
6145         bic z80hl,z80hl,#1<<17\r
6146         fetch 8\r
6147 ;@RES 1,(HL)\r
6148 opcode_CB_8E:\r
6149         opRESmemHL 1\r
6150 ;@RES 1,A\r
6151 opcode_CB_8F:\r
6152         bic z80a,z80a,#1<<25\r
6153         fetch 8\r
6154 \r
6155 ;@RES 2,B\r
6156 opcode_CB_90:\r
6157         bic z80bc,z80bc,#1<<26\r
6158         fetch 8\r
6159 ;@RES 2,C\r
6160 opcode_CB_91:\r
6161         bic z80bc,z80bc,#1<<18\r
6162         fetch 8\r
6163 ;@RES 2,D\r
6164 opcode_CB_92:\r
6165         bic z80de,z80de,#1<<26\r
6166         fetch 8\r
6167 ;@RES 2,E\r
6168 opcode_CB_93:\r
6169         bic z80de,z80de,#1<<18\r
6170         fetch 8\r
6171 ;@RES 2,H\r
6172 opcode_CB_94:\r
6173         bic z80hl,z80hl,#1<<26\r
6174         fetch 8\r
6175 ;@RES 2,L\r
6176 opcode_CB_95:\r
6177         bic z80hl,z80hl,#1<<18\r
6178         fetch 8\r
6179 ;@RES 2,(HL)\r
6180 opcode_CB_96:\r
6181         opRESmemHL 2\r
6182 ;@RES 2,A\r
6183 opcode_CB_97:\r
6184         bic z80a,z80a,#1<<26\r
6185         fetch 8\r
6186 \r
6187 ;@RES 3,B\r
6188 opcode_CB_98:\r
6189         bic z80bc,z80bc,#1<<27\r
6190         fetch 8\r
6191 ;@RES 3,C\r
6192 opcode_CB_99:\r
6193         bic z80bc,z80bc,#1<<19\r
6194         fetch 8\r
6195 ;@RES 3,D\r
6196 opcode_CB_9A:\r
6197         bic z80de,z80de,#1<<27\r
6198         fetch 8\r
6199 ;@RES 3,E\r
6200 opcode_CB_9B:\r
6201         bic z80de,z80de,#1<<19\r
6202         fetch 8\r
6203 ;@RES 3,H\r
6204 opcode_CB_9C:\r
6205         bic z80hl,z80hl,#1<<27\r
6206         fetch 8\r
6207 ;@RES 3,L\r
6208 opcode_CB_9D:\r
6209         bic z80hl,z80hl,#1<<19\r
6210         fetch 8\r
6211 ;@RES 3,(HL)\r
6212 opcode_CB_9E:\r
6213         opRESmemHL 3\r
6214 ;@RES 3,A\r
6215 opcode_CB_9F:\r
6216         bic z80a,z80a,#1<<27\r
6217         fetch 8\r
6218 \r
6219 ;@RES 4,B\r
6220 opcode_CB_A0:\r
6221         bic z80bc,z80bc,#1<<28\r
6222         fetch 8\r
6223 ;@RES 4,C\r
6224 opcode_CB_A1:\r
6225         bic z80bc,z80bc,#1<<20\r
6226         fetch 8\r
6227 ;@RES 4,D\r
6228 opcode_CB_A2:\r
6229         bic z80de,z80de,#1<<28\r
6230         fetch 8\r
6231 ;@RES 4,E\r
6232 opcode_CB_A3:\r
6233         bic z80de,z80de,#1<<20\r
6234         fetch 8\r
6235 ;@RES 4,H\r
6236 opcode_CB_A4:\r
6237         bic z80hl,z80hl,#1<<28\r
6238         fetch 8\r
6239 ;@RES 4,L\r
6240 opcode_CB_A5:\r
6241         bic z80hl,z80hl,#1<<20\r
6242         fetch 8\r
6243 ;@RES 4,(HL)\r
6244 opcode_CB_A6:\r
6245         opRESmemHL 4\r
6246 ;@RES 4,A\r
6247 opcode_CB_A7:\r
6248         bic z80a,z80a,#1<<28\r
6249         fetch 8\r
6250 \r
6251 ;@RES 5,B\r
6252 opcode_CB_A8:\r
6253         bic z80bc,z80bc,#1<<29\r
6254         fetch 8\r
6255 ;@RES 5,C\r
6256 opcode_CB_A9:\r
6257         bic z80bc,z80bc,#1<<21\r
6258         fetch 8\r
6259 ;@RES 5,D\r
6260 opcode_CB_AA:\r
6261         bic z80de,z80de,#1<<29\r
6262         fetch 8\r
6263 ;@RES 5,E\r
6264 opcode_CB_AB:\r
6265         bic z80de,z80de,#1<<21\r
6266         fetch 8\r
6267 ;@RES 5,H\r
6268 opcode_CB_AC:\r
6269         bic z80hl,z80hl,#1<<29\r
6270         fetch 8\r
6271 ;@RES 5,L\r
6272 opcode_CB_AD:\r
6273         bic z80hl,z80hl,#1<<21\r
6274         fetch 8\r
6275 ;@RES 5,(HL)\r
6276 opcode_CB_AE:\r
6277         opRESmemHL 5\r
6278 ;@RES 5,A\r
6279 opcode_CB_AF:\r
6280         bic z80a,z80a,#1<<29\r
6281         fetch 8\r
6282 \r
6283 ;@RES 6,B\r
6284 opcode_CB_B0:\r
6285         bic z80bc,z80bc,#1<<30\r
6286         fetch 8\r
6287 ;@RES 6,C\r
6288 opcode_CB_B1:\r
6289         bic z80bc,z80bc,#1<<22\r
6290         fetch 8\r
6291 ;@RES 6,D\r
6292 opcode_CB_B2:\r
6293         bic z80de,z80de,#1<<30\r
6294         fetch 8\r
6295 ;@RES 6,E\r
6296 opcode_CB_B3:\r
6297         bic z80de,z80de,#1<<22\r
6298         fetch 8\r
6299 ;@RES 6,H\r
6300 opcode_CB_B4:\r
6301         bic z80hl,z80hl,#1<<30\r
6302         fetch 8\r
6303 ;@RES 6,L\r
6304 opcode_CB_B5:\r
6305         bic z80hl,z80hl,#1<<22\r
6306         fetch 8\r
6307 ;@RES 6,(HL)\r
6308 opcode_CB_B6:\r
6309         opRESmemHL 6\r
6310 ;@RES 6,A\r
6311 opcode_CB_B7:\r
6312         bic z80a,z80a,#1<<30\r
6313         fetch 8\r
6314 \r
6315 ;@RES 7,B\r
6316 opcode_CB_B8:\r
6317         bic z80bc,z80bc,#1<<31\r
6318         fetch 8\r
6319 ;@RES 7,C\r
6320 opcode_CB_B9:\r
6321         bic z80bc,z80bc,#1<<23\r
6322         fetch 8\r
6323 ;@RES 7,D\r
6324 opcode_CB_BA:\r
6325         bic z80de,z80de,#1<<31\r
6326         fetch 8\r
6327 ;@RES 7,E\r
6328 opcode_CB_BB:\r
6329         bic z80de,z80de,#1<<23\r
6330         fetch 8\r
6331 ;@RES 7,H\r
6332 opcode_CB_BC:\r
6333         bic z80hl,z80hl,#1<<31\r
6334         fetch 8\r
6335 ;@RES 7,L\r
6336 opcode_CB_BD:\r
6337         bic z80hl,z80hl,#1<<23\r
6338         fetch 8\r
6339 ;@RES 7,(HL)\r
6340 opcode_CB_BE:\r
6341         opRESmemHL 7\r
6342 ;@RES 7,A\r
6343 opcode_CB_BF:\r
6344         bic z80a,z80a,#1<<31\r
6345         fetch 8\r
6346 \r
6347 ;@SET 0,B\r
6348 opcode_CB_C0:\r
6349         orr z80bc,z80bc,#1<<24\r
6350         fetch 8\r
6351 ;@SET 0,C\r
6352 opcode_CB_C1:\r
6353         orr z80bc,z80bc,#1<<16\r
6354         fetch 8\r
6355 ;@SET 0,D\r
6356 opcode_CB_C2:\r
6357         orr z80de,z80de,#1<<24\r
6358         fetch 8\r
6359 ;@SET 0,E\r
6360 opcode_CB_C3:\r
6361         orr z80de,z80de,#1<<16\r
6362         fetch 8\r
6363 ;@SET 0,H\r
6364 opcode_CB_C4:\r
6365         orr z80hl,z80hl,#1<<24\r
6366         fetch 8\r
6367 ;@SET 0,L\r
6368 opcode_CB_C5:\r
6369         orr z80hl,z80hl,#1<<16\r
6370         fetch 8\r
6371 ;@SET 0,(HL)\r
6372 opcode_CB_C6:\r
6373         opSETmemHL 0\r
6374 ;@SET 0,A\r
6375 opcode_CB_C7:\r
6376         orr z80a,z80a,#1<<24\r
6377         fetch 8\r
6378 \r
6379 ;@SET 1,B\r
6380 opcode_CB_C8:\r
6381         orr z80bc,z80bc,#1<<25\r
6382         fetch 8\r
6383 ;@SET 1,C\r
6384 opcode_CB_C9:\r
6385         orr z80bc,z80bc,#1<<17\r
6386         fetch 8\r
6387 ;@SET 1,D\r
6388 opcode_CB_CA:\r
6389         orr z80de,z80de,#1<<25\r
6390         fetch 8\r
6391 ;@SET 1,E\r
6392 opcode_CB_CB:\r
6393         orr z80de,z80de,#1<<17\r
6394         fetch 8\r
6395 ;@SET 1,H\r
6396 opcode_CB_CC:\r
6397         orr z80hl,z80hl,#1<<25\r
6398         fetch 8\r
6399 ;@SET 1,L\r
6400 opcode_CB_CD:\r
6401         orr z80hl,z80hl,#1<<17\r
6402         fetch 8\r
6403 ;@SET 1,(HL)\r
6404 opcode_CB_CE:\r
6405         opSETmemHL 1\r
6406 ;@SET 1,A\r
6407 opcode_CB_CF:\r
6408         orr z80a,z80a,#1<<25\r
6409         fetch 8\r
6410 \r
6411 ;@SET 2,B\r
6412 opcode_CB_D0:\r
6413         orr z80bc,z80bc,#1<<26\r
6414         fetch 8\r
6415 ;@SET 2,C\r
6416 opcode_CB_D1:\r
6417         orr z80bc,z80bc,#1<<18\r
6418         fetch 8\r
6419 ;@SET 2,D\r
6420 opcode_CB_D2:\r
6421         orr z80de,z80de,#1<<26\r
6422         fetch 8\r
6423 ;@SET 2,E\r
6424 opcode_CB_D3:\r
6425         orr z80de,z80de,#1<<18\r
6426         fetch 8\r
6427 ;@SET 2,H\r
6428 opcode_CB_D4:\r
6429         orr z80hl,z80hl,#1<<26\r
6430         fetch 8\r
6431 ;@SET 2,L\r
6432 opcode_CB_D5:\r
6433         orr z80hl,z80hl,#1<<18\r
6434         fetch 8\r
6435 ;@SET 2,(HL)\r
6436 opcode_CB_D6:\r
6437         opSETmemHL 2\r
6438 ;@SET 2,A\r
6439 opcode_CB_D7:\r
6440         orr z80a,z80a,#1<<26\r
6441         fetch 8\r
6442 \r
6443 ;@SET 3,B\r
6444 opcode_CB_D8:\r
6445         orr z80bc,z80bc,#1<<27\r
6446         fetch 8\r
6447 ;@SET 3,C\r
6448 opcode_CB_D9:\r
6449         orr z80bc,z80bc,#1<<19\r
6450         fetch 8\r
6451 ;@SET 3,D\r
6452 opcode_CB_DA:\r
6453         orr z80de,z80de,#1<<27\r
6454         fetch 8\r
6455 ;@SET 3,E\r
6456 opcode_CB_DB:\r
6457         orr z80de,z80de,#1<<19\r
6458         fetch 8\r
6459 ;@SET 3,H\r
6460 opcode_CB_DC:\r
6461         orr z80hl,z80hl,#1<<27\r
6462         fetch 8\r
6463 ;@SET 3,L\r
6464 opcode_CB_DD:\r
6465         orr z80hl,z80hl,#1<<19\r
6466         fetch 8\r
6467 ;@SET 3,(HL)\r
6468 opcode_CB_DE:\r
6469         opSETmemHL 3\r
6470 ;@SET 3,A\r
6471 opcode_CB_DF:\r
6472         orr z80a,z80a,#1<<27\r
6473         fetch 8\r
6474 \r
6475 ;@SET 4,B\r
6476 opcode_CB_E0:\r
6477         orr z80bc,z80bc,#1<<28\r
6478         fetch 8\r
6479 ;@SET 4,C\r
6480 opcode_CB_E1:\r
6481         orr z80bc,z80bc,#1<<20\r
6482         fetch 8\r
6483 ;@SET 4,D\r
6484 opcode_CB_E2:\r
6485         orr z80de,z80de,#1<<28\r
6486         fetch 8\r
6487 ;@SET 4,E\r
6488 opcode_CB_E3:\r
6489         orr z80de,z80de,#1<<20\r
6490         fetch 8\r
6491 ;@SET 4,H\r
6492 opcode_CB_E4:\r
6493         orr z80hl,z80hl,#1<<28\r
6494         fetch 8\r
6495 ;@SET 4,L\r
6496 opcode_CB_E5:\r
6497         orr z80hl,z80hl,#1<<20\r
6498         fetch 8\r
6499 ;@SET 4,(HL)\r
6500 opcode_CB_E6:\r
6501         opSETmemHL 4\r
6502 ;@SET 4,A\r
6503 opcode_CB_E7:\r
6504         orr z80a,z80a,#1<<28\r
6505         fetch 8\r
6506 \r
6507 ;@SET 5,B\r
6508 opcode_CB_E8:\r
6509         orr z80bc,z80bc,#1<<29\r
6510         fetch 8\r
6511 ;@SET 5,C\r
6512 opcode_CB_E9:\r
6513         orr z80bc,z80bc,#1<<21\r
6514         fetch 8\r
6515 ;@SET 5,D\r
6516 opcode_CB_EA:\r
6517         orr z80de,z80de,#1<<29\r
6518         fetch 8\r
6519 ;@SET 5,E\r
6520 opcode_CB_EB:\r
6521         orr z80de,z80de,#1<<21\r
6522         fetch 8\r
6523 ;@SET 5,H\r
6524 opcode_CB_EC:\r
6525         orr z80hl,z80hl,#1<<29\r
6526         fetch 8\r
6527 ;@SET 5,L\r
6528 opcode_CB_ED:\r
6529         orr z80hl,z80hl,#1<<21\r
6530         fetch 8\r
6531 ;@SET 5,(HL)\r
6532 opcode_CB_EE:\r
6533         opSETmemHL 5\r
6534 ;@SET 5,A\r
6535 opcode_CB_EF:\r
6536         orr z80a,z80a,#1<<29\r
6537         fetch 8\r
6538 \r
6539 ;@SET 6,B\r
6540 opcode_CB_F0:\r
6541         orr z80bc,z80bc,#1<<30\r
6542         fetch 8\r
6543 ;@SET 6,C\r
6544 opcode_CB_F1:\r
6545         orr z80bc,z80bc,#1<<22\r
6546         fetch 8\r
6547 ;@SET 6,D\r
6548 opcode_CB_F2:\r
6549         orr z80de,z80de,#1<<30\r
6550         fetch 8\r
6551 ;@SET 6,E\r
6552 opcode_CB_F3:\r
6553         orr z80de,z80de,#1<<22\r
6554         fetch 8\r
6555 ;@SET 6,H\r
6556 opcode_CB_F4:\r
6557         orr z80hl,z80hl,#1<<30\r
6558         fetch 8\r
6559 ;@SET 6,L\r
6560 opcode_CB_F5:\r
6561         orr z80hl,z80hl,#1<<22\r
6562         fetch 8\r
6563 ;@SET 6,(HL)\r
6564 opcode_CB_F6:\r
6565         opSETmemHL 6\r
6566 ;@SET 6,A\r
6567 opcode_CB_F7:\r
6568         orr z80a,z80a,#1<<30\r
6569         fetch 8\r
6570 \r
6571 ;@SET 7,B\r
6572 opcode_CB_F8:\r
6573         orr z80bc,z80bc,#1<<31\r
6574         fetch 8\r
6575 ;@SET 7,C\r
6576 opcode_CB_F9:\r
6577         orr z80bc,z80bc,#1<<23\r
6578         fetch 8\r
6579 ;@SET 7,D\r
6580 opcode_CB_FA:\r
6581         orr z80de,z80de,#1<<31\r
6582         fetch 8\r
6583 ;@SET 7,E\r
6584 opcode_CB_FB:\r
6585         orr z80de,z80de,#1<<23\r
6586         fetch 8\r
6587 ;@SET 7,H\r
6588 opcode_CB_FC:\r
6589         orr z80hl,z80hl,#1<<31\r
6590         fetch 8\r
6591 ;@SET 7,L\r
6592 opcode_CB_FD:\r
6593         orr z80hl,z80hl,#1<<23\r
6594         fetch 8\r
6595 ;@SET 7,(HL)\r
6596 opcode_CB_FE:\r
6597         opSETmemHL 7\r
6598 ;@SET 7,A\r
6599 opcode_CB_FF:\r
6600         orr z80a,z80a,#1<<31\r
6601         fetch 8\r
6602 \r
6603 \r
6604 \r
6605 ;@##################################\r
6606 ;@##################################\r
6607 ;@###  opcodes DD  #########################\r
6608 ;@##################################\r
6609 ;@##################################\r
6610 ;@Because the DD opcodes are not a complete range from 00-FF I have\r
6611 ;@created this sub routine that will catch any undocumented ops\r
6612 ;@halt the emulator and mov the current instruction to r0\r
6613 ;@at a later stage I may change to display a text message on the screen\r
6614 opcode_DD_NF:\r
6615         eatcycles 4\r
6616         ldr pc,[opcodes,r0, lsl #2]\r
6617 ;@      mov r2,#0x10*4\r
6618 ;@      cmp r2,z80xx\r
6619 ;@      bne opcode_FD_NF\r
6620 ;@      mov r0,#0xDD00\r
6621 ;@      orr r0,r0,r1\r
6622 ;@      b end_loop\r
6623 ;@opcode_FD_NF:\r
6624 ;@      mov r0,#0xFD00\r
6625 ;@      orr r0,r0,r1\r
6626 ;@      b end_loop\r
6627 \r
6628 opcode_DD_NF2:\r
6629         fetch 23\r
6630 ;@ notaz: we don't want to deadlock here\r
6631 ;@      mov r0,#0xDD0000\r
6632 ;@      orr r0,r0,#0xCB00\r
6633 ;@      orr r0,r0,r1\r
6634 ;@      b end_loop\r
6635 \r
6636 ;@ADD IX,BC\r
6637 opcode_DD_09:\r
6638         ldr r0,[z80xx]\r
6639         opADD16 r0 z80bc\r
6640         str r0,[z80xx]\r
6641         fetch 15\r
6642 ;@ADD IX,DE\r
6643 opcode_DD_19:\r
6644         ldr r0,[z80xx]\r
6645         opADD16 r0 z80de\r
6646         str r0,[z80xx]\r
6647         fetch 15\r
6648 ;@LD IX,NN\r
6649 opcode_DD_21:\r
6650         ldrb r0,[z80pc],#1\r
6651         ldrb r1,[z80pc],#1\r
6652         orr r0,r0,r1, lsl #8\r
6653         strh r0,[z80xx,#2]\r
6654         fetch 14\r
6655 ;@LD (NN),IX\r
6656 opcode_DD_22:\r
6657         ldrb r0,[z80pc],#1\r
6658         ldrb r1,[z80pc],#1\r
6659         orr r1,r0,r1, lsl #8\r
6660         ldrh r0,[z80xx,#2]\r
6661         writemem16\r
6662         fetch 20\r
6663 ;@INC IX\r
6664 opcode_DD_23:\r
6665         ldr r0,[z80xx]\r
6666         add r0,r0,#1<<16\r
6667         str r0,[z80xx]\r
6668         fetch 10\r
6669 ;@INC I  (IX)\r
6670 opcode_DD_24:\r
6671         ldr r0,[z80xx]\r
6672         opINC8H r0\r
6673         str r0,[z80xx]\r
6674         fetch 8\r
6675 ;@DEC I  (IX)\r
6676 opcode_DD_25:\r
6677         ldr r0,[z80xx]\r
6678         opDEC8H r0\r
6679         str r0,[z80xx]\r
6680         fetch 8\r
6681 ;@LD I,N  (IX)\r
6682 opcode_DD_26:\r
6683         ldrb r0,[z80pc],#1\r
6684         strb r0,[z80xx,#3]\r
6685         fetch 11\r
6686 ;@ADD IX,IX\r
6687 opcode_DD_29:\r
6688         ldr r0,[z80xx]\r
6689         opADD16_2 r0\r
6690         str r0,[z80xx]\r
6691         fetch 15\r
6692 ;@LD IX,(NN)\r
6693 opcode_DD_2A:\r
6694         ldrb r0,[z80pc],#1\r
6695         ldrb r1,[z80pc],#1\r
6696         orr r0,r0,r1, lsl #8\r
6697         stmfd sp!,{z80xx}\r
6698         readmem16\r
6699         ldmfd sp!,{z80xx}\r
6700         strh r0,[z80xx,#2]\r
6701         fetch 20\r
6702 ;@DEC IX\r
6703 opcode_DD_2B:\r
6704         ldr r0,[z80xx]\r
6705         sub r0,r0,#1<<16\r
6706         str r0,[z80xx]\r
6707         fetch 10\r
6708 ;@INC X  (IX)\r
6709 opcode_DD_2C:\r
6710         ldr r0,[z80xx]\r
6711         opINC8L r0\r
6712         str r0,[z80xx]\r
6713         fetch 8\r
6714 ;@DEC X  (IX)\r
6715 opcode_DD_2D:\r
6716         ldr r0,[z80xx]\r
6717         opDEC8L r0\r
6718         str r0,[z80xx]\r
6719         fetch 8\r
6720 ;@LD X,N  (IX)\r
6721 opcode_DD_2E:\r
6722         ldrb r0,[z80pc],#1\r
6723         strb r0,[z80xx,#2]\r
6724         fetch 11\r
6725 ;@INC (IX+N)\r
6726 opcode_DD_34:\r
6727         ldrsb r0,[z80pc],#1\r
6728         ldr r1,[z80xx]\r
6729         add r0,r1,r0, lsl #16\r
6730         mov r0,r0,lsr #16\r
6731         stmfd sp!,{r0}  ;@ save addr\r
6732         readmem8\r
6733         opINC8b\r
6734         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6735         writemem8\r
6736         fetch 23\r
6737 ;@DEC (IX+N)\r
6738 opcode_DD_35:\r
6739         ldrsb r0,[z80pc],#1\r
6740         ldr r1,[z80xx]\r
6741         add r0,r1,r0, lsl #16\r
6742         mov r0,r0,lsr #16\r
6743         stmfd sp!,{r0}  ;@ save addr\r
6744         readmem8\r
6745         opDEC8b\r
6746         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6747         writemem8\r
6748         fetch 23\r
6749 ;@LD (IX+N),N\r
6750 opcode_DD_36:\r
6751         ldrsb r2,[z80pc],#1\r
6752         ldrb r0,[z80pc],#1\r
6753         ldr r1,[z80xx]\r
6754         add r1,r1,r2, lsl #16\r
6755         mov r1,r1,lsr #16\r
6756         writemem8\r
6757         fetch 19\r
6758 ;@ADD IX,SP\r
6759 opcode_DD_39:\r
6760         ldr r0,[z80xx]\r
6761 .if FAST_Z80SP\r
6762         ldr r2,[cpucontext,#z80sp_base]\r
6763         sub r2,z80sp,r2\r
6764         opADD16s r0 r2 16\r
6765 .else\r
6766         opADD16s r0 z80sp 16\r
6767 .endif\r
6768         str r0,[z80xx]\r
6769         fetch 15\r
6770 ;@LD B,I ( IX )\r
6771 opcode_DD_44:\r
6772         ldrb r0,[z80xx,#3]\r
6773         and z80bc,z80bc,#0xFF<<16\r
6774         orr z80bc,z80bc,r0, lsl #24\r
6775         fetch 8\r
6776 ;@LD B,X ( IX )\r
6777 opcode_DD_45:\r
6778         ldrb r0,[z80xx,#2]\r
6779         and z80bc,z80bc,#0xFF<<16\r
6780         orr z80bc,z80bc,r0, lsl #24\r
6781         fetch 8\r
6782 ;@LD B,(IX,N)\r
6783 opcode_DD_46:\r
6784         ldrsb r0,[z80pc],#1\r
6785         ldr r1,[z80xx]\r
6786         add r0,r1,r0, lsl #16\r
6787         mov r0,r0,lsr #16\r
6788         readmem8\r
6789         and z80bc,z80bc,#0xFF<<16\r
6790         orr z80bc,z80bc,r0, lsl #24\r
6791         fetch 19\r
6792 ;@LD C,I  (IX)\r
6793 opcode_DD_4C:\r
6794         ldrb r0,[z80xx,#3]\r
6795         and z80bc,z80bc,#0xFF<<24\r
6796         orr z80bc,z80bc,r0, lsl #16\r
6797         fetch 8\r
6798 ;@LD C,X  (IX)\r
6799 opcode_DD_4D:\r
6800         ldrb r0,[z80xx,#2]\r
6801         and z80bc,z80bc,#0xFF<<24\r
6802         orr z80bc,z80bc,r0, lsl #16\r
6803         fetch 8\r
6804 ;@LD C,(IX,N)\r
6805 opcode_DD_4E:\r
6806         ldrsb r0,[z80pc],#1\r
6807         ldr r1,[z80xx]\r
6808         add r0,r1,r0, lsl #16\r
6809         mov r0,r0,lsr #16\r
6810         readmem8\r
6811         and z80bc,z80bc,#0xFF<<24\r
6812         orr z80bc,z80bc,r0, lsl #16\r
6813         fetch 19\r
6814 \r
6815 ;@LD D,I  (IX)\r
6816 opcode_DD_54:\r
6817         ldrb r0,[z80xx,#3]\r
6818         and z80de,z80de,#0xFF<<16\r
6819         orr z80de,z80de,r0, lsl #24\r
6820         fetch 8\r
6821 ;@LD D,X  (IX)\r
6822 opcode_DD_55:\r
6823         ldrb r0,[z80xx,#2]\r
6824         and z80de,z80de,#0xFF<<16\r
6825         orr z80de,z80de,r0, lsl #24\r
6826         fetch 8\r
6827 ;@LD D,(IX,N)\r
6828 opcode_DD_56:\r
6829         ldrsb r0,[z80pc],#1\r
6830         ldr r1,[z80xx]\r
6831         add r0,r1,r0, lsl #16\r
6832         mov r0,r0,lsr #16\r
6833         readmem8\r
6834         and z80de,z80de,#0xFF<<16\r
6835         orr z80de,z80de,r0, lsl #24\r
6836         fetch 19\r
6837 ;@LD E,I  (IX)\r
6838 opcode_DD_5C:\r
6839         ldrb r0,[z80xx,#3]\r
6840         and z80de,z80de,#0xFF<<24\r
6841         orr z80de,z80de,r0, lsl #16\r
6842         fetch 8\r
6843 ;@LD E,X  (IX)\r
6844 opcode_DD_5D:\r
6845         ldrb r0,[z80xx,#2]\r
6846         and z80de,z80de,#0xFF<<24\r
6847         orr z80de,z80de,r0, lsl #16\r
6848         fetch 8\r
6849 ;@LD E,(IX,N)\r
6850 opcode_DD_5E:\r
6851         ldrsb r0,[z80pc],#1\r
6852         ldr r1,[z80xx]\r
6853         add r0,r1,r0, lsl #16\r
6854         mov r0,r0,lsr #16\r
6855         readmem8\r
6856         and z80de,z80de,#0xFF<<24\r
6857         orr z80de,z80de,r0, lsl #16\r
6858         fetch 19\r
6859 ;@LD I,B  (IX)\r
6860 opcode_DD_60:\r
6861         mov r0,z80bc,lsr#24\r
6862         strb r0,[z80xx,#3]\r
6863         fetch 8\r
6864 ;@LD I,C  (IX)\r
6865 opcode_DD_61:\r
6866         mov r0,z80bc,lsr#16\r
6867         strb r0,[z80xx,#3]\r
6868         fetch 8\r
6869 ;@LD I,D  (IX)\r
6870 opcode_DD_62:\r
6871         mov r0,z80de,lsr#24\r
6872         strb r0,[z80xx,#3]\r
6873         fetch 8\r
6874 ;@LD I,E  (IX)\r
6875 opcode_DD_63:\r
6876         mov r0,z80de,lsr#16\r
6877         strb r0,[z80xx,#3]\r
6878         fetch 8\r
6879 ;@LD I,I  (IX)\r
6880 opcode_DD_64:\r
6881         fetch 8\r
6882 ;@LD I,X  (IX)\r
6883 opcode_DD_65:\r
6884         ldrb r0,[z80xx,#2]\r
6885         strb r0,[z80xx,#3]\r
6886         fetch 8\r
6887 ;@LD H,(IX,N)\r
6888 opcode_DD_66:\r
6889         ldrsb r0,[z80pc],#1\r
6890         ldr r1,[z80xx]\r
6891         add r0,r1,r0, lsl #16\r
6892         mov r0,r0,lsr #16\r
6893         readmem8\r
6894         and z80hl,z80hl,#0xFF<<16\r
6895         orr z80hl,z80hl,r0, lsl #24\r
6896         fetch 19\r
6897 ;@LD I,A  (IX)\r
6898 opcode_DD_67:\r
6899         mov r0,z80a,lsr#24\r
6900         strb r0,[z80xx,#3]\r
6901         fetch 8\r
6902 ;@LD X,B  (IX)\r
6903 opcode_DD_68:\r
6904         mov r0,z80bc,lsr#24\r
6905         strb r0,[z80xx,#2]\r
6906         fetch 8\r
6907 ;@LD X,C  (IX)\r
6908 opcode_DD_69:\r
6909         mov r0,z80bc,lsr#16\r
6910         strb r0,[z80xx,#2]\r
6911         fetch 8\r
6912 ;@LD X,D  (IX)\r
6913 opcode_DD_6A:\r
6914         mov r0,z80de,lsr#24\r
6915         strb r0,[z80xx,#2]\r
6916         fetch 8\r
6917 ;@LD X,E  (IX)\r
6918 opcode_DD_6B:\r
6919         mov r0,z80de,lsr#16\r
6920         strb r0,[z80xx,#2]\r
6921         fetch 8\r
6922 ;@LD X,I  (IX)\r
6923 opcode_DD_6C:\r
6924         ldrb r0,[z80xx,#3]\r
6925         strb r0,[z80xx,#2]\r
6926         fetch 8\r
6927 ;@LD X,X  (IX)\r
6928 opcode_DD_6D:\r
6929         fetch 8\r
6930 ;@LD L,(IX,N)\r
6931 opcode_DD_6E:\r
6932         ldrsb r0,[z80pc],#1\r
6933         ldr r1,[z80xx]\r
6934         add r0,r1,r0, lsl #16\r
6935         mov r0,r0,lsr #16\r
6936         readmem8\r
6937         and z80hl,z80hl,#0xFF<<24\r
6938         orr z80hl,z80hl,r0, lsl #16\r
6939         fetch 19\r
6940 ;@LD X,A  (IX)\r
6941 opcode_DD_6F:\r
6942         mov r0,z80a,lsr#24\r
6943         strb r0,[z80xx,#2]\r
6944         fetch 8\r
6945 \r
6946 ;@LD (IX,N),B\r
6947 opcode_DD_70:\r
6948         ldrsb r0,[z80pc],#1\r
6949         ldr r1,[z80xx]\r
6950         add r1,r1,r0, lsl #16\r
6951         mov r1,r1,lsr #16\r
6952         mov r0,z80bc, lsr #24\r
6953         writemem8\r
6954         fetch 19\r
6955 ;@LD (IX,N),C\r
6956 opcode_DD_71:\r
6957         ldrsb r0,[z80pc],#1\r
6958         ldr r1,[z80xx]\r
6959         add r1,r1,r0, lsl #16\r
6960         mov r1,r1,lsr #16\r
6961         mov r0,z80bc, lsr #16\r
6962         and r0,r0,#0xFF\r
6963         writemem8\r
6964         fetch 19\r
6965 ;@LD (IX,N),D\r
6966 opcode_DD_72:\r
6967         ldrsb r0,[z80pc],#1\r
6968         ldr r1,[z80xx]\r
6969         add r1,r1,r0, lsl #16\r
6970         mov r1,r1,lsr #16\r
6971         mov r0,z80de, lsr #24\r
6972         writemem8\r
6973         fetch 19\r
6974 ;@LD (IX,N),E\r
6975 opcode_DD_73:\r
6976         ldrsb r0,[z80pc],#1\r
6977         ldr r1,[z80xx]\r
6978         add r1,r1,r0, lsl #16\r
6979         mov r1,r1,lsr #16\r
6980         mov r0,z80de, lsr #16\r
6981         and r0,r0,#0xFF\r
6982         writemem8\r
6983         fetch 19\r
6984 ;@LD (IX,N),H\r
6985 opcode_DD_74:\r
6986         ldrsb r0,[z80pc],#1\r
6987         ldr r1,[z80xx]\r
6988         add r1,r1,r0, lsl #16\r
6989         mov r1,r1,lsr #16\r
6990         mov r0,z80hl, lsr #24\r
6991         writemem8\r
6992         fetch 19\r
6993 ;@LD (IX,N),L\r
6994 opcode_DD_75:\r
6995         ldrsb r0,[z80pc],#1\r
6996         ldr r1,[z80xx]\r
6997         add r1,r1,r0, lsl #16\r
6998         mov r1,r1,lsr #16\r
6999         mov r0,z80hl, lsr #16\r
7000         and r0,r0,#0xFF\r
7001         writemem8\r
7002         fetch 19\r
7003 ;@LD (IX,N),A\r
7004 opcode_DD_77:\r
7005         ldrsb r0,[z80pc],#1\r
7006         ldr r1,[z80xx]\r
7007         add r1,r1,r0, lsl #16\r
7008         mov r1,r1,lsr #16\r
7009         mov r0,z80a, lsr #24\r
7010         writemem8\r
7011         fetch 19\r
7012 \r
7013 ;@LD A,I  from (IX)\r
7014 opcode_DD_7C:\r
7015         ldrb r0,[z80xx,#3]\r
7016         mov z80a,r0, lsl #24\r
7017         fetch 8\r
7018 ;@LD A,X  from (IX)\r
7019 opcode_DD_7D:\r
7020         ldrb r0,[z80xx,#2]\r
7021         mov z80a,r0, lsl #24\r
7022         fetch 8\r
7023 ;@LD A,(IX,N)\r
7024 opcode_DD_7E:\r
7025         ldrsb r0,[z80pc],#1\r
7026         ldr r1,[z80xx]\r
7027         add r0,r1,r0, lsl #16\r
7028         mov r0,r0,lsr #16\r
7029         readmem8\r
7030         mov z80a,r0, lsl #24\r
7031         fetch 19\r
7032 \r
7033 ;@ADD A,I  ( IX)\r
7034 opcode_DD_84:\r
7035         ldrb r0,[z80xx,#3]\r
7036         opADDb\r
7037         fetch 8\r
7038 ;@ADD A,X  ( IX)\r
7039 opcode_DD_85:\r
7040         ldrb r0,[z80xx,#2]\r
7041         opADDb\r
7042         fetch 8\r
7043 ;@ADD A,(IX+N)\r
7044 opcode_DD_86:\r
7045         ldrsb r0,[z80pc],#1\r
7046         ldr r1,[z80xx]\r
7047         add r0,r1,r0, lsl #16\r
7048         mov r0,r0,lsr #16\r
7049         readmem8\r
7050         opADDb\r
7051         fetch 19\r
7052 \r
7053 ;@ADC A,I  (IX)\r
7054 opcode_DD_8C:\r
7055         ldrb r0,[z80xx,#3]\r
7056         opADCb\r
7057         fetch 8\r
7058 ;@ADC A,X  (IX)\r
7059 opcode_DD_8D:\r
7060         ldrb r0,[z80xx,#2]\r
7061         opADCb\r
7062         fetch 8\r
7063 ;@ADC A,(IX+N)\r
7064 opcode_DD_8E:\r
7065         ldrsb r0,[z80pc],#1\r
7066         ldr r1,[z80xx]\r
7067         add r0,r1,r0, lsl #16\r
7068         mov r0,r0,lsr #16\r
7069         readmem8\r
7070         opADCb\r
7071         fetch 19\r
7072 \r
7073 ;@SUB A,I  (IX)\r
7074 opcode_DD_94:\r
7075         ldrb r0,[z80xx,#3]\r
7076         opSUBb\r
7077         fetch 8\r
7078 ;@SUB A,X  (IX)\r
7079 opcode_DD_95:\r
7080         ldrb r0,[z80xx,#2]\r
7081         opSUBb\r
7082         fetch 8\r
7083 ;@SUB A,(IX+N)\r
7084 opcode_DD_96:\r
7085         ldrsb r0,[z80pc],#1\r
7086         ldr r1,[z80xx]\r
7087         add r0,r1,r0, lsl #16\r
7088         mov r0,r0,lsr #16\r
7089         readmem8\r
7090         opSUBb\r
7091         fetch 19\r
7092 \r
7093 ;@SBC A,I  (IX)\r
7094 opcode_DD_9C:\r
7095         ldrb r0,[z80xx,#3]\r
7096         opSBCb\r
7097         fetch 8\r
7098 ;@SBC A,X  (IX)\r
7099 opcode_DD_9D:\r
7100         ldrb r0,[z80xx,#2]\r
7101         opSBCb\r
7102         fetch 8\r
7103 ;@SBC A,(IX+N)\r
7104 opcode_DD_9E:\r
7105         ldrsb r0,[z80pc],#1\r
7106         ldr r1,[z80xx]\r
7107         add r0,r1,r0, lsl #16\r
7108         mov r0,r0,lsr #16\r
7109         readmem8\r
7110         opSBCb\r
7111         fetch 19\r
7112 \r
7113 ;@AND I  (IX)\r
7114 opcode_DD_A4:\r
7115         ldrb r0,[z80xx,#3]\r
7116         opANDb\r
7117         fetch 8\r
7118 ;@AND X  (IX)\r
7119 opcode_DD_A5:\r
7120         ldrb r0,[z80xx,#2]\r
7121         opANDb\r
7122         fetch 8\r
7123 ;@AND (IX+N)\r
7124 opcode_DD_A6:\r
7125         ldrsb r0,[z80pc],#1\r
7126         ldr r1,[z80xx]\r
7127         add r0,r1,r0, lsl #16\r
7128         mov r0,r0,lsr #16\r
7129         readmem8\r
7130         opANDb\r
7131         fetch 19\r
7132 \r
7133 ;@XOR I  (IX)\r
7134 opcode_DD_AC:\r
7135         ldrb r0,[z80xx,#3]\r
7136         opXORb\r
7137         fetch 8\r
7138 ;@XOR X  (IX)\r
7139 opcode_DD_AD:\r
7140         ldrb r0,[z80xx,#2]\r
7141         opXORb\r
7142         fetch 8\r
7143 ;@XOR (IX+N)\r
7144 opcode_DD_AE:\r
7145         ldrsb r0,[z80pc],#1\r
7146         ldr r1,[z80xx]\r
7147         add r0,r1,r0, lsl #16\r
7148         mov r0,r0,lsr #16\r
7149         readmem8\r
7150         opXORb\r
7151         fetch 19\r
7152 \r
7153 ;@OR I  (IX)\r
7154 opcode_DD_B4:\r
7155         ldrb r0,[z80xx,#3]\r
7156         opORb\r
7157         fetch 8\r
7158 ;@OR X  (IX)\r
7159 opcode_DD_B5:\r
7160         ldrb r0,[z80xx,#2]\r
7161         opORb\r
7162         fetch 8\r
7163 ;@OR (IX+N)\r
7164 opcode_DD_B6:\r
7165         ldrsb r0,[z80pc],#1\r
7166         ldr r1,[z80xx]\r
7167         add r0,r1,r0, lsl #16\r
7168         mov r0,r0,lsr #16\r
7169         readmem8\r
7170         opORb\r
7171         fetch 19\r
7172 \r
7173 ;@CP I  (IX)\r
7174 opcode_DD_BC:\r
7175         ldrb r0,[z80xx,#3]\r
7176         opCPb\r
7177         fetch 8\r
7178 ;@CP X  (IX)\r
7179 opcode_DD_BD:\r
7180         ldrb r0,[z80xx,#2]\r
7181         opCPb\r
7182         fetch 8\r
7183 ;@CP (IX+N)\r
7184 opcode_DD_BE:\r
7185         ldrsb r0,[z80pc],#1\r
7186         ldr r1,[z80xx]\r
7187         add r0,r1,r0, lsl #16\r
7188         mov r0,r0,lsr #16\r
7189         readmem8\r
7190         opCPb\r
7191         fetch 19\r
7192 \r
7193 \r
7194 opcodes_DD_CB_LOCAL: .word opcodes_DD_CB\r
7195 opcode_DD_CB:\r
7196 ;@Looks up the opcode on the opcodes_DD_CB table and then \r
7197 ;@moves the PC to the location of the subroutine\r
7198         ldrsb r0,[z80pc],#1\r
7199         ldr r1,[z80xx]\r
7200         add r0,r1,r0, lsl #16\r
7201         mov r0,r0,lsr #16\r
7202 \r
7203         ldrb r1,[z80pc],#1\r
7204         ldr pc,[pc,r1, lsl #2]\r
7205                 .word 0x00\r
7206 opcodes_DD_CB:\r
7207                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_06,opcode_DD_NF2\r
7208                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_0E,opcode_DD_NF2\r
7209                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_16,opcode_DD_NF2\r
7210                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_1E,opcode_DD_NF2\r
7211                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_26,opcode_DD_NF2\r
7212                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_2E,opcode_DD_NF2\r
7213                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_36,opcode_DD_NF2\r
7214                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_3E,opcode_DD_NF2\r
7215                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_46,opcode_DD_NF2\r
7216                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_4E,opcode_DD_NF2\r
7217                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_56,opcode_DD_NF2\r
7218                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_5E,opcode_DD_NF2\r
7219                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_66,opcode_DD_NF2\r
7220                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_6E,opcode_DD_NF2\r
7221                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_76,opcode_DD_NF2\r
7222                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_7E,opcode_DD_NF2\r
7223                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_86,opcode_DD_NF2\r
7224                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_8E,opcode_DD_NF2\r
7225                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_96,opcode_DD_NF2\r
7226                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_9E,opcode_DD_NF2\r
7227                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_A6,opcode_DD_NF2\r
7228                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_AE,opcode_DD_NF2\r
7229                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_B6,opcode_DD_NF2\r
7230                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_BE,opcode_DD_NF2\r
7231                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_C6,opcode_DD_NF2\r
7232                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_CE,opcode_DD_NF2\r
7233                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_D6,opcode_DD_NF2\r
7234                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_DE,opcode_DD_NF2\r
7235                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_E6,opcode_DD_NF2\r
7236                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_EE,opcode_DD_NF2\r
7237                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_F6,opcode_DD_NF2\r
7238                 .word opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_NF2,opcode_DD_CB_FE,opcode_DD_NF2\r
7239 \r
7240 ;@RLC (IX+N) \r
7241 opcode_DD_CB_06:\r
7242         stmfd sp!,{r0}          ;@ save addr\r
7243         readmem8\r
7244         opRLCb\r
7245         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7246         writemem8\r
7247         fetch 23\r
7248 ;@RRC (IX+N) \r
7249 opcode_DD_CB_0E:\r
7250         stmfd sp!,{r0}          ;@ save addr\r
7251         readmem8\r
7252         opRRCb\r
7253         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7254         writemem8\r
7255         fetch 23\r
7256 ;@RL (IX+N) \r
7257 opcode_DD_CB_16:\r
7258         stmfd sp!,{r0}          ;@ save addr\r
7259         readmem8\r
7260         opRLb\r
7261         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7262         writemem8\r
7263         fetch 23\r
7264 ;@RR (IX+N) \r
7265 opcode_DD_CB_1E:\r
7266         stmfd sp!,{r0}          ;@ save addr \r
7267         readmem8\r
7268         opRRb\r
7269         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7270         writemem8\r
7271         fetch 23\r
7272 \r
7273 ;@SLA (IX+N) \r
7274 opcode_DD_CB_26:\r
7275         stmfd sp!,{r0}          ;@ save addr \r
7276         readmem8\r
7277         opSLAb\r
7278         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7279         writemem8\r
7280         fetch 23\r
7281 ;@SRA (IX+N) \r
7282 opcode_DD_CB_2E:\r
7283         stmfd sp!,{r0}          ;@ save addr \r
7284         readmem8\r
7285         opSRAb\r
7286         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7287         writemem8\r
7288         fetch 23\r
7289 ;@SLL (IX+N) \r
7290 opcode_DD_CB_36:\r
7291         stmfd sp!,{r0}          ;@ save addr \r
7292         readmem8\r
7293         opSLLb\r
7294         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7295         writemem8\r
7296         fetch 23\r
7297 ;@SRL (IX+N)\r
7298 opcode_DD_CB_3E:\r
7299         stmfd sp!,{r0}          ;@ save addr \r
7300         readmem8\r
7301         opSRLb\r
7302         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7303         writemem8\r
7304         fetch 23\r
7305 \r
7306 ;@BIT 0,(IX+N) \r
7307 opcode_DD_CB_46:\r
7308         readmem8\r
7309         opBITb 0\r
7310         fetch 20\r
7311 ;@BIT 1,(IX+N) \r
7312 opcode_DD_CB_4E:\r
7313         readmem8\r
7314         opBITb 1\r
7315         fetch 20\r
7316 ;@BIT 2,(IX+N) \r
7317 opcode_DD_CB_56:\r
7318         readmem8\r
7319         opBITb 2\r
7320         fetch 20\r
7321 ;@BIT 3,(IX+N) \r
7322 opcode_DD_CB_5E:\r
7323         readmem8\r
7324         opBITb 3\r
7325         fetch 20\r
7326 ;@BIT 4,(IX+N) \r
7327 opcode_DD_CB_66:\r
7328         readmem8\r
7329         opBITb 4\r
7330         fetch 20\r
7331 ;@BIT 5,(IX+N) \r
7332 opcode_DD_CB_6E:\r
7333         readmem8\r
7334         opBITb 5\r
7335         fetch 20\r
7336 ;@BIT 6,(IX+N) \r
7337 opcode_DD_CB_76:\r
7338         readmem8\r
7339         opBITb 6\r
7340         fetch 20\r
7341 ;@BIT 7,(IX+N) \r
7342 opcode_DD_CB_7E:\r
7343         readmem8\r
7344         opBIT7b\r
7345         fetch 20\r
7346 ;@RES 0,(IX+N) \r
7347 opcode_DD_CB_86:\r
7348         opRESmem 0\r
7349 ;@RES 1,(IX+N) \r
7350 opcode_DD_CB_8E:\r
7351         opRESmem 1\r
7352 ;@RES 2,(IX+N) \r
7353 opcode_DD_CB_96:\r
7354         opRESmem 2\r
7355 ;@RES 3,(IX+N) \r
7356 opcode_DD_CB_9E:\r
7357         opRESmem 3\r
7358 ;@RES 4,(IX+N) \r
7359 opcode_DD_CB_A6:\r
7360         opRESmem 4\r
7361 ;@RES 5,(IX+N) \r
7362 opcode_DD_CB_AE:\r
7363         opRESmem 5\r
7364 ;@RES 6,(IX+N) \r
7365 opcode_DD_CB_B6:\r
7366         opRESmem 6\r
7367 ;@RES 7,(IX+N) \r
7368 opcode_DD_CB_BE:\r
7369         opRESmem 7\r
7370 \r
7371 ;@SET 0,(IX+N) \r
7372 opcode_DD_CB_C6:\r
7373         opSETmem 0\r
7374 ;@SET 1,(IX+N) \r
7375 opcode_DD_CB_CE:\r
7376         opSETmem 1\r
7377 ;@SET 2,(IX+N) \r
7378 opcode_DD_CB_D6:\r
7379         opSETmem 2\r
7380 ;@SET 3,(IX+N) \r
7381 opcode_DD_CB_DE:\r
7382         opSETmem 3\r
7383 ;@SET 4,(IX+N) \r
7384 opcode_DD_CB_E6:\r
7385         opSETmem 4\r
7386 ;@SET 5,(IX+N) \r
7387 opcode_DD_CB_EE:\r
7388         opSETmem 5\r
7389 ;@SET 6,(IX+N) \r
7390 opcode_DD_CB_F6:\r
7391         opSETmem 6\r
7392 ;@SET 7,(IX+N) \r
7393 opcode_DD_CB_FE:\r
7394         opSETmem 7\r
7395 \r
7396 \r
7397 \r
7398 ;@POP IX\r
7399 opcode_DD_E1:\r
7400 .if FAST_Z80SP\r
7401         opPOP\r
7402 .else\r
7403         mov r0,z80sp\r
7404         stmfd sp!,{z80xx}\r
7405         readmem16\r
7406         ldmfd sp!,{z80xx}\r
7407         add z80sp,z80sp,#2\r
7408 .endif\r
7409         strh r0,[z80xx,#2]\r
7410         fetch 14\r
7411 ;@EX (SP),IX\r
7412 opcode_DD_E3:\r
7413 .if FAST_Z80SP\r
7414         ldrb r0,[z80sp]\r
7415         ldrb r1,[z80sp,#1]\r
7416         orr r2,r0,r1, lsl #8\r
7417         ldrh r1,[z80xx,#2]\r
7418         mov r0,r1, lsr #8\r
7419         strb r0,[z80sp,#1]\r
7420         strb r1,[z80sp]\r
7421         strh r2,[z80xx,#2]\r
7422 .else\r
7423         mov r0,z80sp\r
7424         stmfd sp!,{z80xx}\r
7425         readmem16\r
7426         ldmfd sp!,{z80xx}\r
7427         mov r2,r0\r
7428         ldrh r0,[z80xx,#2]\r
7429         strh r2,[z80xx,#2]\r
7430         mov r1,z80sp\r
7431         writemem16\r
7432 .endif\r
7433         fetch 23\r
7434 ;@PUSH IX\r
7435 opcode_DD_E5:\r
7436         ldr r2,[z80xx]\r
7437         opPUSHreg r2\r
7438         fetch 15\r
7439 ;@JP (IX)\r
7440 opcode_DD_E9:\r
7441         ldrh r0,[z80xx,#2]\r
7442         rebasepc\r
7443         fetch 8\r
7444 ;@LD SP,IX\r
7445 opcode_DD_F9:\r
7446 .if FAST_Z80SP\r
7447         ldrh r0,[z80xx,#2]\r
7448         rebasesp\r
7449 .else\r
7450         ldrh z80sp,[z80xx,#2]\r
7451 .endif\r
7452         fetch 10\r
7453 \r
7454 ;@##################################\r
7455 ;@##################################\r
7456 ;@###  opcodes ED  #########################\r
7457 ;@##################################\r
7458 ;@##################################\r
7459 \r
7460 opcode_ED_NF:\r
7461         fetch 8\r
7462 ;@      ldrb r0,[z80pc],#1\r
7463 ;@      ldr pc,[opcodes,r0, lsl #2]\r
7464 ;@      mov r0,#0xED00\r
7465 ;@      orr r0,r0,r1\r
7466 ;@      b end_loop\r
7467 \r
7468 ;@IN B,(C)\r
7469 opcode_ED_40:\r
7470         opIN_C\r
7471         and z80bc,z80bc,#0xFF<<16\r
7472         orr z80bc,z80bc,r0, lsl #24\r
7473         sub r1,opcodes,#0x100\r
7474         ldrb r0,[r1,r0]\r
7475         and z80f,z80f,#1<<CFlag\r
7476         orr z80f,z80f,r0\r
7477         fetch 12\r
7478 ;@OUT (C),B\r
7479 opcode_ED_41:\r
7480         mov r1,z80bc, lsr #24\r
7481         opOUT_C\r
7482         fetch 12\r
7483 \r
7484 ;@SBC HL,BC\r
7485 opcode_ED_42:\r
7486         opSBC16 z80bc\r
7487 \r
7488 ;@LD (NN),BC\r
7489 opcode_ED_43:\r
7490         ldrb r0,[z80pc],#1\r
7491         ldrb r1,[z80pc],#1\r
7492         orr r1,r0,r1, lsl #8\r
7493         mov r0,z80bc, lsr #16\r
7494         writemem16\r
7495         fetch 20\r
7496 ;@NEG\r
7497 opcode_ED_44:\r
7498         rsbs z80a,z80a,#0\r
7499         mrs z80f,cpsr\r
7500         mov z80f,z80f,lsr#28                                    ;@S,Z,V&C\r
7501         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@invert C and set n.\r
7502         tst z80a,#0x0F000000                                    ;@H, correct\r
7503         orrne z80f,z80f,#1<<HFlag\r
7504         fetch 8\r
7505  \r
7506 ;@RETN, moved to ED_4D\r
7507 ;@opcode_ED_45:\r
7508 \r
7509 ;@IM 0\r
7510 opcode_ED_46:\r
7511         strb z80a,[cpucontext,#z80im]\r
7512         fetch 8\r
7513 ;@LD I,A\r
7514 opcode_ED_47:\r
7515         str z80a,[cpucontext,#z80i]\r
7516         fetch 9\r
7517 ;@IN C,(C)\r
7518 opcode_ED_48:\r
7519         opIN_C\r
7520         and z80bc,z80bc,#0xFF<<24\r
7521         orr z80bc,z80bc,r0, lsl #16\r
7522         sub r1,opcodes,#0x100\r
7523         ldrb r0,[r1,r0]\r
7524         and z80f,z80f,#1<<CFlag\r
7525         orr z80f,z80f,r0\r
7526         fetch 12\r
7527 ;@OUT (C),C\r
7528 opcode_ED_49:\r
7529         mov r0,z80bc, lsr #16\r
7530         and r1,r0,#0xFF\r
7531         opOUT\r
7532         fetch 12\r
7533 ;@ADC HL,BC\r
7534 opcode_ED_4A:\r
7535         opADC16 z80bc\r
7536 ;@LD BC,(NN)\r
7537 opcode_ED_4B:\r
7538         ldrb r0,[z80pc],#1\r
7539         ldrb r1,[z80pc],#1\r
7540         orr r0,r0,r1, lsl #8\r
7541         readmem16\r
7542         mov z80bc,r0, lsl #16\r
7543         fetch 20\r
7544 \r
7545 ;@RETN\r
7546 opcode_ED_45:\r
7547 ;@RETI\r
7548 opcode_ED_4D:\r
7549         ldrb r0,[cpucontext,#z80if]\r
7550         tst r0,#Z80_IF2\r
7551         orrne r0,r0,#Z80_IF1\r
7552         biceq r0,r0,#Z80_IF1\r
7553         strb r0,[cpucontext,#z80if]\r
7554     opPOP\r
7555         rebasepc\r
7556         fetch 14\r
7557 \r
7558 ;@LD R,A\r
7559 opcode_ED_4F:\r
7560         mov r0,z80a,lsr#24\r
7561         strb r0,[cpucontext,#z80r]\r
7562         fetch 9\r
7563 \r
7564 ;@IN D,(C)\r
7565 opcode_ED_50:\r
7566         opIN_C\r
7567         and z80de,z80de,#0xFF<<16\r
7568         orr z80de,z80de,r0, lsl #24\r
7569         sub r1,opcodes,#0x100\r
7570         ldrb r0,[r1,r0]\r
7571         and z80f,z80f,#1<<CFlag\r
7572         orr z80f,z80f,r0\r
7573         fetch 12\r
7574 ;@OUT (C),D\r
7575 opcode_ED_51:\r
7576         mov r1,z80de, lsr #24\r
7577         opOUT_C\r
7578         fetch 12\r
7579 ;@SBC HL,DE\r
7580 opcode_ED_52:\r
7581         opSBC16 z80de\r
7582 ;@LD (NN),DE\r
7583 opcode_ED_53:\r
7584         ldrb r0,[z80pc],#1\r
7585         ldrb r1,[z80pc],#1\r
7586         orr r1,r0,r1, lsl #8\r
7587         mov r0,z80de, lsr #16\r
7588         writemem16\r
7589         fetch 20\r
7590 ;@IM 1\r
7591 opcode_ED_56:\r
7592         mov r0,#1\r
7593         strb r0,[cpucontext,#z80im]\r
7594         fetch 8\r
7595 ;@LD A,I\r
7596 opcode_ED_57:\r
7597         ldr z80a,[cpucontext,#z80i]\r
7598         tst z80a,#0xFF000000\r
7599         and z80f,z80f,#(1<<CFlag)\r
7600         orreq z80f,z80f,#(1<<ZFlag)\r
7601         orrmi z80f,z80f,#(1<<SFlag)\r
7602         ldrb r0,[cpucontext,#z80if]\r
7603         tst r0,#Z80_IF2\r
7604         orrne z80f,z80f,#(1<<VFlag)\r
7605         fetch 9\r
7606 ;@IN E,(C)\r
7607 opcode_ED_58:\r
7608         opIN_C\r
7609         and z80de,z80de,#0xFF<<24\r
7610         orr z80de,z80de,r0, lsl #16\r
7611         sub r1,opcodes,#0x100\r
7612         ldrb r0,[r1,r0]\r
7613         and z80f,z80f,#1<<CFlag\r
7614         orr z80f,z80f,r0\r
7615         fetch 12\r
7616 ;@OUT (C),E\r
7617 opcode_ED_59:\r
7618         mov r1,z80de, lsr #16\r
7619         and r1,r1,#0xFF\r
7620         opOUT_C\r
7621         fetch 12\r
7622 ;@ADC HL,DE\r
7623 opcode_ED_5A:\r
7624         opADC16 z80de\r
7625 ;@LD DE,(NN)\r
7626 opcode_ED_5B:\r
7627         ldrb r0,[z80pc],#1\r
7628         ldrb r1,[z80pc],#1\r
7629         orr r0,r0,r1, lsl #8\r
7630         readmem16\r
7631         mov z80de,r0, lsl #16\r
7632         fetch 20\r
7633 ;@IM 2\r
7634 opcode_ED_5E:\r
7635         mov r0,#2\r
7636         strb r0,[cpucontext,#z80im]\r
7637         fetch 8\r
7638 ;@LD A,R\r
7639 opcode_ED_5F:\r
7640         ldrb r0,[cpucontext,#z80r]\r
7641         and r0,r0,#0x80\r
7642         rsb r1,z80_icount,#0\r
7643         and r1,r1,#0x7F\r
7644         orr r0,r0,r1\r
7645         movs z80a,r0, lsl #24\r
7646         and z80f,z80f,#1<<CFlag\r
7647         orrmi z80f,z80f,#(1<<SFlag)\r
7648         orreq z80f,z80f,#(1<<ZFlag)\r
7649         ldrb r0,[cpucontext,#z80if]\r
7650         tst r0,#Z80_IF2\r
7651         orrne z80f,z80f,#(1<<VFlag)\r
7652         fetch 9\r
7653 ;@IN H,(C)\r
7654 opcode_ED_60:\r
7655         opIN_C\r
7656         and z80hl,z80hl,#0xFF<<16\r
7657         orr z80hl,z80hl,r0, lsl #24\r
7658         sub r1,opcodes,#0x100\r
7659         ldrb r0,[r1,r0]\r
7660         and z80f,z80f,#1<<CFlag\r
7661         orr z80f,z80f,r0\r
7662         fetch 12\r
7663 ;@OUT (C),H\r
7664 opcode_ED_61:\r
7665         mov r1,z80hl, lsr #24\r
7666         opOUT_C\r
7667         fetch 12\r
7668 ;@SBC HL,HL\r
7669 opcode_ED_62:\r
7670         opSBC16HL\r
7671 ;@RRD\r
7672 opcode_ED_67:\r
7673         readmem8HL\r
7674         mov r1,r0,ror#4\r
7675         orr r0,r1,z80a,lsr#20\r
7676         bic z80a,z80a,#0x0F000000\r
7677         orr z80a,z80a,r1,lsr#4\r
7678         writemem8HL\r
7679         sub r1,opcodes,#0x100\r
7680         ldrb r0,[r1,z80a, lsr #24]\r
7681         and z80f,z80f,#1<<CFlag\r
7682         orr z80f,z80f,r0\r
7683         fetch 18\r
7684 ;@IN L,(C)\r
7685 opcode_ED_68:\r
7686         opIN_C\r
7687         and z80hl,z80hl,#0xFF<<24\r
7688         orr z80hl,z80hl,r0, lsl #16\r
7689         and z80f,z80f,#1<<CFlag\r
7690         sub r1,opcodes,#0x100\r
7691         ldrb r0,[r1,r0]\r
7692         orr z80f,z80f,r0\r
7693         fetch 12\r
7694 ;@OUT (C),L\r
7695 opcode_ED_69:\r
7696         mov r1,z80hl, lsr #16\r
7697         and r1,r1,#0xFF\r
7698         opOUT_C\r
7699         fetch 12\r
7700 ;@ADC HL,HL\r
7701 opcode_ED_6A:\r
7702         opADC16HL\r
7703 ;@RLD\r
7704 opcode_ED_6F:\r
7705         readmem8HL\r
7706         orr r0,r0,z80a,lsl#4\r
7707         mov r0,r0,ror#28\r
7708         and z80a,z80a,#0xF0000000\r
7709         orr z80a,z80a,r0,lsl#16\r
7710         and z80a,z80a,#0xFF000000\r
7711         writemem8HL\r
7712         sub r1,opcodes,#0x100\r
7713         ldrb r0,[r1,z80a, lsr #24]\r
7714         and z80f,z80f,#1<<CFlag\r
7715         orr z80f,z80f,r0\r
7716         fetch 18\r
7717 ;@IN F,(C)\r
7718 opcode_ED_70:\r
7719         opIN_C\r
7720         and z80f,z80f,#1<<CFlag\r
7721         sub r1,opcodes,#0x100\r
7722         ldrb r0,[r1,r0]\r
7723         orr z80f,z80f,r0\r
7724         fetch 12\r
7725 ;@OUT (C),0\r
7726 opcode_ED_71:\r
7727         mov r1,#0\r
7728         opOUT_C\r
7729         fetch 12\r
7730 \r
7731 ;@SBC HL,SP\r
7732 opcode_ED_72:\r
7733 .if FAST_Z80SP\r
7734         ldr r0,[cpucontext,#z80sp_base]\r
7735         sub r0,z80sp,r0\r
7736         mov r0, r0, lsl #16\r
7737 .else\r
7738         mov r0,z80sp,lsl#16\r
7739 .endif\r
7740         opSBC16 r0\r
7741 ;@LD (NN),SP\r
7742 opcode_ED_73:\r
7743         ldrb r0,[z80pc],#1\r
7744         ldrb r1,[z80pc],#1\r
7745         orr r1,r0,r1, lsl #8\r
7746 .if FAST_Z80SP\r
7747         ldr r0,[cpucontext,#z80sp_base]\r
7748         sub r0,z80sp,r0\r
7749 .else\r
7750         mov r0,z80sp\r
7751 .endif\r
7752         writemem16\r
7753         fetch 16\r
7754 ;@IN A,(C)\r
7755 opcode_ED_78:\r
7756         opIN_C\r
7757         mov z80a,r0, lsl #24\r
7758         and z80f,z80f,#1<<CFlag\r
7759         sub r1,opcodes,#0x100\r
7760         ldrb r0,[r1,r0]\r
7761         orr z80f,z80f,r0\r
7762         fetch 12\r
7763 ;@OUT (C),A\r
7764 opcode_ED_79:\r
7765         mov r1,z80a, lsr #24\r
7766         opOUT_C\r
7767         fetch 12\r
7768 ;@ADC HL,SP\r
7769 opcode_ED_7A:\r
7770 .if FAST_Z80SP\r
7771         ldr r0,[cpucontext,#z80sp_base]\r
7772         sub r0,z80sp,r0\r
7773         mov r0, r0, lsl #16\r
7774 .else\r
7775         mov r0,z80sp,lsl#16\r
7776 .endif\r
7777         opADC16 r0\r
7778 ;@LD SP,(NN)\r
7779 opcode_ED_7B:\r
7780         ldrb r0,[z80pc],#1\r
7781         ldrb r1,[z80pc],#1\r
7782         orr r0,r0,r1, lsl #8\r
7783         readmem16\r
7784 .if FAST_Z80SP\r
7785         rebasesp\r
7786 .else\r
7787         mov z80sp,r0\r
7788 .endif\r
7789         fetch 20\r
7790 ;@LDI\r
7791 opcode_ED_A0:\r
7792         copymem8HL_DE\r
7793         add z80hl,z80hl,#1<<16\r
7794         add z80de,z80de,#1<<16\r
7795         subs z80bc,z80bc,#1<<16\r
7796         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7797         orrne z80f,z80f,#1<<VFlag\r
7798         fetch 16\r
7799 ;@CPI\r
7800 opcode_ED_A1:\r
7801         readmem8HL\r
7802         add z80hl,z80hl,#0x00010000\r
7803         mov r1,z80a,lsl#4\r
7804         cmp z80a,r0,lsl#24\r
7805         and z80f,z80f,#1<<CFlag\r
7806         orr z80f,z80f,#1<<NFlag\r
7807         orrmi z80f,z80f,#1<<SFlag\r
7808         orreq z80f,z80f,#1<<ZFlag\r
7809         cmp r1,r0,lsl#28\r
7810         orrcc z80f,z80f,#1<<HFlag\r
7811         subs z80bc,z80bc,#0x00010000\r
7812         orrne z80f,z80f,#1<<VFlag\r
7813         fetch 16\r
7814 ;@INI\r
7815 opcode_ED_A2:\r
7816         opIN_C\r
7817         and z80f,r0,#0x80\r
7818         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7819 ;@      mov r1,z80bc,lsl#8\r
7820 ;@      add r1,r1,#0x01000000\r
7821 ;@      adds r1,r1,r0,lsl#24\r
7822 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7823         writemem8HL\r
7824         add z80hl,z80hl,#1<<16\r
7825         sub z80bc,z80bc,#1<<24\r
7826         tst z80bc,#0xFF<<24\r
7827         orrmi z80f,z80f,#1<<SFlag\r
7828         orreq z80f,z80f,#1<<ZFlag\r
7829         fetch 16\r
7830 \r
7831 ;@OUTI\r
7832 opcode_ED_A3:\r
7833         readmem8HL\r
7834         add z80hl,z80hl,#1<<16\r
7835         and z80f,r0,#0x80\r
7836         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7837         mov r1,z80hl,lsl#8\r
7838         adds r1,r1,r0,lsl#24\r
7839         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL)+L > 0xFF\r
7840         sub z80bc,z80bc,#1<<24\r
7841         tst z80bc,#0xFF<<24\r
7842         orrmi z80f,z80f,#1<<SFlag\r
7843         orreq z80f,z80f,#1<<ZFlag\r
7844         mov r1,r0\r
7845         opOUT_C\r
7846         fetch 16\r
7847 \r
7848 ;@LDD\r
7849 opcode_ED_A8:\r
7850         copymem8HL_DE\r
7851         sub z80hl,z80hl,#1<<16\r
7852         sub z80de,z80de,#1<<16\r
7853         subs z80bc,z80bc,#1<<16\r
7854         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7855         orrne z80f,z80f,#1<<VFlag\r
7856         fetch 16\r
7857 \r
7858 ;@CPD\r
7859 opcode_ED_A9:\r
7860         readmem8HL\r
7861         sub z80hl,z80hl,#1<<16\r
7862         mov r1,z80a,lsl#4\r
7863         cmp z80a,r0,lsl#24\r
7864         and z80f,z80f,#1<<CFlag\r
7865         orr z80f,z80f,#1<<NFlag\r
7866         orrmi z80f,z80f,#1<<SFlag\r
7867         orreq z80f,z80f,#1<<ZFlag\r
7868         cmp r1,r0,lsl#28\r
7869         orrcc z80f,z80f,#1<<HFlag\r
7870         subs z80bc,z80bc,#0x00010000\r
7871         orrne z80f,z80f,#1<<VFlag\r
7872         fetch 16\r
7873 \r
7874 ;@IND\r
7875 opcode_ED_AA:\r
7876         opIN_C\r
7877         and z80f,r0,#0x80\r
7878         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7879 ;@      mov r1,z80bc,lsl#8\r
7880 ;@      sub r1,r1,#0x01000000\r
7881 ;@      adds r1,r1,r0,lsl#24\r
7882 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
7883         writemem8HL\r
7884         sub z80hl,z80hl,#1<<16\r
7885         sub z80bc,z80bc,#1<<24\r
7886         tst z80bc,#0xFF<<24\r
7887         orrmi z80f,z80f,#1<<SFlag\r
7888         orreq z80f,z80f,#1<<ZFlag\r
7889         fetch 16\r
7890 \r
7891 ;@OUTD\r
7892 opcode_ED_AB:\r
7893         readmem8HL\r
7894         sub z80hl,z80hl,#1<<16\r
7895         and z80f,r0,#0x80\r
7896         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7897         mov r1,z80hl,lsl#8\r
7898         adds r1,r1,r0,lsl#24\r
7899         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
7900         sub z80bc,z80bc,#1<<24\r
7901         tst z80bc,#0xFF<<24\r
7902         orrmi z80f,z80f,#1<<SFlag\r
7903         orreq z80f,z80f,#1<<ZFlag\r
7904         mov r1,r0\r
7905         opOUT_C\r
7906         fetch 16\r
7907 ;@LDIR\r
7908 opcode_ED_B0:\r
7909         copymem8HL_DE\r
7910         add z80hl,z80hl,#1<<16\r
7911         add z80de,z80de,#1<<16\r
7912         subs z80bc,z80bc,#1<<16\r
7913         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7914         orrne z80f,z80f,#1<<VFlag\r
7915         subne z80pc,z80pc,#2\r
7916         subne z80_icount,z80_icount,#5\r
7917         fetch 16\r
7918 \r
7919 ;@CPIR\r
7920 opcode_ED_B1:\r
7921         readmem8HL\r
7922         add z80hl,z80hl,#1<<16    \r
7923         mov r1,z80a,lsl#4\r
7924         cmp z80a,r0,lsl#24\r
7925         and z80f,z80f,#1<<CFlag\r
7926         orr z80f,z80f,#1<<NFlag\r
7927         orrmi z80f,z80f,#1<<SFlag\r
7928         orreq z80f,z80f,#1<<ZFlag\r
7929         cmp r1,r0,lsl#28\r
7930         orrcc z80f,z80f,#1<<HFlag\r
7931         subs z80bc,z80bc,#1<<16\r
7932         bne opcode_ED_B1_decpc\r
7933         fetch 16\r
7934 opcode_ED_B1_decpc:\r
7935         orr z80f,z80f,#1<<VFlag\r
7936         tst z80f,#1<<ZFlag\r
7937         subeq z80pc,z80pc,#2\r
7938         subeq z80_icount,z80_icount,#5\r
7939         fetch 16\r
7940 ;@INIR\r
7941 opcode_ED_B2:\r
7942         opIN_C\r
7943         and z80f,r0,#0x80\r
7944         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7945 ;@      mov r1,z80bc,lsl#8\r
7946 ;@      add r1,r1,#0x01000000\r
7947 ;@      adds r1,r1,r0,lsl#24\r
7948 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7949         writemem8HL\r
7950         add z80hl,z80hl,#1<<16\r
7951         sub z80bc,z80bc,#1<<24\r
7952         tst z80bc,#0xFF<<24\r
7953         orrmi z80f,z80f,#1<<SFlag\r
7954         orreq z80f,z80f,#1<<ZFlag\r
7955         subne z80pc,z80pc,#2\r
7956         subne z80_icount,z80_icount,#5\r
7957         fetch 16\r
7958 ;@OTIR\r
7959 opcode_ED_B3:\r
7960         readmem8HL\r
7961         add z80hl,z80hl,#1<<16\r
7962         and z80f,r0,#0x80\r
7963         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7964         mov r1,z80hl,lsl#8\r
7965         adds r1,r1,r0,lsl#24\r
7966         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
7967         sub z80bc,z80bc,#1<<24\r
7968         tst z80bc,#0xFF<<24\r
7969         orrmi z80f,z80f,#1<<SFlag\r
7970         orreq z80f,z80f,#1<<ZFlag\r
7971         subne z80pc,z80pc,#2\r
7972         subne z80_icount,z80_icount,#5\r
7973         mov r1,r0\r
7974         opOUT_C\r
7975         fetch 16\r
7976 ;@LDDR\r
7977 opcode_ED_B8:\r
7978         copymem8HL_DE\r
7979         sub z80hl,z80hl,#1<<16\r
7980         sub z80de,z80de,#1<<16\r
7981         subs z80bc,z80bc,#1<<16\r
7982         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7983         orrne z80f,z80f,#1<<VFlag\r
7984         subne z80pc,z80pc,#2\r
7985         subne z80_icount,z80_icount,#5\r
7986         fetch 16\r
7987 \r
7988 ;@CPDR\r
7989 opcode_ED_B9:\r
7990         readmem8HL\r
7991         sub z80hl,z80hl,#1<<16\r
7992         mov r1,z80a,lsl#4\r
7993         cmp z80a,r0,lsl#24\r
7994         and z80f,z80f,#1<<CFlag\r
7995         orr z80f,z80f,#1<<NFlag\r
7996         orrmi z80f,z80f,#1<<SFlag\r
7997         orreq z80f,z80f,#1<<ZFlag\r
7998         cmp r1,r0,lsl#28\r
7999         orrcc z80f,z80f,#1<<HFlag\r
8000         subs z80bc,z80bc,#1<<16\r
8001         bne opcode_ED_B9_decpc\r
8002         fetch 16\r
8003 opcode_ED_B9_decpc:\r
8004         orr z80f,z80f,#1<<VFlag\r
8005         tst z80f,#1<<ZFlag\r
8006         subeq z80pc,z80pc,#2\r
8007         subeq z80_icount,z80_icount,#5\r
8008         fetch 16\r
8009 ;@INDR\r
8010 opcode_ED_BA:\r
8011         opIN_C\r
8012         and z80f,r0,#0x80\r
8013         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8014 ;@      mov r1,z80bc,lsl#8\r
8015 ;@      sub r1,r1,#0x01000000\r
8016 ;@      adds r1,r1,r0,lsl#24\r
8017 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
8018         writemem8HL\r
8019         sub z80hl,z80hl,#1<<16\r
8020         sub z80bc,z80bc,#1<<24\r
8021         tst z80bc,#0xFF<<24\r
8022         orrmi z80f,z80f,#1<<SFlag\r
8023         orreq z80f,z80f,#1<<ZFlag\r
8024         subne z80pc,z80pc,#2\r
8025         subne z80_icount,z80_icount,#5\r
8026         fetch 16\r
8027 ;@OTDR\r
8028 opcode_ED_BB:\r
8029         readmem8HL\r
8030         sub z80hl,z80hl,#1<<16\r
8031         and z80f,r0,#0x80\r
8032         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8033         mov r1,z80hl,lsl#8\r
8034         adds r1,r1,r0,lsl#24\r
8035         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
8036         sub z80bc,z80bc,#1<<24\r
8037         tst z80bc,#0xFF<<24\r
8038         orrmi z80f,z80f,#1<<SFlag\r
8039         orreq z80f,z80f,#1<<ZFlag\r
8040         subne z80pc,z80pc,#2\r
8041         subne z80_icount,z80_icount,#5\r
8042         mov r1,r0\r
8043         opOUT_C\r
8044         fetch 16\r
8045 ;@##################################\r
8046 ;@##################################\r
8047 ;@###  opcodes FD  #########################\r
8048 ;@##################################\r
8049 ;@##################################\r
8050 ;@Since DD and FD opcodes are all the same apart from the address\r
8051 ;@register they use.  When a FD intruction the program runs the code\r
8052 ;@from the DD location but the address of the IY reg is passed instead\r
8053 ;@of IX\r
8054 \r
8055 ;@end_loop:\r
8056 ;@     b end_loop\r
8057 \r
8058 ;@ vim:filetype=armasm\r
8059 \r