giz menu works
[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 \r
19 .if INTERRUPT_MODE\r
20       .extern Interrupt\r
21 .endif\r
22 \r
23 .if DRZ80_FOR_PICODRIVE\r
24 .include "port_config.s"\r
25       .extern YM2612Read_\r
26 .if EXTERNAL_YM2612\r
27       .extern YM2612Read_940\r
28 .endif\r
29       .extern PicoRead8\r
30       .extern Pico\r
31       .extern z80_write\r
32 .endif\r
33 \r
34 DrZ80Ver: .long 0x0001\r
35 \r
36 ;@ --------------------------- Defines ----------------------------\r
37 ;@ Make sure that regs/pointers for z80pc to z80sp match up!\r
38 \r
39         opcodes    .req r3\r
40         z80_icount .req r4\r
41         cpucontext .req r5\r
42         z80pc      .req r6\r
43         z80a       .req r7\r
44         z80f       .req r8\r
45         z80bc      .req r9\r
46         z80de      .req r10\r
47         z80hl      .req r11\r
48         z80sp      .req r12     \r
49         z80xx      .req lr\r
50 \r
51         .equ z80pc_pointer,           0                  ;@  0\r
52         .equ z80a_pointer,            z80pc_pointer+4    ;@  4\r
53         .equ z80f_pointer,            z80a_pointer+4     ;@  8\r
54         .equ z80bc_pointer,           z80f_pointer+4     ;@  \r
55         .equ z80de_pointer,           z80bc_pointer+4\r
56         .equ z80hl_pointer,           z80de_pointer+4\r
57         .equ z80sp_pointer,           z80hl_pointer+4\r
58         .equ z80pc_base,              z80sp_pointer+4\r
59         .equ z80sp_base,              z80pc_base+4\r
60         .equ z80ix,                   z80sp_base+4\r
61         .equ z80iy,                   z80ix+4\r
62         .equ z80i,                    z80iy+4\r
63         .equ z80a2,                   z80i+4\r
64         .equ z80f2,                   z80a2+4\r
65         .equ z80bc2,                  z80f2+4\r
66         .equ z80de2,                  z80bc2+4\r
67         .equ z80hl2,                  z80de2+4\r
68         .equ cycles_pointer,          z80hl2+4     \r
69         .equ previouspc,              cycles_pointer+4     \r
70         .equ z80irq,                  previouspc+4\r
71         .equ z80if,                   z80irq+1\r
72         .equ z80im,                   z80if+1\r
73         .equ z80r,                    z80im+1\r
74         .equ z80irqvector,            z80r+1\r
75         .equ z80irqcallback,          z80irqvector+4\r
76         .equ z80_write8,              z80irqcallback+4\r
77         .equ z80_write16,             z80_write8+4\r
78         .equ z80_in,                  z80_write16+4\r
79         .equ z80_out,                 z80_in+4\r
80         .equ z80_read8,               z80_out+4\r
81         .equ z80_read16,              z80_read8+4\r
82         .equ z80_rebaseSP,            z80_read16+4\r
83         .equ z80_rebasePC,            z80_rebaseSP+4\r
84 \r
85         .equ VFlag, 0\r
86         .equ CFlag, 1\r
87         .equ ZFlag, 2\r
88         .equ SFlag, 3\r
89         .equ HFlag, 4\r
90         .equ NFlag, 5\r
91         .equ Flag3, 6\r
92         .equ Flag5, 7\r
93 \r
94         .equ Z80_CFlag, 0\r
95         .equ Z80_NFlag, 1\r
96         .equ Z80_VFlag, 2\r
97         .equ Z80_Flag3, 3\r
98         .equ Z80_HFlag, 4\r
99         .equ Z80_Flag5, 5\r
100         .equ Z80_ZFlag, 6\r
101         .equ Z80_SFlag, 7\r
102 \r
103         .equ Z80_IF1, 1<<0\r
104         .equ Z80_IF2, 1<<1\r
105         .equ Z80_HALT, 1<<2\r
106 \r
107 ;@---------------------------------------\r
108 \r
109 .text\r
110 \r
111 .if DRZ80_FOR_PICODRIVE\r
112 \r
113 .macro YM2612Read_and_ret8\r
114         stmfd sp!,{r3,r12,lr}\r
115 .if EXTERNAL_YM2612\r
116     ldr r1,=PicoOpt\r
117     ldr r1,[r1]\r
118     tst r1,#0x200\r
119     bne 10f\r
120     bl YM2612Read_\r
121         ldmfd sp!,{r3,r12,pc}\r
122 10:\r
123     bl YM2612Read_940\r
124 .else\r
125     bl YM2612Read_\r
126 .endif\r
127         ldmfd sp!,{r3,r12,pc}\r
128 .endm\r
129 \r
130 .macro YM2612Read_and_ret16\r
131         stmfd sp!,{r3,r12,lr}\r
132 .if EXTERNAL_YM2612\r
133     ldr r0,=PicoOpt\r
134     ldr r0,[r0]\r
135     tst r0,#0x200\r
136     bne 10f\r
137     bl YM2612Read_\r
138     orr r0,r0,r0,lsl #8\r
139         ldmfd sp!,{r3,r12,pc}\r
140 10:\r
141     bl YM2612Read_940\r
142     orr r0,r0,r0,lsl #8\r
143 .else\r
144     bl YM2612Read_\r
145     orr r0,r0,r0,lsl #8\r
146 .endif\r
147         ldmfd sp!,{r3,r12,pc}\r
148 .endm\r
149 \r
150 pico_z80_read8: @ addr\r
151     cmp r0,#0x2000         @ Z80 RAM\r
152     ldrlt r1,[cpucontext,#z80sp_base]\r
153     ldrltb r0,[r1,r0]\r
154     bxlt lr\r
155 \r
156     cmp r0,#0x8000         @ 68k bank\r
157     blt 1f\r
158     ldr r2,=(Pico+0x22212)\r
159     ldrh r1,[r2]\r
160     bic r0,r0,#0x3f8000\r
161     orr r0,r0,r1,lsl #15\r
162     ldr r1,[r2,#-0xe]      @ ROM size\r
163     cmp r0,r1\r
164     ldrlt r1,[r2,#-0x12]   @ ROM\r
165     eorlt r0,r0,#1         @ our ROM is byteswapped\r
166     ldrltb r0,[r1,r0]\r
167     bxlt lr\r
168         stmfd sp!,{r3,r12,lr}\r
169     bl PicoRead8\r
170         ldmfd sp!,{r3,r12,pc}\r
171 1:\r
172     mov r1,r0,lsr #13\r
173     cmp r1,#2              @ YM2612 (0x4000-0x5fff)\r
174     bne 0f\r
175     and r0,r0,#3\r
176         YM2612Read_and_ret8\r
177 0:\r
178     cmp r0,#0x4000\r
179     movge r0,#0xff\r
180     bxge lr\r
181     ldr r1,[cpucontext,#z80sp_base]\r
182     bic r0,r0,#0x0fe000    @ Z80 RAM (mirror)\r
183     ldrb r0,[r1,r0]\r
184     bx lr\r
185 \r
186 pico_z80_read16: @ addr\r
187     cmp r0,#0x2000         @ Z80 RAM\r
188     bge 2f\r
189     ldr r1,[cpucontext,#z80sp_base]\r
190     ldrb r0,[r1,r0]!\r
191     ldrb r1,[r1,#1]\r
192     orr r0,r0,r1,lsl #8\r
193     bx lr\r
194 \r
195 2:\r
196     cmp r0,#0x8000         @ 68k bank\r
197     blt 1f\r
198     ldr r2,=(Pico+0x22212)\r
199     ldrh r1,[r2]\r
200     bic r0,r0,#0x1f8000\r
201     orr r0,r0,r1,lsl #15\r
202     ldr r1,[r2,#-0xe]      @ ROM size\r
203     cmp r0,r1\r
204     ldr r1,[r2,#-0x12]     @ ROM\r
205     tst r0,#1\r
206     eor r0,r0,#1\r
207     ldrb r0,[r1,r0]!\r
208     ldreqb r1,[r1,#-1]\r
209     ldrneb r1,[r1,#3]      @ this is due to byteswapped ROM\r
210     orr r0,r0,r1,lsl #8\r
211     bx lr\r
212 3:\r
213     stmfd sp!,{r3-r5,r12,lr}\r
214     mov r4,r0\r
215     bl PicoRead8\r
216     mov r5,r0\r
217     add r0,r4,#1\r
218     bl PicoRead8\r
219     orr r0,r5,r0,lsl #8\r
220         ldmfd sp!,{r3-r5,r12,pc}\r
221 1:\r
222     mov r1,r0,lsr #13\r
223     cmp r1,#2              @ YM2612 (0x4000-0x5fff)\r
224     bne 0f\r
225     and r0,r0,#3\r
226         YM2612Read_and_ret16\r
227 0:\r
228     cmp r0,#0x4000\r
229     movge r0,#0xff\r
230     bxge lr\r
231     ldr r1,[cpucontext,#z80sp_base]\r
232     bic r0,r0,#0x0fe000    @ Z80 RAM (mirror)\r
233     ldrb r0,[r1,r0]!\r
234     ldrb r1,[r1,#1]\r
235     orr r0,r0,r1,lsl #8\r
236     bx lr\r
237 \r
238 pico_z80_write8: @ data, addr\r
239     cmp r1,#0x4000\r
240     bge 1f\r
241     ldr r2,[cpucontext,#z80sp_base]\r
242     bic r1,r1,#0x0fe000    @ Z80 RAM\r
243     strb r0,[r2,r1]\r
244     bx lr\r
245 1:\r
246     stmfd sp!,{r3,r12,lr}\r
247     bl z80_write\r
248     ldmfd sp!,{r3,r12,pc}\r
249 \r
250 pico_z80_write16: @ data, addr\r
251     cmp r1,#0x4000\r
252     bge 1f\r
253     ldr r2,[cpucontext,#z80sp_base]\r
254     bic r1,r1,#0x0fe000    @ Z80 RAM\r
255     strb r0,[r2,r1]!\r
256     mov r0,r0,lsr #8\r
257     strb r0,[r2,#1]\r
258     bx lr\r
259 1:\r
260         stmfd sp!,{r3-r5,r12,lr}\r
261     mov r4,r0\r
262     mov r5,r1\r
263         bl z80_write\r
264     mov r0,r4,lsr #8\r
265     add r1,r5,#1\r
266         bl z80_write\r
267         ldmfd sp!,{r3-r5,r12,pc}\r
268 \r
269     .pool\r
270 .endif\r
271 \r
272 .macro fetch cycs\r
273         subs z80_icount,z80_icount,#\cycs\r
274 .if UPDATE_CONTEXT\r
275     str z80pc,[cpucontext,#z80pc_pointer]\r
276         str z80_icount,[cpucontext,#cycles_pointer]\r
277         ldr r1,[cpucontext,#z80pc_base]\r
278         sub r2,z80pc,r1\r
279         str r2,[cpucontext,#previouspc]\r
280 .endif\r
281         ldrplb r0,[z80pc],#1\r
282         ldrpl pc,[opcodes,r0, lsl #2]\r
283         bmi z80_execute_end\r
284 .endm\r
285 \r
286 .macro eatcycles cycs\r
287         sub z80_icount,z80_icount,#\cycs\r
288 .if UPDATE_CONTEXT\r
289         str z80_icount,[cpucontext,#cycles_pointer]\r
290 .endif\r
291 .endm\r
292 \r
293 .macro readmem8\r
294 .if UPDATE_CONTEXT\r
295     str z80pc,[cpucontext,#z80pc_pointer]\r
296 .endif\r
297 .if DRZ80_FOR_PICODRIVE\r
298     bl pico_z80_read8\r
299 .else\r
300     stmfd sp!,{r3,r12}\r
301         mov lr,pc\r
302         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
303         ldmfd sp!,{r3,r12}\r
304 .endif\r
305 .endm\r
306 \r
307 .macro readmem8HL\r
308         mov r0,z80hl, lsr #16\r
309         readmem8\r
310 .endm\r
311 \r
312 .macro readmem16\r
313 .if UPDATE_CONTEXT\r
314      str z80pc,[cpucontext,#z80pc_pointer]\r
315 .endif\r
316 .if DRZ80_FOR_PICODRIVE\r
317     bl pico_z80_read16\r
318 .else\r
319         stmfd sp!,{r3,r12}\r
320         mov lr,pc\r
321         ldr pc,[cpucontext,#z80_read16]\r
322         ldmfd sp!,{r3,r12}\r
323 .endif\r
324 .endm\r
325 \r
326 .macro writemem8\r
327 .if UPDATE_CONTEXT\r
328      str z80pc,[cpucontext,#z80pc_pointer]\r
329 .endif\r
330 .if DRZ80_FOR_PICODRIVE\r
331     bl pico_z80_write8\r
332 .else\r
333         stmfd sp!,{r3,r12}\r
334         mov lr,pc\r
335         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
336         ldmfd sp!,{r3,r12}\r
337 .endif\r
338 .endm\r
339 \r
340 .macro writemem8DE\r
341         mov r1,z80de, lsr #16\r
342         writemem8\r
343 .endm\r
344 \r
345 .macro writemem8HL\r
346         mov r1,z80hl, lsr #16\r
347         writemem8\r
348 .endm\r
349 \r
350 .macro writemem16\r
351 .if UPDATE_CONTEXT\r
352      str z80pc,[cpucontext,#z80pc_pointer]\r
353 .endif\r
354 .if DRZ80_FOR_PICODRIVE\r
355     bl pico_z80_write16\r
356 .else\r
357         stmfd sp!,{r3,r12}\r
358         mov lr,pc\r
359         ldr pc,[cpucontext,#z80_write16]                ;@ r0=data r1=addr\r
360         ldmfd sp!,{r3,r12}\r
361 .endif\r
362 .endm\r
363 \r
364 .macro copymem8HL_DE\r
365 .if UPDATE_CONTEXT\r
366      str z80pc,[cpucontext,#z80pc_pointer]\r
367 .endif\r
368         mov r0,z80hl, lsr #16\r
369 .if DRZ80_FOR_PICODRIVE\r
370     bl pico_z80_read8\r
371 .else\r
372     stmfd sp!,{r3,r12}\r
373         mov lr,pc\r
374         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
375 .endif\r
376 .if UPDATE_CONTEXT\r
377      str z80pc,[cpucontext,#z80pc_pointer]\r
378 .endif\r
379         mov r1,z80de, lsr #16\r
380 .if DRZ80_FOR_PICODRIVE\r
381     bl pico_z80_write8\r
382 .else\r
383         mov lr,pc\r
384         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
385         ldmfd sp!,{r3,r12}\r
386 .endif\r
387 .endm\r
388 ;@---------------------------------------\r
389 \r
390 .macro rebasepc\r
391 .if UPDATE_CONTEXT\r
392      str z80pc,[cpucontext,#z80pc_pointer]\r
393 .endif\r
394 .if DRZ80_FOR_PICODRIVE\r
395     bic r0,r0,#0xfe000\r
396     ldr r1,[cpucontext,#z80pc_base]\r
397     add z80pc,r1,r0\r
398 .else\r
399     stmfd sp!,{r3,r12}\r
400         mov lr,pc\r
401         ldr pc,[cpucontext,#z80_rebasePC]               ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
402         ldmfd sp!,{r3,r12}\r
403         mov z80pc,r0\r
404 .endif\r
405 .endm\r
406 \r
407 .macro rebasesp\r
408 .if UPDATE_CONTEXT\r
409      str z80pc,[cpucontext,#z80pc_pointer]\r
410 .endif\r
411 .if DRZ80_FOR_PICODRIVE\r
412     bic r0,r0,#0xfe000\r
413     ldr r1,[cpucontext,#z80sp_base]\r
414     add r0,r1,r0\r
415 .else\r
416         stmfd sp!,{r3,r12}\r
417         mov lr,pc\r
418         ldr pc,[cpucontext,#z80_rebaseSP]               ;@ external function must rebase sp\r
419         ldmfd sp!,{r3,r12}\r
420 .endif\r
421 .endm\r
422 ;@----------------------------------------------------------------------------\r
423 \r
424 .macro opADC\r
425         movs z80f,z80f,lsr#2                                    ;@ get C\r
426         subcs r0,r0,#0x100\r
427         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of half carry\r
428         adcs z80a,z80a,r0,ror#8\r
429         mrs r0,cpsr                                                             ;@ S,Z,V&C\r
430         eor z80f,z80f,z80a,lsr#24\r
431         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
432         orr z80f,z80f,r0,lsr#28\r
433 .endm\r
434 \r
435 .macro opADCA\r
436         movs z80f,z80f,lsr#2                                    ;@ get C\r
437         orrcs z80a,z80a,#0x00800000\r
438         adds z80a,z80a,z80a\r
439         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
440         mov z80f,z80f,lsr#28\r
441         tst z80a,#0x10000000                                    ;@ H, correct\r
442         orrne z80f,z80f,#1<<HFlag\r
443         fetch 4\r
444 .endm\r
445 \r
446 .macro opADCH reg\r
447         mov r0,\reg,lsr#24\r
448         opADC\r
449         fetch 4\r
450 .endm\r
451 \r
452 .macro opADCL reg\r
453         movs z80f,z80f,lsr#2                                    ;@ get C\r
454         adc r0,\reg,\reg,lsr#15\r
455         orrcs z80a,z80a,#0x00800000\r
456         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
457         adds z80a,z80a,r0,lsl#23\r
458         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
459         mov z80f,z80f,lsr#28\r
460         cmn r1,r0,lsl#27\r
461         orrcs z80f,z80f,#1<<HFlag                               ;@ H, correct\r
462         fetch 4\r
463 .endm\r
464 \r
465 .macro opADCb\r
466         opADC\r
467 .endm\r
468 ;@---------------------------------------\r
469 \r
470 .macro opADD reg shift\r
471         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
472         adds z80a,z80a,\reg,lsl#\shift\r
473         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
474         mov z80f,z80f,lsr#28\r
475         cmn r1,\reg,lsl#\shift+4\r
476         orrcs z80f,z80f,#1<<HFlag\r
477 .endm\r
478 \r
479 .macro opADDA\r
480         adds z80a,z80a,z80a\r
481         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
482         mov z80f,z80f,lsr#28\r
483         tst z80a,#0x10000000                                    ;@ H, correct\r
484         orrne z80f,z80f,#1<<HFlag\r
485         fetch 4\r
486 .endm\r
487 \r
488 .macro opADDH reg\r
489         and r0,\reg,#0xFF000000\r
490         opADD r0 0\r
491         fetch 4\r
492 .endm\r
493 \r
494 .macro opADDL reg\r
495         opADD \reg 8\r
496         fetch 4\r
497 .endm\r
498 \r
499 .macro opADDb \r
500         opADD r0 24\r
501 .endm\r
502 ;@---------------------------------------\r
503 \r
504 .macro opADC16 reg\r
505         movs z80f,z80f,lsr#2                                    ;@ get C\r
506         adc r0,z80a,\reg,lsr#15\r
507         orrcs z80hl,z80hl,#0x00008000\r
508         mov r1,z80hl,lsl#4\r
509         adds z80hl,z80hl,r0,lsl#15\r
510         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
511         mov z80f,z80f,lsr#28\r
512         cmn r1,r0,lsl#19\r
513         orrcs z80f,z80f,#1<<HFlag\r
514         fetch 15\r
515 .endm\r
516 \r
517 .macro opADC16HL\r
518         movs z80f,z80f,lsr#2                                    ;@ get C\r
519         orrcs z80hl,z80hl,#0x00008000\r
520         adds z80hl,z80hl,z80hl\r
521         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
522         mov z80f,z80f,lsr#28\r
523         tst z80hl,#0x10000000                                   ;@ H, correct.\r
524         orrne z80f,z80f,#1<<HFlag\r
525         fetch 15\r
526 .endm\r
527 \r
528 .macro opADD16 reg1 reg2\r
529         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
530         adds \reg1,\reg1,\reg2\r
531         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
532         orrcs z80f,z80f,#1<<CFlag\r
533         cmn r1,\reg2,lsl#4\r
534         orrcs z80f,z80f,#1<<HFlag\r
535 .endm\r
536 \r
537 .macro opADD16s reg1 reg2 shift\r
538         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
539         adds \reg1,\reg1,\reg2,lsl#\shift\r
540         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
541         orrcs z80f,z80f,#1<<CFlag\r
542         cmn r1,\reg2,lsl#4+\shift\r
543         orrcs z80f,z80f,#1<<HFlag\r
544 .endm\r
545 \r
546 .macro opADD16_2 reg\r
547         adds \reg,\reg,\reg\r
548         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
549         orrcs z80f,z80f,#1<<CFlag\r
550         tst \reg,#0x10000000                                    ;@ H, correct.\r
551         orrne z80f,z80f,#1<<HFlag\r
552 .endm\r
553 ;@---------------------------------------\r
554 \r
555 .macro opAND reg shift\r
556         and z80a,z80a,\reg,lsl#\shift\r
557         sub r0,opcodes,#0x100\r
558         ldrb z80f,[r0,z80a, lsr #24]\r
559         orr z80f,z80f,#1<<HFlag\r
560 .endm\r
561 \r
562 .macro opANDA\r
563         sub r0,opcodes,#0x100\r
564         ldrb z80f,[r0,z80a, lsr #24]\r
565         orr z80f,z80f,#1<<HFlag\r
566         fetch 4\r
567 .endm\r
568 \r
569 .macro opANDH reg\r
570         opAND \reg 0\r
571         fetch 4\r
572 .endm\r
573 \r
574 .macro opANDL reg\r
575         opAND \reg 8\r
576         fetch 4\r
577 .endm\r
578 \r
579 .macro opANDb\r
580         opAND r0 24\r
581 .endm\r
582 ;@---------------------------------------\r
583 \r
584 .macro opBITH reg bit\r
585         and z80f,z80f,#1<<CFlag\r
586         tst \reg,#1<<(24+\bit)\r
587         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
588         orrne z80f,z80f,#(1<<HFlag)\r
589         fetch 8\r
590 .endm\r
591 \r
592 .macro opBIT7H reg\r
593         and z80f,z80f,#1<<CFlag\r
594         tst \reg,#1<<(24+7)\r
595         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
596         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
597         fetch 8\r
598 .endm\r
599 \r
600 .macro opBITL reg bit\r
601         and z80f,z80f,#1<<CFlag\r
602         tst \reg,#1<<(16+\bit)\r
603         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
604         orrne z80f,z80f,#(1<<HFlag)\r
605         fetch 8\r
606 .endm\r
607 \r
608 .macro opBIT7L reg\r
609         and z80f,z80f,#1<<CFlag\r
610         tst \reg,#1<<(16+7)\r
611         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
612         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
613         fetch 8\r
614 .endm\r
615 \r
616 .macro opBITb bit\r
617         and z80f,z80f,#1<<CFlag\r
618         tst r0,#1<<\bit\r
619         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
620         orrne z80f,z80f,#(1<<HFlag)\r
621 .endm\r
622 \r
623 .macro opBIT7b\r
624         and z80f,z80f,#1<<CFlag\r
625         tst r0,#1<<7\r
626         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
627         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
628 .endm\r
629 ;@---------------------------------------\r
630 \r
631 .macro opCP reg shift\r
632         mov r1,z80a,lsl#4                                               ;@ prepare for check of half carry\r
633         cmp z80a,\reg,lsl#\shift\r
634         mrs z80f,cpsr\r
635         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
636         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
637         cmp r1,\reg,lsl#\shift+4\r
638         orrcc z80f,z80f,#1<<HFlag\r
639 .endm\r
640 \r
641 .macro opCPA\r
642         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
643         fetch 4\r
644 .endm\r
645 \r
646 .macro opCPH reg\r
647         and r0,\reg,#0xFF000000\r
648         opCP r0 0\r
649         fetch 4\r
650 .endm\r
651 \r
652 .macro opCPL reg\r
653         opCP \reg 8\r
654         fetch 4\r
655 .endm\r
656 \r
657 .macro opCPb\r
658         opCP r0 24\r
659 .endm\r
660 ;@---------------------------------------\r
661 \r
662 .macro opDEC8 reg                                                       ;@for A and memory\r
663         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
664         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
665         tst \reg,#0x0f000000\r
666         orreq z80f,z80f,#1<<HFlag\r
667         subs \reg,\reg,#0x01000000\r
668         orrmi z80f,z80f,#1<<SFlag\r
669         orrvs z80f,z80f,#1<<VFlag\r
670         orreq z80f,z80f,#1<<ZFlag\r
671 .endm\r
672 \r
673 .macro opDEC8H reg                                                      ;@for B, D & H\r
674         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
675         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
676         tst \reg,#0x0f000000\r
677         orreq z80f,z80f,#1<<HFlag\r
678         subs \reg,\reg,#0x01000000\r
679         orrmi z80f,z80f,#1<<SFlag\r
680         orrvs z80f,z80f,#1<<VFlag\r
681         tst \reg,#0xff000000                                    ;@Z\r
682         orreq z80f,z80f,#1<<ZFlag\r
683 .endm\r
684 \r
685 .macro opDEC8L reg                                                      ;@for C, E & L\r
686         mov \reg,\reg,ror#24\r
687         opDEC8H \reg\r
688         mov \reg,\reg,ror#8\r
689 .endm\r
690 \r
691 .macro opDEC8b                                                          ;@for memory\r
692         mov r0,r0,lsl#24\r
693         opDEC8 r0\r
694         mov r0,r0,lsr#24\r
695 .endm\r
696 ;@---------------------------------------\r
697 \r
698 .macro opIN\r
699         stmfd sp!,{r3,r12}\r
700         mov lr,pc\r
701         ldr pc,[cpucontext,#z80_in]                             ;@ r0=port - data returned in r0\r
702         ldmfd sp!,{r3,r12}\r
703 .endm\r
704 \r
705 .macro opIN_C\r
706         mov r0,z80bc, lsr #16\r
707         opIN\r
708 .endm\r
709 ;@---------------------------------------\r
710 \r
711 .macro opINC8 reg                                                       ;@for A and memory\r
712         and z80f,z80f,#1<<CFlag                                 ;@save carry, clear n\r
713         adds \reg,\reg,#0x01000000\r
714         orrmi z80f,z80f,#1<<SFlag\r
715         orrvs z80f,z80f,#1<<VFlag\r
716         orrcs z80f,z80f,#1<<ZFlag                               ;@cs when going from 0xFF to 0x00\r
717         tst \reg,#0x0f000000\r
718         orreq z80f,z80f,#1<<HFlag\r
719 .endm\r
720 \r
721 .macro opINC8H reg                                                      ;@for B, D & H\r
722         opINC8 \reg\r
723 .endm\r
724 \r
725 .macro opINC8L reg                                                      ;@for C, E & L\r
726         mov \reg,\reg,ror#24\r
727         opINC8 \reg\r
728         mov \reg,\reg,ror#8\r
729 .endm\r
730 \r
731 .macro opINC8b                                                          ;@for memory\r
732         mov r0,r0,lsl#24\r
733         opINC8 r0\r
734         mov r0,r0,lsr#24\r
735 .endm\r
736 ;@---------------------------------------\r
737 \r
738 .macro opOR reg shift\r
739         orr z80a,z80a,\reg,lsl#\shift\r
740         sub r0,opcodes,#0x100\r
741         ldrb z80f,[r0,z80a, lsr #24]\r
742 .endm\r
743 \r
744 .macro opORA\r
745         sub r0,opcodes,#0x100\r
746         ldrb z80f,[r0,z80a, lsr #24]\r
747         fetch 4\r
748 .endm\r
749 \r
750 .macro opORH reg\r
751         and r0,\reg,#0xFF000000\r
752         opOR r0 0\r
753         fetch 4\r
754 .endm\r
755 \r
756 .macro opORL reg\r
757         opOR \reg 8\r
758         fetch 4\r
759 .endm\r
760 \r
761 .macro opORb\r
762         opOR r0 24\r
763 .endm\r
764 ;@---------------------------------------\r
765 \r
766 .macro opOUT\r
767         stmfd sp!,{r3,r12}\r
768         mov lr,pc\r
769         ldr pc,[cpucontext,#z80_out]                    ;@ r0=port r1=data\r
770         ldmfd sp!,{r3,r12}\r
771 .endm\r
772 \r
773 .macro opOUT_C\r
774         mov r0,z80bc, lsr #16\r
775         opOUT\r
776 .endm\r
777 ;@---------------------------------------\r
778 \r
779 .macro opPOP\r
780 .if FAST_Z80SP\r
781 .if DRZ80_FOR_PICODRIVE\r
782     @ notaz: try to protect against stack overflows, which tend to happen in Picodrive because of poor timing\r
783     ldr r2,[cpucontext,#z80sp_base]\r
784         ldrb r0,[z80sp],#1\r
785     add r2,r2,#0x2000\r
786     cmp z80sp,r2\r
787 @    subge z80sp,z80sp,#0x2000 @ unstable?\r
788         ldrb r1,[z80sp],#1\r
789     cmp z80sp,r2\r
790 @    subge z80sp,z80sp,#0x2000\r
791         orr r0,r0,r1, lsl #8\r
792 .else\r
793         ldrb r0,[z80sp],#1\r
794         ldrb r1,[z80sp],#1\r
795         orr r0,r0,r1, lsl #8\r
796 .endif\r
797 .else\r
798         mov r0,z80sp\r
799         readmem16\r
800         add z80sp,z80sp,#2\r
801 .endif\r
802 .endm\r
803 \r
804 .macro opPOPreg reg\r
805         opPOP\r
806         mov \reg,r0, lsl #16\r
807         fetch 10\r
808 .endm\r
809 ;@---------------------------------------\r
810 \r
811 .macro opPUSHareg reg @ reg > r1\r
812 .if FAST_Z80SP\r
813 .if DRZ80_FOR_PICODRIVE\r
814     @ notaz: try to protect against stack overflows, which tend to happen in Picodrive because of poor timing\r
815     ldr r0,[cpucontext,#z80sp_base]\r
816     cmp z80sp,r0\r
817     addle z80sp,z80sp,#0x2000\r
818     mov r1,\reg, lsr #8\r
819         strb r1,[z80sp,#-1]!\r
820     cmp z80sp,r0\r
821     addle z80sp,z80sp,#0x2000\r
822         strb \reg,[z80sp,#-1]!\r
823 .else\r
824         mov r1,\reg, lsr #8\r
825         strb r1,[z80sp,#-1]!\r
826         strb \reg,[z80sp,#-1]!\r
827 .endif\r
828 .else\r
829     mov r0,\reg\r
830         sub z80sp,z80sp,#2\r
831         mov r1,z80sp\r
832         writemem16\r
833 .endif\r
834 .endm\r
835 \r
836 .macro opPUSHreg reg\r
837 .if FAST_Z80SP\r
838 .if DRZ80_FOR_PICODRIVE\r
839     ldr r0,[cpucontext,#z80sp_base]\r
840     cmp z80sp,r0\r
841     addle z80sp,z80sp,#0x2000\r
842     mov r1,\reg, lsr #24\r
843         strb r1,[z80sp,#-1]!\r
844     cmp z80sp,r0\r
845     addle z80sp,z80sp,#0x2000\r
846         mov r1,\reg, lsr #16\r
847         strb r1,[z80sp,#-1]!\r
848 .else\r
849     mov r1,\reg, lsr #24\r
850         strb r1,[z80sp,#-1]!\r
851         mov r1,\reg, lsr #16\r
852         strb r1,[z80sp,#-1]!\r
853 .endif\r
854 .else\r
855         mov r0,\reg,lsr #16\r
856         sub z80sp,z80sp,#2\r
857         mov r1,z80sp\r
858         writemem16\r
859 .endif\r
860 .endm\r
861 ;@---------------------------------------\r
862 \r
863 .macro opRESmemHL bit\r
864 .if DRZ80_FOR_PICODRIVE\r
865         mov r0,z80hl, lsr #16\r
866     bl pico_z80_read8\r
867         bic r0,r0,#1<<\bit\r
868         mov r1,z80hl, lsr #16\r
869     bl pico_z80_write8\r
870 .else\r
871         mov r0,z80hl, lsr #16\r
872         stmfd sp!,{r3,r12}\r
873         mov lr,pc\r
874         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
875         bic r0,r0,#1<<\bit\r
876         mov r1,z80hl, lsr #16\r
877         mov lr,pc\r
878         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
879         ldmfd sp!,{r3,r12}\r
880 .endif\r
881     fetch 15\r
882 .endm\r
883 ;@---------------------------------------\r
884 \r
885 .macro opRESmem bit\r
886 .if DRZ80_FOR_PICODRIVE\r
887         stmfd sp!,{r0}                                                  ;@ save addr as well\r
888     bl pico_z80_read8\r
889         bic r0,r0,#1<<\bit\r
890         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
891     bl pico_z80_write8\r
892 .else\r
893         stmfd sp!,{r3,r12}\r
894         stmfd sp!,{r0}                                                  ;@ save addr as well\r
895         mov lr,pc\r
896         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
897         bic r0,r0,#1<<\bit\r
898         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
899         mov lr,pc\r
900         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
901         ldmfd sp!,{r3,r12}\r
902 .endif\r
903         fetch 23\r
904 .endm\r
905 ;@---------------------------------------\r
906 \r
907 .macro opRL reg1 reg2 shift\r
908         movs \reg1,\reg2,lsl \shift\r
909         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
910         orrne \reg1,\reg1,#0x01000000\r
911 ;@      and r2,z80f,#1<<CFlag\r
912 ;@      orr $x,$x,r2,lsl#23\r
913         sub r1,opcodes,#0x100\r
914         ldrb z80f,[r1,\reg1,lsr#24]                             ;@get PZS\r
915         orrcs z80f,z80f,#1<<CFlag\r
916 .endm\r
917 \r
918 .macro opRLA\r
919         opRL z80a, z80a, #1\r
920         fetch 8\r
921 .endm\r
922 \r
923 .macro opRLH reg\r
924         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
925         adds \reg,\reg,r0\r
926         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
927         orrne \reg,\reg,#0x01000000\r
928         sub r1,opcodes,#0x100\r
929         ldrb z80f,[r1,\reg,lsr#24]                              ;@get PZS\r
930         orrcs z80f,z80f,#1<<CFlag\r
931         fetch 8\r
932 .endm\r
933 \r
934 .macro opRLL reg\r
935         opRL r0, \reg, #9\r
936         and \reg,\reg,#0xFF000000                               ;@mask out high\r
937         orr \reg,\reg,r0,lsr#8\r
938         fetch 8\r
939 .endm\r
940 \r
941 .macro opRLb\r
942         opRL r0, r0, #25\r
943         mov r0,r0,lsr#24\r
944 .endm\r
945 ;@---------------------------------------\r
946 \r
947 .macro opRLC reg1 reg2 shift\r
948         movs \reg1,\reg2,lsl#\shift\r
949         orrcs \reg1,\reg1,#0x01000000\r
950         sub r1,opcodes,#0x100\r
951         ldrb z80f,[r1,\reg1,lsr#24]\r
952         orrcs z80f,z80f,#1<<CFlag\r
953 .endm\r
954 \r
955 .macro opRLCA\r
956         opRLC z80a, z80a, 1\r
957         fetch 8\r
958 .endm\r
959 \r
960 .macro opRLCH reg\r
961         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
962         adds \reg,\reg,r0\r
963         orrcs \reg,\reg,#0x01000000\r
964         sub r1,opcodes,#0x100\r
965         ldrb z80f,[r1,\reg,lsr#24]\r
966         orrcs z80f,z80f,#1<<CFlag\r
967         fetch 8\r
968 .endm\r
969 \r
970 .macro opRLCL reg\r
971         opRLC r0, \reg, 9\r
972         and \reg,\reg,#0xFF000000                               ;@mask out high\r
973         orr \reg,\reg,r0,lsr#8\r
974         fetch 8\r
975 .endm\r
976 \r
977 .macro opRLCb\r
978         opRLC r0, r0, 25\r
979         mov r0,r0,lsr#24\r
980 .endm\r
981 ;@---------------------------------------\r
982 \r
983 .macro opRR reg1 reg2 shift\r
984         movs \reg1,\reg2,lsr#\shift\r
985         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
986         orrne \reg1,\reg1,#0x00000080\r
987 ;@      and r2,z80_f,#PSR_C\r
988 ;@      orr \reg1,\reg1,r2,lsl#6\r
989         sub r1,opcodes,#0x100\r
990         ldrb z80f,[r1,\reg1]\r
991         orrcs z80f,z80f,#1<<CFlag\r
992 .endm\r
993 \r
994 .macro opRRA\r
995         orr z80a,z80a,z80f,lsr#1                                ;@get C\r
996         movs z80a,z80a,ror#25\r
997         mov z80a,z80a,lsl#24\r
998         sub r1,opcodes,#0x100\r
999         ldrb z80f,[r1,z80a,lsr#24]\r
1000         orrcs z80f,z80f,#1<<CFlag\r
1001         fetch 8\r
1002 .endm\r
1003 \r
1004 .macro opRRH reg\r
1005         orr r0,\reg,z80f,lsr#1                                  ;@get C\r
1006         movs r0,r0,ror#25\r
1007         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1008         orr \reg,\reg,r0,lsl#24\r
1009         sub r1,opcodes,#0x100\r
1010         ldrb z80f,[r1,\reg,lsr#24]\r
1011         orrcs z80f,z80f,#1<<CFlag\r
1012         fetch 8\r
1013 .endm\r
1014 \r
1015 .macro opRRL reg\r
1016         and r0,\reg,#0x00FF0000                                 ;@mask out low to r0\r
1017         opRR r0 r0 17\r
1018         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1019         orr \reg,\reg,r0,lsl#16\r
1020         fetch 8\r
1021 .endm\r
1022 \r
1023 .macro opRRb\r
1024         opRR r0 r0 1\r
1025 .endm\r
1026 ;@---------------------------------------\r
1027 \r
1028 .macro opRRC reg1 reg2 shift\r
1029         movs \reg1,\reg2,lsr#\shift\r
1030         orrcs \reg1,\reg1,#0x00000080\r
1031         sub r1,opcodes,#0x100\r
1032         ldrb z80f,[r1,\reg1]\r
1033         orrcs z80f,z80f,#1<<CFlag\r
1034 .endm\r
1035 \r
1036 .macro opRRCA\r
1037         opRRC z80a, z80a, 25\r
1038         mov z80a,z80a,lsl#24\r
1039         fetch 8\r
1040 .endm\r
1041 \r
1042 .macro opRRCH reg\r
1043         opRRC r0, \reg, 25\r
1044         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1045         orr \reg,\reg,r0,lsl#24\r
1046         fetch 8\r
1047 .endm\r
1048 \r
1049 .macro opRRCL reg\r
1050         and r0,\reg,#0x00FF0000                                 ;@mask low to r0\r
1051         opRRC r0, r0, 17\r
1052         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1053         orr \reg,\reg,r0,lsl#16\r
1054         fetch 8\r
1055 .endm\r
1056 \r
1057 .macro opRRCb\r
1058         opRRC r0, r0, 1\r
1059 .endm\r
1060 ;@---------------------------------------\r
1061 \r
1062 .macro opRST addr\r
1063         ldr r0,[cpucontext,#z80pc_base]\r
1064         sub r2,z80pc,r0\r
1065     opPUSHareg r2\r
1066         mov r0,#\addr\r
1067         rebasepc\r
1068         fetch 11\r
1069 .endm\r
1070 ;@---------------------------------------\r
1071 \r
1072 .macro opSBC\r
1073         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1074         movs z80f,z80f,lsr#2                                    ;@ get C\r
1075         subcc r0,r0,#0x100\r
1076         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of H\r
1077         sbcs z80a,z80a,r0,ror#8\r
1078         mrs r0,cpsr\r
1079         eor z80f,z80f,z80a,lsr#24\r
1080         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
1081         orr z80f,z80f,r0,lsr#28                                 ;@ S,Z,V&C\r
1082         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1083 .endm\r
1084 \r
1085 .macro opSBCA\r
1086         movs z80f,z80f,lsr#2                                    ;@ get C\r
1087         movcc z80a,#0x00000000\r
1088         movcs z80a,#0xFF000000\r
1089         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1090         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1091         fetch 4\r
1092 .endm\r
1093 \r
1094 .macro opSBCH reg\r
1095         mov r0,\reg,lsr#24\r
1096         opSBC\r
1097         fetch 4\r
1098 .endm\r
1099 \r
1100 .macro opSBCL reg\r
1101         mov r0,\reg,lsl#8\r
1102         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1103         movs z80f,z80f,lsr#2                                    ;@ get C\r
1104         sbccc r0,r0,#0xFF000000\r
1105         mov r1,z80a,lsl#4                                               ;@ prepare for check of H\r
1106         sbcs z80a,z80a,r0\r
1107         mrs z80f,cpsr\r
1108         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1109         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1110         cmp r1,r0,lsl#4\r
1111         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1112         fetch 4\r
1113 .endm\r
1114 \r
1115 .macro opSBCb\r
1116         opSBC\r
1117 .endm\r
1118 ;@---------------------------------------\r
1119 \r
1120 .macro opSBC16 reg\r
1121         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1122         movs z80f,z80f,lsr#2                                    ;@ get C\r
1123         sbc r1,r1,r1                                                    ;@ set r1 to -1 or 0.\r
1124         orr r0,\reg,r1,lsr#16\r
1125         mov r1,z80hl,lsl#4                                              ;@ prepare for check of H\r
1126         sbcs z80hl,z80hl,r0\r
1127         mrs z80f,cpsr\r
1128         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1129         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1130         cmp r1,r0,lsl#4\r
1131         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1132         fetch 15\r
1133 .endm\r
1134 \r
1135 .macro opSBC16HL\r
1136         movs z80f,z80f,lsr#2                                    ;@ get C\r
1137         mov z80hl,#0x00000000\r
1138         subcs z80hl,z80hl,#0x00010000\r
1139         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1140         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1141         fetch 15\r
1142 .endm\r
1143 ;@---------------------------------------\r
1144 \r
1145 .macro opSETmemHL bit\r
1146 .if DRZ80_FOR_PICODRIVE\r
1147         mov r0,z80hl, lsr #16\r
1148     bl pico_z80_read8\r
1149         orr r0,r0,#1<<\bit\r
1150         mov r1,z80hl, lsr #16\r
1151     bl pico_z80_write8\r
1152 .else\r
1153         mov r0,z80hl, lsr #16\r
1154         stmfd sp!,{r3,r12}\r
1155         mov lr,pc\r
1156         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
1157         orr r0,r0,#1<<\bit\r
1158         mov r1,z80hl, lsr #16\r
1159         mov lr,pc\r
1160         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1161         ldmfd sp!,{r3,r12}\r
1162 .endif\r
1163     fetch 15\r
1164 .endm\r
1165 ;@---------------------------------------\r
1166 \r
1167 .macro opSETmem bit\r
1168 .if DRZ80_FOR_PICODRIVE\r
1169         stmfd sp!,{r0}  ;@ save addr as well\r
1170     bl pico_z80_read8\r
1171         orr r0,r0,#1<<\bit\r
1172         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1173     bl pico_z80_write8\r
1174 .else\r
1175         stmfd sp!,{r3,r12}\r
1176         stmfd sp!,{r0}  ;@ save addr as well\r
1177         mov lr,pc\r
1178         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
1179         orr r0,r0,#1<<\bit\r
1180         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1181         mov lr,pc\r
1182         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1183         ldmfd sp!,{r3,r12}\r
1184 .endif\r
1185         fetch 23\r
1186 .endm\r
1187 ;@---------------------------------------\r
1188 \r
1189 .macro opSLA reg1 reg2 shift\r
1190         movs \reg1,\reg2,lsl#\shift\r
1191         sub r1,opcodes,#0x100\r
1192         ldrb z80f,[r1,\reg1,lsr#24]\r
1193         orrcs z80f,z80f,#1<<CFlag\r
1194 .endm\r
1195 \r
1196 .macro opSLAA\r
1197         opSLA z80a, z80a, 1\r
1198         fetch 8\r
1199 .endm\r
1200 \r
1201 .macro opSLAH reg\r
1202         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1203         adds \reg,\reg,r0\r
1204         sub r1,opcodes,#0x100\r
1205         ldrb z80f,[r1,\reg,lsr#24]\r
1206         orrcs z80f,z80f,#1<<CFlag\r
1207         fetch 8\r
1208 .endm\r
1209 \r
1210 .macro opSLAL reg\r
1211         opSLA r0, \reg, 9\r
1212         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1213         orr \reg,\reg,r0,lsr#8\r
1214         fetch 8\r
1215 .endm\r
1216 \r
1217 .macro opSLAb\r
1218         opSLA r0, r0, 25\r
1219         mov r0,r0,lsr#24\r
1220 .endm\r
1221 ;@---------------------------------------\r
1222 \r
1223 .macro opSLL reg1 reg2 shift\r
1224         movs \reg1,\reg2,lsl#\shift\r
1225         orr \reg1,\reg1,#0x01000000\r
1226         sub r1,opcodes,#0x100\r
1227         ldrb z80f,[r1,\reg1,lsr#24]\r
1228         orrcs z80f,z80f,#1<<CFlag\r
1229 .endm\r
1230 \r
1231 .macro opSLLA\r
1232         opSLL z80a, z80a, 1\r
1233         fetch 8\r
1234 .endm\r
1235 \r
1236 .macro opSLLH reg\r
1237         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1238         adds \reg,\reg,r0\r
1239         orr \reg,\reg,#0x01000000\r
1240         sub r1,opcodes,#0x100\r
1241         ldrb z80f,[r1,\reg,lsr#24]\r
1242         orrcs z80f,z80f,#1<<CFlag\r
1243         fetch 8\r
1244 .endm\r
1245 \r
1246 .macro opSLLL reg\r
1247         opSLL r0, \reg, 9\r
1248         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1249         orr \reg,\reg,r0,lsr#8\r
1250         fetch 8\r
1251 .endm\r
1252 \r
1253 .macro opSLLb\r
1254         opSLL r0, r0, 25\r
1255         mov r0,r0,lsr#24\r
1256 .endm\r
1257 ;@---------------------------------------\r
1258 \r
1259 .macro opSRA reg1 reg2\r
1260         movs \reg1,\reg2,asr#25\r
1261         and \reg1,\reg1,#0xFF\r
1262         sub r1,opcodes,#0x100\r
1263         ldrb z80f,[r1,\reg1]\r
1264         orrcs z80f,z80f,#1<<CFlag\r
1265 .endm\r
1266 \r
1267 .macro opSRAA\r
1268         movs r0,z80a,asr#25\r
1269         mov z80a,r0,lsl#24\r
1270         sub r1,opcodes,#0x100\r
1271         ldrb z80f,[r1,z80a,lsr#24]\r
1272         orrcs z80f,z80f,#1<<CFlag\r
1273         fetch 8\r
1274 .endm\r
1275 \r
1276 .macro opSRAH reg\r
1277         movs r0,\reg,asr#25\r
1278         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1279         orr \reg,\reg,r0,lsl#24\r
1280         sub r1,opcodes,#0x100\r
1281         ldrb z80f,[r1,\reg,lsr#24]\r
1282         orrcs z80f,z80f,#1<<CFlag\r
1283         fetch 8\r
1284 .endm\r
1285 \r
1286 .macro opSRAL reg\r
1287         mov r0,\reg,lsl#8\r
1288         opSRA r0, r0\r
1289         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1290         orr \reg,\reg,r0,lsl#16\r
1291         fetch 8\r
1292 .endm\r
1293 \r
1294 .macro opSRAb\r
1295         mov r0,r0,lsl#24\r
1296         opSRA r0, r0\r
1297 .endm\r
1298 ;@---------------------------------------\r
1299 \r
1300 .macro opSRL reg1 reg2 shift\r
1301         movs \reg1,\reg2,lsr#\shift\r
1302         sub r1,opcodes,#0x100\r
1303         ldrb z80f,[r1,\reg1]\r
1304         orrcs z80f,z80f,#1<<CFlag\r
1305 .endm\r
1306 \r
1307 .macro opSRLA\r
1308         opSRL z80a, z80a, 25\r
1309         mov z80a,z80a,lsl#24\r
1310         fetch 8\r
1311 .endm\r
1312 \r
1313 .macro opSRLH reg\r
1314         opSRL r0, \reg, 25\r
1315         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1316         orr \reg,\reg,r0,lsl#24\r
1317         fetch 8\r
1318 .endm\r
1319 \r
1320 .macro opSRLL reg\r
1321         mov r0,\reg,lsl#8\r
1322         opSRL r0, r0, 25\r
1323         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1324         orr \reg,\reg,r0,lsl#16\r
1325         fetch 8\r
1326 .endm\r
1327 \r
1328 .macro opSRLb\r
1329         opSRL r0, r0, 1\r
1330 .endm\r
1331 ;@---------------------------------------\r
1332 \r
1333 .macro opSUB reg shift\r
1334         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
1335         subs z80a,z80a,\reg,lsl#\shift\r
1336         mrs z80f,cpsr\r
1337         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1338         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
1339         cmp r1,\reg,lsl#\shift+4\r
1340         orrcc z80f,z80f,#1<<HFlag\r
1341 .endm\r
1342 \r
1343 .macro opSUBA\r
1344         mov z80a,#0\r
1345         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
1346         fetch 4\r
1347 .endm\r
1348 \r
1349 .macro opSUBH reg\r
1350         and r0,\reg,#0xFF000000\r
1351         opSUB r0, 0\r
1352         fetch 4\r
1353 .endm\r
1354 \r
1355 .macro opSUBL reg\r
1356         opSUB \reg, 8\r
1357         fetch 4\r
1358 .endm\r
1359 \r
1360 .macro opSUBb\r
1361         opSUB r0, 24\r
1362 .endm\r
1363 ;@---------------------------------------\r
1364 \r
1365 .macro opXOR reg shift\r
1366         eor z80a,z80a,\reg,lsl#\shift\r
1367         sub r0,opcodes,#0x100\r
1368         ldrb z80f,[r0,z80a, lsr #24]\r
1369 .endm\r
1370 \r
1371 .macro opXORA\r
1372         mov z80a,#0\r
1373         mov z80f,#(1<<ZFlag)|(1<<VFlag)\r
1374         fetch 4\r
1375 .endm\r
1376 \r
1377 .macro opXORH reg\r
1378         and r0,\reg,#0xFF000000\r
1379         opXOR r0, 0\r
1380         fetch 4\r
1381 .endm\r
1382 \r
1383 .macro opXORL reg\r
1384         opXOR \reg, 8\r
1385         fetch 4\r
1386 .endm\r
1387 \r
1388 .macro opXORb\r
1389         opXOR r0, 24\r
1390 .endm\r
1391 ;@---------------------------------------\r
1392 \r
1393 \r
1394 ;@ --------------------------- Framework --------------------------\r
1395     \r
1396 .text\r
1397 \r
1398 DrZ80Run:\r
1399         ;@ r0 = pointer to cpu context\r
1400         ;@ r1 = ISTATES to execute  \r
1401         ;@#########################################   \r
1402         stmdb sp!,{r4-r12,lr}                                   ;@ save registers on stack\r
1403         mov cpucontext,r0                                               ;@ setup main memory pointer\r
1404         mov z80_icount,r1                                               ;@ setup number of Tstates to execute\r
1405 \r
1406 .if INTERRUPT_MODE == 0\r
1407         ldrh r0,[cpucontext,#z80irq] @ 0x4C\r
1408 .endif\r
1409         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1410 \r
1411 .if INTERRUPT_MODE == 0\r
1412         ;@ check ints\r
1413         tst r0,#1\r
1414         movnes r0,r0,lsr #8\r
1415     blne DoInterrupt\r
1416 .endif\r
1417 \r
1418         ldrb r0,[z80pc],#1    ;@ get first op code\r
1419         ldr opcodes,MAIN_opcodes_POINTER2\r
1420         ldr pc,[opcodes,r0, lsl #2]  ;@ execute op code\r
1421 \r
1422 MAIN_opcodes_POINTER2: .word MAIN_opcodes\r
1423 \r
1424 \r
1425 z80_execute_end:\r
1426         ;@ save registers in CPU context\r
1427         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1428     mov r0,z80_icount\r
1429         ldmia sp!,{r4-r12,pc}                                   ;@ restore registers from stack and return to C code\r
1430 \r
1431 .if INTERRUPT_MODE\r
1432 Interrupt_local: .word Interrupt\r
1433 .endif\r
1434 \r
1435 DoInterrupt:\r
1436 .if INTERRUPT_MODE\r
1437         ;@ Don't do own int handler, call mames instead\r
1438 \r
1439         ;@ save everything back into DrZ80 context\r
1440         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1441         stmfd sp!,{r3,r4,r5,lr}                                 ;@ save rest of regs on stack\r
1442         mov lr,pc\r
1443         ldr pc,Interrupt_local\r
1444         ldmfd sp!,{r3,r4,r5,lr}                                 ;@ load regs from stack\r
1445         ;@ reload regs from DrZ80 context\r
1446         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1447         mov pc,lr ;@ return\r
1448 .else\r
1449         stmfd sp!,{lr}\r
1450 \r
1451         tst r0,#4 ;@ check halt\r
1452         addne z80pc,z80pc,#1\r
1453 \r
1454         ldrb r1,[cpucontext,#z80im]\r
1455 \r
1456     ;@ clear halt and int flags\r
1457         eor r0,r0,r0\r
1458         strb r0,[cpucontext,#z80if]\r
1459 \r
1460         ;@ now check int mode\r
1461     tst r1,#1\r
1462     bne DoInterrupt_mode1\r
1463     tst r1,#2\r
1464     bne DoInterrupt_mode2\r
1465     b   DoInterrupt_mode0\r
1466 \r
1467 DoInterrupt_mode0:\r
1468         ;@ get 3 byte vector\r
1469         ldr r2,[cpucontext, #z80irqvector]\r
1470         and r1,r2,#0xFF0000\r
1471         cmp r1,#0xCD0000  ;@ call\r
1472         bne 1f\r
1473         ;@ ########\r
1474         ;@ # call\r
1475         ;@ ########\r
1476         ;@ save current pc on stack\r
1477         ldr r0,[cpucontext,#z80pc_base]\r
1478         sub r0,z80pc,r0\r
1479 .if FAST_Z80SP\r
1480         mov r1,r0, lsr #8\r
1481         strb r1,[z80sp,#-1]!\r
1482         strb r0,[z80sp,#-1]!\r
1483 .else\r
1484         sub z80sp,z80sp,#2\r
1485         mov r1,z80sp\r
1486         writemem16\r
1487         ldr r2,[cpucontext, #z80irqvector]\r
1488 .endif\r
1489         ;@ jump to vector\r
1490         mov r2,r2,lsl#16\r
1491         mov r0,r2,lsr#16\r
1492         ;@ rebase new pc\r
1493         rebasepc\r
1494 \r
1495         b DoInterrupt_end\r
1496 \r
1497 1:\r
1498         cmp r1,#0xC30000  ;@ jump\r
1499         bne DoInterrupt_mode1    ;@ rst\r
1500         ;@ #######\r
1501         ;@ # jump\r
1502         ;@ #######\r
1503         ;@ jump to vector\r
1504         mov r2,r2,lsl#16\r
1505         mov r0,r2,lsr#16\r
1506         ;@ rebase new pc\r
1507         rebasepc\r
1508 \r
1509         b DoInterrupt_end\r
1510 \r
1511 DoInterrupt_mode1:\r
1512         ldr r0,[cpucontext,#z80pc_base]\r
1513         sub r2,z80pc,r0\r
1514     opPUSHareg r2\r
1515         mov r0,#0x38\r
1516         rebasepc\r
1517 \r
1518         b DoInterrupt_end\r
1519 \r
1520 DoInterrupt_mode2:\r
1521         ;@ push pc on stack\r
1522         ldr r0,[cpucontext,#z80pc_base]\r
1523         sub r2,z80pc,r0\r
1524     opPUSHareg r2\r
1525 \r
1526         ;@ get 1 byte vector address\r
1527         ldrb r0,[cpucontext, #z80irqvector]\r
1528         ldr r1,[cpucontext, #z80i]\r
1529         orr r0,r0,r1,lsr#16\r
1530 \r
1531         ;@ read new pc from vector address\r
1532 .if DRZ80_FOR_PICODRIVE\r
1533     bl pico_z80_read16\r
1534     bic r0,r0,#0xfe000\r
1535     ldr r1,[cpucontext,#z80pc_base]\r
1536     add z80pc,r1,r0\r
1537 .if UPDATE_CONTEXT\r
1538      str z80pc,[cpucontext,#z80pc_pointer]\r
1539 .endif\r
1540 .else\r
1541         stmfd sp!,{r3,r12}\r
1542         mov lr,pc\r
1543         ldr pc,[cpucontext,#z80_read16]\r
1544 \r
1545         ;@ rebase new pc\r
1546 .if UPDATE_CONTEXT\r
1547      str z80pc,[cpucontext,#z80pc_pointer]\r
1548 .endif\r
1549         mov lr,pc\r
1550         ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
1551         ldmfd sp!,{r3,r12}\r
1552         mov z80pc,r0    \r
1553 .endif\r
1554 \r
1555 DoInterrupt_end:\r
1556         ;@ interupt accepted so callback irq interface\r
1557         ldr r0,[cpucontext, #z80irqcallback]\r
1558         tst r0,r0\r
1559         ldmeqfd sp!,{pc}\r
1560         stmfd sp!,{r3,r12}\r
1561         mov lr,pc\r
1562         mov pc,r0    ;@ call callback function\r
1563         ldmfd sp!,{r3,r12}\r
1564         ldmfd sp!,{pc} ;@ return\r
1565 \r
1566 .endif\r
1567 \r
1568 .data\r
1569 .align 4\r
1570 \r
1571 DAATable: .hword  (0x00<<8)|(1<<ZFlag)|(1<<VFlag)\r
1572          .hword  (0x01<<8)                  \r
1573          .hword  (0x02<<8)                  \r
1574          .hword  (0x03<<8)               |(1<<VFlag)\r
1575          .hword  (0x04<<8)                  \r
1576          .hword  (0x05<<8)               |(1<<VFlag)\r
1577          .hword  (0x06<<8)               |(1<<VFlag)\r
1578          .hword  (0x07<<8)                  \r
1579          .hword  (0x08<<8)               \r
1580          .hword  (0x09<<8)            |(1<<VFlag)\r
1581          .hword  (0x10<<8)         |(1<<HFlag)      \r
1582          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1583          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1584          .hword  (0x13<<8)         |(1<<HFlag)      \r
1585          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1586          .hword  (0x15<<8)         |(1<<HFlag)      \r
1587          .hword  (0x10<<8)                  \r
1588          .hword  (0x11<<8)               |(1<<VFlag)\r
1589          .hword  (0x12<<8)               |(1<<VFlag)\r
1590          .hword  (0x13<<8)                  \r
1591          .hword  (0x14<<8)               |(1<<VFlag)\r
1592          .hword  (0x15<<8)                  \r
1593          .hword  (0x16<<8)                  \r
1594          .hword  (0x17<<8)               |(1<<VFlag)\r
1595          .hword  (0x18<<8)            |(1<<VFlag)\r
1596          .hword  (0x19<<8)               \r
1597          .hword  (0x20<<8)      |(1<<HFlag)      \r
1598          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1599          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1600          .hword  (0x23<<8)      |(1<<HFlag)      \r
1601          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1602          .hword  (0x25<<8)      |(1<<HFlag)      \r
1603          .hword  (0x20<<8)               \r
1604          .hword  (0x21<<8)            |(1<<VFlag)\r
1605          .hword  (0x22<<8)            |(1<<VFlag)\r
1606          .hword  (0x23<<8)               \r
1607          .hword  (0x24<<8)            |(1<<VFlag)\r
1608          .hword  (0x25<<8)               \r
1609          .hword  (0x26<<8)               \r
1610          .hword  (0x27<<8)            |(1<<VFlag)\r
1611          .hword  (0x28<<8)         |(1<<VFlag)\r
1612          .hword  (0x29<<8)            \r
1613          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1614          .hword  (0x31<<8)      |(1<<HFlag)      \r
1615          .hword  (0x32<<8)      |(1<<HFlag)      \r
1616          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1617          .hword  (0x34<<8)      |(1<<HFlag)      \r
1618          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1619          .hword  (0x30<<8)            |(1<<VFlag)\r
1620          .hword  (0x31<<8)               \r
1621          .hword  (0x32<<8)               \r
1622          .hword  (0x33<<8)            |(1<<VFlag)\r
1623          .hword  (0x34<<8)               \r
1624          .hword  (0x35<<8)            |(1<<VFlag)\r
1625          .hword  (0x36<<8)            |(1<<VFlag)\r
1626          .hword  (0x37<<8)               \r
1627          .hword  (0x38<<8)            \r
1628          .hword  (0x39<<8)         |(1<<VFlag)\r
1629          .hword  (0x40<<8)         |(1<<HFlag)      \r
1630          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1631          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1632          .hword  (0x43<<8)         |(1<<HFlag)      \r
1633          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1634          .hword  (0x45<<8)         |(1<<HFlag)      \r
1635          .hword  (0x40<<8)                  \r
1636          .hword  (0x41<<8)               |(1<<VFlag)\r
1637          .hword  (0x42<<8)               |(1<<VFlag)\r
1638          .hword  (0x43<<8)                  \r
1639          .hword  (0x44<<8)               |(1<<VFlag)\r
1640          .hword  (0x45<<8)                  \r
1641          .hword  (0x46<<8)                  \r
1642          .hword  (0x47<<8)               |(1<<VFlag)\r
1643          .hword  (0x48<<8)            |(1<<VFlag)\r
1644          .hword  (0x49<<8)               \r
1645          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1646          .hword  (0x51<<8)         |(1<<HFlag)      \r
1647          .hword  (0x52<<8)         |(1<<HFlag)      \r
1648          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1649          .hword  (0x54<<8)         |(1<<HFlag)      \r
1650          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1651          .hword  (0x50<<8)               |(1<<VFlag)\r
1652          .hword  (0x51<<8)                  \r
1653          .hword  (0x52<<8)                  \r
1654          .hword  (0x53<<8)               |(1<<VFlag)\r
1655          .hword  (0x54<<8)                  \r
1656          .hword  (0x55<<8)               |(1<<VFlag)\r
1657          .hword  (0x56<<8)               |(1<<VFlag)\r
1658          .hword  (0x57<<8)                  \r
1659          .hword  (0x58<<8)               \r
1660          .hword  (0x59<<8)            |(1<<VFlag)\r
1661          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1662          .hword  (0x61<<8)      |(1<<HFlag)      \r
1663          .hword  (0x62<<8)      |(1<<HFlag)      \r
1664          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1665          .hword  (0x64<<8)      |(1<<HFlag)      \r
1666          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1667          .hword  (0x60<<8)            |(1<<VFlag)\r
1668          .hword  (0x61<<8)               \r
1669          .hword  (0x62<<8)               \r
1670          .hword  (0x63<<8)            |(1<<VFlag)\r
1671          .hword  (0x64<<8)               \r
1672          .hword  (0x65<<8)            |(1<<VFlag)\r
1673          .hword  (0x66<<8)            |(1<<VFlag)\r
1674          .hword  (0x67<<8)               \r
1675          .hword  (0x68<<8)            \r
1676          .hword  (0x69<<8)         |(1<<VFlag)\r
1677          .hword  (0x70<<8)      |(1<<HFlag)      \r
1678          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1679          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1680          .hword  (0x73<<8)      |(1<<HFlag)      \r
1681          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1682          .hword  (0x75<<8)      |(1<<HFlag)      \r
1683          .hword  (0x70<<8)               \r
1684          .hword  (0x71<<8)            |(1<<VFlag)\r
1685          .hword  (0x72<<8)            |(1<<VFlag)\r
1686          .hword  (0x73<<8)               \r
1687          .hword  (0x74<<8)            |(1<<VFlag)\r
1688          .hword  (0x75<<8)               \r
1689          .hword  (0x76<<8)               \r
1690          .hword  (0x77<<8)            |(1<<VFlag)\r
1691          .hword  (0x78<<8)         |(1<<VFlag)\r
1692          .hword  (0x79<<8)            \r
1693          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1694          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1695          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1696          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1697          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1698          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1699          .hword  (0x80<<8)|(1<<SFlag)               \r
1700          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)\r
1701          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)\r
1702          .hword  (0x83<<8)|(1<<SFlag)               \r
1703          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)\r
1704          .hword  (0x85<<8)|(1<<SFlag)               \r
1705          .hword  (0x86<<8)|(1<<SFlag)               \r
1706          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
1707          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
1708          .hword  (0x89<<8)|(1<<SFlag)            \r
1709          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1710          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1711          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1712          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1713          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1714          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1715          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)\r
1716          .hword  (0x91<<8)|(1<<SFlag)               \r
1717          .hword  (0x92<<8)|(1<<SFlag)               \r
1718          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)\r
1719          .hword  (0x94<<8)|(1<<SFlag)               \r
1720          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)\r
1721          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
1722          .hword  (0x97<<8)|(1<<SFlag)               \r
1723          .hword  (0x98<<8)|(1<<SFlag)            \r
1724          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
1725          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1726          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1727          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1728          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1729          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1730          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1731          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1732          .hword  (0x01<<8)                     |(1<<CFlag)\r
1733          .hword  (0x02<<8)                     |(1<<CFlag)\r
1734          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1735          .hword  (0x04<<8)                     |(1<<CFlag)\r
1736          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1737          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1738          .hword  (0x07<<8)                     |(1<<CFlag)\r
1739          .hword  (0x08<<8)                  |(1<<CFlag)\r
1740          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1741          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1742          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1743          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1744          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1745          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1746          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1747          .hword  (0x10<<8)                     |(1<<CFlag)\r
1748          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1749          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1750          .hword  (0x13<<8)                     |(1<<CFlag)\r
1751          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1752          .hword  (0x15<<8)                     |(1<<CFlag)\r
1753          .hword  (0x16<<8)                     |(1<<CFlag)\r
1754          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1755          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1756          .hword  (0x19<<8)                  |(1<<CFlag)\r
1757          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1758          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1759          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1760          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1761          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1762          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1763          .hword  (0x20<<8)                  |(1<<CFlag)\r
1764          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1765          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1766          .hword  (0x23<<8)                  |(1<<CFlag)\r
1767          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1768          .hword  (0x25<<8)                  |(1<<CFlag)\r
1769          .hword  (0x26<<8)                  |(1<<CFlag)\r
1770          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1771          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1772          .hword  (0x29<<8)               |(1<<CFlag)\r
1773          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1774          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1775          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1776          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1777          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1778          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1779          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1780          .hword  (0x31<<8)                  |(1<<CFlag)\r
1781          .hword  (0x32<<8)                  |(1<<CFlag)\r
1782          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1783          .hword  (0x34<<8)                  |(1<<CFlag)\r
1784          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1785          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1786          .hword  (0x37<<8)                  |(1<<CFlag)\r
1787          .hword  (0x38<<8)               |(1<<CFlag)\r
1788          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1789          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1790          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1791          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1792          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1793          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1794          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1795          .hword  (0x40<<8)                     |(1<<CFlag)\r
1796          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1797          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1798          .hword  (0x43<<8)                     |(1<<CFlag)\r
1799          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1800          .hword  (0x45<<8)                     |(1<<CFlag)\r
1801          .hword  (0x46<<8)                     |(1<<CFlag)\r
1802          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1803          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1804          .hword  (0x49<<8)                  |(1<<CFlag)\r
1805          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1806          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1807          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1808          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1809          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1810          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1811          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1812          .hword  (0x51<<8)                     |(1<<CFlag)\r
1813          .hword  (0x52<<8)                     |(1<<CFlag)\r
1814          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1815          .hword  (0x54<<8)                     |(1<<CFlag)\r
1816          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1817          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1818          .hword  (0x57<<8)                     |(1<<CFlag)\r
1819          .hword  (0x58<<8)                  |(1<<CFlag)\r
1820          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1821          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1822          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1823          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1824          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1825          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1826          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1827          .hword  (0x60<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1828          .hword  (0x61<<8)                  |(1<<CFlag)\r
1829          .hword  (0x62<<8)                  |(1<<CFlag)\r
1830          .hword  (0x63<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1831          .hword  (0x64<<8)                  |(1<<CFlag)\r
1832          .hword  (0x65<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1833          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1834          .hword  (0x67<<8)                  |(1<<CFlag)\r
1835          .hword  (0x68<<8)               |(1<<CFlag)\r
1836          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1837          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1838          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1839          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1840          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1841          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1842          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1843          .hword  (0x70<<8)                  |(1<<CFlag)\r
1844          .hword  (0x71<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1845          .hword  (0x72<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1846          .hword  (0x73<<8)                  |(1<<CFlag)\r
1847          .hword  (0x74<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1848          .hword  (0x75<<8)                  |(1<<CFlag)\r
1849          .hword  (0x76<<8)                  |(1<<CFlag)\r
1850          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1851          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1852          .hword  (0x79<<8)               |(1<<CFlag)\r
1853          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1854          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1855          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1856          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1857          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1858          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1859          .hword  (0x80<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1860          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1861          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1862          .hword  (0x83<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1863          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1864          .hword  (0x85<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1865          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1866          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1867          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1868          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
1869          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1870          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1871          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1872          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1873          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1874          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1875          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1876          .hword  (0x91<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1877          .hword  (0x92<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1878          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1879          .hword  (0x94<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1880          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1881          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1882          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1883          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
1884          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1885          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1886          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1887          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1888          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1889          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1890          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1891          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1892          .hword  (0xA1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1893          .hword  (0xA2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1894          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1895          .hword  (0xA4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1896          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1897          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1898          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1899          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1900          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1901          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1902          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1903          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1904          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1905          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1906          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1907          .hword  (0xB0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1908          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1909          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1910          .hword  (0xB3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1911          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1912          .hword  (0xB5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1913          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1914          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1915          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1916          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1917          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1918          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1919          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1920          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1921          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1922          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1923          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1924          .hword  (0xC1<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1925          .hword  (0xC2<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1926          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1927          .hword  (0xC4<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1928          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1929          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1930          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1931          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
1932          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1933          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1934          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1935          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1936          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1937          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1938          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1939          .hword  (0xD0<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1940          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1941          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1942          .hword  (0xD3<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1943          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1944          .hword  (0xD5<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1945          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1946          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1947          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1948          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
1949          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1950          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1951          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1952          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1953          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1954          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1955          .hword  (0xE0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1956          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1957          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1958          .hword  (0xE3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1959          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1960          .hword  (0xE5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1961          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1962          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1963          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1964          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1965          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1966          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1967          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1968          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1969          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1970          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1971          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1972          .hword  (0xF1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1973          .hword  (0xF2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1974          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1975          .hword  (0xF4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1976          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1977          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1978          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1979          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1980          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1981          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1982          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1983          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1984          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1985          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1986          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1987          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1988          .hword  (0x01<<8)                     |(1<<CFlag)\r
1989          .hword  (0x02<<8)                     |(1<<CFlag)\r
1990          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1991          .hword  (0x04<<8)                     |(1<<CFlag)\r
1992          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1993          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1994          .hword  (0x07<<8)                     |(1<<CFlag)\r
1995          .hword  (0x08<<8)                  |(1<<CFlag)\r
1996          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1997          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1998          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1999          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2000          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2001          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2002          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2003          .hword  (0x10<<8)                     |(1<<CFlag)\r
2004          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2005          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2006          .hword  (0x13<<8)                     |(1<<CFlag)\r
2007          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2008          .hword  (0x15<<8)                     |(1<<CFlag)\r
2009          .hword  (0x16<<8)                     |(1<<CFlag)\r
2010          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2011          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2012          .hword  (0x19<<8)                  |(1<<CFlag)\r
2013          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2014          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2015          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2016          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2017          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2018          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2019          .hword  (0x20<<8)                  |(1<<CFlag)\r
2020          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2021          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2022          .hword  (0x23<<8)                  |(1<<CFlag)\r
2023          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2024          .hword  (0x25<<8)                  |(1<<CFlag)\r
2025          .hword  (0x26<<8)                  |(1<<CFlag)\r
2026          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2027          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2028          .hword  (0x29<<8)               |(1<<CFlag)\r
2029          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2030          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2031          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2032          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2033          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2034          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2035          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2036          .hword  (0x31<<8)                  |(1<<CFlag)\r
2037          .hword  (0x32<<8)                  |(1<<CFlag)\r
2038          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2039          .hword  (0x34<<8)                  |(1<<CFlag)\r
2040          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2041          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2042          .hword  (0x37<<8)                  |(1<<CFlag)\r
2043          .hword  (0x38<<8)               |(1<<CFlag)\r
2044          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2045          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2046          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2047          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2048          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2049          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2050          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2051          .hword  (0x40<<8)                     |(1<<CFlag)\r
2052          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2053          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2054          .hword  (0x43<<8)                     |(1<<CFlag)\r
2055          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2056          .hword  (0x45<<8)                     |(1<<CFlag)\r
2057          .hword  (0x46<<8)                     |(1<<CFlag)\r
2058          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2059          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2060          .hword  (0x49<<8)                  |(1<<CFlag)\r
2061          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2062          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2063          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2064          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2065          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2066          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2067          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2068          .hword  (0x51<<8)                     |(1<<CFlag)\r
2069          .hword  (0x52<<8)                     |(1<<CFlag)\r
2070          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2071          .hword  (0x54<<8)                     |(1<<CFlag)\r
2072          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2073          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2074          .hword  (0x57<<8)                     |(1<<CFlag)\r
2075          .hword  (0x58<<8)                  |(1<<CFlag)\r
2076          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2077          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2078          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2079          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2080          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2081          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2082          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2083          .hword  (0x06<<8)               |(1<<VFlag)\r
2084          .hword  (0x07<<8)                  \r
2085          .hword  (0x08<<8)               \r
2086          .hword  (0x09<<8)            |(1<<VFlag)\r
2087          .hword  (0x0A<<8)            |(1<<VFlag)\r
2088          .hword  (0x0B<<8)               \r
2089          .hword  (0x0C<<8)            |(1<<VFlag)\r
2090          .hword  (0x0D<<8)               \r
2091          .hword  (0x0E<<8)               \r
2092          .hword  (0x0F<<8)            |(1<<VFlag)\r
2093          .hword  (0x10<<8)         |(1<<HFlag)      \r
2094          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2095          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2096          .hword  (0x13<<8)         |(1<<HFlag)      \r
2097          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2098          .hword  (0x15<<8)         |(1<<HFlag)      \r
2099          .hword  (0x16<<8)                  \r
2100          .hword  (0x17<<8)               |(1<<VFlag)\r
2101          .hword  (0x18<<8)            |(1<<VFlag)\r
2102          .hword  (0x19<<8)               \r
2103          .hword  (0x1A<<8)               \r
2104          .hword  (0x1B<<8)            |(1<<VFlag)\r
2105          .hword  (0x1C<<8)               \r
2106          .hword  (0x1D<<8)            |(1<<VFlag)\r
2107          .hword  (0x1E<<8)            |(1<<VFlag)\r
2108          .hword  (0x1F<<8)               \r
2109          .hword  (0x20<<8)      |(1<<HFlag)      \r
2110          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2111          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2112          .hword  (0x23<<8)      |(1<<HFlag)      \r
2113          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2114          .hword  (0x25<<8)      |(1<<HFlag)      \r
2115          .hword  (0x26<<8)               \r
2116          .hword  (0x27<<8)            |(1<<VFlag)\r
2117          .hword  (0x28<<8)         |(1<<VFlag)\r
2118          .hword  (0x29<<8)            \r
2119          .hword  (0x2A<<8)            \r
2120          .hword  (0x2B<<8)         |(1<<VFlag)\r
2121          .hword  (0x2C<<8)            \r
2122          .hword  (0x2D<<8)         |(1<<VFlag)\r
2123          .hword  (0x2E<<8)         |(1<<VFlag)\r
2124          .hword  (0x2F<<8)            \r
2125          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2126          .hword  (0x31<<8)      |(1<<HFlag)      \r
2127          .hword  (0x32<<8)      |(1<<HFlag)      \r
2128          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2129          .hword  (0x34<<8)      |(1<<HFlag)      \r
2130          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2131          .hword  (0x36<<8)            |(1<<VFlag)\r
2132          .hword  (0x37<<8)               \r
2133          .hword  (0x38<<8)            \r
2134          .hword  (0x39<<8)         |(1<<VFlag)\r
2135          .hword  (0x3A<<8)         |(1<<VFlag)\r
2136          .hword  (0x3B<<8)            \r
2137          .hword  (0x3C<<8)         |(1<<VFlag)\r
2138          .hword  (0x3D<<8)            \r
2139          .hword  (0x3E<<8)            \r
2140          .hword  (0x3F<<8)         |(1<<VFlag)\r
2141          .hword  (0x40<<8)         |(1<<HFlag)      \r
2142          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2143          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2144          .hword  (0x43<<8)         |(1<<HFlag)      \r
2145          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2146          .hword  (0x45<<8)         |(1<<HFlag)      \r
2147          .hword  (0x46<<8)                  \r
2148          .hword  (0x47<<8)               |(1<<VFlag)\r
2149          .hword  (0x48<<8)            |(1<<VFlag)\r
2150          .hword  (0x49<<8)               \r
2151          .hword  (0x4A<<8)               \r
2152          .hword  (0x4B<<8)            |(1<<VFlag)\r
2153          .hword  (0x4C<<8)               \r
2154          .hword  (0x4D<<8)            |(1<<VFlag)\r
2155          .hword  (0x4E<<8)            |(1<<VFlag)\r
2156          .hword  (0x4F<<8)               \r
2157          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2158          .hword  (0x51<<8)         |(1<<HFlag)      \r
2159          .hword  (0x52<<8)         |(1<<HFlag)      \r
2160          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2161          .hword  (0x54<<8)         |(1<<HFlag)      \r
2162          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2163          .hword  (0x56<<8)               |(1<<VFlag)\r
2164          .hword  (0x57<<8)                  \r
2165          .hword  (0x58<<8)               \r
2166          .hword  (0x59<<8)            |(1<<VFlag)\r
2167          .hword  (0x5A<<8)            |(1<<VFlag)\r
2168          .hword  (0x5B<<8)               \r
2169          .hword  (0x5C<<8)            |(1<<VFlag)\r
2170          .hword  (0x5D<<8)               \r
2171          .hword  (0x5E<<8)               \r
2172          .hword  (0x5F<<8)            |(1<<VFlag)\r
2173          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2174          .hword  (0x61<<8)      |(1<<HFlag)      \r
2175          .hword  (0x62<<8)      |(1<<HFlag)      \r
2176          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2177          .hword  (0x64<<8)      |(1<<HFlag)      \r
2178          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2179          .hword  (0x66<<8)            |(1<<VFlag)\r
2180          .hword  (0x67<<8)               \r
2181          .hword  (0x68<<8)            \r
2182          .hword  (0x69<<8)         |(1<<VFlag)\r
2183          .hword  (0x6A<<8)         |(1<<VFlag)\r
2184          .hword  (0x6B<<8)            \r
2185          .hword  (0x6C<<8)         |(1<<VFlag)\r
2186          .hword  (0x6D<<8)            \r
2187          .hword  (0x6E<<8)            \r
2188          .hword  (0x6F<<8)         |(1<<VFlag)\r
2189          .hword  (0x70<<8)      |(1<<HFlag)      \r
2190          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2191          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2192          .hword  (0x73<<8)      |(1<<HFlag)      \r
2193          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2194          .hword  (0x75<<8)      |(1<<HFlag)      \r
2195          .hword  (0x76<<8)               \r
2196          .hword  (0x77<<8)            |(1<<VFlag)\r
2197          .hword  (0x78<<8)         |(1<<VFlag)\r
2198          .hword  (0x79<<8)            \r
2199          .hword  (0x7A<<8)            \r
2200          .hword  (0x7B<<8)         |(1<<VFlag)\r
2201          .hword  (0x7C<<8)            \r
2202          .hword  (0x7D<<8)         |(1<<VFlag)\r
2203          .hword  (0x7E<<8)         |(1<<VFlag)\r
2204          .hword  (0x7F<<8)            \r
2205          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2206          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2207          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2208          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2209          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2210          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2211          .hword  (0x86<<8)|(1<<SFlag)               \r
2212          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
2213          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
2214          .hword  (0x89<<8)|(1<<SFlag)            \r
2215          .hword  (0x8A<<8)|(1<<SFlag)            \r
2216          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)\r
2217          .hword  (0x8C<<8)|(1<<SFlag)            \r
2218          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)\r
2219          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)\r
2220          .hword  (0x8F<<8)|(1<<SFlag)            \r
2221          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2222          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2223          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2224          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2225          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2226          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2227          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
2228          .hword  (0x97<<8)|(1<<SFlag)               \r
2229          .hword  (0x98<<8)|(1<<SFlag)            \r
2230          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
2231          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)\r
2232          .hword  (0x9B<<8)|(1<<SFlag)            \r
2233          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)\r
2234          .hword  (0x9D<<8)|(1<<SFlag)            \r
2235          .hword  (0x9E<<8)|(1<<SFlag)            \r
2236          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)\r
2237          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2238          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2239          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2240          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2241          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2242          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2243          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2244          .hword  (0x07<<8)                     |(1<<CFlag)\r
2245          .hword  (0x08<<8)                  |(1<<CFlag)\r
2246          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2247          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2248          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2249          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2250          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2251          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2252          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2253          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2254          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2255          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2256          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2257          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2258          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2259          .hword  (0x16<<8)                     |(1<<CFlag)\r
2260          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2261          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2262          .hword  (0x19<<8)                  |(1<<CFlag)\r
2263          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2264          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2265          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2266          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2267          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2268          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2269          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2270          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2271          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2272          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2273          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2274          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2275          .hword  (0x26<<8)                  |(1<<CFlag)\r
2276          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2277          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2278          .hword  (0x29<<8)               |(1<<CFlag)\r
2279          .hword  (0x2A<<8)               |(1<<CFlag)\r
2280          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2281          .hword  (0x2C<<8)               |(1<<CFlag)\r
2282          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2283          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2284          .hword  (0x2F<<8)               |(1<<CFlag)\r
2285          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2286          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2287          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2288          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2289          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2290          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2291          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2292          .hword  (0x37<<8)                  |(1<<CFlag)\r
2293          .hword  (0x38<<8)               |(1<<CFlag)\r
2294          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2295          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2296          .hword  (0x3B<<8)               |(1<<CFlag)\r
2297          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2298          .hword  (0x3D<<8)               |(1<<CFlag)\r
2299          .hword  (0x3E<<8)               |(1<<CFlag)\r
2300          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2301          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2302          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2303          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2304          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2305          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2306          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2307          .hword  (0x46<<8)                     |(1<<CFlag)\r
2308          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2309          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2310          .hword  (0x49<<8)                  |(1<<CFlag)\r
2311          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2312          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2313          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2314          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2315          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2316          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2317          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2318          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2319          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2320          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2321          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2322          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2323          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2324          .hword  (0x57<<8)                     |(1<<CFlag)\r
2325          .hword  (0x58<<8)                  |(1<<CFlag)\r
2326          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2327          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2328          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2329          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2330          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2331          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2332          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2333          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2334          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2335          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2336          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2337          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2338          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2339          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2340          .hword  (0x67<<8)                  |(1<<CFlag)\r
2341          .hword  (0x68<<8)               |(1<<CFlag)\r
2342          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2343          .hword  (0x6A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2344          .hword  (0x6B<<8)               |(1<<CFlag)\r
2345          .hword  (0x6C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2346          .hword  (0x6D<<8)               |(1<<CFlag)\r
2347          .hword  (0x6E<<8)               |(1<<CFlag)\r
2348          .hword  (0x6F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2349          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2350          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2351          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2352          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2353          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2354          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2355          .hword  (0x76<<8)                  |(1<<CFlag)\r
2356          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2357          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2358          .hword  (0x79<<8)               |(1<<CFlag)\r
2359          .hword  (0x7A<<8)               |(1<<CFlag)\r
2360          .hword  (0x7B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2361          .hword  (0x7C<<8)               |(1<<CFlag)\r
2362          .hword  (0x7D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2363          .hword  (0x7E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2364          .hword  (0x7F<<8)               |(1<<CFlag)\r
2365          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2366          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2367          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2368          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2369          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2370          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2371          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2372          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2373          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2374          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
2375          .hword  (0x8A<<8)|(1<<SFlag)               |(1<<CFlag)\r
2376          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2377          .hword  (0x8C<<8)|(1<<SFlag)               |(1<<CFlag)\r
2378          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2379          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2380          .hword  (0x8F<<8)|(1<<SFlag)               |(1<<CFlag)\r
2381          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2382          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2383          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2384          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2385          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2386          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2387          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2388          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2389          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
2390          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2391          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2392          .hword  (0x9B<<8)|(1<<SFlag)               |(1<<CFlag)\r
2393          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2394          .hword  (0x9D<<8)|(1<<SFlag)               |(1<<CFlag)\r
2395          .hword  (0x9E<<8)|(1<<SFlag)               |(1<<CFlag)\r
2396          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2397          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2398          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2399          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2400          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2401          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2402          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2403          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2404          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2405          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2406          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2407          .hword  (0xAA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2408          .hword  (0xAB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2409          .hword  (0xAC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2410          .hword  (0xAD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2411          .hword  (0xAE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2412          .hword  (0xAF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2413          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2414          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2415          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2416          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2417          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2418          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2419          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2420          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2421          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2422          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2423          .hword  (0xBA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2424          .hword  (0xBB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2425          .hword  (0xBC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2426          .hword  (0xBD<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2427          .hword  (0xBE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2428          .hword  (0xBF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2429          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2430          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2431          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2432          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2433          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2434          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2435          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2436          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2437          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
2438          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2439          .hword  (0xCA<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2440          .hword  (0xCB<<8)|(1<<SFlag)               |(1<<CFlag)\r
2441          .hword  (0xCC<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2442          .hword  (0xCD<<8)|(1<<SFlag)               |(1<<CFlag)\r
2443          .hword  (0xCE<<8)|(1<<SFlag)               |(1<<CFlag)\r
2444          .hword  (0xCF<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2445          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2446          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2447          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2448          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2449          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2450          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2451          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2452          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2453          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2454          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
2455          .hword  (0xDA<<8)|(1<<SFlag)               |(1<<CFlag)\r
2456          .hword  (0xDB<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2457          .hword  (0xDC<<8)|(1<<SFlag)               |(1<<CFlag)\r
2458          .hword  (0xDD<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2459          .hword  (0xDE<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2460          .hword  (0xDF<<8)|(1<<SFlag)               |(1<<CFlag)\r
2461          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2462          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2463          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2464          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2465          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2466          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2467          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2468          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2469          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2470          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2471          .hword  (0xEA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2472          .hword  (0xEB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2473          .hword  (0xEC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2474          .hword  (0xED<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2475          .hword  (0xEE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2476          .hword  (0xEF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2477          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2478          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2479          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2480          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2481          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2482          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2483          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2484          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2485          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2486          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2487          .hword  (0xFA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2488          .hword  (0xFB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2489          .hword  (0xFC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2490          .hword  (0xFD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2491          .hword  (0xFE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2492          .hword  (0xFF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2493          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2494          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2495          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2496          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2497          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2498          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2499          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2500          .hword  (0x07<<8)                     |(1<<CFlag)\r
2501          .hword  (0x08<<8)                  |(1<<CFlag)\r
2502          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2503          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2504          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2505          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2506          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2507          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2508          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2509          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2510          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2511          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2512          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2513          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2514          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2515          .hword  (0x16<<8)                     |(1<<CFlag)\r
2516          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2517          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2518          .hword  (0x19<<8)                  |(1<<CFlag)\r
2519          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2520          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2521          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2522          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2523          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2524          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2525          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2526          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2527          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2528          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2529          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2530          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2531          .hword  (0x26<<8)                  |(1<<CFlag)\r
2532          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2533          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2534          .hword  (0x29<<8)               |(1<<CFlag)\r
2535          .hword  (0x2A<<8)               |(1<<CFlag)\r
2536          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2537          .hword  (0x2C<<8)               |(1<<CFlag)\r
2538          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2539          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2540          .hword  (0x2F<<8)               |(1<<CFlag)\r
2541          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2542          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2543          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2544          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2545          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2546          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2547          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2548          .hword  (0x37<<8)                  |(1<<CFlag)\r
2549          .hword  (0x38<<8)               |(1<<CFlag)\r
2550          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2551          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2552          .hword  (0x3B<<8)               |(1<<CFlag)\r
2553          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2554          .hword  (0x3D<<8)               |(1<<CFlag)\r
2555          .hword  (0x3E<<8)               |(1<<CFlag)\r
2556          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2557          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2558          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2559          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2560          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2561          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2562          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2563          .hword  (0x46<<8)                     |(1<<CFlag)\r
2564          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2565          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2566          .hword  (0x49<<8)                  |(1<<CFlag)\r
2567          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2568          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2569          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2570          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2571          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2572          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2573          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2574          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2575          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2576          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2577          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2578          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2579          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2580          .hword  (0x57<<8)                     |(1<<CFlag)\r
2581          .hword  (0x58<<8)                  |(1<<CFlag)\r
2582          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2583          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2584          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2585          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2586          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2587          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2588          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2589          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2590          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2591          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2592          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2593          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2594          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2595          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2596          .hword  (0x01<<8)                  |(1<<NFlag)   \r
2597          .hword  (0x02<<8)                  |(1<<NFlag)   \r
2598          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2599          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2600          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2601          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2602          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2603          .hword  (0x08<<8)               |(1<<NFlag)   \r
2604          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2605          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2606          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2607          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2608          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2609          .hword  (0x08<<8)               |(1<<NFlag)   \r
2610          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2611          .hword  (0x10<<8)                  |(1<<NFlag)   \r
2612          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2613          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2614          .hword  (0x13<<8)                  |(1<<NFlag)   \r
2615          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2616          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2617          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2618          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2619          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2620          .hword  (0x19<<8)               |(1<<NFlag)   \r
2621          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2622          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2623          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2624          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2625          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2626          .hword  (0x19<<8)               |(1<<NFlag)   \r
2627          .hword  (0x20<<8)               |(1<<NFlag)   \r
2628          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2629          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2630          .hword  (0x23<<8)               |(1<<NFlag)   \r
2631          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2632          .hword  (0x25<<8)               |(1<<NFlag)   \r
2633          .hword  (0x26<<8)               |(1<<NFlag)   \r
2634          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2635          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2636          .hword  (0x29<<8)            |(1<<NFlag)   \r
2637          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2638          .hword  (0x25<<8)               |(1<<NFlag)   \r
2639          .hword  (0x26<<8)               |(1<<NFlag)   \r
2640          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2641          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2642          .hword  (0x29<<8)            |(1<<NFlag)   \r
2643          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2644          .hword  (0x31<<8)               |(1<<NFlag)   \r
2645          .hword  (0x32<<8)               |(1<<NFlag)   \r
2646          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2647          .hword  (0x34<<8)               |(1<<NFlag)   \r
2648          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2649          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2650          .hword  (0x37<<8)               |(1<<NFlag)   \r
2651          .hword  (0x38<<8)            |(1<<NFlag)   \r
2652          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2653          .hword  (0x34<<8)               |(1<<NFlag)   \r
2654          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2655          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2656          .hword  (0x37<<8)               |(1<<NFlag)   \r
2657          .hword  (0x38<<8)            |(1<<NFlag)   \r
2658          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2659          .hword  (0x40<<8)                  |(1<<NFlag)   \r
2660          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2661          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2662          .hword  (0x43<<8)                  |(1<<NFlag)   \r
2663          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2664          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2665          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2666          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2667          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2668          .hword  (0x49<<8)               |(1<<NFlag)   \r
2669          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2670          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2671          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2672          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2673          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2674          .hword  (0x49<<8)               |(1<<NFlag)   \r
2675          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2676          .hword  (0x51<<8)                  |(1<<NFlag)   \r
2677          .hword  (0x52<<8)                  |(1<<NFlag)   \r
2678          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2679          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2680          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2681          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2682          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2683          .hword  (0x58<<8)               |(1<<NFlag)   \r
2684          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2685          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2686          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2687          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2688          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2689          .hword  (0x58<<8)               |(1<<NFlag)   \r
2690          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2691          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2692          .hword  (0x61<<8)               |(1<<NFlag)   \r
2693          .hword  (0x62<<8)               |(1<<NFlag)   \r
2694          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2695          .hword  (0x64<<8)               |(1<<NFlag)   \r
2696          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2697          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2698          .hword  (0x67<<8)               |(1<<NFlag)   \r
2699          .hword  (0x68<<8)            |(1<<NFlag)   \r
2700          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2701          .hword  (0x64<<8)               |(1<<NFlag)   \r
2702          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2703          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2704          .hword  (0x67<<8)               |(1<<NFlag)   \r
2705          .hword  (0x68<<8)            |(1<<NFlag)   \r
2706          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2707          .hword  (0x70<<8)               |(1<<NFlag)   \r
2708          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2709          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2710          .hword  (0x73<<8)               |(1<<NFlag)   \r
2711          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2712          .hword  (0x75<<8)               |(1<<NFlag)   \r
2713          .hword  (0x76<<8)               |(1<<NFlag)   \r
2714          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2715          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2716          .hword  (0x79<<8)            |(1<<NFlag)   \r
2717          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2718          .hword  (0x75<<8)               |(1<<NFlag)   \r
2719          .hword  (0x76<<8)               |(1<<NFlag)   \r
2720          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2721          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2722          .hword  (0x79<<8)            |(1<<NFlag)   \r
2723          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2724          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2725          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2726          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2727          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2728          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2729          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2730          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2731          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2732          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2733          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2734          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2735          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2736          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2737          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2738          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2739          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2740          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2741          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2742          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2743          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2744          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2745          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2746          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2747          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2748          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2749          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2750          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2751          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2752          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2753          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2754          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2755          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2756          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2757          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2758          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2759          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2760          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2761          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2762          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2763          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2764          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2765          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2766          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2767          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2768          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2769          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2770          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2771          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2772          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2773          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2774          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2775          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2776          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2777          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2778          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2779          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2780          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2781          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2782          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2783          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2784          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2785          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2786          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2787          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2788          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
2789          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
2790          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2791          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2792          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2793          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2794          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2795          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2796          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2797          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2798          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2799          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2800          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2801          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2802          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2803          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
2804          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2805          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2806          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
2807          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2808          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2809          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2810          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2811          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2812          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2813          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2814          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2815          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2816          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2817          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2818          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2819          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2820          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2821          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2822          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2823          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2824          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2825          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2826          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2827          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2828          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2829          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2830          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2831          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2832          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2833          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2834          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2835          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2836          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2837          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2838          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2839          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2840          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2841          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2842          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2843          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2844          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2845          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2846          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2847          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2848          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2849          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2850          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2851          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2852          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2853          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2854          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2855          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2856          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2857          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2858          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2859          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2860          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2861          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2862          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2863          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2864          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2865          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2866          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2867          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2868          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2869          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2870          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2871          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2872          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2873          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2874          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2875          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2876          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2877          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2878          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2879          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2880          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2881          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2882          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2883          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2884          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2885          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2886          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2887          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2888          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2889          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2890          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2891          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2892          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2893          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2894          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2895          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2896          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2897          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2898          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2899          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2900          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2901          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2902          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2903          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2904          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2905          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2906          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2907          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2908          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2909          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2910          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2911          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2912          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2913          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2914          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2915          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2916          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2917          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2918          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2919          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2920          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2921          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2922          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2923          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2924          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2925          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2926          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2927          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2928          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2929          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2930          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2931          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2932          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2933          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2934          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2935          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2936          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2937          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2938          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2939          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2940          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2941          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2942          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2943          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2944          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2945          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2946          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2947          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2948          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2949          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2950          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2951          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2952          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2953          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2954          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2955          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2956          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2957          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2958          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2959          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2960          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2961          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2962          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2963          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2964          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2965          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2966          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2967          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2968          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2969          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2970          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2971          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2972          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2973          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2974          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2975          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2976          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2977          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2978          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2979          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
2980          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2981          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2982          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
2983          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2984          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2985          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2986          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2987          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2988          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2989          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2990          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2991          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2992          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2993          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2994          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2995          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2996          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
2997          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
2998          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2999          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3000          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3001          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3002          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3003          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3004          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3005          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3006          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3007          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3008          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3009          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3010          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3011          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3012          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3013          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3014          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3015          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3016          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3017          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3018          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3019          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3020          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3021          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3022          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3023          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3024          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3025          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3026          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3027          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3028          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3029          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3030          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3031          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3032          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3033          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3034          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3035          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3036          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3037          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3038          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3039          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3040          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3041          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3042          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3043          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3044          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3045          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3046          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3047          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3048          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3049          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3050          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3051          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3052          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3053          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3054          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3055          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3056          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3057          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3058          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3059          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3060          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3061          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3062          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3063          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3064          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3065          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3066          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3067          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3068          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3069          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3070          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3071          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3072          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3073          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3074          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3075          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3076          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3077          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3078          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3079          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3080          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3081          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3082          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3083          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3084          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3085          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3086          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3087          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3088          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3089          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3090          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3091          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3092          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3093          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3094          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3095          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3096          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3097          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3098          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3099          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3100          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3101          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3102          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3103          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3104          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3105          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3106          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3107          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3108          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3109          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3110          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3111          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3112          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3113          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3114          .hword  (0x01<<8)                  |(1<<NFlag)   \r
3115          .hword  (0x02<<8)                  |(1<<NFlag)   \r
3116          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3117          .hword  (0x04<<8)                  |(1<<NFlag)   \r
3118          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3119          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3120          .hword  (0x07<<8)                  |(1<<NFlag)   \r
3121          .hword  (0x08<<8)               |(1<<NFlag)   \r
3122          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3123          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3124          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3125          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3126          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3127          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3128          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3129          .hword  (0x10<<8)                  |(1<<NFlag)   \r
3130          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3131          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3132          .hword  (0x13<<8)                  |(1<<NFlag)   \r
3133          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3134          .hword  (0x15<<8)                  |(1<<NFlag)   \r
3135          .hword  (0x16<<8)                  |(1<<NFlag)   \r
3136          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3137          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3138          .hword  (0x19<<8)               |(1<<NFlag)   \r
3139          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3140          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3141          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3142          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3143          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3144          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3145          .hword  (0x20<<8)               |(1<<NFlag)   \r
3146          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3147          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3148          .hword  (0x23<<8)               |(1<<NFlag)   \r
3149          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3150          .hword  (0x25<<8)               |(1<<NFlag)   \r
3151          .hword  (0x26<<8)               |(1<<NFlag)   \r
3152          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3153          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3154          .hword  (0x29<<8)            |(1<<NFlag)   \r
3155          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3156          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3157          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3158          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3159          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3160          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3161          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3162          .hword  (0x31<<8)               |(1<<NFlag)   \r
3163          .hword  (0x32<<8)               |(1<<NFlag)   \r
3164          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3165          .hword  (0x34<<8)               |(1<<NFlag)   \r
3166          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3167          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3168          .hword  (0x37<<8)               |(1<<NFlag)   \r
3169          .hword  (0x38<<8)            |(1<<NFlag)   \r
3170          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3171          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3172          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3173          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3174          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3175          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3176          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3177          .hword  (0x40<<8)                  |(1<<NFlag)   \r
3178          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3179          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3180          .hword  (0x43<<8)                  |(1<<NFlag)   \r
3181          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3182          .hword  (0x45<<8)                  |(1<<NFlag)   \r
3183          .hword  (0x46<<8)                  |(1<<NFlag)   \r
3184          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3185          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3186          .hword  (0x49<<8)               |(1<<NFlag)   \r
3187          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3188          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3189          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3190          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3191          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3192          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3193          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3194          .hword  (0x51<<8)                  |(1<<NFlag)   \r
3195          .hword  (0x52<<8)                  |(1<<NFlag)   \r
3196          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3197          .hword  (0x54<<8)                  |(1<<NFlag)   \r
3198          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3199          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3200          .hword  (0x57<<8)                  |(1<<NFlag)   \r
3201          .hword  (0x58<<8)               |(1<<NFlag)   \r
3202          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3203          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3204          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3205          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3206          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3207          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3208          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3209          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3210          .hword  (0x61<<8)               |(1<<NFlag)   \r
3211          .hword  (0x62<<8)               |(1<<NFlag)   \r
3212          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3213          .hword  (0x64<<8)               |(1<<NFlag)   \r
3214          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3215          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3216          .hword  (0x67<<8)               |(1<<NFlag)   \r
3217          .hword  (0x68<<8)            |(1<<NFlag)   \r
3218          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3219          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3220          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3221          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3222          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3223          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3224          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3225          .hword  (0x70<<8)               |(1<<NFlag)   \r
3226          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3227          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3228          .hword  (0x73<<8)               |(1<<NFlag)   \r
3229          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3230          .hword  (0x75<<8)               |(1<<NFlag)   \r
3231          .hword  (0x76<<8)               |(1<<NFlag)   \r
3232          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3233          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3234          .hword  (0x79<<8)            |(1<<NFlag)   \r
3235          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3236          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3237          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3238          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3239          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3240          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3241          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3242          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3243          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3244          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3245          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3246          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3247          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3248          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3249          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3250          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
3251          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3252          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3253          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3254          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3255          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3256          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3257          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3258          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3259          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3260          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3261          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3262          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3263          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3264          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3265          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3266          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3267          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3268          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3269          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3270          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3271          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3272          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3273          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3274          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3275          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3276          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3277          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3278          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3279          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3280          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3281          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3282          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3283          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3284          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3285          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3286          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3287          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3288          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3289          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3290          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3291          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3292          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3293          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3294          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3295          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3296          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3297          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3298          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3299          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3300          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3301          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3302          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3303          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3304          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3305          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3306          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3307          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3308          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3309          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3310          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3311          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3312          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3313          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3314          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3315          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3316          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3317          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3318          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3319          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3320          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3321          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3322          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3323          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3324          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3325          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3326          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3327          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3328          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3329          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3330          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3331          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3332          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3333          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3334          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3335          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3336          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3337          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3338          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3339          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3340          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3341          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3342          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3343          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3344          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3345          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3346          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3347          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3348          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3349          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3350          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3351          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3352          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3353          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3354          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3355          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3356          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3357          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3358          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3359          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3360          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3361          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3362          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3363          .hword  (0x9A<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3364          .hword  (0x9B<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3365          .hword  (0x9C<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3366          .hword  (0x9D<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3367          .hword  (0x9E<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3368          .hword  (0x9F<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3369          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3370          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3371          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3372          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3373          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3374          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3375          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3376          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3377          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3378          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3379          .hword  (0xAA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3380          .hword  (0xAB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3381          .hword  (0xAC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3382          .hword  (0xAD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3383          .hword  (0xAE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3384          .hword  (0xAF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3385          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3386          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3387          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3388          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3389          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3390          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3391          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3392          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3393          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3394          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3395          .hword  (0xBA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3396          .hword  (0xBB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3397          .hword  (0xBC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3398          .hword  (0xBD<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3399          .hword  (0xBE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3400          .hword  (0xBF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3401          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3402          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3403          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3404          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3405          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3406          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3407          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3408          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3409          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3410          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3411          .hword  (0xCA<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3412          .hword  (0xCB<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3413          .hword  (0xCC<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3414          .hword  (0xCD<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3415          .hword  (0xCE<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3416          .hword  (0xCF<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3417          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3418          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3419          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3420          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3421          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3422          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3423          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3424          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3425          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3426          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3427          .hword  (0xDA<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3428          .hword  (0xDB<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3429          .hword  (0xDC<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3430          .hword  (0xDD<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3431          .hword  (0xDE<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3432          .hword  (0xDF<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3433          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3434          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3435          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3436          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3437          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3438          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3439          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3440          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3441          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3442          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3443          .hword  (0xEA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3444          .hword  (0xEB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3445          .hword  (0xEC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3446          .hword  (0xED<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3447          .hword  (0xEE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3448          .hword  (0xEF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3449          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3450          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3451          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3452          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3453          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3454          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3455          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3456          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3457          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3458          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3459          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3460          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3461          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3462          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3463          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3464          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3465          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3466          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3467          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3468          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3469          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3470          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3471          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3472          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3473          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
3474          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3475          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3476          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3477          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3478          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3479          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3480          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3481          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3482          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3483          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3484          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3485          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3486          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3487          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3488          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3489          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3490          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
3491          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3492          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3493          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3494          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3495          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3496          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3497          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
3498          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3499          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3500          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
3501          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3502          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
3503          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
3504          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3505          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3506          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
3507          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3508          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3509          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3510          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3511          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3512          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3513          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3514          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
3515          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
3516          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3517          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3518          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3519          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3520          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3521          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3522          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3523          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3524          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3525          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3526          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3527          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3528          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3529          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3530          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3531          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3532          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3533          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3534          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3535          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3536          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3537          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3538          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3539          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3540          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3541          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3542          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3543          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3544          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3545          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3546          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3547          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3548          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3549          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3550          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3551          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3552          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3553          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3554          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3555          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3556          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3557          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3558          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3559          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3560          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3561          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3562          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3563          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3564          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3565          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3566          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3567          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3568          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3569          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3570          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3571          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3572          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3573          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3574          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3575          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3576          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3577          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3578          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3579          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3580          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3581          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3582          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3583          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3584          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3585          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3586          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3587          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3588          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3589          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3590          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3591          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3592          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3593          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3594          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3595          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3596          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3597          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3598          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3599          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3600          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3601          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3602          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3603          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3604          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3605          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3606          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3607          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3608          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3609          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3610          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3611          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3612          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3613          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3614          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3615          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3616          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3617          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3618          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3619          \r
3620 .align 4\r
3621 \r
3622 AF_Z80:  .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 0\r
3623          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 1\r
3624          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 2\r
3625          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 3\r
3626          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 4\r
3627          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 5\r
3628          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 6\r
3629          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 7\r
3630          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 8\r
3631          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 9\r
3632          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 10\r
3633          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 11\r
3634          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 12\r
3635          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 13\r
3636          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 14\r
3637          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 15\r
3638          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 16\r
3639          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 17\r
3640          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 18\r
3641          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 19\r
3642          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 20\r
3643          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 21\r
3644          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 22\r
3645          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 23\r
3646          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 24\r
3647          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 25\r
3648          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 26\r
3649          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 27\r
3650          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 28\r
3651          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 29\r
3652          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 30\r
3653          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 31\r
3654          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 32\r
3655          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 33\r
3656          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 34\r
3657          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 35\r
3658          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 36\r
3659          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 37\r
3660          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 38\r
3661          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 39\r
3662          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 40\r
3663          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 41\r
3664          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 42\r
3665          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 43\r
3666          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 44\r
3667          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 45\r
3668          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 46\r
3669          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 47\r
3670          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 48\r
3671          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 49\r
3672          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 50\r
3673          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 51\r
3674          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 52\r
3675          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 53\r
3676          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 54\r
3677          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 55\r
3678          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 56\r
3679          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 57\r
3680          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 58\r
3681          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 59\r
3682          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 60\r
3683          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 61\r
3684          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 62\r
3685          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 63\r
3686          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 64\r
3687          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 65\r
3688          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 66\r
3689          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 67\r
3690          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 68\r
3691          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 69\r
3692          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 70\r
3693          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 71\r
3694          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 72\r
3695          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 73\r
3696          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 74\r
3697          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 75\r
3698          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 76\r
3699          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 77\r
3700          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 78\r
3701          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 79\r
3702          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 80\r
3703          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 81\r
3704          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 82\r
3705          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 83\r
3706          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 84\r
3707          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 85\r
3708          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 86\r
3709          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 87\r
3710          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 88\r
3711          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 89\r
3712          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 90\r
3713          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 91\r
3714          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 92\r
3715          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 93\r
3716          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 94\r
3717          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 95\r
3718          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 96\r
3719          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 97\r
3720          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 98\r
3721          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 99\r
3722          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 100\r
3723          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 101\r
3724          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 102\r
3725          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 103\r
3726          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 104\r
3727          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 105\r
3728          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 106\r
3729          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 107\r
3730          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 108\r
3731          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 109\r
3732          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 110\r
3733          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 111\r
3734          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 112\r
3735          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 113\r
3736          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 114\r
3737          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 115\r
3738          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 116\r
3739          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 117\r
3740          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 118\r
3741          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 119\r
3742          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 120\r
3743          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 121\r
3744          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 122\r
3745          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 123\r
3746          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 124\r
3747          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 125\r
3748          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 126\r
3749          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 127\r
3750          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 128\r
3751          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 129\r
3752          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 130\r
3753          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 131\r
3754          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 132\r
3755          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 133\r
3756          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 134\r
3757          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 135\r
3758          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 136\r
3759          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 137\r
3760          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 138\r
3761          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 139\r
3762          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 140\r
3763          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 141\r
3764          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 142\r
3765          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 143\r
3766          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 144\r
3767          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 145\r
3768          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 146\r
3769          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 147\r
3770          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 148\r
3771          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 149\r
3772          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 150\r
3773          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 151\r
3774          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 152\r
3775          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 153\r
3776          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 154\r
3777          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 155\r
3778          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 156\r
3779          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 157\r
3780          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 158\r
3781          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 159\r
3782          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 160\r
3783          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 161\r
3784          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 162\r
3785          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 163\r
3786          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 164\r
3787          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 165\r
3788          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 166\r
3789          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 167\r
3790          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 168\r
3791          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 169\r
3792          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 170\r
3793          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 171\r
3794          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 172\r
3795          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 173\r
3796          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 174\r
3797          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 175\r
3798          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 176\r
3799          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 177\r
3800          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 178\r
3801          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 179\r
3802          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 180\r
3803          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 181\r
3804          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 182\r
3805          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 183\r
3806          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 184\r
3807          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 185\r
3808          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 186\r
3809          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 187\r
3810          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 188\r
3811          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 189\r
3812          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 190\r
3813          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 191\r
3814          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 192\r
3815          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 193\r
3816          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 194\r
3817          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 195\r
3818          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 196\r
3819          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 197\r
3820          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 198\r
3821          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 199\r
3822          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 200\r
3823          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 201\r
3824          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 202\r
3825          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 203\r
3826          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 204\r
3827          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 205\r
3828          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 206\r
3829          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 207\r
3830          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 208\r
3831          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 209\r
3832          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 210\r
3833          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 211\r
3834          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 212\r
3835          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 213\r
3836          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 214\r
3837          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 215\r
3838          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 216\r
3839          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 217\r
3840          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 218\r
3841          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 219\r
3842          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 220\r
3843          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 221\r
3844          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 222\r
3845          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 223\r
3846          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 224\r
3847          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 225\r
3848          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 226\r
3849          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 227\r
3850          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 228\r
3851          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 229\r
3852          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 230\r
3853          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 231\r
3854          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 232\r
3855          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 233\r
3856          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 234\r
3857          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 235\r
3858          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 236\r
3859          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 237\r
3860          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 238\r
3861          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 239\r
3862          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 240\r
3863          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 241\r
3864          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 242\r
3865          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 243\r
3866          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 244\r
3867          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 245\r
3868          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 246\r
3869          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 247\r
3870          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 248\r
3871          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 249\r
3872          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 250\r
3873          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 251\r
3874          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 252\r
3875          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 253\r
3876          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 254\r
3877          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 255\r
3878 \r
3879 .align 4\r
3880 \r
3881 AF_ARM:  .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 0\r
3882          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 1\r
3883          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 2\r
3884          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 3\r
3885          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 4\r
3886          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 5\r
3887          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 6\r
3888          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 7\r
3889          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 8\r
3890          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 9\r
3891          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 10\r
3892          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 11\r
3893          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 12\r
3894          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 13\r
3895          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 14\r
3896          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 15\r
3897          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 16\r
3898          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 17\r
3899          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 18\r
3900          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 19\r
3901          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 20\r
3902          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 21\r
3903          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 22\r
3904          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 23\r
3905          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 24\r
3906          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 25\r
3907          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 26\r
3908          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 27\r
3909          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 28\r
3910          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 29\r
3911          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 30\r
3912          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 31\r
3913          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 32\r
3914          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 33\r
3915          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 34\r
3916          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 35\r
3917          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 36\r
3918          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 37\r
3919          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 38\r
3920          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 39\r
3921          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 40\r
3922          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 41\r
3923          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 42\r
3924          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 43\r
3925          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 44\r
3926          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 45\r
3927          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 46\r
3928          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 47\r
3929          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 48\r
3930          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 49\r
3931          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 50\r
3932          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 51\r
3933          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 52\r
3934          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 53\r
3935          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 54\r
3936          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 55\r
3937          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 56\r
3938          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 57\r
3939          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 58\r
3940          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 59\r
3941          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 60\r
3942          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 61\r
3943          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 62\r
3944          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 63\r
3945          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 64\r
3946          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 65\r
3947          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 66\r
3948          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 67\r
3949          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 68\r
3950          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 69\r
3951          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 70\r
3952          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 71\r
3953          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 72\r
3954          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 73\r
3955          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 74\r
3956          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 75\r
3957          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 76\r
3958          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 77\r
3959          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 78\r
3960          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 79\r
3961          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 80\r
3962          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 81\r
3963          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 82\r
3964          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 83\r
3965          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 84\r
3966          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 85\r
3967          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 86\r
3968          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 87\r
3969          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 88\r
3970          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 89\r
3971          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 90\r
3972          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 91\r
3973          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 92\r
3974          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 93\r
3975          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 94\r
3976          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 95\r
3977          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 96\r
3978          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 97\r
3979          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 98\r
3980          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 99\r
3981          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 100\r
3982          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 101\r
3983          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 102\r
3984          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 103\r
3985          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 104\r
3986          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 105\r
3987          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 106\r
3988          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 107\r
3989          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 108\r
3990          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 109\r
3991          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 110\r
3992          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 111\r
3993          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 112\r
3994          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 113\r
3995          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 114\r
3996          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 115\r
3997          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 116\r
3998          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 117\r
3999          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 118\r
4000          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 119\r
4001          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 120\r
4002          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 121\r
4003          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 122\r
4004          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 123\r
4005          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 124\r
4006          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 125\r
4007          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 126\r
4008          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 127\r
4009          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 128\r
4010          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 129\r
4011          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 130\r
4012          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 131\r
4013          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 132\r
4014          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 133\r
4015          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 134\r
4016          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 135\r
4017          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 136\r
4018          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 137\r
4019          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 138\r
4020          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 139\r
4021          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 140\r
4022          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 141\r
4023          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 142\r
4024          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 143\r
4025          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 144\r
4026          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 145\r
4027          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 146\r
4028          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 147\r
4029          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 148\r
4030          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 149\r
4031          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 150\r
4032          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 151\r
4033          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 152\r
4034          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 153\r
4035          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 154\r
4036          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 155\r
4037          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 156\r
4038          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 157\r
4039          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 158\r
4040          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 159\r
4041          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 160\r
4042          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 161\r
4043          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 162\r
4044          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 163\r
4045          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 164\r
4046          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 165\r
4047          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 166\r
4048          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 167\r
4049          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 168\r
4050          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 169\r
4051          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 170\r
4052          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 171\r
4053          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 172\r
4054          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 173\r
4055          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 174\r
4056          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 175\r
4057          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 176\r
4058          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 177\r
4059          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 178\r
4060          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 179\r
4061          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 180\r
4062          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 181\r
4063          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 182\r
4064          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 183\r
4065          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 184\r
4066          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 185\r
4067          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 186\r
4068          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 187\r
4069          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 188\r
4070          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 189\r
4071          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 190\r
4072          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 191\r
4073          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 192\r
4074          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 193\r
4075          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 194\r
4076          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 195\r
4077          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 196\r
4078          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 197\r
4079          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 198\r
4080          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 199\r
4081          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 200\r
4082          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 201\r
4083          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 202\r
4084          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 203\r
4085          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 204\r
4086          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 205\r
4087          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 206\r
4088          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 207\r
4089          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 208\r
4090          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 209\r
4091          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 210\r
4092          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 211\r
4093          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 212\r
4094          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 213\r
4095          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 214\r
4096          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 215\r
4097          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 216\r
4098          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 217\r
4099          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 218\r
4100          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 219\r
4101          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 220\r
4102          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 221\r
4103          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 222\r
4104          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 223\r
4105          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 224\r
4106          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 225\r
4107          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 226\r
4108          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 227\r
4109          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 228\r
4110          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 229\r
4111          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 230\r
4112          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 231\r
4113          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 232\r
4114          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 233\r
4115          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 234\r
4116          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 235\r
4117          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 236\r
4118          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 237\r
4119          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 238\r
4120          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 239\r
4121          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 240\r
4122          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 241\r
4123          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 242\r
4124          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 243\r
4125          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 244\r
4126          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 245\r
4127          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 246\r
4128          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 247\r
4129          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 248\r
4130          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 249\r
4131          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 250\r
4132          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 251\r
4133          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 252\r
4134          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 253\r
4135          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 254\r
4136          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 255\r
4137 \r
4138 .align 4\r
4139 \r
4140 PZSTable_data: .byte (1<<ZFlag)|(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4141         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4142         .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
4143         .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
4144         .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
4145         .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
4146         .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
4147         .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
4148         .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
4149         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4150         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4151         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4152         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4153         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4154         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4155         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4156         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4157         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4158         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4159         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4160         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4161         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4162         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4163         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4164         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4165         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4166         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4167         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4168         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4169         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4170         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4171         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4172         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4173         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4174         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4175         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4176         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4177         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4178         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4179         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4180         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)       \r
4181 \r
4182 .align 4\r
4183 \r
4184 MAIN_opcodes:   \r
4185         .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
4186         .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
4187         .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
4188         .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
4189         .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
4190         .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
4191         .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
4192         .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
4193         .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
4194         .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
4195         .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
4196         .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
4197         .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
4198         .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
4199         .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
4200         .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
4201         .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
4202         .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
4203         .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
4204         .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
4205         .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
4206         .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
4207         .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
4208         .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
4209         .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
4210         .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
4211         .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
4212         .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
4213         .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
4214         .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
4215         .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
4216         .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
4217 \r
4218 .align 4\r
4219 \r
4220 EI_DUMMY_opcodes:\r
4221         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4222         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4223         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4224         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4225         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4226         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4227         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4228         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4229         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4230         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4231         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4232         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4233         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4234         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4235         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4236         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4237         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4238         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4239         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4240         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4241         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4242         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4243         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4244         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4245         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4246         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4247         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4248         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4249         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4250         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4251         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4252         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4253 \r
4254 .text\r
4255 .align 4\r
4256 \r
4257 ;@NOP\r
4258 opcode_0_0:\r
4259 ;@LD B,B\r
4260 opcode_4_0:\r
4261 ;@LD C,C\r
4262 opcode_4_9:\r
4263 ;@LD D,D\r
4264 opcode_5_2:\r
4265 ;@LD E,E\r
4266 opcode_5_B:\r
4267 ;@LD H,H\r
4268 opcode_6_4:\r
4269 ;@LD L,L\r
4270 opcode_6_D:\r
4271 ;@LD A,A\r
4272 opcode_7_F:\r
4273         fetch 4\r
4274 ;@LD BC,NN\r
4275 opcode_0_1:\r
4276         ldrb r0,[z80pc],#1\r
4277         ldrb r1,[z80pc],#1\r
4278         orr r0,r0,r1, lsl #8\r
4279         mov z80bc,r0, lsl #16\r
4280         fetch 10\r
4281 ;@LD (BC),A\r
4282 opcode_0_2:\r
4283         mov r0,z80a, lsr #24\r
4284         mov r1,z80bc, lsr #16\r
4285         writemem8\r
4286         fetch 7\r
4287 ;@INC BC\r
4288 opcode_0_3:\r
4289         add z80bc,z80bc,#1<<16\r
4290         fetch 6\r
4291 ;@INC B\r
4292 opcode_0_4:\r
4293         opINC8H z80bc\r
4294         fetch 4\r
4295 ;@DEC B\r
4296 opcode_0_5:\r
4297         opDEC8H z80bc\r
4298         fetch 4\r
4299 ;@LD B,N\r
4300 opcode_0_6:\r
4301         ldrb r1,[z80pc],#1\r
4302         and z80bc,z80bc,#0xFF<<16\r
4303         orr z80bc,z80bc,r1, lsl #24\r
4304         fetch 7\r
4305 ;@RLCA\r
4306 opcode_0_7:\r
4307         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4308         movs z80a,z80a, lsl #1\r
4309         orrcs z80a,z80a,#1<<24\r
4310         orrcs z80f,z80f,#1<<CFlag\r
4311         fetch 4\r
4312 ;@EX AF,AF'\r
4313 opcode_0_8:\r
4314         add r1,cpucontext,#z80a2\r
4315         swp z80a,z80a,[r1]\r
4316         add r1,cpucontext,#z80f2\r
4317         swp z80f,z80f,[r1]\r
4318         fetch 4\r
4319 ;@ADD HL,BC\r
4320 opcode_0_9:\r
4321         opADD16 z80hl z80bc\r
4322         fetch 11\r
4323 ;@LD A,(BC)\r
4324 opcode_0_A:\r
4325         mov r0,z80bc, lsr #16\r
4326         readmem8\r
4327         mov z80a,r0, lsl #24\r
4328         fetch 7\r
4329 ;@DEC BC\r
4330 opcode_0_B:\r
4331         sub z80bc,z80bc,#1<<16\r
4332         fetch 6\r
4333 ;@INC C\r
4334 opcode_0_C:\r
4335         opINC8L z80bc\r
4336         fetch 4\r
4337 ;@DEC C\r
4338 opcode_0_D:\r
4339         opDEC8L z80bc\r
4340         fetch 4\r
4341 ;@LD C,N\r
4342 opcode_0_E:\r
4343         ldrb r1,[z80pc],#1\r
4344         and z80bc,z80bc,#0xFF<<24\r
4345         orr z80bc,z80bc,r1, lsl #16\r
4346         fetch 7\r
4347 ;@RRCA\r
4348 opcode_0_F:\r
4349         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4350         movs z80a,z80a, lsr #25\r
4351         orrcs z80a,z80a,#1<<7\r
4352         orrcs z80f,z80f,#1<<CFlag\r
4353         mov z80a,z80a, lsl #24\r
4354         fetch 4\r
4355 ;@DJNZ $+2\r
4356 opcode_1_0:\r
4357         sub z80bc,z80bc,#1<<24\r
4358         tst z80bc,#0xFF<<24\r
4359         ldrsb r1,[z80pc],#1\r
4360         addne z80pc,z80pc,r1\r
4361         subne z80_icount,z80_icount,#5\r
4362         fetch 8\r
4363 \r
4364 ;@LD DE,NN\r
4365 opcode_1_1:\r
4366         ldrb r0,[z80pc],#1\r
4367         ldrb r1,[z80pc],#1\r
4368         orr r0,r0,r1, lsl #8\r
4369         mov z80de,r0, lsl #16\r
4370         fetch 10\r
4371 ;@LD (DE),A\r
4372 opcode_1_2:\r
4373         mov r0,z80a, lsr #24\r
4374         writemem8DE\r
4375         fetch 7\r
4376 ;@INC DE\r
4377 opcode_1_3:\r
4378         add z80de,z80de,#1<<16\r
4379         fetch 6\r
4380 ;@INC D\r
4381 opcode_1_4:\r
4382         opINC8H z80de\r
4383         fetch 4\r
4384 ;@DEC D\r
4385 opcode_1_5:\r
4386         opDEC8H z80de\r
4387         fetch 4\r
4388 ;@LD D,N\r
4389 opcode_1_6:\r
4390         ldrb r1,[z80pc],#1\r
4391         and z80de,z80de,#0xFF<<16\r
4392         orr z80de,z80de,r1, lsl #24\r
4393         fetch 7\r
4394 ;@RLA\r
4395 opcode_1_7:\r
4396         tst z80f,#1<<CFlag\r
4397         orrne z80a,z80a,#1<<23\r
4398         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4399         movs z80a,z80a, lsl #1\r
4400         orrcs z80f,z80f,#1<<CFlag\r
4401         fetch 4\r
4402 ;@JR $+2\r
4403 opcode_1_8:\r
4404         ldrsb r1,[z80pc],#1\r
4405         add z80pc,z80pc,r1\r
4406         fetch 12\r
4407 ;@ADD HL,DE\r
4408 opcode_1_9:\r
4409         opADD16 z80hl z80de\r
4410         fetch 11\r
4411 ;@LD A,(DE)\r
4412 opcode_1_A:\r
4413         mov r0,z80de, lsr #16\r
4414         readmem8\r
4415         mov z80a,r0, lsl #24\r
4416         fetch 7\r
4417 ;@DEC DE\r
4418 opcode_1_B:\r
4419         sub z80de,z80de,#1<<16\r
4420         fetch 6\r
4421 ;@INC E\r
4422 opcode_1_C:\r
4423         opINC8L z80de\r
4424         fetch 4\r
4425 ;@DEC E\r
4426 opcode_1_D:\r
4427         opDEC8L z80de\r
4428         fetch 4\r
4429 ;@LD E,N\r
4430 opcode_1_E:\r
4431         ldrb r0,[z80pc],#1\r
4432         and z80de,z80de,#0xFF<<24\r
4433         orr z80de,z80de,r0, lsl #16\r
4434         fetch 7\r
4435 ;@RRA\r
4436 opcode_1_F:\r
4437         orr z80a,z80a,z80f,lsr#1                ;@get C\r
4438         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4439         movs z80a,z80a,ror#25\r
4440         orrcs z80f,z80f,#1<<CFlag\r
4441         mov z80a,z80a,lsl#24\r
4442         fetch 4\r
4443 ;@JR NZ,$+2\r
4444 opcode_2_0:\r
4445         tst z80f,#1<<ZFlag\r
4446         beq opcode_1_8\r
4447         add z80pc,z80pc,#1\r
4448         fetch 7\r
4449 ;@LD HL,NN\r
4450 opcode_2_1:\r
4451         ldrb r0,[z80pc],#1\r
4452         ldrb r1,[z80pc],#1\r
4453         orr r0,r0,r1, lsl #8\r
4454         mov z80hl,r0, lsl #16\r
4455         fetch 10\r
4456 ;@LD (NN),HL\r
4457 opcode_ED_63:\r
4458         eatcycles 4\r
4459 ;@LD (NN),HL\r
4460 opcode_2_2:\r
4461         ldrb r0,[z80pc],#1\r
4462         ldrb r1,[z80pc],#1\r
4463         orr r1,r0,r1, lsl #8\r
4464         mov r0,z80hl, lsr #16\r
4465         writemem16\r
4466         fetch 16\r
4467 ;@INC HL\r
4468 opcode_2_3:\r
4469         add z80hl,z80hl,#1<<16\r
4470         fetch 6\r
4471 ;@INC H\r
4472 opcode_2_4:\r
4473         opINC8H z80hl\r
4474         fetch 4\r
4475 ;@DEC H\r
4476 opcode_2_5:\r
4477         opDEC8H z80hl\r
4478         fetch 4\r
4479 ;@LD H,N\r
4480 opcode_2_6:\r
4481         ldrb r1,[z80pc],#1\r
4482         and z80hl,z80hl,#0xFF<<16\r
4483         orr z80hl,z80hl,r1, lsl #24\r
4484         fetch 7\r
4485 DAATABLE_LOCAL: .word DAATable\r
4486 ;@DAA\r
4487 opcode_2_7:\r
4488         mov r1,z80a, lsr #24\r
4489         tst z80f,#1<<CFlag\r
4490         orrne r1,r1,#256\r
4491         tst z80f,#1<<HFlag\r
4492         orrne r1,r1,#512\r
4493         tst z80f,#1<<NFlag\r
4494         orrne r1,r1,#1024\r
4495         ldr r2,DAATABLE_LOCAL\r
4496         add r2,r2,r1, lsl #1\r
4497         ldrh r1,[r2]\r
4498         and z80f,r1,#0xFF\r
4499         and r2,r1,#0xFF<<8\r
4500         mov z80a,r2, lsl #16\r
4501         fetch 4\r
4502 ;@JR Z,$+2\r
4503 opcode_2_8:\r
4504         tst z80f,#1<<ZFlag\r
4505         bne opcode_1_8\r
4506         add z80pc,z80pc,#1\r
4507         fetch 7\r
4508 ;@ADD HL,HL\r
4509 opcode_2_9:\r
4510         opADD16_2 z80hl\r
4511         fetch 11\r
4512 ;@LD HL,(NN)\r
4513 opcode_ED_6B:\r
4514         eatcycles 4\r
4515 ;@LD HL,(NN)\r
4516 opcode_2_A:\r
4517         ldrb r0,[z80pc],#1\r
4518         ldrb r1,[z80pc],#1\r
4519         orr r0,r0,r1, lsl #8\r
4520         readmem16\r
4521         mov z80hl,r0, lsl #16\r
4522         fetch 16\r
4523 ;@DEC HL\r
4524 opcode_2_B:\r
4525         sub z80hl,z80hl,#1<<16\r
4526         fetch 6\r
4527 ;@INC L\r
4528 opcode_2_C:\r
4529         opINC8L z80hl\r
4530         fetch 4\r
4531 ;@DEC L\r
4532 opcode_2_D:\r
4533         opDEC8L z80hl\r
4534         fetch 4\r
4535 ;@LD L,N\r
4536 opcode_2_E:\r
4537         ldrb r0,[z80pc],#1\r
4538         and z80hl,z80hl,#0xFF<<24\r
4539         orr z80hl,z80hl,r0, lsl #16\r
4540         fetch 7\r
4541 ;@CPL\r
4542 opcode_2_F:\r
4543         eor z80a,z80a,#0xFF<<24\r
4544         orr z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4545         fetch 4\r
4546 ;@JR NC,$+2\r
4547 opcode_3_0:\r
4548         tst z80f,#1<<CFlag\r
4549         beq opcode_1_8\r
4550         add z80pc,z80pc,#1\r
4551         fetch 7\r
4552 ;@LD SP,NN\r
4553 opcode_3_1:\r
4554         ldrb r0,[z80pc],#1\r
4555         ldrb r1,[z80pc],#1\r
4556 \r
4557 .if FAST_Z80SP\r
4558         orr r0,r0,r1, lsl #8\r
4559         rebasesp\r
4560         mov z80sp,r0\r
4561 .else\r
4562         orr z80sp,r0,r1, lsl #8\r
4563 .endif\r
4564         fetch 10\r
4565 ;@LD (NN),A\r
4566 opcode_3_2:\r
4567         ldrb r0,[z80pc],#1\r
4568         ldrb r1,[z80pc],#1\r
4569         orr r1,r0,r1, lsl #8\r
4570         mov r0,z80a, lsr #24\r
4571         writemem8\r
4572         fetch 13\r
4573 ;@INC SP\r
4574 opcode_3_3:\r
4575         add z80sp,z80sp,#1\r
4576         fetch 6\r
4577 ;@INC (HL)\r
4578 opcode_3_4:\r
4579         readmem8HL\r
4580         opINC8b\r
4581         writemem8HL\r
4582         fetch 11\r
4583 ;@DEC (HL)\r
4584 opcode_3_5:\r
4585         readmem8HL\r
4586         opDEC8b\r
4587         writemem8HL\r
4588         fetch 11\r
4589 ;@LD (HL),N\r
4590 opcode_3_6:\r
4591         ldrb r0,[z80pc],#1\r
4592         writemem8HL\r
4593         fetch 10\r
4594 ;@SCF\r
4595 opcode_3_7:\r
4596         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4597         orr z80f,z80f,#1<<CFlag\r
4598         fetch 4\r
4599 ;@JR C,$+2\r
4600 opcode_3_8:\r
4601         tst z80f,#1<<CFlag\r
4602         bne opcode_1_8\r
4603         add z80pc,z80pc,#1\r
4604         fetch 8\r
4605 ;@ADD HL,SP\r
4606 opcode_3_9:\r
4607 .if FAST_Z80SP\r
4608         ldr r0,[cpucontext,#z80sp_base]\r
4609         sub r0,z80sp,r0\r
4610         opADD16s z80hl r0 16\r
4611 .else\r
4612         opADD16s z80hl z80sp 16\r
4613 .endif\r
4614         fetch 11\r
4615 ;@LD A,(NN)\r
4616 opcode_3_A:\r
4617         ldrb r0,[z80pc],#1\r
4618         ldrb r1,[z80pc],#1\r
4619         orr r0,r0,r1, lsl #8\r
4620         readmem8\r
4621         mov z80a,r0, lsl #24\r
4622         fetch 11\r
4623 ;@DEC SP\r
4624 opcode_3_B:\r
4625         sub z80sp,z80sp,#1\r
4626         fetch 6\r
4627 ;@INC A\r
4628 opcode_3_C:\r
4629         opINC8 z80a\r
4630         fetch 4\r
4631 ;@DEC A\r
4632 opcode_3_D:\r
4633         opDEC8 z80a\r
4634         fetch 4\r
4635 ;@LD A,N\r
4636 opcode_3_E:\r
4637         ldrb r0,[z80pc],#1\r
4638         mov z80a,r0, lsl #24\r
4639         fetch 7\r
4640 ;@CCF\r
4641 opcode_3_F:\r
4642         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4643         tst z80f,#1<<CFlag\r
4644         orrne z80f,z80f,#1<<HFlag\r
4645         eor z80f,z80f,#1<<CFlag\r
4646         fetch 4\r
4647 \r
4648 ;@LD B,C\r
4649 opcode_4_1:\r
4650         and z80bc,z80bc,#0xFF<<16\r
4651         orr z80bc,z80bc,z80bc, lsl #8\r
4652         fetch 4\r
4653 ;@LD B,D\r
4654 opcode_4_2:\r
4655         and z80bc,z80bc,#0xFF<<16\r
4656         and r1,z80de,#0xFF<<24\r
4657         orr z80bc,z80bc,r1\r
4658         fetch 4\r
4659 ;@LD B,E\r
4660 opcode_4_3:\r
4661         and z80bc,z80bc,#0xFF<<16\r
4662         and r1,z80de,#0xFF<<16\r
4663         orr z80bc,z80bc,r1, lsl #8\r
4664         fetch 4\r
4665 ;@LD B,H\r
4666 opcode_4_4:\r
4667         and z80bc,z80bc,#0xFF<<16\r
4668         and r1,z80hl,#0xFF<<24\r
4669         orr z80bc,z80bc,r1\r
4670         fetch 4\r
4671 ;@LD B,L\r
4672 opcode_4_5:\r
4673         and z80bc,z80bc,#0xFF<<16\r
4674         and r1,z80hl,#0xFF<<16\r
4675         orr z80bc,z80bc,r1, lsl #8\r
4676         fetch 4\r
4677 ;@LD B,(HL)\r
4678 opcode_4_6:\r
4679         readmem8HL\r
4680         and z80bc,z80bc,#0xFF<<16\r
4681         orr z80bc,z80bc,r0, lsl #24\r
4682         fetch 7\r
4683 ;@LD B,A\r
4684 opcode_4_7:\r
4685         and z80bc,z80bc,#0xFF<<16\r
4686         orr z80bc,z80bc,z80a\r
4687         fetch 4\r
4688 ;@LD C,B\r
4689 opcode_4_8:\r
4690         and z80bc,z80bc,#0xFF<<24\r
4691         orr z80bc,z80bc,z80bc, lsr #8\r
4692         fetch 4\r
4693 ;@LD C,D\r
4694 opcode_4_A:\r
4695         and z80bc,z80bc,#0xFF<<24\r
4696         and r1,z80de,#0xFF<<24\r
4697         orr z80bc,z80bc,r1, lsr #8\r
4698         fetch 4\r
4699 ;@LD C,E\r
4700 opcode_4_B:\r
4701         and z80bc,z80bc,#0xFF<<24\r
4702         and r1,z80de,#0xFF<<16\r
4703         orr z80bc,z80bc,r1 \r
4704         fetch 4\r
4705 ;@LD C,H\r
4706 opcode_4_C:\r
4707         and z80bc,z80bc,#0xFF<<24\r
4708         and r1,z80hl,#0xFF<<24\r
4709         orr z80bc,z80bc,r1, lsr #8\r
4710         fetch 4\r
4711 ;@LD C,L\r
4712 opcode_4_D:\r
4713         and z80bc,z80bc,#0xFF<<24\r
4714         and r1,z80hl,#0xFF<<16\r
4715         orr z80bc,z80bc,r1 \r
4716         fetch 4\r
4717 ;@LD C,(HL)\r
4718 opcode_4_E:\r
4719         readmem8HL\r
4720         and z80bc,z80bc,#0xFF<<24\r
4721         orr z80bc,z80bc,r0, lsl #16\r
4722         fetch 7\r
4723 ;@LD C,A\r
4724 opcode_4_F:\r
4725         and z80bc,z80bc,#0xFF<<24\r
4726         orr z80bc,z80bc,z80a, lsr #8\r
4727         fetch 4\r
4728 ;@LD D,B\r
4729 opcode_5_0:\r
4730         and z80de,z80de,#0xFF<<16\r
4731         and r1,z80bc,#0xFF<<24\r
4732         orr z80de,z80de,r1\r
4733         fetch 4\r
4734 ;@LD D,C\r
4735 opcode_5_1:\r
4736         and z80de,z80de,#0xFF<<16\r
4737         orr z80de,z80de,z80bc, lsl #8\r
4738         fetch 4\r
4739 ;@LD D,E\r
4740 opcode_5_3:\r
4741         and z80de,z80de,#0xFF<<16\r
4742         orr z80de,z80de,z80de, lsl #8\r
4743         fetch 4\r
4744 ;@LD D,H\r
4745 opcode_5_4:\r
4746         and z80de,z80de,#0xFF<<16\r
4747         and r1,z80hl,#0xFF<<24\r
4748         orr z80de,z80de,r1\r
4749         fetch 4\r
4750 ;@LD D,L\r
4751 opcode_5_5:\r
4752         and z80de,z80de,#0xFF<<16\r
4753         orr z80de,z80de,z80hl, lsl #8\r
4754         fetch 4\r
4755 ;@LD D,(HL)\r
4756 opcode_5_6:\r
4757         readmem8HL\r
4758         and z80de,z80de,#0xFF<<16\r
4759         orr z80de,z80de,r0, lsl #24\r
4760         fetch 7\r
4761 ;@LD D,A\r
4762 opcode_5_7:\r
4763         and z80de,z80de,#0xFF<<16\r
4764         orr z80de,z80de,z80a\r
4765         fetch 4\r
4766 ;@LD E,B\r
4767 opcode_5_8:\r
4768         and z80de,z80de,#0xFF<<24\r
4769         and r1,z80bc,#0xFF<<24\r
4770         orr z80de,z80de,r1, lsr #8\r
4771         fetch 4\r
4772 ;@LD E,C\r
4773 opcode_5_9:\r
4774         and z80de,z80de,#0xFF<<24\r
4775         and r1,z80bc,#0xFF<<16\r
4776         orr z80de,z80de,r1 \r
4777         fetch 4\r
4778 ;@LD E,D\r
4779 opcode_5_A:\r
4780         and z80de,z80de,#0xFF<<24\r
4781         orr z80de,z80de,z80de, lsr #8\r
4782         fetch 4\r
4783 ;@LD E,H\r
4784 opcode_5_C:\r
4785         and z80de,z80de,#0xFF<<24\r
4786         and r1,z80hl,#0xFF<<24\r
4787         orr z80de,z80de,r1, lsr #8\r
4788         fetch 4\r
4789 ;@LD E,L\r
4790 opcode_5_D:\r
4791         and z80de,z80de,#0xFF<<24\r
4792         and r1,z80hl,#0xFF<<16\r
4793         orr z80de,z80de,r1 \r
4794         fetch 4\r
4795 ;@LD E,(HL)\r
4796 opcode_5_E:\r
4797         readmem8HL\r
4798         and z80de,z80de,#0xFF<<24\r
4799         orr z80de,z80de,r0, lsl #16\r
4800         fetch 7\r
4801 ;@LD E,A\r
4802 opcode_5_F:\r
4803         and z80de,z80de,#0xFF<<24\r
4804         orr z80de,z80de,z80a, lsr #8\r
4805         fetch 4\r
4806 \r
4807 ;@LD H,B\r
4808 opcode_6_0:\r
4809         and z80hl,z80hl,#0xFF<<16\r
4810         and r1,z80bc,#0xFF<<24\r
4811         orr z80hl,z80hl,r1\r
4812         fetch 4\r
4813 ;@LD H,C\r
4814 opcode_6_1:\r
4815         and z80hl,z80hl,#0xFF<<16\r
4816         orr z80hl,z80hl,z80bc, lsl #8\r
4817         fetch 4\r
4818 ;@LD H,D\r
4819 opcode_6_2:\r
4820         and z80hl,z80hl,#0xFF<<16\r
4821         and r1,z80de,#0xFF<<24\r
4822         orr z80hl,z80hl,r1\r
4823         fetch 4\r
4824 ;@LD H,E\r
4825 opcode_6_3:\r
4826         and z80hl,z80hl,#0xFF<<16\r
4827         orr z80hl,z80hl,z80de, lsl #8\r
4828         fetch 4\r
4829 ;@LD H,L\r
4830 opcode_6_5:\r
4831         and z80hl,z80hl,#0xFF<<16\r
4832         orr z80hl,z80hl,z80hl, lsl #8\r
4833         fetch 4\r
4834 ;@LD H,(HL)\r
4835 opcode_6_6:\r
4836         readmem8HL\r
4837         and z80hl,z80hl,#0xFF<<16\r
4838         orr z80hl,z80hl,r0, lsl #24\r
4839         fetch 7\r
4840 ;@LD H,A\r
4841 opcode_6_7:\r
4842         and z80hl,z80hl,#0xFF<<16\r
4843         orr z80hl,z80hl,z80a\r
4844         fetch 4\r
4845 \r
4846 ;@LD L,B\r
4847 opcode_6_8:\r
4848         and z80hl,z80hl,#0xFF<<24\r
4849         and r1,z80bc,#0xFF<<24\r
4850         orr z80hl,z80hl,r1, lsr #8\r
4851         fetch 4\r
4852 ;@LD L,C\r
4853 opcode_6_9:\r
4854         and z80hl,z80hl,#0xFF<<24\r
4855         and r1,z80bc,#0xFF<<16\r
4856         orr z80hl,z80hl,r1\r
4857         fetch 4\r
4858 ;@LD L,D\r
4859 opcode_6_A:\r
4860         and z80hl,z80hl,#0xFF<<24\r
4861         and r1,z80de,#0xFF<<24\r
4862         orr z80hl,z80hl,r1, lsr #8\r
4863         fetch 4\r
4864 ;@LD L,E\r
4865 opcode_6_B:\r
4866         and z80hl,z80hl,#0xFF<<24\r
4867         and r1,z80de,#0xFF<<16\r
4868         orr z80hl,z80hl,r1\r
4869         fetch 4\r
4870 ;@LD L,H\r
4871 opcode_6_C:\r
4872         and z80hl,z80hl,#0xFF<<24\r
4873         orr z80hl,z80hl,z80hl, lsr #8\r
4874         fetch 4\r
4875 ;@LD L,(HL)\r
4876 opcode_6_E:\r
4877         readmem8HL\r
4878         and z80hl,z80hl,#0xFF<<24\r
4879         orr z80hl,z80hl,r0, lsl #16\r
4880         fetch 7\r
4881 ;@LD L,A\r
4882 opcode_6_F:\r
4883         and z80hl,z80hl,#0xFF<<24\r
4884         orr z80hl,z80hl,z80a, lsr #8\r
4885         fetch 4\r
4886 \r
4887 ;@LD (HL),B\r
4888 opcode_7_0:\r
4889         mov r0,z80bc, lsr #24\r
4890         writemem8HL\r
4891         fetch 7\r
4892 ;@LD (HL),C\r
4893 opcode_7_1:\r
4894         mov r0,z80bc, lsr #16\r
4895         and r0,r0,#0xFF\r
4896         writemem8HL\r
4897         fetch 7\r
4898 ;@LD (HL),D\r
4899 opcode_7_2:\r
4900         mov r0,z80de, lsr #24\r
4901         writemem8HL\r
4902         fetch 7\r
4903 ;@LD (HL),E\r
4904 opcode_7_3:\r
4905         mov r0,z80de, lsr #16\r
4906         and r0,r0,#0xFF\r
4907         writemem8HL\r
4908         fetch 7\r
4909 ;@LD (HL),H\r
4910 opcode_7_4:\r
4911         mov r0,z80hl, lsr #24\r
4912         writemem8HL\r
4913         fetch 7\r
4914 ;@LD (HL),L\r
4915 opcode_7_5:\r
4916         mov r1,z80hl, lsr #16\r
4917         and r0,r1,#0xFF\r
4918         writemem8\r
4919         fetch 7\r
4920 ;@HALT\r
4921 opcode_7_6:\r
4922         sub z80pc,z80pc,#1\r
4923         ldrb r0,[cpucontext,#z80if]\r
4924         orr r0,r0,#Z80_HALT\r
4925         strb r0,[cpucontext,#z80if]\r
4926         b z80_execute_end\r
4927 ;@LD (HL),A\r
4928 opcode_7_7:\r
4929         mov r0,z80a, lsr #24\r
4930         writemem8HL\r
4931         fetch 7\r
4932 \r
4933 ;@LD A,B\r
4934 opcode_7_8:\r
4935         and z80a,z80bc,#0xFF<<24\r
4936         fetch 4\r
4937 ;@LD A,C\r
4938 opcode_7_9:\r
4939         mov z80a,z80bc, lsl #8\r
4940         fetch 4\r
4941 ;@LD A,D\r
4942 opcode_7_A:\r
4943         and z80a,z80de,#0xFF<<24\r
4944         fetch 4\r
4945 ;@LD A,E\r
4946 opcode_7_B:\r
4947         mov z80a,z80de, lsl #8\r
4948         fetch 4\r
4949 ;@LD A,H\r
4950 opcode_7_C:\r
4951         and z80a,z80hl,#0xFF<<24\r
4952         fetch 4\r
4953 ;@LD A,L\r
4954 opcode_7_D:\r
4955         mov z80a,z80hl, lsl #8\r
4956         fetch 4\r
4957 ;@LD A,(HL)\r
4958 opcode_7_E:\r
4959         readmem8HL\r
4960         mov z80a,r0, lsl #24\r
4961         fetch 7\r
4962 \r
4963 ;@ADD A,B\r
4964 opcode_8_0:\r
4965         opADDH z80bc\r
4966 ;@ADD A,C\r
4967 opcode_8_1:\r
4968         opADDL z80bc\r
4969 ;@ADD A,D\r
4970 opcode_8_2:\r
4971         opADDH z80de\r
4972 ;@ADD A,E\r
4973 opcode_8_3:\r
4974         opADDL z80de\r
4975 ;@ADD A,H\r
4976 opcode_8_4:\r
4977         opADDH z80hl\r
4978 ;@ADD A,L\r
4979 opcode_8_5:\r
4980         opADDL z80hl\r
4981 ;@ADD A,(HL)\r
4982 opcode_8_6:\r
4983         readmem8HL\r
4984         opADDb\r
4985         fetch 7\r
4986 ;@ADD A,A\r
4987 opcode_8_7:\r
4988         opADDA\r
4989 \r
4990 ;@ADC A,B\r
4991 opcode_8_8:\r
4992         opADCH z80bc\r
4993 ;@ADC A,C\r
4994 opcode_8_9:\r
4995         opADCL z80bc\r
4996 ;@ADC A,D\r
4997 opcode_8_A:\r
4998         opADCH z80de\r
4999 ;@ADC A,E\r
5000 opcode_8_B:\r
5001         opADCL z80de\r
5002 ;@ADC A,H\r
5003 opcode_8_C:\r
5004         opADCH z80hl\r
5005 ;@ADC A,L\r
5006 opcode_8_D:\r
5007         opADCL z80hl\r
5008 ;@ADC A,(HL)\r
5009 opcode_8_E:\r
5010         readmem8HL\r
5011         opADCb\r
5012         fetch 7\r
5013 ;@ADC A,A\r
5014 opcode_8_F:\r
5015         opADCA\r
5016 \r
5017 ;@SUB B\r
5018 opcode_9_0:\r
5019         opSUBH z80bc\r
5020 ;@SUB C\r
5021 opcode_9_1:\r
5022         opSUBL z80bc\r
5023 ;@SUB D\r
5024 opcode_9_2:\r
5025         opSUBH z80de\r
5026 ;@SUB E\r
5027 opcode_9_3:\r
5028         opSUBL z80de\r
5029 ;@SUB H\r
5030 opcode_9_4:\r
5031         opSUBH z80hl\r
5032 ;@SUB L\r
5033 opcode_9_5:\r
5034         opSUBL z80hl\r
5035 ;@SUB (HL)\r
5036 opcode_9_6:\r
5037         readmem8HL\r
5038         opSUBb\r
5039         fetch 7\r
5040 ;@SUB A\r
5041 opcode_9_7:\r
5042         opSUBA\r
5043 \r
5044 ;@SBC B \r
5045 opcode_9_8:\r
5046         opSBCH z80bc\r
5047 ;@SBC C\r
5048 opcode_9_9:\r
5049         opSBCL z80bc\r
5050 ;@SBC D\r
5051 opcode_9_A:\r
5052         opSBCH z80de\r
5053 ;@SBC E\r
5054 opcode_9_B:\r
5055         opSBCL z80de\r
5056 ;@SBC H\r
5057 opcode_9_C:\r
5058         opSBCH z80hl\r
5059 ;@SBC L\r
5060 opcode_9_D:\r
5061         opSBCL z80hl\r
5062 ;@SBC (HL)\r
5063 opcode_9_E:\r
5064         readmem8HL\r
5065         opSBCb\r
5066         fetch 7\r
5067 ;@SBC A\r
5068 opcode_9_F:\r
5069         opSBCA\r
5070 \r
5071 ;@AND B\r
5072 opcode_A_0:\r
5073         opANDH z80bc\r
5074 ;@AND C\r
5075 opcode_A_1:\r
5076         opANDL z80bc\r
5077 ;@AND D\r
5078 opcode_A_2:\r
5079         opANDH z80de\r
5080 ;@AND E\r
5081 opcode_A_3:\r
5082         opANDL z80de\r
5083 ;@AND H\r
5084 opcode_A_4:\r
5085         opANDH z80hl\r
5086 ;@AND L\r
5087 opcode_A_5:\r
5088         opANDL z80hl\r
5089 ;@AND (HL)\r
5090 opcode_A_6:\r
5091         readmem8HL\r
5092         opANDb\r
5093         fetch 7\r
5094 ;@AND A\r
5095 opcode_A_7:\r
5096         opANDA\r
5097 \r
5098 ;@XOR B\r
5099 opcode_A_8:\r
5100         opXORH z80bc\r
5101 ;@XOR C\r
5102 opcode_A_9:\r
5103         opXORL z80bc\r
5104 ;@XOR D\r
5105 opcode_A_A:\r
5106         opXORH z80de\r
5107 ;@XOR E\r
5108 opcode_A_B:\r
5109         opXORL z80de\r
5110 ;@XOR H\r
5111 opcode_A_C:\r
5112         opXORH z80hl\r
5113 ;@XOR L\r
5114 opcode_A_D:\r
5115         opXORL z80hl\r
5116 ;@XOR (HL)\r
5117 opcode_A_E:\r
5118         readmem8HL\r
5119         opXORb\r
5120         fetch 7\r
5121 ;@XOR A\r
5122 opcode_A_F:\r
5123         opXORA\r
5124 \r
5125 ;@OR B\r
5126 opcode_B_0:\r
5127         opORH z80bc\r
5128 ;@OR C\r
5129 opcode_B_1:\r
5130         opORL z80bc\r
5131 ;@OR D\r
5132 opcode_B_2:\r
5133         opORH z80de\r
5134 ;@OR E\r
5135 opcode_B_3:\r
5136         opORL z80de\r
5137 ;@OR H\r
5138 opcode_B_4:\r
5139         opORH z80hl\r
5140 ;@OR L\r
5141 opcode_B_5:\r
5142         opORL z80hl\r
5143 ;@OR (HL)\r
5144 opcode_B_6:\r
5145         readmem8HL\r
5146         opORb\r
5147         fetch 7\r
5148 ;@OR A\r
5149 opcode_B_7:\r
5150         opORA\r
5151 \r
5152 ;@CP B\r
5153 opcode_B_8:\r
5154         opCPH z80bc\r
5155 ;@CP C\r
5156 opcode_B_9:\r
5157         opCPL z80bc\r
5158 ;@CP D\r
5159 opcode_B_A:\r
5160         opCPH z80de\r
5161 ;@CP E\r
5162 opcode_B_B:\r
5163         opCPL z80de\r
5164 ;@CP H\r
5165 opcode_B_C:\r
5166         opCPH z80hl\r
5167 ;@CP L\r
5168 opcode_B_D:\r
5169         opCPL z80hl\r
5170 ;@CP (HL)\r
5171 opcode_B_E:\r
5172         readmem8HL\r
5173         opCPb\r
5174         fetch 7\r
5175 ;@CP A\r
5176 opcode_B_F:\r
5177         opCPA\r
5178 \r
5179 ;@RET NZ\r
5180 opcode_C_0:\r
5181         tst z80f,#1<<ZFlag\r
5182         beq opcode_C_9          ;@unconditional RET\r
5183         fetch 5\r
5184 \r
5185 ;@POP BC\r
5186 opcode_C_1:\r
5187         opPOPreg z80bc\r
5188 \r
5189 ;@JP NZ,$+3\r
5190 opcode_C_2:\r
5191         tst z80f,#1<<ZFlag\r
5192         beq opcode_C_3          ;@unconditional JP\r
5193         add z80pc,z80pc,#2\r
5194         fetch 10\r
5195 ;@JP $+3\r
5196 opcode_C_3:\r
5197         ldrb r0,[z80pc],#1\r
5198         ldrb r1,[z80pc],#1\r
5199         orr r0,r0,r1, lsl #8\r
5200         rebasepc\r
5201         fetch 10\r
5202 ;@CALL NZ,NN\r
5203 opcode_C_4:\r
5204         tst z80f,#1<<ZFlag\r
5205         beq opcode_C_D          ;@unconditional CALL\r
5206         add z80pc,z80pc,#2\r
5207         fetch 10\r
5208 \r
5209 ;@PUSH BC\r
5210 opcode_C_5:\r
5211         opPUSHreg z80bc\r
5212         fetch 11\r
5213 ;@ADD A,N\r
5214 opcode_C_6:\r
5215         ldrb r0,[z80pc],#1\r
5216         opADDb\r
5217         fetch 7\r
5218 ;@RST 0\r
5219 opcode_C_7:\r
5220         opRST 0x00\r
5221 \r
5222 ;@RET Z\r
5223 opcode_C_8:\r
5224         tst z80f,#1<<ZFlag\r
5225         bne opcode_C_9          ;@unconditional RET\r
5226         fetch 5\r
5227 ;@RET\r
5228 opcode_C_9:\r
5229     opPOP\r
5230         rebasepc\r
5231         fetch 10\r
5232 ;@JP Z,$+3\r
5233 opcode_C_A:\r
5234         tst z80f,#1<<ZFlag\r
5235         bne opcode_C_3  ;@unconditional JP\r
5236         add z80pc,z80pc,#2\r
5237         fetch 10\r
5238 \r
5239 ;@This reads this opcodes_CB lookup table to find the location of\r
5240 ;@the CB sub for the intruction and then branches to that location\r
5241 opcode_C_B:\r
5242         ldrb r0,[z80pc],#1\r
5243         ldr pc,[pc,r0, lsl #2]\r
5244 opcodes_CB:     .word 0x00000000\r
5245                         .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
5246                         .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
5247                         .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
5248                         .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
5249                         .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
5250                         .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
5251                         .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
5252                         .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
5253                         .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
5254                         .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
5255                         .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
5256                         .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
5257                         .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
5258                         .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
5259                         .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
5260                         .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
5261                         .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
5262                         .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
5263                         .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
5264                         .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
5265                         .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
5266                         .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
5267                         .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
5268                         .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
5269                         .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
5270                         .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
5271                         .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
5272                         .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
5273                         .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
5274                         .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
5275                         .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
5276                         .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
5277 \r
5278 ;@CALL Z,NN\r
5279 opcode_C_C:\r
5280         tst z80f,#1<<ZFlag\r
5281         bne opcode_C_D          ;@unconditional CALL\r
5282         add z80pc,z80pc,#2\r
5283         fetch 10\r
5284 ;@CALL NN\r
5285 opcode_C_D:\r
5286         ldrb r0,[z80pc],#1\r
5287         ldrb r1,[z80pc],#1\r
5288         ldr r2,[cpucontext,#z80pc_base]\r
5289         sub r2,z80pc,r2\r
5290         orr z80pc,r0,r1, lsl #8\r
5291     opPUSHareg r2\r
5292     mov r0,z80pc\r
5293         rebasepc\r
5294         fetch 17\r
5295 ;@ADC A,N\r
5296 opcode_C_E:\r
5297         ldrb r0,[z80pc],#1\r
5298         opADCb\r
5299         fetch 7\r
5300 ;@RST 8H\r
5301 opcode_C_F:\r
5302         opRST 0x08\r
5303 \r
5304 ;@RET NC\r
5305 opcode_D_0:\r
5306         tst z80f,#1<<CFlag\r
5307         beq opcode_C_9          ;@unconditional RET\r
5308         fetch 5\r
5309 ;@POP DE\r
5310 opcode_D_1:\r
5311         opPOPreg z80de\r
5312 \r
5313 ;@JP NC, $+3\r
5314 opcode_D_2 :\r
5315         tst z80f,#1<<CFlag\r
5316         beq opcode_C_3          ;@unconditional JP\r
5317         add z80pc,z80pc,#2\r
5318         fetch 10\r
5319 ;@OUT (N),A\r
5320 opcode_D_3:\r
5321         ldrb r0,[z80pc],#1\r
5322         orr r0,r0,z80a,lsr#16\r
5323         mov r1,z80a, lsr #24\r
5324         opOUT\r
5325         fetch 11\r
5326 ;@CALL NC,NN\r
5327 opcode_D_4:\r
5328         tst z80f,#1<<CFlag\r
5329         beq opcode_C_D          ;@unconditional CALL\r
5330         add z80pc,z80pc,#2\r
5331         fetch 10\r
5332 ;@PUSH DE\r
5333 opcode_D_5:\r
5334         opPUSHreg z80de\r
5335         fetch 11\r
5336 ;@SUB N\r
5337 opcode_D_6:\r
5338         ldrb r0,[z80pc],#1\r
5339         opSUBb\r
5340         fetch 7\r
5341 \r
5342 ;@RST 10H\r
5343 opcode_D_7:\r
5344         opRST 0x10\r
5345 \r
5346 ;@RET C\r
5347 opcode_D_8:\r
5348         tst z80f,#1<<CFlag\r
5349         bne opcode_C_9          ;@unconditional RET\r
5350         fetch 5\r
5351 ;@EXX\r
5352 opcode_D_9:\r
5353         add r1,cpucontext,#z80bc2\r
5354         swp z80bc,z80bc,[r1]\r
5355         add r1,cpucontext,#z80de2\r
5356         swp z80de,z80de,[r1]\r
5357         add r1,cpucontext,#z80hl2\r
5358         swp z80hl,z80hl,[r1]\r
5359         fetch 4\r
5360 ;@JP C,$+3\r
5361 opcode_D_A:\r
5362         tst z80f,#1<<CFlag\r
5363         bne opcode_C_3          ;@unconditional JP\r
5364         add z80pc,z80pc,#2\r
5365         fetch 10\r
5366 ;@IN A,(N)\r
5367 opcode_D_B:\r
5368         ldrb r0,[z80pc],#1\r
5369         orr r0,r0,z80a,lsr#16\r
5370         opIN\r
5371         mov z80a,r0, lsl #24    ;@ r0 = data read\r
5372         fetch 11\r
5373 ;@CALL C,NN\r
5374 opcode_D_C:\r
5375         tst z80f,#1<<CFlag\r
5376         bne opcode_C_D          ;@unconditional CALL\r
5377         add z80pc,z80pc,#2\r
5378         fetch 10\r
5379 \r
5380 ;@opcodes_DD\r
5381 opcode_D_D:\r
5382         add z80xx,cpucontext,#z80ix\r
5383         b opcode_D_D_F_D\r
5384 opcode_F_D:\r
5385         add z80xx,cpucontext,#z80iy\r
5386 opcode_D_D_F_D:\r
5387         ldrb r0,[z80pc],#1\r
5388         ldr pc,[pc,r0, lsl #2]\r
5389 opcodes_DD:     .word 0x00000000\r
5390                         .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
5391                         .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
5392                         .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
5393                         .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
5394                         .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
5395                         .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
5396                         .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
5397                         .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
5398                         .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
5399                         .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
5400                         .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
5401                         .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
5402                         .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
5403                         .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
5404                         .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
5405                         .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
5406                         .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
5407                         .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
5408                         .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
5409                         .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
5410                         .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
5411                         .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
5412                         .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
5413                         .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
5414                         .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
5415                         .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
5416                         .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
5417                         .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
5418                         .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
5419                         .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
5420                         .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
5421                         .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
5422 \r
5423 ;@SBC A,N\r
5424 opcode_D_E:\r
5425         ldrb r0,[z80pc],#1\r
5426         opSBCb\r
5427         fetch 7\r
5428 ;@RST 18H\r
5429 opcode_D_F:\r
5430         opRST 0x18\r
5431 \r
5432 ;@RET PO\r
5433 opcode_E_0:\r
5434         tst z80f,#1<<VFlag\r
5435         beq opcode_C_9          ;@unconditional RET\r
5436         fetch 5\r
5437 ;@POP HL\r
5438 opcode_E_1:\r
5439         opPOPreg z80hl\r
5440 \r
5441 ;@JP PO,$+3\r
5442 opcode_E_2:\r
5443         tst z80f,#1<<VFlag\r
5444         beq opcode_C_3          ;@unconditional JP\r
5445         add z80pc,z80pc,#2\r
5446         fetch 10\r
5447 ;@EX (SP),HL\r
5448 opcode_E_3:\r
5449 .if FAST_Z80SP\r
5450         ldrb r0,[z80sp]\r
5451         ldrb r1,[z80sp,#1]\r
5452         orr r0,r0,r1, lsl #8\r
5453         mov r1,z80hl, lsr #24\r
5454         strb r1,[z80sp,#1]\r
5455         mov r1,z80hl, lsr #16\r
5456         strb r1,[z80sp]\r
5457         mov z80hl,r0, lsl #16\r
5458 .else\r
5459         mov r0,z80sp\r
5460         readmem16\r
5461         mov r1,r0\r
5462         mov r0,z80hl,lsr#16\r
5463         mov z80hl,r1,lsl#16\r
5464         mov r1,z80sp\r
5465         writemem16\r
5466 .endif\r
5467         fetch 19\r
5468 ;@CALL PO,NN\r
5469 opcode_E_4:\r
5470         tst z80f,#1<<VFlag\r
5471         beq opcode_C_D          ;@unconditional CALL\r
5472         add z80pc,z80pc,#2\r
5473         fetch 10\r
5474 ;@PUSH HL\r
5475 opcode_E_5:\r
5476         opPUSHreg z80hl\r
5477         fetch 11\r
5478 ;@AND N\r
5479 opcode_E_6:\r
5480         ldrb r0,[z80pc],#1\r
5481         opANDb\r
5482         fetch 7\r
5483 ;@RST 20H\r
5484 opcode_E_7:\r
5485         opRST 0x20\r
5486 \r
5487 ;@RET PE\r
5488 opcode_E_8:\r
5489         tst z80f,#1<<VFlag\r
5490         bne opcode_C_9          ;@unconditional RET\r
5491         fetch 5\r
5492 ;@JP (HL)\r
5493 opcode_E_9:\r
5494         mov r0,z80hl, lsr #16\r
5495         rebasepc\r
5496         fetch 4\r
5497 ;@JP PE,$+3\r
5498 opcode_E_A:\r
5499         tst z80f,#1<<VFlag\r
5500         bne opcode_C_3          ;@unconditional JP\r
5501         add z80pc,z80pc,#2\r
5502         fetch 10\r
5503 ;@EX DE,HL\r
5504 opcode_E_B:\r
5505         mov r1,z80de\r
5506         mov z80de,z80hl\r
5507         mov z80hl,r1\r
5508         fetch 4\r
5509 ;@CALL PE,NN\r
5510 opcode_E_C:\r
5511         tst z80f,#1<<VFlag\r
5512         bne opcode_C_D          ;@unconditional CALL\r
5513         add z80pc,z80pc,#2\r
5514         fetch 10\r
5515 \r
5516 ;@This should be caught at start\r
5517 opcode_E_D:\r
5518         ldrb r1,[z80pc],#1\r
5519         ldr pc,[pc,r1, lsl #2]\r
5520 opcodes_ED:     .word 0x00000000\r
5521                         .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
5522                         .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
5523                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5524                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5525                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5526                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5527                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5528                         .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
5529                         .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
5530                         .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
5531                         .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
5532                         .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
5533                         .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
5534                         .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
5535                         .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
5536                         .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
5537                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5538                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5539                         .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
5540                         .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
5541                         .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
5542                         .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
5543                         .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
5544                         .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
5545                         .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
5546                         .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
5547                         .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
5548                         .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
5549                         .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
5550                         .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
5551                         .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
5552                         .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
5553 \r
5554 ;@XOR N\r
5555 opcode_E_E:\r
5556         ldrb r0,[z80pc],#1\r
5557         opXORb\r
5558         fetch 7\r
5559 ;@RST 28H\r
5560 opcode_E_F:\r
5561         opRST 0x28\r
5562 \r
5563 ;@RET P\r
5564 opcode_F_0:\r
5565         tst z80f,#1<<SFlag\r
5566         beq opcode_C_9          ;@unconditional RET\r
5567         fetch 5\r
5568 ;@POP AF\r
5569 opcode_F_1:\r
5570 .if FAST_Z80SP\r
5571         ldrb z80f,[z80sp],#1\r
5572         sub r0,opcodes,#0x200\r
5573         ldrb z80f,[r0,z80f]\r
5574         ldrb z80a,[z80sp],#1\r
5575         mov z80a,z80a, lsl #24\r
5576 .else\r
5577         mov r0,z80sp\r
5578         readmem16\r
5579         add z80sp,z80sp,#2\r
5580         and z80a,r0,#0xFF00\r
5581         mov z80a,z80a,lsl#16\r
5582         and z80f,r0,#0xFF\r
5583         sub r0,opcodes,#0x200\r
5584         ldrb z80f,[r0,z80f]\r
5585 .endif\r
5586         fetch 10\r
5587 ;@JP P,$+3\r
5588 opcode_F_2:\r
5589         tst z80f,#1<<SFlag\r
5590         beq opcode_C_3          ;@unconditional JP\r
5591         add z80pc,z80pc,#2\r
5592         fetch 10\r
5593 ;@DI\r
5594 opcode_F_3:\r
5595         ldrb r1,[cpucontext,#z80if]\r
5596         bic r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5597         strb r1,[cpucontext,#z80if]\r
5598         fetch 4\r
5599 ;@CALL P,NN\r
5600 opcode_F_4:\r
5601         tst z80f,#1<<SFlag\r
5602         beq opcode_C_D          ;@unconditional CALL\r
5603         add z80pc,z80pc,#2\r
5604         fetch 10\r
5605 ;@PUSH AF\r
5606 opcode_F_5:\r
5607         sub r0,opcodes,#0x300\r
5608         ldrb r0,[r0,z80f]\r
5609         orr r2,r0,z80a,lsr#16\r
5610     opPUSHareg r2\r
5611         fetch 11\r
5612 ;@OR N\r
5613 opcode_F_6:\r
5614         ldrb r0,[z80pc],#1\r
5615         opORb\r
5616         fetch 7\r
5617 ;@RST 30H\r
5618 opcode_F_7:\r
5619         opRST 0x30\r
5620 \r
5621 ;@RET M\r
5622 opcode_F_8:\r
5623         tst z80f,#1<<SFlag\r
5624         bne opcode_C_9          ;@unconditional RET\r
5625         fetch 5\r
5626 ;@LD SP,HL\r
5627 opcode_F_9:\r
5628 .if FAST_Z80SP\r
5629         mov r0,z80hl, lsr #16\r
5630         rebasesp\r
5631         mov z80sp,r0\r
5632 .else\r
5633         mov z80sp,z80hl, lsr #16\r
5634 .endif\r
5635         fetch 4\r
5636 ;@JP M,$+3\r
5637 opcode_F_A:\r
5638         tst z80f,#1<<SFlag\r
5639         bne opcode_C_3          ;@unconditional JP\r
5640         add z80pc,z80pc,#2\r
5641         fetch 10\r
5642 MAIN_opcodes_POINTER: .word MAIN_opcodes\r
5643 EI_DUMMY_opcodes_POINTER: .word EI_DUMMY_opcodes\r
5644 ;@EI\r
5645 opcode_F_B:\r
5646         ldrb r1,[cpucontext,#z80if]\r
5647         tst r1,#Z80_IF1\r
5648         bne ei_return_exit\r
5649 \r
5650         orr r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5651         strb r1,[cpucontext,#z80if]\r
5652 \r
5653         mov r2,opcodes\r
5654         ldr opcodes,EI_DUMMY_opcodes_POINTER\r
5655         ldr pc,[r2,r0, lsl #2]\r
5656 \r
5657 ei_return:\r
5658         ;@point that program returns from EI to check interupts\r
5659         ;@an interupt can not be taken directly after a EI opcode\r
5660         ;@ reset z80pc and opcode pointer\r
5661         ldrh r0,[cpucontext,#z80irq] @ 0x4C\r
5662         sub z80pc,z80pc,#1\r
5663         ldr opcodes,MAIN_opcodes_POINTER\r
5664         ;@ check ints\r
5665         tst r0,#1\r
5666         movnes r0,r0,lsr #8\r
5667     blne DoInterrupt\r
5668         ;@ continue\r
5669 ei_return_exit:\r
5670         fetch 4\r
5671 \r
5672 ;@CALL M,NN\r
5673 opcode_F_C:\r
5674         tst z80f,#1<<SFlag\r
5675         bne opcode_C_D          ;@unconditional CALL\r
5676         add z80pc,z80pc,#2\r
5677         fetch 10\r
5678 \r
5679 ;@SHOULD BE CAUGHT AT START - FD SECTION\r
5680 \r
5681 ;@CP N\r
5682 opcode_F_E:\r
5683         ldrb r0,[z80pc],#1\r
5684         opCPb\r
5685         fetch 7\r
5686 ;@RST 38H\r
5687 opcode_F_F:\r
5688         opRST 0x38\r
5689 \r
5690 \r
5691 ;@##################################\r
5692 ;@##################################\r
5693 ;@###  opcodes CB  #########################\r
5694 ;@##################################\r
5695 ;@##################################\r
5696 \r
5697 \r
5698 ;@RLC B\r
5699 opcode_CB_00:\r
5700         opRLCH z80bc\r
5701 ;@RLC C\r
5702 opcode_CB_01:\r
5703         opRLCL z80bc\r
5704 ;@RLC D\r
5705 opcode_CB_02:\r
5706         opRLCH z80de\r
5707 ;@RLC E\r
5708 opcode_CB_03:\r
5709         opRLCL z80de\r
5710 ;@RLC H\r
5711 opcode_CB_04:\r
5712         opRLCH z80hl\r
5713 ;@RLC L\r
5714 opcode_CB_05:\r
5715         opRLCL z80hl\r
5716 ;@RLC (HL)\r
5717 opcode_CB_06:\r
5718         readmem8HL\r
5719         opRLCb\r
5720         writemem8HL\r
5721         fetch 15\r
5722 ;@RLC A\r
5723 opcode_CB_07:\r
5724         opRLCA\r
5725 \r
5726 ;@RRC B\r
5727 opcode_CB_08:\r
5728         opRRCH z80bc\r
5729 ;@RRC C\r
5730 opcode_CB_09:\r
5731         opRRCL z80bc\r
5732 ;@RRC D\r
5733 opcode_CB_0A:\r
5734         opRRCH z80de\r
5735 ;@RRC E\r
5736 opcode_CB_0B:\r
5737         opRRCL z80de\r
5738 ;@RRC H\r
5739 opcode_CB_0C:\r
5740         opRRCH z80hl\r
5741 ;@RRC L\r
5742 opcode_CB_0D:\r
5743         opRRCL z80hl\r
5744 ;@RRC (HL)\r
5745 opcode_CB_0E :\r
5746         readmem8HL\r
5747         opRRCb\r
5748         writemem8HL\r
5749         fetch 15\r
5750 ;@RRC A\r
5751 opcode_CB_0F:\r
5752         opRRCA\r
5753 \r
5754 ;@RL B\r
5755 opcode_CB_10:\r
5756         opRLH z80bc\r
5757 ;@RL C\r
5758 opcode_CB_11:\r
5759         opRLL z80bc\r
5760 ;@RL D\r
5761 opcode_CB_12:\r
5762         opRLH z80de\r
5763 ;@RL E\r
5764 opcode_CB_13:\r
5765         opRLL z80de\r
5766 ;@RL H\r
5767 opcode_CB_14:\r
5768         opRLH z80hl\r
5769 ;@RL L\r
5770 opcode_CB_15:\r
5771         opRLL z80hl\r
5772 ;@RL (HL)\r
5773 opcode_CB_16:\r
5774         readmem8HL\r
5775         opRLb\r
5776         writemem8HL\r
5777         fetch 15\r
5778 ;@RL A\r
5779 opcode_CB_17:\r
5780         opRLA\r
5781 \r
5782 ;@RR B \r
5783 opcode_CB_18:\r
5784         opRRH z80bc\r
5785 ;@RR C\r
5786 opcode_CB_19:\r
5787         opRRL z80bc\r
5788 ;@RR D\r
5789 opcode_CB_1A:\r
5790         opRRH z80de\r
5791 ;@RR E\r
5792 opcode_CB_1B:\r
5793         opRRL z80de\r
5794 ;@RR H\r
5795 opcode_CB_1C:\r
5796         opRRH z80hl\r
5797 ;@RR L\r
5798 opcode_CB_1D:\r
5799         opRRL z80hl\r
5800 ;@RR (HL)\r
5801 opcode_CB_1E:\r
5802         readmem8HL\r
5803         opRRb\r
5804         writemem8HL\r
5805         fetch 15\r
5806 ;@RR A\r
5807 opcode_CB_1F:\r
5808         opRRA\r
5809 \r
5810 ;@SLA B\r
5811 opcode_CB_20:\r
5812         opSLAH z80bc\r
5813 ;@SLA C\r
5814 opcode_CB_21:\r
5815         opSLAL z80bc\r
5816 ;@SLA D\r
5817 opcode_CB_22:\r
5818         opSLAH z80de\r
5819 ;@SLA E\r
5820 opcode_CB_23:\r
5821         opSLAL z80de\r
5822 ;@SLA H\r
5823 opcode_CB_24:\r
5824         opSLAH z80hl\r
5825 ;@SLA L\r
5826 opcode_CB_25:\r
5827         opSLAL z80hl\r
5828 ;@SLA (HL)\r
5829 opcode_CB_26:\r
5830         readmem8HL\r
5831         opSLAb\r
5832         writemem8HL\r
5833         fetch 15\r
5834 ;@SLA A\r
5835 opcode_CB_27:\r
5836         opSLAA\r
5837 \r
5838 ;@SRA B\r
5839 opcode_CB_28:\r
5840         opSRAH z80bc\r
5841 ;@SRA C\r
5842 opcode_CB_29:\r
5843         opSRAL z80bc\r
5844 ;@SRA D\r
5845 opcode_CB_2A:\r
5846         opSRAH z80de\r
5847 ;@SRA E\r
5848 opcode_CB_2B:\r
5849         opSRAL z80de\r
5850 ;@SRA H\r
5851 opcode_CB_2C:\r
5852         opSRAH z80hl\r
5853 ;@SRA L\r
5854 opcode_CB_2D:\r
5855         opSRAL z80hl\r
5856 ;@SRA (HL)\r
5857 opcode_CB_2E:\r
5858         readmem8HL\r
5859         opSRAb\r
5860         writemem8HL\r
5861         fetch 15\r
5862 ;@SRA A\r
5863 opcode_CB_2F:\r
5864         opSRAA\r
5865 \r
5866 ;@SLL B\r
5867 opcode_CB_30:\r
5868         opSLLH z80bc\r
5869 ;@SLL C\r
5870 opcode_CB_31:\r
5871         opSLLL z80bc\r
5872 ;@SLL D\r
5873 opcode_CB_32:\r
5874         opSLLH z80de\r
5875 ;@SLL E\r
5876 opcode_CB_33:\r
5877         opSLLL z80de\r
5878 ;@SLL H\r
5879 opcode_CB_34:\r
5880         opSLLH z80hl\r
5881 ;@SLL L\r
5882 opcode_CB_35:\r
5883         opSLLL z80hl\r
5884 ;@SLL (HL)\r
5885 opcode_CB_36:\r
5886         readmem8HL\r
5887         opSLLb\r
5888         writemem8HL\r
5889         fetch 15\r
5890 ;@SLL A\r
5891 opcode_CB_37:\r
5892         opSLLA\r
5893 \r
5894 ;@SRL B\r
5895 opcode_CB_38:\r
5896         opSRLH z80bc\r
5897 ;@SRL C\r
5898 opcode_CB_39:\r
5899         opSRLL z80bc\r
5900 ;@SRL D\r
5901 opcode_CB_3A:\r
5902         opSRLH z80de\r
5903 ;@SRL E\r
5904 opcode_CB_3B:\r
5905         opSRLL z80de\r
5906 ;@SRL H\r
5907 opcode_CB_3C:\r
5908         opSRLH z80hl\r
5909 ;@SRL L\r
5910 opcode_CB_3D:\r
5911         opSRLL z80hl\r
5912 ;@SRL (HL)\r
5913 opcode_CB_3E:\r
5914         readmem8HL\r
5915         opSRLb\r
5916         writemem8HL\r
5917         fetch 15\r
5918 ;@SRL A\r
5919 opcode_CB_3F:\r
5920         opSRLA\r
5921 \r
5922 \r
5923 ;@BIT 0,B\r
5924 opcode_CB_40:\r
5925         opBITH z80bc 0\r
5926 ;@BIT 0,C\r
5927 opcode_CB_41:\r
5928         opBITL z80bc 0\r
5929 ;@BIT 0,D\r
5930 opcode_CB_42:\r
5931         opBITH z80de 0\r
5932 ;@BIT 0,E\r
5933 opcode_CB_43:\r
5934         opBITL z80de 0\r
5935 ;@BIT 0,H\r
5936 opcode_CB_44:\r
5937         opBITH z80hl 0\r
5938 ;@BIT 0,L\r
5939 opcode_CB_45:\r
5940         opBITL z80hl 0\r
5941 ;@BIT 0,(HL)\r
5942 opcode_CB_46:\r
5943         readmem8HL\r
5944         opBITb 0\r
5945         fetch 12\r
5946 ;@BIT 0,A\r
5947 opcode_CB_47:\r
5948         opBITH z80a 0\r
5949 \r
5950 ;@BIT 1,B\r
5951 opcode_CB_48:\r
5952         opBITH z80bc 1\r
5953 ;@BIT 1,C\r
5954 opcode_CB_49:\r
5955         opBITL z80bc 1\r
5956 ;@BIT 1,D\r
5957 opcode_CB_4A:\r
5958         opBITH z80de 1\r
5959 ;@BIT 1,E\r
5960 opcode_CB_4B:\r
5961         opBITL z80de 1\r
5962 ;@BIT 1,H\r
5963 opcode_CB_4C:\r
5964         opBITH z80hl 1\r
5965 ;@BIT 1,L\r
5966 opcode_CB_4D:\r
5967         opBITL z80hl 1\r
5968 ;@BIT 1,(HL)\r
5969 opcode_CB_4E:\r
5970         readmem8HL\r
5971         opBITb 1\r
5972         fetch 12\r
5973 ;@BIT 1,A\r
5974 opcode_CB_4F:\r
5975         opBITH z80a 1\r
5976 \r
5977 ;@BIT 2,B\r
5978 opcode_CB_50:\r
5979         opBITH z80bc 2\r
5980 ;@BIT 2,C\r
5981 opcode_CB_51:\r
5982         opBITL z80bc 2\r
5983 ;@BIT 2,D\r
5984 opcode_CB_52:\r
5985         opBITH z80de 2\r
5986 ;@BIT 2,E\r
5987 opcode_CB_53:\r
5988         opBITL z80de 2\r
5989 ;@BIT 2,H\r
5990 opcode_CB_54:\r
5991         opBITH z80hl 2\r
5992 ;@BIT 2,L\r
5993 opcode_CB_55:\r
5994         opBITL z80hl 2\r
5995 ;@BIT 2,(HL)\r
5996 opcode_CB_56:\r
5997         readmem8HL\r
5998         opBITb 2\r
5999         fetch 12\r
6000 ;@BIT 2,A\r
6001 opcode_CB_57:\r
6002         opBITH z80a 2\r
6003 \r
6004 ;@BIT 3,B\r
6005 opcode_CB_58:\r
6006         opBITH z80bc 3\r
6007 ;@BIT 3,C\r
6008 opcode_CB_59:\r
6009         opBITL z80bc 3\r
6010 ;@BIT 3,D\r
6011 opcode_CB_5A:\r
6012         opBITH z80de 3\r
6013 ;@BIT 3,E\r
6014 opcode_CB_5B:\r
6015         opBITL z80de 3\r
6016 ;@BIT 3,H\r
6017 opcode_CB_5C:\r
6018         opBITH z80hl 3\r
6019 ;@BIT 3,L\r
6020 opcode_CB_5D:\r
6021         opBITL z80hl 3\r
6022 ;@BIT 3,(HL)\r
6023 opcode_CB_5E:\r
6024         readmem8HL\r
6025         opBITb 3\r
6026         fetch 12\r
6027 ;@BIT 3,A\r
6028 opcode_CB_5F:\r
6029         opBITH z80a 3\r
6030 \r
6031 ;@BIT 4,B\r
6032 opcode_CB_60:\r
6033         opBITH z80bc 4\r
6034 ;@BIT 4,C\r
6035 opcode_CB_61:\r
6036         opBITL z80bc 4\r
6037 ;@BIT 4,D\r
6038 opcode_CB_62:\r
6039         opBITH z80de 4\r
6040 ;@BIT 4,E\r
6041 opcode_CB_63:\r
6042         opBITL z80de 4\r
6043 ;@BIT 4,H\r
6044 opcode_CB_64:\r
6045         opBITH z80hl 4\r
6046 ;@BIT 4,L\r
6047 opcode_CB_65:\r
6048         opBITL z80hl 4\r
6049 ;@BIT 4,(HL)\r
6050 opcode_CB_66:\r
6051         readmem8HL\r
6052         opBITb 4\r
6053         fetch 12\r
6054 ;@BIT 4,A\r
6055 opcode_CB_67:\r
6056         opBITH z80a 4\r
6057 \r
6058 ;@BIT 5,B\r
6059 opcode_CB_68:\r
6060         opBITH z80bc 5\r
6061 ;@BIT 5,C\r
6062 opcode_CB_69:\r
6063         opBITL z80bc 5\r
6064 ;@BIT 5,D\r
6065 opcode_CB_6A:\r
6066         opBITH z80de 5\r
6067 ;@BIT 5,E\r
6068 opcode_CB_6B:\r
6069         opBITL z80de 5\r
6070 ;@BIT 5,H\r
6071 opcode_CB_6C:\r
6072         opBITH z80hl 5\r
6073 ;@BIT 5,L\r
6074 opcode_CB_6D:\r
6075         opBITL z80hl 5\r
6076 ;@BIT 5,(HL)\r
6077 opcode_CB_6E:\r
6078         readmem8HL\r
6079         opBITb 5\r
6080         fetch 12\r
6081 ;@BIT 5,A\r
6082 opcode_CB_6F:\r
6083         opBITH z80a 5\r
6084 \r
6085 ;@BIT 6,B\r
6086 opcode_CB_70:\r
6087         opBITH z80bc 6\r
6088 ;@BIT 6,C\r
6089 opcode_CB_71:\r
6090         opBITL z80bc 6\r
6091 ;@BIT 6,D\r
6092 opcode_CB_72:\r
6093         opBITH z80de 6\r
6094 ;@BIT 6,E\r
6095 opcode_CB_73:\r
6096         opBITL z80de 6\r
6097 ;@BIT 6,H\r
6098 opcode_CB_74:\r
6099         opBITH z80hl 6\r
6100 ;@BIT 6,L\r
6101 opcode_CB_75:\r
6102         opBITL z80hl 6\r
6103 ;@BIT 6,(HL)\r
6104 opcode_CB_76:\r
6105         readmem8HL\r
6106         opBITb 6\r
6107         fetch 12\r
6108 ;@BIT 6,A\r
6109 opcode_CB_77:\r
6110         opBITH z80a 6\r
6111 \r
6112 ;@BIT 7,B\r
6113 opcode_CB_78:\r
6114         opBIT7H z80bc\r
6115 ;@BIT 7,C\r
6116 opcode_CB_79:\r
6117         opBIT7L z80bc\r
6118 ;@BIT 7,D\r
6119 opcode_CB_7A:\r
6120         opBIT7H z80de\r
6121 ;@BIT 7,E\r
6122 opcode_CB_7B:\r
6123         opBIT7L z80de\r
6124 ;@BIT 7,H\r
6125 opcode_CB_7C:\r
6126         opBIT7H z80hl\r
6127 ;@BIT 7,L\r
6128 opcode_CB_7D:\r
6129         opBIT7L z80hl\r
6130 ;@BIT 7,(HL)\r
6131 opcode_CB_7E:\r
6132         readmem8HL\r
6133         opBIT7b\r
6134         fetch 12\r
6135 ;@BIT 7,A\r
6136 opcode_CB_7F:\r
6137         opBIT7H z80a\r
6138 \r
6139 ;@RES 0,B\r
6140 opcode_CB_80:\r
6141         bic z80bc,z80bc,#1<<24\r
6142         fetch 8\r
6143 ;@RES 0,C\r
6144 opcode_CB_81:\r
6145         bic z80bc,z80bc,#1<<16\r
6146         fetch 8\r
6147 ;@RES 0,D\r
6148 opcode_CB_82:\r
6149         bic z80de,z80de,#1<<24\r
6150         fetch 8\r
6151 ;@RES 0,E\r
6152 opcode_CB_83:\r
6153         bic z80de,z80de,#1<<16\r
6154         fetch 8\r
6155 ;@RES 0,H\r
6156 opcode_CB_84:\r
6157         bic z80hl,z80hl,#1<<24\r
6158         fetch 8\r
6159 ;@RES 0,L\r
6160 opcode_CB_85:\r
6161         bic z80hl,z80hl,#1<<16\r
6162         fetch 8\r
6163 ;@RES 0,(HL)\r
6164 opcode_CB_86:\r
6165         opRESmemHL 0\r
6166 ;@RES 0,A\r
6167 opcode_CB_87:\r
6168         bic z80a,z80a,#1<<24\r
6169         fetch 8\r
6170 \r
6171 ;@RES 1,B\r
6172 opcode_CB_88:\r
6173         bic z80bc,z80bc,#1<<25\r
6174         fetch 8\r
6175 ;@RES 1,C\r
6176 opcode_CB_89:\r
6177         bic z80bc,z80bc,#1<<17\r
6178         fetch 8\r
6179 ;@RES 1,D\r
6180 opcode_CB_8A:\r
6181         bic z80de,z80de,#1<<25\r
6182         fetch 8\r
6183 ;@RES 1,E\r
6184 opcode_CB_8B:\r
6185         bic z80de,z80de,#1<<17\r
6186         fetch 8\r
6187 ;@RES 1,H\r
6188 opcode_CB_8C:\r
6189         bic z80hl,z80hl,#1<<25\r
6190         fetch 8\r
6191 ;@RES 1,L\r
6192 opcode_CB_8D:\r
6193         bic z80hl,z80hl,#1<<17\r
6194         fetch 8\r
6195 ;@RES 1,(HL)\r
6196 opcode_CB_8E:\r
6197         opRESmemHL 1\r
6198 ;@RES 1,A\r
6199 opcode_CB_8F:\r
6200         bic z80a,z80a,#1<<25\r
6201         fetch 8\r
6202 \r
6203 ;@RES 2,B\r
6204 opcode_CB_90:\r
6205         bic z80bc,z80bc,#1<<26\r
6206         fetch 8\r
6207 ;@RES 2,C\r
6208 opcode_CB_91:\r
6209         bic z80bc,z80bc,#1<<18\r
6210         fetch 8\r
6211 ;@RES 2,D\r
6212 opcode_CB_92:\r
6213         bic z80de,z80de,#1<<26\r
6214         fetch 8\r
6215 ;@RES 2,E\r
6216 opcode_CB_93:\r
6217         bic z80de,z80de,#1<<18\r
6218         fetch 8\r
6219 ;@RES 2,H\r
6220 opcode_CB_94:\r
6221         bic z80hl,z80hl,#1<<26\r
6222         fetch 8\r
6223 ;@RES 2,L\r
6224 opcode_CB_95:\r
6225         bic z80hl,z80hl,#1<<18\r
6226         fetch 8\r
6227 ;@RES 2,(HL)\r
6228 opcode_CB_96:\r
6229         opRESmemHL 2\r
6230 ;@RES 2,A\r
6231 opcode_CB_97:\r
6232         bic z80a,z80a,#1<<26\r
6233         fetch 8\r
6234 \r
6235 ;@RES 3,B\r
6236 opcode_CB_98:\r
6237         bic z80bc,z80bc,#1<<27\r
6238         fetch 8\r
6239 ;@RES 3,C\r
6240 opcode_CB_99:\r
6241         bic z80bc,z80bc,#1<<19\r
6242         fetch 8\r
6243 ;@RES 3,D\r
6244 opcode_CB_9A:\r
6245         bic z80de,z80de,#1<<27\r
6246         fetch 8\r
6247 ;@RES 3,E\r
6248 opcode_CB_9B:\r
6249         bic z80de,z80de,#1<<19\r
6250         fetch 8\r
6251 ;@RES 3,H\r
6252 opcode_CB_9C:\r
6253         bic z80hl,z80hl,#1<<27\r
6254         fetch 8\r
6255 ;@RES 3,L\r
6256 opcode_CB_9D:\r
6257         bic z80hl,z80hl,#1<<19\r
6258         fetch 8\r
6259 ;@RES 3,(HL)\r
6260 opcode_CB_9E:\r
6261         opRESmemHL 3\r
6262 ;@RES 3,A\r
6263 opcode_CB_9F:\r
6264         bic z80a,z80a,#1<<27\r
6265         fetch 8\r
6266 \r
6267 ;@RES 4,B\r
6268 opcode_CB_A0:\r
6269         bic z80bc,z80bc,#1<<28\r
6270         fetch 8\r
6271 ;@RES 4,C\r
6272 opcode_CB_A1:\r
6273         bic z80bc,z80bc,#1<<20\r
6274         fetch 8\r
6275 ;@RES 4,D\r
6276 opcode_CB_A2:\r
6277         bic z80de,z80de,#1<<28\r
6278         fetch 8\r
6279 ;@RES 4,E\r
6280 opcode_CB_A3:\r
6281         bic z80de,z80de,#1<<20\r
6282         fetch 8\r
6283 ;@RES 4,H\r
6284 opcode_CB_A4:\r
6285         bic z80hl,z80hl,#1<<28\r
6286         fetch 8\r
6287 ;@RES 4,L\r
6288 opcode_CB_A5:\r
6289         bic z80hl,z80hl,#1<<20\r
6290         fetch 8\r
6291 ;@RES 4,(HL)\r
6292 opcode_CB_A6:\r
6293         opRESmemHL 4\r
6294 ;@RES 4,A\r
6295 opcode_CB_A7:\r
6296         bic z80a,z80a,#1<<28\r
6297         fetch 8\r
6298 \r
6299 ;@RES 5,B\r
6300 opcode_CB_A8:\r
6301         bic z80bc,z80bc,#1<<29\r
6302         fetch 8\r
6303 ;@RES 5,C\r
6304 opcode_CB_A9:\r
6305         bic z80bc,z80bc,#1<<21\r
6306         fetch 8\r
6307 ;@RES 5,D\r
6308 opcode_CB_AA:\r
6309         bic z80de,z80de,#1<<29\r
6310         fetch 8\r
6311 ;@RES 5,E\r
6312 opcode_CB_AB:\r
6313         bic z80de,z80de,#1<<21\r
6314         fetch 8\r
6315 ;@RES 5,H\r
6316 opcode_CB_AC:\r
6317         bic z80hl,z80hl,#1<<29\r
6318         fetch 8\r
6319 ;@RES 5,L\r
6320 opcode_CB_AD:\r
6321         bic z80hl,z80hl,#1<<21\r
6322         fetch 8\r
6323 ;@RES 5,(HL)\r
6324 opcode_CB_AE:\r
6325         opRESmemHL 5\r
6326 ;@RES 5,A\r
6327 opcode_CB_AF:\r
6328         bic z80a,z80a,#1<<29\r
6329         fetch 8\r
6330 \r
6331 ;@RES 6,B\r
6332 opcode_CB_B0:\r
6333         bic z80bc,z80bc,#1<<30\r
6334         fetch 8\r
6335 ;@RES 6,C\r
6336 opcode_CB_B1:\r
6337         bic z80bc,z80bc,#1<<22\r
6338         fetch 8\r
6339 ;@RES 6,D\r
6340 opcode_CB_B2:\r
6341         bic z80de,z80de,#1<<30\r
6342         fetch 8\r
6343 ;@RES 6,E\r
6344 opcode_CB_B3:\r
6345         bic z80de,z80de,#1<<22\r
6346         fetch 8\r
6347 ;@RES 6,H\r
6348 opcode_CB_B4:\r
6349         bic z80hl,z80hl,#1<<30\r
6350         fetch 8\r
6351 ;@RES 6,L\r
6352 opcode_CB_B5:\r
6353         bic z80hl,z80hl,#1<<22\r
6354         fetch 8\r
6355 ;@RES 6,(HL)\r
6356 opcode_CB_B6:\r
6357         opRESmemHL 6\r
6358 ;@RES 6,A\r
6359 opcode_CB_B7:\r
6360         bic z80a,z80a,#1<<30\r
6361         fetch 8\r
6362 \r
6363 ;@RES 7,B\r
6364 opcode_CB_B8:\r
6365         bic z80bc,z80bc,#1<<31\r
6366         fetch 8\r
6367 ;@RES 7,C\r
6368 opcode_CB_B9:\r
6369         bic z80bc,z80bc,#1<<23\r
6370         fetch 8\r
6371 ;@RES 7,D\r
6372 opcode_CB_BA:\r
6373         bic z80de,z80de,#1<<31\r
6374         fetch 8\r
6375 ;@RES 7,E\r
6376 opcode_CB_BB:\r
6377         bic z80de,z80de,#1<<23\r
6378         fetch 8\r
6379 ;@RES 7,H\r
6380 opcode_CB_BC:\r
6381         bic z80hl,z80hl,#1<<31\r
6382         fetch 8\r
6383 ;@RES 7,L\r
6384 opcode_CB_BD:\r
6385         bic z80hl,z80hl,#1<<23\r
6386         fetch 8\r
6387 ;@RES 7,(HL)\r
6388 opcode_CB_BE:\r
6389         opRESmemHL 7\r
6390 ;@RES 7,A\r
6391 opcode_CB_BF:\r
6392         bic z80a,z80a,#1<<31\r
6393         fetch 8\r
6394 \r
6395 ;@SET 0,B\r
6396 opcode_CB_C0:\r
6397         orr z80bc,z80bc,#1<<24\r
6398         fetch 8\r
6399 ;@SET 0,C\r
6400 opcode_CB_C1:\r
6401         orr z80bc,z80bc,#1<<16\r
6402         fetch 8\r
6403 ;@SET 0,D\r
6404 opcode_CB_C2:\r
6405         orr z80de,z80de,#1<<24\r
6406         fetch 8\r
6407 ;@SET 0,E\r
6408 opcode_CB_C3:\r
6409         orr z80de,z80de,#1<<16\r
6410         fetch 8\r
6411 ;@SET 0,H\r
6412 opcode_CB_C4:\r
6413         orr z80hl,z80hl,#1<<24\r
6414         fetch 8\r
6415 ;@SET 0,L\r
6416 opcode_CB_C5:\r
6417         orr z80hl,z80hl,#1<<16\r
6418         fetch 8\r
6419 ;@SET 0,(HL)\r
6420 opcode_CB_C6:\r
6421         opSETmemHL 0\r
6422 ;@SET 0,A\r
6423 opcode_CB_C7:\r
6424         orr z80a,z80a,#1<<24\r
6425         fetch 8\r
6426 \r
6427 ;@SET 1,B\r
6428 opcode_CB_C8:\r
6429         orr z80bc,z80bc,#1<<25\r
6430         fetch 8\r
6431 ;@SET 1,C\r
6432 opcode_CB_C9:\r
6433         orr z80bc,z80bc,#1<<17\r
6434         fetch 8\r
6435 ;@SET 1,D\r
6436 opcode_CB_CA:\r
6437         orr z80de,z80de,#1<<25\r
6438         fetch 8\r
6439 ;@SET 1,E\r
6440 opcode_CB_CB:\r
6441         orr z80de,z80de,#1<<17\r
6442         fetch 8\r
6443 ;@SET 1,H\r
6444 opcode_CB_CC:\r
6445         orr z80hl,z80hl,#1<<25\r
6446         fetch 8\r
6447 ;@SET 1,L\r
6448 opcode_CB_CD:\r
6449         orr z80hl,z80hl,#1<<17\r
6450         fetch 8\r
6451 ;@SET 1,(HL)\r
6452 opcode_CB_CE:\r
6453         opSETmemHL 1\r
6454 ;@SET 1,A\r
6455 opcode_CB_CF:\r
6456         orr z80a,z80a,#1<<25\r
6457         fetch 8\r
6458 \r
6459 ;@SET 2,B\r
6460 opcode_CB_D0:\r
6461         orr z80bc,z80bc,#1<<26\r
6462         fetch 8\r
6463 ;@SET 2,C\r
6464 opcode_CB_D1:\r
6465         orr z80bc,z80bc,#1<<18\r
6466         fetch 8\r
6467 ;@SET 2,D\r
6468 opcode_CB_D2:\r
6469         orr z80de,z80de,#1<<26\r
6470         fetch 8\r
6471 ;@SET 2,E\r
6472 opcode_CB_D3:\r
6473         orr z80de,z80de,#1<<18\r
6474         fetch 8\r
6475 ;@SET 2,H\r
6476 opcode_CB_D4:\r
6477         orr z80hl,z80hl,#1<<26\r
6478         fetch 8\r
6479 ;@SET 2,L\r
6480 opcode_CB_D5:\r
6481         orr z80hl,z80hl,#1<<18\r
6482         fetch 8\r
6483 ;@SET 2,(HL)\r
6484 opcode_CB_D6:\r
6485         opSETmemHL 2\r
6486 ;@SET 2,A\r
6487 opcode_CB_D7:\r
6488         orr z80a,z80a,#1<<26\r
6489         fetch 8\r
6490 \r
6491 ;@SET 3,B\r
6492 opcode_CB_D8:\r
6493         orr z80bc,z80bc,#1<<27\r
6494         fetch 8\r
6495 ;@SET 3,C\r
6496 opcode_CB_D9:\r
6497         orr z80bc,z80bc,#1<<19\r
6498         fetch 8\r
6499 ;@SET 3,D\r
6500 opcode_CB_DA:\r
6501         orr z80de,z80de,#1<<27\r
6502         fetch 8\r
6503 ;@SET 3,E\r
6504 opcode_CB_DB:\r
6505         orr z80de,z80de,#1<<19\r
6506         fetch 8\r
6507 ;@SET 3,H\r
6508 opcode_CB_DC:\r
6509         orr z80hl,z80hl,#1<<27\r
6510         fetch 8\r
6511 ;@SET 3,L\r
6512 opcode_CB_DD:\r
6513         orr z80hl,z80hl,#1<<19\r
6514         fetch 8\r
6515 ;@SET 3,(HL)\r
6516 opcode_CB_DE:\r
6517         opSETmemHL 3\r
6518 ;@SET 3,A\r
6519 opcode_CB_DF:\r
6520         orr z80a,z80a,#1<<27\r
6521         fetch 8\r
6522 \r
6523 ;@SET 4,B\r
6524 opcode_CB_E0:\r
6525         orr z80bc,z80bc,#1<<28\r
6526         fetch 8\r
6527 ;@SET 4,C\r
6528 opcode_CB_E1:\r
6529         orr z80bc,z80bc,#1<<20\r
6530         fetch 8\r
6531 ;@SET 4,D\r
6532 opcode_CB_E2:\r
6533         orr z80de,z80de,#1<<28\r
6534         fetch 8\r
6535 ;@SET 4,E\r
6536 opcode_CB_E3:\r
6537         orr z80de,z80de,#1<<20\r
6538         fetch 8\r
6539 ;@SET 4,H\r
6540 opcode_CB_E4:\r
6541         orr z80hl,z80hl,#1<<28\r
6542         fetch 8\r
6543 ;@SET 4,L\r
6544 opcode_CB_E5:\r
6545         orr z80hl,z80hl,#1<<20\r
6546         fetch 8\r
6547 ;@SET 4,(HL)\r
6548 opcode_CB_E6:\r
6549         opSETmemHL 4\r
6550 ;@SET 4,A\r
6551 opcode_CB_E7:\r
6552         orr z80a,z80a,#1<<28\r
6553         fetch 8\r
6554 \r
6555 ;@SET 5,B\r
6556 opcode_CB_E8:\r
6557         orr z80bc,z80bc,#1<<29\r
6558         fetch 8\r
6559 ;@SET 5,C\r
6560 opcode_CB_E9:\r
6561         orr z80bc,z80bc,#1<<21\r
6562         fetch 8\r
6563 ;@SET 5,D\r
6564 opcode_CB_EA:\r
6565         orr z80de,z80de,#1<<29\r
6566         fetch 8\r
6567 ;@SET 5,E\r
6568 opcode_CB_EB:\r
6569         orr z80de,z80de,#1<<21\r
6570         fetch 8\r
6571 ;@SET 5,H\r
6572 opcode_CB_EC:\r
6573         orr z80hl,z80hl,#1<<29\r
6574         fetch 8\r
6575 ;@SET 5,L\r
6576 opcode_CB_ED:\r
6577         orr z80hl,z80hl,#1<<21\r
6578         fetch 8\r
6579 ;@SET 5,(HL)\r
6580 opcode_CB_EE:\r
6581         opSETmemHL 5\r
6582 ;@SET 5,A\r
6583 opcode_CB_EF:\r
6584         orr z80a,z80a,#1<<29\r
6585         fetch 8\r
6586 \r
6587 ;@SET 6,B\r
6588 opcode_CB_F0:\r
6589         orr z80bc,z80bc,#1<<30\r
6590         fetch 8\r
6591 ;@SET 6,C\r
6592 opcode_CB_F1:\r
6593         orr z80bc,z80bc,#1<<22\r
6594         fetch 8\r
6595 ;@SET 6,D\r
6596 opcode_CB_F2:\r
6597         orr z80de,z80de,#1<<30\r
6598         fetch 8\r
6599 ;@SET 6,E\r
6600 opcode_CB_F3:\r
6601         orr z80de,z80de,#1<<22\r
6602         fetch 8\r
6603 ;@SET 6,H\r
6604 opcode_CB_F4:\r
6605         orr z80hl,z80hl,#1<<30\r
6606         fetch 8\r
6607 ;@SET 6,L\r
6608 opcode_CB_F5:\r
6609         orr z80hl,z80hl,#1<<22\r
6610         fetch 8\r
6611 ;@SET 6,(HL)\r
6612 opcode_CB_F6:\r
6613         opSETmemHL 6\r
6614 ;@SET 6,A\r
6615 opcode_CB_F7:\r
6616         orr z80a,z80a,#1<<30\r
6617         fetch 8\r
6618 \r
6619 ;@SET 7,B\r
6620 opcode_CB_F8:\r
6621         orr z80bc,z80bc,#1<<31\r
6622         fetch 8\r
6623 ;@SET 7,C\r
6624 opcode_CB_F9:\r
6625         orr z80bc,z80bc,#1<<23\r
6626         fetch 8\r
6627 ;@SET 7,D\r
6628 opcode_CB_FA:\r
6629         orr z80de,z80de,#1<<31\r
6630         fetch 8\r
6631 ;@SET 7,E\r
6632 opcode_CB_FB:\r
6633         orr z80de,z80de,#1<<23\r
6634         fetch 8\r
6635 ;@SET 7,H\r
6636 opcode_CB_FC:\r
6637         orr z80hl,z80hl,#1<<31\r
6638         fetch 8\r
6639 ;@SET 7,L\r
6640 opcode_CB_FD:\r
6641         orr z80hl,z80hl,#1<<23\r
6642         fetch 8\r
6643 ;@SET 7,(HL)\r
6644 opcode_CB_FE:\r
6645         opSETmemHL 7\r
6646 ;@SET 7,A\r
6647 opcode_CB_FF:\r
6648         orr z80a,z80a,#1<<31\r
6649         fetch 8\r
6650 \r
6651 \r
6652 \r
6653 ;@##################################\r
6654 ;@##################################\r
6655 ;@###  opcodes DD  #########################\r
6656 ;@##################################\r
6657 ;@##################################\r
6658 ;@Because the DD opcodes are not a complete range from 00-FF I have\r
6659 ;@created this sub routine that will catch any undocumented ops\r
6660 ;@halt the emulator and mov the current instruction to r0\r
6661 ;@at a later stage I may change to display a text message on the screen\r
6662 opcode_DD_NF:\r
6663         eatcycles 4\r
6664         ldr pc,[opcodes,r0, lsl #2]\r
6665 ;@      mov r2,#0x10*4\r
6666 ;@      cmp r2,z80xx\r
6667 ;@      bne opcode_FD_NF\r
6668 ;@      mov r0,#0xDD00\r
6669 ;@      orr r0,r0,r1\r
6670 ;@      b end_loop\r
6671 ;@opcode_FD_NF:\r
6672 ;@      mov r0,#0xFD00\r
6673 ;@      orr r0,r0,r1\r
6674 ;@      b end_loop\r
6675 opcode_DD_NF2:\r
6676         mov r0,#0xDD0000\r
6677         orr r0,r0,#0xCB00\r
6678         orr r0,r0,r1\r
6679         b end_loop\r
6680 \r
6681 ;@ADD IX,BC\r
6682 opcode_DD_09:\r
6683         ldr r0,[z80xx]\r
6684         opADD16 r0 z80bc\r
6685         str r0,[z80xx]\r
6686         fetch 15\r
6687 ;@ADD IX,DE\r
6688 opcode_DD_19:\r
6689         ldr r0,[z80xx]\r
6690         opADD16 r0 z80de\r
6691         str r0,[z80xx]\r
6692         fetch 15\r
6693 ;@LD IX,NN\r
6694 opcode_DD_21:\r
6695         ldrb r0,[z80pc],#1\r
6696         ldrb r1,[z80pc],#1\r
6697         orr r0,r0,r1, lsl #8\r
6698         strh r0,[z80xx,#2]\r
6699         fetch 14\r
6700 ;@LD (NN),IX\r
6701 opcode_DD_22:\r
6702         ldrb r0,[z80pc],#1\r
6703         ldrb r1,[z80pc],#1\r
6704         orr r1,r0,r1, lsl #8\r
6705         ldrh r0,[z80xx,#2]\r
6706         writemem16\r
6707         fetch 20\r
6708 ;@INC IX\r
6709 opcode_DD_23:\r
6710         ldr r0,[z80xx]\r
6711         add r0,r0,#1<<16\r
6712         str r0,[z80xx]\r
6713         fetch 10\r
6714 ;@INC I  (IX)\r
6715 opcode_DD_24:\r
6716         ldr r0,[z80xx]\r
6717         opINC8H r0\r
6718         str r0,[z80xx]\r
6719         fetch 8\r
6720 ;@DEC I  (IX)\r
6721 opcode_DD_25:\r
6722         ldr r0,[z80xx]\r
6723         opDEC8H r0\r
6724         str r0,[z80xx]\r
6725         fetch 8\r
6726 ;@LD I,N  (IX)\r
6727 opcode_DD_26:\r
6728         ldrb r0,[z80pc],#1\r
6729         strb r0,[z80xx,#3]\r
6730         fetch 11\r
6731 ;@ADD IX,IX\r
6732 opcode_DD_29:\r
6733         ldr r0,[z80xx]\r
6734         opADD16_2 r0\r
6735         str r0,[z80xx]\r
6736         fetch 15\r
6737 ;@LD IX,(NN)\r
6738 opcode_DD_2A:\r
6739         ldrb r0,[z80pc],#1\r
6740         ldrb r1,[z80pc],#1\r
6741         orr r0,r0,r1, lsl #8\r
6742         stmfd sp!,{z80xx}\r
6743         readmem16\r
6744         ldmfd sp!,{z80xx}\r
6745         strh r0,[z80xx,#2]\r
6746         fetch 20\r
6747 ;@DEC IX\r
6748 opcode_DD_2B:\r
6749         ldr r0,[z80xx]\r
6750         sub r0,r0,#1<<16\r
6751         str r0,[z80xx]\r
6752         fetch 10\r
6753 ;@INC X  (IX)\r
6754 opcode_DD_2C:\r
6755         ldr r0,[z80xx]\r
6756         opINC8L r0\r
6757         str r0,[z80xx]\r
6758         fetch 8\r
6759 ;@DEC X  (IX)\r
6760 opcode_DD_2D:\r
6761         ldr r0,[z80xx]\r
6762         opDEC8L r0\r
6763         str r0,[z80xx]\r
6764         fetch 8\r
6765 ;@LD X,N  (IX)\r
6766 opcode_DD_2E:\r
6767         ldrb r0,[z80pc],#1\r
6768         strb r0,[z80xx,#2]\r
6769         fetch 11\r
6770 ;@INC (IX+N)\r
6771 opcode_DD_34:\r
6772         ldrsb r0,[z80pc],#1\r
6773         ldr r1,[z80xx]\r
6774         add r0,r0,r1, lsr #16\r
6775         stmfd sp!,{r0}  ;@ save addr\r
6776         readmem8\r
6777         opINC8b\r
6778         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6779         writemem8\r
6780         fetch 23\r
6781 ;@DEC (IX+N)\r
6782 opcode_DD_35:\r
6783         ldrsb r0,[z80pc],#1\r
6784         ldr r1,[z80xx]\r
6785         add r0,r0,r1, lsr #16\r
6786         stmfd sp!,{r0}  ;@ save addr\r
6787         readmem8\r
6788         opDEC8b\r
6789         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6790         writemem8\r
6791         fetch 23\r
6792 ;@LD (IX+N),N\r
6793 opcode_DD_36:\r
6794         ldrsb r2,[z80pc],#1\r
6795         ldrb r0,[z80pc],#1\r
6796         ldr r1,[z80xx]\r
6797         add r1,r2,r1, lsr #16\r
6798         writemem8\r
6799         fetch 19\r
6800 ;@ADD IX,SP\r
6801 opcode_DD_39:\r
6802         ldr r0,[z80xx]\r
6803 .if FAST_Z80SP\r
6804         ldr r2,[cpucontext,#z80sp_base]\r
6805         sub r2,z80sp,r2\r
6806         opADD16s r0 r2 16\r
6807 .else\r
6808         opADD16s r0 z80sp 16\r
6809 .endif\r
6810         str r0,[z80xx]\r
6811         fetch 15\r
6812 ;@LD B,I ( IX )\r
6813 opcode_DD_44:\r
6814         ldrb r0,[z80xx,#3]\r
6815         and z80bc,z80bc,#0xFF<<16\r
6816         orr z80bc,z80bc,r0, lsl #24\r
6817         fetch 8\r
6818 ;@LD B,X ( IX )\r
6819 opcode_DD_45:\r
6820         ldrb r0,[z80xx,#2]\r
6821         and z80bc,z80bc,#0xFF<<16\r
6822         orr z80bc,z80bc,r0, lsl #24\r
6823         fetch 8\r
6824 ;@LD B,(IX,N)\r
6825 opcode_DD_46:\r
6826         ldrsb r0,[z80pc],#1\r
6827         ldr r1,[z80xx]\r
6828         add r0,r0,r1, lsr #16\r
6829         readmem8\r
6830         and z80bc,z80bc,#0xFF<<16\r
6831         orr z80bc,z80bc,r0, lsl #24\r
6832         fetch 19\r
6833 ;@LD C,I  (IX)\r
6834 opcode_DD_4C:\r
6835         ldrb r0,[z80xx,#3]\r
6836         and z80bc,z80bc,#0xFF<<24\r
6837         orr z80bc,z80bc,r0, lsl #16\r
6838         fetch 8\r
6839 ;@LD C,X  (IX)\r
6840 opcode_DD_4D:\r
6841         ldrb r0,[z80xx,#2]\r
6842         and z80bc,z80bc,#0xFF<<24\r
6843         orr z80bc,z80bc,r0, lsl #16\r
6844         fetch 8\r
6845 ;@LD C,(IX,N)\r
6846 opcode_DD_4E:\r
6847         ldrsb r0,[z80pc],#1\r
6848         ldr r1,[z80xx]\r
6849         add r0,r0,r1, lsr #16\r
6850         readmem8\r
6851         and z80bc,z80bc,#0xFF<<24\r
6852         orr z80bc,z80bc,r0, lsl #16\r
6853         fetch 19\r
6854 \r
6855 ;@LD D,I  (IX)\r
6856 opcode_DD_54:\r
6857         ldrb r0,[z80xx,#3]\r
6858         and z80de,z80de,#0xFF<<16\r
6859         orr z80de,z80de,r0, lsl #24\r
6860         fetch 8\r
6861 ;@LD D,X  (IX)\r
6862 opcode_DD_55:\r
6863         ldrb r0,[z80xx,#2]\r
6864         and z80de,z80de,#0xFF<<16\r
6865         orr z80de,z80de,r0, lsl #24\r
6866         fetch 8\r
6867 ;@LD D,(IX,N)\r
6868 opcode_DD_56:\r
6869         ldrsb r0,[z80pc],#1\r
6870         ldr r1,[z80xx]\r
6871         add r0,r0,r1, lsr #16\r
6872         readmem8\r
6873         and z80de,z80de,#0xFF<<16\r
6874         orr z80de,z80de,r0, lsl #24\r
6875         fetch 19\r
6876 ;@LD E,I  (IX)\r
6877 opcode_DD_5C:\r
6878         ldrb r0,[z80xx,#3]\r
6879         and z80de,z80de,#0xFF<<24\r
6880         orr z80de,z80de,r0, lsl #16\r
6881         fetch 8\r
6882 ;@LD E,X  (IX)\r
6883 opcode_DD_5D:\r
6884         ldrb r0,[z80xx,#2]\r
6885         and z80de,z80de,#0xFF<<24\r
6886         orr z80de,z80de,r0, lsl #16\r
6887         fetch 8\r
6888 ;@LD E,(IX,N)\r
6889 opcode_DD_5E:\r
6890         ldrsb r0,[z80pc],#1\r
6891         ldr r1,[z80xx]\r
6892         add r0,r0,r1, lsr #16\r
6893         readmem8\r
6894         and z80de,z80de,#0xFF<<24\r
6895         orr z80de,z80de,r0, lsl #16\r
6896         fetch 19\r
6897 ;@LD I,B  (IX)\r
6898 opcode_DD_60:\r
6899         mov r0,z80bc,lsr#24\r
6900         strb r0,[z80xx,#3]\r
6901         fetch 8\r
6902 ;@LD I,C  (IX)\r
6903 opcode_DD_61:\r
6904         mov r0,z80bc,lsr#16\r
6905         strb r0,[z80xx,#3]\r
6906         fetch 8\r
6907 ;@LD I,D  (IX)\r
6908 opcode_DD_62:\r
6909         mov r0,z80de,lsr#24\r
6910         strb r0,[z80xx,#3]\r
6911         fetch 8\r
6912 ;@LD I,E  (IX)\r
6913 opcode_DD_63:\r
6914         mov r0,z80de,lsr#16\r
6915         strb r0,[z80xx,#3]\r
6916         fetch 8\r
6917 ;@LD I,I  (IX)\r
6918 opcode_DD_64:\r
6919         fetch 8\r
6920 ;@LD I,X  (IX)\r
6921 opcode_DD_65:\r
6922         ldrb r0,[z80xx,#2]\r
6923         strb r0,[z80xx,#3]\r
6924         fetch 8\r
6925 ;@LD H,(IX,N)\r
6926 opcode_DD_66:\r
6927         ldrsb r0,[z80pc],#1\r
6928         ldr r1,[z80xx]\r
6929         add r0,r0,r1, lsr #16\r
6930         readmem8\r
6931         and z80hl,z80hl,#0xFF<<16\r
6932         orr z80hl,z80hl,r0, lsl #24\r
6933         fetch 19\r
6934 ;@LD I,A  (IX)\r
6935 opcode_DD_67:\r
6936         mov r0,z80a,lsr#24\r
6937         strb r0,[z80xx,#3]\r
6938         fetch 8\r
6939 ;@LD X,B  (IX)\r
6940 opcode_DD_68:\r
6941         mov r0,z80bc,lsr#24\r
6942         strb r0,[z80xx,#2]\r
6943         fetch 8\r
6944 ;@LD X,C  (IX)\r
6945 opcode_DD_69:\r
6946         mov r0,z80bc,lsr#16\r
6947         strb r0,[z80xx,#2]\r
6948         fetch 8\r
6949 ;@LD X,D  (IX)\r
6950 opcode_DD_6A:\r
6951         mov r0,z80de,lsr#24\r
6952         strb r0,[z80xx,#2]\r
6953         fetch 8\r
6954 ;@LD X,E  (IX)\r
6955 opcode_DD_6B:\r
6956         mov r0,z80de,lsr#16\r
6957         strb r0,[z80xx,#2]\r
6958         fetch 8\r
6959 ;@LD X,I  (IX)\r
6960 opcode_DD_6C:\r
6961         ldrb r0,[z80xx,#3]\r
6962         strb r0,[z80xx,#2]\r
6963         fetch 8\r
6964 ;@LD X,X  (IX)\r
6965 opcode_DD_6D:\r
6966         fetch 8\r
6967 ;@LD L,(IX,N)\r
6968 opcode_DD_6E:\r
6969         ldrsb r0,[z80pc],#1\r
6970         ldr r1,[z80xx]\r
6971         add r0,r0,r1, lsr #16\r
6972         readmem8\r
6973         and z80hl,z80hl,#0xFF<<24\r
6974         orr z80hl,z80hl,r0, lsl #16\r
6975         fetch 19\r
6976 ;@LD X,A  (IX)\r
6977 opcode_DD_6F:\r
6978         mov r0,z80a,lsr#24\r
6979         strb r0,[z80xx,#2]\r
6980         fetch 8\r
6981 \r
6982 ;@LD (IX,N),B\r
6983 opcode_DD_70:\r
6984         ldrsb r0,[z80pc],#1\r
6985         ldr r1,[z80xx]\r
6986         add r1,r0,r1, lsr #16\r
6987         mov r0,z80bc, lsr #24\r
6988         writemem8\r
6989         fetch 19\r
6990 ;@LD (IX,N),C\r
6991 opcode_DD_71:\r
6992         ldrsb r0,[z80pc],#1\r
6993         ldr r1,[z80xx]\r
6994         add r1,r0,r1, lsr #16\r
6995         mov r0,z80bc, lsr #16\r
6996         and r0,r0,#0xFF\r
6997         writemem8\r
6998         fetch 19\r
6999 ;@LD (IX,N),D\r
7000 opcode_DD_72:\r
7001         ldrsb r0,[z80pc],#1\r
7002         ldr r1,[z80xx]\r
7003         add r1,r0,r1, lsr #16\r
7004         mov r0,z80de, lsr #24\r
7005         writemem8\r
7006         fetch 19\r
7007 ;@LD (IX,N),E\r
7008 opcode_DD_73:\r
7009         ldrsb r0,[z80pc],#1\r
7010         ldr r1,[z80xx]\r
7011         add r1,r0,r1, lsr #16\r
7012         mov r0,z80de, lsr #16\r
7013         and r0,r0,#0xFF\r
7014         writemem8\r
7015         fetch 19\r
7016 ;@LD (IX,N),H\r
7017 opcode_DD_74:\r
7018         ldrsb r0,[z80pc],#1\r
7019         ldr r1,[z80xx]\r
7020         add r1,r0,r1, lsr #16\r
7021         mov r0,z80hl, lsr #24\r
7022         writemem8\r
7023         fetch 19\r
7024 ;@LD (IX,N),L\r
7025 opcode_DD_75:\r
7026         ldrsb r0,[z80pc],#1\r
7027         ldr r1,[z80xx]\r
7028         add r1,r0,r1, lsr #16\r
7029         mov r0,z80hl, lsr #16\r
7030         and r0,r0,#0xFF\r
7031         writemem8\r
7032         fetch 19\r
7033 ;@LD (IX,N),A\r
7034 opcode_DD_77:\r
7035         ldrsb r0,[z80pc],#1\r
7036         ldr r1,[z80xx]\r
7037         add r1,r0,r1, lsr #16\r
7038         mov r0,z80a, lsr #24\r
7039         writemem8\r
7040         fetch 19\r
7041 \r
7042 ;@LD A,I  from (IX)\r
7043 opcode_DD_7C:\r
7044         ldrb r0,[z80xx,#3]\r
7045         mov z80a,r0, lsl #24\r
7046         fetch 8\r
7047 ;@LD A,X  from (IX)\r
7048 opcode_DD_7D:\r
7049         ldrb r0,[z80xx,#2]\r
7050         mov z80a,r0, lsl #24\r
7051         fetch 8\r
7052 ;@LD A,(IX,N)\r
7053 opcode_DD_7E:\r
7054         ldrsb r0,[z80pc],#1\r
7055         ldr r1,[z80xx]\r
7056         add r0,r0,r1, lsr #16\r
7057         readmem8\r
7058         mov z80a,r0, lsl #24\r
7059         fetch 19\r
7060 \r
7061 ;@ADD A,I  ( IX)\r
7062 opcode_DD_84:\r
7063         ldrb r0,[z80xx,#3]\r
7064         opADDb\r
7065         fetch 8\r
7066 ;@ADD A,X  ( IX)\r
7067 opcode_DD_85:\r
7068         ldrb r0,[z80xx,#2]\r
7069         opADDb\r
7070         fetch 8\r
7071 ;@ADD A,(IX+N)\r
7072 opcode_DD_86:\r
7073         ldrsb r0,[z80pc],#1\r
7074         ldr r1,[z80xx]\r
7075         add r0,r0,r1, lsr #16\r
7076         readmem8\r
7077         opADDb\r
7078         fetch 19\r
7079 \r
7080 ;@ADC A,I  (IX)\r
7081 opcode_DD_8C:\r
7082         ldrb r0,[z80xx,#3]\r
7083         opADCb\r
7084         fetch 8\r
7085 ;@ADC A,X  (IX)\r
7086 opcode_DD_8D:\r
7087         ldrb r0,[z80xx,#2]\r
7088         opADCb\r
7089         fetch 8\r
7090 ;@ADC A,(IX+N)\r
7091 opcode_DD_8E:\r
7092         ldrsb r0,[z80pc],#1\r
7093         ldr r1,[z80xx]\r
7094         add r0,r0,r1, lsr #16\r
7095         readmem8\r
7096         opADCb\r
7097         fetch 19\r
7098 \r
7099 ;@SUB A,I  (IX)\r
7100 opcode_DD_94:\r
7101         ldrb r0,[z80xx,#3]\r
7102         opSUBb\r
7103         fetch 8\r
7104 ;@SUB A,X  (IX)\r
7105 opcode_DD_95:\r
7106         ldrb r0,[z80xx,#2]\r
7107         opSUBb\r
7108         fetch 8\r
7109 ;@SUB A,(IX+N)\r
7110 opcode_DD_96:\r
7111         ldrsb r0,[z80pc],#1\r
7112         ldr r1,[z80xx]\r
7113         add r0,r0,r1, lsr #16\r
7114         readmem8\r
7115         opSUBb\r
7116         fetch 19\r
7117 \r
7118 ;@SBC A,I  (IX)\r
7119 opcode_DD_9C:\r
7120         ldrb r0,[z80xx,#3]\r
7121         opSBCb\r
7122         fetch 8\r
7123 ;@SBC A,X  (IX)\r
7124 opcode_DD_9D:\r
7125         ldrb r0,[z80xx,#2]\r
7126         opSBCb\r
7127         fetch 8\r
7128 ;@SBC A,(IX+N)\r
7129 opcode_DD_9E:\r
7130         ldrsb r0,[z80pc],#1\r
7131         ldr r1,[z80xx]\r
7132         add r0,r0,r1, lsr #16\r
7133         readmem8\r
7134         opSBCb\r
7135         fetch 19\r
7136 \r
7137 ;@AND I  (IX)\r
7138 opcode_DD_A4:\r
7139         ldrb r0,[z80xx,#3]\r
7140         opANDb\r
7141         fetch 8\r
7142 ;@AND X  (IX)\r
7143 opcode_DD_A5:\r
7144         ldrb r0,[z80xx,#2]\r
7145         opANDb\r
7146         fetch 8\r
7147 ;@AND (IX+N)\r
7148 opcode_DD_A6:\r
7149         ldrsb r0,[z80pc],#1\r
7150         ldr r1,[z80xx]\r
7151         add r0,r0,r1, lsr #16\r
7152         readmem8\r
7153         opANDb\r
7154         fetch 19\r
7155 \r
7156 ;@XOR I  (IX)\r
7157 opcode_DD_AC:\r
7158         ldrb r0,[z80xx,#3]\r
7159         opXORb\r
7160         fetch 8\r
7161 ;@XOR X  (IX)\r
7162 opcode_DD_AD:\r
7163         ldrb r0,[z80xx,#2]\r
7164         opXORb\r
7165         fetch 8\r
7166 ;@XOR (IX+N)\r
7167 opcode_DD_AE:\r
7168         ldrsb r0,[z80pc],#1\r
7169         ldr r1,[z80xx]\r
7170         add r0,r0,r1, lsr #16\r
7171         readmem8\r
7172         opXORb\r
7173         fetch 19\r
7174 \r
7175 ;@OR I  (IX)\r
7176 opcode_DD_B4:\r
7177         ldrb r0,[z80xx,#3]\r
7178         opORb\r
7179         fetch 8\r
7180 ;@OR X  (IX)\r
7181 opcode_DD_B5:\r
7182         ldrb r0,[z80xx,#2]\r
7183         opORb\r
7184         fetch 8\r
7185 ;@OR (IX+N)\r
7186 opcode_DD_B6:\r
7187         ldrsb r0,[z80pc],#1\r
7188         ldr r1,[z80xx]\r
7189         add r0,r0,r1, lsr #16\r
7190         readmem8\r
7191         opORb\r
7192         fetch 19\r
7193 \r
7194 ;@CP I  (IX)\r
7195 opcode_DD_BC:\r
7196         ldrb r0,[z80xx,#3]\r
7197         opCPb\r
7198         fetch 8\r
7199 ;@CP X  (IX)\r
7200 opcode_DD_BD:\r
7201         ldrb r0,[z80xx,#2]\r
7202         opCPb\r
7203         fetch 8\r
7204 ;@CP (IX+N)\r
7205 opcode_DD_BE:\r
7206         ldrsb r0,[z80pc],#1\r
7207         ldr r1,[z80xx]\r
7208         add r0,r0,r1, lsr #16\r
7209         readmem8\r
7210         opCPb\r
7211         fetch 19\r
7212 \r
7213 \r
7214 opcodes_DD_CB_LOCAL: .word opcodes_DD_CB\r
7215 opcode_DD_CB:\r
7216 ;@Looks up the opcode on the opcodes_DD_CB table and then \r
7217 ;@moves the PC to the location of the subroutine\r
7218         ldrsb r0,[z80pc],#1\r
7219         ldr r1,[z80xx]\r
7220         add r0,r0,r1, lsr #16\r
7221 \r
7222         ldrb r1,[z80pc],#1\r
7223         ldr pc,[pc,r1, lsl #2]\r
7224                 .word 0x00\r
7225 opcodes_DD_CB:\r
7226                 .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
7227                 .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
7228                 .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
7229                 .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
7230                 .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
7231                 .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
7232                 .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
7233                 .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
7234                 .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
7235                 .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
7236                 .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
7237                 .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
7238                 .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
7239                 .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
7240                 .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
7241                 .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
7242                 .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
7243                 .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
7244                 .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
7245                 .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
7246                 .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
7247                 .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
7248                 .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
7249                 .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
7250                 .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
7251                 .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
7252                 .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
7253                 .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
7254                 .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
7255                 .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
7256                 .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
7257                 .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
7258 \r
7259 ;@RLC (IX+N) \r
7260 opcode_DD_CB_06:\r
7261         stmfd sp!,{r0}          ;@ save addr\r
7262         readmem8\r
7263         opRLCb\r
7264         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7265         writemem8\r
7266         fetch 23\r
7267 ;@RRC (IX+N) \r
7268 opcode_DD_CB_0E:\r
7269         stmfd sp!,{r0}          ;@ save addr\r
7270         readmem8\r
7271         opRRCb\r
7272         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7273         writemem8\r
7274         fetch 23\r
7275 ;@RL (IX+N) \r
7276 opcode_DD_CB_16:\r
7277         stmfd sp!,{r0}          ;@ save addr\r
7278         readmem8\r
7279         opRLb\r
7280         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7281         writemem8\r
7282         fetch 23\r
7283 ;@RR (IX+N) \r
7284 opcode_DD_CB_1E:\r
7285         stmfd sp!,{r0}          ;@ save addr \r
7286         readmem8\r
7287         opRRb\r
7288         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7289         writemem8\r
7290         fetch 23\r
7291 \r
7292 ;@SLA (IX+N) \r
7293 opcode_DD_CB_26:\r
7294         stmfd sp!,{r0}          ;@ save addr \r
7295         readmem8\r
7296         opSLAb\r
7297         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7298         writemem8\r
7299         fetch 23\r
7300 ;@SRA (IX+N) \r
7301 opcode_DD_CB_2E:\r
7302         stmfd sp!,{r0}          ;@ save addr \r
7303         readmem8\r
7304         opSRAb\r
7305         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7306         writemem8\r
7307         fetch 23\r
7308 ;@SLL (IX+N) \r
7309 opcode_DD_CB_36:\r
7310         stmfd sp!,{r0}          ;@ save addr \r
7311         readmem8\r
7312         opSLLb\r
7313         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7314         writemem8\r
7315         fetch 23\r
7316 ;@SRL (IX+N)\r
7317 opcode_DD_CB_3E:\r
7318         stmfd sp!,{r0}          ;@ save addr \r
7319         readmem8\r
7320         opSRLb\r
7321         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7322         writemem8\r
7323         fetch 23\r
7324 \r
7325 ;@BIT 0,(IX+N) \r
7326 opcode_DD_CB_46:\r
7327         readmem8\r
7328         opBITb 0\r
7329         fetch 20\r
7330 ;@BIT 1,(IX+N) \r
7331 opcode_DD_CB_4E:\r
7332         readmem8\r
7333         opBITb 1\r
7334         fetch 20\r
7335 ;@BIT 2,(IX+N) \r
7336 opcode_DD_CB_56:\r
7337         readmem8\r
7338         opBITb 2\r
7339         fetch 20\r
7340 ;@BIT 3,(IX+N) \r
7341 opcode_DD_CB_5E:\r
7342         readmem8\r
7343         opBITb 3\r
7344         fetch 20\r
7345 ;@BIT 4,(IX+N) \r
7346 opcode_DD_CB_66:\r
7347         readmem8\r
7348         opBITb 4\r
7349         fetch 20\r
7350 ;@BIT 5,(IX+N) \r
7351 opcode_DD_CB_6E:\r
7352         readmem8\r
7353         opBITb 5\r
7354         fetch 20\r
7355 ;@BIT 6,(IX+N) \r
7356 opcode_DD_CB_76:\r
7357         readmem8\r
7358         opBITb 6\r
7359         fetch 20\r
7360 ;@BIT 7,(IX+N) \r
7361 opcode_DD_CB_7E:\r
7362         readmem8\r
7363         opBIT7b\r
7364         fetch 20\r
7365 ;@RES 0,(IX+N) \r
7366 opcode_DD_CB_86:\r
7367         opRESmem 0\r
7368 ;@RES 1,(IX+N) \r
7369 opcode_DD_CB_8E:\r
7370         opRESmem 1\r
7371 ;@RES 2,(IX+N) \r
7372 opcode_DD_CB_96:\r
7373         opRESmem 2\r
7374 ;@RES 3,(IX+N) \r
7375 opcode_DD_CB_9E:\r
7376         opRESmem 3\r
7377 ;@RES 4,(IX+N) \r
7378 opcode_DD_CB_A6:\r
7379         opRESmem 4\r
7380 ;@RES 5,(IX+N) \r
7381 opcode_DD_CB_AE:\r
7382         opRESmem 5\r
7383 ;@RES 6,(IX+N) \r
7384 opcode_DD_CB_B6:\r
7385         opRESmem 6\r
7386 ;@RES 7,(IX+N) \r
7387 opcode_DD_CB_BE:\r
7388         opRESmem 7\r
7389 \r
7390 ;@SET 0,(IX+N) \r
7391 opcode_DD_CB_C6:\r
7392         opSETmem 0\r
7393 ;@SET 1,(IX+N) \r
7394 opcode_DD_CB_CE:\r
7395         opSETmem 1\r
7396 ;@SET 2,(IX+N) \r
7397 opcode_DD_CB_D6:\r
7398         opSETmem 2\r
7399 ;@SET 3,(IX+N) \r
7400 opcode_DD_CB_DE:\r
7401         opSETmem 3\r
7402 ;@SET 4,(IX+N) \r
7403 opcode_DD_CB_E6:\r
7404         opSETmem 4\r
7405 ;@SET 5,(IX+N) \r
7406 opcode_DD_CB_EE:\r
7407         opSETmem 5\r
7408 ;@SET 6,(IX+N) \r
7409 opcode_DD_CB_F6:\r
7410         opSETmem 6\r
7411 ;@SET 7,(IX+N) \r
7412 opcode_DD_CB_FE:\r
7413         opSETmem 7\r
7414 \r
7415 \r
7416 \r
7417 ;@POP IX\r
7418 opcode_DD_E1:\r
7419 .if FAST_Z80SP\r
7420         opPOP\r
7421 .else\r
7422         mov r0,z80sp\r
7423         stmfd sp!,{z80xx}\r
7424         readmem16\r
7425         ldmfd sp!,{z80xx}\r
7426         add z80sp,z80sp,#2\r
7427 .endif\r
7428         strh r0,[z80xx,#2]\r
7429         fetch 14\r
7430 ;@EX (SP),IX\r
7431 opcode_DD_E3:\r
7432 .if FAST_Z80SP\r
7433         ldrb r0,[z80sp]\r
7434         ldrb r1,[z80sp,#1]\r
7435         orr r2,r0,r1, lsl #8\r
7436         ldrh r1,[z80xx,#2]\r
7437         mov r0,r1, lsr #8\r
7438         strb r0,[z80sp,#1]\r
7439         strb r1,[z80sp]\r
7440         strh r2,[z80xx,#2]\r
7441 .else\r
7442         mov r0,z80sp\r
7443         stmfd sp!,{z80xx}\r
7444         readmem16\r
7445         ldmfd sp!,{z80xx}\r
7446         mov r2,r0\r
7447         ldrh r0,[z80xx,#2]\r
7448         strh r2,[z80xx,#2]\r
7449         mov r1,z80sp\r
7450         writemem16\r
7451 .endif\r
7452         fetch 23\r
7453 ;@PUSH IX\r
7454 opcode_DD_E5:\r
7455         ldr r2,[z80xx]\r
7456         opPUSHreg r2\r
7457         fetch 15\r
7458 ;@JP (IX)\r
7459 opcode_DD_E9:\r
7460         ldrh r0,[z80xx,#2]\r
7461         rebasepc\r
7462         fetch 8\r
7463 ;@LD SP,IX\r
7464 opcode_DD_F9:\r
7465 .if FAST_Z80SP\r
7466         ldrh r0,[z80xx,#2]\r
7467         rebasesp\r
7468         mov z80sp,r0\r
7469 .else\r
7470         ldrh z80sp,[z80xx,#2]\r
7471 .endif\r
7472         fetch 10\r
7473 \r
7474 ;@##################################\r
7475 ;@##################################\r
7476 ;@###  opcodes ED  #########################\r
7477 ;@##################################\r
7478 ;@##################################\r
7479 \r
7480 opcode_ED_NF:\r
7481         fetch 8\r
7482 ;@      ldrb r0,[z80pc],#1\r
7483 ;@      ldr pc,[opcodes,r0, lsl #2]\r
7484 ;@      mov r0,#0xED00\r
7485 ;@      orr r0,r0,r1\r
7486 ;@      b end_loop\r
7487 \r
7488 ;@IN B,(C)\r
7489 opcode_ED_40:\r
7490         opIN_C\r
7491         and z80bc,z80bc,#0xFF<<16\r
7492         orr z80bc,z80bc,r0, lsl #24\r
7493         sub r1,opcodes,#0x100\r
7494         ldrb r0,[r1,r0]\r
7495         and z80f,z80f,#1<<CFlag\r
7496         orr z80f,z80f,r0\r
7497         fetch 12\r
7498 ;@OUT (C),B\r
7499 opcode_ED_41:\r
7500         mov r1,z80bc, lsr #24\r
7501         opOUT_C\r
7502         fetch 12\r
7503 \r
7504 ;@SBC HL,BC\r
7505 opcode_ED_42:\r
7506         opSBC16 z80bc\r
7507 \r
7508 ;@LD (NN),BC\r
7509 opcode_ED_43:\r
7510         ldrb r0,[z80pc],#1\r
7511         ldrb r1,[z80pc],#1\r
7512         orr r1,r0,r1, lsl #8\r
7513         mov r0,z80bc, lsr #16\r
7514         writemem16\r
7515         fetch 20\r
7516 ;@NEG\r
7517 opcode_ED_44:\r
7518         rsbs z80a,z80a,#0\r
7519         mrs z80f,cpsr\r
7520         mov z80f,z80f,lsr#28                                    ;@S,Z,V&C\r
7521         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@invert C and set n.\r
7522         tst z80a,#0x0F000000                                    ;@H, correct\r
7523         orrne z80f,z80f,#1<<HFlag\r
7524         fetch 8\r
7525  \r
7526 ;@RETN, moved to ED_4D\r
7527 ;@opcode_ED_45:\r
7528 \r
7529 ;@IM 0\r
7530 opcode_ED_46:\r
7531         strb z80a,[cpucontext,#z80im]\r
7532         fetch 8\r
7533 ;@LD I,A\r
7534 opcode_ED_47:\r
7535         str z80a,[cpucontext,#z80i]\r
7536         fetch 9\r
7537 ;@IN C,(C)\r
7538 opcode_ED_48:\r
7539         opIN_C\r
7540         and z80bc,z80bc,#0xFF<<24\r
7541         orr z80bc,z80bc,r0, lsl #16\r
7542         sub r1,opcodes,#0x100\r
7543         ldrb r0,[r1,r0]\r
7544         and z80f,z80f,#1<<CFlag\r
7545         orr z80f,z80f,r0\r
7546         fetch 12\r
7547 ;@OUT (C),C\r
7548 opcode_ED_49:\r
7549         mov r0,z80bc, lsr #16\r
7550         and r1,r0,#0xFF\r
7551         opOUT\r
7552         fetch 12\r
7553 ;@ADC HL,BC\r
7554 opcode_ED_4A:\r
7555         opADC16 z80bc\r
7556 ;@LD BC,(NN)\r
7557 opcode_ED_4B:\r
7558         ldrb r0,[z80pc],#1\r
7559         ldrb r1,[z80pc],#1\r
7560         orr r0,r0,r1, lsl #8\r
7561         readmem16\r
7562         mov z80bc,r0, lsl #16\r
7563         fetch 20\r
7564 \r
7565 ;@RETN\r
7566 opcode_ED_45:\r
7567 ;@RETI\r
7568 opcode_ED_4D:\r
7569         ldrb r0,[cpucontext,#z80if]\r
7570         tst r0,#Z80_IF2\r
7571         orrne r0,r0,#Z80_IF1\r
7572         biceq r0,r0,#Z80_IF1\r
7573         strb r0,[cpucontext,#z80if]\r
7574     opPOP\r
7575         rebasepc\r
7576         fetch 14\r
7577 \r
7578 ;@LD R,A\r
7579 opcode_ED_4F:\r
7580         mov r0,z80a,lsr#24\r
7581         strb r0,[cpucontext,#z80r]\r
7582         fetch 9\r
7583 \r
7584 ;@IN D,(C)\r
7585 opcode_ED_50:\r
7586         opIN_C\r
7587         and z80de,z80de,#0xFF<<16\r
7588         orr z80de,z80de,r0, lsl #24\r
7589         sub r1,opcodes,#0x100\r
7590         ldrb r0,[r1,r0]\r
7591         and z80f,z80f,#1<<CFlag\r
7592         orr z80f,z80f,r0\r
7593         fetch 12\r
7594 ;@OUT (C),D\r
7595 opcode_ED_51:\r
7596         mov r1,z80de, lsr #24\r
7597         opOUT_C\r
7598         fetch 12\r
7599 ;@SBC HL,DE\r
7600 opcode_ED_52:\r
7601         opSBC16 z80de\r
7602 ;@LD (NN),DE\r
7603 opcode_ED_53:\r
7604         ldrb r0,[z80pc],#1\r
7605         ldrb r1,[z80pc],#1\r
7606         orr r1,r0,r1, lsl #8\r
7607         mov r0,z80de, lsr #16\r
7608         writemem16\r
7609         fetch 20\r
7610 ;@IM 1\r
7611 opcode_ED_56:\r
7612         mov r0,#1\r
7613         strb r0,[cpucontext,#z80im]\r
7614         fetch 8\r
7615 ;@LD A,I\r
7616 opcode_ED_57:\r
7617         ldr z80a,[cpucontext,#z80i]\r
7618         tst z80a,#0xFF000000\r
7619         and z80f,z80f,#(1<<CFlag)\r
7620         orreq z80f,z80f,#(1<<ZFlag)\r
7621         orrmi z80f,z80f,#(1<<SFlag)\r
7622         ldrb r0,[cpucontext,#z80if]\r
7623         tst r0,#Z80_IF2\r
7624         orrne z80f,z80f,#(1<<VFlag)\r
7625         fetch 9\r
7626 ;@IN E,(C)\r
7627 opcode_ED_58:\r
7628         opIN_C\r
7629         and z80de,z80de,#0xFF<<24\r
7630         orr z80de,z80de,r0, lsl #16\r
7631         sub r1,opcodes,#0x100\r
7632         ldrb r0,[r1,r0]\r
7633         and z80f,z80f,#1<<CFlag\r
7634         orr z80f,z80f,r0\r
7635         fetch 12\r
7636 ;@OUT (C),E\r
7637 opcode_ED_59:\r
7638         mov r1,z80de, lsr #16\r
7639         and r1,r1,#0xFF\r
7640         opOUT_C\r
7641         fetch 12\r
7642 ;@ADC HL,DE\r
7643 opcode_ED_5A:\r
7644         opADC16 z80de\r
7645 ;@LD DE,(NN)\r
7646 opcode_ED_5B:\r
7647         ldrb r0,[z80pc],#1\r
7648         ldrb r1,[z80pc],#1\r
7649         orr r0,r0,r1, lsl #8\r
7650         readmem16\r
7651         mov z80de,r0, lsl #16\r
7652         fetch 20\r
7653 ;@IM 2\r
7654 opcode_ED_5E:\r
7655         mov r0,#2\r
7656         strb r0,[cpucontext,#z80im]\r
7657         fetch 8\r
7658 ;@LD A,R\r
7659 opcode_ED_5F:\r
7660         ldrb r0,[cpucontext,#z80r]\r
7661         and r0,r0,#0x80\r
7662         rsb r1,z80_icount,#0\r
7663         and r1,r1,#0x7F\r
7664         orr r0,r0,r1\r
7665         movs z80a,r0, lsl #24\r
7666         and z80f,z80f,#1<<CFlag\r
7667         orrmi z80f,z80f,#(1<<SFlag)\r
7668         orreq z80f,z80f,#(1<<ZFlag)\r
7669         ldrb r0,[cpucontext,#z80if]\r
7670         tst r0,#Z80_IF2\r
7671         orrne z80f,z80f,#(1<<VFlag)\r
7672         fetch 9\r
7673 ;@IN H,(C)\r
7674 opcode_ED_60:\r
7675         opIN_C\r
7676         and z80hl,z80hl,#0xFF<<16\r
7677         orr z80hl,z80hl,r0, lsl #24\r
7678         sub r1,opcodes,#0x100\r
7679         ldrb r0,[r1,r0]\r
7680         and z80f,z80f,#1<<CFlag\r
7681         orr z80f,z80f,r0\r
7682         fetch 12\r
7683 ;@OUT (C),H\r
7684 opcode_ED_61:\r
7685         mov r1,z80hl, lsr #24\r
7686         opOUT_C\r
7687         fetch 12\r
7688 ;@SBC HL,HL\r
7689 opcode_ED_62:\r
7690         opSBC16HL\r
7691 ;@RRD\r
7692 opcode_ED_67:\r
7693         readmem8HL\r
7694         mov r1,r0,ror#4\r
7695         orr r0,r1,z80a,lsr#20\r
7696         bic z80a,z80a,#0x0F000000\r
7697         orr z80a,z80a,r1,lsr#4\r
7698         writemem8HL\r
7699         sub r1,opcodes,#0x100\r
7700         ldrb r0,[r1,z80a, lsr #24]\r
7701         and z80f,z80f,#1<<CFlag\r
7702         orr z80f,z80f,r0\r
7703         fetch 18\r
7704 ;@IN L,(C)\r
7705 opcode_ED_68:\r
7706         opIN_C\r
7707         and z80hl,z80hl,#0xFF<<24\r
7708         orr z80hl,z80hl,r0, lsl #16\r
7709         and z80f,z80f,#1<<CFlag\r
7710         sub r1,opcodes,#0x100\r
7711         ldrb r0,[r1,r0]\r
7712         orr z80f,z80f,r0\r
7713         fetch 12\r
7714 ;@OUT (C),L\r
7715 opcode_ED_69:\r
7716         mov r1,z80hl, lsr #16\r
7717         and r1,r1,#0xFF\r
7718         opOUT_C\r
7719         fetch 12\r
7720 ;@ADC HL,HL\r
7721 opcode_ED_6A:\r
7722         opADC16HL\r
7723 ;@RLD\r
7724 opcode_ED_6F:\r
7725         readmem8HL\r
7726         orr r0,r0,z80a,lsl#4\r
7727         mov r0,r0,ror#28\r
7728         and z80a,z80a,#0xF0000000\r
7729         orr z80a,z80a,r0,lsl#16\r
7730         and z80a,z80a,#0xFF000000\r
7731         writemem8HL\r
7732         sub r1,opcodes,#0x100\r
7733         ldrb r0,[r1,z80a, lsr #24]\r
7734         and z80f,z80f,#1<<CFlag\r
7735         orr z80f,z80f,r0\r
7736         fetch 18\r
7737 ;@IN F,(C)\r
7738 opcode_ED_70:\r
7739         opIN_C\r
7740         and z80f,z80f,#1<<CFlag\r
7741         sub r1,opcodes,#0x100\r
7742         ldrb r0,[r1,r0]\r
7743         orr z80f,z80f,r0\r
7744         fetch 12\r
7745 ;@OUT (C),0\r
7746 opcode_ED_71:\r
7747         mov r1,#0\r
7748         opOUT_C\r
7749         fetch 12\r
7750 \r
7751 ;@SBC HL,SP\r
7752 opcode_ED_72:\r
7753 .if FAST_Z80SP\r
7754         ldr r0,[cpucontext,#z80sp_base]\r
7755         sub r0,z80sp,r0\r
7756         mov r0, r0, lsl #16\r
7757 .else\r
7758         mov r0,z80sp,lsl#16\r
7759 .endif\r
7760         opSBC16 r0\r
7761 ;@LD (NN),SP\r
7762 opcode_ED_73:\r
7763         ldrb r0,[z80pc],#1\r
7764         ldrb r1,[z80pc],#1\r
7765         orr r1,r0,r1, lsl #8\r
7766 .if FAST_Z80SP\r
7767         ldr r0,[cpucontext,#z80sp_base]\r
7768         sub r0,z80sp,r0\r
7769 .else\r
7770         mov r0,z80sp\r
7771 .endif\r
7772         writemem16\r
7773         fetch 16\r
7774 ;@IN A,(C)\r
7775 opcode_ED_78:\r
7776         opIN_C\r
7777         mov z80a,r0, lsl #24\r
7778         and z80f,z80f,#1<<CFlag\r
7779         sub r1,opcodes,#0x100\r
7780         ldrb r0,[r1,r0]\r
7781         orr z80f,z80f,r0\r
7782         fetch 12\r
7783 ;@OUT (C),A\r
7784 opcode_ED_79:\r
7785         mov r1,z80a, lsr #24\r
7786         opOUT_C\r
7787         fetch 12\r
7788 ;@ADC HL,SP\r
7789 opcode_ED_7A:\r
7790 .if FAST_Z80SP\r
7791         ldr r0,[cpucontext,#z80sp_base]\r
7792         sub r0,z80sp,r0\r
7793         mov r0, r0, lsl #16\r
7794 .else\r
7795         mov r0,z80sp,lsl#16\r
7796 .endif\r
7797         opADC16 r0\r
7798 ;@LD SP,(NN)\r
7799 opcode_ED_7B:\r
7800         ldrb r0,[z80pc],#1\r
7801         ldrb r1,[z80pc],#1\r
7802         orr r0,r0,r1, lsl #8\r
7803         readmem16\r
7804 .if FAST_Z80SP\r
7805         rebasesp\r
7806 .endif\r
7807         mov z80sp,r0\r
7808         fetch 20\r
7809 ;@LDI\r
7810 opcode_ED_A0:\r
7811         copymem8HL_DE\r
7812         add z80hl,z80hl,#1<<16\r
7813         add z80de,z80de,#1<<16\r
7814         subs z80bc,z80bc,#1<<16\r
7815         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7816         orrne z80f,z80f,#1<<VFlag\r
7817         fetch 16\r
7818 ;@CPI\r
7819 opcode_ED_A1:\r
7820         readmem8HL\r
7821         add z80hl,z80hl,#0x00010000\r
7822         mov r1,z80a,lsl#4\r
7823         cmp z80a,r0,lsl#24\r
7824         and z80f,z80f,#1<<CFlag\r
7825         orr z80f,z80f,#1<<NFlag\r
7826         orrmi z80f,z80f,#1<<SFlag\r
7827         orreq z80f,z80f,#1<<ZFlag\r
7828         cmp r1,r0,lsl#28\r
7829         orrcc z80f,z80f,#1<<HFlag\r
7830         subs z80bc,z80bc,#0x00010000\r
7831         orrne z80f,z80f,#1<<VFlag\r
7832         fetch 16\r
7833 ;@INI\r
7834 opcode_ED_A2:\r
7835         opIN_C\r
7836         and z80f,r0,#0x80\r
7837         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7838 ;@      mov r1,z80bc,lsl#8\r
7839 ;@      add r1,r1,#0x01000000\r
7840 ;@      adds r1,r1,r0,lsl#24\r
7841 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7842         writemem8HL\r
7843         add z80hl,z80hl,#1<<16\r
7844         sub z80bc,z80bc,#1<<24\r
7845         tst z80bc,#0xFF<<24\r
7846         orrmi z80f,z80f,#1<<SFlag\r
7847         orreq z80f,z80f,#1<<ZFlag\r
7848         fetch 16\r
7849 \r
7850 ;@OUTI\r
7851 opcode_ED_A3:\r
7852         readmem8HL\r
7853         add z80hl,z80hl,#1<<16\r
7854         and z80f,r0,#0x80\r
7855         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7856         mov r1,z80hl,lsl#8\r
7857         adds r1,r1,r0,lsl#24\r
7858         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL)+L > 0xFF\r
7859         sub z80bc,z80bc,#1<<24\r
7860         tst z80bc,#0xFF<<24\r
7861         orrmi z80f,z80f,#1<<SFlag\r
7862         orreq z80f,z80f,#1<<ZFlag\r
7863         mov r1,r0\r
7864         opOUT_C\r
7865         fetch 16\r
7866 \r
7867 ;@LDD\r
7868 opcode_ED_A8:\r
7869         copymem8HL_DE\r
7870         sub z80hl,z80hl,#1<<16\r
7871         sub z80de,z80de,#1<<16\r
7872         subs z80bc,z80bc,#1<<16\r
7873         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7874         orrne z80f,z80f,#1<<VFlag\r
7875         fetch 16\r
7876 \r
7877 ;@CPD\r
7878 opcode_ED_A9:\r
7879         readmem8HL\r
7880         sub z80hl,z80hl,#1<<16\r
7881         mov r1,z80a,lsl#4\r
7882         cmp z80a,r0,lsl#24\r
7883         and z80f,z80f,#1<<CFlag\r
7884         orr z80f,z80f,#1<<NFlag\r
7885         orrmi z80f,z80f,#1<<SFlag\r
7886         orreq z80f,z80f,#1<<ZFlag\r
7887         cmp r1,r0,lsl#28\r
7888         orrcc z80f,z80f,#1<<HFlag\r
7889         subs z80bc,z80bc,#0x00010000\r
7890         orrne z80f,z80f,#1<<VFlag\r
7891         fetch 16\r
7892 \r
7893 ;@IND\r
7894 opcode_ED_AA:\r
7895         opIN_C\r
7896         and z80f,r0,#0x80\r
7897         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7898 ;@      mov r1,z80bc,lsl#8\r
7899 ;@      sub r1,r1,#0x01000000\r
7900 ;@      adds r1,r1,r0,lsl#24\r
7901 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
7902         writemem8HL\r
7903         sub z80hl,z80hl,#1<<16\r
7904         sub z80bc,z80bc,#1<<24\r
7905         tst z80bc,#0xFF<<24\r
7906         orrmi z80f,z80f,#1<<SFlag\r
7907         orreq z80f,z80f,#1<<ZFlag\r
7908         fetch 16\r
7909 \r
7910 ;@OUTD\r
7911 opcode_ED_AB:\r
7912         readmem8HL\r
7913         sub z80hl,z80hl,#1<<16\r
7914         and z80f,r0,#0x80\r
7915         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7916         mov r1,z80hl,lsl#8\r
7917         adds r1,r1,r0,lsl#24\r
7918         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
7919         sub z80bc,z80bc,#1<<24\r
7920         tst z80bc,#0xFF<<24\r
7921         orrmi z80f,z80f,#1<<SFlag\r
7922         orreq z80f,z80f,#1<<ZFlag\r
7923         mov r1,r0\r
7924         opOUT_C\r
7925         fetch 16\r
7926 ;@LDIR\r
7927 opcode_ED_B0:\r
7928         copymem8HL_DE\r
7929         add z80hl,z80hl,#1<<16\r
7930         add z80de,z80de,#1<<16\r
7931         subs z80bc,z80bc,#1<<16\r
7932         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7933         orrne z80f,z80f,#1<<VFlag\r
7934         subne z80pc,z80pc,#2\r
7935         subne z80_icount,z80_icount,#5\r
7936         fetch 16\r
7937 \r
7938 ;@CPIR\r
7939 opcode_ED_B1:\r
7940         readmem8HL\r
7941         add z80hl,z80hl,#1<<16    \r
7942         mov r1,z80a,lsl#4\r
7943         cmp z80a,r0,lsl#24\r
7944         and z80f,z80f,#1<<CFlag\r
7945         orr z80f,z80f,#1<<NFlag\r
7946         orrmi z80f,z80f,#1<<SFlag\r
7947         orreq z80f,z80f,#1<<ZFlag\r
7948         cmp r1,r0,lsl#28\r
7949         orrcc z80f,z80f,#1<<HFlag\r
7950         subs z80bc,z80bc,#1<<16\r
7951         bne opcode_ED_B1_decpc\r
7952         fetch 16\r
7953 opcode_ED_B1_decpc:\r
7954         orr z80f,z80f,#1<<VFlag\r
7955         tst z80f,#1<<ZFlag\r
7956         subeq z80pc,z80pc,#2\r
7957         subeq z80_icount,z80_icount,#5\r
7958         fetch 16\r
7959 ;@INIR\r
7960 opcode_ED_B2:\r
7961         opIN_C\r
7962         and z80f,r0,#0x80\r
7963         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7964 ;@      mov r1,z80bc,lsl#8\r
7965 ;@      add r1,r1,#0x01000000\r
7966 ;@      adds r1,r1,r0,lsl#24\r
7967 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7968         writemem8HL\r
7969         add z80hl,z80hl,#1<<16\r
7970         sub z80bc,z80bc,#1<<24\r
7971         tst z80bc,#0xFF<<24\r
7972         orrmi z80f,z80f,#1<<SFlag\r
7973         orreq z80f,z80f,#1<<ZFlag\r
7974         subne z80pc,z80pc,#2\r
7975         subne z80_icount,z80_icount,#5\r
7976         fetch 16\r
7977 ;@OTIR\r
7978 opcode_ED_B3:\r
7979         readmem8HL\r
7980         add z80hl,z80hl,#1<<16\r
7981         and z80f,r0,#0x80\r
7982         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7983         mov r1,z80hl,lsl#8\r
7984         adds r1,r1,r0,lsl#24\r
7985         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
7986         sub z80bc,z80bc,#1<<24\r
7987         tst z80bc,#0xFF<<24\r
7988         orrmi z80f,z80f,#1<<SFlag\r
7989         orreq z80f,z80f,#1<<ZFlag\r
7990         subne z80pc,z80pc,#2\r
7991         subne z80_icount,z80_icount,#5\r
7992         mov r1,r0\r
7993         opOUT_C\r
7994         fetch 16\r
7995 ;@LDDR\r
7996 opcode_ED_B8:\r
7997         copymem8HL_DE\r
7998         sub z80hl,z80hl,#1<<16\r
7999         sub z80de,z80de,#1<<16\r
8000         subs z80bc,z80bc,#1<<16\r
8001         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
8002         orrne z80f,z80f,#1<<VFlag\r
8003         subne z80pc,z80pc,#2\r
8004         subne z80_icount,z80_icount,#5\r
8005         fetch 16\r
8006 \r
8007 ;@CPDR\r
8008 opcode_ED_B9:\r
8009         readmem8HL\r
8010         sub z80hl,z80hl,#1<<16\r
8011         mov r1,z80a,lsl#4\r
8012         cmp z80a,r0,lsl#24\r
8013         and z80f,z80f,#1<<CFlag\r
8014         orr z80f,z80f,#1<<NFlag\r
8015         orrmi z80f,z80f,#1<<SFlag\r
8016         orreq z80f,z80f,#1<<ZFlag\r
8017         cmp r1,r0,lsl#28\r
8018         orrcc z80f,z80f,#1<<HFlag\r
8019         subs z80bc,z80bc,#1<<16\r
8020         bne opcode_ED_B9_decpc\r
8021         fetch 16\r
8022 opcode_ED_B9_decpc:\r
8023         orr z80f,z80f,#1<<VFlag\r
8024         tst z80f,#1<<ZFlag\r
8025         subeq z80pc,z80pc,#2\r
8026         subeq z80_icount,z80_icount,#5\r
8027         fetch 16\r
8028 ;@INDR\r
8029 opcode_ED_BA:\r
8030         opIN_C\r
8031         and z80f,r0,#0x80\r
8032         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8033 ;@      mov r1,z80bc,lsl#8\r
8034 ;@      sub r1,r1,#0x01000000\r
8035 ;@      adds r1,r1,r0,lsl#24\r
8036 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
8037         writemem8HL\r
8038         sub z80hl,z80hl,#1<<16\r
8039         sub z80bc,z80bc,#1<<24\r
8040         tst z80bc,#0xFF<<24\r
8041         orrmi z80f,z80f,#1<<SFlag\r
8042         orreq z80f,z80f,#1<<ZFlag\r
8043         subne z80pc,z80pc,#2\r
8044         subne z80_icount,z80_icount,#5\r
8045         fetch 16\r
8046 ;@OTDR\r
8047 opcode_ED_BB:\r
8048         readmem8HL\r
8049         sub z80hl,z80hl,#1<<16\r
8050         and z80f,r0,#0x80\r
8051         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8052         mov r1,z80hl,lsl#8\r
8053         adds r1,r1,r0,lsl#24\r
8054         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
8055         sub z80bc,z80bc,#1<<24\r
8056         tst z80bc,#0xFF<<24\r
8057         orrmi z80f,z80f,#1<<SFlag\r
8058         orreq z80f,z80f,#1<<ZFlag\r
8059         subne z80pc,z80pc,#2\r
8060         subne z80_icount,z80_icount,#5\r
8061         mov r1,r0\r
8062         opOUT_C\r
8063         fetch 16\r
8064 ;@##################################\r
8065 ;@##################################\r
8066 ;@###  opcodes FD  #########################\r
8067 ;@##################################\r
8068 ;@##################################\r
8069 ;@Since DD and FD opcodes are all the same apart from the address\r
8070 ;@register they use.  When a FD intruction the program runs the code\r
8071 ;@from the DD location but the address of the IY reg is passed instead\r
8072 ;@of IX\r
8073 \r
8074 end_loop:\r
8075      b end_loop\r
8076 \r
8077 \r
8078 \r