converting drZ80 to use xmap (new mem handling)
[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_FOR_PICODRIVE,    1\r
18       .equiv DRZ80_XMAP,             1\r
19       .equiv DRZ80_XMAP_MORE_INLINE, 1\r
20 \r
21 .if DRZ80_XMAP\r
22       .equ Z80_MEM_SHIFT, 13\r
23 .endif\r
24 \r
25 .if INTERRUPT_MODE\r
26       .extern Interrupt\r
27 .endif\r
28 \r
29 DrZ80Ver: .long 0x0001\r
30 \r
31 ;@ --------------------------- Defines ----------------------------\r
32 ;@ Make sure that regs/pointers for z80pc to z80sp match up!\r
33 \r
34         z80_icount .req r3\r
35         opcodes    .req r4\r
36         cpucontext .req r5\r
37         z80pc      .req r6\r
38         z80a       .req r7\r
39         z80f       .req r8\r
40         z80bc      .req r9\r
41         z80de      .req r10\r
42         z80hl      .req r11\r
43         z80sp      .req r12     \r
44         z80xx      .req lr\r
45 \r
46         .equ z80pc_pointer,           0                  ;@  0\r
47         .equ z80a_pointer,            z80pc_pointer+4    ;@  4\r
48         .equ z80f_pointer,            z80a_pointer+4     ;@  8\r
49         .equ z80bc_pointer,           z80f_pointer+4     ;@  \r
50         .equ z80de_pointer,           z80bc_pointer+4\r
51         .equ z80hl_pointer,           z80de_pointer+4\r
52         .equ z80sp_pointer,           z80hl_pointer+4\r
53         .equ z80pc_base,              z80sp_pointer+4\r
54         .equ z80sp_base,              z80pc_base+4\r
55         .equ z80ix,                   z80sp_base+4\r
56         .equ z80iy,                   z80ix+4\r
57         .equ z80i,                    z80iy+4\r
58         .equ z80a2,                   z80i+4\r
59         .equ z80f2,                   z80a2+4\r
60         .equ z80bc2,                  z80f2+4\r
61         .equ z80de2,                  z80bc2+4\r
62         .equ z80hl2,                  z80de2+4\r
63         .equ cycles_pointer,          z80hl2+4     \r
64         .equ previouspc,              cycles_pointer+4     \r
65         .equ z80irq,                  previouspc+4\r
66         .equ z80if,                   z80irq+1\r
67         .equ z80im,                   z80if+1\r
68         .equ z80r,                    z80im+1\r
69         .equ z80irqvector,            z80r+1\r
70         .equ z80irqcallback,          z80irqvector+4\r
71         .equ z80_write8,              z80irqcallback+4\r
72         .equ z80_write16,             z80_write8+4\r
73         .equ z80_in,                  z80_write16+4\r
74         .equ z80_out,                 z80_in+4\r
75         .equ z80_read8,               z80_out+4\r
76         .equ z80_read16,              z80_read8+4\r
77         .equ z80_rebaseSP,            z80_read16+4\r
78         .equ z80_rebasePC,            z80_rebaseSP+4\r
79 \r
80         .equ VFlag, 0\r
81         .equ CFlag, 1\r
82         .equ ZFlag, 2\r
83         .equ SFlag, 3\r
84         .equ HFlag, 4\r
85         .equ NFlag, 5\r
86         .equ Flag3, 6\r
87         .equ Flag5, 7\r
88 \r
89         .equ Z80_CFlag, 0\r
90         .equ Z80_NFlag, 1\r
91         .equ Z80_VFlag, 2\r
92         .equ Z80_Flag3, 3\r
93         .equ Z80_HFlag, 4\r
94         .equ Z80_Flag5, 5\r
95         .equ Z80_ZFlag, 6\r
96         .equ Z80_SFlag, 7\r
97 \r
98         .equ Z80_IF1, 1<<0\r
99         .equ Z80_IF2, 1<<1\r
100         .equ Z80_HALT, 1<<2\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,r0,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!,{r4,r5,lr}\r
164     mov r4,r0\r
165     bl z80_xmap_read8\r
166     mov r5,r0\r
167     add r0,r4,#1\r
168     bl z80_xmap_read8\r
169     orr r0,r5,r0,lsl #8\r
170     ldmfd sp!,{r4,r5,pc}\r
171 \r
172 z80_xmap_write16: @ data, addr\r
173     add r2,r1,#1\r
174     eor r2,r1,r1\r
175     tst r2,#1<<Z80_MEM_SHIFT\r
176     bne 0f\r
177 \r
178     ldr r2,[cpucontext,#z80_read8]\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!,{r4,r5,lr}\r
191     mov r4,r0\r
192     mov r5,r1\r
193     bl z80_xmap_write8\r
194     mov r0,r4,lsr #8\r
195     add r1,r5,#1\r
196     bl z80_xmap_write8\r
197     ldmfd sp!,{r4,r5,pc}\r
198 .endif\r
199 \r
200 \r
201 .macro fetch cycs\r
202         subs z80_icount,z80_icount,#\cycs\r
203 .if UPDATE_CONTEXT\r
204     str z80pc,[cpucontext,#z80pc_pointer]\r
205         str z80_icount,[cpucontext,#cycles_pointer]\r
206         ldr r1,[cpucontext,#z80pc_base]\r
207         sub r2,z80pc,r1\r
208         str r2,[cpucontext,#previouspc]\r
209 .endif\r
210         ldrplb r0,[z80pc],#1\r
211         ldrpl pc,[opcodes,r0, lsl #2]\r
212         bmi z80_execute_end\r
213 .endm\r
214 \r
215 .macro eatcycles cycs\r
216         sub z80_icount,z80_icount,#\cycs\r
217 .if UPDATE_CONTEXT\r
218         str z80_icount,[cpucontext,#cycles_pointer]\r
219 .endif\r
220 .endm\r
221 \r
222 .macro readmem8\r
223 .if UPDATE_CONTEXT\r
224     str z80pc,[cpucontext,#z80pc_pointer]\r
225 .endif\r
226 .if DRZ80_XMAP\r
227 .if !DRZ80_XMAP_MORE_INLINE\r
228     ldr r1,[cpucontext,#z80_read8]\r
229     mov r2,r0,lsr #Z80_MEM_SHIFT\r
230     ldr r1,[r1,r2,lsl #2]\r
231     movs r1,r1,lsl #1\r
232     ldrccb r0,[r1,r0]\r
233     blcs z80_xmap_read8_handler\r
234 .else\r
235     bl z80_xmap_read8\r
236 .endif\r
237 .else ;@ if !DRZ80_XMAP\r
238     stmfd sp!,{r3,r12}\r
239         mov lr,pc\r
240         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
241         ldmfd sp!,{r3,r12}\r
242 .endif\r
243 .endm\r
244 \r
245 .macro readmem8HL\r
246         mov r0,z80hl, lsr #16\r
247         readmem8\r
248 .endm\r
249 \r
250 .macro readmem16\r
251 .if UPDATE_CONTEXT\r
252      str z80pc,[cpucontext,#z80pc_pointer]\r
253 .endif\r
254 .if DRZ80_XMAP\r
255     bl z80_xmap_read16\r
256 .else\r
257         stmfd sp!,{r3,r12}\r
258         mov lr,pc\r
259         ldr pc,[cpucontext,#z80_read16]\r
260         ldmfd sp!,{r3,r12}\r
261 .endif\r
262 .endm\r
263 \r
264 .macro writemem8\r
265 .if UPDATE_CONTEXT\r
266      str z80pc,[cpucontext,#z80pc_pointer]\r
267 .endif\r
268 .if DRZ80_XMAP\r
269 .if DRZ80_XMAP_MORE_INLINE\r
270     ldr r2,[cpucontext,#z80_write8]\r
271     mov lr,r1,lsr #Z80_MEM_SHIFT\r
272     ldr r2,[r2,lr,lsl #2]\r
273     movs r2,r2,lsl #1\r
274     strccb r0,[r2,r1]\r
275     blcs z80_xmap_write8_handler\r
276 .else\r
277     bl z80_xmap_write8\r
278 .endif\r
279 .else ;@ if !DRZ80_XMAP\r
280         stmfd sp!,{r3,r12}\r
281         mov lr,pc\r
282         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
283         ldmfd sp!,{r3,r12}\r
284 .endif\r
285 .endm\r
286 \r
287 .macro writemem8DE\r
288         mov r1,z80de, lsr #16\r
289         writemem8\r
290 .endm\r
291 \r
292 .macro writemem8HL\r
293         mov r1,z80hl, lsr #16\r
294         writemem8\r
295 .endm\r
296 \r
297 .macro writemem16\r
298 .if UPDATE_CONTEXT\r
299      str z80pc,[cpucontext,#z80pc_pointer]\r
300 .endif\r
301 .if DRZ80_XMAP\r
302     bl z80_xmap_write16\r
303 .else\r
304         stmfd sp!,{r3,r12}\r
305         mov lr,pc\r
306         ldr pc,[cpucontext,#z80_write16]                ;@ r0=data r1=addr\r
307         ldmfd sp!,{r3,r12}\r
308 .endif\r
309 .endm\r
310 \r
311 .macro copymem8HL_DE\r
312 .if UPDATE_CONTEXT\r
313      str z80pc,[cpucontext,#z80pc_pointer]\r
314 .endif\r
315         mov r0,z80hl, lsr #16\r
316 .if DRZ80_XMAP\r
317     bl z80_xmap_read8\r
318 .else\r
319     stmfd sp!,{r3,r12}\r
320         mov lr,pc\r
321         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
322 .endif\r
323         mov r1,z80de, lsr #16\r
324 .if DRZ80_XMAP\r
325     bl z80_xmap_write8\r
326 .else\r
327         mov lr,pc\r
328         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
329         ldmfd sp!,{r3,r12}\r
330 .endif\r
331 .endm\r
332 ;@---------------------------------------\r
333 \r
334 .macro rebasepc\r
335 .if UPDATE_CONTEXT\r
336      str z80pc,[cpucontext,#z80pc_pointer]\r
337 .endif\r
338 .if DRZ80_FOR_PICODRIVE\r
339     ldr r1,[cpucontext,#z80pc_base]\r
340     bic r0,r0,#0xfe000\r
341     add z80pc,r1,r0\r
342 .else\r
343     stmfd sp!,{r3,r12}\r
344         mov lr,pc\r
345         ldr pc,[cpucontext,#z80_rebasePC]               ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
346         ldmfd sp!,{r3,r12}\r
347         mov z80pc,r0\r
348 .endif\r
349 .endm\r
350 \r
351 .macro rebasesp\r
352 .if UPDATE_CONTEXT\r
353      str z80pc,[cpucontext,#z80pc_pointer]\r
354 .endif\r
355 .if DRZ80_FOR_PICODRIVE\r
356     bic r0,r0,#0xfe000\r
357     ldr r1,[cpucontext,#z80sp_base]\r
358     add r0,r1,r0\r
359 .else\r
360         stmfd sp!,{r3,r12}\r
361         mov lr,pc\r
362         ldr pc,[cpucontext,#z80_rebaseSP]               ;@ external function must rebase sp\r
363         ldmfd sp!,{r3,r12}\r
364 .endif\r
365 .endm\r
366 ;@----------------------------------------------------------------------------\r
367 \r
368 .macro opADC\r
369         movs z80f,z80f,lsr#2                                    ;@ get C\r
370         subcs r0,r0,#0x100\r
371         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of half carry\r
372         adcs z80a,z80a,r0,ror#8\r
373         mrs r0,cpsr                                                             ;@ S,Z,V&C\r
374         eor z80f,z80f,z80a,lsr#24\r
375         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
376         orr z80f,z80f,r0,lsr#28\r
377 .endm\r
378 \r
379 .macro opADCA\r
380         movs z80f,z80f,lsr#2                                    ;@ get C\r
381         orrcs z80a,z80a,#0x00800000\r
382         adds z80a,z80a,z80a\r
383         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
384         mov z80f,z80f,lsr#28\r
385         tst z80a,#0x10000000                                    ;@ H, correct\r
386         orrne z80f,z80f,#1<<HFlag\r
387         fetch 4\r
388 .endm\r
389 \r
390 .macro opADCH reg\r
391         mov r0,\reg,lsr#24\r
392         opADC\r
393         fetch 4\r
394 .endm\r
395 \r
396 .macro opADCL reg\r
397         movs z80f,z80f,lsr#2                                    ;@ get C\r
398         adc r0,\reg,\reg,lsr#15\r
399         orrcs z80a,z80a,#0x00800000\r
400         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
401         adds z80a,z80a,r0,lsl#23\r
402         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
403         mov z80f,z80f,lsr#28\r
404         cmn r1,r0,lsl#27\r
405         orrcs z80f,z80f,#1<<HFlag                               ;@ H, correct\r
406         fetch 4\r
407 .endm\r
408 \r
409 .macro opADCb\r
410         opADC\r
411 .endm\r
412 ;@---------------------------------------\r
413 \r
414 .macro opADD reg shift\r
415         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
416         adds z80a,z80a,\reg,lsl#\shift\r
417         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
418         mov z80f,z80f,lsr#28\r
419         cmn r1,\reg,lsl#\shift+4\r
420         orrcs z80f,z80f,#1<<HFlag\r
421 .endm\r
422 \r
423 .macro opADDA\r
424         adds z80a,z80a,z80a\r
425         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
426         mov z80f,z80f,lsr#28\r
427         tst z80a,#0x10000000                                    ;@ H, correct\r
428         orrne z80f,z80f,#1<<HFlag\r
429         fetch 4\r
430 .endm\r
431 \r
432 .macro opADDH reg\r
433         and r0,\reg,#0xFF000000\r
434         opADD r0 0\r
435         fetch 4\r
436 .endm\r
437 \r
438 .macro opADDL reg\r
439         opADD \reg 8\r
440         fetch 4\r
441 .endm\r
442 \r
443 .macro opADDb \r
444         opADD r0 24\r
445 .endm\r
446 ;@---------------------------------------\r
447 \r
448 .macro opADC16 reg\r
449         movs z80f,z80f,lsr#2                                    ;@ get C\r
450         adc r0,z80a,\reg,lsr#15\r
451         orrcs z80hl,z80hl,#0x00008000\r
452         mov r1,z80hl,lsl#4\r
453         adds z80hl,z80hl,r0,lsl#15\r
454         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
455         mov z80f,z80f,lsr#28\r
456         cmn r1,r0,lsl#19\r
457         orrcs z80f,z80f,#1<<HFlag\r
458         fetch 15\r
459 .endm\r
460 \r
461 .macro opADC16HL\r
462         movs z80f,z80f,lsr#2                                    ;@ get C\r
463         orrcs z80hl,z80hl,#0x00008000\r
464         adds z80hl,z80hl,z80hl\r
465         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
466         mov z80f,z80f,lsr#28\r
467         tst z80hl,#0x10000000                                   ;@ H, correct.\r
468         orrne z80f,z80f,#1<<HFlag\r
469         fetch 15\r
470 .endm\r
471 \r
472 .macro opADD16 reg1 reg2\r
473         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
474         adds \reg1,\reg1,\reg2\r
475         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
476         orrcs z80f,z80f,#1<<CFlag\r
477         cmn r1,\reg2,lsl#4\r
478         orrcs z80f,z80f,#1<<HFlag\r
479 .endm\r
480 \r
481 .macro opADD16s reg1 reg2 shift\r
482         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
483         adds \reg1,\reg1,\reg2,lsl#\shift\r
484         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
485         orrcs z80f,z80f,#1<<CFlag\r
486         cmn r1,\reg2,lsl#4+\shift\r
487         orrcs z80f,z80f,#1<<HFlag\r
488 .endm\r
489 \r
490 .macro opADD16_2 reg\r
491         adds \reg,\reg,\reg\r
492         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
493         orrcs z80f,z80f,#1<<CFlag\r
494         tst \reg,#0x10000000                                    ;@ H, correct.\r
495         orrne z80f,z80f,#1<<HFlag\r
496 .endm\r
497 ;@---------------------------------------\r
498 \r
499 .macro opAND reg shift\r
500         and z80a,z80a,\reg,lsl#\shift\r
501         sub r0,opcodes,#0x100\r
502         ldrb z80f,[r0,z80a, lsr #24]\r
503         orr z80f,z80f,#1<<HFlag\r
504 .endm\r
505 \r
506 .macro opANDA\r
507         sub r0,opcodes,#0x100\r
508         ldrb z80f,[r0,z80a, lsr #24]\r
509         orr z80f,z80f,#1<<HFlag\r
510         fetch 4\r
511 .endm\r
512 \r
513 .macro opANDH reg\r
514         opAND \reg 0\r
515         fetch 4\r
516 .endm\r
517 \r
518 .macro opANDL reg\r
519         opAND \reg 8\r
520         fetch 4\r
521 .endm\r
522 \r
523 .macro opANDb\r
524         opAND r0 24\r
525 .endm\r
526 ;@---------------------------------------\r
527 \r
528 .macro opBITH reg bit\r
529         and z80f,z80f,#1<<CFlag\r
530         tst \reg,#1<<(24+\bit)\r
531         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
532         orrne z80f,z80f,#(1<<HFlag)\r
533         fetch 8\r
534 .endm\r
535 \r
536 .macro opBIT7H reg\r
537         and z80f,z80f,#1<<CFlag\r
538         tst \reg,#1<<(24+7)\r
539         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
540         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
541         fetch 8\r
542 .endm\r
543 \r
544 .macro opBITL reg bit\r
545         and z80f,z80f,#1<<CFlag\r
546         tst \reg,#1<<(16+\bit)\r
547         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
548         orrne z80f,z80f,#(1<<HFlag)\r
549         fetch 8\r
550 .endm\r
551 \r
552 .macro opBIT7L reg\r
553         and z80f,z80f,#1<<CFlag\r
554         tst \reg,#1<<(16+7)\r
555         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
556         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
557         fetch 8\r
558 .endm\r
559 \r
560 .macro opBITb bit\r
561         and z80f,z80f,#1<<CFlag\r
562         tst r0,#1<<\bit\r
563         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
564         orrne z80f,z80f,#(1<<HFlag)\r
565 .endm\r
566 \r
567 .macro opBIT7b\r
568         and z80f,z80f,#1<<CFlag\r
569         tst r0,#1<<7\r
570         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
571         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
572 .endm\r
573 ;@---------------------------------------\r
574 \r
575 .macro opCP reg shift\r
576         mov r1,z80a,lsl#4                                               ;@ prepare for check of half carry\r
577         cmp z80a,\reg,lsl#\shift\r
578         mrs z80f,cpsr\r
579         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
580         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
581         cmp r1,\reg,lsl#\shift+4\r
582         orrcc z80f,z80f,#1<<HFlag\r
583 .endm\r
584 \r
585 .macro opCPA\r
586         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
587         fetch 4\r
588 .endm\r
589 \r
590 .macro opCPH reg\r
591         and r0,\reg,#0xFF000000\r
592         opCP r0 0\r
593         fetch 4\r
594 .endm\r
595 \r
596 .macro opCPL reg\r
597         opCP \reg 8\r
598         fetch 4\r
599 .endm\r
600 \r
601 .macro opCPb\r
602         opCP r0 24\r
603 .endm\r
604 ;@---------------------------------------\r
605 \r
606 .macro opDEC8 reg                                                       ;@for A and memory\r
607         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
608         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
609         tst \reg,#0x0f000000\r
610         orreq z80f,z80f,#1<<HFlag\r
611         subs \reg,\reg,#0x01000000\r
612         orrmi z80f,z80f,#1<<SFlag\r
613         orrvs z80f,z80f,#1<<VFlag\r
614         orreq z80f,z80f,#1<<ZFlag\r
615 .endm\r
616 \r
617 .macro opDEC8H reg                                                      ;@for B, D & H\r
618         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
619         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
620         tst \reg,#0x0f000000\r
621         orreq z80f,z80f,#1<<HFlag\r
622         subs \reg,\reg,#0x01000000\r
623         orrmi z80f,z80f,#1<<SFlag\r
624         orrvs z80f,z80f,#1<<VFlag\r
625         tst \reg,#0xff000000                                    ;@Z\r
626         orreq z80f,z80f,#1<<ZFlag\r
627 .endm\r
628 \r
629 .macro opDEC8L reg                                                      ;@for C, E & L\r
630         mov \reg,\reg,ror#24\r
631         opDEC8H \reg\r
632         mov \reg,\reg,ror#8\r
633 .endm\r
634 \r
635 .macro opDEC8b                                                          ;@for memory\r
636         mov r0,r0,lsl#24\r
637         opDEC8 r0\r
638         mov r0,r0,lsr#24\r
639 .endm\r
640 ;@---------------------------------------\r
641 \r
642 .macro opIN\r
643         stmfd sp!,{r3,r12}\r
644         mov lr,pc\r
645         ldr pc,[cpucontext,#z80_in]                             ;@ r0=port - data returned in r0\r
646         ldmfd sp!,{r3,r12}\r
647 .endm\r
648 \r
649 .macro opIN_C\r
650         mov r0,z80bc, lsr #16\r
651         opIN\r
652 .endm\r
653 ;@---------------------------------------\r
654 \r
655 .macro opINC8 reg                                                       ;@for A and memory\r
656         and z80f,z80f,#1<<CFlag                                 ;@save carry, clear n\r
657         adds \reg,\reg,#0x01000000\r
658         orrmi z80f,z80f,#1<<SFlag\r
659         orrvs z80f,z80f,#1<<VFlag\r
660         orrcs z80f,z80f,#1<<ZFlag                               ;@cs when going from 0xFF to 0x00\r
661         tst \reg,#0x0f000000\r
662         orreq z80f,z80f,#1<<HFlag\r
663 .endm\r
664 \r
665 .macro opINC8H reg                                                      ;@for B, D & H\r
666         opINC8 \reg\r
667 .endm\r
668 \r
669 .macro opINC8L reg                                                      ;@for C, E & L\r
670         mov \reg,\reg,ror#24\r
671         opINC8 \reg\r
672         mov \reg,\reg,ror#8\r
673 .endm\r
674 \r
675 .macro opINC8b                                                          ;@for memory\r
676         mov r0,r0,lsl#24\r
677         opINC8 r0\r
678         mov r0,r0,lsr#24\r
679 .endm\r
680 ;@---------------------------------------\r
681 \r
682 .macro opOR reg shift\r
683         orr z80a,z80a,\reg,lsl#\shift\r
684         sub r0,opcodes,#0x100\r
685         ldrb z80f,[r0,z80a, lsr #24]\r
686 .endm\r
687 \r
688 .macro opORA\r
689         sub r0,opcodes,#0x100\r
690         ldrb z80f,[r0,z80a, lsr #24]\r
691         fetch 4\r
692 .endm\r
693 \r
694 .macro opORH reg\r
695         and r0,\reg,#0xFF000000\r
696         opOR r0 0\r
697         fetch 4\r
698 .endm\r
699 \r
700 .macro opORL reg\r
701         opOR \reg 8\r
702         fetch 4\r
703 .endm\r
704 \r
705 .macro opORb\r
706         opOR r0 24\r
707 .endm\r
708 ;@---------------------------------------\r
709 \r
710 .macro opOUT\r
711         stmfd sp!,{r3,r12}\r
712         mov lr,pc\r
713         ldr pc,[cpucontext,#z80_out]                    ;@ r0=port r1=data\r
714         ldmfd sp!,{r3,r12}\r
715 .endm\r
716 \r
717 .macro opOUT_C\r
718         mov r0,z80bc, lsr #16\r
719         opOUT\r
720 .endm\r
721 ;@---------------------------------------\r
722 \r
723 .macro opPOP\r
724 .if FAST_Z80SP\r
725 .if DRZ80_FOR_PICODRIVE\r
726     @ notaz: try to protect against stack overflows, which tend to happen in Picodrive because of poor timing\r
727     ldr r2,[cpucontext,#z80sp_base]\r
728         ldrb r0,[z80sp],#1\r
729     add r2,r2,#0x2000\r
730     cmp z80sp,r2\r
731 @    subge z80sp,z80sp,#0x2000 @ unstable?\r
732         ldrb r1,[z80sp],#1\r
733     cmp z80sp,r2\r
734 @    subge z80sp,z80sp,#0x2000\r
735         orr r0,r0,r1, lsl #8\r
736 .else\r
737         ldrb r0,[z80sp],#1\r
738         ldrb r1,[z80sp],#1\r
739         orr r0,r0,r1, lsl #8\r
740 .endif\r
741 .else\r
742         mov r0,z80sp\r
743         readmem16\r
744         add z80sp,z80sp,#2\r
745 .endif\r
746 .endm\r
747 \r
748 .macro opPOPreg reg\r
749         opPOP\r
750         mov \reg,r0, lsl #16\r
751         fetch 10\r
752 .endm\r
753 ;@---------------------------------------\r
754 \r
755 .macro opPUSHareg reg @ reg > r1\r
756 .if FAST_Z80SP\r
757 .if DRZ80_FOR_PICODRIVE\r
758     @ notaz: try to protect against stack overflows, which tend to happen in Picodrive because of poor timing\r
759     ldr r0,[cpucontext,#z80sp_base]\r
760     cmp z80sp,r0\r
761     addle z80sp,z80sp,#0x2000\r
762     mov r1,\reg, lsr #8\r
763         strb r1,[z80sp,#-1]!\r
764     cmp z80sp,r0\r
765     addle z80sp,z80sp,#0x2000\r
766         strb \reg,[z80sp,#-1]!\r
767 .else\r
768         mov r1,\reg, lsr #8\r
769         strb r1,[z80sp,#-1]!\r
770         strb \reg,[z80sp,#-1]!\r
771 .endif\r
772 .else\r
773     mov r0,\reg\r
774         sub z80sp,z80sp,#2\r
775         mov r1,z80sp\r
776         writemem16\r
777 .endif\r
778 .endm\r
779 \r
780 .macro opPUSHreg reg\r
781 .if FAST_Z80SP\r
782 .if DRZ80_FOR_PICODRIVE\r
783     ldr r0,[cpucontext,#z80sp_base]\r
784     cmp z80sp,r0\r
785     addle z80sp,z80sp,#0x2000\r
786     mov r1,\reg, lsr #24\r
787         strb r1,[z80sp,#-1]!\r
788     cmp z80sp,r0\r
789     addle z80sp,z80sp,#0x2000\r
790         mov r1,\reg, lsr #16\r
791         strb r1,[z80sp,#-1]!\r
792 .else\r
793     mov r1,\reg, lsr #24\r
794         strb r1,[z80sp,#-1]!\r
795         mov r1,\reg, lsr #16\r
796         strb r1,[z80sp,#-1]!\r
797 .endif\r
798 .else\r
799         mov r0,\reg,lsr #16\r
800         sub z80sp,z80sp,#2\r
801         mov r1,z80sp\r
802         writemem16\r
803 .endif\r
804 .endm\r
805 ;@---------------------------------------\r
806 \r
807 .macro opRESmemHL bit\r
808         mov r0,z80hl, lsr #16\r
809 .if DRZ80_XMAP\r
810         bl z80_xmap_read8\r
811         bic r0,r0,#1<<\bit\r
812         mov r1,z80hl, lsr #16\r
813         bl z80_xmap_write8\r
814 .else\r
815         stmfd sp!,{r3,r12}\r
816         mov lr,pc\r
817         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
818         bic r0,r0,#1<<\bit\r
819         mov r1,z80hl, lsr #16\r
820         mov lr,pc\r
821         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
822         ldmfd sp!,{r3,r12}\r
823 .endif\r
824     fetch 15\r
825 .endm\r
826 ;@---------------------------------------\r
827 \r
828 .macro opRESmem bit\r
829 .if DRZ80_XMAP\r
830         stmfd sp!,{r0}                                                  ;@ save addr as well\r
831         bl z80_xmap_read8\r
832         bic r0,r0,#1<<\bit\r
833         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
834         bl z80_xmap_write8\r
835 .else\r
836         stmfd sp!,{r3,r12}\r
837         stmfd sp!,{r0}                                                  ;@ save addr as well\r
838         mov lr,pc\r
839         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
840         bic r0,r0,#1<<\bit\r
841         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
842         mov lr,pc\r
843         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
844         ldmfd sp!,{r3,r12}\r
845 .endif\r
846         fetch 23\r
847 .endm\r
848 ;@---------------------------------------\r
849 \r
850 .macro opRL reg1 reg2 shift\r
851         movs \reg1,\reg2,lsl \shift\r
852         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
853         orrne \reg1,\reg1,#0x01000000\r
854 ;@      and r2,z80f,#1<<CFlag\r
855 ;@      orr $x,$x,r2,lsl#23\r
856         sub r1,opcodes,#0x100\r
857         ldrb z80f,[r1,\reg1,lsr#24]                             ;@get PZS\r
858         orrcs z80f,z80f,#1<<CFlag\r
859 .endm\r
860 \r
861 .macro opRLA\r
862         opRL z80a, z80a, #1\r
863         fetch 8\r
864 .endm\r
865 \r
866 .macro opRLH reg\r
867         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
868         adds \reg,\reg,r0\r
869         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
870         orrne \reg,\reg,#0x01000000\r
871         sub r1,opcodes,#0x100\r
872         ldrb z80f,[r1,\reg,lsr#24]                              ;@get PZS\r
873         orrcs z80f,z80f,#1<<CFlag\r
874         fetch 8\r
875 .endm\r
876 \r
877 .macro opRLL reg\r
878         opRL r0, \reg, #9\r
879         and \reg,\reg,#0xFF000000                               ;@mask out high\r
880         orr \reg,\reg,r0,lsr#8\r
881         fetch 8\r
882 .endm\r
883 \r
884 .macro opRLb\r
885         opRL r0, r0, #25\r
886         mov r0,r0,lsr#24\r
887 .endm\r
888 ;@---------------------------------------\r
889 \r
890 .macro opRLC reg1 reg2 shift\r
891         movs \reg1,\reg2,lsl#\shift\r
892         orrcs \reg1,\reg1,#0x01000000\r
893         sub r1,opcodes,#0x100\r
894         ldrb z80f,[r1,\reg1,lsr#24]\r
895         orrcs z80f,z80f,#1<<CFlag\r
896 .endm\r
897 \r
898 .macro opRLCA\r
899         opRLC z80a, z80a, 1\r
900         fetch 8\r
901 .endm\r
902 \r
903 .macro opRLCH reg\r
904         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
905         adds \reg,\reg,r0\r
906         orrcs \reg,\reg,#0x01000000\r
907         sub r1,opcodes,#0x100\r
908         ldrb z80f,[r1,\reg,lsr#24]\r
909         orrcs z80f,z80f,#1<<CFlag\r
910         fetch 8\r
911 .endm\r
912 \r
913 .macro opRLCL reg\r
914         opRLC r0, \reg, 9\r
915         and \reg,\reg,#0xFF000000                               ;@mask out high\r
916         orr \reg,\reg,r0,lsr#8\r
917         fetch 8\r
918 .endm\r
919 \r
920 .macro opRLCb\r
921         opRLC r0, r0, 25\r
922         mov r0,r0,lsr#24\r
923 .endm\r
924 ;@---------------------------------------\r
925 \r
926 .macro opRR reg1 reg2 shift\r
927         movs \reg1,\reg2,lsr#\shift\r
928         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
929         orrne \reg1,\reg1,#0x00000080\r
930 ;@      and r2,z80_f,#PSR_C\r
931 ;@      orr \reg1,\reg1,r2,lsl#6\r
932         sub r1,opcodes,#0x100\r
933         ldrb z80f,[r1,\reg1]\r
934         orrcs z80f,z80f,#1<<CFlag\r
935 .endm\r
936 \r
937 .macro opRRA\r
938         orr z80a,z80a,z80f,lsr#1                                ;@get C\r
939         movs z80a,z80a,ror#25\r
940         mov z80a,z80a,lsl#24\r
941         sub r1,opcodes,#0x100\r
942         ldrb z80f,[r1,z80a,lsr#24]\r
943         orrcs z80f,z80f,#1<<CFlag\r
944         fetch 8\r
945 .endm\r
946 \r
947 .macro opRRH reg\r
948         orr r0,\reg,z80f,lsr#1                                  ;@get C\r
949         movs r0,r0,ror#25\r
950         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
951         orr \reg,\reg,r0,lsl#24\r
952         sub r1,opcodes,#0x100\r
953         ldrb z80f,[r1,\reg,lsr#24]\r
954         orrcs z80f,z80f,#1<<CFlag\r
955         fetch 8\r
956 .endm\r
957 \r
958 .macro opRRL reg\r
959         and r0,\reg,#0x00FF0000                                 ;@mask out low to r0\r
960         opRR r0 r0 17\r
961         and \reg,\reg,#0xFF000000                               ;@mask out high\r
962         orr \reg,\reg,r0,lsl#16\r
963         fetch 8\r
964 .endm\r
965 \r
966 .macro opRRb\r
967         opRR r0 r0 1\r
968 .endm\r
969 ;@---------------------------------------\r
970 \r
971 .macro opRRC reg1 reg2 shift\r
972         movs \reg1,\reg2,lsr#\shift\r
973         orrcs \reg1,\reg1,#0x00000080\r
974         sub r1,opcodes,#0x100\r
975         ldrb z80f,[r1,\reg1]\r
976         orrcs z80f,z80f,#1<<CFlag\r
977 .endm\r
978 \r
979 .macro opRRCA\r
980         opRRC z80a, z80a, 25\r
981         mov z80a,z80a,lsl#24\r
982         fetch 8\r
983 .endm\r
984 \r
985 .macro opRRCH reg\r
986         opRRC r0, \reg, 25\r
987         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
988         orr \reg,\reg,r0,lsl#24\r
989         fetch 8\r
990 .endm\r
991 \r
992 .macro opRRCL reg\r
993         and r0,\reg,#0x00FF0000                                 ;@mask low to r0\r
994         opRRC r0, r0, 17\r
995         and \reg,\reg,#0xFF000000                               ;@mask out high\r
996         orr \reg,\reg,r0,lsl#16\r
997         fetch 8\r
998 .endm\r
999 \r
1000 .macro opRRCb\r
1001         opRRC r0, r0, 1\r
1002 .endm\r
1003 ;@---------------------------------------\r
1004 \r
1005 .macro opRST addr\r
1006         ldr r0,[cpucontext,#z80pc_base]\r
1007         sub r2,z80pc,r0\r
1008     opPUSHareg r2\r
1009         mov r0,#\addr\r
1010         rebasepc\r
1011         fetch 11\r
1012 .endm\r
1013 ;@---------------------------------------\r
1014 \r
1015 .macro opSBC\r
1016         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1017         movs z80f,z80f,lsr#2                                    ;@ get C\r
1018         subcc r0,r0,#0x100\r
1019         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of H\r
1020         sbcs z80a,z80a,r0,ror#8\r
1021         mrs r0,cpsr\r
1022         eor z80f,z80f,z80a,lsr#24\r
1023         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
1024         orr z80f,z80f,r0,lsr#28                                 ;@ S,Z,V&C\r
1025         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1026 .endm\r
1027 \r
1028 .macro opSBCA\r
1029         movs z80f,z80f,lsr#2                                    ;@ get C\r
1030         movcc z80a,#0x00000000\r
1031         movcs z80a,#0xFF000000\r
1032         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1033         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1034         fetch 4\r
1035 .endm\r
1036 \r
1037 .macro opSBCH reg\r
1038         mov r0,\reg,lsr#24\r
1039         opSBC\r
1040         fetch 4\r
1041 .endm\r
1042 \r
1043 .macro opSBCL reg\r
1044         mov r0,\reg,lsl#8\r
1045         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1046         movs z80f,z80f,lsr#2                                    ;@ get C\r
1047         sbccc r0,r0,#0xFF000000\r
1048         mov r1,z80a,lsl#4                                               ;@ prepare for check of H\r
1049         sbcs z80a,z80a,r0\r
1050         mrs z80f,cpsr\r
1051         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1052         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1053         cmp r1,r0,lsl#4\r
1054         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1055         fetch 4\r
1056 .endm\r
1057 \r
1058 .macro opSBCb\r
1059         opSBC\r
1060 .endm\r
1061 ;@---------------------------------------\r
1062 \r
1063 .macro opSBC16 reg\r
1064         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1065         movs z80f,z80f,lsr#2                                    ;@ get C\r
1066         sbc r1,r1,r1                                                    ;@ set r1 to -1 or 0.\r
1067         orr r0,\reg,r1,lsr#16\r
1068         mov r1,z80hl,lsl#4                                              ;@ prepare for check of H\r
1069         sbcs z80hl,z80hl,r0\r
1070         mrs z80f,cpsr\r
1071         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1072         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1073         cmp r1,r0,lsl#4\r
1074         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1075         fetch 15\r
1076 .endm\r
1077 \r
1078 .macro opSBC16HL\r
1079         movs z80f,z80f,lsr#2                                    ;@ get C\r
1080         mov z80hl,#0x00000000\r
1081         subcs z80hl,z80hl,#0x00010000\r
1082         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1083         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1084         fetch 15\r
1085 .endm\r
1086 ;@---------------------------------------\r
1087 \r
1088 .macro opSETmemHL bit\r
1089         mov r0,z80hl, lsr #16\r
1090 .if DRZ80_XMAP\r
1091         bl z80_xmap_read8\r
1092         orr r0,r0,#1<<\bit\r
1093         mov r1,z80hl, lsr #16\r
1094         bl z80_xmap_write8\r
1095 .else\r
1096         stmfd sp!,{r3,r12}\r
1097         mov lr,pc\r
1098         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
1099         orr r0,r0,#1<<\bit\r
1100         mov r1,z80hl, lsr #16\r
1101         mov lr,pc\r
1102         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1103         ldmfd sp!,{r3,r12}\r
1104 .endif\r
1105     fetch 15\r
1106 .endm\r
1107 ;@---------------------------------------\r
1108 \r
1109 .macro opSETmem bit\r
1110 .if DRZ80_XMAP\r
1111         stmfd sp!,{r0}  ;@ save addr as well\r
1112         bl z80_xmap_read8\r
1113         orr r0,r0,#1<<\bit\r
1114         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1115         bl z80_xmap_write8\r
1116 .else\r
1117         stmfd sp!,{r3,r12}\r
1118         stmfd sp!,{r0}  ;@ save addr as well\r
1119         mov lr,pc\r
1120         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
1121         orr r0,r0,#1<<\bit\r
1122         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1123         mov lr,pc\r
1124         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1125         ldmfd sp!,{r3,r12}\r
1126 .endif\r
1127         fetch 23\r
1128 .endm\r
1129 ;@---------------------------------------\r
1130 \r
1131 .macro opSLA reg1 reg2 shift\r
1132         movs \reg1,\reg2,lsl#\shift\r
1133         sub r1,opcodes,#0x100\r
1134         ldrb z80f,[r1,\reg1,lsr#24]\r
1135         orrcs z80f,z80f,#1<<CFlag\r
1136 .endm\r
1137 \r
1138 .macro opSLAA\r
1139         opSLA z80a, z80a, 1\r
1140         fetch 8\r
1141 .endm\r
1142 \r
1143 .macro opSLAH reg\r
1144         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1145         adds \reg,\reg,r0\r
1146         sub r1,opcodes,#0x100\r
1147         ldrb z80f,[r1,\reg,lsr#24]\r
1148         orrcs z80f,z80f,#1<<CFlag\r
1149         fetch 8\r
1150 .endm\r
1151 \r
1152 .macro opSLAL reg\r
1153         opSLA r0, \reg, 9\r
1154         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1155         orr \reg,\reg,r0,lsr#8\r
1156         fetch 8\r
1157 .endm\r
1158 \r
1159 .macro opSLAb\r
1160         opSLA r0, r0, 25\r
1161         mov r0,r0,lsr#24\r
1162 .endm\r
1163 ;@---------------------------------------\r
1164 \r
1165 .macro opSLL reg1 reg2 shift\r
1166         movs \reg1,\reg2,lsl#\shift\r
1167         orr \reg1,\reg1,#0x01000000\r
1168         sub r1,opcodes,#0x100\r
1169         ldrb z80f,[r1,\reg1,lsr#24]\r
1170         orrcs z80f,z80f,#1<<CFlag\r
1171 .endm\r
1172 \r
1173 .macro opSLLA\r
1174         opSLL z80a, z80a, 1\r
1175         fetch 8\r
1176 .endm\r
1177 \r
1178 .macro opSLLH reg\r
1179         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1180         adds \reg,\reg,r0\r
1181         orr \reg,\reg,#0x01000000\r
1182         sub r1,opcodes,#0x100\r
1183         ldrb z80f,[r1,\reg,lsr#24]\r
1184         orrcs z80f,z80f,#1<<CFlag\r
1185         fetch 8\r
1186 .endm\r
1187 \r
1188 .macro opSLLL reg\r
1189         opSLL r0, \reg, 9\r
1190         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1191         orr \reg,\reg,r0,lsr#8\r
1192         fetch 8\r
1193 .endm\r
1194 \r
1195 .macro opSLLb\r
1196         opSLL r0, r0, 25\r
1197         mov r0,r0,lsr#24\r
1198 .endm\r
1199 ;@---------------------------------------\r
1200 \r
1201 .macro opSRA reg1 reg2\r
1202         movs \reg1,\reg2,asr#25\r
1203         and \reg1,\reg1,#0xFF\r
1204         sub r1,opcodes,#0x100\r
1205         ldrb z80f,[r1,\reg1]\r
1206         orrcs z80f,z80f,#1<<CFlag\r
1207 .endm\r
1208 \r
1209 .macro opSRAA\r
1210         movs r0,z80a,asr#25\r
1211         mov z80a,r0,lsl#24\r
1212         sub r1,opcodes,#0x100\r
1213         ldrb z80f,[r1,z80a,lsr#24]\r
1214         orrcs z80f,z80f,#1<<CFlag\r
1215         fetch 8\r
1216 .endm\r
1217 \r
1218 .macro opSRAH reg\r
1219         movs r0,\reg,asr#25\r
1220         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1221         orr \reg,\reg,r0,lsl#24\r
1222         sub r1,opcodes,#0x100\r
1223         ldrb z80f,[r1,\reg,lsr#24]\r
1224         orrcs z80f,z80f,#1<<CFlag\r
1225         fetch 8\r
1226 .endm\r
1227 \r
1228 .macro opSRAL reg\r
1229         mov r0,\reg,lsl#8\r
1230         opSRA r0, r0\r
1231         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1232         orr \reg,\reg,r0,lsl#16\r
1233         fetch 8\r
1234 .endm\r
1235 \r
1236 .macro opSRAb\r
1237         mov r0,r0,lsl#24\r
1238         opSRA r0, r0\r
1239 .endm\r
1240 ;@---------------------------------------\r
1241 \r
1242 .macro opSRL reg1 reg2 shift\r
1243         movs \reg1,\reg2,lsr#\shift\r
1244         sub r1,opcodes,#0x100\r
1245         ldrb z80f,[r1,\reg1]\r
1246         orrcs z80f,z80f,#1<<CFlag\r
1247 .endm\r
1248 \r
1249 .macro opSRLA\r
1250         opSRL z80a, z80a, 25\r
1251         mov z80a,z80a,lsl#24\r
1252         fetch 8\r
1253 .endm\r
1254 \r
1255 .macro opSRLH reg\r
1256         opSRL r0, \reg, 25\r
1257         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1258         orr \reg,\reg,r0,lsl#24\r
1259         fetch 8\r
1260 .endm\r
1261 \r
1262 .macro opSRLL reg\r
1263         mov r0,\reg,lsl#8\r
1264         opSRL r0, r0, 25\r
1265         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1266         orr \reg,\reg,r0,lsl#16\r
1267         fetch 8\r
1268 .endm\r
1269 \r
1270 .macro opSRLb\r
1271         opSRL r0, r0, 1\r
1272 .endm\r
1273 ;@---------------------------------------\r
1274 \r
1275 .macro opSUB reg shift\r
1276         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
1277         subs z80a,z80a,\reg,lsl#\shift\r
1278         mrs z80f,cpsr\r
1279         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1280         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
1281         cmp r1,\reg,lsl#\shift+4\r
1282         orrcc z80f,z80f,#1<<HFlag\r
1283 .endm\r
1284 \r
1285 .macro opSUBA\r
1286         mov z80a,#0\r
1287         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
1288         fetch 4\r
1289 .endm\r
1290 \r
1291 .macro opSUBH reg\r
1292         and r0,\reg,#0xFF000000\r
1293         opSUB r0, 0\r
1294         fetch 4\r
1295 .endm\r
1296 \r
1297 .macro opSUBL reg\r
1298         opSUB \reg, 8\r
1299         fetch 4\r
1300 .endm\r
1301 \r
1302 .macro opSUBb\r
1303         opSUB r0, 24\r
1304 .endm\r
1305 ;@---------------------------------------\r
1306 \r
1307 .macro opXOR reg shift\r
1308         eor z80a,z80a,\reg,lsl#\shift\r
1309         sub r0,opcodes,#0x100\r
1310         ldrb z80f,[r0,z80a, lsr #24]\r
1311 .endm\r
1312 \r
1313 .macro opXORA\r
1314         mov z80a,#0\r
1315         mov z80f,#(1<<ZFlag)|(1<<VFlag)\r
1316         fetch 4\r
1317 .endm\r
1318 \r
1319 .macro opXORH reg\r
1320         and r0,\reg,#0xFF000000\r
1321         opXOR r0, 0\r
1322         fetch 4\r
1323 .endm\r
1324 \r
1325 .macro opXORL reg\r
1326         opXOR \reg, 8\r
1327         fetch 4\r
1328 .endm\r
1329 \r
1330 .macro opXORb\r
1331         opXOR r0, 24\r
1332 .endm\r
1333 ;@---------------------------------------\r
1334 \r
1335 \r
1336 ;@ --------------------------- Framework --------------------------\r
1337     \r
1338 .text\r
1339 \r
1340 DrZ80Run:\r
1341         ;@ r0 = pointer to cpu context\r
1342         ;@ r1 = ISTATES to execute  \r
1343         ;@#########################################   \r
1344         stmdb sp!,{r4-r12,lr}                                   ;@ save registers on stack\r
1345         mov cpucontext,r0                                               ;@ setup main memory pointer\r
1346         mov z80_icount,r1                                               ;@ setup number of Tstates to execute\r
1347 \r
1348 .if INTERRUPT_MODE == 0\r
1349         ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
1350 .endif\r
1351         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1352 \r
1353 .if INTERRUPT_MODE == 0\r
1354         ;@ check ints\r
1355         tst r0,#0xff\r
1356         movne r0,r0,lsr #8\r
1357         tstne r0,#1\r
1358         blne DoInterrupt\r
1359 .endif\r
1360 \r
1361         ldr opcodes,MAIN_opcodes_POINTER2\r
1362 \r
1363         cmp z80_icount,#0     ;@ irq might have used all cycles\r
1364         ldrplb r0,[z80pc],#1\r
1365         ldrpl pc,[opcodes,r0, lsl #2]\r
1366 \r
1367 \r
1368 z80_execute_end:\r
1369         ;@ save registers in CPU context\r
1370         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1371         mov r0,z80_icount\r
1372         ldmia sp!,{r4-r12,pc}                                   ;@ restore registers from stack and return to C code\r
1373 \r
1374 MAIN_opcodes_POINTER2: .word MAIN_opcodes\r
1375 .if INTERRUPT_MODE\r
1376 Interrupt_local: .word Interrupt\r
1377 .endif\r
1378 \r
1379 DoInterrupt:\r
1380 .if INTERRUPT_MODE\r
1381         ;@ Don't do own int handler, call mames instead\r
1382 \r
1383         ;@ save everything back into DrZ80 context\r
1384         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1385         stmfd sp!,{r3,r4,r5,lr}                                 ;@ save rest of regs on stack\r
1386         mov lr,pc\r
1387         ldr pc,Interrupt_local\r
1388         ldmfd sp!,{r3,r4,r5,lr}                                 ;@ load regs from stack\r
1389         ;@ reload regs from DrZ80 context\r
1390         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1391         mov pc,lr ;@ return\r
1392 .else\r
1393 \r
1394         ;@ r0 == z80if\r
1395         stmfd sp!,{lr}\r
1396 \r
1397         tst r0,#4 ;@ check halt\r
1398         addne z80pc,z80pc,#1\r
1399 \r
1400         ldrb r1,[cpucontext,#z80im]\r
1401 \r
1402     ;@ clear halt and int flags\r
1403         eor r0,r0,r0\r
1404         strb r0,[cpucontext,#z80if]\r
1405 \r
1406         ;@ now check int mode\r
1407         cmp r1,#1\r
1408         beq DoInterrupt_mode1\r
1409         bgt DoInterrupt_mode2\r
1410 \r
1411 DoInterrupt_mode0:\r
1412         ;@ get 3 byte vector\r
1413         ldr r2,[cpucontext, #z80irqvector]\r
1414         and r1,r2,#0xFF0000\r
1415         cmp r1,#0xCD0000  ;@ call\r
1416         bne 1f\r
1417         ;@ ########\r
1418         ;@ # call\r
1419         ;@ ########\r
1420         ;@ save current pc on stack\r
1421         ldr r0,[cpucontext,#z80pc_base]\r
1422         sub r0,z80pc,r0\r
1423 .if FAST_Z80SP\r
1424         mov r1,r0, lsr #8\r
1425         strb r1,[z80sp,#-1]!\r
1426         strb r0,[z80sp,#-1]!\r
1427 .else\r
1428         sub z80sp,z80sp,#2\r
1429         mov r1,z80sp\r
1430         writemem16\r
1431         ldr r2,[cpucontext, #z80irqvector]\r
1432 .endif\r
1433         ;@ jump to vector\r
1434         mov r2,r2,lsl#16\r
1435         mov r0,r2,lsr#16\r
1436         ;@ rebase new pc\r
1437         rebasepc\r
1438 \r
1439         eatcycles 13\r
1440         b DoInterrupt_end\r
1441 \r
1442 1:\r
1443         cmp r1,#0xC30000  ;@ jump\r
1444         bne DoInterrupt_mode1    ;@ rst\r
1445         ;@ #######\r
1446         ;@ # jump\r
1447         ;@ #######\r
1448         ;@ jump to vector\r
1449         mov r2,r2,lsl#16\r
1450         mov r0,r2,lsr#16\r
1451         ;@ rebase new pc\r
1452         rebasepc\r
1453 \r
1454         eatcycles 13\r
1455         b DoInterrupt_end\r
1456 \r
1457 DoInterrupt_mode1:\r
1458         ldr r0,[cpucontext,#z80pc_base]\r
1459         sub r2,z80pc,r0\r
1460     opPUSHareg r2\r
1461         mov r0,#0x38\r
1462         rebasepc\r
1463 \r
1464         eatcycles 13\r
1465         b DoInterrupt_end\r
1466 \r
1467 DoInterrupt_mode2:\r
1468         ;@ push pc on stack\r
1469         ldr r0,[cpucontext,#z80pc_base]\r
1470         sub r2,z80pc,r0\r
1471     opPUSHareg r2\r
1472 \r
1473         ;@ get 1 byte vector address\r
1474         ldrb r0,[cpucontext, #z80irqvector]\r
1475         ldr r1,[cpucontext, #z80i]\r
1476         orr r0,r0,r1,lsr#16\r
1477 \r
1478         ;@ read new pc from vector address\r
1479 .if UPDATE_CONTEXT\r
1480      str z80pc,[cpucontext,#z80pc_pointer]\r
1481 .endif\r
1482 .if DRZ80_XMAP\r
1483     bl z80_xmap_read16\r
1484     rebasepc\r
1485 .else\r
1486         stmfd sp!,{r3,r12}\r
1487         mov lr,pc\r
1488         ldr pc,[cpucontext,#z80_read16]\r
1489 \r
1490         ;@ rebase new pc\r
1491         mov lr,pc\r
1492         ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
1493         ldmfd sp!,{r3,r12}\r
1494         mov z80pc,r0    \r
1495 .endif\r
1496         eatcycles 17\r
1497 \r
1498 DoInterrupt_end:\r
1499         ;@ interupt accepted so callback irq interface\r
1500         ldr r0,[cpucontext, #z80irqcallback]\r
1501         tst r0,r0\r
1502         streqb r0,[cpucontext,#z80irq]       ;@ default handling\r
1503         ldmeqfd sp!,{pc}\r
1504         stmfd sp!,{r3,r12}\r
1505         mov lr,pc\r
1506         mov pc,r0    ;@ call callback function\r
1507         ldmfd sp!,{r3,r12}\r
1508         ldmfd sp!,{pc} ;@ return\r
1509 .endif\r
1510 \r
1511 .data\r
1512 .align 4\r
1513 \r
1514 DAATable: .hword  (0x00<<8)|(1<<ZFlag)|(1<<VFlag)\r
1515          .hword  (0x01<<8)                  \r
1516          .hword  (0x02<<8)                  \r
1517          .hword  (0x03<<8)               |(1<<VFlag)\r
1518          .hword  (0x04<<8)                  \r
1519          .hword  (0x05<<8)               |(1<<VFlag)\r
1520          .hword  (0x06<<8)               |(1<<VFlag)\r
1521          .hword  (0x07<<8)                  \r
1522          .hword  (0x08<<8)               \r
1523          .hword  (0x09<<8)            |(1<<VFlag)\r
1524          .hword  (0x10<<8)         |(1<<HFlag)      \r
1525          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1526          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1527          .hword  (0x13<<8)         |(1<<HFlag)      \r
1528          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1529          .hword  (0x15<<8)         |(1<<HFlag)      \r
1530          .hword  (0x10<<8)                  \r
1531          .hword  (0x11<<8)               |(1<<VFlag)\r
1532          .hword  (0x12<<8)               |(1<<VFlag)\r
1533          .hword  (0x13<<8)                  \r
1534          .hword  (0x14<<8)               |(1<<VFlag)\r
1535          .hword  (0x15<<8)                  \r
1536          .hword  (0x16<<8)                  \r
1537          .hword  (0x17<<8)               |(1<<VFlag)\r
1538          .hword  (0x18<<8)            |(1<<VFlag)\r
1539          .hword  (0x19<<8)               \r
1540          .hword  (0x20<<8)      |(1<<HFlag)      \r
1541          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1542          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1543          .hword  (0x23<<8)      |(1<<HFlag)      \r
1544          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1545          .hword  (0x25<<8)      |(1<<HFlag)      \r
1546          .hword  (0x20<<8)               \r
1547          .hword  (0x21<<8)            |(1<<VFlag)\r
1548          .hword  (0x22<<8)            |(1<<VFlag)\r
1549          .hword  (0x23<<8)               \r
1550          .hword  (0x24<<8)            |(1<<VFlag)\r
1551          .hword  (0x25<<8)               \r
1552          .hword  (0x26<<8)               \r
1553          .hword  (0x27<<8)            |(1<<VFlag)\r
1554          .hword  (0x28<<8)         |(1<<VFlag)\r
1555          .hword  (0x29<<8)            \r
1556          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1557          .hword  (0x31<<8)      |(1<<HFlag)      \r
1558          .hword  (0x32<<8)      |(1<<HFlag)      \r
1559          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1560          .hword  (0x34<<8)      |(1<<HFlag)      \r
1561          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1562          .hword  (0x30<<8)            |(1<<VFlag)\r
1563          .hword  (0x31<<8)               \r
1564          .hword  (0x32<<8)               \r
1565          .hword  (0x33<<8)            |(1<<VFlag)\r
1566          .hword  (0x34<<8)               \r
1567          .hword  (0x35<<8)            |(1<<VFlag)\r
1568          .hword  (0x36<<8)            |(1<<VFlag)\r
1569          .hword  (0x37<<8)               \r
1570          .hword  (0x38<<8)            \r
1571          .hword  (0x39<<8)         |(1<<VFlag)\r
1572          .hword  (0x40<<8)         |(1<<HFlag)      \r
1573          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1574          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1575          .hword  (0x43<<8)         |(1<<HFlag)      \r
1576          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1577          .hword  (0x45<<8)         |(1<<HFlag)      \r
1578          .hword  (0x40<<8)                  \r
1579          .hword  (0x41<<8)               |(1<<VFlag)\r
1580          .hword  (0x42<<8)               |(1<<VFlag)\r
1581          .hword  (0x43<<8)                  \r
1582          .hword  (0x44<<8)               |(1<<VFlag)\r
1583          .hword  (0x45<<8)                  \r
1584          .hword  (0x46<<8)                  \r
1585          .hword  (0x47<<8)               |(1<<VFlag)\r
1586          .hword  (0x48<<8)            |(1<<VFlag)\r
1587          .hword  (0x49<<8)               \r
1588          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1589          .hword  (0x51<<8)         |(1<<HFlag)      \r
1590          .hword  (0x52<<8)         |(1<<HFlag)      \r
1591          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1592          .hword  (0x54<<8)         |(1<<HFlag)      \r
1593          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1594          .hword  (0x50<<8)               |(1<<VFlag)\r
1595          .hword  (0x51<<8)                  \r
1596          .hword  (0x52<<8)                  \r
1597          .hword  (0x53<<8)               |(1<<VFlag)\r
1598          .hword  (0x54<<8)                  \r
1599          .hword  (0x55<<8)               |(1<<VFlag)\r
1600          .hword  (0x56<<8)               |(1<<VFlag)\r
1601          .hword  (0x57<<8)                  \r
1602          .hword  (0x58<<8)               \r
1603          .hword  (0x59<<8)            |(1<<VFlag)\r
1604          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1605          .hword  (0x61<<8)      |(1<<HFlag)      \r
1606          .hword  (0x62<<8)      |(1<<HFlag)      \r
1607          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1608          .hword  (0x64<<8)      |(1<<HFlag)      \r
1609          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1610          .hword  (0x60<<8)            |(1<<VFlag)\r
1611          .hword  (0x61<<8)               \r
1612          .hword  (0x62<<8)               \r
1613          .hword  (0x63<<8)            |(1<<VFlag)\r
1614          .hword  (0x64<<8)               \r
1615          .hword  (0x65<<8)            |(1<<VFlag)\r
1616          .hword  (0x66<<8)            |(1<<VFlag)\r
1617          .hword  (0x67<<8)               \r
1618          .hword  (0x68<<8)            \r
1619          .hword  (0x69<<8)         |(1<<VFlag)\r
1620          .hword  (0x70<<8)      |(1<<HFlag)      \r
1621          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1622          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1623          .hword  (0x73<<8)      |(1<<HFlag)      \r
1624          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1625          .hword  (0x75<<8)      |(1<<HFlag)      \r
1626          .hword  (0x70<<8)               \r
1627          .hword  (0x71<<8)            |(1<<VFlag)\r
1628          .hword  (0x72<<8)            |(1<<VFlag)\r
1629          .hword  (0x73<<8)               \r
1630          .hword  (0x74<<8)            |(1<<VFlag)\r
1631          .hword  (0x75<<8)               \r
1632          .hword  (0x76<<8)               \r
1633          .hword  (0x77<<8)            |(1<<VFlag)\r
1634          .hword  (0x78<<8)         |(1<<VFlag)\r
1635          .hword  (0x79<<8)            \r
1636          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1637          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1638          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1639          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1640          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1641          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1642          .hword  (0x80<<8)|(1<<SFlag)               \r
1643          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)\r
1644          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)\r
1645          .hword  (0x83<<8)|(1<<SFlag)               \r
1646          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)\r
1647          .hword  (0x85<<8)|(1<<SFlag)               \r
1648          .hword  (0x86<<8)|(1<<SFlag)               \r
1649          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
1650          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
1651          .hword  (0x89<<8)|(1<<SFlag)            \r
1652          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1653          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1654          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1655          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1656          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1657          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1658          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)\r
1659          .hword  (0x91<<8)|(1<<SFlag)               \r
1660          .hword  (0x92<<8)|(1<<SFlag)               \r
1661          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)\r
1662          .hword  (0x94<<8)|(1<<SFlag)               \r
1663          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)\r
1664          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
1665          .hword  (0x97<<8)|(1<<SFlag)               \r
1666          .hword  (0x98<<8)|(1<<SFlag)            \r
1667          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
1668          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1669          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1670          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1671          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1672          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1673          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1674          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1675          .hword  (0x01<<8)                     |(1<<CFlag)\r
1676          .hword  (0x02<<8)                     |(1<<CFlag)\r
1677          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1678          .hword  (0x04<<8)                     |(1<<CFlag)\r
1679          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1680          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1681          .hword  (0x07<<8)                     |(1<<CFlag)\r
1682          .hword  (0x08<<8)                  |(1<<CFlag)\r
1683          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1684          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1685          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1686          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1687          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1688          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1689          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1690          .hword  (0x10<<8)                     |(1<<CFlag)\r
1691          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1692          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1693          .hword  (0x13<<8)                     |(1<<CFlag)\r
1694          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1695          .hword  (0x15<<8)                     |(1<<CFlag)\r
1696          .hword  (0x16<<8)                     |(1<<CFlag)\r
1697          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1698          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1699          .hword  (0x19<<8)                  |(1<<CFlag)\r
1700          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1701          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1702          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1703          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1704          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1705          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1706          .hword  (0x20<<8)                  |(1<<CFlag)\r
1707          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1708          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1709          .hword  (0x23<<8)                  |(1<<CFlag)\r
1710          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1711          .hword  (0x25<<8)                  |(1<<CFlag)\r
1712          .hword  (0x26<<8)                  |(1<<CFlag)\r
1713          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1714          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1715          .hword  (0x29<<8)               |(1<<CFlag)\r
1716          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1717          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1718          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1719          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1720          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1721          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1722          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1723          .hword  (0x31<<8)                  |(1<<CFlag)\r
1724          .hword  (0x32<<8)                  |(1<<CFlag)\r
1725          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1726          .hword  (0x34<<8)                  |(1<<CFlag)\r
1727          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1728          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1729          .hword  (0x37<<8)                  |(1<<CFlag)\r
1730          .hword  (0x38<<8)               |(1<<CFlag)\r
1731          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1732          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1733          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1734          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1735          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1736          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1737          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1738          .hword  (0x40<<8)                     |(1<<CFlag)\r
1739          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1740          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1741          .hword  (0x43<<8)                     |(1<<CFlag)\r
1742          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1743          .hword  (0x45<<8)                     |(1<<CFlag)\r
1744          .hword  (0x46<<8)                     |(1<<CFlag)\r
1745          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1746          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1747          .hword  (0x49<<8)                  |(1<<CFlag)\r
1748          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1749          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1750          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1751          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1752          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1753          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1754          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1755          .hword  (0x51<<8)                     |(1<<CFlag)\r
1756          .hword  (0x52<<8)                     |(1<<CFlag)\r
1757          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1758          .hword  (0x54<<8)                     |(1<<CFlag)\r
1759          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1760          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1761          .hword  (0x57<<8)                     |(1<<CFlag)\r
1762          .hword  (0x58<<8)                  |(1<<CFlag)\r
1763          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1764          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1765          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1766          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1767          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1768          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1769          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1770          .hword  (0x60<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1771          .hword  (0x61<<8)                  |(1<<CFlag)\r
1772          .hword  (0x62<<8)                  |(1<<CFlag)\r
1773          .hword  (0x63<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1774          .hword  (0x64<<8)                  |(1<<CFlag)\r
1775          .hword  (0x65<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1776          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1777          .hword  (0x67<<8)                  |(1<<CFlag)\r
1778          .hword  (0x68<<8)               |(1<<CFlag)\r
1779          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1780          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1781          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1782          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1783          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1784          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1785          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1786          .hword  (0x70<<8)                  |(1<<CFlag)\r
1787          .hword  (0x71<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1788          .hword  (0x72<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1789          .hword  (0x73<<8)                  |(1<<CFlag)\r
1790          .hword  (0x74<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1791          .hword  (0x75<<8)                  |(1<<CFlag)\r
1792          .hword  (0x76<<8)                  |(1<<CFlag)\r
1793          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1794          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1795          .hword  (0x79<<8)               |(1<<CFlag)\r
1796          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1797          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1798          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1799          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1800          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1801          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1802          .hword  (0x80<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1803          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1804          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1805          .hword  (0x83<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1806          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1807          .hword  (0x85<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1808          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1809          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1810          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1811          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
1812          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1813          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1814          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1815          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1816          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1817          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1818          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1819          .hword  (0x91<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1820          .hword  (0x92<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1821          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1822          .hword  (0x94<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1823          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1824          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1825          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1826          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
1827          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1828          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1829          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1830          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1831          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1832          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1833          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1834          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1835          .hword  (0xA1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1836          .hword  (0xA2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1837          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1838          .hword  (0xA4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1839          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1840          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1841          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1842          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1843          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1844          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1845          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1846          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1847          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1848          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1849          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1850          .hword  (0xB0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1851          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1852          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1853          .hword  (0xB3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1854          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1855          .hword  (0xB5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1856          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1857          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1858          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1859          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1860          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1861          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1862          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1863          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1864          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1865          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1866          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1867          .hword  (0xC1<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1868          .hword  (0xC2<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1869          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1870          .hword  (0xC4<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1871          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1872          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1873          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1874          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
1875          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1876          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1877          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1878          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1879          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1880          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1881          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1882          .hword  (0xD0<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1883          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1884          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1885          .hword  (0xD3<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1886          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1887          .hword  (0xD5<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1888          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1889          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1890          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1891          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
1892          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1893          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1894          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1895          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1896          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1897          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1898          .hword  (0xE0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1899          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1900          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1901          .hword  (0xE3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1902          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1903          .hword  (0xE5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1904          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1905          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1906          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1907          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1908          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1909          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1910          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1911          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1912          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1913          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1914          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1915          .hword  (0xF1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1916          .hword  (0xF2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1917          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1918          .hword  (0xF4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1919          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1920          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1921          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1922          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1923          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1924          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1925          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1926          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1927          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1928          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1929          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1930          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1931          .hword  (0x01<<8)                     |(1<<CFlag)\r
1932          .hword  (0x02<<8)                     |(1<<CFlag)\r
1933          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1934          .hword  (0x04<<8)                     |(1<<CFlag)\r
1935          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1936          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1937          .hword  (0x07<<8)                     |(1<<CFlag)\r
1938          .hword  (0x08<<8)                  |(1<<CFlag)\r
1939          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1940          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1941          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1942          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1943          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1944          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1945          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1946          .hword  (0x10<<8)                     |(1<<CFlag)\r
1947          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1948          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1949          .hword  (0x13<<8)                     |(1<<CFlag)\r
1950          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1951          .hword  (0x15<<8)                     |(1<<CFlag)\r
1952          .hword  (0x16<<8)                     |(1<<CFlag)\r
1953          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1954          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1955          .hword  (0x19<<8)                  |(1<<CFlag)\r
1956          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1957          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1958          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1959          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1960          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1961          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1962          .hword  (0x20<<8)                  |(1<<CFlag)\r
1963          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1964          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1965          .hword  (0x23<<8)                  |(1<<CFlag)\r
1966          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1967          .hword  (0x25<<8)                  |(1<<CFlag)\r
1968          .hword  (0x26<<8)                  |(1<<CFlag)\r
1969          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1970          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1971          .hword  (0x29<<8)               |(1<<CFlag)\r
1972          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1973          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1974          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1975          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1976          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1977          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1978          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1979          .hword  (0x31<<8)                  |(1<<CFlag)\r
1980          .hword  (0x32<<8)                  |(1<<CFlag)\r
1981          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1982          .hword  (0x34<<8)                  |(1<<CFlag)\r
1983          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1984          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1985          .hword  (0x37<<8)                  |(1<<CFlag)\r
1986          .hword  (0x38<<8)               |(1<<CFlag)\r
1987          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1988          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1989          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1990          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1991          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1992          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1993          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1994          .hword  (0x40<<8)                     |(1<<CFlag)\r
1995          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1996          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1997          .hword  (0x43<<8)                     |(1<<CFlag)\r
1998          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1999          .hword  (0x45<<8)                     |(1<<CFlag)\r
2000          .hword  (0x46<<8)                     |(1<<CFlag)\r
2001          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2002          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2003          .hword  (0x49<<8)                  |(1<<CFlag)\r
2004          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2005          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2006          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2007          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2008          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2009          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2010          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2011          .hword  (0x51<<8)                     |(1<<CFlag)\r
2012          .hword  (0x52<<8)                     |(1<<CFlag)\r
2013          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2014          .hword  (0x54<<8)                     |(1<<CFlag)\r
2015          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2016          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2017          .hword  (0x57<<8)                     |(1<<CFlag)\r
2018          .hword  (0x58<<8)                  |(1<<CFlag)\r
2019          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2020          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2021          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2022          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2023          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2024          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2025          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2026          .hword  (0x06<<8)               |(1<<VFlag)\r
2027          .hword  (0x07<<8)                  \r
2028          .hword  (0x08<<8)               \r
2029          .hword  (0x09<<8)            |(1<<VFlag)\r
2030          .hword  (0x0A<<8)            |(1<<VFlag)\r
2031          .hword  (0x0B<<8)               \r
2032          .hword  (0x0C<<8)            |(1<<VFlag)\r
2033          .hword  (0x0D<<8)               \r
2034          .hword  (0x0E<<8)               \r
2035          .hword  (0x0F<<8)            |(1<<VFlag)\r
2036          .hword  (0x10<<8)         |(1<<HFlag)      \r
2037          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2038          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2039          .hword  (0x13<<8)         |(1<<HFlag)      \r
2040          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2041          .hword  (0x15<<8)         |(1<<HFlag)      \r
2042          .hword  (0x16<<8)                  \r
2043          .hword  (0x17<<8)               |(1<<VFlag)\r
2044          .hword  (0x18<<8)            |(1<<VFlag)\r
2045          .hword  (0x19<<8)               \r
2046          .hword  (0x1A<<8)               \r
2047          .hword  (0x1B<<8)            |(1<<VFlag)\r
2048          .hword  (0x1C<<8)               \r
2049          .hword  (0x1D<<8)            |(1<<VFlag)\r
2050          .hword  (0x1E<<8)            |(1<<VFlag)\r
2051          .hword  (0x1F<<8)               \r
2052          .hword  (0x20<<8)      |(1<<HFlag)      \r
2053          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2054          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2055          .hword  (0x23<<8)      |(1<<HFlag)      \r
2056          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2057          .hword  (0x25<<8)      |(1<<HFlag)      \r
2058          .hword  (0x26<<8)               \r
2059          .hword  (0x27<<8)            |(1<<VFlag)\r
2060          .hword  (0x28<<8)         |(1<<VFlag)\r
2061          .hword  (0x29<<8)            \r
2062          .hword  (0x2A<<8)            \r
2063          .hword  (0x2B<<8)         |(1<<VFlag)\r
2064          .hword  (0x2C<<8)            \r
2065          .hword  (0x2D<<8)         |(1<<VFlag)\r
2066          .hword  (0x2E<<8)         |(1<<VFlag)\r
2067          .hword  (0x2F<<8)            \r
2068          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2069          .hword  (0x31<<8)      |(1<<HFlag)      \r
2070          .hword  (0x32<<8)      |(1<<HFlag)      \r
2071          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2072          .hword  (0x34<<8)      |(1<<HFlag)      \r
2073          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2074          .hword  (0x36<<8)            |(1<<VFlag)\r
2075          .hword  (0x37<<8)               \r
2076          .hword  (0x38<<8)            \r
2077          .hword  (0x39<<8)         |(1<<VFlag)\r
2078          .hword  (0x3A<<8)         |(1<<VFlag)\r
2079          .hword  (0x3B<<8)            \r
2080          .hword  (0x3C<<8)         |(1<<VFlag)\r
2081          .hword  (0x3D<<8)            \r
2082          .hword  (0x3E<<8)            \r
2083          .hword  (0x3F<<8)         |(1<<VFlag)\r
2084          .hword  (0x40<<8)         |(1<<HFlag)      \r
2085          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2086          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2087          .hword  (0x43<<8)         |(1<<HFlag)      \r
2088          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2089          .hword  (0x45<<8)         |(1<<HFlag)      \r
2090          .hword  (0x46<<8)                  \r
2091          .hword  (0x47<<8)               |(1<<VFlag)\r
2092          .hword  (0x48<<8)            |(1<<VFlag)\r
2093          .hword  (0x49<<8)               \r
2094          .hword  (0x4A<<8)               \r
2095          .hword  (0x4B<<8)            |(1<<VFlag)\r
2096          .hword  (0x4C<<8)               \r
2097          .hword  (0x4D<<8)            |(1<<VFlag)\r
2098          .hword  (0x4E<<8)            |(1<<VFlag)\r
2099          .hword  (0x4F<<8)               \r
2100          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2101          .hword  (0x51<<8)         |(1<<HFlag)      \r
2102          .hword  (0x52<<8)         |(1<<HFlag)      \r
2103          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2104          .hword  (0x54<<8)         |(1<<HFlag)      \r
2105          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2106          .hword  (0x56<<8)               |(1<<VFlag)\r
2107          .hword  (0x57<<8)                  \r
2108          .hword  (0x58<<8)               \r
2109          .hword  (0x59<<8)            |(1<<VFlag)\r
2110          .hword  (0x5A<<8)            |(1<<VFlag)\r
2111          .hword  (0x5B<<8)               \r
2112          .hword  (0x5C<<8)            |(1<<VFlag)\r
2113          .hword  (0x5D<<8)               \r
2114          .hword  (0x5E<<8)               \r
2115          .hword  (0x5F<<8)            |(1<<VFlag)\r
2116          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2117          .hword  (0x61<<8)      |(1<<HFlag)      \r
2118          .hword  (0x62<<8)      |(1<<HFlag)      \r
2119          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2120          .hword  (0x64<<8)      |(1<<HFlag)      \r
2121          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2122          .hword  (0x66<<8)            |(1<<VFlag)\r
2123          .hword  (0x67<<8)               \r
2124          .hword  (0x68<<8)            \r
2125          .hword  (0x69<<8)         |(1<<VFlag)\r
2126          .hword  (0x6A<<8)         |(1<<VFlag)\r
2127          .hword  (0x6B<<8)            \r
2128          .hword  (0x6C<<8)         |(1<<VFlag)\r
2129          .hword  (0x6D<<8)            \r
2130          .hword  (0x6E<<8)            \r
2131          .hword  (0x6F<<8)         |(1<<VFlag)\r
2132          .hword  (0x70<<8)      |(1<<HFlag)      \r
2133          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2134          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2135          .hword  (0x73<<8)      |(1<<HFlag)      \r
2136          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2137          .hword  (0x75<<8)      |(1<<HFlag)      \r
2138          .hword  (0x76<<8)               \r
2139          .hword  (0x77<<8)            |(1<<VFlag)\r
2140          .hword  (0x78<<8)         |(1<<VFlag)\r
2141          .hword  (0x79<<8)            \r
2142          .hword  (0x7A<<8)            \r
2143          .hword  (0x7B<<8)         |(1<<VFlag)\r
2144          .hword  (0x7C<<8)            \r
2145          .hword  (0x7D<<8)         |(1<<VFlag)\r
2146          .hword  (0x7E<<8)         |(1<<VFlag)\r
2147          .hword  (0x7F<<8)            \r
2148          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2149          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2150          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2151          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2152          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2153          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2154          .hword  (0x86<<8)|(1<<SFlag)               \r
2155          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
2156          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
2157          .hword  (0x89<<8)|(1<<SFlag)            \r
2158          .hword  (0x8A<<8)|(1<<SFlag)            \r
2159          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)\r
2160          .hword  (0x8C<<8)|(1<<SFlag)            \r
2161          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)\r
2162          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)\r
2163          .hword  (0x8F<<8)|(1<<SFlag)            \r
2164          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2165          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2166          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2167          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2168          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2169          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2170          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
2171          .hword  (0x97<<8)|(1<<SFlag)               \r
2172          .hword  (0x98<<8)|(1<<SFlag)            \r
2173          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
2174          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)\r
2175          .hword  (0x9B<<8)|(1<<SFlag)            \r
2176          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)\r
2177          .hword  (0x9D<<8)|(1<<SFlag)            \r
2178          .hword  (0x9E<<8)|(1<<SFlag)            \r
2179          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)\r
2180          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2181          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2182          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2183          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2184          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2185          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2186          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2187          .hword  (0x07<<8)                     |(1<<CFlag)\r
2188          .hword  (0x08<<8)                  |(1<<CFlag)\r
2189          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2190          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2191          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2192          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2193          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2194          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2195          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2196          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2197          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2198          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2199          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2200          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2201          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2202          .hword  (0x16<<8)                     |(1<<CFlag)\r
2203          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2204          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2205          .hword  (0x19<<8)                  |(1<<CFlag)\r
2206          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2207          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2208          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2209          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2210          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2211          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2212          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2213          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2214          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2215          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2216          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2217          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2218          .hword  (0x26<<8)                  |(1<<CFlag)\r
2219          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2220          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2221          .hword  (0x29<<8)               |(1<<CFlag)\r
2222          .hword  (0x2A<<8)               |(1<<CFlag)\r
2223          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2224          .hword  (0x2C<<8)               |(1<<CFlag)\r
2225          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2226          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2227          .hword  (0x2F<<8)               |(1<<CFlag)\r
2228          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2229          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2230          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2231          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2232          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2233          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2234          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2235          .hword  (0x37<<8)                  |(1<<CFlag)\r
2236          .hword  (0x38<<8)               |(1<<CFlag)\r
2237          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2238          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2239          .hword  (0x3B<<8)               |(1<<CFlag)\r
2240          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2241          .hword  (0x3D<<8)               |(1<<CFlag)\r
2242          .hword  (0x3E<<8)               |(1<<CFlag)\r
2243          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2244          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2245          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2246          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2247          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2248          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2249          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2250          .hword  (0x46<<8)                     |(1<<CFlag)\r
2251          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2252          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2253          .hword  (0x49<<8)                  |(1<<CFlag)\r
2254          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2255          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2256          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2257          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2258          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2259          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2260          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2261          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2262          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2263          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2264          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2265          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2266          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2267          .hword  (0x57<<8)                     |(1<<CFlag)\r
2268          .hword  (0x58<<8)                  |(1<<CFlag)\r
2269          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2270          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2271          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2272          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2273          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2274          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2275          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2276          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2277          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2278          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2279          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2280          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2281          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2282          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2283          .hword  (0x67<<8)                  |(1<<CFlag)\r
2284          .hword  (0x68<<8)               |(1<<CFlag)\r
2285          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2286          .hword  (0x6A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2287          .hword  (0x6B<<8)               |(1<<CFlag)\r
2288          .hword  (0x6C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2289          .hword  (0x6D<<8)               |(1<<CFlag)\r
2290          .hword  (0x6E<<8)               |(1<<CFlag)\r
2291          .hword  (0x6F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2292          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2293          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2294          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2295          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2296          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2297          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2298          .hword  (0x76<<8)                  |(1<<CFlag)\r
2299          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2300          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2301          .hword  (0x79<<8)               |(1<<CFlag)\r
2302          .hword  (0x7A<<8)               |(1<<CFlag)\r
2303          .hword  (0x7B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2304          .hword  (0x7C<<8)               |(1<<CFlag)\r
2305          .hword  (0x7D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2306          .hword  (0x7E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2307          .hword  (0x7F<<8)               |(1<<CFlag)\r
2308          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2309          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2310          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2311          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2312          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2313          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2314          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2315          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2316          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2317          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
2318          .hword  (0x8A<<8)|(1<<SFlag)               |(1<<CFlag)\r
2319          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2320          .hword  (0x8C<<8)|(1<<SFlag)               |(1<<CFlag)\r
2321          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2322          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2323          .hword  (0x8F<<8)|(1<<SFlag)               |(1<<CFlag)\r
2324          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2325          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2326          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2327          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2328          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2329          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2330          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2331          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2332          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
2333          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2334          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2335          .hword  (0x9B<<8)|(1<<SFlag)               |(1<<CFlag)\r
2336          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2337          .hword  (0x9D<<8)|(1<<SFlag)               |(1<<CFlag)\r
2338          .hword  (0x9E<<8)|(1<<SFlag)               |(1<<CFlag)\r
2339          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2340          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2341          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2342          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2343          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2344          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2345          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2346          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2347          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2348          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2349          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2350          .hword  (0xAA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2351          .hword  (0xAB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2352          .hword  (0xAC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2353          .hword  (0xAD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2354          .hword  (0xAE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2355          .hword  (0xAF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2356          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2357          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2358          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2359          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2360          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2361          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2362          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2363          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2364          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2365          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2366          .hword  (0xBA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2367          .hword  (0xBB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2368          .hword  (0xBC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2369          .hword  (0xBD<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2370          .hword  (0xBE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2371          .hword  (0xBF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2372          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2373          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2374          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2375          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2376          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2377          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2378          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2379          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2380          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
2381          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2382          .hword  (0xCA<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2383          .hword  (0xCB<<8)|(1<<SFlag)               |(1<<CFlag)\r
2384          .hword  (0xCC<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2385          .hword  (0xCD<<8)|(1<<SFlag)               |(1<<CFlag)\r
2386          .hword  (0xCE<<8)|(1<<SFlag)               |(1<<CFlag)\r
2387          .hword  (0xCF<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2388          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2389          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2390          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2391          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2392          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2393          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2394          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2395          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2396          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2397          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
2398          .hword  (0xDA<<8)|(1<<SFlag)               |(1<<CFlag)\r
2399          .hword  (0xDB<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2400          .hword  (0xDC<<8)|(1<<SFlag)               |(1<<CFlag)\r
2401          .hword  (0xDD<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2402          .hword  (0xDE<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2403          .hword  (0xDF<<8)|(1<<SFlag)               |(1<<CFlag)\r
2404          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2405          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2406          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2407          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2408          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2409          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2410          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2411          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2412          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2413          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2414          .hword  (0xEA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2415          .hword  (0xEB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2416          .hword  (0xEC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2417          .hword  (0xED<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2418          .hword  (0xEE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2419          .hword  (0xEF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2420          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2421          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2422          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2423          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2424          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2425          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2426          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2427          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2428          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2429          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2430          .hword  (0xFA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2431          .hword  (0xFB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2432          .hword  (0xFC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2433          .hword  (0xFD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2434          .hword  (0xFE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2435          .hword  (0xFF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2436          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2437          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2438          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2439          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2440          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2441          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2442          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2443          .hword  (0x07<<8)                     |(1<<CFlag)\r
2444          .hword  (0x08<<8)                  |(1<<CFlag)\r
2445          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2446          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2447          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2448          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2449          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2450          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2451          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2452          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2453          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2454          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2455          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2456          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2457          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2458          .hword  (0x16<<8)                     |(1<<CFlag)\r
2459          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2460          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2461          .hword  (0x19<<8)                  |(1<<CFlag)\r
2462          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2463          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2464          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2465          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2466          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2467          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2468          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2469          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2470          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2471          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2472          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2473          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2474          .hword  (0x26<<8)                  |(1<<CFlag)\r
2475          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2476          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2477          .hword  (0x29<<8)               |(1<<CFlag)\r
2478          .hword  (0x2A<<8)               |(1<<CFlag)\r
2479          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2480          .hword  (0x2C<<8)               |(1<<CFlag)\r
2481          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2482          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2483          .hword  (0x2F<<8)               |(1<<CFlag)\r
2484          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2485          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2486          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2487          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2488          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2489          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2490          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2491          .hword  (0x37<<8)                  |(1<<CFlag)\r
2492          .hword  (0x38<<8)               |(1<<CFlag)\r
2493          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2494          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2495          .hword  (0x3B<<8)               |(1<<CFlag)\r
2496          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2497          .hword  (0x3D<<8)               |(1<<CFlag)\r
2498          .hword  (0x3E<<8)               |(1<<CFlag)\r
2499          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2500          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2501          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2502          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2503          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2504          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2505          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2506          .hword  (0x46<<8)                     |(1<<CFlag)\r
2507          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2508          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2509          .hword  (0x49<<8)                  |(1<<CFlag)\r
2510          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2511          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2512          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2513          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2514          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2515          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2516          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2517          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2518          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2519          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2520          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2521          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2522          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2523          .hword  (0x57<<8)                     |(1<<CFlag)\r
2524          .hword  (0x58<<8)                  |(1<<CFlag)\r
2525          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2526          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2527          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2528          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2529          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2530          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2531          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2532          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2533          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2534          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2535          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2536          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2537          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2538          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2539          .hword  (0x01<<8)                  |(1<<NFlag)   \r
2540          .hword  (0x02<<8)                  |(1<<NFlag)   \r
2541          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2542          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2543          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2544          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2545          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2546          .hword  (0x08<<8)               |(1<<NFlag)   \r
2547          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2548          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2549          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2550          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2551          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2552          .hword  (0x08<<8)               |(1<<NFlag)   \r
2553          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2554          .hword  (0x10<<8)                  |(1<<NFlag)   \r
2555          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2556          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2557          .hword  (0x13<<8)                  |(1<<NFlag)   \r
2558          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2559          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2560          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2561          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2562          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2563          .hword  (0x19<<8)               |(1<<NFlag)   \r
2564          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2565          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2566          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2567          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2568          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2569          .hword  (0x19<<8)               |(1<<NFlag)   \r
2570          .hword  (0x20<<8)               |(1<<NFlag)   \r
2571          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2572          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2573          .hword  (0x23<<8)               |(1<<NFlag)   \r
2574          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2575          .hword  (0x25<<8)               |(1<<NFlag)   \r
2576          .hword  (0x26<<8)               |(1<<NFlag)   \r
2577          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2578          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2579          .hword  (0x29<<8)            |(1<<NFlag)   \r
2580          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2581          .hword  (0x25<<8)               |(1<<NFlag)   \r
2582          .hword  (0x26<<8)               |(1<<NFlag)   \r
2583          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2584          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2585          .hword  (0x29<<8)            |(1<<NFlag)   \r
2586          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2587          .hword  (0x31<<8)               |(1<<NFlag)   \r
2588          .hword  (0x32<<8)               |(1<<NFlag)   \r
2589          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2590          .hword  (0x34<<8)               |(1<<NFlag)   \r
2591          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2592          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2593          .hword  (0x37<<8)               |(1<<NFlag)   \r
2594          .hword  (0x38<<8)            |(1<<NFlag)   \r
2595          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2596          .hword  (0x34<<8)               |(1<<NFlag)   \r
2597          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2598          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2599          .hword  (0x37<<8)               |(1<<NFlag)   \r
2600          .hword  (0x38<<8)            |(1<<NFlag)   \r
2601          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2602          .hword  (0x40<<8)                  |(1<<NFlag)   \r
2603          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2604          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2605          .hword  (0x43<<8)                  |(1<<NFlag)   \r
2606          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2607          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2608          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2609          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2610          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2611          .hword  (0x49<<8)               |(1<<NFlag)   \r
2612          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2613          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2614          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2615          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2616          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2617          .hword  (0x49<<8)               |(1<<NFlag)   \r
2618          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2619          .hword  (0x51<<8)                  |(1<<NFlag)   \r
2620          .hword  (0x52<<8)                  |(1<<NFlag)   \r
2621          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2622          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2623          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2624          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2625          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2626          .hword  (0x58<<8)               |(1<<NFlag)   \r
2627          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2628          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2629          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2630          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2631          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2632          .hword  (0x58<<8)               |(1<<NFlag)   \r
2633          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2634          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2635          .hword  (0x61<<8)               |(1<<NFlag)   \r
2636          .hword  (0x62<<8)               |(1<<NFlag)   \r
2637          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2638          .hword  (0x64<<8)               |(1<<NFlag)   \r
2639          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2640          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2641          .hword  (0x67<<8)               |(1<<NFlag)   \r
2642          .hword  (0x68<<8)            |(1<<NFlag)   \r
2643          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2644          .hword  (0x64<<8)               |(1<<NFlag)   \r
2645          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2646          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2647          .hword  (0x67<<8)               |(1<<NFlag)   \r
2648          .hword  (0x68<<8)            |(1<<NFlag)   \r
2649          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2650          .hword  (0x70<<8)               |(1<<NFlag)   \r
2651          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2652          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2653          .hword  (0x73<<8)               |(1<<NFlag)   \r
2654          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2655          .hword  (0x75<<8)               |(1<<NFlag)   \r
2656          .hword  (0x76<<8)               |(1<<NFlag)   \r
2657          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2658          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2659          .hword  (0x79<<8)            |(1<<NFlag)   \r
2660          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2661          .hword  (0x75<<8)               |(1<<NFlag)   \r
2662          .hword  (0x76<<8)               |(1<<NFlag)   \r
2663          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2664          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2665          .hword  (0x79<<8)            |(1<<NFlag)   \r
2666          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2667          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2668          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2669          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2670          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2671          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2672          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2673          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2674          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2675          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2676          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2677          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2678          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2679          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2680          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2681          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2682          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2683          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2684          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2685          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2686          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2687          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2688          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2689          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2690          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2691          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2692          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2693          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2694          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2695          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2696          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2697          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2698          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2699          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2700          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2701          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2702          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2703          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2704          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2705          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2706          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2707          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2708          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2709          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2710          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2711          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2712          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2713          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2714          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2715          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2716          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2717          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2718          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2719          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2720          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2721          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2722          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2723          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2724          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2725          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2726          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2727          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2728          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2729          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2730          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2731          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
2732          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
2733          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2734          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2735          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2736          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2737          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2738          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2739          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2740          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2741          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2742          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2743          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2744          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2745          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2746          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
2747          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2748          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2749          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
2750          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2751          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2752          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2753          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2754          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2755          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2756          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2757          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2758          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2759          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2760          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2761          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2762          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2763          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2764          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2765          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2766          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2767          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2768          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2769          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2770          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2771          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2772          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2773          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2774          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2775          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2776          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2777          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2778          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2779          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2780          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2781          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2782          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2783          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2784          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2785          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2786          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2787          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2788          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2789          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2790          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2791          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2792          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2793          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2794          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2795          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2796          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2797          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2798          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2799          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2800          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2801          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2802          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2803          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2804          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2805          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2806          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2807          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2808          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2809          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2810          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2811          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2812          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2813          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2814          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2815          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2816          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2817          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2818          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2819          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2820          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2821          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2822          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2823          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2824          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2825          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2826          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2827          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2828          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2829          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2830          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2831          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2832          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2833          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2834          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2835          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2836          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2837          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2838          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2839          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2840          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2841          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2842          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2843          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2844          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2845          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2846          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2847          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2848          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2849          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2850          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2851          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2852          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2853          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2854          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2855          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2856          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2857          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2858          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2859          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2860          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2861          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2862          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2863          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2864          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2865          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2866          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2867          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2868          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2869          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2870          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2871          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2872          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2873          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2874          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2875          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2876          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2877          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2878          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2879          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2880          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2881          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2882          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2883          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2884          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2885          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2886          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2887          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2888          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2889          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2890          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2891          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2892          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2893          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2894          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2895          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2896          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2897          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2898          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2899          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2900          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2901          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2902          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2903          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2904          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2905          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2906          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2907          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2908          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2909          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2910          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2911          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2912          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2913          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2914          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2915          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2916          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2917          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2918          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2919          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2920          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2921          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2922          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
2923          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2924          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2925          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
2926          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2927          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2928          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2929          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2930          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2931          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2932          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2933          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2934          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2935          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2936          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2937          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2938          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2939          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
2940          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
2941          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2942          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2943          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2944          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2945          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2946          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2947          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2948          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2949          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2950          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2951          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2952          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2953          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2954          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2955          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2956          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2957          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2958          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2959          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2960          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2961          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2962          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2963          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2964          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2965          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2966          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2967          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2968          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2969          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2970          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2971          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2972          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2973          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2974          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2975          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2976          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2977          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2978          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2979          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2980          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2981          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2982          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2983          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2984          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2985          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2986          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2987          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
2988          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
2989          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2990          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2991          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2992          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2993          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2994          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2995          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2996          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2997          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2998          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2999          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3000          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3001          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3002          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3003          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3004          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3005          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3006          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3007          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3008          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3009          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3010          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3011          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3012          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3013          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3014          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3015          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3016          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3017          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3018          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3019          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3020          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3021          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3022          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3023          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3024          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3025          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3026          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3027          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3028          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3029          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3030          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3031          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3032          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3033          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3034          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3035          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3036          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3037          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3038          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3039          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3040          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3041          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3042          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3043          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3044          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3045          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3046          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3047          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3048          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3049          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3050          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3051          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3052          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3053          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3054          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3055          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3056          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3057          .hword  (0x01<<8)                  |(1<<NFlag)   \r
3058          .hword  (0x02<<8)                  |(1<<NFlag)   \r
3059          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3060          .hword  (0x04<<8)                  |(1<<NFlag)   \r
3061          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3062          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3063          .hword  (0x07<<8)                  |(1<<NFlag)   \r
3064          .hword  (0x08<<8)               |(1<<NFlag)   \r
3065          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3066          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3067          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3068          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3069          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3070          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3071          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3072          .hword  (0x10<<8)                  |(1<<NFlag)   \r
3073          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3074          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3075          .hword  (0x13<<8)                  |(1<<NFlag)   \r
3076          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3077          .hword  (0x15<<8)                  |(1<<NFlag)   \r
3078          .hword  (0x16<<8)                  |(1<<NFlag)   \r
3079          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3080          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3081          .hword  (0x19<<8)               |(1<<NFlag)   \r
3082          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3083          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3084          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3085          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3086          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3087          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3088          .hword  (0x20<<8)               |(1<<NFlag)   \r
3089          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3090          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3091          .hword  (0x23<<8)               |(1<<NFlag)   \r
3092          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3093          .hword  (0x25<<8)               |(1<<NFlag)   \r
3094          .hword  (0x26<<8)               |(1<<NFlag)   \r
3095          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3096          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3097          .hword  (0x29<<8)            |(1<<NFlag)   \r
3098          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3099          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3100          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3101          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3102          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3103          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3104          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3105          .hword  (0x31<<8)               |(1<<NFlag)   \r
3106          .hword  (0x32<<8)               |(1<<NFlag)   \r
3107          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3108          .hword  (0x34<<8)               |(1<<NFlag)   \r
3109          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3110          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3111          .hword  (0x37<<8)               |(1<<NFlag)   \r
3112          .hword  (0x38<<8)            |(1<<NFlag)   \r
3113          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3114          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3115          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3116          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3117          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3118          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3119          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3120          .hword  (0x40<<8)                  |(1<<NFlag)   \r
3121          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3122          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3123          .hword  (0x43<<8)                  |(1<<NFlag)   \r
3124          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3125          .hword  (0x45<<8)                  |(1<<NFlag)   \r
3126          .hword  (0x46<<8)                  |(1<<NFlag)   \r
3127          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3128          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3129          .hword  (0x49<<8)               |(1<<NFlag)   \r
3130          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3131          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3132          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3133          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3134          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3135          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3136          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3137          .hword  (0x51<<8)                  |(1<<NFlag)   \r
3138          .hword  (0x52<<8)                  |(1<<NFlag)   \r
3139          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3140          .hword  (0x54<<8)                  |(1<<NFlag)   \r
3141          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3142          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3143          .hword  (0x57<<8)                  |(1<<NFlag)   \r
3144          .hword  (0x58<<8)               |(1<<NFlag)   \r
3145          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3146          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3147          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3148          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3149          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3150          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3151          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3152          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3153          .hword  (0x61<<8)               |(1<<NFlag)   \r
3154          .hword  (0x62<<8)               |(1<<NFlag)   \r
3155          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3156          .hword  (0x64<<8)               |(1<<NFlag)   \r
3157          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3158          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3159          .hword  (0x67<<8)               |(1<<NFlag)   \r
3160          .hword  (0x68<<8)            |(1<<NFlag)   \r
3161          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3162          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3163          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3164          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3165          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3166          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3167          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3168          .hword  (0x70<<8)               |(1<<NFlag)   \r
3169          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3170          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3171          .hword  (0x73<<8)               |(1<<NFlag)   \r
3172          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3173          .hword  (0x75<<8)               |(1<<NFlag)   \r
3174          .hword  (0x76<<8)               |(1<<NFlag)   \r
3175          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3176          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3177          .hword  (0x79<<8)            |(1<<NFlag)   \r
3178          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3179          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3180          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3181          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3182          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3183          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3184          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3185          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3186          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3187          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3188          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3189          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3190          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3191          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3192          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3193          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
3194          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3195          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3196          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3197          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3198          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3199          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3200          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3201          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3202          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3203          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3204          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3205          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3206          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3207          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3208          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3209          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3210          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3211          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3212          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3213          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3214          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3215          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3216          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3217          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3218          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3219          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3220          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3221          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3222          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3223          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3224          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3225          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3226          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3227          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3228          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3229          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3230          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3231          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3232          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3233          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3234          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3235          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3236          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3237          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3238          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3239          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3240          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3241          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3242          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3243          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3244          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3245          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3246          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3247          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3248          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3249          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3250          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3251          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3252          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3253          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3254          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3255          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3256          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3257          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3258          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3259          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3260          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3261          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3262          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3263          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3264          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3265          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3266          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3267          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3268          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3269          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3270          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3271          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3272          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3273          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3274          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3275          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3276          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3277          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3278          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3279          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3280          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3281          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3282          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3283          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3284          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3285          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3286          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3287          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3288          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3289          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3290          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3291          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3292          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3293          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3294          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3295          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3296          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3297          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3298          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3299          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3300          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3301          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3302          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3303          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3304          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3305          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3306          .hword  (0x9A<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3307          .hword  (0x9B<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3308          .hword  (0x9C<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3309          .hword  (0x9D<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3310          .hword  (0x9E<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3311          .hword  (0x9F<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3312          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3313          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3314          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3315          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3316          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3317          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3318          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3319          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3320          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3321          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3322          .hword  (0xAA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3323          .hword  (0xAB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3324          .hword  (0xAC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3325          .hword  (0xAD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3326          .hword  (0xAE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3327          .hword  (0xAF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3328          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3329          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3330          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3331          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3332          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3333          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3334          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3335          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3336          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3337          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3338          .hword  (0xBA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3339          .hword  (0xBB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3340          .hword  (0xBC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3341          .hword  (0xBD<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3342          .hword  (0xBE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3343          .hword  (0xBF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3344          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3345          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3346          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3347          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3348          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3349          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3350          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3351          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3352          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3353          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3354          .hword  (0xCA<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3355          .hword  (0xCB<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3356          .hword  (0xCC<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3357          .hword  (0xCD<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3358          .hword  (0xCE<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3359          .hword  (0xCF<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3360          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3361          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3362          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3363          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3364          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3365          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3366          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3367          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3368          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3369          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3370          .hword  (0xDA<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3371          .hword  (0xDB<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3372          .hword  (0xDC<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3373          .hword  (0xDD<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3374          .hword  (0xDE<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3375          .hword  (0xDF<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3376          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3377          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3378          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3379          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3380          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3381          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3382          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3383          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3384          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3385          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3386          .hword  (0xEA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3387          .hword  (0xEB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3388          .hword  (0xEC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3389          .hword  (0xED<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3390          .hword  (0xEE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3391          .hword  (0xEF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3392          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3393          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3394          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3395          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3396          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3397          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3398          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3399          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3400          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3401          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3402          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3403          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3404          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3405          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3406          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3407          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3408          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3409          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3410          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3411          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3412          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3413          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3414          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3415          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3416          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
3417          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3418          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3419          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3420          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3421          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3422          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3423          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3424          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3425          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3426          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3427          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3428          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3429          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3430          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3431          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3432          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3433          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
3434          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3435          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3436          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3437          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3438          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3439          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3440          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
3441          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3442          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3443          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
3444          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3445          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
3446          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
3447          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3448          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3449          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
3450          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3451          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3452          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3453          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3454          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3455          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3456          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3457          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
3458          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
3459          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3460          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3461          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3462          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3463          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3464          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3465          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3466          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3467          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3468          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3469          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3470          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3471          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3472          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3473          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3474          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3475          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3476          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3477          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3478          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3479          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3480          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3481          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3482          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3483          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3484          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3485          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3486          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3487          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3488          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3489          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3490          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3491          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3492          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3493          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3494          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3495          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3496          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3497          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3498          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3499          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3500          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3501          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3502          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3503          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3504          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3505          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3506          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3507          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3508          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3509          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3510          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3511          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3512          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3513          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3514          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3515          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3516          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3517          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3518          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3519          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3520          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3521          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3522          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3523          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3524          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3525          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3526          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3527          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3528          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3529          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3530          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3531          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3532          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3533          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3534          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3535          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3536          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3537          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3538          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3539          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3540          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3541          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3542          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3543          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3544          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3545          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3546          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3547          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3548          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3549          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3550          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3551          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3552          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3553          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3554          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3555          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3556          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3557          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3558          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3559          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3560          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3561          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3562          \r
3563 .align 4\r
3564 \r
3565 AF_Z80:  .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 0\r
3566          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 1\r
3567          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 2\r
3568          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 3\r
3569          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 4\r
3570          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 5\r
3571          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 6\r
3572          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 7\r
3573          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 8\r
3574          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 9\r
3575          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 10\r
3576          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 11\r
3577          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 12\r
3578          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 13\r
3579          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 14\r
3580          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 15\r
3581          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 16\r
3582          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 17\r
3583          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 18\r
3584          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 19\r
3585          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 20\r
3586          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 21\r
3587          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 22\r
3588          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 23\r
3589          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 24\r
3590          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 25\r
3591          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 26\r
3592          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 27\r
3593          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 28\r
3594          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 29\r
3595          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 30\r
3596          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 31\r
3597          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 32\r
3598          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 33\r
3599          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 34\r
3600          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 35\r
3601          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 36\r
3602          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 37\r
3603          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 38\r
3604          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 39\r
3605          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 40\r
3606          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 41\r
3607          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 42\r
3608          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 43\r
3609          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 44\r
3610          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 45\r
3611          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 46\r
3612          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 47\r
3613          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 48\r
3614          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 49\r
3615          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 50\r
3616          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 51\r
3617          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 52\r
3618          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 53\r
3619          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 54\r
3620          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 55\r
3621          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 56\r
3622          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 57\r
3623          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 58\r
3624          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 59\r
3625          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 60\r
3626          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 61\r
3627          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 62\r
3628          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 63\r
3629          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 64\r
3630          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 65\r
3631          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 66\r
3632          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 67\r
3633          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 68\r
3634          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 69\r
3635          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 70\r
3636          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 71\r
3637          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 72\r
3638          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 73\r
3639          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 74\r
3640          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 75\r
3641          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 76\r
3642          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 77\r
3643          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 78\r
3644          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 79\r
3645          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 80\r
3646          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 81\r
3647          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 82\r
3648          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 83\r
3649          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 84\r
3650          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 85\r
3651          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 86\r
3652          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 87\r
3653          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 88\r
3654          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 89\r
3655          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 90\r
3656          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 91\r
3657          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 92\r
3658          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 93\r
3659          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 94\r
3660          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 95\r
3661          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 96\r
3662          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 97\r
3663          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 98\r
3664          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 99\r
3665          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 100\r
3666          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 101\r
3667          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 102\r
3668          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 103\r
3669          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 104\r
3670          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 105\r
3671          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 106\r
3672          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 107\r
3673          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 108\r
3674          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 109\r
3675          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 110\r
3676          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 111\r
3677          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 112\r
3678          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 113\r
3679          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 114\r
3680          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 115\r
3681          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 116\r
3682          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 117\r
3683          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 118\r
3684          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 119\r
3685          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 120\r
3686          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 121\r
3687          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 122\r
3688          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 123\r
3689          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 124\r
3690          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 125\r
3691          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 126\r
3692          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 127\r
3693          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 128\r
3694          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 129\r
3695          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 130\r
3696          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 131\r
3697          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 132\r
3698          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 133\r
3699          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 134\r
3700          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 135\r
3701          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 136\r
3702          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 137\r
3703          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 138\r
3704          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 139\r
3705          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 140\r
3706          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 141\r
3707          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 142\r
3708          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 143\r
3709          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 144\r
3710          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 145\r
3711          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 146\r
3712          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 147\r
3713          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 148\r
3714          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 149\r
3715          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 150\r
3716          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 151\r
3717          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 152\r
3718          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 153\r
3719          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 154\r
3720          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 155\r
3721          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 156\r
3722          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 157\r
3723          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 158\r
3724          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 159\r
3725          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 160\r
3726          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 161\r
3727          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 162\r
3728          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 163\r
3729          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 164\r
3730          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 165\r
3731          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 166\r
3732          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 167\r
3733          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 168\r
3734          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 169\r
3735          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 170\r
3736          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 171\r
3737          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 172\r
3738          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 173\r
3739          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 174\r
3740          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 175\r
3741          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 176\r
3742          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 177\r
3743          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 178\r
3744          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 179\r
3745          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 180\r
3746          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 181\r
3747          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 182\r
3748          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 183\r
3749          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 184\r
3750          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 185\r
3751          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 186\r
3752          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 187\r
3753          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 188\r
3754          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 189\r
3755          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 190\r
3756          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 191\r
3757          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 192\r
3758          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 193\r
3759          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 194\r
3760          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 195\r
3761          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 196\r
3762          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 197\r
3763          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 198\r
3764          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 199\r
3765          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 200\r
3766          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 201\r
3767          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 202\r
3768          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 203\r
3769          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 204\r
3770          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 205\r
3771          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 206\r
3772          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 207\r
3773          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 208\r
3774          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 209\r
3775          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 210\r
3776          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 211\r
3777          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 212\r
3778          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 213\r
3779          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 214\r
3780          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 215\r
3781          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 216\r
3782          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 217\r
3783          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 218\r
3784          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 219\r
3785          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 220\r
3786          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 221\r
3787          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 222\r
3788          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 223\r
3789          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 224\r
3790          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 225\r
3791          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 226\r
3792          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 227\r
3793          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 228\r
3794          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 229\r
3795          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 230\r
3796          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 231\r
3797          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 232\r
3798          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 233\r
3799          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 234\r
3800          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 235\r
3801          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 236\r
3802          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 237\r
3803          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 238\r
3804          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 239\r
3805          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 240\r
3806          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 241\r
3807          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 242\r
3808          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 243\r
3809          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 244\r
3810          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 245\r
3811          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 246\r
3812          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 247\r
3813          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 248\r
3814          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 249\r
3815          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 250\r
3816          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 251\r
3817          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 252\r
3818          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 253\r
3819          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 254\r
3820          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 255\r
3821 \r
3822 .align 4\r
3823 \r
3824 AF_ARM:  .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 0\r
3825          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 1\r
3826          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 2\r
3827          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 3\r
3828          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 4\r
3829          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 5\r
3830          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 6\r
3831          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 7\r
3832          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 8\r
3833          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 9\r
3834          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 10\r
3835          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 11\r
3836          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 12\r
3837          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 13\r
3838          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 14\r
3839          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 15\r
3840          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 16\r
3841          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 17\r
3842          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 18\r
3843          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 19\r
3844          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 20\r
3845          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 21\r
3846          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 22\r
3847          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 23\r
3848          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 24\r
3849          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 25\r
3850          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 26\r
3851          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 27\r
3852          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 28\r
3853          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 29\r
3854          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 30\r
3855          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 31\r
3856          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 32\r
3857          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 33\r
3858          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 34\r
3859          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 35\r
3860          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 36\r
3861          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 37\r
3862          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 38\r
3863          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 39\r
3864          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 40\r
3865          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 41\r
3866          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 42\r
3867          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 43\r
3868          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 44\r
3869          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 45\r
3870          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 46\r
3871          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 47\r
3872          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 48\r
3873          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 49\r
3874          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 50\r
3875          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 51\r
3876          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 52\r
3877          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 53\r
3878          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 54\r
3879          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 55\r
3880          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 56\r
3881          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 57\r
3882          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 58\r
3883          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 59\r
3884          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 60\r
3885          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 61\r
3886          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 62\r
3887          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 63\r
3888          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 64\r
3889          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 65\r
3890          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 66\r
3891          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 67\r
3892          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 68\r
3893          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 69\r
3894          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 70\r
3895          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 71\r
3896          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 72\r
3897          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 73\r
3898          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 74\r
3899          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 75\r
3900          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 76\r
3901          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 77\r
3902          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 78\r
3903          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 79\r
3904          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 80\r
3905          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 81\r
3906          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 82\r
3907          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 83\r
3908          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 84\r
3909          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 85\r
3910          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 86\r
3911          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 87\r
3912          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 88\r
3913          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 89\r
3914          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 90\r
3915          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 91\r
3916          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 92\r
3917          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 93\r
3918          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 94\r
3919          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 95\r
3920          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 96\r
3921          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 97\r
3922          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 98\r
3923          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 99\r
3924          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 100\r
3925          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 101\r
3926          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 102\r
3927          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 103\r
3928          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 104\r
3929          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 105\r
3930          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 106\r
3931          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 107\r
3932          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 108\r
3933          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 109\r
3934          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 110\r
3935          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 111\r
3936          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 112\r
3937          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 113\r
3938          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 114\r
3939          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 115\r
3940          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 116\r
3941          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 117\r
3942          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 118\r
3943          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 119\r
3944          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 120\r
3945          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 121\r
3946          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 122\r
3947          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 123\r
3948          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 124\r
3949          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 125\r
3950          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 126\r
3951          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 127\r
3952          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 128\r
3953          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 129\r
3954          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 130\r
3955          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 131\r
3956          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 132\r
3957          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 133\r
3958          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 134\r
3959          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 135\r
3960          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 136\r
3961          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 137\r
3962          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 138\r
3963          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 139\r
3964          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 140\r
3965          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 141\r
3966          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 142\r
3967          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 143\r
3968          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 144\r
3969          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 145\r
3970          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 146\r
3971          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 147\r
3972          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 148\r
3973          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 149\r
3974          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 150\r
3975          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 151\r
3976          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 152\r
3977          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 153\r
3978          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 154\r
3979          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 155\r
3980          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 156\r
3981          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 157\r
3982          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 158\r
3983          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 159\r
3984          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 160\r
3985          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 161\r
3986          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 162\r
3987          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 163\r
3988          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 164\r
3989          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 165\r
3990          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 166\r
3991          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 167\r
3992          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 168\r
3993          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 169\r
3994          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 170\r
3995          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 171\r
3996          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 172\r
3997          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 173\r
3998          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 174\r
3999          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 175\r
4000          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 176\r
4001          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 177\r
4002          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 178\r
4003          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 179\r
4004          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 180\r
4005          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 181\r
4006          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 182\r
4007          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 183\r
4008          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 184\r
4009          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 185\r
4010          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 186\r
4011          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 187\r
4012          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 188\r
4013          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 189\r
4014          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 190\r
4015          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 191\r
4016          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 192\r
4017          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 193\r
4018          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 194\r
4019          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 195\r
4020          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 196\r
4021          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 197\r
4022          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 198\r
4023          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 199\r
4024          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 200\r
4025          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 201\r
4026          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 202\r
4027          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 203\r
4028          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 204\r
4029          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 205\r
4030          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 206\r
4031          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 207\r
4032          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 208\r
4033          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 209\r
4034          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 210\r
4035          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 211\r
4036          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 212\r
4037          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 213\r
4038          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 214\r
4039          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 215\r
4040          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 216\r
4041          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 217\r
4042          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 218\r
4043          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 219\r
4044          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 220\r
4045          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 221\r
4046          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 222\r
4047          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 223\r
4048          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 224\r
4049          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 225\r
4050          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 226\r
4051          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 227\r
4052          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 228\r
4053          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 229\r
4054          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 230\r
4055          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 231\r
4056          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 232\r
4057          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 233\r
4058          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 234\r
4059          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 235\r
4060          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 236\r
4061          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 237\r
4062          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 238\r
4063          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 239\r
4064          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 240\r
4065          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 241\r
4066          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 242\r
4067          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 243\r
4068          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 244\r
4069          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 245\r
4070          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 246\r
4071          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 247\r
4072          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 248\r
4073          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 249\r
4074          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 250\r
4075          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 251\r
4076          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 252\r
4077          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 253\r
4078          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 254\r
4079          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 255\r
4080 \r
4081 .align 4\r
4082 \r
4083 PZSTable_data: .byte (1<<ZFlag)|(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4084         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4085         .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
4086         .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
4087         .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
4088         .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
4089         .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
4090         .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
4091         .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
4092         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4093         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4094         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4095         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4096         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4097         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4098         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4099         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4100         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4101         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4102         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4103         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4104         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4105         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4106         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4107         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4108         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4109         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4110         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4111         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4112         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4113         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4114         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4115         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4116         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4117         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4118         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4119         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4120         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4121         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4122         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4123         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)       \r
4124 \r
4125 .align 4\r
4126 \r
4127 MAIN_opcodes:   \r
4128         .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
4129         .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
4130         .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
4131         .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
4132         .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
4133         .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
4134         .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
4135         .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
4136         .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
4137         .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
4138         .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
4139         .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
4140         .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
4141         .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
4142         .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
4143         .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
4144         .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
4145         .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
4146         .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
4147         .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
4148         .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
4149         .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
4150         .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
4151         .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
4152         .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
4153         .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
4154         .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
4155         .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
4156         .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
4157         .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
4158         .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
4159         .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
4160 \r
4161 .align 4\r
4162 \r
4163 EI_DUMMY_opcodes:\r
4164         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4165         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4166         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4167         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4168         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4169         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4170         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4171         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4172         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4173         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4174         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4175         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4176         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4177         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4178         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4179         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4180         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4181         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4182         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4183         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4184         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4185         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4186         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4187         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4188         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4189         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4190         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4191         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4192         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4193         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4194         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4195         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4196 \r
4197 .text\r
4198 .align 4\r
4199 \r
4200 ;@NOP\r
4201 opcode_0_0:\r
4202 ;@LD B,B\r
4203 opcode_4_0:\r
4204 ;@LD C,C\r
4205 opcode_4_9:\r
4206 ;@LD D,D\r
4207 opcode_5_2:\r
4208 ;@LD E,E\r
4209 opcode_5_B:\r
4210 ;@LD H,H\r
4211 opcode_6_4:\r
4212 ;@LD L,L\r
4213 opcode_6_D:\r
4214 ;@LD A,A\r
4215 opcode_7_F:\r
4216         fetch 4\r
4217 ;@LD BC,NN\r
4218 opcode_0_1:\r
4219         ldrb r0,[z80pc],#1\r
4220         ldrb r1,[z80pc],#1\r
4221         orr r0,r0,r1, lsl #8\r
4222         mov z80bc,r0, lsl #16\r
4223         fetch 10\r
4224 ;@LD (BC),A\r
4225 opcode_0_2:\r
4226         mov r0,z80a, lsr #24\r
4227         mov r1,z80bc, lsr #16\r
4228         writemem8\r
4229         fetch 7\r
4230 ;@INC BC\r
4231 opcode_0_3:\r
4232         add z80bc,z80bc,#1<<16\r
4233         fetch 6\r
4234 ;@INC B\r
4235 opcode_0_4:\r
4236         opINC8H z80bc\r
4237         fetch 4\r
4238 ;@DEC B\r
4239 opcode_0_5:\r
4240         opDEC8H z80bc\r
4241         fetch 4\r
4242 ;@LD B,N\r
4243 opcode_0_6:\r
4244         ldrb r1,[z80pc],#1\r
4245         and z80bc,z80bc,#0xFF<<16\r
4246         orr z80bc,z80bc,r1, lsl #24\r
4247         fetch 7\r
4248 ;@RLCA\r
4249 opcode_0_7:\r
4250         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4251         movs z80a,z80a, lsl #1\r
4252         orrcs z80a,z80a,#1<<24\r
4253         orrcs z80f,z80f,#1<<CFlag\r
4254         fetch 4\r
4255 ;@EX AF,AF'\r
4256 opcode_0_8:\r
4257         add r1,cpucontext,#z80a2\r
4258         swp z80a,z80a,[r1]\r
4259         add r1,cpucontext,#z80f2\r
4260         swp z80f,z80f,[r1]\r
4261         fetch 4\r
4262 ;@ADD HL,BC\r
4263 opcode_0_9:\r
4264         opADD16 z80hl z80bc\r
4265         fetch 11\r
4266 ;@LD A,(BC)\r
4267 opcode_0_A:\r
4268         mov r0,z80bc, lsr #16\r
4269         readmem8\r
4270         mov z80a,r0, lsl #24\r
4271         fetch 7\r
4272 ;@DEC BC\r
4273 opcode_0_B:\r
4274         sub z80bc,z80bc,#1<<16\r
4275         fetch 6\r
4276 ;@INC C\r
4277 opcode_0_C:\r
4278         opINC8L z80bc\r
4279         fetch 4\r
4280 ;@DEC C\r
4281 opcode_0_D:\r
4282         opDEC8L z80bc\r
4283         fetch 4\r
4284 ;@LD C,N\r
4285 opcode_0_E:\r
4286         ldrb r1,[z80pc],#1\r
4287         and z80bc,z80bc,#0xFF<<24\r
4288         orr z80bc,z80bc,r1, lsl #16\r
4289         fetch 7\r
4290 ;@RRCA\r
4291 opcode_0_F:\r
4292         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4293         movs z80a,z80a, lsr #25\r
4294         orrcs z80a,z80a,#1<<7\r
4295         orrcs z80f,z80f,#1<<CFlag\r
4296         mov z80a,z80a, lsl #24\r
4297         fetch 4\r
4298 ;@DJNZ $+2\r
4299 opcode_1_0:\r
4300         sub z80bc,z80bc,#1<<24\r
4301         tst z80bc,#0xFF<<24\r
4302         ldrsb r1,[z80pc],#1\r
4303         addne z80pc,z80pc,r1\r
4304         subne z80_icount,z80_icount,#5\r
4305         fetch 8\r
4306 \r
4307 ;@LD DE,NN\r
4308 opcode_1_1:\r
4309         ldrb r0,[z80pc],#1\r
4310         ldrb r1,[z80pc],#1\r
4311         orr r0,r0,r1, lsl #8\r
4312         mov z80de,r0, lsl #16\r
4313         fetch 10\r
4314 ;@LD (DE),A\r
4315 opcode_1_2:\r
4316         mov r0,z80a, lsr #24\r
4317         writemem8DE\r
4318         fetch 7\r
4319 ;@INC DE\r
4320 opcode_1_3:\r
4321         add z80de,z80de,#1<<16\r
4322         fetch 6\r
4323 ;@INC D\r
4324 opcode_1_4:\r
4325         opINC8H z80de\r
4326         fetch 4\r
4327 ;@DEC D\r
4328 opcode_1_5:\r
4329         opDEC8H z80de\r
4330         fetch 4\r
4331 ;@LD D,N\r
4332 opcode_1_6:\r
4333         ldrb r1,[z80pc],#1\r
4334         and z80de,z80de,#0xFF<<16\r
4335         orr z80de,z80de,r1, lsl #24\r
4336         fetch 7\r
4337 ;@RLA\r
4338 opcode_1_7:\r
4339         tst z80f,#1<<CFlag\r
4340         orrne z80a,z80a,#1<<23\r
4341         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4342         movs z80a,z80a, lsl #1\r
4343         orrcs z80f,z80f,#1<<CFlag\r
4344         fetch 4\r
4345 ;@JR $+2\r
4346 opcode_1_8:\r
4347         ldrsb r1,[z80pc],#1\r
4348         add z80pc,z80pc,r1\r
4349         fetch 12\r
4350 ;@ADD HL,DE\r
4351 opcode_1_9:\r
4352         opADD16 z80hl z80de\r
4353         fetch 11\r
4354 ;@LD A,(DE)\r
4355 opcode_1_A:\r
4356         mov r0,z80de, lsr #16\r
4357         readmem8\r
4358         mov z80a,r0, lsl #24\r
4359         fetch 7\r
4360 ;@DEC DE\r
4361 opcode_1_B:\r
4362         sub z80de,z80de,#1<<16\r
4363         fetch 6\r
4364 ;@INC E\r
4365 opcode_1_C:\r
4366         opINC8L z80de\r
4367         fetch 4\r
4368 ;@DEC E\r
4369 opcode_1_D:\r
4370         opDEC8L z80de\r
4371         fetch 4\r
4372 ;@LD E,N\r
4373 opcode_1_E:\r
4374         ldrb r0,[z80pc],#1\r
4375         and z80de,z80de,#0xFF<<24\r
4376         orr z80de,z80de,r0, lsl #16\r
4377         fetch 7\r
4378 ;@RRA\r
4379 opcode_1_F:\r
4380         orr z80a,z80a,z80f,lsr#1                ;@get C\r
4381         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4382         movs z80a,z80a,ror#25\r
4383         orrcs z80f,z80f,#1<<CFlag\r
4384         mov z80a,z80a,lsl#24\r
4385         fetch 4\r
4386 ;@JR NZ,$+2\r
4387 opcode_2_0:\r
4388         tst z80f,#1<<ZFlag\r
4389         beq opcode_1_8\r
4390         add z80pc,z80pc,#1\r
4391         fetch 7\r
4392 ;@LD HL,NN\r
4393 opcode_2_1:\r
4394         ldrb r0,[z80pc],#1\r
4395         ldrb r1,[z80pc],#1\r
4396         orr r0,r0,r1, lsl #8\r
4397         mov z80hl,r0, lsl #16\r
4398         fetch 10\r
4399 ;@LD (NN),HL\r
4400 opcode_ED_63:\r
4401         eatcycles 4\r
4402 ;@LD (NN),HL\r
4403 opcode_2_2:\r
4404         ldrb r0,[z80pc],#1\r
4405         ldrb r1,[z80pc],#1\r
4406         orr r1,r0,r1, lsl #8\r
4407         mov r0,z80hl, lsr #16\r
4408         writemem16\r
4409         fetch 16\r
4410 ;@INC HL\r
4411 opcode_2_3:\r
4412         add z80hl,z80hl,#1<<16\r
4413         fetch 6\r
4414 ;@INC H\r
4415 opcode_2_4:\r
4416         opINC8H z80hl\r
4417         fetch 4\r
4418 ;@DEC H\r
4419 opcode_2_5:\r
4420         opDEC8H z80hl\r
4421         fetch 4\r
4422 ;@LD H,N\r
4423 opcode_2_6:\r
4424         ldrb r1,[z80pc],#1\r
4425         and z80hl,z80hl,#0xFF<<16\r
4426         orr z80hl,z80hl,r1, lsl #24\r
4427         fetch 7\r
4428 DAATABLE_LOCAL: .word DAATable\r
4429 ;@DAA\r
4430 opcode_2_7:\r
4431         mov r1,z80a, lsr #24\r
4432         tst z80f,#1<<CFlag\r
4433         orrne r1,r1,#256\r
4434         tst z80f,#1<<HFlag\r
4435         orrne r1,r1,#512\r
4436         tst z80f,#1<<NFlag\r
4437         orrne r1,r1,#1024\r
4438         ldr r2,DAATABLE_LOCAL\r
4439         add r2,r2,r1, lsl #1\r
4440         ldrh r1,[r2]\r
4441         and z80f,r1,#0xFF\r
4442         and r2,r1,#0xFF<<8\r
4443         mov z80a,r2, lsl #16\r
4444         fetch 4\r
4445 ;@JR Z,$+2\r
4446 opcode_2_8:\r
4447         tst z80f,#1<<ZFlag\r
4448         bne opcode_1_8\r
4449         add z80pc,z80pc,#1\r
4450         fetch 7\r
4451 ;@ADD HL,HL\r
4452 opcode_2_9:\r
4453         opADD16_2 z80hl\r
4454         fetch 11\r
4455 ;@LD HL,(NN)\r
4456 opcode_ED_6B:\r
4457         eatcycles 4\r
4458 ;@LD HL,(NN)\r
4459 opcode_2_A:\r
4460         ldrb r0,[z80pc],#1\r
4461         ldrb r1,[z80pc],#1\r
4462         orr r0,r0,r1, lsl #8\r
4463         readmem16\r
4464         mov z80hl,r0, lsl #16\r
4465         fetch 16\r
4466 ;@DEC HL\r
4467 opcode_2_B:\r
4468         sub z80hl,z80hl,#1<<16\r
4469         fetch 6\r
4470 ;@INC L\r
4471 opcode_2_C:\r
4472         opINC8L z80hl\r
4473         fetch 4\r
4474 ;@DEC L\r
4475 opcode_2_D:\r
4476         opDEC8L z80hl\r
4477         fetch 4\r
4478 ;@LD L,N\r
4479 opcode_2_E:\r
4480         ldrb r0,[z80pc],#1\r
4481         and z80hl,z80hl,#0xFF<<24\r
4482         orr z80hl,z80hl,r0, lsl #16\r
4483         fetch 7\r
4484 ;@CPL\r
4485 opcode_2_F:\r
4486         eor z80a,z80a,#0xFF<<24\r
4487         orr z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4488         fetch 4\r
4489 ;@JR NC,$+2\r
4490 opcode_3_0:\r
4491         tst z80f,#1<<CFlag\r
4492         beq opcode_1_8\r
4493         add z80pc,z80pc,#1\r
4494         fetch 7\r
4495 ;@LD SP,NN\r
4496 opcode_3_1:\r
4497         ldrb r0,[z80pc],#1\r
4498         ldrb r1,[z80pc],#1\r
4499 \r
4500 .if FAST_Z80SP\r
4501         orr r0,r0,r1, lsl #8\r
4502         rebasesp\r
4503         mov z80sp,r0\r
4504 .else\r
4505         orr z80sp,r0,r1, lsl #8\r
4506 .endif\r
4507         fetch 10\r
4508 ;@LD (NN),A\r
4509 opcode_3_2:\r
4510         ldrb r0,[z80pc],#1\r
4511         ldrb r1,[z80pc],#1\r
4512         orr r1,r0,r1, lsl #8\r
4513         mov r0,z80a, lsr #24\r
4514         writemem8\r
4515         fetch 13\r
4516 ;@INC SP\r
4517 opcode_3_3:\r
4518         add z80sp,z80sp,#1\r
4519         fetch 6\r
4520 ;@INC (HL)\r
4521 opcode_3_4:\r
4522         readmem8HL\r
4523         opINC8b\r
4524         writemem8HL\r
4525         fetch 11\r
4526 ;@DEC (HL)\r
4527 opcode_3_5:\r
4528         readmem8HL\r
4529         opDEC8b\r
4530         writemem8HL\r
4531         fetch 11\r
4532 ;@LD (HL),N\r
4533 opcode_3_6:\r
4534         ldrb r0,[z80pc],#1\r
4535         writemem8HL\r
4536         fetch 10\r
4537 ;@SCF\r
4538 opcode_3_7:\r
4539         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4540         orr z80f,z80f,#1<<CFlag\r
4541         fetch 4\r
4542 ;@JR C,$+2\r
4543 opcode_3_8:\r
4544         tst z80f,#1<<CFlag\r
4545         bne opcode_1_8\r
4546         add z80pc,z80pc,#1\r
4547         fetch 7\r
4548 ;@ADD HL,SP\r
4549 opcode_3_9:\r
4550 .if FAST_Z80SP\r
4551         ldr r0,[cpucontext,#z80sp_base]\r
4552         sub r0,z80sp,r0\r
4553         opADD16s z80hl r0 16\r
4554 .else\r
4555         opADD16s z80hl z80sp 16\r
4556 .endif\r
4557         fetch 11\r
4558 ;@LD A,(NN)\r
4559 opcode_3_A:\r
4560         ldrb r0,[z80pc],#1\r
4561         ldrb r1,[z80pc],#1\r
4562         orr r0,r0,r1, lsl #8\r
4563         readmem8\r
4564         mov z80a,r0, lsl #24\r
4565         fetch 13\r
4566 ;@DEC SP\r
4567 opcode_3_B:\r
4568         sub z80sp,z80sp,#1\r
4569         fetch 6\r
4570 ;@INC A\r
4571 opcode_3_C:\r
4572         opINC8 z80a\r
4573         fetch 4\r
4574 ;@DEC A\r
4575 opcode_3_D:\r
4576         opDEC8 z80a\r
4577         fetch 4\r
4578 ;@LD A,N\r
4579 opcode_3_E:\r
4580         ldrb r0,[z80pc],#1\r
4581         mov z80a,r0, lsl #24\r
4582         fetch 7\r
4583 ;@CCF\r
4584 opcode_3_F:\r
4585         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4586         tst z80f,#1<<CFlag\r
4587         orrne z80f,z80f,#1<<HFlag\r
4588         eor z80f,z80f,#1<<CFlag\r
4589         fetch 4\r
4590 \r
4591 ;@LD B,C\r
4592 opcode_4_1:\r
4593         and z80bc,z80bc,#0xFF<<16\r
4594         orr z80bc,z80bc,z80bc, lsl #8\r
4595         fetch 4\r
4596 ;@LD B,D\r
4597 opcode_4_2:\r
4598         and z80bc,z80bc,#0xFF<<16\r
4599         and r1,z80de,#0xFF<<24\r
4600         orr z80bc,z80bc,r1\r
4601         fetch 4\r
4602 ;@LD B,E\r
4603 opcode_4_3:\r
4604         and z80bc,z80bc,#0xFF<<16\r
4605         and r1,z80de,#0xFF<<16\r
4606         orr z80bc,z80bc,r1, lsl #8\r
4607         fetch 4\r
4608 ;@LD B,H\r
4609 opcode_4_4:\r
4610         and z80bc,z80bc,#0xFF<<16\r
4611         and r1,z80hl,#0xFF<<24\r
4612         orr z80bc,z80bc,r1\r
4613         fetch 4\r
4614 ;@LD B,L\r
4615 opcode_4_5:\r
4616         and z80bc,z80bc,#0xFF<<16\r
4617         and r1,z80hl,#0xFF<<16\r
4618         orr z80bc,z80bc,r1, lsl #8\r
4619         fetch 4\r
4620 ;@LD B,(HL)\r
4621 opcode_4_6:\r
4622         readmem8HL\r
4623         and z80bc,z80bc,#0xFF<<16\r
4624         orr z80bc,z80bc,r0, lsl #24\r
4625         fetch 7\r
4626 ;@LD B,A\r
4627 opcode_4_7:\r
4628         and z80bc,z80bc,#0xFF<<16\r
4629         orr z80bc,z80bc,z80a\r
4630         fetch 4\r
4631 ;@LD C,B\r
4632 opcode_4_8:\r
4633         and z80bc,z80bc,#0xFF<<24\r
4634         orr z80bc,z80bc,z80bc, lsr #8\r
4635         fetch 4\r
4636 ;@LD C,D\r
4637 opcode_4_A:\r
4638         and z80bc,z80bc,#0xFF<<24\r
4639         and r1,z80de,#0xFF<<24\r
4640         orr z80bc,z80bc,r1, lsr #8\r
4641         fetch 4\r
4642 ;@LD C,E\r
4643 opcode_4_B:\r
4644         and z80bc,z80bc,#0xFF<<24\r
4645         and r1,z80de,#0xFF<<16\r
4646         orr z80bc,z80bc,r1 \r
4647         fetch 4\r
4648 ;@LD C,H\r
4649 opcode_4_C:\r
4650         and z80bc,z80bc,#0xFF<<24\r
4651         and r1,z80hl,#0xFF<<24\r
4652         orr z80bc,z80bc,r1, lsr #8\r
4653         fetch 4\r
4654 ;@LD C,L\r
4655 opcode_4_D:\r
4656         and z80bc,z80bc,#0xFF<<24\r
4657         and r1,z80hl,#0xFF<<16\r
4658         orr z80bc,z80bc,r1 \r
4659         fetch 4\r
4660 ;@LD C,(HL)\r
4661 opcode_4_E:\r
4662         readmem8HL\r
4663         and z80bc,z80bc,#0xFF<<24\r
4664         orr z80bc,z80bc,r0, lsl #16\r
4665         fetch 7\r
4666 ;@LD C,A\r
4667 opcode_4_F:\r
4668         and z80bc,z80bc,#0xFF<<24\r
4669         orr z80bc,z80bc,z80a, lsr #8\r
4670         fetch 4\r
4671 ;@LD D,B\r
4672 opcode_5_0:\r
4673         and z80de,z80de,#0xFF<<16\r
4674         and r1,z80bc,#0xFF<<24\r
4675         orr z80de,z80de,r1\r
4676         fetch 4\r
4677 ;@LD D,C\r
4678 opcode_5_1:\r
4679         and z80de,z80de,#0xFF<<16\r
4680         orr z80de,z80de,z80bc, lsl #8\r
4681         fetch 4\r
4682 ;@LD D,E\r
4683 opcode_5_3:\r
4684         and z80de,z80de,#0xFF<<16\r
4685         orr z80de,z80de,z80de, lsl #8\r
4686         fetch 4\r
4687 ;@LD D,H\r
4688 opcode_5_4:\r
4689         and z80de,z80de,#0xFF<<16\r
4690         and r1,z80hl,#0xFF<<24\r
4691         orr z80de,z80de,r1\r
4692         fetch 4\r
4693 ;@LD D,L\r
4694 opcode_5_5:\r
4695         and z80de,z80de,#0xFF<<16\r
4696         orr z80de,z80de,z80hl, lsl #8\r
4697         fetch 4\r
4698 ;@LD D,(HL)\r
4699 opcode_5_6:\r
4700         readmem8HL\r
4701         and z80de,z80de,#0xFF<<16\r
4702         orr z80de,z80de,r0, lsl #24\r
4703         fetch 7\r
4704 ;@LD D,A\r
4705 opcode_5_7:\r
4706         and z80de,z80de,#0xFF<<16\r
4707         orr z80de,z80de,z80a\r
4708         fetch 4\r
4709 ;@LD E,B\r
4710 opcode_5_8:\r
4711         and z80de,z80de,#0xFF<<24\r
4712         and r1,z80bc,#0xFF<<24\r
4713         orr z80de,z80de,r1, lsr #8\r
4714         fetch 4\r
4715 ;@LD E,C\r
4716 opcode_5_9:\r
4717         and z80de,z80de,#0xFF<<24\r
4718         and r1,z80bc,#0xFF<<16\r
4719         orr z80de,z80de,r1 \r
4720         fetch 4\r
4721 ;@LD E,D\r
4722 opcode_5_A:\r
4723         and z80de,z80de,#0xFF<<24\r
4724         orr z80de,z80de,z80de, lsr #8\r
4725         fetch 4\r
4726 ;@LD E,H\r
4727 opcode_5_C:\r
4728         and z80de,z80de,#0xFF<<24\r
4729         and r1,z80hl,#0xFF<<24\r
4730         orr z80de,z80de,r1, lsr #8\r
4731         fetch 4\r
4732 ;@LD E,L\r
4733 opcode_5_D:\r
4734         and z80de,z80de,#0xFF<<24\r
4735         and r1,z80hl,#0xFF<<16\r
4736         orr z80de,z80de,r1 \r
4737         fetch 4\r
4738 ;@LD E,(HL)\r
4739 opcode_5_E:\r
4740         readmem8HL\r
4741         and z80de,z80de,#0xFF<<24\r
4742         orr z80de,z80de,r0, lsl #16\r
4743         fetch 7\r
4744 ;@LD E,A\r
4745 opcode_5_F:\r
4746         and z80de,z80de,#0xFF<<24\r
4747         orr z80de,z80de,z80a, lsr #8\r
4748         fetch 4\r
4749 \r
4750 ;@LD H,B\r
4751 opcode_6_0:\r
4752         and z80hl,z80hl,#0xFF<<16\r
4753         and r1,z80bc,#0xFF<<24\r
4754         orr z80hl,z80hl,r1\r
4755         fetch 4\r
4756 ;@LD H,C\r
4757 opcode_6_1:\r
4758         and z80hl,z80hl,#0xFF<<16\r
4759         orr z80hl,z80hl,z80bc, lsl #8\r
4760         fetch 4\r
4761 ;@LD H,D\r
4762 opcode_6_2:\r
4763         and z80hl,z80hl,#0xFF<<16\r
4764         and r1,z80de,#0xFF<<24\r
4765         orr z80hl,z80hl,r1\r
4766         fetch 4\r
4767 ;@LD H,E\r
4768 opcode_6_3:\r
4769         and z80hl,z80hl,#0xFF<<16\r
4770         orr z80hl,z80hl,z80de, lsl #8\r
4771         fetch 4\r
4772 ;@LD H,L\r
4773 opcode_6_5:\r
4774         and z80hl,z80hl,#0xFF<<16\r
4775         orr z80hl,z80hl,z80hl, lsl #8\r
4776         fetch 4\r
4777 ;@LD H,(HL)\r
4778 opcode_6_6:\r
4779         readmem8HL\r
4780         and z80hl,z80hl,#0xFF<<16\r
4781         orr z80hl,z80hl,r0, lsl #24\r
4782         fetch 7\r
4783 ;@LD H,A\r
4784 opcode_6_7:\r
4785         and z80hl,z80hl,#0xFF<<16\r
4786         orr z80hl,z80hl,z80a\r
4787         fetch 4\r
4788 \r
4789 ;@LD L,B\r
4790 opcode_6_8:\r
4791         and z80hl,z80hl,#0xFF<<24\r
4792         and r1,z80bc,#0xFF<<24\r
4793         orr z80hl,z80hl,r1, lsr #8\r
4794         fetch 4\r
4795 ;@LD L,C\r
4796 opcode_6_9:\r
4797         and z80hl,z80hl,#0xFF<<24\r
4798         and r1,z80bc,#0xFF<<16\r
4799         orr z80hl,z80hl,r1\r
4800         fetch 4\r
4801 ;@LD L,D\r
4802 opcode_6_A:\r
4803         and z80hl,z80hl,#0xFF<<24\r
4804         and r1,z80de,#0xFF<<24\r
4805         orr z80hl,z80hl,r1, lsr #8\r
4806         fetch 4\r
4807 ;@LD L,E\r
4808 opcode_6_B:\r
4809         and z80hl,z80hl,#0xFF<<24\r
4810         and r1,z80de,#0xFF<<16\r
4811         orr z80hl,z80hl,r1\r
4812         fetch 4\r
4813 ;@LD L,H\r
4814 opcode_6_C:\r
4815         and z80hl,z80hl,#0xFF<<24\r
4816         orr z80hl,z80hl,z80hl, lsr #8\r
4817         fetch 4\r
4818 ;@LD L,(HL)\r
4819 opcode_6_E:\r
4820         readmem8HL\r
4821         and z80hl,z80hl,#0xFF<<24\r
4822         orr z80hl,z80hl,r0, lsl #16\r
4823         fetch 7\r
4824 ;@LD L,A\r
4825 opcode_6_F:\r
4826         and z80hl,z80hl,#0xFF<<24\r
4827         orr z80hl,z80hl,z80a, lsr #8\r
4828         fetch 4\r
4829 \r
4830 ;@LD (HL),B\r
4831 opcode_7_0:\r
4832         mov r0,z80bc, lsr #24\r
4833         writemem8HL\r
4834         fetch 7\r
4835 ;@LD (HL),C\r
4836 opcode_7_1:\r
4837         mov r0,z80bc, lsr #16\r
4838         and r0,r0,#0xFF\r
4839         writemem8HL\r
4840         fetch 7\r
4841 ;@LD (HL),D\r
4842 opcode_7_2:\r
4843         mov r0,z80de, lsr #24\r
4844         writemem8HL\r
4845         fetch 7\r
4846 ;@LD (HL),E\r
4847 opcode_7_3:\r
4848         mov r0,z80de, lsr #16\r
4849         and r0,r0,#0xFF\r
4850         writemem8HL\r
4851         fetch 7\r
4852 ;@LD (HL),H\r
4853 opcode_7_4:\r
4854         mov r0,z80hl, lsr #24\r
4855         writemem8HL\r
4856         fetch 7\r
4857 ;@LD (HL),L\r
4858 opcode_7_5:\r
4859         mov r1,z80hl, lsr #16\r
4860         and r0,r1,#0xFF\r
4861         writemem8\r
4862         fetch 7\r
4863 ;@HALT\r
4864 opcode_7_6:\r
4865         sub z80pc,z80pc,#1\r
4866         ldrb r0,[cpucontext,#z80if]\r
4867         orr r0,r0,#Z80_HALT\r
4868         strb r0,[cpucontext,#z80if]\r
4869         mov z80_icount,#0\r
4870         b z80_execute_end\r
4871 ;@LD (HL),A\r
4872 opcode_7_7:\r
4873         mov r0,z80a, lsr #24\r
4874         writemem8HL\r
4875         fetch 7\r
4876 \r
4877 ;@LD A,B\r
4878 opcode_7_8:\r
4879         and z80a,z80bc,#0xFF<<24\r
4880         fetch 4\r
4881 ;@LD A,C\r
4882 opcode_7_9:\r
4883         mov z80a,z80bc, lsl #8\r
4884         fetch 4\r
4885 ;@LD A,D\r
4886 opcode_7_A:\r
4887         and z80a,z80de,#0xFF<<24\r
4888         fetch 4\r
4889 ;@LD A,E\r
4890 opcode_7_B:\r
4891         mov z80a,z80de, lsl #8\r
4892         fetch 4\r
4893 ;@LD A,H\r
4894 opcode_7_C:\r
4895         and z80a,z80hl,#0xFF<<24\r
4896         fetch 4\r
4897 ;@LD A,L\r
4898 opcode_7_D:\r
4899         mov z80a,z80hl, lsl #8\r
4900         fetch 4\r
4901 ;@LD A,(HL)\r
4902 opcode_7_E:\r
4903         readmem8HL\r
4904         mov z80a,r0, lsl #24\r
4905         fetch 7\r
4906 \r
4907 ;@ADD A,B\r
4908 opcode_8_0:\r
4909         opADDH z80bc\r
4910 ;@ADD A,C\r
4911 opcode_8_1:\r
4912         opADDL z80bc\r
4913 ;@ADD A,D\r
4914 opcode_8_2:\r
4915         opADDH z80de\r
4916 ;@ADD A,E\r
4917 opcode_8_3:\r
4918         opADDL z80de\r
4919 ;@ADD A,H\r
4920 opcode_8_4:\r
4921         opADDH z80hl\r
4922 ;@ADD A,L\r
4923 opcode_8_5:\r
4924         opADDL z80hl\r
4925 ;@ADD A,(HL)\r
4926 opcode_8_6:\r
4927         readmem8HL\r
4928         opADDb\r
4929         fetch 7\r
4930 ;@ADD A,A\r
4931 opcode_8_7:\r
4932         opADDA\r
4933 \r
4934 ;@ADC A,B\r
4935 opcode_8_8:\r
4936         opADCH z80bc\r
4937 ;@ADC A,C\r
4938 opcode_8_9:\r
4939         opADCL z80bc\r
4940 ;@ADC A,D\r
4941 opcode_8_A:\r
4942         opADCH z80de\r
4943 ;@ADC A,E\r
4944 opcode_8_B:\r
4945         opADCL z80de\r
4946 ;@ADC A,H\r
4947 opcode_8_C:\r
4948         opADCH z80hl\r
4949 ;@ADC A,L\r
4950 opcode_8_D:\r
4951         opADCL z80hl\r
4952 ;@ADC A,(HL)\r
4953 opcode_8_E:\r
4954         readmem8HL\r
4955         opADCb\r
4956         fetch 7\r
4957 ;@ADC A,A\r
4958 opcode_8_F:\r
4959         opADCA\r
4960 \r
4961 ;@SUB B\r
4962 opcode_9_0:\r
4963         opSUBH z80bc\r
4964 ;@SUB C\r
4965 opcode_9_1:\r
4966         opSUBL z80bc\r
4967 ;@SUB D\r
4968 opcode_9_2:\r
4969         opSUBH z80de\r
4970 ;@SUB E\r
4971 opcode_9_3:\r
4972         opSUBL z80de\r
4973 ;@SUB H\r
4974 opcode_9_4:\r
4975         opSUBH z80hl\r
4976 ;@SUB L\r
4977 opcode_9_5:\r
4978         opSUBL z80hl\r
4979 ;@SUB (HL)\r
4980 opcode_9_6:\r
4981         readmem8HL\r
4982         opSUBb\r
4983         fetch 7\r
4984 ;@SUB A\r
4985 opcode_9_7:\r
4986         opSUBA\r
4987 \r
4988 ;@SBC B \r
4989 opcode_9_8:\r
4990         opSBCH z80bc\r
4991 ;@SBC C\r
4992 opcode_9_9:\r
4993         opSBCL z80bc\r
4994 ;@SBC D\r
4995 opcode_9_A:\r
4996         opSBCH z80de\r
4997 ;@SBC E\r
4998 opcode_9_B:\r
4999         opSBCL z80de\r
5000 ;@SBC H\r
5001 opcode_9_C:\r
5002         opSBCH z80hl\r
5003 ;@SBC L\r
5004 opcode_9_D:\r
5005         opSBCL z80hl\r
5006 ;@SBC (HL)\r
5007 opcode_9_E:\r
5008         readmem8HL\r
5009         opSBCb\r
5010         fetch 7\r
5011 ;@SBC A\r
5012 opcode_9_F:\r
5013         opSBCA\r
5014 \r
5015 ;@AND B\r
5016 opcode_A_0:\r
5017         opANDH z80bc\r
5018 ;@AND C\r
5019 opcode_A_1:\r
5020         opANDL z80bc\r
5021 ;@AND D\r
5022 opcode_A_2:\r
5023         opANDH z80de\r
5024 ;@AND E\r
5025 opcode_A_3:\r
5026         opANDL z80de\r
5027 ;@AND H\r
5028 opcode_A_4:\r
5029         opANDH z80hl\r
5030 ;@AND L\r
5031 opcode_A_5:\r
5032         opANDL z80hl\r
5033 ;@AND (HL)\r
5034 opcode_A_6:\r
5035         readmem8HL\r
5036         opANDb\r
5037         fetch 7\r
5038 ;@AND A\r
5039 opcode_A_7:\r
5040         opANDA\r
5041 \r
5042 ;@XOR B\r
5043 opcode_A_8:\r
5044         opXORH z80bc\r
5045 ;@XOR C\r
5046 opcode_A_9:\r
5047         opXORL z80bc\r
5048 ;@XOR D\r
5049 opcode_A_A:\r
5050         opXORH z80de\r
5051 ;@XOR E\r
5052 opcode_A_B:\r
5053         opXORL z80de\r
5054 ;@XOR H\r
5055 opcode_A_C:\r
5056         opXORH z80hl\r
5057 ;@XOR L\r
5058 opcode_A_D:\r
5059         opXORL z80hl\r
5060 ;@XOR (HL)\r
5061 opcode_A_E:\r
5062         readmem8HL\r
5063         opXORb\r
5064         fetch 7\r
5065 ;@XOR A\r
5066 opcode_A_F:\r
5067         opXORA\r
5068 \r
5069 ;@OR B\r
5070 opcode_B_0:\r
5071         opORH z80bc\r
5072 ;@OR C\r
5073 opcode_B_1:\r
5074         opORL z80bc\r
5075 ;@OR D\r
5076 opcode_B_2:\r
5077         opORH z80de\r
5078 ;@OR E\r
5079 opcode_B_3:\r
5080         opORL z80de\r
5081 ;@OR H\r
5082 opcode_B_4:\r
5083         opORH z80hl\r
5084 ;@OR L\r
5085 opcode_B_5:\r
5086         opORL z80hl\r
5087 ;@OR (HL)\r
5088 opcode_B_6:\r
5089         readmem8HL\r
5090         opORb\r
5091         fetch 7\r
5092 ;@OR A\r
5093 opcode_B_7:\r
5094         opORA\r
5095 \r
5096 ;@CP B\r
5097 opcode_B_8:\r
5098         opCPH z80bc\r
5099 ;@CP C\r
5100 opcode_B_9:\r
5101         opCPL z80bc\r
5102 ;@CP D\r
5103 opcode_B_A:\r
5104         opCPH z80de\r
5105 ;@CP E\r
5106 opcode_B_B:\r
5107         opCPL z80de\r
5108 ;@CP H\r
5109 opcode_B_C:\r
5110         opCPH z80hl\r
5111 ;@CP L\r
5112 opcode_B_D:\r
5113         opCPL z80hl\r
5114 ;@CP (HL)\r
5115 opcode_B_E:\r
5116         readmem8HL\r
5117         opCPb\r
5118         fetch 7\r
5119 ;@CP A\r
5120 opcode_B_F:\r
5121         opCPA\r
5122 \r
5123 ;@RET NZ\r
5124 opcode_C_0:\r
5125         tst z80f,#1<<ZFlag\r
5126         beq opcode_C_9_cond             ;@unconditional RET\r
5127         fetch 5\r
5128 \r
5129 ;@POP BC\r
5130 opcode_C_1:\r
5131         opPOPreg z80bc\r
5132 \r
5133 ;@JP NZ,$+3\r
5134 opcode_C_2:\r
5135         tst z80f,#1<<ZFlag\r
5136         beq opcode_C_3          ;@unconditional JP\r
5137         add z80pc,z80pc,#2\r
5138         fetch 10\r
5139 ;@JP $+3\r
5140 opcode_C_3:\r
5141         ldrb r0,[z80pc],#1\r
5142         ldrb r1,[z80pc],#1\r
5143         orr r0,r0,r1, lsl #8\r
5144         rebasepc\r
5145         fetch 10\r
5146 ;@CALL NZ,NN\r
5147 opcode_C_4:\r
5148         tst z80f,#1<<ZFlag\r
5149         beq opcode_C_D          ;@unconditional CALL\r
5150         add z80pc,z80pc,#2\r
5151         fetch 10\r
5152 \r
5153 ;@PUSH BC\r
5154 opcode_C_5:\r
5155         opPUSHreg z80bc\r
5156         fetch 11\r
5157 ;@ADD A,N\r
5158 opcode_C_6:\r
5159         ldrb r0,[z80pc],#1\r
5160         opADDb\r
5161         fetch 7\r
5162 ;@RST 0\r
5163 opcode_C_7:\r
5164         opRST 0x00\r
5165 \r
5166 ;@RET Z\r
5167 opcode_C_8:\r
5168         tst z80f,#1<<ZFlag\r
5169         bne opcode_C_9_cond             ;@unconditional RET\r
5170         fetch 5\r
5171 \r
5172 opcode_C_9_cond:\r
5173         eatcycles 1\r
5174 ;@RET\r
5175 opcode_C_9:\r
5176     opPOP\r
5177         rebasepc\r
5178         fetch 10\r
5179 ;@JP Z,$+3\r
5180 opcode_C_A:\r
5181         tst z80f,#1<<ZFlag\r
5182         bne opcode_C_3  ;@unconditional JP\r
5183         add z80pc,z80pc,#2\r
5184         fetch 10\r
5185 \r
5186 ;@This reads this opcodes_CB lookup table to find the location of\r
5187 ;@the CB sub for the intruction and then branches to that location\r
5188 opcode_C_B:\r
5189         ldrb r0,[z80pc],#1\r
5190         ldr pc,[pc,r0, lsl #2]\r
5191 opcodes_CB:     .word 0x00000000\r
5192                         .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
5193                         .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
5194                         .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
5195                         .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
5196                         .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
5197                         .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
5198                         .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
5199                         .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
5200                         .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
5201                         .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
5202                         .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
5203                         .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
5204                         .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
5205                         .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
5206                         .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
5207                         .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
5208                         .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
5209                         .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
5210                         .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
5211                         .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
5212                         .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
5213                         .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
5214                         .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
5215                         .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
5216                         .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
5217                         .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
5218                         .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
5219                         .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
5220                         .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
5221                         .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
5222                         .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
5223                         .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
5224 \r
5225 ;@CALL Z,NN\r
5226 opcode_C_C:\r
5227         tst z80f,#1<<ZFlag\r
5228         bne opcode_C_D          ;@unconditional CALL\r
5229         add z80pc,z80pc,#2\r
5230         fetch 10\r
5231 ;@CALL NN\r
5232 opcode_C_D:\r
5233         ldrb r0,[z80pc],#1\r
5234         ldrb r1,[z80pc],#1\r
5235         ldr r2,[cpucontext,#z80pc_base]\r
5236         sub r2,z80pc,r2\r
5237         orr z80pc,r0,r1, lsl #8\r
5238     opPUSHareg r2\r
5239     mov r0,z80pc\r
5240         rebasepc\r
5241         fetch 17\r
5242 ;@ADC A,N\r
5243 opcode_C_E:\r
5244         ldrb r0,[z80pc],#1\r
5245         opADCb\r
5246         fetch 7\r
5247 ;@RST 8H\r
5248 opcode_C_F:\r
5249         opRST 0x08\r
5250 \r
5251 ;@RET NC\r
5252 opcode_D_0:\r
5253         tst z80f,#1<<CFlag\r
5254         beq opcode_C_9_cond             ;@unconditional RET\r
5255         fetch 5\r
5256 ;@POP DE\r
5257 opcode_D_1:\r
5258         opPOPreg z80de\r
5259 \r
5260 ;@JP NC, $+3\r
5261 opcode_D_2 :\r
5262         tst z80f,#1<<CFlag\r
5263         beq opcode_C_3          ;@unconditional JP\r
5264         add z80pc,z80pc,#2\r
5265         fetch 10\r
5266 ;@OUT (N),A\r
5267 opcode_D_3:\r
5268         ldrb r0,[z80pc],#1\r
5269         orr r0,r0,z80a,lsr#16\r
5270         mov r1,z80a, lsr #24\r
5271         opOUT\r
5272         fetch 11\r
5273 ;@CALL NC,NN\r
5274 opcode_D_4:\r
5275         tst z80f,#1<<CFlag\r
5276         beq opcode_C_D          ;@unconditional CALL\r
5277         add z80pc,z80pc,#2\r
5278         fetch 10\r
5279 ;@PUSH DE\r
5280 opcode_D_5:\r
5281         opPUSHreg z80de\r
5282         fetch 11\r
5283 ;@SUB N\r
5284 opcode_D_6:\r
5285         ldrb r0,[z80pc],#1\r
5286         opSUBb\r
5287         fetch 7\r
5288 \r
5289 ;@RST 10H\r
5290 opcode_D_7:\r
5291         opRST 0x10\r
5292 \r
5293 ;@RET C\r
5294 opcode_D_8:\r
5295         tst z80f,#1<<CFlag\r
5296         bne opcode_C_9_cond             ;@unconditional RET\r
5297         fetch 5\r
5298 ;@EXX\r
5299 opcode_D_9:\r
5300         add r1,cpucontext,#z80bc2\r
5301         swp z80bc,z80bc,[r1]\r
5302         add r1,cpucontext,#z80de2\r
5303         swp z80de,z80de,[r1]\r
5304         add r1,cpucontext,#z80hl2\r
5305         swp z80hl,z80hl,[r1]\r
5306         fetch 4\r
5307 ;@JP C,$+3\r
5308 opcode_D_A:\r
5309         tst z80f,#1<<CFlag\r
5310         bne opcode_C_3          ;@unconditional JP\r
5311         add z80pc,z80pc,#2\r
5312         fetch 10\r
5313 ;@IN A,(N)\r
5314 opcode_D_B:\r
5315         ldrb r0,[z80pc],#1\r
5316         orr r0,r0,z80a,lsr#16\r
5317         opIN\r
5318         mov z80a,r0, lsl #24    ;@ r0 = data read\r
5319         fetch 11\r
5320 ;@CALL C,NN\r
5321 opcode_D_C:\r
5322         tst z80f,#1<<CFlag\r
5323         bne opcode_C_D          ;@unconditional CALL\r
5324         add z80pc,z80pc,#2\r
5325         fetch 10\r
5326 \r
5327 ;@opcodes_DD\r
5328 opcode_D_D:\r
5329         add z80xx,cpucontext,#z80ix\r
5330         b opcode_D_D_F_D\r
5331 opcode_F_D:\r
5332         add z80xx,cpucontext,#z80iy\r
5333 opcode_D_D_F_D:\r
5334         ldrb r0,[z80pc],#1\r
5335         ldr pc,[pc,r0, lsl #2]\r
5336 opcodes_DD:     .word 0x00000000\r
5337                         .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
5338                         .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
5339                         .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
5340                         .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
5341                         .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
5342                         .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
5343                         .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
5344                         .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
5345                         .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
5346                         .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
5347                         .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
5348                         .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
5349                         .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
5350                         .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
5351                         .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
5352                         .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
5353                         .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
5354                         .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
5355                         .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
5356                         .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
5357                         .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
5358                         .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
5359                         .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
5360                         .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
5361                         .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
5362                         .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
5363                         .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
5364                         .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
5365                         .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
5366                         .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
5367                         .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
5368                         .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
5369 \r
5370 ;@SBC A,N\r
5371 opcode_D_E:\r
5372         ldrb r0,[z80pc],#1\r
5373         opSBCb\r
5374         fetch 7\r
5375 ;@RST 18H\r
5376 opcode_D_F:\r
5377         opRST 0x18\r
5378 \r
5379 ;@RET PO\r
5380 opcode_E_0:\r
5381         tst z80f,#1<<VFlag\r
5382         beq opcode_C_9_cond             ;@unconditional RET\r
5383         fetch 5\r
5384 ;@POP HL\r
5385 opcode_E_1:\r
5386         opPOPreg z80hl\r
5387 \r
5388 ;@JP PO,$+3\r
5389 opcode_E_2:\r
5390         tst z80f,#1<<VFlag\r
5391         beq opcode_C_3          ;@unconditional JP\r
5392         add z80pc,z80pc,#2\r
5393         fetch 10\r
5394 ;@EX (SP),HL\r
5395 opcode_E_3:\r
5396 .if FAST_Z80SP\r
5397         ldrb r0,[z80sp]\r
5398         ldrb r1,[z80sp,#1]\r
5399         orr r0,r0,r1, lsl #8\r
5400         mov r1,z80hl, lsr #24\r
5401         strb r1,[z80sp,#1]\r
5402         mov r1,z80hl, lsr #16\r
5403         strb r1,[z80sp]\r
5404         mov z80hl,r0, lsl #16\r
5405 .else\r
5406         mov r0,z80sp\r
5407         readmem16\r
5408         mov r1,r0\r
5409         mov r0,z80hl,lsr#16\r
5410         mov z80hl,r1,lsl#16\r
5411         mov r1,z80sp\r
5412         writemem16\r
5413 .endif\r
5414         fetch 19\r
5415 ;@CALL PO,NN\r
5416 opcode_E_4:\r
5417         tst z80f,#1<<VFlag\r
5418         beq opcode_C_D          ;@unconditional CALL\r
5419         add z80pc,z80pc,#2\r
5420         fetch 10\r
5421 ;@PUSH HL\r
5422 opcode_E_5:\r
5423         opPUSHreg z80hl\r
5424         fetch 11\r
5425 ;@AND N\r
5426 opcode_E_6:\r
5427         ldrb r0,[z80pc],#1\r
5428         opANDb\r
5429         fetch 7\r
5430 ;@RST 20H\r
5431 opcode_E_7:\r
5432         opRST 0x20\r
5433 \r
5434 ;@RET PE\r
5435 opcode_E_8:\r
5436         tst z80f,#1<<VFlag\r
5437         bne opcode_C_9_cond             ;@unconditional RET\r
5438         fetch 5\r
5439 ;@JP (HL)\r
5440 opcode_E_9:\r
5441         mov r0,z80hl, lsr #16\r
5442         rebasepc\r
5443         fetch 4\r
5444 ;@JP PE,$+3\r
5445 opcode_E_A:\r
5446         tst z80f,#1<<VFlag\r
5447         bne opcode_C_3          ;@unconditional JP\r
5448         add z80pc,z80pc,#2\r
5449         fetch 10\r
5450 ;@EX DE,HL\r
5451 opcode_E_B:\r
5452         mov r1,z80de\r
5453         mov z80de,z80hl\r
5454         mov z80hl,r1\r
5455         fetch 4\r
5456 ;@CALL PE,NN\r
5457 opcode_E_C:\r
5458         tst z80f,#1<<VFlag\r
5459         bne opcode_C_D          ;@unconditional CALL\r
5460         add z80pc,z80pc,#2\r
5461         fetch 10\r
5462 \r
5463 ;@This should be caught at start\r
5464 opcode_E_D:\r
5465         ldrb r1,[z80pc],#1\r
5466         ldr pc,[pc,r1, lsl #2]\r
5467 opcodes_ED:     .word 0x00000000\r
5468                         .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
5469                         .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
5470                         .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
5471                         .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
5472                         .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
5473                         .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
5474                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5475                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5476                         .word opcode_ED_40,opcode_ED_41,opcode_ED_42,opcode_ED_43,opcode_ED_44,opcode_ED_45,opcode_ED_46,opcode_ED_47\r
5477                         .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
5478                         .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
5479                         .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
5480                         .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
5481                         .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
5482                         .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
5483                         .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
5484                         .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
5485                         .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
5486                         .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
5487                         .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
5488                         .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
5489                         .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
5490                         .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
5491                         .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
5492                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5493                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5494                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5495                         .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
5496                         .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
5497                         .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
5498                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5499                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5500 \r
5501 ;@XOR N\r
5502 opcode_E_E:\r
5503         ldrb r0,[z80pc],#1\r
5504         opXORb\r
5505         fetch 7\r
5506 ;@RST 28H\r
5507 opcode_E_F:\r
5508         opRST 0x28\r
5509 \r
5510 ;@RET P\r
5511 opcode_F_0:\r
5512         tst z80f,#1<<SFlag\r
5513         beq opcode_C_9_cond             ;@unconditional RET\r
5514         fetch 5\r
5515 ;@POP AF\r
5516 opcode_F_1:\r
5517 .if FAST_Z80SP\r
5518         ldrb z80f,[z80sp],#1\r
5519         sub r0,opcodes,#0x200\r
5520         ldrb z80f,[r0,z80f]\r
5521         ldrb z80a,[z80sp],#1\r
5522         mov z80a,z80a, lsl #24\r
5523 .else\r
5524         mov r0,z80sp\r
5525         readmem16\r
5526         add z80sp,z80sp,#2\r
5527         and z80a,r0,#0xFF00\r
5528         mov z80a,z80a,lsl#16\r
5529         and z80f,r0,#0xFF\r
5530         sub r0,opcodes,#0x200\r
5531         ldrb z80f,[r0,z80f]\r
5532 .endif\r
5533         fetch 10\r
5534 ;@JP P,$+3\r
5535 opcode_F_2:\r
5536         tst z80f,#1<<SFlag\r
5537         beq opcode_C_3          ;@unconditional JP\r
5538         add z80pc,z80pc,#2\r
5539         fetch 10\r
5540 ;@DI\r
5541 opcode_F_3:\r
5542         ldrb r1,[cpucontext,#z80if]\r
5543         bic r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5544         strb r1,[cpucontext,#z80if]\r
5545         fetch 4\r
5546 ;@CALL P,NN\r
5547 opcode_F_4:\r
5548         tst z80f,#1<<SFlag\r
5549         beq opcode_C_D          ;@unconditional CALL\r
5550         add z80pc,z80pc,#2\r
5551         fetch 10\r
5552 ;@PUSH AF\r
5553 opcode_F_5:\r
5554         sub r0,opcodes,#0x300\r
5555         ldrb r0,[r0,z80f]\r
5556         orr r2,r0,z80a,lsr#16\r
5557     opPUSHareg r2\r
5558         fetch 11\r
5559 ;@OR N\r
5560 opcode_F_6:\r
5561         ldrb r0,[z80pc],#1\r
5562         opORb\r
5563         fetch 7\r
5564 ;@RST 30H\r
5565 opcode_F_7:\r
5566         opRST 0x30\r
5567 \r
5568 ;@RET M\r
5569 opcode_F_8:\r
5570         tst z80f,#1<<SFlag\r
5571         bne opcode_C_9_cond             ;@unconditional RET\r
5572         fetch 5\r
5573 ;@LD SP,HL\r
5574 opcode_F_9:\r
5575 .if FAST_Z80SP\r
5576         mov r0,z80hl, lsr #16\r
5577         rebasesp\r
5578         mov z80sp,r0\r
5579 .else\r
5580         mov z80sp,z80hl, lsr #16\r
5581 .endif\r
5582         fetch 6\r
5583 ;@JP M,$+3\r
5584 opcode_F_A:\r
5585         tst z80f,#1<<SFlag\r
5586         bne opcode_C_3          ;@unconditional JP\r
5587         add z80pc,z80pc,#2\r
5588         fetch 10\r
5589 MAIN_opcodes_POINTER: .word MAIN_opcodes\r
5590 EI_DUMMY_opcodes_POINTER: .word EI_DUMMY_opcodes\r
5591 ;@EI\r
5592 opcode_F_B:\r
5593         ldrb r1,[cpucontext,#z80if]\r
5594         mov r2,opcodes\r
5595         orr r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5596         strb r1,[cpucontext,#z80if]\r
5597 \r
5598         ldrb r0,[z80pc],#1\r
5599         eatcycles 4\r
5600         ldr opcodes,EI_DUMMY_opcodes_POINTER\r
5601         ldr pc,[r2,r0, lsl #2]\r
5602 \r
5603 ei_return:\r
5604         ;@point that program returns from EI to check interupts\r
5605         ;@an interupt can not be taken directly after a EI opcode\r
5606         ;@ reset z80pc and opcode pointer\r
5607         ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
5608         sub z80pc,z80pc,#1\r
5609         ldr opcodes,MAIN_opcodes_POINTER\r
5610         ;@ check ints\r
5611         tst r0,#0xff\r
5612         movne r0,r0,lsr #8\r
5613         tstne r0,#1\r
5614         blne DoInterrupt\r
5615 \r
5616         ;@ continue\r
5617         fetch 0\r
5618 \r
5619 ;@CALL M,NN\r
5620 opcode_F_C:\r
5621         tst z80f,#1<<SFlag\r
5622         bne opcode_C_D          ;@unconditional CALL\r
5623         add z80pc,z80pc,#2\r
5624         fetch 10\r
5625 \r
5626 ;@SHOULD BE CAUGHT AT START - FD SECTION\r
5627 \r
5628 ;@CP N\r
5629 opcode_F_E:\r
5630         ldrb r0,[z80pc],#1\r
5631         opCPb\r
5632         fetch 7\r
5633 ;@RST 38H\r
5634 opcode_F_F:\r
5635         opRST 0x38\r
5636 \r
5637 \r
5638 ;@##################################\r
5639 ;@##################################\r
5640 ;@###  opcodes CB  #########################\r
5641 ;@##################################\r
5642 ;@##################################\r
5643 \r
5644 \r
5645 ;@RLC B\r
5646 opcode_CB_00:\r
5647         opRLCH z80bc\r
5648 ;@RLC C\r
5649 opcode_CB_01:\r
5650         opRLCL z80bc\r
5651 ;@RLC D\r
5652 opcode_CB_02:\r
5653         opRLCH z80de\r
5654 ;@RLC E\r
5655 opcode_CB_03:\r
5656         opRLCL z80de\r
5657 ;@RLC H\r
5658 opcode_CB_04:\r
5659         opRLCH z80hl\r
5660 ;@RLC L\r
5661 opcode_CB_05:\r
5662         opRLCL z80hl\r
5663 ;@RLC (HL)\r
5664 opcode_CB_06:\r
5665         readmem8HL\r
5666         opRLCb\r
5667         writemem8HL\r
5668         fetch 15\r
5669 ;@RLC A\r
5670 opcode_CB_07:\r
5671         opRLCA\r
5672 \r
5673 ;@RRC B\r
5674 opcode_CB_08:\r
5675         opRRCH z80bc\r
5676 ;@RRC C\r
5677 opcode_CB_09:\r
5678         opRRCL z80bc\r
5679 ;@RRC D\r
5680 opcode_CB_0A:\r
5681         opRRCH z80de\r
5682 ;@RRC E\r
5683 opcode_CB_0B:\r
5684         opRRCL z80de\r
5685 ;@RRC H\r
5686 opcode_CB_0C:\r
5687         opRRCH z80hl\r
5688 ;@RRC L\r
5689 opcode_CB_0D:\r
5690         opRRCL z80hl\r
5691 ;@RRC (HL)\r
5692 opcode_CB_0E :\r
5693         readmem8HL\r
5694         opRRCb\r
5695         writemem8HL\r
5696         fetch 15\r
5697 ;@RRC A\r
5698 opcode_CB_0F:\r
5699         opRRCA\r
5700 \r
5701 ;@RL B\r
5702 opcode_CB_10:\r
5703         opRLH z80bc\r
5704 ;@RL C\r
5705 opcode_CB_11:\r
5706         opRLL z80bc\r
5707 ;@RL D\r
5708 opcode_CB_12:\r
5709         opRLH z80de\r
5710 ;@RL E\r
5711 opcode_CB_13:\r
5712         opRLL z80de\r
5713 ;@RL H\r
5714 opcode_CB_14:\r
5715         opRLH z80hl\r
5716 ;@RL L\r
5717 opcode_CB_15:\r
5718         opRLL z80hl\r
5719 ;@RL (HL)\r
5720 opcode_CB_16:\r
5721         readmem8HL\r
5722         opRLb\r
5723         writemem8HL\r
5724         fetch 15\r
5725 ;@RL A\r
5726 opcode_CB_17:\r
5727         opRLA\r
5728 \r
5729 ;@RR B \r
5730 opcode_CB_18:\r
5731         opRRH z80bc\r
5732 ;@RR C\r
5733 opcode_CB_19:\r
5734         opRRL z80bc\r
5735 ;@RR D\r
5736 opcode_CB_1A:\r
5737         opRRH z80de\r
5738 ;@RR E\r
5739 opcode_CB_1B:\r
5740         opRRL z80de\r
5741 ;@RR H\r
5742 opcode_CB_1C:\r
5743         opRRH z80hl\r
5744 ;@RR L\r
5745 opcode_CB_1D:\r
5746         opRRL z80hl\r
5747 ;@RR (HL)\r
5748 opcode_CB_1E:\r
5749         readmem8HL\r
5750         opRRb\r
5751         writemem8HL\r
5752         fetch 15\r
5753 ;@RR A\r
5754 opcode_CB_1F:\r
5755         opRRA\r
5756 \r
5757 ;@SLA B\r
5758 opcode_CB_20:\r
5759         opSLAH z80bc\r
5760 ;@SLA C\r
5761 opcode_CB_21:\r
5762         opSLAL z80bc\r
5763 ;@SLA D\r
5764 opcode_CB_22:\r
5765         opSLAH z80de\r
5766 ;@SLA E\r
5767 opcode_CB_23:\r
5768         opSLAL z80de\r
5769 ;@SLA H\r
5770 opcode_CB_24:\r
5771         opSLAH z80hl\r
5772 ;@SLA L\r
5773 opcode_CB_25:\r
5774         opSLAL z80hl\r
5775 ;@SLA (HL)\r
5776 opcode_CB_26:\r
5777         readmem8HL\r
5778         opSLAb\r
5779         writemem8HL\r
5780         fetch 15\r
5781 ;@SLA A\r
5782 opcode_CB_27:\r
5783         opSLAA\r
5784 \r
5785 ;@SRA B\r
5786 opcode_CB_28:\r
5787         opSRAH z80bc\r
5788 ;@SRA C\r
5789 opcode_CB_29:\r
5790         opSRAL z80bc\r
5791 ;@SRA D\r
5792 opcode_CB_2A:\r
5793         opSRAH z80de\r
5794 ;@SRA E\r
5795 opcode_CB_2B:\r
5796         opSRAL z80de\r
5797 ;@SRA H\r
5798 opcode_CB_2C:\r
5799         opSRAH z80hl\r
5800 ;@SRA L\r
5801 opcode_CB_2D:\r
5802         opSRAL z80hl\r
5803 ;@SRA (HL)\r
5804 opcode_CB_2E:\r
5805         readmem8HL\r
5806         opSRAb\r
5807         writemem8HL\r
5808         fetch 15\r
5809 ;@SRA A\r
5810 opcode_CB_2F:\r
5811         opSRAA\r
5812 \r
5813 ;@SLL B\r
5814 opcode_CB_30:\r
5815         opSLLH z80bc\r
5816 ;@SLL C\r
5817 opcode_CB_31:\r
5818         opSLLL z80bc\r
5819 ;@SLL D\r
5820 opcode_CB_32:\r
5821         opSLLH z80de\r
5822 ;@SLL E\r
5823 opcode_CB_33:\r
5824         opSLLL z80de\r
5825 ;@SLL H\r
5826 opcode_CB_34:\r
5827         opSLLH z80hl\r
5828 ;@SLL L\r
5829 opcode_CB_35:\r
5830         opSLLL z80hl\r
5831 ;@SLL (HL)\r
5832 opcode_CB_36:\r
5833         readmem8HL\r
5834         opSLLb\r
5835         writemem8HL\r
5836         fetch 15\r
5837 ;@SLL A\r
5838 opcode_CB_37:\r
5839         opSLLA\r
5840 \r
5841 ;@SRL B\r
5842 opcode_CB_38:\r
5843         opSRLH z80bc\r
5844 ;@SRL C\r
5845 opcode_CB_39:\r
5846         opSRLL z80bc\r
5847 ;@SRL D\r
5848 opcode_CB_3A:\r
5849         opSRLH z80de\r
5850 ;@SRL E\r
5851 opcode_CB_3B:\r
5852         opSRLL z80de\r
5853 ;@SRL H\r
5854 opcode_CB_3C:\r
5855         opSRLH z80hl\r
5856 ;@SRL L\r
5857 opcode_CB_3D:\r
5858         opSRLL z80hl\r
5859 ;@SRL (HL)\r
5860 opcode_CB_3E:\r
5861         readmem8HL\r
5862         opSRLb\r
5863         writemem8HL\r
5864         fetch 15\r
5865 ;@SRL A\r
5866 opcode_CB_3F:\r
5867         opSRLA\r
5868 \r
5869 \r
5870 ;@BIT 0,B\r
5871 opcode_CB_40:\r
5872         opBITH z80bc 0\r
5873 ;@BIT 0,C\r
5874 opcode_CB_41:\r
5875         opBITL z80bc 0\r
5876 ;@BIT 0,D\r
5877 opcode_CB_42:\r
5878         opBITH z80de 0\r
5879 ;@BIT 0,E\r
5880 opcode_CB_43:\r
5881         opBITL z80de 0\r
5882 ;@BIT 0,H\r
5883 opcode_CB_44:\r
5884         opBITH z80hl 0\r
5885 ;@BIT 0,L\r
5886 opcode_CB_45:\r
5887         opBITL z80hl 0\r
5888 ;@BIT 0,(HL)\r
5889 opcode_CB_46:\r
5890         readmem8HL\r
5891         opBITb 0\r
5892         fetch 12\r
5893 ;@BIT 0,A\r
5894 opcode_CB_47:\r
5895         opBITH z80a 0\r
5896 \r
5897 ;@BIT 1,B\r
5898 opcode_CB_48:\r
5899         opBITH z80bc 1\r
5900 ;@BIT 1,C\r
5901 opcode_CB_49:\r
5902         opBITL z80bc 1\r
5903 ;@BIT 1,D\r
5904 opcode_CB_4A:\r
5905         opBITH z80de 1\r
5906 ;@BIT 1,E\r
5907 opcode_CB_4B:\r
5908         opBITL z80de 1\r
5909 ;@BIT 1,H\r
5910 opcode_CB_4C:\r
5911         opBITH z80hl 1\r
5912 ;@BIT 1,L\r
5913 opcode_CB_4D:\r
5914         opBITL z80hl 1\r
5915 ;@BIT 1,(HL)\r
5916 opcode_CB_4E:\r
5917         readmem8HL\r
5918         opBITb 1\r
5919         fetch 12\r
5920 ;@BIT 1,A\r
5921 opcode_CB_4F:\r
5922         opBITH z80a 1\r
5923 \r
5924 ;@BIT 2,B\r
5925 opcode_CB_50:\r
5926         opBITH z80bc 2\r
5927 ;@BIT 2,C\r
5928 opcode_CB_51:\r
5929         opBITL z80bc 2\r
5930 ;@BIT 2,D\r
5931 opcode_CB_52:\r
5932         opBITH z80de 2\r
5933 ;@BIT 2,E\r
5934 opcode_CB_53:\r
5935         opBITL z80de 2\r
5936 ;@BIT 2,H\r
5937 opcode_CB_54:\r
5938         opBITH z80hl 2\r
5939 ;@BIT 2,L\r
5940 opcode_CB_55:\r
5941         opBITL z80hl 2\r
5942 ;@BIT 2,(HL)\r
5943 opcode_CB_56:\r
5944         readmem8HL\r
5945         opBITb 2\r
5946         fetch 12\r
5947 ;@BIT 2,A\r
5948 opcode_CB_57:\r
5949         opBITH z80a 2\r
5950 \r
5951 ;@BIT 3,B\r
5952 opcode_CB_58:\r
5953         opBITH z80bc 3\r
5954 ;@BIT 3,C\r
5955 opcode_CB_59:\r
5956         opBITL z80bc 3\r
5957 ;@BIT 3,D\r
5958 opcode_CB_5A:\r
5959         opBITH z80de 3\r
5960 ;@BIT 3,E\r
5961 opcode_CB_5B:\r
5962         opBITL z80de 3\r
5963 ;@BIT 3,H\r
5964 opcode_CB_5C:\r
5965         opBITH z80hl 3\r
5966 ;@BIT 3,L\r
5967 opcode_CB_5D:\r
5968         opBITL z80hl 3\r
5969 ;@BIT 3,(HL)\r
5970 opcode_CB_5E:\r
5971         readmem8HL\r
5972         opBITb 3\r
5973         fetch 12\r
5974 ;@BIT 3,A\r
5975 opcode_CB_5F:\r
5976         opBITH z80a 3\r
5977 \r
5978 ;@BIT 4,B\r
5979 opcode_CB_60:\r
5980         opBITH z80bc 4\r
5981 ;@BIT 4,C\r
5982 opcode_CB_61:\r
5983         opBITL z80bc 4\r
5984 ;@BIT 4,D\r
5985 opcode_CB_62:\r
5986         opBITH z80de 4\r
5987 ;@BIT 4,E\r
5988 opcode_CB_63:\r
5989         opBITL z80de 4\r
5990 ;@BIT 4,H\r
5991 opcode_CB_64:\r
5992         opBITH z80hl 4\r
5993 ;@BIT 4,L\r
5994 opcode_CB_65:\r
5995         opBITL z80hl 4\r
5996 ;@BIT 4,(HL)\r
5997 opcode_CB_66:\r
5998         readmem8HL\r
5999         opBITb 4\r
6000         fetch 12\r
6001 ;@BIT 4,A\r
6002 opcode_CB_67:\r
6003         opBITH z80a 4\r
6004 \r
6005 ;@BIT 5,B\r
6006 opcode_CB_68:\r
6007         opBITH z80bc 5\r
6008 ;@BIT 5,C\r
6009 opcode_CB_69:\r
6010         opBITL z80bc 5\r
6011 ;@BIT 5,D\r
6012 opcode_CB_6A:\r
6013         opBITH z80de 5\r
6014 ;@BIT 5,E\r
6015 opcode_CB_6B:\r
6016         opBITL z80de 5\r
6017 ;@BIT 5,H\r
6018 opcode_CB_6C:\r
6019         opBITH z80hl 5\r
6020 ;@BIT 5,L\r
6021 opcode_CB_6D:\r
6022         opBITL z80hl 5\r
6023 ;@BIT 5,(HL)\r
6024 opcode_CB_6E:\r
6025         readmem8HL\r
6026         opBITb 5\r
6027         fetch 12\r
6028 ;@BIT 5,A\r
6029 opcode_CB_6F:\r
6030         opBITH z80a 5\r
6031 \r
6032 ;@BIT 6,B\r
6033 opcode_CB_70:\r
6034         opBITH z80bc 6\r
6035 ;@BIT 6,C\r
6036 opcode_CB_71:\r
6037         opBITL z80bc 6\r
6038 ;@BIT 6,D\r
6039 opcode_CB_72:\r
6040         opBITH z80de 6\r
6041 ;@BIT 6,E\r
6042 opcode_CB_73:\r
6043         opBITL z80de 6\r
6044 ;@BIT 6,H\r
6045 opcode_CB_74:\r
6046         opBITH z80hl 6\r
6047 ;@BIT 6,L\r
6048 opcode_CB_75:\r
6049         opBITL z80hl 6\r
6050 ;@BIT 6,(HL)\r
6051 opcode_CB_76:\r
6052         readmem8HL\r
6053         opBITb 6\r
6054         fetch 12\r
6055 ;@BIT 6,A\r
6056 opcode_CB_77:\r
6057         opBITH z80a 6\r
6058 \r
6059 ;@BIT 7,B\r
6060 opcode_CB_78:\r
6061         opBIT7H z80bc\r
6062 ;@BIT 7,C\r
6063 opcode_CB_79:\r
6064         opBIT7L z80bc\r
6065 ;@BIT 7,D\r
6066 opcode_CB_7A:\r
6067         opBIT7H z80de\r
6068 ;@BIT 7,E\r
6069 opcode_CB_7B:\r
6070         opBIT7L z80de\r
6071 ;@BIT 7,H\r
6072 opcode_CB_7C:\r
6073         opBIT7H z80hl\r
6074 ;@BIT 7,L\r
6075 opcode_CB_7D:\r
6076         opBIT7L z80hl\r
6077 ;@BIT 7,(HL)\r
6078 opcode_CB_7E:\r
6079         readmem8HL\r
6080         opBIT7b\r
6081         fetch 12\r
6082 ;@BIT 7,A\r
6083 opcode_CB_7F:\r
6084         opBIT7H z80a\r
6085 \r
6086 ;@RES 0,B\r
6087 opcode_CB_80:\r
6088         bic z80bc,z80bc,#1<<24\r
6089         fetch 8\r
6090 ;@RES 0,C\r
6091 opcode_CB_81:\r
6092         bic z80bc,z80bc,#1<<16\r
6093         fetch 8\r
6094 ;@RES 0,D\r
6095 opcode_CB_82:\r
6096         bic z80de,z80de,#1<<24\r
6097         fetch 8\r
6098 ;@RES 0,E\r
6099 opcode_CB_83:\r
6100         bic z80de,z80de,#1<<16\r
6101         fetch 8\r
6102 ;@RES 0,H\r
6103 opcode_CB_84:\r
6104         bic z80hl,z80hl,#1<<24\r
6105         fetch 8\r
6106 ;@RES 0,L\r
6107 opcode_CB_85:\r
6108         bic z80hl,z80hl,#1<<16\r
6109         fetch 8\r
6110 ;@RES 0,(HL)\r
6111 opcode_CB_86:\r
6112         opRESmemHL 0\r
6113 ;@RES 0,A\r
6114 opcode_CB_87:\r
6115         bic z80a,z80a,#1<<24\r
6116         fetch 8\r
6117 \r
6118 ;@RES 1,B\r
6119 opcode_CB_88:\r
6120         bic z80bc,z80bc,#1<<25\r
6121         fetch 8\r
6122 ;@RES 1,C\r
6123 opcode_CB_89:\r
6124         bic z80bc,z80bc,#1<<17\r
6125         fetch 8\r
6126 ;@RES 1,D\r
6127 opcode_CB_8A:\r
6128         bic z80de,z80de,#1<<25\r
6129         fetch 8\r
6130 ;@RES 1,E\r
6131 opcode_CB_8B:\r
6132         bic z80de,z80de,#1<<17\r
6133         fetch 8\r
6134 ;@RES 1,H\r
6135 opcode_CB_8C:\r
6136         bic z80hl,z80hl,#1<<25\r
6137         fetch 8\r
6138 ;@RES 1,L\r
6139 opcode_CB_8D:\r
6140         bic z80hl,z80hl,#1<<17\r
6141         fetch 8\r
6142 ;@RES 1,(HL)\r
6143 opcode_CB_8E:\r
6144         opRESmemHL 1\r
6145 ;@RES 1,A\r
6146 opcode_CB_8F:\r
6147         bic z80a,z80a,#1<<25\r
6148         fetch 8\r
6149 \r
6150 ;@RES 2,B\r
6151 opcode_CB_90:\r
6152         bic z80bc,z80bc,#1<<26\r
6153         fetch 8\r
6154 ;@RES 2,C\r
6155 opcode_CB_91:\r
6156         bic z80bc,z80bc,#1<<18\r
6157         fetch 8\r
6158 ;@RES 2,D\r
6159 opcode_CB_92:\r
6160         bic z80de,z80de,#1<<26\r
6161         fetch 8\r
6162 ;@RES 2,E\r
6163 opcode_CB_93:\r
6164         bic z80de,z80de,#1<<18\r
6165         fetch 8\r
6166 ;@RES 2,H\r
6167 opcode_CB_94:\r
6168         bic z80hl,z80hl,#1<<26\r
6169         fetch 8\r
6170 ;@RES 2,L\r
6171 opcode_CB_95:\r
6172         bic z80hl,z80hl,#1<<18\r
6173         fetch 8\r
6174 ;@RES 2,(HL)\r
6175 opcode_CB_96:\r
6176         opRESmemHL 2\r
6177 ;@RES 2,A\r
6178 opcode_CB_97:\r
6179         bic z80a,z80a,#1<<26\r
6180         fetch 8\r
6181 \r
6182 ;@RES 3,B\r
6183 opcode_CB_98:\r
6184         bic z80bc,z80bc,#1<<27\r
6185         fetch 8\r
6186 ;@RES 3,C\r
6187 opcode_CB_99:\r
6188         bic z80bc,z80bc,#1<<19\r
6189         fetch 8\r
6190 ;@RES 3,D\r
6191 opcode_CB_9A:\r
6192         bic z80de,z80de,#1<<27\r
6193         fetch 8\r
6194 ;@RES 3,E\r
6195 opcode_CB_9B:\r
6196         bic z80de,z80de,#1<<19\r
6197         fetch 8\r
6198 ;@RES 3,H\r
6199 opcode_CB_9C:\r
6200         bic z80hl,z80hl,#1<<27\r
6201         fetch 8\r
6202 ;@RES 3,L\r
6203 opcode_CB_9D:\r
6204         bic z80hl,z80hl,#1<<19\r
6205         fetch 8\r
6206 ;@RES 3,(HL)\r
6207 opcode_CB_9E:\r
6208         opRESmemHL 3\r
6209 ;@RES 3,A\r
6210 opcode_CB_9F:\r
6211         bic z80a,z80a,#1<<27\r
6212         fetch 8\r
6213 \r
6214 ;@RES 4,B\r
6215 opcode_CB_A0:\r
6216         bic z80bc,z80bc,#1<<28\r
6217         fetch 8\r
6218 ;@RES 4,C\r
6219 opcode_CB_A1:\r
6220         bic z80bc,z80bc,#1<<20\r
6221         fetch 8\r
6222 ;@RES 4,D\r
6223 opcode_CB_A2:\r
6224         bic z80de,z80de,#1<<28\r
6225         fetch 8\r
6226 ;@RES 4,E\r
6227 opcode_CB_A3:\r
6228         bic z80de,z80de,#1<<20\r
6229         fetch 8\r
6230 ;@RES 4,H\r
6231 opcode_CB_A4:\r
6232         bic z80hl,z80hl,#1<<28\r
6233         fetch 8\r
6234 ;@RES 4,L\r
6235 opcode_CB_A5:\r
6236         bic z80hl,z80hl,#1<<20\r
6237         fetch 8\r
6238 ;@RES 4,(HL)\r
6239 opcode_CB_A6:\r
6240         opRESmemHL 4\r
6241 ;@RES 4,A\r
6242 opcode_CB_A7:\r
6243         bic z80a,z80a,#1<<28\r
6244         fetch 8\r
6245 \r
6246 ;@RES 5,B\r
6247 opcode_CB_A8:\r
6248         bic z80bc,z80bc,#1<<29\r
6249         fetch 8\r
6250 ;@RES 5,C\r
6251 opcode_CB_A9:\r
6252         bic z80bc,z80bc,#1<<21\r
6253         fetch 8\r
6254 ;@RES 5,D\r
6255 opcode_CB_AA:\r
6256         bic z80de,z80de,#1<<29\r
6257         fetch 8\r
6258 ;@RES 5,E\r
6259 opcode_CB_AB:\r
6260         bic z80de,z80de,#1<<21\r
6261         fetch 8\r
6262 ;@RES 5,H\r
6263 opcode_CB_AC:\r
6264         bic z80hl,z80hl,#1<<29\r
6265         fetch 8\r
6266 ;@RES 5,L\r
6267 opcode_CB_AD:\r
6268         bic z80hl,z80hl,#1<<21\r
6269         fetch 8\r
6270 ;@RES 5,(HL)\r
6271 opcode_CB_AE:\r
6272         opRESmemHL 5\r
6273 ;@RES 5,A\r
6274 opcode_CB_AF:\r
6275         bic z80a,z80a,#1<<29\r
6276         fetch 8\r
6277 \r
6278 ;@RES 6,B\r
6279 opcode_CB_B0:\r
6280         bic z80bc,z80bc,#1<<30\r
6281         fetch 8\r
6282 ;@RES 6,C\r
6283 opcode_CB_B1:\r
6284         bic z80bc,z80bc,#1<<22\r
6285         fetch 8\r
6286 ;@RES 6,D\r
6287 opcode_CB_B2:\r
6288         bic z80de,z80de,#1<<30\r
6289         fetch 8\r
6290 ;@RES 6,E\r
6291 opcode_CB_B3:\r
6292         bic z80de,z80de,#1<<22\r
6293         fetch 8\r
6294 ;@RES 6,H\r
6295 opcode_CB_B4:\r
6296         bic z80hl,z80hl,#1<<30\r
6297         fetch 8\r
6298 ;@RES 6,L\r
6299 opcode_CB_B5:\r
6300         bic z80hl,z80hl,#1<<22\r
6301         fetch 8\r
6302 ;@RES 6,(HL)\r
6303 opcode_CB_B6:\r
6304         opRESmemHL 6\r
6305 ;@RES 6,A\r
6306 opcode_CB_B7:\r
6307         bic z80a,z80a,#1<<30\r
6308         fetch 8\r
6309 \r
6310 ;@RES 7,B\r
6311 opcode_CB_B8:\r
6312         bic z80bc,z80bc,#1<<31\r
6313         fetch 8\r
6314 ;@RES 7,C\r
6315 opcode_CB_B9:\r
6316         bic z80bc,z80bc,#1<<23\r
6317         fetch 8\r
6318 ;@RES 7,D\r
6319 opcode_CB_BA:\r
6320         bic z80de,z80de,#1<<31\r
6321         fetch 8\r
6322 ;@RES 7,E\r
6323 opcode_CB_BB:\r
6324         bic z80de,z80de,#1<<23\r
6325         fetch 8\r
6326 ;@RES 7,H\r
6327 opcode_CB_BC:\r
6328         bic z80hl,z80hl,#1<<31\r
6329         fetch 8\r
6330 ;@RES 7,L\r
6331 opcode_CB_BD:\r
6332         bic z80hl,z80hl,#1<<23\r
6333         fetch 8\r
6334 ;@RES 7,(HL)\r
6335 opcode_CB_BE:\r
6336         opRESmemHL 7\r
6337 ;@RES 7,A\r
6338 opcode_CB_BF:\r
6339         bic z80a,z80a,#1<<31\r
6340         fetch 8\r
6341 \r
6342 ;@SET 0,B\r
6343 opcode_CB_C0:\r
6344         orr z80bc,z80bc,#1<<24\r
6345         fetch 8\r
6346 ;@SET 0,C\r
6347 opcode_CB_C1:\r
6348         orr z80bc,z80bc,#1<<16\r
6349         fetch 8\r
6350 ;@SET 0,D\r
6351 opcode_CB_C2:\r
6352         orr z80de,z80de,#1<<24\r
6353         fetch 8\r
6354 ;@SET 0,E\r
6355 opcode_CB_C3:\r
6356         orr z80de,z80de,#1<<16\r
6357         fetch 8\r
6358 ;@SET 0,H\r
6359 opcode_CB_C4:\r
6360         orr z80hl,z80hl,#1<<24\r
6361         fetch 8\r
6362 ;@SET 0,L\r
6363 opcode_CB_C5:\r
6364         orr z80hl,z80hl,#1<<16\r
6365         fetch 8\r
6366 ;@SET 0,(HL)\r
6367 opcode_CB_C6:\r
6368         opSETmemHL 0\r
6369 ;@SET 0,A\r
6370 opcode_CB_C7:\r
6371         orr z80a,z80a,#1<<24\r
6372         fetch 8\r
6373 \r
6374 ;@SET 1,B\r
6375 opcode_CB_C8:\r
6376         orr z80bc,z80bc,#1<<25\r
6377         fetch 8\r
6378 ;@SET 1,C\r
6379 opcode_CB_C9:\r
6380         orr z80bc,z80bc,#1<<17\r
6381         fetch 8\r
6382 ;@SET 1,D\r
6383 opcode_CB_CA:\r
6384         orr z80de,z80de,#1<<25\r
6385         fetch 8\r
6386 ;@SET 1,E\r
6387 opcode_CB_CB:\r
6388         orr z80de,z80de,#1<<17\r
6389         fetch 8\r
6390 ;@SET 1,H\r
6391 opcode_CB_CC:\r
6392         orr z80hl,z80hl,#1<<25\r
6393         fetch 8\r
6394 ;@SET 1,L\r
6395 opcode_CB_CD:\r
6396         orr z80hl,z80hl,#1<<17\r
6397         fetch 8\r
6398 ;@SET 1,(HL)\r
6399 opcode_CB_CE:\r
6400         opSETmemHL 1\r
6401 ;@SET 1,A\r
6402 opcode_CB_CF:\r
6403         orr z80a,z80a,#1<<25\r
6404         fetch 8\r
6405 \r
6406 ;@SET 2,B\r
6407 opcode_CB_D0:\r
6408         orr z80bc,z80bc,#1<<26\r
6409         fetch 8\r
6410 ;@SET 2,C\r
6411 opcode_CB_D1:\r
6412         orr z80bc,z80bc,#1<<18\r
6413         fetch 8\r
6414 ;@SET 2,D\r
6415 opcode_CB_D2:\r
6416         orr z80de,z80de,#1<<26\r
6417         fetch 8\r
6418 ;@SET 2,E\r
6419 opcode_CB_D3:\r
6420         orr z80de,z80de,#1<<18\r
6421         fetch 8\r
6422 ;@SET 2,H\r
6423 opcode_CB_D4:\r
6424         orr z80hl,z80hl,#1<<26\r
6425         fetch 8\r
6426 ;@SET 2,L\r
6427 opcode_CB_D5:\r
6428         orr z80hl,z80hl,#1<<18\r
6429         fetch 8\r
6430 ;@SET 2,(HL)\r
6431 opcode_CB_D6:\r
6432         opSETmemHL 2\r
6433 ;@SET 2,A\r
6434 opcode_CB_D7:\r
6435         orr z80a,z80a,#1<<26\r
6436         fetch 8\r
6437 \r
6438 ;@SET 3,B\r
6439 opcode_CB_D8:\r
6440         orr z80bc,z80bc,#1<<27\r
6441         fetch 8\r
6442 ;@SET 3,C\r
6443 opcode_CB_D9:\r
6444         orr z80bc,z80bc,#1<<19\r
6445         fetch 8\r
6446 ;@SET 3,D\r
6447 opcode_CB_DA:\r
6448         orr z80de,z80de,#1<<27\r
6449         fetch 8\r
6450 ;@SET 3,E\r
6451 opcode_CB_DB:\r
6452         orr z80de,z80de,#1<<19\r
6453         fetch 8\r
6454 ;@SET 3,H\r
6455 opcode_CB_DC:\r
6456         orr z80hl,z80hl,#1<<27\r
6457         fetch 8\r
6458 ;@SET 3,L\r
6459 opcode_CB_DD:\r
6460         orr z80hl,z80hl,#1<<19\r
6461         fetch 8\r
6462 ;@SET 3,(HL)\r
6463 opcode_CB_DE:\r
6464         opSETmemHL 3\r
6465 ;@SET 3,A\r
6466 opcode_CB_DF:\r
6467         orr z80a,z80a,#1<<27\r
6468         fetch 8\r
6469 \r
6470 ;@SET 4,B\r
6471 opcode_CB_E0:\r
6472         orr z80bc,z80bc,#1<<28\r
6473         fetch 8\r
6474 ;@SET 4,C\r
6475 opcode_CB_E1:\r
6476         orr z80bc,z80bc,#1<<20\r
6477         fetch 8\r
6478 ;@SET 4,D\r
6479 opcode_CB_E2:\r
6480         orr z80de,z80de,#1<<28\r
6481         fetch 8\r
6482 ;@SET 4,E\r
6483 opcode_CB_E3:\r
6484         orr z80de,z80de,#1<<20\r
6485         fetch 8\r
6486 ;@SET 4,H\r
6487 opcode_CB_E4:\r
6488         orr z80hl,z80hl,#1<<28\r
6489         fetch 8\r
6490 ;@SET 4,L\r
6491 opcode_CB_E5:\r
6492         orr z80hl,z80hl,#1<<20\r
6493         fetch 8\r
6494 ;@SET 4,(HL)\r
6495 opcode_CB_E6:\r
6496         opSETmemHL 4\r
6497 ;@SET 4,A\r
6498 opcode_CB_E7:\r
6499         orr z80a,z80a,#1<<28\r
6500         fetch 8\r
6501 \r
6502 ;@SET 5,B\r
6503 opcode_CB_E8:\r
6504         orr z80bc,z80bc,#1<<29\r
6505         fetch 8\r
6506 ;@SET 5,C\r
6507 opcode_CB_E9:\r
6508         orr z80bc,z80bc,#1<<21\r
6509         fetch 8\r
6510 ;@SET 5,D\r
6511 opcode_CB_EA:\r
6512         orr z80de,z80de,#1<<29\r
6513         fetch 8\r
6514 ;@SET 5,E\r
6515 opcode_CB_EB:\r
6516         orr z80de,z80de,#1<<21\r
6517         fetch 8\r
6518 ;@SET 5,H\r
6519 opcode_CB_EC:\r
6520         orr z80hl,z80hl,#1<<29\r
6521         fetch 8\r
6522 ;@SET 5,L\r
6523 opcode_CB_ED:\r
6524         orr z80hl,z80hl,#1<<21\r
6525         fetch 8\r
6526 ;@SET 5,(HL)\r
6527 opcode_CB_EE:\r
6528         opSETmemHL 5\r
6529 ;@SET 5,A\r
6530 opcode_CB_EF:\r
6531         orr z80a,z80a,#1<<29\r
6532         fetch 8\r
6533 \r
6534 ;@SET 6,B\r
6535 opcode_CB_F0:\r
6536         orr z80bc,z80bc,#1<<30\r
6537         fetch 8\r
6538 ;@SET 6,C\r
6539 opcode_CB_F1:\r
6540         orr z80bc,z80bc,#1<<22\r
6541         fetch 8\r
6542 ;@SET 6,D\r
6543 opcode_CB_F2:\r
6544         orr z80de,z80de,#1<<30\r
6545         fetch 8\r
6546 ;@SET 6,E\r
6547 opcode_CB_F3:\r
6548         orr z80de,z80de,#1<<22\r
6549         fetch 8\r
6550 ;@SET 6,H\r
6551 opcode_CB_F4:\r
6552         orr z80hl,z80hl,#1<<30\r
6553         fetch 8\r
6554 ;@SET 6,L\r
6555 opcode_CB_F5:\r
6556         orr z80hl,z80hl,#1<<22\r
6557         fetch 8\r
6558 ;@SET 6,(HL)\r
6559 opcode_CB_F6:\r
6560         opSETmemHL 6\r
6561 ;@SET 6,A\r
6562 opcode_CB_F7:\r
6563         orr z80a,z80a,#1<<30\r
6564         fetch 8\r
6565 \r
6566 ;@SET 7,B\r
6567 opcode_CB_F8:\r
6568         orr z80bc,z80bc,#1<<31\r
6569         fetch 8\r
6570 ;@SET 7,C\r
6571 opcode_CB_F9:\r
6572         orr z80bc,z80bc,#1<<23\r
6573         fetch 8\r
6574 ;@SET 7,D\r
6575 opcode_CB_FA:\r
6576         orr z80de,z80de,#1<<31\r
6577         fetch 8\r
6578 ;@SET 7,E\r
6579 opcode_CB_FB:\r
6580         orr z80de,z80de,#1<<23\r
6581         fetch 8\r
6582 ;@SET 7,H\r
6583 opcode_CB_FC:\r
6584         orr z80hl,z80hl,#1<<31\r
6585         fetch 8\r
6586 ;@SET 7,L\r
6587 opcode_CB_FD:\r
6588         orr z80hl,z80hl,#1<<23\r
6589         fetch 8\r
6590 ;@SET 7,(HL)\r
6591 opcode_CB_FE:\r
6592         opSETmemHL 7\r
6593 ;@SET 7,A\r
6594 opcode_CB_FF:\r
6595         orr z80a,z80a,#1<<31\r
6596         fetch 8\r
6597 \r
6598 \r
6599 \r
6600 ;@##################################\r
6601 ;@##################################\r
6602 ;@###  opcodes DD  #########################\r
6603 ;@##################################\r
6604 ;@##################################\r
6605 ;@Because the DD opcodes are not a complete range from 00-FF I have\r
6606 ;@created this sub routine that will catch any undocumented ops\r
6607 ;@halt the emulator and mov the current instruction to r0\r
6608 ;@at a later stage I may change to display a text message on the screen\r
6609 opcode_DD_NF:\r
6610         eatcycles 4\r
6611         ldr pc,[opcodes,r0, lsl #2]\r
6612 ;@      mov r2,#0x10*4\r
6613 ;@      cmp r2,z80xx\r
6614 ;@      bne opcode_FD_NF\r
6615 ;@      mov r0,#0xDD00\r
6616 ;@      orr r0,r0,r1\r
6617 ;@      b end_loop\r
6618 ;@opcode_FD_NF:\r
6619 ;@      mov r0,#0xFD00\r
6620 ;@      orr r0,r0,r1\r
6621 ;@      b end_loop\r
6622 \r
6623 opcode_DD_NF2:\r
6624         fetch 23\r
6625 ;@ notaz: we don't want to deadlock here\r
6626 ;@      mov r0,#0xDD0000\r
6627 ;@      orr r0,r0,#0xCB00\r
6628 ;@      orr r0,r0,r1\r
6629 ;@      b end_loop\r
6630 \r
6631 ;@ADD IX,BC\r
6632 opcode_DD_09:\r
6633         ldr r0,[z80xx]\r
6634         opADD16 r0 z80bc\r
6635         str r0,[z80xx]\r
6636         fetch 15\r
6637 ;@ADD IX,DE\r
6638 opcode_DD_19:\r
6639         ldr r0,[z80xx]\r
6640         opADD16 r0 z80de\r
6641         str r0,[z80xx]\r
6642         fetch 15\r
6643 ;@LD IX,NN\r
6644 opcode_DD_21:\r
6645         ldrb r0,[z80pc],#1\r
6646         ldrb r1,[z80pc],#1\r
6647         orr r0,r0,r1, lsl #8\r
6648         strh r0,[z80xx,#2]\r
6649         fetch 14\r
6650 ;@LD (NN),IX\r
6651 opcode_DD_22:\r
6652         ldrb r0,[z80pc],#1\r
6653         ldrb r1,[z80pc],#1\r
6654         orr r1,r0,r1, lsl #8\r
6655         ldrh r0,[z80xx,#2]\r
6656         writemem16\r
6657         fetch 20\r
6658 ;@INC IX\r
6659 opcode_DD_23:\r
6660         ldr r0,[z80xx]\r
6661         add r0,r0,#1<<16\r
6662         str r0,[z80xx]\r
6663         fetch 10\r
6664 ;@INC I  (IX)\r
6665 opcode_DD_24:\r
6666         ldr r0,[z80xx]\r
6667         opINC8H r0\r
6668         str r0,[z80xx]\r
6669         fetch 8\r
6670 ;@DEC I  (IX)\r
6671 opcode_DD_25:\r
6672         ldr r0,[z80xx]\r
6673         opDEC8H r0\r
6674         str r0,[z80xx]\r
6675         fetch 8\r
6676 ;@LD I,N  (IX)\r
6677 opcode_DD_26:\r
6678         ldrb r0,[z80pc],#1\r
6679         strb r0,[z80xx,#3]\r
6680         fetch 11\r
6681 ;@ADD IX,IX\r
6682 opcode_DD_29:\r
6683         ldr r0,[z80xx]\r
6684         opADD16_2 r0\r
6685         str r0,[z80xx]\r
6686         fetch 15\r
6687 ;@LD IX,(NN)\r
6688 opcode_DD_2A:\r
6689         ldrb r0,[z80pc],#1\r
6690         ldrb r1,[z80pc],#1\r
6691         orr r0,r0,r1, lsl #8\r
6692         stmfd sp!,{z80xx}\r
6693         readmem16\r
6694         ldmfd sp!,{z80xx}\r
6695         strh r0,[z80xx,#2]\r
6696         fetch 20\r
6697 ;@DEC IX\r
6698 opcode_DD_2B:\r
6699         ldr r0,[z80xx]\r
6700         sub r0,r0,#1<<16\r
6701         str r0,[z80xx]\r
6702         fetch 10\r
6703 ;@INC X  (IX)\r
6704 opcode_DD_2C:\r
6705         ldr r0,[z80xx]\r
6706         opINC8L r0\r
6707         str r0,[z80xx]\r
6708         fetch 8\r
6709 ;@DEC X  (IX)\r
6710 opcode_DD_2D:\r
6711         ldr r0,[z80xx]\r
6712         opDEC8L r0\r
6713         str r0,[z80xx]\r
6714         fetch 8\r
6715 ;@LD X,N  (IX)\r
6716 opcode_DD_2E:\r
6717         ldrb r0,[z80pc],#1\r
6718         strb r0,[z80xx,#2]\r
6719         fetch 11\r
6720 ;@INC (IX+N)\r
6721 opcode_DD_34:\r
6722         ldrsb r0,[z80pc],#1\r
6723         ldr r1,[z80xx]\r
6724         add r0,r0,r1, lsr #16\r
6725         stmfd sp!,{r0}  ;@ save addr\r
6726         readmem8\r
6727         opINC8b\r
6728         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6729         writemem8\r
6730         fetch 23\r
6731 ;@DEC (IX+N)\r
6732 opcode_DD_35:\r
6733         ldrsb r0,[z80pc],#1\r
6734         ldr r1,[z80xx]\r
6735         add r0,r0,r1, lsr #16\r
6736         stmfd sp!,{r0}  ;@ save addr\r
6737         readmem8\r
6738         opDEC8b\r
6739         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6740         writemem8\r
6741         fetch 23\r
6742 ;@LD (IX+N),N\r
6743 opcode_DD_36:\r
6744         ldrsb r2,[z80pc],#1\r
6745         ldrb r0,[z80pc],#1\r
6746         ldr r1,[z80xx]\r
6747         add r1,r2,r1, lsr #16\r
6748         writemem8\r
6749         fetch 19\r
6750 ;@ADD IX,SP\r
6751 opcode_DD_39:\r
6752         ldr r0,[z80xx]\r
6753 .if FAST_Z80SP\r
6754         ldr r2,[cpucontext,#z80sp_base]\r
6755         sub r2,z80sp,r2\r
6756         opADD16s r0 r2 16\r
6757 .else\r
6758         opADD16s r0 z80sp 16\r
6759 .endif\r
6760         str r0,[z80xx]\r
6761         fetch 15\r
6762 ;@LD B,I ( IX )\r
6763 opcode_DD_44:\r
6764         ldrb r0,[z80xx,#3]\r
6765         and z80bc,z80bc,#0xFF<<16\r
6766         orr z80bc,z80bc,r0, lsl #24\r
6767         fetch 8\r
6768 ;@LD B,X ( IX )\r
6769 opcode_DD_45:\r
6770         ldrb r0,[z80xx,#2]\r
6771         and z80bc,z80bc,#0xFF<<16\r
6772         orr z80bc,z80bc,r0, lsl #24\r
6773         fetch 8\r
6774 ;@LD B,(IX,N)\r
6775 opcode_DD_46:\r
6776         ldrsb r0,[z80pc],#1\r
6777         ldr r1,[z80xx]\r
6778         add r0,r0,r1, lsr #16\r
6779         readmem8\r
6780         and z80bc,z80bc,#0xFF<<16\r
6781         orr z80bc,z80bc,r0, lsl #24\r
6782         fetch 19\r
6783 ;@LD C,I  (IX)\r
6784 opcode_DD_4C:\r
6785         ldrb r0,[z80xx,#3]\r
6786         and z80bc,z80bc,#0xFF<<24\r
6787         orr z80bc,z80bc,r0, lsl #16\r
6788         fetch 8\r
6789 ;@LD C,X  (IX)\r
6790 opcode_DD_4D:\r
6791         ldrb r0,[z80xx,#2]\r
6792         and z80bc,z80bc,#0xFF<<24\r
6793         orr z80bc,z80bc,r0, lsl #16\r
6794         fetch 8\r
6795 ;@LD C,(IX,N)\r
6796 opcode_DD_4E:\r
6797         ldrsb r0,[z80pc],#1\r
6798         ldr r1,[z80xx]\r
6799         add r0,r0,r1, lsr #16\r
6800         readmem8\r
6801         and z80bc,z80bc,#0xFF<<24\r
6802         orr z80bc,z80bc,r0, lsl #16\r
6803         fetch 19\r
6804 \r
6805 ;@LD D,I  (IX)\r
6806 opcode_DD_54:\r
6807         ldrb r0,[z80xx,#3]\r
6808         and z80de,z80de,#0xFF<<16\r
6809         orr z80de,z80de,r0, lsl #24\r
6810         fetch 8\r
6811 ;@LD D,X  (IX)\r
6812 opcode_DD_55:\r
6813         ldrb r0,[z80xx,#2]\r
6814         and z80de,z80de,#0xFF<<16\r
6815         orr z80de,z80de,r0, lsl #24\r
6816         fetch 8\r
6817 ;@LD D,(IX,N)\r
6818 opcode_DD_56:\r
6819         ldrsb r0,[z80pc],#1\r
6820         ldr r1,[z80xx]\r
6821         add r0,r0,r1, lsr #16\r
6822         readmem8\r
6823         and z80de,z80de,#0xFF<<16\r
6824         orr z80de,z80de,r0, lsl #24\r
6825         fetch 19\r
6826 ;@LD E,I  (IX)\r
6827 opcode_DD_5C:\r
6828         ldrb r0,[z80xx,#3]\r
6829         and z80de,z80de,#0xFF<<24\r
6830         orr z80de,z80de,r0, lsl #16\r
6831         fetch 8\r
6832 ;@LD E,X  (IX)\r
6833 opcode_DD_5D:\r
6834         ldrb r0,[z80xx,#2]\r
6835         and z80de,z80de,#0xFF<<24\r
6836         orr z80de,z80de,r0, lsl #16\r
6837         fetch 8\r
6838 ;@LD E,(IX,N)\r
6839 opcode_DD_5E:\r
6840         ldrsb r0,[z80pc],#1\r
6841         ldr r1,[z80xx]\r
6842         add r0,r0,r1, lsr #16\r
6843         readmem8\r
6844         and z80de,z80de,#0xFF<<24\r
6845         orr z80de,z80de,r0, lsl #16\r
6846         fetch 19\r
6847 ;@LD I,B  (IX)\r
6848 opcode_DD_60:\r
6849         mov r0,z80bc,lsr#24\r
6850         strb r0,[z80xx,#3]\r
6851         fetch 8\r
6852 ;@LD I,C  (IX)\r
6853 opcode_DD_61:\r
6854         mov r0,z80bc,lsr#16\r
6855         strb r0,[z80xx,#3]\r
6856         fetch 8\r
6857 ;@LD I,D  (IX)\r
6858 opcode_DD_62:\r
6859         mov r0,z80de,lsr#24\r
6860         strb r0,[z80xx,#3]\r
6861         fetch 8\r
6862 ;@LD I,E  (IX)\r
6863 opcode_DD_63:\r
6864         mov r0,z80de,lsr#16\r
6865         strb r0,[z80xx,#3]\r
6866         fetch 8\r
6867 ;@LD I,I  (IX)\r
6868 opcode_DD_64:\r
6869         fetch 8\r
6870 ;@LD I,X  (IX)\r
6871 opcode_DD_65:\r
6872         ldrb r0,[z80xx,#2]\r
6873         strb r0,[z80xx,#3]\r
6874         fetch 8\r
6875 ;@LD H,(IX,N)\r
6876 opcode_DD_66:\r
6877         ldrsb r0,[z80pc],#1\r
6878         ldr r1,[z80xx]\r
6879         add r0,r0,r1, lsr #16\r
6880         readmem8\r
6881         and z80hl,z80hl,#0xFF<<16\r
6882         orr z80hl,z80hl,r0, lsl #24\r
6883         fetch 19\r
6884 ;@LD I,A  (IX)\r
6885 opcode_DD_67:\r
6886         mov r0,z80a,lsr#24\r
6887         strb r0,[z80xx,#3]\r
6888         fetch 8\r
6889 ;@LD X,B  (IX)\r
6890 opcode_DD_68:\r
6891         mov r0,z80bc,lsr#24\r
6892         strb r0,[z80xx,#2]\r
6893         fetch 8\r
6894 ;@LD X,C  (IX)\r
6895 opcode_DD_69:\r
6896         mov r0,z80bc,lsr#16\r
6897         strb r0,[z80xx,#2]\r
6898         fetch 8\r
6899 ;@LD X,D  (IX)\r
6900 opcode_DD_6A:\r
6901         mov r0,z80de,lsr#24\r
6902         strb r0,[z80xx,#2]\r
6903         fetch 8\r
6904 ;@LD X,E  (IX)\r
6905 opcode_DD_6B:\r
6906         mov r0,z80de,lsr#16\r
6907         strb r0,[z80xx,#2]\r
6908         fetch 8\r
6909 ;@LD X,I  (IX)\r
6910 opcode_DD_6C:\r
6911         ldrb r0,[z80xx,#3]\r
6912         strb r0,[z80xx,#2]\r
6913         fetch 8\r
6914 ;@LD X,X  (IX)\r
6915 opcode_DD_6D:\r
6916         fetch 8\r
6917 ;@LD L,(IX,N)\r
6918 opcode_DD_6E:\r
6919         ldrsb r0,[z80pc],#1\r
6920         ldr r1,[z80xx]\r
6921         add r0,r0,r1, lsr #16\r
6922         readmem8\r
6923         and z80hl,z80hl,#0xFF<<24\r
6924         orr z80hl,z80hl,r0, lsl #16\r
6925         fetch 19\r
6926 ;@LD X,A  (IX)\r
6927 opcode_DD_6F:\r
6928         mov r0,z80a,lsr#24\r
6929         strb r0,[z80xx,#2]\r
6930         fetch 8\r
6931 \r
6932 ;@LD (IX,N),B\r
6933 opcode_DD_70:\r
6934         ldrsb r0,[z80pc],#1\r
6935         ldr r1,[z80xx]\r
6936         add r1,r0,r1, lsr #16\r
6937         mov r0,z80bc, lsr #24\r
6938         writemem8\r
6939         fetch 19\r
6940 ;@LD (IX,N),C\r
6941 opcode_DD_71:\r
6942         ldrsb r0,[z80pc],#1\r
6943         ldr r1,[z80xx]\r
6944         add r1,r0,r1, lsr #16\r
6945         mov r0,z80bc, lsr #16\r
6946         and r0,r0,#0xFF\r
6947         writemem8\r
6948         fetch 19\r
6949 ;@LD (IX,N),D\r
6950 opcode_DD_72:\r
6951         ldrsb r0,[z80pc],#1\r
6952         ldr r1,[z80xx]\r
6953         add r1,r0,r1, lsr #16\r
6954         mov r0,z80de, lsr #24\r
6955         writemem8\r
6956         fetch 19\r
6957 ;@LD (IX,N),E\r
6958 opcode_DD_73:\r
6959         ldrsb r0,[z80pc],#1\r
6960         ldr r1,[z80xx]\r
6961         add r1,r0,r1, lsr #16\r
6962         mov r0,z80de, lsr #16\r
6963         and r0,r0,#0xFF\r
6964         writemem8\r
6965         fetch 19\r
6966 ;@LD (IX,N),H\r
6967 opcode_DD_74:\r
6968         ldrsb r0,[z80pc],#1\r
6969         ldr r1,[z80xx]\r
6970         add r1,r0,r1, lsr #16\r
6971         mov r0,z80hl, lsr #24\r
6972         writemem8\r
6973         fetch 19\r
6974 ;@LD (IX,N),L\r
6975 opcode_DD_75:\r
6976         ldrsb r0,[z80pc],#1\r
6977         ldr r1,[z80xx]\r
6978         add r1,r0,r1, lsr #16\r
6979         mov r0,z80hl, lsr #16\r
6980         and r0,r0,#0xFF\r
6981         writemem8\r
6982         fetch 19\r
6983 ;@LD (IX,N),A\r
6984 opcode_DD_77:\r
6985         ldrsb r0,[z80pc],#1\r
6986         ldr r1,[z80xx]\r
6987         add r1,r0,r1, lsr #16\r
6988         mov r0,z80a, lsr #24\r
6989         writemem8\r
6990         fetch 19\r
6991 \r
6992 ;@LD A,I  from (IX)\r
6993 opcode_DD_7C:\r
6994         ldrb r0,[z80xx,#3]\r
6995         mov z80a,r0, lsl #24\r
6996         fetch 8\r
6997 ;@LD A,X  from (IX)\r
6998 opcode_DD_7D:\r
6999         ldrb r0,[z80xx,#2]\r
7000         mov z80a,r0, lsl #24\r
7001         fetch 8\r
7002 ;@LD A,(IX,N)\r
7003 opcode_DD_7E:\r
7004         ldrsb r0,[z80pc],#1\r
7005         ldr r1,[z80xx]\r
7006         add r0,r0,r1, lsr #16\r
7007         readmem8\r
7008         mov z80a,r0, lsl #24\r
7009         fetch 19\r
7010 \r
7011 ;@ADD A,I  ( IX)\r
7012 opcode_DD_84:\r
7013         ldrb r0,[z80xx,#3]\r
7014         opADDb\r
7015         fetch 8\r
7016 ;@ADD A,X  ( IX)\r
7017 opcode_DD_85:\r
7018         ldrb r0,[z80xx,#2]\r
7019         opADDb\r
7020         fetch 8\r
7021 ;@ADD A,(IX+N)\r
7022 opcode_DD_86:\r
7023         ldrsb r0,[z80pc],#1\r
7024         ldr r1,[z80xx]\r
7025         add r0,r0,r1, lsr #16\r
7026         readmem8\r
7027         opADDb\r
7028         fetch 19\r
7029 \r
7030 ;@ADC A,I  (IX)\r
7031 opcode_DD_8C:\r
7032         ldrb r0,[z80xx,#3]\r
7033         opADCb\r
7034         fetch 8\r
7035 ;@ADC A,X  (IX)\r
7036 opcode_DD_8D:\r
7037         ldrb r0,[z80xx,#2]\r
7038         opADCb\r
7039         fetch 8\r
7040 ;@ADC A,(IX+N)\r
7041 opcode_DD_8E:\r
7042         ldrsb r0,[z80pc],#1\r
7043         ldr r1,[z80xx]\r
7044         add r0,r0,r1, lsr #16\r
7045         readmem8\r
7046         opADCb\r
7047         fetch 19\r
7048 \r
7049 ;@SUB A,I  (IX)\r
7050 opcode_DD_94:\r
7051         ldrb r0,[z80xx,#3]\r
7052         opSUBb\r
7053         fetch 8\r
7054 ;@SUB A,X  (IX)\r
7055 opcode_DD_95:\r
7056         ldrb r0,[z80xx,#2]\r
7057         opSUBb\r
7058         fetch 8\r
7059 ;@SUB A,(IX+N)\r
7060 opcode_DD_96:\r
7061         ldrsb r0,[z80pc],#1\r
7062         ldr r1,[z80xx]\r
7063         add r0,r0,r1, lsr #16\r
7064         readmem8\r
7065         opSUBb\r
7066         fetch 19\r
7067 \r
7068 ;@SBC A,I  (IX)\r
7069 opcode_DD_9C:\r
7070         ldrb r0,[z80xx,#3]\r
7071         opSBCb\r
7072         fetch 8\r
7073 ;@SBC A,X  (IX)\r
7074 opcode_DD_9D:\r
7075         ldrb r0,[z80xx,#2]\r
7076         opSBCb\r
7077         fetch 8\r
7078 ;@SBC A,(IX+N)\r
7079 opcode_DD_9E:\r
7080         ldrsb r0,[z80pc],#1\r
7081         ldr r1,[z80xx]\r
7082         add r0,r0,r1, lsr #16\r
7083         readmem8\r
7084         opSBCb\r
7085         fetch 19\r
7086 \r
7087 ;@AND I  (IX)\r
7088 opcode_DD_A4:\r
7089         ldrb r0,[z80xx,#3]\r
7090         opANDb\r
7091         fetch 8\r
7092 ;@AND X  (IX)\r
7093 opcode_DD_A5:\r
7094         ldrb r0,[z80xx,#2]\r
7095         opANDb\r
7096         fetch 8\r
7097 ;@AND (IX+N)\r
7098 opcode_DD_A6:\r
7099         ldrsb r0,[z80pc],#1\r
7100         ldr r1,[z80xx]\r
7101         add r0,r0,r1, lsr #16\r
7102         readmem8\r
7103         opANDb\r
7104         fetch 19\r
7105 \r
7106 ;@XOR I  (IX)\r
7107 opcode_DD_AC:\r
7108         ldrb r0,[z80xx,#3]\r
7109         opXORb\r
7110         fetch 8\r
7111 ;@XOR X  (IX)\r
7112 opcode_DD_AD:\r
7113         ldrb r0,[z80xx,#2]\r
7114         opXORb\r
7115         fetch 8\r
7116 ;@XOR (IX+N)\r
7117 opcode_DD_AE:\r
7118         ldrsb r0,[z80pc],#1\r
7119         ldr r1,[z80xx]\r
7120         add r0,r0,r1, lsr #16\r
7121         readmem8\r
7122         opXORb\r
7123         fetch 19\r
7124 \r
7125 ;@OR I  (IX)\r
7126 opcode_DD_B4:\r
7127         ldrb r0,[z80xx,#3]\r
7128         opORb\r
7129         fetch 8\r
7130 ;@OR X  (IX)\r
7131 opcode_DD_B5:\r
7132         ldrb r0,[z80xx,#2]\r
7133         opORb\r
7134         fetch 8\r
7135 ;@OR (IX+N)\r
7136 opcode_DD_B6:\r
7137         ldrsb r0,[z80pc],#1\r
7138         ldr r1,[z80xx]\r
7139         add r0,r0,r1, lsr #16\r
7140         readmem8\r
7141         opORb\r
7142         fetch 19\r
7143 \r
7144 ;@CP I  (IX)\r
7145 opcode_DD_BC:\r
7146         ldrb r0,[z80xx,#3]\r
7147         opCPb\r
7148         fetch 8\r
7149 ;@CP X  (IX)\r
7150 opcode_DD_BD:\r
7151         ldrb r0,[z80xx,#2]\r
7152         opCPb\r
7153         fetch 8\r
7154 ;@CP (IX+N)\r
7155 opcode_DD_BE:\r
7156         ldrsb r0,[z80pc],#1\r
7157         ldr r1,[z80xx]\r
7158         add r0,r0,r1, lsr #16\r
7159         readmem8\r
7160         opCPb\r
7161         fetch 19\r
7162 \r
7163 \r
7164 opcodes_DD_CB_LOCAL: .word opcodes_DD_CB\r
7165 opcode_DD_CB:\r
7166 ;@Looks up the opcode on the opcodes_DD_CB table and then \r
7167 ;@moves the PC to the location of the subroutine\r
7168         ldrsb r0,[z80pc],#1\r
7169         ldr r1,[z80xx]\r
7170         add r0,r0,r1, lsr #16\r
7171 \r
7172         ldrb r1,[z80pc],#1\r
7173         ldr pc,[pc,r1, lsl #2]\r
7174                 .word 0x00\r
7175 opcodes_DD_CB:\r
7176                 .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
7177                 .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
7178                 .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
7179                 .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
7180                 .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
7181                 .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
7182                 .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
7183                 .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
7184                 .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
7185                 .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
7186                 .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
7187                 .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
7188                 .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
7189                 .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
7190                 .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
7191                 .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
7192                 .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
7193                 .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
7194                 .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
7195                 .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
7196                 .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
7197                 .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
7198                 .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
7199                 .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
7200                 .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
7201                 .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
7202                 .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
7203                 .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
7204                 .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
7205                 .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
7206                 .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
7207                 .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
7208 \r
7209 ;@RLC (IX+N) \r
7210 opcode_DD_CB_06:\r
7211         stmfd sp!,{r0}          ;@ save addr\r
7212         readmem8\r
7213         opRLCb\r
7214         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7215         writemem8\r
7216         fetch 23\r
7217 ;@RRC (IX+N) \r
7218 opcode_DD_CB_0E:\r
7219         stmfd sp!,{r0}          ;@ save addr\r
7220         readmem8\r
7221         opRRCb\r
7222         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7223         writemem8\r
7224         fetch 23\r
7225 ;@RL (IX+N) \r
7226 opcode_DD_CB_16:\r
7227         stmfd sp!,{r0}          ;@ save addr\r
7228         readmem8\r
7229         opRLb\r
7230         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7231         writemem8\r
7232         fetch 23\r
7233 ;@RR (IX+N) \r
7234 opcode_DD_CB_1E:\r
7235         stmfd sp!,{r0}          ;@ save addr \r
7236         readmem8\r
7237         opRRb\r
7238         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7239         writemem8\r
7240         fetch 23\r
7241 \r
7242 ;@SLA (IX+N) \r
7243 opcode_DD_CB_26:\r
7244         stmfd sp!,{r0}          ;@ save addr \r
7245         readmem8\r
7246         opSLAb\r
7247         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7248         writemem8\r
7249         fetch 23\r
7250 ;@SRA (IX+N) \r
7251 opcode_DD_CB_2E:\r
7252         stmfd sp!,{r0}          ;@ save addr \r
7253         readmem8\r
7254         opSRAb\r
7255         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7256         writemem8\r
7257         fetch 23\r
7258 ;@SLL (IX+N) \r
7259 opcode_DD_CB_36:\r
7260         stmfd sp!,{r0}          ;@ save addr \r
7261         readmem8\r
7262         opSLLb\r
7263         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7264         writemem8\r
7265         fetch 23\r
7266 ;@SRL (IX+N)\r
7267 opcode_DD_CB_3E:\r
7268         stmfd sp!,{r0}          ;@ save addr \r
7269         readmem8\r
7270         opSRLb\r
7271         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7272         writemem8\r
7273         fetch 23\r
7274 \r
7275 ;@BIT 0,(IX+N) \r
7276 opcode_DD_CB_46:\r
7277         readmem8\r
7278         opBITb 0\r
7279         fetch 20\r
7280 ;@BIT 1,(IX+N) \r
7281 opcode_DD_CB_4E:\r
7282         readmem8\r
7283         opBITb 1\r
7284         fetch 20\r
7285 ;@BIT 2,(IX+N) \r
7286 opcode_DD_CB_56:\r
7287         readmem8\r
7288         opBITb 2\r
7289         fetch 20\r
7290 ;@BIT 3,(IX+N) \r
7291 opcode_DD_CB_5E:\r
7292         readmem8\r
7293         opBITb 3\r
7294         fetch 20\r
7295 ;@BIT 4,(IX+N) \r
7296 opcode_DD_CB_66:\r
7297         readmem8\r
7298         opBITb 4\r
7299         fetch 20\r
7300 ;@BIT 5,(IX+N) \r
7301 opcode_DD_CB_6E:\r
7302         readmem8\r
7303         opBITb 5\r
7304         fetch 20\r
7305 ;@BIT 6,(IX+N) \r
7306 opcode_DD_CB_76:\r
7307         readmem8\r
7308         opBITb 6\r
7309         fetch 20\r
7310 ;@BIT 7,(IX+N) \r
7311 opcode_DD_CB_7E:\r
7312         readmem8\r
7313         opBIT7b\r
7314         fetch 20\r
7315 ;@RES 0,(IX+N) \r
7316 opcode_DD_CB_86:\r
7317         opRESmem 0\r
7318 ;@RES 1,(IX+N) \r
7319 opcode_DD_CB_8E:\r
7320         opRESmem 1\r
7321 ;@RES 2,(IX+N) \r
7322 opcode_DD_CB_96:\r
7323         opRESmem 2\r
7324 ;@RES 3,(IX+N) \r
7325 opcode_DD_CB_9E:\r
7326         opRESmem 3\r
7327 ;@RES 4,(IX+N) \r
7328 opcode_DD_CB_A6:\r
7329         opRESmem 4\r
7330 ;@RES 5,(IX+N) \r
7331 opcode_DD_CB_AE:\r
7332         opRESmem 5\r
7333 ;@RES 6,(IX+N) \r
7334 opcode_DD_CB_B6:\r
7335         opRESmem 6\r
7336 ;@RES 7,(IX+N) \r
7337 opcode_DD_CB_BE:\r
7338         opRESmem 7\r
7339 \r
7340 ;@SET 0,(IX+N) \r
7341 opcode_DD_CB_C6:\r
7342         opSETmem 0\r
7343 ;@SET 1,(IX+N) \r
7344 opcode_DD_CB_CE:\r
7345         opSETmem 1\r
7346 ;@SET 2,(IX+N) \r
7347 opcode_DD_CB_D6:\r
7348         opSETmem 2\r
7349 ;@SET 3,(IX+N) \r
7350 opcode_DD_CB_DE:\r
7351         opSETmem 3\r
7352 ;@SET 4,(IX+N) \r
7353 opcode_DD_CB_E6:\r
7354         opSETmem 4\r
7355 ;@SET 5,(IX+N) \r
7356 opcode_DD_CB_EE:\r
7357         opSETmem 5\r
7358 ;@SET 6,(IX+N) \r
7359 opcode_DD_CB_F6:\r
7360         opSETmem 6\r
7361 ;@SET 7,(IX+N) \r
7362 opcode_DD_CB_FE:\r
7363         opSETmem 7\r
7364 \r
7365 \r
7366 \r
7367 ;@POP IX\r
7368 opcode_DD_E1:\r
7369 .if FAST_Z80SP\r
7370         opPOP\r
7371 .else\r
7372         mov r0,z80sp\r
7373         stmfd sp!,{z80xx}\r
7374         readmem16\r
7375         ldmfd sp!,{z80xx}\r
7376         add z80sp,z80sp,#2\r
7377 .endif\r
7378         strh r0,[z80xx,#2]\r
7379         fetch 14\r
7380 ;@EX (SP),IX\r
7381 opcode_DD_E3:\r
7382 .if FAST_Z80SP\r
7383         ldrb r0,[z80sp]\r
7384         ldrb r1,[z80sp,#1]\r
7385         orr r2,r0,r1, lsl #8\r
7386         ldrh r1,[z80xx,#2]\r
7387         mov r0,r1, lsr #8\r
7388         strb r0,[z80sp,#1]\r
7389         strb r1,[z80sp]\r
7390         strh r2,[z80xx,#2]\r
7391 .else\r
7392         mov r0,z80sp\r
7393         stmfd sp!,{z80xx}\r
7394         readmem16\r
7395         ldmfd sp!,{z80xx}\r
7396         mov r2,r0\r
7397         ldrh r0,[z80xx,#2]\r
7398         strh r2,[z80xx,#2]\r
7399         mov r1,z80sp\r
7400         writemem16\r
7401 .endif\r
7402         fetch 23\r
7403 ;@PUSH IX\r
7404 opcode_DD_E5:\r
7405         ldr r2,[z80xx]\r
7406         opPUSHreg r2\r
7407         fetch 15\r
7408 ;@JP (IX)\r
7409 opcode_DD_E9:\r
7410         ldrh r0,[z80xx,#2]\r
7411         rebasepc\r
7412         fetch 8\r
7413 ;@LD SP,IX\r
7414 opcode_DD_F9:\r
7415 .if FAST_Z80SP\r
7416         ldrh r0,[z80xx,#2]\r
7417         rebasesp\r
7418         mov z80sp,r0\r
7419 .else\r
7420         ldrh z80sp,[z80xx,#2]\r
7421 .endif\r
7422         fetch 10\r
7423 \r
7424 ;@##################################\r
7425 ;@##################################\r
7426 ;@###  opcodes ED  #########################\r
7427 ;@##################################\r
7428 ;@##################################\r
7429 \r
7430 opcode_ED_NF:\r
7431         fetch 8\r
7432 ;@      ldrb r0,[z80pc],#1\r
7433 ;@      ldr pc,[opcodes,r0, lsl #2]\r
7434 ;@      mov r0,#0xED00\r
7435 ;@      orr r0,r0,r1\r
7436 ;@      b end_loop\r
7437 \r
7438 ;@IN B,(C)\r
7439 opcode_ED_40:\r
7440         opIN_C\r
7441         and z80bc,z80bc,#0xFF<<16\r
7442         orr z80bc,z80bc,r0, lsl #24\r
7443         sub r1,opcodes,#0x100\r
7444         ldrb r0,[r1,r0]\r
7445         and z80f,z80f,#1<<CFlag\r
7446         orr z80f,z80f,r0\r
7447         fetch 12\r
7448 ;@OUT (C),B\r
7449 opcode_ED_41:\r
7450         mov r1,z80bc, lsr #24\r
7451         opOUT_C\r
7452         fetch 12\r
7453 \r
7454 ;@SBC HL,BC\r
7455 opcode_ED_42:\r
7456         opSBC16 z80bc\r
7457 \r
7458 ;@LD (NN),BC\r
7459 opcode_ED_43:\r
7460         ldrb r0,[z80pc],#1\r
7461         ldrb r1,[z80pc],#1\r
7462         orr r1,r0,r1, lsl #8\r
7463         mov r0,z80bc, lsr #16\r
7464         writemem16\r
7465         fetch 20\r
7466 ;@NEG\r
7467 opcode_ED_44:\r
7468         rsbs z80a,z80a,#0\r
7469         mrs z80f,cpsr\r
7470         mov z80f,z80f,lsr#28                                    ;@S,Z,V&C\r
7471         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@invert C and set n.\r
7472         tst z80a,#0x0F000000                                    ;@H, correct\r
7473         orrne z80f,z80f,#1<<HFlag\r
7474         fetch 8\r
7475  \r
7476 ;@RETN, moved to ED_4D\r
7477 ;@opcode_ED_45:\r
7478 \r
7479 ;@IM 0\r
7480 opcode_ED_46:\r
7481         strb z80a,[cpucontext,#z80im]\r
7482         fetch 8\r
7483 ;@LD I,A\r
7484 opcode_ED_47:\r
7485         str z80a,[cpucontext,#z80i]\r
7486         fetch 9\r
7487 ;@IN C,(C)\r
7488 opcode_ED_48:\r
7489         opIN_C\r
7490         and z80bc,z80bc,#0xFF<<24\r
7491         orr z80bc,z80bc,r0, lsl #16\r
7492         sub r1,opcodes,#0x100\r
7493         ldrb r0,[r1,r0]\r
7494         and z80f,z80f,#1<<CFlag\r
7495         orr z80f,z80f,r0\r
7496         fetch 12\r
7497 ;@OUT (C),C\r
7498 opcode_ED_49:\r
7499         mov r0,z80bc, lsr #16\r
7500         and r1,r0,#0xFF\r
7501         opOUT\r
7502         fetch 12\r
7503 ;@ADC HL,BC\r
7504 opcode_ED_4A:\r
7505         opADC16 z80bc\r
7506 ;@LD BC,(NN)\r
7507 opcode_ED_4B:\r
7508         ldrb r0,[z80pc],#1\r
7509         ldrb r1,[z80pc],#1\r
7510         orr r0,r0,r1, lsl #8\r
7511         readmem16\r
7512         mov z80bc,r0, lsl #16\r
7513         fetch 20\r
7514 \r
7515 ;@RETN\r
7516 opcode_ED_45:\r
7517 ;@RETI\r
7518 opcode_ED_4D:\r
7519         ldrb r0,[cpucontext,#z80if]\r
7520         tst r0,#Z80_IF2\r
7521         orrne r0,r0,#Z80_IF1\r
7522         biceq r0,r0,#Z80_IF1\r
7523         strb r0,[cpucontext,#z80if]\r
7524     opPOP\r
7525         rebasepc\r
7526         fetch 14\r
7527 \r
7528 ;@LD R,A\r
7529 opcode_ED_4F:\r
7530         mov r0,z80a,lsr#24\r
7531         strb r0,[cpucontext,#z80r]\r
7532         fetch 9\r
7533 \r
7534 ;@IN D,(C)\r
7535 opcode_ED_50:\r
7536         opIN_C\r
7537         and z80de,z80de,#0xFF<<16\r
7538         orr z80de,z80de,r0, lsl #24\r
7539         sub r1,opcodes,#0x100\r
7540         ldrb r0,[r1,r0]\r
7541         and z80f,z80f,#1<<CFlag\r
7542         orr z80f,z80f,r0\r
7543         fetch 12\r
7544 ;@OUT (C),D\r
7545 opcode_ED_51:\r
7546         mov r1,z80de, lsr #24\r
7547         opOUT_C\r
7548         fetch 12\r
7549 ;@SBC HL,DE\r
7550 opcode_ED_52:\r
7551         opSBC16 z80de\r
7552 ;@LD (NN),DE\r
7553 opcode_ED_53:\r
7554         ldrb r0,[z80pc],#1\r
7555         ldrb r1,[z80pc],#1\r
7556         orr r1,r0,r1, lsl #8\r
7557         mov r0,z80de, lsr #16\r
7558         writemem16\r
7559         fetch 20\r
7560 ;@IM 1\r
7561 opcode_ED_56:\r
7562         mov r0,#1\r
7563         strb r0,[cpucontext,#z80im]\r
7564         fetch 8\r
7565 ;@LD A,I\r
7566 opcode_ED_57:\r
7567         ldr z80a,[cpucontext,#z80i]\r
7568         tst z80a,#0xFF000000\r
7569         and z80f,z80f,#(1<<CFlag)\r
7570         orreq z80f,z80f,#(1<<ZFlag)\r
7571         orrmi z80f,z80f,#(1<<SFlag)\r
7572         ldrb r0,[cpucontext,#z80if]\r
7573         tst r0,#Z80_IF2\r
7574         orrne z80f,z80f,#(1<<VFlag)\r
7575         fetch 9\r
7576 ;@IN E,(C)\r
7577 opcode_ED_58:\r
7578         opIN_C\r
7579         and z80de,z80de,#0xFF<<24\r
7580         orr z80de,z80de,r0, lsl #16\r
7581         sub r1,opcodes,#0x100\r
7582         ldrb r0,[r1,r0]\r
7583         and z80f,z80f,#1<<CFlag\r
7584         orr z80f,z80f,r0\r
7585         fetch 12\r
7586 ;@OUT (C),E\r
7587 opcode_ED_59:\r
7588         mov r1,z80de, lsr #16\r
7589         and r1,r1,#0xFF\r
7590         opOUT_C\r
7591         fetch 12\r
7592 ;@ADC HL,DE\r
7593 opcode_ED_5A:\r
7594         opADC16 z80de\r
7595 ;@LD DE,(NN)\r
7596 opcode_ED_5B:\r
7597         ldrb r0,[z80pc],#1\r
7598         ldrb r1,[z80pc],#1\r
7599         orr r0,r0,r1, lsl #8\r
7600         readmem16\r
7601         mov z80de,r0, lsl #16\r
7602         fetch 20\r
7603 ;@IM 2\r
7604 opcode_ED_5E:\r
7605         mov r0,#2\r
7606         strb r0,[cpucontext,#z80im]\r
7607         fetch 8\r
7608 ;@LD A,R\r
7609 opcode_ED_5F:\r
7610         ldrb r0,[cpucontext,#z80r]\r
7611         and r0,r0,#0x80\r
7612         rsb r1,z80_icount,#0\r
7613         and r1,r1,#0x7F\r
7614         orr r0,r0,r1\r
7615         movs z80a,r0, lsl #24\r
7616         and z80f,z80f,#1<<CFlag\r
7617         orrmi z80f,z80f,#(1<<SFlag)\r
7618         orreq z80f,z80f,#(1<<ZFlag)\r
7619         ldrb r0,[cpucontext,#z80if]\r
7620         tst r0,#Z80_IF2\r
7621         orrne z80f,z80f,#(1<<VFlag)\r
7622         fetch 9\r
7623 ;@IN H,(C)\r
7624 opcode_ED_60:\r
7625         opIN_C\r
7626         and z80hl,z80hl,#0xFF<<16\r
7627         orr z80hl,z80hl,r0, lsl #24\r
7628         sub r1,opcodes,#0x100\r
7629         ldrb r0,[r1,r0]\r
7630         and z80f,z80f,#1<<CFlag\r
7631         orr z80f,z80f,r0\r
7632         fetch 12\r
7633 ;@OUT (C),H\r
7634 opcode_ED_61:\r
7635         mov r1,z80hl, lsr #24\r
7636         opOUT_C\r
7637         fetch 12\r
7638 ;@SBC HL,HL\r
7639 opcode_ED_62:\r
7640         opSBC16HL\r
7641 ;@RRD\r
7642 opcode_ED_67:\r
7643         readmem8HL\r
7644         mov r1,r0,ror#4\r
7645         orr r0,r1,z80a,lsr#20\r
7646         bic z80a,z80a,#0x0F000000\r
7647         orr z80a,z80a,r1,lsr#4\r
7648         writemem8HL\r
7649         sub r1,opcodes,#0x100\r
7650         ldrb r0,[r1,z80a, lsr #24]\r
7651         and z80f,z80f,#1<<CFlag\r
7652         orr z80f,z80f,r0\r
7653         fetch 18\r
7654 ;@IN L,(C)\r
7655 opcode_ED_68:\r
7656         opIN_C\r
7657         and z80hl,z80hl,#0xFF<<24\r
7658         orr z80hl,z80hl,r0, lsl #16\r
7659         and z80f,z80f,#1<<CFlag\r
7660         sub r1,opcodes,#0x100\r
7661         ldrb r0,[r1,r0]\r
7662         orr z80f,z80f,r0\r
7663         fetch 12\r
7664 ;@OUT (C),L\r
7665 opcode_ED_69:\r
7666         mov r1,z80hl, lsr #16\r
7667         and r1,r1,#0xFF\r
7668         opOUT_C\r
7669         fetch 12\r
7670 ;@ADC HL,HL\r
7671 opcode_ED_6A:\r
7672         opADC16HL\r
7673 ;@RLD\r
7674 opcode_ED_6F:\r
7675         readmem8HL\r
7676         orr r0,r0,z80a,lsl#4\r
7677         mov r0,r0,ror#28\r
7678         and z80a,z80a,#0xF0000000\r
7679         orr z80a,z80a,r0,lsl#16\r
7680         and z80a,z80a,#0xFF000000\r
7681         writemem8HL\r
7682         sub r1,opcodes,#0x100\r
7683         ldrb r0,[r1,z80a, lsr #24]\r
7684         and z80f,z80f,#1<<CFlag\r
7685         orr z80f,z80f,r0\r
7686         fetch 18\r
7687 ;@IN F,(C)\r
7688 opcode_ED_70:\r
7689         opIN_C\r
7690         and z80f,z80f,#1<<CFlag\r
7691         sub r1,opcodes,#0x100\r
7692         ldrb r0,[r1,r0]\r
7693         orr z80f,z80f,r0\r
7694         fetch 12\r
7695 ;@OUT (C),0\r
7696 opcode_ED_71:\r
7697         mov r1,#0\r
7698         opOUT_C\r
7699         fetch 12\r
7700 \r
7701 ;@SBC HL,SP\r
7702 opcode_ED_72:\r
7703 .if FAST_Z80SP\r
7704         ldr r0,[cpucontext,#z80sp_base]\r
7705         sub r0,z80sp,r0\r
7706         mov r0, r0, lsl #16\r
7707 .else\r
7708         mov r0,z80sp,lsl#16\r
7709 .endif\r
7710         opSBC16 r0\r
7711 ;@LD (NN),SP\r
7712 opcode_ED_73:\r
7713         ldrb r0,[z80pc],#1\r
7714         ldrb r1,[z80pc],#1\r
7715         orr r1,r0,r1, lsl #8\r
7716 .if FAST_Z80SP\r
7717         ldr r0,[cpucontext,#z80sp_base]\r
7718         sub r0,z80sp,r0\r
7719 .else\r
7720         mov r0,z80sp\r
7721 .endif\r
7722         writemem16\r
7723         fetch 16\r
7724 ;@IN A,(C)\r
7725 opcode_ED_78:\r
7726         opIN_C\r
7727         mov z80a,r0, lsl #24\r
7728         and z80f,z80f,#1<<CFlag\r
7729         sub r1,opcodes,#0x100\r
7730         ldrb r0,[r1,r0]\r
7731         orr z80f,z80f,r0\r
7732         fetch 12\r
7733 ;@OUT (C),A\r
7734 opcode_ED_79:\r
7735         mov r1,z80a, lsr #24\r
7736         opOUT_C\r
7737         fetch 12\r
7738 ;@ADC HL,SP\r
7739 opcode_ED_7A:\r
7740 .if FAST_Z80SP\r
7741         ldr r0,[cpucontext,#z80sp_base]\r
7742         sub r0,z80sp,r0\r
7743         mov r0, r0, lsl #16\r
7744 .else\r
7745         mov r0,z80sp,lsl#16\r
7746 .endif\r
7747         opADC16 r0\r
7748 ;@LD SP,(NN)\r
7749 opcode_ED_7B:\r
7750         ldrb r0,[z80pc],#1\r
7751         ldrb r1,[z80pc],#1\r
7752         orr r0,r0,r1, lsl #8\r
7753         readmem16\r
7754 .if FAST_Z80SP\r
7755         rebasesp\r
7756 .endif\r
7757         mov z80sp,r0\r
7758         fetch 20\r
7759 ;@LDI\r
7760 opcode_ED_A0:\r
7761         copymem8HL_DE\r
7762         add z80hl,z80hl,#1<<16\r
7763         add z80de,z80de,#1<<16\r
7764         subs z80bc,z80bc,#1<<16\r
7765         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7766         orrne z80f,z80f,#1<<VFlag\r
7767         fetch 16\r
7768 ;@CPI\r
7769 opcode_ED_A1:\r
7770         readmem8HL\r
7771         add z80hl,z80hl,#0x00010000\r
7772         mov r1,z80a,lsl#4\r
7773         cmp z80a,r0,lsl#24\r
7774         and z80f,z80f,#1<<CFlag\r
7775         orr z80f,z80f,#1<<NFlag\r
7776         orrmi z80f,z80f,#1<<SFlag\r
7777         orreq z80f,z80f,#1<<ZFlag\r
7778         cmp r1,r0,lsl#28\r
7779         orrcc z80f,z80f,#1<<HFlag\r
7780         subs z80bc,z80bc,#0x00010000\r
7781         orrne z80f,z80f,#1<<VFlag\r
7782         fetch 16\r
7783 ;@INI\r
7784 opcode_ED_A2:\r
7785         opIN_C\r
7786         and z80f,r0,#0x80\r
7787         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7788 ;@      mov r1,z80bc,lsl#8\r
7789 ;@      add r1,r1,#0x01000000\r
7790 ;@      adds r1,r1,r0,lsl#24\r
7791 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7792         writemem8HL\r
7793         add z80hl,z80hl,#1<<16\r
7794         sub z80bc,z80bc,#1<<24\r
7795         tst z80bc,#0xFF<<24\r
7796         orrmi z80f,z80f,#1<<SFlag\r
7797         orreq z80f,z80f,#1<<ZFlag\r
7798         fetch 16\r
7799 \r
7800 ;@OUTI\r
7801 opcode_ED_A3:\r
7802         readmem8HL\r
7803         add z80hl,z80hl,#1<<16\r
7804         and z80f,r0,#0x80\r
7805         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7806         mov r1,z80hl,lsl#8\r
7807         adds r1,r1,r0,lsl#24\r
7808         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL)+L > 0xFF\r
7809         sub z80bc,z80bc,#1<<24\r
7810         tst z80bc,#0xFF<<24\r
7811         orrmi z80f,z80f,#1<<SFlag\r
7812         orreq z80f,z80f,#1<<ZFlag\r
7813         mov r1,r0\r
7814         opOUT_C\r
7815         fetch 16\r
7816 \r
7817 ;@LDD\r
7818 opcode_ED_A8:\r
7819         copymem8HL_DE\r
7820         sub z80hl,z80hl,#1<<16\r
7821         sub z80de,z80de,#1<<16\r
7822         subs z80bc,z80bc,#1<<16\r
7823         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7824         orrne z80f,z80f,#1<<VFlag\r
7825         fetch 16\r
7826 \r
7827 ;@CPD\r
7828 opcode_ED_A9:\r
7829         readmem8HL\r
7830         sub z80hl,z80hl,#1<<16\r
7831         mov r1,z80a,lsl#4\r
7832         cmp z80a,r0,lsl#24\r
7833         and z80f,z80f,#1<<CFlag\r
7834         orr z80f,z80f,#1<<NFlag\r
7835         orrmi z80f,z80f,#1<<SFlag\r
7836         orreq z80f,z80f,#1<<ZFlag\r
7837         cmp r1,r0,lsl#28\r
7838         orrcc z80f,z80f,#1<<HFlag\r
7839         subs z80bc,z80bc,#0x00010000\r
7840         orrne z80f,z80f,#1<<VFlag\r
7841         fetch 16\r
7842 \r
7843 ;@IND\r
7844 opcode_ED_AA:\r
7845         opIN_C\r
7846         and z80f,r0,#0x80\r
7847         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7848 ;@      mov r1,z80bc,lsl#8\r
7849 ;@      sub r1,r1,#0x01000000\r
7850 ;@      adds r1,r1,r0,lsl#24\r
7851 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
7852         writemem8HL\r
7853         sub z80hl,z80hl,#1<<16\r
7854         sub z80bc,z80bc,#1<<24\r
7855         tst z80bc,#0xFF<<24\r
7856         orrmi z80f,z80f,#1<<SFlag\r
7857         orreq z80f,z80f,#1<<ZFlag\r
7858         fetch 16\r
7859 \r
7860 ;@OUTD\r
7861 opcode_ED_AB:\r
7862         readmem8HL\r
7863         sub z80hl,z80hl,#1<<16\r
7864         and z80f,r0,#0x80\r
7865         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7866         mov r1,z80hl,lsl#8\r
7867         adds r1,r1,r0,lsl#24\r
7868         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
7869         sub z80bc,z80bc,#1<<24\r
7870         tst z80bc,#0xFF<<24\r
7871         orrmi z80f,z80f,#1<<SFlag\r
7872         orreq z80f,z80f,#1<<ZFlag\r
7873         mov r1,r0\r
7874         opOUT_C\r
7875         fetch 16\r
7876 ;@LDIR\r
7877 opcode_ED_B0:\r
7878         copymem8HL_DE\r
7879         add z80hl,z80hl,#1<<16\r
7880         add z80de,z80de,#1<<16\r
7881         subs z80bc,z80bc,#1<<16\r
7882         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7883         orrne z80f,z80f,#1<<VFlag\r
7884         subne z80pc,z80pc,#2\r
7885         subne z80_icount,z80_icount,#5\r
7886         fetch 16\r
7887 \r
7888 ;@CPIR\r
7889 opcode_ED_B1:\r
7890         readmem8HL\r
7891         add z80hl,z80hl,#1<<16    \r
7892         mov r1,z80a,lsl#4\r
7893         cmp z80a,r0,lsl#24\r
7894         and z80f,z80f,#1<<CFlag\r
7895         orr z80f,z80f,#1<<NFlag\r
7896         orrmi z80f,z80f,#1<<SFlag\r
7897         orreq z80f,z80f,#1<<ZFlag\r
7898         cmp r1,r0,lsl#28\r
7899         orrcc z80f,z80f,#1<<HFlag\r
7900         subs z80bc,z80bc,#1<<16\r
7901         bne opcode_ED_B1_decpc\r
7902         fetch 16\r
7903 opcode_ED_B1_decpc:\r
7904         orr z80f,z80f,#1<<VFlag\r
7905         tst z80f,#1<<ZFlag\r
7906         subeq z80pc,z80pc,#2\r
7907         subeq z80_icount,z80_icount,#5\r
7908         fetch 16\r
7909 ;@INIR\r
7910 opcode_ED_B2:\r
7911         opIN_C\r
7912         and z80f,r0,#0x80\r
7913         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7914 ;@      mov r1,z80bc,lsl#8\r
7915 ;@      add r1,r1,#0x01000000\r
7916 ;@      adds r1,r1,r0,lsl#24\r
7917 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7918         writemem8HL\r
7919         add z80hl,z80hl,#1<<16\r
7920         sub z80bc,z80bc,#1<<24\r
7921         tst z80bc,#0xFF<<24\r
7922         orrmi z80f,z80f,#1<<SFlag\r
7923         orreq z80f,z80f,#1<<ZFlag\r
7924         subne z80pc,z80pc,#2\r
7925         subne z80_icount,z80_icount,#5\r
7926         fetch 16\r
7927 ;@OTIR\r
7928 opcode_ED_B3:\r
7929         readmem8HL\r
7930         add z80hl,z80hl,#1<<16\r
7931         and z80f,r0,#0x80\r
7932         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7933         mov r1,z80hl,lsl#8\r
7934         adds r1,r1,r0,lsl#24\r
7935         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
7936         sub z80bc,z80bc,#1<<24\r
7937         tst z80bc,#0xFF<<24\r
7938         orrmi z80f,z80f,#1<<SFlag\r
7939         orreq z80f,z80f,#1<<ZFlag\r
7940         subne z80pc,z80pc,#2\r
7941         subne z80_icount,z80_icount,#5\r
7942         mov r1,r0\r
7943         opOUT_C\r
7944         fetch 16\r
7945 ;@LDDR\r
7946 opcode_ED_B8:\r
7947         copymem8HL_DE\r
7948         sub z80hl,z80hl,#1<<16\r
7949         sub z80de,z80de,#1<<16\r
7950         subs z80bc,z80bc,#1<<16\r
7951         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7952         orrne z80f,z80f,#1<<VFlag\r
7953         subne z80pc,z80pc,#2\r
7954         subne z80_icount,z80_icount,#5\r
7955         fetch 16\r
7956 \r
7957 ;@CPDR\r
7958 opcode_ED_B9:\r
7959         readmem8HL\r
7960         sub z80hl,z80hl,#1<<16\r
7961         mov r1,z80a,lsl#4\r
7962         cmp z80a,r0,lsl#24\r
7963         and z80f,z80f,#1<<CFlag\r
7964         orr z80f,z80f,#1<<NFlag\r
7965         orrmi z80f,z80f,#1<<SFlag\r
7966         orreq z80f,z80f,#1<<ZFlag\r
7967         cmp r1,r0,lsl#28\r
7968         orrcc z80f,z80f,#1<<HFlag\r
7969         subs z80bc,z80bc,#1<<16\r
7970         bne opcode_ED_B9_decpc\r
7971         fetch 16\r
7972 opcode_ED_B9_decpc:\r
7973         orr z80f,z80f,#1<<VFlag\r
7974         tst z80f,#1<<ZFlag\r
7975         subeq z80pc,z80pc,#2\r
7976         subeq z80_icount,z80_icount,#5\r
7977         fetch 16\r
7978 ;@INDR\r
7979 opcode_ED_BA:\r
7980         opIN_C\r
7981         and z80f,r0,#0x80\r
7982         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7983 ;@      mov r1,z80bc,lsl#8\r
7984 ;@      sub r1,r1,#0x01000000\r
7985 ;@      adds r1,r1,r0,lsl#24\r
7986 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
7987         writemem8HL\r
7988         sub z80hl,z80hl,#1<<16\r
7989         sub z80bc,z80bc,#1<<24\r
7990         tst z80bc,#0xFF<<24\r
7991         orrmi z80f,z80f,#1<<SFlag\r
7992         orreq z80f,z80f,#1<<ZFlag\r
7993         subne z80pc,z80pc,#2\r
7994         subne z80_icount,z80_icount,#5\r
7995         fetch 16\r
7996 ;@OTDR\r
7997 opcode_ED_BB:\r
7998         readmem8HL\r
7999         sub z80hl,z80hl,#1<<16\r
8000         and z80f,r0,#0x80\r
8001         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8002         mov r1,z80hl,lsl#8\r
8003         adds r1,r1,r0,lsl#24\r
8004         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
8005         sub z80bc,z80bc,#1<<24\r
8006         tst z80bc,#0xFF<<24\r
8007         orrmi z80f,z80f,#1<<SFlag\r
8008         orreq z80f,z80f,#1<<ZFlag\r
8009         subne z80pc,z80pc,#2\r
8010         subne z80_icount,z80_icount,#5\r
8011         mov r1,r0\r
8012         opOUT_C\r
8013         fetch 16\r
8014 ;@##################################\r
8015 ;@##################################\r
8016 ;@###  opcodes FD  #########################\r
8017 ;@##################################\r
8018 ;@##################################\r
8019 ;@Since DD and FD opcodes are all the same apart from the address\r
8020 ;@register they use.  When a FD intruction the program runs the code\r
8021 ;@from the DD location but the address of the IY reg is passed instead\r
8022 ;@of IX\r
8023 \r
8024 ;@end_loop:\r
8025 ;@     b end_loop\r
8026 \r
8027 ;@ vim:filetype=armasm\r
8028 \r