drz80: drop fast_sp for compatibility
[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,             0  ;@0 = Use mem functions for stack pointer, 1 = Use direct mem pointer\r
16       .equiv UPDATE_CONTEXT,         0\r
17       .equiv DRZ80_XMAP,             1\r
18       .equiv DRZ80_XMAP_MORE_INLINE, 1\r
19 \r
20 .if DRZ80_XMAP\r
21       .equ Z80_MEM_SHIFT, 13\r
22 .endif\r
23 \r
24 .if INTERRUPT_MODE\r
25       .extern Interrupt\r
26 .endif\r
27 \r
28 DrZ80Ver: .long 0x0001\r
29 \r
30 ;@ --------------------------- Defines ----------------------------\r
31 ;@ Make sure that regs/pointers for z80pc to z80sp match up!\r
32 \r
33         z80_icount .req r3\r
34         opcodes    .req r4\r
35         cpucontext .req r5\r
36         z80pc      .req r6\r
37         z80a       .req r7\r
38         z80f       .req r8\r
39         z80bc      .req r9\r
40         z80de      .req r10\r
41         z80hl      .req r11\r
42         z80sp      .req r12     \r
43         z80xx      .req lr\r
44 \r
45         .equ z80pc_pointer,           0                  ;@  0\r
46         .equ z80a_pointer,            z80pc_pointer+4    ;@  4\r
47         .equ z80f_pointer,            z80a_pointer+4     ;@  8\r
48         .equ z80bc_pointer,           z80f_pointer+4     ;@  \r
49         .equ z80de_pointer,           z80bc_pointer+4\r
50         .equ z80hl_pointer,           z80de_pointer+4\r
51         .equ z80sp_pointer,           z80hl_pointer+4\r
52         .equ z80pc_base,              z80sp_pointer+4\r
53         .equ z80sp_base,              z80pc_base+4\r
54         .equ z80ix,                   z80sp_base+4\r
55         .equ z80iy,                   z80ix+4\r
56         .equ z80i,                    z80iy+4\r
57         .equ z80a2,                   z80i+4\r
58         .equ z80f2,                   z80a2+4\r
59         .equ z80bc2,                  z80f2+4\r
60         .equ z80de2,                  z80bc2+4\r
61         .equ z80hl2,                  z80de2+4\r
62         .equ cycles_pointer,          z80hl2+4     \r
63         .equ previouspc,              cycles_pointer+4     \r
64         .equ z80irq,                  previouspc+4\r
65         .equ z80if,                   z80irq+1\r
66         .equ z80im,                   z80if+1\r
67         .equ z80r,                    z80im+1\r
68         .equ z80irqvector,            z80r+1\r
69         .equ z80irqcallback,          z80irqvector+4\r
70         .equ z80_write8,              z80irqcallback+4\r
71         .equ z80_write16,             z80_write8+4\r
72         .equ z80_in,                  z80_write16+4\r
73         .equ z80_out,                 z80_in+4\r
74         .equ z80_read8,               z80_out+4\r
75         .equ z80_read16,              z80_read8+4\r
76         .equ z80_rebaseSP,            z80_read16+4\r
77         .equ z80_rebasePC,            z80_rebaseSP+4\r
78 \r
79         .equ VFlag, 0\r
80         .equ CFlag, 1\r
81         .equ ZFlag, 2\r
82         .equ SFlag, 3\r
83         .equ HFlag, 4\r
84         .equ NFlag, 5\r
85         .equ Flag3, 6\r
86         .equ Flag5, 7\r
87 \r
88         .equ Z80_CFlag, 0\r
89         .equ Z80_NFlag, 1\r
90         .equ Z80_VFlag, 2\r
91         .equ Z80_Flag3, 3\r
92         .equ Z80_HFlag, 4\r
93         .equ Z80_Flag5, 5\r
94         .equ Z80_ZFlag, 6\r
95         .equ Z80_SFlag, 7\r
96 \r
97         .equ Z80_IF1, 1<<0\r
98         .equ Z80_IF2, 1<<1\r
99         .equ Z80_HALT, 1<<2\r
100         .equ Z80_NMI, 1<<3\r
101 \r
102 ;@---------------------------------------\r
103 \r
104 .text\r
105 \r
106 .if DRZ80_XMAP\r
107 \r
108 z80_xmap_read8: @ addr\r
109     ldr r1,[cpucontext,#z80_read8]\r
110     mov r2,r0,lsr #Z80_MEM_SHIFT\r
111     ldr r1,[r1,r2,lsl #2]\r
112     movs r1,r1,lsl #1\r
113     ldrccb r0,[r1,r0]\r
114     bxcc lr\r
115 \r
116 z80_xmap_read8_handler: @ addr, func\r
117     str z80_icount,[cpucontext,#cycles_pointer]\r
118     stmfd sp!,{r12,lr}\r
119     mov lr,pc\r
120     bx r1\r
121     ldr z80_icount,[cpucontext,#cycles_pointer]\r
122     ldmfd sp!,{r12,pc}\r
123 \r
124 z80_xmap_write8: @ data, addr\r
125     ldr r2,[cpucontext,#z80_write8]\r
126     add r2,r2,r1,lsr #Z80_MEM_SHIFT-2\r
127     bic r2,r2,#3\r
128     ldr r2,[r2]\r
129     movs r2,r2,lsl #1\r
130     strccb r0,[r2,r1]\r
131     bxcc lr\r
132 \r
133 z80_xmap_write8_handler: @ data, addr, func\r
134     str z80_icount,[cpucontext,#cycles_pointer]\r
135     mov r3,r0\r
136     mov r0,r1\r
137     mov r1,r3\r
138     stmfd sp!,{r12,lr}\r
139     mov lr,pc\r
140     bx r2\r
141     ldr z80_icount,[cpucontext,#cycles_pointer]\r
142     ldmfd sp!,{r12,pc}\r
143 \r
144 z80_xmap_read16: @ addr\r
145     @ check if we cross bank boundary\r
146     add r1,r0,#1\r
147     eor r1,r1,r0\r
148     tst r1,#1<<Z80_MEM_SHIFT\r
149     bne 0f\r
150 \r
151     ldr r1,[cpucontext,#z80_read8]\r
152     mov r2,r0,lsr #Z80_MEM_SHIFT\r
153     ldr r1,[r1,r2,lsl #2]\r
154     movs r1,r1,lsl #1\r
155     bcs 0f\r
156     ldrb r0,[r1,r0]!\r
157     ldrb r1,[r1,#1]\r
158     orr r0,r0,r1,lsl #8\r
159     bx lr\r
160 \r
161 0:\r
162     @ z80_xmap_read8 will save r3 and r12 for us\r
163     stmfd sp!,{r8,r9,lr}\r
164     mov r8,r0\r
165     bl z80_xmap_read8\r
166     mov r9,r0\r
167     add r0,r8,#1\r
168     bl z80_xmap_read8\r
169     orr r0,r9,r0,lsl #8\r
170     ldmfd sp!,{r8,r9,pc}\r
171 \r
172 z80_xmap_write16: @ data, addr\r
173     add r2,r1,#1\r
174     eor r2,r2,r1\r
175     tst r2,#1<<Z80_MEM_SHIFT\r
176     bne 0f\r
177 \r
178     ldr r2,[cpucontext,#z80_write8]\r
179     add r2,r2,r1,lsr #Z80_MEM_SHIFT-2\r
180     bic r2,r2,#3\r
181     ldr r2,[r2]\r
182     movs r2,r2,lsl #1\r
183     bcs 0f\r
184     strb r0,[r2,r1]!\r
185     mov r0,r0,lsr #8\r
186     strb r0,[r2,#1]\r
187     bx lr\r
188 \r
189 0:\r
190     stmfd sp!,{r8,r9,lr}\r
191     mov r8,r0\r
192     mov r9,r1\r
193     bl z80_xmap_write8\r
194     mov r0,r8,lsr #8\r
195     add r1,r9,#1\r
196     bl z80_xmap_write8\r
197     ldmfd sp!,{r8,r9,pc}\r
198 \r
199 z80_xmap_rebase_pc:\r
200     ldr r1,[cpucontext,#z80_read8]\r
201     mov r2,r0,lsr #Z80_MEM_SHIFT\r
202     ldr r1,[r1,r2,lsl #2]\r
203     movs r1,r1,lsl #1\r
204     strcc r1,[cpucontext,#z80pc_base]\r
205     addcc z80pc,r1,r0\r
206     bxcc lr\r
207 \r
208 z80_bad_jump:\r
209     stmfd sp!,{r3,r12,lr}\r
210     mov lr,pc\r
211     ldr pc,[cpucontext,#z80_rebasePC]\r
212     mov z80pc,r0\r
213     ldmfd sp!,{r3,r12,pc}\r
214 \r
215 .if FAST_Z80SP\r
216 z80_xmap_rebase_sp:\r
217     ldr r1,[cpucontext,#z80_read8]\r
218     sub r2,r0,#1\r
219     mov r2,r2,lsl #16\r
220     mov r2,r2,lsr #(Z80_MEM_SHIFT+16)\r
221     ldr r1,[r1,r2,lsl #2]\r
222     movs r1,r1,lsl #1\r
223     strcc r1,[cpucontext,#z80sp_base]\r
224     addcc z80sp,r1,r0\r
225     bxcc lr\r
226 \r
227     stmfd sp!,{r3,r12,lr}\r
228     mov lr,pc\r
229     ldr pc,[cpucontext,#z80_rebaseSP]\r
230     mov z80sp,r0\r
231     ldmfd sp!,{r3,r12,pc}\r
232 .endif @ FAST_Z80SP\r
233  \r
234 .endif @ DRZ80_XMAP\r
235 \r
236 \r
237 .macro fetch cycs\r
238         subs z80_icount,z80_icount,#\cycs\r
239 .if UPDATE_CONTEXT\r
240     str z80pc,[cpucontext,#z80pc_pointer]\r
241         str z80_icount,[cpucontext,#cycles_pointer]\r
242         ldr r1,[cpucontext,#z80pc_base]\r
243         sub r2,z80pc,r1\r
244         str r2,[cpucontext,#previouspc]\r
245 .endif\r
246         ldrplb r0,[z80pc],#1\r
247         ldrpl pc,[opcodes,r0, lsl #2]\r
248         bmi z80_execute_end\r
249 .endm\r
250 \r
251 .macro eatcycles cycs\r
252         sub z80_icount,z80_icount,#\cycs\r
253 .if UPDATE_CONTEXT\r
254         str z80_icount,[cpucontext,#cycles_pointer]\r
255 .endif\r
256 .endm\r
257 \r
258 .macro readmem8\r
259 .if UPDATE_CONTEXT\r
260     str z80pc,[cpucontext,#z80pc_pointer]\r
261 .endif\r
262 .if DRZ80_XMAP\r
263 .if !DRZ80_XMAP_MORE_INLINE\r
264     ldr r1,[cpucontext,#z80_read8]\r
265     mov r2,r0,lsr #Z80_MEM_SHIFT\r
266     ldr r1,[r1,r2,lsl #2]\r
267     movs r1,r1,lsl #1\r
268     ldrccb r0,[r1,r0]\r
269     blcs z80_xmap_read8_handler\r
270 .else\r
271     bl z80_xmap_read8\r
272 .endif\r
273 .else ;@ if !DRZ80_XMAP\r
274     stmfd sp!,{r3,r12}\r
275         mov lr,pc\r
276         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
277         ldmfd sp!,{r3,r12}\r
278 .endif\r
279 .endm\r
280 \r
281 .macro readmem8HL\r
282         mov r0,z80hl, lsr #16\r
283         readmem8\r
284 .endm\r
285 \r
286 .macro readmem16\r
287 .if UPDATE_CONTEXT\r
288      str z80pc,[cpucontext,#z80pc_pointer]\r
289 .endif\r
290 .if DRZ80_XMAP\r
291     bl z80_xmap_read16\r
292 .else\r
293         stmfd sp!,{r3,r12}\r
294         mov lr,pc\r
295         ldr pc,[cpucontext,#z80_read16]\r
296         ldmfd sp!,{r3,r12}\r
297 .endif\r
298 .endm\r
299 \r
300 .macro writemem8\r
301 .if UPDATE_CONTEXT\r
302      str z80pc,[cpucontext,#z80pc_pointer]\r
303 .endif\r
304 .if DRZ80_XMAP\r
305 .if DRZ80_XMAP_MORE_INLINE\r
306     ldr r2,[cpucontext,#z80_write8]\r
307     mov lr,r1,lsr #Z80_MEM_SHIFT\r
308     ldr r2,[r2,lr,lsl #2]\r
309     movs r2,r2,lsl #1\r
310     strccb r0,[r2,r1]\r
311     blcs z80_xmap_write8_handler\r
312 .else\r
313     bl z80_xmap_write8\r
314 .endif\r
315 .else ;@ if !DRZ80_XMAP\r
316         stmfd sp!,{r3,r12}\r
317         mov lr,pc\r
318         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
319         ldmfd sp!,{r3,r12}\r
320 .endif\r
321 .endm\r
322 \r
323 .macro writemem8DE\r
324         mov r1,z80de, lsr #16\r
325         writemem8\r
326 .endm\r
327 \r
328 .macro writemem8HL\r
329         mov r1,z80hl, lsr #16\r
330         writemem8\r
331 .endm\r
332 \r
333 .macro writemem16\r
334 .if UPDATE_CONTEXT\r
335      str z80pc,[cpucontext,#z80pc_pointer]\r
336 .endif\r
337 .if DRZ80_XMAP\r
338     bl z80_xmap_write16\r
339 .else\r
340         stmfd sp!,{r3,r12}\r
341         mov lr,pc\r
342         ldr pc,[cpucontext,#z80_write16]                ;@ r0=data r1=addr\r
343         ldmfd sp!,{r3,r12}\r
344 .endif\r
345 .endm\r
346 \r
347 .macro copymem8HL_DE\r
348 .if UPDATE_CONTEXT\r
349      str z80pc,[cpucontext,#z80pc_pointer]\r
350 .endif\r
351         mov r0,z80hl, lsr #16\r
352 .if DRZ80_XMAP\r
353     bl z80_xmap_read8\r
354 .else\r
355     stmfd sp!,{r3,r12}\r
356         mov lr,pc\r
357         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
358 .endif\r
359         mov r1,z80de, lsr #16\r
360 .if DRZ80_XMAP\r
361     bl z80_xmap_write8\r
362 .else\r
363         mov lr,pc\r
364         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
365         ldmfd sp!,{r3,r12}\r
366 .endif\r
367 .endm\r
368 ;@---------------------------------------\r
369 \r
370 .macro rebasepc\r
371 .if UPDATE_CONTEXT\r
372      str z80pc,[cpucontext,#z80pc_pointer]\r
373 .endif\r
374 .if DRZ80_XMAP\r
375     bl z80_xmap_rebase_pc\r
376 .else\r
377     stmfd sp!,{r3,r12}\r
378         mov lr,pc\r
379         ldr pc,[cpucontext,#z80_rebasePC]               ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
380         ldmfd sp!,{r3,r12}\r
381         mov z80pc,r0\r
382 .endif\r
383 .endm\r
384 \r
385 .macro rebasesp\r
386 .if UPDATE_CONTEXT\r
387      str z80pc,[cpucontext,#z80pc_pointer]\r
388 .endif\r
389 .if DRZ80_XMAP\r
390     bl z80_xmap_rebase_sp\r
391 .else\r
392         stmfd sp!,{r3,r12}\r
393         mov lr,pc\r
394         ldr pc,[cpucontext,#z80_rebaseSP]               ;@ external function must rebase sp\r
395         ldmfd sp!,{r3,r12}\r
396         mov z80sp,r0\r
397 .endif\r
398 .endm\r
399 ;@----------------------------------------------------------------------------\r
400 \r
401 .macro opADC\r
402         movs z80f,z80f,lsr#2                                    ;@ get C\r
403         subcs r0,r0,#0x100\r
404         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of half carry\r
405         adcs z80a,z80a,r0,ror#8\r
406         mrs r0,cpsr                                                             ;@ S,Z,V&C\r
407         eor z80f,z80f,z80a,lsr#24\r
408         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
409         orr z80f,z80f,r0,lsr#28\r
410 .endm\r
411 \r
412 .macro opADCA\r
413         movs z80f,z80f,lsr#2                                    ;@ get C\r
414         orrcs z80a,z80a,#0x00800000\r
415         adds z80a,z80a,z80a\r
416         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
417         mov z80f,z80f,lsr#28\r
418         tst z80a,#0x10000000                                    ;@ H, correct\r
419         orrne z80f,z80f,#1<<HFlag\r
420         fetch 4\r
421 .endm\r
422 \r
423 .macro opADCH reg\r
424         mov r0,\reg,lsr#24\r
425         opADC\r
426         fetch 4\r
427 .endm\r
428 \r
429 .macro opADCL reg\r
430         movs z80f,z80f,lsr#2                                    ;@ get C\r
431         adc r0,\reg,\reg,lsr#15\r
432         orrcs z80a,z80a,#0x00800000\r
433         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
434         adds z80a,z80a,r0,lsl#23\r
435         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
436         mov z80f,z80f,lsr#28\r
437         cmn r1,r0,lsl#27\r
438         orrcs z80f,z80f,#1<<HFlag                               ;@ H, correct\r
439         fetch 4\r
440 .endm\r
441 \r
442 .macro opADCb\r
443         opADC\r
444 .endm\r
445 ;@---------------------------------------\r
446 \r
447 .macro opADD reg shift\r
448         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
449         adds z80a,z80a,\reg,lsl#\shift\r
450         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
451         mov z80f,z80f,lsr#28\r
452         cmn r1,\reg,lsl#\shift+4\r
453         orrcs z80f,z80f,#1<<HFlag\r
454 .endm\r
455 \r
456 .macro opADDA\r
457         adds z80a,z80a,z80a\r
458         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
459         mov z80f,z80f,lsr#28\r
460         tst z80a,#0x10000000                                    ;@ H, correct\r
461         orrne z80f,z80f,#1<<HFlag\r
462         fetch 4\r
463 .endm\r
464 \r
465 .macro opADDH reg\r
466         and r0,\reg,#0xFF000000\r
467         opADD r0 0\r
468         fetch 4\r
469 .endm\r
470 \r
471 .macro opADDL reg\r
472         opADD \reg 8\r
473         fetch 4\r
474 .endm\r
475 \r
476 .macro opADDb \r
477         opADD r0 24\r
478 .endm\r
479 ;@---------------------------------------\r
480 \r
481 .macro opADC16 reg\r
482         movs z80f,z80f,lsr#2                                    ;@ get C\r
483         adc r0,z80a,\reg,lsr#15\r
484         orrcs z80hl,z80hl,#0x00008000\r
485         mov r1,z80hl,lsl#4\r
486         adds z80hl,z80hl,r0,lsl#15\r
487         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
488         mov z80f,z80f,lsr#28\r
489         cmn r1,r0,lsl#19\r
490         orrcs z80f,z80f,#1<<HFlag\r
491         fetch 15\r
492 .endm\r
493 \r
494 .macro opADC16HL\r
495         movs z80f,z80f,lsr#2                                    ;@ get C\r
496         orrcs z80hl,z80hl,#0x00008000\r
497         adds z80hl,z80hl,z80hl\r
498         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
499         mov z80f,z80f,lsr#28\r
500         tst z80hl,#0x10000000                                   ;@ H, correct.\r
501         orrne z80f,z80f,#1<<HFlag\r
502         fetch 15\r
503 .endm\r
504 \r
505 .macro opADD16 reg1 reg2\r
506         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
507         adds \reg1,\reg1,\reg2\r
508         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
509         orrcs z80f,z80f,#1<<CFlag\r
510         cmn r1,\reg2,lsl#4\r
511         orrcs z80f,z80f,#1<<HFlag\r
512 .endm\r
513 \r
514 .macro opADD16s reg1 reg2 shift\r
515         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
516         adds \reg1,\reg1,\reg2,lsl#\shift\r
517         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
518         orrcs z80f,z80f,#1<<CFlag\r
519         cmn r1,\reg2,lsl#4+\shift\r
520         orrcs z80f,z80f,#1<<HFlag\r
521 .endm\r
522 \r
523 .macro opADD16_2 reg\r
524         adds \reg,\reg,\reg\r
525         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
526         orrcs z80f,z80f,#1<<CFlag\r
527         tst \reg,#0x10000000                                    ;@ H, correct.\r
528         orrne z80f,z80f,#1<<HFlag\r
529 .endm\r
530 ;@---------------------------------------\r
531 \r
532 .macro opAND reg shift\r
533         and z80a,z80a,\reg,lsl#\shift\r
534         sub r0,opcodes,#0x100\r
535         ldrb z80f,[r0,z80a, lsr #24]\r
536         orr z80f,z80f,#1<<HFlag\r
537 .endm\r
538 \r
539 .macro opANDA\r
540         sub r0,opcodes,#0x100\r
541         ldrb z80f,[r0,z80a, lsr #24]\r
542         orr z80f,z80f,#1<<HFlag\r
543         fetch 4\r
544 .endm\r
545 \r
546 .macro opANDH reg\r
547         opAND \reg 0\r
548         fetch 4\r
549 .endm\r
550 \r
551 .macro opANDL reg\r
552         opAND \reg 8\r
553         fetch 4\r
554 .endm\r
555 \r
556 .macro opANDb\r
557         opAND r0 24\r
558 .endm\r
559 ;@---------------------------------------\r
560 \r
561 .macro opBITH reg bit\r
562         and z80f,z80f,#1<<CFlag\r
563         tst \reg,#1<<(24+\bit)\r
564         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
565         orrne z80f,z80f,#(1<<HFlag)\r
566         fetch 8\r
567 .endm\r
568 \r
569 .macro opBIT7H reg\r
570         and z80f,z80f,#1<<CFlag\r
571         tst \reg,#1<<(24+7)\r
572         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
573         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
574         fetch 8\r
575 .endm\r
576 \r
577 .macro opBITL reg bit\r
578         and z80f,z80f,#1<<CFlag\r
579         tst \reg,#1<<(16+\bit)\r
580         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
581         orrne z80f,z80f,#(1<<HFlag)\r
582         fetch 8\r
583 .endm\r
584 \r
585 .macro opBIT7L reg\r
586         and z80f,z80f,#1<<CFlag\r
587         tst \reg,#1<<(16+7)\r
588         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
589         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
590         fetch 8\r
591 .endm\r
592 \r
593 .macro opBITb bit\r
594         and z80f,z80f,#1<<CFlag\r
595         tst r0,#1<<\bit\r
596         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
597         orrne z80f,z80f,#(1<<HFlag)\r
598 .endm\r
599 \r
600 .macro opBIT7b\r
601         and z80f,z80f,#1<<CFlag\r
602         tst r0,#1<<7\r
603         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
604         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
605 .endm\r
606 ;@---------------------------------------\r
607 \r
608 .macro opCP reg shift\r
609         mov r1,z80a,lsl#4                                               ;@ prepare for check of half carry\r
610         cmp z80a,\reg,lsl#\shift\r
611         mrs z80f,cpsr\r
612         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
613         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
614         cmp r1,\reg,lsl#\shift+4\r
615         orrcc z80f,z80f,#1<<HFlag\r
616 .endm\r
617 \r
618 .macro opCPA\r
619         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
620         fetch 4\r
621 .endm\r
622 \r
623 .macro opCPH reg\r
624         and r0,\reg,#0xFF000000\r
625         opCP r0 0\r
626         fetch 4\r
627 .endm\r
628 \r
629 .macro opCPL reg\r
630         opCP \reg 8\r
631         fetch 4\r
632 .endm\r
633 \r
634 .macro opCPb\r
635         opCP r0 24\r
636 .endm\r
637 ;@---------------------------------------\r
638 \r
639 .macro opDEC8 reg                                                       ;@for A and memory\r
640         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
641         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
642         tst \reg,#0x0f000000\r
643         orreq z80f,z80f,#1<<HFlag\r
644         subs \reg,\reg,#0x01000000\r
645         orrmi z80f,z80f,#1<<SFlag\r
646         orrvs z80f,z80f,#1<<VFlag\r
647         orreq z80f,z80f,#1<<ZFlag\r
648 .endm\r
649 \r
650 .macro opDEC8H reg                                                      ;@for B, D & H\r
651         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
652         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
653         tst \reg,#0x0f000000\r
654         orreq z80f,z80f,#1<<HFlag\r
655         subs \reg,\reg,#0x01000000\r
656         orrmi z80f,z80f,#1<<SFlag\r
657         orrvs z80f,z80f,#1<<VFlag\r
658         tst \reg,#0xff000000                                    ;@Z\r
659         orreq z80f,z80f,#1<<ZFlag\r
660 .endm\r
661 \r
662 .macro opDEC8L reg                                                      ;@for C, E & L\r
663         mov \reg,\reg,ror#24\r
664         opDEC8H \reg\r
665         mov \reg,\reg,ror#8\r
666 .endm\r
667 \r
668 .macro opDEC8b                                                          ;@for memory\r
669         mov r0,r0,lsl#24\r
670         opDEC8 r0\r
671         mov r0,r0,lsr#24\r
672 .endm\r
673 ;@---------------------------------------\r
674 \r
675 .macro opIN\r
676         stmfd sp!,{r3,r12}\r
677         mov lr,pc\r
678         ldr pc,[cpucontext,#z80_in]                             ;@ r0=port - data returned in r0\r
679         ldmfd sp!,{r3,r12}\r
680 .endm\r
681 \r
682 .macro opIN_C\r
683         mov r0,z80bc, lsr #16\r
684         opIN\r
685 .endm\r
686 ;@---------------------------------------\r
687 \r
688 .macro opINC8 reg                                                       ;@for A and memory\r
689         and z80f,z80f,#1<<CFlag                                 ;@save carry, clear n\r
690         adds \reg,\reg,#0x01000000\r
691         orrmi z80f,z80f,#1<<SFlag\r
692         orrvs z80f,z80f,#1<<VFlag\r
693         orrcs z80f,z80f,#1<<ZFlag                               ;@cs when going from 0xFF to 0x00\r
694         tst \reg,#0x0f000000\r
695         orreq z80f,z80f,#1<<HFlag\r
696 .endm\r
697 \r
698 .macro opINC8H reg                                                      ;@for B, D & H\r
699         opINC8 \reg\r
700 .endm\r
701 \r
702 .macro opINC8L reg                                                      ;@for C, E & L\r
703         mov \reg,\reg,ror#24\r
704         opINC8 \reg\r
705         mov \reg,\reg,ror#8\r
706 .endm\r
707 \r
708 .macro opINC8b                                                          ;@for memory\r
709         mov r0,r0,lsl#24\r
710         opINC8 r0\r
711         mov r0,r0,lsr#24\r
712 .endm\r
713 ;@---------------------------------------\r
714 \r
715 .macro opOR reg shift\r
716         orr z80a,z80a,\reg,lsl#\shift\r
717         sub r0,opcodes,#0x100\r
718         ldrb z80f,[r0,z80a, lsr #24]\r
719 .endm\r
720 \r
721 .macro opORA\r
722         sub r0,opcodes,#0x100\r
723         ldrb z80f,[r0,z80a, lsr #24]\r
724         fetch 4\r
725 .endm\r
726 \r
727 .macro opORH reg\r
728         and r0,\reg,#0xFF000000\r
729         opOR r0 0\r
730         fetch 4\r
731 .endm\r
732 \r
733 .macro opORL reg\r
734         opOR \reg 8\r
735         fetch 4\r
736 .endm\r
737 \r
738 .macro opORb\r
739         opOR r0 24\r
740 .endm\r
741 ;@---------------------------------------\r
742 \r
743 .macro opOUT\r
744         stmfd sp!,{r3,r12}\r
745         mov lr,pc\r
746         ldr pc,[cpucontext,#z80_out]                    ;@ r0=port r1=data\r
747         ldmfd sp!,{r3,r12}\r
748 .endm\r
749 \r
750 .macro opOUT_C\r
751         mov r0,z80bc, lsr #16\r
752         opOUT\r
753 .endm\r
754 ;@---------------------------------------\r
755 \r
756 .macro opPOP\r
757 .if FAST_Z80SP\r
758         ldrb r0,[z80sp],#1\r
759         ldrb r1,[z80sp],#1\r
760         orr r0,r0,r1, lsl #8\r
761 .else\r
762         mov r0,z80sp\r
763         readmem16\r
764         add z80sp,z80sp,#2\r
765 .endif\r
766 .endm\r
767 \r
768 .macro opPOPreg reg\r
769         opPOP\r
770         mov \reg,r0, lsl #16\r
771         fetch 10\r
772 .endm\r
773 ;@---------------------------------------\r
774 \r
775 .macro stack_check\r
776     @ try to protect against stack overflows, lock into current bank\r
777     ldr r1,[cpucontext,#z80sp_base]\r
778     sub r1,z80sp,r1\r
779     cmp r1,#2\r
780     addlt z80sp,z80sp,#1<<Z80_MEM_SHIFT\r
781 .endm\r
782 \r
783 .macro opPUSHareg reg @ reg > r1\r
784 .if FAST_Z80SP\r
785 .if DRZ80_XMAP\r
786         stack_check\r
787 .endif\r
788         mov r1,\reg, lsr #8\r
789         strb r1,[z80sp,#-1]!\r
790         strb \reg,[z80sp,#-1]!\r
791 .else\r
792     mov r0,\reg\r
793         sub z80sp,z80sp,#2\r
794         mov r1,z80sp\r
795         writemem16\r
796 .endif\r
797 .endm\r
798 \r
799 .macro opPUSHreg reg\r
800 .if FAST_Z80SP\r
801 .if DRZ80_XMAP\r
802         stack_check\r
803 .endif\r
804     mov r1,\reg, lsr #24\r
805         strb r1,[z80sp,#-1]!\r
806         mov r1,\reg, lsr #16\r
807         strb r1,[z80sp,#-1]!\r
808 .else\r
809         mov r0,\reg,lsr #16\r
810         sub z80sp,z80sp,#2\r
811         mov r1,z80sp\r
812         writemem16\r
813 .endif\r
814 .endm\r
815 ;@---------------------------------------\r
816 \r
817 .macro opRESmemHL bit\r
818         mov r0,z80hl, lsr #16\r
819 .if DRZ80_XMAP\r
820         bl z80_xmap_read8\r
821         bic r0,r0,#1<<\bit\r
822         mov r1,z80hl, lsr #16\r
823         bl z80_xmap_write8\r
824 .else\r
825         stmfd sp!,{r3,r12}\r
826         mov lr,pc\r
827         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
828         bic r0,r0,#1<<\bit\r
829         mov r1,z80hl, lsr #16\r
830         mov lr,pc\r
831         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
832         ldmfd sp!,{r3,r12}\r
833 .endif\r
834     fetch 15\r
835 .endm\r
836 ;@---------------------------------------\r
837 \r
838 .macro opRESmem bit\r
839 .if DRZ80_XMAP\r
840         stmfd sp!,{r0}                                                  ;@ save addr as well\r
841         bl z80_xmap_read8\r
842         bic r0,r0,#1<<\bit\r
843         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
844         bl z80_xmap_write8\r
845 .else\r
846         stmfd sp!,{r3,r12}\r
847         stmfd sp!,{r0}                                                  ;@ save addr as well\r
848         mov lr,pc\r
849         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
850         bic r0,r0,#1<<\bit\r
851         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
852         mov lr,pc\r
853         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
854         ldmfd sp!,{r3,r12}\r
855 .endif\r
856         fetch 23\r
857 .endm\r
858 ;@---------------------------------------\r
859 \r
860 .macro opRL reg1 reg2 shift\r
861         movs \reg1,\reg2,lsl \shift\r
862         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
863         orrne \reg1,\reg1,#0x01000000\r
864 ;@      and r2,z80f,#1<<CFlag\r
865 ;@      orr $x,$x,r2,lsl#23\r
866         sub r1,opcodes,#0x100\r
867         ldrb z80f,[r1,\reg1,lsr#24]                             ;@get PZS\r
868         orrcs z80f,z80f,#1<<CFlag\r
869 .endm\r
870 \r
871 .macro opRLA\r
872         opRL z80a, z80a, #1\r
873         fetch 8\r
874 .endm\r
875 \r
876 .macro opRLH reg\r
877         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
878         adds \reg,\reg,r0\r
879         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
880         orrne \reg,\reg,#0x01000000\r
881         sub r1,opcodes,#0x100\r
882         ldrb z80f,[r1,\reg,lsr#24]                              ;@get PZS\r
883         orrcs z80f,z80f,#1<<CFlag\r
884         fetch 8\r
885 .endm\r
886 \r
887 .macro opRLL reg\r
888         opRL r0, \reg, #9\r
889         and \reg,\reg,#0xFF000000                               ;@mask out high\r
890         orr \reg,\reg,r0,lsr#8\r
891         fetch 8\r
892 .endm\r
893 \r
894 .macro opRLb\r
895         opRL r0, r0, #25\r
896         mov r0,r0,lsr#24\r
897 .endm\r
898 ;@---------------------------------------\r
899 \r
900 .macro opRLC reg1 reg2 shift\r
901         movs \reg1,\reg2,lsl#\shift\r
902         orrcs \reg1,\reg1,#0x01000000\r
903         sub r1,opcodes,#0x100\r
904         ldrb z80f,[r1,\reg1,lsr#24]\r
905         orrcs z80f,z80f,#1<<CFlag\r
906 .endm\r
907 \r
908 .macro opRLCA\r
909         opRLC z80a, z80a, 1\r
910         fetch 8\r
911 .endm\r
912 \r
913 .macro opRLCH reg\r
914         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
915         adds \reg,\reg,r0\r
916         orrcs \reg,\reg,#0x01000000\r
917         sub r1,opcodes,#0x100\r
918         ldrb z80f,[r1,\reg,lsr#24]\r
919         orrcs z80f,z80f,#1<<CFlag\r
920         fetch 8\r
921 .endm\r
922 \r
923 .macro opRLCL reg\r
924         opRLC r0, \reg, 9\r
925         and \reg,\reg,#0xFF000000                               ;@mask out high\r
926         orr \reg,\reg,r0,lsr#8\r
927         fetch 8\r
928 .endm\r
929 \r
930 .macro opRLCb\r
931         opRLC r0, r0, 25\r
932         mov r0,r0,lsr#24\r
933 .endm\r
934 ;@---------------------------------------\r
935 \r
936 .macro opRR reg1 reg2 shift\r
937         movs \reg1,\reg2,lsr#\shift\r
938         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
939         orrne \reg1,\reg1,#0x00000080\r
940 ;@      and r2,z80_f,#PSR_C\r
941 ;@      orr \reg1,\reg1,r2,lsl#6\r
942         sub r1,opcodes,#0x100\r
943         ldrb z80f,[r1,\reg1]\r
944         orrcs z80f,z80f,#1<<CFlag\r
945 .endm\r
946 \r
947 .macro opRRA\r
948         orr z80a,z80a,z80f,lsr#1                                ;@get C\r
949         movs z80a,z80a,ror#25\r
950         mov z80a,z80a,lsl#24\r
951         sub r1,opcodes,#0x100\r
952         ldrb z80f,[r1,z80a,lsr#24]\r
953         orrcs z80f,z80f,#1<<CFlag\r
954         fetch 8\r
955 .endm\r
956 \r
957 .macro opRRH reg\r
958         orr r0,\reg,z80f,lsr#1                                  ;@get C\r
959         movs r0,r0,ror#25\r
960         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
961         orr \reg,\reg,r0,lsl#24\r
962         sub r1,opcodes,#0x100\r
963         ldrb z80f,[r1,\reg,lsr#24]\r
964         orrcs z80f,z80f,#1<<CFlag\r
965         fetch 8\r
966 .endm\r
967 \r
968 .macro opRRL reg\r
969         and r0,\reg,#0x00FF0000                                 ;@mask out low to r0\r
970         opRR r0 r0 17\r
971         and \reg,\reg,#0xFF000000                               ;@mask out high\r
972         orr \reg,\reg,r0,lsl#16\r
973         fetch 8\r
974 .endm\r
975 \r
976 .macro opRRb\r
977         opRR r0 r0 1\r
978 .endm\r
979 ;@---------------------------------------\r
980 \r
981 .macro opRRC reg1 reg2 shift\r
982         movs \reg1,\reg2,lsr#\shift\r
983         orrcs \reg1,\reg1,#0x00000080\r
984         sub r1,opcodes,#0x100\r
985         ldrb z80f,[r1,\reg1]\r
986         orrcs z80f,z80f,#1<<CFlag\r
987 .endm\r
988 \r
989 .macro opRRCA\r
990         opRRC z80a, z80a, 25\r
991         mov z80a,z80a,lsl#24\r
992         fetch 8\r
993 .endm\r
994 \r
995 .macro opRRCH reg\r
996         opRRC r0, \reg, 25\r
997         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
998         orr \reg,\reg,r0,lsl#24\r
999         fetch 8\r
1000 .endm\r
1001 \r
1002 .macro opRRCL reg\r
1003         and r0,\reg,#0x00FF0000                                 ;@mask low to r0\r
1004         opRRC r0, r0, 17\r
1005         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1006         orr \reg,\reg,r0,lsl#16\r
1007         fetch 8\r
1008 .endm\r
1009 \r
1010 .macro opRRCb\r
1011         opRRC r0, r0, 1\r
1012 .endm\r
1013 ;@---------------------------------------\r
1014 \r
1015 .macro opRST addr\r
1016         ldr r0,[cpucontext,#z80pc_base]\r
1017         sub r2,z80pc,r0\r
1018     opPUSHareg r2\r
1019         mov r0,#\addr\r
1020         rebasepc\r
1021         fetch 11\r
1022 .endm\r
1023 ;@---------------------------------------\r
1024 \r
1025 .macro opSBC\r
1026         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1027         movs z80f,z80f,lsr#2                                    ;@ get C\r
1028         subcc r0,r0,#0x100\r
1029         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of H\r
1030         sbcs z80a,z80a,r0,ror#8\r
1031         mrs r0,cpsr\r
1032         eor z80f,z80f,z80a,lsr#24\r
1033         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
1034         orr z80f,z80f,r0,lsr#28                                 ;@ S,Z,V&C\r
1035         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1036 .endm\r
1037 \r
1038 .macro opSBCA\r
1039         movs z80f,z80f,lsr#2                                    ;@ get C\r
1040         movcc z80a,#0x00000000\r
1041         movcs z80a,#0xFF000000\r
1042         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1043         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1044         fetch 4\r
1045 .endm\r
1046 \r
1047 .macro opSBCH reg\r
1048         mov r0,\reg,lsr#24\r
1049         opSBC\r
1050         fetch 4\r
1051 .endm\r
1052 \r
1053 .macro opSBCL reg\r
1054         mov r0,\reg,lsl#8\r
1055         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1056         movs z80f,z80f,lsr#2                                    ;@ get C\r
1057         sbccc r0,r0,#0xFF000000\r
1058         mov r1,z80a,lsl#4                                               ;@ prepare for check of H\r
1059         sbcs z80a,z80a,r0\r
1060         mrs z80f,cpsr\r
1061         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1062         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1063         cmp r1,r0,lsl#4\r
1064         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1065         fetch 4\r
1066 .endm\r
1067 \r
1068 .macro opSBCb\r
1069         opSBC\r
1070 .endm\r
1071 ;@---------------------------------------\r
1072 \r
1073 .macro opSBC16 reg\r
1074         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1075         movs z80f,z80f,lsr#2                                    ;@ get C\r
1076         sbc r1,r1,r1                                                    ;@ set r1 to -1 or 0.\r
1077         orr r0,\reg,r1,lsr#16\r
1078         mov r1,z80hl,lsl#4                                              ;@ prepare for check of H\r
1079         sbcs z80hl,z80hl,r0\r
1080         mrs z80f,cpsr\r
1081         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1082         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1083         cmp r1,r0,lsl#4\r
1084         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1085         fetch 15\r
1086 .endm\r
1087 \r
1088 .macro opSBC16HL\r
1089         movs z80f,z80f,lsr#2                                    ;@ get C\r
1090         mov z80hl,#0x00000000\r
1091         subcs z80hl,z80hl,#0x00010000\r
1092         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1093         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1094         fetch 15\r
1095 .endm\r
1096 ;@---------------------------------------\r
1097 \r
1098 .macro opSETmemHL bit\r
1099         mov r0,z80hl, lsr #16\r
1100 .if DRZ80_XMAP\r
1101         bl z80_xmap_read8\r
1102         orr r0,r0,#1<<\bit\r
1103         mov r1,z80hl, lsr #16\r
1104         bl z80_xmap_write8\r
1105 .else\r
1106         stmfd sp!,{r3,r12}\r
1107         mov lr,pc\r
1108         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
1109         orr r0,r0,#1<<\bit\r
1110         mov r1,z80hl, lsr #16\r
1111         mov lr,pc\r
1112         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1113         ldmfd sp!,{r3,r12}\r
1114 .endif\r
1115     fetch 15\r
1116 .endm\r
1117 ;@---------------------------------------\r
1118 \r
1119 .macro opSETmem bit\r
1120 .if DRZ80_XMAP\r
1121         stmfd sp!,{r0}  ;@ save addr as well\r
1122         bl z80_xmap_read8\r
1123         orr r0,r0,#1<<\bit\r
1124         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1125         bl z80_xmap_write8\r
1126 .else\r
1127         stmfd sp!,{r3,r12}\r
1128         stmfd sp!,{r0}  ;@ save addr as well\r
1129         mov lr,pc\r
1130         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
1131         orr r0,r0,#1<<\bit\r
1132         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1133         mov lr,pc\r
1134         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1135         ldmfd sp!,{r3,r12}\r
1136 .endif\r
1137         fetch 23\r
1138 .endm\r
1139 ;@---------------------------------------\r
1140 \r
1141 .macro opSLA reg1 reg2 shift\r
1142         movs \reg1,\reg2,lsl#\shift\r
1143         sub r1,opcodes,#0x100\r
1144         ldrb z80f,[r1,\reg1,lsr#24]\r
1145         orrcs z80f,z80f,#1<<CFlag\r
1146 .endm\r
1147 \r
1148 .macro opSLAA\r
1149         opSLA z80a, z80a, 1\r
1150         fetch 8\r
1151 .endm\r
1152 \r
1153 .macro opSLAH reg\r
1154         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1155         adds \reg,\reg,r0\r
1156         sub r1,opcodes,#0x100\r
1157         ldrb z80f,[r1,\reg,lsr#24]\r
1158         orrcs z80f,z80f,#1<<CFlag\r
1159         fetch 8\r
1160 .endm\r
1161 \r
1162 .macro opSLAL reg\r
1163         opSLA r0, \reg, 9\r
1164         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1165         orr \reg,\reg,r0,lsr#8\r
1166         fetch 8\r
1167 .endm\r
1168 \r
1169 .macro opSLAb\r
1170         opSLA r0, r0, 25\r
1171         mov r0,r0,lsr#24\r
1172 .endm\r
1173 ;@---------------------------------------\r
1174 \r
1175 .macro opSLL reg1 reg2 shift\r
1176         movs \reg1,\reg2,lsl#\shift\r
1177         orr \reg1,\reg1,#0x01000000\r
1178         sub r1,opcodes,#0x100\r
1179         ldrb z80f,[r1,\reg1,lsr#24]\r
1180         orrcs z80f,z80f,#1<<CFlag\r
1181 .endm\r
1182 \r
1183 .macro opSLLA\r
1184         opSLL z80a, z80a, 1\r
1185         fetch 8\r
1186 .endm\r
1187 \r
1188 .macro opSLLH reg\r
1189         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1190         adds \reg,\reg,r0\r
1191         orr \reg,\reg,#0x01000000\r
1192         sub r1,opcodes,#0x100\r
1193         ldrb z80f,[r1,\reg,lsr#24]\r
1194         orrcs z80f,z80f,#1<<CFlag\r
1195         fetch 8\r
1196 .endm\r
1197 \r
1198 .macro opSLLL reg\r
1199         opSLL r0, \reg, 9\r
1200         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1201         orr \reg,\reg,r0,lsr#8\r
1202         fetch 8\r
1203 .endm\r
1204 \r
1205 .macro opSLLb\r
1206         opSLL r0, r0, 25\r
1207         mov r0,r0,lsr#24\r
1208 .endm\r
1209 ;@---------------------------------------\r
1210 \r
1211 .macro opSRA reg1 reg2\r
1212         movs \reg1,\reg2,asr#25\r
1213         and \reg1,\reg1,#0xFF\r
1214         sub r1,opcodes,#0x100\r
1215         ldrb z80f,[r1,\reg1]\r
1216         orrcs z80f,z80f,#1<<CFlag\r
1217 .endm\r
1218 \r
1219 .macro opSRAA\r
1220         movs r0,z80a,asr#25\r
1221         mov z80a,r0,lsl#24\r
1222         sub r1,opcodes,#0x100\r
1223         ldrb z80f,[r1,z80a,lsr#24]\r
1224         orrcs z80f,z80f,#1<<CFlag\r
1225         fetch 8\r
1226 .endm\r
1227 \r
1228 .macro opSRAH reg\r
1229         movs r0,\reg,asr#25\r
1230         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1231         orr \reg,\reg,r0,lsl#24\r
1232         sub r1,opcodes,#0x100\r
1233         ldrb z80f,[r1,\reg,lsr#24]\r
1234         orrcs z80f,z80f,#1<<CFlag\r
1235         fetch 8\r
1236 .endm\r
1237 \r
1238 .macro opSRAL reg\r
1239         mov r0,\reg,lsl#8\r
1240         opSRA r0, r0\r
1241         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1242         orr \reg,\reg,r0,lsl#16\r
1243         fetch 8\r
1244 .endm\r
1245 \r
1246 .macro opSRAb\r
1247         mov r0,r0,lsl#24\r
1248         opSRA r0, r0\r
1249 .endm\r
1250 ;@---------------------------------------\r
1251 \r
1252 .macro opSRL reg1 reg2 shift\r
1253         movs \reg1,\reg2,lsr#\shift\r
1254         sub r1,opcodes,#0x100\r
1255         ldrb z80f,[r1,\reg1]\r
1256         orrcs z80f,z80f,#1<<CFlag\r
1257 .endm\r
1258 \r
1259 .macro opSRLA\r
1260         opSRL z80a, z80a, 25\r
1261         mov z80a,z80a,lsl#24\r
1262         fetch 8\r
1263 .endm\r
1264 \r
1265 .macro opSRLH reg\r
1266         opSRL r0, \reg, 25\r
1267         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1268         orr \reg,\reg,r0,lsl#24\r
1269         fetch 8\r
1270 .endm\r
1271 \r
1272 .macro opSRLL reg\r
1273         mov r0,\reg,lsl#8\r
1274         opSRL r0, r0, 25\r
1275         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1276         orr \reg,\reg,r0,lsl#16\r
1277         fetch 8\r
1278 .endm\r
1279 \r
1280 .macro opSRLb\r
1281         opSRL r0, r0, 1\r
1282 .endm\r
1283 ;@---------------------------------------\r
1284 \r
1285 .macro opSUB reg shift\r
1286         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
1287         subs z80a,z80a,\reg,lsl#\shift\r
1288         mrs z80f,cpsr\r
1289         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1290         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
1291         cmp r1,\reg,lsl#\shift+4\r
1292         orrcc z80f,z80f,#1<<HFlag\r
1293 .endm\r
1294 \r
1295 .macro opSUBA\r
1296         mov z80a,#0\r
1297         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
1298         fetch 4\r
1299 .endm\r
1300 \r
1301 .macro opSUBH reg\r
1302         and r0,\reg,#0xFF000000\r
1303         opSUB r0, 0\r
1304         fetch 4\r
1305 .endm\r
1306 \r
1307 .macro opSUBL reg\r
1308         opSUB \reg, 8\r
1309         fetch 4\r
1310 .endm\r
1311 \r
1312 .macro opSUBb\r
1313         opSUB r0, 24\r
1314 .endm\r
1315 ;@---------------------------------------\r
1316 \r
1317 .macro opXOR reg shift\r
1318         eor z80a,z80a,\reg,lsl#\shift\r
1319         sub r0,opcodes,#0x100\r
1320         ldrb z80f,[r0,z80a, lsr #24]\r
1321 .endm\r
1322 \r
1323 .macro opXORA\r
1324         mov z80a,#0\r
1325         mov z80f,#(1<<ZFlag)|(1<<VFlag)\r
1326         fetch 4\r
1327 .endm\r
1328 \r
1329 .macro opXORH reg\r
1330         and r0,\reg,#0xFF000000\r
1331         opXOR r0, 0\r
1332         fetch 4\r
1333 .endm\r
1334 \r
1335 .macro opXORL reg\r
1336         opXOR \reg, 8\r
1337         fetch 4\r
1338 .endm\r
1339 \r
1340 .macro opXORb\r
1341         opXOR r0, 24\r
1342 .endm\r
1343 ;@---------------------------------------\r
1344 \r
1345 \r
1346 ;@ --------------------------- Framework --------------------------\r
1347     \r
1348 .text\r
1349 \r
1350 DrZ80Run:\r
1351         ;@ r0 = pointer to cpu context\r
1352         ;@ r1 = ISTATES to execute  \r
1353         ;@#########################################   \r
1354         stmdb sp!,{r4-r12,lr}                                   ;@ save registers on stack\r
1355         mov cpucontext,r0                                               ;@ setup main memory pointer\r
1356         mov z80_icount,r1                                               ;@ setup number of Tstates to execute\r
1357 \r
1358 .if INTERRUPT_MODE == 0\r
1359         ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
1360 .endif\r
1361         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1362 \r
1363 .if INTERRUPT_MODE == 0\r
1364         ;@ check ints\r
1365         tst r0,#(Z80_NMI<<8)\r
1366         blne DoNMI\r
1367         tst r0,#0xff\r
1368         movne r0,r0,lsr #8\r
1369         tstne r0,#Z80_IF1\r
1370         blne DoInterrupt\r
1371 .endif\r
1372 \r
1373         ldr opcodes,MAIN_opcodes_POINTER2\r
1374 \r
1375         cmp z80_icount,#0     ;@ irq might have used all cycles\r
1376         ldrplb r0,[z80pc],#1\r
1377         ldrpl pc,[opcodes,r0, lsl #2]\r
1378 \r
1379 \r
1380 z80_execute_end:\r
1381         ;@ save registers in CPU context\r
1382         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1383         mov r0,z80_icount\r
1384         ldmia sp!,{r4-r12,pc}                                   ;@ restore registers from stack and return to C code\r
1385 \r
1386 MAIN_opcodes_POINTER2: .word MAIN_opcodes\r
1387 .if INTERRUPT_MODE\r
1388 Interrupt_local: .word Interrupt\r
1389 .endif\r
1390 \r
1391 DoInterrupt:\r
1392 .if INTERRUPT_MODE\r
1393         ;@ Don't do own int handler, call mames instead\r
1394 \r
1395         ;@ save everything back into DrZ80 context\r
1396         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1397         stmfd sp!,{r3,r4,r5,lr}                                 ;@ save rest of regs on stack\r
1398         mov lr,pc\r
1399         ldr pc,Interrupt_local\r
1400         ldmfd sp!,{r3,r4,r5,lr}                                 ;@ load regs from stack\r
1401         ;@ reload regs from DrZ80 context\r
1402         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1403         mov pc,lr ;@ return\r
1404 .else\r
1405 \r
1406         ;@ r0 == z80if\r
1407         stmfd sp!,{lr}\r
1408 \r
1409         tst r0,#4 ;@ check halt\r
1410         addne z80pc,z80pc,#1\r
1411 \r
1412         ldrb r1,[cpucontext,#z80im]\r
1413 \r
1414     ;@ clear halt and int flags\r
1415         eor r0,r0,r0\r
1416         strb r0,[cpucontext,#z80if]\r
1417 \r
1418         ;@ now check int mode\r
1419         cmp r1,#1\r
1420         beq DoInterrupt_mode1\r
1421         bgt DoInterrupt_mode2\r
1422 \r
1423 DoInterrupt_mode0:\r
1424         ;@ get 3 byte vector\r
1425         ldr r2,[cpucontext, #z80irqvector]\r
1426         and r1,r2,#0xFF0000\r
1427         cmp r1,#0xCD0000  ;@ call\r
1428         bne 1f\r
1429         ;@ ########\r
1430         ;@ # call\r
1431         ;@ ########\r
1432         ;@ save current pc on stack\r
1433         ldr r0,[cpucontext,#z80pc_base]\r
1434         sub r0,z80pc,r0\r
1435 .if FAST_Z80SP\r
1436         mov r1,r0, lsr #8\r
1437         strb r1,[z80sp,#-1]!\r
1438         strb r0,[z80sp,#-1]!\r
1439 .else\r
1440         sub z80sp,z80sp,#2\r
1441         mov r1,z80sp\r
1442         writemem16\r
1443         ldr r2,[cpucontext, #z80irqvector]\r
1444 .endif\r
1445         ;@ jump to vector\r
1446         mov r2,r2,lsl#16\r
1447         mov r0,r2,lsr#16\r
1448         ;@ rebase new pc\r
1449         rebasepc\r
1450 \r
1451         eatcycles 13\r
1452         b DoInterrupt_end\r
1453 \r
1454 1:\r
1455         cmp r1,#0xC30000  ;@ jump\r
1456         bne DoInterrupt_mode1    ;@ rst\r
1457         ;@ #######\r
1458         ;@ # jump\r
1459         ;@ #######\r
1460         ;@ jump to vector\r
1461         mov r2,r2,lsl#16\r
1462         mov r0,r2,lsr#16\r
1463         ;@ rebase new pc\r
1464         rebasepc\r
1465 \r
1466         eatcycles 13\r
1467         b DoInterrupt_end\r
1468 \r
1469 DoInterrupt_mode1:\r
1470         ldr r0,[cpucontext,#z80pc_base]\r
1471         sub r2,z80pc,r0\r
1472     opPUSHareg r2\r
1473         mov r0,#0x38\r
1474         rebasepc\r
1475 \r
1476         eatcycles 13\r
1477         b DoInterrupt_end\r
1478 \r
1479 DoInterrupt_mode2:\r
1480         ;@ push pc on stack\r
1481         ldr r0,[cpucontext,#z80pc_base]\r
1482         sub r2,z80pc,r0\r
1483     opPUSHareg r2\r
1484 \r
1485         ;@ get 1 byte vector address\r
1486         ldrb r0,[cpucontext, #z80irqvector]\r
1487         ldr r1,[cpucontext, #z80i]\r
1488         orr r0,r0,r1,lsr#16\r
1489 \r
1490         ;@ read new pc from vector address\r
1491 .if UPDATE_CONTEXT\r
1492      str z80pc,[cpucontext,#z80pc_pointer]\r
1493 .endif\r
1494 .if DRZ80_XMAP\r
1495     bl z80_xmap_read16\r
1496     rebasepc\r
1497 .else\r
1498         stmfd sp!,{r3,r12}\r
1499         mov lr,pc\r
1500         ldr pc,[cpucontext,#z80_read16]\r
1501 \r
1502         ;@ rebase new pc\r
1503         mov lr,pc\r
1504         ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
1505         ldmfd sp!,{r3,r12}\r
1506         mov z80pc,r0    \r
1507 .endif\r
1508         eatcycles 17\r
1509 \r
1510 DoInterrupt_end:\r
1511         ;@ interupt accepted so callback irq interface\r
1512         ldr r0,[cpucontext, #z80irqcallback]\r
1513         tst r0,r0\r
1514         streqb r0,[cpucontext,#z80irq]       ;@ default handling\r
1515         ldmeqfd sp!,{pc}\r
1516         stmfd sp!,{r3,r12}\r
1517         mov lr,pc\r
1518         mov pc,r0    ;@ call callback function\r
1519         ldmfd sp!,{r3,r12}\r
1520         ldmfd sp!,{pc} ;@ return\r
1521 .endif\r
1522 \r
1523 DoNMI:\r
1524         stmfd sp!,{lr}\r
1525 \r
1526         bic r0,r0,#((Z80_NMI|Z80_HALT|Z80_IF1)<<8)\r
1527         strh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
1528 \r
1529         ;@ push pc on stack\r
1530         ldr r0,[cpucontext,#z80pc_base]\r
1531         sub r2,z80pc,r0\r
1532         opPUSHareg r2\r
1533 \r
1534         ;@ read new pc from vector address\r
1535 .if UPDATE_CONTEXT\r
1536         str z80pc,[cpucontext,#z80pc_pointer]\r
1537 .endif\r
1538         mov r0,#0x66\r
1539 .if DRZ80_XMAP\r
1540         rebasepc\r
1541 .else\r
1542         stmfd sp!,{r3,r12}\r
1543         mov lr,pc\r
1544         ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
1545         ldmfd sp!,{r3,r12}\r
1546         mov z80pc,r0    \r
1547 .endif\r
1548         ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
1549         eatcycles 11\r
1550         ldmfd sp!,{pc}\r
1551 \r
1552 \r
1553 .data\r
1554 .align 4\r
1555 \r
1556 DAATable: .hword  (0x00<<8)|(1<<ZFlag)|(1<<VFlag)\r
1557          .hword  (0x01<<8)                  \r
1558          .hword  (0x02<<8)                  \r
1559          .hword  (0x03<<8)               |(1<<VFlag)\r
1560          .hword  (0x04<<8)                  \r
1561          .hword  (0x05<<8)               |(1<<VFlag)\r
1562          .hword  (0x06<<8)               |(1<<VFlag)\r
1563          .hword  (0x07<<8)                  \r
1564          .hword  (0x08<<8)               \r
1565          .hword  (0x09<<8)            |(1<<VFlag)\r
1566          .hword  (0x10<<8)         |(1<<HFlag)      \r
1567          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1568          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1569          .hword  (0x13<<8)         |(1<<HFlag)      \r
1570          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1571          .hword  (0x15<<8)         |(1<<HFlag)      \r
1572          .hword  (0x10<<8)                  \r
1573          .hword  (0x11<<8)               |(1<<VFlag)\r
1574          .hword  (0x12<<8)               |(1<<VFlag)\r
1575          .hword  (0x13<<8)                  \r
1576          .hword  (0x14<<8)               |(1<<VFlag)\r
1577          .hword  (0x15<<8)                  \r
1578          .hword  (0x16<<8)                  \r
1579          .hword  (0x17<<8)               |(1<<VFlag)\r
1580          .hword  (0x18<<8)            |(1<<VFlag)\r
1581          .hword  (0x19<<8)               \r
1582          .hword  (0x20<<8)      |(1<<HFlag)      \r
1583          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1584          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1585          .hword  (0x23<<8)      |(1<<HFlag)      \r
1586          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1587          .hword  (0x25<<8)      |(1<<HFlag)      \r
1588          .hword  (0x20<<8)               \r
1589          .hword  (0x21<<8)            |(1<<VFlag)\r
1590          .hword  (0x22<<8)            |(1<<VFlag)\r
1591          .hword  (0x23<<8)               \r
1592          .hword  (0x24<<8)            |(1<<VFlag)\r
1593          .hword  (0x25<<8)               \r
1594          .hword  (0x26<<8)               \r
1595          .hword  (0x27<<8)            |(1<<VFlag)\r
1596          .hword  (0x28<<8)         |(1<<VFlag)\r
1597          .hword  (0x29<<8)            \r
1598          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1599          .hword  (0x31<<8)      |(1<<HFlag)      \r
1600          .hword  (0x32<<8)      |(1<<HFlag)      \r
1601          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1602          .hword  (0x34<<8)      |(1<<HFlag)      \r
1603          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1604          .hword  (0x30<<8)            |(1<<VFlag)\r
1605          .hword  (0x31<<8)               \r
1606          .hword  (0x32<<8)               \r
1607          .hword  (0x33<<8)            |(1<<VFlag)\r
1608          .hword  (0x34<<8)               \r
1609          .hword  (0x35<<8)            |(1<<VFlag)\r
1610          .hword  (0x36<<8)            |(1<<VFlag)\r
1611          .hword  (0x37<<8)               \r
1612          .hword  (0x38<<8)            \r
1613          .hword  (0x39<<8)         |(1<<VFlag)\r
1614          .hword  (0x40<<8)         |(1<<HFlag)      \r
1615          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1616          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1617          .hword  (0x43<<8)         |(1<<HFlag)      \r
1618          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1619          .hword  (0x45<<8)         |(1<<HFlag)      \r
1620          .hword  (0x40<<8)                  \r
1621          .hword  (0x41<<8)               |(1<<VFlag)\r
1622          .hword  (0x42<<8)               |(1<<VFlag)\r
1623          .hword  (0x43<<8)                  \r
1624          .hword  (0x44<<8)               |(1<<VFlag)\r
1625          .hword  (0x45<<8)                  \r
1626          .hword  (0x46<<8)                  \r
1627          .hword  (0x47<<8)               |(1<<VFlag)\r
1628          .hword  (0x48<<8)            |(1<<VFlag)\r
1629          .hword  (0x49<<8)               \r
1630          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1631          .hword  (0x51<<8)         |(1<<HFlag)      \r
1632          .hword  (0x52<<8)         |(1<<HFlag)      \r
1633          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1634          .hword  (0x54<<8)         |(1<<HFlag)      \r
1635          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1636          .hword  (0x50<<8)               |(1<<VFlag)\r
1637          .hword  (0x51<<8)                  \r
1638          .hword  (0x52<<8)                  \r
1639          .hword  (0x53<<8)               |(1<<VFlag)\r
1640          .hword  (0x54<<8)                  \r
1641          .hword  (0x55<<8)               |(1<<VFlag)\r
1642          .hword  (0x56<<8)               |(1<<VFlag)\r
1643          .hword  (0x57<<8)                  \r
1644          .hword  (0x58<<8)               \r
1645          .hword  (0x59<<8)            |(1<<VFlag)\r
1646          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1647          .hword  (0x61<<8)      |(1<<HFlag)      \r
1648          .hword  (0x62<<8)      |(1<<HFlag)      \r
1649          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1650          .hword  (0x64<<8)      |(1<<HFlag)      \r
1651          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1652          .hword  (0x60<<8)            |(1<<VFlag)\r
1653          .hword  (0x61<<8)               \r
1654          .hword  (0x62<<8)               \r
1655          .hword  (0x63<<8)            |(1<<VFlag)\r
1656          .hword  (0x64<<8)               \r
1657          .hword  (0x65<<8)            |(1<<VFlag)\r
1658          .hword  (0x66<<8)            |(1<<VFlag)\r
1659          .hword  (0x67<<8)               \r
1660          .hword  (0x68<<8)            \r
1661          .hword  (0x69<<8)         |(1<<VFlag)\r
1662          .hword  (0x70<<8)      |(1<<HFlag)      \r
1663          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1664          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1665          .hword  (0x73<<8)      |(1<<HFlag)      \r
1666          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1667          .hword  (0x75<<8)      |(1<<HFlag)      \r
1668          .hword  (0x70<<8)               \r
1669          .hword  (0x71<<8)            |(1<<VFlag)\r
1670          .hword  (0x72<<8)            |(1<<VFlag)\r
1671          .hword  (0x73<<8)               \r
1672          .hword  (0x74<<8)            |(1<<VFlag)\r
1673          .hword  (0x75<<8)               \r
1674          .hword  (0x76<<8)               \r
1675          .hword  (0x77<<8)            |(1<<VFlag)\r
1676          .hword  (0x78<<8)         |(1<<VFlag)\r
1677          .hword  (0x79<<8)            \r
1678          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1679          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1680          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1681          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1682          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1683          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1684          .hword  (0x80<<8)|(1<<SFlag)               \r
1685          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)\r
1686          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)\r
1687          .hword  (0x83<<8)|(1<<SFlag)               \r
1688          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)\r
1689          .hword  (0x85<<8)|(1<<SFlag)               \r
1690          .hword  (0x86<<8)|(1<<SFlag)               \r
1691          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
1692          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
1693          .hword  (0x89<<8)|(1<<SFlag)            \r
1694          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1695          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1696          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1697          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1698          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1699          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1700          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)\r
1701          .hword  (0x91<<8)|(1<<SFlag)               \r
1702          .hword  (0x92<<8)|(1<<SFlag)               \r
1703          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)\r
1704          .hword  (0x94<<8)|(1<<SFlag)               \r
1705          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)\r
1706          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
1707          .hword  (0x97<<8)|(1<<SFlag)               \r
1708          .hword  (0x98<<8)|(1<<SFlag)            \r
1709          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
1710          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1711          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1712          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1713          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1714          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1715          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1716          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1717          .hword  (0x01<<8)                     |(1<<CFlag)\r
1718          .hword  (0x02<<8)                     |(1<<CFlag)\r
1719          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1720          .hword  (0x04<<8)                     |(1<<CFlag)\r
1721          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1722          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1723          .hword  (0x07<<8)                     |(1<<CFlag)\r
1724          .hword  (0x08<<8)                  |(1<<CFlag)\r
1725          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1726          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1727          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1728          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1729          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1730          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1731          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1732          .hword  (0x10<<8)                     |(1<<CFlag)\r
1733          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1734          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1735          .hword  (0x13<<8)                     |(1<<CFlag)\r
1736          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1737          .hword  (0x15<<8)                     |(1<<CFlag)\r
1738          .hword  (0x16<<8)                     |(1<<CFlag)\r
1739          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1740          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1741          .hword  (0x19<<8)                  |(1<<CFlag)\r
1742          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1743          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1744          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1745          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1746          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1747          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1748          .hword  (0x20<<8)                  |(1<<CFlag)\r
1749          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1750          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1751          .hword  (0x23<<8)                  |(1<<CFlag)\r
1752          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1753          .hword  (0x25<<8)                  |(1<<CFlag)\r
1754          .hword  (0x26<<8)                  |(1<<CFlag)\r
1755          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1756          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1757          .hword  (0x29<<8)               |(1<<CFlag)\r
1758          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1759          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1760          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1761          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1762          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1763          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1764          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1765          .hword  (0x31<<8)                  |(1<<CFlag)\r
1766          .hword  (0x32<<8)                  |(1<<CFlag)\r
1767          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1768          .hword  (0x34<<8)                  |(1<<CFlag)\r
1769          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1770          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1771          .hword  (0x37<<8)                  |(1<<CFlag)\r
1772          .hword  (0x38<<8)               |(1<<CFlag)\r
1773          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1774          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1775          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1776          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1777          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1778          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1779          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1780          .hword  (0x40<<8)                     |(1<<CFlag)\r
1781          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1782          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1783          .hword  (0x43<<8)                     |(1<<CFlag)\r
1784          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1785          .hword  (0x45<<8)                     |(1<<CFlag)\r
1786          .hword  (0x46<<8)                     |(1<<CFlag)\r
1787          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1788          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1789          .hword  (0x49<<8)                  |(1<<CFlag)\r
1790          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1791          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1792          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1793          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1794          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1795          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1796          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1797          .hword  (0x51<<8)                     |(1<<CFlag)\r
1798          .hword  (0x52<<8)                     |(1<<CFlag)\r
1799          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1800          .hword  (0x54<<8)                     |(1<<CFlag)\r
1801          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1802          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1803          .hword  (0x57<<8)                     |(1<<CFlag)\r
1804          .hword  (0x58<<8)                  |(1<<CFlag)\r
1805          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1806          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1807          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1808          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1809          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1810          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1811          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1812          .hword  (0x60<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1813          .hword  (0x61<<8)                  |(1<<CFlag)\r
1814          .hword  (0x62<<8)                  |(1<<CFlag)\r
1815          .hword  (0x63<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1816          .hword  (0x64<<8)                  |(1<<CFlag)\r
1817          .hword  (0x65<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1818          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1819          .hword  (0x67<<8)                  |(1<<CFlag)\r
1820          .hword  (0x68<<8)               |(1<<CFlag)\r
1821          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1822          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1823          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1824          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1825          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1826          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1827          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1828          .hword  (0x70<<8)                  |(1<<CFlag)\r
1829          .hword  (0x71<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1830          .hword  (0x72<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1831          .hword  (0x73<<8)                  |(1<<CFlag)\r
1832          .hword  (0x74<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1833          .hword  (0x75<<8)                  |(1<<CFlag)\r
1834          .hword  (0x76<<8)                  |(1<<CFlag)\r
1835          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1836          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1837          .hword  (0x79<<8)               |(1<<CFlag)\r
1838          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1839          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1840          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1841          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1842          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1843          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1844          .hword  (0x80<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1845          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1846          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1847          .hword  (0x83<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1848          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1849          .hword  (0x85<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1850          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1851          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1852          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1853          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
1854          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1855          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1856          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1857          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1858          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1859          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1860          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1861          .hword  (0x91<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1862          .hword  (0x92<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1863          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1864          .hword  (0x94<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1865          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1866          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1867          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1868          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
1869          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1870          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1871          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1872          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1873          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1874          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1875          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1876          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1877          .hword  (0xA1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1878          .hword  (0xA2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1879          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1880          .hword  (0xA4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1881          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1882          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1883          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1884          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1885          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1886          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1887          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1888          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1889          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1890          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1891          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1892          .hword  (0xB0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1893          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1894          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1895          .hword  (0xB3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1896          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1897          .hword  (0xB5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1898          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1899          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1900          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1901          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1902          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1903          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1904          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1905          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1906          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1907          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1908          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1909          .hword  (0xC1<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1910          .hword  (0xC2<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1911          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1912          .hword  (0xC4<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1913          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1914          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1915          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1916          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
1917          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1918          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1919          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1920          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1921          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1922          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1923          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1924          .hword  (0xD0<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1925          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1926          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1927          .hword  (0xD3<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1928          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1929          .hword  (0xD5<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1930          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1931          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1932          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1933          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
1934          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1935          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1936          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1937          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1938          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1939          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1940          .hword  (0xE0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1941          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1942          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1943          .hword  (0xE3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1944          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1945          .hword  (0xE5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1946          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1947          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1948          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1949          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1950          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1951          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1952          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1953          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1954          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1955          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1956          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1957          .hword  (0xF1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1958          .hword  (0xF2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1959          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1960          .hword  (0xF4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1961          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1962          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1963          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1964          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1965          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1966          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1967          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1968          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1969          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1970          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1971          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1972          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1973          .hword  (0x01<<8)                     |(1<<CFlag)\r
1974          .hword  (0x02<<8)                     |(1<<CFlag)\r
1975          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1976          .hword  (0x04<<8)                     |(1<<CFlag)\r
1977          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1978          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1979          .hword  (0x07<<8)                     |(1<<CFlag)\r
1980          .hword  (0x08<<8)                  |(1<<CFlag)\r
1981          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1982          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1983          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1984          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1985          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1986          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1987          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1988          .hword  (0x10<<8)                     |(1<<CFlag)\r
1989          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1990          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1991          .hword  (0x13<<8)                     |(1<<CFlag)\r
1992          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1993          .hword  (0x15<<8)                     |(1<<CFlag)\r
1994          .hword  (0x16<<8)                     |(1<<CFlag)\r
1995          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1996          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1997          .hword  (0x19<<8)                  |(1<<CFlag)\r
1998          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1999          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2000          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2001          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2002          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2003          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2004          .hword  (0x20<<8)                  |(1<<CFlag)\r
2005          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2006          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2007          .hword  (0x23<<8)                  |(1<<CFlag)\r
2008          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2009          .hword  (0x25<<8)                  |(1<<CFlag)\r
2010          .hword  (0x26<<8)                  |(1<<CFlag)\r
2011          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2012          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2013          .hword  (0x29<<8)               |(1<<CFlag)\r
2014          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2015          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2016          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2017          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2018          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2019          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2020          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2021          .hword  (0x31<<8)                  |(1<<CFlag)\r
2022          .hword  (0x32<<8)                  |(1<<CFlag)\r
2023          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2024          .hword  (0x34<<8)                  |(1<<CFlag)\r
2025          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2026          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2027          .hword  (0x37<<8)                  |(1<<CFlag)\r
2028          .hword  (0x38<<8)               |(1<<CFlag)\r
2029          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2030          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2031          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2032          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2033          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2034          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2035          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2036          .hword  (0x40<<8)                     |(1<<CFlag)\r
2037          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2038          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2039          .hword  (0x43<<8)                     |(1<<CFlag)\r
2040          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2041          .hword  (0x45<<8)                     |(1<<CFlag)\r
2042          .hword  (0x46<<8)                     |(1<<CFlag)\r
2043          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2044          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2045          .hword  (0x49<<8)                  |(1<<CFlag)\r
2046          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2047          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2048          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2049          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2050          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2051          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2052          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2053          .hword  (0x51<<8)                     |(1<<CFlag)\r
2054          .hword  (0x52<<8)                     |(1<<CFlag)\r
2055          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2056          .hword  (0x54<<8)                     |(1<<CFlag)\r
2057          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2058          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2059          .hword  (0x57<<8)                     |(1<<CFlag)\r
2060          .hword  (0x58<<8)                  |(1<<CFlag)\r
2061          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2062          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2063          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2064          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2065          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2066          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2067          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2068          .hword  (0x06<<8)               |(1<<VFlag)\r
2069          .hword  (0x07<<8)                  \r
2070          .hword  (0x08<<8)               \r
2071          .hword  (0x09<<8)            |(1<<VFlag)\r
2072          .hword  (0x0A<<8)            |(1<<VFlag)\r
2073          .hword  (0x0B<<8)               \r
2074          .hword  (0x0C<<8)            |(1<<VFlag)\r
2075          .hword  (0x0D<<8)               \r
2076          .hword  (0x0E<<8)               \r
2077          .hword  (0x0F<<8)            |(1<<VFlag)\r
2078          .hword  (0x10<<8)         |(1<<HFlag)      \r
2079          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2080          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2081          .hword  (0x13<<8)         |(1<<HFlag)      \r
2082          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2083          .hword  (0x15<<8)         |(1<<HFlag)      \r
2084          .hword  (0x16<<8)                  \r
2085          .hword  (0x17<<8)               |(1<<VFlag)\r
2086          .hword  (0x18<<8)            |(1<<VFlag)\r
2087          .hword  (0x19<<8)               \r
2088          .hword  (0x1A<<8)               \r
2089          .hword  (0x1B<<8)            |(1<<VFlag)\r
2090          .hword  (0x1C<<8)               \r
2091          .hword  (0x1D<<8)            |(1<<VFlag)\r
2092          .hword  (0x1E<<8)            |(1<<VFlag)\r
2093          .hword  (0x1F<<8)               \r
2094          .hword  (0x20<<8)      |(1<<HFlag)      \r
2095          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2096          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2097          .hword  (0x23<<8)      |(1<<HFlag)      \r
2098          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2099          .hword  (0x25<<8)      |(1<<HFlag)      \r
2100          .hword  (0x26<<8)               \r
2101          .hword  (0x27<<8)            |(1<<VFlag)\r
2102          .hword  (0x28<<8)         |(1<<VFlag)\r
2103          .hword  (0x29<<8)            \r
2104          .hword  (0x2A<<8)            \r
2105          .hword  (0x2B<<8)         |(1<<VFlag)\r
2106          .hword  (0x2C<<8)            \r
2107          .hword  (0x2D<<8)         |(1<<VFlag)\r
2108          .hword  (0x2E<<8)         |(1<<VFlag)\r
2109          .hword  (0x2F<<8)            \r
2110          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2111          .hword  (0x31<<8)      |(1<<HFlag)      \r
2112          .hword  (0x32<<8)      |(1<<HFlag)      \r
2113          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2114          .hword  (0x34<<8)      |(1<<HFlag)      \r
2115          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2116          .hword  (0x36<<8)            |(1<<VFlag)\r
2117          .hword  (0x37<<8)               \r
2118          .hword  (0x38<<8)            \r
2119          .hword  (0x39<<8)         |(1<<VFlag)\r
2120          .hword  (0x3A<<8)         |(1<<VFlag)\r
2121          .hword  (0x3B<<8)            \r
2122          .hword  (0x3C<<8)         |(1<<VFlag)\r
2123          .hword  (0x3D<<8)            \r
2124          .hword  (0x3E<<8)            \r
2125          .hword  (0x3F<<8)         |(1<<VFlag)\r
2126          .hword  (0x40<<8)         |(1<<HFlag)      \r
2127          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2128          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2129          .hword  (0x43<<8)         |(1<<HFlag)      \r
2130          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2131          .hword  (0x45<<8)         |(1<<HFlag)      \r
2132          .hword  (0x46<<8)                  \r
2133          .hword  (0x47<<8)               |(1<<VFlag)\r
2134          .hword  (0x48<<8)            |(1<<VFlag)\r
2135          .hword  (0x49<<8)               \r
2136          .hword  (0x4A<<8)               \r
2137          .hword  (0x4B<<8)            |(1<<VFlag)\r
2138          .hword  (0x4C<<8)               \r
2139          .hword  (0x4D<<8)            |(1<<VFlag)\r
2140          .hword  (0x4E<<8)            |(1<<VFlag)\r
2141          .hword  (0x4F<<8)               \r
2142          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2143          .hword  (0x51<<8)         |(1<<HFlag)      \r
2144          .hword  (0x52<<8)         |(1<<HFlag)      \r
2145          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2146          .hword  (0x54<<8)         |(1<<HFlag)      \r
2147          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2148          .hword  (0x56<<8)               |(1<<VFlag)\r
2149          .hword  (0x57<<8)                  \r
2150          .hword  (0x58<<8)               \r
2151          .hword  (0x59<<8)            |(1<<VFlag)\r
2152          .hword  (0x5A<<8)            |(1<<VFlag)\r
2153          .hword  (0x5B<<8)               \r
2154          .hword  (0x5C<<8)            |(1<<VFlag)\r
2155          .hword  (0x5D<<8)               \r
2156          .hword  (0x5E<<8)               \r
2157          .hword  (0x5F<<8)            |(1<<VFlag)\r
2158          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2159          .hword  (0x61<<8)      |(1<<HFlag)      \r
2160          .hword  (0x62<<8)      |(1<<HFlag)      \r
2161          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2162          .hword  (0x64<<8)      |(1<<HFlag)      \r
2163          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2164          .hword  (0x66<<8)            |(1<<VFlag)\r
2165          .hword  (0x67<<8)               \r
2166          .hword  (0x68<<8)            \r
2167          .hword  (0x69<<8)         |(1<<VFlag)\r
2168          .hword  (0x6A<<8)         |(1<<VFlag)\r
2169          .hword  (0x6B<<8)            \r
2170          .hword  (0x6C<<8)         |(1<<VFlag)\r
2171          .hword  (0x6D<<8)            \r
2172          .hword  (0x6E<<8)            \r
2173          .hword  (0x6F<<8)         |(1<<VFlag)\r
2174          .hword  (0x70<<8)      |(1<<HFlag)      \r
2175          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2176          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2177          .hword  (0x73<<8)      |(1<<HFlag)      \r
2178          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2179          .hword  (0x75<<8)      |(1<<HFlag)      \r
2180          .hword  (0x76<<8)               \r
2181          .hword  (0x77<<8)            |(1<<VFlag)\r
2182          .hword  (0x78<<8)         |(1<<VFlag)\r
2183          .hword  (0x79<<8)            \r
2184          .hword  (0x7A<<8)            \r
2185          .hword  (0x7B<<8)         |(1<<VFlag)\r
2186          .hword  (0x7C<<8)            \r
2187          .hword  (0x7D<<8)         |(1<<VFlag)\r
2188          .hword  (0x7E<<8)         |(1<<VFlag)\r
2189          .hword  (0x7F<<8)            \r
2190          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2191          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2192          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2193          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2194          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2195          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2196          .hword  (0x86<<8)|(1<<SFlag)               \r
2197          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
2198          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
2199          .hword  (0x89<<8)|(1<<SFlag)            \r
2200          .hword  (0x8A<<8)|(1<<SFlag)            \r
2201          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)\r
2202          .hword  (0x8C<<8)|(1<<SFlag)            \r
2203          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)\r
2204          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)\r
2205          .hword  (0x8F<<8)|(1<<SFlag)            \r
2206          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2207          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2208          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2209          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2210          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2211          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2212          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
2213          .hword  (0x97<<8)|(1<<SFlag)               \r
2214          .hword  (0x98<<8)|(1<<SFlag)            \r
2215          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
2216          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)\r
2217          .hword  (0x9B<<8)|(1<<SFlag)            \r
2218          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)\r
2219          .hword  (0x9D<<8)|(1<<SFlag)            \r
2220          .hword  (0x9E<<8)|(1<<SFlag)            \r
2221          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)\r
2222          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2223          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2224          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2225          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2226          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2227          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2228          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2229          .hword  (0x07<<8)                     |(1<<CFlag)\r
2230          .hword  (0x08<<8)                  |(1<<CFlag)\r
2231          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2232          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2233          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2234          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2235          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2236          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2237          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2238          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2239          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2240          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2241          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2242          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2243          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2244          .hword  (0x16<<8)                     |(1<<CFlag)\r
2245          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2246          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2247          .hword  (0x19<<8)                  |(1<<CFlag)\r
2248          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2249          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2250          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2251          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2252          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2253          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2254          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2255          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2256          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2257          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2258          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2259          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2260          .hword  (0x26<<8)                  |(1<<CFlag)\r
2261          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2262          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2263          .hword  (0x29<<8)               |(1<<CFlag)\r
2264          .hword  (0x2A<<8)               |(1<<CFlag)\r
2265          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2266          .hword  (0x2C<<8)               |(1<<CFlag)\r
2267          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2268          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2269          .hword  (0x2F<<8)               |(1<<CFlag)\r
2270          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2271          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2272          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2273          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2274          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2275          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2276          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2277          .hword  (0x37<<8)                  |(1<<CFlag)\r
2278          .hword  (0x38<<8)               |(1<<CFlag)\r
2279          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2280          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2281          .hword  (0x3B<<8)               |(1<<CFlag)\r
2282          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2283          .hword  (0x3D<<8)               |(1<<CFlag)\r
2284          .hword  (0x3E<<8)               |(1<<CFlag)\r
2285          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2286          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2287          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2288          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2289          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2290          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2291          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2292          .hword  (0x46<<8)                     |(1<<CFlag)\r
2293          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2294          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2295          .hword  (0x49<<8)                  |(1<<CFlag)\r
2296          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2297          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2298          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2299          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2300          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2301          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2302          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2303          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2304          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2305          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2306          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2307          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2308          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2309          .hword  (0x57<<8)                     |(1<<CFlag)\r
2310          .hword  (0x58<<8)                  |(1<<CFlag)\r
2311          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2312          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2313          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2314          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2315          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2316          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2317          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2318          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2319          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2320          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2321          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2322          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2323          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2324          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2325          .hword  (0x67<<8)                  |(1<<CFlag)\r
2326          .hword  (0x68<<8)               |(1<<CFlag)\r
2327          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2328          .hword  (0x6A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2329          .hword  (0x6B<<8)               |(1<<CFlag)\r
2330          .hword  (0x6C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2331          .hword  (0x6D<<8)               |(1<<CFlag)\r
2332          .hword  (0x6E<<8)               |(1<<CFlag)\r
2333          .hword  (0x6F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2334          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2335          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2336          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2337          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2338          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2339          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2340          .hword  (0x76<<8)                  |(1<<CFlag)\r
2341          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2342          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2343          .hword  (0x79<<8)               |(1<<CFlag)\r
2344          .hword  (0x7A<<8)               |(1<<CFlag)\r
2345          .hword  (0x7B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2346          .hword  (0x7C<<8)               |(1<<CFlag)\r
2347          .hword  (0x7D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2348          .hword  (0x7E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2349          .hword  (0x7F<<8)               |(1<<CFlag)\r
2350          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2351          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2352          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2353          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2354          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2355          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2356          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2357          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2358          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2359          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
2360          .hword  (0x8A<<8)|(1<<SFlag)               |(1<<CFlag)\r
2361          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2362          .hword  (0x8C<<8)|(1<<SFlag)               |(1<<CFlag)\r
2363          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2364          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2365          .hword  (0x8F<<8)|(1<<SFlag)               |(1<<CFlag)\r
2366          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2367          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2368          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2369          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2370          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2371          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2372          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2373          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2374          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
2375          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2376          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2377          .hword  (0x9B<<8)|(1<<SFlag)               |(1<<CFlag)\r
2378          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2379          .hword  (0x9D<<8)|(1<<SFlag)               |(1<<CFlag)\r
2380          .hword  (0x9E<<8)|(1<<SFlag)               |(1<<CFlag)\r
2381          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2382          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2383          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2384          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2385          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2386          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2387          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2388          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2389          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2390          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2391          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2392          .hword  (0xAA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2393          .hword  (0xAB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2394          .hword  (0xAC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2395          .hword  (0xAD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2396          .hword  (0xAE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2397          .hword  (0xAF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2398          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2399          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2400          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2401          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2402          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2403          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2404          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2405          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2406          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2407          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2408          .hword  (0xBA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2409          .hword  (0xBB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2410          .hword  (0xBC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2411          .hword  (0xBD<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2412          .hword  (0xBE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2413          .hword  (0xBF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2414          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2415          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2416          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2417          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2418          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2419          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2420          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2421          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2422          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
2423          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2424          .hword  (0xCA<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2425          .hword  (0xCB<<8)|(1<<SFlag)               |(1<<CFlag)\r
2426          .hword  (0xCC<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2427          .hword  (0xCD<<8)|(1<<SFlag)               |(1<<CFlag)\r
2428          .hword  (0xCE<<8)|(1<<SFlag)               |(1<<CFlag)\r
2429          .hword  (0xCF<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2430          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2431          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2432          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2433          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2434          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2435          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2436          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2437          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2438          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2439          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
2440          .hword  (0xDA<<8)|(1<<SFlag)               |(1<<CFlag)\r
2441          .hword  (0xDB<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2442          .hword  (0xDC<<8)|(1<<SFlag)               |(1<<CFlag)\r
2443          .hword  (0xDD<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2444          .hword  (0xDE<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2445          .hword  (0xDF<<8)|(1<<SFlag)               |(1<<CFlag)\r
2446          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2447          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2448          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2449          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2450          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2451          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2452          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2453          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2454          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2455          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2456          .hword  (0xEA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2457          .hword  (0xEB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2458          .hword  (0xEC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2459          .hword  (0xED<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2460          .hword  (0xEE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2461          .hword  (0xEF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2462          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2463          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2464          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2465          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2466          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2467          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2468          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2469          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2470          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2471          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2472          .hword  (0xFA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2473          .hword  (0xFB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2474          .hword  (0xFC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2475          .hword  (0xFD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2476          .hword  (0xFE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2477          .hword  (0xFF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2478          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2479          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2480          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2481          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2482          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2483          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2484          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2485          .hword  (0x07<<8)                     |(1<<CFlag)\r
2486          .hword  (0x08<<8)                  |(1<<CFlag)\r
2487          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2488          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2489          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2490          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2491          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2492          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2493          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2494          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2495          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2496          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2497          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2498          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2499          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2500          .hword  (0x16<<8)                     |(1<<CFlag)\r
2501          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2502          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2503          .hword  (0x19<<8)                  |(1<<CFlag)\r
2504          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2505          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2506          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2507          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2508          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2509          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2510          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2511          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2512          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2513          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2514          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2515          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2516          .hword  (0x26<<8)                  |(1<<CFlag)\r
2517          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2518          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2519          .hword  (0x29<<8)               |(1<<CFlag)\r
2520          .hword  (0x2A<<8)               |(1<<CFlag)\r
2521          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2522          .hword  (0x2C<<8)               |(1<<CFlag)\r
2523          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2524          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2525          .hword  (0x2F<<8)               |(1<<CFlag)\r
2526          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2527          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2528          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2529          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2530          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2531          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2532          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2533          .hword  (0x37<<8)                  |(1<<CFlag)\r
2534          .hword  (0x38<<8)               |(1<<CFlag)\r
2535          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2536          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2537          .hword  (0x3B<<8)               |(1<<CFlag)\r
2538          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2539          .hword  (0x3D<<8)               |(1<<CFlag)\r
2540          .hword  (0x3E<<8)               |(1<<CFlag)\r
2541          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2542          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2543          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2544          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2545          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2546          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2547          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2548          .hword  (0x46<<8)                     |(1<<CFlag)\r
2549          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2550          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2551          .hword  (0x49<<8)                  |(1<<CFlag)\r
2552          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2553          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2554          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2555          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2556          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2557          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2558          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2559          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2560          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2561          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2562          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2563          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2564          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2565          .hword  (0x57<<8)                     |(1<<CFlag)\r
2566          .hword  (0x58<<8)                  |(1<<CFlag)\r
2567          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2568          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2569          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2570          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2571          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2572          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2573          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2574          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2575          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2576          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2577          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2578          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2579          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2580          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2581          .hword  (0x01<<8)                  |(1<<NFlag)   \r
2582          .hword  (0x02<<8)                  |(1<<NFlag)   \r
2583          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2584          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2585          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2586          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2587          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2588          .hword  (0x08<<8)               |(1<<NFlag)   \r
2589          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2590          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2591          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2592          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2593          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2594          .hword  (0x08<<8)               |(1<<NFlag)   \r
2595          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2596          .hword  (0x10<<8)                  |(1<<NFlag)   \r
2597          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2598          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2599          .hword  (0x13<<8)                  |(1<<NFlag)   \r
2600          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2601          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2602          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2603          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2604          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2605          .hword  (0x19<<8)               |(1<<NFlag)   \r
2606          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2607          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2608          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2609          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2610          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2611          .hword  (0x19<<8)               |(1<<NFlag)   \r
2612          .hword  (0x20<<8)               |(1<<NFlag)   \r
2613          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2614          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2615          .hword  (0x23<<8)               |(1<<NFlag)   \r
2616          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2617          .hword  (0x25<<8)               |(1<<NFlag)   \r
2618          .hword  (0x26<<8)               |(1<<NFlag)   \r
2619          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2620          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2621          .hword  (0x29<<8)            |(1<<NFlag)   \r
2622          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2623          .hword  (0x25<<8)               |(1<<NFlag)   \r
2624          .hword  (0x26<<8)               |(1<<NFlag)   \r
2625          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2626          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2627          .hword  (0x29<<8)            |(1<<NFlag)   \r
2628          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2629          .hword  (0x31<<8)               |(1<<NFlag)   \r
2630          .hword  (0x32<<8)               |(1<<NFlag)   \r
2631          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2632          .hword  (0x34<<8)               |(1<<NFlag)   \r
2633          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2634          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2635          .hword  (0x37<<8)               |(1<<NFlag)   \r
2636          .hword  (0x38<<8)            |(1<<NFlag)   \r
2637          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2638          .hword  (0x34<<8)               |(1<<NFlag)   \r
2639          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2640          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2641          .hword  (0x37<<8)               |(1<<NFlag)   \r
2642          .hword  (0x38<<8)            |(1<<NFlag)   \r
2643          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2644          .hword  (0x40<<8)                  |(1<<NFlag)   \r
2645          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2646          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2647          .hword  (0x43<<8)                  |(1<<NFlag)   \r
2648          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2649          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2650          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2651          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2652          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2653          .hword  (0x49<<8)               |(1<<NFlag)   \r
2654          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2655          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2656          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2657          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2658          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2659          .hword  (0x49<<8)               |(1<<NFlag)   \r
2660          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2661          .hword  (0x51<<8)                  |(1<<NFlag)   \r
2662          .hword  (0x52<<8)                  |(1<<NFlag)   \r
2663          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2664          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2665          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2666          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2667          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2668          .hword  (0x58<<8)               |(1<<NFlag)   \r
2669          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2670          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2671          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2672          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2673          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2674          .hword  (0x58<<8)               |(1<<NFlag)   \r
2675          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2676          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2677          .hword  (0x61<<8)               |(1<<NFlag)   \r
2678          .hword  (0x62<<8)               |(1<<NFlag)   \r
2679          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2680          .hword  (0x64<<8)               |(1<<NFlag)   \r
2681          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2682          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2683          .hword  (0x67<<8)               |(1<<NFlag)   \r
2684          .hword  (0x68<<8)            |(1<<NFlag)   \r
2685          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2686          .hword  (0x64<<8)               |(1<<NFlag)   \r
2687          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2688          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2689          .hword  (0x67<<8)               |(1<<NFlag)   \r
2690          .hword  (0x68<<8)            |(1<<NFlag)   \r
2691          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2692          .hword  (0x70<<8)               |(1<<NFlag)   \r
2693          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2694          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2695          .hword  (0x73<<8)               |(1<<NFlag)   \r
2696          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2697          .hword  (0x75<<8)               |(1<<NFlag)   \r
2698          .hword  (0x76<<8)               |(1<<NFlag)   \r
2699          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2700          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2701          .hword  (0x79<<8)            |(1<<NFlag)   \r
2702          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2703          .hword  (0x75<<8)               |(1<<NFlag)   \r
2704          .hword  (0x76<<8)               |(1<<NFlag)   \r
2705          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2706          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2707          .hword  (0x79<<8)            |(1<<NFlag)   \r
2708          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2709          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2710          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2711          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2712          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2713          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2714          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2715          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2716          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2717          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2718          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2719          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2720          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2721          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2722          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2723          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2724          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2725          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2726          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2727          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2728          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2729          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2730          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2731          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2732          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2733          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2734          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2735          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2736          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2737          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2738          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2739          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2740          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2741          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2742          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2743          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2744          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2745          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2746          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2747          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2748          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2749          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2750          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2751          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2752          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2753          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2754          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2755          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2756          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2757          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2758          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2759          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2760          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2761          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2762          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2763          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2764          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2765          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2766          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2767          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2768          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2769          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2770          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2771          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2772          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2773          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
2774          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
2775          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2776          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2777          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2778          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2779          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2780          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2781          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2782          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2783          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2784          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2785          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2786          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2787          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2788          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
2789          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2790          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2791          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
2792          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2793          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2794          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2795          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2796          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2797          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2798          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2799          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2800          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2801          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2802          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2803          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2804          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2805          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2806          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2807          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2808          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2809          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2810          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2811          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2812          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2813          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2814          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2815          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2816          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2817          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2818          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2819          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2820          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2821          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2822          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2823          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2824          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2825          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2826          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2827          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2828          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2829          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2830          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2831          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2832          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2833          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2834          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2835          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2836          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2837          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2838          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2839          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2840          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2841          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2842          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2843          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2844          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2845          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2846          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2847          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2848          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2849          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2850          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2851          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2852          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2853          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2854          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2855          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2856          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2857          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2858          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2859          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2860          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2861          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2862          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2863          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2864          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2865          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2866          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2867          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2868          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2869          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2870          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2871          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2872          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2873          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2874          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2875          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2876          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2877          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2878          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2879          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2880          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2881          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2882          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2883          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2884          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2885          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2886          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2887          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2888          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2889          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2890          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2891          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2892          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2893          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2894          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2895          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2896          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2897          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2898          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2899          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2900          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2901          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2902          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2903          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2904          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2905          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2906          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2907          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2908          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2909          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2910          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2911          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2912          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2913          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2914          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2915          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2916          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2917          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2918          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2919          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2920          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2921          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2922          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2923          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2924          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2925          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2926          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2927          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2928          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2929          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2930          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2931          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2932          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2933          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2934          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2935          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2936          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2937          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2938          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2939          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2940          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2941          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2942          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2943          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2944          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2945          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2946          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2947          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2948          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2949          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2950          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2951          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2952          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2953          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2954          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2955          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2956          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2957          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2958          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2959          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2960          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2961          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2962          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2963          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2964          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
2965          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2966          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2967          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
2968          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2969          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2970          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2971          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2972          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2973          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2974          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2975          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2976          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2977          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2978          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2979          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2980          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2981          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
2982          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
2983          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2984          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2985          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2986          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2987          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2988          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2989          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2990          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2991          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2992          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2993          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2994          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2995          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2996          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2997          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2998          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2999          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3000          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3001          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3002          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3003          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3004          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3005          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3006          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3007          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3008          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3009          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3010          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3011          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3012          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3013          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3014          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3015          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3016          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3017          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3018          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3019          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3020          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3021          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3022          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3023          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3024          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3025          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3026          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3027          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3028          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3029          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3030          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3031          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3032          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3033          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3034          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3035          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3036          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3037          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3038          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3039          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3040          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3041          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3042          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3043          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3044          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3045          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3046          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3047          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3048          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3049          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3050          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3051          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3052          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3053          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3054          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3055          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3056          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3057          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3058          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3059          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3060          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3061          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3062          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3063          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3064          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3065          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3066          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3067          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3068          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3069          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3070          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3071          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3072          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3073          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3074          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3075          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3076          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3077          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3078          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3079          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3080          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3081          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3082          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3083          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3084          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3085          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3086          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3087          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3088          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3089          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3090          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3091          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3092          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3093          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3094          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3095          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3096          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3097          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3098          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3099          .hword  (0x01<<8)                  |(1<<NFlag)   \r
3100          .hword  (0x02<<8)                  |(1<<NFlag)   \r
3101          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3102          .hword  (0x04<<8)                  |(1<<NFlag)   \r
3103          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3104          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3105          .hword  (0x07<<8)                  |(1<<NFlag)   \r
3106          .hword  (0x08<<8)               |(1<<NFlag)   \r
3107          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3108          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3109          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3110          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3111          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3112          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3113          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3114          .hword  (0x10<<8)                  |(1<<NFlag)   \r
3115          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3116          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3117          .hword  (0x13<<8)                  |(1<<NFlag)   \r
3118          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3119          .hword  (0x15<<8)                  |(1<<NFlag)   \r
3120          .hword  (0x16<<8)                  |(1<<NFlag)   \r
3121          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3122          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3123          .hword  (0x19<<8)               |(1<<NFlag)   \r
3124          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3125          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3126          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3127          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3128          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3129          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3130          .hword  (0x20<<8)               |(1<<NFlag)   \r
3131          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3132          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3133          .hword  (0x23<<8)               |(1<<NFlag)   \r
3134          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3135          .hword  (0x25<<8)               |(1<<NFlag)   \r
3136          .hword  (0x26<<8)               |(1<<NFlag)   \r
3137          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3138          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3139          .hword  (0x29<<8)            |(1<<NFlag)   \r
3140          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3141          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3142          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3143          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3144          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3145          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3146          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3147          .hword  (0x31<<8)               |(1<<NFlag)   \r
3148          .hword  (0x32<<8)               |(1<<NFlag)   \r
3149          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3150          .hword  (0x34<<8)               |(1<<NFlag)   \r
3151          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3152          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3153          .hword  (0x37<<8)               |(1<<NFlag)   \r
3154          .hword  (0x38<<8)            |(1<<NFlag)   \r
3155          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3156          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3157          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3158          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3159          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3160          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3161          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3162          .hword  (0x40<<8)                  |(1<<NFlag)   \r
3163          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3164          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3165          .hword  (0x43<<8)                  |(1<<NFlag)   \r
3166          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3167          .hword  (0x45<<8)                  |(1<<NFlag)   \r
3168          .hword  (0x46<<8)                  |(1<<NFlag)   \r
3169          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3170          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3171          .hword  (0x49<<8)               |(1<<NFlag)   \r
3172          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3173          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3174          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3175          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3176          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3177          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3178          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3179          .hword  (0x51<<8)                  |(1<<NFlag)   \r
3180          .hword  (0x52<<8)                  |(1<<NFlag)   \r
3181          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3182          .hword  (0x54<<8)                  |(1<<NFlag)   \r
3183          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3184          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3185          .hword  (0x57<<8)                  |(1<<NFlag)   \r
3186          .hword  (0x58<<8)               |(1<<NFlag)   \r
3187          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3188          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3189          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3190          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3191          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3192          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3193          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3194          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3195          .hword  (0x61<<8)               |(1<<NFlag)   \r
3196          .hword  (0x62<<8)               |(1<<NFlag)   \r
3197          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3198          .hword  (0x64<<8)               |(1<<NFlag)   \r
3199          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3200          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3201          .hword  (0x67<<8)               |(1<<NFlag)   \r
3202          .hword  (0x68<<8)            |(1<<NFlag)   \r
3203          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3204          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3205          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3206          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3207          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3208          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3209          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3210          .hword  (0x70<<8)               |(1<<NFlag)   \r
3211          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3212          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3213          .hword  (0x73<<8)               |(1<<NFlag)   \r
3214          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3215          .hword  (0x75<<8)               |(1<<NFlag)   \r
3216          .hword  (0x76<<8)               |(1<<NFlag)   \r
3217          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3218          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3219          .hword  (0x79<<8)            |(1<<NFlag)   \r
3220          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3221          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3222          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3223          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3224          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3225          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3226          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3227          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3228          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3229          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3230          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3231          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3232          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3233          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3234          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3235          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
3236          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3237          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3238          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3239          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3240          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3241          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3242          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3243          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3244          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3245          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3246          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3247          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3248          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3249          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3250          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3251          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3252          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3253          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3254          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3255          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3256          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3257          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3258          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3259          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3260          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3261          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3262          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3263          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3264          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3265          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3266          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3267          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3268          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3269          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3270          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3271          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3272          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3273          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3274          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3275          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3276          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3277          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3278          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3279          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3280          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3281          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3282          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3283          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3284          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3285          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3286          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3287          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3288          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3289          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3290          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3291          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3292          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3293          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3294          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3295          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3296          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3297          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3298          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3299          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3300          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3301          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3302          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3303          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3304          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3305          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3306          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3307          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3308          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3309          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3310          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3311          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3312          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3313          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3314          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3315          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3316          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3317          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3318          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3319          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3320          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3321          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3322          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3323          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3324          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3325          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3326          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3327          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3328          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3329          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3330          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3331          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3332          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3333          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3334          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3335          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3336          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3337          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3338          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3339          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3340          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3341          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3342          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3343          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3344          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3345          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3346          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3347          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3348          .hword  (0x9A<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3349          .hword  (0x9B<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3350          .hword  (0x9C<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3351          .hword  (0x9D<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3352          .hword  (0x9E<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3353          .hword  (0x9F<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3354          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3355          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3356          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3357          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3358          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3359          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3360          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3361          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3362          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3363          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3364          .hword  (0xAA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3365          .hword  (0xAB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3366          .hword  (0xAC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3367          .hword  (0xAD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3368          .hword  (0xAE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3369          .hword  (0xAF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3370          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3371          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3372          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3373          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3374          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3375          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3376          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3377          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3378          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3379          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3380          .hword  (0xBA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3381          .hword  (0xBB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3382          .hword  (0xBC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3383          .hword  (0xBD<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3384          .hword  (0xBE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3385          .hword  (0xBF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3386          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3387          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3388          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3389          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3390          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3391          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3392          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3393          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3394          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3395          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3396          .hword  (0xCA<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3397          .hword  (0xCB<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3398          .hword  (0xCC<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3399          .hword  (0xCD<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3400          .hword  (0xCE<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3401          .hword  (0xCF<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3402          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3403          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3404          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3405          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3406          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3407          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3408          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3409          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3410          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3411          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3412          .hword  (0xDA<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3413          .hword  (0xDB<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3414          .hword  (0xDC<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3415          .hword  (0xDD<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3416          .hword  (0xDE<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3417          .hword  (0xDF<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3418          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3419          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3420          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3421          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3422          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3423          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3424          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3425          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3426          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3427          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3428          .hword  (0xEA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3429          .hword  (0xEB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3430          .hword  (0xEC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3431          .hword  (0xED<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3432          .hword  (0xEE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3433          .hword  (0xEF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3434          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3435          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3436          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3437          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3438          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3439          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3440          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3441          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3442          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3443          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3444          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3445          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3446          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3447          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3448          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3449          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3450          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3451          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3452          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3453          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3454          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3455          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3456          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3457          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3458          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
3459          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3460          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3461          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3462          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3463          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3464          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3465          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3466          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3467          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3468          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3469          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3470          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3471          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3472          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3473          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3474          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3475          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
3476          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3477          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3478          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3479          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3480          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3481          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3482          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
3483          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3484          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3485          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
3486          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3487          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
3488          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
3489          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3490          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3491          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
3492          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3493          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3494          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3495          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3496          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3497          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3498          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3499          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
3500          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
3501          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3502          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3503          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3504          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3505          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3506          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3507          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3508          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3509          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3510          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3511          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3512          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3513          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3514          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3515          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3516          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3517          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3518          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3519          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3520          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3521          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3522          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3523          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3524          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3525          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3526          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3527          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3528          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3529          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3530          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3531          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3532          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3533          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3534          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3535          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3536          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3537          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3538          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3539          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3540          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3541          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3542          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3543          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3544          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3545          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3546          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3547          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3548          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3549          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3550          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3551          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3552          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3553          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3554          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3555          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3556          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3557          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3558          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3559          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3560          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3561          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3562          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3563          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3564          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3565          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3566          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3567          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3568          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3569          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3570          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3571          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3572          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3573          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3574          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3575          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3576          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3577          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3578          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3579          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3580          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3581          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3582          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3583          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3584          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3585          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3586          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3587          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3588          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3589          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3590          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3591          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3592          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3593          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3594          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3595          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3596          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3597          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3598          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3599          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3600          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3601          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3602          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3603          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3604          \r
3605 .align 4\r
3606 \r
3607 AF_Z80:  .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 0\r
3608          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 1\r
3609          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 2\r
3610          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 3\r
3611          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 4\r
3612          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 5\r
3613          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 6\r
3614          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 7\r
3615          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 8\r
3616          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 9\r
3617          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 10\r
3618          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 11\r
3619          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 12\r
3620          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 13\r
3621          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 14\r
3622          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 15\r
3623          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 16\r
3624          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 17\r
3625          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 18\r
3626          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 19\r
3627          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 20\r
3628          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 21\r
3629          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 22\r
3630          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 23\r
3631          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 24\r
3632          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 25\r
3633          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 26\r
3634          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 27\r
3635          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 28\r
3636          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 29\r
3637          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 30\r
3638          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 31\r
3639          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 32\r
3640          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 33\r
3641          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 34\r
3642          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 35\r
3643          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 36\r
3644          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 37\r
3645          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 38\r
3646          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 39\r
3647          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 40\r
3648          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 41\r
3649          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 42\r
3650          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 43\r
3651          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 44\r
3652          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 45\r
3653          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 46\r
3654          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 47\r
3655          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 48\r
3656          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 49\r
3657          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 50\r
3658          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 51\r
3659          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 52\r
3660          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 53\r
3661          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 54\r
3662          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 55\r
3663          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 56\r
3664          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 57\r
3665          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 58\r
3666          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 59\r
3667          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 60\r
3668          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 61\r
3669          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 62\r
3670          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 63\r
3671          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 64\r
3672          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 65\r
3673          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 66\r
3674          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 67\r
3675          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 68\r
3676          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 69\r
3677          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 70\r
3678          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 71\r
3679          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 72\r
3680          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 73\r
3681          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 74\r
3682          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 75\r
3683          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 76\r
3684          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 77\r
3685          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 78\r
3686          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 79\r
3687          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 80\r
3688          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 81\r
3689          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 82\r
3690          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 83\r
3691          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 84\r
3692          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 85\r
3693          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 86\r
3694          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 87\r
3695          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 88\r
3696          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 89\r
3697          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 90\r
3698          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 91\r
3699          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 92\r
3700          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 93\r
3701          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 94\r
3702          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 95\r
3703          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 96\r
3704          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 97\r
3705          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 98\r
3706          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 99\r
3707          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 100\r
3708          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 101\r
3709          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 102\r
3710          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 103\r
3711          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 104\r
3712          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 105\r
3713          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 106\r
3714          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 107\r
3715          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 108\r
3716          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 109\r
3717          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 110\r
3718          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 111\r
3719          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 112\r
3720          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 113\r
3721          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 114\r
3722          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 115\r
3723          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 116\r
3724          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 117\r
3725          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 118\r
3726          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 119\r
3727          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 120\r
3728          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 121\r
3729          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 122\r
3730          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 123\r
3731          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 124\r
3732          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 125\r
3733          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 126\r
3734          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 127\r
3735          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 128\r
3736          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 129\r
3737          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 130\r
3738          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 131\r
3739          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 132\r
3740          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 133\r
3741          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 134\r
3742          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 135\r
3743          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 136\r
3744          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 137\r
3745          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 138\r
3746          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 139\r
3747          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 140\r
3748          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 141\r
3749          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 142\r
3750          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 143\r
3751          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 144\r
3752          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 145\r
3753          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 146\r
3754          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 147\r
3755          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 148\r
3756          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 149\r
3757          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 150\r
3758          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 151\r
3759          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 152\r
3760          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 153\r
3761          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 154\r
3762          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 155\r
3763          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 156\r
3764          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 157\r
3765          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 158\r
3766          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 159\r
3767          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 160\r
3768          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 161\r
3769          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 162\r
3770          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 163\r
3771          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 164\r
3772          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 165\r
3773          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 166\r
3774          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 167\r
3775          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 168\r
3776          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 169\r
3777          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 170\r
3778          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 171\r
3779          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 172\r
3780          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 173\r
3781          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 174\r
3782          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 175\r
3783          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 176\r
3784          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 177\r
3785          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 178\r
3786          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 179\r
3787          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 180\r
3788          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 181\r
3789          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 182\r
3790          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 183\r
3791          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 184\r
3792          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 185\r
3793          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 186\r
3794          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 187\r
3795          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 188\r
3796          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 189\r
3797          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 190\r
3798          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 191\r
3799          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 192\r
3800          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 193\r
3801          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 194\r
3802          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 195\r
3803          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 196\r
3804          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 197\r
3805          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 198\r
3806          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 199\r
3807          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 200\r
3808          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 201\r
3809          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 202\r
3810          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 203\r
3811          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 204\r
3812          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 205\r
3813          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 206\r
3814          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 207\r
3815          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 208\r
3816          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 209\r
3817          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 210\r
3818          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 211\r
3819          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 212\r
3820          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 213\r
3821          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 214\r
3822          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 215\r
3823          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 216\r
3824          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 217\r
3825          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 218\r
3826          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 219\r
3827          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 220\r
3828          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 221\r
3829          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 222\r
3830          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 223\r
3831          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 224\r
3832          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 225\r
3833          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 226\r
3834          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 227\r
3835          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 228\r
3836          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 229\r
3837          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 230\r
3838          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 231\r
3839          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 232\r
3840          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 233\r
3841          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 234\r
3842          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 235\r
3843          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 236\r
3844          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 237\r
3845          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 238\r
3846          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 239\r
3847          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 240\r
3848          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 241\r
3849          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 242\r
3850          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 243\r
3851          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 244\r
3852          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 245\r
3853          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 246\r
3854          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 247\r
3855          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 248\r
3856          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 249\r
3857          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 250\r
3858          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 251\r
3859          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 252\r
3860          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 253\r
3861          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 254\r
3862          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 255\r
3863 \r
3864 .align 4\r
3865 \r
3866 AF_ARM:  .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 0\r
3867          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 1\r
3868          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 2\r
3869          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 3\r
3870          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 4\r
3871          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 5\r
3872          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 6\r
3873          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 7\r
3874          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 8\r
3875          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 9\r
3876          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 10\r
3877          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 11\r
3878          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 12\r
3879          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 13\r
3880          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 14\r
3881          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 15\r
3882          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 16\r
3883          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 17\r
3884          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 18\r
3885          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 19\r
3886          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 20\r
3887          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 21\r
3888          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 22\r
3889          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 23\r
3890          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 24\r
3891          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 25\r
3892          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 26\r
3893          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 27\r
3894          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 28\r
3895          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 29\r
3896          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 30\r
3897          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 31\r
3898          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 32\r
3899          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 33\r
3900          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 34\r
3901          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 35\r
3902          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 36\r
3903          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 37\r
3904          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 38\r
3905          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 39\r
3906          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 40\r
3907          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 41\r
3908          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 42\r
3909          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 43\r
3910          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 44\r
3911          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 45\r
3912          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 46\r
3913          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 47\r
3914          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 48\r
3915          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 49\r
3916          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 50\r
3917          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 51\r
3918          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 52\r
3919          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 53\r
3920          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 54\r
3921          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 55\r
3922          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 56\r
3923          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 57\r
3924          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 58\r
3925          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 59\r
3926          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 60\r
3927          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 61\r
3928          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 62\r
3929          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 63\r
3930          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 64\r
3931          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 65\r
3932          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 66\r
3933          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 67\r
3934          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 68\r
3935          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 69\r
3936          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 70\r
3937          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 71\r
3938          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 72\r
3939          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 73\r
3940          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 74\r
3941          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 75\r
3942          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 76\r
3943          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 77\r
3944          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 78\r
3945          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 79\r
3946          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 80\r
3947          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 81\r
3948          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 82\r
3949          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 83\r
3950          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 84\r
3951          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 85\r
3952          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 86\r
3953          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 87\r
3954          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 88\r
3955          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 89\r
3956          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 90\r
3957          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 91\r
3958          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 92\r
3959          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 93\r
3960          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 94\r
3961          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 95\r
3962          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 96\r
3963          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 97\r
3964          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 98\r
3965          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 99\r
3966          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 100\r
3967          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 101\r
3968          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 102\r
3969          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 103\r
3970          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 104\r
3971          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 105\r
3972          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 106\r
3973          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 107\r
3974          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 108\r
3975          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 109\r
3976          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 110\r
3977          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 111\r
3978          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 112\r
3979          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 113\r
3980          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 114\r
3981          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 115\r
3982          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 116\r
3983          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 117\r
3984          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 118\r
3985          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 119\r
3986          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 120\r
3987          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 121\r
3988          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 122\r
3989          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 123\r
3990          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 124\r
3991          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 125\r
3992          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 126\r
3993          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 127\r
3994          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 128\r
3995          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 129\r
3996          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 130\r
3997          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 131\r
3998          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 132\r
3999          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 133\r
4000          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 134\r
4001          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 135\r
4002          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 136\r
4003          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 137\r
4004          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 138\r
4005          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 139\r
4006          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 140\r
4007          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 141\r
4008          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 142\r
4009          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 143\r
4010          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 144\r
4011          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 145\r
4012          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 146\r
4013          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 147\r
4014          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 148\r
4015          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 149\r
4016          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 150\r
4017          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 151\r
4018          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 152\r
4019          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 153\r
4020          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 154\r
4021          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 155\r
4022          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 156\r
4023          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 157\r
4024          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 158\r
4025          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 159\r
4026          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 160\r
4027          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 161\r
4028          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 162\r
4029          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 163\r
4030          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 164\r
4031          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 165\r
4032          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 166\r
4033          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 167\r
4034          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 168\r
4035          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 169\r
4036          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 170\r
4037          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 171\r
4038          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 172\r
4039          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 173\r
4040          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 174\r
4041          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 175\r
4042          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 176\r
4043          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 177\r
4044          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 178\r
4045          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 179\r
4046          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 180\r
4047          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 181\r
4048          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 182\r
4049          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 183\r
4050          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 184\r
4051          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 185\r
4052          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 186\r
4053          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 187\r
4054          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 188\r
4055          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 189\r
4056          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 190\r
4057          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 191\r
4058          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 192\r
4059          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 193\r
4060          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 194\r
4061          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 195\r
4062          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 196\r
4063          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 197\r
4064          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 198\r
4065          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 199\r
4066          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 200\r
4067          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 201\r
4068          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 202\r
4069          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 203\r
4070          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 204\r
4071          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 205\r
4072          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 206\r
4073          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 207\r
4074          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 208\r
4075          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 209\r
4076          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 210\r
4077          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 211\r
4078          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 212\r
4079          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 213\r
4080          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 214\r
4081          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 215\r
4082          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 216\r
4083          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 217\r
4084          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 218\r
4085          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 219\r
4086          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 220\r
4087          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 221\r
4088          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 222\r
4089          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 223\r
4090          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 224\r
4091          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 225\r
4092          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 226\r
4093          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 227\r
4094          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 228\r
4095          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 229\r
4096          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 230\r
4097          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 231\r
4098          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 232\r
4099          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 233\r
4100          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 234\r
4101          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 235\r
4102          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 236\r
4103          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 237\r
4104          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 238\r
4105          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 239\r
4106          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 240\r
4107          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 241\r
4108          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 242\r
4109          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 243\r
4110          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 244\r
4111          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 245\r
4112          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 246\r
4113          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 247\r
4114          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 248\r
4115          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 249\r
4116          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 250\r
4117          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 251\r
4118          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 252\r
4119          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 253\r
4120          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 254\r
4121          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 255\r
4122 \r
4123 .align 4\r
4124 \r
4125 PZSTable_data: .byte (1<<ZFlag)|(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4126         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4127         .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
4128         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag),(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4129         .byte  (1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0,0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4130         .byte  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
4131         .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
4132         .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
4133         .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
4134         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4135         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4136         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4137         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4138         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4139         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4140         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4141         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4142         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4143         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4144         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4145         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4146         .byte  (1<<SFlag),(1<<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<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4155         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4156         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4157         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\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 \r
4167 .align 4\r
4168 \r
4169 MAIN_opcodes:   \r
4170         .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
4171         .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
4172         .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
4173         .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
4174         .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
4175         .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
4176         .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
4177         .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
4178         .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
4179         .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
4180         .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
4181         .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
4182         .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
4183         .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
4184         .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
4185         .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
4186         .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
4187         .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
4188         .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
4189         .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
4190         .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
4191         .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
4192         .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
4193         .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
4194         .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
4195         .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
4196         .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
4197         .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
4198         .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
4199         .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
4200         .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
4201         .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
4202 \r
4203 .align 4\r
4204 \r
4205 EI_DUMMY_opcodes:\r
4206         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4207         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4208         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4209         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4210         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4211         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4212         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4213         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4214         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4215         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4216         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4217         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4218         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4219         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4220         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4221         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4222         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4223         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4224         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4225         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4226         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4227         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4228         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4229         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4230         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4231         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4232         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4233         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4234         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4235         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4236         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4237         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4238 \r
4239 .text\r
4240 .align 4\r
4241 \r
4242 ;@NOP\r
4243 opcode_0_0:\r
4244 ;@LD B,B\r
4245 opcode_4_0:\r
4246 ;@LD C,C\r
4247 opcode_4_9:\r
4248 ;@LD D,D\r
4249 opcode_5_2:\r
4250 ;@LD E,E\r
4251 opcode_5_B:\r
4252 ;@LD H,H\r
4253 opcode_6_4:\r
4254 ;@LD L,L\r
4255 opcode_6_D:\r
4256 ;@LD A,A\r
4257 opcode_7_F:\r
4258         fetch 4\r
4259 ;@LD BC,NN\r
4260 opcode_0_1:\r
4261         ldrb r0,[z80pc],#1\r
4262         ldrb r1,[z80pc],#1\r
4263         orr r0,r0,r1, lsl #8\r
4264         mov z80bc,r0, lsl #16\r
4265         fetch 10\r
4266 ;@LD (BC),A\r
4267 opcode_0_2:\r
4268         mov r0,z80a, lsr #24\r
4269         mov r1,z80bc, lsr #16\r
4270         writemem8\r
4271         fetch 7\r
4272 ;@INC BC\r
4273 opcode_0_3:\r
4274         add z80bc,z80bc,#1<<16\r
4275         fetch 6\r
4276 ;@INC B\r
4277 opcode_0_4:\r
4278         opINC8H z80bc\r
4279         fetch 4\r
4280 ;@DEC B\r
4281 opcode_0_5:\r
4282         opDEC8H z80bc\r
4283         fetch 4\r
4284 ;@LD B,N\r
4285 opcode_0_6:\r
4286         ldrb r1,[z80pc],#1\r
4287         and z80bc,z80bc,#0xFF<<16\r
4288         orr z80bc,z80bc,r1, lsl #24\r
4289         fetch 7\r
4290 ;@RLCA\r
4291 opcode_0_7:\r
4292         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4293         movs z80a,z80a, lsl #1\r
4294         orrcs z80a,z80a,#1<<24\r
4295         orrcs z80f,z80f,#1<<CFlag\r
4296         fetch 4\r
4297 ;@EX AF,AF'\r
4298 opcode_0_8:\r
4299         ldr r0,[cpucontext,#z80a2]\r
4300         ldr r1,[cpucontext,#z80f2]\r
4301         str z80a,[cpucontext,#z80a2]\r
4302         str z80f,[cpucontext,#z80f2]\r
4303         mov z80a,r0\r
4304         mov z80f,r1\r
4305         fetch 4\r
4306 ;@ADD HL,BC\r
4307 opcode_0_9:\r
4308         opADD16 z80hl z80bc\r
4309         fetch 11\r
4310 ;@LD A,(BC)\r
4311 opcode_0_A:\r
4312         mov r0,z80bc, lsr #16\r
4313         readmem8\r
4314         mov z80a,r0, lsl #24\r
4315         fetch 7\r
4316 ;@DEC BC\r
4317 opcode_0_B:\r
4318         sub z80bc,z80bc,#1<<16\r
4319         fetch 6\r
4320 ;@INC C\r
4321 opcode_0_C:\r
4322         opINC8L z80bc\r
4323         fetch 4\r
4324 ;@DEC C\r
4325 opcode_0_D:\r
4326         opDEC8L z80bc\r
4327         fetch 4\r
4328 ;@LD C,N\r
4329 opcode_0_E:\r
4330         ldrb r1,[z80pc],#1\r
4331         and z80bc,z80bc,#0xFF<<24\r
4332         orr z80bc,z80bc,r1, lsl #16\r
4333         fetch 7\r
4334 ;@RRCA\r
4335 opcode_0_F:\r
4336         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4337         movs z80a,z80a, lsr #25\r
4338         orrcs z80a,z80a,#1<<7\r
4339         orrcs z80f,z80f,#1<<CFlag\r
4340         mov z80a,z80a, lsl #24\r
4341         fetch 4\r
4342 ;@DJNZ $+2\r
4343 opcode_1_0:\r
4344         sub z80bc,z80bc,#1<<24\r
4345         tst z80bc,#0xFF<<24\r
4346         ldrsb r1,[z80pc],#1\r
4347         addne z80pc,z80pc,r1\r
4348         subne z80_icount,z80_icount,#5\r
4349         fetch 8\r
4350 \r
4351 ;@LD DE,NN\r
4352 opcode_1_1:\r
4353         ldrb r0,[z80pc],#1\r
4354         ldrb r1,[z80pc],#1\r
4355         orr r0,r0,r1, lsl #8\r
4356         mov z80de,r0, lsl #16\r
4357         fetch 10\r
4358 ;@LD (DE),A\r
4359 opcode_1_2:\r
4360         mov r0,z80a, lsr #24\r
4361         writemem8DE\r
4362         fetch 7\r
4363 ;@INC DE\r
4364 opcode_1_3:\r
4365         add z80de,z80de,#1<<16\r
4366         fetch 6\r
4367 ;@INC D\r
4368 opcode_1_4:\r
4369         opINC8H z80de\r
4370         fetch 4\r
4371 ;@DEC D\r
4372 opcode_1_5:\r
4373         opDEC8H z80de\r
4374         fetch 4\r
4375 ;@LD D,N\r
4376 opcode_1_6:\r
4377         ldrb r1,[z80pc],#1\r
4378         and z80de,z80de,#0xFF<<16\r
4379         orr z80de,z80de,r1, lsl #24\r
4380         fetch 7\r
4381 ;@RLA\r
4382 opcode_1_7:\r
4383         tst z80f,#1<<CFlag\r
4384         orrne z80a,z80a,#1<<23\r
4385         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4386         movs z80a,z80a, lsl #1\r
4387         orrcs z80f,z80f,#1<<CFlag\r
4388         fetch 4\r
4389 ;@JR $+2\r
4390 opcode_1_8:\r
4391         ldrsb r1,[z80pc],#1\r
4392         add z80pc,z80pc,r1\r
4393         fetch 12\r
4394 ;@ADD HL,DE\r
4395 opcode_1_9:\r
4396         opADD16 z80hl z80de\r
4397         fetch 11\r
4398 ;@LD A,(DE)\r
4399 opcode_1_A:\r
4400         mov r0,z80de, lsr #16\r
4401         readmem8\r
4402         mov z80a,r0, lsl #24\r
4403         fetch 7\r
4404 ;@DEC DE\r
4405 opcode_1_B:\r
4406         sub z80de,z80de,#1<<16\r
4407         fetch 6\r
4408 ;@INC E\r
4409 opcode_1_C:\r
4410         opINC8L z80de\r
4411         fetch 4\r
4412 ;@DEC E\r
4413 opcode_1_D:\r
4414         opDEC8L z80de\r
4415         fetch 4\r
4416 ;@LD E,N\r
4417 opcode_1_E:\r
4418         ldrb r0,[z80pc],#1\r
4419         and z80de,z80de,#0xFF<<24\r
4420         orr z80de,z80de,r0, lsl #16\r
4421         fetch 7\r
4422 ;@RRA\r
4423 opcode_1_F:\r
4424         orr z80a,z80a,z80f,lsr#1                ;@get C\r
4425         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4426         movs z80a,z80a,ror#25\r
4427         orrcs z80f,z80f,#1<<CFlag\r
4428         mov z80a,z80a,lsl#24\r
4429         fetch 4\r
4430 ;@JR NZ,$+2\r
4431 opcode_2_0:\r
4432         tst z80f,#1<<ZFlag\r
4433         beq opcode_1_8\r
4434         add z80pc,z80pc,#1\r
4435         fetch 7\r
4436 ;@LD HL,NN\r
4437 opcode_2_1:\r
4438         ldrb r0,[z80pc],#1\r
4439         ldrb r1,[z80pc],#1\r
4440         orr r0,r0,r1, lsl #8\r
4441         mov z80hl,r0, lsl #16\r
4442         fetch 10\r
4443 ;@LD (NN),HL\r
4444 opcode_ED_63:\r
4445         eatcycles 4\r
4446 ;@LD (NN),HL\r
4447 opcode_2_2:\r
4448         ldrb r0,[z80pc],#1\r
4449         ldrb r1,[z80pc],#1\r
4450         orr r1,r0,r1, lsl #8\r
4451         mov r0,z80hl, lsr #16\r
4452         writemem16\r
4453         fetch 16\r
4454 ;@INC HL\r
4455 opcode_2_3:\r
4456         add z80hl,z80hl,#1<<16\r
4457         fetch 6\r
4458 ;@INC H\r
4459 opcode_2_4:\r
4460         opINC8H z80hl\r
4461         fetch 4\r
4462 ;@DEC H\r
4463 opcode_2_5:\r
4464         opDEC8H z80hl\r
4465         fetch 4\r
4466 ;@LD H,N\r
4467 opcode_2_6:\r
4468         ldrb r1,[z80pc],#1\r
4469         and z80hl,z80hl,#0xFF<<16\r
4470         orr z80hl,z80hl,r1, lsl #24\r
4471         fetch 7\r
4472 DAATABLE_LOCAL: .word DAATable\r
4473 ;@DAA\r
4474 opcode_2_7:\r
4475         mov r1,z80a, lsr #24\r
4476         tst z80f,#1<<CFlag\r
4477         orrne r1,r1,#256\r
4478         tst z80f,#1<<HFlag\r
4479         orrne r1,r1,#512\r
4480         tst z80f,#1<<NFlag\r
4481         orrne r1,r1,#1024\r
4482         ldr r2,DAATABLE_LOCAL\r
4483         add r2,r2,r1, lsl #1\r
4484         ldrh r1,[r2]\r
4485         and z80f,r1,#0xFF\r
4486         and r2,r1,#0xFF<<8\r
4487         mov z80a,r2, lsl #16\r
4488         fetch 4\r
4489 ;@JR Z,$+2\r
4490 opcode_2_8:\r
4491         tst z80f,#1<<ZFlag\r
4492         bne opcode_1_8\r
4493         add z80pc,z80pc,#1\r
4494         fetch 7\r
4495 ;@ADD HL,HL\r
4496 opcode_2_9:\r
4497         opADD16_2 z80hl\r
4498         fetch 11\r
4499 ;@LD HL,(NN)\r
4500 opcode_ED_6B:\r
4501         eatcycles 4\r
4502 ;@LD HL,(NN)\r
4503 opcode_2_A:\r
4504         ldrb r0,[z80pc],#1\r
4505         ldrb r1,[z80pc],#1\r
4506         orr r0,r0,r1, lsl #8\r
4507         readmem16\r
4508         mov z80hl,r0, lsl #16\r
4509         fetch 16\r
4510 ;@DEC HL\r
4511 opcode_2_B:\r
4512         sub z80hl,z80hl,#1<<16\r
4513         fetch 6\r
4514 ;@INC L\r
4515 opcode_2_C:\r
4516         opINC8L z80hl\r
4517         fetch 4\r
4518 ;@DEC L\r
4519 opcode_2_D:\r
4520         opDEC8L z80hl\r
4521         fetch 4\r
4522 ;@LD L,N\r
4523 opcode_2_E:\r
4524         ldrb r0,[z80pc],#1\r
4525         and z80hl,z80hl,#0xFF<<24\r
4526         orr z80hl,z80hl,r0, lsl #16\r
4527         fetch 7\r
4528 ;@CPL\r
4529 opcode_2_F:\r
4530         eor z80a,z80a,#0xFF<<24\r
4531         orr z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4532         fetch 4\r
4533 ;@JR NC,$+2\r
4534 opcode_3_0:\r
4535         tst z80f,#1<<CFlag\r
4536         beq opcode_1_8\r
4537         add z80pc,z80pc,#1\r
4538         fetch 7\r
4539 ;@LD SP,NN\r
4540 opcode_3_1:\r
4541         ldrb r0,[z80pc],#1\r
4542         ldrb r1,[z80pc],#1\r
4543 \r
4544 .if FAST_Z80SP\r
4545         orr r0,r0,r1, lsl #8\r
4546         rebasesp\r
4547 .else\r
4548         orr z80sp,r0,r1, lsl #8\r
4549 .endif\r
4550         fetch 10\r
4551 ;@LD (NN),A\r
4552 opcode_3_2:\r
4553         ldrb r0,[z80pc],#1\r
4554         ldrb r1,[z80pc],#1\r
4555         orr r1,r0,r1, lsl #8\r
4556         mov r0,z80a, lsr #24\r
4557         writemem8\r
4558         fetch 13\r
4559 ;@INC SP\r
4560 opcode_3_3:\r
4561         add z80sp,z80sp,#1\r
4562         fetch 6\r
4563 ;@INC (HL)\r
4564 opcode_3_4:\r
4565         readmem8HL\r
4566         opINC8b\r
4567         writemem8HL\r
4568         fetch 11\r
4569 ;@DEC (HL)\r
4570 opcode_3_5:\r
4571         readmem8HL\r
4572         opDEC8b\r
4573         writemem8HL\r
4574         fetch 11\r
4575 ;@LD (HL),N\r
4576 opcode_3_6:\r
4577         ldrb r0,[z80pc],#1\r
4578         writemem8HL\r
4579         fetch 10\r
4580 ;@SCF\r
4581 opcode_3_7:\r
4582         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4583         orr z80f,z80f,#1<<CFlag\r
4584         fetch 4\r
4585 ;@JR C,$+2\r
4586 opcode_3_8:\r
4587         tst z80f,#1<<CFlag\r
4588         bne opcode_1_8\r
4589         add z80pc,z80pc,#1\r
4590         fetch 7\r
4591 ;@ADD HL,SP\r
4592 opcode_3_9:\r
4593 .if FAST_Z80SP\r
4594         ldr r0,[cpucontext,#z80sp_base]\r
4595         sub r0,z80sp,r0\r
4596         opADD16s z80hl r0 16\r
4597 .else\r
4598         opADD16s z80hl z80sp 16\r
4599 .endif\r
4600         fetch 11\r
4601 ;@LD A,(NN)\r
4602 opcode_3_A:\r
4603         ldrb r0,[z80pc],#1\r
4604         ldrb r1,[z80pc],#1\r
4605         orr r0,r0,r1, lsl #8\r
4606         readmem8\r
4607         mov z80a,r0, lsl #24\r
4608         fetch 13\r
4609 ;@DEC SP\r
4610 opcode_3_B:\r
4611         sub z80sp,z80sp,#1\r
4612         fetch 6\r
4613 ;@INC A\r
4614 opcode_3_C:\r
4615         opINC8 z80a\r
4616         fetch 4\r
4617 ;@DEC A\r
4618 opcode_3_D:\r
4619         opDEC8 z80a\r
4620         fetch 4\r
4621 ;@LD A,N\r
4622 opcode_3_E:\r
4623         ldrb r0,[z80pc],#1\r
4624         mov z80a,r0, lsl #24\r
4625         fetch 7\r
4626 ;@CCF\r
4627 opcode_3_F:\r
4628         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4629         tst z80f,#1<<CFlag\r
4630         orrne z80f,z80f,#1<<HFlag\r
4631         eor z80f,z80f,#1<<CFlag\r
4632         fetch 4\r
4633 \r
4634 ;@LD B,C\r
4635 opcode_4_1:\r
4636         and z80bc,z80bc,#0xFF<<16\r
4637         orr z80bc,z80bc,z80bc, lsl #8\r
4638         fetch 4\r
4639 ;@LD B,D\r
4640 opcode_4_2:\r
4641         and z80bc,z80bc,#0xFF<<16\r
4642         and r1,z80de,#0xFF<<24\r
4643         orr z80bc,z80bc,r1\r
4644         fetch 4\r
4645 ;@LD B,E\r
4646 opcode_4_3:\r
4647         and z80bc,z80bc,#0xFF<<16\r
4648         and r1,z80de,#0xFF<<16\r
4649         orr z80bc,z80bc,r1, lsl #8\r
4650         fetch 4\r
4651 ;@LD B,H\r
4652 opcode_4_4:\r
4653         and z80bc,z80bc,#0xFF<<16\r
4654         and r1,z80hl,#0xFF<<24\r
4655         orr z80bc,z80bc,r1\r
4656         fetch 4\r
4657 ;@LD B,L\r
4658 opcode_4_5:\r
4659         and z80bc,z80bc,#0xFF<<16\r
4660         and r1,z80hl,#0xFF<<16\r
4661         orr z80bc,z80bc,r1, lsl #8\r
4662         fetch 4\r
4663 ;@LD B,(HL)\r
4664 opcode_4_6:\r
4665         readmem8HL\r
4666         and z80bc,z80bc,#0xFF<<16\r
4667         orr z80bc,z80bc,r0, lsl #24\r
4668         fetch 7\r
4669 ;@LD B,A\r
4670 opcode_4_7:\r
4671         and z80bc,z80bc,#0xFF<<16\r
4672         orr z80bc,z80bc,z80a\r
4673         fetch 4\r
4674 ;@LD C,B\r
4675 opcode_4_8:\r
4676         and z80bc,z80bc,#0xFF<<24\r
4677         orr z80bc,z80bc,z80bc, lsr #8\r
4678         fetch 4\r
4679 ;@LD C,D\r
4680 opcode_4_A:\r
4681         and z80bc,z80bc,#0xFF<<24\r
4682         and r1,z80de,#0xFF<<24\r
4683         orr z80bc,z80bc,r1, lsr #8\r
4684         fetch 4\r
4685 ;@LD C,E\r
4686 opcode_4_B:\r
4687         and z80bc,z80bc,#0xFF<<24\r
4688         and r1,z80de,#0xFF<<16\r
4689         orr z80bc,z80bc,r1 \r
4690         fetch 4\r
4691 ;@LD C,H\r
4692 opcode_4_C:\r
4693         and z80bc,z80bc,#0xFF<<24\r
4694         and r1,z80hl,#0xFF<<24\r
4695         orr z80bc,z80bc,r1, lsr #8\r
4696         fetch 4\r
4697 ;@LD C,L\r
4698 opcode_4_D:\r
4699         and z80bc,z80bc,#0xFF<<24\r
4700         and r1,z80hl,#0xFF<<16\r
4701         orr z80bc,z80bc,r1 \r
4702         fetch 4\r
4703 ;@LD C,(HL)\r
4704 opcode_4_E:\r
4705         readmem8HL\r
4706         and z80bc,z80bc,#0xFF<<24\r
4707         orr z80bc,z80bc,r0, lsl #16\r
4708         fetch 7\r
4709 ;@LD C,A\r
4710 opcode_4_F:\r
4711         and z80bc,z80bc,#0xFF<<24\r
4712         orr z80bc,z80bc,z80a, lsr #8\r
4713         fetch 4\r
4714 ;@LD D,B\r
4715 opcode_5_0:\r
4716         and z80de,z80de,#0xFF<<16\r
4717         and r1,z80bc,#0xFF<<24\r
4718         orr z80de,z80de,r1\r
4719         fetch 4\r
4720 ;@LD D,C\r
4721 opcode_5_1:\r
4722         and z80de,z80de,#0xFF<<16\r
4723         orr z80de,z80de,z80bc, lsl #8\r
4724         fetch 4\r
4725 ;@LD D,E\r
4726 opcode_5_3:\r
4727         and z80de,z80de,#0xFF<<16\r
4728         orr z80de,z80de,z80de, lsl #8\r
4729         fetch 4\r
4730 ;@LD D,H\r
4731 opcode_5_4:\r
4732         and z80de,z80de,#0xFF<<16\r
4733         and r1,z80hl,#0xFF<<24\r
4734         orr z80de,z80de,r1\r
4735         fetch 4\r
4736 ;@LD D,L\r
4737 opcode_5_5:\r
4738         and z80de,z80de,#0xFF<<16\r
4739         orr z80de,z80de,z80hl, lsl #8\r
4740         fetch 4\r
4741 ;@LD D,(HL)\r
4742 opcode_5_6:\r
4743         readmem8HL\r
4744         and z80de,z80de,#0xFF<<16\r
4745         orr z80de,z80de,r0, lsl #24\r
4746         fetch 7\r
4747 ;@LD D,A\r
4748 opcode_5_7:\r
4749         and z80de,z80de,#0xFF<<16\r
4750         orr z80de,z80de,z80a\r
4751         fetch 4\r
4752 ;@LD E,B\r
4753 opcode_5_8:\r
4754         and z80de,z80de,#0xFF<<24\r
4755         and r1,z80bc,#0xFF<<24\r
4756         orr z80de,z80de,r1, lsr #8\r
4757         fetch 4\r
4758 ;@LD E,C\r
4759 opcode_5_9:\r
4760         and z80de,z80de,#0xFF<<24\r
4761         and r1,z80bc,#0xFF<<16\r
4762         orr z80de,z80de,r1 \r
4763         fetch 4\r
4764 ;@LD E,D\r
4765 opcode_5_A:\r
4766         and z80de,z80de,#0xFF<<24\r
4767         orr z80de,z80de,z80de, lsr #8\r
4768         fetch 4\r
4769 ;@LD E,H\r
4770 opcode_5_C:\r
4771         and z80de,z80de,#0xFF<<24\r
4772         and r1,z80hl,#0xFF<<24\r
4773         orr z80de,z80de,r1, lsr #8\r
4774         fetch 4\r
4775 ;@LD E,L\r
4776 opcode_5_D:\r
4777         and z80de,z80de,#0xFF<<24\r
4778         and r1,z80hl,#0xFF<<16\r
4779         orr z80de,z80de,r1 \r
4780         fetch 4\r
4781 ;@LD E,(HL)\r
4782 opcode_5_E:\r
4783         readmem8HL\r
4784         and z80de,z80de,#0xFF<<24\r
4785         orr z80de,z80de,r0, lsl #16\r
4786         fetch 7\r
4787 ;@LD E,A\r
4788 opcode_5_F:\r
4789         and z80de,z80de,#0xFF<<24\r
4790         orr z80de,z80de,z80a, lsr #8\r
4791         fetch 4\r
4792 \r
4793 ;@LD H,B\r
4794 opcode_6_0:\r
4795         and z80hl,z80hl,#0xFF<<16\r
4796         and r1,z80bc,#0xFF<<24\r
4797         orr z80hl,z80hl,r1\r
4798         fetch 4\r
4799 ;@LD H,C\r
4800 opcode_6_1:\r
4801         and z80hl,z80hl,#0xFF<<16\r
4802         orr z80hl,z80hl,z80bc, lsl #8\r
4803         fetch 4\r
4804 ;@LD H,D\r
4805 opcode_6_2:\r
4806         and z80hl,z80hl,#0xFF<<16\r
4807         and r1,z80de,#0xFF<<24\r
4808         orr z80hl,z80hl,r1\r
4809         fetch 4\r
4810 ;@LD H,E\r
4811 opcode_6_3:\r
4812         and z80hl,z80hl,#0xFF<<16\r
4813         orr z80hl,z80hl,z80de, lsl #8\r
4814         fetch 4\r
4815 ;@LD H,L\r
4816 opcode_6_5:\r
4817         and z80hl,z80hl,#0xFF<<16\r
4818         orr z80hl,z80hl,z80hl, lsl #8\r
4819         fetch 4\r
4820 ;@LD H,(HL)\r
4821 opcode_6_6:\r
4822         readmem8HL\r
4823         and z80hl,z80hl,#0xFF<<16\r
4824         orr z80hl,z80hl,r0, lsl #24\r
4825         fetch 7\r
4826 ;@LD H,A\r
4827 opcode_6_7:\r
4828         and z80hl,z80hl,#0xFF<<16\r
4829         orr z80hl,z80hl,z80a\r
4830         fetch 4\r
4831 \r
4832 ;@LD L,B\r
4833 opcode_6_8:\r
4834         and z80hl,z80hl,#0xFF<<24\r
4835         and r1,z80bc,#0xFF<<24\r
4836         orr z80hl,z80hl,r1, lsr #8\r
4837         fetch 4\r
4838 ;@LD L,C\r
4839 opcode_6_9:\r
4840         and z80hl,z80hl,#0xFF<<24\r
4841         and r1,z80bc,#0xFF<<16\r
4842         orr z80hl,z80hl,r1\r
4843         fetch 4\r
4844 ;@LD L,D\r
4845 opcode_6_A:\r
4846         and z80hl,z80hl,#0xFF<<24\r
4847         and r1,z80de,#0xFF<<24\r
4848         orr z80hl,z80hl,r1, lsr #8\r
4849         fetch 4\r
4850 ;@LD L,E\r
4851 opcode_6_B:\r
4852         and z80hl,z80hl,#0xFF<<24\r
4853         and r1,z80de,#0xFF<<16\r
4854         orr z80hl,z80hl,r1\r
4855         fetch 4\r
4856 ;@LD L,H\r
4857 opcode_6_C:\r
4858         and z80hl,z80hl,#0xFF<<24\r
4859         orr z80hl,z80hl,z80hl, lsr #8\r
4860         fetch 4\r
4861 ;@LD L,(HL)\r
4862 opcode_6_E:\r
4863         readmem8HL\r
4864         and z80hl,z80hl,#0xFF<<24\r
4865         orr z80hl,z80hl,r0, lsl #16\r
4866         fetch 7\r
4867 ;@LD L,A\r
4868 opcode_6_F:\r
4869         and z80hl,z80hl,#0xFF<<24\r
4870         orr z80hl,z80hl,z80a, lsr #8\r
4871         fetch 4\r
4872 \r
4873 ;@LD (HL),B\r
4874 opcode_7_0:\r
4875         mov r0,z80bc, lsr #24\r
4876         writemem8HL\r
4877         fetch 7\r
4878 ;@LD (HL),C\r
4879 opcode_7_1:\r
4880         mov r0,z80bc, lsr #16\r
4881         and r0,r0,#0xFF\r
4882         writemem8HL\r
4883         fetch 7\r
4884 ;@LD (HL),D\r
4885 opcode_7_2:\r
4886         mov r0,z80de, lsr #24\r
4887         writemem8HL\r
4888         fetch 7\r
4889 ;@LD (HL),E\r
4890 opcode_7_3:\r
4891         mov r0,z80de, lsr #16\r
4892         and r0,r0,#0xFF\r
4893         writemem8HL\r
4894         fetch 7\r
4895 ;@LD (HL),H\r
4896 opcode_7_4:\r
4897         mov r0,z80hl, lsr #24\r
4898         writemem8HL\r
4899         fetch 7\r
4900 ;@LD (HL),L\r
4901 opcode_7_5:\r
4902         mov r1,z80hl, lsr #16\r
4903         and r0,r1,#0xFF\r
4904         writemem8\r
4905         fetch 7\r
4906 ;@HALT\r
4907 opcode_7_6:\r
4908         sub z80pc,z80pc,#1\r
4909         ldrb r0,[cpucontext,#z80if]\r
4910         orr r0,r0,#Z80_HALT\r
4911         strb r0,[cpucontext,#z80if]\r
4912         mov z80_icount,#0\r
4913         b z80_execute_end\r
4914 ;@LD (HL),A\r
4915 opcode_7_7:\r
4916         mov r0,z80a, lsr #24\r
4917         writemem8HL\r
4918         fetch 7\r
4919 \r
4920 ;@LD A,B\r
4921 opcode_7_8:\r
4922         and z80a,z80bc,#0xFF<<24\r
4923         fetch 4\r
4924 ;@LD A,C\r
4925 opcode_7_9:\r
4926         mov z80a,z80bc, lsl #8\r
4927         fetch 4\r
4928 ;@LD A,D\r
4929 opcode_7_A:\r
4930         and z80a,z80de,#0xFF<<24\r
4931         fetch 4\r
4932 ;@LD A,E\r
4933 opcode_7_B:\r
4934         mov z80a,z80de, lsl #8\r
4935         fetch 4\r
4936 ;@LD A,H\r
4937 opcode_7_C:\r
4938         and z80a,z80hl,#0xFF<<24\r
4939         fetch 4\r
4940 ;@LD A,L\r
4941 opcode_7_D:\r
4942         mov z80a,z80hl, lsl #8\r
4943         fetch 4\r
4944 ;@LD A,(HL)\r
4945 opcode_7_E:\r
4946         readmem8HL\r
4947         mov z80a,r0, lsl #24\r
4948         fetch 7\r
4949 \r
4950 ;@ADD A,B\r
4951 opcode_8_0:\r
4952         opADDH z80bc\r
4953 ;@ADD A,C\r
4954 opcode_8_1:\r
4955         opADDL z80bc\r
4956 ;@ADD A,D\r
4957 opcode_8_2:\r
4958         opADDH z80de\r
4959 ;@ADD A,E\r
4960 opcode_8_3:\r
4961         opADDL z80de\r
4962 ;@ADD A,H\r
4963 opcode_8_4:\r
4964         opADDH z80hl\r
4965 ;@ADD A,L\r
4966 opcode_8_5:\r
4967         opADDL z80hl\r
4968 ;@ADD A,(HL)\r
4969 opcode_8_6:\r
4970         readmem8HL\r
4971         opADDb\r
4972         fetch 7\r
4973 ;@ADD A,A\r
4974 opcode_8_7:\r
4975         opADDA\r
4976 \r
4977 ;@ADC A,B\r
4978 opcode_8_8:\r
4979         opADCH z80bc\r
4980 ;@ADC A,C\r
4981 opcode_8_9:\r
4982         opADCL z80bc\r
4983 ;@ADC A,D\r
4984 opcode_8_A:\r
4985         opADCH z80de\r
4986 ;@ADC A,E\r
4987 opcode_8_B:\r
4988         opADCL z80de\r
4989 ;@ADC A,H\r
4990 opcode_8_C:\r
4991         opADCH z80hl\r
4992 ;@ADC A,L\r
4993 opcode_8_D:\r
4994         opADCL z80hl\r
4995 ;@ADC A,(HL)\r
4996 opcode_8_E:\r
4997         readmem8HL\r
4998         opADCb\r
4999         fetch 7\r
5000 ;@ADC A,A\r
5001 opcode_8_F:\r
5002         opADCA\r
5003 \r
5004 ;@SUB B\r
5005 opcode_9_0:\r
5006         opSUBH z80bc\r
5007 ;@SUB C\r
5008 opcode_9_1:\r
5009         opSUBL z80bc\r
5010 ;@SUB D\r
5011 opcode_9_2:\r
5012         opSUBH z80de\r
5013 ;@SUB E\r
5014 opcode_9_3:\r
5015         opSUBL z80de\r
5016 ;@SUB H\r
5017 opcode_9_4:\r
5018         opSUBH z80hl\r
5019 ;@SUB L\r
5020 opcode_9_5:\r
5021         opSUBL z80hl\r
5022 ;@SUB (HL)\r
5023 opcode_9_6:\r
5024         readmem8HL\r
5025         opSUBb\r
5026         fetch 7\r
5027 ;@SUB A\r
5028 opcode_9_7:\r
5029         opSUBA\r
5030 \r
5031 ;@SBC B \r
5032 opcode_9_8:\r
5033         opSBCH z80bc\r
5034 ;@SBC C\r
5035 opcode_9_9:\r
5036         opSBCL z80bc\r
5037 ;@SBC D\r
5038 opcode_9_A:\r
5039         opSBCH z80de\r
5040 ;@SBC E\r
5041 opcode_9_B:\r
5042         opSBCL z80de\r
5043 ;@SBC H\r
5044 opcode_9_C:\r
5045         opSBCH z80hl\r
5046 ;@SBC L\r
5047 opcode_9_D:\r
5048         opSBCL z80hl\r
5049 ;@SBC (HL)\r
5050 opcode_9_E:\r
5051         readmem8HL\r
5052         opSBCb\r
5053         fetch 7\r
5054 ;@SBC A\r
5055 opcode_9_F:\r
5056         opSBCA\r
5057 \r
5058 ;@AND B\r
5059 opcode_A_0:\r
5060         opANDH z80bc\r
5061 ;@AND C\r
5062 opcode_A_1:\r
5063         opANDL z80bc\r
5064 ;@AND D\r
5065 opcode_A_2:\r
5066         opANDH z80de\r
5067 ;@AND E\r
5068 opcode_A_3:\r
5069         opANDL z80de\r
5070 ;@AND H\r
5071 opcode_A_4:\r
5072         opANDH z80hl\r
5073 ;@AND L\r
5074 opcode_A_5:\r
5075         opANDL z80hl\r
5076 ;@AND (HL)\r
5077 opcode_A_6:\r
5078         readmem8HL\r
5079         opANDb\r
5080         fetch 7\r
5081 ;@AND A\r
5082 opcode_A_7:\r
5083         opANDA\r
5084 \r
5085 ;@XOR B\r
5086 opcode_A_8:\r
5087         opXORH z80bc\r
5088 ;@XOR C\r
5089 opcode_A_9:\r
5090         opXORL z80bc\r
5091 ;@XOR D\r
5092 opcode_A_A:\r
5093         opXORH z80de\r
5094 ;@XOR E\r
5095 opcode_A_B:\r
5096         opXORL z80de\r
5097 ;@XOR H\r
5098 opcode_A_C:\r
5099         opXORH z80hl\r
5100 ;@XOR L\r
5101 opcode_A_D:\r
5102         opXORL z80hl\r
5103 ;@XOR (HL)\r
5104 opcode_A_E:\r
5105         readmem8HL\r
5106         opXORb\r
5107         fetch 7\r
5108 ;@XOR A\r
5109 opcode_A_F:\r
5110         opXORA\r
5111 \r
5112 ;@OR B\r
5113 opcode_B_0:\r
5114         opORH z80bc\r
5115 ;@OR C\r
5116 opcode_B_1:\r
5117         opORL z80bc\r
5118 ;@OR D\r
5119 opcode_B_2:\r
5120         opORH z80de\r
5121 ;@OR E\r
5122 opcode_B_3:\r
5123         opORL z80de\r
5124 ;@OR H\r
5125 opcode_B_4:\r
5126         opORH z80hl\r
5127 ;@OR L\r
5128 opcode_B_5:\r
5129         opORL z80hl\r
5130 ;@OR (HL)\r
5131 opcode_B_6:\r
5132         readmem8HL\r
5133         opORb\r
5134         fetch 7\r
5135 ;@OR A\r
5136 opcode_B_7:\r
5137         opORA\r
5138 \r
5139 ;@CP B\r
5140 opcode_B_8:\r
5141         opCPH z80bc\r
5142 ;@CP C\r
5143 opcode_B_9:\r
5144         opCPL z80bc\r
5145 ;@CP D\r
5146 opcode_B_A:\r
5147         opCPH z80de\r
5148 ;@CP E\r
5149 opcode_B_B:\r
5150         opCPL z80de\r
5151 ;@CP H\r
5152 opcode_B_C:\r
5153         opCPH z80hl\r
5154 ;@CP L\r
5155 opcode_B_D:\r
5156         opCPL z80hl\r
5157 ;@CP (HL)\r
5158 opcode_B_E:\r
5159         readmem8HL\r
5160         opCPb\r
5161         fetch 7\r
5162 ;@CP A\r
5163 opcode_B_F:\r
5164         opCPA\r
5165 \r
5166 ;@RET NZ\r
5167 opcode_C_0:\r
5168         tst z80f,#1<<ZFlag\r
5169         beq opcode_C_9_cond             ;@unconditional RET\r
5170         fetch 5\r
5171 \r
5172 ;@POP BC\r
5173 opcode_C_1:\r
5174         opPOPreg z80bc\r
5175 \r
5176 ;@JP NZ,$+3\r
5177 opcode_C_2:\r
5178         tst z80f,#1<<ZFlag\r
5179         beq opcode_C_3          ;@unconditional JP\r
5180         add z80pc,z80pc,#2\r
5181         fetch 10\r
5182 ;@JP $+3\r
5183 opcode_C_3:\r
5184         ldrb r0,[z80pc],#1\r
5185         ldrb r1,[z80pc],#1\r
5186         orr r0,r0,r1, lsl #8\r
5187         rebasepc\r
5188         fetch 10\r
5189 ;@CALL NZ,NN\r
5190 opcode_C_4:\r
5191         tst z80f,#1<<ZFlag\r
5192         beq opcode_C_D          ;@unconditional CALL\r
5193         add z80pc,z80pc,#2\r
5194         fetch 10\r
5195 \r
5196 ;@PUSH BC\r
5197 opcode_C_5:\r
5198         opPUSHreg z80bc\r
5199         fetch 11\r
5200 ;@ADD A,N\r
5201 opcode_C_6:\r
5202         ldrb r0,[z80pc],#1\r
5203         opADDb\r
5204         fetch 7\r
5205 ;@RST 0\r
5206 opcode_C_7:\r
5207         opRST 0x00\r
5208 \r
5209 ;@RET Z\r
5210 opcode_C_8:\r
5211         tst z80f,#1<<ZFlag\r
5212         bne opcode_C_9_cond             ;@unconditional RET\r
5213         fetch 5\r
5214 \r
5215 opcode_C_9_cond:\r
5216         eatcycles 1\r
5217 ;@RET\r
5218 opcode_C_9:\r
5219     opPOP\r
5220         rebasepc\r
5221         fetch 10\r
5222 ;@JP Z,$+3\r
5223 opcode_C_A:\r
5224         tst z80f,#1<<ZFlag\r
5225         bne opcode_C_3  ;@unconditional JP\r
5226         add z80pc,z80pc,#2\r
5227         fetch 10\r
5228 \r
5229 ;@This reads this opcodes_CB lookup table to find the location of\r
5230 ;@the CB sub for the intruction and then branches to that location\r
5231 opcode_C_B:\r
5232         ldrb r0,[z80pc],#1\r
5233         ldr pc,[pc,r0, lsl #2]\r
5234 opcodes_CB:     .word 0x00000000\r
5235                         .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
5236                         .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
5237                         .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
5238                         .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
5239                         .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
5240                         .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
5241                         .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
5242                         .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
5243                         .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
5244                         .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
5245                         .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
5246                         .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
5247                         .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
5248                         .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
5249                         .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
5250                         .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
5251                         .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
5252                         .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
5253                         .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
5254                         .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
5255                         .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
5256                         .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
5257                         .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
5258                         .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
5259                         .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
5260                         .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
5261                         .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
5262                         .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
5263                         .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
5264                         .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
5265                         .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
5266                         .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
5267 \r
5268 ;@CALL Z,NN\r
5269 opcode_C_C:\r
5270         tst z80f,#1<<ZFlag\r
5271         bne opcode_C_D          ;@unconditional CALL\r
5272         add z80pc,z80pc,#2\r
5273         fetch 10\r
5274 ;@CALL NN\r
5275 opcode_C_D:\r
5276         ldrb r0,[z80pc],#1\r
5277         ldrb r1,[z80pc],#1\r
5278         ldr r2,[cpucontext,#z80pc_base]\r
5279         sub r2,z80pc,r2\r
5280         orr z80pc,r0,r1, lsl #8\r
5281     opPUSHareg r2\r
5282     mov r0,z80pc\r
5283         rebasepc\r
5284         fetch 17\r
5285 ;@ADC A,N\r
5286 opcode_C_E:\r
5287         ldrb r0,[z80pc],#1\r
5288         opADCb\r
5289         fetch 7\r
5290 ;@RST 8H\r
5291 opcode_C_F:\r
5292         opRST 0x08\r
5293 \r
5294 ;@RET NC\r
5295 opcode_D_0:\r
5296         tst z80f,#1<<CFlag\r
5297         beq opcode_C_9_cond             ;@unconditional RET\r
5298         fetch 5\r
5299 ;@POP DE\r
5300 opcode_D_1:\r
5301         opPOPreg z80de\r
5302 \r
5303 ;@JP NC, $+3\r
5304 opcode_D_2 :\r
5305         tst z80f,#1<<CFlag\r
5306         beq opcode_C_3          ;@unconditional JP\r
5307         add z80pc,z80pc,#2\r
5308         fetch 10\r
5309 ;@OUT (N),A\r
5310 opcode_D_3:\r
5311         ldrb r0,[z80pc],#1\r
5312         orr r0,r0,z80a,lsr#16\r
5313         mov r1,z80a, lsr #24\r
5314         opOUT\r
5315         fetch 11\r
5316 ;@CALL NC,NN\r
5317 opcode_D_4:\r
5318         tst z80f,#1<<CFlag\r
5319         beq opcode_C_D          ;@unconditional CALL\r
5320         add z80pc,z80pc,#2\r
5321         fetch 10\r
5322 ;@PUSH DE\r
5323 opcode_D_5:\r
5324         opPUSHreg z80de\r
5325         fetch 11\r
5326 ;@SUB N\r
5327 opcode_D_6:\r
5328         ldrb r0,[z80pc],#1\r
5329         opSUBb\r
5330         fetch 7\r
5331 \r
5332 ;@RST 10H\r
5333 opcode_D_7:\r
5334         opRST 0x10\r
5335 \r
5336 ;@RET C\r
5337 opcode_D_8:\r
5338         tst z80f,#1<<CFlag\r
5339         bne opcode_C_9_cond             ;@unconditional RET\r
5340         fetch 5\r
5341 ;@EXX\r
5342 opcode_D_9:\r
5343         ldr r0,[cpucontext,#z80bc2]\r
5344         ldr r1,[cpucontext,#z80de2]\r
5345         ldr r2,[cpucontext,#z80hl2]\r
5346         str z80bc,[cpucontext,#z80bc2]\r
5347         str z80de,[cpucontext,#z80de2]\r
5348         str z80hl,[cpucontext,#z80hl2]\r
5349         mov z80bc,r0\r
5350         mov z80de,r1\r
5351         mov z80hl,r2\r
5352         fetch 4\r
5353 ;@JP C,$+3\r
5354 opcode_D_A:\r
5355         tst z80f,#1<<CFlag\r
5356         bne opcode_C_3          ;@unconditional JP\r
5357         add z80pc,z80pc,#2\r
5358         fetch 10\r
5359 ;@IN A,(N)\r
5360 opcode_D_B:\r
5361         ldrb r0,[z80pc],#1\r
5362         orr r0,r0,z80a,lsr#16\r
5363         opIN\r
5364         mov z80a,r0, lsl #24    ;@ r0 = data read\r
5365         fetch 11\r
5366 ;@CALL C,NN\r
5367 opcode_D_C:\r
5368         tst z80f,#1<<CFlag\r
5369         bne opcode_C_D          ;@unconditional CALL\r
5370         add z80pc,z80pc,#2\r
5371         fetch 10\r
5372 \r
5373 ;@opcodes_DD\r
5374 opcode_D_D:\r
5375         add z80xx,cpucontext,#z80ix\r
5376         b opcode_D_D_F_D\r
5377 opcode_F_D:\r
5378         add z80xx,cpucontext,#z80iy\r
5379 opcode_D_D_F_D:\r
5380         ldrb r0,[z80pc],#1\r
5381         ldr pc,[pc,r0, lsl #2]\r
5382 opcodes_DD:     .word 0x00000000\r
5383                         .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
5384                         .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
5385                         .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
5386                         .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
5387                         .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
5388                         .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
5389                         .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
5390                         .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
5391                         .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
5392                         .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
5393                         .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
5394                         .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
5395                         .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
5396                         .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
5397                         .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
5398                         .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
5399                         .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
5400                         .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
5401                         .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
5402                         .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
5403                         .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
5404                         .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
5405                         .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
5406                         .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
5407                         .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
5408                         .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
5409                         .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
5410                         .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
5411                         .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
5412                         .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
5413                         .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
5414                         .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
5415 \r
5416 ;@SBC A,N\r
5417 opcode_D_E:\r
5418         ldrb r0,[z80pc],#1\r
5419         opSBCb\r
5420         fetch 7\r
5421 ;@RST 18H\r
5422 opcode_D_F:\r
5423         opRST 0x18\r
5424 \r
5425 ;@RET PO\r
5426 opcode_E_0:\r
5427         tst z80f,#1<<VFlag\r
5428         beq opcode_C_9_cond             ;@unconditional RET\r
5429         fetch 5\r
5430 ;@POP HL\r
5431 opcode_E_1:\r
5432         opPOPreg z80hl\r
5433 \r
5434 ;@JP PO,$+3\r
5435 opcode_E_2:\r
5436         tst z80f,#1<<VFlag\r
5437         beq opcode_C_3          ;@unconditional JP\r
5438         add z80pc,z80pc,#2\r
5439         fetch 10\r
5440 ;@EX (SP),HL\r
5441 opcode_E_3:\r
5442 .if FAST_Z80SP\r
5443         ldrb r0,[z80sp]\r
5444         ldrb r1,[z80sp,#1]\r
5445         orr r0,r0,r1, lsl #8\r
5446         mov r1,z80hl, lsr #24\r
5447         strb r1,[z80sp,#1]\r
5448         mov r1,z80hl, lsr #16\r
5449         strb r1,[z80sp]\r
5450         mov z80hl,r0, lsl #16\r
5451 .else\r
5452         mov r0,z80sp\r
5453         readmem16\r
5454         mov r1,r0\r
5455         mov r0,z80hl,lsr#16\r
5456         mov z80hl,r1,lsl#16\r
5457         mov r1,z80sp\r
5458         writemem16\r
5459 .endif\r
5460         fetch 19\r
5461 ;@CALL PO,NN\r
5462 opcode_E_4:\r
5463         tst z80f,#1<<VFlag\r
5464         beq opcode_C_D          ;@unconditional CALL\r
5465         add z80pc,z80pc,#2\r
5466         fetch 10\r
5467 ;@PUSH HL\r
5468 opcode_E_5:\r
5469         opPUSHreg z80hl\r
5470         fetch 11\r
5471 ;@AND N\r
5472 opcode_E_6:\r
5473         ldrb r0,[z80pc],#1\r
5474         opANDb\r
5475         fetch 7\r
5476 ;@RST 20H\r
5477 opcode_E_7:\r
5478         opRST 0x20\r
5479 \r
5480 ;@RET PE\r
5481 opcode_E_8:\r
5482         tst z80f,#1<<VFlag\r
5483         bne opcode_C_9_cond             ;@unconditional RET\r
5484         fetch 5\r
5485 ;@JP (HL)\r
5486 opcode_E_9:\r
5487         mov r0,z80hl, lsr #16\r
5488         rebasepc\r
5489         fetch 4\r
5490 ;@JP PE,$+3\r
5491 opcode_E_A:\r
5492         tst z80f,#1<<VFlag\r
5493         bne opcode_C_3          ;@unconditional JP\r
5494         add z80pc,z80pc,#2\r
5495         fetch 10\r
5496 ;@EX DE,HL\r
5497 opcode_E_B:\r
5498         mov r1,z80de\r
5499         mov z80de,z80hl\r
5500         mov z80hl,r1\r
5501         fetch 4\r
5502 ;@CALL PE,NN\r
5503 opcode_E_C:\r
5504         tst z80f,#1<<VFlag\r
5505         bne opcode_C_D          ;@unconditional CALL\r
5506         add z80pc,z80pc,#2\r
5507         fetch 10\r
5508 \r
5509 ;@This should be caught at start\r
5510 opcode_E_D:\r
5511         ldrb r1,[z80pc],#1\r
5512         ldr pc,[pc,r1, lsl #2]\r
5513 opcodes_ED:     .word 0x00000000\r
5514                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5515                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5516                         .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
5517                         .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
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_40,opcode_ED_41,opcode_ED_42,opcode_ED_43,opcode_ED_44,opcode_ED_45,opcode_ED_46,opcode_ED_47\r
5523                         .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
5524                         .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
5525                         .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
5526                         .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
5527                         .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
5528                         .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
5529                         .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
5530                         .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
5531                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5532                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5533                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5534                         .word opcode_ED_A0,opcode_ED_A1,opcode_ED_A2,opcode_ED_A3,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5535                         .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
5536                         .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
5537                         .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
5538                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5539                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5540                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5541                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,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 \r
5547 ;@XOR N\r
5548 opcode_E_E:\r
5549         ldrb r0,[z80pc],#1\r
5550         opXORb\r
5551         fetch 7\r
5552 ;@RST 28H\r
5553 opcode_E_F:\r
5554         opRST 0x28\r
5555 \r
5556 ;@RET P\r
5557 opcode_F_0:\r
5558         tst z80f,#1<<SFlag\r
5559         beq opcode_C_9_cond             ;@unconditional RET\r
5560         fetch 5\r
5561 ;@POP AF\r
5562 opcode_F_1:\r
5563 .if FAST_Z80SP\r
5564         ldrb z80f,[z80sp],#1\r
5565         sub r0,opcodes,#0x200\r
5566         ldrb z80f,[r0,z80f]\r
5567         ldrb z80a,[z80sp],#1\r
5568         mov z80a,z80a, lsl #24\r
5569 .else\r
5570         mov r0,z80sp\r
5571         readmem16\r
5572         add z80sp,z80sp,#2\r
5573         and z80a,r0,#0xFF00\r
5574         mov z80a,z80a,lsl#16\r
5575         and z80f,r0,#0xFF\r
5576         sub r0,opcodes,#0x200\r
5577         ldrb z80f,[r0,z80f]\r
5578 .endif\r
5579         fetch 10\r
5580 ;@JP P,$+3\r
5581 opcode_F_2:\r
5582         tst z80f,#1<<SFlag\r
5583         beq opcode_C_3          ;@unconditional JP\r
5584         add z80pc,z80pc,#2\r
5585         fetch 10\r
5586 ;@DI\r
5587 opcode_F_3:\r
5588         ldrb r1,[cpucontext,#z80if]\r
5589         bic r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5590         strb r1,[cpucontext,#z80if]\r
5591         fetch 4\r
5592 ;@CALL P,NN\r
5593 opcode_F_4:\r
5594         tst z80f,#1<<SFlag\r
5595         beq opcode_C_D          ;@unconditional CALL\r
5596         add z80pc,z80pc,#2\r
5597         fetch 10\r
5598 ;@PUSH AF\r
5599 opcode_F_5:\r
5600         sub r0,opcodes,#0x300\r
5601         ldrb r0,[r0,z80f]\r
5602         orr r2,r0,z80a,lsr#16\r
5603     opPUSHareg r2\r
5604         fetch 11\r
5605 ;@OR N\r
5606 opcode_F_6:\r
5607         ldrb r0,[z80pc],#1\r
5608         opORb\r
5609         fetch 7\r
5610 ;@RST 30H\r
5611 opcode_F_7:\r
5612         opRST 0x30\r
5613 \r
5614 ;@RET M\r
5615 opcode_F_8:\r
5616         tst z80f,#1<<SFlag\r
5617         bne opcode_C_9_cond             ;@unconditional RET\r
5618         fetch 5\r
5619 ;@LD SP,HL\r
5620 opcode_F_9:\r
5621 .if FAST_Z80SP\r
5622         mov r0,z80hl, lsr #16\r
5623         rebasesp\r
5624 .else\r
5625         mov z80sp,z80hl, lsr #16\r
5626 .endif\r
5627         fetch 6\r
5628 ;@JP M,$+3\r
5629 opcode_F_A:\r
5630         tst z80f,#1<<SFlag\r
5631         bne opcode_C_3          ;@unconditional JP\r
5632         add z80pc,z80pc,#2\r
5633         fetch 10\r
5634 MAIN_opcodes_POINTER: .word MAIN_opcodes\r
5635 EI_DUMMY_opcodes_POINTER: .word EI_DUMMY_opcodes\r
5636 ;@EI\r
5637 opcode_F_B:\r
5638         ldrb r1,[cpucontext,#z80if]\r
5639         mov r2,opcodes\r
5640         orr r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5641         strb r1,[cpucontext,#z80if]\r
5642 \r
5643         ldrb r0,[z80pc],#1\r
5644         eatcycles 4\r
5645         ldr opcodes,EI_DUMMY_opcodes_POINTER\r
5646         ldr pc,[r2,r0, lsl #2]\r
5647 \r
5648 ei_return:\r
5649         ;@point that program returns from EI to check interupts\r
5650         ;@an interupt can not be taken directly after a EI opcode\r
5651         ;@ reset z80pc and opcode pointer\r
5652         ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
5653         sub z80pc,z80pc,#1\r
5654         ldr opcodes,MAIN_opcodes_POINTER\r
5655         ;@ check ints\r
5656         tst r0,#0xff\r
5657         movne r0,r0,lsr #8\r
5658         tstne r0,#Z80_IF1\r
5659         blne DoInterrupt\r
5660 \r
5661         ;@ continue\r
5662         fetch 0\r
5663 \r
5664 ;@CALL M,NN\r
5665 opcode_F_C:\r
5666         tst z80f,#1<<SFlag\r
5667         bne opcode_C_D          ;@unconditional CALL\r
5668         add z80pc,z80pc,#2\r
5669         fetch 10\r
5670 \r
5671 ;@SHOULD BE CAUGHT AT START - FD SECTION\r
5672 \r
5673 ;@CP N\r
5674 opcode_F_E:\r
5675         ldrb r0,[z80pc],#1\r
5676         opCPb\r
5677         fetch 7\r
5678 ;@RST 38H\r
5679 opcode_F_F:\r
5680         opRST 0x38\r
5681 \r
5682 \r
5683 ;@##################################\r
5684 ;@##################################\r
5685 ;@###  opcodes CB  #########################\r
5686 ;@##################################\r
5687 ;@##################################\r
5688 \r
5689 \r
5690 ;@RLC B\r
5691 opcode_CB_00:\r
5692         opRLCH z80bc\r
5693 ;@RLC C\r
5694 opcode_CB_01:\r
5695         opRLCL z80bc\r
5696 ;@RLC D\r
5697 opcode_CB_02:\r
5698         opRLCH z80de\r
5699 ;@RLC E\r
5700 opcode_CB_03:\r
5701         opRLCL z80de\r
5702 ;@RLC H\r
5703 opcode_CB_04:\r
5704         opRLCH z80hl\r
5705 ;@RLC L\r
5706 opcode_CB_05:\r
5707         opRLCL z80hl\r
5708 ;@RLC (HL)\r
5709 opcode_CB_06:\r
5710         readmem8HL\r
5711         opRLCb\r
5712         writemem8HL\r
5713         fetch 15\r
5714 ;@RLC A\r
5715 opcode_CB_07:\r
5716         opRLCA\r
5717 \r
5718 ;@RRC B\r
5719 opcode_CB_08:\r
5720         opRRCH z80bc\r
5721 ;@RRC C\r
5722 opcode_CB_09:\r
5723         opRRCL z80bc\r
5724 ;@RRC D\r
5725 opcode_CB_0A:\r
5726         opRRCH z80de\r
5727 ;@RRC E\r
5728 opcode_CB_0B:\r
5729         opRRCL z80de\r
5730 ;@RRC H\r
5731 opcode_CB_0C:\r
5732         opRRCH z80hl\r
5733 ;@RRC L\r
5734 opcode_CB_0D:\r
5735         opRRCL z80hl\r
5736 ;@RRC (HL)\r
5737 opcode_CB_0E :\r
5738         readmem8HL\r
5739         opRRCb\r
5740         writemem8HL\r
5741         fetch 15\r
5742 ;@RRC A\r
5743 opcode_CB_0F:\r
5744         opRRCA\r
5745 \r
5746 ;@RL B\r
5747 opcode_CB_10:\r
5748         opRLH z80bc\r
5749 ;@RL C\r
5750 opcode_CB_11:\r
5751         opRLL z80bc\r
5752 ;@RL D\r
5753 opcode_CB_12:\r
5754         opRLH z80de\r
5755 ;@RL E\r
5756 opcode_CB_13:\r
5757         opRLL z80de\r
5758 ;@RL H\r
5759 opcode_CB_14:\r
5760         opRLH z80hl\r
5761 ;@RL L\r
5762 opcode_CB_15:\r
5763         opRLL z80hl\r
5764 ;@RL (HL)\r
5765 opcode_CB_16:\r
5766         readmem8HL\r
5767         opRLb\r
5768         writemem8HL\r
5769         fetch 15\r
5770 ;@RL A\r
5771 opcode_CB_17:\r
5772         opRLA\r
5773 \r
5774 ;@RR B \r
5775 opcode_CB_18:\r
5776         opRRH z80bc\r
5777 ;@RR C\r
5778 opcode_CB_19:\r
5779         opRRL z80bc\r
5780 ;@RR D\r
5781 opcode_CB_1A:\r
5782         opRRH z80de\r
5783 ;@RR E\r
5784 opcode_CB_1B:\r
5785         opRRL z80de\r
5786 ;@RR H\r
5787 opcode_CB_1C:\r
5788         opRRH z80hl\r
5789 ;@RR L\r
5790 opcode_CB_1D:\r
5791         opRRL z80hl\r
5792 ;@RR (HL)\r
5793 opcode_CB_1E:\r
5794         readmem8HL\r
5795         opRRb\r
5796         writemem8HL\r
5797         fetch 15\r
5798 ;@RR A\r
5799 opcode_CB_1F:\r
5800         opRRA\r
5801 \r
5802 ;@SLA B\r
5803 opcode_CB_20:\r
5804         opSLAH z80bc\r
5805 ;@SLA C\r
5806 opcode_CB_21:\r
5807         opSLAL z80bc\r
5808 ;@SLA D\r
5809 opcode_CB_22:\r
5810         opSLAH z80de\r
5811 ;@SLA E\r
5812 opcode_CB_23:\r
5813         opSLAL z80de\r
5814 ;@SLA H\r
5815 opcode_CB_24:\r
5816         opSLAH z80hl\r
5817 ;@SLA L\r
5818 opcode_CB_25:\r
5819         opSLAL z80hl\r
5820 ;@SLA (HL)\r
5821 opcode_CB_26:\r
5822         readmem8HL\r
5823         opSLAb\r
5824         writemem8HL\r
5825         fetch 15\r
5826 ;@SLA A\r
5827 opcode_CB_27:\r
5828         opSLAA\r
5829 \r
5830 ;@SRA B\r
5831 opcode_CB_28:\r
5832         opSRAH z80bc\r
5833 ;@SRA C\r
5834 opcode_CB_29:\r
5835         opSRAL z80bc\r
5836 ;@SRA D\r
5837 opcode_CB_2A:\r
5838         opSRAH z80de\r
5839 ;@SRA E\r
5840 opcode_CB_2B:\r
5841         opSRAL z80de\r
5842 ;@SRA H\r
5843 opcode_CB_2C:\r
5844         opSRAH z80hl\r
5845 ;@SRA L\r
5846 opcode_CB_2D:\r
5847         opSRAL z80hl\r
5848 ;@SRA (HL)\r
5849 opcode_CB_2E:\r
5850         readmem8HL\r
5851         opSRAb\r
5852         writemem8HL\r
5853         fetch 15\r
5854 ;@SRA A\r
5855 opcode_CB_2F:\r
5856         opSRAA\r
5857 \r
5858 ;@SLL B\r
5859 opcode_CB_30:\r
5860         opSLLH z80bc\r
5861 ;@SLL C\r
5862 opcode_CB_31:\r
5863         opSLLL z80bc\r
5864 ;@SLL D\r
5865 opcode_CB_32:\r
5866         opSLLH z80de\r
5867 ;@SLL E\r
5868 opcode_CB_33:\r
5869         opSLLL z80de\r
5870 ;@SLL H\r
5871 opcode_CB_34:\r
5872         opSLLH z80hl\r
5873 ;@SLL L\r
5874 opcode_CB_35:\r
5875         opSLLL z80hl\r
5876 ;@SLL (HL)\r
5877 opcode_CB_36:\r
5878         readmem8HL\r
5879         opSLLb\r
5880         writemem8HL\r
5881         fetch 15\r
5882 ;@SLL A\r
5883 opcode_CB_37:\r
5884         opSLLA\r
5885 \r
5886 ;@SRL B\r
5887 opcode_CB_38:\r
5888         opSRLH z80bc\r
5889 ;@SRL C\r
5890 opcode_CB_39:\r
5891         opSRLL z80bc\r
5892 ;@SRL D\r
5893 opcode_CB_3A:\r
5894         opSRLH z80de\r
5895 ;@SRL E\r
5896 opcode_CB_3B:\r
5897         opSRLL z80de\r
5898 ;@SRL H\r
5899 opcode_CB_3C:\r
5900         opSRLH z80hl\r
5901 ;@SRL L\r
5902 opcode_CB_3D:\r
5903         opSRLL z80hl\r
5904 ;@SRL (HL)\r
5905 opcode_CB_3E:\r
5906         readmem8HL\r
5907         opSRLb\r
5908         writemem8HL\r
5909         fetch 15\r
5910 ;@SRL A\r
5911 opcode_CB_3F:\r
5912         opSRLA\r
5913 \r
5914 \r
5915 ;@BIT 0,B\r
5916 opcode_CB_40:\r
5917         opBITH z80bc 0\r
5918 ;@BIT 0,C\r
5919 opcode_CB_41:\r
5920         opBITL z80bc 0\r
5921 ;@BIT 0,D\r
5922 opcode_CB_42:\r
5923         opBITH z80de 0\r
5924 ;@BIT 0,E\r
5925 opcode_CB_43:\r
5926         opBITL z80de 0\r
5927 ;@BIT 0,H\r
5928 opcode_CB_44:\r
5929         opBITH z80hl 0\r
5930 ;@BIT 0,L\r
5931 opcode_CB_45:\r
5932         opBITL z80hl 0\r
5933 ;@BIT 0,(HL)\r
5934 opcode_CB_46:\r
5935         readmem8HL\r
5936         opBITb 0\r
5937         fetch 12\r
5938 ;@BIT 0,A\r
5939 opcode_CB_47:\r
5940         opBITH z80a 0\r
5941 \r
5942 ;@BIT 1,B\r
5943 opcode_CB_48:\r
5944         opBITH z80bc 1\r
5945 ;@BIT 1,C\r
5946 opcode_CB_49:\r
5947         opBITL z80bc 1\r
5948 ;@BIT 1,D\r
5949 opcode_CB_4A:\r
5950         opBITH z80de 1\r
5951 ;@BIT 1,E\r
5952 opcode_CB_4B:\r
5953         opBITL z80de 1\r
5954 ;@BIT 1,H\r
5955 opcode_CB_4C:\r
5956         opBITH z80hl 1\r
5957 ;@BIT 1,L\r
5958 opcode_CB_4D:\r
5959         opBITL z80hl 1\r
5960 ;@BIT 1,(HL)\r
5961 opcode_CB_4E:\r
5962         readmem8HL\r
5963         opBITb 1\r
5964         fetch 12\r
5965 ;@BIT 1,A\r
5966 opcode_CB_4F:\r
5967         opBITH z80a 1\r
5968 \r
5969 ;@BIT 2,B\r
5970 opcode_CB_50:\r
5971         opBITH z80bc 2\r
5972 ;@BIT 2,C\r
5973 opcode_CB_51:\r
5974         opBITL z80bc 2\r
5975 ;@BIT 2,D\r
5976 opcode_CB_52:\r
5977         opBITH z80de 2\r
5978 ;@BIT 2,E\r
5979 opcode_CB_53:\r
5980         opBITL z80de 2\r
5981 ;@BIT 2,H\r
5982 opcode_CB_54:\r
5983         opBITH z80hl 2\r
5984 ;@BIT 2,L\r
5985 opcode_CB_55:\r
5986         opBITL z80hl 2\r
5987 ;@BIT 2,(HL)\r
5988 opcode_CB_56:\r
5989         readmem8HL\r
5990         opBITb 2\r
5991         fetch 12\r
5992 ;@BIT 2,A\r
5993 opcode_CB_57:\r
5994         opBITH z80a 2\r
5995 \r
5996 ;@BIT 3,B\r
5997 opcode_CB_58:\r
5998         opBITH z80bc 3\r
5999 ;@BIT 3,C\r
6000 opcode_CB_59:\r
6001         opBITL z80bc 3\r
6002 ;@BIT 3,D\r
6003 opcode_CB_5A:\r
6004         opBITH z80de 3\r
6005 ;@BIT 3,E\r
6006 opcode_CB_5B:\r
6007         opBITL z80de 3\r
6008 ;@BIT 3,H\r
6009 opcode_CB_5C:\r
6010         opBITH z80hl 3\r
6011 ;@BIT 3,L\r
6012 opcode_CB_5D:\r
6013         opBITL z80hl 3\r
6014 ;@BIT 3,(HL)\r
6015 opcode_CB_5E:\r
6016         readmem8HL\r
6017         opBITb 3\r
6018         fetch 12\r
6019 ;@BIT 3,A\r
6020 opcode_CB_5F:\r
6021         opBITH z80a 3\r
6022 \r
6023 ;@BIT 4,B\r
6024 opcode_CB_60:\r
6025         opBITH z80bc 4\r
6026 ;@BIT 4,C\r
6027 opcode_CB_61:\r
6028         opBITL z80bc 4\r
6029 ;@BIT 4,D\r
6030 opcode_CB_62:\r
6031         opBITH z80de 4\r
6032 ;@BIT 4,E\r
6033 opcode_CB_63:\r
6034         opBITL z80de 4\r
6035 ;@BIT 4,H\r
6036 opcode_CB_64:\r
6037         opBITH z80hl 4\r
6038 ;@BIT 4,L\r
6039 opcode_CB_65:\r
6040         opBITL z80hl 4\r
6041 ;@BIT 4,(HL)\r
6042 opcode_CB_66:\r
6043         readmem8HL\r
6044         opBITb 4\r
6045         fetch 12\r
6046 ;@BIT 4,A\r
6047 opcode_CB_67:\r
6048         opBITH z80a 4\r
6049 \r
6050 ;@BIT 5,B\r
6051 opcode_CB_68:\r
6052         opBITH z80bc 5\r
6053 ;@BIT 5,C\r
6054 opcode_CB_69:\r
6055         opBITL z80bc 5\r
6056 ;@BIT 5,D\r
6057 opcode_CB_6A:\r
6058         opBITH z80de 5\r
6059 ;@BIT 5,E\r
6060 opcode_CB_6B:\r
6061         opBITL z80de 5\r
6062 ;@BIT 5,H\r
6063 opcode_CB_6C:\r
6064         opBITH z80hl 5\r
6065 ;@BIT 5,L\r
6066 opcode_CB_6D:\r
6067         opBITL z80hl 5\r
6068 ;@BIT 5,(HL)\r
6069 opcode_CB_6E:\r
6070         readmem8HL\r
6071         opBITb 5\r
6072         fetch 12\r
6073 ;@BIT 5,A\r
6074 opcode_CB_6F:\r
6075         opBITH z80a 5\r
6076 \r
6077 ;@BIT 6,B\r
6078 opcode_CB_70:\r
6079         opBITH z80bc 6\r
6080 ;@BIT 6,C\r
6081 opcode_CB_71:\r
6082         opBITL z80bc 6\r
6083 ;@BIT 6,D\r
6084 opcode_CB_72:\r
6085         opBITH z80de 6\r
6086 ;@BIT 6,E\r
6087 opcode_CB_73:\r
6088         opBITL z80de 6\r
6089 ;@BIT 6,H\r
6090 opcode_CB_74:\r
6091         opBITH z80hl 6\r
6092 ;@BIT 6,L\r
6093 opcode_CB_75:\r
6094         opBITL z80hl 6\r
6095 ;@BIT 6,(HL)\r
6096 opcode_CB_76:\r
6097         readmem8HL\r
6098         opBITb 6\r
6099         fetch 12\r
6100 ;@BIT 6,A\r
6101 opcode_CB_77:\r
6102         opBITH z80a 6\r
6103 \r
6104 ;@BIT 7,B\r
6105 opcode_CB_78:\r
6106         opBIT7H z80bc\r
6107 ;@BIT 7,C\r
6108 opcode_CB_79:\r
6109         opBIT7L z80bc\r
6110 ;@BIT 7,D\r
6111 opcode_CB_7A:\r
6112         opBIT7H z80de\r
6113 ;@BIT 7,E\r
6114 opcode_CB_7B:\r
6115         opBIT7L z80de\r
6116 ;@BIT 7,H\r
6117 opcode_CB_7C:\r
6118         opBIT7H z80hl\r
6119 ;@BIT 7,L\r
6120 opcode_CB_7D:\r
6121         opBIT7L z80hl\r
6122 ;@BIT 7,(HL)\r
6123 opcode_CB_7E:\r
6124         readmem8HL\r
6125         opBIT7b\r
6126         fetch 12\r
6127 ;@BIT 7,A\r
6128 opcode_CB_7F:\r
6129         opBIT7H z80a\r
6130 \r
6131 ;@RES 0,B\r
6132 opcode_CB_80:\r
6133         bic z80bc,z80bc,#1<<24\r
6134         fetch 8\r
6135 ;@RES 0,C\r
6136 opcode_CB_81:\r
6137         bic z80bc,z80bc,#1<<16\r
6138         fetch 8\r
6139 ;@RES 0,D\r
6140 opcode_CB_82:\r
6141         bic z80de,z80de,#1<<24\r
6142         fetch 8\r
6143 ;@RES 0,E\r
6144 opcode_CB_83:\r
6145         bic z80de,z80de,#1<<16\r
6146         fetch 8\r
6147 ;@RES 0,H\r
6148 opcode_CB_84:\r
6149         bic z80hl,z80hl,#1<<24\r
6150         fetch 8\r
6151 ;@RES 0,L\r
6152 opcode_CB_85:\r
6153         bic z80hl,z80hl,#1<<16\r
6154         fetch 8\r
6155 ;@RES 0,(HL)\r
6156 opcode_CB_86:\r
6157         opRESmemHL 0\r
6158 ;@RES 0,A\r
6159 opcode_CB_87:\r
6160         bic z80a,z80a,#1<<24\r
6161         fetch 8\r
6162 \r
6163 ;@RES 1,B\r
6164 opcode_CB_88:\r
6165         bic z80bc,z80bc,#1<<25\r
6166         fetch 8\r
6167 ;@RES 1,C\r
6168 opcode_CB_89:\r
6169         bic z80bc,z80bc,#1<<17\r
6170         fetch 8\r
6171 ;@RES 1,D\r
6172 opcode_CB_8A:\r
6173         bic z80de,z80de,#1<<25\r
6174         fetch 8\r
6175 ;@RES 1,E\r
6176 opcode_CB_8B:\r
6177         bic z80de,z80de,#1<<17\r
6178         fetch 8\r
6179 ;@RES 1,H\r
6180 opcode_CB_8C:\r
6181         bic z80hl,z80hl,#1<<25\r
6182         fetch 8\r
6183 ;@RES 1,L\r
6184 opcode_CB_8D:\r
6185         bic z80hl,z80hl,#1<<17\r
6186         fetch 8\r
6187 ;@RES 1,(HL)\r
6188 opcode_CB_8E:\r
6189         opRESmemHL 1\r
6190 ;@RES 1,A\r
6191 opcode_CB_8F:\r
6192         bic z80a,z80a,#1<<25\r
6193         fetch 8\r
6194 \r
6195 ;@RES 2,B\r
6196 opcode_CB_90:\r
6197         bic z80bc,z80bc,#1<<26\r
6198         fetch 8\r
6199 ;@RES 2,C\r
6200 opcode_CB_91:\r
6201         bic z80bc,z80bc,#1<<18\r
6202         fetch 8\r
6203 ;@RES 2,D\r
6204 opcode_CB_92:\r
6205         bic z80de,z80de,#1<<26\r
6206         fetch 8\r
6207 ;@RES 2,E\r
6208 opcode_CB_93:\r
6209         bic z80de,z80de,#1<<18\r
6210         fetch 8\r
6211 ;@RES 2,H\r
6212 opcode_CB_94:\r
6213         bic z80hl,z80hl,#1<<26\r
6214         fetch 8\r
6215 ;@RES 2,L\r
6216 opcode_CB_95:\r
6217         bic z80hl,z80hl,#1<<18\r
6218         fetch 8\r
6219 ;@RES 2,(HL)\r
6220 opcode_CB_96:\r
6221         opRESmemHL 2\r
6222 ;@RES 2,A\r
6223 opcode_CB_97:\r
6224         bic z80a,z80a,#1<<26\r
6225         fetch 8\r
6226 \r
6227 ;@RES 3,B\r
6228 opcode_CB_98:\r
6229         bic z80bc,z80bc,#1<<27\r
6230         fetch 8\r
6231 ;@RES 3,C\r
6232 opcode_CB_99:\r
6233         bic z80bc,z80bc,#1<<19\r
6234         fetch 8\r
6235 ;@RES 3,D\r
6236 opcode_CB_9A:\r
6237         bic z80de,z80de,#1<<27\r
6238         fetch 8\r
6239 ;@RES 3,E\r
6240 opcode_CB_9B:\r
6241         bic z80de,z80de,#1<<19\r
6242         fetch 8\r
6243 ;@RES 3,H\r
6244 opcode_CB_9C:\r
6245         bic z80hl,z80hl,#1<<27\r
6246         fetch 8\r
6247 ;@RES 3,L\r
6248 opcode_CB_9D:\r
6249         bic z80hl,z80hl,#1<<19\r
6250         fetch 8\r
6251 ;@RES 3,(HL)\r
6252 opcode_CB_9E:\r
6253         opRESmemHL 3\r
6254 ;@RES 3,A\r
6255 opcode_CB_9F:\r
6256         bic z80a,z80a,#1<<27\r
6257         fetch 8\r
6258 \r
6259 ;@RES 4,B\r
6260 opcode_CB_A0:\r
6261         bic z80bc,z80bc,#1<<28\r
6262         fetch 8\r
6263 ;@RES 4,C\r
6264 opcode_CB_A1:\r
6265         bic z80bc,z80bc,#1<<20\r
6266         fetch 8\r
6267 ;@RES 4,D\r
6268 opcode_CB_A2:\r
6269         bic z80de,z80de,#1<<28\r
6270         fetch 8\r
6271 ;@RES 4,E\r
6272 opcode_CB_A3:\r
6273         bic z80de,z80de,#1<<20\r
6274         fetch 8\r
6275 ;@RES 4,H\r
6276 opcode_CB_A4:\r
6277         bic z80hl,z80hl,#1<<28\r
6278         fetch 8\r
6279 ;@RES 4,L\r
6280 opcode_CB_A5:\r
6281         bic z80hl,z80hl,#1<<20\r
6282         fetch 8\r
6283 ;@RES 4,(HL)\r
6284 opcode_CB_A6:\r
6285         opRESmemHL 4\r
6286 ;@RES 4,A\r
6287 opcode_CB_A7:\r
6288         bic z80a,z80a,#1<<28\r
6289         fetch 8\r
6290 \r
6291 ;@RES 5,B\r
6292 opcode_CB_A8:\r
6293         bic z80bc,z80bc,#1<<29\r
6294         fetch 8\r
6295 ;@RES 5,C\r
6296 opcode_CB_A9:\r
6297         bic z80bc,z80bc,#1<<21\r
6298         fetch 8\r
6299 ;@RES 5,D\r
6300 opcode_CB_AA:\r
6301         bic z80de,z80de,#1<<29\r
6302         fetch 8\r
6303 ;@RES 5,E\r
6304 opcode_CB_AB:\r
6305         bic z80de,z80de,#1<<21\r
6306         fetch 8\r
6307 ;@RES 5,H\r
6308 opcode_CB_AC:\r
6309         bic z80hl,z80hl,#1<<29\r
6310         fetch 8\r
6311 ;@RES 5,L\r
6312 opcode_CB_AD:\r
6313         bic z80hl,z80hl,#1<<21\r
6314         fetch 8\r
6315 ;@RES 5,(HL)\r
6316 opcode_CB_AE:\r
6317         opRESmemHL 5\r
6318 ;@RES 5,A\r
6319 opcode_CB_AF:\r
6320         bic z80a,z80a,#1<<29\r
6321         fetch 8\r
6322 \r
6323 ;@RES 6,B\r
6324 opcode_CB_B0:\r
6325         bic z80bc,z80bc,#1<<30\r
6326         fetch 8\r
6327 ;@RES 6,C\r
6328 opcode_CB_B1:\r
6329         bic z80bc,z80bc,#1<<22\r
6330         fetch 8\r
6331 ;@RES 6,D\r
6332 opcode_CB_B2:\r
6333         bic z80de,z80de,#1<<30\r
6334         fetch 8\r
6335 ;@RES 6,E\r
6336 opcode_CB_B3:\r
6337         bic z80de,z80de,#1<<22\r
6338         fetch 8\r
6339 ;@RES 6,H\r
6340 opcode_CB_B4:\r
6341         bic z80hl,z80hl,#1<<30\r
6342         fetch 8\r
6343 ;@RES 6,L\r
6344 opcode_CB_B5:\r
6345         bic z80hl,z80hl,#1<<22\r
6346         fetch 8\r
6347 ;@RES 6,(HL)\r
6348 opcode_CB_B6:\r
6349         opRESmemHL 6\r
6350 ;@RES 6,A\r
6351 opcode_CB_B7:\r
6352         bic z80a,z80a,#1<<30\r
6353         fetch 8\r
6354 \r
6355 ;@RES 7,B\r
6356 opcode_CB_B8:\r
6357         bic z80bc,z80bc,#1<<31\r
6358         fetch 8\r
6359 ;@RES 7,C\r
6360 opcode_CB_B9:\r
6361         bic z80bc,z80bc,#1<<23\r
6362         fetch 8\r
6363 ;@RES 7,D\r
6364 opcode_CB_BA:\r
6365         bic z80de,z80de,#1<<31\r
6366         fetch 8\r
6367 ;@RES 7,E\r
6368 opcode_CB_BB:\r
6369         bic z80de,z80de,#1<<23\r
6370         fetch 8\r
6371 ;@RES 7,H\r
6372 opcode_CB_BC:\r
6373         bic z80hl,z80hl,#1<<31\r
6374         fetch 8\r
6375 ;@RES 7,L\r
6376 opcode_CB_BD:\r
6377         bic z80hl,z80hl,#1<<23\r
6378         fetch 8\r
6379 ;@RES 7,(HL)\r
6380 opcode_CB_BE:\r
6381         opRESmemHL 7\r
6382 ;@RES 7,A\r
6383 opcode_CB_BF:\r
6384         bic z80a,z80a,#1<<31\r
6385         fetch 8\r
6386 \r
6387 ;@SET 0,B\r
6388 opcode_CB_C0:\r
6389         orr z80bc,z80bc,#1<<24\r
6390         fetch 8\r
6391 ;@SET 0,C\r
6392 opcode_CB_C1:\r
6393         orr z80bc,z80bc,#1<<16\r
6394         fetch 8\r
6395 ;@SET 0,D\r
6396 opcode_CB_C2:\r
6397         orr z80de,z80de,#1<<24\r
6398         fetch 8\r
6399 ;@SET 0,E\r
6400 opcode_CB_C3:\r
6401         orr z80de,z80de,#1<<16\r
6402         fetch 8\r
6403 ;@SET 0,H\r
6404 opcode_CB_C4:\r
6405         orr z80hl,z80hl,#1<<24\r
6406         fetch 8\r
6407 ;@SET 0,L\r
6408 opcode_CB_C5:\r
6409         orr z80hl,z80hl,#1<<16\r
6410         fetch 8\r
6411 ;@SET 0,(HL)\r
6412 opcode_CB_C6:\r
6413         opSETmemHL 0\r
6414 ;@SET 0,A\r
6415 opcode_CB_C7:\r
6416         orr z80a,z80a,#1<<24\r
6417         fetch 8\r
6418 \r
6419 ;@SET 1,B\r
6420 opcode_CB_C8:\r
6421         orr z80bc,z80bc,#1<<25\r
6422         fetch 8\r
6423 ;@SET 1,C\r
6424 opcode_CB_C9:\r
6425         orr z80bc,z80bc,#1<<17\r
6426         fetch 8\r
6427 ;@SET 1,D\r
6428 opcode_CB_CA:\r
6429         orr z80de,z80de,#1<<25\r
6430         fetch 8\r
6431 ;@SET 1,E\r
6432 opcode_CB_CB:\r
6433         orr z80de,z80de,#1<<17\r
6434         fetch 8\r
6435 ;@SET 1,H\r
6436 opcode_CB_CC:\r
6437         orr z80hl,z80hl,#1<<25\r
6438         fetch 8\r
6439 ;@SET 1,L\r
6440 opcode_CB_CD:\r
6441         orr z80hl,z80hl,#1<<17\r
6442         fetch 8\r
6443 ;@SET 1,(HL)\r
6444 opcode_CB_CE:\r
6445         opSETmemHL 1\r
6446 ;@SET 1,A\r
6447 opcode_CB_CF:\r
6448         orr z80a,z80a,#1<<25\r
6449         fetch 8\r
6450 \r
6451 ;@SET 2,B\r
6452 opcode_CB_D0:\r
6453         orr z80bc,z80bc,#1<<26\r
6454         fetch 8\r
6455 ;@SET 2,C\r
6456 opcode_CB_D1:\r
6457         orr z80bc,z80bc,#1<<18\r
6458         fetch 8\r
6459 ;@SET 2,D\r
6460 opcode_CB_D2:\r
6461         orr z80de,z80de,#1<<26\r
6462         fetch 8\r
6463 ;@SET 2,E\r
6464 opcode_CB_D3:\r
6465         orr z80de,z80de,#1<<18\r
6466         fetch 8\r
6467 ;@SET 2,H\r
6468 opcode_CB_D4:\r
6469         orr z80hl,z80hl,#1<<26\r
6470         fetch 8\r
6471 ;@SET 2,L\r
6472 opcode_CB_D5:\r
6473         orr z80hl,z80hl,#1<<18\r
6474         fetch 8\r
6475 ;@SET 2,(HL)\r
6476 opcode_CB_D6:\r
6477         opSETmemHL 2\r
6478 ;@SET 2,A\r
6479 opcode_CB_D7:\r
6480         orr z80a,z80a,#1<<26\r
6481         fetch 8\r
6482 \r
6483 ;@SET 3,B\r
6484 opcode_CB_D8:\r
6485         orr z80bc,z80bc,#1<<27\r
6486         fetch 8\r
6487 ;@SET 3,C\r
6488 opcode_CB_D9:\r
6489         orr z80bc,z80bc,#1<<19\r
6490         fetch 8\r
6491 ;@SET 3,D\r
6492 opcode_CB_DA:\r
6493         orr z80de,z80de,#1<<27\r
6494         fetch 8\r
6495 ;@SET 3,E\r
6496 opcode_CB_DB:\r
6497         orr z80de,z80de,#1<<19\r
6498         fetch 8\r
6499 ;@SET 3,H\r
6500 opcode_CB_DC:\r
6501         orr z80hl,z80hl,#1<<27\r
6502         fetch 8\r
6503 ;@SET 3,L\r
6504 opcode_CB_DD:\r
6505         orr z80hl,z80hl,#1<<19\r
6506         fetch 8\r
6507 ;@SET 3,(HL)\r
6508 opcode_CB_DE:\r
6509         opSETmemHL 3\r
6510 ;@SET 3,A\r
6511 opcode_CB_DF:\r
6512         orr z80a,z80a,#1<<27\r
6513         fetch 8\r
6514 \r
6515 ;@SET 4,B\r
6516 opcode_CB_E0:\r
6517         orr z80bc,z80bc,#1<<28\r
6518         fetch 8\r
6519 ;@SET 4,C\r
6520 opcode_CB_E1:\r
6521         orr z80bc,z80bc,#1<<20\r
6522         fetch 8\r
6523 ;@SET 4,D\r
6524 opcode_CB_E2:\r
6525         orr z80de,z80de,#1<<28\r
6526         fetch 8\r
6527 ;@SET 4,E\r
6528 opcode_CB_E3:\r
6529         orr z80de,z80de,#1<<20\r
6530         fetch 8\r
6531 ;@SET 4,H\r
6532 opcode_CB_E4:\r
6533         orr z80hl,z80hl,#1<<28\r
6534         fetch 8\r
6535 ;@SET 4,L\r
6536 opcode_CB_E5:\r
6537         orr z80hl,z80hl,#1<<20\r
6538         fetch 8\r
6539 ;@SET 4,(HL)\r
6540 opcode_CB_E6:\r
6541         opSETmemHL 4\r
6542 ;@SET 4,A\r
6543 opcode_CB_E7:\r
6544         orr z80a,z80a,#1<<28\r
6545         fetch 8\r
6546 \r
6547 ;@SET 5,B\r
6548 opcode_CB_E8:\r
6549         orr z80bc,z80bc,#1<<29\r
6550         fetch 8\r
6551 ;@SET 5,C\r
6552 opcode_CB_E9:\r
6553         orr z80bc,z80bc,#1<<21\r
6554         fetch 8\r
6555 ;@SET 5,D\r
6556 opcode_CB_EA:\r
6557         orr z80de,z80de,#1<<29\r
6558         fetch 8\r
6559 ;@SET 5,E\r
6560 opcode_CB_EB:\r
6561         orr z80de,z80de,#1<<21\r
6562         fetch 8\r
6563 ;@SET 5,H\r
6564 opcode_CB_EC:\r
6565         orr z80hl,z80hl,#1<<29\r
6566         fetch 8\r
6567 ;@SET 5,L\r
6568 opcode_CB_ED:\r
6569         orr z80hl,z80hl,#1<<21\r
6570         fetch 8\r
6571 ;@SET 5,(HL)\r
6572 opcode_CB_EE:\r
6573         opSETmemHL 5\r
6574 ;@SET 5,A\r
6575 opcode_CB_EF:\r
6576         orr z80a,z80a,#1<<29\r
6577         fetch 8\r
6578 \r
6579 ;@SET 6,B\r
6580 opcode_CB_F0:\r
6581         orr z80bc,z80bc,#1<<30\r
6582         fetch 8\r
6583 ;@SET 6,C\r
6584 opcode_CB_F1:\r
6585         orr z80bc,z80bc,#1<<22\r
6586         fetch 8\r
6587 ;@SET 6,D\r
6588 opcode_CB_F2:\r
6589         orr z80de,z80de,#1<<30\r
6590         fetch 8\r
6591 ;@SET 6,E\r
6592 opcode_CB_F3:\r
6593         orr z80de,z80de,#1<<22\r
6594         fetch 8\r
6595 ;@SET 6,H\r
6596 opcode_CB_F4:\r
6597         orr z80hl,z80hl,#1<<30\r
6598         fetch 8\r
6599 ;@SET 6,L\r
6600 opcode_CB_F5:\r
6601         orr z80hl,z80hl,#1<<22\r
6602         fetch 8\r
6603 ;@SET 6,(HL)\r
6604 opcode_CB_F6:\r
6605         opSETmemHL 6\r
6606 ;@SET 6,A\r
6607 opcode_CB_F7:\r
6608         orr z80a,z80a,#1<<30\r
6609         fetch 8\r
6610 \r
6611 ;@SET 7,B\r
6612 opcode_CB_F8:\r
6613         orr z80bc,z80bc,#1<<31\r
6614         fetch 8\r
6615 ;@SET 7,C\r
6616 opcode_CB_F9:\r
6617         orr z80bc,z80bc,#1<<23\r
6618         fetch 8\r
6619 ;@SET 7,D\r
6620 opcode_CB_FA:\r
6621         orr z80de,z80de,#1<<31\r
6622         fetch 8\r
6623 ;@SET 7,E\r
6624 opcode_CB_FB:\r
6625         orr z80de,z80de,#1<<23\r
6626         fetch 8\r
6627 ;@SET 7,H\r
6628 opcode_CB_FC:\r
6629         orr z80hl,z80hl,#1<<31\r
6630         fetch 8\r
6631 ;@SET 7,L\r
6632 opcode_CB_FD:\r
6633         orr z80hl,z80hl,#1<<23\r
6634         fetch 8\r
6635 ;@SET 7,(HL)\r
6636 opcode_CB_FE:\r
6637         opSETmemHL 7\r
6638 ;@SET 7,A\r
6639 opcode_CB_FF:\r
6640         orr z80a,z80a,#1<<31\r
6641         fetch 8\r
6642 \r
6643 \r
6644 \r
6645 ;@##################################\r
6646 ;@##################################\r
6647 ;@###  opcodes DD  #########################\r
6648 ;@##################################\r
6649 ;@##################################\r
6650 ;@Because the DD opcodes are not a complete range from 00-FF I have\r
6651 ;@created this sub routine that will catch any undocumented ops\r
6652 ;@halt the emulator and mov the current instruction to r0\r
6653 ;@at a later stage I may change to display a text message on the screen\r
6654 opcode_DD_NF:\r
6655         eatcycles 4\r
6656         ldr pc,[opcodes,r0, lsl #2]\r
6657 ;@      mov r2,#0x10*4\r
6658 ;@      cmp r2,z80xx\r
6659 ;@      bne opcode_FD_NF\r
6660 ;@      mov r0,#0xDD00\r
6661 ;@      orr r0,r0,r1\r
6662 ;@      b end_loop\r
6663 ;@opcode_FD_NF:\r
6664 ;@      mov r0,#0xFD00\r
6665 ;@      orr r0,r0,r1\r
6666 ;@      b end_loop\r
6667 \r
6668 opcode_DD_NF2:\r
6669         fetch 23\r
6670 ;@ notaz: we don't want to deadlock here\r
6671 ;@      mov r0,#0xDD0000\r
6672 ;@      orr r0,r0,#0xCB00\r
6673 ;@      orr r0,r0,r1\r
6674 ;@      b end_loop\r
6675 \r
6676 ;@ADD IX,BC\r
6677 opcode_DD_09:\r
6678         ldr r0,[z80xx]\r
6679         opADD16 r0 z80bc\r
6680         str r0,[z80xx]\r
6681         fetch 15\r
6682 ;@ADD IX,DE\r
6683 opcode_DD_19:\r
6684         ldr r0,[z80xx]\r
6685         opADD16 r0 z80de\r
6686         str r0,[z80xx]\r
6687         fetch 15\r
6688 ;@LD IX,NN\r
6689 opcode_DD_21:\r
6690         ldrb r0,[z80pc],#1\r
6691         ldrb r1,[z80pc],#1\r
6692         orr r0,r0,r1, lsl #8\r
6693         strh r0,[z80xx,#2]\r
6694         fetch 14\r
6695 ;@LD (NN),IX\r
6696 opcode_DD_22:\r
6697         ldrb r0,[z80pc],#1\r
6698         ldrb r1,[z80pc],#1\r
6699         orr r1,r0,r1, lsl #8\r
6700         ldrh r0,[z80xx,#2]\r
6701         writemem16\r
6702         fetch 20\r
6703 ;@INC IX\r
6704 opcode_DD_23:\r
6705         ldr r0,[z80xx]\r
6706         add r0,r0,#1<<16\r
6707         str r0,[z80xx]\r
6708         fetch 10\r
6709 ;@INC I  (IX)\r
6710 opcode_DD_24:\r
6711         ldr r0,[z80xx]\r
6712         opINC8H r0\r
6713         str r0,[z80xx]\r
6714         fetch 8\r
6715 ;@DEC I  (IX)\r
6716 opcode_DD_25:\r
6717         ldr r0,[z80xx]\r
6718         opDEC8H r0\r
6719         str r0,[z80xx]\r
6720         fetch 8\r
6721 ;@LD I,N  (IX)\r
6722 opcode_DD_26:\r
6723         ldrb r0,[z80pc],#1\r
6724         strb r0,[z80xx,#3]\r
6725         fetch 11\r
6726 ;@ADD IX,IX\r
6727 opcode_DD_29:\r
6728         ldr r0,[z80xx]\r
6729         opADD16_2 r0\r
6730         str r0,[z80xx]\r
6731         fetch 15\r
6732 ;@LD IX,(NN)\r
6733 opcode_DD_2A:\r
6734         ldrb r0,[z80pc],#1\r
6735         ldrb r1,[z80pc],#1\r
6736         orr r0,r0,r1, lsl #8\r
6737         stmfd sp!,{z80xx}\r
6738         readmem16\r
6739         ldmfd sp!,{z80xx}\r
6740         strh r0,[z80xx,#2]\r
6741         fetch 20\r
6742 ;@DEC IX\r
6743 opcode_DD_2B:\r
6744         ldr r0,[z80xx]\r
6745         sub r0,r0,#1<<16\r
6746         str r0,[z80xx]\r
6747         fetch 10\r
6748 ;@INC X  (IX)\r
6749 opcode_DD_2C:\r
6750         ldr r0,[z80xx]\r
6751         opINC8L r0\r
6752         str r0,[z80xx]\r
6753         fetch 8\r
6754 ;@DEC X  (IX)\r
6755 opcode_DD_2D:\r
6756         ldr r0,[z80xx]\r
6757         opDEC8L r0\r
6758         str r0,[z80xx]\r
6759         fetch 8\r
6760 ;@LD X,N  (IX)\r
6761 opcode_DD_2E:\r
6762         ldrb r0,[z80pc],#1\r
6763         strb r0,[z80xx,#2]\r
6764         fetch 11\r
6765 ;@INC (IX+N)\r
6766 opcode_DD_34:\r
6767         ldrsb r0,[z80pc],#1\r
6768         ldr r1,[z80xx]\r
6769         add r0,r1,r0, lsl #16\r
6770         mov r0,r0,lsr #16\r
6771         stmfd sp!,{r0}  ;@ save addr\r
6772         readmem8\r
6773         opINC8b\r
6774         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6775         writemem8\r
6776         fetch 23\r
6777 ;@DEC (IX+N)\r
6778 opcode_DD_35:\r
6779         ldrsb r0,[z80pc],#1\r
6780         ldr r1,[z80xx]\r
6781         add r0,r1,r0, lsl #16\r
6782         mov r0,r0,lsr #16\r
6783         stmfd sp!,{r0}  ;@ save addr\r
6784         readmem8\r
6785         opDEC8b\r
6786         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6787         writemem8\r
6788         fetch 23\r
6789 ;@LD (IX+N),N\r
6790 opcode_DD_36:\r
6791         ldrsb r2,[z80pc],#1\r
6792         ldrb r0,[z80pc],#1\r
6793         ldr r1,[z80xx]\r
6794         add r1,r1,r2, lsl #16\r
6795         mov r1,r1,lsr #16\r
6796         writemem8\r
6797         fetch 19\r
6798 ;@ADD IX,SP\r
6799 opcode_DD_39:\r
6800         ldr r0,[z80xx]\r
6801 .if FAST_Z80SP\r
6802         ldr r2,[cpucontext,#z80sp_base]\r
6803         sub r2,z80sp,r2\r
6804         opADD16s r0 r2 16\r
6805 .else\r
6806         opADD16s r0 z80sp 16\r
6807 .endif\r
6808         str r0,[z80xx]\r
6809         fetch 15\r
6810 ;@LD B,I ( IX )\r
6811 opcode_DD_44:\r
6812         ldrb r0,[z80xx,#3]\r
6813         and z80bc,z80bc,#0xFF<<16\r
6814         orr z80bc,z80bc,r0, lsl #24\r
6815         fetch 8\r
6816 ;@LD B,X ( IX )\r
6817 opcode_DD_45:\r
6818         ldrb r0,[z80xx,#2]\r
6819         and z80bc,z80bc,#0xFF<<16\r
6820         orr z80bc,z80bc,r0, lsl #24\r
6821         fetch 8\r
6822 ;@LD B,(IX,N)\r
6823 opcode_DD_46:\r
6824         ldrsb r0,[z80pc],#1\r
6825         ldr r1,[z80xx]\r
6826         add r0,r1,r0, lsl #16\r
6827         mov r0,r0,lsr #16\r
6828         readmem8\r
6829         and z80bc,z80bc,#0xFF<<16\r
6830         orr z80bc,z80bc,r0, lsl #24\r
6831         fetch 19\r
6832 ;@LD C,I  (IX)\r
6833 opcode_DD_4C:\r
6834         ldrb r0,[z80xx,#3]\r
6835         and z80bc,z80bc,#0xFF<<24\r
6836         orr z80bc,z80bc,r0, lsl #16\r
6837         fetch 8\r
6838 ;@LD C,X  (IX)\r
6839 opcode_DD_4D:\r
6840         ldrb r0,[z80xx,#2]\r
6841         and z80bc,z80bc,#0xFF<<24\r
6842         orr z80bc,z80bc,r0, lsl #16\r
6843         fetch 8\r
6844 ;@LD C,(IX,N)\r
6845 opcode_DD_4E:\r
6846         ldrsb r0,[z80pc],#1\r
6847         ldr r1,[z80xx]\r
6848         add r0,r1,r0, lsl #16\r
6849         mov r0,r0,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,r1,r0, lsl #16\r
6872         mov r0,r0,lsr #16\r
6873         readmem8\r
6874         and z80de,z80de,#0xFF<<16\r
6875         orr z80de,z80de,r0, lsl #24\r
6876         fetch 19\r
6877 ;@LD E,I  (IX)\r
6878 opcode_DD_5C:\r
6879         ldrb r0,[z80xx,#3]\r
6880         and z80de,z80de,#0xFF<<24\r
6881         orr z80de,z80de,r0, lsl #16\r
6882         fetch 8\r
6883 ;@LD E,X  (IX)\r
6884 opcode_DD_5D:\r
6885         ldrb r0,[z80xx,#2]\r
6886         and z80de,z80de,#0xFF<<24\r
6887         orr z80de,z80de,r0, lsl #16\r
6888         fetch 8\r
6889 ;@LD E,(IX,N)\r
6890 opcode_DD_5E:\r
6891         ldrsb r0,[z80pc],#1\r
6892         ldr r1,[z80xx]\r
6893         add r0,r1,r0, lsl #16\r
6894         mov r0,r0,lsr #16\r
6895         readmem8\r
6896         and z80de,z80de,#0xFF<<24\r
6897         orr z80de,z80de,r0, lsl #16\r
6898         fetch 19\r
6899 ;@LD I,B  (IX)\r
6900 opcode_DD_60:\r
6901         mov r0,z80bc,lsr#24\r
6902         strb r0,[z80xx,#3]\r
6903         fetch 8\r
6904 ;@LD I,C  (IX)\r
6905 opcode_DD_61:\r
6906         mov r0,z80bc,lsr#16\r
6907         strb r0,[z80xx,#3]\r
6908         fetch 8\r
6909 ;@LD I,D  (IX)\r
6910 opcode_DD_62:\r
6911         mov r0,z80de,lsr#24\r
6912         strb r0,[z80xx,#3]\r
6913         fetch 8\r
6914 ;@LD I,E  (IX)\r
6915 opcode_DD_63:\r
6916         mov r0,z80de,lsr#16\r
6917         strb r0,[z80xx,#3]\r
6918         fetch 8\r
6919 ;@LD I,I  (IX)\r
6920 opcode_DD_64:\r
6921         fetch 8\r
6922 ;@LD I,X  (IX)\r
6923 opcode_DD_65:\r
6924         ldrb r0,[z80xx,#2]\r
6925         strb r0,[z80xx,#3]\r
6926         fetch 8\r
6927 ;@LD H,(IX,N)\r
6928 opcode_DD_66:\r
6929         ldrsb r0,[z80pc],#1\r
6930         ldr r1,[z80xx]\r
6931         add r0,r1,r0, lsl #16\r
6932         mov r0,r0,lsr #16\r
6933         readmem8\r
6934         and z80hl,z80hl,#0xFF<<16\r
6935         orr z80hl,z80hl,r0, lsl #24\r
6936         fetch 19\r
6937 ;@LD I,A  (IX)\r
6938 opcode_DD_67:\r
6939         mov r0,z80a,lsr#24\r
6940         strb r0,[z80xx,#3]\r
6941         fetch 8\r
6942 ;@LD X,B  (IX)\r
6943 opcode_DD_68:\r
6944         mov r0,z80bc,lsr#24\r
6945         strb r0,[z80xx,#2]\r
6946         fetch 8\r
6947 ;@LD X,C  (IX)\r
6948 opcode_DD_69:\r
6949         mov r0,z80bc,lsr#16\r
6950         strb r0,[z80xx,#2]\r
6951         fetch 8\r
6952 ;@LD X,D  (IX)\r
6953 opcode_DD_6A:\r
6954         mov r0,z80de,lsr#24\r
6955         strb r0,[z80xx,#2]\r
6956         fetch 8\r
6957 ;@LD X,E  (IX)\r
6958 opcode_DD_6B:\r
6959         mov r0,z80de,lsr#16\r
6960         strb r0,[z80xx,#2]\r
6961         fetch 8\r
6962 ;@LD X,I  (IX)\r
6963 opcode_DD_6C:\r
6964         ldrb r0,[z80xx,#3]\r
6965         strb r0,[z80xx,#2]\r
6966         fetch 8\r
6967 ;@LD X,X  (IX)\r
6968 opcode_DD_6D:\r
6969         fetch 8\r
6970 ;@LD L,(IX,N)\r
6971 opcode_DD_6E:\r
6972         ldrsb r0,[z80pc],#1\r
6973         ldr r1,[z80xx]\r
6974         add r0,r1,r0, lsl #16\r
6975         mov r0,r0,lsr #16\r
6976         readmem8\r
6977         and z80hl,z80hl,#0xFF<<24\r
6978         orr z80hl,z80hl,r0, lsl #16\r
6979         fetch 19\r
6980 ;@LD X,A  (IX)\r
6981 opcode_DD_6F:\r
6982         mov r0,z80a,lsr#24\r
6983         strb r0,[z80xx,#2]\r
6984         fetch 8\r
6985 \r
6986 ;@LD (IX,N),B\r
6987 opcode_DD_70:\r
6988         ldrsb r0,[z80pc],#1\r
6989         ldr r1,[z80xx]\r
6990         add r1,r1,r0, lsl #16\r
6991         mov r1,r1,lsr #16\r
6992         mov r0,z80bc, lsr #24\r
6993         writemem8\r
6994         fetch 19\r
6995 ;@LD (IX,N),C\r
6996 opcode_DD_71:\r
6997         ldrsb r0,[z80pc],#1\r
6998         ldr r1,[z80xx]\r
6999         add r1,r1,r0, lsl #16\r
7000         mov r1,r1,lsr #16\r
7001         mov r0,z80bc, lsr #16\r
7002         and r0,r0,#0xFF\r
7003         writemem8\r
7004         fetch 19\r
7005 ;@LD (IX,N),D\r
7006 opcode_DD_72:\r
7007         ldrsb r0,[z80pc],#1\r
7008         ldr r1,[z80xx]\r
7009         add r1,r1,r0, lsl #16\r
7010         mov r1,r1,lsr #16\r
7011         mov r0,z80de, lsr #24\r
7012         writemem8\r
7013         fetch 19\r
7014 ;@LD (IX,N),E\r
7015 opcode_DD_73:\r
7016         ldrsb r0,[z80pc],#1\r
7017         ldr r1,[z80xx]\r
7018         add r1,r1,r0, lsl #16\r
7019         mov r1,r1,lsr #16\r
7020         mov r0,z80de, lsr #16\r
7021         and r0,r0,#0xFF\r
7022         writemem8\r
7023         fetch 19\r
7024 ;@LD (IX,N),H\r
7025 opcode_DD_74:\r
7026         ldrsb r0,[z80pc],#1\r
7027         ldr r1,[z80xx]\r
7028         add r1,r1,r0, lsl #16\r
7029         mov r1,r1,lsr #16\r
7030         mov r0,z80hl, lsr #24\r
7031         writemem8\r
7032         fetch 19\r
7033 ;@LD (IX,N),L\r
7034 opcode_DD_75:\r
7035         ldrsb r0,[z80pc],#1\r
7036         ldr r1,[z80xx]\r
7037         add r1,r1,r0, lsl #16\r
7038         mov r1,r1,lsr #16\r
7039         mov r0,z80hl, lsr #16\r
7040         and r0,r0,#0xFF\r
7041         writemem8\r
7042         fetch 19\r
7043 ;@LD (IX,N),A\r
7044 opcode_DD_77:\r
7045         ldrsb r0,[z80pc],#1\r
7046         ldr r1,[z80xx]\r
7047         add r1,r1,r0, lsl #16\r
7048         mov r1,r1,lsr #16\r
7049         mov r0,z80a, lsr #24\r
7050         writemem8\r
7051         fetch 19\r
7052 \r
7053 ;@LD A,I  from (IX)\r
7054 opcode_DD_7C:\r
7055         ldrb r0,[z80xx,#3]\r
7056         mov z80a,r0, lsl #24\r
7057         fetch 8\r
7058 ;@LD A,X  from (IX)\r
7059 opcode_DD_7D:\r
7060         ldrb r0,[z80xx,#2]\r
7061         mov z80a,r0, lsl #24\r
7062         fetch 8\r
7063 ;@LD A,(IX,N)\r
7064 opcode_DD_7E:\r
7065         ldrsb r0,[z80pc],#1\r
7066         ldr r1,[z80xx]\r
7067         add r0,r1,r0, lsl #16\r
7068         mov r0,r0,lsr #16\r
7069         readmem8\r
7070         mov z80a,r0, lsl #24\r
7071         fetch 19\r
7072 \r
7073 ;@ADD A,I  ( IX)\r
7074 opcode_DD_84:\r
7075         ldrb r0,[z80xx,#3]\r
7076         opADDb\r
7077         fetch 8\r
7078 ;@ADD A,X  ( IX)\r
7079 opcode_DD_85:\r
7080         ldrb r0,[z80xx,#2]\r
7081         opADDb\r
7082         fetch 8\r
7083 ;@ADD A,(IX+N)\r
7084 opcode_DD_86:\r
7085         ldrsb r0,[z80pc],#1\r
7086         ldr r1,[z80xx]\r
7087         add r0,r1,r0, lsl #16\r
7088         mov r0,r0,lsr #16\r
7089         readmem8\r
7090         opADDb\r
7091         fetch 19\r
7092 \r
7093 ;@ADC A,I  (IX)\r
7094 opcode_DD_8C:\r
7095         ldrb r0,[z80xx,#3]\r
7096         opADCb\r
7097         fetch 8\r
7098 ;@ADC A,X  (IX)\r
7099 opcode_DD_8D:\r
7100         ldrb r0,[z80xx,#2]\r
7101         opADCb\r
7102         fetch 8\r
7103 ;@ADC A,(IX+N)\r
7104 opcode_DD_8E:\r
7105         ldrsb r0,[z80pc],#1\r
7106         ldr r1,[z80xx]\r
7107         add r0,r1,r0, lsl #16\r
7108         mov r0,r0,lsr #16\r
7109         readmem8\r
7110         opADCb\r
7111         fetch 19\r
7112 \r
7113 ;@SUB A,I  (IX)\r
7114 opcode_DD_94:\r
7115         ldrb r0,[z80xx,#3]\r
7116         opSUBb\r
7117         fetch 8\r
7118 ;@SUB A,X  (IX)\r
7119 opcode_DD_95:\r
7120         ldrb r0,[z80xx,#2]\r
7121         opSUBb\r
7122         fetch 8\r
7123 ;@SUB A,(IX+N)\r
7124 opcode_DD_96:\r
7125         ldrsb r0,[z80pc],#1\r
7126         ldr r1,[z80xx]\r
7127         add r0,r1,r0, lsl #16\r
7128         mov r0,r0,lsr #16\r
7129         readmem8\r
7130         opSUBb\r
7131         fetch 19\r
7132 \r
7133 ;@SBC A,I  (IX)\r
7134 opcode_DD_9C:\r
7135         ldrb r0,[z80xx,#3]\r
7136         opSBCb\r
7137         fetch 8\r
7138 ;@SBC A,X  (IX)\r
7139 opcode_DD_9D:\r
7140         ldrb r0,[z80xx,#2]\r
7141         opSBCb\r
7142         fetch 8\r
7143 ;@SBC A,(IX+N)\r
7144 opcode_DD_9E:\r
7145         ldrsb r0,[z80pc],#1\r
7146         ldr r1,[z80xx]\r
7147         add r0,r1,r0, lsl #16\r
7148         mov r0,r0,lsr #16\r
7149         readmem8\r
7150         opSBCb\r
7151         fetch 19\r
7152 \r
7153 ;@AND I  (IX)\r
7154 opcode_DD_A4:\r
7155         ldrb r0,[z80xx,#3]\r
7156         opANDb\r
7157         fetch 8\r
7158 ;@AND X  (IX)\r
7159 opcode_DD_A5:\r
7160         ldrb r0,[z80xx,#2]\r
7161         opANDb\r
7162         fetch 8\r
7163 ;@AND (IX+N)\r
7164 opcode_DD_A6:\r
7165         ldrsb r0,[z80pc],#1\r
7166         ldr r1,[z80xx]\r
7167         add r0,r1,r0, lsl #16\r
7168         mov r0,r0,lsr #16\r
7169         readmem8\r
7170         opANDb\r
7171         fetch 19\r
7172 \r
7173 ;@XOR I  (IX)\r
7174 opcode_DD_AC:\r
7175         ldrb r0,[z80xx,#3]\r
7176         opXORb\r
7177         fetch 8\r
7178 ;@XOR X  (IX)\r
7179 opcode_DD_AD:\r
7180         ldrb r0,[z80xx,#2]\r
7181         opXORb\r
7182         fetch 8\r
7183 ;@XOR (IX+N)\r
7184 opcode_DD_AE:\r
7185         ldrsb r0,[z80pc],#1\r
7186         ldr r1,[z80xx]\r
7187         add r0,r1,r0, lsl #16\r
7188         mov r0,r0,lsr #16\r
7189         readmem8\r
7190         opXORb\r
7191         fetch 19\r
7192 \r
7193 ;@OR I  (IX)\r
7194 opcode_DD_B4:\r
7195         ldrb r0,[z80xx,#3]\r
7196         opORb\r
7197         fetch 8\r
7198 ;@OR X  (IX)\r
7199 opcode_DD_B5:\r
7200         ldrb r0,[z80xx,#2]\r
7201         opORb\r
7202         fetch 8\r
7203 ;@OR (IX+N)\r
7204 opcode_DD_B6:\r
7205         ldrsb r0,[z80pc],#1\r
7206         ldr r1,[z80xx]\r
7207         add r0,r1,r0, lsl #16\r
7208         mov r0,r0,lsr #16\r
7209         readmem8\r
7210         opORb\r
7211         fetch 19\r
7212 \r
7213 ;@CP I  (IX)\r
7214 opcode_DD_BC:\r
7215         ldrb r0,[z80xx,#3]\r
7216         opCPb\r
7217         fetch 8\r
7218 ;@CP X  (IX)\r
7219 opcode_DD_BD:\r
7220         ldrb r0,[z80xx,#2]\r
7221         opCPb\r
7222         fetch 8\r
7223 ;@CP (IX+N)\r
7224 opcode_DD_BE:\r
7225         ldrsb r0,[z80pc],#1\r
7226         ldr r1,[z80xx]\r
7227         add r0,r1,r0, lsl #16\r
7228         mov r0,r0,lsr #16\r
7229         readmem8\r
7230         opCPb\r
7231         fetch 19\r
7232 \r
7233 \r
7234 opcodes_DD_CB_LOCAL: .word opcodes_DD_CB\r
7235 opcode_DD_CB:\r
7236 ;@Looks up the opcode on the opcodes_DD_CB table and then \r
7237 ;@moves the PC to the location of the subroutine\r
7238         ldrsb r0,[z80pc],#1\r
7239         ldr r1,[z80xx]\r
7240         add r0,r1,r0, lsl #16\r
7241         mov r0,r0,lsr #16\r
7242 \r
7243         ldrb r1,[z80pc],#1\r
7244         ldr pc,[pc,r1, lsl #2]\r
7245                 .word 0x00\r
7246 opcodes_DD_CB:\r
7247                 .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
7248                 .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
7249                 .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
7250                 .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
7251                 .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
7252                 .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
7253                 .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
7254                 .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
7255                 .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
7256                 .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
7257                 .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
7258                 .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
7259                 .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
7260                 .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
7261                 .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
7262                 .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
7263                 .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
7264                 .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
7265                 .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
7266                 .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
7267                 .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
7268                 .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
7269                 .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
7270                 .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
7271                 .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
7272                 .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
7273                 .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
7274                 .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
7275                 .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
7276                 .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
7277                 .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
7278                 .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
7279 \r
7280 ;@RLC (IX+N) \r
7281 opcode_DD_CB_06:\r
7282         stmfd sp!,{r0}          ;@ save addr\r
7283         readmem8\r
7284         opRLCb\r
7285         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7286         writemem8\r
7287         fetch 23\r
7288 ;@RRC (IX+N) \r
7289 opcode_DD_CB_0E:\r
7290         stmfd sp!,{r0}          ;@ save addr\r
7291         readmem8\r
7292         opRRCb\r
7293         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7294         writemem8\r
7295         fetch 23\r
7296 ;@RL (IX+N) \r
7297 opcode_DD_CB_16:\r
7298         stmfd sp!,{r0}          ;@ save addr\r
7299         readmem8\r
7300         opRLb\r
7301         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7302         writemem8\r
7303         fetch 23\r
7304 ;@RR (IX+N) \r
7305 opcode_DD_CB_1E:\r
7306         stmfd sp!,{r0}          ;@ save addr \r
7307         readmem8\r
7308         opRRb\r
7309         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7310         writemem8\r
7311         fetch 23\r
7312 \r
7313 ;@SLA (IX+N) \r
7314 opcode_DD_CB_26:\r
7315         stmfd sp!,{r0}          ;@ save addr \r
7316         readmem8\r
7317         opSLAb\r
7318         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7319         writemem8\r
7320         fetch 23\r
7321 ;@SRA (IX+N) \r
7322 opcode_DD_CB_2E:\r
7323         stmfd sp!,{r0}          ;@ save addr \r
7324         readmem8\r
7325         opSRAb\r
7326         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7327         writemem8\r
7328         fetch 23\r
7329 ;@SLL (IX+N) \r
7330 opcode_DD_CB_36:\r
7331         stmfd sp!,{r0}          ;@ save addr \r
7332         readmem8\r
7333         opSLLb\r
7334         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7335         writemem8\r
7336         fetch 23\r
7337 ;@SRL (IX+N)\r
7338 opcode_DD_CB_3E:\r
7339         stmfd sp!,{r0}          ;@ save addr \r
7340         readmem8\r
7341         opSRLb\r
7342         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7343         writemem8\r
7344         fetch 23\r
7345 \r
7346 ;@BIT 0,(IX+N) \r
7347 opcode_DD_CB_46:\r
7348         readmem8\r
7349         opBITb 0\r
7350         fetch 20\r
7351 ;@BIT 1,(IX+N) \r
7352 opcode_DD_CB_4E:\r
7353         readmem8\r
7354         opBITb 1\r
7355         fetch 20\r
7356 ;@BIT 2,(IX+N) \r
7357 opcode_DD_CB_56:\r
7358         readmem8\r
7359         opBITb 2\r
7360         fetch 20\r
7361 ;@BIT 3,(IX+N) \r
7362 opcode_DD_CB_5E:\r
7363         readmem8\r
7364         opBITb 3\r
7365         fetch 20\r
7366 ;@BIT 4,(IX+N) \r
7367 opcode_DD_CB_66:\r
7368         readmem8\r
7369         opBITb 4\r
7370         fetch 20\r
7371 ;@BIT 5,(IX+N) \r
7372 opcode_DD_CB_6E:\r
7373         readmem8\r
7374         opBITb 5\r
7375         fetch 20\r
7376 ;@BIT 6,(IX+N) \r
7377 opcode_DD_CB_76:\r
7378         readmem8\r
7379         opBITb 6\r
7380         fetch 20\r
7381 ;@BIT 7,(IX+N) \r
7382 opcode_DD_CB_7E:\r
7383         readmem8\r
7384         opBIT7b\r
7385         fetch 20\r
7386 ;@RES 0,(IX+N) \r
7387 opcode_DD_CB_86:\r
7388         opRESmem 0\r
7389 ;@RES 1,(IX+N) \r
7390 opcode_DD_CB_8E:\r
7391         opRESmem 1\r
7392 ;@RES 2,(IX+N) \r
7393 opcode_DD_CB_96:\r
7394         opRESmem 2\r
7395 ;@RES 3,(IX+N) \r
7396 opcode_DD_CB_9E:\r
7397         opRESmem 3\r
7398 ;@RES 4,(IX+N) \r
7399 opcode_DD_CB_A6:\r
7400         opRESmem 4\r
7401 ;@RES 5,(IX+N) \r
7402 opcode_DD_CB_AE:\r
7403         opRESmem 5\r
7404 ;@RES 6,(IX+N) \r
7405 opcode_DD_CB_B6:\r
7406         opRESmem 6\r
7407 ;@RES 7,(IX+N) \r
7408 opcode_DD_CB_BE:\r
7409         opRESmem 7\r
7410 \r
7411 ;@SET 0,(IX+N) \r
7412 opcode_DD_CB_C6:\r
7413         opSETmem 0\r
7414 ;@SET 1,(IX+N) \r
7415 opcode_DD_CB_CE:\r
7416         opSETmem 1\r
7417 ;@SET 2,(IX+N) \r
7418 opcode_DD_CB_D6:\r
7419         opSETmem 2\r
7420 ;@SET 3,(IX+N) \r
7421 opcode_DD_CB_DE:\r
7422         opSETmem 3\r
7423 ;@SET 4,(IX+N) \r
7424 opcode_DD_CB_E6:\r
7425         opSETmem 4\r
7426 ;@SET 5,(IX+N) \r
7427 opcode_DD_CB_EE:\r
7428         opSETmem 5\r
7429 ;@SET 6,(IX+N) \r
7430 opcode_DD_CB_F6:\r
7431         opSETmem 6\r
7432 ;@SET 7,(IX+N) \r
7433 opcode_DD_CB_FE:\r
7434         opSETmem 7\r
7435 \r
7436 \r
7437 \r
7438 ;@POP IX\r
7439 opcode_DD_E1:\r
7440 .if FAST_Z80SP\r
7441         opPOP\r
7442 .else\r
7443         mov r0,z80sp\r
7444         stmfd sp!,{z80xx}\r
7445         readmem16\r
7446         ldmfd sp!,{z80xx}\r
7447         add z80sp,z80sp,#2\r
7448 .endif\r
7449         strh r0,[z80xx,#2]\r
7450         fetch 14\r
7451 ;@EX (SP),IX\r
7452 opcode_DD_E3:\r
7453 .if FAST_Z80SP\r
7454         ldrb r0,[z80sp]\r
7455         ldrb r1,[z80sp,#1]\r
7456         orr r2,r0,r1, lsl #8\r
7457         ldrh r1,[z80xx,#2]\r
7458         mov r0,r1, lsr #8\r
7459         strb r0,[z80sp,#1]\r
7460         strb r1,[z80sp]\r
7461         strh r2,[z80xx,#2]\r
7462 .else\r
7463         mov r0,z80sp\r
7464         stmfd sp!,{z80xx}\r
7465         readmem16\r
7466         ldmfd sp!,{z80xx}\r
7467         mov r2,r0\r
7468         ldrh r0,[z80xx,#2]\r
7469         strh r2,[z80xx,#2]\r
7470         mov r1,z80sp\r
7471         writemem16\r
7472 .endif\r
7473         fetch 23\r
7474 ;@PUSH IX\r
7475 opcode_DD_E5:\r
7476         ldr r2,[z80xx]\r
7477         opPUSHreg r2\r
7478         fetch 15\r
7479 ;@JP (IX)\r
7480 opcode_DD_E9:\r
7481         ldrh r0,[z80xx,#2]\r
7482         rebasepc\r
7483         fetch 8\r
7484 ;@LD SP,IX\r
7485 opcode_DD_F9:\r
7486 .if FAST_Z80SP\r
7487         ldrh r0,[z80xx,#2]\r
7488         rebasesp\r
7489 .else\r
7490         ldrh z80sp,[z80xx,#2]\r
7491 .endif\r
7492         fetch 10\r
7493 \r
7494 ;@##################################\r
7495 ;@##################################\r
7496 ;@###  opcodes ED  #########################\r
7497 ;@##################################\r
7498 ;@##################################\r
7499 \r
7500 opcode_ED_NF:\r
7501         fetch 8\r
7502 ;@      ldrb r0,[z80pc],#1\r
7503 ;@      ldr pc,[opcodes,r0, lsl #2]\r
7504 ;@      mov r0,#0xED00\r
7505 ;@      orr r0,r0,r1\r
7506 ;@      b end_loop\r
7507 \r
7508 ;@IN B,(C)\r
7509 opcode_ED_40:\r
7510         opIN_C\r
7511         and z80bc,z80bc,#0xFF<<16\r
7512         orr z80bc,z80bc,r0, lsl #24\r
7513         sub r1,opcodes,#0x100\r
7514         ldrb r0,[r1,r0]\r
7515         and z80f,z80f,#1<<CFlag\r
7516         orr z80f,z80f,r0\r
7517         fetch 12\r
7518 ;@OUT (C),B\r
7519 opcode_ED_41:\r
7520         mov r1,z80bc, lsr #24\r
7521         opOUT_C\r
7522         fetch 12\r
7523 \r
7524 ;@SBC HL,BC\r
7525 opcode_ED_42:\r
7526         opSBC16 z80bc\r
7527 \r
7528 ;@LD (NN),BC\r
7529 opcode_ED_43:\r
7530         ldrb r0,[z80pc],#1\r
7531         ldrb r1,[z80pc],#1\r
7532         orr r1,r0,r1, lsl #8\r
7533         mov r0,z80bc, lsr #16\r
7534         writemem16\r
7535         fetch 20\r
7536 ;@NEG\r
7537 opcode_ED_44:\r
7538         rsbs z80a,z80a,#0\r
7539         mrs z80f,cpsr\r
7540         mov z80f,z80f,lsr#28                                    ;@S,Z,V&C\r
7541         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@invert C and set n.\r
7542         tst z80a,#0x0F000000                                    ;@H, correct\r
7543         orrne z80f,z80f,#1<<HFlag\r
7544         fetch 8\r
7545  \r
7546 ;@RETN, moved to ED_4D\r
7547 ;@opcode_ED_45:\r
7548 \r
7549 ;@IM 0\r
7550 opcode_ED_46:\r
7551         strb z80a,[cpucontext,#z80im]\r
7552         fetch 8\r
7553 ;@LD I,A\r
7554 opcode_ED_47:\r
7555         str z80a,[cpucontext,#z80i]\r
7556         fetch 9\r
7557 ;@IN C,(C)\r
7558 opcode_ED_48:\r
7559         opIN_C\r
7560         and z80bc,z80bc,#0xFF<<24\r
7561         orr z80bc,z80bc,r0, lsl #16\r
7562         sub r1,opcodes,#0x100\r
7563         ldrb r0,[r1,r0]\r
7564         and z80f,z80f,#1<<CFlag\r
7565         orr z80f,z80f,r0\r
7566         fetch 12\r
7567 ;@OUT (C),C\r
7568 opcode_ED_49:\r
7569         mov r0,z80bc, lsr #16\r
7570         and r1,r0,#0xFF\r
7571         opOUT\r
7572         fetch 12\r
7573 ;@ADC HL,BC\r
7574 opcode_ED_4A:\r
7575         opADC16 z80bc\r
7576 ;@LD BC,(NN)\r
7577 opcode_ED_4B:\r
7578         ldrb r0,[z80pc],#1\r
7579         ldrb r1,[z80pc],#1\r
7580         orr r0,r0,r1, lsl #8\r
7581         readmem16\r
7582         mov z80bc,r0, lsl #16\r
7583         fetch 20\r
7584 \r
7585 ;@RETN\r
7586 opcode_ED_45:\r
7587 ;@RETI\r
7588 opcode_ED_4D:\r
7589         ldrb r0,[cpucontext,#z80if]\r
7590         tst r0,#Z80_IF2\r
7591         orrne r0,r0,#Z80_IF1\r
7592         biceq r0,r0,#Z80_IF1\r
7593         strb r0,[cpucontext,#z80if]\r
7594     opPOP\r
7595         rebasepc\r
7596         fetch 14\r
7597 \r
7598 ;@LD R,A\r
7599 opcode_ED_4F:\r
7600         mov r0,z80a,lsr#24\r
7601         strb r0,[cpucontext,#z80r]\r
7602         fetch 9\r
7603 \r
7604 ;@IN D,(C)\r
7605 opcode_ED_50:\r
7606         opIN_C\r
7607         and z80de,z80de,#0xFF<<16\r
7608         orr z80de,z80de,r0, lsl #24\r
7609         sub r1,opcodes,#0x100\r
7610         ldrb r0,[r1,r0]\r
7611         and z80f,z80f,#1<<CFlag\r
7612         orr z80f,z80f,r0\r
7613         fetch 12\r
7614 ;@OUT (C),D\r
7615 opcode_ED_51:\r
7616         mov r1,z80de, lsr #24\r
7617         opOUT_C\r
7618         fetch 12\r
7619 ;@SBC HL,DE\r
7620 opcode_ED_52:\r
7621         opSBC16 z80de\r
7622 ;@LD (NN),DE\r
7623 opcode_ED_53:\r
7624         ldrb r0,[z80pc],#1\r
7625         ldrb r1,[z80pc],#1\r
7626         orr r1,r0,r1, lsl #8\r
7627         mov r0,z80de, lsr #16\r
7628         writemem16\r
7629         fetch 20\r
7630 ;@IM 1\r
7631 opcode_ED_56:\r
7632         mov r0,#1\r
7633         strb r0,[cpucontext,#z80im]\r
7634         fetch 8\r
7635 ;@LD A,I\r
7636 opcode_ED_57:\r
7637         ldr z80a,[cpucontext,#z80i]\r
7638         tst z80a,#0xFF000000\r
7639         and z80f,z80f,#(1<<CFlag)\r
7640         orreq z80f,z80f,#(1<<ZFlag)\r
7641         orrmi z80f,z80f,#(1<<SFlag)\r
7642         ldrb r0,[cpucontext,#z80if]\r
7643         tst r0,#Z80_IF2\r
7644         orrne z80f,z80f,#(1<<VFlag)\r
7645         fetch 9\r
7646 ;@IN E,(C)\r
7647 opcode_ED_58:\r
7648         opIN_C\r
7649         and z80de,z80de,#0xFF<<24\r
7650         orr z80de,z80de,r0, lsl #16\r
7651         sub r1,opcodes,#0x100\r
7652         ldrb r0,[r1,r0]\r
7653         and z80f,z80f,#1<<CFlag\r
7654         orr z80f,z80f,r0\r
7655         fetch 12\r
7656 ;@OUT (C),E\r
7657 opcode_ED_59:\r
7658         mov r1,z80de, lsr #16\r
7659         and r1,r1,#0xFF\r
7660         opOUT_C\r
7661         fetch 12\r
7662 ;@ADC HL,DE\r
7663 opcode_ED_5A:\r
7664         opADC16 z80de\r
7665 ;@LD DE,(NN)\r
7666 opcode_ED_5B:\r
7667         ldrb r0,[z80pc],#1\r
7668         ldrb r1,[z80pc],#1\r
7669         orr r0,r0,r1, lsl #8\r
7670         readmem16\r
7671         mov z80de,r0, lsl #16\r
7672         fetch 20\r
7673 ;@IM 2\r
7674 opcode_ED_5E:\r
7675         mov r0,#2\r
7676         strb r0,[cpucontext,#z80im]\r
7677         fetch 8\r
7678 ;@LD A,R\r
7679 opcode_ED_5F:\r
7680         ldrb r0,[cpucontext,#z80r]\r
7681         and r0,r0,#0x80\r
7682         rsb r1,z80_icount,#0\r
7683         and r1,r1,#0x7F\r
7684         orr r0,r0,r1\r
7685         movs z80a,r0, lsl #24\r
7686         and z80f,z80f,#1<<CFlag\r
7687         orrmi z80f,z80f,#(1<<SFlag)\r
7688         orreq z80f,z80f,#(1<<ZFlag)\r
7689         ldrb r0,[cpucontext,#z80if]\r
7690         tst r0,#Z80_IF2\r
7691         orrne z80f,z80f,#(1<<VFlag)\r
7692         fetch 9\r
7693 ;@IN H,(C)\r
7694 opcode_ED_60:\r
7695         opIN_C\r
7696         and z80hl,z80hl,#0xFF<<16\r
7697         orr z80hl,z80hl,r0, lsl #24\r
7698         sub r1,opcodes,#0x100\r
7699         ldrb r0,[r1,r0]\r
7700         and z80f,z80f,#1<<CFlag\r
7701         orr z80f,z80f,r0\r
7702         fetch 12\r
7703 ;@OUT (C),H\r
7704 opcode_ED_61:\r
7705         mov r1,z80hl, lsr #24\r
7706         opOUT_C\r
7707         fetch 12\r
7708 ;@SBC HL,HL\r
7709 opcode_ED_62:\r
7710         opSBC16HL\r
7711 ;@RRD\r
7712 opcode_ED_67:\r
7713         readmem8HL\r
7714         mov r1,r0,ror#4\r
7715         orr r0,r1,z80a,lsr#20\r
7716         bic z80a,z80a,#0x0F000000\r
7717         orr z80a,z80a,r1,lsr#4\r
7718         writemem8HL\r
7719         sub r1,opcodes,#0x100\r
7720         ldrb r0,[r1,z80a, lsr #24]\r
7721         and z80f,z80f,#1<<CFlag\r
7722         orr z80f,z80f,r0\r
7723         fetch 18\r
7724 ;@IN L,(C)\r
7725 opcode_ED_68:\r
7726         opIN_C\r
7727         and z80hl,z80hl,#0xFF<<24\r
7728         orr z80hl,z80hl,r0, lsl #16\r
7729         and z80f,z80f,#1<<CFlag\r
7730         sub r1,opcodes,#0x100\r
7731         ldrb r0,[r1,r0]\r
7732         orr z80f,z80f,r0\r
7733         fetch 12\r
7734 ;@OUT (C),L\r
7735 opcode_ED_69:\r
7736         mov r1,z80hl, lsr #16\r
7737         and r1,r1,#0xFF\r
7738         opOUT_C\r
7739         fetch 12\r
7740 ;@ADC HL,HL\r
7741 opcode_ED_6A:\r
7742         opADC16HL\r
7743 ;@RLD\r
7744 opcode_ED_6F:\r
7745         readmem8HL\r
7746         orr r0,r0,z80a,lsl#4\r
7747         mov r0,r0,ror#28\r
7748         and z80a,z80a,#0xF0000000\r
7749         orr z80a,z80a,r0,lsl#16\r
7750         and z80a,z80a,#0xFF000000\r
7751         writemem8HL\r
7752         sub r1,opcodes,#0x100\r
7753         ldrb r0,[r1,z80a, lsr #24]\r
7754         and z80f,z80f,#1<<CFlag\r
7755         orr z80f,z80f,r0\r
7756         fetch 18\r
7757 ;@IN F,(C)\r
7758 opcode_ED_70:\r
7759         opIN_C\r
7760         and z80f,z80f,#1<<CFlag\r
7761         sub r1,opcodes,#0x100\r
7762         ldrb r0,[r1,r0]\r
7763         orr z80f,z80f,r0\r
7764         fetch 12\r
7765 ;@OUT (C),0\r
7766 opcode_ED_71:\r
7767         mov r1,#0\r
7768         opOUT_C\r
7769         fetch 12\r
7770 \r
7771 ;@SBC HL,SP\r
7772 opcode_ED_72:\r
7773 .if FAST_Z80SP\r
7774         ldr r0,[cpucontext,#z80sp_base]\r
7775         sub r0,z80sp,r0\r
7776         mov r0, r0, lsl #16\r
7777 .else\r
7778         mov r0,z80sp,lsl#16\r
7779 .endif\r
7780         opSBC16 r0\r
7781 ;@LD (NN),SP\r
7782 opcode_ED_73:\r
7783         ldrb r0,[z80pc],#1\r
7784         ldrb r1,[z80pc],#1\r
7785         orr r1,r0,r1, lsl #8\r
7786 .if FAST_Z80SP\r
7787         ldr r0,[cpucontext,#z80sp_base]\r
7788         sub r0,z80sp,r0\r
7789 .else\r
7790         mov r0,z80sp\r
7791 .endif\r
7792         writemem16\r
7793         fetch 16\r
7794 ;@IN A,(C)\r
7795 opcode_ED_78:\r
7796         opIN_C\r
7797         mov z80a,r0, lsl #24\r
7798         and z80f,z80f,#1<<CFlag\r
7799         sub r1,opcodes,#0x100\r
7800         ldrb r0,[r1,r0]\r
7801         orr z80f,z80f,r0\r
7802         fetch 12\r
7803 ;@OUT (C),A\r
7804 opcode_ED_79:\r
7805         mov r1,z80a, lsr #24\r
7806         opOUT_C\r
7807         fetch 12\r
7808 ;@ADC HL,SP\r
7809 opcode_ED_7A:\r
7810 .if FAST_Z80SP\r
7811         ldr r0,[cpucontext,#z80sp_base]\r
7812         sub r0,z80sp,r0\r
7813         mov r0, r0, lsl #16\r
7814 .else\r
7815         mov r0,z80sp,lsl#16\r
7816 .endif\r
7817         opADC16 r0\r
7818 ;@LD SP,(NN)\r
7819 opcode_ED_7B:\r
7820         ldrb r0,[z80pc],#1\r
7821         ldrb r1,[z80pc],#1\r
7822         orr r0,r0,r1, lsl #8\r
7823         readmem16\r
7824 .if FAST_Z80SP\r
7825         rebasesp\r
7826 .else\r
7827         mov z80sp,r0\r
7828 .endif\r
7829         fetch 20\r
7830 ;@LDI\r
7831 opcode_ED_A0:\r
7832         copymem8HL_DE\r
7833         add z80hl,z80hl,#1<<16\r
7834         add z80de,z80de,#1<<16\r
7835         subs z80bc,z80bc,#1<<16\r
7836         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7837         orrne z80f,z80f,#1<<VFlag\r
7838         fetch 16\r
7839 ;@CPI\r
7840 opcode_ED_A1:\r
7841         readmem8HL\r
7842         add z80hl,z80hl,#0x00010000\r
7843         mov r1,z80a,lsl#4\r
7844         cmp z80a,r0,lsl#24\r
7845         and z80f,z80f,#1<<CFlag\r
7846         orr z80f,z80f,#1<<NFlag\r
7847         orrmi z80f,z80f,#1<<SFlag\r
7848         orreq z80f,z80f,#1<<ZFlag\r
7849         cmp r1,r0,lsl#28\r
7850         orrcc z80f,z80f,#1<<HFlag\r
7851         subs z80bc,z80bc,#0x00010000\r
7852         orrne z80f,z80f,#1<<VFlag\r
7853         fetch 16\r
7854 ;@INI\r
7855 opcode_ED_A2:\r
7856         opIN_C\r
7857         and z80f,r0,#0x80\r
7858         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7859 ;@      mov r1,z80bc,lsl#8\r
7860 ;@      add r1,r1,#0x01000000\r
7861 ;@      adds r1,r1,r0,lsl#24\r
7862 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7863         writemem8HL\r
7864         add z80hl,z80hl,#1<<16\r
7865         sub z80bc,z80bc,#1<<24\r
7866         tst z80bc,#0xFF<<24\r
7867         orrmi z80f,z80f,#1<<SFlag\r
7868         orreq z80f,z80f,#1<<ZFlag\r
7869         fetch 16\r
7870 \r
7871 ;@OUTI\r
7872 opcode_ED_A3:\r
7873         readmem8HL\r
7874         add z80hl,z80hl,#1<<16\r
7875         and z80f,r0,#0x80\r
7876         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7877         mov r1,z80hl,lsl#8\r
7878         adds r1,r1,r0,lsl#24\r
7879         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL)+L > 0xFF\r
7880         sub z80bc,z80bc,#1<<24\r
7881         tst z80bc,#0xFF<<24\r
7882         orrmi z80f,z80f,#1<<SFlag\r
7883         orreq z80f,z80f,#1<<ZFlag\r
7884         mov r1,r0\r
7885         opOUT_C\r
7886         fetch 16\r
7887 \r
7888 ;@LDD\r
7889 opcode_ED_A8:\r
7890         copymem8HL_DE\r
7891         sub z80hl,z80hl,#1<<16\r
7892         sub z80de,z80de,#1<<16\r
7893         subs z80bc,z80bc,#1<<16\r
7894         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7895         orrne z80f,z80f,#1<<VFlag\r
7896         fetch 16\r
7897 \r
7898 ;@CPD\r
7899 opcode_ED_A9:\r
7900         readmem8HL\r
7901         sub z80hl,z80hl,#1<<16\r
7902         mov r1,z80a,lsl#4\r
7903         cmp z80a,r0,lsl#24\r
7904         and z80f,z80f,#1<<CFlag\r
7905         orr z80f,z80f,#1<<NFlag\r
7906         orrmi z80f,z80f,#1<<SFlag\r
7907         orreq z80f,z80f,#1<<ZFlag\r
7908         cmp r1,r0,lsl#28\r
7909         orrcc z80f,z80f,#1<<HFlag\r
7910         subs z80bc,z80bc,#0x00010000\r
7911         orrne z80f,z80f,#1<<VFlag\r
7912         fetch 16\r
7913 \r
7914 ;@IND\r
7915 opcode_ED_AA:\r
7916         opIN_C\r
7917         and z80f,r0,#0x80\r
7918         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7919 ;@      mov r1,z80bc,lsl#8\r
7920 ;@      sub r1,r1,#0x01000000\r
7921 ;@      adds r1,r1,r0,lsl#24\r
7922 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
7923         writemem8HL\r
7924         sub z80hl,z80hl,#1<<16\r
7925         sub z80bc,z80bc,#1<<24\r
7926         tst z80bc,#0xFF<<24\r
7927         orrmi z80f,z80f,#1<<SFlag\r
7928         orreq z80f,z80f,#1<<ZFlag\r
7929         fetch 16\r
7930 \r
7931 ;@OUTD\r
7932 opcode_ED_AB:\r
7933         readmem8HL\r
7934         sub z80hl,z80hl,#1<<16\r
7935         and z80f,r0,#0x80\r
7936         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7937         mov r1,z80hl,lsl#8\r
7938         adds r1,r1,r0,lsl#24\r
7939         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
7940         sub z80bc,z80bc,#1<<24\r
7941         tst z80bc,#0xFF<<24\r
7942         orrmi z80f,z80f,#1<<SFlag\r
7943         orreq z80f,z80f,#1<<ZFlag\r
7944         mov r1,r0\r
7945         opOUT_C\r
7946         fetch 16\r
7947 ;@LDIR\r
7948 opcode_ED_B0:\r
7949         copymem8HL_DE\r
7950         add z80hl,z80hl,#1<<16\r
7951         add z80de,z80de,#1<<16\r
7952         subs z80bc,z80bc,#1<<16\r
7953         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7954         orrne z80f,z80f,#1<<VFlag\r
7955         subne z80pc,z80pc,#2\r
7956         subne z80_icount,z80_icount,#5\r
7957         fetch 16\r
7958 \r
7959 ;@CPIR\r
7960 opcode_ED_B1:\r
7961         readmem8HL\r
7962         add z80hl,z80hl,#1<<16    \r
7963         mov r1,z80a,lsl#4\r
7964         cmp z80a,r0,lsl#24\r
7965         and z80f,z80f,#1<<CFlag\r
7966         orr z80f,z80f,#1<<NFlag\r
7967         orrmi z80f,z80f,#1<<SFlag\r
7968         orreq z80f,z80f,#1<<ZFlag\r
7969         cmp r1,r0,lsl#28\r
7970         orrcc z80f,z80f,#1<<HFlag\r
7971         subs z80bc,z80bc,#1<<16\r
7972         bne opcode_ED_B1_decpc\r
7973         fetch 16\r
7974 opcode_ED_B1_decpc:\r
7975         orr z80f,z80f,#1<<VFlag\r
7976         tst z80f,#1<<ZFlag\r
7977         subeq z80pc,z80pc,#2\r
7978         subeq z80_icount,z80_icount,#5\r
7979         fetch 16\r
7980 ;@INIR\r
7981 opcode_ED_B2:\r
7982         opIN_C\r
7983         and z80f,r0,#0x80\r
7984         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7985 ;@      mov r1,z80bc,lsl#8\r
7986 ;@      add r1,r1,#0x01000000\r
7987 ;@      adds r1,r1,r0,lsl#24\r
7988 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7989         writemem8HL\r
7990         add z80hl,z80hl,#1<<16\r
7991         sub z80bc,z80bc,#1<<24\r
7992         tst z80bc,#0xFF<<24\r
7993         orrmi z80f,z80f,#1<<SFlag\r
7994         orreq z80f,z80f,#1<<ZFlag\r
7995         subne z80pc,z80pc,#2\r
7996         subne z80_icount,z80_icount,#5\r
7997         fetch 16\r
7998 ;@OTIR\r
7999 opcode_ED_B3:\r
8000         readmem8HL\r
8001         add z80hl,z80hl,#1<<16\r
8002         and z80f,r0,#0x80\r
8003         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8004         mov r1,z80hl,lsl#8\r
8005         adds r1,r1,r0,lsl#24\r
8006         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
8007         sub z80bc,z80bc,#1<<24\r
8008         tst z80bc,#0xFF<<24\r
8009         orrmi z80f,z80f,#1<<SFlag\r
8010         orreq z80f,z80f,#1<<ZFlag\r
8011         subne z80pc,z80pc,#2\r
8012         subne z80_icount,z80_icount,#5\r
8013         mov r1,r0\r
8014         opOUT_C\r
8015         fetch 16\r
8016 ;@LDDR\r
8017 opcode_ED_B8:\r
8018         copymem8HL_DE\r
8019         sub z80hl,z80hl,#1<<16\r
8020         sub z80de,z80de,#1<<16\r
8021         subs z80bc,z80bc,#1<<16\r
8022         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
8023         orrne z80f,z80f,#1<<VFlag\r
8024         subne z80pc,z80pc,#2\r
8025         subne z80_icount,z80_icount,#5\r
8026         fetch 16\r
8027 \r
8028 ;@CPDR\r
8029 opcode_ED_B9:\r
8030         readmem8HL\r
8031         sub z80hl,z80hl,#1<<16\r
8032         mov r1,z80a,lsl#4\r
8033         cmp z80a,r0,lsl#24\r
8034         and z80f,z80f,#1<<CFlag\r
8035         orr z80f,z80f,#1<<NFlag\r
8036         orrmi z80f,z80f,#1<<SFlag\r
8037         orreq z80f,z80f,#1<<ZFlag\r
8038         cmp r1,r0,lsl#28\r
8039         orrcc z80f,z80f,#1<<HFlag\r
8040         subs z80bc,z80bc,#1<<16\r
8041         bne opcode_ED_B9_decpc\r
8042         fetch 16\r
8043 opcode_ED_B9_decpc:\r
8044         orr z80f,z80f,#1<<VFlag\r
8045         tst z80f,#1<<ZFlag\r
8046         subeq z80pc,z80pc,#2\r
8047         subeq z80_icount,z80_icount,#5\r
8048         fetch 16\r
8049 ;@INDR\r
8050 opcode_ED_BA:\r
8051         opIN_C\r
8052         and z80f,r0,#0x80\r
8053         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8054 ;@      mov r1,z80bc,lsl#8\r
8055 ;@      sub r1,r1,#0x01000000\r
8056 ;@      adds r1,r1,r0,lsl#24\r
8057 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
8058         writemem8HL\r
8059         sub z80hl,z80hl,#1<<16\r
8060         sub z80bc,z80bc,#1<<24\r
8061         tst z80bc,#0xFF<<24\r
8062         orrmi z80f,z80f,#1<<SFlag\r
8063         orreq z80f,z80f,#1<<ZFlag\r
8064         subne z80pc,z80pc,#2\r
8065         subne z80_icount,z80_icount,#5\r
8066         fetch 16\r
8067 ;@OTDR\r
8068 opcode_ED_BB:\r
8069         readmem8HL\r
8070         sub z80hl,z80hl,#1<<16\r
8071         and z80f,r0,#0x80\r
8072         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8073         mov r1,z80hl,lsl#8\r
8074         adds r1,r1,r0,lsl#24\r
8075         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
8076         sub z80bc,z80bc,#1<<24\r
8077         tst z80bc,#0xFF<<24\r
8078         orrmi z80f,z80f,#1<<SFlag\r
8079         orreq z80f,z80f,#1<<ZFlag\r
8080         subne z80pc,z80pc,#2\r
8081         subne z80_icount,z80_icount,#5\r
8082         mov r1,r0\r
8083         opOUT_C\r
8084         fetch 16\r
8085 ;@##################################\r
8086 ;@##################################\r
8087 ;@###  opcodes FD  #########################\r
8088 ;@##################################\r
8089 ;@##################################\r
8090 ;@Since DD and FD opcodes are all the same apart from the address\r
8091 ;@register they use.  When a FD intruction the program runs the code\r
8092 ;@from the DD location but the address of the IY reg is passed instead\r
8093 ;@of IX\r
8094 \r
8095 ;@end_loop:\r
8096 ;@     b end_loop\r
8097 \r
8098 ;@ vim:filetype=armasm\r
8099 \r