ff2a6b8b38d858e51027a9a69eb242a28a6d2e53
[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         .equ Z80_NMI, 1<<3\r
101 \r
102 ;@---------------------------------------\r
103 \r
104 .text\r
105 \r
106 .if DRZ80_XMAP\r
107 \r
108 z80_xmap_read8: @ addr\r
109     ldr r1,[cpucontext,#z80_read8]\r
110     mov r2,r0,lsr #Z80_MEM_SHIFT\r
111     ldr r1,[r1,r2,lsl #2]\r
112     movs r1,r1,lsl #1\r
113     ldrccb r0,[r1,r0]\r
114     bxcc lr\r
115 \r
116 z80_xmap_read8_handler: @ addr, func\r
117     str z80_icount,[cpucontext,#cycles_pointer]\r
118     stmfd sp!,{r12,lr}\r
119     mov lr,pc\r
120     bx r1\r
121     ldr z80_icount,[cpucontext,#cycles_pointer]\r
122     ldmfd sp!,{r12,pc}\r
123 \r
124 z80_xmap_write8: @ data, addr\r
125     ldr r2,[cpucontext,#z80_write8]\r
126     add r2,r2,r1,lsr #Z80_MEM_SHIFT-2\r
127     bic r2,r2,#3\r
128     ldr r2,[r2]\r
129     movs r2,r2,lsl #1\r
130     strccb r0,[r2,r1]\r
131     bxcc lr\r
132 \r
133 z80_xmap_write8_handler: @ data, addr, func\r
134     str z80_icount,[cpucontext,#cycles_pointer]\r
135     mov r3,r0\r
136     mov r0,r1\r
137     mov r1,r3\r
138     stmfd sp!,{r12,lr}\r
139     mov lr,pc\r
140     bx r2\r
141     ldr z80_icount,[cpucontext,#cycles_pointer]\r
142     ldmfd sp!,{r12,pc}\r
143 \r
144 z80_xmap_read16: @ addr\r
145     @ check if we cross bank boundary\r
146     add r1,r0,#1\r
147     eor r1,r1,r0\r
148     tst r1,#1<<Z80_MEM_SHIFT\r
149     bne 0f\r
150 \r
151     ldr r1,[cpucontext,#z80_read8]\r
152     mov r2,r0,lsr #Z80_MEM_SHIFT\r
153     ldr r1,[r1,r2,lsl #2]\r
154     movs r1,r1,lsl #1\r
155     bcs 0f\r
156     ldrb r0,[r1,r0]!\r
157     ldrb r1,[r1,#1]\r
158     orr r0,r0,r1,lsl #8\r
159     bx lr\r
160 \r
161 0:\r
162     @ z80_xmap_read8 will save r3 and r12 for us\r
163     stmfd sp!,{r8,r9,lr}\r
164     mov r8,r0\r
165     bl z80_xmap_read8\r
166     mov r9,r0\r
167     add r0,r8,#1\r
168     bl z80_xmap_read8\r
169     orr r0,r9,r0,lsl #8\r
170     ldmfd sp!,{r8,r9,pc}\r
171 \r
172 z80_xmap_write16: @ data, addr\r
173     add r2,r1,#1\r
174     eor r2,r2,r1\r
175     tst r2,#1<<Z80_MEM_SHIFT\r
176     bne 0f\r
177 \r
178     ldr r2,[cpucontext,#z80_write8]\r
179     add r2,r2,r1,lsr #Z80_MEM_SHIFT-2\r
180     bic r2,r2,#3\r
181     ldr r2,[r2]\r
182     movs r2,r2,lsl #1\r
183     bcs 0f\r
184     strb r0,[r2,r1]!\r
185     mov r0,r0,lsr #8\r
186     strb r0,[r2,#1]\r
187     bx lr\r
188 \r
189 0:\r
190     stmfd sp!,{r8,r9,lr}\r
191     mov r8,r0\r
192     mov r9,r1\r
193     bl z80_xmap_write8\r
194     mov r0,r8,lsr #8\r
195     add r1,r9,#1\r
196     bl z80_xmap_write8\r
197     ldmfd sp!,{r8,r9,pc}\r
198 \r
199 z80_xmap_rebase_pc:\r
200     ldr r1,[cpucontext,#z80_read8]\r
201     mov r2,r0,lsr #Z80_MEM_SHIFT\r
202     ldr r1,[r1,r2,lsl #2]\r
203     movs r1,r1,lsl #1\r
204     strcc r1,[cpucontext,#z80pc_base]\r
205     addcc z80pc,r1,r0\r
206     bxcc lr\r
207 \r
208 z80_bad_jump:\r
209     stmfd sp!,{r3,r12,lr}\r
210     mov lr,pc\r
211     ldr pc,[cpucontext,#z80_rebasePC]\r
212     mov z80pc,r0\r
213     ldmfd sp!,{r3,r12,pc}\r
214 \r
215 z80_xmap_rebase_sp:\r
216     ldr r1,[cpucontext,#z80_read8]\r
217     sub r2,r0,#1\r
218     mov r2,r2,lsl #16\r
219     mov r2,r2,lsr #(Z80_MEM_SHIFT+16)\r
220     ldr r1,[r1,r2,lsl #2]\r
221     movs r1,r1,lsl #1\r
222     strcc r1,[cpucontext,#z80sp_base]\r
223     addcc z80sp,r1,r0\r
224     bxcc lr\r
225 \r
226     stmfd sp!,{r3,r12,lr}\r
227     mov lr,pc\r
228     ldr pc,[cpucontext,#z80_rebaseSP]\r
229     mov z80sp,r0\r
230     ldmfd sp!,{r3,r12,pc}\r
231  \r
232 .endif @ DRZ80_XMAP\r
233 \r
234 \r
235 .macro fetch cycs\r
236         subs z80_icount,z80_icount,#\cycs\r
237 .if UPDATE_CONTEXT\r
238     str z80pc,[cpucontext,#z80pc_pointer]\r
239         str z80_icount,[cpucontext,#cycles_pointer]\r
240         ldr r1,[cpucontext,#z80pc_base]\r
241         sub r2,z80pc,r1\r
242         str r2,[cpucontext,#previouspc]\r
243 .endif\r
244         ldrplb r0,[z80pc],#1\r
245         ldrpl pc,[opcodes,r0, lsl #2]\r
246         bmi z80_execute_end\r
247 .endm\r
248 \r
249 .macro eatcycles cycs\r
250         sub z80_icount,z80_icount,#\cycs\r
251 .if UPDATE_CONTEXT\r
252         str z80_icount,[cpucontext,#cycles_pointer]\r
253 .endif\r
254 .endm\r
255 \r
256 .macro readmem8\r
257 .if UPDATE_CONTEXT\r
258     str z80pc,[cpucontext,#z80pc_pointer]\r
259 .endif\r
260 .if DRZ80_XMAP\r
261 .if !DRZ80_XMAP_MORE_INLINE\r
262     ldr r1,[cpucontext,#z80_read8]\r
263     mov r2,r0,lsr #Z80_MEM_SHIFT\r
264     ldr r1,[r1,r2,lsl #2]\r
265     movs r1,r1,lsl #1\r
266     ldrccb r0,[r1,r0]\r
267     blcs z80_xmap_read8_handler\r
268 .else\r
269     bl z80_xmap_read8\r
270 .endif\r
271 .else ;@ if !DRZ80_XMAP\r
272     stmfd sp!,{r3,r12}\r
273         mov lr,pc\r
274         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
275         ldmfd sp!,{r3,r12}\r
276 .endif\r
277 .endm\r
278 \r
279 .macro readmem8HL\r
280         mov r0,z80hl, lsr #16\r
281         readmem8\r
282 .endm\r
283 \r
284 .macro readmem16\r
285 .if UPDATE_CONTEXT\r
286      str z80pc,[cpucontext,#z80pc_pointer]\r
287 .endif\r
288 .if DRZ80_XMAP\r
289     bl z80_xmap_read16\r
290 .else\r
291         stmfd sp!,{r3,r12}\r
292         mov lr,pc\r
293         ldr pc,[cpucontext,#z80_read16]\r
294         ldmfd sp!,{r3,r12}\r
295 .endif\r
296 .endm\r
297 \r
298 .macro writemem8\r
299 .if UPDATE_CONTEXT\r
300      str z80pc,[cpucontext,#z80pc_pointer]\r
301 .endif\r
302 .if DRZ80_XMAP\r
303 .if DRZ80_XMAP_MORE_INLINE\r
304     ldr r2,[cpucontext,#z80_write8]\r
305     mov lr,r1,lsr #Z80_MEM_SHIFT\r
306     ldr r2,[r2,lr,lsl #2]\r
307     movs r2,r2,lsl #1\r
308     strccb r0,[r2,r1]\r
309     blcs z80_xmap_write8_handler\r
310 .else\r
311     bl z80_xmap_write8\r
312 .endif\r
313 .else ;@ if !DRZ80_XMAP\r
314         stmfd sp!,{r3,r12}\r
315         mov lr,pc\r
316         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
317         ldmfd sp!,{r3,r12}\r
318 .endif\r
319 .endm\r
320 \r
321 .macro writemem8DE\r
322         mov r1,z80de, lsr #16\r
323         writemem8\r
324 .endm\r
325 \r
326 .macro writemem8HL\r
327         mov r1,z80hl, lsr #16\r
328         writemem8\r
329 .endm\r
330 \r
331 .macro writemem16\r
332 .if UPDATE_CONTEXT\r
333      str z80pc,[cpucontext,#z80pc_pointer]\r
334 .endif\r
335 .if DRZ80_XMAP\r
336     bl z80_xmap_write16\r
337 .else\r
338         stmfd sp!,{r3,r12}\r
339         mov lr,pc\r
340         ldr pc,[cpucontext,#z80_write16]                ;@ r0=data r1=addr\r
341         ldmfd sp!,{r3,r12}\r
342 .endif\r
343 .endm\r
344 \r
345 .macro copymem8HL_DE\r
346 .if UPDATE_CONTEXT\r
347      str z80pc,[cpucontext,#z80pc_pointer]\r
348 .endif\r
349         mov r0,z80hl, lsr #16\r
350 .if DRZ80_XMAP\r
351     bl z80_xmap_read8\r
352 .else\r
353     stmfd sp!,{r3,r12}\r
354         mov lr,pc\r
355         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
356 .endif\r
357         mov r1,z80de, lsr #16\r
358 .if DRZ80_XMAP\r
359     bl z80_xmap_write8\r
360 .else\r
361         mov lr,pc\r
362         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
363         ldmfd sp!,{r3,r12}\r
364 .endif\r
365 .endm\r
366 ;@---------------------------------------\r
367 \r
368 .macro rebasepc\r
369 .if UPDATE_CONTEXT\r
370      str z80pc,[cpucontext,#z80pc_pointer]\r
371 .endif\r
372 .if DRZ80_XMAP\r
373     bl z80_xmap_rebase_pc\r
374 .else\r
375     stmfd sp!,{r3,r12}\r
376         mov lr,pc\r
377         ldr pc,[cpucontext,#z80_rebasePC]               ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
378         ldmfd sp!,{r3,r12}\r
379         mov z80pc,r0\r
380 .endif\r
381 .endm\r
382 \r
383 .macro rebasesp\r
384 .if UPDATE_CONTEXT\r
385      str z80pc,[cpucontext,#z80pc_pointer]\r
386 .endif\r
387 .if DRZ80_XMAP\r
388     bl z80_xmap_rebase_sp\r
389 .else\r
390         stmfd sp!,{r3,r12}\r
391         mov lr,pc\r
392         ldr pc,[cpucontext,#z80_rebaseSP]               ;@ external function must rebase sp\r
393         ldmfd sp!,{r3,r12}\r
394         mov z80sp,r0\r
395 .endif\r
396 .endm\r
397 ;@----------------------------------------------------------------------------\r
398 \r
399 .macro opADC\r
400         movs z80f,z80f,lsr#2                                    ;@ get C\r
401         subcs r0,r0,#0x100\r
402         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of half carry\r
403         adcs z80a,z80a,r0,ror#8\r
404         mrs r0,cpsr                                                             ;@ S,Z,V&C\r
405         eor z80f,z80f,z80a,lsr#24\r
406         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
407         orr z80f,z80f,r0,lsr#28\r
408 .endm\r
409 \r
410 .macro opADCA\r
411         movs z80f,z80f,lsr#2                                    ;@ get C\r
412         orrcs z80a,z80a,#0x00800000\r
413         adds z80a,z80a,z80a\r
414         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
415         mov z80f,z80f,lsr#28\r
416         tst z80a,#0x10000000                                    ;@ H, correct\r
417         orrne z80f,z80f,#1<<HFlag\r
418         fetch 4\r
419 .endm\r
420 \r
421 .macro opADCH reg\r
422         mov r0,\reg,lsr#24\r
423         opADC\r
424         fetch 4\r
425 .endm\r
426 \r
427 .macro opADCL reg\r
428         movs z80f,z80f,lsr#2                                    ;@ get C\r
429         adc r0,\reg,\reg,lsr#15\r
430         orrcs z80a,z80a,#0x00800000\r
431         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
432         adds z80a,z80a,r0,lsl#23\r
433         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
434         mov z80f,z80f,lsr#28\r
435         cmn r1,r0,lsl#27\r
436         orrcs z80f,z80f,#1<<HFlag                               ;@ H, correct\r
437         fetch 4\r
438 .endm\r
439 \r
440 .macro opADCb\r
441         opADC\r
442 .endm\r
443 ;@---------------------------------------\r
444 \r
445 .macro opADD reg shift\r
446         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
447         adds z80a,z80a,\reg,lsl#\shift\r
448         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
449         mov z80f,z80f,lsr#28\r
450         cmn r1,\reg,lsl#\shift+4\r
451         orrcs z80f,z80f,#1<<HFlag\r
452 .endm\r
453 \r
454 .macro opADDA\r
455         adds z80a,z80a,z80a\r
456         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
457         mov z80f,z80f,lsr#28\r
458         tst z80a,#0x10000000                                    ;@ H, correct\r
459         orrne z80f,z80f,#1<<HFlag\r
460         fetch 4\r
461 .endm\r
462 \r
463 .macro opADDH reg\r
464         and r0,\reg,#0xFF000000\r
465         opADD r0 0\r
466         fetch 4\r
467 .endm\r
468 \r
469 .macro opADDL reg\r
470         opADD \reg 8\r
471         fetch 4\r
472 .endm\r
473 \r
474 .macro opADDb \r
475         opADD r0 24\r
476 .endm\r
477 ;@---------------------------------------\r
478 \r
479 .macro opADC16 reg\r
480         movs z80f,z80f,lsr#2                                    ;@ get C\r
481         adc r0,z80a,\reg,lsr#15\r
482         orrcs z80hl,z80hl,#0x00008000\r
483         mov r1,z80hl,lsl#4\r
484         adds z80hl,z80hl,r0,lsl#15\r
485         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
486         mov z80f,z80f,lsr#28\r
487         cmn r1,r0,lsl#19\r
488         orrcs z80f,z80f,#1<<HFlag\r
489         fetch 15\r
490 .endm\r
491 \r
492 .macro opADC16HL\r
493         movs z80f,z80f,lsr#2                                    ;@ get C\r
494         orrcs z80hl,z80hl,#0x00008000\r
495         adds z80hl,z80hl,z80hl\r
496         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
497         mov z80f,z80f,lsr#28\r
498         tst z80hl,#0x10000000                                   ;@ H, correct.\r
499         orrne z80f,z80f,#1<<HFlag\r
500         fetch 15\r
501 .endm\r
502 \r
503 .macro opADD16 reg1 reg2\r
504         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
505         adds \reg1,\reg1,\reg2\r
506         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
507         orrcs z80f,z80f,#1<<CFlag\r
508         cmn r1,\reg2,lsl#4\r
509         orrcs z80f,z80f,#1<<HFlag\r
510 .endm\r
511 \r
512 .macro opADD16s reg1 reg2 shift\r
513         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
514         adds \reg1,\reg1,\reg2,lsl#\shift\r
515         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
516         orrcs z80f,z80f,#1<<CFlag\r
517         cmn r1,\reg2,lsl#4+\shift\r
518         orrcs z80f,z80f,#1<<HFlag\r
519 .endm\r
520 \r
521 .macro opADD16_2 reg\r
522         adds \reg,\reg,\reg\r
523         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
524         orrcs z80f,z80f,#1<<CFlag\r
525         tst \reg,#0x10000000                                    ;@ H, correct.\r
526         orrne z80f,z80f,#1<<HFlag\r
527 .endm\r
528 ;@---------------------------------------\r
529 \r
530 .macro opAND reg shift\r
531         and z80a,z80a,\reg,lsl#\shift\r
532         sub r0,opcodes,#0x100\r
533         ldrb z80f,[r0,z80a, lsr #24]\r
534         orr z80f,z80f,#1<<HFlag\r
535 .endm\r
536 \r
537 .macro opANDA\r
538         sub r0,opcodes,#0x100\r
539         ldrb z80f,[r0,z80a, lsr #24]\r
540         orr z80f,z80f,#1<<HFlag\r
541         fetch 4\r
542 .endm\r
543 \r
544 .macro opANDH reg\r
545         opAND \reg 0\r
546         fetch 4\r
547 .endm\r
548 \r
549 .macro opANDL reg\r
550         opAND \reg 8\r
551         fetch 4\r
552 .endm\r
553 \r
554 .macro opANDb\r
555         opAND r0 24\r
556 .endm\r
557 ;@---------------------------------------\r
558 \r
559 .macro opBITH reg bit\r
560         and z80f,z80f,#1<<CFlag\r
561         tst \reg,#1<<(24+\bit)\r
562         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
563         orrne z80f,z80f,#(1<<HFlag)\r
564         fetch 8\r
565 .endm\r
566 \r
567 .macro opBIT7H reg\r
568         and z80f,z80f,#1<<CFlag\r
569         tst \reg,#1<<(24+7)\r
570         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
571         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
572         fetch 8\r
573 .endm\r
574 \r
575 .macro opBITL reg bit\r
576         and z80f,z80f,#1<<CFlag\r
577         tst \reg,#1<<(16+\bit)\r
578         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
579         orrne z80f,z80f,#(1<<HFlag)\r
580         fetch 8\r
581 .endm\r
582 \r
583 .macro opBIT7L reg\r
584         and z80f,z80f,#1<<CFlag\r
585         tst \reg,#1<<(16+7)\r
586         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
587         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
588         fetch 8\r
589 .endm\r
590 \r
591 .macro opBITb bit\r
592         and z80f,z80f,#1<<CFlag\r
593         tst r0,#1<<\bit\r
594         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
595         orrne z80f,z80f,#(1<<HFlag)\r
596 .endm\r
597 \r
598 .macro opBIT7b\r
599         and z80f,z80f,#1<<CFlag\r
600         tst r0,#1<<7\r
601         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
602         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
603 .endm\r
604 ;@---------------------------------------\r
605 \r
606 .macro opCP reg shift\r
607         mov r1,z80a,lsl#4                                               ;@ prepare for check of half carry\r
608         cmp z80a,\reg,lsl#\shift\r
609         mrs z80f,cpsr\r
610         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
611         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
612         cmp r1,\reg,lsl#\shift+4\r
613         orrcc z80f,z80f,#1<<HFlag\r
614 .endm\r
615 \r
616 .macro opCPA\r
617         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
618         fetch 4\r
619 .endm\r
620 \r
621 .macro opCPH reg\r
622         and r0,\reg,#0xFF000000\r
623         opCP r0 0\r
624         fetch 4\r
625 .endm\r
626 \r
627 .macro opCPL reg\r
628         opCP \reg 8\r
629         fetch 4\r
630 .endm\r
631 \r
632 .macro opCPb\r
633         opCP r0 24\r
634 .endm\r
635 ;@---------------------------------------\r
636 \r
637 .macro opDEC8 reg                                                       ;@for A and memory\r
638         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
639         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
640         tst \reg,#0x0f000000\r
641         orreq z80f,z80f,#1<<HFlag\r
642         subs \reg,\reg,#0x01000000\r
643         orrmi z80f,z80f,#1<<SFlag\r
644         orrvs z80f,z80f,#1<<VFlag\r
645         orreq z80f,z80f,#1<<ZFlag\r
646 .endm\r
647 \r
648 .macro opDEC8H reg                                                      ;@for B, D & H\r
649         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
650         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
651         tst \reg,#0x0f000000\r
652         orreq z80f,z80f,#1<<HFlag\r
653         subs \reg,\reg,#0x01000000\r
654         orrmi z80f,z80f,#1<<SFlag\r
655         orrvs z80f,z80f,#1<<VFlag\r
656         tst \reg,#0xff000000                                    ;@Z\r
657         orreq z80f,z80f,#1<<ZFlag\r
658 .endm\r
659 \r
660 .macro opDEC8L reg                                                      ;@for C, E & L\r
661         mov \reg,\reg,ror#24\r
662         opDEC8H \reg\r
663         mov \reg,\reg,ror#8\r
664 .endm\r
665 \r
666 .macro opDEC8b                                                          ;@for memory\r
667         mov r0,r0,lsl#24\r
668         opDEC8 r0\r
669         mov r0,r0,lsr#24\r
670 .endm\r
671 ;@---------------------------------------\r
672 \r
673 .macro opIN\r
674         stmfd sp!,{r3,r12}\r
675         mov lr,pc\r
676         ldr pc,[cpucontext,#z80_in]                             ;@ r0=port - data returned in r0\r
677         ldmfd sp!,{r3,r12}\r
678 .endm\r
679 \r
680 .macro opIN_C\r
681         mov r0,z80bc, lsr #16\r
682         opIN\r
683 .endm\r
684 ;@---------------------------------------\r
685 \r
686 .macro opINC8 reg                                                       ;@for A and memory\r
687         and z80f,z80f,#1<<CFlag                                 ;@save carry, clear n\r
688         adds \reg,\reg,#0x01000000\r
689         orrmi z80f,z80f,#1<<SFlag\r
690         orrvs z80f,z80f,#1<<VFlag\r
691         orrcs z80f,z80f,#1<<ZFlag                               ;@cs when going from 0xFF to 0x00\r
692         tst \reg,#0x0f000000\r
693         orreq z80f,z80f,#1<<HFlag\r
694 .endm\r
695 \r
696 .macro opINC8H reg                                                      ;@for B, D & H\r
697         opINC8 \reg\r
698 .endm\r
699 \r
700 .macro opINC8L reg                                                      ;@for C, E & L\r
701         mov \reg,\reg,ror#24\r
702         opINC8 \reg\r
703         mov \reg,\reg,ror#8\r
704 .endm\r
705 \r
706 .macro opINC8b                                                          ;@for memory\r
707         mov r0,r0,lsl#24\r
708         opINC8 r0\r
709         mov r0,r0,lsr#24\r
710 .endm\r
711 ;@---------------------------------------\r
712 \r
713 .macro opOR reg shift\r
714         orr z80a,z80a,\reg,lsl#\shift\r
715         sub r0,opcodes,#0x100\r
716         ldrb z80f,[r0,z80a, lsr #24]\r
717 .endm\r
718 \r
719 .macro opORA\r
720         sub r0,opcodes,#0x100\r
721         ldrb z80f,[r0,z80a, lsr #24]\r
722         fetch 4\r
723 .endm\r
724 \r
725 .macro opORH reg\r
726         and r0,\reg,#0xFF000000\r
727         opOR r0 0\r
728         fetch 4\r
729 .endm\r
730 \r
731 .macro opORL reg\r
732         opOR \reg 8\r
733         fetch 4\r
734 .endm\r
735 \r
736 .macro opORb\r
737         opOR r0 24\r
738 .endm\r
739 ;@---------------------------------------\r
740 \r
741 .macro opOUT\r
742         stmfd sp!,{r3,r12}\r
743         mov lr,pc\r
744         ldr pc,[cpucontext,#z80_out]                    ;@ r0=port r1=data\r
745         ldmfd sp!,{r3,r12}\r
746 .endm\r
747 \r
748 .macro opOUT_C\r
749         mov r0,z80bc, lsr #16\r
750         opOUT\r
751 .endm\r
752 ;@---------------------------------------\r
753 \r
754 .macro opPOP\r
755 .if FAST_Z80SP\r
756         ldrb r0,[z80sp],#1\r
757         ldrb r1,[z80sp],#1\r
758         orr r0,r0,r1, lsl #8\r
759 .else\r
760         mov r0,z80sp\r
761         readmem16\r
762         add z80sp,z80sp,#2\r
763 .endif\r
764 .endm\r
765 \r
766 .macro opPOPreg reg\r
767         opPOP\r
768         mov \reg,r0, lsl #16\r
769         fetch 10\r
770 .endm\r
771 ;@---------------------------------------\r
772 \r
773 .macro stack_check\r
774     @ try to protect against stack overflows, lock into current bank\r
775     ldr r1,[cpucontext,#z80sp_base]\r
776     sub r1,z80sp,r1\r
777     cmp r1,#2\r
778     addlt z80sp,z80sp,#1<<Z80_MEM_SHIFT\r
779 .endm\r
780 \r
781 .macro opPUSHareg reg @ reg > r1\r
782 .if FAST_Z80SP\r
783 .if DRZ80_XMAP\r
784         stack_check\r
785 .endif\r
786         mov r1,\reg, lsr #8\r
787         strb r1,[z80sp,#-1]!\r
788         strb \reg,[z80sp,#-1]!\r
789 .else\r
790     mov r0,\reg\r
791         sub z80sp,z80sp,#2\r
792         mov r1,z80sp\r
793         writemem16\r
794 .endif\r
795 .endm\r
796 \r
797 .macro opPUSHreg reg\r
798 .if FAST_Z80SP\r
799 .if DRZ80_XMAP\r
800         stack_check\r
801 .endif\r
802     mov r1,\reg, lsr #24\r
803         strb r1,[z80sp,#-1]!\r
804         mov r1,\reg, lsr #16\r
805         strb r1,[z80sp,#-1]!\r
806 .else\r
807         mov r0,\reg,lsr #16\r
808         sub z80sp,z80sp,#2\r
809         mov r1,z80sp\r
810         writemem16\r
811 .endif\r
812 .endm\r
813 ;@---------------------------------------\r
814 \r
815 .macro opRESmemHL bit\r
816         mov r0,z80hl, lsr #16\r
817 .if DRZ80_XMAP\r
818         bl z80_xmap_read8\r
819         bic r0,r0,#1<<\bit\r
820         mov r1,z80hl, lsr #16\r
821         bl z80_xmap_write8\r
822 .else\r
823         stmfd sp!,{r3,r12}\r
824         mov lr,pc\r
825         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
826         bic r0,r0,#1<<\bit\r
827         mov r1,z80hl, lsr #16\r
828         mov lr,pc\r
829         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
830         ldmfd sp!,{r3,r12}\r
831 .endif\r
832     fetch 15\r
833 .endm\r
834 ;@---------------------------------------\r
835 \r
836 .macro opRESmem bit\r
837 .if DRZ80_XMAP\r
838         stmfd sp!,{r0}                                                  ;@ save addr as well\r
839         bl z80_xmap_read8\r
840         bic r0,r0,#1<<\bit\r
841         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
842         bl z80_xmap_write8\r
843 .else\r
844         stmfd sp!,{r3,r12}\r
845         stmfd sp!,{r0}                                                  ;@ save addr as well\r
846         mov lr,pc\r
847         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
848         bic r0,r0,#1<<\bit\r
849         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
850         mov lr,pc\r
851         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
852         ldmfd sp!,{r3,r12}\r
853 .endif\r
854         fetch 23\r
855 .endm\r
856 ;@---------------------------------------\r
857 \r
858 .macro opRL reg1 reg2 shift\r
859         movs \reg1,\reg2,lsl \shift\r
860         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
861         orrne \reg1,\reg1,#0x01000000\r
862 ;@      and r2,z80f,#1<<CFlag\r
863 ;@      orr $x,$x,r2,lsl#23\r
864         sub r1,opcodes,#0x100\r
865         ldrb z80f,[r1,\reg1,lsr#24]                             ;@get PZS\r
866         orrcs z80f,z80f,#1<<CFlag\r
867 .endm\r
868 \r
869 .macro opRLA\r
870         opRL z80a, z80a, #1\r
871         fetch 8\r
872 .endm\r
873 \r
874 .macro opRLH reg\r
875         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
876         adds \reg,\reg,r0\r
877         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
878         orrne \reg,\reg,#0x01000000\r
879         sub r1,opcodes,#0x100\r
880         ldrb z80f,[r1,\reg,lsr#24]                              ;@get PZS\r
881         orrcs z80f,z80f,#1<<CFlag\r
882         fetch 8\r
883 .endm\r
884 \r
885 .macro opRLL reg\r
886         opRL r0, \reg, #9\r
887         and \reg,\reg,#0xFF000000                               ;@mask out high\r
888         orr \reg,\reg,r0,lsr#8\r
889         fetch 8\r
890 .endm\r
891 \r
892 .macro opRLb\r
893         opRL r0, r0, #25\r
894         mov r0,r0,lsr#24\r
895 .endm\r
896 ;@---------------------------------------\r
897 \r
898 .macro opRLC reg1 reg2 shift\r
899         movs \reg1,\reg2,lsl#\shift\r
900         orrcs \reg1,\reg1,#0x01000000\r
901         sub r1,opcodes,#0x100\r
902         ldrb z80f,[r1,\reg1,lsr#24]\r
903         orrcs z80f,z80f,#1<<CFlag\r
904 .endm\r
905 \r
906 .macro opRLCA\r
907         opRLC z80a, z80a, 1\r
908         fetch 8\r
909 .endm\r
910 \r
911 .macro opRLCH reg\r
912         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
913         adds \reg,\reg,r0\r
914         orrcs \reg,\reg,#0x01000000\r
915         sub r1,opcodes,#0x100\r
916         ldrb z80f,[r1,\reg,lsr#24]\r
917         orrcs z80f,z80f,#1<<CFlag\r
918         fetch 8\r
919 .endm\r
920 \r
921 .macro opRLCL reg\r
922         opRLC r0, \reg, 9\r
923         and \reg,\reg,#0xFF000000                               ;@mask out high\r
924         orr \reg,\reg,r0,lsr#8\r
925         fetch 8\r
926 .endm\r
927 \r
928 .macro opRLCb\r
929         opRLC r0, r0, 25\r
930         mov r0,r0,lsr#24\r
931 .endm\r
932 ;@---------------------------------------\r
933 \r
934 .macro opRR reg1 reg2 shift\r
935         movs \reg1,\reg2,lsr#\shift\r
936         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
937         orrne \reg1,\reg1,#0x00000080\r
938 ;@      and r2,z80_f,#PSR_C\r
939 ;@      orr \reg1,\reg1,r2,lsl#6\r
940         sub r1,opcodes,#0x100\r
941         ldrb z80f,[r1,\reg1]\r
942         orrcs z80f,z80f,#1<<CFlag\r
943 .endm\r
944 \r
945 .macro opRRA\r
946         orr z80a,z80a,z80f,lsr#1                                ;@get C\r
947         movs z80a,z80a,ror#25\r
948         mov z80a,z80a,lsl#24\r
949         sub r1,opcodes,#0x100\r
950         ldrb z80f,[r1,z80a,lsr#24]\r
951         orrcs z80f,z80f,#1<<CFlag\r
952         fetch 8\r
953 .endm\r
954 \r
955 .macro opRRH reg\r
956         orr r0,\reg,z80f,lsr#1                                  ;@get C\r
957         movs r0,r0,ror#25\r
958         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
959         orr \reg,\reg,r0,lsl#24\r
960         sub r1,opcodes,#0x100\r
961         ldrb z80f,[r1,\reg,lsr#24]\r
962         orrcs z80f,z80f,#1<<CFlag\r
963         fetch 8\r
964 .endm\r
965 \r
966 .macro opRRL reg\r
967         and r0,\reg,#0x00FF0000                                 ;@mask out low to r0\r
968         opRR r0 r0 17\r
969         and \reg,\reg,#0xFF000000                               ;@mask out high\r
970         orr \reg,\reg,r0,lsl#16\r
971         fetch 8\r
972 .endm\r
973 \r
974 .macro opRRb\r
975         opRR r0 r0 1\r
976 .endm\r
977 ;@---------------------------------------\r
978 \r
979 .macro opRRC reg1 reg2 shift\r
980         movs \reg1,\reg2,lsr#\shift\r
981         orrcs \reg1,\reg1,#0x00000080\r
982         sub r1,opcodes,#0x100\r
983         ldrb z80f,[r1,\reg1]\r
984         orrcs z80f,z80f,#1<<CFlag\r
985 .endm\r
986 \r
987 .macro opRRCA\r
988         opRRC z80a, z80a, 25\r
989         mov z80a,z80a,lsl#24\r
990         fetch 8\r
991 .endm\r
992 \r
993 .macro opRRCH reg\r
994         opRRC r0, \reg, 25\r
995         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
996         orr \reg,\reg,r0,lsl#24\r
997         fetch 8\r
998 .endm\r
999 \r
1000 .macro opRRCL reg\r
1001         and r0,\reg,#0x00FF0000                                 ;@mask low to r0\r
1002         opRRC r0, r0, 17\r
1003         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1004         orr \reg,\reg,r0,lsl#16\r
1005         fetch 8\r
1006 .endm\r
1007 \r
1008 .macro opRRCb\r
1009         opRRC r0, r0, 1\r
1010 .endm\r
1011 ;@---------------------------------------\r
1012 \r
1013 .macro opRST addr\r
1014         ldr r0,[cpucontext,#z80pc_base]\r
1015         sub r2,z80pc,r0\r
1016     opPUSHareg r2\r
1017         mov r0,#\addr\r
1018         rebasepc\r
1019         fetch 11\r
1020 .endm\r
1021 ;@---------------------------------------\r
1022 \r
1023 .macro opSBC\r
1024         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1025         movs z80f,z80f,lsr#2                                    ;@ get C\r
1026         subcc r0,r0,#0x100\r
1027         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of H\r
1028         sbcs z80a,z80a,r0,ror#8\r
1029         mrs r0,cpsr\r
1030         eor z80f,z80f,z80a,lsr#24\r
1031         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
1032         orr z80f,z80f,r0,lsr#28                                 ;@ S,Z,V&C\r
1033         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1034 .endm\r
1035 \r
1036 .macro opSBCA\r
1037         movs z80f,z80f,lsr#2                                    ;@ get C\r
1038         movcc z80a,#0x00000000\r
1039         movcs z80a,#0xFF000000\r
1040         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1041         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1042         fetch 4\r
1043 .endm\r
1044 \r
1045 .macro opSBCH reg\r
1046         mov r0,\reg,lsr#24\r
1047         opSBC\r
1048         fetch 4\r
1049 .endm\r
1050 \r
1051 .macro opSBCL reg\r
1052         mov r0,\reg,lsl#8\r
1053         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1054         movs z80f,z80f,lsr#2                                    ;@ get C\r
1055         sbccc r0,r0,#0xFF000000\r
1056         mov r1,z80a,lsl#4                                               ;@ prepare for check of H\r
1057         sbcs z80a,z80a,r0\r
1058         mrs z80f,cpsr\r
1059         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1060         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1061         cmp r1,r0,lsl#4\r
1062         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1063         fetch 4\r
1064 .endm\r
1065 \r
1066 .macro opSBCb\r
1067         opSBC\r
1068 .endm\r
1069 ;@---------------------------------------\r
1070 \r
1071 .macro opSBC16 reg\r
1072         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1073         movs z80f,z80f,lsr#2                                    ;@ get C\r
1074         sbc r1,r1,r1                                                    ;@ set r1 to -1 or 0.\r
1075         orr r0,\reg,r1,lsr#16\r
1076         mov r1,z80hl,lsl#4                                              ;@ prepare for check of H\r
1077         sbcs z80hl,z80hl,r0\r
1078         mrs z80f,cpsr\r
1079         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1080         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1081         cmp r1,r0,lsl#4\r
1082         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1083         fetch 15\r
1084 .endm\r
1085 \r
1086 .macro opSBC16HL\r
1087         movs z80f,z80f,lsr#2                                    ;@ get C\r
1088         mov z80hl,#0x00000000\r
1089         subcs z80hl,z80hl,#0x00010000\r
1090         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1091         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1092         fetch 15\r
1093 .endm\r
1094 ;@---------------------------------------\r
1095 \r
1096 .macro opSETmemHL bit\r
1097         mov r0,z80hl, lsr #16\r
1098 .if DRZ80_XMAP\r
1099         bl z80_xmap_read8\r
1100         orr r0,r0,#1<<\bit\r
1101         mov r1,z80hl, lsr #16\r
1102         bl z80_xmap_write8\r
1103 .else\r
1104         stmfd sp!,{r3,r12}\r
1105         mov lr,pc\r
1106         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
1107         orr r0,r0,#1<<\bit\r
1108         mov r1,z80hl, lsr #16\r
1109         mov lr,pc\r
1110         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1111         ldmfd sp!,{r3,r12}\r
1112 .endif\r
1113     fetch 15\r
1114 .endm\r
1115 ;@---------------------------------------\r
1116 \r
1117 .macro opSETmem bit\r
1118 .if DRZ80_XMAP\r
1119         stmfd sp!,{r0}  ;@ save addr as well\r
1120         bl z80_xmap_read8\r
1121         orr r0,r0,#1<<\bit\r
1122         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1123         bl z80_xmap_write8\r
1124 .else\r
1125         stmfd sp!,{r3,r12}\r
1126         stmfd sp!,{r0}  ;@ save addr as well\r
1127         mov lr,pc\r
1128         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
1129         orr r0,r0,#1<<\bit\r
1130         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1131         mov lr,pc\r
1132         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1133         ldmfd sp!,{r3,r12}\r
1134 .endif\r
1135         fetch 23\r
1136 .endm\r
1137 ;@---------------------------------------\r
1138 \r
1139 .macro opSLA reg1 reg2 shift\r
1140         movs \reg1,\reg2,lsl#\shift\r
1141         sub r1,opcodes,#0x100\r
1142         ldrb z80f,[r1,\reg1,lsr#24]\r
1143         orrcs z80f,z80f,#1<<CFlag\r
1144 .endm\r
1145 \r
1146 .macro opSLAA\r
1147         opSLA z80a, z80a, 1\r
1148         fetch 8\r
1149 .endm\r
1150 \r
1151 .macro opSLAH reg\r
1152         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1153         adds \reg,\reg,r0\r
1154         sub r1,opcodes,#0x100\r
1155         ldrb z80f,[r1,\reg,lsr#24]\r
1156         orrcs z80f,z80f,#1<<CFlag\r
1157         fetch 8\r
1158 .endm\r
1159 \r
1160 .macro opSLAL reg\r
1161         opSLA r0, \reg, 9\r
1162         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1163         orr \reg,\reg,r0,lsr#8\r
1164         fetch 8\r
1165 .endm\r
1166 \r
1167 .macro opSLAb\r
1168         opSLA r0, r0, 25\r
1169         mov r0,r0,lsr#24\r
1170 .endm\r
1171 ;@---------------------------------------\r
1172 \r
1173 .macro opSLL reg1 reg2 shift\r
1174         movs \reg1,\reg2,lsl#\shift\r
1175         orr \reg1,\reg1,#0x01000000\r
1176         sub r1,opcodes,#0x100\r
1177         ldrb z80f,[r1,\reg1,lsr#24]\r
1178         orrcs z80f,z80f,#1<<CFlag\r
1179 .endm\r
1180 \r
1181 .macro opSLLA\r
1182         opSLL z80a, z80a, 1\r
1183         fetch 8\r
1184 .endm\r
1185 \r
1186 .macro opSLLH reg\r
1187         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1188         adds \reg,\reg,r0\r
1189         orr \reg,\reg,#0x01000000\r
1190         sub r1,opcodes,#0x100\r
1191         ldrb z80f,[r1,\reg,lsr#24]\r
1192         orrcs z80f,z80f,#1<<CFlag\r
1193         fetch 8\r
1194 .endm\r
1195 \r
1196 .macro opSLLL reg\r
1197         opSLL r0, \reg, 9\r
1198         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1199         orr \reg,\reg,r0,lsr#8\r
1200         fetch 8\r
1201 .endm\r
1202 \r
1203 .macro opSLLb\r
1204         opSLL r0, r0, 25\r
1205         mov r0,r0,lsr#24\r
1206 .endm\r
1207 ;@---------------------------------------\r
1208 \r
1209 .macro opSRA reg1 reg2\r
1210         movs \reg1,\reg2,asr#25\r
1211         and \reg1,\reg1,#0xFF\r
1212         sub r1,opcodes,#0x100\r
1213         ldrb z80f,[r1,\reg1]\r
1214         orrcs z80f,z80f,#1<<CFlag\r
1215 .endm\r
1216 \r
1217 .macro opSRAA\r
1218         movs r0,z80a,asr#25\r
1219         mov z80a,r0,lsl#24\r
1220         sub r1,opcodes,#0x100\r
1221         ldrb z80f,[r1,z80a,lsr#24]\r
1222         orrcs z80f,z80f,#1<<CFlag\r
1223         fetch 8\r
1224 .endm\r
1225 \r
1226 .macro opSRAH reg\r
1227         movs r0,\reg,asr#25\r
1228         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1229         orr \reg,\reg,r0,lsl#24\r
1230         sub r1,opcodes,#0x100\r
1231         ldrb z80f,[r1,\reg,lsr#24]\r
1232         orrcs z80f,z80f,#1<<CFlag\r
1233         fetch 8\r
1234 .endm\r
1235 \r
1236 .macro opSRAL reg\r
1237         mov r0,\reg,lsl#8\r
1238         opSRA r0, r0\r
1239         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1240         orr \reg,\reg,r0,lsl#16\r
1241         fetch 8\r
1242 .endm\r
1243 \r
1244 .macro opSRAb\r
1245         mov r0,r0,lsl#24\r
1246         opSRA r0, r0\r
1247 .endm\r
1248 ;@---------------------------------------\r
1249 \r
1250 .macro opSRL reg1 reg2 shift\r
1251         movs \reg1,\reg2,lsr#\shift\r
1252         sub r1,opcodes,#0x100\r
1253         ldrb z80f,[r1,\reg1]\r
1254         orrcs z80f,z80f,#1<<CFlag\r
1255 .endm\r
1256 \r
1257 .macro opSRLA\r
1258         opSRL z80a, z80a, 25\r
1259         mov z80a,z80a,lsl#24\r
1260         fetch 8\r
1261 .endm\r
1262 \r
1263 .macro opSRLH reg\r
1264         opSRL r0, \reg, 25\r
1265         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1266         orr \reg,\reg,r0,lsl#24\r
1267         fetch 8\r
1268 .endm\r
1269 \r
1270 .macro opSRLL reg\r
1271         mov r0,\reg,lsl#8\r
1272         opSRL r0, r0, 25\r
1273         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1274         orr \reg,\reg,r0,lsl#16\r
1275         fetch 8\r
1276 .endm\r
1277 \r
1278 .macro opSRLb\r
1279         opSRL r0, r0, 1\r
1280 .endm\r
1281 ;@---------------------------------------\r
1282 \r
1283 .macro opSUB reg shift\r
1284         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
1285         subs z80a,z80a,\reg,lsl#\shift\r
1286         mrs z80f,cpsr\r
1287         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1288         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
1289         cmp r1,\reg,lsl#\shift+4\r
1290         orrcc z80f,z80f,#1<<HFlag\r
1291 .endm\r
1292 \r
1293 .macro opSUBA\r
1294         mov z80a,#0\r
1295         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
1296         fetch 4\r
1297 .endm\r
1298 \r
1299 .macro opSUBH reg\r
1300         and r0,\reg,#0xFF000000\r
1301         opSUB r0, 0\r
1302         fetch 4\r
1303 .endm\r
1304 \r
1305 .macro opSUBL reg\r
1306         opSUB \reg, 8\r
1307         fetch 4\r
1308 .endm\r
1309 \r
1310 .macro opSUBb\r
1311         opSUB r0, 24\r
1312 .endm\r
1313 ;@---------------------------------------\r
1314 \r
1315 .macro opXOR reg shift\r
1316         eor z80a,z80a,\reg,lsl#\shift\r
1317         sub r0,opcodes,#0x100\r
1318         ldrb z80f,[r0,z80a, lsr #24]\r
1319 .endm\r
1320 \r
1321 .macro opXORA\r
1322         mov z80a,#0\r
1323         mov z80f,#(1<<ZFlag)|(1<<VFlag)\r
1324         fetch 4\r
1325 .endm\r
1326 \r
1327 .macro opXORH reg\r
1328         and r0,\reg,#0xFF000000\r
1329         opXOR r0, 0\r
1330         fetch 4\r
1331 .endm\r
1332 \r
1333 .macro opXORL reg\r
1334         opXOR \reg, 8\r
1335         fetch 4\r
1336 .endm\r
1337 \r
1338 .macro opXORb\r
1339         opXOR r0, 24\r
1340 .endm\r
1341 ;@---------------------------------------\r
1342 \r
1343 \r
1344 ;@ --------------------------- Framework --------------------------\r
1345     \r
1346 .text\r
1347 \r
1348 DrZ80Run:\r
1349         ;@ r0 = pointer to cpu context\r
1350         ;@ r1 = ISTATES to execute  \r
1351         ;@#########################################   \r
1352         stmdb sp!,{r4-r12,lr}                                   ;@ save registers on stack\r
1353         mov cpucontext,r0                                               ;@ setup main memory pointer\r
1354         mov z80_icount,r1                                               ;@ setup number of Tstates to execute\r
1355 \r
1356 .if INTERRUPT_MODE == 0\r
1357         ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
1358 .endif\r
1359         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1360 \r
1361 .if INTERRUPT_MODE == 0\r
1362         ;@ check ints\r
1363         tst r0,#(Z80_NMI<<8)\r
1364         blne DoNMI\r
1365         tst r0,#0xff\r
1366         movne r0,r0,lsr #8\r
1367         tstne r0,#Z80_IF1\r
1368         blne DoInterrupt\r
1369 .endif\r
1370 \r
1371         ldr opcodes,MAIN_opcodes_POINTER2\r
1372 \r
1373         cmp z80_icount,#0     ;@ irq might have used all cycles\r
1374         ldrplb r0,[z80pc],#1\r
1375         ldrpl pc,[opcodes,r0, lsl #2]\r
1376 \r
1377 \r
1378 z80_execute_end:\r
1379         ;@ save registers in CPU context\r
1380         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1381         mov r0,z80_icount\r
1382         ldmia sp!,{r4-r12,pc}                                   ;@ restore registers from stack and return to C code\r
1383 \r
1384 MAIN_opcodes_POINTER2: .word MAIN_opcodes\r
1385 .if INTERRUPT_MODE\r
1386 Interrupt_local: .word Interrupt\r
1387 .endif\r
1388 \r
1389 DoInterrupt:\r
1390 .if INTERRUPT_MODE\r
1391         ;@ Don't do own int handler, call mames instead\r
1392 \r
1393         ;@ save everything back into DrZ80 context\r
1394         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1395         stmfd sp!,{r3,r4,r5,lr}                                 ;@ save rest of regs on stack\r
1396         mov lr,pc\r
1397         ldr pc,Interrupt_local\r
1398         ldmfd sp!,{r3,r4,r5,lr}                                 ;@ load regs from stack\r
1399         ;@ reload regs from DrZ80 context\r
1400         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1401         mov pc,lr ;@ return\r
1402 .else\r
1403 \r
1404         ;@ r0 == z80if\r
1405         stmfd sp!,{lr}\r
1406 \r
1407         tst r0,#4 ;@ check halt\r
1408         addne z80pc,z80pc,#1\r
1409 \r
1410         ldrb r1,[cpucontext,#z80im]\r
1411 \r
1412     ;@ clear halt and int flags\r
1413         eor r0,r0,r0\r
1414         strb r0,[cpucontext,#z80if]\r
1415 \r
1416         ;@ now check int mode\r
1417         cmp r1,#1\r
1418         beq DoInterrupt_mode1\r
1419         bgt DoInterrupt_mode2\r
1420 \r
1421 DoInterrupt_mode0:\r
1422         ;@ get 3 byte vector\r
1423         ldr r2,[cpucontext, #z80irqvector]\r
1424         and r1,r2,#0xFF0000\r
1425         cmp r1,#0xCD0000  ;@ call\r
1426         bne 1f\r
1427         ;@ ########\r
1428         ;@ # call\r
1429         ;@ ########\r
1430         ;@ save current pc on stack\r
1431         ldr r0,[cpucontext,#z80pc_base]\r
1432         sub r0,z80pc,r0\r
1433 .if FAST_Z80SP\r
1434         mov r1,r0, lsr #8\r
1435         strb r1,[z80sp,#-1]!\r
1436         strb r0,[z80sp,#-1]!\r
1437 .else\r
1438         sub z80sp,z80sp,#2\r
1439         mov r1,z80sp\r
1440         writemem16\r
1441         ldr r2,[cpucontext, #z80irqvector]\r
1442 .endif\r
1443         ;@ jump to vector\r
1444         mov r2,r2,lsl#16\r
1445         mov r0,r2,lsr#16\r
1446         ;@ rebase new pc\r
1447         rebasepc\r
1448 \r
1449         eatcycles 13\r
1450         b DoInterrupt_end\r
1451 \r
1452 1:\r
1453         cmp r1,#0xC30000  ;@ jump\r
1454         bne DoInterrupt_mode1    ;@ rst\r
1455         ;@ #######\r
1456         ;@ # jump\r
1457         ;@ #######\r
1458         ;@ jump to vector\r
1459         mov r2,r2,lsl#16\r
1460         mov r0,r2,lsr#16\r
1461         ;@ rebase new pc\r
1462         rebasepc\r
1463 \r
1464         eatcycles 13\r
1465         b DoInterrupt_end\r
1466 \r
1467 DoInterrupt_mode1:\r
1468         ldr r0,[cpucontext,#z80pc_base]\r
1469         sub r2,z80pc,r0\r
1470     opPUSHareg r2\r
1471         mov r0,#0x38\r
1472         rebasepc\r
1473 \r
1474         eatcycles 13\r
1475         b DoInterrupt_end\r
1476 \r
1477 DoInterrupt_mode2:\r
1478         ;@ push pc on stack\r
1479         ldr r0,[cpucontext,#z80pc_base]\r
1480         sub r2,z80pc,r0\r
1481     opPUSHareg r2\r
1482 \r
1483         ;@ get 1 byte vector address\r
1484         ldrb r0,[cpucontext, #z80irqvector]\r
1485         ldr r1,[cpucontext, #z80i]\r
1486         orr r0,r0,r1,lsr#16\r
1487 \r
1488         ;@ read new pc from vector address\r
1489 .if UPDATE_CONTEXT\r
1490      str z80pc,[cpucontext,#z80pc_pointer]\r
1491 .endif\r
1492 .if DRZ80_XMAP\r
1493     bl z80_xmap_read16\r
1494     rebasepc\r
1495 .else\r
1496         stmfd sp!,{r3,r12}\r
1497         mov lr,pc\r
1498         ldr pc,[cpucontext,#z80_read16]\r
1499 \r
1500         ;@ rebase new pc\r
1501         mov lr,pc\r
1502         ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
1503         ldmfd sp!,{r3,r12}\r
1504         mov z80pc,r0    \r
1505 .endif\r
1506         eatcycles 17\r
1507 \r
1508 DoInterrupt_end:\r
1509         ;@ interupt accepted so callback irq interface\r
1510         ldr r0,[cpucontext, #z80irqcallback]\r
1511         tst r0,r0\r
1512         streqb r0,[cpucontext,#z80irq]       ;@ default handling\r
1513         ldmeqfd sp!,{pc}\r
1514         stmfd sp!,{r3,r12}\r
1515         mov lr,pc\r
1516         mov pc,r0    ;@ call callback function\r
1517         ldmfd sp!,{r3,r12}\r
1518         ldmfd sp!,{pc} ;@ return\r
1519 .endif\r
1520 \r
1521 DoNMI:\r
1522         stmfd sp!,{lr}\r
1523 \r
1524         bic r0,r0,#((Z80_NMI|Z80_HALT|Z80_IF1)<<8)\r
1525         strh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
1526 \r
1527         ;@ push pc on stack\r
1528         ldr r0,[cpucontext,#z80pc_base]\r
1529         sub r2,z80pc,r0\r
1530         opPUSHareg r2\r
1531 \r
1532         ;@ read new pc from vector address\r
1533 .if UPDATE_CONTEXT\r
1534         str z80pc,[cpucontext,#z80pc_pointer]\r
1535 .endif\r
1536         mov r0,#0x66\r
1537 .if DRZ80_XMAP\r
1538         rebasepc\r
1539 .else\r
1540         stmfd sp!,{r3,r12}\r
1541         mov lr,pc\r
1542         ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
1543         ldmfd sp!,{r3,r12}\r
1544         mov z80pc,r0    \r
1545 .endif\r
1546         ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
1547         eatcycles 11\r
1548         ldmfd sp!,{pc}\r
1549 \r
1550 \r
1551 .data\r
1552 .align 4\r
1553 \r
1554 DAATable: .hword  (0x00<<8)|(1<<ZFlag)|(1<<VFlag)\r
1555          .hword  (0x01<<8)                  \r
1556          .hword  (0x02<<8)                  \r
1557          .hword  (0x03<<8)               |(1<<VFlag)\r
1558          .hword  (0x04<<8)                  \r
1559          .hword  (0x05<<8)               |(1<<VFlag)\r
1560          .hword  (0x06<<8)               |(1<<VFlag)\r
1561          .hword  (0x07<<8)                  \r
1562          .hword  (0x08<<8)               \r
1563          .hword  (0x09<<8)            |(1<<VFlag)\r
1564          .hword  (0x10<<8)         |(1<<HFlag)      \r
1565          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1566          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1567          .hword  (0x13<<8)         |(1<<HFlag)      \r
1568          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1569          .hword  (0x15<<8)         |(1<<HFlag)      \r
1570          .hword  (0x10<<8)                  \r
1571          .hword  (0x11<<8)               |(1<<VFlag)\r
1572          .hword  (0x12<<8)               |(1<<VFlag)\r
1573          .hword  (0x13<<8)                  \r
1574          .hword  (0x14<<8)               |(1<<VFlag)\r
1575          .hword  (0x15<<8)                  \r
1576          .hword  (0x16<<8)                  \r
1577          .hword  (0x17<<8)               |(1<<VFlag)\r
1578          .hword  (0x18<<8)            |(1<<VFlag)\r
1579          .hword  (0x19<<8)               \r
1580          .hword  (0x20<<8)      |(1<<HFlag)      \r
1581          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1582          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1583          .hword  (0x23<<8)      |(1<<HFlag)      \r
1584          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1585          .hword  (0x25<<8)      |(1<<HFlag)      \r
1586          .hword  (0x20<<8)               \r
1587          .hword  (0x21<<8)            |(1<<VFlag)\r
1588          .hword  (0x22<<8)            |(1<<VFlag)\r
1589          .hword  (0x23<<8)               \r
1590          .hword  (0x24<<8)            |(1<<VFlag)\r
1591          .hword  (0x25<<8)               \r
1592          .hword  (0x26<<8)               \r
1593          .hword  (0x27<<8)            |(1<<VFlag)\r
1594          .hword  (0x28<<8)         |(1<<VFlag)\r
1595          .hword  (0x29<<8)            \r
1596          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1597          .hword  (0x31<<8)      |(1<<HFlag)      \r
1598          .hword  (0x32<<8)      |(1<<HFlag)      \r
1599          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1600          .hword  (0x34<<8)      |(1<<HFlag)      \r
1601          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1602          .hword  (0x30<<8)            |(1<<VFlag)\r
1603          .hword  (0x31<<8)               \r
1604          .hword  (0x32<<8)               \r
1605          .hword  (0x33<<8)            |(1<<VFlag)\r
1606          .hword  (0x34<<8)               \r
1607          .hword  (0x35<<8)            |(1<<VFlag)\r
1608          .hword  (0x36<<8)            |(1<<VFlag)\r
1609          .hword  (0x37<<8)               \r
1610          .hword  (0x38<<8)            \r
1611          .hword  (0x39<<8)         |(1<<VFlag)\r
1612          .hword  (0x40<<8)         |(1<<HFlag)      \r
1613          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1614          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1615          .hword  (0x43<<8)         |(1<<HFlag)      \r
1616          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1617          .hword  (0x45<<8)         |(1<<HFlag)      \r
1618          .hword  (0x40<<8)                  \r
1619          .hword  (0x41<<8)               |(1<<VFlag)\r
1620          .hword  (0x42<<8)               |(1<<VFlag)\r
1621          .hword  (0x43<<8)                  \r
1622          .hword  (0x44<<8)               |(1<<VFlag)\r
1623          .hword  (0x45<<8)                  \r
1624          .hword  (0x46<<8)                  \r
1625          .hword  (0x47<<8)               |(1<<VFlag)\r
1626          .hword  (0x48<<8)            |(1<<VFlag)\r
1627          .hword  (0x49<<8)               \r
1628          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1629          .hword  (0x51<<8)         |(1<<HFlag)      \r
1630          .hword  (0x52<<8)         |(1<<HFlag)      \r
1631          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1632          .hword  (0x54<<8)         |(1<<HFlag)      \r
1633          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1634          .hword  (0x50<<8)               |(1<<VFlag)\r
1635          .hword  (0x51<<8)                  \r
1636          .hword  (0x52<<8)                  \r
1637          .hword  (0x53<<8)               |(1<<VFlag)\r
1638          .hword  (0x54<<8)                  \r
1639          .hword  (0x55<<8)               |(1<<VFlag)\r
1640          .hword  (0x56<<8)               |(1<<VFlag)\r
1641          .hword  (0x57<<8)                  \r
1642          .hword  (0x58<<8)               \r
1643          .hword  (0x59<<8)            |(1<<VFlag)\r
1644          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1645          .hword  (0x61<<8)      |(1<<HFlag)      \r
1646          .hword  (0x62<<8)      |(1<<HFlag)      \r
1647          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1648          .hword  (0x64<<8)      |(1<<HFlag)      \r
1649          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1650          .hword  (0x60<<8)            |(1<<VFlag)\r
1651          .hword  (0x61<<8)               \r
1652          .hword  (0x62<<8)               \r
1653          .hword  (0x63<<8)            |(1<<VFlag)\r
1654          .hword  (0x64<<8)               \r
1655          .hword  (0x65<<8)            |(1<<VFlag)\r
1656          .hword  (0x66<<8)            |(1<<VFlag)\r
1657          .hword  (0x67<<8)               \r
1658          .hword  (0x68<<8)            \r
1659          .hword  (0x69<<8)         |(1<<VFlag)\r
1660          .hword  (0x70<<8)      |(1<<HFlag)      \r
1661          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1662          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1663          .hword  (0x73<<8)      |(1<<HFlag)      \r
1664          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1665          .hword  (0x75<<8)      |(1<<HFlag)      \r
1666          .hword  (0x70<<8)               \r
1667          .hword  (0x71<<8)            |(1<<VFlag)\r
1668          .hword  (0x72<<8)            |(1<<VFlag)\r
1669          .hword  (0x73<<8)               \r
1670          .hword  (0x74<<8)            |(1<<VFlag)\r
1671          .hword  (0x75<<8)               \r
1672          .hword  (0x76<<8)               \r
1673          .hword  (0x77<<8)            |(1<<VFlag)\r
1674          .hword  (0x78<<8)         |(1<<VFlag)\r
1675          .hword  (0x79<<8)            \r
1676          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1677          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1678          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1679          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1680          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1681          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1682          .hword  (0x80<<8)|(1<<SFlag)               \r
1683          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)\r
1684          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)\r
1685          .hword  (0x83<<8)|(1<<SFlag)               \r
1686          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)\r
1687          .hword  (0x85<<8)|(1<<SFlag)               \r
1688          .hword  (0x86<<8)|(1<<SFlag)               \r
1689          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
1690          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
1691          .hword  (0x89<<8)|(1<<SFlag)            \r
1692          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1693          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1694          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1695          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1696          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1697          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1698          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)\r
1699          .hword  (0x91<<8)|(1<<SFlag)               \r
1700          .hword  (0x92<<8)|(1<<SFlag)               \r
1701          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)\r
1702          .hword  (0x94<<8)|(1<<SFlag)               \r
1703          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)\r
1704          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
1705          .hword  (0x97<<8)|(1<<SFlag)               \r
1706          .hword  (0x98<<8)|(1<<SFlag)            \r
1707          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
1708          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1709          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1710          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1711          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1712          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1713          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1714          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1715          .hword  (0x01<<8)                     |(1<<CFlag)\r
1716          .hword  (0x02<<8)                     |(1<<CFlag)\r
1717          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1718          .hword  (0x04<<8)                     |(1<<CFlag)\r
1719          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1720          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1721          .hword  (0x07<<8)                     |(1<<CFlag)\r
1722          .hword  (0x08<<8)                  |(1<<CFlag)\r
1723          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1724          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1725          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1726          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1727          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1728          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1729          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1730          .hword  (0x10<<8)                     |(1<<CFlag)\r
1731          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1732          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1733          .hword  (0x13<<8)                     |(1<<CFlag)\r
1734          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1735          .hword  (0x15<<8)                     |(1<<CFlag)\r
1736          .hword  (0x16<<8)                     |(1<<CFlag)\r
1737          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1738          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1739          .hword  (0x19<<8)                  |(1<<CFlag)\r
1740          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1741          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1742          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1743          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1744          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1745          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1746          .hword  (0x20<<8)                  |(1<<CFlag)\r
1747          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1748          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1749          .hword  (0x23<<8)                  |(1<<CFlag)\r
1750          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1751          .hword  (0x25<<8)                  |(1<<CFlag)\r
1752          .hword  (0x26<<8)                  |(1<<CFlag)\r
1753          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1754          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1755          .hword  (0x29<<8)               |(1<<CFlag)\r
1756          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1757          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1758          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1759          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1760          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1761          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1762          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1763          .hword  (0x31<<8)                  |(1<<CFlag)\r
1764          .hword  (0x32<<8)                  |(1<<CFlag)\r
1765          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1766          .hword  (0x34<<8)                  |(1<<CFlag)\r
1767          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1768          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1769          .hword  (0x37<<8)                  |(1<<CFlag)\r
1770          .hword  (0x38<<8)               |(1<<CFlag)\r
1771          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1772          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1773          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1774          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1775          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1776          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1777          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1778          .hword  (0x40<<8)                     |(1<<CFlag)\r
1779          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1780          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1781          .hword  (0x43<<8)                     |(1<<CFlag)\r
1782          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1783          .hword  (0x45<<8)                     |(1<<CFlag)\r
1784          .hword  (0x46<<8)                     |(1<<CFlag)\r
1785          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1786          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1787          .hword  (0x49<<8)                  |(1<<CFlag)\r
1788          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1789          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1790          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1791          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1792          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1793          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1794          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1795          .hword  (0x51<<8)                     |(1<<CFlag)\r
1796          .hword  (0x52<<8)                     |(1<<CFlag)\r
1797          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1798          .hword  (0x54<<8)                     |(1<<CFlag)\r
1799          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1800          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1801          .hword  (0x57<<8)                     |(1<<CFlag)\r
1802          .hword  (0x58<<8)                  |(1<<CFlag)\r
1803          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1804          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1805          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1806          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1807          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1808          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1809          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1810          .hword  (0x60<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1811          .hword  (0x61<<8)                  |(1<<CFlag)\r
1812          .hword  (0x62<<8)                  |(1<<CFlag)\r
1813          .hword  (0x63<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1814          .hword  (0x64<<8)                  |(1<<CFlag)\r
1815          .hword  (0x65<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1816          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1817          .hword  (0x67<<8)                  |(1<<CFlag)\r
1818          .hword  (0x68<<8)               |(1<<CFlag)\r
1819          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1820          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1821          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1822          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1823          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1824          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1825          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1826          .hword  (0x70<<8)                  |(1<<CFlag)\r
1827          .hword  (0x71<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1828          .hword  (0x72<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1829          .hword  (0x73<<8)                  |(1<<CFlag)\r
1830          .hword  (0x74<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1831          .hword  (0x75<<8)                  |(1<<CFlag)\r
1832          .hword  (0x76<<8)                  |(1<<CFlag)\r
1833          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1834          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1835          .hword  (0x79<<8)               |(1<<CFlag)\r
1836          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1837          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1838          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1839          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1840          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1841          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1842          .hword  (0x80<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1843          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1844          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1845          .hword  (0x83<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1846          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1847          .hword  (0x85<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1848          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1849          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1850          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1851          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
1852          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1853          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1854          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1855          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1856          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1857          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1858          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1859          .hword  (0x91<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1860          .hword  (0x92<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1861          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1862          .hword  (0x94<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1863          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1864          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1865          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1866          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
1867          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1868          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1869          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1870          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1871          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1872          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1873          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1874          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1875          .hword  (0xA1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1876          .hword  (0xA2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1877          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1878          .hword  (0xA4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1879          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1880          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1881          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1882          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1883          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1884          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1885          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1886          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1887          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1888          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1889          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1890          .hword  (0xB0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1891          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1892          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1893          .hword  (0xB3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1894          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1895          .hword  (0xB5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1896          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1897          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1898          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1899          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1900          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1901          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1902          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1903          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1904          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1905          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1906          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1907          .hword  (0xC1<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1908          .hword  (0xC2<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1909          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1910          .hword  (0xC4<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1911          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1912          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1913          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1914          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
1915          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1916          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1917          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1918          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1919          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1920          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1921          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1922          .hword  (0xD0<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1923          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1924          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1925          .hword  (0xD3<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1926          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1927          .hword  (0xD5<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1928          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1929          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1930          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1931          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
1932          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1933          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1934          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1935          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1936          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1937          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1938          .hword  (0xE0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1939          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1940          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1941          .hword  (0xE3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1942          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1943          .hword  (0xE5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1944          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1945          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1946          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1947          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1948          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1949          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1950          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1951          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1952          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1953          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1954          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1955          .hword  (0xF1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1956          .hword  (0xF2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1957          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1958          .hword  (0xF4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1959          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1960          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1961          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1962          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1963          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1964          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1965          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1966          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1967          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1968          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1969          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1970          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1971          .hword  (0x01<<8)                     |(1<<CFlag)\r
1972          .hword  (0x02<<8)                     |(1<<CFlag)\r
1973          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1974          .hword  (0x04<<8)                     |(1<<CFlag)\r
1975          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1976          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1977          .hword  (0x07<<8)                     |(1<<CFlag)\r
1978          .hword  (0x08<<8)                  |(1<<CFlag)\r
1979          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1980          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1981          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1982          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1983          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1984          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1985          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1986          .hword  (0x10<<8)                     |(1<<CFlag)\r
1987          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1988          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1989          .hword  (0x13<<8)                     |(1<<CFlag)\r
1990          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1991          .hword  (0x15<<8)                     |(1<<CFlag)\r
1992          .hword  (0x16<<8)                     |(1<<CFlag)\r
1993          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1994          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1995          .hword  (0x19<<8)                  |(1<<CFlag)\r
1996          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1997          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1998          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1999          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2000          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2001          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2002          .hword  (0x20<<8)                  |(1<<CFlag)\r
2003          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2004          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2005          .hword  (0x23<<8)                  |(1<<CFlag)\r
2006          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2007          .hword  (0x25<<8)                  |(1<<CFlag)\r
2008          .hword  (0x26<<8)                  |(1<<CFlag)\r
2009          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2010          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2011          .hword  (0x29<<8)               |(1<<CFlag)\r
2012          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2013          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2014          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2015          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2016          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2017          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2018          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2019          .hword  (0x31<<8)                  |(1<<CFlag)\r
2020          .hword  (0x32<<8)                  |(1<<CFlag)\r
2021          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2022          .hword  (0x34<<8)                  |(1<<CFlag)\r
2023          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2024          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2025          .hword  (0x37<<8)                  |(1<<CFlag)\r
2026          .hword  (0x38<<8)               |(1<<CFlag)\r
2027          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2028          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2029          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2030          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2031          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2032          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2033          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2034          .hword  (0x40<<8)                     |(1<<CFlag)\r
2035          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2036          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2037          .hword  (0x43<<8)                     |(1<<CFlag)\r
2038          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2039          .hword  (0x45<<8)                     |(1<<CFlag)\r
2040          .hword  (0x46<<8)                     |(1<<CFlag)\r
2041          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2042          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2043          .hword  (0x49<<8)                  |(1<<CFlag)\r
2044          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2045          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2046          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2047          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2048          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2049          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2050          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2051          .hword  (0x51<<8)                     |(1<<CFlag)\r
2052          .hword  (0x52<<8)                     |(1<<CFlag)\r
2053          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2054          .hword  (0x54<<8)                     |(1<<CFlag)\r
2055          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2056          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2057          .hword  (0x57<<8)                     |(1<<CFlag)\r
2058          .hword  (0x58<<8)                  |(1<<CFlag)\r
2059          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2060          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2061          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2062          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2063          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2064          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2065          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2066          .hword  (0x06<<8)               |(1<<VFlag)\r
2067          .hword  (0x07<<8)                  \r
2068          .hword  (0x08<<8)               \r
2069          .hword  (0x09<<8)            |(1<<VFlag)\r
2070          .hword  (0x0A<<8)            |(1<<VFlag)\r
2071          .hword  (0x0B<<8)               \r
2072          .hword  (0x0C<<8)            |(1<<VFlag)\r
2073          .hword  (0x0D<<8)               \r
2074          .hword  (0x0E<<8)               \r
2075          .hword  (0x0F<<8)            |(1<<VFlag)\r
2076          .hword  (0x10<<8)         |(1<<HFlag)      \r
2077          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2078          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2079          .hword  (0x13<<8)         |(1<<HFlag)      \r
2080          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2081          .hword  (0x15<<8)         |(1<<HFlag)      \r
2082          .hword  (0x16<<8)                  \r
2083          .hword  (0x17<<8)               |(1<<VFlag)\r
2084          .hword  (0x18<<8)            |(1<<VFlag)\r
2085          .hword  (0x19<<8)               \r
2086          .hword  (0x1A<<8)               \r
2087          .hword  (0x1B<<8)            |(1<<VFlag)\r
2088          .hword  (0x1C<<8)               \r
2089          .hword  (0x1D<<8)            |(1<<VFlag)\r
2090          .hword  (0x1E<<8)            |(1<<VFlag)\r
2091          .hword  (0x1F<<8)               \r
2092          .hword  (0x20<<8)      |(1<<HFlag)      \r
2093          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2094          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2095          .hword  (0x23<<8)      |(1<<HFlag)      \r
2096          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2097          .hword  (0x25<<8)      |(1<<HFlag)      \r
2098          .hword  (0x26<<8)               \r
2099          .hword  (0x27<<8)            |(1<<VFlag)\r
2100          .hword  (0x28<<8)         |(1<<VFlag)\r
2101          .hword  (0x29<<8)            \r
2102          .hword  (0x2A<<8)            \r
2103          .hword  (0x2B<<8)         |(1<<VFlag)\r
2104          .hword  (0x2C<<8)            \r
2105          .hword  (0x2D<<8)         |(1<<VFlag)\r
2106          .hword  (0x2E<<8)         |(1<<VFlag)\r
2107          .hword  (0x2F<<8)            \r
2108          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2109          .hword  (0x31<<8)      |(1<<HFlag)      \r
2110          .hword  (0x32<<8)      |(1<<HFlag)      \r
2111          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2112          .hword  (0x34<<8)      |(1<<HFlag)      \r
2113          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2114          .hword  (0x36<<8)            |(1<<VFlag)\r
2115          .hword  (0x37<<8)               \r
2116          .hword  (0x38<<8)            \r
2117          .hword  (0x39<<8)         |(1<<VFlag)\r
2118          .hword  (0x3A<<8)         |(1<<VFlag)\r
2119          .hword  (0x3B<<8)            \r
2120          .hword  (0x3C<<8)         |(1<<VFlag)\r
2121          .hword  (0x3D<<8)            \r
2122          .hword  (0x3E<<8)            \r
2123          .hword  (0x3F<<8)         |(1<<VFlag)\r
2124          .hword  (0x40<<8)         |(1<<HFlag)      \r
2125          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2126          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2127          .hword  (0x43<<8)         |(1<<HFlag)      \r
2128          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2129          .hword  (0x45<<8)         |(1<<HFlag)      \r
2130          .hword  (0x46<<8)                  \r
2131          .hword  (0x47<<8)               |(1<<VFlag)\r
2132          .hword  (0x48<<8)            |(1<<VFlag)\r
2133          .hword  (0x49<<8)               \r
2134          .hword  (0x4A<<8)               \r
2135          .hword  (0x4B<<8)            |(1<<VFlag)\r
2136          .hword  (0x4C<<8)               \r
2137          .hword  (0x4D<<8)            |(1<<VFlag)\r
2138          .hword  (0x4E<<8)            |(1<<VFlag)\r
2139          .hword  (0x4F<<8)               \r
2140          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2141          .hword  (0x51<<8)         |(1<<HFlag)      \r
2142          .hword  (0x52<<8)         |(1<<HFlag)      \r
2143          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2144          .hword  (0x54<<8)         |(1<<HFlag)      \r
2145          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2146          .hword  (0x56<<8)               |(1<<VFlag)\r
2147          .hword  (0x57<<8)                  \r
2148          .hword  (0x58<<8)               \r
2149          .hword  (0x59<<8)            |(1<<VFlag)\r
2150          .hword  (0x5A<<8)            |(1<<VFlag)\r
2151          .hword  (0x5B<<8)               \r
2152          .hword  (0x5C<<8)            |(1<<VFlag)\r
2153          .hword  (0x5D<<8)               \r
2154          .hword  (0x5E<<8)               \r
2155          .hword  (0x5F<<8)            |(1<<VFlag)\r
2156          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2157          .hword  (0x61<<8)      |(1<<HFlag)      \r
2158          .hword  (0x62<<8)      |(1<<HFlag)      \r
2159          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2160          .hword  (0x64<<8)      |(1<<HFlag)      \r
2161          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2162          .hword  (0x66<<8)            |(1<<VFlag)\r
2163          .hword  (0x67<<8)               \r
2164          .hword  (0x68<<8)            \r
2165          .hword  (0x69<<8)         |(1<<VFlag)\r
2166          .hword  (0x6A<<8)         |(1<<VFlag)\r
2167          .hword  (0x6B<<8)            \r
2168          .hword  (0x6C<<8)         |(1<<VFlag)\r
2169          .hword  (0x6D<<8)            \r
2170          .hword  (0x6E<<8)            \r
2171          .hword  (0x6F<<8)         |(1<<VFlag)\r
2172          .hword  (0x70<<8)      |(1<<HFlag)      \r
2173          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2174          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2175          .hword  (0x73<<8)      |(1<<HFlag)      \r
2176          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2177          .hword  (0x75<<8)      |(1<<HFlag)      \r
2178          .hword  (0x76<<8)               \r
2179          .hword  (0x77<<8)            |(1<<VFlag)\r
2180          .hword  (0x78<<8)         |(1<<VFlag)\r
2181          .hword  (0x79<<8)            \r
2182          .hword  (0x7A<<8)            \r
2183          .hword  (0x7B<<8)         |(1<<VFlag)\r
2184          .hword  (0x7C<<8)            \r
2185          .hword  (0x7D<<8)         |(1<<VFlag)\r
2186          .hword  (0x7E<<8)         |(1<<VFlag)\r
2187          .hword  (0x7F<<8)            \r
2188          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2189          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2190          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2191          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2192          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2193          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2194          .hword  (0x86<<8)|(1<<SFlag)               \r
2195          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
2196          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
2197          .hword  (0x89<<8)|(1<<SFlag)            \r
2198          .hword  (0x8A<<8)|(1<<SFlag)            \r
2199          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)\r
2200          .hword  (0x8C<<8)|(1<<SFlag)            \r
2201          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)\r
2202          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)\r
2203          .hword  (0x8F<<8)|(1<<SFlag)            \r
2204          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2205          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2206          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2207          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2208          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2209          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2210          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
2211          .hword  (0x97<<8)|(1<<SFlag)               \r
2212          .hword  (0x98<<8)|(1<<SFlag)            \r
2213          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
2214          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)\r
2215          .hword  (0x9B<<8)|(1<<SFlag)            \r
2216          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)\r
2217          .hword  (0x9D<<8)|(1<<SFlag)            \r
2218          .hword  (0x9E<<8)|(1<<SFlag)            \r
2219          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)\r
2220          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2221          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2222          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2223          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2224          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2225          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2226          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2227          .hword  (0x07<<8)                     |(1<<CFlag)\r
2228          .hword  (0x08<<8)                  |(1<<CFlag)\r
2229          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2230          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2231          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2232          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2233          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2234          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2235          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2236          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2237          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2238          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2239          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2240          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2241          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2242          .hword  (0x16<<8)                     |(1<<CFlag)\r
2243          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2244          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2245          .hword  (0x19<<8)                  |(1<<CFlag)\r
2246          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2247          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2248          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2249          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2250          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2251          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2252          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2253          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2254          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2255          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2256          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2257          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2258          .hword  (0x26<<8)                  |(1<<CFlag)\r
2259          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2260          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2261          .hword  (0x29<<8)               |(1<<CFlag)\r
2262          .hword  (0x2A<<8)               |(1<<CFlag)\r
2263          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2264          .hword  (0x2C<<8)               |(1<<CFlag)\r
2265          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2266          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2267          .hword  (0x2F<<8)               |(1<<CFlag)\r
2268          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2269          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2270          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2271          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2272          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2273          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2274          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2275          .hword  (0x37<<8)                  |(1<<CFlag)\r
2276          .hword  (0x38<<8)               |(1<<CFlag)\r
2277          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2278          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2279          .hword  (0x3B<<8)               |(1<<CFlag)\r
2280          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2281          .hword  (0x3D<<8)               |(1<<CFlag)\r
2282          .hword  (0x3E<<8)               |(1<<CFlag)\r
2283          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2284          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2285          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2286          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2287          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2288          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2289          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2290          .hword  (0x46<<8)                     |(1<<CFlag)\r
2291          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2292          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2293          .hword  (0x49<<8)                  |(1<<CFlag)\r
2294          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2295          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2296          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2297          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2298          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2299          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2300          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2301          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2302          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2303          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2304          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2305          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2306          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2307          .hword  (0x57<<8)                     |(1<<CFlag)\r
2308          .hword  (0x58<<8)                  |(1<<CFlag)\r
2309          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2310          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2311          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2312          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2313          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2314          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2315          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2316          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2317          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2318          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2319          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2320          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2321          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2322          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2323          .hword  (0x67<<8)                  |(1<<CFlag)\r
2324          .hword  (0x68<<8)               |(1<<CFlag)\r
2325          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2326          .hword  (0x6A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2327          .hword  (0x6B<<8)               |(1<<CFlag)\r
2328          .hword  (0x6C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2329          .hword  (0x6D<<8)               |(1<<CFlag)\r
2330          .hword  (0x6E<<8)               |(1<<CFlag)\r
2331          .hword  (0x6F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2332          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2333          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2334          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2335          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2336          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2337          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2338          .hword  (0x76<<8)                  |(1<<CFlag)\r
2339          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2340          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2341          .hword  (0x79<<8)               |(1<<CFlag)\r
2342          .hword  (0x7A<<8)               |(1<<CFlag)\r
2343          .hword  (0x7B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2344          .hword  (0x7C<<8)               |(1<<CFlag)\r
2345          .hword  (0x7D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2346          .hword  (0x7E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2347          .hword  (0x7F<<8)               |(1<<CFlag)\r
2348          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2349          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2350          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2351          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2352          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2353          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2354          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2355          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2356          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2357          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
2358          .hword  (0x8A<<8)|(1<<SFlag)               |(1<<CFlag)\r
2359          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2360          .hword  (0x8C<<8)|(1<<SFlag)               |(1<<CFlag)\r
2361          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2362          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2363          .hword  (0x8F<<8)|(1<<SFlag)               |(1<<CFlag)\r
2364          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2365          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2366          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2367          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2368          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2369          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2370          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2371          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2372          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
2373          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2374          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2375          .hword  (0x9B<<8)|(1<<SFlag)               |(1<<CFlag)\r
2376          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2377          .hword  (0x9D<<8)|(1<<SFlag)               |(1<<CFlag)\r
2378          .hword  (0x9E<<8)|(1<<SFlag)               |(1<<CFlag)\r
2379          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2380          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2381          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2382          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2383          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2384          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2385          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2386          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2387          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2388          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2389          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2390          .hword  (0xAA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2391          .hword  (0xAB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2392          .hword  (0xAC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2393          .hword  (0xAD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2394          .hword  (0xAE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2395          .hword  (0xAF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2396          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2397          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2398          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2399          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2400          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2401          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2402          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2403          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2404          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2405          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2406          .hword  (0xBA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2407          .hword  (0xBB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2408          .hword  (0xBC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2409          .hword  (0xBD<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2410          .hword  (0xBE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2411          .hword  (0xBF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2412          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2413          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2414          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2415          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2416          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2417          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2418          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2419          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2420          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
2421          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2422          .hword  (0xCA<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2423          .hword  (0xCB<<8)|(1<<SFlag)               |(1<<CFlag)\r
2424          .hword  (0xCC<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2425          .hword  (0xCD<<8)|(1<<SFlag)               |(1<<CFlag)\r
2426          .hword  (0xCE<<8)|(1<<SFlag)               |(1<<CFlag)\r
2427          .hword  (0xCF<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2428          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2429          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2430          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2431          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2432          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2433          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2434          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2435          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2436          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2437          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
2438          .hword  (0xDA<<8)|(1<<SFlag)               |(1<<CFlag)\r
2439          .hword  (0xDB<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2440          .hword  (0xDC<<8)|(1<<SFlag)               |(1<<CFlag)\r
2441          .hword  (0xDD<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2442          .hword  (0xDE<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2443          .hword  (0xDF<<8)|(1<<SFlag)               |(1<<CFlag)\r
2444          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2445          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2446          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2447          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2448          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2449          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2450          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2451          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2452          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2453          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2454          .hword  (0xEA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2455          .hword  (0xEB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2456          .hword  (0xEC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2457          .hword  (0xED<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2458          .hword  (0xEE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2459          .hword  (0xEF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2460          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2461          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2462          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2463          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2464          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2465          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2466          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2467          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2468          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2469          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2470          .hword  (0xFA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2471          .hword  (0xFB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2472          .hword  (0xFC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2473          .hword  (0xFD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2474          .hword  (0xFE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2475          .hword  (0xFF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2476          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2477          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2478          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2479          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2480          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2481          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2482          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2483          .hword  (0x07<<8)                     |(1<<CFlag)\r
2484          .hword  (0x08<<8)                  |(1<<CFlag)\r
2485          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2486          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2487          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2488          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2489          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2490          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2491          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2492          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2493          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2494          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2495          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2496          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2497          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2498          .hword  (0x16<<8)                     |(1<<CFlag)\r
2499          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2500          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2501          .hword  (0x19<<8)                  |(1<<CFlag)\r
2502          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2503          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2504          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2505          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2506          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2507          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2508          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2509          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2510          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2511          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2512          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2513          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2514          .hword  (0x26<<8)                  |(1<<CFlag)\r
2515          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2516          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2517          .hword  (0x29<<8)               |(1<<CFlag)\r
2518          .hword  (0x2A<<8)               |(1<<CFlag)\r
2519          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2520          .hword  (0x2C<<8)               |(1<<CFlag)\r
2521          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2522          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2523          .hword  (0x2F<<8)               |(1<<CFlag)\r
2524          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2525          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2526          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2527          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2528          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2529          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2530          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2531          .hword  (0x37<<8)                  |(1<<CFlag)\r
2532          .hword  (0x38<<8)               |(1<<CFlag)\r
2533          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2534          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2535          .hword  (0x3B<<8)               |(1<<CFlag)\r
2536          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2537          .hword  (0x3D<<8)               |(1<<CFlag)\r
2538          .hword  (0x3E<<8)               |(1<<CFlag)\r
2539          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2540          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2541          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2542          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2543          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2544          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2545          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2546          .hword  (0x46<<8)                     |(1<<CFlag)\r
2547          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2548          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2549          .hword  (0x49<<8)                  |(1<<CFlag)\r
2550          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2551          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2552          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2553          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2554          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2555          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2556          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2557          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2558          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2559          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2560          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2561          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2562          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2563          .hword  (0x57<<8)                     |(1<<CFlag)\r
2564          .hword  (0x58<<8)                  |(1<<CFlag)\r
2565          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2566          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2567          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2568          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2569          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2570          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2571          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2572          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2573          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2574          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2575          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2576          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2577          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2578          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2579          .hword  (0x01<<8)                  |(1<<NFlag)   \r
2580          .hword  (0x02<<8)                  |(1<<NFlag)   \r
2581          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2582          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2583          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2584          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2585          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2586          .hword  (0x08<<8)               |(1<<NFlag)   \r
2587          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2588          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2589          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2590          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2591          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2592          .hword  (0x08<<8)               |(1<<NFlag)   \r
2593          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2594          .hword  (0x10<<8)                  |(1<<NFlag)   \r
2595          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2596          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2597          .hword  (0x13<<8)                  |(1<<NFlag)   \r
2598          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2599          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2600          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2601          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2602          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2603          .hword  (0x19<<8)               |(1<<NFlag)   \r
2604          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2605          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2606          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2607          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2608          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2609          .hword  (0x19<<8)               |(1<<NFlag)   \r
2610          .hword  (0x20<<8)               |(1<<NFlag)   \r
2611          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2612          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2613          .hword  (0x23<<8)               |(1<<NFlag)   \r
2614          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2615          .hword  (0x25<<8)               |(1<<NFlag)   \r
2616          .hword  (0x26<<8)               |(1<<NFlag)   \r
2617          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2618          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2619          .hword  (0x29<<8)            |(1<<NFlag)   \r
2620          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2621          .hword  (0x25<<8)               |(1<<NFlag)   \r
2622          .hword  (0x26<<8)               |(1<<NFlag)   \r
2623          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2624          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2625          .hword  (0x29<<8)            |(1<<NFlag)   \r
2626          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2627          .hword  (0x31<<8)               |(1<<NFlag)   \r
2628          .hword  (0x32<<8)               |(1<<NFlag)   \r
2629          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2630          .hword  (0x34<<8)               |(1<<NFlag)   \r
2631          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2632          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2633          .hword  (0x37<<8)               |(1<<NFlag)   \r
2634          .hword  (0x38<<8)            |(1<<NFlag)   \r
2635          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2636          .hword  (0x34<<8)               |(1<<NFlag)   \r
2637          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2638          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2639          .hword  (0x37<<8)               |(1<<NFlag)   \r
2640          .hword  (0x38<<8)            |(1<<NFlag)   \r
2641          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2642          .hword  (0x40<<8)                  |(1<<NFlag)   \r
2643          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2644          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2645          .hword  (0x43<<8)                  |(1<<NFlag)   \r
2646          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2647          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2648          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2649          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2650          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2651          .hword  (0x49<<8)               |(1<<NFlag)   \r
2652          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2653          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2654          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2655          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2656          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2657          .hword  (0x49<<8)               |(1<<NFlag)   \r
2658          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2659          .hword  (0x51<<8)                  |(1<<NFlag)   \r
2660          .hword  (0x52<<8)                  |(1<<NFlag)   \r
2661          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2662          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2663          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2664          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2665          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2666          .hword  (0x58<<8)               |(1<<NFlag)   \r
2667          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2668          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2669          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2670          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2671          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2672          .hword  (0x58<<8)               |(1<<NFlag)   \r
2673          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2674          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2675          .hword  (0x61<<8)               |(1<<NFlag)   \r
2676          .hword  (0x62<<8)               |(1<<NFlag)   \r
2677          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2678          .hword  (0x64<<8)               |(1<<NFlag)   \r
2679          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2680          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2681          .hword  (0x67<<8)               |(1<<NFlag)   \r
2682          .hword  (0x68<<8)            |(1<<NFlag)   \r
2683          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2684          .hword  (0x64<<8)               |(1<<NFlag)   \r
2685          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2686          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2687          .hword  (0x67<<8)               |(1<<NFlag)   \r
2688          .hword  (0x68<<8)            |(1<<NFlag)   \r
2689          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2690          .hword  (0x70<<8)               |(1<<NFlag)   \r
2691          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2692          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2693          .hword  (0x73<<8)               |(1<<NFlag)   \r
2694          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2695          .hword  (0x75<<8)               |(1<<NFlag)   \r
2696          .hword  (0x76<<8)               |(1<<NFlag)   \r
2697          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2698          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2699          .hword  (0x79<<8)            |(1<<NFlag)   \r
2700          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2701          .hword  (0x75<<8)               |(1<<NFlag)   \r
2702          .hword  (0x76<<8)               |(1<<NFlag)   \r
2703          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2704          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2705          .hword  (0x79<<8)            |(1<<NFlag)   \r
2706          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2707          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2708          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2709          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2710          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2711          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2712          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2713          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2714          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2715          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2716          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2717          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2718          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2719          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2720          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2721          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2722          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2723          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2724          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2725          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2726          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2727          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2728          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2729          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2730          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2731          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2732          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2733          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2734          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2735          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2736          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2737          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2738          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2739          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2740          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2741          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2742          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2743          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2744          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2745          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2746          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2747          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2748          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2749          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2750          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2751          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2752          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2753          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2754          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2755          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2756          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2757          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2758          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2759          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2760          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2761          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2762          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2763          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2764          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2765          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2766          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2767          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2768          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2769          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2770          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2771          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
2772          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
2773          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2774          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2775          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2776          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2777          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2778          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2779          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2780          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2781          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2782          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2783          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2784          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2785          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2786          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
2787          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2788          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2789          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
2790          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2791          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2792          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2793          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2794          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2795          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2796          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2797          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2798          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2799          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2800          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2801          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2802          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2803          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2804          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2805          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2806          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2807          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2808          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2809          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2810          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2811          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2812          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2813          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2814          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2815          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2816          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2817          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2818          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2819          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2820          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2821          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2822          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2823          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2824          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2825          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2826          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2827          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2828          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2829          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2830          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2831          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2832          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2833          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2834          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2835          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2836          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2837          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2838          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2839          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2840          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2841          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2842          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2843          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2844          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2845          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2846          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2847          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2848          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2849          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2850          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2851          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2852          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2853          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2854          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2855          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2856          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2857          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2858          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2859          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2860          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2861          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2862          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2863          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2864          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2865          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2866          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2867          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2868          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2869          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2870          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2871          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2872          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2873          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2874          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2875          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2876          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2877          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2878          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2879          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2880          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2881          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2882          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2883          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2884          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2885          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2886          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2887          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2888          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2889          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2890          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2891          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2892          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2893          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2894          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2895          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2896          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2897          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2898          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2899          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2900          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2901          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2902          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2903          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2904          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2905          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2906          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2907          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2908          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2909          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2910          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2911          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2912          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2913          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2914          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2915          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2916          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2917          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2918          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2919          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2920          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2921          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2922          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2923          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2924          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2925          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2926          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2927          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2928          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2929          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2930          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2931          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2932          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2933          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2934          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2935          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2936          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2937          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2938          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2939          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2940          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2941          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2942          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2943          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2944          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2945          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2946          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2947          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2948          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2949          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2950          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2951          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2952          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2953          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2954          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2955          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2956          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2957          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2958          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2959          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2960          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2961          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2962          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
2963          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2964          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2965          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
2966          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2967          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2968          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2969          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2970          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2971          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2972          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2973          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2974          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2975          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2976          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2977          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2978          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2979          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
2980          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
2981          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2982          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2983          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2984          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2985          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2986          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2987          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2988          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2989          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2990          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2991          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2992          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2993          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2994          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2995          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2996          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2997          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2998          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2999          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3000          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3001          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3002          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3003          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3004          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3005          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3006          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3007          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3008          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3009          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3010          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3011          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3012          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3013          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3014          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3015          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3016          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3017          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3018          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3019          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3020          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3021          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3022          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3023          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3024          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3025          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3026          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3027          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3028          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3029          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3030          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3031          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3032          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3033          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3034          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3035          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3036          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3037          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3038          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3039          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3040          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3041          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3042          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3043          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3044          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3045          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3046          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3047          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3048          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3049          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3050          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3051          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3052          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3053          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3054          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3055          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3056          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3057          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3058          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3059          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3060          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3061          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3062          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3063          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3064          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3065          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3066          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3067          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3068          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3069          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3070          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3071          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3072          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3073          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3074          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3075          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3076          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3077          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3078          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3079          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3080          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3081          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3082          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3083          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3084          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3085          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3086          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3087          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3088          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3089          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3090          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3091          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3092          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3093          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3094          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3095          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3096          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3097          .hword  (0x01<<8)                  |(1<<NFlag)   \r
3098          .hword  (0x02<<8)                  |(1<<NFlag)   \r
3099          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3100          .hword  (0x04<<8)                  |(1<<NFlag)   \r
3101          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3102          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3103          .hword  (0x07<<8)                  |(1<<NFlag)   \r
3104          .hword  (0x08<<8)               |(1<<NFlag)   \r
3105          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3106          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3107          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3108          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3109          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3110          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3111          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3112          .hword  (0x10<<8)                  |(1<<NFlag)   \r
3113          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3114          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3115          .hword  (0x13<<8)                  |(1<<NFlag)   \r
3116          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3117          .hword  (0x15<<8)                  |(1<<NFlag)   \r
3118          .hword  (0x16<<8)                  |(1<<NFlag)   \r
3119          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3120          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3121          .hword  (0x19<<8)               |(1<<NFlag)   \r
3122          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3123          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3124          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3125          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3126          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3127          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3128          .hword  (0x20<<8)               |(1<<NFlag)   \r
3129          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3130          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3131          .hword  (0x23<<8)               |(1<<NFlag)   \r
3132          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3133          .hword  (0x25<<8)               |(1<<NFlag)   \r
3134          .hword  (0x26<<8)               |(1<<NFlag)   \r
3135          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3136          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3137          .hword  (0x29<<8)            |(1<<NFlag)   \r
3138          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3139          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3140          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3141          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3142          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3143          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3144          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3145          .hword  (0x31<<8)               |(1<<NFlag)   \r
3146          .hword  (0x32<<8)               |(1<<NFlag)   \r
3147          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3148          .hword  (0x34<<8)               |(1<<NFlag)   \r
3149          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3150          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3151          .hword  (0x37<<8)               |(1<<NFlag)   \r
3152          .hword  (0x38<<8)            |(1<<NFlag)   \r
3153          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3154          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3155          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3156          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3157          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3158          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3159          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3160          .hword  (0x40<<8)                  |(1<<NFlag)   \r
3161          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3162          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3163          .hword  (0x43<<8)                  |(1<<NFlag)   \r
3164          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3165          .hword  (0x45<<8)                  |(1<<NFlag)   \r
3166          .hword  (0x46<<8)                  |(1<<NFlag)   \r
3167          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3168          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3169          .hword  (0x49<<8)               |(1<<NFlag)   \r
3170          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3171          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3172          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3173          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3174          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3175          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3176          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3177          .hword  (0x51<<8)                  |(1<<NFlag)   \r
3178          .hword  (0x52<<8)                  |(1<<NFlag)   \r
3179          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3180          .hword  (0x54<<8)                  |(1<<NFlag)   \r
3181          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3182          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3183          .hword  (0x57<<8)                  |(1<<NFlag)   \r
3184          .hword  (0x58<<8)               |(1<<NFlag)   \r
3185          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3186          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3187          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3188          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3189          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3190          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3191          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3192          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3193          .hword  (0x61<<8)               |(1<<NFlag)   \r
3194          .hword  (0x62<<8)               |(1<<NFlag)   \r
3195          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3196          .hword  (0x64<<8)               |(1<<NFlag)   \r
3197          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3198          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3199          .hword  (0x67<<8)               |(1<<NFlag)   \r
3200          .hword  (0x68<<8)            |(1<<NFlag)   \r
3201          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3202          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3203          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3204          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3205          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3206          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3207          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3208          .hword  (0x70<<8)               |(1<<NFlag)   \r
3209          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3210          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3211          .hword  (0x73<<8)               |(1<<NFlag)   \r
3212          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3213          .hword  (0x75<<8)               |(1<<NFlag)   \r
3214          .hword  (0x76<<8)               |(1<<NFlag)   \r
3215          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3216          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3217          .hword  (0x79<<8)            |(1<<NFlag)   \r
3218          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3219          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3220          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3221          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3222          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3223          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3224          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3225          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3226          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3227          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3228          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3229          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3230          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3231          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3232          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3233          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
3234          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3235          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3236          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3237          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3238          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3239          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3240          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3241          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3242          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3243          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3244          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3245          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3246          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3247          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3248          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3249          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3250          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3251          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3252          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3253          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3254          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3255          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3256          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3257          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3258          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3259          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3260          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3261          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3262          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3263          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3264          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3265          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3266          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3267          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3268          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3269          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3270          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3271          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3272          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3273          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3274          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3275          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3276          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3277          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3278          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3279          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3280          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3281          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3282          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3283          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3284          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3285          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3286          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3287          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3288          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3289          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3290          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3291          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3292          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3293          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3294          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3295          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3296          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3297          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3298          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3299          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3300          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3301          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3302          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3303          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3304          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3305          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3306          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3307          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3308          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3309          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3310          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3311          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3312          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3313          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3314          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3315          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3316          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3317          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3318          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3319          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3320          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3321          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3322          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3323          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3324          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3325          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3326          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3327          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3328          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3329          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3330          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3331          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3332          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3333          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3334          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3335          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3336          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3337          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3338          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3339          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3340          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3341          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3342          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3343          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3344          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3345          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3346          .hword  (0x9A<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3347          .hword  (0x9B<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3348          .hword  (0x9C<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3349          .hword  (0x9D<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3350          .hword  (0x9E<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3351          .hword  (0x9F<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3352          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3353          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3354          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3355          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3356          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3357          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3358          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3359          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3360          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3361          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3362          .hword  (0xAA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3363          .hword  (0xAB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3364          .hword  (0xAC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3365          .hword  (0xAD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3366          .hword  (0xAE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3367          .hword  (0xAF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3368          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3369          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3370          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3371          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3372          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3373          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3374          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3375          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3376          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3377          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3378          .hword  (0xBA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3379          .hword  (0xBB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3380          .hword  (0xBC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3381          .hword  (0xBD<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3382          .hword  (0xBE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3383          .hword  (0xBF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3384          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3385          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3386          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3387          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3388          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3389          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3390          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3391          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3392          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3393          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3394          .hword  (0xCA<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3395          .hword  (0xCB<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3396          .hword  (0xCC<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3397          .hword  (0xCD<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3398          .hword  (0xCE<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3399          .hword  (0xCF<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3400          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3401          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3402          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3403          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3404          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3405          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3406          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3407          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3408          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3409          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3410          .hword  (0xDA<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3411          .hword  (0xDB<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3412          .hword  (0xDC<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3413          .hword  (0xDD<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3414          .hword  (0xDE<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3415          .hword  (0xDF<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3416          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3417          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3418          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3419          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3420          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3421          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3422          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3423          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3424          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3425          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3426          .hword  (0xEA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3427          .hword  (0xEB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3428          .hword  (0xEC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3429          .hword  (0xED<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3430          .hword  (0xEE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3431          .hword  (0xEF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3432          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3433          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3434          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3435          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3436          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3437          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3438          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3439          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3440          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3441          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3442          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3443          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3444          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3445          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3446          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3447          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3448          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3449          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3450          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3451          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3452          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3453          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3454          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3455          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3456          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
3457          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3458          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3459          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3460          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3461          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3462          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3463          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3464          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3465          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3466          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3467          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3468          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3469          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3470          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3471          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3472          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3473          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
3474          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3475          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3476          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3477          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3478          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3479          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3480          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
3481          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3482          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3483          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
3484          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3485          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
3486          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
3487          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3488          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3489          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
3490          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3491          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3492          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3493          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3494          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3495          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3496          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3497          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
3498          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
3499          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3500          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3501          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3502          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3503          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3504          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3505          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3506          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3507          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3508          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3509          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3510          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3511          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3512          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3513          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3514          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3515          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3516          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3517          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3518          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3519          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3520          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3521          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3522          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3523          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3524          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3525          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3526          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3527          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3528          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3529          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3530          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3531          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3532          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3533          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3534          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3535          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3536          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3537          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3538          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3539          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3540          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3541          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3542          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3543          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3544          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3545          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3546          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3547          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3548          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3549          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3550          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3551          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3552          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3553          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3554          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3555          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3556          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3557          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3558          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3559          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3560          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3561          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3562          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3563          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3564          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3565          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3566          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3567          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3568          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3569          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3570          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3571          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3572          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3573          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3574          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3575          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3576          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3577          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3578          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3579          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3580          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3581          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3582          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3583          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3584          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3585          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3586          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3587          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3588          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3589          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3590          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3591          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3592          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3593          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3594          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3595          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3596          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3597          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3598          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3599          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3600          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3601          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3602          \r
3603 .align 4\r
3604 \r
3605 AF_Z80:  .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 0\r
3606          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 1\r
3607          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 2\r
3608          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 3\r
3609          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 4\r
3610          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 5\r
3611          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 6\r
3612          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 7\r
3613          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 8\r
3614          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 9\r
3615          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 10\r
3616          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 11\r
3617          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 12\r
3618          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 13\r
3619          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 14\r
3620          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 15\r
3621          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 16\r
3622          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 17\r
3623          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 18\r
3624          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 19\r
3625          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 20\r
3626          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 21\r
3627          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 22\r
3628          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 23\r
3629          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 24\r
3630          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 25\r
3631          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 26\r
3632          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 27\r
3633          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 28\r
3634          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 29\r
3635          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 30\r
3636          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 31\r
3637          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 32\r
3638          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 33\r
3639          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 34\r
3640          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 35\r
3641          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 36\r
3642          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 37\r
3643          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 38\r
3644          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 39\r
3645          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 40\r
3646          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 41\r
3647          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 42\r
3648          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 43\r
3649          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 44\r
3650          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 45\r
3651          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 46\r
3652          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 47\r
3653          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 48\r
3654          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 49\r
3655          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 50\r
3656          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 51\r
3657          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 52\r
3658          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 53\r
3659          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 54\r
3660          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 55\r
3661          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 56\r
3662          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 57\r
3663          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 58\r
3664          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 59\r
3665          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 60\r
3666          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 61\r
3667          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 62\r
3668          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 63\r
3669          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 64\r
3670          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 65\r
3671          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 66\r
3672          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 67\r
3673          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 68\r
3674          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 69\r
3675          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 70\r
3676          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 71\r
3677          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 72\r
3678          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 73\r
3679          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 74\r
3680          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 75\r
3681          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 76\r
3682          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 77\r
3683          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 78\r
3684          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 79\r
3685          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 80\r
3686          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 81\r
3687          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 82\r
3688          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 83\r
3689          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 84\r
3690          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 85\r
3691          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 86\r
3692          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 87\r
3693          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 88\r
3694          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 89\r
3695          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 90\r
3696          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 91\r
3697          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 92\r
3698          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 93\r
3699          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 94\r
3700          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 95\r
3701          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 96\r
3702          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 97\r
3703          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 98\r
3704          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 99\r
3705          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 100\r
3706          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 101\r
3707          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 102\r
3708          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 103\r
3709          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 104\r
3710          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 105\r
3711          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 106\r
3712          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 107\r
3713          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 108\r
3714          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 109\r
3715          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 110\r
3716          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 111\r
3717          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 112\r
3718          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 113\r
3719          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 114\r
3720          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 115\r
3721          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 116\r
3722          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 117\r
3723          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 118\r
3724          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 119\r
3725          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 120\r
3726          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 121\r
3727          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 122\r
3728          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 123\r
3729          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 124\r
3730          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 125\r
3731          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 126\r
3732          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 127\r
3733          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 128\r
3734          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 129\r
3735          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 130\r
3736          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 131\r
3737          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 132\r
3738          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 133\r
3739          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 134\r
3740          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 135\r
3741          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 136\r
3742          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 137\r
3743          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 138\r
3744          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 139\r
3745          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 140\r
3746          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 141\r
3747          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 142\r
3748          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 143\r
3749          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 144\r
3750          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 145\r
3751          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 146\r
3752          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 147\r
3753          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 148\r
3754          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 149\r
3755          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 150\r
3756          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 151\r
3757          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 152\r
3758          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 153\r
3759          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 154\r
3760          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 155\r
3761          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 156\r
3762          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 157\r
3763          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 158\r
3764          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 159\r
3765          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 160\r
3766          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 161\r
3767          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 162\r
3768          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 163\r
3769          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 164\r
3770          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 165\r
3771          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 166\r
3772          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 167\r
3773          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 168\r
3774          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 169\r
3775          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 170\r
3776          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 171\r
3777          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 172\r
3778          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 173\r
3779          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 174\r
3780          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 175\r
3781          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 176\r
3782          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 177\r
3783          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 178\r
3784          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 179\r
3785          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 180\r
3786          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 181\r
3787          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 182\r
3788          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 183\r
3789          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 184\r
3790          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 185\r
3791          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 186\r
3792          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 187\r
3793          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 188\r
3794          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 189\r
3795          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 190\r
3796          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 191\r
3797          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 192\r
3798          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 193\r
3799          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 194\r
3800          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 195\r
3801          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 196\r
3802          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 197\r
3803          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 198\r
3804          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 199\r
3805          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 200\r
3806          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 201\r
3807          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 202\r
3808          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 203\r
3809          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 204\r
3810          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 205\r
3811          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 206\r
3812          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 207\r
3813          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 208\r
3814          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 209\r
3815          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 210\r
3816          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 211\r
3817          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 212\r
3818          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 213\r
3819          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 214\r
3820          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 215\r
3821          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 216\r
3822          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 217\r
3823          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 218\r
3824          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 219\r
3825          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 220\r
3826          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 221\r
3827          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 222\r
3828          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 223\r
3829          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 224\r
3830          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 225\r
3831          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 226\r
3832          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 227\r
3833          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 228\r
3834          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 229\r
3835          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 230\r
3836          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 231\r
3837          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 232\r
3838          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 233\r
3839          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 234\r
3840          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 235\r
3841          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 236\r
3842          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 237\r
3843          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 238\r
3844          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 239\r
3845          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 240\r
3846          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 241\r
3847          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 242\r
3848          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 243\r
3849          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 244\r
3850          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 245\r
3851          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 246\r
3852          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 247\r
3853          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 248\r
3854          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 249\r
3855          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 250\r
3856          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 251\r
3857          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 252\r
3858          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 253\r
3859          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 254\r
3860          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 255\r
3861 \r
3862 .align 4\r
3863 \r
3864 AF_ARM:  .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 0\r
3865          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 1\r
3866          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 2\r
3867          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 3\r
3868          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 4\r
3869          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 5\r
3870          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 6\r
3871          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 7\r
3872          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 8\r
3873          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 9\r
3874          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 10\r
3875          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 11\r
3876          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 12\r
3877          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 13\r
3878          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 14\r
3879          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 15\r
3880          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 16\r
3881          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 17\r
3882          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 18\r
3883          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 19\r
3884          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 20\r
3885          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 21\r
3886          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 22\r
3887          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 23\r
3888          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 24\r
3889          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 25\r
3890          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 26\r
3891          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 27\r
3892          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 28\r
3893          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 29\r
3894          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 30\r
3895          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 31\r
3896          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 32\r
3897          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 33\r
3898          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 34\r
3899          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 35\r
3900          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 36\r
3901          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 37\r
3902          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 38\r
3903          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 39\r
3904          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 40\r
3905          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 41\r
3906          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 42\r
3907          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 43\r
3908          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 44\r
3909          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 45\r
3910          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 46\r
3911          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 47\r
3912          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 48\r
3913          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 49\r
3914          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 50\r
3915          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 51\r
3916          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 52\r
3917          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 53\r
3918          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 54\r
3919          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 55\r
3920          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 56\r
3921          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 57\r
3922          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 58\r
3923          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 59\r
3924          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 60\r
3925          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 61\r
3926          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 62\r
3927          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 63\r
3928          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 64\r
3929          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 65\r
3930          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 66\r
3931          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 67\r
3932          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 68\r
3933          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 69\r
3934          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 70\r
3935          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 71\r
3936          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 72\r
3937          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 73\r
3938          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 74\r
3939          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 75\r
3940          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 76\r
3941          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 77\r
3942          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 78\r
3943          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 79\r
3944          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 80\r
3945          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 81\r
3946          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 82\r
3947          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 83\r
3948          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 84\r
3949          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 85\r
3950          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 86\r
3951          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 87\r
3952          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 88\r
3953          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 89\r
3954          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 90\r
3955          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 91\r
3956          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 92\r
3957          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 93\r
3958          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 94\r
3959          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 95\r
3960          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 96\r
3961          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 97\r
3962          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 98\r
3963          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 99\r
3964          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 100\r
3965          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 101\r
3966          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 102\r
3967          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 103\r
3968          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 104\r
3969          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 105\r
3970          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 106\r
3971          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 107\r
3972          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 108\r
3973          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 109\r
3974          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 110\r
3975          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 111\r
3976          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 112\r
3977          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 113\r
3978          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 114\r
3979          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 115\r
3980          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 116\r
3981          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 117\r
3982          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 118\r
3983          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 119\r
3984          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 120\r
3985          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 121\r
3986          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 122\r
3987          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 123\r
3988          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 124\r
3989          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 125\r
3990          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 126\r
3991          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 127\r
3992          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 128\r
3993          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 129\r
3994          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 130\r
3995          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 131\r
3996          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 132\r
3997          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 133\r
3998          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 134\r
3999          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 135\r
4000          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 136\r
4001          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 137\r
4002          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 138\r
4003          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 139\r
4004          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 140\r
4005          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 141\r
4006          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 142\r
4007          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 143\r
4008          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 144\r
4009          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 145\r
4010          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 146\r
4011          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 147\r
4012          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 148\r
4013          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 149\r
4014          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 150\r
4015          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 151\r
4016          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 152\r
4017          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 153\r
4018          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 154\r
4019          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 155\r
4020          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 156\r
4021          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 157\r
4022          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 158\r
4023          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 159\r
4024          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 160\r
4025          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 161\r
4026          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 162\r
4027          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 163\r
4028          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 164\r
4029          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 165\r
4030          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 166\r
4031          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 167\r
4032          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 168\r
4033          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 169\r
4034          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 170\r
4035          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 171\r
4036          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 172\r
4037          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 173\r
4038          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 174\r
4039          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 175\r
4040          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 176\r
4041          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 177\r
4042          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 178\r
4043          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 179\r
4044          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 180\r
4045          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 181\r
4046          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 182\r
4047          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 183\r
4048          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 184\r
4049          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 185\r
4050          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 186\r
4051          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 187\r
4052          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 188\r
4053          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 189\r
4054          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 190\r
4055          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 191\r
4056          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 192\r
4057          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 193\r
4058          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 194\r
4059          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 195\r
4060          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 196\r
4061          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 197\r
4062          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 198\r
4063          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 199\r
4064          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 200\r
4065          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 201\r
4066          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 202\r
4067          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 203\r
4068          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 204\r
4069          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 205\r
4070          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 206\r
4071          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 207\r
4072          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 208\r
4073          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 209\r
4074          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 210\r
4075          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 211\r
4076          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 212\r
4077          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 213\r
4078          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 214\r
4079          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 215\r
4080          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 216\r
4081          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 217\r
4082          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 218\r
4083          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 219\r
4084          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 220\r
4085          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 221\r
4086          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 222\r
4087          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 223\r
4088          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 224\r
4089          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 225\r
4090          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 226\r
4091          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 227\r
4092          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 228\r
4093          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 229\r
4094          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 230\r
4095          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 231\r
4096          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 232\r
4097          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 233\r
4098          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 234\r
4099          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 235\r
4100          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 236\r
4101          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 237\r
4102          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 238\r
4103          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 239\r
4104          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 240\r
4105          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 241\r
4106          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 242\r
4107          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 243\r
4108          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 244\r
4109          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 245\r
4110          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 246\r
4111          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 247\r
4112          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 248\r
4113          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 249\r
4114          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 250\r
4115          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 251\r
4116          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 252\r
4117          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 253\r
4118          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 254\r
4119          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 255\r
4120 \r
4121 .align 4\r
4122 \r
4123 PZSTable_data: .byte (1<<ZFlag)|(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4124         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4125         .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
4126         .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
4127         .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
4128         .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
4129         .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
4130         .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
4131         .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
4132         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4133         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4134         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4135         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4136         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4137         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4138         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4139         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4140         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4141         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4142         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4143         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4144         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4145         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4146         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4147         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4148         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4149         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4150         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4151         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4152         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4153         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4154         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4155         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4156         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4157         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4158         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4159         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4160         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4161         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4162         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4163         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)       \r
4164 \r
4165 .align 4\r
4166 \r
4167 MAIN_opcodes:   \r
4168         .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
4169         .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
4170         .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
4171         .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
4172         .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
4173         .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
4174         .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
4175         .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
4176         .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
4177         .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
4178         .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
4179         .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
4180         .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
4181         .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
4182         .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
4183         .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
4184         .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
4185         .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
4186         .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
4187         .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
4188         .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
4189         .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
4190         .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
4191         .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
4192         .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
4193         .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
4194         .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
4195         .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
4196         .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
4197         .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
4198         .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
4199         .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
4200 \r
4201 .align 4\r
4202 \r
4203 EI_DUMMY_opcodes:\r
4204         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4205         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4206         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4207         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4208         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4209         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4210         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4211         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4212         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4213         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4214         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4215         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4216         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4217         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4218         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4219         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4220         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4221         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4222         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4223         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4224         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4225         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4226         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4227         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4228         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4229         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4230         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4231         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4232         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4233         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4234         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4235         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4236 \r
4237 .text\r
4238 .align 4\r
4239 \r
4240 ;@NOP\r
4241 opcode_0_0:\r
4242 ;@LD B,B\r
4243 opcode_4_0:\r
4244 ;@LD C,C\r
4245 opcode_4_9:\r
4246 ;@LD D,D\r
4247 opcode_5_2:\r
4248 ;@LD E,E\r
4249 opcode_5_B:\r
4250 ;@LD H,H\r
4251 opcode_6_4:\r
4252 ;@LD L,L\r
4253 opcode_6_D:\r
4254 ;@LD A,A\r
4255 opcode_7_F:\r
4256         fetch 4\r
4257 ;@LD BC,NN\r
4258 opcode_0_1:\r
4259         ldrb r0,[z80pc],#1\r
4260         ldrb r1,[z80pc],#1\r
4261         orr r0,r0,r1, lsl #8\r
4262         mov z80bc,r0, lsl #16\r
4263         fetch 10\r
4264 ;@LD (BC),A\r
4265 opcode_0_2:\r
4266         mov r0,z80a, lsr #24\r
4267         mov r1,z80bc, lsr #16\r
4268         writemem8\r
4269         fetch 7\r
4270 ;@INC BC\r
4271 opcode_0_3:\r
4272         add z80bc,z80bc,#1<<16\r
4273         fetch 6\r
4274 ;@INC B\r
4275 opcode_0_4:\r
4276         opINC8H z80bc\r
4277         fetch 4\r
4278 ;@DEC B\r
4279 opcode_0_5:\r
4280         opDEC8H z80bc\r
4281         fetch 4\r
4282 ;@LD B,N\r
4283 opcode_0_6:\r
4284         ldrb r1,[z80pc],#1\r
4285         and z80bc,z80bc,#0xFF<<16\r
4286         orr z80bc,z80bc,r1, lsl #24\r
4287         fetch 7\r
4288 ;@RLCA\r
4289 opcode_0_7:\r
4290         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4291         movs z80a,z80a, lsl #1\r
4292         orrcs z80a,z80a,#1<<24\r
4293         orrcs z80f,z80f,#1<<CFlag\r
4294         fetch 4\r
4295 ;@EX AF,AF'\r
4296 opcode_0_8:\r
4297         add r1,cpucontext,#z80a2\r
4298         swp z80a,z80a,[r1]\r
4299         add r1,cpucontext,#z80f2\r
4300         swp z80f,z80f,[r1]\r
4301         fetch 4\r
4302 ;@ADD HL,BC\r
4303 opcode_0_9:\r
4304         opADD16 z80hl z80bc\r
4305         fetch 11\r
4306 ;@LD A,(BC)\r
4307 opcode_0_A:\r
4308         mov r0,z80bc, lsr #16\r
4309         readmem8\r
4310         mov z80a,r0, lsl #24\r
4311         fetch 7\r
4312 ;@DEC BC\r
4313 opcode_0_B:\r
4314         sub z80bc,z80bc,#1<<16\r
4315         fetch 6\r
4316 ;@INC C\r
4317 opcode_0_C:\r
4318         opINC8L z80bc\r
4319         fetch 4\r
4320 ;@DEC C\r
4321 opcode_0_D:\r
4322         opDEC8L z80bc\r
4323         fetch 4\r
4324 ;@LD C,N\r
4325 opcode_0_E:\r
4326         ldrb r1,[z80pc],#1\r
4327         and z80bc,z80bc,#0xFF<<24\r
4328         orr z80bc,z80bc,r1, lsl #16\r
4329         fetch 7\r
4330 ;@RRCA\r
4331 opcode_0_F:\r
4332         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4333         movs z80a,z80a, lsr #25\r
4334         orrcs z80a,z80a,#1<<7\r
4335         orrcs z80f,z80f,#1<<CFlag\r
4336         mov z80a,z80a, lsl #24\r
4337         fetch 4\r
4338 ;@DJNZ $+2\r
4339 opcode_1_0:\r
4340         sub z80bc,z80bc,#1<<24\r
4341         tst z80bc,#0xFF<<24\r
4342         ldrsb r1,[z80pc],#1\r
4343         addne z80pc,z80pc,r1\r
4344         subne z80_icount,z80_icount,#5\r
4345         fetch 8\r
4346 \r
4347 ;@LD DE,NN\r
4348 opcode_1_1:\r
4349         ldrb r0,[z80pc],#1\r
4350         ldrb r1,[z80pc],#1\r
4351         orr r0,r0,r1, lsl #8\r
4352         mov z80de,r0, lsl #16\r
4353         fetch 10\r
4354 ;@LD (DE),A\r
4355 opcode_1_2:\r
4356         mov r0,z80a, lsr #24\r
4357         writemem8DE\r
4358         fetch 7\r
4359 ;@INC DE\r
4360 opcode_1_3:\r
4361         add z80de,z80de,#1<<16\r
4362         fetch 6\r
4363 ;@INC D\r
4364 opcode_1_4:\r
4365         opINC8H z80de\r
4366         fetch 4\r
4367 ;@DEC D\r
4368 opcode_1_5:\r
4369         opDEC8H z80de\r
4370         fetch 4\r
4371 ;@LD D,N\r
4372 opcode_1_6:\r
4373         ldrb r1,[z80pc],#1\r
4374         and z80de,z80de,#0xFF<<16\r
4375         orr z80de,z80de,r1, lsl #24\r
4376         fetch 7\r
4377 ;@RLA\r
4378 opcode_1_7:\r
4379         tst z80f,#1<<CFlag\r
4380         orrne z80a,z80a,#1<<23\r
4381         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4382         movs z80a,z80a, lsl #1\r
4383         orrcs z80f,z80f,#1<<CFlag\r
4384         fetch 4\r
4385 ;@JR $+2\r
4386 opcode_1_8:\r
4387         ldrsb r1,[z80pc],#1\r
4388         add z80pc,z80pc,r1\r
4389         fetch 12\r
4390 ;@ADD HL,DE\r
4391 opcode_1_9:\r
4392         opADD16 z80hl z80de\r
4393         fetch 11\r
4394 ;@LD A,(DE)\r
4395 opcode_1_A:\r
4396         mov r0,z80de, lsr #16\r
4397         readmem8\r
4398         mov z80a,r0, lsl #24\r
4399         fetch 7\r
4400 ;@DEC DE\r
4401 opcode_1_B:\r
4402         sub z80de,z80de,#1<<16\r
4403         fetch 6\r
4404 ;@INC E\r
4405 opcode_1_C:\r
4406         opINC8L z80de\r
4407         fetch 4\r
4408 ;@DEC E\r
4409 opcode_1_D:\r
4410         opDEC8L z80de\r
4411         fetch 4\r
4412 ;@LD E,N\r
4413 opcode_1_E:\r
4414         ldrb r0,[z80pc],#1\r
4415         and z80de,z80de,#0xFF<<24\r
4416         orr z80de,z80de,r0, lsl #16\r
4417         fetch 7\r
4418 ;@RRA\r
4419 opcode_1_F:\r
4420         orr z80a,z80a,z80f,lsr#1                ;@get C\r
4421         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4422         movs z80a,z80a,ror#25\r
4423         orrcs z80f,z80f,#1<<CFlag\r
4424         mov z80a,z80a,lsl#24\r
4425         fetch 4\r
4426 ;@JR NZ,$+2\r
4427 opcode_2_0:\r
4428         tst z80f,#1<<ZFlag\r
4429         beq opcode_1_8\r
4430         add z80pc,z80pc,#1\r
4431         fetch 7\r
4432 ;@LD HL,NN\r
4433 opcode_2_1:\r
4434         ldrb r0,[z80pc],#1\r
4435         ldrb r1,[z80pc],#1\r
4436         orr r0,r0,r1, lsl #8\r
4437         mov z80hl,r0, lsl #16\r
4438         fetch 10\r
4439 ;@LD (NN),HL\r
4440 opcode_ED_63:\r
4441         eatcycles 4\r
4442 ;@LD (NN),HL\r
4443 opcode_2_2:\r
4444         ldrb r0,[z80pc],#1\r
4445         ldrb r1,[z80pc],#1\r
4446         orr r1,r0,r1, lsl #8\r
4447         mov r0,z80hl, lsr #16\r
4448         writemem16\r
4449         fetch 16\r
4450 ;@INC HL\r
4451 opcode_2_3:\r
4452         add z80hl,z80hl,#1<<16\r
4453         fetch 6\r
4454 ;@INC H\r
4455 opcode_2_4:\r
4456         opINC8H z80hl\r
4457         fetch 4\r
4458 ;@DEC H\r
4459 opcode_2_5:\r
4460         opDEC8H z80hl\r
4461         fetch 4\r
4462 ;@LD H,N\r
4463 opcode_2_6:\r
4464         ldrb r1,[z80pc],#1\r
4465         and z80hl,z80hl,#0xFF<<16\r
4466         orr z80hl,z80hl,r1, lsl #24\r
4467         fetch 7\r
4468 DAATABLE_LOCAL: .word DAATable\r
4469 ;@DAA\r
4470 opcode_2_7:\r
4471         mov r1,z80a, lsr #24\r
4472         tst z80f,#1<<CFlag\r
4473         orrne r1,r1,#256\r
4474         tst z80f,#1<<HFlag\r
4475         orrne r1,r1,#512\r
4476         tst z80f,#1<<NFlag\r
4477         orrne r1,r1,#1024\r
4478         ldr r2,DAATABLE_LOCAL\r
4479         add r2,r2,r1, lsl #1\r
4480         ldrh r1,[r2]\r
4481         and z80f,r1,#0xFF\r
4482         and r2,r1,#0xFF<<8\r
4483         mov z80a,r2, lsl #16\r
4484         fetch 4\r
4485 ;@JR Z,$+2\r
4486 opcode_2_8:\r
4487         tst z80f,#1<<ZFlag\r
4488         bne opcode_1_8\r
4489         add z80pc,z80pc,#1\r
4490         fetch 7\r
4491 ;@ADD HL,HL\r
4492 opcode_2_9:\r
4493         opADD16_2 z80hl\r
4494         fetch 11\r
4495 ;@LD HL,(NN)\r
4496 opcode_ED_6B:\r
4497         eatcycles 4\r
4498 ;@LD HL,(NN)\r
4499 opcode_2_A:\r
4500         ldrb r0,[z80pc],#1\r
4501         ldrb r1,[z80pc],#1\r
4502         orr r0,r0,r1, lsl #8\r
4503         readmem16\r
4504         mov z80hl,r0, lsl #16\r
4505         fetch 16\r
4506 ;@DEC HL\r
4507 opcode_2_B:\r
4508         sub z80hl,z80hl,#1<<16\r
4509         fetch 6\r
4510 ;@INC L\r
4511 opcode_2_C:\r
4512         opINC8L z80hl\r
4513         fetch 4\r
4514 ;@DEC L\r
4515 opcode_2_D:\r
4516         opDEC8L z80hl\r
4517         fetch 4\r
4518 ;@LD L,N\r
4519 opcode_2_E:\r
4520         ldrb r0,[z80pc],#1\r
4521         and z80hl,z80hl,#0xFF<<24\r
4522         orr z80hl,z80hl,r0, lsl #16\r
4523         fetch 7\r
4524 ;@CPL\r
4525 opcode_2_F:\r
4526         eor z80a,z80a,#0xFF<<24\r
4527         orr z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4528         fetch 4\r
4529 ;@JR NC,$+2\r
4530 opcode_3_0:\r
4531         tst z80f,#1<<CFlag\r
4532         beq opcode_1_8\r
4533         add z80pc,z80pc,#1\r
4534         fetch 7\r
4535 ;@LD SP,NN\r
4536 opcode_3_1:\r
4537         ldrb r0,[z80pc],#1\r
4538         ldrb r1,[z80pc],#1\r
4539 \r
4540 .if FAST_Z80SP\r
4541         orr r0,r0,r1, lsl #8\r
4542         rebasesp\r
4543 .else\r
4544         orr z80sp,r0,r1, lsl #8\r
4545 .endif\r
4546         fetch 10\r
4547 ;@LD (NN),A\r
4548 opcode_3_2:\r
4549         ldrb r0,[z80pc],#1\r
4550         ldrb r1,[z80pc],#1\r
4551         orr r1,r0,r1, lsl #8\r
4552         mov r0,z80a, lsr #24\r
4553         writemem8\r
4554         fetch 13\r
4555 ;@INC SP\r
4556 opcode_3_3:\r
4557         add z80sp,z80sp,#1\r
4558         fetch 6\r
4559 ;@INC (HL)\r
4560 opcode_3_4:\r
4561         readmem8HL\r
4562         opINC8b\r
4563         writemem8HL\r
4564         fetch 11\r
4565 ;@DEC (HL)\r
4566 opcode_3_5:\r
4567         readmem8HL\r
4568         opDEC8b\r
4569         writemem8HL\r
4570         fetch 11\r
4571 ;@LD (HL),N\r
4572 opcode_3_6:\r
4573         ldrb r0,[z80pc],#1\r
4574         writemem8HL\r
4575         fetch 10\r
4576 ;@SCF\r
4577 opcode_3_7:\r
4578         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4579         orr z80f,z80f,#1<<CFlag\r
4580         fetch 4\r
4581 ;@JR C,$+2\r
4582 opcode_3_8:\r
4583         tst z80f,#1<<CFlag\r
4584         bne opcode_1_8\r
4585         add z80pc,z80pc,#1\r
4586         fetch 7\r
4587 ;@ADD HL,SP\r
4588 opcode_3_9:\r
4589 .if FAST_Z80SP\r
4590         ldr r0,[cpucontext,#z80sp_base]\r
4591         sub r0,z80sp,r0\r
4592         opADD16s z80hl r0 16\r
4593 .else\r
4594         opADD16s z80hl z80sp 16\r
4595 .endif\r
4596         fetch 11\r
4597 ;@LD A,(NN)\r
4598 opcode_3_A:\r
4599         ldrb r0,[z80pc],#1\r
4600         ldrb r1,[z80pc],#1\r
4601         orr r0,r0,r1, lsl #8\r
4602         readmem8\r
4603         mov z80a,r0, lsl #24\r
4604         fetch 13\r
4605 ;@DEC SP\r
4606 opcode_3_B:\r
4607         sub z80sp,z80sp,#1\r
4608         fetch 6\r
4609 ;@INC A\r
4610 opcode_3_C:\r
4611         opINC8 z80a\r
4612         fetch 4\r
4613 ;@DEC A\r
4614 opcode_3_D:\r
4615         opDEC8 z80a\r
4616         fetch 4\r
4617 ;@LD A,N\r
4618 opcode_3_E:\r
4619         ldrb r0,[z80pc],#1\r
4620         mov z80a,r0, lsl #24\r
4621         fetch 7\r
4622 ;@CCF\r
4623 opcode_3_F:\r
4624         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4625         tst z80f,#1<<CFlag\r
4626         orrne z80f,z80f,#1<<HFlag\r
4627         eor z80f,z80f,#1<<CFlag\r
4628         fetch 4\r
4629 \r
4630 ;@LD B,C\r
4631 opcode_4_1:\r
4632         and z80bc,z80bc,#0xFF<<16\r
4633         orr z80bc,z80bc,z80bc, lsl #8\r
4634         fetch 4\r
4635 ;@LD B,D\r
4636 opcode_4_2:\r
4637         and z80bc,z80bc,#0xFF<<16\r
4638         and r1,z80de,#0xFF<<24\r
4639         orr z80bc,z80bc,r1\r
4640         fetch 4\r
4641 ;@LD B,E\r
4642 opcode_4_3:\r
4643         and z80bc,z80bc,#0xFF<<16\r
4644         and r1,z80de,#0xFF<<16\r
4645         orr z80bc,z80bc,r1, lsl #8\r
4646         fetch 4\r
4647 ;@LD B,H\r
4648 opcode_4_4:\r
4649         and z80bc,z80bc,#0xFF<<16\r
4650         and r1,z80hl,#0xFF<<24\r
4651         orr z80bc,z80bc,r1\r
4652         fetch 4\r
4653 ;@LD B,L\r
4654 opcode_4_5:\r
4655         and z80bc,z80bc,#0xFF<<16\r
4656         and r1,z80hl,#0xFF<<16\r
4657         orr z80bc,z80bc,r1, lsl #8\r
4658         fetch 4\r
4659 ;@LD B,(HL)\r
4660 opcode_4_6:\r
4661         readmem8HL\r
4662         and z80bc,z80bc,#0xFF<<16\r
4663         orr z80bc,z80bc,r0, lsl #24\r
4664         fetch 7\r
4665 ;@LD B,A\r
4666 opcode_4_7:\r
4667         and z80bc,z80bc,#0xFF<<16\r
4668         orr z80bc,z80bc,z80a\r
4669         fetch 4\r
4670 ;@LD C,B\r
4671 opcode_4_8:\r
4672         and z80bc,z80bc,#0xFF<<24\r
4673         orr z80bc,z80bc,z80bc, lsr #8\r
4674         fetch 4\r
4675 ;@LD C,D\r
4676 opcode_4_A:\r
4677         and z80bc,z80bc,#0xFF<<24\r
4678         and r1,z80de,#0xFF<<24\r
4679         orr z80bc,z80bc,r1, lsr #8\r
4680         fetch 4\r
4681 ;@LD C,E\r
4682 opcode_4_B:\r
4683         and z80bc,z80bc,#0xFF<<24\r
4684         and r1,z80de,#0xFF<<16\r
4685         orr z80bc,z80bc,r1 \r
4686         fetch 4\r
4687 ;@LD C,H\r
4688 opcode_4_C:\r
4689         and z80bc,z80bc,#0xFF<<24\r
4690         and r1,z80hl,#0xFF<<24\r
4691         orr z80bc,z80bc,r1, lsr #8\r
4692         fetch 4\r
4693 ;@LD C,L\r
4694 opcode_4_D:\r
4695         and z80bc,z80bc,#0xFF<<24\r
4696         and r1,z80hl,#0xFF<<16\r
4697         orr z80bc,z80bc,r1 \r
4698         fetch 4\r
4699 ;@LD C,(HL)\r
4700 opcode_4_E:\r
4701         readmem8HL\r
4702         and z80bc,z80bc,#0xFF<<24\r
4703         orr z80bc,z80bc,r0, lsl #16\r
4704         fetch 7\r
4705 ;@LD C,A\r
4706 opcode_4_F:\r
4707         and z80bc,z80bc,#0xFF<<24\r
4708         orr z80bc,z80bc,z80a, lsr #8\r
4709         fetch 4\r
4710 ;@LD D,B\r
4711 opcode_5_0:\r
4712         and z80de,z80de,#0xFF<<16\r
4713         and r1,z80bc,#0xFF<<24\r
4714         orr z80de,z80de,r1\r
4715         fetch 4\r
4716 ;@LD D,C\r
4717 opcode_5_1:\r
4718         and z80de,z80de,#0xFF<<16\r
4719         orr z80de,z80de,z80bc, lsl #8\r
4720         fetch 4\r
4721 ;@LD D,E\r
4722 opcode_5_3:\r
4723         and z80de,z80de,#0xFF<<16\r
4724         orr z80de,z80de,z80de, lsl #8\r
4725         fetch 4\r
4726 ;@LD D,H\r
4727 opcode_5_4:\r
4728         and z80de,z80de,#0xFF<<16\r
4729         and r1,z80hl,#0xFF<<24\r
4730         orr z80de,z80de,r1\r
4731         fetch 4\r
4732 ;@LD D,L\r
4733 opcode_5_5:\r
4734         and z80de,z80de,#0xFF<<16\r
4735         orr z80de,z80de,z80hl, lsl #8\r
4736         fetch 4\r
4737 ;@LD D,(HL)\r
4738 opcode_5_6:\r
4739         readmem8HL\r
4740         and z80de,z80de,#0xFF<<16\r
4741         orr z80de,z80de,r0, lsl #24\r
4742         fetch 7\r
4743 ;@LD D,A\r
4744 opcode_5_7:\r
4745         and z80de,z80de,#0xFF<<16\r
4746         orr z80de,z80de,z80a\r
4747         fetch 4\r
4748 ;@LD E,B\r
4749 opcode_5_8:\r
4750         and z80de,z80de,#0xFF<<24\r
4751         and r1,z80bc,#0xFF<<24\r
4752         orr z80de,z80de,r1, lsr #8\r
4753         fetch 4\r
4754 ;@LD E,C\r
4755 opcode_5_9:\r
4756         and z80de,z80de,#0xFF<<24\r
4757         and r1,z80bc,#0xFF<<16\r
4758         orr z80de,z80de,r1 \r
4759         fetch 4\r
4760 ;@LD E,D\r
4761 opcode_5_A:\r
4762         and z80de,z80de,#0xFF<<24\r
4763         orr z80de,z80de,z80de, lsr #8\r
4764         fetch 4\r
4765 ;@LD E,H\r
4766 opcode_5_C:\r
4767         and z80de,z80de,#0xFF<<24\r
4768         and r1,z80hl,#0xFF<<24\r
4769         orr z80de,z80de,r1, lsr #8\r
4770         fetch 4\r
4771 ;@LD E,L\r
4772 opcode_5_D:\r
4773         and z80de,z80de,#0xFF<<24\r
4774         and r1,z80hl,#0xFF<<16\r
4775         orr z80de,z80de,r1 \r
4776         fetch 4\r
4777 ;@LD E,(HL)\r
4778 opcode_5_E:\r
4779         readmem8HL\r
4780         and z80de,z80de,#0xFF<<24\r
4781         orr z80de,z80de,r0, lsl #16\r
4782         fetch 7\r
4783 ;@LD E,A\r
4784 opcode_5_F:\r
4785         and z80de,z80de,#0xFF<<24\r
4786         orr z80de,z80de,z80a, lsr #8\r
4787         fetch 4\r
4788 \r
4789 ;@LD H,B\r
4790 opcode_6_0:\r
4791         and z80hl,z80hl,#0xFF<<16\r
4792         and r1,z80bc,#0xFF<<24\r
4793         orr z80hl,z80hl,r1\r
4794         fetch 4\r
4795 ;@LD H,C\r
4796 opcode_6_1:\r
4797         and z80hl,z80hl,#0xFF<<16\r
4798         orr z80hl,z80hl,z80bc, lsl #8\r
4799         fetch 4\r
4800 ;@LD H,D\r
4801 opcode_6_2:\r
4802         and z80hl,z80hl,#0xFF<<16\r
4803         and r1,z80de,#0xFF<<24\r
4804         orr z80hl,z80hl,r1\r
4805         fetch 4\r
4806 ;@LD H,E\r
4807 opcode_6_3:\r
4808         and z80hl,z80hl,#0xFF<<16\r
4809         orr z80hl,z80hl,z80de, lsl #8\r
4810         fetch 4\r
4811 ;@LD H,L\r
4812 opcode_6_5:\r
4813         and z80hl,z80hl,#0xFF<<16\r
4814         orr z80hl,z80hl,z80hl, lsl #8\r
4815         fetch 4\r
4816 ;@LD H,(HL)\r
4817 opcode_6_6:\r
4818         readmem8HL\r
4819         and z80hl,z80hl,#0xFF<<16\r
4820         orr z80hl,z80hl,r0, lsl #24\r
4821         fetch 7\r
4822 ;@LD H,A\r
4823 opcode_6_7:\r
4824         and z80hl,z80hl,#0xFF<<16\r
4825         orr z80hl,z80hl,z80a\r
4826         fetch 4\r
4827 \r
4828 ;@LD L,B\r
4829 opcode_6_8:\r
4830         and z80hl,z80hl,#0xFF<<24\r
4831         and r1,z80bc,#0xFF<<24\r
4832         orr z80hl,z80hl,r1, lsr #8\r
4833         fetch 4\r
4834 ;@LD L,C\r
4835 opcode_6_9:\r
4836         and z80hl,z80hl,#0xFF<<24\r
4837         and r1,z80bc,#0xFF<<16\r
4838         orr z80hl,z80hl,r1\r
4839         fetch 4\r
4840 ;@LD L,D\r
4841 opcode_6_A:\r
4842         and z80hl,z80hl,#0xFF<<24\r
4843         and r1,z80de,#0xFF<<24\r
4844         orr z80hl,z80hl,r1, lsr #8\r
4845         fetch 4\r
4846 ;@LD L,E\r
4847 opcode_6_B:\r
4848         and z80hl,z80hl,#0xFF<<24\r
4849         and r1,z80de,#0xFF<<16\r
4850         orr z80hl,z80hl,r1\r
4851         fetch 4\r
4852 ;@LD L,H\r
4853 opcode_6_C:\r
4854         and z80hl,z80hl,#0xFF<<24\r
4855         orr z80hl,z80hl,z80hl, lsr #8\r
4856         fetch 4\r
4857 ;@LD L,(HL)\r
4858 opcode_6_E:\r
4859         readmem8HL\r
4860         and z80hl,z80hl,#0xFF<<24\r
4861         orr z80hl,z80hl,r0, lsl #16\r
4862         fetch 7\r
4863 ;@LD L,A\r
4864 opcode_6_F:\r
4865         and z80hl,z80hl,#0xFF<<24\r
4866         orr z80hl,z80hl,z80a, lsr #8\r
4867         fetch 4\r
4868 \r
4869 ;@LD (HL),B\r
4870 opcode_7_0:\r
4871         mov r0,z80bc, lsr #24\r
4872         writemem8HL\r
4873         fetch 7\r
4874 ;@LD (HL),C\r
4875 opcode_7_1:\r
4876         mov r0,z80bc, lsr #16\r
4877         and r0,r0,#0xFF\r
4878         writemem8HL\r
4879         fetch 7\r
4880 ;@LD (HL),D\r
4881 opcode_7_2:\r
4882         mov r0,z80de, lsr #24\r
4883         writemem8HL\r
4884         fetch 7\r
4885 ;@LD (HL),E\r
4886 opcode_7_3:\r
4887         mov r0,z80de, lsr #16\r
4888         and r0,r0,#0xFF\r
4889         writemem8HL\r
4890         fetch 7\r
4891 ;@LD (HL),H\r
4892 opcode_7_4:\r
4893         mov r0,z80hl, lsr #24\r
4894         writemem8HL\r
4895         fetch 7\r
4896 ;@LD (HL),L\r
4897 opcode_7_5:\r
4898         mov r1,z80hl, lsr #16\r
4899         and r0,r1,#0xFF\r
4900         writemem8\r
4901         fetch 7\r
4902 ;@HALT\r
4903 opcode_7_6:\r
4904         sub z80pc,z80pc,#1\r
4905         ldrb r0,[cpucontext,#z80if]\r
4906         orr r0,r0,#Z80_HALT\r
4907         strb r0,[cpucontext,#z80if]\r
4908         mov z80_icount,#0\r
4909         b z80_execute_end\r
4910 ;@LD (HL),A\r
4911 opcode_7_7:\r
4912         mov r0,z80a, lsr #24\r
4913         writemem8HL\r
4914         fetch 7\r
4915 \r
4916 ;@LD A,B\r
4917 opcode_7_8:\r
4918         and z80a,z80bc,#0xFF<<24\r
4919         fetch 4\r
4920 ;@LD A,C\r
4921 opcode_7_9:\r
4922         mov z80a,z80bc, lsl #8\r
4923         fetch 4\r
4924 ;@LD A,D\r
4925 opcode_7_A:\r
4926         and z80a,z80de,#0xFF<<24\r
4927         fetch 4\r
4928 ;@LD A,E\r
4929 opcode_7_B:\r
4930         mov z80a,z80de, lsl #8\r
4931         fetch 4\r
4932 ;@LD A,H\r
4933 opcode_7_C:\r
4934         and z80a,z80hl,#0xFF<<24\r
4935         fetch 4\r
4936 ;@LD A,L\r
4937 opcode_7_D:\r
4938         mov z80a,z80hl, lsl #8\r
4939         fetch 4\r
4940 ;@LD A,(HL)\r
4941 opcode_7_E:\r
4942         readmem8HL\r
4943         mov z80a,r0, lsl #24\r
4944         fetch 7\r
4945 \r
4946 ;@ADD A,B\r
4947 opcode_8_0:\r
4948         opADDH z80bc\r
4949 ;@ADD A,C\r
4950 opcode_8_1:\r
4951         opADDL z80bc\r
4952 ;@ADD A,D\r
4953 opcode_8_2:\r
4954         opADDH z80de\r
4955 ;@ADD A,E\r
4956 opcode_8_3:\r
4957         opADDL z80de\r
4958 ;@ADD A,H\r
4959 opcode_8_4:\r
4960         opADDH z80hl\r
4961 ;@ADD A,L\r
4962 opcode_8_5:\r
4963         opADDL z80hl\r
4964 ;@ADD A,(HL)\r
4965 opcode_8_6:\r
4966         readmem8HL\r
4967         opADDb\r
4968         fetch 7\r
4969 ;@ADD A,A\r
4970 opcode_8_7:\r
4971         opADDA\r
4972 \r
4973 ;@ADC A,B\r
4974 opcode_8_8:\r
4975         opADCH z80bc\r
4976 ;@ADC A,C\r
4977 opcode_8_9:\r
4978         opADCL z80bc\r
4979 ;@ADC A,D\r
4980 opcode_8_A:\r
4981         opADCH z80de\r
4982 ;@ADC A,E\r
4983 opcode_8_B:\r
4984         opADCL z80de\r
4985 ;@ADC A,H\r
4986 opcode_8_C:\r
4987         opADCH z80hl\r
4988 ;@ADC A,L\r
4989 opcode_8_D:\r
4990         opADCL z80hl\r
4991 ;@ADC A,(HL)\r
4992 opcode_8_E:\r
4993         readmem8HL\r
4994         opADCb\r
4995         fetch 7\r
4996 ;@ADC A,A\r
4997 opcode_8_F:\r
4998         opADCA\r
4999 \r
5000 ;@SUB B\r
5001 opcode_9_0:\r
5002         opSUBH z80bc\r
5003 ;@SUB C\r
5004 opcode_9_1:\r
5005         opSUBL z80bc\r
5006 ;@SUB D\r
5007 opcode_9_2:\r
5008         opSUBH z80de\r
5009 ;@SUB E\r
5010 opcode_9_3:\r
5011         opSUBL z80de\r
5012 ;@SUB H\r
5013 opcode_9_4:\r
5014         opSUBH z80hl\r
5015 ;@SUB L\r
5016 opcode_9_5:\r
5017         opSUBL z80hl\r
5018 ;@SUB (HL)\r
5019 opcode_9_6:\r
5020         readmem8HL\r
5021         opSUBb\r
5022         fetch 7\r
5023 ;@SUB A\r
5024 opcode_9_7:\r
5025         opSUBA\r
5026 \r
5027 ;@SBC B \r
5028 opcode_9_8:\r
5029         opSBCH z80bc\r
5030 ;@SBC C\r
5031 opcode_9_9:\r
5032         opSBCL z80bc\r
5033 ;@SBC D\r
5034 opcode_9_A:\r
5035         opSBCH z80de\r
5036 ;@SBC E\r
5037 opcode_9_B:\r
5038         opSBCL z80de\r
5039 ;@SBC H\r
5040 opcode_9_C:\r
5041         opSBCH z80hl\r
5042 ;@SBC L\r
5043 opcode_9_D:\r
5044         opSBCL z80hl\r
5045 ;@SBC (HL)\r
5046 opcode_9_E:\r
5047         readmem8HL\r
5048         opSBCb\r
5049         fetch 7\r
5050 ;@SBC A\r
5051 opcode_9_F:\r
5052         opSBCA\r
5053 \r
5054 ;@AND B\r
5055 opcode_A_0:\r
5056         opANDH z80bc\r
5057 ;@AND C\r
5058 opcode_A_1:\r
5059         opANDL z80bc\r
5060 ;@AND D\r
5061 opcode_A_2:\r
5062         opANDH z80de\r
5063 ;@AND E\r
5064 opcode_A_3:\r
5065         opANDL z80de\r
5066 ;@AND H\r
5067 opcode_A_4:\r
5068         opANDH z80hl\r
5069 ;@AND L\r
5070 opcode_A_5:\r
5071         opANDL z80hl\r
5072 ;@AND (HL)\r
5073 opcode_A_6:\r
5074         readmem8HL\r
5075         opANDb\r
5076         fetch 7\r
5077 ;@AND A\r
5078 opcode_A_7:\r
5079         opANDA\r
5080 \r
5081 ;@XOR B\r
5082 opcode_A_8:\r
5083         opXORH z80bc\r
5084 ;@XOR C\r
5085 opcode_A_9:\r
5086         opXORL z80bc\r
5087 ;@XOR D\r
5088 opcode_A_A:\r
5089         opXORH z80de\r
5090 ;@XOR E\r
5091 opcode_A_B:\r
5092         opXORL z80de\r
5093 ;@XOR H\r
5094 opcode_A_C:\r
5095         opXORH z80hl\r
5096 ;@XOR L\r
5097 opcode_A_D:\r
5098         opXORL z80hl\r
5099 ;@XOR (HL)\r
5100 opcode_A_E:\r
5101         readmem8HL\r
5102         opXORb\r
5103         fetch 7\r
5104 ;@XOR A\r
5105 opcode_A_F:\r
5106         opXORA\r
5107 \r
5108 ;@OR B\r
5109 opcode_B_0:\r
5110         opORH z80bc\r
5111 ;@OR C\r
5112 opcode_B_1:\r
5113         opORL z80bc\r
5114 ;@OR D\r
5115 opcode_B_2:\r
5116         opORH z80de\r
5117 ;@OR E\r
5118 opcode_B_3:\r
5119         opORL z80de\r
5120 ;@OR H\r
5121 opcode_B_4:\r
5122         opORH z80hl\r
5123 ;@OR L\r
5124 opcode_B_5:\r
5125         opORL z80hl\r
5126 ;@OR (HL)\r
5127 opcode_B_6:\r
5128         readmem8HL\r
5129         opORb\r
5130         fetch 7\r
5131 ;@OR A\r
5132 opcode_B_7:\r
5133         opORA\r
5134 \r
5135 ;@CP B\r
5136 opcode_B_8:\r
5137         opCPH z80bc\r
5138 ;@CP C\r
5139 opcode_B_9:\r
5140         opCPL z80bc\r
5141 ;@CP D\r
5142 opcode_B_A:\r
5143         opCPH z80de\r
5144 ;@CP E\r
5145 opcode_B_B:\r
5146         opCPL z80de\r
5147 ;@CP H\r
5148 opcode_B_C:\r
5149         opCPH z80hl\r
5150 ;@CP L\r
5151 opcode_B_D:\r
5152         opCPL z80hl\r
5153 ;@CP (HL)\r
5154 opcode_B_E:\r
5155         readmem8HL\r
5156         opCPb\r
5157         fetch 7\r
5158 ;@CP A\r
5159 opcode_B_F:\r
5160         opCPA\r
5161 \r
5162 ;@RET NZ\r
5163 opcode_C_0:\r
5164         tst z80f,#1<<ZFlag\r
5165         beq opcode_C_9_cond             ;@unconditional RET\r
5166         fetch 5\r
5167 \r
5168 ;@POP BC\r
5169 opcode_C_1:\r
5170         opPOPreg z80bc\r
5171 \r
5172 ;@JP NZ,$+3\r
5173 opcode_C_2:\r
5174         tst z80f,#1<<ZFlag\r
5175         beq opcode_C_3          ;@unconditional JP\r
5176         add z80pc,z80pc,#2\r
5177         fetch 10\r
5178 ;@JP $+3\r
5179 opcode_C_3:\r
5180         ldrb r0,[z80pc],#1\r
5181         ldrb r1,[z80pc],#1\r
5182         orr r0,r0,r1, lsl #8\r
5183         rebasepc\r
5184         fetch 10\r
5185 ;@CALL NZ,NN\r
5186 opcode_C_4:\r
5187         tst z80f,#1<<ZFlag\r
5188         beq opcode_C_D          ;@unconditional CALL\r
5189         add z80pc,z80pc,#2\r
5190         fetch 10\r
5191 \r
5192 ;@PUSH BC\r
5193 opcode_C_5:\r
5194         opPUSHreg z80bc\r
5195         fetch 11\r
5196 ;@ADD A,N\r
5197 opcode_C_6:\r
5198         ldrb r0,[z80pc],#1\r
5199         opADDb\r
5200         fetch 7\r
5201 ;@RST 0\r
5202 opcode_C_7:\r
5203         opRST 0x00\r
5204 \r
5205 ;@RET Z\r
5206 opcode_C_8:\r
5207         tst z80f,#1<<ZFlag\r
5208         bne opcode_C_9_cond             ;@unconditional RET\r
5209         fetch 5\r
5210 \r
5211 opcode_C_9_cond:\r
5212         eatcycles 1\r
5213 ;@RET\r
5214 opcode_C_9:\r
5215     opPOP\r
5216         rebasepc\r
5217         fetch 10\r
5218 ;@JP Z,$+3\r
5219 opcode_C_A:\r
5220         tst z80f,#1<<ZFlag\r
5221         bne opcode_C_3  ;@unconditional JP\r
5222         add z80pc,z80pc,#2\r
5223         fetch 10\r
5224 \r
5225 ;@This reads this opcodes_CB lookup table to find the location of\r
5226 ;@the CB sub for the intruction and then branches to that location\r
5227 opcode_C_B:\r
5228         ldrb r0,[z80pc],#1\r
5229         ldr pc,[pc,r0, lsl #2]\r
5230 opcodes_CB:     .word 0x00000000\r
5231                         .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
5232                         .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
5233                         .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
5234                         .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
5235                         .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
5236                         .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
5237                         .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
5238                         .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
5239                         .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
5240                         .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
5241                         .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
5242                         .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
5243                         .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
5244                         .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
5245                         .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
5246                         .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
5247                         .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
5248                         .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
5249                         .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
5250                         .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
5251                         .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
5252                         .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
5253                         .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
5254                         .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
5255                         .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
5256                         .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
5257                         .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
5258                         .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
5259                         .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
5260                         .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
5261                         .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
5262                         .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
5263 \r
5264 ;@CALL Z,NN\r
5265 opcode_C_C:\r
5266         tst z80f,#1<<ZFlag\r
5267         bne opcode_C_D          ;@unconditional CALL\r
5268         add z80pc,z80pc,#2\r
5269         fetch 10\r
5270 ;@CALL NN\r
5271 opcode_C_D:\r
5272         ldrb r0,[z80pc],#1\r
5273         ldrb r1,[z80pc],#1\r
5274         ldr r2,[cpucontext,#z80pc_base]\r
5275         sub r2,z80pc,r2\r
5276         orr z80pc,r0,r1, lsl #8\r
5277     opPUSHareg r2\r
5278     mov r0,z80pc\r
5279         rebasepc\r
5280         fetch 17\r
5281 ;@ADC A,N\r
5282 opcode_C_E:\r
5283         ldrb r0,[z80pc],#1\r
5284         opADCb\r
5285         fetch 7\r
5286 ;@RST 8H\r
5287 opcode_C_F:\r
5288         opRST 0x08\r
5289 \r
5290 ;@RET NC\r
5291 opcode_D_0:\r
5292         tst z80f,#1<<CFlag\r
5293         beq opcode_C_9_cond             ;@unconditional RET\r
5294         fetch 5\r
5295 ;@POP DE\r
5296 opcode_D_1:\r
5297         opPOPreg z80de\r
5298 \r
5299 ;@JP NC, $+3\r
5300 opcode_D_2 :\r
5301         tst z80f,#1<<CFlag\r
5302         beq opcode_C_3          ;@unconditional JP\r
5303         add z80pc,z80pc,#2\r
5304         fetch 10\r
5305 ;@OUT (N),A\r
5306 opcode_D_3:\r
5307         ldrb r0,[z80pc],#1\r
5308         orr r0,r0,z80a,lsr#16\r
5309         mov r1,z80a, lsr #24\r
5310         opOUT\r
5311         fetch 11\r
5312 ;@CALL NC,NN\r
5313 opcode_D_4:\r
5314         tst z80f,#1<<CFlag\r
5315         beq opcode_C_D          ;@unconditional CALL\r
5316         add z80pc,z80pc,#2\r
5317         fetch 10\r
5318 ;@PUSH DE\r
5319 opcode_D_5:\r
5320         opPUSHreg z80de\r
5321         fetch 11\r
5322 ;@SUB N\r
5323 opcode_D_6:\r
5324         ldrb r0,[z80pc],#1\r
5325         opSUBb\r
5326         fetch 7\r
5327 \r
5328 ;@RST 10H\r
5329 opcode_D_7:\r
5330         opRST 0x10\r
5331 \r
5332 ;@RET C\r
5333 opcode_D_8:\r
5334         tst z80f,#1<<CFlag\r
5335         bne opcode_C_9_cond             ;@unconditional RET\r
5336         fetch 5\r
5337 ;@EXX\r
5338 opcode_D_9:\r
5339         add r1,cpucontext,#z80bc2\r
5340         swp z80bc,z80bc,[r1]\r
5341         add r1,cpucontext,#z80de2\r
5342         swp z80de,z80de,[r1]\r
5343         add r1,cpucontext,#z80hl2\r
5344         swp z80hl,z80hl,[r1]\r
5345         fetch 4\r
5346 ;@JP C,$+3\r
5347 opcode_D_A:\r
5348         tst z80f,#1<<CFlag\r
5349         bne opcode_C_3          ;@unconditional JP\r
5350         add z80pc,z80pc,#2\r
5351         fetch 10\r
5352 ;@IN A,(N)\r
5353 opcode_D_B:\r
5354         ldrb r0,[z80pc],#1\r
5355         orr r0,r0,z80a,lsr#16\r
5356         opIN\r
5357         mov z80a,r0, lsl #24    ;@ r0 = data read\r
5358         fetch 11\r
5359 ;@CALL C,NN\r
5360 opcode_D_C:\r
5361         tst z80f,#1<<CFlag\r
5362         bne opcode_C_D          ;@unconditional CALL\r
5363         add z80pc,z80pc,#2\r
5364         fetch 10\r
5365 \r
5366 ;@opcodes_DD\r
5367 opcode_D_D:\r
5368         add z80xx,cpucontext,#z80ix\r
5369         b opcode_D_D_F_D\r
5370 opcode_F_D:\r
5371         add z80xx,cpucontext,#z80iy\r
5372 opcode_D_D_F_D:\r
5373         ldrb r0,[z80pc],#1\r
5374         ldr pc,[pc,r0, lsl #2]\r
5375 opcodes_DD:     .word 0x00000000\r
5376                         .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
5377                         .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
5378                         .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
5379                         .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
5380                         .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
5381                         .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
5382                         .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
5383                         .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
5384                         .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
5385                         .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
5386                         .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
5387                         .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
5388                         .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
5389                         .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
5390                         .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
5391                         .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
5392                         .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
5393                         .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
5394                         .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
5395                         .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
5396                         .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
5397                         .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
5398                         .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
5399                         .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
5400                         .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
5401                         .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
5402                         .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
5403                         .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
5404                         .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
5405                         .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
5406                         .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
5407                         .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
5408 \r
5409 ;@SBC A,N\r
5410 opcode_D_E:\r
5411         ldrb r0,[z80pc],#1\r
5412         opSBCb\r
5413         fetch 7\r
5414 ;@RST 18H\r
5415 opcode_D_F:\r
5416         opRST 0x18\r
5417 \r
5418 ;@RET PO\r
5419 opcode_E_0:\r
5420         tst z80f,#1<<VFlag\r
5421         beq opcode_C_9_cond             ;@unconditional RET\r
5422         fetch 5\r
5423 ;@POP HL\r
5424 opcode_E_1:\r
5425         opPOPreg z80hl\r
5426 \r
5427 ;@JP PO,$+3\r
5428 opcode_E_2:\r
5429         tst z80f,#1<<VFlag\r
5430         beq opcode_C_3          ;@unconditional JP\r
5431         add z80pc,z80pc,#2\r
5432         fetch 10\r
5433 ;@EX (SP),HL\r
5434 opcode_E_3:\r
5435 .if FAST_Z80SP\r
5436         ldrb r0,[z80sp]\r
5437         ldrb r1,[z80sp,#1]\r
5438         orr r0,r0,r1, lsl #8\r
5439         mov r1,z80hl, lsr #24\r
5440         strb r1,[z80sp,#1]\r
5441         mov r1,z80hl, lsr #16\r
5442         strb r1,[z80sp]\r
5443         mov z80hl,r0, lsl #16\r
5444 .else\r
5445         mov r0,z80sp\r
5446         readmem16\r
5447         mov r1,r0\r
5448         mov r0,z80hl,lsr#16\r
5449         mov z80hl,r1,lsl#16\r
5450         mov r1,z80sp\r
5451         writemem16\r
5452 .endif\r
5453         fetch 19\r
5454 ;@CALL PO,NN\r
5455 opcode_E_4:\r
5456         tst z80f,#1<<VFlag\r
5457         beq opcode_C_D          ;@unconditional CALL\r
5458         add z80pc,z80pc,#2\r
5459         fetch 10\r
5460 ;@PUSH HL\r
5461 opcode_E_5:\r
5462         opPUSHreg z80hl\r
5463         fetch 11\r
5464 ;@AND N\r
5465 opcode_E_6:\r
5466         ldrb r0,[z80pc],#1\r
5467         opANDb\r
5468         fetch 7\r
5469 ;@RST 20H\r
5470 opcode_E_7:\r
5471         opRST 0x20\r
5472 \r
5473 ;@RET PE\r
5474 opcode_E_8:\r
5475         tst z80f,#1<<VFlag\r
5476         bne opcode_C_9_cond             ;@unconditional RET\r
5477         fetch 5\r
5478 ;@JP (HL)\r
5479 opcode_E_9:\r
5480         mov r0,z80hl, lsr #16\r
5481         rebasepc\r
5482         fetch 4\r
5483 ;@JP PE,$+3\r
5484 opcode_E_A:\r
5485         tst z80f,#1<<VFlag\r
5486         bne opcode_C_3          ;@unconditional JP\r
5487         add z80pc,z80pc,#2\r
5488         fetch 10\r
5489 ;@EX DE,HL\r
5490 opcode_E_B:\r
5491         mov r1,z80de\r
5492         mov z80de,z80hl\r
5493         mov z80hl,r1\r
5494         fetch 4\r
5495 ;@CALL PE,NN\r
5496 opcode_E_C:\r
5497         tst z80f,#1<<VFlag\r
5498         bne opcode_C_D          ;@unconditional CALL\r
5499         add z80pc,z80pc,#2\r
5500         fetch 10\r
5501 \r
5502 ;@This should be caught at start\r
5503 opcode_E_D:\r
5504         ldrb r1,[z80pc],#1\r
5505         ldr pc,[pc,r1, lsl #2]\r
5506 opcodes_ED:     .word 0x00000000\r
5507                         .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
5508                         .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
5509                         .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
5510                         .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
5511                         .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
5512                         .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
5513                         .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
5514                         .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
5515                         .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
5516                         .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
5517                         .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
5518                         .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
5519                         .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
5520                         .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
5521                         .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
5522                         .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
5523                         .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
5524                         .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
5525                         .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
5526                         .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
5527                         .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
5528                         .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
5529                         .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
5530                         .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
5531                         .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
5532                         .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
5533                         .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
5534                         .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
5535                         .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
5536                         .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
5537                         .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
5538                         .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
5539 \r
5540 ;@XOR N\r
5541 opcode_E_E:\r
5542         ldrb r0,[z80pc],#1\r
5543         opXORb\r
5544         fetch 7\r
5545 ;@RST 28H\r
5546 opcode_E_F:\r
5547         opRST 0x28\r
5548 \r
5549 ;@RET P\r
5550 opcode_F_0:\r
5551         tst z80f,#1<<SFlag\r
5552         beq opcode_C_9_cond             ;@unconditional RET\r
5553         fetch 5\r
5554 ;@POP AF\r
5555 opcode_F_1:\r
5556 .if FAST_Z80SP\r
5557         ldrb z80f,[z80sp],#1\r
5558         sub r0,opcodes,#0x200\r
5559         ldrb z80f,[r0,z80f]\r
5560         ldrb z80a,[z80sp],#1\r
5561         mov z80a,z80a, lsl #24\r
5562 .else\r
5563         mov r0,z80sp\r
5564         readmem16\r
5565         add z80sp,z80sp,#2\r
5566         and z80a,r0,#0xFF00\r
5567         mov z80a,z80a,lsl#16\r
5568         and z80f,r0,#0xFF\r
5569         sub r0,opcodes,#0x200\r
5570         ldrb z80f,[r0,z80f]\r
5571 .endif\r
5572         fetch 10\r
5573 ;@JP P,$+3\r
5574 opcode_F_2:\r
5575         tst z80f,#1<<SFlag\r
5576         beq opcode_C_3          ;@unconditional JP\r
5577         add z80pc,z80pc,#2\r
5578         fetch 10\r
5579 ;@DI\r
5580 opcode_F_3:\r
5581         ldrb r1,[cpucontext,#z80if]\r
5582         bic r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5583         strb r1,[cpucontext,#z80if]\r
5584         fetch 4\r
5585 ;@CALL P,NN\r
5586 opcode_F_4:\r
5587         tst z80f,#1<<SFlag\r
5588         beq opcode_C_D          ;@unconditional CALL\r
5589         add z80pc,z80pc,#2\r
5590         fetch 10\r
5591 ;@PUSH AF\r
5592 opcode_F_5:\r
5593         sub r0,opcodes,#0x300\r
5594         ldrb r0,[r0,z80f]\r
5595         orr r2,r0,z80a,lsr#16\r
5596     opPUSHareg r2\r
5597         fetch 11\r
5598 ;@OR N\r
5599 opcode_F_6:\r
5600         ldrb r0,[z80pc],#1\r
5601         opORb\r
5602         fetch 7\r
5603 ;@RST 30H\r
5604 opcode_F_7:\r
5605         opRST 0x30\r
5606 \r
5607 ;@RET M\r
5608 opcode_F_8:\r
5609         tst z80f,#1<<SFlag\r
5610         bne opcode_C_9_cond             ;@unconditional RET\r
5611         fetch 5\r
5612 ;@LD SP,HL\r
5613 opcode_F_9:\r
5614 .if FAST_Z80SP\r
5615         mov r0,z80hl, lsr #16\r
5616         rebasesp\r
5617 .else\r
5618         mov z80sp,z80hl, lsr #16\r
5619 .endif\r
5620         fetch 6\r
5621 ;@JP M,$+3\r
5622 opcode_F_A:\r
5623         tst z80f,#1<<SFlag\r
5624         bne opcode_C_3          ;@unconditional JP\r
5625         add z80pc,z80pc,#2\r
5626         fetch 10\r
5627 MAIN_opcodes_POINTER: .word MAIN_opcodes\r
5628 EI_DUMMY_opcodes_POINTER: .word EI_DUMMY_opcodes\r
5629 ;@EI\r
5630 opcode_F_B:\r
5631         ldrb r1,[cpucontext,#z80if]\r
5632         mov r2,opcodes\r
5633         orr r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5634         strb r1,[cpucontext,#z80if]\r
5635 \r
5636         ldrb r0,[z80pc],#1\r
5637         eatcycles 4\r
5638         ldr opcodes,EI_DUMMY_opcodes_POINTER\r
5639         ldr pc,[r2,r0, lsl #2]\r
5640 \r
5641 ei_return:\r
5642         ;@point that program returns from EI to check interupts\r
5643         ;@an interupt can not be taken directly after a EI opcode\r
5644         ;@ reset z80pc and opcode pointer\r
5645         ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
5646         sub z80pc,z80pc,#1\r
5647         ldr opcodes,MAIN_opcodes_POINTER\r
5648         ;@ check ints\r
5649         tst r0,#0xff\r
5650         movne r0,r0,lsr #8\r
5651         tstne r0,#Z80_IF1\r
5652         blne DoInterrupt\r
5653 \r
5654         ;@ continue\r
5655         fetch 0\r
5656 \r
5657 ;@CALL M,NN\r
5658 opcode_F_C:\r
5659         tst z80f,#1<<SFlag\r
5660         bne opcode_C_D          ;@unconditional CALL\r
5661         add z80pc,z80pc,#2\r
5662         fetch 10\r
5663 \r
5664 ;@SHOULD BE CAUGHT AT START - FD SECTION\r
5665 \r
5666 ;@CP N\r
5667 opcode_F_E:\r
5668         ldrb r0,[z80pc],#1\r
5669         opCPb\r
5670         fetch 7\r
5671 ;@RST 38H\r
5672 opcode_F_F:\r
5673         opRST 0x38\r
5674 \r
5675 \r
5676 ;@##################################\r
5677 ;@##################################\r
5678 ;@###  opcodes CB  #########################\r
5679 ;@##################################\r
5680 ;@##################################\r
5681 \r
5682 \r
5683 ;@RLC B\r
5684 opcode_CB_00:\r
5685         opRLCH z80bc\r
5686 ;@RLC C\r
5687 opcode_CB_01:\r
5688         opRLCL z80bc\r
5689 ;@RLC D\r
5690 opcode_CB_02:\r
5691         opRLCH z80de\r
5692 ;@RLC E\r
5693 opcode_CB_03:\r
5694         opRLCL z80de\r
5695 ;@RLC H\r
5696 opcode_CB_04:\r
5697         opRLCH z80hl\r
5698 ;@RLC L\r
5699 opcode_CB_05:\r
5700         opRLCL z80hl\r
5701 ;@RLC (HL)\r
5702 opcode_CB_06:\r
5703         readmem8HL\r
5704         opRLCb\r
5705         writemem8HL\r
5706         fetch 15\r
5707 ;@RLC A\r
5708 opcode_CB_07:\r
5709         opRLCA\r
5710 \r
5711 ;@RRC B\r
5712 opcode_CB_08:\r
5713         opRRCH z80bc\r
5714 ;@RRC C\r
5715 opcode_CB_09:\r
5716         opRRCL z80bc\r
5717 ;@RRC D\r
5718 opcode_CB_0A:\r
5719         opRRCH z80de\r
5720 ;@RRC E\r
5721 opcode_CB_0B:\r
5722         opRRCL z80de\r
5723 ;@RRC H\r
5724 opcode_CB_0C:\r
5725         opRRCH z80hl\r
5726 ;@RRC L\r
5727 opcode_CB_0D:\r
5728         opRRCL z80hl\r
5729 ;@RRC (HL)\r
5730 opcode_CB_0E :\r
5731         readmem8HL\r
5732         opRRCb\r
5733         writemem8HL\r
5734         fetch 15\r
5735 ;@RRC A\r
5736 opcode_CB_0F:\r
5737         opRRCA\r
5738 \r
5739 ;@RL B\r
5740 opcode_CB_10:\r
5741         opRLH z80bc\r
5742 ;@RL C\r
5743 opcode_CB_11:\r
5744         opRLL z80bc\r
5745 ;@RL D\r
5746 opcode_CB_12:\r
5747         opRLH z80de\r
5748 ;@RL E\r
5749 opcode_CB_13:\r
5750         opRLL z80de\r
5751 ;@RL H\r
5752 opcode_CB_14:\r
5753         opRLH z80hl\r
5754 ;@RL L\r
5755 opcode_CB_15:\r
5756         opRLL z80hl\r
5757 ;@RL (HL)\r
5758 opcode_CB_16:\r
5759         readmem8HL\r
5760         opRLb\r
5761         writemem8HL\r
5762         fetch 15\r
5763 ;@RL A\r
5764 opcode_CB_17:\r
5765         opRLA\r
5766 \r
5767 ;@RR B \r
5768 opcode_CB_18:\r
5769         opRRH z80bc\r
5770 ;@RR C\r
5771 opcode_CB_19:\r
5772         opRRL z80bc\r
5773 ;@RR D\r
5774 opcode_CB_1A:\r
5775         opRRH z80de\r
5776 ;@RR E\r
5777 opcode_CB_1B:\r
5778         opRRL z80de\r
5779 ;@RR H\r
5780 opcode_CB_1C:\r
5781         opRRH z80hl\r
5782 ;@RR L\r
5783 opcode_CB_1D:\r
5784         opRRL z80hl\r
5785 ;@RR (HL)\r
5786 opcode_CB_1E:\r
5787         readmem8HL\r
5788         opRRb\r
5789         writemem8HL\r
5790         fetch 15\r
5791 ;@RR A\r
5792 opcode_CB_1F:\r
5793         opRRA\r
5794 \r
5795 ;@SLA B\r
5796 opcode_CB_20:\r
5797         opSLAH z80bc\r
5798 ;@SLA C\r
5799 opcode_CB_21:\r
5800         opSLAL z80bc\r
5801 ;@SLA D\r
5802 opcode_CB_22:\r
5803         opSLAH z80de\r
5804 ;@SLA E\r
5805 opcode_CB_23:\r
5806         opSLAL z80de\r
5807 ;@SLA H\r
5808 opcode_CB_24:\r
5809         opSLAH z80hl\r
5810 ;@SLA L\r
5811 opcode_CB_25:\r
5812         opSLAL z80hl\r
5813 ;@SLA (HL)\r
5814 opcode_CB_26:\r
5815         readmem8HL\r
5816         opSLAb\r
5817         writemem8HL\r
5818         fetch 15\r
5819 ;@SLA A\r
5820 opcode_CB_27:\r
5821         opSLAA\r
5822 \r
5823 ;@SRA B\r
5824 opcode_CB_28:\r
5825         opSRAH z80bc\r
5826 ;@SRA C\r
5827 opcode_CB_29:\r
5828         opSRAL z80bc\r
5829 ;@SRA D\r
5830 opcode_CB_2A:\r
5831         opSRAH z80de\r
5832 ;@SRA E\r
5833 opcode_CB_2B:\r
5834         opSRAL z80de\r
5835 ;@SRA H\r
5836 opcode_CB_2C:\r
5837         opSRAH z80hl\r
5838 ;@SRA L\r
5839 opcode_CB_2D:\r
5840         opSRAL z80hl\r
5841 ;@SRA (HL)\r
5842 opcode_CB_2E:\r
5843         readmem8HL\r
5844         opSRAb\r
5845         writemem8HL\r
5846         fetch 15\r
5847 ;@SRA A\r
5848 opcode_CB_2F:\r
5849         opSRAA\r
5850 \r
5851 ;@SLL B\r
5852 opcode_CB_30:\r
5853         opSLLH z80bc\r
5854 ;@SLL C\r
5855 opcode_CB_31:\r
5856         opSLLL z80bc\r
5857 ;@SLL D\r
5858 opcode_CB_32:\r
5859         opSLLH z80de\r
5860 ;@SLL E\r
5861 opcode_CB_33:\r
5862         opSLLL z80de\r
5863 ;@SLL H\r
5864 opcode_CB_34:\r
5865         opSLLH z80hl\r
5866 ;@SLL L\r
5867 opcode_CB_35:\r
5868         opSLLL z80hl\r
5869 ;@SLL (HL)\r
5870 opcode_CB_36:\r
5871         readmem8HL\r
5872         opSLLb\r
5873         writemem8HL\r
5874         fetch 15\r
5875 ;@SLL A\r
5876 opcode_CB_37:\r
5877         opSLLA\r
5878 \r
5879 ;@SRL B\r
5880 opcode_CB_38:\r
5881         opSRLH z80bc\r
5882 ;@SRL C\r
5883 opcode_CB_39:\r
5884         opSRLL z80bc\r
5885 ;@SRL D\r
5886 opcode_CB_3A:\r
5887         opSRLH z80de\r
5888 ;@SRL E\r
5889 opcode_CB_3B:\r
5890         opSRLL z80de\r
5891 ;@SRL H\r
5892 opcode_CB_3C:\r
5893         opSRLH z80hl\r
5894 ;@SRL L\r
5895 opcode_CB_3D:\r
5896         opSRLL z80hl\r
5897 ;@SRL (HL)\r
5898 opcode_CB_3E:\r
5899         readmem8HL\r
5900         opSRLb\r
5901         writemem8HL\r
5902         fetch 15\r
5903 ;@SRL A\r
5904 opcode_CB_3F:\r
5905         opSRLA\r
5906 \r
5907 \r
5908 ;@BIT 0,B\r
5909 opcode_CB_40:\r
5910         opBITH z80bc 0\r
5911 ;@BIT 0,C\r
5912 opcode_CB_41:\r
5913         opBITL z80bc 0\r
5914 ;@BIT 0,D\r
5915 opcode_CB_42:\r
5916         opBITH z80de 0\r
5917 ;@BIT 0,E\r
5918 opcode_CB_43:\r
5919         opBITL z80de 0\r
5920 ;@BIT 0,H\r
5921 opcode_CB_44:\r
5922         opBITH z80hl 0\r
5923 ;@BIT 0,L\r
5924 opcode_CB_45:\r
5925         opBITL z80hl 0\r
5926 ;@BIT 0,(HL)\r
5927 opcode_CB_46:\r
5928         readmem8HL\r
5929         opBITb 0\r
5930         fetch 12\r
5931 ;@BIT 0,A\r
5932 opcode_CB_47:\r
5933         opBITH z80a 0\r
5934 \r
5935 ;@BIT 1,B\r
5936 opcode_CB_48:\r
5937         opBITH z80bc 1\r
5938 ;@BIT 1,C\r
5939 opcode_CB_49:\r
5940         opBITL z80bc 1\r
5941 ;@BIT 1,D\r
5942 opcode_CB_4A:\r
5943         opBITH z80de 1\r
5944 ;@BIT 1,E\r
5945 opcode_CB_4B:\r
5946         opBITL z80de 1\r
5947 ;@BIT 1,H\r
5948 opcode_CB_4C:\r
5949         opBITH z80hl 1\r
5950 ;@BIT 1,L\r
5951 opcode_CB_4D:\r
5952         opBITL z80hl 1\r
5953 ;@BIT 1,(HL)\r
5954 opcode_CB_4E:\r
5955         readmem8HL\r
5956         opBITb 1\r
5957         fetch 12\r
5958 ;@BIT 1,A\r
5959 opcode_CB_4F:\r
5960         opBITH z80a 1\r
5961 \r
5962 ;@BIT 2,B\r
5963 opcode_CB_50:\r
5964         opBITH z80bc 2\r
5965 ;@BIT 2,C\r
5966 opcode_CB_51:\r
5967         opBITL z80bc 2\r
5968 ;@BIT 2,D\r
5969 opcode_CB_52:\r
5970         opBITH z80de 2\r
5971 ;@BIT 2,E\r
5972 opcode_CB_53:\r
5973         opBITL z80de 2\r
5974 ;@BIT 2,H\r
5975 opcode_CB_54:\r
5976         opBITH z80hl 2\r
5977 ;@BIT 2,L\r
5978 opcode_CB_55:\r
5979         opBITL z80hl 2\r
5980 ;@BIT 2,(HL)\r
5981 opcode_CB_56:\r
5982         readmem8HL\r
5983         opBITb 2\r
5984         fetch 12\r
5985 ;@BIT 2,A\r
5986 opcode_CB_57:\r
5987         opBITH z80a 2\r
5988 \r
5989 ;@BIT 3,B\r
5990 opcode_CB_58:\r
5991         opBITH z80bc 3\r
5992 ;@BIT 3,C\r
5993 opcode_CB_59:\r
5994         opBITL z80bc 3\r
5995 ;@BIT 3,D\r
5996 opcode_CB_5A:\r
5997         opBITH z80de 3\r
5998 ;@BIT 3,E\r
5999 opcode_CB_5B:\r
6000         opBITL z80de 3\r
6001 ;@BIT 3,H\r
6002 opcode_CB_5C:\r
6003         opBITH z80hl 3\r
6004 ;@BIT 3,L\r
6005 opcode_CB_5D:\r
6006         opBITL z80hl 3\r
6007 ;@BIT 3,(HL)\r
6008 opcode_CB_5E:\r
6009         readmem8HL\r
6010         opBITb 3\r
6011         fetch 12\r
6012 ;@BIT 3,A\r
6013 opcode_CB_5F:\r
6014         opBITH z80a 3\r
6015 \r
6016 ;@BIT 4,B\r
6017 opcode_CB_60:\r
6018         opBITH z80bc 4\r
6019 ;@BIT 4,C\r
6020 opcode_CB_61:\r
6021         opBITL z80bc 4\r
6022 ;@BIT 4,D\r
6023 opcode_CB_62:\r
6024         opBITH z80de 4\r
6025 ;@BIT 4,E\r
6026 opcode_CB_63:\r
6027         opBITL z80de 4\r
6028 ;@BIT 4,H\r
6029 opcode_CB_64:\r
6030         opBITH z80hl 4\r
6031 ;@BIT 4,L\r
6032 opcode_CB_65:\r
6033         opBITL z80hl 4\r
6034 ;@BIT 4,(HL)\r
6035 opcode_CB_66:\r
6036         readmem8HL\r
6037         opBITb 4\r
6038         fetch 12\r
6039 ;@BIT 4,A\r
6040 opcode_CB_67:\r
6041         opBITH z80a 4\r
6042 \r
6043 ;@BIT 5,B\r
6044 opcode_CB_68:\r
6045         opBITH z80bc 5\r
6046 ;@BIT 5,C\r
6047 opcode_CB_69:\r
6048         opBITL z80bc 5\r
6049 ;@BIT 5,D\r
6050 opcode_CB_6A:\r
6051         opBITH z80de 5\r
6052 ;@BIT 5,E\r
6053 opcode_CB_6B:\r
6054         opBITL z80de 5\r
6055 ;@BIT 5,H\r
6056 opcode_CB_6C:\r
6057         opBITH z80hl 5\r
6058 ;@BIT 5,L\r
6059 opcode_CB_6D:\r
6060         opBITL z80hl 5\r
6061 ;@BIT 5,(HL)\r
6062 opcode_CB_6E:\r
6063         readmem8HL\r
6064         opBITb 5\r
6065         fetch 12\r
6066 ;@BIT 5,A\r
6067 opcode_CB_6F:\r
6068         opBITH z80a 5\r
6069 \r
6070 ;@BIT 6,B\r
6071 opcode_CB_70:\r
6072         opBITH z80bc 6\r
6073 ;@BIT 6,C\r
6074 opcode_CB_71:\r
6075         opBITL z80bc 6\r
6076 ;@BIT 6,D\r
6077 opcode_CB_72:\r
6078         opBITH z80de 6\r
6079 ;@BIT 6,E\r
6080 opcode_CB_73:\r
6081         opBITL z80de 6\r
6082 ;@BIT 6,H\r
6083 opcode_CB_74:\r
6084         opBITH z80hl 6\r
6085 ;@BIT 6,L\r
6086 opcode_CB_75:\r
6087         opBITL z80hl 6\r
6088 ;@BIT 6,(HL)\r
6089 opcode_CB_76:\r
6090         readmem8HL\r
6091         opBITb 6\r
6092         fetch 12\r
6093 ;@BIT 6,A\r
6094 opcode_CB_77:\r
6095         opBITH z80a 6\r
6096 \r
6097 ;@BIT 7,B\r
6098 opcode_CB_78:\r
6099         opBIT7H z80bc\r
6100 ;@BIT 7,C\r
6101 opcode_CB_79:\r
6102         opBIT7L z80bc\r
6103 ;@BIT 7,D\r
6104 opcode_CB_7A:\r
6105         opBIT7H z80de\r
6106 ;@BIT 7,E\r
6107 opcode_CB_7B:\r
6108         opBIT7L z80de\r
6109 ;@BIT 7,H\r
6110 opcode_CB_7C:\r
6111         opBIT7H z80hl\r
6112 ;@BIT 7,L\r
6113 opcode_CB_7D:\r
6114         opBIT7L z80hl\r
6115 ;@BIT 7,(HL)\r
6116 opcode_CB_7E:\r
6117         readmem8HL\r
6118         opBIT7b\r
6119         fetch 12\r
6120 ;@BIT 7,A\r
6121 opcode_CB_7F:\r
6122         opBIT7H z80a\r
6123 \r
6124 ;@RES 0,B\r
6125 opcode_CB_80:\r
6126         bic z80bc,z80bc,#1<<24\r
6127         fetch 8\r
6128 ;@RES 0,C\r
6129 opcode_CB_81:\r
6130         bic z80bc,z80bc,#1<<16\r
6131         fetch 8\r
6132 ;@RES 0,D\r
6133 opcode_CB_82:\r
6134         bic z80de,z80de,#1<<24\r
6135         fetch 8\r
6136 ;@RES 0,E\r
6137 opcode_CB_83:\r
6138         bic z80de,z80de,#1<<16\r
6139         fetch 8\r
6140 ;@RES 0,H\r
6141 opcode_CB_84:\r
6142         bic z80hl,z80hl,#1<<24\r
6143         fetch 8\r
6144 ;@RES 0,L\r
6145 opcode_CB_85:\r
6146         bic z80hl,z80hl,#1<<16\r
6147         fetch 8\r
6148 ;@RES 0,(HL)\r
6149 opcode_CB_86:\r
6150         opRESmemHL 0\r
6151 ;@RES 0,A\r
6152 opcode_CB_87:\r
6153         bic z80a,z80a,#1<<24\r
6154         fetch 8\r
6155 \r
6156 ;@RES 1,B\r
6157 opcode_CB_88:\r
6158         bic z80bc,z80bc,#1<<25\r
6159         fetch 8\r
6160 ;@RES 1,C\r
6161 opcode_CB_89:\r
6162         bic z80bc,z80bc,#1<<17\r
6163         fetch 8\r
6164 ;@RES 1,D\r
6165 opcode_CB_8A:\r
6166         bic z80de,z80de,#1<<25\r
6167         fetch 8\r
6168 ;@RES 1,E\r
6169 opcode_CB_8B:\r
6170         bic z80de,z80de,#1<<17\r
6171         fetch 8\r
6172 ;@RES 1,H\r
6173 opcode_CB_8C:\r
6174         bic z80hl,z80hl,#1<<25\r
6175         fetch 8\r
6176 ;@RES 1,L\r
6177 opcode_CB_8D:\r
6178         bic z80hl,z80hl,#1<<17\r
6179         fetch 8\r
6180 ;@RES 1,(HL)\r
6181 opcode_CB_8E:\r
6182         opRESmemHL 1\r
6183 ;@RES 1,A\r
6184 opcode_CB_8F:\r
6185         bic z80a,z80a,#1<<25\r
6186         fetch 8\r
6187 \r
6188 ;@RES 2,B\r
6189 opcode_CB_90:\r
6190         bic z80bc,z80bc,#1<<26\r
6191         fetch 8\r
6192 ;@RES 2,C\r
6193 opcode_CB_91:\r
6194         bic z80bc,z80bc,#1<<18\r
6195         fetch 8\r
6196 ;@RES 2,D\r
6197 opcode_CB_92:\r
6198         bic z80de,z80de,#1<<26\r
6199         fetch 8\r
6200 ;@RES 2,E\r
6201 opcode_CB_93:\r
6202         bic z80de,z80de,#1<<18\r
6203         fetch 8\r
6204 ;@RES 2,H\r
6205 opcode_CB_94:\r
6206         bic z80hl,z80hl,#1<<26\r
6207         fetch 8\r
6208 ;@RES 2,L\r
6209 opcode_CB_95:\r
6210         bic z80hl,z80hl,#1<<18\r
6211         fetch 8\r
6212 ;@RES 2,(HL)\r
6213 opcode_CB_96:\r
6214         opRESmemHL 2\r
6215 ;@RES 2,A\r
6216 opcode_CB_97:\r
6217         bic z80a,z80a,#1<<26\r
6218         fetch 8\r
6219 \r
6220 ;@RES 3,B\r
6221 opcode_CB_98:\r
6222         bic z80bc,z80bc,#1<<27\r
6223         fetch 8\r
6224 ;@RES 3,C\r
6225 opcode_CB_99:\r
6226         bic z80bc,z80bc,#1<<19\r
6227         fetch 8\r
6228 ;@RES 3,D\r
6229 opcode_CB_9A:\r
6230         bic z80de,z80de,#1<<27\r
6231         fetch 8\r
6232 ;@RES 3,E\r
6233 opcode_CB_9B:\r
6234         bic z80de,z80de,#1<<19\r
6235         fetch 8\r
6236 ;@RES 3,H\r
6237 opcode_CB_9C:\r
6238         bic z80hl,z80hl,#1<<27\r
6239         fetch 8\r
6240 ;@RES 3,L\r
6241 opcode_CB_9D:\r
6242         bic z80hl,z80hl,#1<<19\r
6243         fetch 8\r
6244 ;@RES 3,(HL)\r
6245 opcode_CB_9E:\r
6246         opRESmemHL 3\r
6247 ;@RES 3,A\r
6248 opcode_CB_9F:\r
6249         bic z80a,z80a,#1<<27\r
6250         fetch 8\r
6251 \r
6252 ;@RES 4,B\r
6253 opcode_CB_A0:\r
6254         bic z80bc,z80bc,#1<<28\r
6255         fetch 8\r
6256 ;@RES 4,C\r
6257 opcode_CB_A1:\r
6258         bic z80bc,z80bc,#1<<20\r
6259         fetch 8\r
6260 ;@RES 4,D\r
6261 opcode_CB_A2:\r
6262         bic z80de,z80de,#1<<28\r
6263         fetch 8\r
6264 ;@RES 4,E\r
6265 opcode_CB_A3:\r
6266         bic z80de,z80de,#1<<20\r
6267         fetch 8\r
6268 ;@RES 4,H\r
6269 opcode_CB_A4:\r
6270         bic z80hl,z80hl,#1<<28\r
6271         fetch 8\r
6272 ;@RES 4,L\r
6273 opcode_CB_A5:\r
6274         bic z80hl,z80hl,#1<<20\r
6275         fetch 8\r
6276 ;@RES 4,(HL)\r
6277 opcode_CB_A6:\r
6278         opRESmemHL 4\r
6279 ;@RES 4,A\r
6280 opcode_CB_A7:\r
6281         bic z80a,z80a,#1<<28\r
6282         fetch 8\r
6283 \r
6284 ;@RES 5,B\r
6285 opcode_CB_A8:\r
6286         bic z80bc,z80bc,#1<<29\r
6287         fetch 8\r
6288 ;@RES 5,C\r
6289 opcode_CB_A9:\r
6290         bic z80bc,z80bc,#1<<21\r
6291         fetch 8\r
6292 ;@RES 5,D\r
6293 opcode_CB_AA:\r
6294         bic z80de,z80de,#1<<29\r
6295         fetch 8\r
6296 ;@RES 5,E\r
6297 opcode_CB_AB:\r
6298         bic z80de,z80de,#1<<21\r
6299         fetch 8\r
6300 ;@RES 5,H\r
6301 opcode_CB_AC:\r
6302         bic z80hl,z80hl,#1<<29\r
6303         fetch 8\r
6304 ;@RES 5,L\r
6305 opcode_CB_AD:\r
6306         bic z80hl,z80hl,#1<<21\r
6307         fetch 8\r
6308 ;@RES 5,(HL)\r
6309 opcode_CB_AE:\r
6310         opRESmemHL 5\r
6311 ;@RES 5,A\r
6312 opcode_CB_AF:\r
6313         bic z80a,z80a,#1<<29\r
6314         fetch 8\r
6315 \r
6316 ;@RES 6,B\r
6317 opcode_CB_B0:\r
6318         bic z80bc,z80bc,#1<<30\r
6319         fetch 8\r
6320 ;@RES 6,C\r
6321 opcode_CB_B1:\r
6322         bic z80bc,z80bc,#1<<22\r
6323         fetch 8\r
6324 ;@RES 6,D\r
6325 opcode_CB_B2:\r
6326         bic z80de,z80de,#1<<30\r
6327         fetch 8\r
6328 ;@RES 6,E\r
6329 opcode_CB_B3:\r
6330         bic z80de,z80de,#1<<22\r
6331         fetch 8\r
6332 ;@RES 6,H\r
6333 opcode_CB_B4:\r
6334         bic z80hl,z80hl,#1<<30\r
6335         fetch 8\r
6336 ;@RES 6,L\r
6337 opcode_CB_B5:\r
6338         bic z80hl,z80hl,#1<<22\r
6339         fetch 8\r
6340 ;@RES 6,(HL)\r
6341 opcode_CB_B6:\r
6342         opRESmemHL 6\r
6343 ;@RES 6,A\r
6344 opcode_CB_B7:\r
6345         bic z80a,z80a,#1<<30\r
6346         fetch 8\r
6347 \r
6348 ;@RES 7,B\r
6349 opcode_CB_B8:\r
6350         bic z80bc,z80bc,#1<<31\r
6351         fetch 8\r
6352 ;@RES 7,C\r
6353 opcode_CB_B9:\r
6354         bic z80bc,z80bc,#1<<23\r
6355         fetch 8\r
6356 ;@RES 7,D\r
6357 opcode_CB_BA:\r
6358         bic z80de,z80de,#1<<31\r
6359         fetch 8\r
6360 ;@RES 7,E\r
6361 opcode_CB_BB:\r
6362         bic z80de,z80de,#1<<23\r
6363         fetch 8\r
6364 ;@RES 7,H\r
6365 opcode_CB_BC:\r
6366         bic z80hl,z80hl,#1<<31\r
6367         fetch 8\r
6368 ;@RES 7,L\r
6369 opcode_CB_BD:\r
6370         bic z80hl,z80hl,#1<<23\r
6371         fetch 8\r
6372 ;@RES 7,(HL)\r
6373 opcode_CB_BE:\r
6374         opRESmemHL 7\r
6375 ;@RES 7,A\r
6376 opcode_CB_BF:\r
6377         bic z80a,z80a,#1<<31\r
6378         fetch 8\r
6379 \r
6380 ;@SET 0,B\r
6381 opcode_CB_C0:\r
6382         orr z80bc,z80bc,#1<<24\r
6383         fetch 8\r
6384 ;@SET 0,C\r
6385 opcode_CB_C1:\r
6386         orr z80bc,z80bc,#1<<16\r
6387         fetch 8\r
6388 ;@SET 0,D\r
6389 opcode_CB_C2:\r
6390         orr z80de,z80de,#1<<24\r
6391         fetch 8\r
6392 ;@SET 0,E\r
6393 opcode_CB_C3:\r
6394         orr z80de,z80de,#1<<16\r
6395         fetch 8\r
6396 ;@SET 0,H\r
6397 opcode_CB_C4:\r
6398         orr z80hl,z80hl,#1<<24\r
6399         fetch 8\r
6400 ;@SET 0,L\r
6401 opcode_CB_C5:\r
6402         orr z80hl,z80hl,#1<<16\r
6403         fetch 8\r
6404 ;@SET 0,(HL)\r
6405 opcode_CB_C6:\r
6406         opSETmemHL 0\r
6407 ;@SET 0,A\r
6408 opcode_CB_C7:\r
6409         orr z80a,z80a,#1<<24\r
6410         fetch 8\r
6411 \r
6412 ;@SET 1,B\r
6413 opcode_CB_C8:\r
6414         orr z80bc,z80bc,#1<<25\r
6415         fetch 8\r
6416 ;@SET 1,C\r
6417 opcode_CB_C9:\r
6418         orr z80bc,z80bc,#1<<17\r
6419         fetch 8\r
6420 ;@SET 1,D\r
6421 opcode_CB_CA:\r
6422         orr z80de,z80de,#1<<25\r
6423         fetch 8\r
6424 ;@SET 1,E\r
6425 opcode_CB_CB:\r
6426         orr z80de,z80de,#1<<17\r
6427         fetch 8\r
6428 ;@SET 1,H\r
6429 opcode_CB_CC:\r
6430         orr z80hl,z80hl,#1<<25\r
6431         fetch 8\r
6432 ;@SET 1,L\r
6433 opcode_CB_CD:\r
6434         orr z80hl,z80hl,#1<<17\r
6435         fetch 8\r
6436 ;@SET 1,(HL)\r
6437 opcode_CB_CE:\r
6438         opSETmemHL 1\r
6439 ;@SET 1,A\r
6440 opcode_CB_CF:\r
6441         orr z80a,z80a,#1<<25\r
6442         fetch 8\r
6443 \r
6444 ;@SET 2,B\r
6445 opcode_CB_D0:\r
6446         orr z80bc,z80bc,#1<<26\r
6447         fetch 8\r
6448 ;@SET 2,C\r
6449 opcode_CB_D1:\r
6450         orr z80bc,z80bc,#1<<18\r
6451         fetch 8\r
6452 ;@SET 2,D\r
6453 opcode_CB_D2:\r
6454         orr z80de,z80de,#1<<26\r
6455         fetch 8\r
6456 ;@SET 2,E\r
6457 opcode_CB_D3:\r
6458         orr z80de,z80de,#1<<18\r
6459         fetch 8\r
6460 ;@SET 2,H\r
6461 opcode_CB_D4:\r
6462         orr z80hl,z80hl,#1<<26\r
6463         fetch 8\r
6464 ;@SET 2,L\r
6465 opcode_CB_D5:\r
6466         orr z80hl,z80hl,#1<<18\r
6467         fetch 8\r
6468 ;@SET 2,(HL)\r
6469 opcode_CB_D6:\r
6470         opSETmemHL 2\r
6471 ;@SET 2,A\r
6472 opcode_CB_D7:\r
6473         orr z80a,z80a,#1<<26\r
6474         fetch 8\r
6475 \r
6476 ;@SET 3,B\r
6477 opcode_CB_D8:\r
6478         orr z80bc,z80bc,#1<<27\r
6479         fetch 8\r
6480 ;@SET 3,C\r
6481 opcode_CB_D9:\r
6482         orr z80bc,z80bc,#1<<19\r
6483         fetch 8\r
6484 ;@SET 3,D\r
6485 opcode_CB_DA:\r
6486         orr z80de,z80de,#1<<27\r
6487         fetch 8\r
6488 ;@SET 3,E\r
6489 opcode_CB_DB:\r
6490         orr z80de,z80de,#1<<19\r
6491         fetch 8\r
6492 ;@SET 3,H\r
6493 opcode_CB_DC:\r
6494         orr z80hl,z80hl,#1<<27\r
6495         fetch 8\r
6496 ;@SET 3,L\r
6497 opcode_CB_DD:\r
6498         orr z80hl,z80hl,#1<<19\r
6499         fetch 8\r
6500 ;@SET 3,(HL)\r
6501 opcode_CB_DE:\r
6502         opSETmemHL 3\r
6503 ;@SET 3,A\r
6504 opcode_CB_DF:\r
6505         orr z80a,z80a,#1<<27\r
6506         fetch 8\r
6507 \r
6508 ;@SET 4,B\r
6509 opcode_CB_E0:\r
6510         orr z80bc,z80bc,#1<<28\r
6511         fetch 8\r
6512 ;@SET 4,C\r
6513 opcode_CB_E1:\r
6514         orr z80bc,z80bc,#1<<20\r
6515         fetch 8\r
6516 ;@SET 4,D\r
6517 opcode_CB_E2:\r
6518         orr z80de,z80de,#1<<28\r
6519         fetch 8\r
6520 ;@SET 4,E\r
6521 opcode_CB_E3:\r
6522         orr z80de,z80de,#1<<20\r
6523         fetch 8\r
6524 ;@SET 4,H\r
6525 opcode_CB_E4:\r
6526         orr z80hl,z80hl,#1<<28\r
6527         fetch 8\r
6528 ;@SET 4,L\r
6529 opcode_CB_E5:\r
6530         orr z80hl,z80hl,#1<<20\r
6531         fetch 8\r
6532 ;@SET 4,(HL)\r
6533 opcode_CB_E6:\r
6534         opSETmemHL 4\r
6535 ;@SET 4,A\r
6536 opcode_CB_E7:\r
6537         orr z80a,z80a,#1<<28\r
6538         fetch 8\r
6539 \r
6540 ;@SET 5,B\r
6541 opcode_CB_E8:\r
6542         orr z80bc,z80bc,#1<<29\r
6543         fetch 8\r
6544 ;@SET 5,C\r
6545 opcode_CB_E9:\r
6546         orr z80bc,z80bc,#1<<21\r
6547         fetch 8\r
6548 ;@SET 5,D\r
6549 opcode_CB_EA:\r
6550         orr z80de,z80de,#1<<29\r
6551         fetch 8\r
6552 ;@SET 5,E\r
6553 opcode_CB_EB:\r
6554         orr z80de,z80de,#1<<21\r
6555         fetch 8\r
6556 ;@SET 5,H\r
6557 opcode_CB_EC:\r
6558         orr z80hl,z80hl,#1<<29\r
6559         fetch 8\r
6560 ;@SET 5,L\r
6561 opcode_CB_ED:\r
6562         orr z80hl,z80hl,#1<<21\r
6563         fetch 8\r
6564 ;@SET 5,(HL)\r
6565 opcode_CB_EE:\r
6566         opSETmemHL 5\r
6567 ;@SET 5,A\r
6568 opcode_CB_EF:\r
6569         orr z80a,z80a,#1<<29\r
6570         fetch 8\r
6571 \r
6572 ;@SET 6,B\r
6573 opcode_CB_F0:\r
6574         orr z80bc,z80bc,#1<<30\r
6575         fetch 8\r
6576 ;@SET 6,C\r
6577 opcode_CB_F1:\r
6578         orr z80bc,z80bc,#1<<22\r
6579         fetch 8\r
6580 ;@SET 6,D\r
6581 opcode_CB_F2:\r
6582         orr z80de,z80de,#1<<30\r
6583         fetch 8\r
6584 ;@SET 6,E\r
6585 opcode_CB_F3:\r
6586         orr z80de,z80de,#1<<22\r
6587         fetch 8\r
6588 ;@SET 6,H\r
6589 opcode_CB_F4:\r
6590         orr z80hl,z80hl,#1<<30\r
6591         fetch 8\r
6592 ;@SET 6,L\r
6593 opcode_CB_F5:\r
6594         orr z80hl,z80hl,#1<<22\r
6595         fetch 8\r
6596 ;@SET 6,(HL)\r
6597 opcode_CB_F6:\r
6598         opSETmemHL 6\r
6599 ;@SET 6,A\r
6600 opcode_CB_F7:\r
6601         orr z80a,z80a,#1<<30\r
6602         fetch 8\r
6603 \r
6604 ;@SET 7,B\r
6605 opcode_CB_F8:\r
6606         orr z80bc,z80bc,#1<<31\r
6607         fetch 8\r
6608 ;@SET 7,C\r
6609 opcode_CB_F9:\r
6610         orr z80bc,z80bc,#1<<23\r
6611         fetch 8\r
6612 ;@SET 7,D\r
6613 opcode_CB_FA:\r
6614         orr z80de,z80de,#1<<31\r
6615         fetch 8\r
6616 ;@SET 7,E\r
6617 opcode_CB_FB:\r
6618         orr z80de,z80de,#1<<23\r
6619         fetch 8\r
6620 ;@SET 7,H\r
6621 opcode_CB_FC:\r
6622         orr z80hl,z80hl,#1<<31\r
6623         fetch 8\r
6624 ;@SET 7,L\r
6625 opcode_CB_FD:\r
6626         orr z80hl,z80hl,#1<<23\r
6627         fetch 8\r
6628 ;@SET 7,(HL)\r
6629 opcode_CB_FE:\r
6630         opSETmemHL 7\r
6631 ;@SET 7,A\r
6632 opcode_CB_FF:\r
6633         orr z80a,z80a,#1<<31\r
6634         fetch 8\r
6635 \r
6636 \r
6637 \r
6638 ;@##################################\r
6639 ;@##################################\r
6640 ;@###  opcodes DD  #########################\r
6641 ;@##################################\r
6642 ;@##################################\r
6643 ;@Because the DD opcodes are not a complete range from 00-FF I have\r
6644 ;@created this sub routine that will catch any undocumented ops\r
6645 ;@halt the emulator and mov the current instruction to r0\r
6646 ;@at a later stage I may change to display a text message on the screen\r
6647 opcode_DD_NF:\r
6648         eatcycles 4\r
6649         ldr pc,[opcodes,r0, lsl #2]\r
6650 ;@      mov r2,#0x10*4\r
6651 ;@      cmp r2,z80xx\r
6652 ;@      bne opcode_FD_NF\r
6653 ;@      mov r0,#0xDD00\r
6654 ;@      orr r0,r0,r1\r
6655 ;@      b end_loop\r
6656 ;@opcode_FD_NF:\r
6657 ;@      mov r0,#0xFD00\r
6658 ;@      orr r0,r0,r1\r
6659 ;@      b end_loop\r
6660 \r
6661 opcode_DD_NF2:\r
6662         fetch 23\r
6663 ;@ notaz: we don't want to deadlock here\r
6664 ;@      mov r0,#0xDD0000\r
6665 ;@      orr r0,r0,#0xCB00\r
6666 ;@      orr r0,r0,r1\r
6667 ;@      b end_loop\r
6668 \r
6669 ;@ADD IX,BC\r
6670 opcode_DD_09:\r
6671         ldr r0,[z80xx]\r
6672         opADD16 r0 z80bc\r
6673         str r0,[z80xx]\r
6674         fetch 15\r
6675 ;@ADD IX,DE\r
6676 opcode_DD_19:\r
6677         ldr r0,[z80xx]\r
6678         opADD16 r0 z80de\r
6679         str r0,[z80xx]\r
6680         fetch 15\r
6681 ;@LD IX,NN\r
6682 opcode_DD_21:\r
6683         ldrb r0,[z80pc],#1\r
6684         ldrb r1,[z80pc],#1\r
6685         orr r0,r0,r1, lsl #8\r
6686         strh r0,[z80xx,#2]\r
6687         fetch 14\r
6688 ;@LD (NN),IX\r
6689 opcode_DD_22:\r
6690         ldrb r0,[z80pc],#1\r
6691         ldrb r1,[z80pc],#1\r
6692         orr r1,r0,r1, lsl #8\r
6693         ldrh r0,[z80xx,#2]\r
6694         writemem16\r
6695         fetch 20\r
6696 ;@INC IX\r
6697 opcode_DD_23:\r
6698         ldr r0,[z80xx]\r
6699         add r0,r0,#1<<16\r
6700         str r0,[z80xx]\r
6701         fetch 10\r
6702 ;@INC I  (IX)\r
6703 opcode_DD_24:\r
6704         ldr r0,[z80xx]\r
6705         opINC8H r0\r
6706         str r0,[z80xx]\r
6707         fetch 8\r
6708 ;@DEC I  (IX)\r
6709 opcode_DD_25:\r
6710         ldr r0,[z80xx]\r
6711         opDEC8H r0\r
6712         str r0,[z80xx]\r
6713         fetch 8\r
6714 ;@LD I,N  (IX)\r
6715 opcode_DD_26:\r
6716         ldrb r0,[z80pc],#1\r
6717         strb r0,[z80xx,#3]\r
6718         fetch 11\r
6719 ;@ADD IX,IX\r
6720 opcode_DD_29:\r
6721         ldr r0,[z80xx]\r
6722         opADD16_2 r0\r
6723         str r0,[z80xx]\r
6724         fetch 15\r
6725 ;@LD IX,(NN)\r
6726 opcode_DD_2A:\r
6727         ldrb r0,[z80pc],#1\r
6728         ldrb r1,[z80pc],#1\r
6729         orr r0,r0,r1, lsl #8\r
6730         stmfd sp!,{z80xx}\r
6731         readmem16\r
6732         ldmfd sp!,{z80xx}\r
6733         strh r0,[z80xx,#2]\r
6734         fetch 20\r
6735 ;@DEC IX\r
6736 opcode_DD_2B:\r
6737         ldr r0,[z80xx]\r
6738         sub r0,r0,#1<<16\r
6739         str r0,[z80xx]\r
6740         fetch 10\r
6741 ;@INC X  (IX)\r
6742 opcode_DD_2C:\r
6743         ldr r0,[z80xx]\r
6744         opINC8L r0\r
6745         str r0,[z80xx]\r
6746         fetch 8\r
6747 ;@DEC X  (IX)\r
6748 opcode_DD_2D:\r
6749         ldr r0,[z80xx]\r
6750         opDEC8L r0\r
6751         str r0,[z80xx]\r
6752         fetch 8\r
6753 ;@LD X,N  (IX)\r
6754 opcode_DD_2E:\r
6755         ldrb r0,[z80pc],#1\r
6756         strb r0,[z80xx,#2]\r
6757         fetch 11\r
6758 ;@INC (IX+N)\r
6759 opcode_DD_34:\r
6760         ldrsb r0,[z80pc],#1\r
6761         ldr r1,[z80xx]\r
6762         add r0,r1,r0, lsl #16\r
6763         mov r0,r0,lsr #16\r
6764         stmfd sp!,{r0}  ;@ save addr\r
6765         readmem8\r
6766         opINC8b\r
6767         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6768         writemem8\r
6769         fetch 23\r
6770 ;@DEC (IX+N)\r
6771 opcode_DD_35:\r
6772         ldrsb r0,[z80pc],#1\r
6773         ldr r1,[z80xx]\r
6774         add r0,r1,r0, lsl #16\r
6775         mov r0,r0,lsr #16\r
6776         stmfd sp!,{r0}  ;@ save addr\r
6777         readmem8\r
6778         opDEC8b\r
6779         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6780         writemem8\r
6781         fetch 23\r
6782 ;@LD (IX+N),N\r
6783 opcode_DD_36:\r
6784         ldrsb r2,[z80pc],#1\r
6785         ldrb r0,[z80pc],#1\r
6786         ldr r1,[z80xx]\r
6787         add r1,r1,r2, lsl #16\r
6788         mov r1,r1,lsr #16\r
6789         writemem8\r
6790         fetch 19\r
6791 ;@ADD IX,SP\r
6792 opcode_DD_39:\r
6793         ldr r0,[z80xx]\r
6794 .if FAST_Z80SP\r
6795         ldr r2,[cpucontext,#z80sp_base]\r
6796         sub r2,z80sp,r2\r
6797         opADD16s r0 r2 16\r
6798 .else\r
6799         opADD16s r0 z80sp 16\r
6800 .endif\r
6801         str r0,[z80xx]\r
6802         fetch 15\r
6803 ;@LD B,I ( IX )\r
6804 opcode_DD_44:\r
6805         ldrb r0,[z80xx,#3]\r
6806         and z80bc,z80bc,#0xFF<<16\r
6807         orr z80bc,z80bc,r0, lsl #24\r
6808         fetch 8\r
6809 ;@LD B,X ( IX )\r
6810 opcode_DD_45:\r
6811         ldrb r0,[z80xx,#2]\r
6812         and z80bc,z80bc,#0xFF<<16\r
6813         orr z80bc,z80bc,r0, lsl #24\r
6814         fetch 8\r
6815 ;@LD B,(IX,N)\r
6816 opcode_DD_46:\r
6817         ldrsb r0,[z80pc],#1\r
6818         ldr r1,[z80xx]\r
6819         add r0,r1,r0, lsl #16\r
6820         mov r0,r0,lsr #16\r
6821         readmem8\r
6822         and z80bc,z80bc,#0xFF<<16\r
6823         orr z80bc,z80bc,r0, lsl #24\r
6824         fetch 19\r
6825 ;@LD C,I  (IX)\r
6826 opcode_DD_4C:\r
6827         ldrb r0,[z80xx,#3]\r
6828         and z80bc,z80bc,#0xFF<<24\r
6829         orr z80bc,z80bc,r0, lsl #16\r
6830         fetch 8\r
6831 ;@LD C,X  (IX)\r
6832 opcode_DD_4D:\r
6833         ldrb r0,[z80xx,#2]\r
6834         and z80bc,z80bc,#0xFF<<24\r
6835         orr z80bc,z80bc,r0, lsl #16\r
6836         fetch 8\r
6837 ;@LD C,(IX,N)\r
6838 opcode_DD_4E:\r
6839         ldrsb r0,[z80pc],#1\r
6840         ldr r1,[z80xx]\r
6841         add r0,r1,r0, lsl #16\r
6842         mov r0,r0,lsr #16\r
6843         readmem8\r
6844         and z80bc,z80bc,#0xFF<<24\r
6845         orr z80bc,z80bc,r0, lsl #16\r
6846         fetch 19\r
6847 \r
6848 ;@LD D,I  (IX)\r
6849 opcode_DD_54:\r
6850         ldrb r0,[z80xx,#3]\r
6851         and z80de,z80de,#0xFF<<16\r
6852         orr z80de,z80de,r0, lsl #24\r
6853         fetch 8\r
6854 ;@LD D,X  (IX)\r
6855 opcode_DD_55:\r
6856         ldrb r0,[z80xx,#2]\r
6857         and z80de,z80de,#0xFF<<16\r
6858         orr z80de,z80de,r0, lsl #24\r
6859         fetch 8\r
6860 ;@LD D,(IX,N)\r
6861 opcode_DD_56:\r
6862         ldrsb r0,[z80pc],#1\r
6863         ldr r1,[z80xx]\r
6864         add r0,r1,r0, lsl #16\r
6865         mov r0,r0,lsr #16\r
6866         readmem8\r
6867         and z80de,z80de,#0xFF<<16\r
6868         orr z80de,z80de,r0, lsl #24\r
6869         fetch 19\r
6870 ;@LD E,I  (IX)\r
6871 opcode_DD_5C:\r
6872         ldrb r0,[z80xx,#3]\r
6873         and z80de,z80de,#0xFF<<24\r
6874         orr z80de,z80de,r0, lsl #16\r
6875         fetch 8\r
6876 ;@LD E,X  (IX)\r
6877 opcode_DD_5D:\r
6878         ldrb r0,[z80xx,#2]\r
6879         and z80de,z80de,#0xFF<<24\r
6880         orr z80de,z80de,r0, lsl #16\r
6881         fetch 8\r
6882 ;@LD E,(IX,N)\r
6883 opcode_DD_5E:\r
6884         ldrsb r0,[z80pc],#1\r
6885         ldr r1,[z80xx]\r
6886         add r0,r1,r0, lsl #16\r
6887         mov r0,r0,lsr #16\r
6888         readmem8\r
6889         and z80de,z80de,#0xFF<<24\r
6890         orr z80de,z80de,r0, lsl #16\r
6891         fetch 19\r
6892 ;@LD I,B  (IX)\r
6893 opcode_DD_60:\r
6894         mov r0,z80bc,lsr#24\r
6895         strb r0,[z80xx,#3]\r
6896         fetch 8\r
6897 ;@LD I,C  (IX)\r
6898 opcode_DD_61:\r
6899         mov r0,z80bc,lsr#16\r
6900         strb r0,[z80xx,#3]\r
6901         fetch 8\r
6902 ;@LD I,D  (IX)\r
6903 opcode_DD_62:\r
6904         mov r0,z80de,lsr#24\r
6905         strb r0,[z80xx,#3]\r
6906         fetch 8\r
6907 ;@LD I,E  (IX)\r
6908 opcode_DD_63:\r
6909         mov r0,z80de,lsr#16\r
6910         strb r0,[z80xx,#3]\r
6911         fetch 8\r
6912 ;@LD I,I  (IX)\r
6913 opcode_DD_64:\r
6914         fetch 8\r
6915 ;@LD I,X  (IX)\r
6916 opcode_DD_65:\r
6917         ldrb r0,[z80xx,#2]\r
6918         strb r0,[z80xx,#3]\r
6919         fetch 8\r
6920 ;@LD H,(IX,N)\r
6921 opcode_DD_66:\r
6922         ldrsb r0,[z80pc],#1\r
6923         ldr r1,[z80xx]\r
6924         add r0,r1,r0, lsl #16\r
6925         mov r0,r0,lsr #16\r
6926         readmem8\r
6927         and z80hl,z80hl,#0xFF<<16\r
6928         orr z80hl,z80hl,r0, lsl #24\r
6929         fetch 19\r
6930 ;@LD I,A  (IX)\r
6931 opcode_DD_67:\r
6932         mov r0,z80a,lsr#24\r
6933         strb r0,[z80xx,#3]\r
6934         fetch 8\r
6935 ;@LD X,B  (IX)\r
6936 opcode_DD_68:\r
6937         mov r0,z80bc,lsr#24\r
6938         strb r0,[z80xx,#2]\r
6939         fetch 8\r
6940 ;@LD X,C  (IX)\r
6941 opcode_DD_69:\r
6942         mov r0,z80bc,lsr#16\r
6943         strb r0,[z80xx,#2]\r
6944         fetch 8\r
6945 ;@LD X,D  (IX)\r
6946 opcode_DD_6A:\r
6947         mov r0,z80de,lsr#24\r
6948         strb r0,[z80xx,#2]\r
6949         fetch 8\r
6950 ;@LD X,E  (IX)\r
6951 opcode_DD_6B:\r
6952         mov r0,z80de,lsr#16\r
6953         strb r0,[z80xx,#2]\r
6954         fetch 8\r
6955 ;@LD X,I  (IX)\r
6956 opcode_DD_6C:\r
6957         ldrb r0,[z80xx,#3]\r
6958         strb r0,[z80xx,#2]\r
6959         fetch 8\r
6960 ;@LD X,X  (IX)\r
6961 opcode_DD_6D:\r
6962         fetch 8\r
6963 ;@LD L,(IX,N)\r
6964 opcode_DD_6E:\r
6965         ldrsb r0,[z80pc],#1\r
6966         ldr r1,[z80xx]\r
6967         add r0,r1,r0, lsl #16\r
6968         mov r0,r0,lsr #16\r
6969         readmem8\r
6970         and z80hl,z80hl,#0xFF<<24\r
6971         orr z80hl,z80hl,r0, lsl #16\r
6972         fetch 19\r
6973 ;@LD X,A  (IX)\r
6974 opcode_DD_6F:\r
6975         mov r0,z80a,lsr#24\r
6976         strb r0,[z80xx,#2]\r
6977         fetch 8\r
6978 \r
6979 ;@LD (IX,N),B\r
6980 opcode_DD_70:\r
6981         ldrsb r0,[z80pc],#1\r
6982         ldr r1,[z80xx]\r
6983         add r1,r1,r0, lsl #16\r
6984         mov r1,r1,lsr #16\r
6985         mov r0,z80bc, lsr #24\r
6986         writemem8\r
6987         fetch 19\r
6988 ;@LD (IX,N),C\r
6989 opcode_DD_71:\r
6990         ldrsb r0,[z80pc],#1\r
6991         ldr r1,[z80xx]\r
6992         add r1,r1,r0, lsl #16\r
6993         mov r1,r1,lsr #16\r
6994         mov r0,z80bc, lsr #16\r
6995         and r0,r0,#0xFF\r
6996         writemem8\r
6997         fetch 19\r
6998 ;@LD (IX,N),D\r
6999 opcode_DD_72:\r
7000         ldrsb r0,[z80pc],#1\r
7001         ldr r1,[z80xx]\r
7002         add r1,r1,r0, lsl #16\r
7003         mov r1,r1,lsr #16\r
7004         mov r0,z80de, lsr #24\r
7005         writemem8\r
7006         fetch 19\r
7007 ;@LD (IX,N),E\r
7008 opcode_DD_73:\r
7009         ldrsb r0,[z80pc],#1\r
7010         ldr r1,[z80xx]\r
7011         add r1,r1,r0, lsl #16\r
7012         mov r1,r1,lsr #16\r
7013         mov r0,z80de, lsr #16\r
7014         and r0,r0,#0xFF\r
7015         writemem8\r
7016         fetch 19\r
7017 ;@LD (IX,N),H\r
7018 opcode_DD_74:\r
7019         ldrsb r0,[z80pc],#1\r
7020         ldr r1,[z80xx]\r
7021         add r1,r1,r0, lsl #16\r
7022         mov r1,r1,lsr #16\r
7023         mov r0,z80hl, lsr #24\r
7024         writemem8\r
7025         fetch 19\r
7026 ;@LD (IX,N),L\r
7027 opcode_DD_75:\r
7028         ldrsb r0,[z80pc],#1\r
7029         ldr r1,[z80xx]\r
7030         add r1,r1,r0, lsl #16\r
7031         mov r1,r1,lsr #16\r
7032         mov r0,z80hl, lsr #16\r
7033         and r0,r0,#0xFF\r
7034         writemem8\r
7035         fetch 19\r
7036 ;@LD (IX,N),A\r
7037 opcode_DD_77:\r
7038         ldrsb r0,[z80pc],#1\r
7039         ldr r1,[z80xx]\r
7040         add r1,r1,r0, lsl #16\r
7041         mov r1,r1,lsr #16\r
7042         mov r0,z80a, lsr #24\r
7043         writemem8\r
7044         fetch 19\r
7045 \r
7046 ;@LD A,I  from (IX)\r
7047 opcode_DD_7C:\r
7048         ldrb r0,[z80xx,#3]\r
7049         mov z80a,r0, lsl #24\r
7050         fetch 8\r
7051 ;@LD A,X  from (IX)\r
7052 opcode_DD_7D:\r
7053         ldrb r0,[z80xx,#2]\r
7054         mov z80a,r0, lsl #24\r
7055         fetch 8\r
7056 ;@LD A,(IX,N)\r
7057 opcode_DD_7E:\r
7058         ldrsb r0,[z80pc],#1\r
7059         ldr r1,[z80xx]\r
7060         add r0,r1,r0, lsl #16\r
7061         mov r0,r0,lsr #16\r
7062         readmem8\r
7063         mov z80a,r0, lsl #24\r
7064         fetch 19\r
7065 \r
7066 ;@ADD A,I  ( IX)\r
7067 opcode_DD_84:\r
7068         ldrb r0,[z80xx,#3]\r
7069         opADDb\r
7070         fetch 8\r
7071 ;@ADD A,X  ( IX)\r
7072 opcode_DD_85:\r
7073         ldrb r0,[z80xx,#2]\r
7074         opADDb\r
7075         fetch 8\r
7076 ;@ADD A,(IX+N)\r
7077 opcode_DD_86:\r
7078         ldrsb r0,[z80pc],#1\r
7079         ldr r1,[z80xx]\r
7080         add r0,r1,r0, lsl #16\r
7081         mov r0,r0,lsr #16\r
7082         readmem8\r
7083         opADDb\r
7084         fetch 19\r
7085 \r
7086 ;@ADC A,I  (IX)\r
7087 opcode_DD_8C:\r
7088         ldrb r0,[z80xx,#3]\r
7089         opADCb\r
7090         fetch 8\r
7091 ;@ADC A,X  (IX)\r
7092 opcode_DD_8D:\r
7093         ldrb r0,[z80xx,#2]\r
7094         opADCb\r
7095         fetch 8\r
7096 ;@ADC A,(IX+N)\r
7097 opcode_DD_8E:\r
7098         ldrsb r0,[z80pc],#1\r
7099         ldr r1,[z80xx]\r
7100         add r0,r1,r0, lsl #16\r
7101         mov r0,r0,lsr #16\r
7102         readmem8\r
7103         opADCb\r
7104         fetch 19\r
7105 \r
7106 ;@SUB A,I  (IX)\r
7107 opcode_DD_94:\r
7108         ldrb r0,[z80xx,#3]\r
7109         opSUBb\r
7110         fetch 8\r
7111 ;@SUB A,X  (IX)\r
7112 opcode_DD_95:\r
7113         ldrb r0,[z80xx,#2]\r
7114         opSUBb\r
7115         fetch 8\r
7116 ;@SUB A,(IX+N)\r
7117 opcode_DD_96:\r
7118         ldrsb r0,[z80pc],#1\r
7119         ldr r1,[z80xx]\r
7120         add r0,r1,r0, lsl #16\r
7121         mov r0,r0,lsr #16\r
7122         readmem8\r
7123         opSUBb\r
7124         fetch 19\r
7125 \r
7126 ;@SBC A,I  (IX)\r
7127 opcode_DD_9C:\r
7128         ldrb r0,[z80xx,#3]\r
7129         opSBCb\r
7130         fetch 8\r
7131 ;@SBC A,X  (IX)\r
7132 opcode_DD_9D:\r
7133         ldrb r0,[z80xx,#2]\r
7134         opSBCb\r
7135         fetch 8\r
7136 ;@SBC A,(IX+N)\r
7137 opcode_DD_9E:\r
7138         ldrsb r0,[z80pc],#1\r
7139         ldr r1,[z80xx]\r
7140         add r0,r1,r0, lsl #16\r
7141         mov r0,r0,lsr #16\r
7142         readmem8\r
7143         opSBCb\r
7144         fetch 19\r
7145 \r
7146 ;@AND I  (IX)\r
7147 opcode_DD_A4:\r
7148         ldrb r0,[z80xx,#3]\r
7149         opANDb\r
7150         fetch 8\r
7151 ;@AND X  (IX)\r
7152 opcode_DD_A5:\r
7153         ldrb r0,[z80xx,#2]\r
7154         opANDb\r
7155         fetch 8\r
7156 ;@AND (IX+N)\r
7157 opcode_DD_A6:\r
7158         ldrsb r0,[z80pc],#1\r
7159         ldr r1,[z80xx]\r
7160         add r0,r1,r0, lsl #16\r
7161         mov r0,r0,lsr #16\r
7162         readmem8\r
7163         opANDb\r
7164         fetch 19\r
7165 \r
7166 ;@XOR I  (IX)\r
7167 opcode_DD_AC:\r
7168         ldrb r0,[z80xx,#3]\r
7169         opXORb\r
7170         fetch 8\r
7171 ;@XOR X  (IX)\r
7172 opcode_DD_AD:\r
7173         ldrb r0,[z80xx,#2]\r
7174         opXORb\r
7175         fetch 8\r
7176 ;@XOR (IX+N)\r
7177 opcode_DD_AE:\r
7178         ldrsb r0,[z80pc],#1\r
7179         ldr r1,[z80xx]\r
7180         add r0,r1,r0, lsl #16\r
7181         mov r0,r0,lsr #16\r
7182         readmem8\r
7183         opXORb\r
7184         fetch 19\r
7185 \r
7186 ;@OR I  (IX)\r
7187 opcode_DD_B4:\r
7188         ldrb r0,[z80xx,#3]\r
7189         opORb\r
7190         fetch 8\r
7191 ;@OR X  (IX)\r
7192 opcode_DD_B5:\r
7193         ldrb r0,[z80xx,#2]\r
7194         opORb\r
7195         fetch 8\r
7196 ;@OR (IX+N)\r
7197 opcode_DD_B6:\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         readmem8\r
7203         opORb\r
7204         fetch 19\r
7205 \r
7206 ;@CP I  (IX)\r
7207 opcode_DD_BC:\r
7208         ldrb r0,[z80xx,#3]\r
7209         opCPb\r
7210         fetch 8\r
7211 ;@CP X  (IX)\r
7212 opcode_DD_BD:\r
7213         ldrb r0,[z80xx,#2]\r
7214         opCPb\r
7215         fetch 8\r
7216 ;@CP (IX+N)\r
7217 opcode_DD_BE:\r
7218         ldrsb r0,[z80pc],#1\r
7219         ldr r1,[z80xx]\r
7220         add r0,r1,r0, lsl #16\r
7221         mov r0,r0,lsr #16\r
7222         readmem8\r
7223         opCPb\r
7224         fetch 19\r
7225 \r
7226 \r
7227 opcodes_DD_CB_LOCAL: .word opcodes_DD_CB\r
7228 opcode_DD_CB:\r
7229 ;@Looks up the opcode on the opcodes_DD_CB table and then \r
7230 ;@moves the PC to the location of the subroutine\r
7231         ldrsb r0,[z80pc],#1\r
7232         ldr r1,[z80xx]\r
7233         add r0,r1,r0, lsl #16\r
7234         mov r0,r0,lsr #16\r
7235 \r
7236         ldrb r1,[z80pc],#1\r
7237         ldr pc,[pc,r1, lsl #2]\r
7238                 .word 0x00\r
7239 opcodes_DD_CB:\r
7240                 .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
7241                 .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
7242                 .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
7243                 .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
7244                 .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
7245                 .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
7246                 .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
7247                 .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
7248                 .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
7249                 .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
7250                 .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
7251                 .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
7252                 .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
7253                 .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
7254                 .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
7255                 .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
7256                 .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
7257                 .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
7258                 .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
7259                 .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
7260                 .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
7261                 .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
7262                 .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
7263                 .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
7264                 .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
7265                 .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
7266                 .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
7267                 .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
7268                 .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
7269                 .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
7270                 .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
7271                 .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
7272 \r
7273 ;@RLC (IX+N) \r
7274 opcode_DD_CB_06:\r
7275         stmfd sp!,{r0}          ;@ save addr\r
7276         readmem8\r
7277         opRLCb\r
7278         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7279         writemem8\r
7280         fetch 23\r
7281 ;@RRC (IX+N) \r
7282 opcode_DD_CB_0E:\r
7283         stmfd sp!,{r0}          ;@ save addr\r
7284         readmem8\r
7285         opRRCb\r
7286         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7287         writemem8\r
7288         fetch 23\r
7289 ;@RL (IX+N) \r
7290 opcode_DD_CB_16:\r
7291         stmfd sp!,{r0}          ;@ save addr\r
7292         readmem8\r
7293         opRLb\r
7294         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7295         writemem8\r
7296         fetch 23\r
7297 ;@RR (IX+N) \r
7298 opcode_DD_CB_1E:\r
7299         stmfd sp!,{r0}          ;@ save addr \r
7300         readmem8\r
7301         opRRb\r
7302         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7303         writemem8\r
7304         fetch 23\r
7305 \r
7306 ;@SLA (IX+N) \r
7307 opcode_DD_CB_26:\r
7308         stmfd sp!,{r0}          ;@ save addr \r
7309         readmem8\r
7310         opSLAb\r
7311         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7312         writemem8\r
7313         fetch 23\r
7314 ;@SRA (IX+N) \r
7315 opcode_DD_CB_2E:\r
7316         stmfd sp!,{r0}          ;@ save addr \r
7317         readmem8\r
7318         opSRAb\r
7319         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7320         writemem8\r
7321         fetch 23\r
7322 ;@SLL (IX+N) \r
7323 opcode_DD_CB_36:\r
7324         stmfd sp!,{r0}          ;@ save addr \r
7325         readmem8\r
7326         opSLLb\r
7327         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7328         writemem8\r
7329         fetch 23\r
7330 ;@SRL (IX+N)\r
7331 opcode_DD_CB_3E:\r
7332         stmfd sp!,{r0}          ;@ save addr \r
7333         readmem8\r
7334         opSRLb\r
7335         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7336         writemem8\r
7337         fetch 23\r
7338 \r
7339 ;@BIT 0,(IX+N) \r
7340 opcode_DD_CB_46:\r
7341         readmem8\r
7342         opBITb 0\r
7343         fetch 20\r
7344 ;@BIT 1,(IX+N) \r
7345 opcode_DD_CB_4E:\r
7346         readmem8\r
7347         opBITb 1\r
7348         fetch 20\r
7349 ;@BIT 2,(IX+N) \r
7350 opcode_DD_CB_56:\r
7351         readmem8\r
7352         opBITb 2\r
7353         fetch 20\r
7354 ;@BIT 3,(IX+N) \r
7355 opcode_DD_CB_5E:\r
7356         readmem8\r
7357         opBITb 3\r
7358         fetch 20\r
7359 ;@BIT 4,(IX+N) \r
7360 opcode_DD_CB_66:\r
7361         readmem8\r
7362         opBITb 4\r
7363         fetch 20\r
7364 ;@BIT 5,(IX+N) \r
7365 opcode_DD_CB_6E:\r
7366         readmem8\r
7367         opBITb 5\r
7368         fetch 20\r
7369 ;@BIT 6,(IX+N) \r
7370 opcode_DD_CB_76:\r
7371         readmem8\r
7372         opBITb 6\r
7373         fetch 20\r
7374 ;@BIT 7,(IX+N) \r
7375 opcode_DD_CB_7E:\r
7376         readmem8\r
7377         opBIT7b\r
7378         fetch 20\r
7379 ;@RES 0,(IX+N) \r
7380 opcode_DD_CB_86:\r
7381         opRESmem 0\r
7382 ;@RES 1,(IX+N) \r
7383 opcode_DD_CB_8E:\r
7384         opRESmem 1\r
7385 ;@RES 2,(IX+N) \r
7386 opcode_DD_CB_96:\r
7387         opRESmem 2\r
7388 ;@RES 3,(IX+N) \r
7389 opcode_DD_CB_9E:\r
7390         opRESmem 3\r
7391 ;@RES 4,(IX+N) \r
7392 opcode_DD_CB_A6:\r
7393         opRESmem 4\r
7394 ;@RES 5,(IX+N) \r
7395 opcode_DD_CB_AE:\r
7396         opRESmem 5\r
7397 ;@RES 6,(IX+N) \r
7398 opcode_DD_CB_B6:\r
7399         opRESmem 6\r
7400 ;@RES 7,(IX+N) \r
7401 opcode_DD_CB_BE:\r
7402         opRESmem 7\r
7403 \r
7404 ;@SET 0,(IX+N) \r
7405 opcode_DD_CB_C6:\r
7406         opSETmem 0\r
7407 ;@SET 1,(IX+N) \r
7408 opcode_DD_CB_CE:\r
7409         opSETmem 1\r
7410 ;@SET 2,(IX+N) \r
7411 opcode_DD_CB_D6:\r
7412         opSETmem 2\r
7413 ;@SET 3,(IX+N) \r
7414 opcode_DD_CB_DE:\r
7415         opSETmem 3\r
7416 ;@SET 4,(IX+N) \r
7417 opcode_DD_CB_E6:\r
7418         opSETmem 4\r
7419 ;@SET 5,(IX+N) \r
7420 opcode_DD_CB_EE:\r
7421         opSETmem 5\r
7422 ;@SET 6,(IX+N) \r
7423 opcode_DD_CB_F6:\r
7424         opSETmem 6\r
7425 ;@SET 7,(IX+N) \r
7426 opcode_DD_CB_FE:\r
7427         opSETmem 7\r
7428 \r
7429 \r
7430 \r
7431 ;@POP IX\r
7432 opcode_DD_E1:\r
7433 .if FAST_Z80SP\r
7434         opPOP\r
7435 .else\r
7436         mov r0,z80sp\r
7437         stmfd sp!,{z80xx}\r
7438         readmem16\r
7439         ldmfd sp!,{z80xx}\r
7440         add z80sp,z80sp,#2\r
7441 .endif\r
7442         strh r0,[z80xx,#2]\r
7443         fetch 14\r
7444 ;@EX (SP),IX\r
7445 opcode_DD_E3:\r
7446 .if FAST_Z80SP\r
7447         ldrb r0,[z80sp]\r
7448         ldrb r1,[z80sp,#1]\r
7449         orr r2,r0,r1, lsl #8\r
7450         ldrh r1,[z80xx,#2]\r
7451         mov r0,r1, lsr #8\r
7452         strb r0,[z80sp,#1]\r
7453         strb r1,[z80sp]\r
7454         strh r2,[z80xx,#2]\r
7455 .else\r
7456         mov r0,z80sp\r
7457         stmfd sp!,{z80xx}\r
7458         readmem16\r
7459         ldmfd sp!,{z80xx}\r
7460         mov r2,r0\r
7461         ldrh r0,[z80xx,#2]\r
7462         strh r2,[z80xx,#2]\r
7463         mov r1,z80sp\r
7464         writemem16\r
7465 .endif\r
7466         fetch 23\r
7467 ;@PUSH IX\r
7468 opcode_DD_E5:\r
7469         ldr r2,[z80xx]\r
7470         opPUSHreg r2\r
7471         fetch 15\r
7472 ;@JP (IX)\r
7473 opcode_DD_E9:\r
7474         ldrh r0,[z80xx,#2]\r
7475         rebasepc\r
7476         fetch 8\r
7477 ;@LD SP,IX\r
7478 opcode_DD_F9:\r
7479 .if FAST_Z80SP\r
7480         ldrh r0,[z80xx,#2]\r
7481         rebasesp\r
7482 .else\r
7483         ldrh z80sp,[z80xx,#2]\r
7484 .endif\r
7485         fetch 10\r
7486 \r
7487 ;@##################################\r
7488 ;@##################################\r
7489 ;@###  opcodes ED  #########################\r
7490 ;@##################################\r
7491 ;@##################################\r
7492 \r
7493 opcode_ED_NF:\r
7494         fetch 8\r
7495 ;@      ldrb r0,[z80pc],#1\r
7496 ;@      ldr pc,[opcodes,r0, lsl #2]\r
7497 ;@      mov r0,#0xED00\r
7498 ;@      orr r0,r0,r1\r
7499 ;@      b end_loop\r
7500 \r
7501 ;@IN B,(C)\r
7502 opcode_ED_40:\r
7503         opIN_C\r
7504         and z80bc,z80bc,#0xFF<<16\r
7505         orr z80bc,z80bc,r0, lsl #24\r
7506         sub r1,opcodes,#0x100\r
7507         ldrb r0,[r1,r0]\r
7508         and z80f,z80f,#1<<CFlag\r
7509         orr z80f,z80f,r0\r
7510         fetch 12\r
7511 ;@OUT (C),B\r
7512 opcode_ED_41:\r
7513         mov r1,z80bc, lsr #24\r
7514         opOUT_C\r
7515         fetch 12\r
7516 \r
7517 ;@SBC HL,BC\r
7518 opcode_ED_42:\r
7519         opSBC16 z80bc\r
7520 \r
7521 ;@LD (NN),BC\r
7522 opcode_ED_43:\r
7523         ldrb r0,[z80pc],#1\r
7524         ldrb r1,[z80pc],#1\r
7525         orr r1,r0,r1, lsl #8\r
7526         mov r0,z80bc, lsr #16\r
7527         writemem16\r
7528         fetch 20\r
7529 ;@NEG\r
7530 opcode_ED_44:\r
7531         rsbs z80a,z80a,#0\r
7532         mrs z80f,cpsr\r
7533         mov z80f,z80f,lsr#28                                    ;@S,Z,V&C\r
7534         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@invert C and set n.\r
7535         tst z80a,#0x0F000000                                    ;@H, correct\r
7536         orrne z80f,z80f,#1<<HFlag\r
7537         fetch 8\r
7538  \r
7539 ;@RETN, moved to ED_4D\r
7540 ;@opcode_ED_45:\r
7541 \r
7542 ;@IM 0\r
7543 opcode_ED_46:\r
7544         strb z80a,[cpucontext,#z80im]\r
7545         fetch 8\r
7546 ;@LD I,A\r
7547 opcode_ED_47:\r
7548         str z80a,[cpucontext,#z80i]\r
7549         fetch 9\r
7550 ;@IN C,(C)\r
7551 opcode_ED_48:\r
7552         opIN_C\r
7553         and z80bc,z80bc,#0xFF<<24\r
7554         orr z80bc,z80bc,r0, lsl #16\r
7555         sub r1,opcodes,#0x100\r
7556         ldrb r0,[r1,r0]\r
7557         and z80f,z80f,#1<<CFlag\r
7558         orr z80f,z80f,r0\r
7559         fetch 12\r
7560 ;@OUT (C),C\r
7561 opcode_ED_49:\r
7562         mov r0,z80bc, lsr #16\r
7563         and r1,r0,#0xFF\r
7564         opOUT\r
7565         fetch 12\r
7566 ;@ADC HL,BC\r
7567 opcode_ED_4A:\r
7568         opADC16 z80bc\r
7569 ;@LD BC,(NN)\r
7570 opcode_ED_4B:\r
7571         ldrb r0,[z80pc],#1\r
7572         ldrb r1,[z80pc],#1\r
7573         orr r0,r0,r1, lsl #8\r
7574         readmem16\r
7575         mov z80bc,r0, lsl #16\r
7576         fetch 20\r
7577 \r
7578 ;@RETN\r
7579 opcode_ED_45:\r
7580 ;@RETI\r
7581 opcode_ED_4D:\r
7582         ldrb r0,[cpucontext,#z80if]\r
7583         tst r0,#Z80_IF2\r
7584         orrne r0,r0,#Z80_IF1\r
7585         biceq r0,r0,#Z80_IF1\r
7586         strb r0,[cpucontext,#z80if]\r
7587     opPOP\r
7588         rebasepc\r
7589         fetch 14\r
7590 \r
7591 ;@LD R,A\r
7592 opcode_ED_4F:\r
7593         mov r0,z80a,lsr#24\r
7594         strb r0,[cpucontext,#z80r]\r
7595         fetch 9\r
7596 \r
7597 ;@IN D,(C)\r
7598 opcode_ED_50:\r
7599         opIN_C\r
7600         and z80de,z80de,#0xFF<<16\r
7601         orr z80de,z80de,r0, lsl #24\r
7602         sub r1,opcodes,#0x100\r
7603         ldrb r0,[r1,r0]\r
7604         and z80f,z80f,#1<<CFlag\r
7605         orr z80f,z80f,r0\r
7606         fetch 12\r
7607 ;@OUT (C),D\r
7608 opcode_ED_51:\r
7609         mov r1,z80de, lsr #24\r
7610         opOUT_C\r
7611         fetch 12\r
7612 ;@SBC HL,DE\r
7613 opcode_ED_52:\r
7614         opSBC16 z80de\r
7615 ;@LD (NN),DE\r
7616 opcode_ED_53:\r
7617         ldrb r0,[z80pc],#1\r
7618         ldrb r1,[z80pc],#1\r
7619         orr r1,r0,r1, lsl #8\r
7620         mov r0,z80de, lsr #16\r
7621         writemem16\r
7622         fetch 20\r
7623 ;@IM 1\r
7624 opcode_ED_56:\r
7625         mov r0,#1\r
7626         strb r0,[cpucontext,#z80im]\r
7627         fetch 8\r
7628 ;@LD A,I\r
7629 opcode_ED_57:\r
7630         ldr z80a,[cpucontext,#z80i]\r
7631         tst z80a,#0xFF000000\r
7632         and z80f,z80f,#(1<<CFlag)\r
7633         orreq z80f,z80f,#(1<<ZFlag)\r
7634         orrmi z80f,z80f,#(1<<SFlag)\r
7635         ldrb r0,[cpucontext,#z80if]\r
7636         tst r0,#Z80_IF2\r
7637         orrne z80f,z80f,#(1<<VFlag)\r
7638         fetch 9\r
7639 ;@IN E,(C)\r
7640 opcode_ED_58:\r
7641         opIN_C\r
7642         and z80de,z80de,#0xFF<<24\r
7643         orr z80de,z80de,r0, lsl #16\r
7644         sub r1,opcodes,#0x100\r
7645         ldrb r0,[r1,r0]\r
7646         and z80f,z80f,#1<<CFlag\r
7647         orr z80f,z80f,r0\r
7648         fetch 12\r
7649 ;@OUT (C),E\r
7650 opcode_ED_59:\r
7651         mov r1,z80de, lsr #16\r
7652         and r1,r1,#0xFF\r
7653         opOUT_C\r
7654         fetch 12\r
7655 ;@ADC HL,DE\r
7656 opcode_ED_5A:\r
7657         opADC16 z80de\r
7658 ;@LD DE,(NN)\r
7659 opcode_ED_5B:\r
7660         ldrb r0,[z80pc],#1\r
7661         ldrb r1,[z80pc],#1\r
7662         orr r0,r0,r1, lsl #8\r
7663         readmem16\r
7664         mov z80de,r0, lsl #16\r
7665         fetch 20\r
7666 ;@IM 2\r
7667 opcode_ED_5E:\r
7668         mov r0,#2\r
7669         strb r0,[cpucontext,#z80im]\r
7670         fetch 8\r
7671 ;@LD A,R\r
7672 opcode_ED_5F:\r
7673         ldrb r0,[cpucontext,#z80r]\r
7674         and r0,r0,#0x80\r
7675         rsb r1,z80_icount,#0\r
7676         and r1,r1,#0x7F\r
7677         orr r0,r0,r1\r
7678         movs z80a,r0, lsl #24\r
7679         and z80f,z80f,#1<<CFlag\r
7680         orrmi z80f,z80f,#(1<<SFlag)\r
7681         orreq z80f,z80f,#(1<<ZFlag)\r
7682         ldrb r0,[cpucontext,#z80if]\r
7683         tst r0,#Z80_IF2\r
7684         orrne z80f,z80f,#(1<<VFlag)\r
7685         fetch 9\r
7686 ;@IN H,(C)\r
7687 opcode_ED_60:\r
7688         opIN_C\r
7689         and z80hl,z80hl,#0xFF<<16\r
7690         orr z80hl,z80hl,r0, lsl #24\r
7691         sub r1,opcodes,#0x100\r
7692         ldrb r0,[r1,r0]\r
7693         and z80f,z80f,#1<<CFlag\r
7694         orr z80f,z80f,r0\r
7695         fetch 12\r
7696 ;@OUT (C),H\r
7697 opcode_ED_61:\r
7698         mov r1,z80hl, lsr #24\r
7699         opOUT_C\r
7700         fetch 12\r
7701 ;@SBC HL,HL\r
7702 opcode_ED_62:\r
7703         opSBC16HL\r
7704 ;@RRD\r
7705 opcode_ED_67:\r
7706         readmem8HL\r
7707         mov r1,r0,ror#4\r
7708         orr r0,r1,z80a,lsr#20\r
7709         bic z80a,z80a,#0x0F000000\r
7710         orr z80a,z80a,r1,lsr#4\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 L,(C)\r
7718 opcode_ED_68:\r
7719         opIN_C\r
7720         and z80hl,z80hl,#0xFF<<24\r
7721         orr z80hl,z80hl,r0, lsl #16\r
7722         and z80f,z80f,#1<<CFlag\r
7723         sub r1,opcodes,#0x100\r
7724         ldrb r0,[r1,r0]\r
7725         orr z80f,z80f,r0\r
7726         fetch 12\r
7727 ;@OUT (C),L\r
7728 opcode_ED_69:\r
7729         mov r1,z80hl, lsr #16\r
7730         and r1,r1,#0xFF\r
7731         opOUT_C\r
7732         fetch 12\r
7733 ;@ADC HL,HL\r
7734 opcode_ED_6A:\r
7735         opADC16HL\r
7736 ;@RLD\r
7737 opcode_ED_6F:\r
7738         readmem8HL\r
7739         orr r0,r0,z80a,lsl#4\r
7740         mov r0,r0,ror#28\r
7741         and z80a,z80a,#0xF0000000\r
7742         orr z80a,z80a,r0,lsl#16\r
7743         and z80a,z80a,#0xFF000000\r
7744         writemem8HL\r
7745         sub r1,opcodes,#0x100\r
7746         ldrb r0,[r1,z80a, lsr #24]\r
7747         and z80f,z80f,#1<<CFlag\r
7748         orr z80f,z80f,r0\r
7749         fetch 18\r
7750 ;@IN F,(C)\r
7751 opcode_ED_70:\r
7752         opIN_C\r
7753         and z80f,z80f,#1<<CFlag\r
7754         sub r1,opcodes,#0x100\r
7755         ldrb r0,[r1,r0]\r
7756         orr z80f,z80f,r0\r
7757         fetch 12\r
7758 ;@OUT (C),0\r
7759 opcode_ED_71:\r
7760         mov r1,#0\r
7761         opOUT_C\r
7762         fetch 12\r
7763 \r
7764 ;@SBC HL,SP\r
7765 opcode_ED_72:\r
7766 .if FAST_Z80SP\r
7767         ldr r0,[cpucontext,#z80sp_base]\r
7768         sub r0,z80sp,r0\r
7769         mov r0, r0, lsl #16\r
7770 .else\r
7771         mov r0,z80sp,lsl#16\r
7772 .endif\r
7773         opSBC16 r0\r
7774 ;@LD (NN),SP\r
7775 opcode_ED_73:\r
7776         ldrb r0,[z80pc],#1\r
7777         ldrb r1,[z80pc],#1\r
7778         orr r1,r0,r1, lsl #8\r
7779 .if FAST_Z80SP\r
7780         ldr r0,[cpucontext,#z80sp_base]\r
7781         sub r0,z80sp,r0\r
7782 .else\r
7783         mov r0,z80sp\r
7784 .endif\r
7785         writemem16\r
7786         fetch 16\r
7787 ;@IN A,(C)\r
7788 opcode_ED_78:\r
7789         opIN_C\r
7790         mov z80a,r0, lsl #24\r
7791         and z80f,z80f,#1<<CFlag\r
7792         sub r1,opcodes,#0x100\r
7793         ldrb r0,[r1,r0]\r
7794         orr z80f,z80f,r0\r
7795         fetch 12\r
7796 ;@OUT (C),A\r
7797 opcode_ED_79:\r
7798         mov r1,z80a, lsr #24\r
7799         opOUT_C\r
7800         fetch 12\r
7801 ;@ADC HL,SP\r
7802 opcode_ED_7A:\r
7803 .if FAST_Z80SP\r
7804         ldr r0,[cpucontext,#z80sp_base]\r
7805         sub r0,z80sp,r0\r
7806         mov r0, r0, lsl #16\r
7807 .else\r
7808         mov r0,z80sp,lsl#16\r
7809 .endif\r
7810         opADC16 r0\r
7811 ;@LD SP,(NN)\r
7812 opcode_ED_7B:\r
7813         ldrb r0,[z80pc],#1\r
7814         ldrb r1,[z80pc],#1\r
7815         orr r0,r0,r1, lsl #8\r
7816         readmem16\r
7817 .if FAST_Z80SP\r
7818         rebasesp\r
7819 .else\r
7820         mov z80sp,r0\r
7821 .endif\r
7822         fetch 20\r
7823 ;@LDI\r
7824 opcode_ED_A0:\r
7825         copymem8HL_DE\r
7826         add z80hl,z80hl,#1<<16\r
7827         add z80de,z80de,#1<<16\r
7828         subs z80bc,z80bc,#1<<16\r
7829         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7830         orrne z80f,z80f,#1<<VFlag\r
7831         fetch 16\r
7832 ;@CPI\r
7833 opcode_ED_A1:\r
7834         readmem8HL\r
7835         add z80hl,z80hl,#0x00010000\r
7836         mov r1,z80a,lsl#4\r
7837         cmp z80a,r0,lsl#24\r
7838         and z80f,z80f,#1<<CFlag\r
7839         orr z80f,z80f,#1<<NFlag\r
7840         orrmi z80f,z80f,#1<<SFlag\r
7841         orreq z80f,z80f,#1<<ZFlag\r
7842         cmp r1,r0,lsl#28\r
7843         orrcc z80f,z80f,#1<<HFlag\r
7844         subs z80bc,z80bc,#0x00010000\r
7845         orrne z80f,z80f,#1<<VFlag\r
7846         fetch 16\r
7847 ;@INI\r
7848 opcode_ED_A2:\r
7849         opIN_C\r
7850         and z80f,r0,#0x80\r
7851         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7852 ;@      mov r1,z80bc,lsl#8\r
7853 ;@      add r1,r1,#0x01000000\r
7854 ;@      adds r1,r1,r0,lsl#24\r
7855 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7856         writemem8HL\r
7857         add z80hl,z80hl,#1<<16\r
7858         sub z80bc,z80bc,#1<<24\r
7859         tst z80bc,#0xFF<<24\r
7860         orrmi z80f,z80f,#1<<SFlag\r
7861         orreq z80f,z80f,#1<<ZFlag\r
7862         fetch 16\r
7863 \r
7864 ;@OUTI\r
7865 opcode_ED_A3:\r
7866         readmem8HL\r
7867         add z80hl,z80hl,#1<<16\r
7868         and z80f,r0,#0x80\r
7869         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7870         mov r1,z80hl,lsl#8\r
7871         adds r1,r1,r0,lsl#24\r
7872         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL)+L > 0xFF\r
7873         sub z80bc,z80bc,#1<<24\r
7874         tst z80bc,#0xFF<<24\r
7875         orrmi z80f,z80f,#1<<SFlag\r
7876         orreq z80f,z80f,#1<<ZFlag\r
7877         mov r1,r0\r
7878         opOUT_C\r
7879         fetch 16\r
7880 \r
7881 ;@LDD\r
7882 opcode_ED_A8:\r
7883         copymem8HL_DE\r
7884         sub z80hl,z80hl,#1<<16\r
7885         sub z80de,z80de,#1<<16\r
7886         subs z80bc,z80bc,#1<<16\r
7887         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7888         orrne z80f,z80f,#1<<VFlag\r
7889         fetch 16\r
7890 \r
7891 ;@CPD\r
7892 opcode_ED_A9:\r
7893         readmem8HL\r
7894         sub z80hl,z80hl,#1<<16\r
7895         mov r1,z80a,lsl#4\r
7896         cmp z80a,r0,lsl#24\r
7897         and z80f,z80f,#1<<CFlag\r
7898         orr z80f,z80f,#1<<NFlag\r
7899         orrmi z80f,z80f,#1<<SFlag\r
7900         orreq z80f,z80f,#1<<ZFlag\r
7901         cmp r1,r0,lsl#28\r
7902         orrcc z80f,z80f,#1<<HFlag\r
7903         subs z80bc,z80bc,#0x00010000\r
7904         orrne z80f,z80f,#1<<VFlag\r
7905         fetch 16\r
7906 \r
7907 ;@IND\r
7908 opcode_ED_AA:\r
7909         opIN_C\r
7910         and z80f,r0,#0x80\r
7911         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7912 ;@      mov r1,z80bc,lsl#8\r
7913 ;@      sub r1,r1,#0x01000000\r
7914 ;@      adds r1,r1,r0,lsl#24\r
7915 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
7916         writemem8HL\r
7917         sub z80hl,z80hl,#1<<16\r
7918         sub z80bc,z80bc,#1<<24\r
7919         tst z80bc,#0xFF<<24\r
7920         orrmi z80f,z80f,#1<<SFlag\r
7921         orreq z80f,z80f,#1<<ZFlag\r
7922         fetch 16\r
7923 \r
7924 ;@OUTD\r
7925 opcode_ED_AB:\r
7926         readmem8HL\r
7927         sub z80hl,z80hl,#1<<16\r
7928         and z80f,r0,#0x80\r
7929         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7930         mov r1,z80hl,lsl#8\r
7931         adds r1,r1,r0,lsl#24\r
7932         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
7933         sub z80bc,z80bc,#1<<24\r
7934         tst z80bc,#0xFF<<24\r
7935         orrmi z80f,z80f,#1<<SFlag\r
7936         orreq z80f,z80f,#1<<ZFlag\r
7937         mov r1,r0\r
7938         opOUT_C\r
7939         fetch 16\r
7940 ;@LDIR\r
7941 opcode_ED_B0:\r
7942         copymem8HL_DE\r
7943         add z80hl,z80hl,#1<<16\r
7944         add z80de,z80de,#1<<16\r
7945         subs z80bc,z80bc,#1<<16\r
7946         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7947         orrne z80f,z80f,#1<<VFlag\r
7948         subne z80pc,z80pc,#2\r
7949         subne z80_icount,z80_icount,#5\r
7950         fetch 16\r
7951 \r
7952 ;@CPIR\r
7953 opcode_ED_B1:\r
7954         readmem8HL\r
7955         add z80hl,z80hl,#1<<16    \r
7956         mov r1,z80a,lsl#4\r
7957         cmp z80a,r0,lsl#24\r
7958         and z80f,z80f,#1<<CFlag\r
7959         orr z80f,z80f,#1<<NFlag\r
7960         orrmi z80f,z80f,#1<<SFlag\r
7961         orreq z80f,z80f,#1<<ZFlag\r
7962         cmp r1,r0,lsl#28\r
7963         orrcc z80f,z80f,#1<<HFlag\r
7964         subs z80bc,z80bc,#1<<16\r
7965         bne opcode_ED_B1_decpc\r
7966         fetch 16\r
7967 opcode_ED_B1_decpc:\r
7968         orr z80f,z80f,#1<<VFlag\r
7969         tst z80f,#1<<ZFlag\r
7970         subeq z80pc,z80pc,#2\r
7971         subeq z80_icount,z80_icount,#5\r
7972         fetch 16\r
7973 ;@INIR\r
7974 opcode_ED_B2:\r
7975         opIN_C\r
7976         and z80f,r0,#0x80\r
7977         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7978 ;@      mov r1,z80bc,lsl#8\r
7979 ;@      add r1,r1,#0x01000000\r
7980 ;@      adds r1,r1,r0,lsl#24\r
7981 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7982         writemem8HL\r
7983         add z80hl,z80hl,#1<<16\r
7984         sub z80bc,z80bc,#1<<24\r
7985         tst z80bc,#0xFF<<24\r
7986         orrmi z80f,z80f,#1<<SFlag\r
7987         orreq z80f,z80f,#1<<ZFlag\r
7988         subne z80pc,z80pc,#2\r
7989         subne z80_icount,z80_icount,#5\r
7990         fetch 16\r
7991 ;@OTIR\r
7992 opcode_ED_B3:\r
7993         readmem8HL\r
7994         add z80hl,z80hl,#1<<16\r
7995         and z80f,r0,#0x80\r
7996         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7997         mov r1,z80hl,lsl#8\r
7998         adds r1,r1,r0,lsl#24\r
7999         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
8000         sub z80bc,z80bc,#1<<24\r
8001         tst z80bc,#0xFF<<24\r
8002         orrmi z80f,z80f,#1<<SFlag\r
8003         orreq z80f,z80f,#1<<ZFlag\r
8004         subne z80pc,z80pc,#2\r
8005         subne z80_icount,z80_icount,#5\r
8006         mov r1,r0\r
8007         opOUT_C\r
8008         fetch 16\r
8009 ;@LDDR\r
8010 opcode_ED_B8:\r
8011         copymem8HL_DE\r
8012         sub z80hl,z80hl,#1<<16\r
8013         sub z80de,z80de,#1<<16\r
8014         subs z80bc,z80bc,#1<<16\r
8015         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
8016         orrne z80f,z80f,#1<<VFlag\r
8017         subne z80pc,z80pc,#2\r
8018         subne z80_icount,z80_icount,#5\r
8019         fetch 16\r
8020 \r
8021 ;@CPDR\r
8022 opcode_ED_B9:\r
8023         readmem8HL\r
8024         sub z80hl,z80hl,#1<<16\r
8025         mov r1,z80a,lsl#4\r
8026         cmp z80a,r0,lsl#24\r
8027         and z80f,z80f,#1<<CFlag\r
8028         orr z80f,z80f,#1<<NFlag\r
8029         orrmi z80f,z80f,#1<<SFlag\r
8030         orreq z80f,z80f,#1<<ZFlag\r
8031         cmp r1,r0,lsl#28\r
8032         orrcc z80f,z80f,#1<<HFlag\r
8033         subs z80bc,z80bc,#1<<16\r
8034         bne opcode_ED_B9_decpc\r
8035         fetch 16\r
8036 opcode_ED_B9_decpc:\r
8037         orr z80f,z80f,#1<<VFlag\r
8038         tst z80f,#1<<ZFlag\r
8039         subeq z80pc,z80pc,#2\r
8040         subeq z80_icount,z80_icount,#5\r
8041         fetch 16\r
8042 ;@INDR\r
8043 opcode_ED_BA:\r
8044         opIN_C\r
8045         and z80f,r0,#0x80\r
8046         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8047 ;@      mov r1,z80bc,lsl#8\r
8048 ;@      sub r1,r1,#0x01000000\r
8049 ;@      adds r1,r1,r0,lsl#24\r
8050 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
8051         writemem8HL\r
8052         sub z80hl,z80hl,#1<<16\r
8053         sub z80bc,z80bc,#1<<24\r
8054         tst z80bc,#0xFF<<24\r
8055         orrmi z80f,z80f,#1<<SFlag\r
8056         orreq z80f,z80f,#1<<ZFlag\r
8057         subne z80pc,z80pc,#2\r
8058         subne z80_icount,z80_icount,#5\r
8059         fetch 16\r
8060 ;@OTDR\r
8061 opcode_ED_BB:\r
8062         readmem8HL\r
8063         sub z80hl,z80hl,#1<<16\r
8064         and z80f,r0,#0x80\r
8065         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8066         mov r1,z80hl,lsl#8\r
8067         adds r1,r1,r0,lsl#24\r
8068         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
8069         sub z80bc,z80bc,#1<<24\r
8070         tst z80bc,#0xFF<<24\r
8071         orrmi z80f,z80f,#1<<SFlag\r
8072         orreq z80f,z80f,#1<<ZFlag\r
8073         subne z80pc,z80pc,#2\r
8074         subne z80_icount,z80_icount,#5\r
8075         mov r1,r0\r
8076         opOUT_C\r
8077         fetch 16\r
8078 ;@##################################\r
8079 ;@##################################\r
8080 ;@###  opcodes FD  #########################\r
8081 ;@##################################\r
8082 ;@##################################\r
8083 ;@Since DD and FD opcodes are all the same apart from the address\r
8084 ;@register they use.  When a FD intruction the program runs the code\r
8085 ;@from the DD location but the address of the IY reg is passed instead\r
8086 ;@of IX\r
8087 \r
8088 ;@end_loop:\r
8089 ;@     b end_loop\r
8090 \r
8091 ;@ vim:filetype=armasm\r
8092 \r