adjusted timing of some instructions
[picodrive.git] / cpu / DrZ80 / drz80.s
1 ;@ Reesy's Z80 Emulator Version 0.001\r
2 \r
3 ;@ (c) Copyright 2004 Reesy, All rights reserved\r
4 ;@ DrZ80 is free for non-commercial use.\r
5 \r
6 ;@ For commercial use, separate licencing terms must be obtained.\r
7 \r
8       .data\r
9       .align 4\r
10 \r
11       .global DrZ80Run\r
12       .global DrZ80Ver\r
13 \r
14       .equiv INTERRUPT_MODE,        0   ;@0 = Use internal int handler, 1 = Use Mames int handler\r
15       .equiv FAST_Z80SP,            1   ;@0 = Use mem functions for stack pointer, 1 = Use direct mem pointer\r
16       .equiv UPDATE_CONTEXT,        0\r
17       .equiv DRZ80_FOR_PICODRIVE,   1\r
18 \r
19 .if INTERRUPT_MODE\r
20       .extern Interrupt\r
21 .endif\r
22 \r
23 .if DRZ80_FOR_PICODRIVE\r
24       .extern PicoRead8\r
25       .extern Pico\r
26       .extern z80_write\r
27       .extern ym2612_read_local_z80\r
28 .endif\r
29 \r
30 DrZ80Ver: .long 0x0001\r
31 \r
32 ;@ --------------------------- Defines ----------------------------\r
33 ;@ Make sure that regs/pointers for z80pc to z80sp match up!\r
34 \r
35         opcodes    .req r3\r
36         z80_icount .req r4\r
37         cpucontext .req r5\r
38         z80pc      .req r6\r
39         z80a       .req r7\r
40         z80f       .req r8\r
41         z80bc      .req r9\r
42         z80de      .req r10\r
43         z80hl      .req r11\r
44         z80sp      .req r12     \r
45         z80xx      .req lr\r
46 \r
47         .equ z80pc_pointer,           0                  ;@  0\r
48         .equ z80a_pointer,            z80pc_pointer+4    ;@  4\r
49         .equ z80f_pointer,            z80a_pointer+4     ;@  8\r
50         .equ z80bc_pointer,           z80f_pointer+4     ;@  \r
51         .equ z80de_pointer,           z80bc_pointer+4\r
52         .equ z80hl_pointer,           z80de_pointer+4\r
53         .equ z80sp_pointer,           z80hl_pointer+4\r
54         .equ z80pc_base,              z80sp_pointer+4\r
55         .equ z80sp_base,              z80pc_base+4\r
56         .equ z80ix,                   z80sp_base+4\r
57         .equ z80iy,                   z80ix+4\r
58         .equ z80i,                    z80iy+4\r
59         .equ z80a2,                   z80i+4\r
60         .equ z80f2,                   z80a2+4\r
61         .equ z80bc2,                  z80f2+4\r
62         .equ z80de2,                  z80bc2+4\r
63         .equ z80hl2,                  z80de2+4\r
64         .equ cycles_pointer,          z80hl2+4     \r
65         .equ previouspc,              cycles_pointer+4     \r
66         .equ z80irq,                  previouspc+4\r
67         .equ z80if,                   z80irq+1\r
68         .equ z80im,                   z80if+1\r
69         .equ z80r,                    z80im+1\r
70         .equ z80irqvector,            z80r+1\r
71         .equ z80irqcallback,          z80irqvector+4\r
72         .equ z80_write8,              z80irqcallback+4\r
73         .equ z80_write16,             z80_write8+4\r
74         .equ z80_in,                  z80_write16+4\r
75         .equ z80_out,                 z80_in+4\r
76         .equ z80_read8,               z80_out+4\r
77         .equ z80_read16,              z80_read8+4\r
78         .equ z80_rebaseSP,            z80_read16+4\r
79         .equ z80_rebasePC,            z80_rebaseSP+4\r
80 \r
81         .equ VFlag, 0\r
82         .equ CFlag, 1\r
83         .equ ZFlag, 2\r
84         .equ SFlag, 3\r
85         .equ HFlag, 4\r
86         .equ NFlag, 5\r
87         .equ Flag3, 6\r
88         .equ Flag5, 7\r
89 \r
90         .equ Z80_CFlag, 0\r
91         .equ Z80_NFlag, 1\r
92         .equ Z80_VFlag, 2\r
93         .equ Z80_Flag3, 3\r
94         .equ Z80_HFlag, 4\r
95         .equ Z80_Flag5, 5\r
96         .equ Z80_ZFlag, 6\r
97         .equ Z80_SFlag, 7\r
98 \r
99         .equ Z80_IF1, 1<<0\r
100         .equ Z80_IF2, 1<<1\r
101         .equ Z80_HALT, 1<<2\r
102 \r
103 ;@---------------------------------------\r
104 \r
105 .text\r
106 \r
107 .if DRZ80_FOR_PICODRIVE\r
108 \r
109 pico_z80_read8: @ addr\r
110     cmp r0,#0x2000         @ Z80 RAM\r
111     ldrlt r1,[cpucontext,#z80sp_base]\r
112     ldrltb r0,[r1,r0]\r
113     bxlt lr\r
114 \r
115     cmp r0,#0x8000         @ 68k bank\r
116     blt 1f\r
117     ldr r2,=(Pico+0x22212)\r
118     ldrh r1,[r2]\r
119     bic r0,r0,#0x3f8000\r
120     orr r0,r0,r1,lsl #15\r
121     ldr r1,[r2,#-0xe]      @ ROM size\r
122     cmp r0,r1\r
123     ldrlt r1,[r2,#-0x12]   @ ROM\r
124     eorlt r0,r0,#1         @ our ROM is byteswapped\r
125     ldrltb r0,[r1,r0]\r
126     bxlt lr\r
127     stmfd sp!,{r3,r12,lr}\r
128     bl PicoRead8\r
129     ldmfd sp!,{r3,r12,pc}\r
130 1:\r
131     mov r1,r0,lsr #13\r
132     cmp r1,#2              @ YM2612 (0x4000-0x5fff)\r
133     bne 0f\r
134     and r0,r0,#3\r
135     stmfd sp!,{r3,r12,lr}\r
136     str z80_icount,[cpucontext,#cycles_pointer]\r
137     bl ym2612_read_local_z80\r
138     ldmfd sp!,{r3,r12,pc}\r
139 0:\r
140     cmp r0,#0x4000\r
141     movge r0,#0xff\r
142     bxge lr\r
143     ldr r1,[cpucontext,#z80sp_base]\r
144     bic r0,r0,#0x0fe000    @ Z80 RAM (mirror)\r
145     ldrb r0,[r1,r0]\r
146     bx lr\r
147 \r
148 pico_z80_read16: @ addr\r
149     cmp r0,#0x2000         @ Z80 RAM\r
150     bge 2f\r
151     ldr r1,[cpucontext,#z80sp_base]\r
152     ldrb r0,[r1,r0]!\r
153     ldrb r1,[r1,#1]\r
154     orr r0,r0,r1,lsl #8\r
155     bx lr\r
156 \r
157 2:\r
158     cmp r0,#0x8000         @ 68k bank\r
159     blt 1f\r
160     ldr r2,=(Pico+0x22212)\r
161     ldrh r1,[r2]\r
162     bic r0,r0,#0x1f8000\r
163     orr r0,r0,r1,lsl #15\r
164     ldr r1,[r2,#-0xe]      @ ROM size\r
165     cmp r0,r1\r
166     ldr r1,[r2,#-0x12]     @ ROM\r
167     tst r0,#1\r
168     eor r0,r0,#1\r
169     ldrb r0,[r1,r0]!\r
170     ldreqb r1,[r1,#-1]\r
171     ldrneb r1,[r1,#3]      @ this is due to byteswapped ROM\r
172     orr r0,r0,r1,lsl #8\r
173     bx lr\r
174 3:\r
175     stmfd sp!,{r3-r5,r12,lr}\r
176     mov r4,r0\r
177     bl PicoRead8\r
178     mov r5,r0\r
179     add r0,r4,#1\r
180     bl PicoRead8\r
181     orr r0,r5,r0,lsl #8\r
182     ldmfd sp!,{r3-r5,r12,pc}\r
183 1:\r
184     mov r1,r0,lsr #13\r
185     cmp r1,#2              @ YM2612 (0x4000-0x5fff)\r
186     bne 0f\r
187     and r0,r0,#3\r
188     stmfd sp!,{r3,r12,lr}\r
189     str z80_icount,[cpucontext,#cycles_pointer]\r
190     bl ym2612_read_local_z80\r
191     orr r0,r0,r0,lsl #8\r
192     ldmfd sp!,{r3,r12,pc}\r
193 0:\r
194     cmp r0,#0x4000\r
195     movge r0,#0xff\r
196     bxge lr\r
197     ldr r1,[cpucontext,#z80sp_base]\r
198     bic r0,r0,#0x0fe000    @ Z80 RAM (mirror)\r
199     ldrb r0,[r1,r0]!\r
200     ldrb r1,[r1,#1]\r
201     orr r0,r0,r1,lsl #8\r
202     bx lr\r
203 \r
204 pico_z80_write8: @ data, addr\r
205     cmp r1,#0x4000\r
206     bge 1f\r
207     ldr r2,[cpucontext,#z80sp_base]\r
208     bic r1,r1,#0x0fe000    @ Z80 RAM\r
209     strb r0,[r2,r1]\r
210     bx lr\r
211 1:\r
212     stmfd sp!,{r3,r12,lr}\r
213     str z80_icount,[cpucontext,#cycles_pointer]\r
214     bl z80_write\r
215     ldmfd sp!,{r3,r12,pc}\r
216 \r
217 pico_z80_write16: @ data, addr\r
218     cmp r1,#0x4000\r
219     bge 1f\r
220     ldr r2,[cpucontext,#z80sp_base]\r
221     bic r1,r1,#0x0fe000    @ Z80 RAM\r
222     strb r0,[r2,r1]!\r
223     mov r0,r0,lsr #8\r
224     strb r0,[r2,#1]\r
225     bx lr\r
226 1:\r
227     stmfd sp!,{r3-r5,r12,lr}\r
228     str z80_icount,[cpucontext,#cycles_pointer]\r
229     mov r4,r0\r
230     mov r5,r1\r
231     bl z80_write\r
232     mov r0,r4,lsr #8\r
233     add r1,r5,#1\r
234     bl z80_write\r
235     ldmfd sp!,{r3-r5,r12,pc}\r
236 \r
237     .pool\r
238 .endif\r
239 \r
240 .macro fetch cycs\r
241         subs z80_icount,z80_icount,#\cycs\r
242 .if UPDATE_CONTEXT\r
243     str z80pc,[cpucontext,#z80pc_pointer]\r
244         str z80_icount,[cpucontext,#cycles_pointer]\r
245         ldr r1,[cpucontext,#z80pc_base]\r
246         sub r2,z80pc,r1\r
247         str r2,[cpucontext,#previouspc]\r
248 .endif\r
249         ldrplb r0,[z80pc],#1\r
250         ldrpl pc,[opcodes,r0, lsl #2]\r
251         bmi z80_execute_end\r
252 .endm\r
253 \r
254 .macro eatcycles cycs\r
255         sub z80_icount,z80_icount,#\cycs\r
256 .if UPDATE_CONTEXT\r
257         str z80_icount,[cpucontext,#cycles_pointer]\r
258 .endif\r
259 .endm\r
260 \r
261 .macro readmem8\r
262 .if UPDATE_CONTEXT\r
263     str z80pc,[cpucontext,#z80pc_pointer]\r
264 .endif\r
265 .if DRZ80_FOR_PICODRIVE\r
266     bl pico_z80_read8\r
267 .else\r
268     stmfd sp!,{r3,r12}\r
269         mov lr,pc\r
270         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
271         ldmfd sp!,{r3,r12}\r
272 .endif\r
273 .endm\r
274 \r
275 .macro readmem8HL\r
276         mov r0,z80hl, lsr #16\r
277         readmem8\r
278 .endm\r
279 \r
280 .macro readmem16\r
281 .if UPDATE_CONTEXT\r
282      str z80pc,[cpucontext,#z80pc_pointer]\r
283 .endif\r
284 .if DRZ80_FOR_PICODRIVE\r
285     bl pico_z80_read16\r
286 .else\r
287         stmfd sp!,{r3,r12}\r
288         mov lr,pc\r
289         ldr pc,[cpucontext,#z80_read16]\r
290         ldmfd sp!,{r3,r12}\r
291 .endif\r
292 .endm\r
293 \r
294 .macro writemem8\r
295 .if UPDATE_CONTEXT\r
296      str z80pc,[cpucontext,#z80pc_pointer]\r
297 .endif\r
298 .if DRZ80_FOR_PICODRIVE\r
299     bl pico_z80_write8\r
300 .else\r
301         stmfd sp!,{r3,r12}\r
302         mov lr,pc\r
303         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
304         ldmfd sp!,{r3,r12}\r
305 .endif\r
306 .endm\r
307 \r
308 .macro writemem8DE\r
309         mov r1,z80de, lsr #16\r
310         writemem8\r
311 .endm\r
312 \r
313 .macro writemem8HL\r
314         mov r1,z80hl, lsr #16\r
315         writemem8\r
316 .endm\r
317 \r
318 .macro writemem16\r
319 .if UPDATE_CONTEXT\r
320      str z80pc,[cpucontext,#z80pc_pointer]\r
321 .endif\r
322 .if DRZ80_FOR_PICODRIVE\r
323     bl pico_z80_write16\r
324 .else\r
325         stmfd sp!,{r3,r12}\r
326         mov lr,pc\r
327         ldr pc,[cpucontext,#z80_write16]                ;@ r0=data r1=addr\r
328         ldmfd sp!,{r3,r12}\r
329 .endif\r
330 .endm\r
331 \r
332 .macro copymem8HL_DE\r
333 .if UPDATE_CONTEXT\r
334      str z80pc,[cpucontext,#z80pc_pointer]\r
335 .endif\r
336         mov r0,z80hl, lsr #16\r
337 .if DRZ80_FOR_PICODRIVE\r
338     bl pico_z80_read8\r
339 .else\r
340     stmfd sp!,{r3,r12}\r
341         mov lr,pc\r
342         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
343 .endif\r
344 .if UPDATE_CONTEXT\r
345      str z80pc,[cpucontext,#z80pc_pointer]\r
346 .endif\r
347         mov r1,z80de, lsr #16\r
348 .if DRZ80_FOR_PICODRIVE\r
349     bl pico_z80_write8\r
350 .else\r
351         mov lr,pc\r
352         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
353         ldmfd sp!,{r3,r12}\r
354 .endif\r
355 .endm\r
356 ;@---------------------------------------\r
357 \r
358 .macro rebasepc\r
359 .if UPDATE_CONTEXT\r
360      str z80pc,[cpucontext,#z80pc_pointer]\r
361 .endif\r
362 .if DRZ80_FOR_PICODRIVE\r
363     bic r0,r0,#0xfe000\r
364     ldr r1,[cpucontext,#z80pc_base]\r
365     add z80pc,r1,r0\r
366 .else\r
367     stmfd sp!,{r3,r12}\r
368         mov lr,pc\r
369         ldr pc,[cpucontext,#z80_rebasePC]               ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
370         ldmfd sp!,{r3,r12}\r
371         mov z80pc,r0\r
372 .endif\r
373 .endm\r
374 \r
375 .macro rebasesp\r
376 .if UPDATE_CONTEXT\r
377      str z80pc,[cpucontext,#z80pc_pointer]\r
378 .endif\r
379 .if DRZ80_FOR_PICODRIVE\r
380     bic r0,r0,#0xfe000\r
381     ldr r1,[cpucontext,#z80sp_base]\r
382     add r0,r1,r0\r
383 .else\r
384         stmfd sp!,{r3,r12}\r
385         mov lr,pc\r
386         ldr pc,[cpucontext,#z80_rebaseSP]               ;@ external function must rebase sp\r
387         ldmfd sp!,{r3,r12}\r
388 .endif\r
389 .endm\r
390 ;@----------------------------------------------------------------------------\r
391 \r
392 .macro opADC\r
393         movs z80f,z80f,lsr#2                                    ;@ get C\r
394         subcs r0,r0,#0x100\r
395         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of half carry\r
396         adcs z80a,z80a,r0,ror#8\r
397         mrs r0,cpsr                                                             ;@ S,Z,V&C\r
398         eor z80f,z80f,z80a,lsr#24\r
399         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
400         orr z80f,z80f,r0,lsr#28\r
401 .endm\r
402 \r
403 .macro opADCA\r
404         movs z80f,z80f,lsr#2                                    ;@ get C\r
405         orrcs z80a,z80a,#0x00800000\r
406         adds z80a,z80a,z80a\r
407         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
408         mov z80f,z80f,lsr#28\r
409         tst z80a,#0x10000000                                    ;@ H, correct\r
410         orrne z80f,z80f,#1<<HFlag\r
411         fetch 4\r
412 .endm\r
413 \r
414 .macro opADCH reg\r
415         mov r0,\reg,lsr#24\r
416         opADC\r
417         fetch 4\r
418 .endm\r
419 \r
420 .macro opADCL reg\r
421         movs z80f,z80f,lsr#2                                    ;@ get C\r
422         adc r0,\reg,\reg,lsr#15\r
423         orrcs z80a,z80a,#0x00800000\r
424         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
425         adds z80a,z80a,r0,lsl#23\r
426         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
427         mov z80f,z80f,lsr#28\r
428         cmn r1,r0,lsl#27\r
429         orrcs z80f,z80f,#1<<HFlag                               ;@ H, correct\r
430         fetch 4\r
431 .endm\r
432 \r
433 .macro opADCb\r
434         opADC\r
435 .endm\r
436 ;@---------------------------------------\r
437 \r
438 .macro opADD reg shift\r
439         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
440         adds z80a,z80a,\reg,lsl#\shift\r
441         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
442         mov z80f,z80f,lsr#28\r
443         cmn r1,\reg,lsl#\shift+4\r
444         orrcs z80f,z80f,#1<<HFlag\r
445 .endm\r
446 \r
447 .macro opADDA\r
448         adds z80a,z80a,z80a\r
449         mrs z80f,cpsr                                                   ;@ S,Z,V&C\r
450         mov z80f,z80f,lsr#28\r
451         tst z80a,#0x10000000                                    ;@ H, correct\r
452         orrne z80f,z80f,#1<<HFlag\r
453         fetch 4\r
454 .endm\r
455 \r
456 .macro opADDH reg\r
457         and r0,\reg,#0xFF000000\r
458         opADD r0 0\r
459         fetch 4\r
460 .endm\r
461 \r
462 .macro opADDL reg\r
463         opADD \reg 8\r
464         fetch 4\r
465 .endm\r
466 \r
467 .macro opADDb \r
468         opADD r0 24\r
469 .endm\r
470 ;@---------------------------------------\r
471 \r
472 .macro opADC16 reg\r
473         movs z80f,z80f,lsr#2                                    ;@ get C\r
474         adc r0,z80a,\reg,lsr#15\r
475         orrcs z80hl,z80hl,#0x00008000\r
476         mov r1,z80hl,lsl#4\r
477         adds z80hl,z80hl,r0,lsl#15\r
478         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
479         mov z80f,z80f,lsr#28\r
480         cmn r1,r0,lsl#19\r
481         orrcs z80f,z80f,#1<<HFlag\r
482         fetch 15\r
483 .endm\r
484 \r
485 .macro opADC16HL\r
486         movs z80f,z80f,lsr#2                                    ;@ get C\r
487         orrcs z80hl,z80hl,#0x00008000\r
488         adds z80hl,z80hl,z80hl\r
489         mrs z80f,cpsr                                                   ;@ S, Z, V & C\r
490         mov z80f,z80f,lsr#28\r
491         tst z80hl,#0x10000000                                   ;@ H, correct.\r
492         orrne z80f,z80f,#1<<HFlag\r
493         fetch 15\r
494 .endm\r
495 \r
496 .macro opADD16 reg1 reg2\r
497         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
498         adds \reg1,\reg1,\reg2\r
499         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
500         orrcs z80f,z80f,#1<<CFlag\r
501         cmn r1,\reg2,lsl#4\r
502         orrcs z80f,z80f,#1<<HFlag\r
503 .endm\r
504 \r
505 .macro opADD16s reg1 reg2 shift\r
506         mov r1,\reg1,lsl#4                                              ;@ Prepare for check of half carry\r
507         adds \reg1,\reg1,\reg2,lsl#\shift\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+\shift\r
511         orrcs z80f,z80f,#1<<HFlag\r
512 .endm\r
513 \r
514 .macro opADD16_2 reg\r
515         adds \reg,\reg,\reg\r
516         bic z80f,z80f,#(1<<CFlag)|(1<<HFlag)|(1<<NFlag)\r
517         orrcs z80f,z80f,#1<<CFlag\r
518         tst \reg,#0x10000000                                    ;@ H, correct.\r
519         orrne z80f,z80f,#1<<HFlag\r
520 .endm\r
521 ;@---------------------------------------\r
522 \r
523 .macro opAND reg shift\r
524         and z80a,z80a,\reg,lsl#\shift\r
525         sub r0,opcodes,#0x100\r
526         ldrb z80f,[r0,z80a, lsr #24]\r
527         orr z80f,z80f,#1<<HFlag\r
528 .endm\r
529 \r
530 .macro opANDA\r
531         sub r0,opcodes,#0x100\r
532         ldrb z80f,[r0,z80a, lsr #24]\r
533         orr z80f,z80f,#1<<HFlag\r
534         fetch 4\r
535 .endm\r
536 \r
537 .macro opANDH reg\r
538         opAND \reg 0\r
539         fetch 4\r
540 .endm\r
541 \r
542 .macro opANDL reg\r
543         opAND \reg 8\r
544         fetch 4\r
545 .endm\r
546 \r
547 .macro opANDb\r
548         opAND r0 24\r
549 .endm\r
550 ;@---------------------------------------\r
551 \r
552 .macro opBITH reg bit\r
553         and z80f,z80f,#1<<CFlag\r
554         tst \reg,#1<<(24+\bit)\r
555         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
556         orrne z80f,z80f,#(1<<HFlag)\r
557         fetch 8\r
558 .endm\r
559 \r
560 .macro opBIT7H reg\r
561         and z80f,z80f,#1<<CFlag\r
562         tst \reg,#1<<(24+7)\r
563         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
564         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
565         fetch 8\r
566 .endm\r
567 \r
568 .macro opBITL reg bit\r
569         and z80f,z80f,#1<<CFlag\r
570         tst \reg,#1<<(16+\bit)\r
571         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
572         orrne z80f,z80f,#(1<<HFlag)\r
573         fetch 8\r
574 .endm\r
575 \r
576 .macro opBIT7L reg\r
577         and z80f,z80f,#1<<CFlag\r
578         tst \reg,#1<<(16+7)\r
579         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
580         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
581         fetch 8\r
582 .endm\r
583 \r
584 .macro opBITb bit\r
585         and z80f,z80f,#1<<CFlag\r
586         tst r0,#1<<\bit\r
587         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
588         orrne z80f,z80f,#(1<<HFlag)\r
589 .endm\r
590 \r
591 .macro opBIT7b\r
592         and z80f,z80f,#1<<CFlag\r
593         tst r0,#1<<7\r
594         orreq z80f,z80f,#(1<<HFlag)|(1<<ZFlag)|(1<<VFlag)\r
595         orrne z80f,z80f,#(1<<HFlag)|(1<<SFlag)\r
596 .endm\r
597 ;@---------------------------------------\r
598 \r
599 .macro opCP reg shift\r
600         mov r1,z80a,lsl#4                                               ;@ prepare for check of half carry\r
601         cmp z80a,\reg,lsl#\shift\r
602         mrs z80f,cpsr\r
603         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
604         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
605         cmp r1,\reg,lsl#\shift+4\r
606         orrcc z80f,z80f,#1<<HFlag\r
607 .endm\r
608 \r
609 .macro opCPA\r
610         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
611         fetch 4\r
612 .endm\r
613 \r
614 .macro opCPH reg\r
615         and r0,\reg,#0xFF000000\r
616         opCP r0 0\r
617         fetch 4\r
618 .endm\r
619 \r
620 .macro opCPL reg\r
621         opCP \reg 8\r
622         fetch 4\r
623 .endm\r
624 \r
625 .macro opCPb\r
626         opCP r0 24\r
627 .endm\r
628 ;@---------------------------------------\r
629 \r
630 .macro opDEC8 reg                                                       ;@for A and memory\r
631         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
632         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
633         tst \reg,#0x0f000000\r
634         orreq z80f,z80f,#1<<HFlag\r
635         subs \reg,\reg,#0x01000000\r
636         orrmi z80f,z80f,#1<<SFlag\r
637         orrvs z80f,z80f,#1<<VFlag\r
638         orreq z80f,z80f,#1<<ZFlag\r
639 .endm\r
640 \r
641 .macro opDEC8H reg                                                      ;@for B, D & H\r
642         and z80f,z80f,#1<<CFlag                                 ;@save carry\r
643         orr z80f,z80f,#1<<NFlag                                 ;@set n\r
644         tst \reg,#0x0f000000\r
645         orreq z80f,z80f,#1<<HFlag\r
646         subs \reg,\reg,#0x01000000\r
647         orrmi z80f,z80f,#1<<SFlag\r
648         orrvs z80f,z80f,#1<<VFlag\r
649         tst \reg,#0xff000000                                    ;@Z\r
650         orreq z80f,z80f,#1<<ZFlag\r
651 .endm\r
652 \r
653 .macro opDEC8L reg                                                      ;@for C, E & L\r
654         mov \reg,\reg,ror#24\r
655         opDEC8H \reg\r
656         mov \reg,\reg,ror#8\r
657 .endm\r
658 \r
659 .macro opDEC8b                                                          ;@for memory\r
660         mov r0,r0,lsl#24\r
661         opDEC8 r0\r
662         mov r0,r0,lsr#24\r
663 .endm\r
664 ;@---------------------------------------\r
665 \r
666 .macro opIN\r
667         stmfd sp!,{r3,r12}\r
668         mov lr,pc\r
669         ldr pc,[cpucontext,#z80_in]                             ;@ r0=port - data returned in r0\r
670         ldmfd sp!,{r3,r12}\r
671 .endm\r
672 \r
673 .macro opIN_C\r
674         mov r0,z80bc, lsr #16\r
675         opIN\r
676 .endm\r
677 ;@---------------------------------------\r
678 \r
679 .macro opINC8 reg                                                       ;@for A and memory\r
680         and z80f,z80f,#1<<CFlag                                 ;@save carry, clear n\r
681         adds \reg,\reg,#0x01000000\r
682         orrmi z80f,z80f,#1<<SFlag\r
683         orrvs z80f,z80f,#1<<VFlag\r
684         orrcs z80f,z80f,#1<<ZFlag                               ;@cs when going from 0xFF to 0x00\r
685         tst \reg,#0x0f000000\r
686         orreq z80f,z80f,#1<<HFlag\r
687 .endm\r
688 \r
689 .macro opINC8H reg                                                      ;@for B, D & H\r
690         opINC8 \reg\r
691 .endm\r
692 \r
693 .macro opINC8L reg                                                      ;@for C, E & L\r
694         mov \reg,\reg,ror#24\r
695         opINC8 \reg\r
696         mov \reg,\reg,ror#8\r
697 .endm\r
698 \r
699 .macro opINC8b                                                          ;@for memory\r
700         mov r0,r0,lsl#24\r
701         opINC8 r0\r
702         mov r0,r0,lsr#24\r
703 .endm\r
704 ;@---------------------------------------\r
705 \r
706 .macro opOR reg shift\r
707         orr z80a,z80a,\reg,lsl#\shift\r
708         sub r0,opcodes,#0x100\r
709         ldrb z80f,[r0,z80a, lsr #24]\r
710 .endm\r
711 \r
712 .macro opORA\r
713         sub r0,opcodes,#0x100\r
714         ldrb z80f,[r0,z80a, lsr #24]\r
715         fetch 4\r
716 .endm\r
717 \r
718 .macro opORH reg\r
719         and r0,\reg,#0xFF000000\r
720         opOR r0 0\r
721         fetch 4\r
722 .endm\r
723 \r
724 .macro opORL reg\r
725         opOR \reg 8\r
726         fetch 4\r
727 .endm\r
728 \r
729 .macro opORb\r
730         opOR r0 24\r
731 .endm\r
732 ;@---------------------------------------\r
733 \r
734 .macro opOUT\r
735         stmfd sp!,{r3,r12}\r
736         mov lr,pc\r
737         ldr pc,[cpucontext,#z80_out]                    ;@ r0=port r1=data\r
738         ldmfd sp!,{r3,r12}\r
739 .endm\r
740 \r
741 .macro opOUT_C\r
742         mov r0,z80bc, lsr #16\r
743         opOUT\r
744 .endm\r
745 ;@---------------------------------------\r
746 \r
747 .macro opPOP\r
748 .if FAST_Z80SP\r
749 .if DRZ80_FOR_PICODRIVE\r
750     @ notaz: try to protect against stack overflows, which tend to happen in Picodrive because of poor timing\r
751     ldr r2,[cpucontext,#z80sp_base]\r
752         ldrb r0,[z80sp],#1\r
753     add r2,r2,#0x2000\r
754     cmp z80sp,r2\r
755 @    subge z80sp,z80sp,#0x2000 @ unstable?\r
756         ldrb r1,[z80sp],#1\r
757     cmp z80sp,r2\r
758 @    subge z80sp,z80sp,#0x2000\r
759         orr r0,r0,r1, lsl #8\r
760 .else\r
761         ldrb r0,[z80sp],#1\r
762         ldrb r1,[z80sp],#1\r
763         orr r0,r0,r1, lsl #8\r
764 .endif\r
765 .else\r
766         mov r0,z80sp\r
767         readmem16\r
768         add z80sp,z80sp,#2\r
769 .endif\r
770 .endm\r
771 \r
772 .macro opPOPreg reg\r
773         opPOP\r
774         mov \reg,r0, lsl #16\r
775         fetch 10\r
776 .endm\r
777 ;@---------------------------------------\r
778 \r
779 .macro opPUSHareg reg @ reg > r1\r
780 .if FAST_Z80SP\r
781 .if DRZ80_FOR_PICODRIVE\r
782     @ notaz: try to protect against stack overflows, which tend to happen in Picodrive because of poor timing\r
783     ldr r0,[cpucontext,#z80sp_base]\r
784     cmp z80sp,r0\r
785     addle z80sp,z80sp,#0x2000\r
786     mov r1,\reg, lsr #8\r
787         strb r1,[z80sp,#-1]!\r
788     cmp z80sp,r0\r
789     addle z80sp,z80sp,#0x2000\r
790         strb \reg,[z80sp,#-1]!\r
791 .else\r
792         mov r1,\reg, lsr #8\r
793         strb r1,[z80sp,#-1]!\r
794         strb \reg,[z80sp,#-1]!\r
795 .endif\r
796 .else\r
797     mov r0,\reg\r
798         sub z80sp,z80sp,#2\r
799         mov r1,z80sp\r
800         writemem16\r
801 .endif\r
802 .endm\r
803 \r
804 .macro opPUSHreg reg\r
805 .if FAST_Z80SP\r
806 .if DRZ80_FOR_PICODRIVE\r
807     ldr r0,[cpucontext,#z80sp_base]\r
808     cmp z80sp,r0\r
809     addle z80sp,z80sp,#0x2000\r
810     mov r1,\reg, lsr #24\r
811         strb r1,[z80sp,#-1]!\r
812     cmp z80sp,r0\r
813     addle z80sp,z80sp,#0x2000\r
814         mov r1,\reg, lsr #16\r
815         strb r1,[z80sp,#-1]!\r
816 .else\r
817     mov r1,\reg, lsr #24\r
818         strb r1,[z80sp,#-1]!\r
819         mov r1,\reg, lsr #16\r
820         strb r1,[z80sp,#-1]!\r
821 .endif\r
822 .else\r
823         mov r0,\reg,lsr #16\r
824         sub z80sp,z80sp,#2\r
825         mov r1,z80sp\r
826         writemem16\r
827 .endif\r
828 .endm\r
829 ;@---------------------------------------\r
830 \r
831 .macro opRESmemHL bit\r
832 .if DRZ80_FOR_PICODRIVE\r
833         mov r0,z80hl, lsr #16\r
834     bl pico_z80_read8\r
835         bic r0,r0,#1<<\bit\r
836         mov r1,z80hl, lsr #16\r
837     bl pico_z80_write8\r
838 .else\r
839         mov r0,z80hl, lsr #16\r
840         stmfd sp!,{r3,r12}\r
841         mov lr,pc\r
842         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
843         bic r0,r0,#1<<\bit\r
844         mov r1,z80hl, lsr #16\r
845         mov lr,pc\r
846         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
847         ldmfd sp!,{r3,r12}\r
848 .endif\r
849     fetch 15\r
850 .endm\r
851 ;@---------------------------------------\r
852 \r
853 .macro opRESmem bit\r
854 .if DRZ80_FOR_PICODRIVE\r
855         stmfd sp!,{r0}                                                  ;@ save addr as well\r
856     bl pico_z80_read8\r
857         bic r0,r0,#1<<\bit\r
858         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
859     bl pico_z80_write8\r
860 .else\r
861         stmfd sp!,{r3,r12}\r
862         stmfd sp!,{r0}                                                  ;@ save addr as well\r
863         mov lr,pc\r
864         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
865         bic r0,r0,#1<<\bit\r
866         ldmfd sp!,{r1}                                                  ;@ restore addr into r1\r
867         mov lr,pc\r
868         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
869         ldmfd sp!,{r3,r12}\r
870 .endif\r
871         fetch 23\r
872 .endm\r
873 ;@---------------------------------------\r
874 \r
875 .macro opRL reg1 reg2 shift\r
876         movs \reg1,\reg2,lsl \shift\r
877         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
878         orrne \reg1,\reg1,#0x01000000\r
879 ;@      and r2,z80f,#1<<CFlag\r
880 ;@      orr $x,$x,r2,lsl#23\r
881         sub r1,opcodes,#0x100\r
882         ldrb z80f,[r1,\reg1,lsr#24]                             ;@get PZS\r
883         orrcs z80f,z80f,#1<<CFlag\r
884 .endm\r
885 \r
886 .macro opRLA\r
887         opRL z80a, z80a, #1\r
888         fetch 8\r
889 .endm\r
890 \r
891 .macro opRLH reg\r
892         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
893         adds \reg,\reg,r0\r
894         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
895         orrne \reg,\reg,#0x01000000\r
896         sub r1,opcodes,#0x100\r
897         ldrb z80f,[r1,\reg,lsr#24]                              ;@get PZS\r
898         orrcs z80f,z80f,#1<<CFlag\r
899         fetch 8\r
900 .endm\r
901 \r
902 .macro opRLL reg\r
903         opRL r0, \reg, #9\r
904         and \reg,\reg,#0xFF000000                               ;@mask out high\r
905         orr \reg,\reg,r0,lsr#8\r
906         fetch 8\r
907 .endm\r
908 \r
909 .macro opRLb\r
910         opRL r0, r0, #25\r
911         mov r0,r0,lsr#24\r
912 .endm\r
913 ;@---------------------------------------\r
914 \r
915 .macro opRLC reg1 reg2 shift\r
916         movs \reg1,\reg2,lsl#\shift\r
917         orrcs \reg1,\reg1,#0x01000000\r
918         sub r1,opcodes,#0x100\r
919         ldrb z80f,[r1,\reg1,lsr#24]\r
920         orrcs z80f,z80f,#1<<CFlag\r
921 .endm\r
922 \r
923 .macro opRLCA\r
924         opRLC z80a, z80a, 1\r
925         fetch 8\r
926 .endm\r
927 \r
928 .macro opRLCH reg\r
929         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
930         adds \reg,\reg,r0\r
931         orrcs \reg,\reg,#0x01000000\r
932         sub r1,opcodes,#0x100\r
933         ldrb z80f,[r1,\reg,lsr#24]\r
934         orrcs z80f,z80f,#1<<CFlag\r
935         fetch 8\r
936 .endm\r
937 \r
938 .macro opRLCL reg\r
939         opRLC r0, \reg, 9\r
940         and \reg,\reg,#0xFF000000                               ;@mask out high\r
941         orr \reg,\reg,r0,lsr#8\r
942         fetch 8\r
943 .endm\r
944 \r
945 .macro opRLCb\r
946         opRLC r0, r0, 25\r
947         mov r0,r0,lsr#24\r
948 .endm\r
949 ;@---------------------------------------\r
950 \r
951 .macro opRR reg1 reg2 shift\r
952         movs \reg1,\reg2,lsr#\shift\r
953         tst z80f,#1<<CFlag                                              ;@doesn't affect ARM carry, as long as the imidiate value is < 0x100. Watch out!\r
954         orrne \reg1,\reg1,#0x00000080\r
955 ;@      and r2,z80_f,#PSR_C\r
956 ;@      orr \reg1,\reg1,r2,lsl#6\r
957         sub r1,opcodes,#0x100\r
958         ldrb z80f,[r1,\reg1]\r
959         orrcs z80f,z80f,#1<<CFlag\r
960 .endm\r
961 \r
962 .macro opRRA\r
963         orr z80a,z80a,z80f,lsr#1                                ;@get C\r
964         movs z80a,z80a,ror#25\r
965         mov z80a,z80a,lsl#24\r
966         sub r1,opcodes,#0x100\r
967         ldrb z80f,[r1,z80a,lsr#24]\r
968         orrcs z80f,z80f,#1<<CFlag\r
969         fetch 8\r
970 .endm\r
971 \r
972 .macro opRRH reg\r
973         orr r0,\reg,z80f,lsr#1                                  ;@get C\r
974         movs r0,r0,ror#25\r
975         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
976         orr \reg,\reg,r0,lsl#24\r
977         sub r1,opcodes,#0x100\r
978         ldrb z80f,[r1,\reg,lsr#24]\r
979         orrcs z80f,z80f,#1<<CFlag\r
980         fetch 8\r
981 .endm\r
982 \r
983 .macro opRRL reg\r
984         and r0,\reg,#0x00FF0000                                 ;@mask out low to r0\r
985         opRR r0 r0 17\r
986         and \reg,\reg,#0xFF000000                               ;@mask out high\r
987         orr \reg,\reg,r0,lsl#16\r
988         fetch 8\r
989 .endm\r
990 \r
991 .macro opRRb\r
992         opRR r0 r0 1\r
993 .endm\r
994 ;@---------------------------------------\r
995 \r
996 .macro opRRC reg1 reg2 shift\r
997         movs \reg1,\reg2,lsr#\shift\r
998         orrcs \reg1,\reg1,#0x00000080\r
999         sub r1,opcodes,#0x100\r
1000         ldrb z80f,[r1,\reg1]\r
1001         orrcs z80f,z80f,#1<<CFlag\r
1002 .endm\r
1003 \r
1004 .macro opRRCA\r
1005         opRRC z80a, z80a, 25\r
1006         mov z80a,z80a,lsl#24\r
1007         fetch 8\r
1008 .endm\r
1009 \r
1010 .macro opRRCH reg\r
1011         opRRC r0, \reg, 25\r
1012         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1013         orr \reg,\reg,r0,lsl#24\r
1014         fetch 8\r
1015 .endm\r
1016 \r
1017 .macro opRRCL reg\r
1018         and r0,\reg,#0x00FF0000                                 ;@mask low to r0\r
1019         opRRC r0, r0, 17\r
1020         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1021         orr \reg,\reg,r0,lsl#16\r
1022         fetch 8\r
1023 .endm\r
1024 \r
1025 .macro opRRCb\r
1026         opRRC r0, r0, 1\r
1027 .endm\r
1028 ;@---------------------------------------\r
1029 \r
1030 .macro opRST addr\r
1031         ldr r0,[cpucontext,#z80pc_base]\r
1032         sub r2,z80pc,r0\r
1033     opPUSHareg r2\r
1034         mov r0,#\addr\r
1035         rebasepc\r
1036         fetch 11\r
1037 .endm\r
1038 ;@---------------------------------------\r
1039 \r
1040 .macro opSBC\r
1041         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1042         movs z80f,z80f,lsr#2                                    ;@ get C\r
1043         subcc r0,r0,#0x100\r
1044         eor z80f,r0,z80a,lsr#24                                 ;@ prepare for check of H\r
1045         sbcs z80a,z80a,r0,ror#8\r
1046         mrs r0,cpsr\r
1047         eor z80f,z80f,z80a,lsr#24\r
1048         and z80f,z80f,#1<<HFlag                                 ;@ H, correct\r
1049         orr z80f,z80f,r0,lsr#28                                 ;@ S,Z,V&C\r
1050         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1051 .endm\r
1052 \r
1053 .macro opSBCA\r
1054         movs z80f,z80f,lsr#2                                    ;@ get C\r
1055         movcc z80a,#0x00000000\r
1056         movcs z80a,#0xFF000000\r
1057         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1058         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1059         fetch 4\r
1060 .endm\r
1061 \r
1062 .macro opSBCH reg\r
1063         mov r0,\reg,lsr#24\r
1064         opSBC\r
1065         fetch 4\r
1066 .endm\r
1067 \r
1068 .macro opSBCL reg\r
1069         mov r0,\reg,lsl#8\r
1070         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1071         movs z80f,z80f,lsr#2                                    ;@ get C\r
1072         sbccc r0,r0,#0xFF000000\r
1073         mov r1,z80a,lsl#4                                               ;@ prepare for check of H\r
1074         sbcs z80a,z80a,r0\r
1075         mrs z80f,cpsr\r
1076         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1077         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1078         cmp r1,r0,lsl#4\r
1079         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1080         fetch 4\r
1081 .endm\r
1082 \r
1083 .macro opSBCb\r
1084         opSBC\r
1085 .endm\r
1086 ;@---------------------------------------\r
1087 \r
1088 .macro opSBC16 reg\r
1089         eor z80f,z80f,#1<<CFlag                                 ;@ invert C\r
1090         movs z80f,z80f,lsr#2                                    ;@ get C\r
1091         sbc r1,r1,r1                                                    ;@ set r1 to -1 or 0.\r
1092         orr r0,\reg,r1,lsr#16\r
1093         mov r1,z80hl,lsl#4                                              ;@ prepare for check of H\r
1094         sbcs z80hl,z80hl,r0\r
1095         mrs z80f,cpsr\r
1096         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1097         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n.\r
1098         cmp r1,r0,lsl#4\r
1099         orrcc z80f,z80f,#1<<HFlag                               ;@ H, correct\r
1100         fetch 15\r
1101 .endm\r
1102 \r
1103 .macro opSBC16HL\r
1104         movs z80f,z80f,lsr#2                                    ;@ get C\r
1105         mov z80hl,#0x00000000\r
1106         subcs z80hl,z80hl,#0x00010000\r
1107         movcc z80f,#(1<<NFlag)|(1<<ZFlag)\r
1108         movcs z80f,#(1<<NFlag)|(1<<SFlag)|(1<<CFlag)|(1<<HFlag)\r
1109         fetch 15\r
1110 .endm\r
1111 ;@---------------------------------------\r
1112 \r
1113 .macro opSETmemHL bit\r
1114 .if DRZ80_FOR_PICODRIVE\r
1115         mov r0,z80hl, lsr #16\r
1116     bl pico_z80_read8\r
1117         orr r0,r0,#1<<\bit\r
1118         mov r1,z80hl, lsr #16\r
1119     bl pico_z80_write8\r
1120 .else\r
1121         mov r0,z80hl, lsr #16\r
1122         stmfd sp!,{r3,r12}\r
1123         mov lr,pc\r
1124         ldr pc,[cpucontext,#z80_read8]                  ;@ r0 = addr - data returned in r0\r
1125         orr r0,r0,#1<<\bit\r
1126         mov r1,z80hl, lsr #16\r
1127         mov lr,pc\r
1128         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1129         ldmfd sp!,{r3,r12}\r
1130 .endif\r
1131     fetch 15\r
1132 .endm\r
1133 ;@---------------------------------------\r
1134 \r
1135 .macro opSETmem bit\r
1136 .if DRZ80_FOR_PICODRIVE\r
1137         stmfd sp!,{r0}  ;@ save addr as well\r
1138     bl pico_z80_read8\r
1139         orr r0,r0,#1<<\bit\r
1140         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1141     bl pico_z80_write8\r
1142 .else\r
1143         stmfd sp!,{r3,r12}\r
1144         stmfd sp!,{r0}  ;@ save addr as well\r
1145         mov lr,pc\r
1146         ldr pc,[cpucontext,#z80_read8]                  ;@ r0=addr - data returned in r0\r
1147         orr r0,r0,#1<<\bit\r
1148         ldmfd sp!,{r1}  ;@ restore addr into r1\r
1149         mov lr,pc\r
1150         ldr pc,[cpucontext,#z80_write8]                 ;@ r0=data r1=addr\r
1151         ldmfd sp!,{r3,r12}\r
1152 .endif\r
1153         fetch 23\r
1154 .endm\r
1155 ;@---------------------------------------\r
1156 \r
1157 .macro opSLA reg1 reg2 shift\r
1158         movs \reg1,\reg2,lsl#\shift\r
1159         sub r1,opcodes,#0x100\r
1160         ldrb z80f,[r1,\reg1,lsr#24]\r
1161         orrcs z80f,z80f,#1<<CFlag\r
1162 .endm\r
1163 \r
1164 .macro opSLAA\r
1165         opSLA z80a, z80a, 1\r
1166         fetch 8\r
1167 .endm\r
1168 \r
1169 .macro opSLAH reg\r
1170         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1171         adds \reg,\reg,r0\r
1172         sub r1,opcodes,#0x100\r
1173         ldrb z80f,[r1,\reg,lsr#24]\r
1174         orrcs z80f,z80f,#1<<CFlag\r
1175         fetch 8\r
1176 .endm\r
1177 \r
1178 .macro opSLAL reg\r
1179         opSLA r0, \reg, 9\r
1180         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1181         orr \reg,\reg,r0,lsr#8\r
1182         fetch 8\r
1183 .endm\r
1184 \r
1185 .macro opSLAb\r
1186         opSLA r0, r0, 25\r
1187         mov r0,r0,lsr#24\r
1188 .endm\r
1189 ;@---------------------------------------\r
1190 \r
1191 .macro opSLL reg1 reg2 shift\r
1192         movs \reg1,\reg2,lsl#\shift\r
1193         orr \reg1,\reg1,#0x01000000\r
1194         sub r1,opcodes,#0x100\r
1195         ldrb z80f,[r1,\reg1,lsr#24]\r
1196         orrcs z80f,z80f,#1<<CFlag\r
1197 .endm\r
1198 \r
1199 .macro opSLLA\r
1200         opSLL z80a, z80a, 1\r
1201         fetch 8\r
1202 .endm\r
1203 \r
1204 .macro opSLLH reg\r
1205         and r0,\reg,#0xFF000000                                 ;@mask high to r0\r
1206         adds \reg,\reg,r0\r
1207         orr \reg,\reg,#0x01000000\r
1208         sub r1,opcodes,#0x100\r
1209         ldrb z80f,[r1,\reg,lsr#24]\r
1210         orrcs z80f,z80f,#1<<CFlag\r
1211         fetch 8\r
1212 .endm\r
1213 \r
1214 .macro opSLLL reg\r
1215         opSLL r0, \reg, 9\r
1216         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1217         orr \reg,\reg,r0,lsr#8\r
1218         fetch 8\r
1219 .endm\r
1220 \r
1221 .macro opSLLb\r
1222         opSLL r0, r0, 25\r
1223         mov r0,r0,lsr#24\r
1224 .endm\r
1225 ;@---------------------------------------\r
1226 \r
1227 .macro opSRA reg1 reg2\r
1228         movs \reg1,\reg2,asr#25\r
1229         and \reg1,\reg1,#0xFF\r
1230         sub r1,opcodes,#0x100\r
1231         ldrb z80f,[r1,\reg1]\r
1232         orrcs z80f,z80f,#1<<CFlag\r
1233 .endm\r
1234 \r
1235 .macro opSRAA\r
1236         movs r0,z80a,asr#25\r
1237         mov z80a,r0,lsl#24\r
1238         sub r1,opcodes,#0x100\r
1239         ldrb z80f,[r1,z80a,lsr#24]\r
1240         orrcs z80f,z80f,#1<<CFlag\r
1241         fetch 8\r
1242 .endm\r
1243 \r
1244 .macro opSRAH reg\r
1245         movs r0,\reg,asr#25\r
1246         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1247         orr \reg,\reg,r0,lsl#24\r
1248         sub r1,opcodes,#0x100\r
1249         ldrb z80f,[r1,\reg,lsr#24]\r
1250         orrcs z80f,z80f,#1<<CFlag\r
1251         fetch 8\r
1252 .endm\r
1253 \r
1254 .macro opSRAL reg\r
1255         mov r0,\reg,lsl#8\r
1256         opSRA r0, r0\r
1257         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1258         orr \reg,\reg,r0,lsl#16\r
1259         fetch 8\r
1260 .endm\r
1261 \r
1262 .macro opSRAb\r
1263         mov r0,r0,lsl#24\r
1264         opSRA r0, r0\r
1265 .endm\r
1266 ;@---------------------------------------\r
1267 \r
1268 .macro opSRL reg1 reg2 shift\r
1269         movs \reg1,\reg2,lsr#\shift\r
1270         sub r1,opcodes,#0x100\r
1271         ldrb z80f,[r1,\reg1]\r
1272         orrcs z80f,z80f,#1<<CFlag\r
1273 .endm\r
1274 \r
1275 .macro opSRLA\r
1276         opSRL z80a, z80a, 25\r
1277         mov z80a,z80a,lsl#24\r
1278         fetch 8\r
1279 .endm\r
1280 \r
1281 .macro opSRLH reg\r
1282         opSRL r0, \reg, 25\r
1283         and \reg,\reg,#0x00FF0000                               ;@mask out low\r
1284         orr \reg,\reg,r0,lsl#24\r
1285         fetch 8\r
1286 .endm\r
1287 \r
1288 .macro opSRLL reg\r
1289         mov r0,\reg,lsl#8\r
1290         opSRL r0, r0, 25\r
1291         and \reg,\reg,#0xFF000000                               ;@mask out high\r
1292         orr \reg,\reg,r0,lsl#16\r
1293         fetch 8\r
1294 .endm\r
1295 \r
1296 .macro opSRLb\r
1297         opSRL r0, r0, 1\r
1298 .endm\r
1299 ;@---------------------------------------\r
1300 \r
1301 .macro opSUB reg shift\r
1302         mov r1,z80a,lsl#4                                               ;@ Prepare for check of half carry\r
1303         subs z80a,z80a,\reg,lsl#\shift\r
1304         mrs z80f,cpsr\r
1305         mov z80f,z80f,lsr#28                                    ;@ S,Z,V&C\r
1306         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@ invert C and set n\r
1307         cmp r1,\reg,lsl#\shift+4\r
1308         orrcc z80f,z80f,#1<<HFlag\r
1309 .endm\r
1310 \r
1311 .macro opSUBA\r
1312         mov z80a,#0\r
1313         mov z80f,#(1<<ZFlag)|(1<<NFlag)                 ;@ set Z & n\r
1314         fetch 4\r
1315 .endm\r
1316 \r
1317 .macro opSUBH reg\r
1318         and r0,\reg,#0xFF000000\r
1319         opSUB r0, 0\r
1320         fetch 4\r
1321 .endm\r
1322 \r
1323 .macro opSUBL reg\r
1324         opSUB \reg, 8\r
1325         fetch 4\r
1326 .endm\r
1327 \r
1328 .macro opSUBb\r
1329         opSUB r0, 24\r
1330 .endm\r
1331 ;@---------------------------------------\r
1332 \r
1333 .macro opXOR reg shift\r
1334         eor z80a,z80a,\reg,lsl#\shift\r
1335         sub r0,opcodes,#0x100\r
1336         ldrb z80f,[r0,z80a, lsr #24]\r
1337 .endm\r
1338 \r
1339 .macro opXORA\r
1340         mov z80a,#0\r
1341         mov z80f,#(1<<ZFlag)|(1<<VFlag)\r
1342         fetch 4\r
1343 .endm\r
1344 \r
1345 .macro opXORH reg\r
1346         and r0,\reg,#0xFF000000\r
1347         opXOR r0, 0\r
1348         fetch 4\r
1349 .endm\r
1350 \r
1351 .macro opXORL reg\r
1352         opXOR \reg, 8\r
1353         fetch 4\r
1354 .endm\r
1355 \r
1356 .macro opXORb\r
1357         opXOR r0, 24\r
1358 .endm\r
1359 ;@---------------------------------------\r
1360 \r
1361 \r
1362 ;@ --------------------------- Framework --------------------------\r
1363     \r
1364 .text\r
1365 \r
1366 DrZ80Run:\r
1367         ;@ r0 = pointer to cpu context\r
1368         ;@ r1 = ISTATES to execute  \r
1369         ;@#########################################   \r
1370         stmdb sp!,{r4-r12,lr}                                   ;@ save registers on stack\r
1371         mov cpucontext,r0                                               ;@ setup main memory pointer\r
1372         mov z80_icount,r1                                               ;@ setup number of Tstates to execute\r
1373 \r
1374 .if INTERRUPT_MODE == 0\r
1375         ldrh r0,[cpucontext,#z80irq] @ 0x4C\r
1376 .endif\r
1377         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1378 \r
1379 .if INTERRUPT_MODE == 0\r
1380         ;@ check ints\r
1381         tst r0,#1\r
1382         movnes r0,r0,lsr #8\r
1383     blne DoInterrupt\r
1384 .endif\r
1385 \r
1386         ldrb r0,[z80pc],#1    ;@ get first op code\r
1387         ldr opcodes,MAIN_opcodes_POINTER2\r
1388         ldr pc,[opcodes,r0, lsl #2]  ;@ execute op code\r
1389 \r
1390 MAIN_opcodes_POINTER2: .word MAIN_opcodes\r
1391 \r
1392 \r
1393 z80_execute_end:\r
1394         ;@ save registers in CPU context\r
1395         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1396     mov r0,z80_icount\r
1397         ldmia sp!,{r4-r12,pc}                                   ;@ restore registers from stack and return to C code\r
1398 \r
1399 .if INTERRUPT_MODE\r
1400 Interrupt_local: .word Interrupt\r
1401 .endif\r
1402 \r
1403 DoInterrupt:\r
1404 .if INTERRUPT_MODE\r
1405         ;@ Don't do own int handler, call mames instead\r
1406 \r
1407         ;@ save everything back into DrZ80 context\r
1408         stmia cpucontext,{z80pc-z80sp}                  ;@ save Z80 registers\r
1409         stmfd sp!,{r3,r4,r5,lr}                                 ;@ save rest of regs on stack\r
1410         mov lr,pc\r
1411         ldr pc,Interrupt_local\r
1412         ldmfd sp!,{r3,r4,r5,lr}                                 ;@ load regs from stack\r
1413         ;@ reload regs from DrZ80 context\r
1414         ldmia cpucontext,{z80pc-z80sp}                  ;@ load Z80 registers\r
1415         mov pc,lr ;@ return\r
1416 .else\r
1417         stmfd sp!,{lr}\r
1418 \r
1419         tst r0,#4 ;@ check halt\r
1420         addne z80pc,z80pc,#1\r
1421 \r
1422         ldrb r1,[cpucontext,#z80im]\r
1423 \r
1424     ;@ clear halt and int flags\r
1425         eor r0,r0,r0\r
1426         strb r0,[cpucontext,#z80if]\r
1427 \r
1428         ;@ now check int mode\r
1429     tst r1,#1\r
1430     bne DoInterrupt_mode1\r
1431     tst r1,#2\r
1432     bne DoInterrupt_mode2\r
1433 \r
1434 DoInterrupt_mode0:\r
1435         ;@ get 3 byte vector\r
1436         ldr r2,[cpucontext, #z80irqvector]\r
1437         and r1,r2,#0xFF0000\r
1438         cmp r1,#0xCD0000  ;@ call\r
1439         bne 1f\r
1440         ;@ ########\r
1441         ;@ # call\r
1442         ;@ ########\r
1443         ;@ save current pc on stack\r
1444         ldr r0,[cpucontext,#z80pc_base]\r
1445         sub r0,z80pc,r0\r
1446 .if FAST_Z80SP\r
1447         mov r1,r0, lsr #8\r
1448         strb r1,[z80sp,#-1]!\r
1449         strb r0,[z80sp,#-1]!\r
1450 .else\r
1451         sub z80sp,z80sp,#2\r
1452         mov r1,z80sp\r
1453         writemem16\r
1454         ldr r2,[cpucontext, #z80irqvector]\r
1455 .endif\r
1456         ;@ jump to vector\r
1457         mov r2,r2,lsl#16\r
1458         mov r0,r2,lsr#16\r
1459         ;@ rebase new pc\r
1460         rebasepc\r
1461 \r
1462         b DoInterrupt_end\r
1463 \r
1464 1:\r
1465         cmp r1,#0xC30000  ;@ jump\r
1466         bne DoInterrupt_mode1    ;@ rst\r
1467         ;@ #######\r
1468         ;@ # jump\r
1469         ;@ #######\r
1470         ;@ jump to vector\r
1471         mov r2,r2,lsl#16\r
1472         mov r0,r2,lsr#16\r
1473         ;@ rebase new pc\r
1474         rebasepc\r
1475 \r
1476         b DoInterrupt_end\r
1477 \r
1478 DoInterrupt_mode1:\r
1479         ldr r0,[cpucontext,#z80pc_base]\r
1480         sub r2,z80pc,r0\r
1481     opPUSHareg r2\r
1482         mov r0,#0x38\r
1483         rebasepc\r
1484 \r
1485         b DoInterrupt_end\r
1486 \r
1487 DoInterrupt_mode2:\r
1488         ;@ push pc on stack\r
1489         ldr r0,[cpucontext,#z80pc_base]\r
1490         sub r2,z80pc,r0\r
1491     opPUSHareg r2\r
1492 \r
1493         ;@ get 1 byte vector address\r
1494         ldrb r0,[cpucontext, #z80irqvector]\r
1495         ldr r1,[cpucontext, #z80i]\r
1496         orr r0,r0,r1,lsr#16\r
1497 \r
1498         ;@ read new pc from vector address\r
1499 .if DRZ80_FOR_PICODRIVE\r
1500     bl pico_z80_read16\r
1501     bic r0,r0,#0xfe000\r
1502     ldr r1,[cpucontext,#z80pc_base]\r
1503     add z80pc,r1,r0\r
1504 .if UPDATE_CONTEXT\r
1505      str z80pc,[cpucontext,#z80pc_pointer]\r
1506 .endif\r
1507 .else\r
1508         stmfd sp!,{r3,r12}\r
1509         mov lr,pc\r
1510         ldr pc,[cpucontext,#z80_read16]\r
1511 \r
1512         ;@ rebase new pc\r
1513 .if UPDATE_CONTEXT\r
1514      str z80pc,[cpucontext,#z80pc_pointer]\r
1515 .endif\r
1516         mov lr,pc\r
1517         ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
1518         ldmfd sp!,{r3,r12}\r
1519         mov z80pc,r0    \r
1520 .endif\r
1521 \r
1522 DoInterrupt_end:\r
1523         ;@ interupt accepted so callback irq interface\r
1524         ldr r0,[cpucontext, #z80irqcallback]\r
1525         tst r0,r0\r
1526         ldmeqfd sp!,{pc}\r
1527         stmfd sp!,{r3,r12}\r
1528         mov lr,pc\r
1529         mov pc,r0    ;@ call callback function\r
1530         ldmfd sp!,{r3,r12}\r
1531         ldmfd sp!,{pc} ;@ return\r
1532 \r
1533 .endif\r
1534 \r
1535 .data\r
1536 .align 4\r
1537 \r
1538 DAATable: .hword  (0x00<<8)|(1<<ZFlag)|(1<<VFlag)\r
1539          .hword  (0x01<<8)                  \r
1540          .hword  (0x02<<8)                  \r
1541          .hword  (0x03<<8)               |(1<<VFlag)\r
1542          .hword  (0x04<<8)                  \r
1543          .hword  (0x05<<8)               |(1<<VFlag)\r
1544          .hword  (0x06<<8)               |(1<<VFlag)\r
1545          .hword  (0x07<<8)                  \r
1546          .hword  (0x08<<8)               \r
1547          .hword  (0x09<<8)            |(1<<VFlag)\r
1548          .hword  (0x10<<8)         |(1<<HFlag)      \r
1549          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1550          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1551          .hword  (0x13<<8)         |(1<<HFlag)      \r
1552          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1553          .hword  (0x15<<8)         |(1<<HFlag)      \r
1554          .hword  (0x10<<8)                  \r
1555          .hword  (0x11<<8)               |(1<<VFlag)\r
1556          .hword  (0x12<<8)               |(1<<VFlag)\r
1557          .hword  (0x13<<8)                  \r
1558          .hword  (0x14<<8)               |(1<<VFlag)\r
1559          .hword  (0x15<<8)                  \r
1560          .hword  (0x16<<8)                  \r
1561          .hword  (0x17<<8)               |(1<<VFlag)\r
1562          .hword  (0x18<<8)            |(1<<VFlag)\r
1563          .hword  (0x19<<8)               \r
1564          .hword  (0x20<<8)      |(1<<HFlag)      \r
1565          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1566          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1567          .hword  (0x23<<8)      |(1<<HFlag)      \r
1568          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1569          .hword  (0x25<<8)      |(1<<HFlag)      \r
1570          .hword  (0x20<<8)               \r
1571          .hword  (0x21<<8)            |(1<<VFlag)\r
1572          .hword  (0x22<<8)            |(1<<VFlag)\r
1573          .hword  (0x23<<8)               \r
1574          .hword  (0x24<<8)            |(1<<VFlag)\r
1575          .hword  (0x25<<8)               \r
1576          .hword  (0x26<<8)               \r
1577          .hword  (0x27<<8)            |(1<<VFlag)\r
1578          .hword  (0x28<<8)         |(1<<VFlag)\r
1579          .hword  (0x29<<8)            \r
1580          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1581          .hword  (0x31<<8)      |(1<<HFlag)      \r
1582          .hword  (0x32<<8)      |(1<<HFlag)      \r
1583          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1584          .hword  (0x34<<8)      |(1<<HFlag)      \r
1585          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1586          .hword  (0x30<<8)            |(1<<VFlag)\r
1587          .hword  (0x31<<8)               \r
1588          .hword  (0x32<<8)               \r
1589          .hword  (0x33<<8)            |(1<<VFlag)\r
1590          .hword  (0x34<<8)               \r
1591          .hword  (0x35<<8)            |(1<<VFlag)\r
1592          .hword  (0x36<<8)            |(1<<VFlag)\r
1593          .hword  (0x37<<8)               \r
1594          .hword  (0x38<<8)            \r
1595          .hword  (0x39<<8)         |(1<<VFlag)\r
1596          .hword  (0x40<<8)         |(1<<HFlag)      \r
1597          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1598          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1599          .hword  (0x43<<8)         |(1<<HFlag)      \r
1600          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1601          .hword  (0x45<<8)         |(1<<HFlag)      \r
1602          .hword  (0x40<<8)                  \r
1603          .hword  (0x41<<8)               |(1<<VFlag)\r
1604          .hword  (0x42<<8)               |(1<<VFlag)\r
1605          .hword  (0x43<<8)                  \r
1606          .hword  (0x44<<8)               |(1<<VFlag)\r
1607          .hword  (0x45<<8)                  \r
1608          .hword  (0x46<<8)                  \r
1609          .hword  (0x47<<8)               |(1<<VFlag)\r
1610          .hword  (0x48<<8)            |(1<<VFlag)\r
1611          .hword  (0x49<<8)               \r
1612          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1613          .hword  (0x51<<8)         |(1<<HFlag)      \r
1614          .hword  (0x52<<8)         |(1<<HFlag)      \r
1615          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1616          .hword  (0x54<<8)         |(1<<HFlag)      \r
1617          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
1618          .hword  (0x50<<8)               |(1<<VFlag)\r
1619          .hword  (0x51<<8)                  \r
1620          .hword  (0x52<<8)                  \r
1621          .hword  (0x53<<8)               |(1<<VFlag)\r
1622          .hword  (0x54<<8)                  \r
1623          .hword  (0x55<<8)               |(1<<VFlag)\r
1624          .hword  (0x56<<8)               |(1<<VFlag)\r
1625          .hword  (0x57<<8)                  \r
1626          .hword  (0x58<<8)               \r
1627          .hword  (0x59<<8)            |(1<<VFlag)\r
1628          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1629          .hword  (0x61<<8)      |(1<<HFlag)      \r
1630          .hword  (0x62<<8)      |(1<<HFlag)      \r
1631          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1632          .hword  (0x64<<8)      |(1<<HFlag)      \r
1633          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1634          .hword  (0x60<<8)            |(1<<VFlag)\r
1635          .hword  (0x61<<8)               \r
1636          .hword  (0x62<<8)               \r
1637          .hword  (0x63<<8)            |(1<<VFlag)\r
1638          .hword  (0x64<<8)               \r
1639          .hword  (0x65<<8)            |(1<<VFlag)\r
1640          .hword  (0x66<<8)            |(1<<VFlag)\r
1641          .hword  (0x67<<8)               \r
1642          .hword  (0x68<<8)            \r
1643          .hword  (0x69<<8)         |(1<<VFlag)\r
1644          .hword  (0x70<<8)      |(1<<HFlag)      \r
1645          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1646          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1647          .hword  (0x73<<8)      |(1<<HFlag)      \r
1648          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
1649          .hword  (0x75<<8)      |(1<<HFlag)      \r
1650          .hword  (0x70<<8)               \r
1651          .hword  (0x71<<8)            |(1<<VFlag)\r
1652          .hword  (0x72<<8)            |(1<<VFlag)\r
1653          .hword  (0x73<<8)               \r
1654          .hword  (0x74<<8)            |(1<<VFlag)\r
1655          .hword  (0x75<<8)               \r
1656          .hword  (0x76<<8)               \r
1657          .hword  (0x77<<8)            |(1<<VFlag)\r
1658          .hword  (0x78<<8)         |(1<<VFlag)\r
1659          .hword  (0x79<<8)            \r
1660          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1661          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1662          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1663          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1664          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1665          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1666          .hword  (0x80<<8)|(1<<SFlag)               \r
1667          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)\r
1668          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)\r
1669          .hword  (0x83<<8)|(1<<SFlag)               \r
1670          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)\r
1671          .hword  (0x85<<8)|(1<<SFlag)               \r
1672          .hword  (0x86<<8)|(1<<SFlag)               \r
1673          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
1674          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
1675          .hword  (0x89<<8)|(1<<SFlag)            \r
1676          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1677          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1678          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1679          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1680          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
1681          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
1682          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)\r
1683          .hword  (0x91<<8)|(1<<SFlag)               \r
1684          .hword  (0x92<<8)|(1<<SFlag)               \r
1685          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)\r
1686          .hword  (0x94<<8)|(1<<SFlag)               \r
1687          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)\r
1688          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
1689          .hword  (0x97<<8)|(1<<SFlag)               \r
1690          .hword  (0x98<<8)|(1<<SFlag)            \r
1691          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
1692          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1693          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1694          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1695          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1696          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1697          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1698          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1699          .hword  (0x01<<8)                     |(1<<CFlag)\r
1700          .hword  (0x02<<8)                     |(1<<CFlag)\r
1701          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1702          .hword  (0x04<<8)                     |(1<<CFlag)\r
1703          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1704          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1705          .hword  (0x07<<8)                     |(1<<CFlag)\r
1706          .hword  (0x08<<8)                  |(1<<CFlag)\r
1707          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1708          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1709          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1710          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1711          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1712          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1713          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1714          .hword  (0x10<<8)                     |(1<<CFlag)\r
1715          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1716          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1717          .hword  (0x13<<8)                     |(1<<CFlag)\r
1718          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1719          .hword  (0x15<<8)                     |(1<<CFlag)\r
1720          .hword  (0x16<<8)                     |(1<<CFlag)\r
1721          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1722          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1723          .hword  (0x19<<8)                  |(1<<CFlag)\r
1724          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1725          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1726          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1727          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1728          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1729          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1730          .hword  (0x20<<8)                  |(1<<CFlag)\r
1731          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1732          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1733          .hword  (0x23<<8)                  |(1<<CFlag)\r
1734          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1735          .hword  (0x25<<8)                  |(1<<CFlag)\r
1736          .hword  (0x26<<8)                  |(1<<CFlag)\r
1737          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1738          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1739          .hword  (0x29<<8)               |(1<<CFlag)\r
1740          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1741          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1742          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1743          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1744          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1745          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1746          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1747          .hword  (0x31<<8)                  |(1<<CFlag)\r
1748          .hword  (0x32<<8)                  |(1<<CFlag)\r
1749          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1750          .hword  (0x34<<8)                  |(1<<CFlag)\r
1751          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1752          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1753          .hword  (0x37<<8)                  |(1<<CFlag)\r
1754          .hword  (0x38<<8)               |(1<<CFlag)\r
1755          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1756          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1757          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1758          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1759          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1760          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1761          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1762          .hword  (0x40<<8)                     |(1<<CFlag)\r
1763          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1764          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1765          .hword  (0x43<<8)                     |(1<<CFlag)\r
1766          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1767          .hword  (0x45<<8)                     |(1<<CFlag)\r
1768          .hword  (0x46<<8)                     |(1<<CFlag)\r
1769          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1770          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1771          .hword  (0x49<<8)                  |(1<<CFlag)\r
1772          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1773          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1774          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1775          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1776          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1777          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1778          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1779          .hword  (0x51<<8)                     |(1<<CFlag)\r
1780          .hword  (0x52<<8)                     |(1<<CFlag)\r
1781          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1782          .hword  (0x54<<8)                     |(1<<CFlag)\r
1783          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1784          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1785          .hword  (0x57<<8)                     |(1<<CFlag)\r
1786          .hword  (0x58<<8)                  |(1<<CFlag)\r
1787          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1788          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1789          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1790          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1791          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1792          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1793          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1794          .hword  (0x60<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1795          .hword  (0x61<<8)                  |(1<<CFlag)\r
1796          .hword  (0x62<<8)                  |(1<<CFlag)\r
1797          .hword  (0x63<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1798          .hword  (0x64<<8)                  |(1<<CFlag)\r
1799          .hword  (0x65<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1800          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1801          .hword  (0x67<<8)                  |(1<<CFlag)\r
1802          .hword  (0x68<<8)               |(1<<CFlag)\r
1803          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1804          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1805          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1806          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1807          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1808          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1809          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1810          .hword  (0x70<<8)                  |(1<<CFlag)\r
1811          .hword  (0x71<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1812          .hword  (0x72<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1813          .hword  (0x73<<8)                  |(1<<CFlag)\r
1814          .hword  (0x74<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1815          .hword  (0x75<<8)                  |(1<<CFlag)\r
1816          .hword  (0x76<<8)                  |(1<<CFlag)\r
1817          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1818          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1819          .hword  (0x79<<8)               |(1<<CFlag)\r
1820          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1821          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1822          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1823          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1824          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1825          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1826          .hword  (0x80<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1827          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1828          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1829          .hword  (0x83<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1830          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1831          .hword  (0x85<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1832          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1833          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1834          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1835          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
1836          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1837          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1838          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1839          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1840          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1841          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1842          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1843          .hword  (0x91<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1844          .hword  (0x92<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1845          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1846          .hword  (0x94<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1847          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1848          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1849          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1850          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
1851          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1852          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1853          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1854          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1855          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1856          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1857          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1858          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1859          .hword  (0xA1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1860          .hword  (0xA2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1861          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1862          .hword  (0xA4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1863          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1864          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1865          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1866          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1867          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1868          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1869          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1870          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1871          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1872          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1873          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1874          .hword  (0xB0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1875          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1876          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1877          .hword  (0xB3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1878          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1879          .hword  (0xB5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1880          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1881          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1882          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1883          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1884          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1885          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1886          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1887          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1888          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1889          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1890          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1891          .hword  (0xC1<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1892          .hword  (0xC2<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1893          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1894          .hword  (0xC4<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1895          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1896          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1897          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1898          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
1899          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1900          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1901          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1902          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1903          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1904          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1905          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
1906          .hword  (0xD0<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1907          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1908          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1909          .hword  (0xD3<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1910          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1911          .hword  (0xD5<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1912          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
1913          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
1914          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1915          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
1916          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1917          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1918          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1919          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1920          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1921          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1922          .hword  (0xE0<<8)|(1<<SFlag)               |(1<<CFlag)\r
1923          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1924          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1925          .hword  (0xE3<<8)|(1<<SFlag)               |(1<<CFlag)\r
1926          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1927          .hword  (0xE5<<8)|(1<<SFlag)               |(1<<CFlag)\r
1928          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
1929          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1930          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1931          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
1932          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1933          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1934          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1935          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1936          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
1937          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1938          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1939          .hword  (0xF1<<8)|(1<<SFlag)               |(1<<CFlag)\r
1940          .hword  (0xF2<<8)|(1<<SFlag)               |(1<<CFlag)\r
1941          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1942          .hword  (0xF4<<8)|(1<<SFlag)               |(1<<CFlag)\r
1943          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1944          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1945          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
1946          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
1947          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
1948          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1949          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1950          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1951          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1952          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1953          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1954          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)   |(1<<CFlag)\r
1955          .hword  (0x01<<8)                     |(1<<CFlag)\r
1956          .hword  (0x02<<8)                     |(1<<CFlag)\r
1957          .hword  (0x03<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1958          .hword  (0x04<<8)                     |(1<<CFlag)\r
1959          .hword  (0x05<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1960          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1961          .hword  (0x07<<8)                     |(1<<CFlag)\r
1962          .hword  (0x08<<8)                  |(1<<CFlag)\r
1963          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1964          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1965          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1966          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1967          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1968          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1969          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
1970          .hword  (0x10<<8)                     |(1<<CFlag)\r
1971          .hword  (0x11<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1972          .hword  (0x12<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1973          .hword  (0x13<<8)                     |(1<<CFlag)\r
1974          .hword  (0x14<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1975          .hword  (0x15<<8)                     |(1<<CFlag)\r
1976          .hword  (0x16<<8)                     |(1<<CFlag)\r
1977          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
1978          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1979          .hword  (0x19<<8)                  |(1<<CFlag)\r
1980          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1981          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1982          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1983          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1984          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1985          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1986          .hword  (0x20<<8)                  |(1<<CFlag)\r
1987          .hword  (0x21<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1988          .hword  (0x22<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1989          .hword  (0x23<<8)                  |(1<<CFlag)\r
1990          .hword  (0x24<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1991          .hword  (0x25<<8)                  |(1<<CFlag)\r
1992          .hword  (0x26<<8)                  |(1<<CFlag)\r
1993          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
1994          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
1995          .hword  (0x29<<8)               |(1<<CFlag)\r
1996          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
1997          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1998          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
1999          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2000          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2001          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2002          .hword  (0x30<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2003          .hword  (0x31<<8)                  |(1<<CFlag)\r
2004          .hword  (0x32<<8)                  |(1<<CFlag)\r
2005          .hword  (0x33<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2006          .hword  (0x34<<8)                  |(1<<CFlag)\r
2007          .hword  (0x35<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2008          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2009          .hword  (0x37<<8)                  |(1<<CFlag)\r
2010          .hword  (0x38<<8)               |(1<<CFlag)\r
2011          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2012          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2013          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2014          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2015          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2016          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2017          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2018          .hword  (0x40<<8)                     |(1<<CFlag)\r
2019          .hword  (0x41<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2020          .hword  (0x42<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2021          .hword  (0x43<<8)                     |(1<<CFlag)\r
2022          .hword  (0x44<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2023          .hword  (0x45<<8)                     |(1<<CFlag)\r
2024          .hword  (0x46<<8)                     |(1<<CFlag)\r
2025          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2026          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2027          .hword  (0x49<<8)                  |(1<<CFlag)\r
2028          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2029          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2030          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2031          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2032          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2033          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2034          .hword  (0x50<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2035          .hword  (0x51<<8)                     |(1<<CFlag)\r
2036          .hword  (0x52<<8)                     |(1<<CFlag)\r
2037          .hword  (0x53<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2038          .hword  (0x54<<8)                     |(1<<CFlag)\r
2039          .hword  (0x55<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2040          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2041          .hword  (0x57<<8)                     |(1<<CFlag)\r
2042          .hword  (0x58<<8)                  |(1<<CFlag)\r
2043          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2044          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2045          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2046          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2047          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2048          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2049          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2050          .hword  (0x06<<8)               |(1<<VFlag)\r
2051          .hword  (0x07<<8)                  \r
2052          .hword  (0x08<<8)               \r
2053          .hword  (0x09<<8)            |(1<<VFlag)\r
2054          .hword  (0x0A<<8)            |(1<<VFlag)\r
2055          .hword  (0x0B<<8)               \r
2056          .hword  (0x0C<<8)            |(1<<VFlag)\r
2057          .hword  (0x0D<<8)               \r
2058          .hword  (0x0E<<8)               \r
2059          .hword  (0x0F<<8)            |(1<<VFlag)\r
2060          .hword  (0x10<<8)         |(1<<HFlag)      \r
2061          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2062          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2063          .hword  (0x13<<8)         |(1<<HFlag)      \r
2064          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2065          .hword  (0x15<<8)         |(1<<HFlag)      \r
2066          .hword  (0x16<<8)                  \r
2067          .hword  (0x17<<8)               |(1<<VFlag)\r
2068          .hword  (0x18<<8)            |(1<<VFlag)\r
2069          .hword  (0x19<<8)               \r
2070          .hword  (0x1A<<8)               \r
2071          .hword  (0x1B<<8)            |(1<<VFlag)\r
2072          .hword  (0x1C<<8)               \r
2073          .hword  (0x1D<<8)            |(1<<VFlag)\r
2074          .hword  (0x1E<<8)            |(1<<VFlag)\r
2075          .hword  (0x1F<<8)               \r
2076          .hword  (0x20<<8)      |(1<<HFlag)      \r
2077          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2078          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2079          .hword  (0x23<<8)      |(1<<HFlag)      \r
2080          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2081          .hword  (0x25<<8)      |(1<<HFlag)      \r
2082          .hword  (0x26<<8)               \r
2083          .hword  (0x27<<8)            |(1<<VFlag)\r
2084          .hword  (0x28<<8)         |(1<<VFlag)\r
2085          .hword  (0x29<<8)            \r
2086          .hword  (0x2A<<8)            \r
2087          .hword  (0x2B<<8)         |(1<<VFlag)\r
2088          .hword  (0x2C<<8)            \r
2089          .hword  (0x2D<<8)         |(1<<VFlag)\r
2090          .hword  (0x2E<<8)         |(1<<VFlag)\r
2091          .hword  (0x2F<<8)            \r
2092          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2093          .hword  (0x31<<8)      |(1<<HFlag)      \r
2094          .hword  (0x32<<8)      |(1<<HFlag)      \r
2095          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2096          .hword  (0x34<<8)      |(1<<HFlag)      \r
2097          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2098          .hword  (0x36<<8)            |(1<<VFlag)\r
2099          .hword  (0x37<<8)               \r
2100          .hword  (0x38<<8)            \r
2101          .hword  (0x39<<8)         |(1<<VFlag)\r
2102          .hword  (0x3A<<8)         |(1<<VFlag)\r
2103          .hword  (0x3B<<8)            \r
2104          .hword  (0x3C<<8)         |(1<<VFlag)\r
2105          .hword  (0x3D<<8)            \r
2106          .hword  (0x3E<<8)            \r
2107          .hword  (0x3F<<8)         |(1<<VFlag)\r
2108          .hword  (0x40<<8)         |(1<<HFlag)      \r
2109          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2110          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2111          .hword  (0x43<<8)         |(1<<HFlag)      \r
2112          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2113          .hword  (0x45<<8)         |(1<<HFlag)      \r
2114          .hword  (0x46<<8)                  \r
2115          .hword  (0x47<<8)               |(1<<VFlag)\r
2116          .hword  (0x48<<8)            |(1<<VFlag)\r
2117          .hword  (0x49<<8)               \r
2118          .hword  (0x4A<<8)               \r
2119          .hword  (0x4B<<8)            |(1<<VFlag)\r
2120          .hword  (0x4C<<8)               \r
2121          .hword  (0x4D<<8)            |(1<<VFlag)\r
2122          .hword  (0x4E<<8)            |(1<<VFlag)\r
2123          .hword  (0x4F<<8)               \r
2124          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2125          .hword  (0x51<<8)         |(1<<HFlag)      \r
2126          .hword  (0x52<<8)         |(1<<HFlag)      \r
2127          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2128          .hword  (0x54<<8)         |(1<<HFlag)      \r
2129          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)\r
2130          .hword  (0x56<<8)               |(1<<VFlag)\r
2131          .hword  (0x57<<8)                  \r
2132          .hword  (0x58<<8)               \r
2133          .hword  (0x59<<8)            |(1<<VFlag)\r
2134          .hword  (0x5A<<8)            |(1<<VFlag)\r
2135          .hword  (0x5B<<8)               \r
2136          .hword  (0x5C<<8)            |(1<<VFlag)\r
2137          .hword  (0x5D<<8)               \r
2138          .hword  (0x5E<<8)               \r
2139          .hword  (0x5F<<8)            |(1<<VFlag)\r
2140          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2141          .hword  (0x61<<8)      |(1<<HFlag)      \r
2142          .hword  (0x62<<8)      |(1<<HFlag)      \r
2143          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2144          .hword  (0x64<<8)      |(1<<HFlag)      \r
2145          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2146          .hword  (0x66<<8)            |(1<<VFlag)\r
2147          .hword  (0x67<<8)               \r
2148          .hword  (0x68<<8)            \r
2149          .hword  (0x69<<8)         |(1<<VFlag)\r
2150          .hword  (0x6A<<8)         |(1<<VFlag)\r
2151          .hword  (0x6B<<8)            \r
2152          .hword  (0x6C<<8)         |(1<<VFlag)\r
2153          .hword  (0x6D<<8)            \r
2154          .hword  (0x6E<<8)            \r
2155          .hword  (0x6F<<8)         |(1<<VFlag)\r
2156          .hword  (0x70<<8)      |(1<<HFlag)      \r
2157          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2158          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2159          .hword  (0x73<<8)      |(1<<HFlag)      \r
2160          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)\r
2161          .hword  (0x75<<8)      |(1<<HFlag)      \r
2162          .hword  (0x76<<8)               \r
2163          .hword  (0x77<<8)            |(1<<VFlag)\r
2164          .hword  (0x78<<8)         |(1<<VFlag)\r
2165          .hword  (0x79<<8)            \r
2166          .hword  (0x7A<<8)            \r
2167          .hword  (0x7B<<8)         |(1<<VFlag)\r
2168          .hword  (0x7C<<8)            \r
2169          .hword  (0x7D<<8)         |(1<<VFlag)\r
2170          .hword  (0x7E<<8)         |(1<<VFlag)\r
2171          .hword  (0x7F<<8)            \r
2172          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2173          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2174          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2175          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2176          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2177          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2178          .hword  (0x86<<8)|(1<<SFlag)               \r
2179          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)\r
2180          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)\r
2181          .hword  (0x89<<8)|(1<<SFlag)            \r
2182          .hword  (0x8A<<8)|(1<<SFlag)            \r
2183          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)\r
2184          .hword  (0x8C<<8)|(1<<SFlag)            \r
2185          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)\r
2186          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)\r
2187          .hword  (0x8F<<8)|(1<<SFlag)            \r
2188          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2189          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2190          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2191          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2192          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)      \r
2193          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)\r
2194          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)\r
2195          .hword  (0x97<<8)|(1<<SFlag)               \r
2196          .hword  (0x98<<8)|(1<<SFlag)            \r
2197          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)\r
2198          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)\r
2199          .hword  (0x9B<<8)|(1<<SFlag)            \r
2200          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)\r
2201          .hword  (0x9D<<8)|(1<<SFlag)            \r
2202          .hword  (0x9E<<8)|(1<<SFlag)            \r
2203          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)\r
2204          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2205          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2206          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2207          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2208          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2209          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2210          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2211          .hword  (0x07<<8)                     |(1<<CFlag)\r
2212          .hword  (0x08<<8)                  |(1<<CFlag)\r
2213          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2214          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2215          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2216          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2217          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2218          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2219          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2220          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2221          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2222          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2223          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2224          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2225          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2226          .hword  (0x16<<8)                     |(1<<CFlag)\r
2227          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2228          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2229          .hword  (0x19<<8)                  |(1<<CFlag)\r
2230          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2231          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2232          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2233          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2234          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2235          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2236          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2237          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2238          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2239          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2240          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2241          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2242          .hword  (0x26<<8)                  |(1<<CFlag)\r
2243          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2244          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2245          .hword  (0x29<<8)               |(1<<CFlag)\r
2246          .hword  (0x2A<<8)               |(1<<CFlag)\r
2247          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2248          .hword  (0x2C<<8)               |(1<<CFlag)\r
2249          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2250          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2251          .hword  (0x2F<<8)               |(1<<CFlag)\r
2252          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2253          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2254          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2255          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2256          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2257          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2258          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2259          .hword  (0x37<<8)                  |(1<<CFlag)\r
2260          .hword  (0x38<<8)               |(1<<CFlag)\r
2261          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2262          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2263          .hword  (0x3B<<8)               |(1<<CFlag)\r
2264          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2265          .hword  (0x3D<<8)               |(1<<CFlag)\r
2266          .hword  (0x3E<<8)               |(1<<CFlag)\r
2267          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2268          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2269          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2270          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2271          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2272          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2273          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2274          .hword  (0x46<<8)                     |(1<<CFlag)\r
2275          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2276          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2277          .hword  (0x49<<8)                  |(1<<CFlag)\r
2278          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2279          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2280          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2281          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2282          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2283          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2284          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2285          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2286          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2287          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2288          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2289          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2290          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2291          .hword  (0x57<<8)                     |(1<<CFlag)\r
2292          .hword  (0x58<<8)                  |(1<<CFlag)\r
2293          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2294          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2295          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2296          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2297          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2298          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2299          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2300          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2301          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2302          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2303          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2304          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2305          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2306          .hword  (0x66<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2307          .hword  (0x67<<8)                  |(1<<CFlag)\r
2308          .hword  (0x68<<8)               |(1<<CFlag)\r
2309          .hword  (0x69<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2310          .hword  (0x6A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2311          .hword  (0x6B<<8)               |(1<<CFlag)\r
2312          .hword  (0x6C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2313          .hword  (0x6D<<8)               |(1<<CFlag)\r
2314          .hword  (0x6E<<8)               |(1<<CFlag)\r
2315          .hword  (0x6F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2316          .hword  (0x70<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2317          .hword  (0x71<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2318          .hword  (0x72<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2319          .hword  (0x73<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2320          .hword  (0x74<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2321          .hword  (0x75<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2322          .hword  (0x76<<8)                  |(1<<CFlag)\r
2323          .hword  (0x77<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2324          .hword  (0x78<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2325          .hword  (0x79<<8)               |(1<<CFlag)\r
2326          .hword  (0x7A<<8)               |(1<<CFlag)\r
2327          .hword  (0x7B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2328          .hword  (0x7C<<8)               |(1<<CFlag)\r
2329          .hword  (0x7D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2330          .hword  (0x7E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2331          .hword  (0x7F<<8)               |(1<<CFlag)\r
2332          .hword  (0x80<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2333          .hword  (0x81<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2334          .hword  (0x82<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2335          .hword  (0x83<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2336          .hword  (0x84<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2337          .hword  (0x85<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2338          .hword  (0x86<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2339          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2340          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2341          .hword  (0x89<<8)|(1<<SFlag)               |(1<<CFlag)\r
2342          .hword  (0x8A<<8)|(1<<SFlag)               |(1<<CFlag)\r
2343          .hword  (0x8B<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2344          .hword  (0x8C<<8)|(1<<SFlag)               |(1<<CFlag)\r
2345          .hword  (0x8D<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2346          .hword  (0x8E<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2347          .hword  (0x8F<<8)|(1<<SFlag)               |(1<<CFlag)\r
2348          .hword  (0x90<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2349          .hword  (0x91<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2350          .hword  (0x92<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2351          .hword  (0x93<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2352          .hword  (0x94<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2353          .hword  (0x95<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2354          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2355          .hword  (0x97<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2356          .hword  (0x98<<8)|(1<<SFlag)               |(1<<CFlag)\r
2357          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2358          .hword  (0x9A<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2359          .hword  (0x9B<<8)|(1<<SFlag)               |(1<<CFlag)\r
2360          .hword  (0x9C<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2361          .hword  (0x9D<<8)|(1<<SFlag)               |(1<<CFlag)\r
2362          .hword  (0x9E<<8)|(1<<SFlag)               |(1<<CFlag)\r
2363          .hword  (0x9F<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2364          .hword  (0xA0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2365          .hword  (0xA1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2366          .hword  (0xA2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2367          .hword  (0xA3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2368          .hword  (0xA4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2369          .hword  (0xA5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2370          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2371          .hword  (0xA7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2372          .hword  (0xA8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2373          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2374          .hword  (0xAA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2375          .hword  (0xAB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2376          .hword  (0xAC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2377          .hword  (0xAD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2378          .hword  (0xAE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2379          .hword  (0xAF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2380          .hword  (0xB0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2381          .hword  (0xB1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2382          .hword  (0xB2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2383          .hword  (0xB3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2384          .hword  (0xB4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2385          .hword  (0xB5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2386          .hword  (0xB6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2387          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2388          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2389          .hword  (0xB9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2390          .hword  (0xBA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2391          .hword  (0xBB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2392          .hword  (0xBC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2393          .hword  (0xBD<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2394          .hword  (0xBE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2395          .hword  (0xBF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2396          .hword  (0xC0<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2397          .hword  (0xC1<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2398          .hword  (0xC2<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2399          .hword  (0xC3<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2400          .hword  (0xC4<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2401          .hword  (0xC5<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2402          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2403          .hword  (0xC7<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2404          .hword  (0xC8<<8)|(1<<SFlag)               |(1<<CFlag)\r
2405          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2406          .hword  (0xCA<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2407          .hword  (0xCB<<8)|(1<<SFlag)               |(1<<CFlag)\r
2408          .hword  (0xCC<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2409          .hword  (0xCD<<8)|(1<<SFlag)               |(1<<CFlag)\r
2410          .hword  (0xCE<<8)|(1<<SFlag)               |(1<<CFlag)\r
2411          .hword  (0xCF<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2412          .hword  (0xD0<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2413          .hword  (0xD1<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2414          .hword  (0xD2<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2415          .hword  (0xD3<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2416          .hword  (0xD4<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2417          .hword  (0xD5<<8)|(1<<SFlag)      |(1<<HFlag)         |(1<<CFlag)\r
2418          .hword  (0xD6<<8)|(1<<SFlag)                  |(1<<CFlag)\r
2419          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)   |(1<<CFlag)\r
2420          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2421          .hword  (0xD9<<8)|(1<<SFlag)               |(1<<CFlag)\r
2422          .hword  (0xDA<<8)|(1<<SFlag)               |(1<<CFlag)\r
2423          .hword  (0xDB<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2424          .hword  (0xDC<<8)|(1<<SFlag)               |(1<<CFlag)\r
2425          .hword  (0xDD<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2426          .hword  (0xDE<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2427          .hword  (0xDF<<8)|(1<<SFlag)               |(1<<CFlag)\r
2428          .hword  (0xE0<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2429          .hword  (0xE1<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2430          .hword  (0xE2<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2431          .hword  (0xE3<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2432          .hword  (0xE4<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2433          .hword  (0xE5<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2434          .hword  (0xE6<<8)|(1<<SFlag)               |(1<<CFlag)\r
2435          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2436          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2437          .hword  (0xE9<<8)|(1<<SFlag)            |(1<<CFlag)\r
2438          .hword  (0xEA<<8)|(1<<SFlag)            |(1<<CFlag)\r
2439          .hword  (0xEB<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2440          .hword  (0xEC<<8)|(1<<SFlag)            |(1<<CFlag)\r
2441          .hword  (0xED<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2442          .hword  (0xEE<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2443          .hword  (0xEF<<8)|(1<<SFlag)            |(1<<CFlag)\r
2444          .hword  (0xF0<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2445          .hword  (0xF1<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2446          .hword  (0xF2<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2447          .hword  (0xF3<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2448          .hword  (0xF4<<8)|(1<<SFlag)   |(1<<HFlag)         |(1<<CFlag)\r
2449          .hword  (0xF5<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2450          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)   |(1<<CFlag)\r
2451          .hword  (0xF7<<8)|(1<<SFlag)               |(1<<CFlag)\r
2452          .hword  (0xF8<<8)|(1<<SFlag)            |(1<<CFlag)\r
2453          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2454          .hword  (0xFA<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2455          .hword  (0xFB<<8)|(1<<SFlag)            |(1<<CFlag)\r
2456          .hword  (0xFC<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2457          .hword  (0xFD<<8)|(1<<SFlag)            |(1<<CFlag)\r
2458          .hword  (0xFE<<8)|(1<<SFlag)            |(1<<CFlag)\r
2459          .hword  (0xFF<<8)|(1<<SFlag)      |(1<<VFlag)   |(1<<CFlag)\r
2460          .hword  (0x00<<8)   |(1<<ZFlag)   |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2461          .hword  (0x01<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2462          .hword  (0x02<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2463          .hword  (0x03<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2464          .hword  (0x04<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2465          .hword  (0x05<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2466          .hword  (0x06<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2467          .hword  (0x07<<8)                     |(1<<CFlag)\r
2468          .hword  (0x08<<8)                  |(1<<CFlag)\r
2469          .hword  (0x09<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2470          .hword  (0x0A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2471          .hword  (0x0B<<8)                  |(1<<CFlag)\r
2472          .hword  (0x0C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2473          .hword  (0x0D<<8)                  |(1<<CFlag)\r
2474          .hword  (0x0E<<8)                  |(1<<CFlag)\r
2475          .hword  (0x0F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2476          .hword  (0x10<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2477          .hword  (0x11<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2478          .hword  (0x12<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2479          .hword  (0x13<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2480          .hword  (0x14<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2481          .hword  (0x15<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2482          .hword  (0x16<<8)                     |(1<<CFlag)\r
2483          .hword  (0x17<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2484          .hword  (0x18<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2485          .hword  (0x19<<8)                  |(1<<CFlag)\r
2486          .hword  (0x1A<<8)                  |(1<<CFlag)\r
2487          .hword  (0x1B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2488          .hword  (0x1C<<8)                  |(1<<CFlag)\r
2489          .hword  (0x1D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2490          .hword  (0x1E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2491          .hword  (0x1F<<8)                  |(1<<CFlag)\r
2492          .hword  (0x20<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2493          .hword  (0x21<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2494          .hword  (0x22<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2495          .hword  (0x23<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2496          .hword  (0x24<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2497          .hword  (0x25<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2498          .hword  (0x26<<8)                  |(1<<CFlag)\r
2499          .hword  (0x27<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2500          .hword  (0x28<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2501          .hword  (0x29<<8)               |(1<<CFlag)\r
2502          .hword  (0x2A<<8)               |(1<<CFlag)\r
2503          .hword  (0x2B<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2504          .hword  (0x2C<<8)               |(1<<CFlag)\r
2505          .hword  (0x2D<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2506          .hword  (0x2E<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2507          .hword  (0x2F<<8)               |(1<<CFlag)\r
2508          .hword  (0x30<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2509          .hword  (0x31<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2510          .hword  (0x32<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2511          .hword  (0x33<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2512          .hword  (0x34<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2513          .hword  (0x35<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2514          .hword  (0x36<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2515          .hword  (0x37<<8)                  |(1<<CFlag)\r
2516          .hword  (0x38<<8)               |(1<<CFlag)\r
2517          .hword  (0x39<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2518          .hword  (0x3A<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2519          .hword  (0x3B<<8)               |(1<<CFlag)\r
2520          .hword  (0x3C<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2521          .hword  (0x3D<<8)               |(1<<CFlag)\r
2522          .hword  (0x3E<<8)               |(1<<CFlag)\r
2523          .hword  (0x3F<<8)         |(1<<VFlag)   |(1<<CFlag)\r
2524          .hword  (0x40<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2525          .hword  (0x41<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2526          .hword  (0x42<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2527          .hword  (0x43<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2528          .hword  (0x44<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2529          .hword  (0x45<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2530          .hword  (0x46<<8)                     |(1<<CFlag)\r
2531          .hword  (0x47<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2532          .hword  (0x48<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2533          .hword  (0x49<<8)                  |(1<<CFlag)\r
2534          .hword  (0x4A<<8)                  |(1<<CFlag)\r
2535          .hword  (0x4B<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2536          .hword  (0x4C<<8)                  |(1<<CFlag)\r
2537          .hword  (0x4D<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2538          .hword  (0x4E<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2539          .hword  (0x4F<<8)                  |(1<<CFlag)\r
2540          .hword  (0x50<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2541          .hword  (0x51<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2542          .hword  (0x52<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2543          .hword  (0x53<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2544          .hword  (0x54<<8)         |(1<<HFlag)         |(1<<CFlag)\r
2545          .hword  (0x55<<8)         |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2546          .hword  (0x56<<8)               |(1<<VFlag)   |(1<<CFlag)\r
2547          .hword  (0x57<<8)                     |(1<<CFlag)\r
2548          .hword  (0x58<<8)                  |(1<<CFlag)\r
2549          .hword  (0x59<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2550          .hword  (0x5A<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2551          .hword  (0x5B<<8)                  |(1<<CFlag)\r
2552          .hword  (0x5C<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2553          .hword  (0x5D<<8)                  |(1<<CFlag)\r
2554          .hword  (0x5E<<8)                  |(1<<CFlag)\r
2555          .hword  (0x5F<<8)            |(1<<VFlag)   |(1<<CFlag)\r
2556          .hword  (0x60<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2557          .hword  (0x61<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2558          .hword  (0x62<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2559          .hword  (0x63<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2560          .hword  (0x64<<8)      |(1<<HFlag)         |(1<<CFlag)\r
2561          .hword  (0x65<<8)      |(1<<HFlag)   |(1<<VFlag)   |(1<<CFlag)\r
2562          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2563          .hword  (0x01<<8)                  |(1<<NFlag)   \r
2564          .hword  (0x02<<8)                  |(1<<NFlag)   \r
2565          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2566          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2567          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2568          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2569          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2570          .hword  (0x08<<8)               |(1<<NFlag)   \r
2571          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2572          .hword  (0x04<<8)                  |(1<<NFlag)   \r
2573          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2574          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2575          .hword  (0x07<<8)                  |(1<<NFlag)   \r
2576          .hword  (0x08<<8)               |(1<<NFlag)   \r
2577          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2578          .hword  (0x10<<8)                  |(1<<NFlag)   \r
2579          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2580          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2581          .hword  (0x13<<8)                  |(1<<NFlag)   \r
2582          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2583          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2584          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2585          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2586          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2587          .hword  (0x19<<8)               |(1<<NFlag)   \r
2588          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2589          .hword  (0x15<<8)                  |(1<<NFlag)   \r
2590          .hword  (0x16<<8)                  |(1<<NFlag)   \r
2591          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2592          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2593          .hword  (0x19<<8)               |(1<<NFlag)   \r
2594          .hword  (0x20<<8)               |(1<<NFlag)   \r
2595          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2596          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2597          .hword  (0x23<<8)               |(1<<NFlag)   \r
2598          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2599          .hword  (0x25<<8)               |(1<<NFlag)   \r
2600          .hword  (0x26<<8)               |(1<<NFlag)   \r
2601          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2602          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2603          .hword  (0x29<<8)            |(1<<NFlag)   \r
2604          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2605          .hword  (0x25<<8)               |(1<<NFlag)   \r
2606          .hword  (0x26<<8)               |(1<<NFlag)   \r
2607          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2608          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2609          .hword  (0x29<<8)            |(1<<NFlag)   \r
2610          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2611          .hword  (0x31<<8)               |(1<<NFlag)   \r
2612          .hword  (0x32<<8)               |(1<<NFlag)   \r
2613          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2614          .hword  (0x34<<8)               |(1<<NFlag)   \r
2615          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2616          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2617          .hword  (0x37<<8)               |(1<<NFlag)   \r
2618          .hword  (0x38<<8)            |(1<<NFlag)   \r
2619          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2620          .hword  (0x34<<8)               |(1<<NFlag)   \r
2621          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2622          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2623          .hword  (0x37<<8)               |(1<<NFlag)   \r
2624          .hword  (0x38<<8)            |(1<<NFlag)   \r
2625          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2626          .hword  (0x40<<8)                  |(1<<NFlag)   \r
2627          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2628          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2629          .hword  (0x43<<8)                  |(1<<NFlag)   \r
2630          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2631          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2632          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2633          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2634          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2635          .hword  (0x49<<8)               |(1<<NFlag)   \r
2636          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2637          .hword  (0x45<<8)                  |(1<<NFlag)   \r
2638          .hword  (0x46<<8)                  |(1<<NFlag)   \r
2639          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2640          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2641          .hword  (0x49<<8)               |(1<<NFlag)   \r
2642          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2643          .hword  (0x51<<8)                  |(1<<NFlag)   \r
2644          .hword  (0x52<<8)                  |(1<<NFlag)   \r
2645          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2646          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2647          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2648          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2649          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2650          .hword  (0x58<<8)               |(1<<NFlag)   \r
2651          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2652          .hword  (0x54<<8)                  |(1<<NFlag)   \r
2653          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2654          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
2655          .hword  (0x57<<8)                  |(1<<NFlag)   \r
2656          .hword  (0x58<<8)               |(1<<NFlag)   \r
2657          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2658          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2659          .hword  (0x61<<8)               |(1<<NFlag)   \r
2660          .hword  (0x62<<8)               |(1<<NFlag)   \r
2661          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2662          .hword  (0x64<<8)               |(1<<NFlag)   \r
2663          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2664          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2665          .hword  (0x67<<8)               |(1<<NFlag)   \r
2666          .hword  (0x68<<8)            |(1<<NFlag)   \r
2667          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2668          .hword  (0x64<<8)               |(1<<NFlag)   \r
2669          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2670          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2671          .hword  (0x67<<8)               |(1<<NFlag)   \r
2672          .hword  (0x68<<8)            |(1<<NFlag)   \r
2673          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2674          .hword  (0x70<<8)               |(1<<NFlag)   \r
2675          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2676          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2677          .hword  (0x73<<8)               |(1<<NFlag)   \r
2678          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2679          .hword  (0x75<<8)               |(1<<NFlag)   \r
2680          .hword  (0x76<<8)               |(1<<NFlag)   \r
2681          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2682          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2683          .hword  (0x79<<8)            |(1<<NFlag)   \r
2684          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2685          .hword  (0x75<<8)               |(1<<NFlag)   \r
2686          .hword  (0x76<<8)               |(1<<NFlag)   \r
2687          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
2688          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
2689          .hword  (0x79<<8)            |(1<<NFlag)   \r
2690          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2691          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2692          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2693          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2694          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2695          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2696          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2697          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2698          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2699          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2700          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2701          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2702          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2703          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2704          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2705          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2706          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2707          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2708          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2709          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2710          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2711          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2712          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
2713          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)   \r
2714          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)   \r
2715          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
2716          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2717          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2718          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2719          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2720          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2721          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2722          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2723          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2724          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2725          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2726          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2727          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2728          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2729          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2730          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2731          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2732          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2733          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2734          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2735          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2736          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2737          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2738          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2739          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2740          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2741          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2742          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2743          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2744          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2745          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2746          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2747          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2748          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2749          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2750          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2751          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2752          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
2753          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2754          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2755          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
2756          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
2757          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2758          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2759          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2760          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2761          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2762          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2763          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2764          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
2765          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2766          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2767          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
2768          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
2769          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2770          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
2771          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2772          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2773          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
2774          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2775          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2776          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2777          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2778          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2779          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2780          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2781          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
2782          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
2783          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2784          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2785          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
2786          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2787          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2788          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2789          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2790          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2791          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2792          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2793          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2794          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2795          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2796          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2797          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2798          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2799          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2800          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2801          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2802          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2803          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2804          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2805          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2806          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2807          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2808          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2809          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2810          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2811          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2812          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2813          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2814          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2815          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2816          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2817          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2818          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2819          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2820          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2821          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2822          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2823          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2824          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2825          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2826          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2827          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2828          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2829          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2830          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2831          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2832          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2833          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2834          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2835          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2836          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2837          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2838          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2839          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2840          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2841          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2842          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2843          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2844          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2845          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2846          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2847          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2848          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2849          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2850          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2851          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2852          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2853          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2854          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2855          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2856          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2857          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2858          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2859          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2860          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2861          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2862          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2863          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2864          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2865          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2866          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2867          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2868          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2869          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2870          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2871          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2872          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2873          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2874          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2875          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2876          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2877          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2878          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
2879          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2880          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2881          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2882          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2883          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2884          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2885          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2886          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2887          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2888          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2889          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2890          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2891          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2892          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2893          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2894          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2895          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2896          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2897          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2898          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2899          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2900          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2901          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2902          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2903          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2904          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2905          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2906          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2907          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2908          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2909          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2910          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2911          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
2912          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
2913          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2914          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2915          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2916          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2917          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2918          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2919          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2920          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2921          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2922          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2923          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2924          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2925          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2926          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2927          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2928          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
2929          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2930          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2931          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2932          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2933          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2934          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2935          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2936          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2937          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2938          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2939          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2940          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2941          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2942          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2943          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2944          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2945          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
2946          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
2947          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2948          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2949          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
2950          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2951          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2952          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2953          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2954          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2955          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2956          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2957          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
2958          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
2959          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2960          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2961          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
2962          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2963          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
2964          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
2965          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2966          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2967          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2968          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2969          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2970          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2971          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2972          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
2973          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2974          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2975          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
2976          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
2977          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2978          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2979          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2980          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2981          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2982          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2983          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2984          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2985          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2986          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2987          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2988          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2989          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2990          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2991          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2992          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2993          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
2994          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2995          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2996          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2997          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
2998          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
2999          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3000          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3001          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3002          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3003          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3004          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3005          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3006          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3007          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3008          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3009          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3010          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3011          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3012          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3013          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3014          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3015          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3016          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3017          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3018          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3019          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3020          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3021          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3022          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3023          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3024          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3025          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3026          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3027          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3028          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3029          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3030          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3031          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3032          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3033          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3034          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3035          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3036          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3037          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3038          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3039          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3040          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3041          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3042          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3043          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3044          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3045          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3046          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3047          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3048          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3049          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3050          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3051          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3052          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3053          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3054          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3055          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3056          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3057          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3058          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3059          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3060          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3061          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3062          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3063          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3064          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3065          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3066          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3067          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3068          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3069          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3070          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3071          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3072          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3073          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3074          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3075          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3076          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3077          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3078          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)   \r
3079          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3080          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3081          .hword  (0x01<<8)                  |(1<<NFlag)   \r
3082          .hword  (0x02<<8)                  |(1<<NFlag)   \r
3083          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3084          .hword  (0x04<<8)                  |(1<<NFlag)   \r
3085          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3086          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3087          .hword  (0x07<<8)                  |(1<<NFlag)   \r
3088          .hword  (0x08<<8)               |(1<<NFlag)   \r
3089          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3090          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3091          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3092          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3093          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3094          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3095          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3096          .hword  (0x10<<8)                  |(1<<NFlag)   \r
3097          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3098          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3099          .hword  (0x13<<8)                  |(1<<NFlag)   \r
3100          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3101          .hword  (0x15<<8)                  |(1<<NFlag)   \r
3102          .hword  (0x16<<8)                  |(1<<NFlag)   \r
3103          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3104          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3105          .hword  (0x19<<8)               |(1<<NFlag)   \r
3106          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3107          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3108          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3109          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3110          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3111          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3112          .hword  (0x20<<8)               |(1<<NFlag)   \r
3113          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3114          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3115          .hword  (0x23<<8)               |(1<<NFlag)   \r
3116          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3117          .hword  (0x25<<8)               |(1<<NFlag)   \r
3118          .hword  (0x26<<8)               |(1<<NFlag)   \r
3119          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3120          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3121          .hword  (0x29<<8)            |(1<<NFlag)   \r
3122          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3123          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3124          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3125          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3126          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3127          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3128          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3129          .hword  (0x31<<8)               |(1<<NFlag)   \r
3130          .hword  (0x32<<8)               |(1<<NFlag)   \r
3131          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3132          .hword  (0x34<<8)               |(1<<NFlag)   \r
3133          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3134          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3135          .hword  (0x37<<8)               |(1<<NFlag)   \r
3136          .hword  (0x38<<8)            |(1<<NFlag)   \r
3137          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3138          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3139          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3140          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3141          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3142          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3143          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3144          .hword  (0x40<<8)                  |(1<<NFlag)   \r
3145          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3146          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3147          .hword  (0x43<<8)                  |(1<<NFlag)   \r
3148          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3149          .hword  (0x45<<8)                  |(1<<NFlag)   \r
3150          .hword  (0x46<<8)                  |(1<<NFlag)   \r
3151          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3152          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3153          .hword  (0x49<<8)               |(1<<NFlag)   \r
3154          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3155          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3156          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3157          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3158          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3159          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3160          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3161          .hword  (0x51<<8)                  |(1<<NFlag)   \r
3162          .hword  (0x52<<8)                  |(1<<NFlag)   \r
3163          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3164          .hword  (0x54<<8)                  |(1<<NFlag)   \r
3165          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3166          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)   \r
3167          .hword  (0x57<<8)                  |(1<<NFlag)   \r
3168          .hword  (0x58<<8)               |(1<<NFlag)   \r
3169          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3170          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3171          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3172          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3173          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3174          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)   \r
3175          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3176          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3177          .hword  (0x61<<8)               |(1<<NFlag)   \r
3178          .hword  (0x62<<8)               |(1<<NFlag)   \r
3179          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3180          .hword  (0x64<<8)               |(1<<NFlag)   \r
3181          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3182          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3183          .hword  (0x67<<8)               |(1<<NFlag)   \r
3184          .hword  (0x68<<8)            |(1<<NFlag)   \r
3185          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3186          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3187          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3188          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3189          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3190          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3191          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3192          .hword  (0x70<<8)               |(1<<NFlag)   \r
3193          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3194          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3195          .hword  (0x73<<8)               |(1<<NFlag)   \r
3196          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3197          .hword  (0x75<<8)               |(1<<NFlag)   \r
3198          .hword  (0x76<<8)               |(1<<NFlag)   \r
3199          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)   \r
3200          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)   \r
3201          .hword  (0x79<<8)            |(1<<NFlag)   \r
3202          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3203          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3204          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3205          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3206          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3207          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)   \r
3208          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3209          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3210          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3211          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3212          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3213          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3214          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3215          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3216          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)   \r
3217          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)   \r
3218          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3219          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3220          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3221          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3222          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)   \r
3223          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)   \r
3224          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3225          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3226          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)   \r
3227          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)   \r
3228          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3229          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3230          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3231          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3232          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3233          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3234          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3235          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3236          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3237          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3238          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3239          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3240          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3241          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3242          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3243          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3244          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3245          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3246          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3247          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3248          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3249          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3250          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3251          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3252          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3253          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3254          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3255          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3256          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3257          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3258          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3259          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3260          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3261          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3262          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3263          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3264          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3265          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3266          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3267          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3268          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3269          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3270          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3271          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3272          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3273          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3274          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3275          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3276          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3277          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3278          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3279          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3280          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3281          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3282          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3283          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3284          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3285          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3286          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3287          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3288          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3289          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3290          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3291          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3292          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3293          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3294          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3295          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3296          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3297          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3298          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3299          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3300          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3301          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3302          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3303          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3304          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3305          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3306          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3307          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3308          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3309          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3310          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3311          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3312          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3313          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3314          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3315          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3316          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3317          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3318          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3319          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3320          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3321          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3322          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3323          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3324          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3325          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3326          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3327          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3328          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3329          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3330          .hword  (0x9A<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3331          .hword  (0x9B<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3332          .hword  (0x9C<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3333          .hword  (0x9D<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3334          .hword  (0x9E<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3335          .hword  (0x9F<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3336          .hword  (0xA0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3337          .hword  (0xA1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3338          .hword  (0xA2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3339          .hword  (0xA3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3340          .hword  (0xA4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3341          .hword  (0xA5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3342          .hword  (0xA6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3343          .hword  (0xA7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3344          .hword  (0xA8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3345          .hword  (0xA9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3346          .hword  (0xAA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3347          .hword  (0xAB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3348          .hword  (0xAC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3349          .hword  (0xAD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3350          .hword  (0xAE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3351          .hword  (0xAF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3352          .hword  (0xB0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3353          .hword  (0xB1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3354          .hword  (0xB2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3355          .hword  (0xB3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3356          .hword  (0xB4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3357          .hword  (0xB5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3358          .hword  (0xB6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3359          .hword  (0xB7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3360          .hword  (0xB8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3361          .hword  (0xB9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3362          .hword  (0xBA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3363          .hword  (0xBB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3364          .hword  (0xBC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3365          .hword  (0xBD<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3366          .hword  (0xBE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3367          .hword  (0xBF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3368          .hword  (0xC0<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3369          .hword  (0xC1<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3370          .hword  (0xC2<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3371          .hword  (0xC3<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3372          .hword  (0xC4<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3373          .hword  (0xC5<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3374          .hword  (0xC6<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3375          .hword  (0xC7<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3376          .hword  (0xC8<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3377          .hword  (0xC9<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3378          .hword  (0xCA<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3379          .hword  (0xCB<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3380          .hword  (0xCC<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3381          .hword  (0xCD<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3382          .hword  (0xCE<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3383          .hword  (0xCF<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3384          .hword  (0xD0<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3385          .hword  (0xD1<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3386          .hword  (0xD2<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3387          .hword  (0xD3<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3388          .hword  (0xD4<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3389          .hword  (0xD5<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3390          .hword  (0xD6<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3391          .hword  (0xD7<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3392          .hword  (0xD8<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3393          .hword  (0xD9<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3394          .hword  (0xDA<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3395          .hword  (0xDB<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3396          .hword  (0xDC<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3397          .hword  (0xDD<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3398          .hword  (0xDE<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3399          .hword  (0xDF<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3400          .hword  (0xE0<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3401          .hword  (0xE1<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3402          .hword  (0xE2<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3403          .hword  (0xE3<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3404          .hword  (0xE4<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3405          .hword  (0xE5<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3406          .hword  (0xE6<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3407          .hword  (0xE7<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3408          .hword  (0xE8<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3409          .hword  (0xE9<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3410          .hword  (0xEA<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3411          .hword  (0xEB<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3412          .hword  (0xEC<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3413          .hword  (0xED<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3414          .hword  (0xEE<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3415          .hword  (0xEF<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3416          .hword  (0xF0<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3417          .hword  (0xF1<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3418          .hword  (0xF2<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3419          .hword  (0xF3<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3420          .hword  (0xF4<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3421          .hword  (0xF5<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3422          .hword  (0xF6<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3423          .hword  (0xF7<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3424          .hword  (0xF8<<8)|(1<<SFlag)         |(1<<NFlag)|(1<<CFlag)\r
3425          .hword  (0xF9<<8)|(1<<SFlag)      |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3426          .hword  (0xFA<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3427          .hword  (0xFB<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3428          .hword  (0xFC<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3429          .hword  (0xFD<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3430          .hword  (0xFE<<8)|(1<<SFlag)   |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3431          .hword  (0xFF<<8)|(1<<SFlag)   |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3432          .hword  (0x00<<8)   |(1<<ZFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3433          .hword  (0x01<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3434          .hword  (0x02<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3435          .hword  (0x03<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3436          .hword  (0x04<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3437          .hword  (0x05<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3438          .hword  (0x06<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3439          .hword  (0x07<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3440          .hword  (0x08<<8)               |(1<<NFlag)|(1<<CFlag)\r
3441          .hword  (0x09<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3442          .hword  (0x0A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3443          .hword  (0x0B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3444          .hword  (0x0C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3445          .hword  (0x0D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3446          .hword  (0x0E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3447          .hword  (0x0F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3448          .hword  (0x10<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3449          .hword  (0x11<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3450          .hword  (0x12<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3451          .hword  (0x13<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3452          .hword  (0x14<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3453          .hword  (0x15<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3454          .hword  (0x16<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3455          .hword  (0x17<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3456          .hword  (0x18<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3457          .hword  (0x19<<8)               |(1<<NFlag)|(1<<CFlag)\r
3458          .hword  (0x1A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3459          .hword  (0x1B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3460          .hword  (0x1C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3461          .hword  (0x1D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3462          .hword  (0x1E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3463          .hword  (0x1F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3464          .hword  (0x20<<8)               |(1<<NFlag)|(1<<CFlag)\r
3465          .hword  (0x21<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3466          .hword  (0x22<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3467          .hword  (0x23<<8)               |(1<<NFlag)|(1<<CFlag)\r
3468          .hword  (0x24<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3469          .hword  (0x25<<8)               |(1<<NFlag)|(1<<CFlag)\r
3470          .hword  (0x26<<8)               |(1<<NFlag)|(1<<CFlag)\r
3471          .hword  (0x27<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3472          .hword  (0x28<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3473          .hword  (0x29<<8)            |(1<<NFlag)|(1<<CFlag)\r
3474          .hword  (0x2A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3475          .hword  (0x2B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3476          .hword  (0x2C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3477          .hword  (0x2D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3478          .hword  (0x2E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3479          .hword  (0x2F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3480          .hword  (0x30<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3481          .hword  (0x31<<8)               |(1<<NFlag)|(1<<CFlag)\r
3482          .hword  (0x32<<8)               |(1<<NFlag)|(1<<CFlag)\r
3483          .hword  (0x33<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3484          .hword  (0x34<<8)               |(1<<NFlag)|(1<<CFlag)\r
3485          .hword  (0x35<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3486          .hword  (0x36<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3487          .hword  (0x37<<8)               |(1<<NFlag)|(1<<CFlag)\r
3488          .hword  (0x38<<8)            |(1<<NFlag)|(1<<CFlag)\r
3489          .hword  (0x39<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3490          .hword  (0x3A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3491          .hword  (0x3B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3492          .hword  (0x3C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3493          .hword  (0x3D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3494          .hword  (0x3E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3495          .hword  (0x3F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3496          .hword  (0x40<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3497          .hword  (0x41<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3498          .hword  (0x42<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3499          .hword  (0x43<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3500          .hword  (0x44<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3501          .hword  (0x45<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3502          .hword  (0x46<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3503          .hword  (0x47<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3504          .hword  (0x48<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3505          .hword  (0x49<<8)               |(1<<NFlag)|(1<<CFlag)\r
3506          .hword  (0x4A<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3507          .hword  (0x4B<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3508          .hword  (0x4C<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3509          .hword  (0x4D<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3510          .hword  (0x4E<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3511          .hword  (0x4F<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3512          .hword  (0x50<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3513          .hword  (0x51<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3514          .hword  (0x52<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3515          .hword  (0x53<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3516          .hword  (0x54<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3517          .hword  (0x55<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3518          .hword  (0x56<<8)               |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3519          .hword  (0x57<<8)                  |(1<<NFlag)|(1<<CFlag)\r
3520          .hword  (0x58<<8)               |(1<<NFlag)|(1<<CFlag)\r
3521          .hword  (0x59<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3522          .hword  (0x5A<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3523          .hword  (0x5B<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3524          .hword  (0x5C<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3525          .hword  (0x5D<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3526          .hword  (0x5E<<8)         |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3527          .hword  (0x5F<<8)         |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3528          .hword  (0x60<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3529          .hword  (0x61<<8)               |(1<<NFlag)|(1<<CFlag)\r
3530          .hword  (0x62<<8)               |(1<<NFlag)|(1<<CFlag)\r
3531          .hword  (0x63<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3532          .hword  (0x64<<8)               |(1<<NFlag)|(1<<CFlag)\r
3533          .hword  (0x65<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3534          .hword  (0x66<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3535          .hword  (0x67<<8)               |(1<<NFlag)|(1<<CFlag)\r
3536          .hword  (0x68<<8)            |(1<<NFlag)|(1<<CFlag)\r
3537          .hword  (0x69<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3538          .hword  (0x6A<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3539          .hword  (0x6B<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3540          .hword  (0x6C<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3541          .hword  (0x6D<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3542          .hword  (0x6E<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3543          .hword  (0x6F<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3544          .hword  (0x70<<8)               |(1<<NFlag)|(1<<CFlag)\r
3545          .hword  (0x71<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3546          .hword  (0x72<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3547          .hword  (0x73<<8)               |(1<<NFlag)|(1<<CFlag)\r
3548          .hword  (0x74<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3549          .hword  (0x75<<8)               |(1<<NFlag)|(1<<CFlag)\r
3550          .hword  (0x76<<8)               |(1<<NFlag)|(1<<CFlag)\r
3551          .hword  (0x77<<8)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3552          .hword  (0x78<<8)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3553          .hword  (0x79<<8)            |(1<<NFlag)|(1<<CFlag)\r
3554          .hword  (0x7A<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3555          .hword  (0x7B<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3556          .hword  (0x7C<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3557          .hword  (0x7D<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3558          .hword  (0x7E<<8)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3559          .hword  (0x7F<<8)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3560          .hword  (0x80<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3561          .hword  (0x81<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3562          .hword  (0x82<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3563          .hword  (0x83<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3564          .hword  (0x84<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3565          .hword  (0x85<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3566          .hword  (0x86<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3567          .hword  (0x87<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3568          .hword  (0x88<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3569          .hword  (0x89<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3570          .hword  (0x8A<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3571          .hword  (0x8B<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3572          .hword  (0x8C<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3573          .hword  (0x8D<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3574          .hword  (0x8E<<8)|(1<<SFlag)      |(1<<HFlag)|(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3575          .hword  (0x8F<<8)|(1<<SFlag)      |(1<<HFlag)   |(1<<NFlag)|(1<<CFlag)\r
3576          .hword  (0x90<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3577          .hword  (0x91<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3578          .hword  (0x92<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3579          .hword  (0x93<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3580          .hword  (0x94<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3581          .hword  (0x95<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3582          .hword  (0x96<<8)|(1<<SFlag)            |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3583          .hword  (0x97<<8)|(1<<SFlag)               |(1<<NFlag)|(1<<CFlag)\r
3584          .hword  (0x98<<8)|(1<<SFlag)            |(1<<NFlag)|(1<<CFlag)\r
3585          .hword  (0x99<<8)|(1<<SFlag)         |(1<<VFlag)|(1<<NFlag)|(1<<CFlag)\r
3586          \r
3587 .align 4\r
3588 \r
3589 AF_Z80:  .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 0\r
3590          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 1\r
3591          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 2\r
3592          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 3\r
3593          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 4\r
3594          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 5\r
3595          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 6\r
3596          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 7\r
3597          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 8\r
3598          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 9\r
3599          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 10\r
3600          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 11\r
3601          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 12\r
3602          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 13\r
3603          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 14\r
3604          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 15\r
3605          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 16\r
3606          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 17\r
3607          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 18\r
3608          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 19\r
3609          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 20\r
3610          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 21\r
3611          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 22\r
3612          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 23\r
3613          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 24\r
3614          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 25\r
3615          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 26\r
3616          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 27\r
3617          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 28\r
3618          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 29\r
3619          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 30\r
3620          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 31\r
3621          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 32\r
3622          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 33\r
3623          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 34\r
3624          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 35\r
3625          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 36\r
3626          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 37\r
3627          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 38\r
3628          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 39\r
3629          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 40\r
3630          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 41\r
3631          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 42\r
3632          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 43\r
3633          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 44\r
3634          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 45\r
3635          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 46\r
3636          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 47\r
3637          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 48\r
3638          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 49\r
3639          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 50\r
3640          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 51\r
3641          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 52\r
3642          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 53\r
3643          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 54\r
3644          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 55\r
3645          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 56\r
3646          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 57\r
3647          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 58\r
3648          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 59\r
3649          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 60\r
3650          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 61\r
3651          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 62\r
3652          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 63\r
3653          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 64\r
3654          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 65\r
3655          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 66\r
3656          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 67\r
3657          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 68\r
3658          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 69\r
3659          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 70\r
3660          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 71\r
3661          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 72\r
3662          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 73\r
3663          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 74\r
3664          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 75\r
3665          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 76\r
3666          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 77\r
3667          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 78\r
3668          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 79\r
3669          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 80\r
3670          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 81\r
3671          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 82\r
3672          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 83\r
3673          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 84\r
3674          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 85\r
3675          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 86\r
3676          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 87\r
3677          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 88\r
3678          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 89\r
3679          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 90\r
3680          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 91\r
3681          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 92\r
3682          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 93\r
3683          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 94\r
3684          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 95\r
3685          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 96\r
3686          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 97\r
3687          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 98\r
3688          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 99\r
3689          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 100\r
3690          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 101\r
3691          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 102\r
3692          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 103\r
3693          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 104\r
3694          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 105\r
3695          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 106\r
3696          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 107\r
3697          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 108\r
3698          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 109\r
3699          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 110\r
3700          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 111\r
3701          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 112\r
3702          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 113\r
3703          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 114\r
3704          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 115\r
3705          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 116\r
3706          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 117\r
3707          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 118\r
3708          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 119\r
3709          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 120\r
3710          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 121\r
3711          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 122\r
3712          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 123\r
3713          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 124\r
3714          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 125\r
3715          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 126\r
3716          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 127\r
3717          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 128\r
3718          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 129\r
3719          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 130\r
3720          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 131\r
3721          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 132\r
3722          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 133\r
3723          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 134\r
3724          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 135\r
3725          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 136\r
3726          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 137\r
3727          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 138\r
3728          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 139\r
3729          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 140\r
3730          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 141\r
3731          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 142\r
3732          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 143\r
3733          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 144\r
3734          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 145\r
3735          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 146\r
3736          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 147\r
3737          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 148\r
3738          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 149\r
3739          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 150\r
3740          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 151\r
3741          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 152\r
3742          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 153\r
3743          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 154\r
3744          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 155\r
3745          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 156\r
3746          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 157\r
3747          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 158\r
3748          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 159\r
3749          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 160\r
3750          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 161\r
3751          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 162\r
3752          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 163\r
3753          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 164\r
3754          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 165\r
3755          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 166\r
3756          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 167\r
3757          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 168\r
3758          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 169\r
3759          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 170\r
3760          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 171\r
3761          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 172\r
3762          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 173\r
3763          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 174\r
3764          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 175\r
3765          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 176\r
3766          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 177\r
3767          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 178\r
3768          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 179\r
3769          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 180\r
3770          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 181\r
3771          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 182\r
3772          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 183\r
3773          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 184\r
3774          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 185\r
3775          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 186\r
3776          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 187\r
3777          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 188\r
3778          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 189\r
3779          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 190\r
3780          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 191\r
3781          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 192\r
3782          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 193\r
3783          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 194\r
3784          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 195\r
3785          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 196\r
3786          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 197\r
3787          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 198\r
3788          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 199\r
3789          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 200\r
3790          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 201\r
3791          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 202\r
3792          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 203\r
3793          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 204\r
3794          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 205\r
3795          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 206\r
3796          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 207\r
3797          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 208\r
3798          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 209\r
3799          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 210\r
3800          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 211\r
3801          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 212\r
3802          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 213\r
3803          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 214\r
3804          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 215\r
3805          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 216\r
3806          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 217\r
3807          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 218\r
3808          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 219\r
3809          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 220\r
3810          .byte (0<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 221\r
3811          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 222\r
3812          .byte (1<<Z80_CFlag)|(0<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 223\r
3813          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 224\r
3814          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 225\r
3815          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 226\r
3816          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 227\r
3817          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 228\r
3818          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 229\r
3819          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 230\r
3820          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 231\r
3821          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 232\r
3822          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 233\r
3823          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 234\r
3824          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 235\r
3825          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 236\r
3826          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 237\r
3827          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 238\r
3828          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(0<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 239\r
3829          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 240\r
3830          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 241\r
3831          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 242\r
3832          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 243\r
3833          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 244\r
3834          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 245\r
3835          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 246\r
3836          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(0<<Z80_SFlag) ;@ 247\r
3837          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 248\r
3838          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 249\r
3839          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 250\r
3840          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(0<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 251\r
3841          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 252\r
3842          .byte (0<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 253\r
3843          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(0<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 254\r
3844          .byte (1<<Z80_CFlag)|(1<<Z80_NFlag)|(1<<Z80_VFlag)|(1<<Z80_HFlag)|(1<<Z80_ZFlag)|(1<<Z80_SFlag) ;@ 255\r
3845 \r
3846 .align 4\r
3847 \r
3848 AF_ARM:  .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 0\r
3849          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 1\r
3850          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 2\r
3851          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 3\r
3852          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 4\r
3853          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 5\r
3854          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 6\r
3855          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 7\r
3856          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 8\r
3857          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 9\r
3858          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 10\r
3859          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 11\r
3860          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 12\r
3861          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 13\r
3862          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 14\r
3863          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 15\r
3864          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 16\r
3865          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 17\r
3866          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 18\r
3867          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 19\r
3868          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 20\r
3869          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 21\r
3870          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 22\r
3871          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 23\r
3872          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 24\r
3873          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 25\r
3874          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 26\r
3875          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 27\r
3876          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 28\r
3877          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 29\r
3878          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 30\r
3879          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 31\r
3880          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 32\r
3881          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 33\r
3882          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 34\r
3883          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 35\r
3884          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 36\r
3885          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 37\r
3886          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 38\r
3887          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 39\r
3888          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 40\r
3889          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 41\r
3890          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 42\r
3891          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 43\r
3892          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 44\r
3893          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 45\r
3894          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 46\r
3895          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 47\r
3896          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 48\r
3897          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 49\r
3898          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 50\r
3899          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 51\r
3900          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 52\r
3901          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 53\r
3902          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 54\r
3903          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 55\r
3904          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 56\r
3905          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 57\r
3906          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 58\r
3907          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 59\r
3908          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 60\r
3909          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 61\r
3910          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 62\r
3911          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(0<<SFlag)  ;@ 63\r
3912          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 64\r
3913          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 65\r
3914          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 66\r
3915          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 67\r
3916          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 68\r
3917          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 69\r
3918          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 70\r
3919          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 71\r
3920          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 72\r
3921          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 73\r
3922          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 74\r
3923          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 75\r
3924          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 76\r
3925          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 77\r
3926          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 78\r
3927          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 79\r
3928          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 80\r
3929          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 81\r
3930          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 82\r
3931          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 83\r
3932          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 84\r
3933          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 85\r
3934          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 86\r
3935          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 87\r
3936          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 88\r
3937          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 89\r
3938          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 90\r
3939          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 91\r
3940          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 92\r
3941          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 93\r
3942          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 94\r
3943          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 95\r
3944          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 96\r
3945          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 97\r
3946          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 98\r
3947          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 99\r
3948          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 100\r
3949          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 101\r
3950          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 102\r
3951          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 103\r
3952          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 104\r
3953          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 105\r
3954          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 106\r
3955          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 107\r
3956          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 108\r
3957          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 109\r
3958          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 110\r
3959          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 111\r
3960          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 112\r
3961          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 113\r
3962          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 114\r
3963          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 115\r
3964          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 116\r
3965          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 117\r
3966          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 118\r
3967          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 119\r
3968          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 120\r
3969          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 121\r
3970          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 122\r
3971          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 123\r
3972          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 124\r
3973          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 125\r
3974          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 126\r
3975          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(0<<SFlag)  ;@ 127\r
3976          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 128\r
3977          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 129\r
3978          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 130\r
3979          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 131\r
3980          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 132\r
3981          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 133\r
3982          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 134\r
3983          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 135\r
3984          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 136\r
3985          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 137\r
3986          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 138\r
3987          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 139\r
3988          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 140\r
3989          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 141\r
3990          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 142\r
3991          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 143\r
3992          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 144\r
3993          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 145\r
3994          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 146\r
3995          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 147\r
3996          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 148\r
3997          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 149\r
3998          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 150\r
3999          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 151\r
4000          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 152\r
4001          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 153\r
4002          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 154\r
4003          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 155\r
4004          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 156\r
4005          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 157\r
4006          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 158\r
4007          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 159\r
4008          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 160\r
4009          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 161\r
4010          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 162\r
4011          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 163\r
4012          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 164\r
4013          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 165\r
4014          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 166\r
4015          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 167\r
4016          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 168\r
4017          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 169\r
4018          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 170\r
4019          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 171\r
4020          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 172\r
4021          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 173\r
4022          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 174\r
4023          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 175\r
4024          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 176\r
4025          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 177\r
4026          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 178\r
4027          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 179\r
4028          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 180\r
4029          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 181\r
4030          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 182\r
4031          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 183\r
4032          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 184\r
4033          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 185\r
4034          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 186\r
4035          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 187\r
4036          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 188\r
4037          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 189\r
4038          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 190\r
4039          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(0<<ZFlag)|(1<<SFlag)  ;@ 191\r
4040          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 192\r
4041          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 193\r
4042          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 194\r
4043          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 195\r
4044          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 196\r
4045          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 197\r
4046          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 198\r
4047          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 199\r
4048          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 200\r
4049          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 201\r
4050          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 202\r
4051          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 203\r
4052          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 204\r
4053          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 205\r
4054          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 206\r
4055          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 207\r
4056          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 208\r
4057          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 209\r
4058          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 210\r
4059          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 211\r
4060          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 212\r
4061          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 213\r
4062          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 214\r
4063          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 215\r
4064          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 216\r
4065          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 217\r
4066          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 218\r
4067          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 219\r
4068          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 220\r
4069          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 221\r
4070          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 222\r
4071          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 223\r
4072          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 224\r
4073          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 225\r
4074          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 226\r
4075          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 227\r
4076          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 228\r
4077          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 229\r
4078          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 230\r
4079          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 231\r
4080          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 232\r
4081          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 233\r
4082          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 234\r
4083          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 235\r
4084          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 236\r
4085          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 237\r
4086          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 238\r
4087          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(0<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 239\r
4088          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 240\r
4089          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 241\r
4090          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 242\r
4091          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 243\r
4092          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 244\r
4093          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 245\r
4094          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 246\r
4095          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 247\r
4096          .byte (0<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 248\r
4097          .byte (1<<CFlag)|(0<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 249\r
4098          .byte (0<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 250\r
4099          .byte (1<<CFlag)|(1<<NFlag)|(0<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 251\r
4100          .byte (0<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 252\r
4101          .byte (1<<CFlag)|(0<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 253\r
4102          .byte (0<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 254\r
4103          .byte (1<<CFlag)|(1<<NFlag)|(1<<VFlag)|(1<<HFlag)|(1<<ZFlag)|(1<<SFlag)  ;@ 255\r
4104 \r
4105 .align 4\r
4106 \r
4107 PZSTable_data: .byte (1<<ZFlag)|(1<<VFlag),0,0,(1<<VFlag),0,(1<<VFlag),(1<<VFlag),0\r
4108         .byte  0,(1<<VFlag),(1<<VFlag),0,(1<<VFlag),0,0,(1<<VFlag)\r
4109         .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
4110         .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
4111         .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
4112         .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
4113         .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
4114         .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
4115         .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
4116         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4117         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4118         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4119         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4120         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4121         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4122         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4123         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4124         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4125         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4126         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4127         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4128         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4129         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4130         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4131         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4132         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4133         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\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<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\r
4137         .byte  (1<<SFlag)|(1<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\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<<VFlag),(1<<SFlag),(1<<SFlag),(1<<SFlag)|(1<<VFlag)\r
4145         .byte  (1<<SFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)|(1<<VFlag),(1<<SFlag)\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 \r
4149 .align 4\r
4150 \r
4151 MAIN_opcodes:   \r
4152         .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
4153         .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
4154         .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
4155         .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
4156         .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
4157         .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
4158         .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
4159         .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
4160         .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
4161         .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
4162         .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
4163         .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
4164         .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
4165         .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
4166         .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
4167         .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
4168         .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
4169         .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
4170         .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
4171         .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
4172         .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
4173         .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
4174         .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
4175         .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
4176         .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
4177         .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
4178         .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
4179         .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
4180         .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
4181         .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
4182         .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
4183         .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
4184 \r
4185 .align 4\r
4186 \r
4187 EI_DUMMY_opcodes:\r
4188         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4189         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@0\r
4190         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4191         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@1\r
4192         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4193         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@2\r
4194         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4195         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@3\r
4196         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4197         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@4\r
4198         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4199         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@5\r
4200         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4201         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@6\r
4202         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4203         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@7\r
4204         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4205         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@8\r
4206         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4207         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@9\r
4208         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4209         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@A\r
4210         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4211         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@B\r
4212         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4213         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@C\r
4214         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4215         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@D\r
4216         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4217         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@E\r
4218         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4219         .word ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return,ei_return ;@F\r
4220 \r
4221 .text\r
4222 .align 4\r
4223 \r
4224 ;@NOP\r
4225 opcode_0_0:\r
4226 ;@LD B,B\r
4227 opcode_4_0:\r
4228 ;@LD C,C\r
4229 opcode_4_9:\r
4230 ;@LD D,D\r
4231 opcode_5_2:\r
4232 ;@LD E,E\r
4233 opcode_5_B:\r
4234 ;@LD H,H\r
4235 opcode_6_4:\r
4236 ;@LD L,L\r
4237 opcode_6_D:\r
4238 ;@LD A,A\r
4239 opcode_7_F:\r
4240         fetch 4\r
4241 ;@LD BC,NN\r
4242 opcode_0_1:\r
4243         ldrb r0,[z80pc],#1\r
4244         ldrb r1,[z80pc],#1\r
4245         orr r0,r0,r1, lsl #8\r
4246         mov z80bc,r0, lsl #16\r
4247         fetch 10\r
4248 ;@LD (BC),A\r
4249 opcode_0_2:\r
4250         mov r0,z80a, lsr #24\r
4251         mov r1,z80bc, lsr #16\r
4252         writemem8\r
4253         fetch 7\r
4254 ;@INC BC\r
4255 opcode_0_3:\r
4256         add z80bc,z80bc,#1<<16\r
4257         fetch 6\r
4258 ;@INC B\r
4259 opcode_0_4:\r
4260         opINC8H z80bc\r
4261         fetch 4\r
4262 ;@DEC B\r
4263 opcode_0_5:\r
4264         opDEC8H z80bc\r
4265         fetch 4\r
4266 ;@LD B,N\r
4267 opcode_0_6:\r
4268         ldrb r1,[z80pc],#1\r
4269         and z80bc,z80bc,#0xFF<<16\r
4270         orr z80bc,z80bc,r1, lsl #24\r
4271         fetch 7\r
4272 ;@RLCA\r
4273 opcode_0_7:\r
4274         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4275         movs z80a,z80a, lsl #1\r
4276         orrcs z80a,z80a,#1<<24\r
4277         orrcs z80f,z80f,#1<<CFlag\r
4278         fetch 4\r
4279 ;@EX AF,AF'\r
4280 opcode_0_8:\r
4281         add r1,cpucontext,#z80a2\r
4282         swp z80a,z80a,[r1]\r
4283         add r1,cpucontext,#z80f2\r
4284         swp z80f,z80f,[r1]\r
4285         fetch 4\r
4286 ;@ADD HL,BC\r
4287 opcode_0_9:\r
4288         opADD16 z80hl z80bc\r
4289         fetch 11\r
4290 ;@LD A,(BC)\r
4291 opcode_0_A:\r
4292         mov r0,z80bc, lsr #16\r
4293         readmem8\r
4294         mov z80a,r0, lsl #24\r
4295         fetch 7\r
4296 ;@DEC BC\r
4297 opcode_0_B:\r
4298         sub z80bc,z80bc,#1<<16\r
4299         fetch 6\r
4300 ;@INC C\r
4301 opcode_0_C:\r
4302         opINC8L z80bc\r
4303         fetch 4\r
4304 ;@DEC C\r
4305 opcode_0_D:\r
4306         opDEC8L z80bc\r
4307         fetch 4\r
4308 ;@LD C,N\r
4309 opcode_0_E:\r
4310         ldrb r1,[z80pc],#1\r
4311         and z80bc,z80bc,#0xFF<<24\r
4312         orr z80bc,z80bc,r1, lsl #16\r
4313         fetch 7\r
4314 ;@RRCA\r
4315 opcode_0_F:\r
4316         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4317         movs z80a,z80a, lsr #25\r
4318         orrcs z80a,z80a,#1<<7\r
4319         orrcs z80f,z80f,#1<<CFlag\r
4320         mov z80a,z80a, lsl #24\r
4321         fetch 4\r
4322 ;@DJNZ $+2\r
4323 opcode_1_0:\r
4324         sub z80bc,z80bc,#1<<24\r
4325         tst z80bc,#0xFF<<24\r
4326         ldrsb r1,[z80pc],#1\r
4327         addne z80pc,z80pc,r1\r
4328         subne z80_icount,z80_icount,#5\r
4329         fetch 8\r
4330 \r
4331 ;@LD DE,NN\r
4332 opcode_1_1:\r
4333         ldrb r0,[z80pc],#1\r
4334         ldrb r1,[z80pc],#1\r
4335         orr r0,r0,r1, lsl #8\r
4336         mov z80de,r0, lsl #16\r
4337         fetch 10\r
4338 ;@LD (DE),A\r
4339 opcode_1_2:\r
4340         mov r0,z80a, lsr #24\r
4341         writemem8DE\r
4342         fetch 7\r
4343 ;@INC DE\r
4344 opcode_1_3:\r
4345         add z80de,z80de,#1<<16\r
4346         fetch 6\r
4347 ;@INC D\r
4348 opcode_1_4:\r
4349         opINC8H z80de\r
4350         fetch 4\r
4351 ;@DEC D\r
4352 opcode_1_5:\r
4353         opDEC8H z80de\r
4354         fetch 4\r
4355 ;@LD D,N\r
4356 opcode_1_6:\r
4357         ldrb r1,[z80pc],#1\r
4358         and z80de,z80de,#0xFF<<16\r
4359         orr z80de,z80de,r1, lsl #24\r
4360         fetch 7\r
4361 ;@RLA\r
4362 opcode_1_7:\r
4363         tst z80f,#1<<CFlag\r
4364         orrne z80a,z80a,#1<<23\r
4365         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4366         movs z80a,z80a, lsl #1\r
4367         orrcs z80f,z80f,#1<<CFlag\r
4368         fetch 4\r
4369 ;@JR $+2\r
4370 opcode_1_8:\r
4371         ldrsb r1,[z80pc],#1\r
4372         add z80pc,z80pc,r1\r
4373         fetch 12\r
4374 ;@ADD HL,DE\r
4375 opcode_1_9:\r
4376         opADD16 z80hl z80de\r
4377         fetch 11\r
4378 ;@LD A,(DE)\r
4379 opcode_1_A:\r
4380         mov r0,z80de, lsr #16\r
4381         readmem8\r
4382         mov z80a,r0, lsl #24\r
4383         fetch 7\r
4384 ;@DEC DE\r
4385 opcode_1_B:\r
4386         sub z80de,z80de,#1<<16\r
4387         fetch 6\r
4388 ;@INC E\r
4389 opcode_1_C:\r
4390         opINC8L z80de\r
4391         fetch 4\r
4392 ;@DEC E\r
4393 opcode_1_D:\r
4394         opDEC8L z80de\r
4395         fetch 4\r
4396 ;@LD E,N\r
4397 opcode_1_E:\r
4398         ldrb r0,[z80pc],#1\r
4399         and z80de,z80de,#0xFF<<24\r
4400         orr z80de,z80de,r0, lsl #16\r
4401         fetch 7\r
4402 ;@RRA\r
4403 opcode_1_F:\r
4404         orr z80a,z80a,z80f,lsr#1                ;@get C\r
4405         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)|(1<<CFlag)\r
4406         movs z80a,z80a,ror#25\r
4407         orrcs z80f,z80f,#1<<CFlag\r
4408         mov z80a,z80a,lsl#24\r
4409         fetch 4\r
4410 ;@JR NZ,$+2\r
4411 opcode_2_0:\r
4412         tst z80f,#1<<ZFlag\r
4413         beq opcode_1_8\r
4414         add z80pc,z80pc,#1\r
4415         fetch 7\r
4416 ;@LD HL,NN\r
4417 opcode_2_1:\r
4418         ldrb r0,[z80pc],#1\r
4419         ldrb r1,[z80pc],#1\r
4420         orr r0,r0,r1, lsl #8\r
4421         mov z80hl,r0, lsl #16\r
4422         fetch 10\r
4423 ;@LD (NN),HL\r
4424 opcode_ED_63:\r
4425         eatcycles 4\r
4426 ;@LD (NN),HL\r
4427 opcode_2_2:\r
4428         ldrb r0,[z80pc],#1\r
4429         ldrb r1,[z80pc],#1\r
4430         orr r1,r0,r1, lsl #8\r
4431         mov r0,z80hl, lsr #16\r
4432         writemem16\r
4433         fetch 16\r
4434 ;@INC HL\r
4435 opcode_2_3:\r
4436         add z80hl,z80hl,#1<<16\r
4437         fetch 6\r
4438 ;@INC H\r
4439 opcode_2_4:\r
4440         opINC8H z80hl\r
4441         fetch 4\r
4442 ;@DEC H\r
4443 opcode_2_5:\r
4444         opDEC8H z80hl\r
4445         fetch 4\r
4446 ;@LD H,N\r
4447 opcode_2_6:\r
4448         ldrb r1,[z80pc],#1\r
4449         and z80hl,z80hl,#0xFF<<16\r
4450         orr z80hl,z80hl,r1, lsl #24\r
4451         fetch 7\r
4452 DAATABLE_LOCAL: .word DAATable\r
4453 ;@DAA\r
4454 opcode_2_7:\r
4455         mov r1,z80a, lsr #24\r
4456         tst z80f,#1<<CFlag\r
4457         orrne r1,r1,#256\r
4458         tst z80f,#1<<HFlag\r
4459         orrne r1,r1,#512\r
4460         tst z80f,#1<<NFlag\r
4461         orrne r1,r1,#1024\r
4462         ldr r2,DAATABLE_LOCAL\r
4463         add r2,r2,r1, lsl #1\r
4464         ldrh r1,[r2]\r
4465         and z80f,r1,#0xFF\r
4466         and r2,r1,#0xFF<<8\r
4467         mov z80a,r2, lsl #16\r
4468         fetch 4\r
4469 ;@JR Z,$+2\r
4470 opcode_2_8:\r
4471         tst z80f,#1<<ZFlag\r
4472         bne opcode_1_8\r
4473         add z80pc,z80pc,#1\r
4474         fetch 7\r
4475 ;@ADD HL,HL\r
4476 opcode_2_9:\r
4477         opADD16_2 z80hl\r
4478         fetch 11\r
4479 ;@LD HL,(NN)\r
4480 opcode_ED_6B:\r
4481         eatcycles 4\r
4482 ;@LD HL,(NN)\r
4483 opcode_2_A:\r
4484         ldrb r0,[z80pc],#1\r
4485         ldrb r1,[z80pc],#1\r
4486         orr r0,r0,r1, lsl #8\r
4487         readmem16\r
4488         mov z80hl,r0, lsl #16\r
4489         fetch 16\r
4490 ;@DEC HL\r
4491 opcode_2_B:\r
4492         sub z80hl,z80hl,#1<<16\r
4493         fetch 6\r
4494 ;@INC L\r
4495 opcode_2_C:\r
4496         opINC8L z80hl\r
4497         fetch 4\r
4498 ;@DEC L\r
4499 opcode_2_D:\r
4500         opDEC8L z80hl\r
4501         fetch 4\r
4502 ;@LD L,N\r
4503 opcode_2_E:\r
4504         ldrb r0,[z80pc],#1\r
4505         and z80hl,z80hl,#0xFF<<24\r
4506         orr z80hl,z80hl,r0, lsl #16\r
4507         fetch 7\r
4508 ;@CPL\r
4509 opcode_2_F:\r
4510         eor z80a,z80a,#0xFF<<24\r
4511         orr z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4512         fetch 4\r
4513 ;@JR NC,$+2\r
4514 opcode_3_0:\r
4515         tst z80f,#1<<CFlag\r
4516         beq opcode_1_8\r
4517         add z80pc,z80pc,#1\r
4518         fetch 7\r
4519 ;@LD SP,NN\r
4520 opcode_3_1:\r
4521         ldrb r0,[z80pc],#1\r
4522         ldrb r1,[z80pc],#1\r
4523 \r
4524 .if FAST_Z80SP\r
4525         orr r0,r0,r1, lsl #8\r
4526         rebasesp\r
4527         mov z80sp,r0\r
4528 .else\r
4529         orr z80sp,r0,r1, lsl #8\r
4530 .endif\r
4531         fetch 10\r
4532 ;@LD (NN),A\r
4533 opcode_3_2:\r
4534         ldrb r0,[z80pc],#1\r
4535         ldrb r1,[z80pc],#1\r
4536         orr r1,r0,r1, lsl #8\r
4537         mov r0,z80a, lsr #24\r
4538         writemem8\r
4539         fetch 13\r
4540 ;@INC SP\r
4541 opcode_3_3:\r
4542         add z80sp,z80sp,#1\r
4543         fetch 6\r
4544 ;@INC (HL)\r
4545 opcode_3_4:\r
4546         readmem8HL\r
4547         opINC8b\r
4548         writemem8HL\r
4549         fetch 11\r
4550 ;@DEC (HL)\r
4551 opcode_3_5:\r
4552         readmem8HL\r
4553         opDEC8b\r
4554         writemem8HL\r
4555         fetch 11\r
4556 ;@LD (HL),N\r
4557 opcode_3_6:\r
4558         ldrb r0,[z80pc],#1\r
4559         writemem8HL\r
4560         fetch 10\r
4561 ;@SCF\r
4562 opcode_3_7:\r
4563         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4564         orr z80f,z80f,#1<<CFlag\r
4565         fetch 4\r
4566 ;@JR C,$+2\r
4567 opcode_3_8:\r
4568         tst z80f,#1<<CFlag\r
4569         bne opcode_1_8\r
4570         add z80pc,z80pc,#1\r
4571         fetch 7\r
4572 ;@ADD HL,SP\r
4573 opcode_3_9:\r
4574 .if FAST_Z80SP\r
4575         ldr r0,[cpucontext,#z80sp_base]\r
4576         sub r0,z80sp,r0\r
4577         opADD16s z80hl r0 16\r
4578 .else\r
4579         opADD16s z80hl z80sp 16\r
4580 .endif\r
4581         fetch 11\r
4582 ;@LD A,(NN)\r
4583 opcode_3_A:\r
4584         ldrb r0,[z80pc],#1\r
4585         ldrb r1,[z80pc],#1\r
4586         orr r0,r0,r1, lsl #8\r
4587         readmem8\r
4588         mov z80a,r0, lsl #24\r
4589         fetch 13\r
4590 ;@DEC SP\r
4591 opcode_3_B:\r
4592         sub z80sp,z80sp,#1\r
4593         fetch 6\r
4594 ;@INC A\r
4595 opcode_3_C:\r
4596         opINC8 z80a\r
4597         fetch 4\r
4598 ;@DEC A\r
4599 opcode_3_D:\r
4600         opDEC8 z80a\r
4601         fetch 4\r
4602 ;@LD A,N\r
4603 opcode_3_E:\r
4604         ldrb r0,[z80pc],#1\r
4605         mov z80a,r0, lsl #24\r
4606         fetch 7\r
4607 ;@CCF\r
4608 opcode_3_F:\r
4609         bic z80f,z80f,#(1<<NFlag)|(1<<HFlag)\r
4610         tst z80f,#1<<CFlag\r
4611         orrne z80f,z80f,#1<<HFlag\r
4612         eor z80f,z80f,#1<<CFlag\r
4613         fetch 4\r
4614 \r
4615 ;@LD B,C\r
4616 opcode_4_1:\r
4617         and z80bc,z80bc,#0xFF<<16\r
4618         orr z80bc,z80bc,z80bc, lsl #8\r
4619         fetch 4\r
4620 ;@LD B,D\r
4621 opcode_4_2:\r
4622         and z80bc,z80bc,#0xFF<<16\r
4623         and r1,z80de,#0xFF<<24\r
4624         orr z80bc,z80bc,r1\r
4625         fetch 4\r
4626 ;@LD B,E\r
4627 opcode_4_3:\r
4628         and z80bc,z80bc,#0xFF<<16\r
4629         and r1,z80de,#0xFF<<16\r
4630         orr z80bc,z80bc,r1, lsl #8\r
4631         fetch 4\r
4632 ;@LD B,H\r
4633 opcode_4_4:\r
4634         and z80bc,z80bc,#0xFF<<16\r
4635         and r1,z80hl,#0xFF<<24\r
4636         orr z80bc,z80bc,r1\r
4637         fetch 4\r
4638 ;@LD B,L\r
4639 opcode_4_5:\r
4640         and z80bc,z80bc,#0xFF<<16\r
4641         and r1,z80hl,#0xFF<<16\r
4642         orr z80bc,z80bc,r1, lsl #8\r
4643         fetch 4\r
4644 ;@LD B,(HL)\r
4645 opcode_4_6:\r
4646         readmem8HL\r
4647         and z80bc,z80bc,#0xFF<<16\r
4648         orr z80bc,z80bc,r0, lsl #24\r
4649         fetch 7\r
4650 ;@LD B,A\r
4651 opcode_4_7:\r
4652         and z80bc,z80bc,#0xFF<<16\r
4653         orr z80bc,z80bc,z80a\r
4654         fetch 4\r
4655 ;@LD C,B\r
4656 opcode_4_8:\r
4657         and z80bc,z80bc,#0xFF<<24\r
4658         orr z80bc,z80bc,z80bc, lsr #8\r
4659         fetch 4\r
4660 ;@LD C,D\r
4661 opcode_4_A:\r
4662         and z80bc,z80bc,#0xFF<<24\r
4663         and r1,z80de,#0xFF<<24\r
4664         orr z80bc,z80bc,r1, lsr #8\r
4665         fetch 4\r
4666 ;@LD C,E\r
4667 opcode_4_B:\r
4668         and z80bc,z80bc,#0xFF<<24\r
4669         and r1,z80de,#0xFF<<16\r
4670         orr z80bc,z80bc,r1 \r
4671         fetch 4\r
4672 ;@LD C,H\r
4673 opcode_4_C:\r
4674         and z80bc,z80bc,#0xFF<<24\r
4675         and r1,z80hl,#0xFF<<24\r
4676         orr z80bc,z80bc,r1, lsr #8\r
4677         fetch 4\r
4678 ;@LD C,L\r
4679 opcode_4_D:\r
4680         and z80bc,z80bc,#0xFF<<24\r
4681         and r1,z80hl,#0xFF<<16\r
4682         orr z80bc,z80bc,r1 \r
4683         fetch 4\r
4684 ;@LD C,(HL)\r
4685 opcode_4_E:\r
4686         readmem8HL\r
4687         and z80bc,z80bc,#0xFF<<24\r
4688         orr z80bc,z80bc,r0, lsl #16\r
4689         fetch 7\r
4690 ;@LD C,A\r
4691 opcode_4_F:\r
4692         and z80bc,z80bc,#0xFF<<24\r
4693         orr z80bc,z80bc,z80a, lsr #8\r
4694         fetch 4\r
4695 ;@LD D,B\r
4696 opcode_5_0:\r
4697         and z80de,z80de,#0xFF<<16\r
4698         and r1,z80bc,#0xFF<<24\r
4699         orr z80de,z80de,r1\r
4700         fetch 4\r
4701 ;@LD D,C\r
4702 opcode_5_1:\r
4703         and z80de,z80de,#0xFF<<16\r
4704         orr z80de,z80de,z80bc, lsl #8\r
4705         fetch 4\r
4706 ;@LD D,E\r
4707 opcode_5_3:\r
4708         and z80de,z80de,#0xFF<<16\r
4709         orr z80de,z80de,z80de, lsl #8\r
4710         fetch 4\r
4711 ;@LD D,H\r
4712 opcode_5_4:\r
4713         and z80de,z80de,#0xFF<<16\r
4714         and r1,z80hl,#0xFF<<24\r
4715         orr z80de,z80de,r1\r
4716         fetch 4\r
4717 ;@LD D,L\r
4718 opcode_5_5:\r
4719         and z80de,z80de,#0xFF<<16\r
4720         orr z80de,z80de,z80hl, lsl #8\r
4721         fetch 4\r
4722 ;@LD D,(HL)\r
4723 opcode_5_6:\r
4724         readmem8HL\r
4725         and z80de,z80de,#0xFF<<16\r
4726         orr z80de,z80de,r0, lsl #24\r
4727         fetch 7\r
4728 ;@LD D,A\r
4729 opcode_5_7:\r
4730         and z80de,z80de,#0xFF<<16\r
4731         orr z80de,z80de,z80a\r
4732         fetch 4\r
4733 ;@LD E,B\r
4734 opcode_5_8:\r
4735         and z80de,z80de,#0xFF<<24\r
4736         and r1,z80bc,#0xFF<<24\r
4737         orr z80de,z80de,r1, lsr #8\r
4738         fetch 4\r
4739 ;@LD E,C\r
4740 opcode_5_9:\r
4741         and z80de,z80de,#0xFF<<24\r
4742         and r1,z80bc,#0xFF<<16\r
4743         orr z80de,z80de,r1 \r
4744         fetch 4\r
4745 ;@LD E,D\r
4746 opcode_5_A:\r
4747         and z80de,z80de,#0xFF<<24\r
4748         orr z80de,z80de,z80de, lsr #8\r
4749         fetch 4\r
4750 ;@LD E,H\r
4751 opcode_5_C:\r
4752         and z80de,z80de,#0xFF<<24\r
4753         and r1,z80hl,#0xFF<<24\r
4754         orr z80de,z80de,r1, lsr #8\r
4755         fetch 4\r
4756 ;@LD E,L\r
4757 opcode_5_D:\r
4758         and z80de,z80de,#0xFF<<24\r
4759         and r1,z80hl,#0xFF<<16\r
4760         orr z80de,z80de,r1 \r
4761         fetch 4\r
4762 ;@LD E,(HL)\r
4763 opcode_5_E:\r
4764         readmem8HL\r
4765         and z80de,z80de,#0xFF<<24\r
4766         orr z80de,z80de,r0, lsl #16\r
4767         fetch 7\r
4768 ;@LD E,A\r
4769 opcode_5_F:\r
4770         and z80de,z80de,#0xFF<<24\r
4771         orr z80de,z80de,z80a, lsr #8\r
4772         fetch 4\r
4773 \r
4774 ;@LD H,B\r
4775 opcode_6_0:\r
4776         and z80hl,z80hl,#0xFF<<16\r
4777         and r1,z80bc,#0xFF<<24\r
4778         orr z80hl,z80hl,r1\r
4779         fetch 4\r
4780 ;@LD H,C\r
4781 opcode_6_1:\r
4782         and z80hl,z80hl,#0xFF<<16\r
4783         orr z80hl,z80hl,z80bc, lsl #8\r
4784         fetch 4\r
4785 ;@LD H,D\r
4786 opcode_6_2:\r
4787         and z80hl,z80hl,#0xFF<<16\r
4788         and r1,z80de,#0xFF<<24\r
4789         orr z80hl,z80hl,r1\r
4790         fetch 4\r
4791 ;@LD H,E\r
4792 opcode_6_3:\r
4793         and z80hl,z80hl,#0xFF<<16\r
4794         orr z80hl,z80hl,z80de, lsl #8\r
4795         fetch 4\r
4796 ;@LD H,L\r
4797 opcode_6_5:\r
4798         and z80hl,z80hl,#0xFF<<16\r
4799         orr z80hl,z80hl,z80hl, lsl #8\r
4800         fetch 4\r
4801 ;@LD H,(HL)\r
4802 opcode_6_6:\r
4803         readmem8HL\r
4804         and z80hl,z80hl,#0xFF<<16\r
4805         orr z80hl,z80hl,r0, lsl #24\r
4806         fetch 7\r
4807 ;@LD H,A\r
4808 opcode_6_7:\r
4809         and z80hl,z80hl,#0xFF<<16\r
4810         orr z80hl,z80hl,z80a\r
4811         fetch 4\r
4812 \r
4813 ;@LD L,B\r
4814 opcode_6_8:\r
4815         and z80hl,z80hl,#0xFF<<24\r
4816         and r1,z80bc,#0xFF<<24\r
4817         orr z80hl,z80hl,r1, lsr #8\r
4818         fetch 4\r
4819 ;@LD L,C\r
4820 opcode_6_9:\r
4821         and z80hl,z80hl,#0xFF<<24\r
4822         and r1,z80bc,#0xFF<<16\r
4823         orr z80hl,z80hl,r1\r
4824         fetch 4\r
4825 ;@LD L,D\r
4826 opcode_6_A:\r
4827         and z80hl,z80hl,#0xFF<<24\r
4828         and r1,z80de,#0xFF<<24\r
4829         orr z80hl,z80hl,r1, lsr #8\r
4830         fetch 4\r
4831 ;@LD L,E\r
4832 opcode_6_B:\r
4833         and z80hl,z80hl,#0xFF<<24\r
4834         and r1,z80de,#0xFF<<16\r
4835         orr z80hl,z80hl,r1\r
4836         fetch 4\r
4837 ;@LD L,H\r
4838 opcode_6_C:\r
4839         and z80hl,z80hl,#0xFF<<24\r
4840         orr z80hl,z80hl,z80hl, lsr #8\r
4841         fetch 4\r
4842 ;@LD L,(HL)\r
4843 opcode_6_E:\r
4844         readmem8HL\r
4845         and z80hl,z80hl,#0xFF<<24\r
4846         orr z80hl,z80hl,r0, lsl #16\r
4847         fetch 7\r
4848 ;@LD L,A\r
4849 opcode_6_F:\r
4850         and z80hl,z80hl,#0xFF<<24\r
4851         orr z80hl,z80hl,z80a, lsr #8\r
4852         fetch 4\r
4853 \r
4854 ;@LD (HL),B\r
4855 opcode_7_0:\r
4856         mov r0,z80bc, lsr #24\r
4857         writemem8HL\r
4858         fetch 7\r
4859 ;@LD (HL),C\r
4860 opcode_7_1:\r
4861         mov r0,z80bc, lsr #16\r
4862         and r0,r0,#0xFF\r
4863         writemem8HL\r
4864         fetch 7\r
4865 ;@LD (HL),D\r
4866 opcode_7_2:\r
4867         mov r0,z80de, lsr #24\r
4868         writemem8HL\r
4869         fetch 7\r
4870 ;@LD (HL),E\r
4871 opcode_7_3:\r
4872         mov r0,z80de, lsr #16\r
4873         and r0,r0,#0xFF\r
4874         writemem8HL\r
4875         fetch 7\r
4876 ;@LD (HL),H\r
4877 opcode_7_4:\r
4878         mov r0,z80hl, lsr #24\r
4879         writemem8HL\r
4880         fetch 7\r
4881 ;@LD (HL),L\r
4882 opcode_7_5:\r
4883         mov r1,z80hl, lsr #16\r
4884         and r0,r1,#0xFF\r
4885         writemem8\r
4886         fetch 7\r
4887 ;@HALT\r
4888 opcode_7_6:\r
4889         sub z80pc,z80pc,#1\r
4890         ldrb r0,[cpucontext,#z80if]\r
4891         orr r0,r0,#Z80_HALT\r
4892         strb r0,[cpucontext,#z80if]\r
4893         mov z80_icount,#0\r
4894         b z80_execute_end\r
4895 ;@LD (HL),A\r
4896 opcode_7_7:\r
4897         mov r0,z80a, lsr #24\r
4898         writemem8HL\r
4899         fetch 7\r
4900 \r
4901 ;@LD A,B\r
4902 opcode_7_8:\r
4903         and z80a,z80bc,#0xFF<<24\r
4904         fetch 4\r
4905 ;@LD A,C\r
4906 opcode_7_9:\r
4907         mov z80a,z80bc, lsl #8\r
4908         fetch 4\r
4909 ;@LD A,D\r
4910 opcode_7_A:\r
4911         and z80a,z80de,#0xFF<<24\r
4912         fetch 4\r
4913 ;@LD A,E\r
4914 opcode_7_B:\r
4915         mov z80a,z80de, lsl #8\r
4916         fetch 4\r
4917 ;@LD A,H\r
4918 opcode_7_C:\r
4919         and z80a,z80hl,#0xFF<<24\r
4920         fetch 4\r
4921 ;@LD A,L\r
4922 opcode_7_D:\r
4923         mov z80a,z80hl, lsl #8\r
4924         fetch 4\r
4925 ;@LD A,(HL)\r
4926 opcode_7_E:\r
4927         readmem8HL\r
4928         mov z80a,r0, lsl #24\r
4929         fetch 7\r
4930 \r
4931 ;@ADD A,B\r
4932 opcode_8_0:\r
4933         opADDH z80bc\r
4934 ;@ADD A,C\r
4935 opcode_8_1:\r
4936         opADDL z80bc\r
4937 ;@ADD A,D\r
4938 opcode_8_2:\r
4939         opADDH z80de\r
4940 ;@ADD A,E\r
4941 opcode_8_3:\r
4942         opADDL z80de\r
4943 ;@ADD A,H\r
4944 opcode_8_4:\r
4945         opADDH z80hl\r
4946 ;@ADD A,L\r
4947 opcode_8_5:\r
4948         opADDL z80hl\r
4949 ;@ADD A,(HL)\r
4950 opcode_8_6:\r
4951         readmem8HL\r
4952         opADDb\r
4953         fetch 7\r
4954 ;@ADD A,A\r
4955 opcode_8_7:\r
4956         opADDA\r
4957 \r
4958 ;@ADC A,B\r
4959 opcode_8_8:\r
4960         opADCH z80bc\r
4961 ;@ADC A,C\r
4962 opcode_8_9:\r
4963         opADCL z80bc\r
4964 ;@ADC A,D\r
4965 opcode_8_A:\r
4966         opADCH z80de\r
4967 ;@ADC A,E\r
4968 opcode_8_B:\r
4969         opADCL z80de\r
4970 ;@ADC A,H\r
4971 opcode_8_C:\r
4972         opADCH z80hl\r
4973 ;@ADC A,L\r
4974 opcode_8_D:\r
4975         opADCL z80hl\r
4976 ;@ADC A,(HL)\r
4977 opcode_8_E:\r
4978         readmem8HL\r
4979         opADCb\r
4980         fetch 7\r
4981 ;@ADC A,A\r
4982 opcode_8_F:\r
4983         opADCA\r
4984 \r
4985 ;@SUB B\r
4986 opcode_9_0:\r
4987         opSUBH z80bc\r
4988 ;@SUB C\r
4989 opcode_9_1:\r
4990         opSUBL z80bc\r
4991 ;@SUB D\r
4992 opcode_9_2:\r
4993         opSUBH z80de\r
4994 ;@SUB E\r
4995 opcode_9_3:\r
4996         opSUBL z80de\r
4997 ;@SUB H\r
4998 opcode_9_4:\r
4999         opSUBH z80hl\r
5000 ;@SUB L\r
5001 opcode_9_5:\r
5002         opSUBL z80hl\r
5003 ;@SUB (HL)\r
5004 opcode_9_6:\r
5005         readmem8HL\r
5006         opSUBb\r
5007         fetch 7\r
5008 ;@SUB A\r
5009 opcode_9_7:\r
5010         opSUBA\r
5011 \r
5012 ;@SBC B \r
5013 opcode_9_8:\r
5014         opSBCH z80bc\r
5015 ;@SBC C\r
5016 opcode_9_9:\r
5017         opSBCL z80bc\r
5018 ;@SBC D\r
5019 opcode_9_A:\r
5020         opSBCH z80de\r
5021 ;@SBC E\r
5022 opcode_9_B:\r
5023         opSBCL z80de\r
5024 ;@SBC H\r
5025 opcode_9_C:\r
5026         opSBCH z80hl\r
5027 ;@SBC L\r
5028 opcode_9_D:\r
5029         opSBCL z80hl\r
5030 ;@SBC (HL)\r
5031 opcode_9_E:\r
5032         readmem8HL\r
5033         opSBCb\r
5034         fetch 7\r
5035 ;@SBC A\r
5036 opcode_9_F:\r
5037         opSBCA\r
5038 \r
5039 ;@AND B\r
5040 opcode_A_0:\r
5041         opANDH z80bc\r
5042 ;@AND C\r
5043 opcode_A_1:\r
5044         opANDL z80bc\r
5045 ;@AND D\r
5046 opcode_A_2:\r
5047         opANDH z80de\r
5048 ;@AND E\r
5049 opcode_A_3:\r
5050         opANDL z80de\r
5051 ;@AND H\r
5052 opcode_A_4:\r
5053         opANDH z80hl\r
5054 ;@AND L\r
5055 opcode_A_5:\r
5056         opANDL z80hl\r
5057 ;@AND (HL)\r
5058 opcode_A_6:\r
5059         readmem8HL\r
5060         opANDb\r
5061         fetch 7\r
5062 ;@AND A\r
5063 opcode_A_7:\r
5064         opANDA\r
5065 \r
5066 ;@XOR B\r
5067 opcode_A_8:\r
5068         opXORH z80bc\r
5069 ;@XOR C\r
5070 opcode_A_9:\r
5071         opXORL z80bc\r
5072 ;@XOR D\r
5073 opcode_A_A:\r
5074         opXORH z80de\r
5075 ;@XOR E\r
5076 opcode_A_B:\r
5077         opXORL z80de\r
5078 ;@XOR H\r
5079 opcode_A_C:\r
5080         opXORH z80hl\r
5081 ;@XOR L\r
5082 opcode_A_D:\r
5083         opXORL z80hl\r
5084 ;@XOR (HL)\r
5085 opcode_A_E:\r
5086         readmem8HL\r
5087         opXORb\r
5088         fetch 7\r
5089 ;@XOR A\r
5090 opcode_A_F:\r
5091         opXORA\r
5092 \r
5093 ;@OR B\r
5094 opcode_B_0:\r
5095         opORH z80bc\r
5096 ;@OR C\r
5097 opcode_B_1:\r
5098         opORL z80bc\r
5099 ;@OR D\r
5100 opcode_B_2:\r
5101         opORH z80de\r
5102 ;@OR E\r
5103 opcode_B_3:\r
5104         opORL z80de\r
5105 ;@OR H\r
5106 opcode_B_4:\r
5107         opORH z80hl\r
5108 ;@OR L\r
5109 opcode_B_5:\r
5110         opORL z80hl\r
5111 ;@OR (HL)\r
5112 opcode_B_6:\r
5113         readmem8HL\r
5114         opORb\r
5115         fetch 7\r
5116 ;@OR A\r
5117 opcode_B_7:\r
5118         opORA\r
5119 \r
5120 ;@CP B\r
5121 opcode_B_8:\r
5122         opCPH z80bc\r
5123 ;@CP C\r
5124 opcode_B_9:\r
5125         opCPL z80bc\r
5126 ;@CP D\r
5127 opcode_B_A:\r
5128         opCPH z80de\r
5129 ;@CP E\r
5130 opcode_B_B:\r
5131         opCPL z80de\r
5132 ;@CP H\r
5133 opcode_B_C:\r
5134         opCPH z80hl\r
5135 ;@CP L\r
5136 opcode_B_D:\r
5137         opCPL z80hl\r
5138 ;@CP (HL)\r
5139 opcode_B_E:\r
5140         readmem8HL\r
5141         opCPb\r
5142         fetch 7\r
5143 ;@CP A\r
5144 opcode_B_F:\r
5145         opCPA\r
5146 \r
5147 ;@RET NZ\r
5148 opcode_C_0:\r
5149         tst z80f,#1<<ZFlag\r
5150         beq opcode_C_9_cond             ;@unconditional RET\r
5151         fetch 5\r
5152 \r
5153 ;@POP BC\r
5154 opcode_C_1:\r
5155         opPOPreg z80bc\r
5156 \r
5157 ;@JP NZ,$+3\r
5158 opcode_C_2:\r
5159         tst z80f,#1<<ZFlag\r
5160         beq opcode_C_3          ;@unconditional JP\r
5161         add z80pc,z80pc,#2\r
5162         fetch 10\r
5163 ;@JP $+3\r
5164 opcode_C_3:\r
5165         ldrb r0,[z80pc],#1\r
5166         ldrb r1,[z80pc],#1\r
5167         orr r0,r0,r1, lsl #8\r
5168         rebasepc\r
5169         fetch 10\r
5170 ;@CALL NZ,NN\r
5171 opcode_C_4:\r
5172         tst z80f,#1<<ZFlag\r
5173         beq opcode_C_D          ;@unconditional CALL\r
5174         add z80pc,z80pc,#2\r
5175         fetch 10\r
5176 \r
5177 ;@PUSH BC\r
5178 opcode_C_5:\r
5179         opPUSHreg z80bc\r
5180         fetch 11\r
5181 ;@ADD A,N\r
5182 opcode_C_6:\r
5183         ldrb r0,[z80pc],#1\r
5184         opADDb\r
5185         fetch 7\r
5186 ;@RST 0\r
5187 opcode_C_7:\r
5188         opRST 0x00\r
5189 \r
5190 ;@RET Z\r
5191 opcode_C_8:\r
5192         tst z80f,#1<<ZFlag\r
5193         bne opcode_C_9_cond             ;@unconditional RET\r
5194         fetch 5\r
5195 \r
5196 opcode_C_9_cond:\r
5197         sub z80_icount,#1\r
5198 ;@RET\r
5199 opcode_C_9:\r
5200     opPOP\r
5201         rebasepc\r
5202         fetch 10\r
5203 ;@JP Z,$+3\r
5204 opcode_C_A:\r
5205         tst z80f,#1<<ZFlag\r
5206         bne opcode_C_3  ;@unconditional JP\r
5207         add z80pc,z80pc,#2\r
5208         fetch 10\r
5209 \r
5210 ;@This reads this opcodes_CB lookup table to find the location of\r
5211 ;@the CB sub for the intruction and then branches to that location\r
5212 opcode_C_B:\r
5213         ldrb r0,[z80pc],#1\r
5214         ldr pc,[pc,r0, lsl #2]\r
5215 opcodes_CB:     .word 0x00000000\r
5216                         .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
5217                         .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
5218                         .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
5219                         .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
5220                         .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
5221                         .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
5222                         .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
5223                         .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
5224                         .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
5225                         .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
5226                         .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
5227                         .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
5228                         .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
5229                         .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
5230                         .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
5231                         .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
5232                         .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
5233                         .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
5234                         .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
5235                         .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
5236                         .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
5237                         .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
5238                         .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
5239                         .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
5240                         .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
5241                         .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
5242                         .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
5243                         .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
5244                         .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
5245                         .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
5246                         .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
5247                         .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
5248 \r
5249 ;@CALL Z,NN\r
5250 opcode_C_C:\r
5251         tst z80f,#1<<ZFlag\r
5252         bne opcode_C_D          ;@unconditional CALL\r
5253         add z80pc,z80pc,#2\r
5254         fetch 10\r
5255 ;@CALL NN\r
5256 opcode_C_D:\r
5257         ldrb r0,[z80pc],#1\r
5258         ldrb r1,[z80pc],#1\r
5259         ldr r2,[cpucontext,#z80pc_base]\r
5260         sub r2,z80pc,r2\r
5261         orr z80pc,r0,r1, lsl #8\r
5262     opPUSHareg r2\r
5263     mov r0,z80pc\r
5264         rebasepc\r
5265         fetch 17\r
5266 ;@ADC A,N\r
5267 opcode_C_E:\r
5268         ldrb r0,[z80pc],#1\r
5269         opADCb\r
5270         fetch 7\r
5271 ;@RST 8H\r
5272 opcode_C_F:\r
5273         opRST 0x08\r
5274 \r
5275 ;@RET NC\r
5276 opcode_D_0:\r
5277         tst z80f,#1<<CFlag\r
5278         beq opcode_C_9_cond             ;@unconditional RET\r
5279         fetch 5\r
5280 ;@POP DE\r
5281 opcode_D_1:\r
5282         opPOPreg z80de\r
5283 \r
5284 ;@JP NC, $+3\r
5285 opcode_D_2 :\r
5286         tst z80f,#1<<CFlag\r
5287         beq opcode_C_3          ;@unconditional JP\r
5288         add z80pc,z80pc,#2\r
5289         fetch 10\r
5290 ;@OUT (N),A\r
5291 opcode_D_3:\r
5292         ldrb r0,[z80pc],#1\r
5293         orr r0,r0,z80a,lsr#16\r
5294         mov r1,z80a, lsr #24\r
5295         opOUT\r
5296         fetch 11\r
5297 ;@CALL NC,NN\r
5298 opcode_D_4:\r
5299         tst z80f,#1<<CFlag\r
5300         beq opcode_C_D          ;@unconditional CALL\r
5301         add z80pc,z80pc,#2\r
5302         fetch 10\r
5303 ;@PUSH DE\r
5304 opcode_D_5:\r
5305         opPUSHreg z80de\r
5306         fetch 11\r
5307 ;@SUB N\r
5308 opcode_D_6:\r
5309         ldrb r0,[z80pc],#1\r
5310         opSUBb\r
5311         fetch 7\r
5312 \r
5313 ;@RST 10H\r
5314 opcode_D_7:\r
5315         opRST 0x10\r
5316 \r
5317 ;@RET C\r
5318 opcode_D_8:\r
5319         tst z80f,#1<<CFlag\r
5320         bne opcode_C_9_cond             ;@unconditional RET\r
5321         fetch 5\r
5322 ;@EXX\r
5323 opcode_D_9:\r
5324         add r1,cpucontext,#z80bc2\r
5325         swp z80bc,z80bc,[r1]\r
5326         add r1,cpucontext,#z80de2\r
5327         swp z80de,z80de,[r1]\r
5328         add r1,cpucontext,#z80hl2\r
5329         swp z80hl,z80hl,[r1]\r
5330         fetch 4\r
5331 ;@JP C,$+3\r
5332 opcode_D_A:\r
5333         tst z80f,#1<<CFlag\r
5334         bne opcode_C_3          ;@unconditional JP\r
5335         add z80pc,z80pc,#2\r
5336         fetch 10\r
5337 ;@IN A,(N)\r
5338 opcode_D_B:\r
5339         ldrb r0,[z80pc],#1\r
5340         orr r0,r0,z80a,lsr#16\r
5341         opIN\r
5342         mov z80a,r0, lsl #24    ;@ r0 = data read\r
5343         fetch 11\r
5344 ;@CALL C,NN\r
5345 opcode_D_C:\r
5346         tst z80f,#1<<CFlag\r
5347         bne opcode_C_D          ;@unconditional CALL\r
5348         add z80pc,z80pc,#2\r
5349         fetch 10\r
5350 \r
5351 ;@opcodes_DD\r
5352 opcode_D_D:\r
5353         add z80xx,cpucontext,#z80ix\r
5354         b opcode_D_D_F_D\r
5355 opcode_F_D:\r
5356         add z80xx,cpucontext,#z80iy\r
5357 opcode_D_D_F_D:\r
5358         ldrb r0,[z80pc],#1\r
5359         ldr pc,[pc,r0, lsl #2]\r
5360 opcodes_DD:     .word 0x00000000\r
5361                         .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
5362                         .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
5363                         .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
5364                         .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
5365                         .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
5366                         .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
5367                         .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
5368                         .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
5369                         .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
5370                         .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
5371                         .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
5372                         .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
5373                         .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
5374                         .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
5375                         .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
5376                         .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
5377                         .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
5378                         .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
5379                         .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
5380                         .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
5381                         .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
5382                         .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
5383                         .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
5384                         .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
5385                         .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
5386                         .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
5387                         .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
5388                         .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
5389                         .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
5390                         .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
5391                         .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
5392                         .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
5393 \r
5394 ;@SBC A,N\r
5395 opcode_D_E:\r
5396         ldrb r0,[z80pc],#1\r
5397         opSBCb\r
5398         fetch 7\r
5399 ;@RST 18H\r
5400 opcode_D_F:\r
5401         opRST 0x18\r
5402 \r
5403 ;@RET PO\r
5404 opcode_E_0:\r
5405         tst z80f,#1<<VFlag\r
5406         beq opcode_C_9_cond             ;@unconditional RET\r
5407         fetch 5\r
5408 ;@POP HL\r
5409 opcode_E_1:\r
5410         opPOPreg z80hl\r
5411 \r
5412 ;@JP PO,$+3\r
5413 opcode_E_2:\r
5414         tst z80f,#1<<VFlag\r
5415         beq opcode_C_3          ;@unconditional JP\r
5416         add z80pc,z80pc,#2\r
5417         fetch 10\r
5418 ;@EX (SP),HL\r
5419 opcode_E_3:\r
5420 .if FAST_Z80SP\r
5421         ldrb r0,[z80sp]\r
5422         ldrb r1,[z80sp,#1]\r
5423         orr r0,r0,r1, lsl #8\r
5424         mov r1,z80hl, lsr #24\r
5425         strb r1,[z80sp,#1]\r
5426         mov r1,z80hl, lsr #16\r
5427         strb r1,[z80sp]\r
5428         mov z80hl,r0, lsl #16\r
5429 .else\r
5430         mov r0,z80sp\r
5431         readmem16\r
5432         mov r1,r0\r
5433         mov r0,z80hl,lsr#16\r
5434         mov z80hl,r1,lsl#16\r
5435         mov r1,z80sp\r
5436         writemem16\r
5437 .endif\r
5438         fetch 19\r
5439 ;@CALL PO,NN\r
5440 opcode_E_4:\r
5441         tst z80f,#1<<VFlag\r
5442         beq opcode_C_D          ;@unconditional CALL\r
5443         add z80pc,z80pc,#2\r
5444         fetch 10\r
5445 ;@PUSH HL\r
5446 opcode_E_5:\r
5447         opPUSHreg z80hl\r
5448         fetch 11\r
5449 ;@AND N\r
5450 opcode_E_6:\r
5451         ldrb r0,[z80pc],#1\r
5452         opANDb\r
5453         fetch 7\r
5454 ;@RST 20H\r
5455 opcode_E_7:\r
5456         opRST 0x20\r
5457 \r
5458 ;@RET PE\r
5459 opcode_E_8:\r
5460         tst z80f,#1<<VFlag\r
5461         bne opcode_C_9_cond             ;@unconditional RET\r
5462         fetch 5\r
5463 ;@JP (HL)\r
5464 opcode_E_9:\r
5465         mov r0,z80hl, lsr #16\r
5466         rebasepc\r
5467         fetch 4\r
5468 ;@JP PE,$+3\r
5469 opcode_E_A:\r
5470         tst z80f,#1<<VFlag\r
5471         bne opcode_C_3          ;@unconditional JP\r
5472         add z80pc,z80pc,#2\r
5473         fetch 10\r
5474 ;@EX DE,HL\r
5475 opcode_E_B:\r
5476         mov r1,z80de\r
5477         mov z80de,z80hl\r
5478         mov z80hl,r1\r
5479         fetch 4\r
5480 ;@CALL PE,NN\r
5481 opcode_E_C:\r
5482         tst z80f,#1<<VFlag\r
5483         bne opcode_C_D          ;@unconditional CALL\r
5484         add z80pc,z80pc,#2\r
5485         fetch 10\r
5486 \r
5487 ;@This should be caught at start\r
5488 opcode_E_D:\r
5489         ldrb r1,[z80pc],#1\r
5490         ldr pc,[pc,r1, lsl #2]\r
5491 opcodes_ED:     .word 0x00000000\r
5492                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5493                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5494                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5495                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5496                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5497                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5498                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5499                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5500                         .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
5501                         .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
5502                         .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
5503                         .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
5504                         .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
5505                         .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
5506                         .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
5507                         .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
5508                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5509                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5510                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5511                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5512                         .word opcode_ED_A0,opcode_ED_A1,opcode_ED_A2,opcode_ED_A3,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5513                         .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
5514                         .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
5515                         .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
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_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5523                         .word opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF,opcode_ED_NF\r
5524 \r
5525 ;@XOR N\r
5526 opcode_E_E:\r
5527         ldrb r0,[z80pc],#1\r
5528         opXORb\r
5529         fetch 7\r
5530 ;@RST 28H\r
5531 opcode_E_F:\r
5532         opRST 0x28\r
5533 \r
5534 ;@RET P\r
5535 opcode_F_0:\r
5536         tst z80f,#1<<SFlag\r
5537         beq opcode_C_9_cond             ;@unconditional RET\r
5538         fetch 5\r
5539 ;@POP AF\r
5540 opcode_F_1:\r
5541 .if FAST_Z80SP\r
5542         ldrb z80f,[z80sp],#1\r
5543         sub r0,opcodes,#0x200\r
5544         ldrb z80f,[r0,z80f]\r
5545         ldrb z80a,[z80sp],#1\r
5546         mov z80a,z80a, lsl #24\r
5547 .else\r
5548         mov r0,z80sp\r
5549         readmem16\r
5550         add z80sp,z80sp,#2\r
5551         and z80a,r0,#0xFF00\r
5552         mov z80a,z80a,lsl#16\r
5553         and z80f,r0,#0xFF\r
5554         sub r0,opcodes,#0x200\r
5555         ldrb z80f,[r0,z80f]\r
5556 .endif\r
5557         fetch 10\r
5558 ;@JP P,$+3\r
5559 opcode_F_2:\r
5560         tst z80f,#1<<SFlag\r
5561         beq opcode_C_3          ;@unconditional JP\r
5562         add z80pc,z80pc,#2\r
5563         fetch 10\r
5564 ;@DI\r
5565 opcode_F_3:\r
5566         ldrb r1,[cpucontext,#z80if]\r
5567         bic r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5568         strb r1,[cpucontext,#z80if]\r
5569         fetch 4\r
5570 ;@CALL P,NN\r
5571 opcode_F_4:\r
5572         tst z80f,#1<<SFlag\r
5573         beq opcode_C_D          ;@unconditional CALL\r
5574         add z80pc,z80pc,#2\r
5575         fetch 10\r
5576 ;@PUSH AF\r
5577 opcode_F_5:\r
5578         sub r0,opcodes,#0x300\r
5579         ldrb r0,[r0,z80f]\r
5580         orr r2,r0,z80a,lsr#16\r
5581     opPUSHareg r2\r
5582         fetch 11\r
5583 ;@OR N\r
5584 opcode_F_6:\r
5585         ldrb r0,[z80pc],#1\r
5586         opORb\r
5587         fetch 7\r
5588 ;@RST 30H\r
5589 opcode_F_7:\r
5590         opRST 0x30\r
5591 \r
5592 ;@RET M\r
5593 opcode_F_8:\r
5594         tst z80f,#1<<SFlag\r
5595         bne opcode_C_9_cond             ;@unconditional RET\r
5596         fetch 5\r
5597 ;@LD SP,HL\r
5598 opcode_F_9:\r
5599 .if FAST_Z80SP\r
5600         mov r0,z80hl, lsr #16\r
5601         rebasesp\r
5602         mov z80sp,r0\r
5603 .else\r
5604         mov z80sp,z80hl, lsr #16\r
5605 .endif\r
5606         fetch 6\r
5607 ;@JP M,$+3\r
5608 opcode_F_A:\r
5609         tst z80f,#1<<SFlag\r
5610         bne opcode_C_3          ;@unconditional JP\r
5611         add z80pc,z80pc,#2\r
5612         fetch 10\r
5613 MAIN_opcodes_POINTER: .word MAIN_opcodes\r
5614 EI_DUMMY_opcodes_POINTER: .word EI_DUMMY_opcodes\r
5615 ;@EI\r
5616 opcode_F_B:\r
5617         ldrb r1,[cpucontext,#z80if]\r
5618         tst r1,#Z80_IF1\r
5619         bne ei_return_exit\r
5620 \r
5621         orr r1,r1,#(Z80_IF1)|(Z80_IF2)\r
5622         strb r1,[cpucontext,#z80if]\r
5623 \r
5624         mov r2,opcodes\r
5625         ldr opcodes,EI_DUMMY_opcodes_POINTER\r
5626         ldr pc,[r2,r0, lsl #2]\r
5627 \r
5628 ei_return:\r
5629         ;@point that program returns from EI to check interupts\r
5630         ;@an interupt can not be taken directly after a EI opcode\r
5631         ;@ reset z80pc and opcode pointer\r
5632         ldrh r0,[cpucontext,#z80irq] @ 0x4C\r
5633         sub z80pc,z80pc,#1\r
5634         ldr opcodes,MAIN_opcodes_POINTER\r
5635         ;@ check ints\r
5636         tst r0,#1\r
5637         movnes r0,r0,lsr #8\r
5638     blne DoInterrupt\r
5639         ;@ continue\r
5640 ei_return_exit:\r
5641         fetch 4\r
5642 \r
5643 ;@CALL M,NN\r
5644 opcode_F_C:\r
5645         tst z80f,#1<<SFlag\r
5646         bne opcode_C_D          ;@unconditional CALL\r
5647         add z80pc,z80pc,#2\r
5648         fetch 10\r
5649 \r
5650 ;@SHOULD BE CAUGHT AT START - FD SECTION\r
5651 \r
5652 ;@CP N\r
5653 opcode_F_E:\r
5654         ldrb r0,[z80pc],#1\r
5655         opCPb\r
5656         fetch 7\r
5657 ;@RST 38H\r
5658 opcode_F_F:\r
5659         opRST 0x38\r
5660 \r
5661 \r
5662 ;@##################################\r
5663 ;@##################################\r
5664 ;@###  opcodes CB  #########################\r
5665 ;@##################################\r
5666 ;@##################################\r
5667 \r
5668 \r
5669 ;@RLC B\r
5670 opcode_CB_00:\r
5671         opRLCH z80bc\r
5672 ;@RLC C\r
5673 opcode_CB_01:\r
5674         opRLCL z80bc\r
5675 ;@RLC D\r
5676 opcode_CB_02:\r
5677         opRLCH z80de\r
5678 ;@RLC E\r
5679 opcode_CB_03:\r
5680         opRLCL z80de\r
5681 ;@RLC H\r
5682 opcode_CB_04:\r
5683         opRLCH z80hl\r
5684 ;@RLC L\r
5685 opcode_CB_05:\r
5686         opRLCL z80hl\r
5687 ;@RLC (HL)\r
5688 opcode_CB_06:\r
5689         readmem8HL\r
5690         opRLCb\r
5691         writemem8HL\r
5692         fetch 15\r
5693 ;@RLC A\r
5694 opcode_CB_07:\r
5695         opRLCA\r
5696 \r
5697 ;@RRC B\r
5698 opcode_CB_08:\r
5699         opRRCH z80bc\r
5700 ;@RRC C\r
5701 opcode_CB_09:\r
5702         opRRCL z80bc\r
5703 ;@RRC D\r
5704 opcode_CB_0A:\r
5705         opRRCH z80de\r
5706 ;@RRC E\r
5707 opcode_CB_0B:\r
5708         opRRCL z80de\r
5709 ;@RRC H\r
5710 opcode_CB_0C:\r
5711         opRRCH z80hl\r
5712 ;@RRC L\r
5713 opcode_CB_0D:\r
5714         opRRCL z80hl\r
5715 ;@RRC (HL)\r
5716 opcode_CB_0E :\r
5717         readmem8HL\r
5718         opRRCb\r
5719         writemem8HL\r
5720         fetch 15\r
5721 ;@RRC A\r
5722 opcode_CB_0F:\r
5723         opRRCA\r
5724 \r
5725 ;@RL B\r
5726 opcode_CB_10:\r
5727         opRLH z80bc\r
5728 ;@RL C\r
5729 opcode_CB_11:\r
5730         opRLL z80bc\r
5731 ;@RL D\r
5732 opcode_CB_12:\r
5733         opRLH z80de\r
5734 ;@RL E\r
5735 opcode_CB_13:\r
5736         opRLL z80de\r
5737 ;@RL H\r
5738 opcode_CB_14:\r
5739         opRLH z80hl\r
5740 ;@RL L\r
5741 opcode_CB_15:\r
5742         opRLL z80hl\r
5743 ;@RL (HL)\r
5744 opcode_CB_16:\r
5745         readmem8HL\r
5746         opRLb\r
5747         writemem8HL\r
5748         fetch 15\r
5749 ;@RL A\r
5750 opcode_CB_17:\r
5751         opRLA\r
5752 \r
5753 ;@RR B \r
5754 opcode_CB_18:\r
5755         opRRH z80bc\r
5756 ;@RR C\r
5757 opcode_CB_19:\r
5758         opRRL z80bc\r
5759 ;@RR D\r
5760 opcode_CB_1A:\r
5761         opRRH z80de\r
5762 ;@RR E\r
5763 opcode_CB_1B:\r
5764         opRRL z80de\r
5765 ;@RR H\r
5766 opcode_CB_1C:\r
5767         opRRH z80hl\r
5768 ;@RR L\r
5769 opcode_CB_1D:\r
5770         opRRL z80hl\r
5771 ;@RR (HL)\r
5772 opcode_CB_1E:\r
5773         readmem8HL\r
5774         opRRb\r
5775         writemem8HL\r
5776         fetch 15\r
5777 ;@RR A\r
5778 opcode_CB_1F:\r
5779         opRRA\r
5780 \r
5781 ;@SLA B\r
5782 opcode_CB_20:\r
5783         opSLAH z80bc\r
5784 ;@SLA C\r
5785 opcode_CB_21:\r
5786         opSLAL z80bc\r
5787 ;@SLA D\r
5788 opcode_CB_22:\r
5789         opSLAH z80de\r
5790 ;@SLA E\r
5791 opcode_CB_23:\r
5792         opSLAL z80de\r
5793 ;@SLA H\r
5794 opcode_CB_24:\r
5795         opSLAH z80hl\r
5796 ;@SLA L\r
5797 opcode_CB_25:\r
5798         opSLAL z80hl\r
5799 ;@SLA (HL)\r
5800 opcode_CB_26:\r
5801         readmem8HL\r
5802         opSLAb\r
5803         writemem8HL\r
5804         fetch 15\r
5805 ;@SLA A\r
5806 opcode_CB_27:\r
5807         opSLAA\r
5808 \r
5809 ;@SRA B\r
5810 opcode_CB_28:\r
5811         opSRAH z80bc\r
5812 ;@SRA C\r
5813 opcode_CB_29:\r
5814         opSRAL z80bc\r
5815 ;@SRA D\r
5816 opcode_CB_2A:\r
5817         opSRAH z80de\r
5818 ;@SRA E\r
5819 opcode_CB_2B:\r
5820         opSRAL z80de\r
5821 ;@SRA H\r
5822 opcode_CB_2C:\r
5823         opSRAH z80hl\r
5824 ;@SRA L\r
5825 opcode_CB_2D:\r
5826         opSRAL z80hl\r
5827 ;@SRA (HL)\r
5828 opcode_CB_2E:\r
5829         readmem8HL\r
5830         opSRAb\r
5831         writemem8HL\r
5832         fetch 15\r
5833 ;@SRA A\r
5834 opcode_CB_2F:\r
5835         opSRAA\r
5836 \r
5837 ;@SLL B\r
5838 opcode_CB_30:\r
5839         opSLLH z80bc\r
5840 ;@SLL C\r
5841 opcode_CB_31:\r
5842         opSLLL z80bc\r
5843 ;@SLL D\r
5844 opcode_CB_32:\r
5845         opSLLH z80de\r
5846 ;@SLL E\r
5847 opcode_CB_33:\r
5848         opSLLL z80de\r
5849 ;@SLL H\r
5850 opcode_CB_34:\r
5851         opSLLH z80hl\r
5852 ;@SLL L\r
5853 opcode_CB_35:\r
5854         opSLLL z80hl\r
5855 ;@SLL (HL)\r
5856 opcode_CB_36:\r
5857         readmem8HL\r
5858         opSLLb\r
5859         writemem8HL\r
5860         fetch 15\r
5861 ;@SLL A\r
5862 opcode_CB_37:\r
5863         opSLLA\r
5864 \r
5865 ;@SRL B\r
5866 opcode_CB_38:\r
5867         opSRLH z80bc\r
5868 ;@SRL C\r
5869 opcode_CB_39:\r
5870         opSRLL z80bc\r
5871 ;@SRL D\r
5872 opcode_CB_3A:\r
5873         opSRLH z80de\r
5874 ;@SRL E\r
5875 opcode_CB_3B:\r
5876         opSRLL z80de\r
5877 ;@SRL H\r
5878 opcode_CB_3C:\r
5879         opSRLH z80hl\r
5880 ;@SRL L\r
5881 opcode_CB_3D:\r
5882         opSRLL z80hl\r
5883 ;@SRL (HL)\r
5884 opcode_CB_3E:\r
5885         readmem8HL\r
5886         opSRLb\r
5887         writemem8HL\r
5888         fetch 15\r
5889 ;@SRL A\r
5890 opcode_CB_3F:\r
5891         opSRLA\r
5892 \r
5893 \r
5894 ;@BIT 0,B\r
5895 opcode_CB_40:\r
5896         opBITH z80bc 0\r
5897 ;@BIT 0,C\r
5898 opcode_CB_41:\r
5899         opBITL z80bc 0\r
5900 ;@BIT 0,D\r
5901 opcode_CB_42:\r
5902         opBITH z80de 0\r
5903 ;@BIT 0,E\r
5904 opcode_CB_43:\r
5905         opBITL z80de 0\r
5906 ;@BIT 0,H\r
5907 opcode_CB_44:\r
5908         opBITH z80hl 0\r
5909 ;@BIT 0,L\r
5910 opcode_CB_45:\r
5911         opBITL z80hl 0\r
5912 ;@BIT 0,(HL)\r
5913 opcode_CB_46:\r
5914         readmem8HL\r
5915         opBITb 0\r
5916         fetch 12\r
5917 ;@BIT 0,A\r
5918 opcode_CB_47:\r
5919         opBITH z80a 0\r
5920 \r
5921 ;@BIT 1,B\r
5922 opcode_CB_48:\r
5923         opBITH z80bc 1\r
5924 ;@BIT 1,C\r
5925 opcode_CB_49:\r
5926         opBITL z80bc 1\r
5927 ;@BIT 1,D\r
5928 opcode_CB_4A:\r
5929         opBITH z80de 1\r
5930 ;@BIT 1,E\r
5931 opcode_CB_4B:\r
5932         opBITL z80de 1\r
5933 ;@BIT 1,H\r
5934 opcode_CB_4C:\r
5935         opBITH z80hl 1\r
5936 ;@BIT 1,L\r
5937 opcode_CB_4D:\r
5938         opBITL z80hl 1\r
5939 ;@BIT 1,(HL)\r
5940 opcode_CB_4E:\r
5941         readmem8HL\r
5942         opBITb 1\r
5943         fetch 12\r
5944 ;@BIT 1,A\r
5945 opcode_CB_4F:\r
5946         opBITH z80a 1\r
5947 \r
5948 ;@BIT 2,B\r
5949 opcode_CB_50:\r
5950         opBITH z80bc 2\r
5951 ;@BIT 2,C\r
5952 opcode_CB_51:\r
5953         opBITL z80bc 2\r
5954 ;@BIT 2,D\r
5955 opcode_CB_52:\r
5956         opBITH z80de 2\r
5957 ;@BIT 2,E\r
5958 opcode_CB_53:\r
5959         opBITL z80de 2\r
5960 ;@BIT 2,H\r
5961 opcode_CB_54:\r
5962         opBITH z80hl 2\r
5963 ;@BIT 2,L\r
5964 opcode_CB_55:\r
5965         opBITL z80hl 2\r
5966 ;@BIT 2,(HL)\r
5967 opcode_CB_56:\r
5968         readmem8HL\r
5969         opBITb 2\r
5970         fetch 12\r
5971 ;@BIT 2,A\r
5972 opcode_CB_57:\r
5973         opBITH z80a 2\r
5974 \r
5975 ;@BIT 3,B\r
5976 opcode_CB_58:\r
5977         opBITH z80bc 3\r
5978 ;@BIT 3,C\r
5979 opcode_CB_59:\r
5980         opBITL z80bc 3\r
5981 ;@BIT 3,D\r
5982 opcode_CB_5A:\r
5983         opBITH z80de 3\r
5984 ;@BIT 3,E\r
5985 opcode_CB_5B:\r
5986         opBITL z80de 3\r
5987 ;@BIT 3,H\r
5988 opcode_CB_5C:\r
5989         opBITH z80hl 3\r
5990 ;@BIT 3,L\r
5991 opcode_CB_5D:\r
5992         opBITL z80hl 3\r
5993 ;@BIT 3,(HL)\r
5994 opcode_CB_5E:\r
5995         readmem8HL\r
5996         opBITb 3\r
5997         fetch 12\r
5998 ;@BIT 3,A\r
5999 opcode_CB_5F:\r
6000         opBITH z80a 3\r
6001 \r
6002 ;@BIT 4,B\r
6003 opcode_CB_60:\r
6004         opBITH z80bc 4\r
6005 ;@BIT 4,C\r
6006 opcode_CB_61:\r
6007         opBITL z80bc 4\r
6008 ;@BIT 4,D\r
6009 opcode_CB_62:\r
6010         opBITH z80de 4\r
6011 ;@BIT 4,E\r
6012 opcode_CB_63:\r
6013         opBITL z80de 4\r
6014 ;@BIT 4,H\r
6015 opcode_CB_64:\r
6016         opBITH z80hl 4\r
6017 ;@BIT 4,L\r
6018 opcode_CB_65:\r
6019         opBITL z80hl 4\r
6020 ;@BIT 4,(HL)\r
6021 opcode_CB_66:\r
6022         readmem8HL\r
6023         opBITb 4\r
6024         fetch 12\r
6025 ;@BIT 4,A\r
6026 opcode_CB_67:\r
6027         opBITH z80a 4\r
6028 \r
6029 ;@BIT 5,B\r
6030 opcode_CB_68:\r
6031         opBITH z80bc 5\r
6032 ;@BIT 5,C\r
6033 opcode_CB_69:\r
6034         opBITL z80bc 5\r
6035 ;@BIT 5,D\r
6036 opcode_CB_6A:\r
6037         opBITH z80de 5\r
6038 ;@BIT 5,E\r
6039 opcode_CB_6B:\r
6040         opBITL z80de 5\r
6041 ;@BIT 5,H\r
6042 opcode_CB_6C:\r
6043         opBITH z80hl 5\r
6044 ;@BIT 5,L\r
6045 opcode_CB_6D:\r
6046         opBITL z80hl 5\r
6047 ;@BIT 5,(HL)\r
6048 opcode_CB_6E:\r
6049         readmem8HL\r
6050         opBITb 5\r
6051         fetch 12\r
6052 ;@BIT 5,A\r
6053 opcode_CB_6F:\r
6054         opBITH z80a 5\r
6055 \r
6056 ;@BIT 6,B\r
6057 opcode_CB_70:\r
6058         opBITH z80bc 6\r
6059 ;@BIT 6,C\r
6060 opcode_CB_71:\r
6061         opBITL z80bc 6\r
6062 ;@BIT 6,D\r
6063 opcode_CB_72:\r
6064         opBITH z80de 6\r
6065 ;@BIT 6,E\r
6066 opcode_CB_73:\r
6067         opBITL z80de 6\r
6068 ;@BIT 6,H\r
6069 opcode_CB_74:\r
6070         opBITH z80hl 6\r
6071 ;@BIT 6,L\r
6072 opcode_CB_75:\r
6073         opBITL z80hl 6\r
6074 ;@BIT 6,(HL)\r
6075 opcode_CB_76:\r
6076         readmem8HL\r
6077         opBITb 6\r
6078         fetch 12\r
6079 ;@BIT 6,A\r
6080 opcode_CB_77:\r
6081         opBITH z80a 6\r
6082 \r
6083 ;@BIT 7,B\r
6084 opcode_CB_78:\r
6085         opBIT7H z80bc\r
6086 ;@BIT 7,C\r
6087 opcode_CB_79:\r
6088         opBIT7L z80bc\r
6089 ;@BIT 7,D\r
6090 opcode_CB_7A:\r
6091         opBIT7H z80de\r
6092 ;@BIT 7,E\r
6093 opcode_CB_7B:\r
6094         opBIT7L z80de\r
6095 ;@BIT 7,H\r
6096 opcode_CB_7C:\r
6097         opBIT7H z80hl\r
6098 ;@BIT 7,L\r
6099 opcode_CB_7D:\r
6100         opBIT7L z80hl\r
6101 ;@BIT 7,(HL)\r
6102 opcode_CB_7E:\r
6103         readmem8HL\r
6104         opBIT7b\r
6105         fetch 12\r
6106 ;@BIT 7,A\r
6107 opcode_CB_7F:\r
6108         opBIT7H z80a\r
6109 \r
6110 ;@RES 0,B\r
6111 opcode_CB_80:\r
6112         bic z80bc,z80bc,#1<<24\r
6113         fetch 8\r
6114 ;@RES 0,C\r
6115 opcode_CB_81:\r
6116         bic z80bc,z80bc,#1<<16\r
6117         fetch 8\r
6118 ;@RES 0,D\r
6119 opcode_CB_82:\r
6120         bic z80de,z80de,#1<<24\r
6121         fetch 8\r
6122 ;@RES 0,E\r
6123 opcode_CB_83:\r
6124         bic z80de,z80de,#1<<16\r
6125         fetch 8\r
6126 ;@RES 0,H\r
6127 opcode_CB_84:\r
6128         bic z80hl,z80hl,#1<<24\r
6129         fetch 8\r
6130 ;@RES 0,L\r
6131 opcode_CB_85:\r
6132         bic z80hl,z80hl,#1<<16\r
6133         fetch 8\r
6134 ;@RES 0,(HL)\r
6135 opcode_CB_86:\r
6136         opRESmemHL 0\r
6137 ;@RES 0,A\r
6138 opcode_CB_87:\r
6139         bic z80a,z80a,#1<<24\r
6140         fetch 8\r
6141 \r
6142 ;@RES 1,B\r
6143 opcode_CB_88:\r
6144         bic z80bc,z80bc,#1<<25\r
6145         fetch 8\r
6146 ;@RES 1,C\r
6147 opcode_CB_89:\r
6148         bic z80bc,z80bc,#1<<17\r
6149         fetch 8\r
6150 ;@RES 1,D\r
6151 opcode_CB_8A:\r
6152         bic z80de,z80de,#1<<25\r
6153         fetch 8\r
6154 ;@RES 1,E\r
6155 opcode_CB_8B:\r
6156         bic z80de,z80de,#1<<17\r
6157         fetch 8\r
6158 ;@RES 1,H\r
6159 opcode_CB_8C:\r
6160         bic z80hl,z80hl,#1<<25\r
6161         fetch 8\r
6162 ;@RES 1,L\r
6163 opcode_CB_8D:\r
6164         bic z80hl,z80hl,#1<<17\r
6165         fetch 8\r
6166 ;@RES 1,(HL)\r
6167 opcode_CB_8E:\r
6168         opRESmemHL 1\r
6169 ;@RES 1,A\r
6170 opcode_CB_8F:\r
6171         bic z80a,z80a,#1<<25\r
6172         fetch 8\r
6173 \r
6174 ;@RES 2,B\r
6175 opcode_CB_90:\r
6176         bic z80bc,z80bc,#1<<26\r
6177         fetch 8\r
6178 ;@RES 2,C\r
6179 opcode_CB_91:\r
6180         bic z80bc,z80bc,#1<<18\r
6181         fetch 8\r
6182 ;@RES 2,D\r
6183 opcode_CB_92:\r
6184         bic z80de,z80de,#1<<26\r
6185         fetch 8\r
6186 ;@RES 2,E\r
6187 opcode_CB_93:\r
6188         bic z80de,z80de,#1<<18\r
6189         fetch 8\r
6190 ;@RES 2,H\r
6191 opcode_CB_94:\r
6192         bic z80hl,z80hl,#1<<26\r
6193         fetch 8\r
6194 ;@RES 2,L\r
6195 opcode_CB_95:\r
6196         bic z80hl,z80hl,#1<<18\r
6197         fetch 8\r
6198 ;@RES 2,(HL)\r
6199 opcode_CB_96:\r
6200         opRESmemHL 2\r
6201 ;@RES 2,A\r
6202 opcode_CB_97:\r
6203         bic z80a,z80a,#1<<26\r
6204         fetch 8\r
6205 \r
6206 ;@RES 3,B\r
6207 opcode_CB_98:\r
6208         bic z80bc,z80bc,#1<<27\r
6209         fetch 8\r
6210 ;@RES 3,C\r
6211 opcode_CB_99:\r
6212         bic z80bc,z80bc,#1<<19\r
6213         fetch 8\r
6214 ;@RES 3,D\r
6215 opcode_CB_9A:\r
6216         bic z80de,z80de,#1<<27\r
6217         fetch 8\r
6218 ;@RES 3,E\r
6219 opcode_CB_9B:\r
6220         bic z80de,z80de,#1<<19\r
6221         fetch 8\r
6222 ;@RES 3,H\r
6223 opcode_CB_9C:\r
6224         bic z80hl,z80hl,#1<<27\r
6225         fetch 8\r
6226 ;@RES 3,L\r
6227 opcode_CB_9D:\r
6228         bic z80hl,z80hl,#1<<19\r
6229         fetch 8\r
6230 ;@RES 3,(HL)\r
6231 opcode_CB_9E:\r
6232         opRESmemHL 3\r
6233 ;@RES 3,A\r
6234 opcode_CB_9F:\r
6235         bic z80a,z80a,#1<<27\r
6236         fetch 8\r
6237 \r
6238 ;@RES 4,B\r
6239 opcode_CB_A0:\r
6240         bic z80bc,z80bc,#1<<28\r
6241         fetch 8\r
6242 ;@RES 4,C\r
6243 opcode_CB_A1:\r
6244         bic z80bc,z80bc,#1<<20\r
6245         fetch 8\r
6246 ;@RES 4,D\r
6247 opcode_CB_A2:\r
6248         bic z80de,z80de,#1<<28\r
6249         fetch 8\r
6250 ;@RES 4,E\r
6251 opcode_CB_A3:\r
6252         bic z80de,z80de,#1<<20\r
6253         fetch 8\r
6254 ;@RES 4,H\r
6255 opcode_CB_A4:\r
6256         bic z80hl,z80hl,#1<<28\r
6257         fetch 8\r
6258 ;@RES 4,L\r
6259 opcode_CB_A5:\r
6260         bic z80hl,z80hl,#1<<20\r
6261         fetch 8\r
6262 ;@RES 4,(HL)\r
6263 opcode_CB_A6:\r
6264         opRESmemHL 4\r
6265 ;@RES 4,A\r
6266 opcode_CB_A7:\r
6267         bic z80a,z80a,#1<<28\r
6268         fetch 8\r
6269 \r
6270 ;@RES 5,B\r
6271 opcode_CB_A8:\r
6272         bic z80bc,z80bc,#1<<29\r
6273         fetch 8\r
6274 ;@RES 5,C\r
6275 opcode_CB_A9:\r
6276         bic z80bc,z80bc,#1<<21\r
6277         fetch 8\r
6278 ;@RES 5,D\r
6279 opcode_CB_AA:\r
6280         bic z80de,z80de,#1<<29\r
6281         fetch 8\r
6282 ;@RES 5,E\r
6283 opcode_CB_AB:\r
6284         bic z80de,z80de,#1<<21\r
6285         fetch 8\r
6286 ;@RES 5,H\r
6287 opcode_CB_AC:\r
6288         bic z80hl,z80hl,#1<<29\r
6289         fetch 8\r
6290 ;@RES 5,L\r
6291 opcode_CB_AD:\r
6292         bic z80hl,z80hl,#1<<21\r
6293         fetch 8\r
6294 ;@RES 5,(HL)\r
6295 opcode_CB_AE:\r
6296         opRESmemHL 5\r
6297 ;@RES 5,A\r
6298 opcode_CB_AF:\r
6299         bic z80a,z80a,#1<<29\r
6300         fetch 8\r
6301 \r
6302 ;@RES 6,B\r
6303 opcode_CB_B0:\r
6304         bic z80bc,z80bc,#1<<30\r
6305         fetch 8\r
6306 ;@RES 6,C\r
6307 opcode_CB_B1:\r
6308         bic z80bc,z80bc,#1<<22\r
6309         fetch 8\r
6310 ;@RES 6,D\r
6311 opcode_CB_B2:\r
6312         bic z80de,z80de,#1<<30\r
6313         fetch 8\r
6314 ;@RES 6,E\r
6315 opcode_CB_B3:\r
6316         bic z80de,z80de,#1<<22\r
6317         fetch 8\r
6318 ;@RES 6,H\r
6319 opcode_CB_B4:\r
6320         bic z80hl,z80hl,#1<<30\r
6321         fetch 8\r
6322 ;@RES 6,L\r
6323 opcode_CB_B5:\r
6324         bic z80hl,z80hl,#1<<22\r
6325         fetch 8\r
6326 ;@RES 6,(HL)\r
6327 opcode_CB_B6:\r
6328         opRESmemHL 6\r
6329 ;@RES 6,A\r
6330 opcode_CB_B7:\r
6331         bic z80a,z80a,#1<<30\r
6332         fetch 8\r
6333 \r
6334 ;@RES 7,B\r
6335 opcode_CB_B8:\r
6336         bic z80bc,z80bc,#1<<31\r
6337         fetch 8\r
6338 ;@RES 7,C\r
6339 opcode_CB_B9:\r
6340         bic z80bc,z80bc,#1<<23\r
6341         fetch 8\r
6342 ;@RES 7,D\r
6343 opcode_CB_BA:\r
6344         bic z80de,z80de,#1<<31\r
6345         fetch 8\r
6346 ;@RES 7,E\r
6347 opcode_CB_BB:\r
6348         bic z80de,z80de,#1<<23\r
6349         fetch 8\r
6350 ;@RES 7,H\r
6351 opcode_CB_BC:\r
6352         bic z80hl,z80hl,#1<<31\r
6353         fetch 8\r
6354 ;@RES 7,L\r
6355 opcode_CB_BD:\r
6356         bic z80hl,z80hl,#1<<23\r
6357         fetch 8\r
6358 ;@RES 7,(HL)\r
6359 opcode_CB_BE:\r
6360         opRESmemHL 7\r
6361 ;@RES 7,A\r
6362 opcode_CB_BF:\r
6363         bic z80a,z80a,#1<<31\r
6364         fetch 8\r
6365 \r
6366 ;@SET 0,B\r
6367 opcode_CB_C0:\r
6368         orr z80bc,z80bc,#1<<24\r
6369         fetch 8\r
6370 ;@SET 0,C\r
6371 opcode_CB_C1:\r
6372         orr z80bc,z80bc,#1<<16\r
6373         fetch 8\r
6374 ;@SET 0,D\r
6375 opcode_CB_C2:\r
6376         orr z80de,z80de,#1<<24\r
6377         fetch 8\r
6378 ;@SET 0,E\r
6379 opcode_CB_C3:\r
6380         orr z80de,z80de,#1<<16\r
6381         fetch 8\r
6382 ;@SET 0,H\r
6383 opcode_CB_C4:\r
6384         orr z80hl,z80hl,#1<<24\r
6385         fetch 8\r
6386 ;@SET 0,L\r
6387 opcode_CB_C5:\r
6388         orr z80hl,z80hl,#1<<16\r
6389         fetch 8\r
6390 ;@SET 0,(HL)\r
6391 opcode_CB_C6:\r
6392         opSETmemHL 0\r
6393 ;@SET 0,A\r
6394 opcode_CB_C7:\r
6395         orr z80a,z80a,#1<<24\r
6396         fetch 8\r
6397 \r
6398 ;@SET 1,B\r
6399 opcode_CB_C8:\r
6400         orr z80bc,z80bc,#1<<25\r
6401         fetch 8\r
6402 ;@SET 1,C\r
6403 opcode_CB_C9:\r
6404         orr z80bc,z80bc,#1<<17\r
6405         fetch 8\r
6406 ;@SET 1,D\r
6407 opcode_CB_CA:\r
6408         orr z80de,z80de,#1<<25\r
6409         fetch 8\r
6410 ;@SET 1,E\r
6411 opcode_CB_CB:\r
6412         orr z80de,z80de,#1<<17\r
6413         fetch 8\r
6414 ;@SET 1,H\r
6415 opcode_CB_CC:\r
6416         orr z80hl,z80hl,#1<<25\r
6417         fetch 8\r
6418 ;@SET 1,L\r
6419 opcode_CB_CD:\r
6420         orr z80hl,z80hl,#1<<17\r
6421         fetch 8\r
6422 ;@SET 1,(HL)\r
6423 opcode_CB_CE:\r
6424         opSETmemHL 1\r
6425 ;@SET 1,A\r
6426 opcode_CB_CF:\r
6427         orr z80a,z80a,#1<<25\r
6428         fetch 8\r
6429 \r
6430 ;@SET 2,B\r
6431 opcode_CB_D0:\r
6432         orr z80bc,z80bc,#1<<26\r
6433         fetch 8\r
6434 ;@SET 2,C\r
6435 opcode_CB_D1:\r
6436         orr z80bc,z80bc,#1<<18\r
6437         fetch 8\r
6438 ;@SET 2,D\r
6439 opcode_CB_D2:\r
6440         orr z80de,z80de,#1<<26\r
6441         fetch 8\r
6442 ;@SET 2,E\r
6443 opcode_CB_D3:\r
6444         orr z80de,z80de,#1<<18\r
6445         fetch 8\r
6446 ;@SET 2,H\r
6447 opcode_CB_D4:\r
6448         orr z80hl,z80hl,#1<<26\r
6449         fetch 8\r
6450 ;@SET 2,L\r
6451 opcode_CB_D5:\r
6452         orr z80hl,z80hl,#1<<18\r
6453         fetch 8\r
6454 ;@SET 2,(HL)\r
6455 opcode_CB_D6:\r
6456         opSETmemHL 2\r
6457 ;@SET 2,A\r
6458 opcode_CB_D7:\r
6459         orr z80a,z80a,#1<<26\r
6460         fetch 8\r
6461 \r
6462 ;@SET 3,B\r
6463 opcode_CB_D8:\r
6464         orr z80bc,z80bc,#1<<27\r
6465         fetch 8\r
6466 ;@SET 3,C\r
6467 opcode_CB_D9:\r
6468         orr z80bc,z80bc,#1<<19\r
6469         fetch 8\r
6470 ;@SET 3,D\r
6471 opcode_CB_DA:\r
6472         orr z80de,z80de,#1<<27\r
6473         fetch 8\r
6474 ;@SET 3,E\r
6475 opcode_CB_DB:\r
6476         orr z80de,z80de,#1<<19\r
6477         fetch 8\r
6478 ;@SET 3,H\r
6479 opcode_CB_DC:\r
6480         orr z80hl,z80hl,#1<<27\r
6481         fetch 8\r
6482 ;@SET 3,L\r
6483 opcode_CB_DD:\r
6484         orr z80hl,z80hl,#1<<19\r
6485         fetch 8\r
6486 ;@SET 3,(HL)\r
6487 opcode_CB_DE:\r
6488         opSETmemHL 3\r
6489 ;@SET 3,A\r
6490 opcode_CB_DF:\r
6491         orr z80a,z80a,#1<<27\r
6492         fetch 8\r
6493 \r
6494 ;@SET 4,B\r
6495 opcode_CB_E0:\r
6496         orr z80bc,z80bc,#1<<28\r
6497         fetch 8\r
6498 ;@SET 4,C\r
6499 opcode_CB_E1:\r
6500         orr z80bc,z80bc,#1<<20\r
6501         fetch 8\r
6502 ;@SET 4,D\r
6503 opcode_CB_E2:\r
6504         orr z80de,z80de,#1<<28\r
6505         fetch 8\r
6506 ;@SET 4,E\r
6507 opcode_CB_E3:\r
6508         orr z80de,z80de,#1<<20\r
6509         fetch 8\r
6510 ;@SET 4,H\r
6511 opcode_CB_E4:\r
6512         orr z80hl,z80hl,#1<<28\r
6513         fetch 8\r
6514 ;@SET 4,L\r
6515 opcode_CB_E5:\r
6516         orr z80hl,z80hl,#1<<20\r
6517         fetch 8\r
6518 ;@SET 4,(HL)\r
6519 opcode_CB_E6:\r
6520         opSETmemHL 4\r
6521 ;@SET 4,A\r
6522 opcode_CB_E7:\r
6523         orr z80a,z80a,#1<<28\r
6524         fetch 8\r
6525 \r
6526 ;@SET 5,B\r
6527 opcode_CB_E8:\r
6528         orr z80bc,z80bc,#1<<29\r
6529         fetch 8\r
6530 ;@SET 5,C\r
6531 opcode_CB_E9:\r
6532         orr z80bc,z80bc,#1<<21\r
6533         fetch 8\r
6534 ;@SET 5,D\r
6535 opcode_CB_EA:\r
6536         orr z80de,z80de,#1<<29\r
6537         fetch 8\r
6538 ;@SET 5,E\r
6539 opcode_CB_EB:\r
6540         orr z80de,z80de,#1<<21\r
6541         fetch 8\r
6542 ;@SET 5,H\r
6543 opcode_CB_EC:\r
6544         orr z80hl,z80hl,#1<<29\r
6545         fetch 8\r
6546 ;@SET 5,L\r
6547 opcode_CB_ED:\r
6548         orr z80hl,z80hl,#1<<21\r
6549         fetch 8\r
6550 ;@SET 5,(HL)\r
6551 opcode_CB_EE:\r
6552         opSETmemHL 5\r
6553 ;@SET 5,A\r
6554 opcode_CB_EF:\r
6555         orr z80a,z80a,#1<<29\r
6556         fetch 8\r
6557 \r
6558 ;@SET 6,B\r
6559 opcode_CB_F0:\r
6560         orr z80bc,z80bc,#1<<30\r
6561         fetch 8\r
6562 ;@SET 6,C\r
6563 opcode_CB_F1:\r
6564         orr z80bc,z80bc,#1<<22\r
6565         fetch 8\r
6566 ;@SET 6,D\r
6567 opcode_CB_F2:\r
6568         orr z80de,z80de,#1<<30\r
6569         fetch 8\r
6570 ;@SET 6,E\r
6571 opcode_CB_F3:\r
6572         orr z80de,z80de,#1<<22\r
6573         fetch 8\r
6574 ;@SET 6,H\r
6575 opcode_CB_F4:\r
6576         orr z80hl,z80hl,#1<<30\r
6577         fetch 8\r
6578 ;@SET 6,L\r
6579 opcode_CB_F5:\r
6580         orr z80hl,z80hl,#1<<22\r
6581         fetch 8\r
6582 ;@SET 6,(HL)\r
6583 opcode_CB_F6:\r
6584         opSETmemHL 6\r
6585 ;@SET 6,A\r
6586 opcode_CB_F7:\r
6587         orr z80a,z80a,#1<<30\r
6588         fetch 8\r
6589 \r
6590 ;@SET 7,B\r
6591 opcode_CB_F8:\r
6592         orr z80bc,z80bc,#1<<31\r
6593         fetch 8\r
6594 ;@SET 7,C\r
6595 opcode_CB_F9:\r
6596         orr z80bc,z80bc,#1<<23\r
6597         fetch 8\r
6598 ;@SET 7,D\r
6599 opcode_CB_FA:\r
6600         orr z80de,z80de,#1<<31\r
6601         fetch 8\r
6602 ;@SET 7,E\r
6603 opcode_CB_FB:\r
6604         orr z80de,z80de,#1<<23\r
6605         fetch 8\r
6606 ;@SET 7,H\r
6607 opcode_CB_FC:\r
6608         orr z80hl,z80hl,#1<<31\r
6609         fetch 8\r
6610 ;@SET 7,L\r
6611 opcode_CB_FD:\r
6612         orr z80hl,z80hl,#1<<23\r
6613         fetch 8\r
6614 ;@SET 7,(HL)\r
6615 opcode_CB_FE:\r
6616         opSETmemHL 7\r
6617 ;@SET 7,A\r
6618 opcode_CB_FF:\r
6619         orr z80a,z80a,#1<<31\r
6620         fetch 8\r
6621 \r
6622 \r
6623 \r
6624 ;@##################################\r
6625 ;@##################################\r
6626 ;@###  opcodes DD  #########################\r
6627 ;@##################################\r
6628 ;@##################################\r
6629 ;@Because the DD opcodes are not a complete range from 00-FF I have\r
6630 ;@created this sub routine that will catch any undocumented ops\r
6631 ;@halt the emulator and mov the current instruction to r0\r
6632 ;@at a later stage I may change to display a text message on the screen\r
6633 opcode_DD_NF:\r
6634         eatcycles 4\r
6635         ldr pc,[opcodes,r0, lsl #2]\r
6636 ;@      mov r2,#0x10*4\r
6637 ;@      cmp r2,z80xx\r
6638 ;@      bne opcode_FD_NF\r
6639 ;@      mov r0,#0xDD00\r
6640 ;@      orr r0,r0,r1\r
6641 ;@      b end_loop\r
6642 ;@opcode_FD_NF:\r
6643 ;@      mov r0,#0xFD00\r
6644 ;@      orr r0,r0,r1\r
6645 ;@      b end_loop\r
6646 \r
6647 opcode_DD_NF2:\r
6648         fetch 23\r
6649 ;@ notaz: we don't want to deadlock here\r
6650 ;@      mov r0,#0xDD0000\r
6651 ;@      orr r0,r0,#0xCB00\r
6652 ;@      orr r0,r0,r1\r
6653 ;@      b end_loop\r
6654 \r
6655 ;@ADD IX,BC\r
6656 opcode_DD_09:\r
6657         ldr r0,[z80xx]\r
6658         opADD16 r0 z80bc\r
6659         str r0,[z80xx]\r
6660         fetch 15\r
6661 ;@ADD IX,DE\r
6662 opcode_DD_19:\r
6663         ldr r0,[z80xx]\r
6664         opADD16 r0 z80de\r
6665         str r0,[z80xx]\r
6666         fetch 15\r
6667 ;@LD IX,NN\r
6668 opcode_DD_21:\r
6669         ldrb r0,[z80pc],#1\r
6670         ldrb r1,[z80pc],#1\r
6671         orr r0,r0,r1, lsl #8\r
6672         strh r0,[z80xx,#2]\r
6673         fetch 14\r
6674 ;@LD (NN),IX\r
6675 opcode_DD_22:\r
6676         ldrb r0,[z80pc],#1\r
6677         ldrb r1,[z80pc],#1\r
6678         orr r1,r0,r1, lsl #8\r
6679         ldrh r0,[z80xx,#2]\r
6680         writemem16\r
6681         fetch 20\r
6682 ;@INC IX\r
6683 opcode_DD_23:\r
6684         ldr r0,[z80xx]\r
6685         add r0,r0,#1<<16\r
6686         str r0,[z80xx]\r
6687         fetch 10\r
6688 ;@INC I  (IX)\r
6689 opcode_DD_24:\r
6690         ldr r0,[z80xx]\r
6691         opINC8H r0\r
6692         str r0,[z80xx]\r
6693         fetch 8\r
6694 ;@DEC I  (IX)\r
6695 opcode_DD_25:\r
6696         ldr r0,[z80xx]\r
6697         opDEC8H r0\r
6698         str r0,[z80xx]\r
6699         fetch 8\r
6700 ;@LD I,N  (IX)\r
6701 opcode_DD_26:\r
6702         ldrb r0,[z80pc],#1\r
6703         strb r0,[z80xx,#3]\r
6704         fetch 11\r
6705 ;@ADD IX,IX\r
6706 opcode_DD_29:\r
6707         ldr r0,[z80xx]\r
6708         opADD16_2 r0\r
6709         str r0,[z80xx]\r
6710         fetch 15\r
6711 ;@LD IX,(NN)\r
6712 opcode_DD_2A:\r
6713         ldrb r0,[z80pc],#1\r
6714         ldrb r1,[z80pc],#1\r
6715         orr r0,r0,r1, lsl #8\r
6716         stmfd sp!,{z80xx}\r
6717         readmem16\r
6718         ldmfd sp!,{z80xx}\r
6719         strh r0,[z80xx,#2]\r
6720         fetch 20\r
6721 ;@DEC IX\r
6722 opcode_DD_2B:\r
6723         ldr r0,[z80xx]\r
6724         sub r0,r0,#1<<16\r
6725         str r0,[z80xx]\r
6726         fetch 10\r
6727 ;@INC X  (IX)\r
6728 opcode_DD_2C:\r
6729         ldr r0,[z80xx]\r
6730         opINC8L r0\r
6731         str r0,[z80xx]\r
6732         fetch 8\r
6733 ;@DEC X  (IX)\r
6734 opcode_DD_2D:\r
6735         ldr r0,[z80xx]\r
6736         opDEC8L r0\r
6737         str r0,[z80xx]\r
6738         fetch 8\r
6739 ;@LD X,N  (IX)\r
6740 opcode_DD_2E:\r
6741         ldrb r0,[z80pc],#1\r
6742         strb r0,[z80xx,#2]\r
6743         fetch 11\r
6744 ;@INC (IX+N)\r
6745 opcode_DD_34:\r
6746         ldrsb r0,[z80pc],#1\r
6747         ldr r1,[z80xx]\r
6748         add r0,r0,r1, lsr #16\r
6749         stmfd sp!,{r0}  ;@ save addr\r
6750         readmem8\r
6751         opINC8b\r
6752         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6753         writemem8\r
6754         fetch 23\r
6755 ;@DEC (IX+N)\r
6756 opcode_DD_35:\r
6757         ldrsb r0,[z80pc],#1\r
6758         ldr r1,[z80xx]\r
6759         add r0,r0,r1, lsr #16\r
6760         stmfd sp!,{r0}  ;@ save addr\r
6761         readmem8\r
6762         opDEC8b\r
6763         ldmfd sp!,{r1}  ;@ restore addr into r1\r
6764         writemem8\r
6765         fetch 23\r
6766 ;@LD (IX+N),N\r
6767 opcode_DD_36:\r
6768         ldrsb r2,[z80pc],#1\r
6769         ldrb r0,[z80pc],#1\r
6770         ldr r1,[z80xx]\r
6771         add r1,r2,r1, lsr #16\r
6772         writemem8\r
6773         fetch 19\r
6774 ;@ADD IX,SP\r
6775 opcode_DD_39:\r
6776         ldr r0,[z80xx]\r
6777 .if FAST_Z80SP\r
6778         ldr r2,[cpucontext,#z80sp_base]\r
6779         sub r2,z80sp,r2\r
6780         opADD16s r0 r2 16\r
6781 .else\r
6782         opADD16s r0 z80sp 16\r
6783 .endif\r
6784         str r0,[z80xx]\r
6785         fetch 15\r
6786 ;@LD B,I ( IX )\r
6787 opcode_DD_44:\r
6788         ldrb r0,[z80xx,#3]\r
6789         and z80bc,z80bc,#0xFF<<16\r
6790         orr z80bc,z80bc,r0, lsl #24\r
6791         fetch 8\r
6792 ;@LD B,X ( IX )\r
6793 opcode_DD_45:\r
6794         ldrb r0,[z80xx,#2]\r
6795         and z80bc,z80bc,#0xFF<<16\r
6796         orr z80bc,z80bc,r0, lsl #24\r
6797         fetch 8\r
6798 ;@LD B,(IX,N)\r
6799 opcode_DD_46:\r
6800         ldrsb r0,[z80pc],#1\r
6801         ldr r1,[z80xx]\r
6802         add r0,r0,r1, lsr #16\r
6803         readmem8\r
6804         and z80bc,z80bc,#0xFF<<16\r
6805         orr z80bc,z80bc,r0, lsl #24\r
6806         fetch 19\r
6807 ;@LD C,I  (IX)\r
6808 opcode_DD_4C:\r
6809         ldrb r0,[z80xx,#3]\r
6810         and z80bc,z80bc,#0xFF<<24\r
6811         orr z80bc,z80bc,r0, lsl #16\r
6812         fetch 8\r
6813 ;@LD C,X  (IX)\r
6814 opcode_DD_4D:\r
6815         ldrb r0,[z80xx,#2]\r
6816         and z80bc,z80bc,#0xFF<<24\r
6817         orr z80bc,z80bc,r0, lsl #16\r
6818         fetch 8\r
6819 ;@LD C,(IX,N)\r
6820 opcode_DD_4E:\r
6821         ldrsb r0,[z80pc],#1\r
6822         ldr r1,[z80xx]\r
6823         add r0,r0,r1, lsr #16\r
6824         readmem8\r
6825         and z80bc,z80bc,#0xFF<<24\r
6826         orr z80bc,z80bc,r0, lsl #16\r
6827         fetch 19\r
6828 \r
6829 ;@LD D,I  (IX)\r
6830 opcode_DD_54:\r
6831         ldrb r0,[z80xx,#3]\r
6832         and z80de,z80de,#0xFF<<16\r
6833         orr z80de,z80de,r0, lsl #24\r
6834         fetch 8\r
6835 ;@LD D,X  (IX)\r
6836 opcode_DD_55:\r
6837         ldrb r0,[z80xx,#2]\r
6838         and z80de,z80de,#0xFF<<16\r
6839         orr z80de,z80de,r0, lsl #24\r
6840         fetch 8\r
6841 ;@LD D,(IX,N)\r
6842 opcode_DD_56:\r
6843         ldrsb r0,[z80pc],#1\r
6844         ldr r1,[z80xx]\r
6845         add r0,r0,r1, lsr #16\r
6846         readmem8\r
6847         and z80de,z80de,#0xFF<<16\r
6848         orr z80de,z80de,r0, lsl #24\r
6849         fetch 19\r
6850 ;@LD E,I  (IX)\r
6851 opcode_DD_5C:\r
6852         ldrb r0,[z80xx,#3]\r
6853         and z80de,z80de,#0xFF<<24\r
6854         orr z80de,z80de,r0, lsl #16\r
6855         fetch 8\r
6856 ;@LD E,X  (IX)\r
6857 opcode_DD_5D:\r
6858         ldrb r0,[z80xx,#2]\r
6859         and z80de,z80de,#0xFF<<24\r
6860         orr z80de,z80de,r0, lsl #16\r
6861         fetch 8\r
6862 ;@LD E,(IX,N)\r
6863 opcode_DD_5E:\r
6864         ldrsb r0,[z80pc],#1\r
6865         ldr r1,[z80xx]\r
6866         add r0,r0,r1, lsr #16\r
6867         readmem8\r
6868         and z80de,z80de,#0xFF<<24\r
6869         orr z80de,z80de,r0, lsl #16\r
6870         fetch 19\r
6871 ;@LD I,B  (IX)\r
6872 opcode_DD_60:\r
6873         mov r0,z80bc,lsr#24\r
6874         strb r0,[z80xx,#3]\r
6875         fetch 8\r
6876 ;@LD I,C  (IX)\r
6877 opcode_DD_61:\r
6878         mov r0,z80bc,lsr#16\r
6879         strb r0,[z80xx,#3]\r
6880         fetch 8\r
6881 ;@LD I,D  (IX)\r
6882 opcode_DD_62:\r
6883         mov r0,z80de,lsr#24\r
6884         strb r0,[z80xx,#3]\r
6885         fetch 8\r
6886 ;@LD I,E  (IX)\r
6887 opcode_DD_63:\r
6888         mov r0,z80de,lsr#16\r
6889         strb r0,[z80xx,#3]\r
6890         fetch 8\r
6891 ;@LD I,I  (IX)\r
6892 opcode_DD_64:\r
6893         fetch 8\r
6894 ;@LD I,X  (IX)\r
6895 opcode_DD_65:\r
6896         ldrb r0,[z80xx,#2]\r
6897         strb r0,[z80xx,#3]\r
6898         fetch 8\r
6899 ;@LD H,(IX,N)\r
6900 opcode_DD_66:\r
6901         ldrsb r0,[z80pc],#1\r
6902         ldr r1,[z80xx]\r
6903         add r0,r0,r1, lsr #16\r
6904         readmem8\r
6905         and z80hl,z80hl,#0xFF<<16\r
6906         orr z80hl,z80hl,r0, lsl #24\r
6907         fetch 19\r
6908 ;@LD I,A  (IX)\r
6909 opcode_DD_67:\r
6910         mov r0,z80a,lsr#24\r
6911         strb r0,[z80xx,#3]\r
6912         fetch 8\r
6913 ;@LD X,B  (IX)\r
6914 opcode_DD_68:\r
6915         mov r0,z80bc,lsr#24\r
6916         strb r0,[z80xx,#2]\r
6917         fetch 8\r
6918 ;@LD X,C  (IX)\r
6919 opcode_DD_69:\r
6920         mov r0,z80bc,lsr#16\r
6921         strb r0,[z80xx,#2]\r
6922         fetch 8\r
6923 ;@LD X,D  (IX)\r
6924 opcode_DD_6A:\r
6925         mov r0,z80de,lsr#24\r
6926         strb r0,[z80xx,#2]\r
6927         fetch 8\r
6928 ;@LD X,E  (IX)\r
6929 opcode_DD_6B:\r
6930         mov r0,z80de,lsr#16\r
6931         strb r0,[z80xx,#2]\r
6932         fetch 8\r
6933 ;@LD X,I  (IX)\r
6934 opcode_DD_6C:\r
6935         ldrb r0,[z80xx,#3]\r
6936         strb r0,[z80xx,#2]\r
6937         fetch 8\r
6938 ;@LD X,X  (IX)\r
6939 opcode_DD_6D:\r
6940         fetch 8\r
6941 ;@LD L,(IX,N)\r
6942 opcode_DD_6E:\r
6943         ldrsb r0,[z80pc],#1\r
6944         ldr r1,[z80xx]\r
6945         add r0,r0,r1, lsr #16\r
6946         readmem8\r
6947         and z80hl,z80hl,#0xFF<<24\r
6948         orr z80hl,z80hl,r0, lsl #16\r
6949         fetch 19\r
6950 ;@LD X,A  (IX)\r
6951 opcode_DD_6F:\r
6952         mov r0,z80a,lsr#24\r
6953         strb r0,[z80xx,#2]\r
6954         fetch 8\r
6955 \r
6956 ;@LD (IX,N),B\r
6957 opcode_DD_70:\r
6958         ldrsb r0,[z80pc],#1\r
6959         ldr r1,[z80xx]\r
6960         add r1,r0,r1, lsr #16\r
6961         mov r0,z80bc, lsr #24\r
6962         writemem8\r
6963         fetch 19\r
6964 ;@LD (IX,N),C\r
6965 opcode_DD_71:\r
6966         ldrsb r0,[z80pc],#1\r
6967         ldr r1,[z80xx]\r
6968         add r1,r0,r1, lsr #16\r
6969         mov r0,z80bc, lsr #16\r
6970         and r0,r0,#0xFF\r
6971         writemem8\r
6972         fetch 19\r
6973 ;@LD (IX,N),D\r
6974 opcode_DD_72:\r
6975         ldrsb r0,[z80pc],#1\r
6976         ldr r1,[z80xx]\r
6977         add r1,r0,r1, lsr #16\r
6978         mov r0,z80de, lsr #24\r
6979         writemem8\r
6980         fetch 19\r
6981 ;@LD (IX,N),E\r
6982 opcode_DD_73:\r
6983         ldrsb r0,[z80pc],#1\r
6984         ldr r1,[z80xx]\r
6985         add r1,r0,r1, lsr #16\r
6986         mov r0,z80de, lsr #16\r
6987         and r0,r0,#0xFF\r
6988         writemem8\r
6989         fetch 19\r
6990 ;@LD (IX,N),H\r
6991 opcode_DD_74:\r
6992         ldrsb r0,[z80pc],#1\r
6993         ldr r1,[z80xx]\r
6994         add r1,r0,r1, lsr #16\r
6995         mov r0,z80hl, lsr #24\r
6996         writemem8\r
6997         fetch 19\r
6998 ;@LD (IX,N),L\r
6999 opcode_DD_75:\r
7000         ldrsb r0,[z80pc],#1\r
7001         ldr r1,[z80xx]\r
7002         add r1,r0,r1, lsr #16\r
7003         mov r0,z80hl, lsr #16\r
7004         and r0,r0,#0xFF\r
7005         writemem8\r
7006         fetch 19\r
7007 ;@LD (IX,N),A\r
7008 opcode_DD_77:\r
7009         ldrsb r0,[z80pc],#1\r
7010         ldr r1,[z80xx]\r
7011         add r1,r0,r1, lsr #16\r
7012         mov r0,z80a, lsr #24\r
7013         writemem8\r
7014         fetch 19\r
7015 \r
7016 ;@LD A,I  from (IX)\r
7017 opcode_DD_7C:\r
7018         ldrb r0,[z80xx,#3]\r
7019         mov z80a,r0, lsl #24\r
7020         fetch 8\r
7021 ;@LD A,X  from (IX)\r
7022 opcode_DD_7D:\r
7023         ldrb r0,[z80xx,#2]\r
7024         mov z80a,r0, lsl #24\r
7025         fetch 8\r
7026 ;@LD A,(IX,N)\r
7027 opcode_DD_7E:\r
7028         ldrsb r0,[z80pc],#1\r
7029         ldr r1,[z80xx]\r
7030         add r0,r0,r1, lsr #16\r
7031         readmem8\r
7032         mov z80a,r0, lsl #24\r
7033         fetch 19\r
7034 \r
7035 ;@ADD A,I  ( IX)\r
7036 opcode_DD_84:\r
7037         ldrb r0,[z80xx,#3]\r
7038         opADDb\r
7039         fetch 8\r
7040 ;@ADD A,X  ( IX)\r
7041 opcode_DD_85:\r
7042         ldrb r0,[z80xx,#2]\r
7043         opADDb\r
7044         fetch 8\r
7045 ;@ADD A,(IX+N)\r
7046 opcode_DD_86:\r
7047         ldrsb r0,[z80pc],#1\r
7048         ldr r1,[z80xx]\r
7049         add r0,r0,r1, lsr #16\r
7050         readmem8\r
7051         opADDb\r
7052         fetch 19\r
7053 \r
7054 ;@ADC A,I  (IX)\r
7055 opcode_DD_8C:\r
7056         ldrb r0,[z80xx,#3]\r
7057         opADCb\r
7058         fetch 8\r
7059 ;@ADC A,X  (IX)\r
7060 opcode_DD_8D:\r
7061         ldrb r0,[z80xx,#2]\r
7062         opADCb\r
7063         fetch 8\r
7064 ;@ADC A,(IX+N)\r
7065 opcode_DD_8E:\r
7066         ldrsb r0,[z80pc],#1\r
7067         ldr r1,[z80xx]\r
7068         add r0,r0,r1, lsr #16\r
7069         readmem8\r
7070         opADCb\r
7071         fetch 19\r
7072 \r
7073 ;@SUB A,I  (IX)\r
7074 opcode_DD_94:\r
7075         ldrb r0,[z80xx,#3]\r
7076         opSUBb\r
7077         fetch 8\r
7078 ;@SUB A,X  (IX)\r
7079 opcode_DD_95:\r
7080         ldrb r0,[z80xx,#2]\r
7081         opSUBb\r
7082         fetch 8\r
7083 ;@SUB A,(IX+N)\r
7084 opcode_DD_96:\r
7085         ldrsb r0,[z80pc],#1\r
7086         ldr r1,[z80xx]\r
7087         add r0,r0,r1, lsr #16\r
7088         readmem8\r
7089         opSUBb\r
7090         fetch 19\r
7091 \r
7092 ;@SBC A,I  (IX)\r
7093 opcode_DD_9C:\r
7094         ldrb r0,[z80xx,#3]\r
7095         opSBCb\r
7096         fetch 8\r
7097 ;@SBC A,X  (IX)\r
7098 opcode_DD_9D:\r
7099         ldrb r0,[z80xx,#2]\r
7100         opSBCb\r
7101         fetch 8\r
7102 ;@SBC A,(IX+N)\r
7103 opcode_DD_9E:\r
7104         ldrsb r0,[z80pc],#1\r
7105         ldr r1,[z80xx]\r
7106         add r0,r0,r1, lsr #16\r
7107         readmem8\r
7108         opSBCb\r
7109         fetch 19\r
7110 \r
7111 ;@AND I  (IX)\r
7112 opcode_DD_A4:\r
7113         ldrb r0,[z80xx,#3]\r
7114         opANDb\r
7115         fetch 8\r
7116 ;@AND X  (IX)\r
7117 opcode_DD_A5:\r
7118         ldrb r0,[z80xx,#2]\r
7119         opANDb\r
7120         fetch 8\r
7121 ;@AND (IX+N)\r
7122 opcode_DD_A6:\r
7123         ldrsb r0,[z80pc],#1\r
7124         ldr r1,[z80xx]\r
7125         add r0,r0,r1, lsr #16\r
7126         readmem8\r
7127         opANDb\r
7128         fetch 19\r
7129 \r
7130 ;@XOR I  (IX)\r
7131 opcode_DD_AC:\r
7132         ldrb r0,[z80xx,#3]\r
7133         opXORb\r
7134         fetch 8\r
7135 ;@XOR X  (IX)\r
7136 opcode_DD_AD:\r
7137         ldrb r0,[z80xx,#2]\r
7138         opXORb\r
7139         fetch 8\r
7140 ;@XOR (IX+N)\r
7141 opcode_DD_AE:\r
7142         ldrsb r0,[z80pc],#1\r
7143         ldr r1,[z80xx]\r
7144         add r0,r0,r1, lsr #16\r
7145         readmem8\r
7146         opXORb\r
7147         fetch 19\r
7148 \r
7149 ;@OR I  (IX)\r
7150 opcode_DD_B4:\r
7151         ldrb r0,[z80xx,#3]\r
7152         opORb\r
7153         fetch 8\r
7154 ;@OR X  (IX)\r
7155 opcode_DD_B5:\r
7156         ldrb r0,[z80xx,#2]\r
7157         opORb\r
7158         fetch 8\r
7159 ;@OR (IX+N)\r
7160 opcode_DD_B6:\r
7161         ldrsb r0,[z80pc],#1\r
7162         ldr r1,[z80xx]\r
7163         add r0,r0,r1, lsr #16\r
7164         readmem8\r
7165         opORb\r
7166         fetch 19\r
7167 \r
7168 ;@CP I  (IX)\r
7169 opcode_DD_BC:\r
7170         ldrb r0,[z80xx,#3]\r
7171         opCPb\r
7172         fetch 8\r
7173 ;@CP X  (IX)\r
7174 opcode_DD_BD:\r
7175         ldrb r0,[z80xx,#2]\r
7176         opCPb\r
7177         fetch 8\r
7178 ;@CP (IX+N)\r
7179 opcode_DD_BE:\r
7180         ldrsb r0,[z80pc],#1\r
7181         ldr r1,[z80xx]\r
7182         add r0,r0,r1, lsr #16\r
7183         readmem8\r
7184         opCPb\r
7185         fetch 19\r
7186 \r
7187 \r
7188 opcodes_DD_CB_LOCAL: .word opcodes_DD_CB\r
7189 opcode_DD_CB:\r
7190 ;@Looks up the opcode on the opcodes_DD_CB table and then \r
7191 ;@moves the PC to the location of the subroutine\r
7192         ldrsb r0,[z80pc],#1\r
7193         ldr r1,[z80xx]\r
7194         add r0,r0,r1, lsr #16\r
7195 \r
7196         ldrb r1,[z80pc],#1\r
7197         ldr pc,[pc,r1, lsl #2]\r
7198                 .word 0x00\r
7199 opcodes_DD_CB:\r
7200                 .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
7201                 .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
7202                 .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
7203                 .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
7204                 .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
7205                 .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
7206                 .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
7207                 .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
7208                 .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
7209                 .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
7210                 .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
7211                 .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
7212                 .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
7213                 .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
7214                 .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
7215                 .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
7216                 .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
7217                 .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
7218                 .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
7219                 .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
7220                 .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
7221                 .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
7222                 .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
7223                 .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
7224                 .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
7225                 .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
7226                 .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
7227                 .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
7228                 .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
7229                 .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
7230                 .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
7231                 .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
7232 \r
7233 ;@RLC (IX+N) \r
7234 opcode_DD_CB_06:\r
7235         stmfd sp!,{r0}          ;@ save addr\r
7236         readmem8\r
7237         opRLCb\r
7238         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7239         writemem8\r
7240         fetch 23\r
7241 ;@RRC (IX+N) \r
7242 opcode_DD_CB_0E:\r
7243         stmfd sp!,{r0}          ;@ save addr\r
7244         readmem8\r
7245         opRRCb\r
7246         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7247         writemem8\r
7248         fetch 23\r
7249 ;@RL (IX+N) \r
7250 opcode_DD_CB_16:\r
7251         stmfd sp!,{r0}          ;@ save addr\r
7252         readmem8\r
7253         opRLb\r
7254         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7255         writemem8\r
7256         fetch 23\r
7257 ;@RR (IX+N) \r
7258 opcode_DD_CB_1E:\r
7259         stmfd sp!,{r0}          ;@ save addr \r
7260         readmem8\r
7261         opRRb\r
7262         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7263         writemem8\r
7264         fetch 23\r
7265 \r
7266 ;@SLA (IX+N) \r
7267 opcode_DD_CB_26:\r
7268         stmfd sp!,{r0}          ;@ save addr \r
7269         readmem8\r
7270         opSLAb\r
7271         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7272         writemem8\r
7273         fetch 23\r
7274 ;@SRA (IX+N) \r
7275 opcode_DD_CB_2E:\r
7276         stmfd sp!,{r0}          ;@ save addr \r
7277         readmem8\r
7278         opSRAb\r
7279         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7280         writemem8\r
7281         fetch 23\r
7282 ;@SLL (IX+N) \r
7283 opcode_DD_CB_36:\r
7284         stmfd sp!,{r0}          ;@ save addr \r
7285         readmem8\r
7286         opSLLb\r
7287         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7288         writemem8\r
7289         fetch 23\r
7290 ;@SRL (IX+N)\r
7291 opcode_DD_CB_3E:\r
7292         stmfd sp!,{r0}          ;@ save addr \r
7293         readmem8\r
7294         opSRLb\r
7295         ldmfd sp!,{r1}          ;@ restore addr into r1\r
7296         writemem8\r
7297         fetch 23\r
7298 \r
7299 ;@BIT 0,(IX+N) \r
7300 opcode_DD_CB_46:\r
7301         readmem8\r
7302         opBITb 0\r
7303         fetch 20\r
7304 ;@BIT 1,(IX+N) \r
7305 opcode_DD_CB_4E:\r
7306         readmem8\r
7307         opBITb 1\r
7308         fetch 20\r
7309 ;@BIT 2,(IX+N) \r
7310 opcode_DD_CB_56:\r
7311         readmem8\r
7312         opBITb 2\r
7313         fetch 20\r
7314 ;@BIT 3,(IX+N) \r
7315 opcode_DD_CB_5E:\r
7316         readmem8\r
7317         opBITb 3\r
7318         fetch 20\r
7319 ;@BIT 4,(IX+N) \r
7320 opcode_DD_CB_66:\r
7321         readmem8\r
7322         opBITb 4\r
7323         fetch 20\r
7324 ;@BIT 5,(IX+N) \r
7325 opcode_DD_CB_6E:\r
7326         readmem8\r
7327         opBITb 5\r
7328         fetch 20\r
7329 ;@BIT 6,(IX+N) \r
7330 opcode_DD_CB_76:\r
7331         readmem8\r
7332         opBITb 6\r
7333         fetch 20\r
7334 ;@BIT 7,(IX+N) \r
7335 opcode_DD_CB_7E:\r
7336         readmem8\r
7337         opBIT7b\r
7338         fetch 20\r
7339 ;@RES 0,(IX+N) \r
7340 opcode_DD_CB_86:\r
7341         opRESmem 0\r
7342 ;@RES 1,(IX+N) \r
7343 opcode_DD_CB_8E:\r
7344         opRESmem 1\r
7345 ;@RES 2,(IX+N) \r
7346 opcode_DD_CB_96:\r
7347         opRESmem 2\r
7348 ;@RES 3,(IX+N) \r
7349 opcode_DD_CB_9E:\r
7350         opRESmem 3\r
7351 ;@RES 4,(IX+N) \r
7352 opcode_DD_CB_A6:\r
7353         opRESmem 4\r
7354 ;@RES 5,(IX+N) \r
7355 opcode_DD_CB_AE:\r
7356         opRESmem 5\r
7357 ;@RES 6,(IX+N) \r
7358 opcode_DD_CB_B6:\r
7359         opRESmem 6\r
7360 ;@RES 7,(IX+N) \r
7361 opcode_DD_CB_BE:\r
7362         opRESmem 7\r
7363 \r
7364 ;@SET 0,(IX+N) \r
7365 opcode_DD_CB_C6:\r
7366         opSETmem 0\r
7367 ;@SET 1,(IX+N) \r
7368 opcode_DD_CB_CE:\r
7369         opSETmem 1\r
7370 ;@SET 2,(IX+N) \r
7371 opcode_DD_CB_D6:\r
7372         opSETmem 2\r
7373 ;@SET 3,(IX+N) \r
7374 opcode_DD_CB_DE:\r
7375         opSETmem 3\r
7376 ;@SET 4,(IX+N) \r
7377 opcode_DD_CB_E6:\r
7378         opSETmem 4\r
7379 ;@SET 5,(IX+N) \r
7380 opcode_DD_CB_EE:\r
7381         opSETmem 5\r
7382 ;@SET 6,(IX+N) \r
7383 opcode_DD_CB_F6:\r
7384         opSETmem 6\r
7385 ;@SET 7,(IX+N) \r
7386 opcode_DD_CB_FE:\r
7387         opSETmem 7\r
7388 \r
7389 \r
7390 \r
7391 ;@POP IX\r
7392 opcode_DD_E1:\r
7393 .if FAST_Z80SP\r
7394         opPOP\r
7395 .else\r
7396         mov r0,z80sp\r
7397         stmfd sp!,{z80xx}\r
7398         readmem16\r
7399         ldmfd sp!,{z80xx}\r
7400         add z80sp,z80sp,#2\r
7401 .endif\r
7402         strh r0,[z80xx,#2]\r
7403         fetch 14\r
7404 ;@EX (SP),IX\r
7405 opcode_DD_E3:\r
7406 .if FAST_Z80SP\r
7407         ldrb r0,[z80sp]\r
7408         ldrb r1,[z80sp,#1]\r
7409         orr r2,r0,r1, lsl #8\r
7410         ldrh r1,[z80xx,#2]\r
7411         mov r0,r1, lsr #8\r
7412         strb r0,[z80sp,#1]\r
7413         strb r1,[z80sp]\r
7414         strh r2,[z80xx,#2]\r
7415 .else\r
7416         mov r0,z80sp\r
7417         stmfd sp!,{z80xx}\r
7418         readmem16\r
7419         ldmfd sp!,{z80xx}\r
7420         mov r2,r0\r
7421         ldrh r0,[z80xx,#2]\r
7422         strh r2,[z80xx,#2]\r
7423         mov r1,z80sp\r
7424         writemem16\r
7425 .endif\r
7426         fetch 23\r
7427 ;@PUSH IX\r
7428 opcode_DD_E5:\r
7429         ldr r2,[z80xx]\r
7430         opPUSHreg r2\r
7431         fetch 15\r
7432 ;@JP (IX)\r
7433 opcode_DD_E9:\r
7434         ldrh r0,[z80xx,#2]\r
7435         rebasepc\r
7436         fetch 8\r
7437 ;@LD SP,IX\r
7438 opcode_DD_F9:\r
7439 .if FAST_Z80SP\r
7440         ldrh r0,[z80xx,#2]\r
7441         rebasesp\r
7442         mov z80sp,r0\r
7443 .else\r
7444         ldrh z80sp,[z80xx,#2]\r
7445 .endif\r
7446         fetch 10\r
7447 \r
7448 ;@##################################\r
7449 ;@##################################\r
7450 ;@###  opcodes ED  #########################\r
7451 ;@##################################\r
7452 ;@##################################\r
7453 \r
7454 opcode_ED_NF:\r
7455         fetch 8\r
7456 ;@      ldrb r0,[z80pc],#1\r
7457 ;@      ldr pc,[opcodes,r0, lsl #2]\r
7458 ;@      mov r0,#0xED00\r
7459 ;@      orr r0,r0,r1\r
7460 ;@      b end_loop\r
7461 \r
7462 ;@IN B,(C)\r
7463 opcode_ED_40:\r
7464         opIN_C\r
7465         and z80bc,z80bc,#0xFF<<16\r
7466         orr z80bc,z80bc,r0, lsl #24\r
7467         sub r1,opcodes,#0x100\r
7468         ldrb r0,[r1,r0]\r
7469         and z80f,z80f,#1<<CFlag\r
7470         orr z80f,z80f,r0\r
7471         fetch 12\r
7472 ;@OUT (C),B\r
7473 opcode_ED_41:\r
7474         mov r1,z80bc, lsr #24\r
7475         opOUT_C\r
7476         fetch 12\r
7477 \r
7478 ;@SBC HL,BC\r
7479 opcode_ED_42:\r
7480         opSBC16 z80bc\r
7481 \r
7482 ;@LD (NN),BC\r
7483 opcode_ED_43:\r
7484         ldrb r0,[z80pc],#1\r
7485         ldrb r1,[z80pc],#1\r
7486         orr r1,r0,r1, lsl #8\r
7487         mov r0,z80bc, lsr #16\r
7488         writemem16\r
7489         fetch 20\r
7490 ;@NEG\r
7491 opcode_ED_44:\r
7492         rsbs z80a,z80a,#0\r
7493         mrs z80f,cpsr\r
7494         mov z80f,z80f,lsr#28                                    ;@S,Z,V&C\r
7495         eor z80f,z80f,#(1<<CFlag)|(1<<NFlag)    ;@invert C and set n.\r
7496         tst z80a,#0x0F000000                                    ;@H, correct\r
7497         orrne z80f,z80f,#1<<HFlag\r
7498         fetch 8\r
7499  \r
7500 ;@RETN, moved to ED_4D\r
7501 ;@opcode_ED_45:\r
7502 \r
7503 ;@IM 0\r
7504 opcode_ED_46:\r
7505         strb z80a,[cpucontext,#z80im]\r
7506         fetch 8\r
7507 ;@LD I,A\r
7508 opcode_ED_47:\r
7509         str z80a,[cpucontext,#z80i]\r
7510         fetch 9\r
7511 ;@IN C,(C)\r
7512 opcode_ED_48:\r
7513         opIN_C\r
7514         and z80bc,z80bc,#0xFF<<24\r
7515         orr z80bc,z80bc,r0, lsl #16\r
7516         sub r1,opcodes,#0x100\r
7517         ldrb r0,[r1,r0]\r
7518         and z80f,z80f,#1<<CFlag\r
7519         orr z80f,z80f,r0\r
7520         fetch 12\r
7521 ;@OUT (C),C\r
7522 opcode_ED_49:\r
7523         mov r0,z80bc, lsr #16\r
7524         and r1,r0,#0xFF\r
7525         opOUT\r
7526         fetch 12\r
7527 ;@ADC HL,BC\r
7528 opcode_ED_4A:\r
7529         opADC16 z80bc\r
7530 ;@LD BC,(NN)\r
7531 opcode_ED_4B:\r
7532         ldrb r0,[z80pc],#1\r
7533         ldrb r1,[z80pc],#1\r
7534         orr r0,r0,r1, lsl #8\r
7535         readmem16\r
7536         mov z80bc,r0, lsl #16\r
7537         fetch 20\r
7538 \r
7539 ;@RETN\r
7540 opcode_ED_45:\r
7541 ;@RETI\r
7542 opcode_ED_4D:\r
7543         ldrb r0,[cpucontext,#z80if]\r
7544         tst r0,#Z80_IF2\r
7545         orrne r0,r0,#Z80_IF1\r
7546         biceq r0,r0,#Z80_IF1\r
7547         strb r0,[cpucontext,#z80if]\r
7548     opPOP\r
7549         rebasepc\r
7550         fetch 14\r
7551 \r
7552 ;@LD R,A\r
7553 opcode_ED_4F:\r
7554         mov r0,z80a,lsr#24\r
7555         strb r0,[cpucontext,#z80r]\r
7556         fetch 9\r
7557 \r
7558 ;@IN D,(C)\r
7559 opcode_ED_50:\r
7560         opIN_C\r
7561         and z80de,z80de,#0xFF<<16\r
7562         orr z80de,z80de,r0, lsl #24\r
7563         sub r1,opcodes,#0x100\r
7564         ldrb r0,[r1,r0]\r
7565         and z80f,z80f,#1<<CFlag\r
7566         orr z80f,z80f,r0\r
7567         fetch 12\r
7568 ;@OUT (C),D\r
7569 opcode_ED_51:\r
7570         mov r1,z80de, lsr #24\r
7571         opOUT_C\r
7572         fetch 12\r
7573 ;@SBC HL,DE\r
7574 opcode_ED_52:\r
7575         opSBC16 z80de\r
7576 ;@LD (NN),DE\r
7577 opcode_ED_53:\r
7578         ldrb r0,[z80pc],#1\r
7579         ldrb r1,[z80pc],#1\r
7580         orr r1,r0,r1, lsl #8\r
7581         mov r0,z80de, lsr #16\r
7582         writemem16\r
7583         fetch 20\r
7584 ;@IM 1\r
7585 opcode_ED_56:\r
7586         mov r0,#1\r
7587         strb r0,[cpucontext,#z80im]\r
7588         fetch 8\r
7589 ;@LD A,I\r
7590 opcode_ED_57:\r
7591         ldr z80a,[cpucontext,#z80i]\r
7592         tst z80a,#0xFF000000\r
7593         and z80f,z80f,#(1<<CFlag)\r
7594         orreq z80f,z80f,#(1<<ZFlag)\r
7595         orrmi z80f,z80f,#(1<<SFlag)\r
7596         ldrb r0,[cpucontext,#z80if]\r
7597         tst r0,#Z80_IF2\r
7598         orrne z80f,z80f,#(1<<VFlag)\r
7599         fetch 9\r
7600 ;@IN E,(C)\r
7601 opcode_ED_58:\r
7602         opIN_C\r
7603         and z80de,z80de,#0xFF<<24\r
7604         orr z80de,z80de,r0, lsl #16\r
7605         sub r1,opcodes,#0x100\r
7606         ldrb r0,[r1,r0]\r
7607         and z80f,z80f,#1<<CFlag\r
7608         orr z80f,z80f,r0\r
7609         fetch 12\r
7610 ;@OUT (C),E\r
7611 opcode_ED_59:\r
7612         mov r1,z80de, lsr #16\r
7613         and r1,r1,#0xFF\r
7614         opOUT_C\r
7615         fetch 12\r
7616 ;@ADC HL,DE\r
7617 opcode_ED_5A:\r
7618         opADC16 z80de\r
7619 ;@LD DE,(NN)\r
7620 opcode_ED_5B:\r
7621         ldrb r0,[z80pc],#1\r
7622         ldrb r1,[z80pc],#1\r
7623         orr r0,r0,r1, lsl #8\r
7624         readmem16\r
7625         mov z80de,r0, lsl #16\r
7626         fetch 20\r
7627 ;@IM 2\r
7628 opcode_ED_5E:\r
7629         mov r0,#2\r
7630         strb r0,[cpucontext,#z80im]\r
7631         fetch 8\r
7632 ;@LD A,R\r
7633 opcode_ED_5F:\r
7634         ldrb r0,[cpucontext,#z80r]\r
7635         and r0,r0,#0x80\r
7636         rsb r1,z80_icount,#0\r
7637         and r1,r1,#0x7F\r
7638         orr r0,r0,r1\r
7639         movs z80a,r0, lsl #24\r
7640         and z80f,z80f,#1<<CFlag\r
7641         orrmi z80f,z80f,#(1<<SFlag)\r
7642         orreq z80f,z80f,#(1<<ZFlag)\r
7643         ldrb r0,[cpucontext,#z80if]\r
7644         tst r0,#Z80_IF2\r
7645         orrne z80f,z80f,#(1<<VFlag)\r
7646         fetch 9\r
7647 ;@IN H,(C)\r
7648 opcode_ED_60:\r
7649         opIN_C\r
7650         and z80hl,z80hl,#0xFF<<16\r
7651         orr z80hl,z80hl,r0, lsl #24\r
7652         sub r1,opcodes,#0x100\r
7653         ldrb r0,[r1,r0]\r
7654         and z80f,z80f,#1<<CFlag\r
7655         orr z80f,z80f,r0\r
7656         fetch 12\r
7657 ;@OUT (C),H\r
7658 opcode_ED_61:\r
7659         mov r1,z80hl, lsr #24\r
7660         opOUT_C\r
7661         fetch 12\r
7662 ;@SBC HL,HL\r
7663 opcode_ED_62:\r
7664         opSBC16HL\r
7665 ;@RRD\r
7666 opcode_ED_67:\r
7667         readmem8HL\r
7668         mov r1,r0,ror#4\r
7669         orr r0,r1,z80a,lsr#20\r
7670         bic z80a,z80a,#0x0F000000\r
7671         orr z80a,z80a,r1,lsr#4\r
7672         writemem8HL\r
7673         sub r1,opcodes,#0x100\r
7674         ldrb r0,[r1,z80a, lsr #24]\r
7675         and z80f,z80f,#1<<CFlag\r
7676         orr z80f,z80f,r0\r
7677         fetch 18\r
7678 ;@IN L,(C)\r
7679 opcode_ED_68:\r
7680         opIN_C\r
7681         and z80hl,z80hl,#0xFF<<24\r
7682         orr z80hl,z80hl,r0, lsl #16\r
7683         and z80f,z80f,#1<<CFlag\r
7684         sub r1,opcodes,#0x100\r
7685         ldrb r0,[r1,r0]\r
7686         orr z80f,z80f,r0\r
7687         fetch 12\r
7688 ;@OUT (C),L\r
7689 opcode_ED_69:\r
7690         mov r1,z80hl, lsr #16\r
7691         and r1,r1,#0xFF\r
7692         opOUT_C\r
7693         fetch 12\r
7694 ;@ADC HL,HL\r
7695 opcode_ED_6A:\r
7696         opADC16HL\r
7697 ;@RLD\r
7698 opcode_ED_6F:\r
7699         readmem8HL\r
7700         orr r0,r0,z80a,lsl#4\r
7701         mov r0,r0,ror#28\r
7702         and z80a,z80a,#0xF0000000\r
7703         orr z80a,z80a,r0,lsl#16\r
7704         and z80a,z80a,#0xFF000000\r
7705         writemem8HL\r
7706         sub r1,opcodes,#0x100\r
7707         ldrb r0,[r1,z80a, lsr #24]\r
7708         and z80f,z80f,#1<<CFlag\r
7709         orr z80f,z80f,r0\r
7710         fetch 18\r
7711 ;@IN F,(C)\r
7712 opcode_ED_70:\r
7713         opIN_C\r
7714         and z80f,z80f,#1<<CFlag\r
7715         sub r1,opcodes,#0x100\r
7716         ldrb r0,[r1,r0]\r
7717         orr z80f,z80f,r0\r
7718         fetch 12\r
7719 ;@OUT (C),0\r
7720 opcode_ED_71:\r
7721         mov r1,#0\r
7722         opOUT_C\r
7723         fetch 12\r
7724 \r
7725 ;@SBC HL,SP\r
7726 opcode_ED_72:\r
7727 .if FAST_Z80SP\r
7728         ldr r0,[cpucontext,#z80sp_base]\r
7729         sub r0,z80sp,r0\r
7730         mov r0, r0, lsl #16\r
7731 .else\r
7732         mov r0,z80sp,lsl#16\r
7733 .endif\r
7734         opSBC16 r0\r
7735 ;@LD (NN),SP\r
7736 opcode_ED_73:\r
7737         ldrb r0,[z80pc],#1\r
7738         ldrb r1,[z80pc],#1\r
7739         orr r1,r0,r1, lsl #8\r
7740 .if FAST_Z80SP\r
7741         ldr r0,[cpucontext,#z80sp_base]\r
7742         sub r0,z80sp,r0\r
7743 .else\r
7744         mov r0,z80sp\r
7745 .endif\r
7746         writemem16\r
7747         fetch 16\r
7748 ;@IN A,(C)\r
7749 opcode_ED_78:\r
7750         opIN_C\r
7751         mov z80a,r0, lsl #24\r
7752         and z80f,z80f,#1<<CFlag\r
7753         sub r1,opcodes,#0x100\r
7754         ldrb r0,[r1,r0]\r
7755         orr z80f,z80f,r0\r
7756         fetch 12\r
7757 ;@OUT (C),A\r
7758 opcode_ED_79:\r
7759         mov r1,z80a, lsr #24\r
7760         opOUT_C\r
7761         fetch 12\r
7762 ;@ADC HL,SP\r
7763 opcode_ED_7A:\r
7764 .if FAST_Z80SP\r
7765         ldr r0,[cpucontext,#z80sp_base]\r
7766         sub r0,z80sp,r0\r
7767         mov r0, r0, lsl #16\r
7768 .else\r
7769         mov r0,z80sp,lsl#16\r
7770 .endif\r
7771         opADC16 r0\r
7772 ;@LD SP,(NN)\r
7773 opcode_ED_7B:\r
7774         ldrb r0,[z80pc],#1\r
7775         ldrb r1,[z80pc],#1\r
7776         orr r0,r0,r1, lsl #8\r
7777         readmem16\r
7778 .if FAST_Z80SP\r
7779         rebasesp\r
7780 .endif\r
7781         mov z80sp,r0\r
7782         fetch 20\r
7783 ;@LDI\r
7784 opcode_ED_A0:\r
7785         copymem8HL_DE\r
7786         add z80hl,z80hl,#1<<16\r
7787         add z80de,z80de,#1<<16\r
7788         subs z80bc,z80bc,#1<<16\r
7789         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7790         orrne z80f,z80f,#1<<VFlag\r
7791         fetch 16\r
7792 ;@CPI\r
7793 opcode_ED_A1:\r
7794         readmem8HL\r
7795         add z80hl,z80hl,#0x00010000\r
7796         mov r1,z80a,lsl#4\r
7797         cmp z80a,r0,lsl#24\r
7798         and z80f,z80f,#1<<CFlag\r
7799         orr z80f,z80f,#1<<NFlag\r
7800         orrmi z80f,z80f,#1<<SFlag\r
7801         orreq z80f,z80f,#1<<ZFlag\r
7802         cmp r1,r0,lsl#28\r
7803         orrcc z80f,z80f,#1<<HFlag\r
7804         subs z80bc,z80bc,#0x00010000\r
7805         orrne z80f,z80f,#1<<VFlag\r
7806         fetch 16\r
7807 ;@INI\r
7808 opcode_ED_A2:\r
7809         opIN_C\r
7810         and z80f,r0,#0x80\r
7811         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7812 ;@      mov r1,z80bc,lsl#8\r
7813 ;@      add r1,r1,#0x01000000\r
7814 ;@      adds r1,r1,r0,lsl#24\r
7815 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7816         writemem8HL\r
7817         add z80hl,z80hl,#1<<16\r
7818         sub z80bc,z80bc,#1<<24\r
7819         tst z80bc,#0xFF<<24\r
7820         orrmi z80f,z80f,#1<<SFlag\r
7821         orreq z80f,z80f,#1<<ZFlag\r
7822         fetch 16\r
7823 \r
7824 ;@OUTI\r
7825 opcode_ED_A3:\r
7826         readmem8HL\r
7827         add z80hl,z80hl,#1<<16\r
7828         and z80f,r0,#0x80\r
7829         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7830         mov r1,z80hl,lsl#8\r
7831         adds r1,r1,r0,lsl#24\r
7832         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL)+L > 0xFF\r
7833         sub z80bc,z80bc,#1<<24\r
7834         tst z80bc,#0xFF<<24\r
7835         orrmi z80f,z80f,#1<<SFlag\r
7836         orreq z80f,z80f,#1<<ZFlag\r
7837         mov r1,r0\r
7838         opOUT_C\r
7839         fetch 16\r
7840 \r
7841 ;@LDD\r
7842 opcode_ED_A8:\r
7843         copymem8HL_DE\r
7844         sub z80hl,z80hl,#1<<16\r
7845         sub z80de,z80de,#1<<16\r
7846         subs z80bc,z80bc,#1<<16\r
7847         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7848         orrne z80f,z80f,#1<<VFlag\r
7849         fetch 16\r
7850 \r
7851 ;@CPD\r
7852 opcode_ED_A9:\r
7853         readmem8HL\r
7854         sub z80hl,z80hl,#1<<16\r
7855         mov r1,z80a,lsl#4\r
7856         cmp z80a,r0,lsl#24\r
7857         and z80f,z80f,#1<<CFlag\r
7858         orr z80f,z80f,#1<<NFlag\r
7859         orrmi z80f,z80f,#1<<SFlag\r
7860         orreq z80f,z80f,#1<<ZFlag\r
7861         cmp r1,r0,lsl#28\r
7862         orrcc z80f,z80f,#1<<HFlag\r
7863         subs z80bc,z80bc,#0x00010000\r
7864         orrne z80f,z80f,#1<<VFlag\r
7865         fetch 16\r
7866 \r
7867 ;@IND\r
7868 opcode_ED_AA:\r
7869         opIN_C\r
7870         and z80f,r0,#0x80\r
7871         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7872 ;@      mov r1,z80bc,lsl#8\r
7873 ;@      sub r1,r1,#0x01000000\r
7874 ;@      adds r1,r1,r0,lsl#24\r
7875 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
7876         writemem8HL\r
7877         sub z80hl,z80hl,#1<<16\r
7878         sub z80bc,z80bc,#1<<24\r
7879         tst z80bc,#0xFF<<24\r
7880         orrmi z80f,z80f,#1<<SFlag\r
7881         orreq z80f,z80f,#1<<ZFlag\r
7882         fetch 16\r
7883 \r
7884 ;@OUTD\r
7885 opcode_ED_AB:\r
7886         readmem8HL\r
7887         sub z80hl,z80hl,#1<<16\r
7888         and z80f,r0,#0x80\r
7889         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7890         mov r1,z80hl,lsl#8\r
7891         adds r1,r1,r0,lsl#24\r
7892         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
7893         sub z80bc,z80bc,#1<<24\r
7894         tst z80bc,#0xFF<<24\r
7895         orrmi z80f,z80f,#1<<SFlag\r
7896         orreq z80f,z80f,#1<<ZFlag\r
7897         mov r1,r0\r
7898         opOUT_C\r
7899         fetch 16\r
7900 ;@LDIR\r
7901 opcode_ED_B0:\r
7902         copymem8HL_DE\r
7903         add z80hl,z80hl,#1<<16\r
7904         add z80de,z80de,#1<<16\r
7905         subs z80bc,z80bc,#1<<16\r
7906         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7907         orrne z80f,z80f,#1<<VFlag\r
7908         subne z80pc,z80pc,#2\r
7909         subne z80_icount,z80_icount,#5\r
7910         fetch 16\r
7911 \r
7912 ;@CPIR\r
7913 opcode_ED_B1:\r
7914         readmem8HL\r
7915         add z80hl,z80hl,#1<<16    \r
7916         mov r1,z80a,lsl#4\r
7917         cmp z80a,r0,lsl#24\r
7918         and z80f,z80f,#1<<CFlag\r
7919         orr z80f,z80f,#1<<NFlag\r
7920         orrmi z80f,z80f,#1<<SFlag\r
7921         orreq z80f,z80f,#1<<ZFlag\r
7922         cmp r1,r0,lsl#28\r
7923         orrcc z80f,z80f,#1<<HFlag\r
7924         subs z80bc,z80bc,#1<<16\r
7925         bne opcode_ED_B1_decpc\r
7926         fetch 16\r
7927 opcode_ED_B1_decpc:\r
7928         orr z80f,z80f,#1<<VFlag\r
7929         tst z80f,#1<<ZFlag\r
7930         subeq z80pc,z80pc,#2\r
7931         subeq z80_icount,z80_icount,#5\r
7932         fetch 16\r
7933 ;@INIR\r
7934 opcode_ED_B2:\r
7935         opIN_C\r
7936         and z80f,r0,#0x80\r
7937         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7938 ;@      mov r1,z80bc,lsl#8\r
7939 ;@      add r1,r1,#0x01000000\r
7940 ;@      adds r1,r1,r0,lsl#24\r
7941 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C+1) & 0xFF) > 0xFF\r
7942         writemem8HL\r
7943         add z80hl,z80hl,#1<<16\r
7944         sub z80bc,z80bc,#1<<24\r
7945         tst z80bc,#0xFF<<24\r
7946         orrmi z80f,z80f,#1<<SFlag\r
7947         orreq z80f,z80f,#1<<ZFlag\r
7948         subne z80pc,z80pc,#2\r
7949         subne z80_icount,z80_icount,#5\r
7950         fetch 16\r
7951 ;@OTIR\r
7952 opcode_ED_B3:\r
7953         readmem8HL\r
7954         add z80hl,z80hl,#1<<16\r
7955         and z80f,r0,#0x80\r
7956         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
7957         mov r1,z80hl,lsl#8\r
7958         adds r1,r1,r0,lsl#24\r
7959         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
7960         sub z80bc,z80bc,#1<<24\r
7961         tst z80bc,#0xFF<<24\r
7962         orrmi z80f,z80f,#1<<SFlag\r
7963         orreq z80f,z80f,#1<<ZFlag\r
7964         subne z80pc,z80pc,#2\r
7965         subne z80_icount,z80_icount,#5\r
7966         mov r1,r0\r
7967         opOUT_C\r
7968         fetch 16\r
7969 ;@LDDR\r
7970 opcode_ED_B8:\r
7971         copymem8HL_DE\r
7972         sub z80hl,z80hl,#1<<16\r
7973         sub z80de,z80de,#1<<16\r
7974         subs z80bc,z80bc,#1<<16\r
7975         bic z80f,z80f,#(1<<VFlag)|(1<<NFlag)|(1<<HFlag)\r
7976         orrne z80f,z80f,#1<<VFlag\r
7977         subne z80pc,z80pc,#2\r
7978         subne z80_icount,z80_icount,#5\r
7979         fetch 16\r
7980 \r
7981 ;@CPDR\r
7982 opcode_ED_B9:\r
7983         readmem8HL\r
7984         sub z80hl,z80hl,#1<<16\r
7985         mov r1,z80a,lsl#4\r
7986         cmp z80a,r0,lsl#24\r
7987         and z80f,z80f,#1<<CFlag\r
7988         orr z80f,z80f,#1<<NFlag\r
7989         orrmi z80f,z80f,#1<<SFlag\r
7990         orreq z80f,z80f,#1<<ZFlag\r
7991         cmp r1,r0,lsl#28\r
7992         orrcc z80f,z80f,#1<<HFlag\r
7993         subs z80bc,z80bc,#1<<16\r
7994         bne opcode_ED_B9_decpc\r
7995         fetch 16\r
7996 opcode_ED_B9_decpc:\r
7997         orr z80f,z80f,#1<<VFlag\r
7998         tst z80f,#1<<ZFlag\r
7999         subeq z80pc,z80pc,#2\r
8000         subeq z80_icount,z80_icount,#5\r
8001         fetch 16\r
8002 ;@INDR\r
8003 opcode_ED_BA:\r
8004         opIN_C\r
8005         and z80f,r0,#0x80\r
8006         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8007 ;@      mov r1,z80bc,lsl#8\r
8008 ;@      sub r1,r1,#0x01000000\r
8009 ;@      adds r1,r1,r0,lsl#24\r
8010 ;@      orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if (HL) + ((C-1) & 0xFF) > 0xFF\r
8011         writemem8HL\r
8012         sub z80hl,z80hl,#1<<16\r
8013         sub z80bc,z80bc,#1<<24\r
8014         tst z80bc,#0xFF<<24\r
8015         orrmi z80f,z80f,#1<<SFlag\r
8016         orreq z80f,z80f,#1<<ZFlag\r
8017         subne z80pc,z80pc,#2\r
8018         subne z80_icount,z80_icount,#5\r
8019         fetch 16\r
8020 ;@OTDR\r
8021 opcode_ED_BB:\r
8022         readmem8HL\r
8023         sub z80hl,z80hl,#1<<16\r
8024         and z80f,r0,#0x80\r
8025         mov z80f,z80f,lsr#2                                             ;@NFlag set by bit 7\r
8026         mov r1,z80hl,lsl#8\r
8027         adds r1,r1,r0,lsl#24\r
8028         orrcs z80f,z80f,#(1<<CFlag)|(1<<HFlag)  ;@ CF & HF set if r0+HL > 0xFF\r
8029         sub z80bc,z80bc,#1<<24\r
8030         tst z80bc,#0xFF<<24\r
8031         orrmi z80f,z80f,#1<<SFlag\r
8032         orreq z80f,z80f,#1<<ZFlag\r
8033         subne z80pc,z80pc,#2\r
8034         subne z80_icount,z80_icount,#5\r
8035         mov r1,r0\r
8036         opOUT_C\r
8037         fetch 16\r
8038 ;@##################################\r
8039 ;@##################################\r
8040 ;@###  opcodes FD  #########################\r
8041 ;@##################################\r
8042 ;@##################################\r
8043 ;@Since DD and FD opcodes are all the same apart from the address\r
8044 ;@register they use.  When a FD intruction the program runs the code\r
8045 ;@from the DD location but the address of the IY reg is passed instead\r
8046 ;@of IX\r
8047 \r
8048 ;@end_loop:\r
8049 ;@     b end_loop\r
8050 \r
8051 \r
8052 \r