16f09afb7b09443f274259f631f5a0d907d48965
[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     ldrne r2, =YM2612Read_940\r
120     ldreq r2, =YM2612Read_\r
121     mov lr,pc\r
122     bx r2\r
123 .else\r
124     bl YM2612Read_\r
125 .endif\r
126     ldmfd sp!,{r3,r12,pc}\r
127 .endm\r
128 \r
129 .macro YM2612Read_and_ret16\r
130     stmfd sp!,{r3,r12,lr}\r
131 .if EXTERNAL_YM2612\r
132     ldr r0,=PicoOpt\r
133     ldr r0,[r0]\r
134     tst r0,#0x200\r
135     ldrne r2, =YM2612Read_940\r
136     ldreq r2, =YM2612Read_\r
137     mov lr,pc\r
138     bx r2\r
139     orr r0,r0,r0,lsl #8\r
140 .else\r
141     bl YM2612Read_\r
142     orr r0,r0,r0,lsl #8\r
143 .endif\r
144     ldmfd sp!,{r3,r12,pc}\r
145 .endm\r
146 \r
147 pico_z80_read8: @ addr\r
148     cmp r0,#0x2000         @ Z80 RAM\r
149     ldrlt r1,[cpucontext,#z80sp_base]\r
150     ldrltb r0,[r1,r0]\r
151     bxlt lr\r
152 \r
153     cmp r0,#0x8000         @ 68k bank\r
154     blt 1f\r
155     ldr r2,=(Pico+0x22212)\r
156     ldrh r1,[r2]\r
157     bic r0,r0,#0x3f8000\r
158     orr r0,r0,r1,lsl #15\r
159     ldr r1,[r2,#-0xe]      @ ROM size\r
160     cmp r0,r1\r
161     ldrlt r1,[r2,#-0x12]   @ ROM\r
162     eorlt r0,r0,#1         @ our ROM is byteswapped\r
163     ldrltb r0,[r1,r0]\r
164     bxlt lr\r
165         stmfd sp!,{r3,r12,lr}\r
166     bl PicoRead8\r
167         ldmfd sp!,{r3,r12,pc}\r
168 1:\r
169     mov r1,r0,lsr #13\r
170     cmp r1,#2              @ YM2612 (0x4000-0x5fff)\r
171     bne 0f\r
172     and r0,r0,#3\r
173     YM2612Read_and_ret8\r
174 0:\r
175     cmp r0,#0x4000\r
176     movge r0,#0xff\r
177     bxge lr\r
178     ldr r1,[cpucontext,#z80sp_base]\r
179     bic r0,r0,#0x0fe000    @ Z80 RAM (mirror)\r
180     ldrb r0,[r1,r0]\r
181     bx lr\r
182 \r
183 pico_z80_read16: @ addr\r
184     cmp r0,#0x2000         @ Z80 RAM\r
185     bge 2f\r
186     ldr r1,[cpucontext,#z80sp_base]\r
187     ldrb r0,[r1,r0]!\r
188     ldrb r1,[r1,#1]\r
189     orr r0,r0,r1,lsl #8\r
190     bx lr\r
191 \r
192 2:\r
193     cmp r0,#0x8000         @ 68k bank\r
194     blt 1f\r
195     ldr r2,=(Pico+0x22212)\r
196     ldrh r1,[r2]\r
197     bic r0,r0,#0x1f8000\r
198     orr r0,r0,r1,lsl #15\r
199     ldr r1,[r2,#-0xe]      @ ROM size\r
200     cmp r0,r1\r
201     ldr r1,[r2,#-0x12]     @ ROM\r
202     tst r0,#1\r
203     eor r0,r0,#1\r
204     ldrb r0,[r1,r0]!\r
205     ldreqb r1,[r1,#-1]\r
206     ldrneb r1,[r1,#3]      @ this is due to byteswapped ROM\r
207     orr r0,r0,r1,lsl #8\r
208     bx lr\r
209 3:\r
210     stmfd sp!,{r3-r5,r12,lr}\r
211     mov r4,r0\r
212     bl PicoRead8\r
213     mov r5,r0\r
214     add r0,r4,#1\r
215     bl PicoRead8\r
216     orr r0,r5,r0,lsl #8\r
217         ldmfd sp!,{r3-r5,r12,pc}\r
218 1:\r
219     mov r1,r0,lsr #13\r
220     cmp r1,#2              @ YM2612 (0x4000-0x5fff)\r
221     bne 0f\r
222     and r0,r0,#3\r
223         YM2612Read_and_ret16\r
224 0:\r
225     cmp r0,#0x4000\r
226     movge r0,#0xff\r
227     bxge lr\r
228     ldr r1,[cpucontext,#z80sp_base]\r
229     bic r0,r0,#0x0fe000    @ Z80 RAM (mirror)\r
230     ldrb r0,[r1,r0]!\r
231     ldrb r1,[r1,#1]\r
232     orr r0,r0,r1,lsl #8\r
233     bx lr\r
234 \r
235 pico_z80_write8: @ data, addr\r
236     cmp r1,#0x4000\r
237     bge 1f\r
238     ldr r2,[cpucontext,#z80sp_base]\r
239     bic r1,r1,#0x0fe000    @ Z80 RAM\r
240     strb r0,[r2,r1]\r
241     bx lr\r
242 1:\r
243     stmfd sp!,{r3,r12,lr}\r
244     bl z80_write\r
245     ldmfd sp!,{r3,r12,pc}\r
246 \r
247 pico_z80_write16: @ data, addr\r
248     cmp r1,#0x4000\r
249     bge 1f\r
250     ldr r2,[cpucontext,#z80sp_base]\r
251     bic r1,r1,#0x0fe000    @ Z80 RAM\r
252     strb r0,[r2,r1]!\r
253     mov r0,r0,lsr #8\r
254     strb r0,[r2,#1]\r
255     bx lr\r
256 1:\r
257         stmfd sp!,{r3-r5,r12,lr}\r
258     mov r4,r0\r
259     mov r5,r1\r
260         bl z80_write\r
261     mov r0,r4,lsr #8\r
262     add r1,r5,#1\r
263         bl z80_write\r
264         ldmfd sp!,{r3-r5,r12,pc}\r
265 \r
266     .pool\r
267 .endif\r
268 \r
269 .macro fetch cycs\r
270         subs z80_icount,z80_icount,#\cycs\r
271 .if UPDATE_CONTEXT\r
272     str z80pc,[cpucontext,#z80pc_pointer]\r
273         str z80_icount,[cpucontext,#cycles_pointer]\r
274         ldr r1,[cpucontext,#z80pc_base]\r
275         sub r2,z80pc,r1\r
276         str r2,[cpucontext,#previouspc]\r
277 .endif\r
278         ldrplb r0,[z80pc],#1\r
279         ldrpl pc,[opcodes,r0, lsl #2]\r
280         bmi z80_execute_end\r
281 .endm\r
282 \r
283 .macro eatcycles cycs\r
284         sub z80_icount,z80_icount,#\cycs\r
285 .if UPDATE_CONTEXT\r
286         str z80_icount,[cpucontext,#cycles_pointer]\r
287 .endif\r
288 .endm\r
289 \r
290 .macro readmem8\r
291 .if UPDATE_CONTEXT\r
292     str z80pc,[cpucontext,#z80pc_pointer]\r
293 .endif\r
294 .if DRZ80_FOR_PICODRIVE\r
295     bl pico_z80_read8\r
296 .else\r
297     stmfd sp!,{r3,r12}\r
298         mov lr,pc\r
299         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
300         ldmfd sp!,{r3,r12}\r
301 .endif\r
302 .endm\r
303 \r
304 .macro readmem8HL\r
305         mov r0,z80hl, lsr #16\r
306         readmem8\r
307 .endm\r
308 \r
309 .macro readmem16\r
310 .if UPDATE_CONTEXT\r
311      str z80pc,[cpucontext,#z80pc_pointer]\r
312 .endif\r
313 .if DRZ80_FOR_PICODRIVE\r
314     bl pico_z80_read16\r
315 .else\r
316         stmfd sp!,{r3,r12}\r
317         mov lr,pc\r
318         ldr pc,[cpucontext,#z80_read16]\r
319         ldmfd sp!,{r3,r12}\r
320 .endif\r
321 .endm\r
322 \r
323 .macro writemem8\r
324 .if UPDATE_CONTEXT\r
325      str z80pc,[cpucontext,#z80pc_pointer]\r
326 .endif\r
327 .if DRZ80_FOR_PICODRIVE\r
328     bl pico_z80_write8\r
329 .else\r
330         stmfd sp!,{r3,r12}\r
331         mov lr,pc\r
332         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
333         ldmfd sp!,{r3,r12}\r
334 .endif\r
335 .endm\r
336 \r
337 .macro writemem8DE\r
338         mov r1,z80de, lsr #16\r
339         writemem8\r
340 .endm\r
341 \r
342 .macro writemem8HL\r
343         mov r1,z80hl, lsr #16\r
344         writemem8\r
345 .endm\r
346 \r
347 .macro writemem16\r
348 .if UPDATE_CONTEXT\r
349      str z80pc,[cpucontext,#z80pc_pointer]\r
350 .endif\r
351 .if DRZ80_FOR_PICODRIVE\r
352     bl pico_z80_write16\r
353 .else\r
354         stmfd sp!,{r3,r12}\r
355         mov lr,pc\r
356         ldr pc,[cpucontext,#z80_write16]                ;@ r0=data r1=addr\r
357         ldmfd sp!,{r3,r12}\r
358 .endif\r
359 .endm\r
360 \r
361 .macro copymem8HL_DE\r
362 .if UPDATE_CONTEXT\r
363      str z80pc,[cpucontext,#z80pc_pointer]\r
364 .endif\r
365         mov r0,z80hl, lsr #16\r
366 .if DRZ80_FOR_PICODRIVE\r
367     bl pico_z80_read8\r
368 .else\r
369     stmfd sp!,{r3,r12}\r
370         mov lr,pc\r
371         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
372 .endif\r
373 .if UPDATE_CONTEXT\r
374      str z80pc,[cpucontext,#z80pc_pointer]\r
375 .endif\r
376         mov r1,z80de, lsr #16\r
377 .if DRZ80_FOR_PICODRIVE\r
378     bl pico_z80_write8\r
379 .else\r
380         mov lr,pc\r
381         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
382         ldmfd sp!,{r3,r12}\r
383 .endif\r
384 .endm\r
385 ;@---------------------------------------\r
386 \r
387 .macro rebasepc\r
388 .if UPDATE_CONTEXT\r
389      str z80pc,[cpucontext,#z80pc_pointer]\r
390 .endif\r
391 .if DRZ80_FOR_PICODRIVE\r
392     bic r0,r0,#0xfe000\r
393     ldr r1,[cpucontext,#z80pc_base]\r
394     add z80pc,r1,r0\r
395 .else\r
396     stmfd sp!,{r3,r12}\r
397         mov lr,pc\r
398         ldr pc,[cpucontext,#z80_rebasePC]               ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
399         ldmfd sp!,{r3,r12}\r
400         mov z80pc,r0\r
401 .endif\r
402 .endm\r
403 \r
404 .macro rebasesp\r
405 .if UPDATE_CONTEXT\r
406      str z80pc,[cpucontext,#z80pc_pointer]\r
407 .endif\r
408 .if DRZ80_FOR_PICODRIVE\r
409     bic r0,r0,#0xfe000\r
410     ldr r1,[cpucontext,#z80sp_base]\r
411     add r0,r1,r0\r
412 .else\r
413         stmfd sp!,{r3,r12}\r
414         mov lr,pc\r
415         ldr pc,[cpucontext,#z80_rebaseSP]               ;@ external function must rebase sp\r
416         ldmfd sp!,{r3,r12}\r
417 .endif\r
418 .endm\r
419 ;@----------------------------------------------------------------------------\r
420 \r
421 .macro opADC\r
422         movs z80f,z80f,lsr#2                                    ;@ get C\r
423         subcs r0,r0,#0x100\r
424         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of half carry\r
425         adcs z80a,z80a,r0,ror#8\r
426         mrs r0,cpsr                                                             ;@ S,Z,V&C\r
427         eor z80f,z80f,z80a,lsr#24\r
428         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
429         orr z80f,z80f,r0,lsr#28\r
430 .endm\r
431 \r
432 .macro opADCA\r
433         movs z80f,z80f,lsr#2                                    ;@ get C\r
434         orrcs z80a,z80a,#0x00800000\r
435         adds z80a,z80a,z80a\r
436         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
437         mov z80f,z80f,lsr#28\r
438         tst z80a,#0x10000000                                    ;@ H, correct\r
439         orrne z80f,z80f,#1<<HFlag\r
440         fetch 4\r
441 .endm\r
442 \r
443 .macro opADCH reg\r
444         mov r0,\reg,lsr#24\r
445         opADC\r
446         fetch 4\r
447 .endm\r
448 \r
449 .macro opADCL reg\r
450         movs z80f,z80f,lsr#2                                    ;@ get C\r
451         adc r0,\reg,\reg,lsr#15\r
452         orrcs z80a,z80a,#0x00800000\r
453         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
454         adds z80a,z80a,r0,lsl#23\r
455         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
456         mov z80f,z80f,lsr#28\r
457         cmn r1,r0,lsl#27\r
458         orrcs z80f,z80f,#1<<HFlag                               ;@ H, correct\r
459         fetch 4\r
460 .endm\r
461 \r
462 .macro opADCb\r
463         opADC\r
464 .endm\r
465 ;@---------------------------------------\r
466 \r
467 .macro opADD reg shift\r
468         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
469         adds z80a,z80a,\reg,lsl#\shift\r
470         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
471         mov z80f,z80f,lsr#28\r
472         cmn r1,\reg,lsl#\shift+4\r
473         orrcs z80f,z80f,#1<<HFlag\r
474 .endm\r
475 \r
476 .macro opADDA\r
477         adds z80a,z80a,z80a\r
478         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
479         mov z80f,z80f,lsr#28\r
480         tst z80a,#0x10000000                                    ;@ H, correct\r
481         orrne z80f,z80f,#1<<HFlag\r
482         fetch 4\r
483 .endm\r
484 \r
485 .macro opADDH reg\r
486         and r0,\reg,#0xFF000000\r
487         opADD r0 0\r
488         fetch 4\r
489 .endm\r
490 \r
491 .macro opADDL reg\r
492         opADD \reg 8\r
493         fetch 4\r
494 .endm\r
495 \r
496 .macro opADDb \r
497         opADD r0 24\r
498 .endm\r
499 ;@---------------------------------------\r
500 \r
501 .macro opADC16 reg\r
502         movs z80f,z80f,lsr#2                                    ;@ get C\r
503         adc r0,z80a,\reg,lsr#15\r
504         orrcs z80hl,z80hl,#0x00008000\r
505         mov r1,z80hl,lsl#4\r
506         adds z80hl,z80hl,r0,lsl#15\r
507         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
508         mov z80f,z80f,lsr#28\r
509         cmn r1,r0,lsl#19\r
510         orrcs z80f,z80f,#1<<HFlag\r
511         fetch 15\r
512 .endm\r
513 \r
514 .macro opADC16HL\r
515         movs z80f,z80f,lsr#2                                    ;@ get C\r
516         orrcs z80hl,z80hl,#0x00008000\r
517         adds z80hl,z80hl,z80hl\r
518         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
519         mov z80f,z80f,lsr#28\r
520         tst z80hl,#0x10000000                                   ;@ H, correct.\r
521         orrne z80f,z80f,#1<<HFlag\r
522         fetch 15\r
523 .endm\r
524 \r
525 .macro opADD16 reg1 reg2\r
526         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
527         adds \reg1,\reg1,\reg2\r
528         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
529         orrcs z80f,z80f,#1<<CFlag\r
530         cmn r1,\reg2,lsl#4\r
531         orrcs z80f,z80f,#1<<HFlag\r
532 .endm\r
533 \r
534 .macro opADD16s reg1 reg2 shift\r
535         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
536         adds \reg1,\reg1,\reg2,lsl#\shift\r
537         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
538         orrcs z80f,z80f,#1<<CFlag\r
539         cmn r1,\reg2,lsl#4+\shift\r
540         orrcs z80f,z80f,#1<<HFlag\r
541 .endm\r
542 \r
543 .macro opADD16_2 reg\r
544         adds \reg,\reg,\reg\r
545         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
546         orrcs z80f,z80f,#1<<CFlag\r
547         tst \reg,#0x10000000                                    ;@ H, correct.\r
548         orrne z80f,z80f,#1<<HFlag\r
549 .endm\r
550 ;@---------------------------------------\r
551 \r
552 .macro opAND reg shift\r
553         and z80a,z80a,\reg,lsl#\shift\r
554         sub r0,opcodes,#0x100\r
555         ldrb z80f,[r0,z80a, lsr #24]\r
556         orr z80f,z80f,#1<<HFlag\r
557 .endm\r
558 \r
559 .macro opANDA\r
560         sub r0,opcodes,#0x100\r
561         ldrb z80f,[r0,z80a, lsr #24]\r
562         orr z80f,z80f,#1<<HFlag\r
563         fetch 4\r
564 .endm\r
565 \r
566 .macro opANDH reg\r
567         opAND \reg 0\r
568         fetch 4\r
569 .endm\r
570 \r
571 .macro opANDL reg\r
572         opAND \reg 8\r
573         fetch 4\r
574 .endm\r
575 \r
576 .macro opANDb\r
577         opAND r0 24\r
578 .endm\r
579 ;@---------------------------------------\r
580 \r
581 .macro opBITH reg bit\r
582         and z80f,z80f,#1<<CFlag\r
583         tst \reg,#1<<(24+\bit)\r
584         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
585         orrne z80f,z80f,#(1<<HFlag)\r
586         fetch 8\r
587 .endm\r
588 \r
589 .macro opBIT7H reg\r
590         and z80f,z80f,#1<<CFlag\r
591         tst \reg,#1<<(24+7)\r
592         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
593         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
594         fetch 8\r
595 .endm\r
596 \r
597 .macro opBITL reg bit\r
598         and z80f,z80f,#1<<CFlag\r
599         tst \reg,#1<<(16+\bit)\r
600         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
601         orrne z80f,z80f,#(1<<HFlag)\r
602         fetch 8\r
603 .endm\r
604 \r
605 .macro opBIT7L reg\r
606         and z80f,z80f,#1<<CFlag\r
607         tst \reg,#1<<(16+7)\r
608         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
609         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
610         fetch 8\r
611 .endm\r
612 \r
613 .macro opBITb bit\r
614         and z80f,z80f,#1<<CFlag\r
615         tst r0,#1<<\bit\r
616         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
617         orrne z80f,z80f,#(1<<HFlag)\r
618 .endm\r
619 \r
620 .macro opBIT7b\r
621         and z80f,z80f,#1<<CFlag\r
622         tst r0,#1<<7\r
623         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
624         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
625 .endm\r
626 ;@---------------------------------------\r
627 \r
628 .macro opCP reg shift\r
629         mov r1,z80a,lsl#4                                               ;@ prepare for check of half carry\r
630         cmp z80a,\reg,lsl#\shift\r
631         mrs z80f,cpsr\r
632         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
633         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
634         cmp r1,\reg,lsl#\shift+4\r
635         orrcc z80f,z80f,#1<<HFlag\r
636 .endm\r
637 \r
638 .macro opCPA\r
639         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
640         fetch 4\r
641 .endm\r
642 \r
643 .macro opCPH reg\r
644         and r0,\reg,#0xFF000000\r
645         opCP r0 0\r
646         fetch 4\r
647 .endm\r
648 \r
649 .macro opCPL reg\r
650         opCP \reg 8\r
651         fetch 4\r
652 .endm\r
653 \r
654 .macro opCPb\r
655         opCP r0 24\r
656 .endm\r
657 ;@---------------------------------------\r
658 \r
659 .macro opDEC8 reg                                                       ;@for A and memory\r
660         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
661         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
662         tst \reg,#0x0f000000\r
663         orreq z80f,z80f,#1<<HFlag\r
664         subs \reg,\reg,#0x01000000\r
665         orrmi z80f,z80f,#1<<SFlag\r
666         orrvs z80f,z80f,#1<<VFlag\r
667         orreq z80f,z80f,#1<<ZFlag\r
668 .endm\r
669 \r
670 .macro opDEC8H reg                                                      ;@for B, D & H\r
671         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
672         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
673         tst \reg,#0x0f000000\r
674         orreq z80f,z80f,#1<<HFlag\r
675         subs \reg,\reg,#0x01000000\r
676         orrmi z80f,z80f,#1<<SFlag\r
677         orrvs z80f,z80f,#1<<VFlag\r
678         tst \reg,#0xff000000                                    ;@Z\r
679         orreq z80f,z80f,#1<<ZFlag\r
680 .endm\r
681 \r
682 .macro opDEC8L reg                                                      ;@for C, E & L\r
683         mov \reg,\reg,ror#24\r
684         opDEC8H \reg\r
685         mov \reg,\reg,ror#8\r
686 .endm\r
687 \r
688 .macro opDEC8b                                                          ;@for memory\r
689         mov r0,r0,lsl#24\r
690         opDEC8 r0\r
691         mov r0,r0,lsr#24\r
692 .endm\r
693 ;@---------------------------------------\r
694 \r
695 .macro opIN\r
696         stmfd sp!,{r3,r12}\r
697         mov lr,pc\r
698         ldr pc,[cpucontext,#z80_in]                             ;@ r0=port - data returned in r0\r
699         ldmfd sp!,{r3,r12}\r
700 .endm\r
701 \r
702 .macro opIN_C\r
703         mov r0,z80bc, lsr #16\r
704         opIN\r
705 .endm\r
706 ;@---------------------------------------\r
707 \r
708 .macro opINC8 reg                                                       ;@for A and memory\r
709         and z80f,z80f,#1<<CFlag                                 ;@save carry, clear n\r
710         adds \reg,\reg,#0x01000000\r
711         orrmi z80f,z80f,#1<<SFlag\r
712         orrvs z80f,z80f,#1<<VFlag\r
713         orrcs z80f,z80f,#1<<ZFlag                               ;@cs when going from 0xFF to 0x00\r
714         tst \reg,#0x0f000000\r
715         orreq z80f,z80f,#1<<HFlag\r
716 .endm\r
717 \r
718 .macro opINC8H reg                                                      ;@for B, D & H\r
719         opINC8 \reg\r
720 .endm\r
721 \r
722 .macro opINC8L reg                                                      ;@for C, E & L\r
723         mov \reg,\reg,ror#24\r
724         opINC8 \reg\r
725         mov \reg,\reg,ror#8\r
726 .endm\r
727 \r
728 .macro opINC8b                                                          ;@for memory\r
729         mov r0,r0,lsl#24\r
730         opINC8 r0\r
731         mov r0,r0,lsr#24\r
732 .endm\r
733 ;@---------------------------------------\r
734 \r
735 .macro opOR reg shift\r
736         orr z80a,z80a,\reg,lsl#\shift\r
737         sub r0,opcodes,#0x100\r
738         ldrb z80f,[r0,z80a, lsr #24]\r
739 .endm\r
740 \r
741 .macro opORA\r
742         sub r0,opcodes,#0x100\r
743         ldrb z80f,[r0,z80a, lsr #24]\r
744         fetch 4\r
745 .endm\r
746 \r
747 .macro opORH reg\r
748         and r0,\reg,#0xFF000000\r
749         opOR r0 0\r
750         fetch 4\r
751 .endm\r
752 \r
753 .macro opORL reg\r
754         opOR \reg 8\r
755         fetch 4\r
756 .endm\r
757 \r
758 .macro opORb\r
759         opOR r0 24\r
760 .endm\r
761 ;@---------------------------------------\r
762 \r
763 .macro opOUT\r
764         stmfd sp!,{r3,r12}\r
765         mov lr,pc\r
766         ldr pc,[cpucontext,#z80_out]                    ;@ r0=port r1=data\r
767         ldmfd sp!,{r3,r12}\r
768 .endm\r
769 \r
770 .macro opOUT_C\r
771         mov r0,z80bc, lsr #16\r
772         opOUT\r
773 .endm\r
774 ;@---------------------------------------\r
775 \r
776 .macro opPOP\r
777 .if FAST_Z80SP\r
778 .if DRZ80_FOR_PICODRIVE\r
779     @ notaz: try to protect against stack overflows, which tend to happen in Picodrive because of poor timing\r
780     ldr r2,[cpucontext,#z80sp_base]\r
781         ldrb r0,[z80sp],#1\r
782     add r2,r2,#0x2000\r
783     cmp z80sp,r2\r
784 @    subge z80sp,z80sp,#0x2000 @ unstable?\r
785         ldrb r1,[z80sp],#1\r
786     cmp z80sp,r2\r
787 @    subge z80sp,z80sp,#0x2000\r
788         orr r0,r0,r1, lsl #8\r
789 .else\r
790         ldrb r0,[z80sp],#1\r
791         ldrb r1,[z80sp],#1\r
792         orr r0,r0,r1, lsl #8\r
793 .endif\r
794 .else\r
795         mov r0,z80sp\r
796         readmem16\r
797         add z80sp,z80sp,#2\r
798 .endif\r
799 .endm\r
800 \r
801 .macro opPOPreg reg\r
802         opPOP\r
803         mov \reg,r0, lsl #16\r
804         fetch 10\r
805 .endm\r
806 ;@---------------------------------------\r
807 \r
808 .macro opPUSHareg reg @ reg > r1\r
809 .if FAST_Z80SP\r
810 .if DRZ80_FOR_PICODRIVE\r
811     @ notaz: try to protect against stack overflows, which tend to happen in Picodrive because of poor timing\r
812     ldr r0,[cpucontext,#z80sp_base]\r
813     cmp z80sp,r0\r
814     addle z80sp,z80sp,#0x2000\r
815     mov r1,\reg, lsr #8\r
816         strb r1,[z80sp,#-1]!\r
817     cmp z80sp,r0\r
818     addle z80sp,z80sp,#0x2000\r
819         strb \reg,[z80sp,#-1]!\r
820 .else\r
821         mov r1,\reg, lsr #8\r
822         strb r1,[z80sp,#-1]!\r
823         strb \reg,[z80sp,#-1]!\r
824 .endif\r
825 .else\r
826     mov r0,\reg\r
827         sub z80sp,z80sp,#2\r
828         mov r1,z80sp\r
829         writemem16\r
830 .endif\r
831 .endm\r
832 \r
833 .macro opPUSHreg reg\r
834 .if FAST_Z80SP\r
835 .if DRZ80_FOR_PICODRIVE\r
836     ldr r0,[cpucontext,#z80sp_base]\r
837     cmp z80sp,r0\r
838     addle z80sp,z80sp,#0x2000\r
839     mov r1,\reg, lsr #24\r
840         strb r1,[z80sp,#-1]!\r
841     cmp z80sp,r0\r
842     addle z80sp,z80sp,#0x2000\r
843         mov r1,\reg, lsr #16\r
844         strb r1,[z80sp,#-1]!\r
845 .else\r
846     mov r1,\reg, lsr #24\r
847         strb r1,[z80sp,#-1]!\r
848         mov r1,\reg, lsr #16\r
849         strb r1,[z80sp,#-1]!\r
850 .endif\r
851 .else\r
852         mov r0,\reg,lsr #16\r
853         sub z80sp,z80sp,#2\r
854         mov r1,z80sp\r
855         writemem16\r
856 .endif\r
857 .endm\r
858 ;@---------------------------------------\r
859 \r
860 .macro opRESmemHL bit\r
861 .if DRZ80_FOR_PICODRIVE\r
862         mov r0,z80hl, lsr #16\r
863     bl pico_z80_read8\r
864         bic r0,r0,#1<<\bit\r
865         mov r1,z80hl, lsr #16\r
866     bl pico_z80_write8\r
867 .else\r
868         mov r0,z80hl, lsr #16\r
869         stmfd sp!,{r3,r12}\r
870         mov lr,pc\r
871         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
872         bic r0,r0,#1<<\bit\r
873         mov r1,z80hl, lsr #16\r
874         mov lr,pc\r
875         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
876         ldmfd sp!,{r3,r12}\r
877 .endif\r
878     fetch 15\r
879 .endm\r
880 ;@---------------------------------------\r
881 \r
882 .macro opRESmem bit\r
883 .if DRZ80_FOR_PICODRIVE\r
884         stmfd sp!,{r0}                                                  ;@ save addr as well\r
885     bl pico_z80_read8\r
886         bic r0,r0,#1<<\bit\r
887         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
888     bl pico_z80_write8\r
889 .else\r
890         stmfd sp!,{r3,r12}\r
891         stmfd sp!,{r0}                                                  ;@ save addr as well\r
892         mov lr,pc\r
893         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
894         bic r0,r0,#1<<\bit\r
895         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
896         mov lr,pc\r
897         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
898         ldmfd sp!,{r3,r12}\r
899 .endif\r
900         fetch 23\r
901 .endm\r
902 ;@---------------------------------------\r
903 \r
904 .macro opRL reg1 reg2 shift\r
905         movs \reg1,\reg2,lsl \shift\r
906         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
907         orrne \reg1,\reg1,#0x01000000\r
908 ;@      and r2,z80f,#1<<CFlag\r
909 ;@      orr $x,$x,r2,lsl#23\r
910         sub r1,opcodes,#0x100\r
911         ldrb z80f,[r1,\reg1,lsr#24]                             ;@get PZS\r
912         orrcs z80f,z80f,#1<<CFlag\r
913 .endm\r
914 \r
915 .macro opRLA\r
916         opRL z80a, z80a, #1\r
917         fetch 8\r
918 .endm\r
919 \r
920 .macro opRLH reg\r
921         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
922         adds \reg,\reg,r0\r
923         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
924         orrne \reg,\reg,#0x01000000\r
925         sub r1,opcodes,#0x100\r
926         ldrb z80f,[r1,\reg,lsr#24]                              ;@get PZS\r
927         orrcs z80f,z80f,#1<<CFlag\r
928         fetch 8\r
929 .endm\r
930 \r
931 .macro opRLL reg\r
932         opRL r0, \reg, #9\r
933         and \reg,\reg,#0xFF000000                               ;@mask out high\r
934         orr \reg,\reg,r0,lsr#8\r
935         fetch 8\r
936 .endm\r
937 \r
938 .macro opRLb\r
939         opRL r0, r0, #25\r
940         mov r0,r0,lsr#24\r
941 .endm\r
942 ;@---------------------------------------\r
943 \r
944 .macro opRLC reg1 reg2 shift\r
945         movs \reg1,\reg2,lsl#\shift\r
946         orrcs \reg1,\reg1,#0x01000000\r
947         sub r1,opcodes,#0x100\r
948         ldrb z80f,[r1,\reg1,lsr#24]\r
949         orrcs z80f,z80f,#1<<CFlag\r
950 .endm\r
951 \r
952 .macro opRLCA\r
953         opRLC z80a, z80a, 1\r
954         fetch 8\r
955 .endm\r
956 \r
957 .macro opRLCH reg\r
958         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
959         adds \reg,\reg,r0\r
960         orrcs \reg,\reg,#0x01000000\r
961         sub r1,opcodes,#0x100\r
962         ldrb z80f,[r1,\reg,lsr#24]\r
963         orrcs z80f,z80f,#1<<CFlag\r
964         fetch 8\r
965 .endm\r
966 \r
967 .macro opRLCL reg\r
968         opRLC r0, \reg, 9\r
969         and \reg,\reg,#0xFF000000                               ;@mask out high\r
970         orr \reg,\reg,r0,lsr#8\r
971         fetch 8\r
972 .endm\r
973 \r
974 .macro opRLCb\r
975         opRLC r0, r0, 25\r
976         mov r0,r0,lsr#24\r
977 .endm\r
978 ;@---------------------------------------\r
979 \r
980 .macro opRR reg1 reg2 shift\r
981         movs \reg1,\reg2,lsr#\shift\r
982         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
983         orrne \reg1,\reg1,#0x00000080\r
984 ;@      and r2,z80_f,#PSR_C\r
985 ;@      orr \reg1,\reg1,r2,lsl#6\r
986         sub r1,opcodes,#0x100\r
987         ldrb z80f,[r1,\reg1]\r
988         orrcs z80f,z80f,#1<<CFlag\r
989 .endm\r
990 \r
991 .macro opRRA\r
992         orr z80a,z80a,z80f,lsr#1                                ;@get C\r
993         movs z80a,z80a,ror#25\r
994         mov z80a,z80a,lsl#24\r
995         sub r1,opcodes,#0x100\r
996         ldrb z80f,[r1,z80a,lsr#24]\r
997         orrcs z80f,z80f,#1<<CFlag\r
998         fetch 8\r
999 .endm\r
1000 \r
1001 .macro opRRH reg\r
1002         orr r0,\reg,z80f,lsr#1                                  ;@get C\r
1003         movs r0,r0,ror#25\r
1004         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1005         orr \reg,\reg,r0,lsl#24\r
1006         sub r1,opcodes,#0x100\r
1007         ldrb z80f,[r1,\reg,lsr#24]\r
1008         orrcs z80f,z80f,#1<<CFlag\r
1009         fetch 8\r
1010 .endm\r
1011 \r
1012 .macro opRRL reg\r
1013         and r0,\reg,#0x00FF0000                                 ;@mask out low to r0\r
1014         opRR r0 r0 17\r
1015         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1016         orr \reg,\reg,r0,lsl#16\r
1017         fetch 8\r
1018 .endm\r
1019 \r
1020 .macro opRRb\r
1021         opRR r0 r0 1\r
1022 .endm\r
1023 ;@---------------------------------------\r
1024 \r
1025 .macro opRRC reg1 reg2 shift\r
1026         movs \reg1,\reg2,lsr#\shift\r
1027         orrcs \reg1,\reg1,#0x00000080\r
1028         sub r1,opcodes,#0x100\r
1029         ldrb z80f,[r1,\reg1]\r
1030         orrcs z80f,z80f,#1<<CFlag\r
1031 .endm\r
1032 \r
1033 .macro opRRCA\r
1034         opRRC z80a, z80a, 25\r
1035         mov z80a,z80a,lsl#24\r
1036         fetch 8\r
1037 .endm\r
1038 \r
1039 .macro opRRCH reg\r
1040         opRRC r0, \reg, 25\r
1041         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1042         orr \reg,\reg,r0,lsl#24\r
1043         fetch 8\r
1044 .endm\r
1045 \r
1046 .macro opRRCL reg\r
1047         and r0,\reg,#0x00FF0000                                 ;@mask low to r0\r
1048         opRRC r0, r0, 17\r
1049         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1050         orr \reg,\reg,r0,lsl#16\r
1051         fetch 8\r
1052 .endm\r
1053 \r
1054 .macro opRRCb\r
1055         opRRC r0, r0, 1\r
1056 .endm\r
1057 ;@---------------------------------------\r
1058 \r
1059 .macro opRST addr\r
1060         ldr r0,[cpucontext,#z80pc_base]\r
1061         sub r2,z80pc,r0\r
1062     opPUSHareg r2\r
1063         mov r0,#\addr\r
1064         rebasepc\r
1065         fetch 11\r
1066 .endm\r
1067 ;@---------------------------------------\r
1068 \r
1069 .macro opSBC\r
1070         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1071         movs z80f,z80f,lsr#2                                    ;@ get C\r
1072         subcc r0,r0,#0x100\r
1073         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of H\r
1074         sbcs z80a,z80a,r0,ror#8\r
1075         mrs r0,cpsr\r
1076         eor z80f,z80f,z80a,lsr#24\r
1077         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
1078         orr z80f,z80f,r0,lsr#28                                 ;@ S,Z,V&C\r
1079         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1080 .endm\r
1081 \r
1082 .macro opSBCA\r
1083         movs z80f,z80f,lsr#2                                    ;@ get C\r
1084         movcc z80a,#0x00000000\r
1085         movcs z80a,#0xFF000000\r
1086         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1087         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1088         fetch 4\r
1089 .endm\r
1090 \r
1091 .macro opSBCH reg\r
1092         mov r0,\reg,lsr#24\r
1093         opSBC\r
1094         fetch 4\r
1095 .endm\r
1096 \r
1097 .macro opSBCL reg\r
1098         mov r0,\reg,lsl#8\r
1099         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1100         movs z80f,z80f,lsr#2                                    ;@ get C\r
1101         sbccc r0,r0,#0xFF000000\r
1102         mov r1,z80a,lsl#4                                               ;@ prepare for check of H\r
1103         sbcs z80a,z80a,r0\r
1104         mrs z80f,cpsr\r
1105         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1106         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1107         cmp r1,r0,lsl#4\r
1108         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1109         fetch 4\r
1110 .endm\r
1111 \r
1112 .macro opSBCb\r
1113         opSBC\r
1114 .endm\r
1115 ;@---------------------------------------\r
1116 \r
1117 .macro opSBC16 reg\r
1118         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1119         movs z80f,z80f,lsr#2                                    ;@ get C\r
1120         sbc r1,r1,r1                                                    ;@ set r1 to -1 or 0.\r
1121         orr r0,\reg,r1,lsr#16\r
1122         mov r1,z80hl,lsl#4                                              ;@ prepare for check of H\r
1123         sbcs z80hl,z80hl,r0\r
1124         mrs z80f,cpsr\r
1125         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1126         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1127         cmp r1,r0,lsl#4\r
1128         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1129         fetch 15\r
1130 .endm\r
1131 \r
1132 .macro opSBC16HL\r
1133         movs z80f,z80f,lsr#2                                    ;@ get C\r
1134         mov z80hl,#0x00000000\r
1135         subcs z80hl,z80hl,#0x00010000\r
1136         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1137         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1138         fetch 15\r
1139 .endm\r
1140 ;@---------------------------------------\r
1141 \r
1142 .macro opSETmemHL bit\r
1143 .if DRZ80_FOR_PICODRIVE\r
1144         mov r0,z80hl, lsr #16\r
1145     bl pico_z80_read8\r
1146         orr r0,r0,#1<<\bit\r
1147         mov r1,z80hl, lsr #16\r
1148     bl pico_z80_write8\r
1149 .else\r
1150         mov r0,z80hl, lsr #16\r
1151         stmfd sp!,{r3,r12}\r
1152         mov lr,pc\r
1153         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
1154         orr r0,r0,#1<<\bit\r
1155         mov r1,z80hl, lsr #16\r
1156         mov lr,pc\r
1157         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1158         ldmfd sp!,{r3,r12}\r
1159 .endif\r
1160     fetch 15\r
1161 .endm\r
1162 ;@---------------------------------------\r
1163 \r
1164 .macro opSETmem bit\r
1165 .if DRZ80_FOR_PICODRIVE\r
1166         stmfd sp!,{r0}  ;@ save addr as well\r
1167     bl pico_z80_read8\r
1168         orr r0,r0,#1<<\bit\r
1169         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1170     bl pico_z80_write8\r
1171 .else\r
1172         stmfd sp!,{r3,r12}\r
1173         stmfd sp!,{r0}  ;@ save addr as well\r
1174         mov lr,pc\r
1175         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
1176         orr r0,r0,#1<<\bit\r
1177         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1178         mov lr,pc\r
1179         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1180         ldmfd sp!,{r3,r12}\r
1181 .endif\r
1182         fetch 23\r
1183 .endm\r
1184 ;@---------------------------------------\r
1185 \r
1186 .macro opSLA reg1 reg2 shift\r
1187         movs \reg1,\reg2,lsl#\shift\r
1188         sub r1,opcodes,#0x100\r
1189         ldrb z80f,[r1,\reg1,lsr#24]\r
1190         orrcs z80f,z80f,#1<<CFlag\r
1191 .endm\r
1192 \r
1193 .macro opSLAA\r
1194         opSLA z80a, z80a, 1\r
1195         fetch 8\r
1196 .endm\r
1197 \r
1198 .macro opSLAH reg\r
1199         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1200         adds \reg,\reg,r0\r
1201         sub r1,opcodes,#0x100\r
1202         ldrb z80f,[r1,\reg,lsr#24]\r
1203         orrcs z80f,z80f,#1<<CFlag\r
1204         fetch 8\r
1205 .endm\r
1206 \r
1207 .macro opSLAL reg\r
1208         opSLA r0, \reg, 9\r
1209         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1210         orr \reg,\reg,r0,lsr#8\r
1211         fetch 8\r
1212 .endm\r
1213 \r
1214 .macro opSLAb\r
1215         opSLA r0, r0, 25\r
1216         mov r0,r0,lsr#24\r
1217 .endm\r
1218 ;@---------------------------------------\r
1219 \r
1220 .macro opSLL reg1 reg2 shift\r
1221         movs \reg1,\reg2,lsl#\shift\r
1222         orr \reg1,\reg1,#0x01000000\r
1223         sub r1,opcodes,#0x100\r
1224         ldrb z80f,[r1,\reg1,lsr#24]\r
1225         orrcs z80f,z80f,#1<<CFlag\r
1226 .endm\r
1227 \r
1228 .macro opSLLA\r
1229         opSLL z80a, z80a, 1\r
1230         fetch 8\r
1231 .endm\r
1232 \r
1233 .macro opSLLH reg\r
1234         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1235         adds \reg,\reg,r0\r
1236         orr \reg,\reg,#0x01000000\r
1237         sub r1,opcodes,#0x100\r
1238         ldrb z80f,[r1,\reg,lsr#24]\r
1239         orrcs z80f,z80f,#1<<CFlag\r
1240         fetch 8\r
1241 .endm\r
1242 \r
1243 .macro opSLLL reg\r
1244         opSLL r0, \reg, 9\r
1245         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1246         orr \reg,\reg,r0,lsr#8\r
1247         fetch 8\r
1248 .endm\r
1249 \r
1250 .macro opSLLb\r
1251         opSLL r0, r0, 25\r
1252         mov r0,r0,lsr#24\r
1253 .endm\r
1254 ;@---------------------------------------\r
1255 \r
1256 .macro opSRA reg1 reg2\r
1257         movs \reg1,\reg2,asr#25\r
1258         and \reg1,\reg1,#0xFF\r
1259         sub r1,opcodes,#0x100\r
1260         ldrb z80f,[r1,\reg1]\r
1261         orrcs z80f,z80f,#1<<CFlag\r
1262 .endm\r
1263 \r
1264 .macro opSRAA\r
1265         movs r0,z80a,asr#25\r
1266         mov z80a,r0,lsl#24\r
1267         sub r1,opcodes,#0x100\r
1268         ldrb z80f,[r1,z80a,lsr#24]\r
1269         orrcs z80f,z80f,#1<<CFlag\r
1270         fetch 8\r
1271 .endm\r
1272 \r
1273 .macro opSRAH reg\r
1274         movs r0,\reg,asr#25\r
1275         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1276         orr \reg,\reg,r0,lsl#24\r
1277         sub r1,opcodes,#0x100\r
1278         ldrb z80f,[r1,\reg,lsr#24]\r
1279         orrcs z80f,z80f,#1<<CFlag\r
1280         fetch 8\r
1281 .endm\r
1282 \r
1283 .macro opSRAL reg\r
1284         mov r0,\reg,lsl#8\r
1285         opSRA r0, r0\r
1286         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1287         orr \reg,\reg,r0,lsl#16\r
1288         fetch 8\r
1289 .endm\r
1290 \r
1291 .macro opSRAb\r
1292         mov r0,r0,lsl#24\r
1293         opSRA r0, r0\r
1294 .endm\r
1295 ;@---------------------------------------\r
1296 \r
1297 .macro opSRL reg1 reg2 shift\r
1298         movs \reg1,\reg2,lsr#\shift\r
1299         sub r1,opcodes,#0x100\r
1300         ldrb z80f,[r1,\reg1]\r
1301         orrcs z80f,z80f,#1<<CFlag\r
1302 .endm\r
1303 \r
1304 .macro opSRLA\r
1305         opSRL z80a, z80a, 25\r
1306         mov z80a,z80a,lsl#24\r
1307         fetch 8\r
1308 .endm\r
1309 \r
1310 .macro opSRLH reg\r
1311         opSRL r0, \reg, 25\r
1312         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1313         orr \reg,\reg,r0,lsl#24\r
1314         fetch 8\r
1315 .endm\r
1316 \r
1317 .macro opSRLL reg\r
1318         mov r0,\reg,lsl#8\r
1319         opSRL r0, r0, 25\r
1320         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1321         orr \reg,\reg,r0,lsl#16\r
1322         fetch 8\r
1323 .endm\r
1324 \r
1325 .macro opSRLb\r
1326         opSRL r0, r0, 1\r
1327 .endm\r
1328 ;@---------------------------------------\r
1329 \r
1330 .macro opSUB reg shift\r
1331         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
1332         subs z80a,z80a,\reg,lsl#\shift\r
1333         mrs z80f,cpsr\r
1334         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1335         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
1336         cmp r1,\reg,lsl#\shift+4\r
1337         orrcc z80f,z80f,#1<<HFlag\r
1338 .endm\r
1339 \r
1340 .macro opSUBA\r
1341         mov z80a,#0\r
1342         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
1343         fetch 4\r
1344 .endm\r
1345 \r
1346 .macro opSUBH reg\r
1347         and r0,\reg,#0xFF000000\r
1348         opSUB r0, 0\r
1349         fetch 4\r
1350 .endm\r
1351 \r
1352 .macro opSUBL reg\r
1353         opSUB \reg, 8\r
1354         fetch 4\r
1355 .endm\r
1356 \r
1357 .macro opSUBb\r
1358         opSUB r0, 24\r
1359 .endm\r
1360 ;@---------------------------------------\r
1361 \r
1362 .macro opXOR reg shift\r
1363         eor z80a,z80a,\reg,lsl#\shift\r
1364         sub r0,opcodes,#0x100\r
1365         ldrb z80f,[r0,z80a, lsr #24]\r
1366 .endm\r
1367 \r
1368 .macro opXORA\r
1369         mov z80a,#0\r
1370         mov z80f,#(1<<ZFlag)|(1<<VFlag)\r
1371         fetch 4\r
1372 .endm\r
1373 \r
1374 .macro opXORH reg\r
1375         and r0,\reg,#0xFF000000\r
1376         opXOR r0, 0\r
1377         fetch 4\r
1378 .endm\r
1379 \r
1380 .macro opXORL reg\r
1381         opXOR \reg, 8\r
1382         fetch 4\r
1383 .endm\r
1384 \r
1385 .macro opXORb\r
1386         opXOR r0, 24\r
1387 .endm\r
1388 ;@---------------------------------------\r
1389 \r
1390 \r
1391 ;@ --------------------------- Framework --------------------------\r
1392     \r
1393 .text\r
1394 \r
1395 DrZ80Run:\r
1396         ;@ r0 = pointer to cpu context\r
1397         ;@ r1 = ISTATES to execute  \r
1398         ;@#########################################   \r
1399         stmdb sp!,{r4-r12,lr}                                   ;@ save registers on stack\r
1400         mov cpucontext,r0                                               ;@ setup main memory pointer\r
1401         mov z80_icount,r1                                               ;@ setup number of Tstates to execute\r
1402 \r
1403 .if INTERRUPT_MODE == 0\r
1404         ldrh r0,[cpucontext,#z80irq] @ 0x4C\r
1405 .endif\r
1406         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1407 \r
1408 .if INTERRUPT_MODE == 0\r
1409         ;@ check ints\r
1410         tst r0,#1\r
1411         movnes r0,r0,lsr #8\r
1412     blne DoInterrupt\r
1413 .endif\r
1414 \r
1415         ldrb r0,[z80pc],#1    ;@ get first op code\r
1416         ldr opcodes,MAIN_opcodes_POINTER2\r
1417         ldr pc,[opcodes,r0, lsl #2]  ;@ execute op code\r
1418 \r
1419 MAIN_opcodes_POINTER2: .word MAIN_opcodes\r
1420 \r
1421 \r
1422 z80_execute_end:\r
1423         ;@ save registers in CPU context\r
1424         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1425     mov r0,z80_icount\r
1426         ldmia sp!,{r4-r12,pc}                                   ;@ restore registers from stack and return to C code\r
1427 \r
1428 .if INTERRUPT_MODE\r
1429 Interrupt_local: .word Interrupt\r
1430 .endif\r
1431 \r
1432 DoInterrupt:\r
1433 .if INTERRUPT_MODE\r
1434         ;@ Don't do own int handler, call mames instead\r
1435 \r
1436         ;@ save everything back into DrZ80 context\r
1437         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1438         stmfd sp!,{r3,r4,r5,lr}                                 ;@ save rest of regs on stack\r
1439         mov lr,pc\r
1440         ldr pc,Interrupt_local\r
1441         ldmfd sp!,{r3,r4,r5,lr}                                 ;@ load regs from stack\r
1442         ;@ reload regs from DrZ80 context\r
1443         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1444         mov pc,lr ;@ return\r
1445 .else\r
1446         stmfd sp!,{lr}\r
1447 \r
1448         tst r0,#4 ;@ check halt\r
1449         addne z80pc,z80pc,#1\r
1450 \r
1451         ldrb r1,[cpucontext,#z80im]\r
1452 \r
1453     ;@ clear halt and int flags\r
1454         eor r0,r0,r0\r
1455         strb r0,[cpucontext,#z80if]\r
1456 \r
1457         ;@ now check int mode\r
1458     tst r1,#1\r
1459     bne DoInterrupt_mode1\r
1460     tst r1,#2\r
1461     bne DoInterrupt_mode2\r
1462     b   DoInterrupt_mode0\r
1463 \r
1464 DoInterrupt_mode0:\r
1465         ;@ get 3 byte vector\r
1466         ldr r2,[cpucontext, #z80irqvector]\r
1467         and r1,r2,#0xFF0000\r
1468         cmp r1,#0xCD0000  ;@ call\r
1469         bne 1f\r
1470         ;@ ########\r
1471         ;@ # call\r
1472         ;@ ########\r
1473         ;@ save current pc on stack\r
1474         ldr r0,[cpucontext,#z80pc_base]\r
1475         sub r0,z80pc,r0\r
1476 .if FAST_Z80SP\r
1477         mov r1,r0, lsr #8\r
1478         strb r1,[z80sp,#-1]!\r
1479         strb r0,[z80sp,#-1]!\r
1480 .else\r
1481         sub z80sp,z80sp,#2\r
1482         mov r1,z80sp\r
1483         writemem16\r
1484         ldr r2,[cpucontext, #z80irqvector]\r
1485 .endif\r
1486         ;@ jump to vector\r
1487         mov r2,r2,lsl#16\r
1488         mov r0,r2,lsr#16\r
1489         ;@ rebase new pc\r
1490         rebasepc\r
1491 \r
1492         b DoInterrupt_end\r
1493 \r
1494 1:\r
1495         cmp r1,#0xC30000  ;@ jump\r
1496         bne DoInterrupt_mode1    ;@ rst\r
1497         ;@ #######\r
1498         ;@ # jump\r
1499         ;@ #######\r
1500         ;@ jump to vector\r
1501         mov r2,r2,lsl#16\r
1502         mov r0,r2,lsr#16\r
1503         ;@ rebase new pc\r
1504         rebasepc\r
1505 \r
1506         b DoInterrupt_end\r
1507 \r
1508 DoInterrupt_mode1:\r
1509         ldr r0,[cpucontext,#z80pc_base]\r
1510         sub r2,z80pc,r0\r
1511     opPUSHareg r2\r
1512         mov r0,#0x38\r
1513         rebasepc\r
1514 \r
1515         b DoInterrupt_end\r
1516 \r
1517 DoInterrupt_mode2:\r
1518         ;@ push pc on stack\r
1519         ldr r0,[cpucontext,#z80pc_base]\r
1520         sub r2,z80pc,r0\r
1521     opPUSHareg r2\r
1522 \r
1523         ;@ get 1 byte vector address\r
1524         ldrb r0,[cpucontext, #z80irqvector]\r
1525         ldr r1,[cpucontext, #z80i]\r
1526         orr r0,r0,r1,lsr#16\r
1527 \r
1528         ;@ read new pc from vector address\r
1529 .if DRZ80_FOR_PICODRIVE\r
1530     bl pico_z80_read16\r
1531     bic r0,r0,#0xfe000\r
1532     ldr r1,[cpucontext,#z80pc_base]\r
1533     add z80pc,r1,r0\r
1534 .if UPDATE_CONTEXT\r
1535      str z80pc,[cpucontext,#z80pc_pointer]\r
1536 .endif\r
1537 .else\r
1538         stmfd sp!,{r3,r12}\r
1539         mov lr,pc\r
1540         ldr pc,[cpucontext,#z80_read16]\r
1541 \r
1542         ;@ rebase new pc\r
1543 .if UPDATE_CONTEXT\r
1544      str z80pc,[cpucontext,#z80pc_pointer]\r
1545 .endif\r
1546         mov lr,pc\r
1547         ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
1548         ldmfd sp!,{r3,r12}\r
1549         mov z80pc,r0    \r
1550 .endif\r
1551 \r
1552 DoInterrupt_end:\r
1553         ;@ interupt accepted so callback irq interface\r
1554         ldr r0,[cpucontext, #z80irqcallback]\r
1555         tst r0,r0\r
1556         ldmeqfd sp!,{pc}\r
1557         stmfd sp!,{r3,r12}\r
1558         mov lr,pc\r
1559         mov pc,r0    ;@ call callback function\r
1560         ldmfd sp!,{r3,r12}\r
1561         ldmfd sp!,{pc} ;@ return\r
1562 \r
1563 .endif\r
1564 \r
1565 .data\r
1566 .align 4\r
1567 \r
1568 DAATable: .hword  (0x00<<8)|(1<<ZFlag)|(1<<VFlag)\r
1569          .hword  (0x01<<8)                  \r
1570          .hword  (0x02<<8)                  \r
1571          .hword  (0x03<<8)               |(1<<VFlag)\r
1572          .hword  (0x04<<8)                  \r
1573          .hword  (0x05<<8)               |(1<<VFlag)\r
1574          .hword  (0x06<<8)               |(1<<VFlag)\r
1575          .hword  (0x07<<8)                  \r
1576          .hword  (0x08<<8)               \r
1577          .hword  (0x09<<8)            |(1<<VFlag)\r
1578          .hword  (0x10<<8)         |(1<<HFlag)      \r
1579          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1580          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1581          .hword  (0x13<<8)         |(1<<HFlag)      \r
1582          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1583          .hword  (0x15<<8)         |(1<<HFlag)      \r
1584          .hword  (0x10<<8)                  \r
1585          .hword  (0x11<<8)               |(1<<VFlag)\r
1586          .hword  (0x12<<8)               |(1<<VFlag)\r
1587          .hword  (0x13<<8)                  \r
1588          .hword  (0x14<<8)               |(1<<VFlag)\r
1589          .hword  (0x15<<8)                  \r
1590          .hword  (0x16<<8)                  \r
1591          .hword  (0x17<<8)               |(1<<VFlag)\r
1592          .hword  (0x18<<8)            |(1<<VFlag)\r
1593          .hword  (0x19<<8)               \r
1594          .hword  (0x20<<8)      |(1<<HFlag)      \r
1595          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1596          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1597          .hword  (0x23<<8)      |(1<<HFlag)      \r
1598          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1599          .hword  (0x25<<8)      |(1<<HFlag)      \r
1600          .hword  (0x20<<8)               \r
1601          .hword  (0x21<<8)            |(1<<VFlag)\r
1602          .hword  (0x22<<8)            |(1<<VFlag)\r
1603          .hword  (0x23<<8)               \r
1604          .hword  (0x24<<8)            |(1<<VFlag)\r
1605          .hword  (0x25<<8)               \r
1606          .hword  (0x26<<8)               \r
1607          .hword  (0x27<<8)            |(1<<VFlag)\r
1608          .hword  (0x28<<8)         |(1<<VFlag)\r
1609          .hword  (0x29<<8)            \r
1610          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1611          .hword  (0x31<<8)      |(1<<HFlag)      \r
1612          .hword  (0x32<<8)      |(1<<HFlag)      \r
1613          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1614          .hword  (0x34<<8)      |(1<<HFlag)      \r
1615          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1616          .hword  (0x30<<8)            |(1<<VFlag)\r
1617          .hword  (0x31<<8)               \r
1618          .hword  (0x32<<8)               \r
1619          .hword  (0x33<<8)            |(1<<VFlag)\r
1620          .hword  (0x34<<8)               \r
1621          .hword  (0x35<<8)            |(1<<VFlag)\r
1622          .hword  (0x36<<8)            |(1<<VFlag)\r
1623          .hword  (0x37<<8)               \r
1624          .hword  (0x38<<8)            \r
1625          .hword  (0x39<<8)         |(1<<VFlag)\r
1626          .hword  (0x40<<8)         |(1<<HFlag)      \r
1627          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1628          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1629          .hword  (0x43<<8)         |(1<<HFlag)      \r
1630          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1631          .hword  (0x45<<8)         |(1<<HFlag)      \r
1632          .hword  (0x40<<8)                  \r
1633          .hword  (0x41<<8)               |(1<<VFlag)\r
1634          .hword  (0x42<<8)               |(1<<VFlag)\r
1635          .hword  (0x43<<8)                  \r
1636          .hword  (0x44<<8)               |(1<<VFlag)\r
1637          .hword  (0x45<<8)                  \r
1638          .hword  (0x46<<8)                  \r
1639          .hword  (0x47<<8)               |(1<<VFlag)\r
1640          .hword  (0x48<<8)            |(1<<VFlag)\r
1641          .hword  (0x49<<8)               \r
1642          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1643          .hword  (0x51<<8)         |(1<<HFlag)      \r
1644          .hword  (0x52<<8)         |(1<<HFlag)      \r
1645          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1646          .hword  (0x54<<8)         |(1<<HFlag)      \r
1647          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1648          .hword  (0x50<<8)               |(1<<VFlag)\r
1649          .hword  (0x51<<8)                  \r
1650          .hword  (0x52<<8)                  \r
1651          .hword  (0x53<<8)               |(1<<VFlag)\r
1652          .hword  (0x54<<8)                  \r
1653          .hword  (0x55<<8)               |(1<<VFlag)\r
1654          .hword  (0x56<<8)               |(1<<VFlag)\r
1655          .hword  (0x57<<8)                  \r
1656          .hword  (0x58<<8)               \r
1657          .hword  (0x59<<8)            |(1<<VFlag)\r
1658          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1659          .hword  (0x61<<8)      |(1<<HFlag)      \r
1660          .hword  (0x62<<8)      |(1<<HFlag)      \r
1661          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1662          .hword  (0x64<<8)      |(1<<HFlag)      \r
1663          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1664          .hword  (0x60<<8)            |(1<<VFlag)\r
1665          .hword  (0x61<<8)               \r
1666          .hword  (0x62<<8)               \r
1667          .hword  (0x63<<8)            |(1<<VFlag)\r
1668          .hword  (0x64<<8)               \r
1669          .hword  (0x65<<8)            |(1<<VFlag)\r
1670          .hword  (0x66<<8)            |(1<<VFlag)\r
1671          .hword  (0x67<<8)               \r
1672          .hword  (0x68<<8)            \r
1673          .hword  (0x69<<8)         |(1<<VFlag)\r
1674          .hword  (0x70<<8)      |(1<<HFlag)      \r
1675          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1676          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1677          .hword  (0x73<<8)      |(1<<HFlag)      \r
1678          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1679          .hword  (0x75<<8)      |(1<<HFlag)      \r
1680          .hword  (0x70<<8)               \r
1681          .hword  (0x71<<8)            |(1<<VFlag)\r
1682          .hword  (0x72<<8)            |(1<<VFlag)\r
1683          .hword  (0x73<<8)               \r
1684          .hword  (0x74<<8)            |(1<<VFlag)\r
1685          .hword  (0x75<<8)               \r
1686          .hword  (0x76<<8)               \r
1687          .hword  (0x77<<8)            |(1<<VFlag)\r
1688          .hword  (0x78<<8)         |(1<<VFlag)\r
1689          .hword  (0x79<<8)            \r
1690          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1691          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1692          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1693          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1694          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1695          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1696          .hword  (0x80<<8)|(1<<SFlag)               \r
1697          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)\r
1698          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)\r
1699          .hword  (0x83<<8)|(1<<SFlag)               \r
1700          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)\r
1701          .hword  (0x85<<8)|(1<<SFlag)               \r
1702          .hword  (0x86<<8)|(1<<SFlag)               \r
1703          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
1704          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
1705          .hword  (0x89<<8)|(1<<SFlag)            \r
1706          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1707          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1708          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1709          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1710          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1711          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1712          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)\r
1713          .hword  (0x91<<8)|(1<<SFlag)               \r
1714          .hword  (0x92<<8)|(1<<SFlag)               \r
1715          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)\r
1716          .hword  (0x94<<8)|(1<<SFlag)               \r
1717          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)\r
1718          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
1719          .hword  (0x97<<8)|(1<<SFlag)               \r
1720          .hword  (0x98<<8)|(1<<SFlag)            \r
1721          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
1722          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1723          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1724          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1725          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1726          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1727          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1728          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1729          .hword  (0x01<<8)                     |(1<<CFlag)\r
1730          .hword  (0x02<<8)                     |(1<<CFlag)\r
1731          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1732          .hword  (0x04<<8)                     |(1<<CFlag)\r
1733          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1734          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1735          .hword  (0x07<<8)                     |(1<<CFlag)\r
1736          .hword  (0x08<<8)                  |(1<<CFlag)\r
1737          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1738          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1739          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1740          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1741          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1742          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1743          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1744          .hword  (0x10<<8)                     |(1<<CFlag)\r
1745          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1746          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1747          .hword  (0x13<<8)                     |(1<<CFlag)\r
1748          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1749          .hword  (0x15<<8)                     |(1<<CFlag)\r
1750          .hword  (0x16<<8)                     |(1<<CFlag)\r
1751          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1752          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1753          .hword  (0x19<<8)                  |(1<<CFlag)\r
1754          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1755          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1756          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1757          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1758          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1759          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1760          .hword  (0x20<<8)                  |(1<<CFlag)\r
1761          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1762          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1763          .hword  (0x23<<8)                  |(1<<CFlag)\r
1764          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1765          .hword  (0x25<<8)                  |(1<<CFlag)\r
1766          .hword  (0x26<<8)                  |(1<<CFlag)\r
1767          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1768          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1769          .hword  (0x29<<8)               |(1<<CFlag)\r
1770          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1771          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1772          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1773          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1774          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1775          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1776          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1777          .hword  (0x31<<8)                  |(1<<CFlag)\r
1778          .hword  (0x32<<8)                  |(1<<CFlag)\r
1779          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1780          .hword  (0x34<<8)                  |(1<<CFlag)\r
1781          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1782          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1783          .hword  (0x37<<8)                  |(1<<CFlag)\r
1784          .hword  (0x38<<8)               |(1<<CFlag)\r
1785          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1786          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1787          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1788          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1789          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1790          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1791          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1792          .hword  (0x40<<8)                     |(1<<CFlag)\r
1793          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1794          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1795          .hword  (0x43<<8)                     |(1<<CFlag)\r
1796          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1797          .hword  (0x45<<8)                     |(1<<CFlag)\r
1798          .hword  (0x46<<8)                     |(1<<CFlag)\r
1799          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1800          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1801          .hword  (0x49<<8)                  |(1<<CFlag)\r
1802          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1803          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1804          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1805          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1806          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1807          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1808          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1809          .hword  (0x51<<8)                     |(1<<CFlag)\r
1810          .hword  (0x52<<8)                     |(1<<CFlag)\r
1811          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1812          .hword  (0x54<<8)                     |(1<<CFlag)\r
1813          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1814          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1815          .hword  (0x57<<8)                     |(1<<CFlag)\r
1816          .hword  (0x58<<8)                  |(1<<CFlag)\r
1817          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1818          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1819          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1820          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1821          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1822          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1823          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1824          .hword  (0x60<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1825          .hword  (0x61<<8)                  |(1<<CFlag)\r
1826          .hword  (0x62<<8)                  |(1<<CFlag)\r
1827          .hword  (0x63<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1828          .hword  (0x64<<8)                  |(1<<CFlag)\r
1829          .hword  (0x65<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1830          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1831          .hword  (0x67<<8)                  |(1<<CFlag)\r
1832          .hword  (0x68<<8)               |(1<<CFlag)\r
1833          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1834          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1835          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1836          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1837          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1838          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1839          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1840          .hword  (0x70<<8)                  |(1<<CFlag)\r
1841          .hword  (0x71<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1842          .hword  (0x72<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1843          .hword  (0x73<<8)                  |(1<<CFlag)\r
1844          .hword  (0x74<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1845          .hword  (0x75<<8)                  |(1<<CFlag)\r
1846          .hword  (0x76<<8)                  |(1<<CFlag)\r
1847          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1848          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1849          .hword  (0x79<<8)               |(1<<CFlag)\r
1850          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1851          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1852          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1853          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1854          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1855          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1856          .hword  (0x80<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1857          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1858          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1859          .hword  (0x83<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1860          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1861          .hword  (0x85<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1862          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1863          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1864          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1865          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
1866          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1867          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1868          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1869          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1870          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1871          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1872          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1873          .hword  (0x91<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1874          .hword  (0x92<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1875          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1876          .hword  (0x94<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1877          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1878          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1879          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1880          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
1881          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1882          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1883          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1884          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1885          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1886          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1887          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1888          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1889          .hword  (0xA1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1890          .hword  (0xA2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1891          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1892          .hword  (0xA4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1893          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1894          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1895          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1896          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1897          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1898          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1899          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1900          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1901          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1902          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1903          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1904          .hword  (0xB0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1905          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1906          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1907          .hword  (0xB3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1908          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1909          .hword  (0xB5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1910          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1911          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1912          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1913          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1914          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1915          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1916          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1917          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1918          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1919          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1920          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1921          .hword  (0xC1<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1922          .hword  (0xC2<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1923          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1924          .hword  (0xC4<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1925          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1926          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1927          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1928          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
1929          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1930          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1931          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1932          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1933          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1934          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1935          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1936          .hword  (0xD0<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1937          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1938          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1939          .hword  (0xD3<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1940          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1941          .hword  (0xD5<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1942          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1943          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1944          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1945          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
1946          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1947          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1948          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1949          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1950          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1951          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1952          .hword  (0xE0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1953          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1954          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1955          .hword  (0xE3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1956          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1957          .hword  (0xE5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1958          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1959          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1960          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1961          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1962          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1963          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1964          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1965          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1966          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1967          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1968          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1969          .hword  (0xF1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1970          .hword  (0xF2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1971          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1972          .hword  (0xF4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1973          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1974          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1975          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1976          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1977          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1978          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1979          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1980          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1981          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1982          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1983          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1984          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1985          .hword  (0x01<<8)                     |(1<<CFlag)\r
1986          .hword  (0x02<<8)                     |(1<<CFlag)\r
1987          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1988          .hword  (0x04<<8)                     |(1<<CFlag)\r
1989          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1990          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1991          .hword  (0x07<<8)                     |(1<<CFlag)\r
1992          .hword  (0x08<<8)                  |(1<<CFlag)\r
1993          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1994          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1995          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1996          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1997          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1998          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1999          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2000          .hword  (0x10<<8)                     |(1<<CFlag)\r
2001          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2002          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2003          .hword  (0x13<<8)                     |(1<<CFlag)\r
2004          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2005          .hword  (0x15<<8)                     |(1<<CFlag)\r
2006          .hword  (0x16<<8)                     |(1<<CFlag)\r
2007          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2008          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2009          .hword  (0x19<<8)                  |(1<<CFlag)\r
2010          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2011          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2012          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2013          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2014          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2015          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2016          .hword  (0x20<<8)                  |(1<<CFlag)\r
2017          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2018          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2019          .hword  (0x23<<8)                  |(1<<CFlag)\r
2020          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2021          .hword  (0x25<<8)                  |(1<<CFlag)\r
2022          .hword  (0x26<<8)                  |(1<<CFlag)\r
2023          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2024          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2025          .hword  (0x29<<8)               |(1<<CFlag)\r
2026          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2027          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2028          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2029          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2030          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2031          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2032          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2033          .hword  (0x31<<8)                  |(1<<CFlag)\r
2034          .hword  (0x32<<8)                  |(1<<CFlag)\r
2035          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2036          .hword  (0x34<<8)                  |(1<<CFlag)\r
2037          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2038          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2039          .hword  (0x37<<8)                  |(1<<CFlag)\r
2040          .hword  (0x38<<8)               |(1<<CFlag)\r
2041          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2042          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2043          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2044          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2045          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2046          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2047          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2048          .hword  (0x40<<8)                     |(1<<CFlag)\r
2049          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2050          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2051          .hword  (0x43<<8)                     |(1<<CFlag)\r
2052          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2053          .hword  (0x45<<8)                     |(1<<CFlag)\r
2054          .hword  (0x46<<8)                     |(1<<CFlag)\r
2055          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2056          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2057          .hword  (0x49<<8)                  |(1<<CFlag)\r
2058          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2059          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2060          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2061          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2062          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2063          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2064          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2065          .hword  (0x51<<8)                     |(1<<CFlag)\r
2066          .hword  (0x52<<8)                     |(1<<CFlag)\r
2067          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2068          .hword  (0x54<<8)                     |(1<<CFlag)\r
2069          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2070          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2071          .hword  (0x57<<8)                     |(1<<CFlag)\r
2072          .hword  (0x58<<8)                  |(1<<CFlag)\r
2073          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2074          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2075          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2076          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2077          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2078          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2079          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2080          .hword  (0x06<<8)               |(1<<VFlag)\r
2081          .hword  (0x07<<8)                  \r
2082          .hword  (0x08<<8)               \r
2083          .hword  (0x09<<8)            |(1<<VFlag)\r
2084          .hword  (0x0A<<8)            |(1<<VFlag)\r
2085          .hword  (0x0B<<8)               \r
2086          .hword  (0x0C<<8)            |(1<<VFlag)\r
2087          .hword  (0x0D<<8)               \r
2088          .hword  (0x0E<<8)               \r
2089          .hword  (0x0F<<8)            |(1<<VFlag)\r
2090          .hword  (0x10<<8)         |(1<<HFlag)      \r
2091          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2092          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2093          .hword  (0x13<<8)         |(1<<HFlag)      \r
2094          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2095          .hword  (0x15<<8)         |(1<<HFlag)      \r
2096          .hword  (0x16<<8)                  \r
2097          .hword  (0x17<<8)               |(1<<VFlag)\r
2098          .hword  (0x18<<8)            |(1<<VFlag)\r
2099          .hword  (0x19<<8)               \r
2100          .hword  (0x1A<<8)               \r
2101          .hword  (0x1B<<8)            |(1<<VFlag)\r
2102          .hword  (0x1C<<8)               \r
2103          .hword  (0x1D<<8)            |(1<<VFlag)\r
2104          .hword  (0x1E<<8)            |(1<<VFlag)\r
2105          .hword  (0x1F<<8)               \r
2106          .hword  (0x20<<8)      |(1<<HFlag)      \r
2107          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2108          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2109          .hword  (0x23<<8)      |(1<<HFlag)      \r
2110          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2111          .hword  (0x25<<8)      |(1<<HFlag)      \r
2112          .hword  (0x26<<8)               \r
2113          .hword  (0x27<<8)            |(1<<VFlag)\r
2114          .hword  (0x28<<8)         |(1<<VFlag)\r
2115          .hword  (0x29<<8)            \r
2116          .hword  (0x2A<<8)            \r
2117          .hword  (0x2B<<8)         |(1<<VFlag)\r
2118          .hword  (0x2C<<8)            \r
2119          .hword  (0x2D<<8)         |(1<<VFlag)\r
2120          .hword  (0x2E<<8)         |(1<<VFlag)\r
2121          .hword  (0x2F<<8)            \r
2122          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2123          .hword  (0x31<<8)      |(1<<HFlag)      \r
2124          .hword  (0x32<<8)      |(1<<HFlag)      \r
2125          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2126          .hword  (0x34<<8)      |(1<<HFlag)      \r
2127          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2128          .hword  (0x36<<8)            |(1<<VFlag)\r
2129          .hword  (0x37<<8)               \r
2130          .hword  (0x38<<8)            \r
2131          .hword  (0x39<<8)         |(1<<VFlag)\r
2132          .hword  (0x3A<<8)         |(1<<VFlag)\r
2133          .hword  (0x3B<<8)            \r
2134          .hword  (0x3C<<8)         |(1<<VFlag)\r
2135          .hword  (0x3D<<8)            \r
2136          .hword  (0x3E<<8)            \r
2137          .hword  (0x3F<<8)         |(1<<VFlag)\r
2138          .hword  (0x40<<8)         |(1<<HFlag)      \r
2139          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2140          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2141          .hword  (0x43<<8)         |(1<<HFlag)      \r
2142          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2143          .hword  (0x45<<8)         |(1<<HFlag)      \r
2144          .hword  (0x46<<8)                  \r
2145          .hword  (0x47<<8)               |(1<<VFlag)\r
2146          .hword  (0x48<<8)            |(1<<VFlag)\r
2147          .hword  (0x49<<8)               \r
2148          .hword  (0x4A<<8)               \r
2149          .hword  (0x4B<<8)            |(1<<VFlag)\r
2150          .hword  (0x4C<<8)               \r
2151          .hword  (0x4D<<8)            |(1<<VFlag)\r
2152          .hword  (0x4E<<8)            |(1<<VFlag)\r
2153          .hword  (0x4F<<8)               \r
2154          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2155          .hword  (0x51<<8)         |(1<<HFlag)      \r
2156          .hword  (0x52<<8)         |(1<<HFlag)      \r
2157          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2158          .hword  (0x54<<8)         |(1<<HFlag)      \r
2159          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2160          .hword  (0x56<<8)               |(1<<VFlag)\r
2161          .hword  (0x57<<8)                  \r
2162          .hword  (0x58<<8)               \r
2163          .hword  (0x59<<8)            |(1<<VFlag)\r
2164          .hword  (0x5A<<8)            |(1<<VFlag)\r
2165          .hword  (0x5B<<8)               \r
2166          .hword  (0x5C<<8)            |(1<<VFlag)\r
2167          .hword  (0x5D<<8)               \r
2168          .hword  (0x5E<<8)               \r
2169          .hword  (0x5F<<8)            |(1<<VFlag)\r
2170          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2171          .hword  (0x61<<8)      |(1<<HFlag)      \r
2172          .hword  (0x62<<8)      |(1<<HFlag)      \r
2173          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2174          .hword  (0x64<<8)      |(1<<HFlag)      \r
2175          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2176          .hword  (0x66<<8)            |(1<<VFlag)\r
2177          .hword  (0x67<<8)               \r
2178          .hword  (0x68<<8)            \r
2179          .hword  (0x69<<8)         |(1<<VFlag)\r
2180          .hword  (0x6A<<8)         |(1<<VFlag)\r
2181          .hword  (0x6B<<8)            \r
2182          .hword  (0x6C<<8)         |(1<<VFlag)\r
2183          .hword  (0x6D<<8)            \r
2184          .hword  (0x6E<<8)            \r
2185          .hword  (0x6F<<8)         |(1<<VFlag)\r
2186          .hword  (0x70<<8)      |(1<<HFlag)      \r
2187          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2188          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2189          .hword  (0x73<<8)      |(1<<HFlag)      \r
2190          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2191          .hword  (0x75<<8)      |(1<<HFlag)      \r
2192          .hword  (0x76<<8)               \r
2193          .hword  (0x77<<8)            |(1<<VFlag)\r
2194          .hword  (0x78<<8)         |(1<<VFlag)\r
2195          .hword  (0x79<<8)            \r
2196          .hword  (0x7A<<8)            \r
2197          .hword  (0x7B<<8)         |(1<<VFlag)\r
2198          .hword  (0x7C<<8)            \r
2199          .hword  (0x7D<<8)         |(1<<VFlag)\r
2200          .hword  (0x7E<<8)         |(1<<VFlag)\r
2201          .hword  (0x7F<<8)            \r
2202          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2203          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2204          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2205          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2206          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2207          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2208          .hword  (0x86<<8)|(1<<SFlag)               \r
2209          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
2210          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
2211          .hword  (0x89<<8)|(1<<SFlag)            \r
2212          .hword  (0x8A<<8)|(1<<SFlag)            \r
2213          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)\r
2214          .hword  (0x8C<<8)|(1<<SFlag)            \r
2215          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)\r
2216          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)\r
2217          .hword  (0x8F<<8)|(1<<SFlag)            \r
2218          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2219          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2220          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2221          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2222          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2223          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2224          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
2225          .hword  (0x97<<8)|(1<<SFlag)               \r
2226          .hword  (0x98<<8)|(1<<SFlag)            \r
2227          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
2228          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)\r
2229          .hword  (0x9B<<8)|(1<<SFlag)            \r
2230          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)\r
2231          .hword  (0x9D<<8)|(1<<SFlag)            \r
2232          .hword  (0x9E<<8)|(1<<SFlag)            \r
2233          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)\r
2234          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2235          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2236          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2237          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2238          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2239          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2240          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2241          .hword  (0x07<<8)                     |(1<<CFlag)\r
2242          .hword  (0x08<<8)                  |(1<<CFlag)\r
2243          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2244          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2245          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2246          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2247          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2248          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2249          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2250          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2251          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2252          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2253          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2254          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2255          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2256          .hword  (0x16<<8)                     |(1<<CFlag)\r
2257          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2258          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2259          .hword  (0x19<<8)                  |(1<<CFlag)\r
2260          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2261          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2262          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2263          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2264          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2265          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2266          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2267          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2268          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2269          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2270          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2271          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2272          .hword  (0x26<<8)                  |(1<<CFlag)\r
2273          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2274          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2275          .hword  (0x29<<8)               |(1<<CFlag)\r
2276          .hword  (0x2A<<8)               |(1<<CFlag)\r
2277          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2278          .hword  (0x2C<<8)               |(1<<CFlag)\r
2279          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2280          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2281          .hword  (0x2F<<8)               |(1<<CFlag)\r
2282          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2283          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2284          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2285          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2286          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2287          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2288          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2289          .hword  (0x37<<8)                  |(1<<CFlag)\r
2290          .hword  (0x38<<8)               |(1<<CFlag)\r
2291          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2292          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2293          .hword  (0x3B<<8)               |(1<<CFlag)\r
2294          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2295          .hword  (0x3D<<8)               |(1<<CFlag)\r
2296          .hword  (0x3E<<8)               |(1<<CFlag)\r
2297          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2298          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2299          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2300          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2301          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2302          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2303          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2304          .hword  (0x46<<8)                     |(1<<CFlag)\r
2305          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2306          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2307          .hword  (0x49<<8)                  |(1<<CFlag)\r
2308          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2309          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2310          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2311          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2312          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2313          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2314          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2315          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2316          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2317          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2318          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2319          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2320          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2321          .hword  (0x57<<8)                     |(1<<CFlag)\r
2322          .hword  (0x58<<8)                  |(1<<CFlag)\r
2323          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2324          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2325          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2326          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2327          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2328          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2329          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2330          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2331          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2332          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2333          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2334          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2335          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2336          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2337          .hword  (0x67<<8)                  |(1<<CFlag)\r
2338          .hword  (0x68<<8)               |(1<<CFlag)\r
2339          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2340          .hword  (0x6A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2341          .hword  (0x6B<<8)               |(1<<CFlag)\r
2342          .hword  (0x6C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2343          .hword  (0x6D<<8)               |(1<<CFlag)\r
2344          .hword  (0x6E<<8)               |(1<<CFlag)\r
2345          .hword  (0x6F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2346          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2347          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2348          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2349          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2350          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2351          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2352          .hword  (0x76<<8)                  |(1<<CFlag)\r
2353          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2354          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2355          .hword  (0x79<<8)               |(1<<CFlag)\r
2356          .hword  (0x7A<<8)               |(1<<CFlag)\r
2357          .hword  (0x7B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2358          .hword  (0x7C<<8)               |(1<<CFlag)\r
2359          .hword  (0x7D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2360          .hword  (0x7E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2361          .hword  (0x7F<<8)               |(1<<CFlag)\r
2362          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2363          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2364          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2365          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2366          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2367          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2368          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2369          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2370          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2371          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
2372          .hword  (0x8A<<8)|(1<<SFlag)               |(1<<CFlag)\r
2373          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2374          .hword  (0x8C<<8)|(1<<SFlag)               |(1<<CFlag)\r
2375          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2376          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2377          .hword  (0x8F<<8)|(1<<SFlag)               |(1<<CFlag)\r
2378          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2379          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2380          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2381          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2382          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2383          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2384          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2385          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2386          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
2387          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2388          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2389          .hword  (0x9B<<8)|(1<<SFlag)               |(1<<CFlag)\r
2390          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2391          .hword  (0x9D<<8)|(1<<SFlag)               |(1<<CFlag)\r
2392          .hword  (0x9E<<8)|(1<<SFlag)               |(1<<CFlag)\r
2393          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2394          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2395          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2396          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2397          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2398          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2399          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2400          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2401          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2402          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2403          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2404          .hword  (0xAA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2405          .hword  (0xAB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2406          .hword  (0xAC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2407          .hword  (0xAD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2408          .hword  (0xAE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2409          .hword  (0xAF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2410          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2411          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2412          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2413          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2414          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2415          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2416          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2417          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2418          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2419          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2420          .hword  (0xBA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2421          .hword  (0xBB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2422          .hword  (0xBC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2423          .hword  (0xBD<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2424          .hword  (0xBE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2425          .hword  (0xBF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2426          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2427          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2428          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2429          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2430          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2431          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2432          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2433          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2434          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
2435          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2436          .hword  (0xCA<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2437          .hword  (0xCB<<8)|(1<<SFlag)               |(1<<CFlag)\r
2438          .hword  (0xCC<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2439          .hword  (0xCD<<8)|(1<<SFlag)               |(1<<CFlag)\r
2440          .hword  (0xCE<<8)|(1<<SFlag)               |(1<<CFlag)\r
2441          .hword  (0xCF<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2442          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2443          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2444          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2445          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2446          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2447          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2448          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2449          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2450          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2451          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
2452          .hword  (0xDA<<8)|(1<<SFlag)               |(1<<CFlag)\r
2453          .hword  (0xDB<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2454          .hword  (0xDC<<8)|(1<<SFlag)               |(1<<CFlag)\r
2455          .hword  (0xDD<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2456          .hword  (0xDE<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2457          .hword  (0xDF<<8)|(1<<SFlag)               |(1<<CFlag)\r
2458          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2459          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2460          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2461          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2462          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2463          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2464          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2465          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2466          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2467          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2468          .hword  (0xEA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2469          .hword  (0xEB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2470          .hword  (0xEC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2471          .hword  (0xED<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2472          .hword  (0xEE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2473          .hword  (0xEF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2474          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2475          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2476          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2477          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2478          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2479          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2480          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2481          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2482          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2483          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2484          .hword  (0xFA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2485          .hword  (0xFB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2486          .hword  (0xFC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2487          .hword  (0xFD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2488          .hword  (0xFE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2489          .hword  (0xFF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2490          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2491          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2492          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2493          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2494          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2495          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2496          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2497          .hword  (0x07<<8)                     |(1<<CFlag)\r
2498          .hword  (0x08<<8)                  |(1<<CFlag)\r
2499          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2500          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2501          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2502          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2503          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2504          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2505          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2506          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2507          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2508          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2509          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2510          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2511          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2512          .hword  (0x16<<8)                     |(1<<CFlag)\r
2513          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2514          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2515          .hword  (0x19<<8)                  |(1<<CFlag)\r
2516          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2517          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2518          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2519          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2520          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2521          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2522          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2523          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2524          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2525          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2526          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2527          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2528          .hword  (0x26<<8)                  |(1<<CFlag)\r
2529          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2530          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2531          .hword  (0x29<<8)               |(1<<CFlag)\r
2532          .hword  (0x2A<<8)               |(1<<CFlag)\r
2533          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2534          .hword  (0x2C<<8)               |(1<<CFlag)\r
2535          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2536          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2537          .hword  (0x2F<<8)               |(1<<CFlag)\r
2538          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2539          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2540          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2541          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2542          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2543          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2544          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2545          .hword  (0x37<<8)                  |(1<<CFlag)\r
2546          .hword  (0x38<<8)               |(1<<CFlag)\r
2547          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2548          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2549          .hword  (0x3B<<8)               |(1<<CFlag)\r
2550          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2551          .hword  (0x3D<<8)               |(1<<CFlag)\r
2552          .hword  (0x3E<<8)               |(1<<CFlag)\r
2553          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2554          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2555          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2556          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2557          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2558          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2559          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2560          .hword  (0x46<<8)                     |(1<<CFlag)\r
2561          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2562          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2563          .hword  (0x49<<8)                  |(1<<CFlag)\r
2564          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2565          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2566          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2567          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2568          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2569          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2570          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2571          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2572          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2573          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2574          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2575          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2576          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2577          .hword  (0x57<<8)                     |(1<<CFlag)\r
2578          .hword  (0x58<<8)                  |(1<<CFlag)\r
2579          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2580          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2581          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2582          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2583          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2584          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2585          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2586          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2587          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2588          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2589          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2590          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2591          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2592          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2593          .hword  (0x01<<8)                  |(1<<NFlag)   \r
2594          .hword  (0x02<<8)                  |(1<<NFlag)   \r
2595          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2596          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2597          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2598          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2599          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2600          .hword  (0x08<<8)               |(1<<NFlag)   \r
2601          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2602          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2603          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2604          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2605          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2606          .hword  (0x08<<8)               |(1<<NFlag)   \r
2607          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2608          .hword  (0x10<<8)                  |(1<<NFlag)   \r
2609          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2610          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2611          .hword  (0x13<<8)                  |(1<<NFlag)   \r
2612          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2613          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2614          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2615          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2616          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2617          .hword  (0x19<<8)               |(1<<NFlag)   \r
2618          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2619          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2620          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2621          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2622          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2623          .hword  (0x19<<8)               |(1<<NFlag)   \r
2624          .hword  (0x20<<8)               |(1<<NFlag)   \r
2625          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2626          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2627          .hword  (0x23<<8)               |(1<<NFlag)   \r
2628          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2629          .hword  (0x25<<8)               |(1<<NFlag)   \r
2630          .hword  (0x26<<8)               |(1<<NFlag)   \r
2631          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2632          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2633          .hword  (0x29<<8)            |(1<<NFlag)   \r
2634          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2635          .hword  (0x25<<8)               |(1<<NFlag)   \r
2636          .hword  (0x26<<8)               |(1<<NFlag)   \r
2637          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2638          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2639          .hword  (0x29<<8)            |(1<<NFlag)   \r
2640          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2641          .hword  (0x31<<8)               |(1<<NFlag)   \r
2642          .hword  (0x32<<8)               |(1<<NFlag)   \r
2643          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2644          .hword  (0x34<<8)               |(1<<NFlag)   \r
2645          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2646          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2647          .hword  (0x37<<8)               |(1<<NFlag)   \r
2648          .hword  (0x38<<8)            |(1<<NFlag)   \r
2649          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2650          .hword  (0x34<<8)               |(1<<NFlag)   \r
2651          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2652          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2653          .hword  (0x37<<8)               |(1<<NFlag)   \r
2654          .hword  (0x38<<8)            |(1<<NFlag)   \r
2655          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2656          .hword  (0x40<<8)                  |(1<<NFlag)   \r
2657          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2658          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2659          .hword  (0x43<<8)                  |(1<<NFlag)   \r
2660          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2661          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2662          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2663          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2664          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2665          .hword  (0x49<<8)               |(1<<NFlag)   \r
2666          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2667          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2668          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2669          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2670          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2671          .hword  (0x49<<8)               |(1<<NFlag)   \r
2672          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2673          .hword  (0x51<<8)                  |(1<<NFlag)   \r
2674          .hword  (0x52<<8)                  |(1<<NFlag)   \r
2675          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2676          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2677          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2678          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2679          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2680          .hword  (0x58<<8)               |(1<<NFlag)   \r
2681          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2682          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2683          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2684          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2685          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2686          .hword  (0x58<<8)               |(1<<NFlag)   \r
2687          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2688          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2689          .hword  (0x61<<8)               |(1<<NFlag)   \r
2690          .hword  (0x62<<8)               |(1<<NFlag)   \r
2691          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2692          .hword  (0x64<<8)               |(1<<NFlag)   \r
2693          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2694          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2695          .hword  (0x67<<8)               |(1<<NFlag)   \r
2696          .hword  (0x68<<8)            |(1<<NFlag)   \r
2697          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2698          .hword  (0x64<<8)               |(1<<NFlag)   \r
2699          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2700          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2701          .hword  (0x67<<8)               |(1<<NFlag)   \r
2702          .hword  (0x68<<8)            |(1<<NFlag)   \r
2703          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2704          .hword  (0x70<<8)               |(1<<NFlag)   \r
2705          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2706          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2707          .hword  (0x73<<8)               |(1<<NFlag)   \r
2708          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2709          .hword  (0x75<<8)               |(1<<NFlag)   \r
2710          .hword  (0x76<<8)               |(1<<NFlag)   \r
2711          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2712          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2713          .hword  (0x79<<8)            |(1<<NFlag)   \r
2714          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2715          .hword  (0x75<<8)               |(1<<NFlag)   \r
2716          .hword  (0x76<<8)               |(1<<NFlag)   \r
2717          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2718          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2719          .hword  (0x79<<8)            |(1<<NFlag)   \r
2720          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2721          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2722          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2723          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2724          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2725          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2726          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2727          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2728          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2729          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2730          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2731          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2732          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2733          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2734          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2735          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2736          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2737          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2738          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2739          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2740          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2741          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2742          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2743          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2744          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2745          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2746          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2747          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2748          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2749          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2750          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2751          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2752          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2753          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2754          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2755          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2756          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2757          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2758          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2759          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2760          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2761          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2762          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2763          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2764          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2765          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2766          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2767          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2768          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2769          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2770          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2771          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2772          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2773          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2774          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2775          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2776          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2777          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2778          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2779          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2780          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2781          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2782          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2783          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2784          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2785          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
2786          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
2787          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2788          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2789          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2790          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2791          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2792          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2793          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2794          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2795          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2796          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2797          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2798          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2799          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2800          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
2801          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2802          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2803          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
2804          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2805          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2806          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2807          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2808          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2809          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2810          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2811          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2812          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2813          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2814          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2815          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2816          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2817          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2818          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2819          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2820          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2821          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2822          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2823          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2824          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2825          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2826          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2827          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2828          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2829          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2830          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2831          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2832          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2833          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2834          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2835          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2836          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2837          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2838          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2839          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2840          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2841          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2842          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2843          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2844          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2845          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2846          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2847          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2848          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2849          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2850          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2851          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2852          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2853          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2854          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2855          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2856          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2857          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2858          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2859          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2860          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2861          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2862          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2863          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2864          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2865          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2866          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2867          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2868          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2869          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2870          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2871          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2872          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2873          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2874          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2875          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2876          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2877          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2878          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2879          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2880          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2881          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2882          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2883          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2884          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2885          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2886          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2887          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2888          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2889          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2890          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2891          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2892          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2893          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2894          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2895          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2896          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2897          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2898          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2899          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2900          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2901          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2902          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2903          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2904          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2905          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2906          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2907          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2908          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2909          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2910          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2911          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2912          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2913          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2914          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2915          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2916          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2917          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2918          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2919          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2920          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2921          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2922          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2923          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2924          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2925          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2926          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2927          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2928          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2929          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2930          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2931          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2932          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2933          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2934          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2935          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2936          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2937          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2938          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2939          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2940          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2941          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2942          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2943          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2944          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2945          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2946          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2947          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2948          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2949          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2950          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2951          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2952          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2953          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2954          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2955          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2956          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2957          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2958          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2959          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2960          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2961          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2962          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2963          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2964          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2965          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2966          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2967          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2968          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2969          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2970          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2971          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2972          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2973          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2974          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2975          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2976          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
2977          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2978          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2979          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
2980          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2981          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2982          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2983          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2984          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2985          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2986          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2987          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2988          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2989          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2990          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2991          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2992          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2993          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
2994          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
2995          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2996          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2997          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2998          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2999          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3000          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3001          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3002          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3003          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3004          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3005          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3006          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3007          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3008          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3009          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3010          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3011          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3012          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3013          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3014          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3015          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3016          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3017          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3018          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3019          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3020          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3021          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3022          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3023          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3024          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3025          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3026          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3027          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3028          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3029          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3030          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3031          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3032          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3033          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3034          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3035          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3036          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3037          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3038          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3039          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3040          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3041          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3042          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3043          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3044          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3045          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3046          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3047          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3048          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3049          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3050          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3051          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3052          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3053          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3054          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3055          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3056          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3057          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3058          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3059          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3060          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3061          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3062          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3063          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3064          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3065          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3066          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3067          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3068          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3069          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3070          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3071          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3072          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3073          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3074          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3075          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3076          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3077          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3078          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3079          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3080          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3081          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3082          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3083          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3084          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3085          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3086          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3087          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3088          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3089          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3090          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3091          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3092          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3093          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3094          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3095          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3096          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3097          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3098          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3099          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3100          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3101          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3102          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3103          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3104          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3105          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3106          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3107          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3108          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3109          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3110          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3111          .hword  (0x01<<8)                  |(1<<NFlag)   \r
3112          .hword  (0x02<<8)                  |(1<<NFlag)   \r
3113          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3114          .hword  (0x04<<8)                  |(1<<NFlag)   \r
3115          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3116          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3117          .hword  (0x07<<8)                  |(1<<NFlag)   \r
3118          .hword  (0x08<<8)               |(1<<NFlag)   \r
3119          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3120          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3121          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3122          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3123          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3124          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3125          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3126          .hword  (0x10<<8)                  |(1<<NFlag)   \r
3127          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3128          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3129          .hword  (0x13<<8)                  |(1<<NFlag)   \r
3130          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3131          .hword  (0x15<<8)                  |(1<<NFlag)   \r
3132          .hword  (0x16<<8)                  |(1<<NFlag)   \r
3133          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3134          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3135          .hword  (0x19<<8)               |(1<<NFlag)   \r
3136          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3137          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3138          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3139          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3140          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3141          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3142          .hword  (0x20<<8)               |(1<<NFlag)   \r
3143          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3144          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3145          .hword  (0x23<<8)               |(1<<NFlag)   \r
3146          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3147          .hword  (0x25<<8)               |(1<<NFlag)   \r
3148          .hword  (0x26<<8)               |(1<<NFlag)   \r
3149          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3150          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3151          .hword  (0x29<<8)            |(1<<NFlag)   \r
3152          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3153          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3154          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3155          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3156          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3157          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3158          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3159          .hword  (0x31<<8)               |(1<<NFlag)   \r
3160          .hword  (0x32<<8)               |(1<<NFlag)   \r
3161          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3162          .hword  (0x34<<8)               |(1<<NFlag)   \r
3163          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3164          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3165          .hword  (0x37<<8)               |(1<<NFlag)   \r
3166          .hword  (0x38<<8)            |(1<<NFlag)   \r
3167          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3168          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3169          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3170          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3171          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3172          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3173          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3174          .hword  (0x40<<8)                  |(1<<NFlag)   \r
3175          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3176          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3177          .hword  (0x43<<8)                  |(1<<NFlag)   \r
3178          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3179          .hword  (0x45<<8)                  |(1<<NFlag)   \r
3180          .hword  (0x46<<8)                  |(1<<NFlag)   \r
3181          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3182          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3183          .hword  (0x49<<8)               |(1<<NFlag)   \r
3184          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3185          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3186          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3187          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3188          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3189          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3190          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3191          .hword  (0x51<<8)                  |(1<<NFlag)   \r
3192          .hword  (0x52<<8)                  |(1<<NFlag)   \r
3193          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3194          .hword  (0x54<<8)                  |(1<<NFlag)   \r
3195          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3196          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3197          .hword  (0x57<<8)                  |(1<<NFlag)   \r
3198          .hword  (0x58<<8)               |(1<<NFlag)   \r
3199          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3200          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3201          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3202          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3203          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3204          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3205          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3206          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3207          .hword  (0x61<<8)               |(1<<NFlag)   \r
3208          .hword  (0x62<<8)               |(1<<NFlag)   \r
3209          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3210          .hword  (0x64<<8)               |(1<<NFlag)   \r
3211          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3212          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3213          .hword  (0x67<<8)               |(1<<NFlag)   \r
3214          .hword  (0x68<<8)            |(1<<NFlag)   \r
3215          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3216          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3217          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3218          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3219          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3220          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3221          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3222          .hword  (0x70<<8)               |(1<<NFlag)   \r
3223          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3224          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3225          .hword  (0x73<<8)               |(1<<NFlag)   \r
3226          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3227          .hword  (0x75<<8)               |(1<<NFlag)   \r
3228          .hword  (0x76<<8)               |(1<<NFlag)   \r
3229          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3230          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3231          .hword  (0x79<<8)            |(1<<NFlag)   \r
3232          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3233          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3234          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3235          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3236          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3237          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3238          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3239          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3240          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3241          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3242          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3243          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3244          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3245          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3246          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3247          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
3248          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3249          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3250          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3251          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3252          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3253          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3254          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3255          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3256          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3257          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3258          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3259          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3260          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3261          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3262          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3263          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3264          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3265          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3266          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3267          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3268          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3269          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3270          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3271          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3272          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3273          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3274          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3275          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3276          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3277          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3278          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3279          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3280          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3281          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3282          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3283          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3284          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3285          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3286          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3287          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3288          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3289          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3290          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3291          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3292          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3293          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3294          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3295          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3296          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3297          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3298          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3299          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3300          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3301          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3302          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3303          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3304          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3305          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3306          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3307          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3308          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3309          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3310          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3311          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3312          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3313          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3314          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3315          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3316          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3317          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3318          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3319          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3320          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3321          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3322          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3323          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3324          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3325          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3326          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3327          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3328          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3329          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3330          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3331          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3332          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3333          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3334          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3335          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3336          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3337          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3338          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3339          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3340          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3341          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3342          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3343          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3344          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3345          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3346          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3347          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3348          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3349          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3350          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3351          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3352          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3353          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3354          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3355          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3356          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3357          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3358          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3359          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3360          .hword  (0x9A<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3361          .hword  (0x9B<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3362          .hword  (0x9C<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3363          .hword  (0x9D<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3364          .hword  (0x9E<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3365          .hword  (0x9F<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3366          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3367          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3368          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3369          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3370          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3371          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3372          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3373          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3374          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3375          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3376          .hword  (0xAA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3377          .hword  (0xAB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3378          .hword  (0xAC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3379          .hword  (0xAD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3380          .hword  (0xAE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3381          .hword  (0xAF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3382          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3383          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3384          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3385          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3386          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3387          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3388          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3389          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3390          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3391          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3392          .hword  (0xBA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3393          .hword  (0xBB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3394          .hword  (0xBC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3395          .hword  (0xBD<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3396          .hword  (0xBE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3397          .hword  (0xBF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3398          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3399          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3400          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3401          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3402          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3403          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3404          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3405          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3406          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3407          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3408          .hword  (0xCA<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3409          .hword  (0xCB<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3410          .hword  (0xCC<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3411          .hword  (0xCD<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3412          .hword  (0xCE<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3413          .hword  (0xCF<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3414          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3415          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3416          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3417          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3418          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3419          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3420          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3421          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3422          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3423          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3424          .hword  (0xDA<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3425          .hword  (0xDB<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3426          .hword  (0xDC<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3427          .hword  (0xDD<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3428          .hword  (0xDE<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3429          .hword  (0xDF<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3430          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3431          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3432          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3433          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3434          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3435          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3436          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3437          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3438          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3439          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3440          .hword  (0xEA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3441          .hword  (0xEB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3442          .hword  (0xEC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3443          .hword  (0xED<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3444          .hword  (0xEE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3445          .hword  (0xEF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3446          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3447          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3448          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3449          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3450          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3451          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3452          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3453          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3454          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3455          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3456          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3457          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3458          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3459          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3460          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3461          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3462          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3463          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3464          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3465          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3466          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3467          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3468          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3469          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3470          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
3471          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3472          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3473          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3474          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3475          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3476          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3477          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3478          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3479          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3480          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3481          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3482          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3483          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3484          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3485          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3486          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3487          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
3488          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3489          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3490          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3491          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3492          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3493          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3494          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
3495          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3496          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3497          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
3498          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3499          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
3500          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
3501          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3502          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3503          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
3504          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3505          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3506          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3507          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3508          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3509          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3510          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3511          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
3512          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
3513          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3514          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3515          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3516          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3517          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3518          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3519          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3520          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3521          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3522          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3523          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3524          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3525          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3526          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3527          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3528          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3529          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3530          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3531          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3532          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3533          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3534          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3535          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3536          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3537          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3538          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3539          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3540          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3541          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3542          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3543          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3544          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3545          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3546          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3547          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3548          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3549          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3550          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3551          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3552          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3553          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3554          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3555          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3556          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3557          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3558          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3559          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3560          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3561          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3562          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3563          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3564          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3565          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3566          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3567          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3568          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3569          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3570          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3571          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3572          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3573          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3574          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3575          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3576          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3577          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3578          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3579          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3580          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3581          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3582          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3583          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3584          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3585          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3586          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3587          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3588          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3589          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3590          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3591          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3592          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3593          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3594          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3595          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3596          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3597          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3598          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3599          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3600          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3601          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3602          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3603          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3604          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3605          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3606          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3607          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3608          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3609          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3610          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3611          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3612          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3613          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3614          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3615          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3616          \r
3617 .align 4\r
3618 \r
3619 AF_Z80:  .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 0\r
3620          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 1\r
3621          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 2\r
3622          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 3\r
3623          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 4\r
3624          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 5\r
3625          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 6\r
3626          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 7\r
3627          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 8\r
3628          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 9\r
3629          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 10\r
3630          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 11\r
3631          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 12\r
3632          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 13\r
3633          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 14\r
3634          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 15\r
3635          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 16\r
3636          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 17\r
3637          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 18\r
3638          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 19\r
3639          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 20\r
3640          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 21\r
3641          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 22\r
3642          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 23\r
3643          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 24\r
3644          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 25\r
3645          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 26\r
3646          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 27\r
3647          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 28\r
3648          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 29\r
3649          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 30\r
3650          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 31\r
3651          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 32\r
3652          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 33\r
3653          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 34\r
3654          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 35\r
3655          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 36\r
3656          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 37\r
3657          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 38\r
3658          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 39\r
3659          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 40\r
3660          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 41\r
3661          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 42\r
3662          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 43\r
3663          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 44\r
3664          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 45\r
3665          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 46\r
3666          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 47\r
3667          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 48\r
3668          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 49\r
3669          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 50\r
3670          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 51\r
3671          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 52\r
3672          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 53\r
3673          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 54\r
3674          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 55\r
3675          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 56\r
3676          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 57\r
3677          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 58\r
3678          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 59\r
3679          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 60\r
3680          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 61\r
3681          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 62\r
3682          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 63\r
3683          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 64\r
3684          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 65\r
3685          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 66\r
3686          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 67\r
3687          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 68\r
3688          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 69\r
3689          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 70\r
3690          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 71\r
3691          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 72\r
3692          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 73\r
3693          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 74\r
3694          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 75\r
3695          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 76\r
3696          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 77\r
3697          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 78\r
3698          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 79\r
3699          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 80\r
3700          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 81\r
3701          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 82\r
3702          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 83\r
3703          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 84\r
3704          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 85\r
3705          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 86\r
3706          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 87\r
3707          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 88\r
3708          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 89\r
3709          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 90\r
3710          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 91\r
3711          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 92\r
3712          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 93\r
3713          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 94\r
3714          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 95\r
3715          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 96\r
3716          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 97\r
3717          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 98\r
3718          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 99\r
3719          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 100\r
3720          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 101\r
3721          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 102\r
3722          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 103\r
3723          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 104\r
3724          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 105\r
3725          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 106\r
3726          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 107\r
3727          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 108\r
3728          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 109\r
3729          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 110\r
3730          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 111\r
3731          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 112\r
3732          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 113\r
3733          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 114\r
3734          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 115\r
3735          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 116\r
3736          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 117\r
3737          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 118\r
3738          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 119\r
3739          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 120\r
3740          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 121\r
3741          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 122\r
3742          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 123\r
3743          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 124\r
3744          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 125\r
3745          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 126\r
3746          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 127\r
3747          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 128\r
3748          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 129\r
3749          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 130\r
3750          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 131\r
3751          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 132\r
3752          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 133\r
3753          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 134\r
3754          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 135\r
3755          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 136\r
3756          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 137\r
3757          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 138\r
3758          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 139\r
3759          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 140\r
3760          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 141\r
3761          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 142\r
3762          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 143\r
3763          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 144\r
3764          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 145\r
3765          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 146\r
3766          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 147\r
3767          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 148\r
3768          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 149\r
3769          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 150\r
3770          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 151\r
3771          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 152\r
3772          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 153\r
3773          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 154\r
3774          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 155\r
3775          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 156\r
3776          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 157\r
3777          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 158\r
3778          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 159\r
3779          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 160\r
3780          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 161\r
3781          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 162\r
3782          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 163\r
3783          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 164\r
3784          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 165\r
3785          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 166\r
3786          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 167\r
3787          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 168\r
3788          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 169\r
3789          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 170\r
3790          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 171\r
3791          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 172\r
3792          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 173\r
3793          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 174\r
3794          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 175\r
3795          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 176\r
3796          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 177\r
3797          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 178\r
3798          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 179\r
3799          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 180\r
3800          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 181\r
3801          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 182\r
3802          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 183\r
3803          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 184\r
3804          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 185\r
3805          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 186\r
3806          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 187\r
3807          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 188\r
3808          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 189\r
3809          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 190\r
3810          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 191\r
3811          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 192\r
3812          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 193\r
3813          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 194\r
3814          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 195\r
3815          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 196\r
3816          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 197\r
3817          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 198\r
3818          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 199\r
3819          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 200\r
3820          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 201\r
3821          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 202\r
3822          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 203\r
3823          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 204\r
3824          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 205\r
3825          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 206\r
3826          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 207\r
3827          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 208\r
3828          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 209\r
3829          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 210\r
3830          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 211\r
3831          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 212\r
3832          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 213\r
3833          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 214\r
3834          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 215\r
3835          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 216\r
3836          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 217\r
3837          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 218\r
3838          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 219\r
3839          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 220\r
3840          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 221\r
3841          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 222\r
3842          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 223\r
3843          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 224\r
3844          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 225\r
3845          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 226\r
3846          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 227\r
3847          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 228\r
3848          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 229\r
3849          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 230\r
3850          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 231\r
3851          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 232\r
3852          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 233\r
3853          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 234\r
3854          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 235\r
3855          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 236\r
3856          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 237\r
3857          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 238\r
3858          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 239\r
3859          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 240\r
3860          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 241\r
3861          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 242\r
3862          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 243\r
3863          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 244\r
3864          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 245\r
3865          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 246\r
3866          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 247\r
3867          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 248\r
3868          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 249\r
3869          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 250\r
3870          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 251\r
3871          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 252\r
3872          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 253\r
3873          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 254\r
3874          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 255\r
3875 \r
3876 .align 4\r
3877 \r
3878 AF_ARM:  .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 0\r
3879          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 1\r
3880          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 2\r
3881          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 3\r
3882          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 4\r
3883          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 5\r
3884          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 6\r
3885          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 7\r
3886          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 8\r
3887          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 9\r
3888          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 10\r
3889          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 11\r
3890          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 12\r
3891          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 13\r
3892          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 14\r
3893          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 15\r
3894          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 16\r
3895          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 17\r
3896          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 18\r
3897          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 19\r
3898          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 20\r
3899          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 21\r
3900          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 22\r
3901          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 23\r
3902          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 24\r
3903          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 25\r
3904          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 26\r
3905          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 27\r
3906          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 28\r
3907          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 29\r
3908          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 30\r
3909          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 31\r
3910          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 32\r
3911          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 33\r
3912          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 34\r
3913          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 35\r
3914          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 36\r
3915          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 37\r
3916          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 38\r
3917          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 39\r
3918          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 40\r
3919          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 41\r
3920          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 42\r
3921          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 43\r
3922          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 44\r
3923          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 45\r
3924          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 46\r
3925          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 47\r
3926          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 48\r
3927          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 49\r
3928          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 50\r
3929          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 51\r
3930          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 52\r
3931          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 53\r
3932          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 54\r
3933          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 55\r
3934          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 56\r
3935          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 57\r
3936          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 58\r
3937          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 59\r
3938          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 60\r
3939          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 61\r
3940          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 62\r
3941          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 63\r
3942          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 64\r
3943          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 65\r
3944          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 66\r
3945          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 67\r
3946          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 68\r
3947          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 69\r
3948          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 70\r
3949          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 71\r
3950          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 72\r
3951          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 73\r
3952          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 74\r
3953          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 75\r
3954          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 76\r
3955          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 77\r
3956          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 78\r
3957          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 79\r
3958          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 80\r
3959          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 81\r
3960          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 82\r
3961          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 83\r
3962          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 84\r
3963          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 85\r
3964          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 86\r
3965          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 87\r
3966          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 88\r
3967          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 89\r
3968          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 90\r
3969          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 91\r
3970          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 92\r
3971          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 93\r
3972          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 94\r
3973          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 95\r
3974          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 96\r
3975          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 97\r
3976          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 98\r
3977          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 99\r
3978          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 100\r
3979          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 101\r
3980          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 102\r
3981          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 103\r
3982          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 104\r
3983          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 105\r
3984          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 106\r
3985          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 107\r
3986          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 108\r
3987          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 109\r
3988          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 110\r
3989          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 111\r
3990          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 112\r
3991          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 113\r
3992          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 114\r
3993          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 115\r
3994          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 116\r
3995          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 117\r
3996          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 118\r
3997          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 119\r
3998          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 120\r
3999          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 121\r
4000          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 122\r
4001          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 123\r
4002          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 124\r
4003          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 125\r
4004          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 126\r
4005          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 127\r
4006          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 128\r
4007          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 129\r
4008          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 130\r
4009          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 131\r
4010          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 132\r
4011          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 133\r
4012          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 134\r
4013          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 135\r
4014          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 136\r
4015          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 137\r
4016          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 138\r
4017          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 139\r
4018          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 140\r
4019          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 141\r
4020          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 142\r
4021          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 143\r
4022          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 144\r
4023          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 145\r
4024          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 146\r
4025          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 147\r
4026          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 148\r
4027          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 149\r
4028          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 150\r
4029          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 151\r
4030          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 152\r
4031          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 153\r
4032          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 154\r
4033          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 155\r
4034          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 156\r
4035          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 157\r
4036          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 158\r
4037          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 159\r
4038          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 160\r
4039          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 161\r
4040          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 162\r
4041          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 163\r
4042          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 164\r
4043          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 165\r
4044          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 166\r
4045          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 167\r
4046          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 168\r
4047          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 169\r
4048          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 170\r
4049          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 171\r
4050          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 172\r
4051          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 173\r
4052          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 174\r
4053          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 175\r
4054          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 176\r
4055          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 177\r
4056          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 178\r
4057          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 179\r
4058          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 180\r
4059          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 181\r
4060          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 182\r
4061          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 183\r
4062          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 184\r
4063          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 185\r
4064          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 186\r
4065          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 187\r
4066          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 188\r
4067          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 189\r
4068          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 190\r
4069          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 191\r
4070          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 192\r
4071          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 193\r
4072          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 194\r
4073          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 195\r
4074          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 196\r
4075          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 197\r
4076          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 198\r
4077          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 199\r
4078          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 200\r
4079          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 201\r
4080          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 202\r
4081          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 203\r
4082          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 204\r
4083          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 205\r
4084          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 206\r
4085          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 207\r
4086          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 208\r
4087          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 209\r
4088          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 210\r
4089          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 211\r
4090          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 212\r
4091          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 213\r
4092          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 214\r
4093          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 215\r
4094          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 216\r
4095          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 217\r
4096          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 218\r
4097          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 219\r
4098          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 220\r
4099          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 221\r
4100          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 222\r
4101          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 223\r
4102          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 224\r
4103          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 225\r
4104          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 226\r
4105          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 227\r
4106          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 228\r
4107          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 229\r
4108          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 230\r
4109          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 231\r
4110          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 232\r
4111          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 233\r
4112          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 234\r
4113          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 235\r
4114          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 236\r
4115          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 237\r
4116          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 238\r
4117          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 239\r
4118          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 240\r
4119          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 241\r
4120          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 242\r
4121          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 243\r
4122          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 244\r
4123          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 245\r
4124          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 246\r
4125          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 247\r
4126          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 248\r
4127          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 249\r
4128          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 250\r
4129          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 251\r
4130          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 252\r
4131          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 253\r
4132          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 254\r
4133          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 255\r
4134 \r
4135 .align 4\r
4136 \r
4137 PZSTable_data: .byte (1<<ZFlag)|(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4138         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4139         .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
4140         .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
4141         .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
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  (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
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<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4147         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4148         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4149         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4150         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4151         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4152         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4153         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4154         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4155         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4156         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4157         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4158         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4159         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\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<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\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<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\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<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4171         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4172         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\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<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\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 \r
4179 .align 4\r
4180 \r
4181 MAIN_opcodes:   \r
4182         .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
4183         .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
4184         .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
4185         .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
4186         .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
4187         .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
4188         .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
4189         .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
4190         .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
4191         .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
4192         .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
4193         .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
4194         .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
4195         .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
4196         .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
4197         .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
4198         .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
4199         .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
4200         .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
4201         .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
4202         .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
4203         .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
4204         .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
4205         .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
4206         .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
4207         .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
4208         .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
4209         .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
4210         .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
4211         .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
4212         .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
4213         .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
4214 \r
4215 .align 4\r
4216 \r
4217 EI_DUMMY_opcodes:\r
4218         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4219         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4220         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4221         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4222         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4223         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4224         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4225         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4226         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4227         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4228         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4229         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4230         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4231         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4232         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4233         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4234         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4235         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4236         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4237         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4238         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4239         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4240         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4241         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4242         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4243         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4244         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4245         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4246         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4247         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4248         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4249         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4250 \r
4251 .text\r
4252 .align 4\r
4253 \r
4254 ;@NOP\r
4255 opcode_0_0:\r
4256 ;@LD B,B\r
4257 opcode_4_0:\r
4258 ;@LD C,C\r
4259 opcode_4_9:\r
4260 ;@LD D,D\r
4261 opcode_5_2:\r
4262 ;@LD E,E\r
4263 opcode_5_B:\r
4264 ;@LD H,H\r
4265 opcode_6_4:\r
4266 ;@LD L,L\r
4267 opcode_6_D:\r
4268 ;@LD A,A\r
4269 opcode_7_F:\r
4270         fetch 4\r
4271 ;@LD BC,NN\r
4272 opcode_0_1:\r
4273         ldrb r0,[z80pc],#1\r
4274         ldrb r1,[z80pc],#1\r
4275         orr r0,r0,r1, lsl #8\r
4276         mov z80bc,r0, lsl #16\r
4277         fetch 10\r
4278 ;@LD (BC),A\r
4279 opcode_0_2:\r
4280         mov r0,z80a, lsr #24\r
4281         mov r1,z80bc, lsr #16\r
4282         writemem8\r
4283         fetch 7\r
4284 ;@INC BC\r
4285 opcode_0_3:\r
4286         add z80bc,z80bc,#1<<16\r
4287         fetch 6\r
4288 ;@INC B\r
4289 opcode_0_4:\r
4290         opINC8H z80bc\r
4291         fetch 4\r
4292 ;@DEC B\r
4293 opcode_0_5:\r
4294         opDEC8H z80bc\r
4295         fetch 4\r
4296 ;@LD B,N\r
4297 opcode_0_6:\r
4298         ldrb r1,[z80pc],#1\r
4299         and z80bc,z80bc,#0xFF<<16\r
4300         orr z80bc,z80bc,r1, lsl #24\r
4301         fetch 7\r
4302 ;@RLCA\r
4303 opcode_0_7:\r
4304         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4305         movs z80a,z80a, lsl #1\r
4306         orrcs z80a,z80a,#1<<24\r
4307         orrcs z80f,z80f,#1<<CFlag\r
4308         fetch 4\r
4309 ;@EX AF,AF'\r
4310 opcode_0_8:\r
4311         add r1,cpucontext,#z80a2\r
4312         swp z80a,z80a,[r1]\r
4313         add r1,cpucontext,#z80f2\r
4314         swp z80f,z80f,[r1]\r
4315         fetch 4\r
4316 ;@ADD HL,BC\r
4317 opcode_0_9:\r
4318         opADD16 z80hl z80bc\r
4319         fetch 11\r
4320 ;@LD A,(BC)\r
4321 opcode_0_A:\r
4322         mov r0,z80bc, lsr #16\r
4323         readmem8\r
4324         mov z80a,r0, lsl #24\r
4325         fetch 7\r
4326 ;@DEC BC\r
4327 opcode_0_B:\r
4328         sub z80bc,z80bc,#1<<16\r
4329         fetch 6\r
4330 ;@INC C\r
4331 opcode_0_C:\r
4332         opINC8L z80bc\r
4333         fetch 4\r
4334 ;@DEC C\r
4335 opcode_0_D:\r
4336         opDEC8L z80bc\r
4337         fetch 4\r
4338 ;@LD C,N\r
4339 opcode_0_E:\r
4340         ldrb r1,[z80pc],#1\r
4341         and z80bc,z80bc,#0xFF<<24\r
4342         orr z80bc,z80bc,r1, lsl #16\r
4343         fetch 7\r
4344 ;@RRCA\r
4345 opcode_0_F:\r
4346         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4347         movs z80a,z80a, lsr #25\r
4348         orrcs z80a,z80a,#1<<7\r
4349         orrcs z80f,z80f,#1<<CFlag\r
4350         mov z80a,z80a, lsl #24\r
4351         fetch 4\r
4352 ;@DJNZ $+2\r
4353 opcode_1_0:\r
4354         sub z80bc,z80bc,#1<<24\r
4355         tst z80bc,#0xFF<<24\r
4356         ldrsb r1,[z80pc],#1\r
4357         addne z80pc,z80pc,r1\r
4358         subne z80_icount,z80_icount,#5\r
4359         fetch 8\r
4360 \r
4361 ;@LD DE,NN\r
4362 opcode_1_1:\r
4363         ldrb r0,[z80pc],#1\r
4364         ldrb r1,[z80pc],#1\r
4365         orr r0,r0,r1, lsl #8\r
4366         mov z80de,r0, lsl #16\r
4367         fetch 10\r
4368 ;@LD (DE),A\r
4369 opcode_1_2:\r
4370         mov r0,z80a, lsr #24\r
4371         writemem8DE\r
4372         fetch 7\r
4373 ;@INC DE\r
4374 opcode_1_3:\r
4375         add z80de,z80de,#1<<16\r
4376         fetch 6\r
4377 ;@INC D\r
4378 opcode_1_4:\r
4379         opINC8H z80de\r
4380         fetch 4\r
4381 ;@DEC D\r
4382 opcode_1_5:\r
4383         opDEC8H z80de\r
4384         fetch 4\r
4385 ;@LD D,N\r
4386 opcode_1_6:\r
4387         ldrb r1,[z80pc],#1\r
4388         and z80de,z80de,#0xFF<<16\r
4389         orr z80de,z80de,r1, lsl #24\r
4390         fetch 7\r
4391 ;@RLA\r
4392 opcode_1_7:\r
4393         tst z80f,#1<<CFlag\r
4394         orrne z80a,z80a,#1<<23\r
4395         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4396         movs z80a,z80a, lsl #1\r
4397         orrcs z80f,z80f,#1<<CFlag\r
4398         fetch 4\r
4399 ;@JR $+2\r
4400 opcode_1_8:\r
4401         ldrsb r1,[z80pc],#1\r
4402         add z80pc,z80pc,r1\r
4403         fetch 12\r
4404 ;@ADD HL,DE\r
4405 opcode_1_9:\r
4406         opADD16 z80hl z80de\r
4407         fetch 11\r
4408 ;@LD A,(DE)\r
4409 opcode_1_A:\r
4410         mov r0,z80de, lsr #16\r
4411         readmem8\r
4412         mov z80a,r0, lsl #24\r
4413         fetch 7\r
4414 ;@DEC DE\r
4415 opcode_1_B:\r
4416         sub z80de,z80de,#1<<16\r
4417         fetch 6\r
4418 ;@INC E\r
4419 opcode_1_C:\r
4420         opINC8L z80de\r
4421         fetch 4\r
4422 ;@DEC E\r
4423 opcode_1_D:\r
4424         opDEC8L z80de\r
4425         fetch 4\r
4426 ;@LD E,N\r
4427 opcode_1_E:\r
4428         ldrb r0,[z80pc],#1\r
4429         and z80de,z80de,#0xFF<<24\r
4430         orr z80de,z80de,r0, lsl #16\r
4431         fetch 7\r
4432 ;@RRA\r
4433 opcode_1_F:\r
4434         orr z80a,z80a,z80f,lsr#1                ;@get C\r
4435         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4436         movs z80a,z80a,ror#25\r
4437         orrcs z80f,z80f,#1<<CFlag\r
4438         mov z80a,z80a,lsl#24\r
4439         fetch 4\r
4440 ;@JR NZ,$+2\r
4441 opcode_2_0:\r
4442         tst z80f,#1<<ZFlag\r
4443         beq opcode_1_8\r
4444         add z80pc,z80pc,#1\r
4445         fetch 7\r
4446 ;@LD HL,NN\r
4447 opcode_2_1:\r
4448         ldrb r0,[z80pc],#1\r
4449         ldrb r1,[z80pc],#1\r
4450         orr r0,r0,r1, lsl #8\r
4451         mov z80hl,r0, lsl #16\r
4452         fetch 10\r
4453 ;@LD (NN),HL\r
4454 opcode_ED_63:\r
4455         eatcycles 4\r
4456 ;@LD (NN),HL\r
4457 opcode_2_2:\r
4458         ldrb r0,[z80pc],#1\r
4459         ldrb r1,[z80pc],#1\r
4460         orr r1,r0,r1, lsl #8\r
4461         mov r0,z80hl, lsr #16\r
4462         writemem16\r
4463         fetch 16\r
4464 ;@INC HL\r
4465 opcode_2_3:\r
4466         add z80hl,z80hl,#1<<16\r
4467         fetch 6\r
4468 ;@INC H\r
4469 opcode_2_4:\r
4470         opINC8H z80hl\r
4471         fetch 4\r
4472 ;@DEC H\r
4473 opcode_2_5:\r
4474         opDEC8H z80hl\r
4475         fetch 4\r
4476 ;@LD H,N\r
4477 opcode_2_6:\r
4478         ldrb r1,[z80pc],#1\r
4479         and z80hl,z80hl,#0xFF<<16\r
4480         orr z80hl,z80hl,r1, lsl #24\r
4481         fetch 7\r
4482 DAATABLE_LOCAL: .word DAATable\r
4483 ;@DAA\r
4484 opcode_2_7:\r
4485         mov r1,z80a, lsr #24\r
4486         tst z80f,#1<<CFlag\r
4487         orrne r1,r1,#256\r
4488         tst z80f,#1<<HFlag\r
4489         orrne r1,r1,#512\r
4490         tst z80f,#1<<NFlag\r
4491         orrne r1,r1,#1024\r
4492         ldr r2,DAATABLE_LOCAL\r
4493         add r2,r2,r1, lsl #1\r
4494         ldrh r1,[r2]\r
4495         and z80f,r1,#0xFF\r
4496         and r2,r1,#0xFF<<8\r
4497         mov z80a,r2, lsl #16\r
4498         fetch 4\r
4499 ;@JR Z,$+2\r
4500 opcode_2_8:\r
4501         tst z80f,#1<<ZFlag\r
4502         bne opcode_1_8\r
4503         add z80pc,z80pc,#1\r
4504         fetch 7\r
4505 ;@ADD HL,HL\r
4506 opcode_2_9:\r
4507         opADD16_2 z80hl\r
4508         fetch 11\r
4509 ;@LD HL,(NN)\r
4510 opcode_ED_6B:\r
4511         eatcycles 4\r
4512 ;@LD HL,(NN)\r
4513 opcode_2_A:\r
4514         ldrb r0,[z80pc],#1\r
4515         ldrb r1,[z80pc],#1\r
4516         orr r0,r0,r1, lsl #8\r
4517         readmem16\r
4518         mov z80hl,r0, lsl #16\r
4519         fetch 16\r
4520 ;@DEC HL\r
4521 opcode_2_B:\r
4522         sub z80hl,z80hl,#1<<16\r
4523         fetch 6\r
4524 ;@INC L\r
4525 opcode_2_C:\r
4526         opINC8L z80hl\r
4527         fetch 4\r
4528 ;@DEC L\r
4529 opcode_2_D:\r
4530         opDEC8L z80hl\r
4531         fetch 4\r
4532 ;@LD L,N\r
4533 opcode_2_E:\r
4534         ldrb r0,[z80pc],#1\r
4535         and z80hl,z80hl,#0xFF<<24\r
4536         orr z80hl,z80hl,r0, lsl #16\r
4537         fetch 7\r
4538 ;@CPL\r
4539 opcode_2_F:\r
4540         eor z80a,z80a,#0xFF<<24\r
4541         orr z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4542         fetch 4\r
4543 ;@JR NC,$+2\r
4544 opcode_3_0:\r
4545         tst z80f,#1<<CFlag\r
4546         beq opcode_1_8\r
4547         add z80pc,z80pc,#1\r
4548         fetch 7\r
4549 ;@LD SP,NN\r
4550 opcode_3_1:\r
4551         ldrb r0,[z80pc],#1\r
4552         ldrb r1,[z80pc],#1\r
4553 \r
4554 .if FAST_Z80SP\r
4555         orr r0,r0,r1, lsl #8\r
4556         rebasesp\r
4557         mov z80sp,r0\r
4558 .else\r
4559         orr z80sp,r0,r1, lsl #8\r
4560 .endif\r
4561         fetch 10\r
4562 ;@LD (NN),A\r
4563 opcode_3_2:\r
4564         ldrb r0,[z80pc],#1\r
4565         ldrb r1,[z80pc],#1\r
4566         orr r1,r0,r1, lsl #8\r
4567         mov r0,z80a, lsr #24\r
4568         writemem8\r
4569         fetch 13\r
4570 ;@INC SP\r
4571 opcode_3_3:\r
4572         add z80sp,z80sp,#1\r
4573         fetch 6\r
4574 ;@INC (HL)\r
4575 opcode_3_4:\r
4576         readmem8HL\r
4577         opINC8b\r
4578         writemem8HL\r
4579         fetch 11\r
4580 ;@DEC (HL)\r
4581 opcode_3_5:\r
4582         readmem8HL\r
4583         opDEC8b\r
4584         writemem8HL\r
4585         fetch 11\r
4586 ;@LD (HL),N\r
4587 opcode_3_6:\r
4588         ldrb r0,[z80pc],#1\r
4589         writemem8HL\r
4590         fetch 10\r
4591 ;@SCF\r
4592 opcode_3_7:\r
4593         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4594         orr z80f,z80f,#1<<CFlag\r
4595         fetch 4\r
4596 ;@JR C,$+2\r
4597 opcode_3_8:\r
4598         tst z80f,#1<<CFlag\r
4599         bne opcode_1_8\r
4600         add z80pc,z80pc,#1\r
4601         fetch 8\r
4602 ;@ADD HL,SP\r
4603 opcode_3_9:\r
4604 .if FAST_Z80SP\r
4605         ldr r0,[cpucontext,#z80sp_base]\r
4606         sub r0,z80sp,r0\r
4607         opADD16s z80hl r0 16\r
4608 .else\r
4609         opADD16s z80hl z80sp 16\r
4610 .endif\r
4611         fetch 11\r
4612 ;@LD A,(NN)\r
4613 opcode_3_A:\r
4614         ldrb r0,[z80pc],#1\r
4615         ldrb r1,[z80pc],#1\r
4616         orr r0,r0,r1, lsl #8\r
4617         readmem8\r
4618         mov z80a,r0, lsl #24\r
4619         fetch 11\r
4620 ;@DEC SP\r
4621 opcode_3_B:\r
4622         sub z80sp,z80sp,#1\r
4623         fetch 6\r
4624 ;@INC A\r
4625 opcode_3_C:\r
4626         opINC8 z80a\r
4627         fetch 4\r
4628 ;@DEC A\r
4629 opcode_3_D:\r
4630         opDEC8 z80a\r
4631         fetch 4\r
4632 ;@LD A,N\r
4633 opcode_3_E:\r
4634         ldrb r0,[z80pc],#1\r
4635         mov z80a,r0, lsl #24\r
4636         fetch 7\r
4637 ;@CCF\r
4638 opcode_3_F:\r
4639         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4640         tst z80f,#1<<CFlag\r
4641         orrne z80f,z80f,#1<<HFlag\r
4642         eor z80f,z80f,#1<<CFlag\r
4643         fetch 4\r
4644 \r
4645 ;@LD B,C\r
4646 opcode_4_1:\r
4647         and z80bc,z80bc,#0xFF<<16\r
4648         orr z80bc,z80bc,z80bc, lsl #8\r
4649         fetch 4\r
4650 ;@LD B,D\r
4651 opcode_4_2:\r
4652         and z80bc,z80bc,#0xFF<<16\r
4653         and r1,z80de,#0xFF<<24\r
4654         orr z80bc,z80bc,r1\r
4655         fetch 4\r
4656 ;@LD B,E\r
4657 opcode_4_3:\r
4658         and z80bc,z80bc,#0xFF<<16\r
4659         and r1,z80de,#0xFF<<16\r
4660         orr z80bc,z80bc,r1, lsl #8\r
4661         fetch 4\r
4662 ;@LD B,H\r
4663 opcode_4_4:\r
4664         and z80bc,z80bc,#0xFF<<16\r
4665         and r1,z80hl,#0xFF<<24\r
4666         orr z80bc,z80bc,r1\r
4667         fetch 4\r
4668 ;@LD B,L\r
4669 opcode_4_5:\r
4670         and z80bc,z80bc,#0xFF<<16\r
4671         and r1,z80hl,#0xFF<<16\r
4672         orr z80bc,z80bc,r1, lsl #8\r
4673         fetch 4\r
4674 ;@LD B,(HL)\r
4675 opcode_4_6:\r
4676         readmem8HL\r
4677         and z80bc,z80bc,#0xFF<<16\r
4678         orr z80bc,z80bc,r0, lsl #24\r
4679         fetch 7\r
4680 ;@LD B,A\r
4681 opcode_4_7:\r
4682         and z80bc,z80bc,#0xFF<<16\r
4683         orr z80bc,z80bc,z80a\r
4684         fetch 4\r
4685 ;@LD C,B\r
4686 opcode_4_8:\r
4687         and z80bc,z80bc,#0xFF<<24\r
4688         orr z80bc,z80bc,z80bc, lsr #8\r
4689         fetch 4\r
4690 ;@LD C,D\r
4691 opcode_4_A:\r
4692         and z80bc,z80bc,#0xFF<<24\r
4693         and r1,z80de,#0xFF<<24\r
4694         orr z80bc,z80bc,r1, lsr #8\r
4695         fetch 4\r
4696 ;@LD C,E\r
4697 opcode_4_B:\r
4698         and z80bc,z80bc,#0xFF<<24\r
4699         and r1,z80de,#0xFF<<16\r
4700         orr z80bc,z80bc,r1 \r
4701         fetch 4\r
4702 ;@LD C,H\r
4703 opcode_4_C:\r
4704         and z80bc,z80bc,#0xFF<<24\r
4705         and r1,z80hl,#0xFF<<24\r
4706         orr z80bc,z80bc,r1, lsr #8\r
4707         fetch 4\r
4708 ;@LD C,L\r
4709 opcode_4_D:\r
4710         and z80bc,z80bc,#0xFF<<24\r
4711         and r1,z80hl,#0xFF<<16\r
4712         orr z80bc,z80bc,r1 \r
4713         fetch 4\r
4714 ;@LD C,(HL)\r
4715 opcode_4_E:\r
4716         readmem8HL\r
4717         and z80bc,z80bc,#0xFF<<24\r
4718         orr z80bc,z80bc,r0, lsl #16\r
4719         fetch 7\r
4720 ;@LD C,A\r
4721 opcode_4_F:\r
4722         and z80bc,z80bc,#0xFF<<24\r
4723         orr z80bc,z80bc,z80a, lsr #8\r
4724         fetch 4\r
4725 ;@LD D,B\r
4726 opcode_5_0:\r
4727         and z80de,z80de,#0xFF<<16\r
4728         and r1,z80bc,#0xFF<<24\r
4729         orr z80de,z80de,r1\r
4730         fetch 4\r
4731 ;@LD D,C\r
4732 opcode_5_1:\r
4733         and z80de,z80de,#0xFF<<16\r
4734         orr z80de,z80de,z80bc, lsl #8\r
4735         fetch 4\r
4736 ;@LD D,E\r
4737 opcode_5_3:\r
4738         and z80de,z80de,#0xFF<<16\r
4739         orr z80de,z80de,z80de, lsl #8\r
4740         fetch 4\r
4741 ;@LD D,H\r
4742 opcode_5_4:\r
4743         and z80de,z80de,#0xFF<<16\r
4744         and r1,z80hl,#0xFF<<24\r
4745         orr z80de,z80de,r1\r
4746         fetch 4\r
4747 ;@LD D,L\r
4748 opcode_5_5:\r
4749         and z80de,z80de,#0xFF<<16\r
4750         orr z80de,z80de,z80hl, lsl #8\r
4751         fetch 4\r
4752 ;@LD D,(HL)\r
4753 opcode_5_6:\r
4754         readmem8HL\r
4755         and z80de,z80de,#0xFF<<16\r
4756         orr z80de,z80de,r0, lsl #24\r
4757         fetch 7\r
4758 ;@LD D,A\r
4759 opcode_5_7:\r
4760         and z80de,z80de,#0xFF<<16\r
4761         orr z80de,z80de,z80a\r
4762         fetch 4\r
4763 ;@LD E,B\r
4764 opcode_5_8:\r
4765         and z80de,z80de,#0xFF<<24\r
4766         and r1,z80bc,#0xFF<<24\r
4767         orr z80de,z80de,r1, lsr #8\r
4768         fetch 4\r
4769 ;@LD E,C\r
4770 opcode_5_9:\r
4771         and z80de,z80de,#0xFF<<24\r
4772         and r1,z80bc,#0xFF<<16\r
4773         orr z80de,z80de,r1 \r
4774         fetch 4\r
4775 ;@LD E,D\r
4776 opcode_5_A:\r
4777         and z80de,z80de,#0xFF<<24\r
4778         orr z80de,z80de,z80de, lsr #8\r
4779         fetch 4\r
4780 ;@LD E,H\r
4781 opcode_5_C:\r
4782         and z80de,z80de,#0xFF<<24\r
4783         and r1,z80hl,#0xFF<<24\r
4784         orr z80de,z80de,r1, lsr #8\r
4785         fetch 4\r
4786 ;@LD E,L\r
4787 opcode_5_D:\r
4788         and z80de,z80de,#0xFF<<24\r
4789         and r1,z80hl,#0xFF<<16\r
4790         orr z80de,z80de,r1 \r
4791         fetch 4\r
4792 ;@LD E,(HL)\r
4793 opcode_5_E:\r
4794         readmem8HL\r
4795         and z80de,z80de,#0xFF<<24\r
4796         orr z80de,z80de,r0, lsl #16\r
4797         fetch 7\r
4798 ;@LD E,A\r
4799 opcode_5_F:\r
4800         and z80de,z80de,#0xFF<<24\r
4801         orr z80de,z80de,z80a, lsr #8\r
4802         fetch 4\r
4803 \r
4804 ;@LD H,B\r
4805 opcode_6_0:\r
4806         and z80hl,z80hl,#0xFF<<16\r
4807         and r1,z80bc,#0xFF<<24\r
4808         orr z80hl,z80hl,r1\r
4809         fetch 4\r
4810 ;@LD H,C\r
4811 opcode_6_1:\r
4812         and z80hl,z80hl,#0xFF<<16\r
4813         orr z80hl,z80hl,z80bc, lsl #8\r
4814         fetch 4\r
4815 ;@LD H,D\r
4816 opcode_6_2:\r
4817         and z80hl,z80hl,#0xFF<<16\r
4818         and r1,z80de,#0xFF<<24\r
4819         orr z80hl,z80hl,r1\r
4820         fetch 4\r
4821 ;@LD H,E\r
4822 opcode_6_3:\r
4823         and z80hl,z80hl,#0xFF<<16\r
4824         orr z80hl,z80hl,z80de, lsl #8\r
4825         fetch 4\r
4826 ;@LD H,L\r
4827 opcode_6_5:\r
4828         and z80hl,z80hl,#0xFF<<16\r
4829         orr z80hl,z80hl,z80hl, lsl #8\r
4830         fetch 4\r
4831 ;@LD H,(HL)\r
4832 opcode_6_6:\r
4833         readmem8HL\r
4834         and z80hl,z80hl,#0xFF<<16\r
4835         orr z80hl,z80hl,r0, lsl #24\r
4836         fetch 7\r
4837 ;@LD H,A\r
4838 opcode_6_7:\r
4839         and z80hl,z80hl,#0xFF<<16\r
4840         orr z80hl,z80hl,z80a\r
4841         fetch 4\r
4842 \r
4843 ;@LD L,B\r
4844 opcode_6_8:\r
4845         and z80hl,z80hl,#0xFF<<24\r
4846         and r1,z80bc,#0xFF<<24\r
4847         orr z80hl,z80hl,r1, lsr #8\r
4848         fetch 4\r
4849 ;@LD L,C\r
4850 opcode_6_9:\r
4851         and z80hl,z80hl,#0xFF<<24\r
4852         and r1,z80bc,#0xFF<<16\r
4853         orr z80hl,z80hl,r1\r
4854         fetch 4\r
4855 ;@LD L,D\r
4856 opcode_6_A:\r
4857         and z80hl,z80hl,#0xFF<<24\r
4858         and r1,z80de,#0xFF<<24\r
4859         orr z80hl,z80hl,r1, lsr #8\r
4860         fetch 4\r
4861 ;@LD L,E\r
4862 opcode_6_B:\r
4863         and z80hl,z80hl,#0xFF<<24\r
4864         and r1,z80de,#0xFF<<16\r
4865         orr z80hl,z80hl,r1\r
4866         fetch 4\r
4867 ;@LD L,H\r
4868 opcode_6_C:\r
4869         and z80hl,z80hl,#0xFF<<24\r
4870         orr z80hl,z80hl,z80hl, lsr #8\r
4871         fetch 4\r
4872 ;@LD L,(HL)\r
4873 opcode_6_E:\r
4874         readmem8HL\r
4875         and z80hl,z80hl,#0xFF<<24\r
4876         orr z80hl,z80hl,r0, lsl #16\r
4877         fetch 7\r
4878 ;@LD L,A\r
4879 opcode_6_F:\r
4880         and z80hl,z80hl,#0xFF<<24\r
4881         orr z80hl,z80hl,z80a, lsr #8\r
4882         fetch 4\r
4883 \r
4884 ;@LD (HL),B\r
4885 opcode_7_0:\r
4886         mov r0,z80bc, lsr #24\r
4887         writemem8HL\r
4888         fetch 7\r
4889 ;@LD (HL),C\r
4890 opcode_7_1:\r
4891         mov r0,z80bc, lsr #16\r
4892         and r0,r0,#0xFF\r
4893         writemem8HL\r
4894         fetch 7\r
4895 ;@LD (HL),D\r
4896 opcode_7_2:\r
4897         mov r0,z80de, lsr #24\r
4898         writemem8HL\r
4899         fetch 7\r
4900 ;@LD (HL),E\r
4901 opcode_7_3:\r
4902         mov r0,z80de, lsr #16\r
4903         and r0,r0,#0xFF\r
4904         writemem8HL\r
4905         fetch 7\r
4906 ;@LD (HL),H\r
4907 opcode_7_4:\r
4908         mov r0,z80hl, lsr #24\r
4909         writemem8HL\r
4910         fetch 7\r
4911 ;@LD (HL),L\r
4912 opcode_7_5:\r
4913         mov r1,z80hl, lsr #16\r
4914         and r0,r1,#0xFF\r
4915         writemem8\r
4916         fetch 7\r
4917 ;@HALT\r
4918 opcode_7_6:\r
4919         sub z80pc,z80pc,#1\r
4920         ldrb r0,[cpucontext,#z80if]\r
4921         orr r0,r0,#Z80_HALT\r
4922         strb r0,[cpucontext,#z80if]\r
4923         b z80_execute_end\r
4924 ;@LD (HL),A\r
4925 opcode_7_7:\r
4926         mov r0,z80a, lsr #24\r
4927         writemem8HL\r
4928         fetch 7\r
4929 \r
4930 ;@LD A,B\r
4931 opcode_7_8:\r
4932         and z80a,z80bc,#0xFF<<24\r
4933         fetch 4\r
4934 ;@LD A,C\r
4935 opcode_7_9:\r
4936         mov z80a,z80bc, lsl #8\r
4937         fetch 4\r
4938 ;@LD A,D\r
4939 opcode_7_A:\r
4940         and z80a,z80de,#0xFF<<24\r
4941         fetch 4\r
4942 ;@LD A,E\r
4943 opcode_7_B:\r
4944         mov z80a,z80de, lsl #8\r
4945         fetch 4\r
4946 ;@LD A,H\r
4947 opcode_7_C:\r
4948         and z80a,z80hl,#0xFF<<24\r
4949         fetch 4\r
4950 ;@LD A,L\r
4951 opcode_7_D:\r
4952         mov z80a,z80hl, lsl #8\r
4953         fetch 4\r
4954 ;@LD A,(HL)\r
4955 opcode_7_E:\r
4956         readmem8HL\r
4957         mov z80a,r0, lsl #24\r
4958         fetch 7\r
4959 \r
4960 ;@ADD A,B\r
4961 opcode_8_0:\r
4962         opADDH z80bc\r
4963 ;@ADD A,C\r
4964 opcode_8_1:\r
4965         opADDL z80bc\r
4966 ;@ADD A,D\r
4967 opcode_8_2:\r
4968         opADDH z80de\r
4969 ;@ADD A,E\r
4970 opcode_8_3:\r
4971         opADDL z80de\r
4972 ;@ADD A,H\r
4973 opcode_8_4:\r
4974         opADDH z80hl\r
4975 ;@ADD A,L\r
4976 opcode_8_5:\r
4977         opADDL z80hl\r
4978 ;@ADD A,(HL)\r
4979 opcode_8_6:\r
4980         readmem8HL\r
4981         opADDb\r
4982         fetch 7\r
4983 ;@ADD A,A\r
4984 opcode_8_7:\r
4985         opADDA\r
4986 \r
4987 ;@ADC A,B\r
4988 opcode_8_8:\r
4989         opADCH z80bc\r
4990 ;@ADC A,C\r
4991 opcode_8_9:\r
4992         opADCL z80bc\r
4993 ;@ADC A,D\r
4994 opcode_8_A:\r
4995         opADCH z80de\r
4996 ;@ADC A,E\r
4997 opcode_8_B:\r
4998         opADCL z80de\r
4999 ;@ADC A,H\r
5000 opcode_8_C:\r
5001         opADCH z80hl\r
5002 ;@ADC A,L\r
5003 opcode_8_D:\r
5004         opADCL z80hl\r
5005 ;@ADC A,(HL)\r
5006 opcode_8_E:\r
5007         readmem8HL\r
5008         opADCb\r
5009         fetch 7\r
5010 ;@ADC A,A\r
5011 opcode_8_F:\r
5012         opADCA\r
5013 \r
5014 ;@SUB B\r
5015 opcode_9_0:\r
5016         opSUBH z80bc\r
5017 ;@SUB C\r
5018 opcode_9_1:\r
5019         opSUBL z80bc\r
5020 ;@SUB D\r
5021 opcode_9_2:\r
5022         opSUBH z80de\r
5023 ;@SUB E\r
5024 opcode_9_3:\r
5025         opSUBL z80de\r
5026 ;@SUB H\r
5027 opcode_9_4:\r
5028         opSUBH z80hl\r
5029 ;@SUB L\r
5030 opcode_9_5:\r
5031         opSUBL z80hl\r
5032 ;@SUB (HL)\r
5033 opcode_9_6:\r
5034         readmem8HL\r
5035         opSUBb\r
5036         fetch 7\r
5037 ;@SUB A\r
5038 opcode_9_7:\r
5039         opSUBA\r
5040 \r
5041 ;@SBC B \r
5042 opcode_9_8:\r
5043         opSBCH z80bc\r
5044 ;@SBC C\r
5045 opcode_9_9:\r
5046         opSBCL z80bc\r
5047 ;@SBC D\r
5048 opcode_9_A:\r
5049         opSBCH z80de\r
5050 ;@SBC E\r
5051 opcode_9_B:\r
5052         opSBCL z80de\r
5053 ;@SBC H\r
5054 opcode_9_C:\r
5055         opSBCH z80hl\r
5056 ;@SBC L\r
5057 opcode_9_D:\r
5058         opSBCL z80hl\r
5059 ;@SBC (HL)\r
5060 opcode_9_E:\r
5061         readmem8HL\r
5062         opSBCb\r
5063         fetch 7\r
5064 ;@SBC A\r
5065 opcode_9_F:\r
5066         opSBCA\r
5067 \r
5068 ;@AND B\r
5069 opcode_A_0:\r
5070         opANDH z80bc\r
5071 ;@AND C\r
5072 opcode_A_1:\r
5073         opANDL z80bc\r
5074 ;@AND D\r
5075 opcode_A_2:\r
5076         opANDH z80de\r
5077 ;@AND E\r
5078 opcode_A_3:\r
5079         opANDL z80de\r
5080 ;@AND H\r
5081 opcode_A_4:\r
5082         opANDH z80hl\r
5083 ;@AND L\r
5084 opcode_A_5:\r
5085         opANDL z80hl\r
5086 ;@AND (HL)\r
5087 opcode_A_6:\r
5088         readmem8HL\r
5089         opANDb\r
5090         fetch 7\r
5091 ;@AND A\r
5092 opcode_A_7:\r
5093         opANDA\r
5094 \r
5095 ;@XOR B\r
5096 opcode_A_8:\r
5097         opXORH z80bc\r
5098 ;@XOR C\r
5099 opcode_A_9:\r
5100         opXORL z80bc\r
5101 ;@XOR D\r
5102 opcode_A_A:\r
5103         opXORH z80de\r
5104 ;@XOR E\r
5105 opcode_A_B:\r
5106         opXORL z80de\r
5107 ;@XOR H\r
5108 opcode_A_C:\r
5109         opXORH z80hl\r
5110 ;@XOR L\r
5111 opcode_A_D:\r
5112         opXORL z80hl\r
5113 ;@XOR (HL)\r
5114 opcode_A_E:\r
5115         readmem8HL\r
5116         opXORb\r
5117         fetch 7\r
5118 ;@XOR A\r
5119 opcode_A_F:\r
5120         opXORA\r
5121 \r
5122 ;@OR B\r
5123 opcode_B_0:\r
5124         opORH z80bc\r
5125 ;@OR C\r
5126 opcode_B_1:\r
5127         opORL z80bc\r
5128 ;@OR D\r
5129 opcode_B_2:\r
5130         opORH z80de\r
5131 ;@OR E\r
5132 opcode_B_3:\r
5133         opORL z80de\r
5134 ;@OR H\r
5135 opcode_B_4:\r
5136         opORH z80hl\r
5137 ;@OR L\r
5138 opcode_B_5:\r
5139         opORL z80hl\r
5140 ;@OR (HL)\r
5141 opcode_B_6:\r
5142         readmem8HL\r
5143         opORb\r
5144         fetch 7\r
5145 ;@OR A\r
5146 opcode_B_7:\r
5147         opORA\r
5148 \r
5149 ;@CP B\r
5150 opcode_B_8:\r
5151         opCPH z80bc\r
5152 ;@CP C\r
5153 opcode_B_9:\r
5154         opCPL z80bc\r
5155 ;@CP D\r
5156 opcode_B_A:\r
5157         opCPH z80de\r
5158 ;@CP E\r
5159 opcode_B_B:\r
5160         opCPL z80de\r
5161 ;@CP H\r
5162 opcode_B_C:\r
5163         opCPH z80hl\r
5164 ;@CP L\r
5165 opcode_B_D:\r
5166         opCPL z80hl\r
5167 ;@CP (HL)\r
5168 opcode_B_E:\r
5169         readmem8HL\r
5170         opCPb\r
5171         fetch 7\r
5172 ;@CP A\r
5173 opcode_B_F:\r
5174         opCPA\r
5175 \r
5176 ;@RET NZ\r
5177 opcode_C_0:\r
5178         tst z80f,#1<<ZFlag\r
5179         beq opcode_C_9          ;@unconditional RET\r
5180         fetch 5\r
5181 \r
5182 ;@POP BC\r
5183 opcode_C_1:\r
5184         opPOPreg z80bc\r
5185 \r
5186 ;@JP NZ,$+3\r
5187 opcode_C_2:\r
5188         tst z80f,#1<<ZFlag\r
5189         beq opcode_C_3          ;@unconditional JP\r
5190         add z80pc,z80pc,#2\r
5191         fetch 10\r
5192 ;@JP $+3\r
5193 opcode_C_3:\r
5194         ldrb r0,[z80pc],#1\r
5195         ldrb r1,[z80pc],#1\r
5196         orr r0,r0,r1, lsl #8\r
5197         rebasepc\r
5198         fetch 10\r
5199 ;@CALL NZ,NN\r
5200 opcode_C_4:\r
5201         tst z80f,#1<<ZFlag\r
5202         beq opcode_C_D          ;@unconditional CALL\r
5203         add z80pc,z80pc,#2\r
5204         fetch 10\r
5205 \r
5206 ;@PUSH BC\r
5207 opcode_C_5:\r
5208         opPUSHreg z80bc\r
5209         fetch 11\r
5210 ;@ADD A,N\r
5211 opcode_C_6:\r
5212         ldrb r0,[z80pc],#1\r
5213         opADDb\r
5214         fetch 7\r
5215 ;@RST 0\r
5216 opcode_C_7:\r
5217         opRST 0x00\r
5218 \r
5219 ;@RET Z\r
5220 opcode_C_8:\r
5221         tst z80f,#1<<ZFlag\r
5222         bne opcode_C_9          ;@unconditional RET\r
5223         fetch 5\r
5224 ;@RET\r
5225 opcode_C_9:\r
5226     opPOP\r
5227         rebasepc\r
5228         fetch 10\r
5229 ;@JP Z,$+3\r
5230 opcode_C_A:\r
5231         tst z80f,#1<<ZFlag\r
5232         bne opcode_C_3  ;@unconditional JP\r
5233         add z80pc,z80pc,#2\r
5234         fetch 10\r
5235 \r
5236 ;@This reads this opcodes_CB lookup table to find the location of\r
5237 ;@the CB sub for the intruction and then branches to that location\r
5238 opcode_C_B:\r
5239         ldrb r0,[z80pc],#1\r
5240         ldr pc,[pc,r0, lsl #2]\r
5241 opcodes_CB:     .word 0x00000000\r
5242                         .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
5243                         .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
5244                         .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
5245                         .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
5246                         .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
5247                         .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
5248                         .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
5249                         .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
5250                         .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
5251                         .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
5252                         .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
5253                         .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
5254                         .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
5255                         .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
5256                         .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
5257                         .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
5258                         .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
5259                         .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
5260                         .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
5261                         .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
5262                         .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
5263                         .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
5264                         .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
5265                         .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
5266                         .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
5267                         .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
5268                         .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
5269                         .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
5270                         .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
5271                         .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
5272                         .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
5273                         .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
5274 \r
5275 ;@CALL Z,NN\r
5276 opcode_C_C:\r
5277         tst z80f,#1<<ZFlag\r
5278         bne opcode_C_D          ;@unconditional CALL\r
5279         add z80pc,z80pc,#2\r
5280         fetch 10\r
5281 ;@CALL NN\r
5282 opcode_C_D:\r
5283         ldrb r0,[z80pc],#1\r
5284         ldrb r1,[z80pc],#1\r
5285         ldr r2,[cpucontext,#z80pc_base]\r
5286         sub r2,z80pc,r2\r
5287         orr z80pc,r0,r1, lsl #8\r
5288     opPUSHareg r2\r
5289     mov r0,z80pc\r
5290         rebasepc\r
5291         fetch 17\r
5292 ;@ADC A,N\r
5293 opcode_C_E:\r
5294         ldrb r0,[z80pc],#1\r
5295         opADCb\r
5296         fetch 7\r
5297 ;@RST 8H\r
5298 opcode_C_F:\r
5299         opRST 0x08\r
5300 \r
5301 ;@RET NC\r
5302 opcode_D_0:\r
5303         tst z80f,#1<<CFlag\r
5304         beq opcode_C_9          ;@unconditional RET\r
5305         fetch 5\r
5306 ;@POP DE\r
5307 opcode_D_1:\r
5308         opPOPreg z80de\r
5309 \r
5310 ;@JP NC, $+3\r
5311 opcode_D_2 :\r
5312         tst z80f,#1<<CFlag\r
5313         beq opcode_C_3          ;@unconditional JP\r
5314         add z80pc,z80pc,#2\r
5315         fetch 10\r
5316 ;@OUT (N),A\r
5317 opcode_D_3:\r
5318         ldrb r0,[z80pc],#1\r
5319         orr r0,r0,z80a,lsr#16\r
5320         mov r1,z80a, lsr #24\r
5321         opOUT\r
5322         fetch 11\r
5323 ;@CALL NC,NN\r
5324 opcode_D_4:\r
5325         tst z80f,#1<<CFlag\r
5326         beq opcode_C_D          ;@unconditional CALL\r
5327         add z80pc,z80pc,#2\r
5328         fetch 10\r
5329 ;@PUSH DE\r
5330 opcode_D_5:\r
5331         opPUSHreg z80de\r
5332         fetch 11\r
5333 ;@SUB N\r
5334 opcode_D_6:\r
5335         ldrb r0,[z80pc],#1\r
5336         opSUBb\r
5337         fetch 7\r
5338 \r
5339 ;@RST 10H\r
5340 opcode_D_7:\r
5341         opRST 0x10\r
5342 \r
5343 ;@RET C\r
5344 opcode_D_8:\r
5345         tst z80f,#1<<CFlag\r
5346         bne opcode_C_9          ;@unconditional RET\r
5347         fetch 5\r
5348 ;@EXX\r
5349 opcode_D_9:\r
5350         add r1,cpucontext,#z80bc2\r
5351         swp z80bc,z80bc,[r1]\r
5352         add r1,cpucontext,#z80de2\r
5353         swp z80de,z80de,[r1]\r
5354         add r1,cpucontext,#z80hl2\r
5355         swp z80hl,z80hl,[r1]\r
5356         fetch 4\r
5357 ;@JP C,$+3\r
5358 opcode_D_A:\r
5359         tst z80f,#1<<CFlag\r
5360         bne opcode_C_3          ;@unconditional JP\r
5361         add z80pc,z80pc,#2\r
5362         fetch 10\r
5363 ;@IN A,(N)\r
5364 opcode_D_B:\r
5365         ldrb r0,[z80pc],#1\r
5366         orr r0,r0,z80a,lsr#16\r
5367         opIN\r
5368         mov z80a,r0, lsl #24    ;@ r0 = data read\r
5369         fetch 11\r
5370 ;@CALL C,NN\r
5371 opcode_D_C:\r
5372         tst z80f,#1<<CFlag\r
5373         bne opcode_C_D          ;@unconditional CALL\r
5374         add z80pc,z80pc,#2\r
5375         fetch 10\r
5376 \r
5377 ;@opcodes_DD\r
5378 opcode_D_D:\r
5379         add z80xx,cpucontext,#z80ix\r
5380         b opcode_D_D_F_D\r
5381 opcode_F_D:\r
5382         add z80xx,cpucontext,#z80iy\r
5383 opcode_D_D_F_D:\r
5384         ldrb r0,[z80pc],#1\r
5385         ldr pc,[pc,r0, lsl #2]\r
5386 opcodes_DD:     .word 0x00000000\r
5387                         .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
5388                         .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
5389                         .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
5390                         .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
5391                         .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
5392                         .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
5393                         .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
5394                         .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
5395                         .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
5396                         .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
5397                         .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
5398                         .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
5399                         .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
5400                         .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
5401                         .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
5402                         .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
5403                         .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
5404                         .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
5405                         .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
5406                         .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
5407                         .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
5408                         .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
5409                         .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
5410                         .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
5411                         .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
5412                         .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
5413                         .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
5414                         .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
5415                         .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
5416                         .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
5417                         .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
5418                         .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
5419 \r
5420 ;@SBC A,N\r
5421 opcode_D_E:\r
5422         ldrb r0,[z80pc],#1\r
5423         opSBCb\r
5424         fetch 7\r
5425 ;@RST 18H\r
5426 opcode_D_F:\r
5427         opRST 0x18\r
5428 \r
5429 ;@RET PO\r
5430 opcode_E_0:\r
5431         tst z80f,#1<<VFlag\r
5432         beq opcode_C_9          ;@unconditional RET\r
5433         fetch 5\r
5434 ;@POP HL\r
5435 opcode_E_1:\r
5436         opPOPreg z80hl\r
5437 \r
5438 ;@JP PO,$+3\r
5439 opcode_E_2:\r
5440         tst z80f,#1<<VFlag\r
5441         beq opcode_C_3          ;@unconditional JP\r
5442         add z80pc,z80pc,#2\r
5443         fetch 10\r
5444 ;@EX (SP),HL\r
5445 opcode_E_3:\r
5446 .if FAST_Z80SP\r
5447         ldrb r0,[z80sp]\r
5448         ldrb r1,[z80sp,#1]\r
5449         orr r0,r0,r1, lsl #8\r
5450         mov r1,z80hl, lsr #24\r
5451         strb r1,[z80sp,#1]\r
5452         mov r1,z80hl, lsr #16\r
5453         strb r1,[z80sp]\r
5454         mov z80hl,r0, lsl #16\r
5455 .else\r
5456         mov r0,z80sp\r
5457         readmem16\r
5458         mov r1,r0\r
5459         mov r0,z80hl,lsr#16\r
5460         mov z80hl,r1,lsl#16\r
5461         mov r1,z80sp\r
5462         writemem16\r
5463 .endif\r
5464         fetch 19\r
5465 ;@CALL PO,NN\r
5466 opcode_E_4:\r
5467         tst z80f,#1<<VFlag\r
5468         beq opcode_C_D          ;@unconditional CALL\r
5469         add z80pc,z80pc,#2\r
5470         fetch 10\r
5471 ;@PUSH HL\r
5472 opcode_E_5:\r
5473         opPUSHreg z80hl\r
5474         fetch 11\r
5475 ;@AND N\r
5476 opcode_E_6:\r
5477         ldrb r0,[z80pc],#1\r
5478         opANDb\r
5479         fetch 7\r
5480 ;@RST 20H\r
5481 opcode_E_7:\r
5482         opRST 0x20\r
5483 \r
5484 ;@RET PE\r
5485 opcode_E_8:\r
5486         tst z80f,#1<<VFlag\r
5487         bne opcode_C_9          ;@unconditional RET\r
5488         fetch 5\r
5489 ;@JP (HL)\r
5490 opcode_E_9:\r
5491         mov r0,z80hl, lsr #16\r
5492         rebasepc\r
5493         fetch 4\r
5494 ;@JP PE,$+3\r
5495 opcode_E_A:\r
5496         tst z80f,#1<<VFlag\r
5497         bne opcode_C_3          ;@unconditional JP\r
5498         add z80pc,z80pc,#2\r
5499         fetch 10\r
5500 ;@EX DE,HL\r
5501 opcode_E_B:\r
5502         mov r1,z80de\r
5503         mov z80de,z80hl\r
5504         mov z80hl,r1\r
5505         fetch 4\r
5506 ;@CALL PE,NN\r
5507 opcode_E_C:\r
5508         tst z80f,#1<<VFlag\r
5509         bne opcode_C_D          ;@unconditional CALL\r
5510         add z80pc,z80pc,#2\r
5511         fetch 10\r
5512 \r
5513 ;@This should be caught at start\r
5514 opcode_E_D:\r
5515         ldrb r1,[z80pc],#1\r
5516         ldr pc,[pc,r1, lsl #2]\r
5517 opcodes_ED:     .word 0x00000000\r
5518                         .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
5519                         .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
5520                         .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
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_40,opcode_ED_41,opcode_ED_42,opcode_ED_43,opcode_ED_44,opcode_ED_45,opcode_ED_46,opcode_ED_47\r
5527                         .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
5528                         .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
5529                         .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
5530                         .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
5531                         .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
5532                         .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
5533                         .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
5534                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5535                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5536                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5537                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5538                         .word opcode_ED_A0,opcode_ED_A1,opcode_ED_A2,opcode_ED_A3,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5539                         .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
5540                         .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
5541                         .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
5542                         .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
5543                         .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
5544                         .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
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 \r
5551 ;@XOR N\r
5552 opcode_E_E:\r
5553         ldrb r0,[z80pc],#1\r
5554         opXORb\r
5555         fetch 7\r
5556 ;@RST 28H\r
5557 opcode_E_F:\r
5558         opRST 0x28\r
5559 \r
5560 ;@RET P\r
5561 opcode_F_0:\r
5562         tst z80f,#1<<SFlag\r
5563         beq opcode_C_9          ;@unconditional RET\r
5564         fetch 5\r
5565 ;@POP AF\r
5566 opcode_F_1:\r
5567 .if FAST_Z80SP\r
5568         ldrb z80f,[z80sp],#1\r
5569         sub r0,opcodes,#0x200\r
5570         ldrb z80f,[r0,z80f]\r
5571         ldrb z80a,[z80sp],#1\r
5572         mov z80a,z80a, lsl #24\r
5573 .else\r
5574         mov r0,z80sp\r
5575         readmem16\r
5576         add z80sp,z80sp,#2\r
5577         and z80a,r0,#0xFF00\r
5578         mov z80a,z80a,lsl#16\r
5579         and z80f,r0,#0xFF\r
5580         sub r0,opcodes,#0x200\r
5581         ldrb z80f,[r0,z80f]\r
5582 .endif\r
5583         fetch 10\r
5584 ;@JP P,$+3\r
5585 opcode_F_2:\r
5586         tst z80f,#1<<SFlag\r
5587         beq opcode_C_3          ;@unconditional JP\r
5588         add z80pc,z80pc,#2\r
5589         fetch 10\r
5590 ;@DI\r
5591 opcode_F_3:\r
5592         ldrb r1,[cpucontext,#z80if]\r
5593         bic r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5594         strb r1,[cpucontext,#z80if]\r
5595         fetch 4\r
5596 ;@CALL P,NN\r
5597 opcode_F_4:\r
5598         tst z80f,#1<<SFlag\r
5599         beq opcode_C_D          ;@unconditional CALL\r
5600         add z80pc,z80pc,#2\r
5601         fetch 10\r
5602 ;@PUSH AF\r
5603 opcode_F_5:\r
5604         sub r0,opcodes,#0x300\r
5605         ldrb r0,[r0,z80f]\r
5606         orr r2,r0,z80a,lsr#16\r
5607     opPUSHareg r2\r
5608         fetch 11\r
5609 ;@OR N\r
5610 opcode_F_6:\r
5611         ldrb r0,[z80pc],#1\r
5612         opORb\r
5613         fetch 7\r
5614 ;@RST 30H\r
5615 opcode_F_7:\r
5616         opRST 0x30\r
5617 \r
5618 ;@RET M\r
5619 opcode_F_8:\r
5620         tst z80f,#1<<SFlag\r
5621         bne opcode_C_9          ;@unconditional RET\r
5622         fetch 5\r
5623 ;@LD SP,HL\r
5624 opcode_F_9:\r
5625 .if FAST_Z80SP\r
5626         mov r0,z80hl, lsr #16\r
5627         rebasesp\r
5628         mov z80sp,r0\r
5629 .else\r
5630         mov z80sp,z80hl, lsr #16\r
5631 .endif\r
5632         fetch 4\r
5633 ;@JP M,$+3\r
5634 opcode_F_A:\r
5635         tst z80f,#1<<SFlag\r
5636         bne opcode_C_3          ;@unconditional JP\r
5637         add z80pc,z80pc,#2\r
5638         fetch 10\r
5639 MAIN_opcodes_POINTER: .word MAIN_opcodes\r
5640 EI_DUMMY_opcodes_POINTER: .word EI_DUMMY_opcodes\r
5641 ;@EI\r
5642 opcode_F_B:\r
5643         ldrb r1,[cpucontext,#z80if]\r
5644         tst r1,#Z80_IF1\r
5645         bne ei_return_exit\r
5646 \r
5647         orr r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5648         strb r1,[cpucontext,#z80if]\r
5649 \r
5650         mov r2,opcodes\r
5651         ldr opcodes,EI_DUMMY_opcodes_POINTER\r
5652         ldr pc,[r2,r0, lsl #2]\r
5653 \r
5654 ei_return:\r
5655         ;@point that program returns from EI to check interupts\r
5656         ;@an interupt can not be taken directly after a EI opcode\r
5657         ;@ reset z80pc and opcode pointer\r
5658         ldrh r0,[cpucontext,#z80irq] @ 0x4C\r
5659         sub z80pc,z80pc,#1\r
5660         ldr opcodes,MAIN_opcodes_POINTER\r
5661         ;@ check ints\r
5662         tst r0,#1\r
5663         movnes r0,r0,lsr #8\r
5664     blne DoInterrupt\r
5665         ;@ continue\r
5666 ei_return_exit:\r
5667         fetch 4\r
5668 \r
5669 ;@CALL M,NN\r
5670 opcode_F_C:\r
5671         tst z80f,#1<<SFlag\r
5672         bne opcode_C_D          ;@unconditional CALL\r
5673         add z80pc,z80pc,#2\r
5674         fetch 10\r
5675 \r
5676 ;@SHOULD BE CAUGHT AT START - FD SECTION\r
5677 \r
5678 ;@CP N\r
5679 opcode_F_E:\r
5680         ldrb r0,[z80pc],#1\r
5681         opCPb\r
5682         fetch 7\r
5683 ;@RST 38H\r
5684 opcode_F_F:\r
5685         opRST 0x38\r
5686 \r
5687 \r
5688 ;@##################################\r
5689 ;@##################################\r
5690 ;@###  opcodes CB  #########################\r
5691 ;@##################################\r
5692 ;@##################################\r
5693 \r
5694 \r
5695 ;@RLC B\r
5696 opcode_CB_00:\r
5697         opRLCH z80bc\r
5698 ;@RLC C\r
5699 opcode_CB_01:\r
5700         opRLCL z80bc\r
5701 ;@RLC D\r
5702 opcode_CB_02:\r
5703         opRLCH z80de\r
5704 ;@RLC E\r
5705 opcode_CB_03:\r
5706         opRLCL z80de\r
5707 ;@RLC H\r
5708 opcode_CB_04:\r
5709         opRLCH z80hl\r
5710 ;@RLC L\r
5711 opcode_CB_05:\r
5712         opRLCL z80hl\r
5713 ;@RLC (HL)\r
5714 opcode_CB_06:\r
5715         readmem8HL\r
5716         opRLCb\r
5717         writemem8HL\r
5718         fetch 15\r
5719 ;@RLC A\r
5720 opcode_CB_07:\r
5721         opRLCA\r
5722 \r
5723 ;@RRC B\r
5724 opcode_CB_08:\r
5725         opRRCH z80bc\r
5726 ;@RRC C\r
5727 opcode_CB_09:\r
5728         opRRCL z80bc\r
5729 ;@RRC D\r
5730 opcode_CB_0A:\r
5731         opRRCH z80de\r
5732 ;@RRC E\r
5733 opcode_CB_0B:\r
5734         opRRCL z80de\r
5735 ;@RRC H\r
5736 opcode_CB_0C:\r
5737         opRRCH z80hl\r
5738 ;@RRC L\r
5739 opcode_CB_0D:\r
5740         opRRCL z80hl\r
5741 ;@RRC (HL)\r
5742 opcode_CB_0E :\r
5743         readmem8HL\r
5744         opRRCb\r
5745         writemem8HL\r
5746         fetch 15\r
5747 ;@RRC A\r
5748 opcode_CB_0F:\r
5749         opRRCA\r
5750 \r
5751 ;@RL B\r
5752 opcode_CB_10:\r
5753         opRLH z80bc\r
5754 ;@RL C\r
5755 opcode_CB_11:\r
5756         opRLL z80bc\r
5757 ;@RL D\r
5758 opcode_CB_12:\r
5759         opRLH z80de\r
5760 ;@RL E\r
5761 opcode_CB_13:\r
5762         opRLL z80de\r
5763 ;@RL H\r
5764 opcode_CB_14:\r
5765         opRLH z80hl\r
5766 ;@RL L\r
5767 opcode_CB_15:\r
5768         opRLL z80hl\r
5769 ;@RL (HL)\r
5770 opcode_CB_16:\r
5771         readmem8HL\r
5772         opRLb\r
5773         writemem8HL\r
5774         fetch 15\r
5775 ;@RL A\r
5776 opcode_CB_17:\r
5777         opRLA\r
5778 \r
5779 ;@RR B \r
5780 opcode_CB_18:\r
5781         opRRH z80bc\r
5782 ;@RR C\r
5783 opcode_CB_19:\r
5784         opRRL z80bc\r
5785 ;@RR D\r
5786 opcode_CB_1A:\r
5787         opRRH z80de\r
5788 ;@RR E\r
5789 opcode_CB_1B:\r
5790         opRRL z80de\r
5791 ;@RR H\r
5792 opcode_CB_1C:\r
5793         opRRH z80hl\r
5794 ;@RR L\r
5795 opcode_CB_1D:\r
5796         opRRL z80hl\r
5797 ;@RR (HL)\r
5798 opcode_CB_1E:\r
5799         readmem8HL\r
5800         opRRb\r
5801         writemem8HL\r
5802         fetch 15\r
5803 ;@RR A\r
5804 opcode_CB_1F:\r
5805         opRRA\r
5806 \r
5807 ;@SLA B\r
5808 opcode_CB_20:\r
5809         opSLAH z80bc\r
5810 ;@SLA C\r
5811 opcode_CB_21:\r
5812         opSLAL z80bc\r
5813 ;@SLA D\r
5814 opcode_CB_22:\r
5815         opSLAH z80de\r
5816 ;@SLA E\r
5817 opcode_CB_23:\r
5818         opSLAL z80de\r
5819 ;@SLA H\r
5820 opcode_CB_24:\r
5821         opSLAH z80hl\r
5822 ;@SLA L\r
5823 opcode_CB_25:\r
5824         opSLAL z80hl\r
5825 ;@SLA (HL)\r
5826 opcode_CB_26:\r
5827         readmem8HL\r
5828         opSLAb\r
5829         writemem8HL\r
5830         fetch 15\r
5831 ;@SLA A\r
5832 opcode_CB_27:\r
5833         opSLAA\r
5834 \r
5835 ;@SRA B\r
5836 opcode_CB_28:\r
5837         opSRAH z80bc\r
5838 ;@SRA C\r
5839 opcode_CB_29:\r
5840         opSRAL z80bc\r
5841 ;@SRA D\r
5842 opcode_CB_2A:\r
5843         opSRAH z80de\r
5844 ;@SRA E\r
5845 opcode_CB_2B:\r
5846         opSRAL z80de\r
5847 ;@SRA H\r
5848 opcode_CB_2C:\r
5849         opSRAH z80hl\r
5850 ;@SRA L\r
5851 opcode_CB_2D:\r
5852         opSRAL z80hl\r
5853 ;@SRA (HL)\r
5854 opcode_CB_2E:\r
5855         readmem8HL\r
5856         opSRAb\r
5857         writemem8HL\r
5858         fetch 15\r
5859 ;@SRA A\r
5860 opcode_CB_2F:\r
5861         opSRAA\r
5862 \r
5863 ;@SLL B\r
5864 opcode_CB_30:\r
5865         opSLLH z80bc\r
5866 ;@SLL C\r
5867 opcode_CB_31:\r
5868         opSLLL z80bc\r
5869 ;@SLL D\r
5870 opcode_CB_32:\r
5871         opSLLH z80de\r
5872 ;@SLL E\r
5873 opcode_CB_33:\r
5874         opSLLL z80de\r
5875 ;@SLL H\r
5876 opcode_CB_34:\r
5877         opSLLH z80hl\r
5878 ;@SLL L\r
5879 opcode_CB_35:\r
5880         opSLLL z80hl\r
5881 ;@SLL (HL)\r
5882 opcode_CB_36:\r
5883         readmem8HL\r
5884         opSLLb\r
5885         writemem8HL\r
5886         fetch 15\r
5887 ;@SLL A\r
5888 opcode_CB_37:\r
5889         opSLLA\r
5890 \r
5891 ;@SRL B\r
5892 opcode_CB_38:\r
5893         opSRLH z80bc\r
5894 ;@SRL C\r
5895 opcode_CB_39:\r
5896         opSRLL z80bc\r
5897 ;@SRL D\r
5898 opcode_CB_3A:\r
5899         opSRLH z80de\r
5900 ;@SRL E\r
5901 opcode_CB_3B:\r
5902         opSRLL z80de\r
5903 ;@SRL H\r
5904 opcode_CB_3C:\r
5905         opSRLH z80hl\r
5906 ;@SRL L\r
5907 opcode_CB_3D:\r
5908         opSRLL z80hl\r
5909 ;@SRL (HL)\r
5910 opcode_CB_3E:\r
5911         readmem8HL\r
5912         opSRLb\r
5913         writemem8HL\r
5914         fetch 15\r
5915 ;@SRL A\r
5916 opcode_CB_3F:\r
5917         opSRLA\r
5918 \r
5919 \r
5920 ;@BIT 0,B\r
5921 opcode_CB_40:\r
5922         opBITH z80bc 0\r
5923 ;@BIT 0,C\r
5924 opcode_CB_41:\r
5925         opBITL z80bc 0\r
5926 ;@BIT 0,D\r
5927 opcode_CB_42:\r
5928         opBITH z80de 0\r
5929 ;@BIT 0,E\r
5930 opcode_CB_43:\r
5931         opBITL z80de 0\r
5932 ;@BIT 0,H\r
5933 opcode_CB_44:\r
5934         opBITH z80hl 0\r
5935 ;@BIT 0,L\r
5936 opcode_CB_45:\r
5937         opBITL z80hl 0\r
5938 ;@BIT 0,(HL)\r
5939 opcode_CB_46:\r
5940         readmem8HL\r
5941         opBITb 0\r
5942         fetch 12\r
5943 ;@BIT 0,A\r
5944 opcode_CB_47:\r
5945         opBITH z80a 0\r
5946 \r
5947 ;@BIT 1,B\r
5948 opcode_CB_48:\r
5949         opBITH z80bc 1\r
5950 ;@BIT 1,C\r
5951 opcode_CB_49:\r
5952         opBITL z80bc 1\r
5953 ;@BIT 1,D\r
5954 opcode_CB_4A:\r
5955         opBITH z80de 1\r
5956 ;@BIT 1,E\r
5957 opcode_CB_4B:\r
5958         opBITL z80de 1\r
5959 ;@BIT 1,H\r
5960 opcode_CB_4C:\r
5961         opBITH z80hl 1\r
5962 ;@BIT 1,L\r
5963 opcode_CB_4D:\r
5964         opBITL z80hl 1\r
5965 ;@BIT 1,(HL)\r
5966 opcode_CB_4E:\r
5967         readmem8HL\r
5968         opBITb 1\r
5969         fetch 12\r
5970 ;@BIT 1,A\r
5971 opcode_CB_4F:\r
5972         opBITH z80a 1\r
5973 \r
5974 ;@BIT 2,B\r
5975 opcode_CB_50:\r
5976         opBITH z80bc 2\r
5977 ;@BIT 2,C\r
5978 opcode_CB_51:\r
5979         opBITL z80bc 2\r
5980 ;@BIT 2,D\r
5981 opcode_CB_52:\r
5982         opBITH z80de 2\r
5983 ;@BIT 2,E\r
5984 opcode_CB_53:\r
5985         opBITL z80de 2\r
5986 ;@BIT 2,H\r
5987 opcode_CB_54:\r
5988         opBITH z80hl 2\r
5989 ;@BIT 2,L\r
5990 opcode_CB_55:\r
5991         opBITL z80hl 2\r
5992 ;@BIT 2,(HL)\r
5993 opcode_CB_56:\r
5994         readmem8HL\r
5995         opBITb 2\r
5996         fetch 12\r
5997 ;@BIT 2,A\r
5998 opcode_CB_57:\r
5999         opBITH z80a 2\r
6000 \r
6001 ;@BIT 3,B\r
6002 opcode_CB_58:\r
6003         opBITH z80bc 3\r
6004 ;@BIT 3,C\r
6005 opcode_CB_59:\r
6006         opBITL z80bc 3\r
6007 ;@BIT 3,D\r
6008 opcode_CB_5A:\r
6009         opBITH z80de 3\r
6010 ;@BIT 3,E\r
6011 opcode_CB_5B:\r
6012         opBITL z80de 3\r
6013 ;@BIT 3,H\r
6014 opcode_CB_5C:\r
6015         opBITH z80hl 3\r
6016 ;@BIT 3,L\r
6017 opcode_CB_5D:\r
6018         opBITL z80hl 3\r
6019 ;@BIT 3,(HL)\r
6020 opcode_CB_5E:\r
6021         readmem8HL\r
6022         opBITb 3\r
6023         fetch 12\r
6024 ;@BIT 3,A\r
6025 opcode_CB_5F:\r
6026         opBITH z80a 3\r
6027 \r
6028 ;@BIT 4,B\r
6029 opcode_CB_60:\r
6030         opBITH z80bc 4\r
6031 ;@BIT 4,C\r
6032 opcode_CB_61:\r
6033         opBITL z80bc 4\r
6034 ;@BIT 4,D\r
6035 opcode_CB_62:\r
6036         opBITH z80de 4\r
6037 ;@BIT 4,E\r
6038 opcode_CB_63:\r
6039         opBITL z80de 4\r
6040 ;@BIT 4,H\r
6041 opcode_CB_64:\r
6042         opBITH z80hl 4\r
6043 ;@BIT 4,L\r
6044 opcode_CB_65:\r
6045         opBITL z80hl 4\r
6046 ;@BIT 4,(HL)\r
6047 opcode_CB_66:\r
6048         readmem8HL\r
6049         opBITb 4\r
6050         fetch 12\r
6051 ;@BIT 4,A\r
6052 opcode_CB_67:\r
6053         opBITH z80a 4\r
6054 \r
6055 ;@BIT 5,B\r
6056 opcode_CB_68:\r
6057         opBITH z80bc 5\r
6058 ;@BIT 5,C\r
6059 opcode_CB_69:\r
6060         opBITL z80bc 5\r
6061 ;@BIT 5,D\r
6062 opcode_CB_6A:\r
6063         opBITH z80de 5\r
6064 ;@BIT 5,E\r
6065 opcode_CB_6B:\r
6066         opBITL z80de 5\r
6067 ;@BIT 5,H\r
6068 opcode_CB_6C:\r
6069         opBITH z80hl 5\r
6070 ;@BIT 5,L\r
6071 opcode_CB_6D:\r
6072         opBITL z80hl 5\r
6073 ;@BIT 5,(HL)\r
6074 opcode_CB_6E:\r
6075         readmem8HL\r
6076         opBITb 5\r
6077         fetch 12\r
6078 ;@BIT 5,A\r
6079 opcode_CB_6F:\r
6080         opBITH z80a 5\r
6081 \r
6082 ;@BIT 6,B\r
6083 opcode_CB_70:\r
6084         opBITH z80bc 6\r
6085 ;@BIT 6,C\r
6086 opcode_CB_71:\r
6087         opBITL z80bc 6\r
6088 ;@BIT 6,D\r
6089 opcode_CB_72:\r
6090         opBITH z80de 6\r
6091 ;@BIT 6,E\r
6092 opcode_CB_73:\r
6093         opBITL z80de 6\r
6094 ;@BIT 6,H\r
6095 opcode_CB_74:\r
6096         opBITH z80hl 6\r
6097 ;@BIT 6,L\r
6098 opcode_CB_75:\r
6099         opBITL z80hl 6\r
6100 ;@BIT 6,(HL)\r
6101 opcode_CB_76:\r
6102         readmem8HL\r
6103         opBITb 6\r
6104         fetch 12\r
6105 ;@BIT 6,A\r
6106 opcode_CB_77:\r
6107         opBITH z80a 6\r
6108 \r
6109 ;@BIT 7,B\r
6110 opcode_CB_78:\r
6111         opBIT7H z80bc\r
6112 ;@BIT 7,C\r
6113 opcode_CB_79:\r
6114         opBIT7L z80bc\r
6115 ;@BIT 7,D\r
6116 opcode_CB_7A:\r
6117         opBIT7H z80de\r
6118 ;@BIT 7,E\r
6119 opcode_CB_7B:\r
6120         opBIT7L z80de\r
6121 ;@BIT 7,H\r
6122 opcode_CB_7C:\r
6123         opBIT7H z80hl\r
6124 ;@BIT 7,L\r
6125 opcode_CB_7D:\r
6126         opBIT7L z80hl\r
6127 ;@BIT 7,(HL)\r
6128 opcode_CB_7E:\r
6129         readmem8HL\r
6130         opBIT7b\r
6131         fetch 12\r
6132 ;@BIT 7,A\r
6133 opcode_CB_7F:\r
6134         opBIT7H z80a\r
6135 \r
6136 ;@RES 0,B\r
6137 opcode_CB_80:\r
6138         bic z80bc,z80bc,#1<<24\r
6139         fetch 8\r
6140 ;@RES 0,C\r
6141 opcode_CB_81:\r
6142         bic z80bc,z80bc,#1<<16\r
6143         fetch 8\r
6144 ;@RES 0,D\r
6145 opcode_CB_82:\r
6146         bic z80de,z80de,#1<<24\r
6147         fetch 8\r
6148 ;@RES 0,E\r
6149 opcode_CB_83:\r
6150         bic z80de,z80de,#1<<16\r
6151         fetch 8\r
6152 ;@RES 0,H\r
6153 opcode_CB_84:\r
6154         bic z80hl,z80hl,#1<<24\r
6155         fetch 8\r
6156 ;@RES 0,L\r
6157 opcode_CB_85:\r
6158         bic z80hl,z80hl,#1<<16\r
6159         fetch 8\r
6160 ;@RES 0,(HL)\r
6161 opcode_CB_86:\r
6162         opRESmemHL 0\r
6163 ;@RES 0,A\r
6164 opcode_CB_87:\r
6165         bic z80a,z80a,#1<<24\r
6166         fetch 8\r
6167 \r
6168 ;@RES 1,B\r
6169 opcode_CB_88:\r
6170         bic z80bc,z80bc,#1<<25\r
6171         fetch 8\r
6172 ;@RES 1,C\r
6173 opcode_CB_89:\r
6174         bic z80bc,z80bc,#1<<17\r
6175         fetch 8\r
6176 ;@RES 1,D\r
6177 opcode_CB_8A:\r
6178         bic z80de,z80de,#1<<25\r
6179         fetch 8\r
6180 ;@RES 1,E\r
6181 opcode_CB_8B:\r
6182         bic z80de,z80de,#1<<17\r
6183         fetch 8\r
6184 ;@RES 1,H\r
6185 opcode_CB_8C:\r
6186         bic z80hl,z80hl,#1<<25\r
6187         fetch 8\r
6188 ;@RES 1,L\r
6189 opcode_CB_8D:\r
6190         bic z80hl,z80hl,#1<<17\r
6191         fetch 8\r
6192 ;@RES 1,(HL)\r
6193 opcode_CB_8E:\r
6194         opRESmemHL 1\r
6195 ;@RES 1,A\r
6196 opcode_CB_8F:\r
6197         bic z80a,z80a,#1<<25\r
6198         fetch 8\r
6199 \r
6200 ;@RES 2,B\r
6201 opcode_CB_90:\r
6202         bic z80bc,z80bc,#1<<26\r
6203         fetch 8\r
6204 ;@RES 2,C\r
6205 opcode_CB_91:\r
6206         bic z80bc,z80bc,#1<<18\r
6207         fetch 8\r
6208 ;@RES 2,D\r
6209 opcode_CB_92:\r
6210         bic z80de,z80de,#1<<26\r
6211         fetch 8\r
6212 ;@RES 2,E\r
6213 opcode_CB_93:\r
6214         bic z80de,z80de,#1<<18\r
6215         fetch 8\r
6216 ;@RES 2,H\r
6217 opcode_CB_94:\r
6218         bic z80hl,z80hl,#1<<26\r
6219         fetch 8\r
6220 ;@RES 2,L\r
6221 opcode_CB_95:\r
6222         bic z80hl,z80hl,#1<<18\r
6223         fetch 8\r
6224 ;@RES 2,(HL)\r
6225 opcode_CB_96:\r
6226         opRESmemHL 2\r
6227 ;@RES 2,A\r
6228 opcode_CB_97:\r
6229         bic z80a,z80a,#1<<26\r
6230         fetch 8\r
6231 \r
6232 ;@RES 3,B\r
6233 opcode_CB_98:\r
6234         bic z80bc,z80bc,#1<<27\r
6235         fetch 8\r
6236 ;@RES 3,C\r
6237 opcode_CB_99:\r
6238         bic z80bc,z80bc,#1<<19\r
6239         fetch 8\r
6240 ;@RES 3,D\r
6241 opcode_CB_9A:\r
6242         bic z80de,z80de,#1<<27\r
6243         fetch 8\r
6244 ;@RES 3,E\r
6245 opcode_CB_9B:\r
6246         bic z80de,z80de,#1<<19\r
6247         fetch 8\r
6248 ;@RES 3,H\r
6249 opcode_CB_9C:\r
6250         bic z80hl,z80hl,#1<<27\r
6251         fetch 8\r
6252 ;@RES 3,L\r
6253 opcode_CB_9D:\r
6254         bic z80hl,z80hl,#1<<19\r
6255         fetch 8\r
6256 ;@RES 3,(HL)\r
6257 opcode_CB_9E:\r
6258         opRESmemHL 3\r
6259 ;@RES 3,A\r
6260 opcode_CB_9F:\r
6261         bic z80a,z80a,#1<<27\r
6262         fetch 8\r
6263 \r
6264 ;@RES 4,B\r
6265 opcode_CB_A0:\r
6266         bic z80bc,z80bc,#1<<28\r
6267         fetch 8\r
6268 ;@RES 4,C\r
6269 opcode_CB_A1:\r
6270         bic z80bc,z80bc,#1<<20\r
6271         fetch 8\r
6272 ;@RES 4,D\r
6273 opcode_CB_A2:\r
6274         bic z80de,z80de,#1<<28\r
6275         fetch 8\r
6276 ;@RES 4,E\r
6277 opcode_CB_A3:\r
6278         bic z80de,z80de,#1<<20\r
6279         fetch 8\r
6280 ;@RES 4,H\r
6281 opcode_CB_A4:\r
6282         bic z80hl,z80hl,#1<<28\r
6283         fetch 8\r
6284 ;@RES 4,L\r
6285 opcode_CB_A5:\r
6286         bic z80hl,z80hl,#1<<20\r
6287         fetch 8\r
6288 ;@RES 4,(HL)\r
6289 opcode_CB_A6:\r
6290         opRESmemHL 4\r
6291 ;@RES 4,A\r
6292 opcode_CB_A7:\r
6293         bic z80a,z80a,#1<<28\r
6294         fetch 8\r
6295 \r
6296 ;@RES 5,B\r
6297 opcode_CB_A8:\r
6298         bic z80bc,z80bc,#1<<29\r
6299         fetch 8\r
6300 ;@RES 5,C\r
6301 opcode_CB_A9:\r
6302         bic z80bc,z80bc,#1<<21\r
6303         fetch 8\r
6304 ;@RES 5,D\r
6305 opcode_CB_AA:\r
6306         bic z80de,z80de,#1<<29\r
6307         fetch 8\r
6308 ;@RES 5,E\r
6309 opcode_CB_AB:\r
6310         bic z80de,z80de,#1<<21\r
6311         fetch 8\r
6312 ;@RES 5,H\r
6313 opcode_CB_AC:\r
6314         bic z80hl,z80hl,#1<<29\r
6315         fetch 8\r
6316 ;@RES 5,L\r
6317 opcode_CB_AD:\r
6318         bic z80hl,z80hl,#1<<21\r
6319         fetch 8\r
6320 ;@RES 5,(HL)\r
6321 opcode_CB_AE:\r
6322         opRESmemHL 5\r
6323 ;@RES 5,A\r
6324 opcode_CB_AF:\r
6325         bic z80a,z80a,#1<<29\r
6326         fetch 8\r
6327 \r
6328 ;@RES 6,B\r
6329 opcode_CB_B0:\r
6330         bic z80bc,z80bc,#1<<30\r
6331         fetch 8\r
6332 ;@RES 6,C\r
6333 opcode_CB_B1:\r
6334         bic z80bc,z80bc,#1<<22\r
6335         fetch 8\r
6336 ;@RES 6,D\r
6337 opcode_CB_B2:\r
6338         bic z80de,z80de,#1<<30\r
6339         fetch 8\r
6340 ;@RES 6,E\r
6341 opcode_CB_B3:\r
6342         bic z80de,z80de,#1<<22\r
6343         fetch 8\r
6344 ;@RES 6,H\r
6345 opcode_CB_B4:\r
6346         bic z80hl,z80hl,#1<<30\r
6347         fetch 8\r
6348 ;@RES 6,L\r
6349 opcode_CB_B5:\r
6350         bic z80hl,z80hl,#1<<22\r
6351         fetch 8\r
6352 ;@RES 6,(HL)\r
6353 opcode_CB_B6:\r
6354         opRESmemHL 6\r
6355 ;@RES 6,A\r
6356 opcode_CB_B7:\r
6357         bic z80a,z80a,#1<<30\r
6358         fetch 8\r
6359 \r
6360 ;@RES 7,B\r
6361 opcode_CB_B8:\r
6362         bic z80bc,z80bc,#1<<31\r
6363         fetch 8\r
6364 ;@RES 7,C\r
6365 opcode_CB_B9:\r
6366         bic z80bc,z80bc,#1<<23\r
6367         fetch 8\r
6368 ;@RES 7,D\r
6369 opcode_CB_BA:\r
6370         bic z80de,z80de,#1<<31\r
6371         fetch 8\r
6372 ;@RES 7,E\r
6373 opcode_CB_BB:\r
6374         bic z80de,z80de,#1<<23\r
6375         fetch 8\r
6376 ;@RES 7,H\r
6377 opcode_CB_BC:\r
6378         bic z80hl,z80hl,#1<<31\r
6379         fetch 8\r
6380 ;@RES 7,L\r
6381 opcode_CB_BD:\r
6382         bic z80hl,z80hl,#1<<23\r
6383         fetch 8\r
6384 ;@RES 7,(HL)\r
6385 opcode_CB_BE:\r
6386         opRESmemHL 7\r
6387 ;@RES 7,A\r
6388 opcode_CB_BF:\r
6389         bic z80a,z80a,#1<<31\r
6390         fetch 8\r
6391 \r
6392 ;@SET 0,B\r
6393 opcode_CB_C0:\r
6394         orr z80bc,z80bc,#1<<24\r
6395         fetch 8\r
6396 ;@SET 0,C\r
6397 opcode_CB_C1:\r
6398         orr z80bc,z80bc,#1<<16\r
6399         fetch 8\r
6400 ;@SET 0,D\r
6401 opcode_CB_C2:\r
6402         orr z80de,z80de,#1<<24\r
6403         fetch 8\r
6404 ;@SET 0,E\r
6405 opcode_CB_C3:\r
6406         orr z80de,z80de,#1<<16\r
6407         fetch 8\r
6408 ;@SET 0,H\r
6409 opcode_CB_C4:\r
6410         orr z80hl,z80hl,#1<<24\r
6411         fetch 8\r
6412 ;@SET 0,L\r
6413 opcode_CB_C5:\r
6414         orr z80hl,z80hl,#1<<16\r
6415         fetch 8\r
6416 ;@SET 0,(HL)\r
6417 opcode_CB_C6:\r
6418         opSETmemHL 0\r
6419 ;@SET 0,A\r
6420 opcode_CB_C7:\r
6421         orr z80a,z80a,#1<<24\r
6422         fetch 8\r
6423 \r
6424 ;@SET 1,B\r
6425 opcode_CB_C8:\r
6426         orr z80bc,z80bc,#1<<25\r
6427         fetch 8\r
6428 ;@SET 1,C\r
6429 opcode_CB_C9:\r
6430         orr z80bc,z80bc,#1<<17\r
6431         fetch 8\r
6432 ;@SET 1,D\r
6433 opcode_CB_CA:\r
6434         orr z80de,z80de,#1<<25\r
6435         fetch 8\r
6436 ;@SET 1,E\r
6437 opcode_CB_CB:\r
6438         orr z80de,z80de,#1<<17\r
6439         fetch 8\r
6440 ;@SET 1,H\r
6441 opcode_CB_CC:\r
6442         orr z80hl,z80hl,#1<<25\r
6443         fetch 8\r
6444 ;@SET 1,L\r
6445 opcode_CB_CD:\r
6446         orr z80hl,z80hl,#1<<17\r
6447         fetch 8\r
6448 ;@SET 1,(HL)\r
6449 opcode_CB_CE:\r
6450         opSETmemHL 1\r
6451 ;@SET 1,A\r
6452 opcode_CB_CF:\r
6453         orr z80a,z80a,#1<<25\r
6454         fetch 8\r
6455 \r
6456 ;@SET 2,B\r
6457 opcode_CB_D0:\r
6458         orr z80bc,z80bc,#1<<26\r
6459         fetch 8\r
6460 ;@SET 2,C\r
6461 opcode_CB_D1:\r
6462         orr z80bc,z80bc,#1<<18\r
6463         fetch 8\r
6464 ;@SET 2,D\r
6465 opcode_CB_D2:\r
6466         orr z80de,z80de,#1<<26\r
6467         fetch 8\r
6468 ;@SET 2,E\r
6469 opcode_CB_D3:\r
6470         orr z80de,z80de,#1<<18\r
6471         fetch 8\r
6472 ;@SET 2,H\r
6473 opcode_CB_D4:\r
6474         orr z80hl,z80hl,#1<<26\r
6475         fetch 8\r
6476 ;@SET 2,L\r
6477 opcode_CB_D5:\r
6478         orr z80hl,z80hl,#1<<18\r
6479         fetch 8\r
6480 ;@SET 2,(HL)\r
6481 opcode_CB_D6:\r
6482         opSETmemHL 2\r
6483 ;@SET 2,A\r
6484 opcode_CB_D7:\r
6485         orr z80a,z80a,#1<<26\r
6486         fetch 8\r
6487 \r
6488 ;@SET 3,B\r
6489 opcode_CB_D8:\r
6490         orr z80bc,z80bc,#1<<27\r
6491         fetch 8\r
6492 ;@SET 3,C\r
6493 opcode_CB_D9:\r
6494         orr z80bc,z80bc,#1<<19\r
6495         fetch 8\r
6496 ;@SET 3,D\r
6497 opcode_CB_DA:\r
6498         orr z80de,z80de,#1<<27\r
6499         fetch 8\r
6500 ;@SET 3,E\r
6501 opcode_CB_DB:\r
6502         orr z80de,z80de,#1<<19\r
6503         fetch 8\r
6504 ;@SET 3,H\r
6505 opcode_CB_DC:\r
6506         orr z80hl,z80hl,#1<<27\r
6507         fetch 8\r
6508 ;@SET 3,L\r
6509 opcode_CB_DD:\r
6510         orr z80hl,z80hl,#1<<19\r
6511         fetch 8\r
6512 ;@SET 3,(HL)\r
6513 opcode_CB_DE:\r
6514         opSETmemHL 3\r
6515 ;@SET 3,A\r
6516 opcode_CB_DF:\r
6517         orr z80a,z80a,#1<<27\r
6518         fetch 8\r
6519 \r
6520 ;@SET 4,B\r
6521 opcode_CB_E0:\r
6522         orr z80bc,z80bc,#1<<28\r
6523         fetch 8\r
6524 ;@SET 4,C\r
6525 opcode_CB_E1:\r
6526         orr z80bc,z80bc,#1<<20\r
6527         fetch 8\r
6528 ;@SET 4,D\r
6529 opcode_CB_E2:\r
6530         orr z80de,z80de,#1<<28\r
6531         fetch 8\r
6532 ;@SET 4,E\r
6533 opcode_CB_E3:\r
6534         orr z80de,z80de,#1<<20\r
6535         fetch 8\r
6536 ;@SET 4,H\r
6537 opcode_CB_E4:\r
6538         orr z80hl,z80hl,#1<<28\r
6539         fetch 8\r
6540 ;@SET 4,L\r
6541 opcode_CB_E5:\r
6542         orr z80hl,z80hl,#1<<20\r
6543         fetch 8\r
6544 ;@SET 4,(HL)\r
6545 opcode_CB_E6:\r
6546         opSETmemHL 4\r
6547 ;@SET 4,A\r
6548 opcode_CB_E7:\r
6549         orr z80a,z80a,#1<<28\r
6550         fetch 8\r
6551 \r
6552 ;@SET 5,B\r
6553 opcode_CB_E8:\r
6554         orr z80bc,z80bc,#1<<29\r
6555         fetch 8\r
6556 ;@SET 5,C\r
6557 opcode_CB_E9:\r
6558         orr z80bc,z80bc,#1<<21\r
6559         fetch 8\r
6560 ;@SET 5,D\r
6561 opcode_CB_EA:\r
6562         orr z80de,z80de,#1<<29\r
6563         fetch 8\r
6564 ;@SET 5,E\r
6565 opcode_CB_EB:\r
6566         orr z80de,z80de,#1<<21\r
6567         fetch 8\r
6568 ;@SET 5,H\r
6569 opcode_CB_EC:\r
6570         orr z80hl,z80hl,#1<<29\r
6571         fetch 8\r
6572 ;@SET 5,L\r
6573 opcode_CB_ED:\r
6574         orr z80hl,z80hl,#1<<21\r
6575         fetch 8\r
6576 ;@SET 5,(HL)\r
6577 opcode_CB_EE:\r
6578         opSETmemHL 5\r
6579 ;@SET 5,A\r
6580 opcode_CB_EF:\r
6581         orr z80a,z80a,#1<<29\r
6582         fetch 8\r
6583 \r
6584 ;@SET 6,B\r
6585 opcode_CB_F0:\r
6586         orr z80bc,z80bc,#1<<30\r
6587         fetch 8\r
6588 ;@SET 6,C\r
6589 opcode_CB_F1:\r
6590         orr z80bc,z80bc,#1<<22\r
6591         fetch 8\r
6592 ;@SET 6,D\r
6593 opcode_CB_F2:\r
6594         orr z80de,z80de,#1<<30\r
6595         fetch 8\r
6596 ;@SET 6,E\r
6597 opcode_CB_F3:\r
6598         orr z80de,z80de,#1<<22\r
6599         fetch 8\r
6600 ;@SET 6,H\r
6601 opcode_CB_F4:\r
6602         orr z80hl,z80hl,#1<<30\r
6603         fetch 8\r
6604 ;@SET 6,L\r
6605 opcode_CB_F5:\r
6606         orr z80hl,z80hl,#1<<22\r
6607         fetch 8\r
6608 ;@SET 6,(HL)\r
6609 opcode_CB_F6:\r
6610         opSETmemHL 6\r
6611 ;@SET 6,A\r
6612 opcode_CB_F7:\r
6613         orr z80a,z80a,#1<<30\r
6614         fetch 8\r
6615 \r
6616 ;@SET 7,B\r
6617 opcode_CB_F8:\r
6618         orr z80bc,z80bc,#1<<31\r
6619         fetch 8\r
6620 ;@SET 7,C\r
6621 opcode_CB_F9:\r
6622         orr z80bc,z80bc,#1<<23\r
6623         fetch 8\r
6624 ;@SET 7,D\r
6625 opcode_CB_FA:\r
6626         orr z80de,z80de,#1<<31\r
6627         fetch 8\r
6628 ;@SET 7,E\r
6629 opcode_CB_FB:\r
6630         orr z80de,z80de,#1<<23\r
6631         fetch 8\r
6632 ;@SET 7,H\r
6633 opcode_CB_FC:\r
6634         orr z80hl,z80hl,#1<<31\r
6635         fetch 8\r
6636 ;@SET 7,L\r
6637 opcode_CB_FD:\r
6638         orr z80hl,z80hl,#1<<23\r
6639         fetch 8\r
6640 ;@SET 7,(HL)\r
6641 opcode_CB_FE:\r
6642         opSETmemHL 7\r
6643 ;@SET 7,A\r
6644 opcode_CB_FF:\r
6645         orr z80a,z80a,#1<<31\r
6646         fetch 8\r
6647 \r
6648 \r
6649 \r
6650 ;@##################################\r
6651 ;@##################################\r
6652 ;@###  opcodes DD  #########################\r
6653 ;@##################################\r
6654 ;@##################################\r
6655 ;@Because the DD opcodes are not a complete range from 00-FF I have\r
6656 ;@created this sub routine that will catch any undocumented ops\r
6657 ;@halt the emulator and mov the current instruction to r0\r
6658 ;@at a later stage I may change to display a text message on the screen\r
6659 opcode_DD_NF:\r
6660         eatcycles 4\r
6661         ldr pc,[opcodes,r0, lsl #2]\r
6662 ;@      mov r2,#0x10*4\r
6663 ;@      cmp r2,z80xx\r
6664 ;@      bne opcode_FD_NF\r
6665 ;@      mov r0,#0xDD00\r
6666 ;@      orr r0,r0,r1\r
6667 ;@      b end_loop\r
6668 ;@opcode_FD_NF:\r
6669 ;@      mov r0,#0xFD00\r
6670 ;@      orr r0,r0,r1\r
6671 ;@      b end_loop\r
6672 \r
6673 opcode_DD_NF2:\r
6674         fetch 15\r
6675 ;@ notaz: we don't want to deadlock here\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